楼主: steve126

SAP四舍五入

[复制链接]
论坛徽章:
0
11#
发表于 2008-6-3 21:44 | 只看该作者
我好像也用不了 round
REPORT  Y_ROUNDTEST.

DATA:
   NAMA TYPE P DECIMALS 5 VALUE '3.56485',
   NAMB TYPE P DECIMALS 3.
NAMB  = NAMA.
WRITE : / NAMA , NAMB.

CALL FUNCTION 'ROUND'
  EXPORTING
    DECIMALS            = 3
    INPUT               = NAMA
    SIGN                = ''
  IMPORTING
   OUTPUT              = NAMB
EXCEPTIONS
   INPUT_INVALID       = 1
   OVERFLOW            = 2
   TYPE_INVALID        = 3
   OTHERS              = 4
          .
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

WRITE : / NAMA , NAMB.

运行结果:
3.56485          3.565
3.56485          3.565

DECIMALS            = 3 这句好像一点作用都没有

[ 本帖最后由 caoyequn2 于 2008-6-3 21:46 编辑 ]

使用道具 举报

回复
论坛徽章:
15
2013年新春福章
日期:2013-02-25 14:51:24
12#
发表于 2008-6-4 08:20 | 只看该作者
楼上不是的已经转了吗?

3.56485          3.565
3.56485          3.565

3位小数是这样的啊

使用道具 举报

回复
论坛徽章:
2
生肖徽章:蛇
日期:2006-09-26 21:28:13ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
13#
发表于 2008-6-4 10:18 | 只看该作者
貌似round 函数没什么用

使用道具 举报

回复
论坛徽章:
0
14#
发表于 2008-6-4 11:04 | 只看该作者
form z_get_round  using    l_waerk
                              changing    t_netwr.
  if l_waerk = 'JPY'.
    t_netwr = t_netwr / 1000.
  endif.

  call function 'ROUND'
    exporting
     decimals            = 0
      input               = t_netwr
     sign                = 'X'
   importing
      output              = t_netwr
* EXCEPTIONS
*   INPUT_INVALID       = 1
*   OVERFLOW            = 2
*   TYPE_INVALID        = 3
*   OTHERS              = 4
            .
endform.                    " z_get_round

日元化成 千日元,再四舍五入,
其他货币类型,直接四舍五入。
代码是可以用的。

使用道具 举报

回复
论坛徽章:
12
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152011新春纪念徽章
日期:2011-02-18 11:43:352010广州亚运会纪念徽章:三项全能
日期:2010-11-22 15:42:14ITPUB9周年纪念徽章
日期:2010-10-08 09:28:532010新春纪念徽章
日期:2010-03-01 11:08:292009日食纪念
日期:2009-07-22 09:30:00生肖徽章2007版:羊
日期:2009-03-10 21:29:35奥运会纪念徽章:拳击
日期:2008-08-19 08:10:34奥运会纪念徽章:棒球
日期:2008-08-18 14:03:16
15#
发表于 2008-6-4 13:16 | 只看该作者
研究了一下才知道原来应该这样用:

DATA: NAMA TYPE P DECIMALS 5 VALUE '3.56485'.
WRITE : / '转换前 NAMA = ',NAMA LEFT-JUSTIFIED.

CALL FUNCTION 'ROUND'
  EXPORTING
    DECIMALS      = 3
    INPUT         = NAMA
    SIGN          = 'X'
  IMPORTING
    OUTPUT        = NAMA
  EXCEPTIONS
    INPUT_INVALID = 1
    OVERFLOW      = 2
    TYPE_INVALID  = 3
    OTHERS        = 4.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

WRITE : / '转换后 NAMA = ',NAMA LEFT-JUSTIFIED.

运行结果:


DATA: NAMA TYPE P DECIMALS 5 VALUE '3.56485'.
WRITE : / '转换前 NAMA = ',NAMA LEFT-JUSTIFIED.

CALL FUNCTION 'ROUND'
  EXPORTING
    DECIMALS      = 1
    INPUT         = NAMA
    SIGN          = 'X'
  IMPORTING
    OUTPUT        = NAMA
  EXCEPTIONS
    INPUT_INVALID = 1
    OVERFLOW      = 2
    TYPE_INVALID  = 3
    OTHERS        = 4.
IF SY-SUBRC <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

WRITE : / '转换后 NAMA = ',NAMA LEFT-JUSTIFIED.


运行结果:


[ 本帖最后由 ruyue318 于 2008-6-4 13:20 编辑 ]

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2008-6-4 20:28 | 只看该作者
我终于知道原因了
sign          = 'X'
这里这个'X'是关键

使用道具 举报

回复
论坛徽章:
15
2013年新春福章
日期:2013-02-25 14:51:24
17#
发表于 2008-6-4 21:45 | 只看该作者
学习

使用道具 举报

回复
论坛徽章:
2
生肖徽章:蛇
日期:2006-09-26 21:28:13ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
18#
发表于 2008-6-5 13:48 | 只看该作者
原帖由 caoyequn2 于 2008-6-4 20:28 发表
我终于知道原因了
sign          = 'X'
这里这个'X'是关键


果然!哈哈,谢谢!

使用道具 举报

回复
论坛徽章:
18
ITPUB 11周年纪念徽章
日期:2012-10-09 18:06:202015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31
19#
发表于 2008-6-6 12:38 | 只看该作者
记得除法默认有这个功能。

使用道具 举报

回复
论坛徽章:
13
授权会员
日期:2008-10-09 17:05:152013年新春福章
日期:2013-02-25 14:51:24ITPUB社区12周年站庆徽章
日期:2013-10-08 14:53:152014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有对象
日期:2014-11-30 11:39:592015年新春福章
日期:2015-03-04 14:51:122015年新春福章
日期:2015-03-06 11:57:31
20#
发表于 2008-6-11 13:22 | 只看该作者
原帖由 ruyue318 于 2008-6-3 18:08 发表
DESCRIBE FIELD INPUT TYPE T.
  IF T NE 'F' AND T NE 'P' AND T NE 'I'.
    MESSAGE E310 WITH 'INPUT' RAISING INPUT_INVALID.
  ENDIF.
这里有问题


是SAP的bug吧。
37里运行时,input的值传进去后,是C型的,没有转换过。

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表