汇率bapi

例1:

获取当天汇率的方法
 

 

DATA I_GDATU LIKE SY-DATUM.
DATA I_TCURR LIKE TCURR OCCURS 0 WITH HEADER LINE.




 IF ITAB-WAERK EQ 'EUR'.    "欧元
        CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
        EXPORTING
          INPUT  = SY-DATUM
        IMPORTING
          OUTPUT = I_GDATU.
    SELECT  KURST FCURR TCURR UKURS GDATU  UP TO 1 ROWS
    INTO CORRESPONDING FIELDS OF TABLE I_TCURR
          FROM TCURR                  "汇率
          WHERE KURST EQ 'M'          "汇率类型
          AND  FCURR EQ   ITAB-WAERK   "从货币
          AND  TCURR EQ   'USD'        "最终货币
           AND  GDATU >  I_GDATU      "汇率有效起始日期
          ORDER BY GDATU.
      READ TABLE I_TCURR INDEX 1.
      ITAB-GIWR = ITAB-GIWR * I_TCURR-UKURS.
      ITAB-WAERK = 'USD'.
    ELSEIF ITAB-WAERK EQ 'HKD'."港币
              CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
        EXPORTING
          INPUT  = SY-DATUM
        IMPORTING
          OUTPUT = I_GDATU.
    SELECT  KURST FCURR TCURR UKURS GDATU  UP TO 1 ROWS
    INTO CORRESPONDING FIELDS OF TABLE I_TCURR
          FROM TCURR                  "汇率
          WHERE KURST EQ 'M'          "汇率类型
          AND  FCURR EQ   'USD'       "从货币
          AND  TCURR EQ   ITAB-WAERK  "最终货币
           AND  GDATU >  I_GDATU      "汇率有效起始日期
          ORDER BY GDATU.
      READ TABLE I_TCURR INDEX 1.
      ITAB-GIWR = ITAB-GIWR / I_TCURR-UKURS.
      ITAB-WAERK = 'USD'.
    ELSEIF ITAB-WAERK EQ 'RMB'."人民币
              CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
        EXPORTING
          INPUT  = SY-DATUM
        IMPORTING
          OUTPUT = I_GDATU.
    SELECT  KURST FCURR TCURR UKURS GDATU  UP TO 1 ROWS
    INTO CORRESPONDING FIELDS OF TABLE I_TCURR
          FROM TCURR                  "汇率
          WHERE KURST EQ 'M'          "汇率类型
          AND  FCURR EQ   'USD'       "从货币
          AND  TCURR EQ   ITAB-WAERK  "最终货币
           AND  GDATU >  I_GDATU      "汇率有效起始日期
          ORDER BY GDATU.
      READ TABLE I_TCURR INDEX 1.
      ITAB-GIWR = ITAB-GIWR / I_TCURR-UKURS.
      ITAB-WAERK = 'USD'.
   ENDIF.




注意表TCURR,从欧元到美元,都是正数。从港币,人民币到美元都是负数。所以在转化的时候注意更改汇率方向。

美元 = 欧元 * 汇率;

美元 = 港元或人民币 / 汇率。

例2:

获取汇率的完整实现之一
 


经常用到,好不容易做了一个完整的。

 

data: cw_rate like bapi1093_0.
data: s_c_factor type p decimals 3,
t_c_factor type p decimals 3,.
data: s_waerk type waerk,
t_waerk type waerk,
curdate type rscalday,"add by Robin 2010.08.07
l_rate type p decimals 4.

*1. 获取汇率信息

call function 'BAPI_EXCHANGERATE_GETDETAIL'
exporting
rate_type = 'M'
from_curr = s_waerk
to_currncy = t_waerk
date = curdate
importing
exch_rate = cw_rate.

*2. 获取转换因子
call function 'CURRENCY_CONVERTING_FACTOR'
exporting
currency = s-waerk
importing
factor = s_c_factor.

call function 'CURRENCY_CONVERTING_FACTOR'
exporting
currency = t-waerk
importing
factor = t_c_factor.

l_rate = cw_rate-exch_rate * ( cw_rate-to_factor / cw_rate-from_factor )
* ( s_c_factor / t_c_factor ) .

    注意:CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
      再CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
*"对于像JPY TWD 等 比人民币小的  不然出来的金额会扩大(一般是扩大100倍)
or READ_EXCHANGE_RATE

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值