金額処理
ABAPにおける金額項目は常に特定の通貨と結び付けられています。異なる通貨の金額換算や、内部書式と外部書式間の変換など、SAP標準から様々な汎用モジュールを用意されています。 このトピックでは、金額処理に関わる様々な方法を目的毎に纏めて説明します。
通貨情報取得
通貨換算係数取得
CURRENCY_CONVERTING_FACTOR
通貨換算係数を取得する関数。
DATA: WK_WAERS TYPE VBRK-WAERK. DATA: WK_FACTOR TYPE P DECIMALS 3. CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR' EXPORTING CURRENCY = WK_WAERS “ 通貨コード IMPORTING FACTOR = WK_FACTOR ” 通貨換算係数 EXCEPTIONS TOO_MANY_DECIMALS = 1 OTHERS = 2.
為替レート換算係数取得
READ_EXCHANGE_RATE
為替レート取得
READ_EXCHANGE_RATE
金額換算
外貨通貨→国内通貨
外貨通貨金額から国内通貨金額を換算するには、汎用モジュールCONVERT_TO_LOCAL_CURRENCYを利用できます。
REPORT Y_TEST_XXXX.
DATA:
F_CURR TYPE TCURR-FCURR,
L_CURR TYPE TCURR-TCURR,
F_VALUE TYPE P LENGTH 8 DECIMALS 2,
L_VALUE TYPE P LENGTH 8 DECIMALS 2,
EX_RATE TYPE TCURR-UKURS,
F_FACTOR TYPE TCURR-FFACT,
L_FACTOR TYPE TCURR-TFACT.
F_CURR = 'JPY'.
L_CURR = 'THB'.
F_VALUE = '0.02'.
CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
EXPORTING
* CLIENT = SY-MANDT
DATE = SY-DATUM "為替レート自動取得時の基準日
FOREIGN_AMOUNT = F_VALUE "外貨通貨金額
FOREIGN_CURRENCY = F_CURR "外貨通貨
LOCAL_CURRENCY = L_CURR "国内通貨
* RATE = '29.36' "為替レートを指定する場合は、このパラメータを利用すると
"ともにREAD_TCURRを''にする
TYPE_OF_RATE = 'B' "為替レートタイプ B:
READ_TCURR = 'X' "'X':為替レートはTCURRより取得、'':為替レートは
"RATEパラメータの値を使用
IMPORTING
EXCHANGE_RATE = EX_RATE "換算時の為替レート
FOREIGN_FACTOR = F_FACTOR "換算時の換算係数(外貨)
LOCAL_AMOUNT = L_VALUE "換算後国内通貨金額
LOCAL_FACTOR = L_FACTOR "換算時の換算係数(国内通貨)
* EXCHANGE_RATEX =
* FIXED_RATE =
* DERIVED_RATE_TYPE =
* EXCEPTIONS
* NO_RATE_FOUND = 1
* OVERFLOW = 2
* NO_FACTORS_FOUND = 3
* NO_SPREAD_FOUND = 4
* DERIVED_2_TIMES = 5
* OTHERS = 6
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE:/'FOREIGN CURRENCY=', F_CURR,
/'FOREIGN_FACTOR=', F_FACTOR,
/'FOREIGN VALUE=', F_VALUE,
/'EXCHANGE_RATE=', EX_RATE,
/'LOCAL CURRENCY=', L_CURR,
/'LOCAL_FACTOR=', L_FACTOR,
/'LOCAL VALUE=', L_VALUE.
WRITE:/ F_CURR,F_VALUE CURRENCY F_CURR.
WRITE:/ L_CURR,L_VALUE CURRENCY L_CURR.
国内通貨→外貨通貨
CONVERT_TO_FOREIGN_CURRENCY 国内通貨額の外貨への換算
REPORT Y_TEST_XXXX.
DATA:
F_CURR TYPE TCURR-FCURR,
L_CURR TYPE TCURR-TCURR,
F_VALUE TYPE P LENGTH 8 DECIMALS 2,
L_VALUE TYPE P LENGTH 8 DECIMALS 2,
EX_RATE TYPE TCURR-UKURS,
F_FACTOR TYPE TCURR-FFACT,
L_FACTOR TYPE TCURR-TFACT.
F_CURR = 'JPY'.
L_CURR = 'THB'.
L_VALUE = '3'.
CALL FUNCTION 'CONVERT_TO_FOREIGN_CURRENCY'
EXPORTING
* CLIENT = SY-MANDT
DATE = SY-DATUM "為替レート自動取得時の基準日
LOCAL_AMOUNT = L_VALUE "国内通貨金額
FOREIGN_CURRENCY = F_CURR "外貨通貨
LOCAL_CURRENCY = L_CURR "国内通貨
* RATE = '0.07' "為替レートを指定する場合は、このパラメータを利用すると
"ともにREAD_TCURRを''にする
TYPE_OF_RATE = 'B' "為替レートタイプ B:
READ_TCURR = 'X' "'X':為替レートはTCURRより取得、'':為替レートは
"RATEパラメータの値を使用
IMPORTING
EXCHANGE_RATE = EX_RATE "換算時の為替レート
FOREIGN_FACTOR = F_FACTOR "換算時の換算係数(外貨)
FOREIGN_AMOUNT = F_VALUE "換算後外貨金額
LOCAL_FACTOR = L_FACTOR "換算時の換算係数(国内通貨)
* EXCHANGE_RATEX =
* FIXED_RATE =
* DERIVED_RATE_TYPE =
* EXCEPTIONS
* NO_RATE_FOUND = 1
* OVERFLOW = 2
* NO_FACTORS_FOUND = 3
* NO_SPREAD_FOUND = 4
* DERIVED_2_TIMES = 5
* OTHERS = 6
.
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
WRITE:
/'LOCAL CURRENCY=', L_CURR,
/'LOCAL_FACTOR=', L_FACTOR,
/'LOCAL VALUE=', L_VALUE,
/'FOREIGN CURRENCY=', F_CURR,
/'FOREIGN_FACTOR=', F_FACTOR,
/'FOREIGN VALUE=', F_VALUE,
/'EXCHANGE_RATE=', EX_RATE
.
WRITE:/ L_CURR,L_VALUE CURRENCY L_CURR.
WRITE:/ F_CURR,F_VALUE CURRENCY F_CURR.
任意通貨間の換算
任意通貨間の換算に関しては、標準から以下二つの汎用モジュールが提供されていますが、
-
CONVERT_FOREIGN_TO_FOREIGN_CUR 外貨金額の別外貨通貨への換算
-
CONVERT_CURRENCY_BY_RATE 与えられたレートを使用した通貨の変換
いずれも未リリースの属性状態であり、正しく動作しないようです。
書式変換
SAPシステムでは、多通貨が混在しているため、実際に内部管理された金額値は、通貨毎にそれぞれ異なります。例えば、JPYの通貨型項目は通常本来の値の1/100で内部格納されています。 そのため、金額を入出力する際に、内部⇔外部の間に都度書式を変換する必要があります。
外部書式→内部書式変換
汎用モジュール利用
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' EXPORTING currency = 'JPY' amount_external = l_external_amount max_number_of_digits = 15 IMPORTING amount_internal = l_internal_amount.
内部書式→外部書式変換
汎用モジュール利用
CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_EXTERNAL' EXPORTING currency = 'JPY' amount_internal = l_internal_amount IMPORTING amount_external = l_external_amount.
命令利用
WRITE XXX TO XXX 'JPY'

浙公网安备 33010602011771号