函数名
⽤途
备注取得货币的转换因⼦
BAPI_CURRENCY_CONV_TO_INTERNAL 根据货币把⾦额从外部转为内部 BAPI_CURRENCY_CONV_TO_EXTERNAL 根据货币把⾦额从内部转为外部
CURRENCY_AMOUNT_DISPLAY_TO_SAP 根据货币把⾦额从外部转为内部参数类型固定(15,4)CURRENCY_AMOUNT_SAP_TO_DISPLAY 根据货币把⾦额从内部转为外部参数类型固定(15,4)
UNITS_STRING_CONVERT 将带分隔符的字符型⾦额转为数字型不能转带有正负号的⾦额
CLOI_PUT_SIGN_IN_FRONT ⾦额负号提前
只能⽤字符类型进⾏操作WRITE 格式化(转为字符型,加千分位)
WRITE <f > CURRENCY <c >.
ABAP⾦额内外部转换函数
SAP 货币存储
⼀般⽽⾔,币种的⼩数位为2,所以系统默认的位数也是2,但是有⼀些特殊币种如⽇元JPY ,没有⼩数位。只要⼩数位不等于2,需要在系统中特殊处理(通过转
换因⼦进⾏转换)。
1、如果某货币的⼩数位不是2位,则需要通过OY04设置其⼩数位数,即需在TCURX 表中进⾏维护
2、系统中的数据表存放的⽇元JPY 、俄卢布RUR 等货币⽐前台输⼊的⾦额⼩100倍,因为它们没有⼩数位,所以转换因⼦为100
,存⼊表之前SAP 会先将⾦额除以这个因⼦后再存⼊
3、系统根据转换因⼦将原⾦额转换成含⼩位⼩数的⾦额后存储(据说根据ISO 的什么标准),如⽇元为0位⼩数,转换因⼦为100,120⽇元除以因⼦100后转换后变成1.20,缩⼩100倍。如为USDN 为5位⼩数,其转换因⼦为100/10/10/10/10/10=0.001,12.01230除以0.001后则转换成12012.30,扩⼤1000倍。SAP 在⾦额数据存储时会⾃动的转换,即SAP 很烦的external 及internal 的数据格式。                函数使⽤
invalids
作⽤:将外部⾦额转换为内部存储⾦额,实质上过程是将外部⾦额除以转换因⼦即可得到
CALL FUNCTION'BAPI_CURRENCY_CONV_TO_INTERNAL'
EXPORTING
currency            = 'JPY'"⾦额币别
amount_external      = jpy_e "外部⾦额
max_number_of_digits = 23"转换后⾦额最⼤长度
IMPORTING
amount_internal      = jpy_i "转换后的内部存储⾦额
return              = ret.  "消息
作⽤:根据当前⽤户的⾦额显⽰⽅式,将带有分隔符的⾦额(字符型)转换为P类型的数值。例如:将“1,000.123”转换为 1000.123
SAP中数字显⽰的三种⽅式:
1.⼩数点是逗号,分隔符是句号 N.NNN,NN
2.⼩数点是句号,分隔符是逗号 N,NNN.NN
3.⼩数点是逗号,分隔符是空格 N NNN,NN
系统以哪种⽅式显⽰,存储在⽤户表USR01的DCPFM字段,值分别是"空" 、“X”、“Y”。
调⽤函数的时候将这个字段将作为其中的⼀个输⼊参数.函数会根据当前显⽰转换.
DATA: l_clabs TYPE p DECIMALS 3,
l_dcpfm LIKE usr01-dcpfm.
SELECT SINGLE dcpfm
INTO l_dcpfm
FROM usr01
WHERE bname = sy-uname.
CALL FUNCTION'UNITS_STRING_CONVERT'
EXPORTING
units_string      = '123,456.789'"-123,456.789 会报错
dcpfm              = l_dcpfm        "此时为
*    MLLN              = 'M'
*    TSND              = 'T'
IMPORTING
units              = l_clabs
EXCEPTIONS
invalid_type      = 1
OTHERS            = 2.
PS:转换因⼦是如何得到的
换算率:货币中最⼤单位与最⼩单位相差倍数
转换因⼦:转换因⼦ = 100/换算率