【CURRENCY_CONVERTING_FACTOR】在SAP系統中,對於曰幣、韓幣、臺幣這類特殊貨幣的處理是有特殊規則的。post
首先,根據幣別到DB表中讀取 TCURX 中讀取相應的小數位數 CURRDEC。url
若是沒有維護相應幣別的信息 則默認 CURRDEC = 2。spa
若是 CURRDEC GT 5 就報錯。code
而後默認轉換率是100。htm
在CURRDEC NE 0 的狀況下blog
循環 CURRDEC 次,每次將轉換比率 除以 10.get
因此若是表 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: 轉換後獲得的貨幣比率
例1.
FORM BRF_AP USING F_BETRAG " 金額 F_CURRENCY. " 貨幣代碼 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_AP
例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