zoukankan      html  css  js  c++  java
  • 曰元、韩元、台币等特殊货币小数位数转换

    在SAP系统内,不同的货币的小数的位数有可能不一样的,比如:日币和人民币的就不同。

    代码:

    运行结果:

    2017-03-13_13-51-11

    同样输入了1.8,但是输出的结果却不同,日币扩大了100倍,变成了180日元,而RMB还保持原样,1.8元,想想很合理,日元最小单位是元,而rmb最小是分。

    换句话,系统自动给日元加了个转换因子100,rmb的转换因子是1.

    这个转换因子学名叫货币转换因子(Currency Converting Factor),是在abap开发中的一个重要的概念。计算公式如下:

    货币转换因子 = 100 × 货币的最小单位(小数点后位数,例如,小数点3位,最小单位就是0.001).

    当没有小数点时,货币转换因子就是100 × 1 = 100.

    货币的小数位数是保存在表TCURX中的,正常的货币都是小数点后2位的,这个是默认的,不保存在这个表中,也就是凡是在表tcurx中找不到的货币的转换因子都是100 × 0.01 = 1,比如rmb。

    2017-03-12_13-08-48

    在上图中能看到日元的是没有小数点,是0,所以日元的转换因子 = 100 × 1 = 100.

    SAP提供了一个函数CURRENCY_CONVERTING_FACTOR能直接得到货币的转换因子,

    2017-03-13_14-16-24

    上面这个货币的转换过程是SAP自动实现的,比如180日元在数据库中会自动保存成1.8,但是有个前提就是一定要指定币种。

    数据库中显示:

    011347144563406

    而在屏幕上,读出来的就是自动转换后的正确金额。

    011347163474249

    我们在ABAP编程时要注意指定币种:

    1) write输出时,指定currency

    2)  screen中指定参考单位

    2017-03-13_14-33-15

    3) ALV 中也要在catelog中指定参考货币单位,

    SLIS_T_FIELDCAT_ALV-cfieldname

    SLIS_T_FIELDCAT_ALV-slis_tabname

    2017-03-13_14-39-09

    OO ALV中

    2017-03-13_14-53-45

    另外:货币的一些相关表:

    TCURT:货币描述文本

    2017-03-12_13-07-47

    TCURC:货币代码(Currency Codes)

    2017-03-13_15-00-20

    以上。

  • 相关阅读:
    38. Count and Say(C++)
    35. Search Insert Position(C++)
    29. Divide Two Integers(C++)
    c++读取utf-8格式中英文混合string
    一种局部二值化算法:Sauvola算法
    Ubuntu 1804 本地显示远程服务器文件
    caffe 预训练 或者Fine-Tuning 操作
    caffe/blob.hpp:9:34: fatal error: caffe/proto/caffe.pb.h: 没有那个文件或目录
    转载---LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
    [leetcode-921-Minimum Add to Make Parentheses Valid]
  • 原文地址:https://www.cnblogs.com/lvdong18847870057/p/12553371.html
Copyright © 2011-2022 走看看