• 货币转换函数:CURRENCY_CONVERTING_FACTOR


    【CURRENCY_CONVERTING_FACTOR】在SAP系统中,对于曰币、韩币、台币这类特殊货币的处理是有特殊规则的。


    首先根据币别到DB表TCURX中读取相应的小数位数CURRDEC。
    如果没有维护相应币别信息则默认CURRDEC = 2。
    如果 CURRDEC GT 5.就报错。
    然后默认转换比率是100。
    在CURRDEC NE 0的情况下
    循环CURRDEC次,每次将转换比率除以10 。

    所以如果表TCURX中的CURRDEC = 0就默认转换比率为100。
    当表TCURX中没有找到相应数据时则默认CURRDEC = 2。
    转换比率也就是100 / 10 / 10 = 1.

    其他的比如如果表TCURX中的CURRDEC = 4,则转换比率应该为 100 / 10 / 10 / 10 / 10 = 0.01

    我们在SE16中看到的货币金额基本上都经过了这个转换,如曰元,都是除以100后存入数据库的。
    所以当我们从数据库中读取曰元金额时也应该作相应的转换,乘以100 。

    简单的使用Function CURRENCY_CONVERTING_FACTOR。输入币别,就可以得到相应的转换比率了。

    函数中所涉及的常用选项:
    EXPORTING:
        CURRENCY:   将被处理的货币种别编号
    IMPORTING:
        FACTOR:      转换后得到的货币比率

    例1.

    FORM BRF_AP USING F_BETRAG             "  金额
                      F_CURRENCY.         " 货币代码

      DATAS_FACTOR  TYPE  DECIMALS 3.

      CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
        EXPORTING
          CURRENCY          F_CURRENCY
        IMPORTING
          FACTOR            S_FACTOR
        EXCEPTIONS
          TOO_MANY_DECIMALS 1
          OTHERS            2.

      IF S_FACTOR NE 0.
        F_BETRAG F_BETRAG / S_FACTOR.
      ENDIF.
    ENDFORM.                    "BRF_AP

    例2:

    DATAG_PER_PRICE  TYPE P,
          G_KPER_PRICE TYPE P,
          G_PRICE      TYPE P,
          PG_FACTOR    TYPE DECIMALS 3.

    FORM CHANGEVALUEBYFACTOR USING P_WAERS CHANGING PG_FACTOR.
      CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
        EXPORTING
          CURRENCY          P_WAERS   "輸入的幣別
        IMPORTING
          FACTOR            PG_FACTOR  "輸出的值
        EXCEPTIONS
          TOO_MANY_DECIMALS 1
          OTHERS            2.

      IF SY-SUBRC <> 0.
        PG_FACTOR 1.
      ENDIF.
    ENDFORM.                    "CHANGEVALUEBYFACTOR


  • 相关阅读:
    河北省重大技术需求征集七稿第二天
    河北省重大技术需求征集七稿第一天
    CNN网络架构演进
    C++学习-类域、友元、运算符重载、对象的生存期,可见域,作用域(2)
    C++学习-类域、友元、运算符重载、对象的生存期,可见域,作用域(1)
    C++学习-输入输出
    C++学习-new delete扩展
    C++学习-类和对象(2)
    C++学习-类和对象(1)
    C++学习-程序内存分配方式
  • 原文地址:https://www.cnblogs.com/sanlly/p/3371568.html
Copyright © 2020-2023  润新知