SAP 金额等负号提前问题
来源:互联网 发布:代办各种假证淘宝 编辑:程序博客网 时间:2024/04/29 17:31
一般我们在alv上展示的金额如果是负数,默认是这样显示的:
在有的开发中,客户可能要求负号提前,实现这样的效果:
为了实现这样的效果,这里给大家介绍三种方法,第一和第二种是来自网上常见的方法。
第一种:使用函数CLOI_PUT_SIGN_IN_FRONT
REPORT ZGY_TEST.TABLES : BSEG.DATA : E_DMBTR TYPE STRING.E_DMBTR = '100-'.CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = E_DMBTR.WRITE : E_DMBTR.
这个的局限是只能用字符类型进行操作,这样就不是金额这样的数字类型了,对于对齐等也都和金额类型不同,同时会导致千分位符号丢失。
用write to语句把负数取绝对值,然后把数字型写入字符型可以保留千位符,再判断正负数,在输出的时候添上负号。
Form asset_front_minus changing value1. value2 = abs( value1 ). write value2 to string1. condense string1. if value1 < 0. write: '-', string1 LEFT-JUSTIFIED NO-GAP NO-ZERO. else. write: string1 LEFT-JUSTIFIED NO-GAP NO-ZERO. endif.endform.
第二种:
这种方法手动添加千分位符号,以下是来自网上的实现方法:
手动把字符型加千位符的,取整,判断长度,除3以后循环mask”_,”格式,分割,再处理头3位。
FORM NUMTOSTR USING VALUE(ZNUM) CHANGING VALUE(ZSTR). DATA : ZCLEN TYPE I, N TYPE I, ZCSTR(20) TYPE C, ZCSTR2(20) TYPE C, ZCTEMP(3) TYPE C, ZFLAG(1) TYPE C VALUE '.', ZFLAG2 TYPE I VALUE 0, ZCDEC(20) TYPE C. "记录小数部分 ZSTR = ''. CHECK ZNUM <> 0. IF ZNUM <= -1000. ZFLAG2 = 1. ZNUM = ABS( ZNUM ). ENDIF. IF ZNUM >= 1000. ZCSTR = ZNUM. * 压缩字符串,去除前面的空格。 CONDENSE ZCSTR NO-GAPS. * 分离整数与小数,好单独处理整数。 SPLIT ZCSTR AT ZFLAG INTO ZCSTR ZCDEC. ZCLEN = STRLEN( ZCSTR ). * 在循环中从右面在每三位的前面加上一个逗号。 WHILE ZCLEN > 3. N = ZCLEN - 3. ZCTEMP = ZCSTR+N(3). IF NOT ZCSTR2 IS INITIAL. CONCATENATE ZCTEMP ZCSTR2 INTO ZCSTR2 SEPARATED BY ','. ELSE. ZCSTR2 = ZCTEMP. ENDIF. ZCLEN = ZCLEN - 3. ENDWHILE. * 将不剩下的不足三位数加到前面 CONCATENATE ZCSTR+0(ZCLEN) ZCSTR2 INTO ZCSTR2 SEPARATED BY ','. IF ZFLAG2 = 1. CONCATENATE '-' ZCSTR2 INTO ZCSTR2. ENDIF. CLEAR ZCSTR. * 将处理过的整数与小数连接起来。 CONCATENATE ZCSTR2 ZCDEC INTO ZCSTR SEPARATED BY ZFLAG. * 将值返回 ZSTR = ZCSTR. ELSE. ZSTR = ZNUM. ENDIF.ENDFORM.
第三种:
这种方法相对于前两种方法的优点是,一.类型还是金额等数字类型,负号实现前置;二.几乎不用写很多代码,且可以保留千分位;三.适用于多个这样的字段修改需求。
实现步骤如下:
1.SE37,按下图命名规范创建FUNCTION,
输入函数组和描述,然后输入import和export参数,如图
添加代码:
保存,激活。
最后,在对应的alv设置fieldcat时针对设置金额等数字类型的字段添加代码:固定写成’ZXXX’形式。
WE_FIELDCAT-EDIT_MASK = '==Z001'.
0 0
- SAP 金额等负号提前问题
- SAP ALV字段负号提前
- ABAP负号提前
- ABAP 负号 提前
- ALV负号提前显示
- 负号提前函数
- 负号提前BAPI(-)
- ABAP负号提前的方法
- ABAP负号提前的测试
- ABAP负号提前测试2
- ABAP负号提前的测试
- Smartform中负号提前解决方法
- sap 负号前置函数
- latex中单引号和负号等一些小细节问题
- 在ABAP中将负号提前的方法
- 解决负号后置问题
- SAP中负号前置的函数:CLOI_PUT_SIGN_IN_FRONT
- ABAP ALV报表将数值字段负号提前
- CodeForces 7C - Line
- 用LockBits方法访问图像数据
- Android 拍照和从本地获取图片
- Avoid The Lakes
- 批处理命令来启动或关闭tomcat
- SAP 金额等负号提前问题
- 利用Apache AXIS 1 发布WebService
- Bone Collector
- android开启手机虚拟键的菜单键
- /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found的问题
- 利用redis实现tomcat session共享
- C# 连接 读取 Excel
- 移动互联网APP产品设计
- VMware安装Redhat9