取汇率

*&---------------------------------------------------------------------*
*& 抬头     : 汇率解析                                                 *
*& 模块     : FI                                                       *
*& 作者     : 88392028                                                 *
*& 创建日期 : 2018/06/21                                               *
*& 程序类型 : 汇率解析接口                                             *
*& 消息类   : 00                                                       *
*& 描述     : 汇率解析                                                 *
*& 修改记录 :                                                          *
*& 日期        修改人           修改内容                               *
*& 2018/09/10  88392028         二期优化                              *
*&---------------------------------------------------------------------*
function zdq_fi_186 .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(CURRENCY1) TYPE  CHAR6 OPTIONAL
*"     VALUE(PAYTIME) TYPE  SYDATE OPTIONAL
*"     VALUE(CURRENCY) TYPE  CHAR6 OPTIONAL
*"     VALUE(COSTFLAGE) TYPE  CHAR2 OPTIONAL
*"  EXPORTING
*"     VALUE(ROE_RATE) TYPE  CHAR15
*"     VALUE(COSTFLAGE) TYPE  CHAR2
*"     VALUE(FFACT) TYPE  CHAR15
*"     VALUE(TFACT) TYPE  CHAR15
*"     VALUE(JS_RATE) TYPE  CHAR15
*"     VALUE(OUT_STATUS) TYPE  CHAR1
*"     VALUE(OUT_MSG) TYPE  CHAR255
*"----------------------------------------------------------------------
  data: ls_tcurf like tcurf,
        ls_exch_rate type bapi1093_0.

**s1.COSTFLAGE回写[字段名一致]

**s2.TCURF表取FFACT,TFACT
  select single *
           into ls_tcurf
           from tcurf "汇率-转换因子
          where kurst = 'M'
            and fcurr = currency1
            and tcurr = currency.
  if sy-subrc eq 0.
    ffact = ls_tcurf-ffact.
    tfact = ls_tcurf-tfact.
**s3.函数取汇率
    call function 'BAPI_EXCHANGERATE_GETDETAIL'
      exporting
        rate_type  = 'M'
        from_curr  = ls_tcurf-fcurr "从货币
        to_currncy = ls_tcurf-tcurr "到货币
        date       = paytime
      importing
        exch_rate  = ls_exch_rate.
*    IF SY-SUBRC EQ 0.
*****V1.0CHANGE BY 88392028 FOR XXX AT 20180910 BEGIN*****
    if ls_exch_rate-exch_rate is not initial.
*****V1.0CHANGE BY 88392028 FOR XXX AT 20180910 E N D*****
      out_status = 'S'.
      roe_rate = ls_exch_rate-exch_rate.
**[公式] JS_RATE  = ROE_RATE * 转换因子-到 / 转换因子-从
      if  ls_tcurf-ffact is not initial.
        js_rate  =  roe_rate * ls_tcurf-tfact / ls_tcurf-ffact.
      else.
        out_msg  =
'R3汇率解析/转换因子从TCURF-FFACT为0,计算汇率没取到值'.
      endif.
    else.
      out_status = 'E'.
      concatenate 'R3汇率解析/'
                  currency1 '/'
                  paytime   '/'
                  currency '/'
                  costflage '/'
                  '通过函数取汇率值失败'
                  into out_msg.
    endif.
  else.
    out_status = 'E'.
    concatenate 'R3汇率解析/'
                currency1 '/'
                paytime   '/'
                currency '/'
                costflage '/'
                '取转换因子TCURF表失败'
                into out_msg.
  endif.


endfunction.
原文地址:https://www.cnblogs.com/rainysblog/p/11691528.html