Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REPORT zcurrency_test.
- TYPES: BEGIN OF ls_vbak,
- so_id TYPE snwd_so-so_id,
- net_amount TYPE snwd_so-net_amount,
- currency_code TYPE snwd_so-currency_code,
- END OF ls_vbak.
- DATA: lt_vbak TYPE STANDARD TABLE OF ls_vbak.
- DATA: wa_vbak LIKE LINE OF lt_vbak.
- DATA: lt_snwd_so TYPE STANDARD TABLE OF snwd_so.
- DATA: wa_snwd_so LIKE LINE OF lt_snwd_so.
- DATA: lt_zcurr_conv_hana TYPE TABLE OF zcurr_conv_hana.
- DATA: wa_zcurr_conv_hana LIKE LINE OF lt_zcurr_conv_hana.
- PARAMETERS: lv_star TYPE boolean,
- lv_abap TYPE boolean,
- lv_amdp TYPE boolean.
- START-OF-SELECTION.
- "loop through the sales orders to fill the input table for the currency conversion
- "loop at lt_vbak into wa_vbak.
- "wa_zcurr_conv_hana-id = wa_vbak-so_id.
- "wa_zcurr_conv_hana-in_amount = wa_vbak-net_amount.
- "wa_zcurr_conv_hana-ref_date = '30.07.2014'.
- "wa_zcurr_conv_hana-source_unit = wa_vbak-CURRENCY_CODE.
- "wa_zcurr_conv_hana-target_unit = 'USD'.
- "append wa_zcurr_conv_hana to lt_zcurr_conv_hana.
- "endloop.
- IF lv_star EQ abap_true.
- SELECT * INTO TABLE lt_snwd_so FROM snwd_so.
- LOOP AT lt_snwd_so INTO wa_snwd_so.
- wa_zcurr_conv_hana-id = wa_snwd_so-so_id.
- wa_zcurr_conv_hana-in_amount = wa_snwd_so-net_amount.
- wa_zcurr_conv_hana-source_unit = wa_snwd_so-currency_code.
- wa_zcurr_conv_hana-target_unit = 'USD'.
- wa_zcurr_conv_hana-ref_date = '30.07.2014'.
- APPEND wa_zcurr_conv_hana TO lt_zcurr_conv_hana.
- ENDLOOP.
- ELSEIF lv_abap EQ abap_true OR ( lv_abap EQ abap_false AND lv_amdp EQ abap_false ).
- SELECT so_id net_amount currency_code INTO wa_vbak FROM snwd_so.
- APPEND wa_vbak TO lt_vbak.
- wa_zcurr_conv_hana-id = wa_vbak-so_id.
- wa_zcurr_conv_hana-in_amount = wa_vbak-net_amount.
- wa_zcurr_conv_hana-source_unit = wa_vbak-currency_code.
- wa_zcurr_conv_hana-target_unit = 'USD'.
- wa_zcurr_conv_hana-ref_date = '30.07.2014'.
- APPEND wa_zcurr_conv_hana TO lt_zcurr_conv_hana.
- ENDSELECT.
- ENDIF.
- IF lv_abap EQ abap_true.
- "First select some sales orders to test with
- FIELD-SYMBOLS <wa_zcurr_conv_hana> LIKE LINE OF lt_zcurr_conv_hana.
- LOOP AT lt_zcurr_conv_hana ASSIGNING <wa_zcurr_conv_hana>.
- CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
- EXPORTING
- * CLIENT = SY-MANDT
- date = '30072014'
- foreign_amount = <wa_zcurr_conv_hana>-in_amount
- foreign_currency = 'USD'
- local_currency = <wa_zcurr_conv_hana>-source_unit
- * RATE = 0
- type_of_rate = 'P'
- read_tcurr = 'X'
- IMPORTING
- * EXCHANGE_RATE =
- * FOREIGN_FACTOR =
- local_amount = <wa_zcurr_conv_hana>-out_amount
- * LOCAL_FACTOR =
- * EXCHANGE_RATEX =
- * FIXED_RATE =
- * DERIVED_RATE_TYPE =
- * EXCEPTIONS
- * NO_RATE_FOUND = 1
- * OVERFLOW = 2
- * NO_FACTORS_FOUND = 3
- * NO_SPREAD_FOUND = 4
- * DERIVED_2_TIMES = 5
- * OTHERS = 6
- .
- IF sy-subrc <> 0.
- * Implement suitable error handling here
- ENDIF.
- ENDLOOP.
- ELSEIF lv_amdp EQ abap_true.
- "Call the convert method using the input table and get the result back
- NEW zbc_currency_conversion_hana( )->convert_currency_snwd(
- EXPORTING
- it_conv_prices = lt_vbak
- iv_mandt = sy-mandt
- iv_target_unit = 'USD'
- iv_ref_date = '30.07.2014'
- IMPORTING
- et_amount = lt_zcurr_conv_hana
- ).
- ELSE.
- "Call the convert method using the input table and get the result back
- NEW zbc_currency_conversion_hana( )->convert_currency(
- EXPORTING
- it_conv_prices = lt_zcurr_conv_hana
- iv_mandt = sy-mandt
- IMPORTING
- et_amount = lt_zcurr_conv_hana
- ).
- ENDIF.
- LOOP AT lt_zcurr_conv_hana INTO wa_zcurr_conv_hana.
- 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, '/'.
- ENDLOOP.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement