通过OB08维护好的汇率,function module CONVERT_TO_LOCAL_CURRENCY 和CONVERT_TO_FOREIGN_CURRENCY可以做两种货币之间的汇率换算,要注意这两个函数的金额都是SAP内部格式,不管Local还是Foreign currency。
例如传入参数JPY 1.00,换算成美元USD,假如当前汇率是1 JPY = 0.01280 X 1 USD。那得到的结果为USD 1.28;好像被扩大了100倍,其实这是正确的。因为JPY 1.00和USD 1.28都是SAP金额的内部格式,JPY 1.00实际上是100日元的SAP内部存储格式。
反过来,传入参数USD 1.00,换算成日元JPY,当前汇率维护1 USD = 88.00000 X 1 JPY,那么得到的结果为JPY 0.88,同样的原因,此处的USD 1.00和JPY 0.88都是SAP金额的内部格式,JPY 0.88实际是88日元.
金额的内部格式和外部格式跟币种的小数位数配置有关,如日元,韩元小数位数为0,美元,欧元,人民币小数位数为2,此配置OY04可以修改,但影响很大,后果自负。
金额的内部存储格式和外部显示格式转换方法,请见上一篇
需要注意如果要更新的透明表,金额和币种同时保存,并在透明表金额字段货币引用做了正确的指定的话,不需要做任何转换直接保存到透明表即可。如果没有,请参照上一篇转换方法,将其转换为外部显示格式后再保存到透明表。