首页 > 其他 > 详细

SAP 金额在表中的存储及货币转换因子

时间:2014-03-12 03:10:42      阅读:409      评论:0      收藏:0      [点我收藏+]

场景:一个接口出问题了,SAP通过RFC将SO数据传输到Java系统,错误的将100日元传为1.00日元。

其实查看SAP透明表发现,表中存储的的确是1.00,是前台真实数据的1/100,开发接口时没注意到这种情况,也就导致了接口发生错误。

这在SAP系统中是常见的,SAP各种币种的金额都有默认的小数位数,像人民币CNY,美元等都是2位小数,日元和韩元是0位,及没有小数位。各种币种的金额在透明表中存储都是同一个字段,在存储到表中是都会做一个转换,就有了货币转换因子的概念,如上述日元,转换因子为100.

有以下几种转换方式:

1、使用function module CURRENCY_CONVERTING_FACTOR 获取某个币种的货币转换因子,然后将透明表中的金额乘以货币转换因子就可以了。

2、使用function module FWOS_CURRENCY_DECIMALS_READ 获取某个币种的小数位数N,货币转换因子等于10的(2 - N)次方。

3、直接进行转换的function module CURRENCY_AMOUNT_SAP_TO_DISPLAY,另外还有反向转换的CURRENCY_AMOUNT_DISPLAY_TO_SAP可以使用。

4、使用write to语句指定币种,WRITE p_amt1 currency ‘JPY‘ to p_amt2.

还有两个问题,

Q1、为什么在SAP系统内开发的报表或功能程序没有显示错误呢?

A: 在ALV或者screen上人为指定了币种,这样SAP系统会根据此币种的货币转换因子自动转换后显示。

Q2:使用货币转换因子,乘法还好,除法的话会出现小数位四舍五入的,导致的数据误差怎么办?

A:没法办。SAP标准程序输入金额大多不会有此问题,他根据币种限制了小数位数的输入;但是自定义开发的程序多半没有考虑,像一些报表需要复杂的金额运算,小数位误差在所难免。

在SAP条件记录中,百分比的存储也有此种情况,需要注意。

SAP 金额在表中的存储及货币转换因子,布布扣,bubuko.com

SAP 金额在表中的存储及货币转换因子

原文:http://www.cnblogs.com/ruingy/p/3594663.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!