赛跑网

 找回密码
 注册

QQ登录

只需一步,快速开始

快捷登录

查看: 4224|回复: 10

[其他问题] SAP货币设置

[复制链接]
发表于 2012-3-19 09:41:59 | 显示全部楼层 |阅读模式
1赛跑币
标准的数值计数为小数点后面2位数字,但是对于台币和日元,输入的数值和报表显示数据,就会有差异。比如输入200,系统显示的时候就会扩大100倍,数字为20000.
这是一个什么样的设计逻辑?

最佳答案

查看完整内容

这个设计是这样的: 1,首先可以在OY04里定义每个货币的小数位,路径是Path :Global settings->currencies->set decimal places for currencies。如果在此没有定义,比如RMB就没有,default decimal 是2。也就是说RMB的小数位是2位,对应着角,分。OY04对应的表是TCURX,你可以进去看看。在这个表里不存在的,就是小数位是2. 2,其次,对于日元这种小额币种的话,为了节省数据库空间,当金额是10000日元时,存放在数据库里就是10 ...

最近访客

  • tbb1177
    2021-07-03




上一篇:在建工程结算到成本中心问题
下一篇:关于被删除请求号的恢复
本楼点评(0) 收起
发表于 2012-3-19 09:42:00 | 显示全部楼层
这个设计是这样的:
1,首先可以在OY04里定义每个货币的小数位,路径是Path :Global settings->currencies->set decimal places for currencies。如果在此没有定义,比如RMB就没有,default decimal 是2。也就是说RMB的小数位是2位,对应着角,分。OY04对应的表是TCURX,你可以进去看看。在这个表里不存在的,就是小数位是2.

2,其次,对于日元这种小额币种的话,为了节省数据库空间,当金额是10000日元时,存放在数据库里就是100,但是取出来显示又是10000,这主要跟他的币种相关的。

以上,希望对你有帮助。
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-3-21 14:36:01 | 显示全部楼层
这是用于货币转换因子的问题;你在SE38里跑下这个程序
DATA: netwr TYPE p DECIMALS 2.
netwr = '1.5'.
WRITE: netwr CURRENCY 'JPY'.
输出的结果是150,即1.5*100,我们说日元的转换因子为100。<1.5为数据库中的存储,150为展示数据>
SAP也提供了标准的函数来返回货币的转换因子,CURRENCY_CONVERTING_FACTOR 你可以在SE37里直接执行输入货币后看他输出的结果!
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-3-23 22:57:35 | 显示全部楼层
谢谢二位,有这个主题的英文资料没?呵呵
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-3-23 23:01:49 | 显示全部楼层
http://blog.sina.com.cn/s/blog_6f74e6d50100rcg9.html
我知道是这个英文就可以了,回头自己看看,弄明白了,再给东南亚同事解释 :)上周介绍VIM的时候发现的,有关配置审判日授权的金额时会出现这个问题。知道了逻辑,感觉真好,谢谢!
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-3-23 23:06:36 | 显示全部楼层
具体的处理逻辑为:首先根据币别到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: 转换后得到的货币比率 示范代码:FORM BRF_AP USING F_BETRAG "金额 F_CURRENCY. " 货币代码DATA: S_FACTORTYPEP 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.
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-3-23 23:09:03 | 显示全部楼层
本楼点评(0) 收起
回复

使用道具 举报

 楼主| 发表于 2012-3-24 00:07:37 | 显示全部楼层
:) 为什么最佳答案只能是一个呀?哈哈,给wyzlt216123 也要戴个大红花的 呵呵
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-11 20:05:02 | 显示全部楼层
学习
本楼点评(0) 收起
回复

使用道具 举报

发表于 2012-11-13 17:01:06 | 显示全部楼层
学习
本楼点评(0) 收起
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|联系我们|赛跑网 ( QQ:108519493QQfsq

GMT+8, 2024-5-3 07:17 , Processed in 0.216283 second(s), 56 queries .

Powered by 91SAP X3.4

© 2001-2023 91sap Team.

快速回复 返回顶部 返回列表