整理一下 BW 系统里面关于 currency 的一些 point
主要有一个 Note:
- 1240163 - Amount too high by factor of 100 for currency HUF, JPY, KRW, JOD, CLP
这个 Note 已经说的十分详细了。
系统内部存储数据的格式是带两个小数位的。所以在遇到不带小数位的货币的时候(例如:韩元、日元等),如果混淆了外部格式和内部格式,可能会带来数据上的误差(100倍)
Internal 的 format 显示的都是两位 decimal places
BW 系统中哪些是 internal 哪些是 external 的呢:
The internal format is displayed:
- In SE16 in the classic format (PSA table, fact table and so on)
- In the debugger
The external format is displayed:- In the query
- In PSA maintenance (IMPORTANT: PSA table in SE16 see above)
- In SE16:
- When using the ALV display
- If you display the single record using the “Display” function key (F7)
Internal 与 External format 互相 convert 的时候会参照一个表 TCURX (Decimal Places in Currencies)
Example
DataSource 里面我们设置两个 currencies
一个以 External 的 format 输入进 BW 系统
一个以 Internal 的 format 输入进 BW 系统
Excel 里面的数据如下
PSA 里面的数据如下:
根据上面的可以知道这里是 BW 系统以 external format 显示出来的值
而 PSA 表里面,BW 系统以 internal format 显示出来的如下:
Explanation
我们来按个分析:
对于 APPLE
- 100 日元 External –> 因为日元是没有小数位的,所以会以 100 给内部,而内部格式是有两位小数位的,所以以 1.00 存在内部 —> 输出外部的时候(参考表知道日元没有小数位)以 100 输出
- 100 日元 内部格式 –> 内部格式是有两位小数位的,所以按照 100.00 存在内部 —> 输出外部的时候(参考表知道日元没有小数位)以 10000 输出
对于 BANANA
- 200 IQD 外部格式 –> 因为 IQD 在系统中是标识有 3个小数位的,所以会以 200.000 给内部,而内部格式是有两位小数位的,所以以 2000.00存在内部 —> 输出外部的时候(参考表知道IQD 有3个小数位)以 200.000 输出
- 200 IQD 内部格式 –> 内部格式是有两位小数位的,所以按照 200.00 存在内部 —> 输出外部的时候(参考表知道IQD 有3个小数位 )以 20.000 输出
对于 PEAR
- 300 RMB 外部格式 –> 因为 RMB 在系统中是标识有 2个小数位的,所以会以 300.00 给内部,而内部格式是有两位小数位的,所以以 300.00存在内部 —> 输出外部的时候(参考表知道RMB 有2个小数位)以 300.00 输出
- 300 RMB 内部格式 –> 内部格式是有两位小数位的,所以按照 300.00 存在内部 —> 输出外部的时候(参考表知道 RMB 有2个小数位 )以 300.00 输出
对于 SKIRT
- 100.89 日元 外部格式 –> 因为日元是没有小数位的,所以会以 101(四舍五入) 给内部,而内部格式是有两位小数位的,所以以 1.01 存在内部 —> 输出外部的时候(参考表知道日元没有小数位)以 101 输出
- 100.89 日元 内部格式 –> 内部格式是有两位小数位的,所以按照 100.89 存在内部 —> 输出外部的时候(参考表知道日元没有小数位)以 10089 输出
对于 WINE
- 200.67 IQD 外部格式 –> 因为 IQD 在系统中是标识有 3个小数位的,所以会以 200.670 给内部(系统补零),而内部格式是有两位小数位的,所以以 2006.70存在内部 —> 输出外部的时候(参考表知道IQD 有3个小数位)以 200.670 输出
- 200.67 IQD 内部格式 –> 内部格式是有两位小数位的,所以按照 200.67 存在内部 —> 输出外部的时候(参考表知道IQD 有3个小数位 )以 20.067 输出
对于 ORANGE
- 300.00 RMB 外部格式 –> 因为 RMB 在系统中是标识有 2个小数位的,所以会以 300.00 给内部,而内部格式是有两位小数位的,所以以 300.00存在内部 —> 输出外部的时候(参考表知道RMB 有2个小数位)以 300.00 输出
- 300.00 RMB 内部格式 –> 内部格式是有两位小数位的,所以按照 300.00 存在内部 —> 输出外部的时候(参考表知道 RMB 有2个小数位 )以 300.00 输出
以上。