财务汇率转换

  

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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值