CALL FUNCTION 'LAST_DAY_OF_MONTHS' "获取月末最后一天
EXPORTING
day_in = lv_datum
IMPORTING
last_day_of_month = lv_datum
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
CLEAR: gv_begda,gv_endda.
gv_begda = |{ p_gjahr }{ p_monat }01|.
CALL FUNCTION 'LAST_DAY_OF_MONTHS' "获取月末最后一天
EXPORTING
day_in = gv_begda
IMPORTING
last_day_of_month = gv_endda
EXCEPTIONS
day_in_no_date = 1
OTHERS = 2.
PERFORM frm_get_date.
lv_begda = gv_begda.
lv_endda = gv_endda.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT' "转内码
EXPORTING
input = gv_begda
IMPORTING
output = lv_begda.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT' "转内码
EXPORTING
input = gv_endda
IMPORTING
output = lv_endda.
*币种汇率转换
SELECT SINGLE waers INTO @DATA(lv_waers) FROM t001 WHERE bukrs EQ @ls_sum-Rbukrs.
IF lv_waers NE 'CNY'.
SELECT SINGLE ukurs INTO @DATA(lv_ukurs) FROM tcurr
WHERE kurst EQ 'M' AND fcurr EQ @lv_waers AND tcurr EQ 'CNY' "AND gdatu LE @lv_endda AND gdatu GE @lv_begda.
AND gdatu GE @lv_endda AND gdatu LE @lv_begda.
IF sy-subrc EQ 0 AND lv_ukurs NE 0.
LOOP AT lt_currencyamount ASSIGNING FIELD-SYMBOL(<fs_currencyamount>) WHERE curr_type EQ '12'.
<fs_currencyamount>-amt_doccur = <fs_currencyamount>-amt_doccur * lv_ukurs."金额要做汇率转换
<fs_currencyamount>-currency = lv_waers."公司代码货币
ENDLOOP.
ELSE.
SELECT SINGLE ukurs INTO @lv_ukurs FROM tcurr
WHERE kurst EQ 'M' AND fcurr EQ 'CNY' AND tcurr EQ @lv_waers "AND gdatu LE @lv_endda AND gdatu GE @lv_begda.
AND gdatu GE @lv_endda AND gdatu LE @lv_begda.
IF sy-subrc EQ 0 AND lv_ukurs NE 0.
LOOP AT lt_currencyamount ASSIGNING <fs_currencyamount> WHERE curr_type EQ '12'.
<fs_currencyamount>-amt_doccur = <fs_currencyamount>-amt_doccur / lv_ukurs."金额要做汇率转换
ENDLOOP.
ELSE.
ls_sum-zicon = icon_green_light.
ls_sum-zmsg = |公司代码货币{ lv_waers } 和CNY的汇率转换不存在!|.
MODIFY gt_SUM FROM ls_sum TRANSPORTING zmsg WHERE seq = ls_sum-seq.
ENDIF.
ENDIF.
ENDIF.
CLEAR: lv_ukurs,lv_waers.