曰元、韓元、台幣等特殊貨幣小數位數轉換


在SAP系統內,不同的貨幣的小數的位數有可能不一樣的,比如:日幣和人民幣的就不同。

代碼:

運行結果:

2017-03-13_13-51-11

同樣輸入了1.8,但是輸出的結果卻不同,日幣擴大了100倍,變成了180日元,而RMB還保持原樣,1.8元,想想很合理,日元最小單位是元,而rmb最小是分。

換句話,系統自動給日元加了個轉換因子100,rmb的轉換因子是1.

這個轉換因子學名叫貨幣轉換因子(Currency Converting Factor),是在abap開發中的一個重要的概念。計算公式如下:

貨幣轉換因子 = 100 × 貨幣的最小單位(小數點后位數,例如,小數點3位,最小單位就是0.001).

當沒有小數點時,貨幣轉換因子就是100 × 1 = 100.

貨幣的小數位數是保存在表TCURX中的,正常的貨幣都是小數點后2位的,這個是默認的,不保存在這個表中,也就是凡是在表tcurx中找不到的貨幣的轉換因子都是100 × 0.01 = 1,比如rmb。

2017-03-12_13-08-48

在上圖中能看到日元的是沒有小數點,是0,所以日元的轉換因子 = 100 × 1 = 100.

SAP提供了一個函數CURRENCY_CONVERTING_FACTOR能直接得到貨幣的轉換因子,

2017-03-13_14-16-24

上面這個貨幣的轉換過程是SAP自動實現的,比如180日元在數據庫中會自動保存成1.8,但是有個前提就是一定要指定幣種。

數據庫中顯示:

011347144563406

而在屏幕上,讀出來的就是自動轉換后的正確金額。

011347163474249

我們在ABAP編程時要注意指定幣種:

1) write輸出時,指定currency

2)  screen中指定參考單位

2017-03-13_14-33-15

3) ALV 中也要在catelog中指定參考貨幣單位,

SLIS_T_FIELDCAT_ALV-cfieldname

SLIS_T_FIELDCAT_ALV-slis_tabname

2017-03-13_14-39-09

OO ALV中

2017-03-13_14-53-45

另外:貨幣的一些相關表:

TCURT:貨幣描述文本

2017-03-12_13-07-47

TCURC:貨幣代碼(Currency Codes)

2017-03-13_15-00-20

以上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM