通过abap函数实现外币汇率转换
SAP中对于金额和汇率字段的处理(一般是会计相关的,如果会计发票,销售发票,采购发票等)有点特殊,并不是说你多少就在系统表中写多少,有些货币的金额会进行除以一个值(一般是100),所有这些金额在取出来的时候得进行相应的转换,而有些汇率是会乘以一定的系数(一般也是100),所以我们在通过汇率计算的时候需要除以一个数,系统提供了函数来读取金额和汇率的转换值。
我们在从系统表中直接取出金额和汇率是一般都需要进行如下转换
处理金额的时候需要乘以转换值 这个值可以通过 CURRENCY_CONVERTING_FACTOR 函数获得,
处理汇率的时候需要除以转换值 这个值可以通过 READ_EXCHANGE_RATE 获得
(函数 READ_EXCHANGE_RATE 也可以根据时间获得相应的汇率)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
"获取金额转换比率的函数 TYPE-POOLS isoc. DATA:CUR LIKE t001-waers . DATA:l_fact TYPE ISOC_FACTOR. CUR = 'JPY'. "1.获取转换因子 CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR' EXPORTING currency = CUR IMPORTING factor = l_fact EXCEPTIONS too_many_decimals = 1 OTHERS = 2. WRITE:L_FACT. "2.获取汇率比率的函数 DATA:fc LIKE t001-waers . DATA:l_fact TYPE i. CALL FUNCTION 'READ_EXCHANGE_RATE' EXPORTING date = sy-datum foreign_currency = fc local_currency = 'CNY' type_of_rate = 'M' IMPORTING foreign_factor = l_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. "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. |
本文作者: GavinDong
版权属于: GavinDong博客
文章链接: https://gavindong.com/543.html
如果使用过程中遇到问题,可 **点击此处** 交流沟通。
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。