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.
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.
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, 因此顯示金額會乘十的負二次方才是
儲存結果
在TCURX中CURRKEY = ‘TWD’ 其CURRDEC = 0, 因此顯示金額會乘十的負二次方才是
儲存結果
Note: 也有現成得Function modules可用:
CURRENCY_AMOUNT_ SAP _TO_ DISPLAY : 顯示儲存的金額
CURRENCY_AMOUNT_DISPLAY_TO_SAP : 儲存輸入的金額(至CURR type的欄位)
CURRENCY_AMOUNT_ SAP _TO_ DISPLAY : 顯示儲存的金額
CURRENCY_AMOUNT_DISPLAY_TO_SAP : 儲存輸入的金額(至CURR type的欄位)
沒有留言:
張貼留言
歡迎提供意見, 謝謝 (註 : 留言經過版主審核通過才會發布)