SAP 外币金额汇率转换

一、说明
汇率维护在ERP中可以使用事务代码OB07或者OB08,每次不同币别的汇率更改在正式生产系统中都会新创建一条记录,保存之后会存储在表TCURR中,可以通过函数CONVERT_TO_LOCAL_CURRENCY转换获取(注意函数Exporting中各个参数一定不能用常量,要用变量),函数自动会把当前最近的时间的汇率作为转化的汇率。

这里需要注意有一些货币比较特殊,比如日元JPY,它是没有小数点的,系统内存储的和你查询看到的不同,这是因为有转换因子的缘故,存入表之前SAP会先将金额除以这个因子后再存入。可以调用如下函数进行相互转换:

BAPI_CURRENCY_CONV_TO_INTERNAL:转换成数据库中内部存储金额
BAPI_CURRENCY_CONV_TO_EXTERNAL:转换成外部实际金额
二、汇率维护
汇率分为直接汇率(Direct quotation)和间接汇率(Indirect quotation)两种。

直接汇率:1外币=XX本位币

间接汇率:XX外币=1本位币

比如,公司代码本位币为人民币,那么1USD=6.5CNY为直接汇率,0.15385USD=1人民币为间接汇率。中国采用直接标价法,即美元/人民币报价。

SAP 中对于金额和汇率字段的处理(一般是会计相关的:会计发票、销售发票、采购发票等)有点特殊,并不是说你在前台看到的数据是多少就在系统表中写多少。

金额:有些货币的金额因为有转换因子的存在,存入表之前 SAP 会先将金额除以转换因子再存入,这些金额在取出来的时候需要进行相应的转换。

BAPI_CURRENCY_CONV_TO_INTERNAL:转换成数据库中内部存储金额
BAPI_CURRENCY_CONV_TO_EXTERNAL:转换成外部实际金额
汇率:而有些汇率是会乘以一定的系数(一般也是100),所以我们在通过汇率计算的时候需要除以一个数。系统提供了函数来读取金额和汇率的转换值。汇率分为:直接汇率(1外币=XX本位币)、间接汇率(XX外币=1本位币) 。

汇率存放在表 TCURR 中,另外 TCUR* 有关于汇率的其他数据
维护汇率的事物码:OB07、OB08
汇率转换的函数都在 LSCUNUXX 程序中
处理场景
处理金额的时候需要乘以转换值:这个值可以通过CURRENCY_CONVERTING_FACTOR函数获得

处理汇率的时候需要除以转换值:这个值可以通过READ_EXCHANGE_RATE / BAPI_EXCHANGERATE_GETDETAIL获得

REPORT ZTEST_CURRENCY_CONV.
PARAMETER: P_FC TYPE TCURC-WAERS DEFAULT 'JPY',
           P_TC TYPE TCURC-WAERS DEFAULT 'CNY',
           P_DATE TYPE SY-DATUM DEFAULT SY-DATUM,
           P_CURR TYPE BAPICURR-BAPICURR,
           P_KURST TYPE TCURR-KURST DEFAULT 'M'.
DATA: G_AMOUNT TYPE BSEG-WRBTR,
      GV_INTER LIKE BSEG-WRBTR,
      GV_FROM TYPE CHAR20,
      GV_TO   TYPE CHAR20.
"实际金额转换"
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
  EXPORTING
    currency             = P_FC
    amount_external      = P_CURR
    max_number_of_digits = 13
  IMPORTING
    amount_internal      = GV_INTER. 
"外币金额转换成本地金额"
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  EXPORTING
    date             = P_DATE
    foreign_amount   = GV_INTER
    foreign_currency = P_FC
    local_currency   = P_TC
    type_of_rate     = P_KURST
  IMPORTING
    local_amount     = G_AMOUNT
  EXCEPTIONS
    no_rate_found    = 1
    OTHERS           = 2.
WRITE: / P_FC,'==》',P_TC.
WRITE: / P_CURR,'==》',G_AMOUNT.
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值