如果引用或轉貼,麻煩註明出處與本網誌連結,否則視為侵權。

2006年8月14日

ABAP - SAP 顯示金額與實際儲存值差異的問題

SAP在顯示金額及儲存金額時會透過一個Table(TCURX)及特定的計算公式產生其結果
建議的寫法如下:
A. 顯示儲存的金額
DATA: SHIFT TYPE I.
CLEAR SHIFT.
SELECT SINGLE * FROM TCURX WHERE CURRKEY = (幣別).
IF SY-SUBRC = 0.
SHIFT = 2 - TCURX-CURRDEC.
ENDIF.
(顯示金額) = (儲存金額) * 10 ** SHIFT.
B. 儲存輸入的金額(至CURR type的欄位)
DATA: SHIFT TYPE I.
CLEAR SHIFT.
SELECT SINGLE * FROM TCURX WHERE CURRKEY = (幣別).
IF SY-SUBRC = 0.
SHIFT = TCURX-CURRDEC – 2.
ENDIF.
(儲存金額) = (顯示金額) * 10 ** SHIFT.
由上面公式您可以瞭解為何TWD顯示100為何儲存值為 1
在TCURX中CURRKEY = ‘TWD’ 其CURRDEC = 0, 因此顯示金額會乘十的負二次方才是
儲存結果
Note: 也有現成得Function modules可用:
CURRENCY_AMOUNT_ SAP _TO_ DISPLAY : 顯示儲存的金額
CURRENCY_AMOUNT_DISPLAY_TO_SAP : 儲存輸入的金額(至CURR type的欄位)

沒有留言:

張貼留言

歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)