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

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

以下转自博客: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. h5触摸事件-判断上下滑动

    // 判断上下滑动 var startX = 0, startY = 0; function touchStart(evt){ try{ var touch = evt.touches[0], //获 ...

  2. Mybatis的一级缓存机制简介

    1.接口 public interface MemberMapperCache { public Members selectMembersById(Integer id); } 2.配置文件xml ...

  3. STM32F10XX学习笔记的石墨连接

    https://shimo.im/docs/QHGRrWxbeb0NiBm9/ <STM32F10X系列笔记>,可复制链接后用石墨文档 App 打开

  4. tsql 通过row_number() over() 产生行号

    先按userIP分组,再按时间排序,最后编号. select row_number() over (partition by UserIp order by insertTime),* from us ...

  5. 010——C#选择文件路径

    (一)具体教程查看:011——C#创建ECXEL文件(附教程) (二)代码:foldPath 就是获取到的文件路径 private void button1_Click(object sender, ...

  6. Oracle 与 postgreSQL 事务处理区别(多版本与undo区别)

    2015年左右,因为工作需要用MongoDB.CouchBase这两种文档型数据库,时不时到这两个数据库官网上查资料.报BUG.时常可以在MongoDB官网上看到这样一些新闻,“某某企业成功将MySQ ...

  7. Elasticsearch 索引文档的增删改查

    利用Elasticsearch-head可以在界面上(http://127.0.0.1:9100/)对索引进行增删改查 1.RESTful接口使用方法 为了方便直观我们使用Head插件提供的接口进行演 ...

  8. DOM操作1

    1.DOM文档对象模型:操作页面元素(标签) html文件看成一个文档,把文档看成一个对象 xml也是一种文档,标签自定义,系统不自带标签,偏向于存储数据 2.DOM树:由文档及文档中的所以元素(标签 ...

  9. 05_Nginx日志分析

    如果不进行过滤,ES中存储的Nginx的日志是整行日志,在Kibana页面中只能查看到整行的日志,并没有其他太多的价值,所以我们需要对日志进行分割过滤,更有利于进行日志的分析. 学习本章需要具备一定的 ...

  10. vim命令整理

    最近使用vim比较多,整理一下!