SAP中对于金额和汇率字段的处理(一般是会计相关的,如果会计发票,销售发票,采购发票等)有点特殊,并不是说你多少就在系统表中写多少,有些货币的金额会进行除以一个值(一般是100),所有这些金额在取出来的时候得进行相应的转换,而有些汇率是会乘以一定的系数(一般也是100),所以我们在通过汇率计算的时候需要除以一个数,系统提供了函数来读取金额和汇率的转换值。
我们在从系统表中直接取出金额和汇率是一般都需要进行如下转换
处理金额的时候需要乘以转换值 这个值可以通过 CURRENCY_CONVERTING_FACTOR 函数获得,
处理汇率的时候需要除以转换值 这个值可以通过 READ_EXCHANGE_RATE 获得
(函数 READ_EXCHANGE_RATE 也可以根据时间获得相应的汇率)
"获取金额转换比率的函数
TYPE-POOLS DATA:CUR
DATA:l_fact
CUR
"1.获取转换因子
CALL
WRITE:L_FACT.
"2.获取汇率比率的函数
"3.获取当前汇率
DATA:fact TYPE i,
rate LIKE vbrp-kursk,
p_kursf LIKE vbrp-kursk .
"调用取汇率函数
CALL FUNCTION 'READ_EXCHANGE_RATE'
EXPORTING
date = sy-datum "汇率日期
foreign_currency = p_waers "外币
local_currency = 'CNY' "本币
type_of_rate = 'M' "类型
* EXACT_DATE = ' '
IMPORTING
exchange_rate = rate "交换率
foreign_factor = fact "比率
EXCEPTIONS
no_rate_found = 1
no_factors_found = 2
no_spread_found = 3
derived_2_times = 4
overflow = 5
zero_rate = 6
OTHERS = 7
.
*最终汇率结果 这里也是除以因子才是真正的汇率
p_kursf = rate / fact.
ENDIF.
*
*最终汇率结果