SAP 金额在表中的存储…
来源:互联网 发布:wireshark过滤端口抓包 编辑:程序博客网 时间:2024/04/27 12:15
场景:一个接口出问题了,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 moduleCURRENCY_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 金额在表中的存储…
- SAP 金额在表中的存储及货币转换因子
- 金额在数据库中的存储方法
- SAP BOR -- …
- SAP MM 评估收货…
- ALV 金额、数量 显示不…
- SAP Batch表MCH1和MCHA…
- SAP UI5 Demo 绑定…
- SAP UI5上传图片 用XSJS存储在HANA中的方法
- ABAP--如何进行sap的金额数据存储和显示之间的转换(CURRENCY_AMOUNT_DISPLAY_TO_SAP)
- ABAP--如何进行sap的金额数据存储和显示之间的转换(CURRENCY_AMOUNT_DISPLAY_TO_SAP)
- excel在sap中的应用
- SAP HANA中的存储过程(sql procedure)
- BigDecimal在存储金额方面的使用一
- BigDecimal在存储金额方面的使用二
- set define off 在数据库脚本中的…
- SAP 外币金额 汇率 转换
- SAP 外币金额 汇率 转换
- 安装64位office2013时提示已安装32…
- msleep问题
- SM30: Add custom …
- Fixed Value Append
- Copy fields from …
- SAP 金额在表中的存储…
- xmemcached
- ABAP Dump when&n…
- function module …
- 关于排序问题
- 从菜鸟成为数据科学家的 9步养成方案
- Android:Material Design on Android Checklist!
- 配置git for eclipse
- 图像处理之应用篇-大米计数续