ABAP编程中,有个概念很重要,即Currency Converting Factor(货币转换因子)。可能很多ABAP初学者都不知道这是什么东西,这里我们就简单探讨下。

1. 什么是货币转换因子
在SAP中,货币是维护在TCURC表里面,这从Domain: WAERS中可以看到。
不过这里我们要介绍的是表TCURX,它维护了货币金额的小数位。比如JPY日元,在该表是0。正常的货币都是2位小数的。那么,该表有什么意义呢?我们来看下面的例子。
DATA: netwr TYPE p DECIMALS 2.
netwr = '1.3'.
WRITE: netwr CURRENCY 'JPY'.
输出的结果是130,即1.3*100,我们说日元的转换因子为100。这是因为TCURX定义了日元没有小数位,那么数据库表的实际数字 1.3 就解释成了130。反过来就是,我们认为的130日元,在数据库里存储成了1.3。这个过程都是SAP自动处理的。
同理,小数位为1的,其转换因子为10;而RMB因为小数位为2,其转换因子为1,这也是系统的默认值。
2. 如何将CURR字段赋给DEC(P)字段
如果要将一个CURR字段赋值给类型为DEC(P)的字段,则要考虑货币转换因子的影响。当我们写与外系统集成的接口时,这就显得很有必要了。
这里介绍个函数:CURRENCY_CONVERTING_FACTOR,它可用于读取货币转换因子。
DATA: v LIKE vbap-netwr,
      p TYPE p DECIMALS 2,
      cur LIKE vbap-waerk,
      factor TYPE p DECIMALS 3.

v = '1.3'.
cur = 'JPY'.

CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
  EXPORTING
    currency          = cur
  IMPORTING
    factor            = factor
  EXCEPTIONS
    too_many_decimals = 1
    OTHERS            = 2.
IF sy-subrc <> 0.
  factor = 1.
ENDIF.

p = v * factor.
WRITE: p.
这样,我们与外系统集成时,应该以p作为接口参数,130日元就不会错误地成了1.3日元。
3. ABAP编程中需要注意的地方
在编程中,我们对CURR字段要多加以注意,下面简单举几个应用例子。
(1) List中,当输出CURR字段时,记得指定对应的货币.
如: WRITE: vbap-netwr CURRENCY vbap-waerk.
(2) Screen中,对于CURR字段,需要设置对应的货币字段,
(3) ALV中,需要对FIELD CATALOG进行设置.
如: ls_cfieldname = 'WAERS'. "这里的WAERS是内表中的另一字段

SAP中的Currency Converting Factor相关推荐

  1. SAP中有关差异的一些概念

    1.SAP关于成本的概念 2.差异的计算方法. 3.实际成本计算方法 4.SAP variance 1.成本的概念 标准成本=标准价格 * 标准数量 + 作业价格 * 标准数量 计划成本=计划价格 * ...

  2. SAP中差异的一些概念

    1.SAP关于成本的概念 2.差异的计算方法. 3.实际成本计算方法 4.SAP variance 1.成本的概念 标准成本=标准价格 * 标准数量 + 作业价格 * 标准数量 计划成本=计划价格 * ...

  3. SAP中公司与公司代码关系

    SAP概念之Company(公司):     在SAP中,Company(公司)与Company Code(公司代码/公司码)是两个不同,但是又相联系的概念.     Company是根据相关法律规定 ...

  4. SAP中的公司与公司代码理解

    [前言]现在很多人还是分不太清楚公司和公司代码的区别,在这里我找到了官方的解释,希望大家能仔细看看,在实际应用中,我发现公司只是在合并项目中才会用到,在别的地方用的很少.这也许是我们的项目的一些特色吧 ...

  5. SAP中供应商确认功能的应用分析

    SAP中供应商确认功能是一个辅助性的功能.在简单的采购业务流程中,不一定需要用到.但作为企业的SAP顾问,需要掌握供应商确认功能的一些应用情况.也帮助业务部门未来的应用需求.近期也刚好在思考这个问题. ...

  6. SAP中的KANBAN

    SAP中的KANBAN

  7. 【选摘】为什么说SAP中没有在制品的盘点

    为什么说SAP中没有在制品的盘点 -内容整理转自<由浅入深学习SAP财务> 传统的财务核算中,月结之前可能需要进行在制品的盘点,在SAP中,是否还有盘点在制品的需要? 1.传统的在制品盘点 ...

  8. SAP中各种分摊分配方法

    SAP中成本可以在成本中心.订单.CO-PA间分配分摊. 常见的分配分摊方法有:简单分配:基于指标分配:简单分摊:基于指标分摊:基于作业的分摊. 一.简单分配.ksv1创建分配.将初级成本要素分配到相 ...

  9. SAP中记账码的作用

    在传统手工的会计核算过程中,我们通过用记帐符号"debit"与"credit"来描述资产.负债的增.减,但在SAP中,却变得有些复杂了.我们在SAP中的记账码和 ...

最新文章

  1. python lowercase_python 的 string.casefold 和 string.lower 方法区别?
  2. 瓷博会开幕,《锦绣中华》引围观
  3. mic系统装java开发软件_Windows下安装MicMac
  4. Ubuntu 下Mysql常用命令
  5. Linux多线程实践(1) --线程理论
  6. Object Pools 喷泉效果实现
  7. React开发(240):dva概念5reducer
  8. [剑指offer]面试题第[61]题[JAVA][扑克牌中的点数][HashSet][数组]
  9. html中链接不自动变色,HTML 点击 标签 链接 点击之后变色-转发【已解决】
  10. Java中看今天是星期几,礼拜几
  11. 2-4 递增链表的插入 链表
  12. [LibTorch Linux] 各版本 LibTorch 下载
  13. 分区挂载,mount,blkid
  14. 为什么要用C语言实现面向对象
  15. Lucene知识小总结8:索引查询
  16. 恶意代码防范技术原理-计算机病毒和特洛伊木马分析与防护
  17. 拼多多搜索热度怎么做|重庆乾胤
  18. 整理--Linux驱动框架概念之LED
  19. uygurqa输入法android,uygurqa维语输入法
  20. BlockChain学习——Hash函数碰撞概率公式及其推导

热门文章

  1. 安装mysql时报错:mysql file /usr/share/mysql/czech/errmsg.sys from install of MySQL-serve的问题...
  2. UIButton 的 imageEdgeInsets 和 titleEdgeInsets
  3. CCF NOI1054 扫雷游戏
  4. CSS3 :nth-child(n)使用注意
  5. protected private public
  6. man iptables by iptables-save v1.3.5
  7. 解决text-overflow: ellipsis;不生效的问题
  8. lambda Kappa iota比较
  9. 深入学习Java8 Lambda (default method, lambda, function reference, java.util.function 包)
  10. Visual Studio下包含多项目的解决方案及项目间引用