货币转换函数: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