【CURRENCY_CONVERTING_FACTOR】在SAP系統中,對於曰幣、韓幣、臺幣這類特殊貨幣的處理是有特殊規則的。數據庫
首先根據幣別到DB表TCURX中讀取相應的小數位數CURRDEC。
若是沒有維護相應幣別信息則默認CURRDEC = 2。
若是 CURRDEC GT 5.就報錯。
而後默認轉換比率是100。
在CURRDEC NE 0的狀況下
循環CURRDEC次,每次將轉換比率除以10 。
因此若是表TCURX中的CURRDEC = 0就默認轉換比率爲100。
當表TCURX中沒有找到相應數據時則默認CURRDEC = 2。
轉換比率也就是100 / 10 / 10 = 1.
其餘的好比若是表TCURX中的CURRDEC = 4,則轉換比率應該爲 100 / 10 / 10 / 10 / 10 = 0.01
咱們在SE16中看到的貨幣金額基本上都通過了這個轉換,如曰元,都是除以100後存入數據庫的。
因此當咱們從數據庫中讀取曰元金額時也應該做相應的轉換,乘以100 。
簡單的使用Function CURRENCY_CONVERTING_FACTOR。輸入幣別,就能夠獲得相應的轉換比率了。函數
函數中所涉及的經常使用選項:
EXPORTING:
CURRENCY: 將被處理的貨幣種別編號
IMPORTING:
FACTOR: 轉換後獲得的貨幣比率spa
例1.it
FORM BRF_AP USING F_BETRAG " 金額
F_CURRENCY. " 貨幣代碼
io
DATA: S_FACTOR TYPE P DECIMALS 3.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = F_CURRENCY
IMPORTING
FACTOR = S_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
IF S_FACTOR NE 0.
F_BETRAG = F_BETRAG / S_FACTOR.
ENDIF.
ENDFORM. "BRF_APclass
例2:循環
DATA: G_PER_PRICE TYPE P,
G_KPER_PRICE TYPE P,
G_PRICE TYPE P,
PG_FACTOR TYPE P DECIMALS 3.
FORM CHANGEVALUEBYFACTOR USING P_WAERS CHANGING PG_FACTOR.
CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = P_WAERS "輸入的幣別
IMPORTING
FACTOR = PG_FACTOR "輸出的值
EXCEPTIONS
TOO_MANY_DECIMALS = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
PG_FACTOR = 1.
ENDIF.
ENDFORM. "CHANGEVALUEBYFACTOR
im