貨幣轉換函數:CURRENCY_CONVERTING_FACTOR

【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

  DATAS_FACTOR  TYPE  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
class

 

例2:循環

DATAG_PER_PRICE  TYPE P,
      G_KPER_PRICE TYPE P,
      G_PRICE      TYPE P,
      PG_FACTOR    TYPE 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

相關文章
相關標籤/搜索