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中关于用户IP信息的获取(转载)

    SAP中如何获取登录用户的IP? 或如何查看哪些IP登录到SAP中: 在Table: USR41中查看,具体字段的说明如下: MANDT   ---   ClientBNAME   ---   登录的 ...

  2. SAP中主数据和单据的删除

    在SAP实际操作的过程中,有些主数据或者单据需要删除,但是删除的方法却不尽相同,所以笔者今天总结了下,供大家参考. 1,用T-Code去删除 例如我们要删除某个物料,我们可以用T-Code MM06 ...

  3. 如何从SAP中查找BADI

    如何从SAP中查找BADI   如何从SAP中查找BADI http://blog.csdn.net/CompassButton/article/details/1231652 BADI作为SAP的第 ...

  4. .NET连接SAP系统专题:SAP中新建可远程调用的RFC(二)

    何谓RFC,就是一个Function,可以被非SAP系统调用,比如VB,C#,Java等.如果我们在RFC中INCLUDE了相关的业务逻辑,那么我们就可以完全操控SAP中的业务数据了.就像在TTE里, ...

  5. C#如何通过NCO3.0来连接SAP并调用SAP中的RFC

    ,这是SAP针对.Net开发的专用组件,安装完成之后在C:\Program Files\SAP\SAP_DotNetConnector3_x86目录下面会有sapnco_utils.dll sapnc ...

  6. 部分2020年交期的PR回写到SAP中

    描述:此问题一直存在,只是用户没有发现,最近提出,部分2020年交期的PR回写到SAP中 优化: SELECT MAX (PR.ORDERID), PR.ITEM, SUBSTR (PR.RECOMM ...

  7. SAP中对于获取订单的状态

    在SAP中对于如何获取订单的状态,提供了至少两个函数,分别是 STATUS_READ 和   STATUS_TEXT_EDIT.下面简单介绍这两个函数 1.STATUS_READ  改函数的实现原理大 ...

  8. 【MM系列】SAP 在SAP中更改基本计量单位

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 在SAP中更改基本计量单位 ...

  9. 【BASIS系列】SAP 中查看account登陆次数及时间的情况

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[BASIS系列]SAP 中查看account登 ...

随机推荐

  1. Android样式的开发:Style篇

    前面铺垫了那么多,终于要讲到本系列的终篇,整合所有资源,定义成统一的样式.哪些该定义成统一的样式呢?举几个例子吧: 每个页面标题栏的标题基本会有一样的字体大小.颜色.对齐方式.内间距.外间距等,这就可 ...

  2. CenOS6.3 ssh 公钥认证报错:Permission denied (publickey,gssapi-keyex,gssapi-with-mic)

    转载自 http://laowafang.blog.51cto.com/251518/1364298 1.说明: ssh无密码用户远程登录,一直以来使用是debian操作系统,对用户目录权限要求没有关 ...

  3. 从头学Qt Quick(3)-- 用QML写一个简单的颜色选择器

    先看一下效果图: 实现功能:点击不同的色块可以改变文字的颜色. 实现步骤: 一.创建一个默认的Qt Quick工程: 二.添加文件Cell.qml 这一步主要是为了实现一个自定义的组件,这个组件就是我 ...

  4. Character Controller (角色控制器) 中 Move()和SimpleMove() 的区别

    首先给出两者的圣典: CollisionFlagsMove(Vector3motion); Description A more complex move function taking absolu ...

  5. IT168关于敏捷开发采访

    1.我们知道敏捷开发是一套流程和方法的持续改进,通过快速迭代的方式交付产品,从而控制和降低成本.但是在实行敏捷初期,往往看不到很好的效果.这里面,您觉得问题主要出在哪?团队应如何去解决问题?金根:我认 ...

  6. js中this的四种调用模式

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  7. 转载:第五弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!

    博卡君今天继续更新,忙了一天,终于有时间开工写教程.不罗嗦了,今天我们来看看如何实现一些前端的功能和效果. 第八章:微信小程序分组开发与左滑功能实现 先来看看今天的整体思路: 进入分组管理页面--&g ...

  8. mysqldump命令的常用组合

    只导表结构完整语句: mysqldump -h192.168.1.174  --port=3306 -uroot -p  --routines --events --no-data  --no-cre ...

  9. 概率论 --- Uva 11181 Probability|Given

    Uva 11181 Probability|Given Problem's Link:   http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...

  10. Google判断广告点击作弊的几种方式和数据

     Google判断广告点击作弊的几种方式和数据. 作弊广告点击的CTR数据太高网上有研究说如果CTR值大于了10%的站被干掉的可能性很高,他们会被单独拿出来分析.一般来说低于6-7%的CTR是安全红线 ...