Currency Issue

来源:互联网 发布:apache 禁止目录 编辑:程序博客网 时间:2024/06/02 01:41

整理一下 BW 系统里面关于 currency 的一些 point

    • Example
    • Explanation

主要有一个 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)
TCURX


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 输出

以上。

原创粉丝点击