【整理】SAP貨幣匯率轉換

貨幣匯率轉換Demo

 

一、說明

匯率維護在ERP中可以使用事務代碼OB07或者OB08,每次不同幣別的匯率更改在正式生產系統中都會新創建一條記錄,保存之後會存儲在表TCURR中,可以通過函數CONVERT_TO_LOCAL_CURRENCY轉換獲取(注意函數Exporting中各個參數一定不能用常量,要用變量),函數自動會把當前最近的時間的匯率作爲轉化的匯率。

這裏需要注意有一些貨幣比較特殊,比如日元JPY,它是沒有小數點的,系統內存儲的和你查詢看到的不同,這是因爲有轉換因子的緣故,存入表之前SAP會先將金額除以這個因子後再存入。可以調用如下函數進行相互轉換:

  • BAPI_CURRENCY_CONV_TO_INTERNAL:轉換成數據庫中內部存儲金額
  • BAPI_CURRENCY_CONV_TO_EXTERNAL:轉換成外部實際金額

 

二、匯率維護

匯率分爲直接匯率(Direct quotation)和間接匯率(Indirect quotation)兩種。

直接匯率:1外幣=XX本位幣

間接匯率:XX外幣=1本位幣

比如,公司代碼本位幣爲人民幣,那麼1USD=6.5CNY爲直接匯率,0.15385USD=1人民幣爲間接匯率。中國採用直接標價法,即美元/人民幣報價。

 

 

三、轉換實例

*&---------------------------------------------------------------------*
*& Report  ZTEST_CONVERT_CURR
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZTEST_CONVERT_CURR.

DATA: GV_AMOUNT LIKE BSEG-WRBTR,
      GV_INTER  LIKE BSEG-WRBTR,
      GV_FROM   TYPE CHAR20,
      GV_TO     TYPE CHAR20.

************************************
* selection screen
************************************
PARAMETERS : P_FC TYPE TCURC-WAERS DEFAULT 'JPY',
             P_TC TYPE TCURC-WAERS DEFAULT 'CNY',
             P_DATE LIKE SY-DATUM DEFAULT SY-DATUM,
             P_CURR TYPE BAPICURR-BAPICURR,
             P_KURST TYPE TCURR-KURST DEFAULT 'M'.

************************************
* start- of -selection
************************************
START-OF-SELECTION.
*** Conversion of Currency Amounts into Internal Data Format
  CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL'
    EXPORTING
      CURRENCY             = P_FC
      AMOUNT_EXTERNAL      = P_CURR
      MAX_NUMBER_OF_DIGITS = 13
    IMPORTING
      AMOUNT_INTERNAL      = GV_INTER.

*** Translate foreign currency amount to local currency
  CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
    EXPORTING
      DATE             = P_DATE
      FOREIGN_AMOUNT   = GV_INTER
      FOREIGN_CURRENCY = P_FC
      LOCAL_CURRENCY   = P_TC
      TYPE_OF_RATE     = P_KURST
    IMPORTING
      LOCAL_AMOUNT     = GV_AMOUNT
    EXCEPTIONS
      NO_RATE_FOUND    = 1
      OTHERS           = 2.

************************************
*  end - of - selection
************************************
END-OF-SELECTION.
  MOVE P_CURR TO GV_FROM.
  MOVE GV_AMOUNT TO GV_TO.
  CONDENSE GV_FROM NO-GAPS.
  CONDENSE GV_TO NO-GAPS.

  WRITE : / P_FC,'→',P_TC.
  WRITE : / GV_FROM ,'→',GV_TO.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章