一般我们在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'CHANGINGVALUE         = 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 INTOZCSTR2 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'.

SAP 金额等负号提前问题相关推荐

  1. SAP ALV 负号提前

    需求:ALV中的数量和金额的负号默认是显示在最后面的,现在要将负号显示在前面. 效果展示: 实现: 关键代码: FUNCTION conversion_exit_zsign_output . *&qu ...

  2. Smartform中负号提前解决方法

    Smartform中, 打印 输出格式会经常出现问题,特别是金额.数量字段,如何解决打印时负号后置的问题呢? 其实很简单: &field(<)&             符号位显 ...

  3. ABAP 负号 提前

    SAP中的负号是放后面的,其实也无所谓,谁看不出来啊,关键人家要你改也没有办法.有个函数CLOI_PUT_SIGN_IN_FRONT是把负号提前的,但是它是把字符转化为字符型输出的.就是把负号spli ...

  4. abp web ui 负号提前显示

    crm web ui 负号默认显示在后面,统一把负号改为左边显示, 代码增强方法 CL_BSP_UTILITY->MAKE_STRING ENHANCEMENT 1  ZENH_CRM_CL_B ...

  5. 在ABAP中将负号提前的方法

    在ABAP中将负号提前的方法 第一种: PERFORM. change_qty USING l_srqty CHANGING it_inv-srqty. FORM. change_qty USING ...

  6. 把SAP里的负号放到前面来的函数

    --------------------------------------------------     把SAP里的负号放到前面来的函数     CLOI_PUT_SIGN_IN_FRONT   ...

  7. SAP 金额在表中的存储及货币转换因子

    场景:一个接口出问题了,SAP通过RFC将SO数据传输到Java系统,错误的将100日元传为1.00日元. 其实查看SAP透明表发现,表中存储的的确是1.00,是前台真实数据的1/100,开发接口时没 ...

  8. 【ABAP妙用】复制ALV之负号提前

    场景: 用户一般Ctrl+C复制ALV数据到Excel处理,如果有负数的数值,负号在数值的后面,Excel不认识,要费劲巴拉的一个个改正,苦不堪言! 本程序功能: 在ALV复制数据后,直接更改剪贴板里 ...

  9. SAP Spartacus ComponentData的提前subscription

    CmsComponentData: 包含一个uid和一个Observable: CmsBannerComponent类型定义: export interface CmsBannerComponent ...

  10. SAP ABAP开发金额负号前置

    在写这篇博客前,我有遇到一个业务要求:让我把借贷中的金额负号前置.接触SAP的都知道,在SAP中的负号都是放到数值后面,接触多了也就变得习以为常,但是有需求就得修改.我搜了一些资料,都写的很不错,不过 ...

最新文章

  1. jvm--动态对象年龄判定
  2. keil mdk5安装
  3. svn: error while loading shared libraries: libsvn_client-1.so.0
  4. 美团flutter_ggtalk 聊聊跨平台:后起之秀 Flutter
  5. get与post区别
  6. 【贪心算法】POJ-1017
  7. android 重新设置lcd分辨率,wm命令使用方法(修改android 分辨率)修改
  8. 全新第二代至强,凌动 P5900……英特尔四款 5G 新利器开启 2020 开门红!
  9. mysqlplus 字段验证策略fieldStrategy
  10. PSP英文学习好助手 - 移动英语通PSP版
  11. 25年面试官首次揭秘——世界500强面试题
  12. 2020年内蒙古自治区第十五届大学生程序设计竞赛榜单
  13. Rocket - tilelink - Xbar
  14. word刷子刷格式_Word文档中格式刷怎么用?
  15. 如何成为优秀的网络工程师,怎么做到含金量高?
  16. Limelight完成了对雅虎Edgecast的收购,合并后的公司更名为Edgio,成为全球边缘解决方案的领导者
  17. 多线程:synchronized关键字解析
  18. 你的死工资,正在拖垮你一辈子需要花多少钱
  19. 分布式学习之一:事务
  20. python 斗地主发牌_Python_斗地主发牌程序

热门文章

  1. bat 引号 嵌套_边缘检测 使用 OpenCV 和 深度学习 进行整体嵌套边缘检测
  2. js制作flash文件进度条
  3. 1.Spring注解01、组件注册-@Configuration@Bean给容器中注册组件
  4. PPT设计思维进阶:提升设计能力
  5. 如何配置百度地图应用访问白名单
  6. 海外 Android 三方应用市场
  7. Redis生成自增流水号,每日清零
  8. php网站建设和外包
  9. 电脑开启麦克风有回音,录音声音太小怎么办?
  10. windows电脑录屏消除回声