在过去的SAP实施项目中,不少是GLOBAL的企业,会有日元,卢布等外币。
之前傻傻的以为所有钱钱2位小数就万能搞定。后来才知道自己是井底之蛙啊!
比如日元,是没有小数的,估计著名的津巴布韦也没有。
货币价值低,那么如何利用有限的数据库空间完美存储金额数据呢?
聪明的SAP想到了转换因子的概念。不得不感慨,神奇的SAP专家!
本文是SAP ABAP常用BAPI函数50之XX的系列文章之一,欢迎关注指教~共同提高。
今天,我们一起来学习领会一下强大的系统金额由内转外功能。
BAPI函数:BAPI_CURRENCY_CONV_TO_EXTERNAL
应用场景:
- 般而言,币种的小数位为2,所以系统默认的位数也是2,但是有一些特殊币种如日元JPY,没有小数位。只要小数位不等于2,需要在系统中特殊处理(通过转换因子进行转换)。
- 如果某货币的小数位不是2位,则需要通过OY04设置其小数位数,即需在TCURX表中进行维护
- 系统中的数据表存放的日元JPY、俄卢布RUR等货币比前台输入的金额小100倍,因为它们没有小数位,所以转换因子为100,存入表之前SAP会先将金额除以这个因子后再存入
原理搞清楚了。我们来看看导入参数:比较简单,但是非常实用
参数名称 | 关联类型 | 可选的 | 说明 |
CURRENCY | TCURC-WAERS | 必选 | 转换前的货币码 |
AMOUNT_INTERNAL | 必选 | 转换前内部的货币金额 |
备注:S4HANA的新语法和ECC或者R3不一样。
自己注意一下吧。
对于初级SAP ABAP顾问来说,是不容易的。
作者曾经也是SAP ABAP beginners ,到处去找Tutorial for Constant。
需要自学很久,没人给咱免费培训。
写个测试代码DEMO举例子。可以直接运行的哦~
**声明bapi相关的全局变量
DATA:
gs_AMOUNT_EXTERNAL TYPE BAPICURR-BAPICURR. “转换后外部的货币金额
*选择屏幕
PARAMETERS:p_CURR TYPE TCURC-WAERS,
p_AMOUNT TYPE ekko-WAERS.
*抓取处理数据
START-OF-SELECTION.
*调用bapi
PERFORM FRM_USEBAPI.
*——————————————————————————–*
* Form frm_setdata *
*———————————————————————————*
* 调用bapi
* 导入:货币码,转换前金额
*———————————————————————————*
FORM frm_usebapi.
*调用bapi
CALL FUNCTION ‘BAPI_CURRENCY_CONV_TO_EXTERNAL’
EXPORTING
CURRENCY = p_CURR
AMOUNT_INTERNAL = p_AMOUNT
IMPORTING
AMOUNT_EXTERNAL = gs_AMOUNT_EXTERNAL.
write gs_AMOUNT_EXTERNAL.
ENDFORM.
本文链接 :http://www.hot583.com/2022/03/31/bapi_currency_conv_to_external/
本文为作者原创,如果这篇文章对您有用,欢迎转载,
转载请务必注明来源《今日热点在看》http://www.hot583.com/
我的微信公众号【hot583】 或者在这个链接联系我
微信原文《全文完》