针对不同币别要做金额栏位转换

计算规则: 金额 = 原始金额 * 转换率

以下转自博客:https://www.cnblogs.com/sanlly/p/3371568.html

货币转换函数: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. " 货币代码 DATA: S_FACTOR TYPE P DECIMALS . CALL FUNCTION 'CURRENCY_CONVERTING_FACTOR'
EXPORTING
CURRENCY = F_CURRENCY
IMPORTING
FACTOR = S_FACTOR
EXCEPTIONS
TOO_MANY_DECIMALS =
OTHERS = . IF S_FACTOR NE .
F_BETRAG = F_BETRAG / S_FACTOR.
ENDIF.
ENDFORM. "BRF_AP

例2

DATA: G_PER_PRICE  TYPE P,
G_KPER_PRICE TYPE P,
G_PRICE TYPE P,
PG_FACTOR TYPE P DECIMALS . 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 =
OTHERS = . IF SY-SUBRC <> .
PG_FACTOR = .
ENDIF.
ENDFORM. "CHANGEVALUEBYFACTOR

货币转换函数:CURRENCY_CONVERTING_FACTOR的更多相关文章

  1. Oracle的学习三:java连接Oracle、事务、内置函数、日期函数、转换函数、系统函数

    1.java程序操作Oracle java连接Oracle JDBC_ODBC桥连接 1.加载驱动: Class.forName("sun.jdbc.odbc.JdbcodbcDriver& ...

  2. SQL Fundamentals || Single-Row Functions || 转换函数 Conversion function

    SQL Fundamentals || Oracle SQL语言   SQL Fundamentals: Using Single-Row Functions to Customize Output使 ...

  3. ORACLE常用数值函数、转换函数、字符串函数介绍

    ORACLE常用数值函数.转换函数.字符串函数介绍. 数值函数: abs(m) m的绝对值 mod(m,n) m被n除后的余数 power(m,n) m的n次方 round(m[,n]) m四舍五入至 ...

  4. sql函数的使用——转换函数

    转换函数用于将数据类型从一种转为另外一种,在某些情况下,oracle server允许值的数据类型和实际的不一样,这时oracle server会隐含的转化数据类型,比如: create table ...

  5. ORACLE常用数值函数、转换函数、字符串函数

    本文更多将会介绍三思在日常中经常会用到的,或者虽然很少用到,但是感觉挺有意思的一些函数.分二类介绍,分别是: 著名函数篇 -经常用到的函数 非著名函数篇-即虽然很少用到,但某些情况下却很实用 注:N表 ...

  6. MySQL 日期、时间转换函数

    MySQL 日期.时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式.它是 str_to ...

  7. 十进制(decimal system)转换函数说明

    一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin() 函数,如下实例 echo decbin(12); //输出 1100 echo decbin(26); / ...

  8. Sql server函数的学习1(系统变量、错误函数、转换函数)

    一.系统变量的介绍和使用 1.@@ERROR 变量 2.@@SERVICENAME 变量 3.@@TOTAL_ERRORS 变量 4.@@TOTAL_READ 变量 5.@@VERSION 变量 二. ...

  9. Oracle内置函数:时间函数,转换函数,字符串函数,数值函数,替换函数

    dual单行单列的隐藏表,看不见 但是可以用,经常用来调内置函数.不用新建表 时间函数 sysdate 系统当前时间 add_months 作用:对日期的月份进行加减 写法:add_months(日期 ...

随机推荐

  1. ABCD组·第五次团队作业项目需求分析改进与系统设计

    项目 内容 这个作业属于哪个课程 http://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh 团队 ...

  2. Robot Framework--Scalar变量

    一.变量赋值 1)Set赋值 通常使用Set Variable关键字对变量进行赋值,其他Set相关的带Variable的关键字也可以进行赋值 赋值的时候,变量后面写不写『=』都可以,如下: 如果${v ...

  3. java中的AIO

    AIO(异步非阻塞)AIO采用了Proactor模式,AIO与NIO的不同之处在于当AIO在进行读写操作时,不用先等通知,可直接调用相应的read/write方法,这两种方法均为异步的,对于读操作而言 ...

  4. vue2 路由,运动

  5. pandas 数据类型研究(一)数据转换

    当利用pandas进行数据处理的时候,经常会遇到数据类型的问题,当拿到数据的时候,首先需要确定拿到的是正确类型的数据,一般通过数据类型的转化,这篇文章就介绍pandas里面的数据类型(data typ ...

  6. MySql更改用户密码

    1. use mysql show tables;查看mysql数据库中的表,会看到一个user表. select * from user;查看一下这个表中是否有root用户,如果有: update ...

  7. Java Executor框架使用

    Java Executor框架是Jdk1.5之后推出的,是为了更加方便的开发多线程应用而封装的框架: 相比传统的Thread类,Java Executor使用方便,性能更好,更易于管理,而且支持线程池 ...

  8. Java Redis+Spring-data-redis 队列 单机版

    1.redis.properties ##redisIP地址 #redis.host=10.14.2.212 redis.host=127.0.0.1 ##redis默认端口号 redis.port= ...

  9. Color Highlight 鼠标放在 #f3f 上面其背景会变成相应的颜色的插件 DocBlockr自动补全注释

    不是  Color Highlighter    而是 Color Highlight  少了 er  颜色功能还是很爽的,找了好久 鼠标放在 #f3f 上面其背景会变成相应的颜色的插件 DocBlo ...

  10. HR#7 题解

    T1 签到题 #include<bits/stdc++.h> #define R register int using namespace std; inline int g() { R ...