将ALV中负号提前

一般我们在alv上展示的金额如果是负数,默认是这样显示的:
将ALV中负号提前_第1张图片
系统默认样式

在有的开发中,客户可能要求负号提前,实现这样的效果:
将ALV中负号提前_第2张图片
负号提前

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 V
ALUE = 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.

你可能感兴趣的:(将ALV中负号提前)