将ALV中负号提前
2017-09-12 本文已影响16人
Mmm_余安
一般我们在alv上展示的金额如果是负数,默认是这样显示的:
系统默认样式
在有的开发中,客户可能要求负号提前,实现这样的效果:
负号提前
CLOI_PUT_SIGN_IN_FRONT
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.