Advertisement
Guest User

HANA currency report

a guest
Jul 30th, 2014
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. REPORT zcurrency_test.
  2.  
  3. TYPES: BEGIN OF ls_vbak,
  4. so_id TYPE snwd_so-so_id,
  5. net_amount TYPE snwd_so-net_amount,
  6. currency_code TYPE snwd_so-currency_code,
  7. END OF ls_vbak.
  8.  
  9. DATA: lt_vbak TYPE STANDARD TABLE OF ls_vbak.
  10. DATA: wa_vbak LIKE LINE OF lt_vbak.
  11. DATA: lt_snwd_so TYPE STANDARD TABLE OF snwd_so.
  12. DATA: wa_snwd_so LIKE LINE OF lt_snwd_so.
  13.  
  14. DATA: lt_zcurr_conv_hana TYPE TABLE OF zcurr_conv_hana.
  15. DATA: wa_zcurr_conv_hana LIKE LINE OF lt_zcurr_conv_hana.
  16.  
  17. PARAMETERS: lv_star TYPE boolean,
  18. lv_abap TYPE boolean,
  19. lv_amdp TYPE boolean.
  20.  
  21. START-OF-SELECTION.
  22.  
  23.  
  24.  
  25. "loop through the sales orders to fill the input table for the currency conversion
  26. "loop at lt_vbak into wa_vbak.
  27. "wa_zcurr_conv_hana-id = wa_vbak-so_id.
  28. "wa_zcurr_conv_hana-in_amount = wa_vbak-net_amount.
  29. "wa_zcurr_conv_hana-ref_date = '30.07.2014'.
  30. "wa_zcurr_conv_hana-source_unit = wa_vbak-CURRENCY_CODE.
  31. "wa_zcurr_conv_hana-target_unit = 'USD'.
  32. "append wa_zcurr_conv_hana to lt_zcurr_conv_hana.
  33. "endloop.
  34. IF lv_star EQ abap_true.
  35.  
  36. SELECT * INTO TABLE lt_snwd_so FROM snwd_so.
  37.  
  38. LOOP AT lt_snwd_so INTO wa_snwd_so.
  39. wa_zcurr_conv_hana-id = wa_snwd_so-so_id.
  40. wa_zcurr_conv_hana-in_amount = wa_snwd_so-net_amount.
  41. wa_zcurr_conv_hana-source_unit = wa_snwd_so-currency_code.
  42. wa_zcurr_conv_hana-target_unit = 'USD'.
  43. wa_zcurr_conv_hana-ref_date = '30.07.2014'.
  44. APPEND wa_zcurr_conv_hana TO lt_zcurr_conv_hana.
  45. ENDLOOP.
  46.  
  47. ELSEIF lv_abap EQ abap_true OR ( lv_abap EQ abap_false AND lv_amdp EQ abap_false ).
  48.  
  49. SELECT so_id net_amount currency_code INTO wa_vbak FROM snwd_so.
  50. APPEND wa_vbak TO lt_vbak.
  51. wa_zcurr_conv_hana-id = wa_vbak-so_id.
  52. wa_zcurr_conv_hana-in_amount = wa_vbak-net_amount.
  53. wa_zcurr_conv_hana-source_unit = wa_vbak-currency_code.
  54. wa_zcurr_conv_hana-target_unit = 'USD'.
  55. wa_zcurr_conv_hana-ref_date = '30.07.2014'.
  56. APPEND wa_zcurr_conv_hana TO lt_zcurr_conv_hana.
  57.  
  58. ENDSELECT.
  59.  
  60. ENDIF.
  61.  
  62. IF lv_abap EQ abap_true.
  63. "First select some sales orders to test with
  64.  
  65. FIELD-SYMBOLS <wa_zcurr_conv_hana> LIKE LINE OF lt_zcurr_conv_hana.
  66. LOOP AT lt_zcurr_conv_hana ASSIGNING <wa_zcurr_conv_hana>.
  67. CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  68. EXPORTING
  69. * CLIENT = SY-MANDT
  70. date = '30072014'
  71. foreign_amount = <wa_zcurr_conv_hana>-in_amount
  72. foreign_currency = 'USD'
  73. local_currency = <wa_zcurr_conv_hana>-source_unit
  74. * RATE = 0
  75. type_of_rate = 'P'
  76. read_tcurr = 'X'
  77. IMPORTING
  78. * EXCHANGE_RATE =
  79. * FOREIGN_FACTOR =
  80. local_amount = <wa_zcurr_conv_hana>-out_amount
  81. * LOCAL_FACTOR =
  82. * EXCHANGE_RATEX =
  83. * FIXED_RATE =
  84. * DERIVED_RATE_TYPE =
  85. * EXCEPTIONS
  86. * NO_RATE_FOUND = 1
  87. * OVERFLOW = 2
  88. * NO_FACTORS_FOUND = 3
  89. * NO_SPREAD_FOUND = 4
  90. * DERIVED_2_TIMES = 5
  91. * OTHERS = 6
  92. .
  93. IF sy-subrc <> 0.
  94. * Implement suitable error handling here
  95. ENDIF.
  96. ENDLOOP.
  97. ELSEIF lv_amdp EQ abap_true.
  98. "Call the convert method using the input table and get the result back
  99. NEW zbc_currency_conversion_hana( )->convert_currency_snwd(
  100. EXPORTING
  101. it_conv_prices = lt_vbak
  102. iv_mandt = sy-mandt
  103. iv_target_unit = 'USD'
  104. iv_ref_date = '30.07.2014'
  105. IMPORTING
  106. et_amount = lt_zcurr_conv_hana
  107. ).
  108.  
  109. ELSE.
  110.  
  111. "Call the convert method using the input table and get the result back
  112. NEW zbc_currency_conversion_hana( )->convert_currency(
  113. EXPORTING
  114. it_conv_prices = lt_zcurr_conv_hana
  115. iv_mandt = sy-mandt
  116. IMPORTING
  117. et_amount = lt_zcurr_conv_hana
  118. ).
  119. ENDIF.
  120. LOOP AT lt_zcurr_conv_hana INTO wa_zcurr_conv_hana.
  121. WRITE: 'VBELN = ', wa_zcurr_conv_hana-id, 'Netwr = ', wa_zcurr_conv_hana-in_amount, 'Converted amount = ', wa_zcurr_conv_hana-out_amount, 'Reference date = ', wa_zcurr_conv_hana-ref_date, '/'.
  122. ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement