How condition value calculated in sap

local currency to foreign currency.

背景:当condition record里面维护的amount太小,而且需要从本位币转换为USD的时候,那么除以汇率,就会更小。况且SAP保留的小数位只有两位。那么这几项的value就变成了0. 当order qty很大的时候,这个尾差就会被放大。

clip_image002

以上图为例,业务的逻辑是 (ZPRS+ZLB5+ZOV5+Z4PL)*1.15 = 单位的价格。最后再乘以汇率(1/ 6.84932); 也就是(5.64+0.01+0.01+0.10)*1.15 *0.146= 0.97(四舍五入两位小数);0.97*2000 =1940 

但是SAP的逻辑是把每一项转换为USD后再汇总。所以最终的价值是1909. 相差了31美金。这不是个小数字。


怎么办?

把condition record里面的per 扩大。

image

这个3USD是怎么推到出来的?

1 CNY* 0.146 = 0.145999895USD;四舍五入保留两位小数 0.15 ; 0.15*2000/100 = 3 USD

这样算出来的结果为1927.40;

这样差异就小多了。还可以扩大到1000.

image

这样扩大到100和1000的值就差的不多了。

原文地址:https://www.cnblogs.com/chrisrockdl/p/14247080.html