第一种、直接调用函数“CLOI_PUT_SIGN_IN_FRONT”。
但是这个有个弊端,传入的值必须是字符型,所以必须赞传入前自己先转换好变量。
第二种:自己写一下自定义函数,可以自己写代码转换也可以在里面调用函数“CLOI_PUT_SIGN_IN_FRONT”。
FUNCTION CONVERSION_EXIT_Z001_OUTPUT. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" REFERENCE(INPUT) *" EXPORTING *" REFERENCE(OUTPUT) *"---------------------------------------------------------------------- * IF input IS NOT INITIAL. * WRITE input TO output. * CONCATENATE output '%' INTO output. * CONDENSE output NO-GAPS. * ENDIF. "-------------------自己写的转换代码------------------- * DATA: OUTPUT1(20) TYPE C, * OUTPUT2(20), * OUTDATUM(16) TYPE P DECIMALS 2. * IF NOT INPUT IS INITIAL. * OUTDATUM = INPUT. * IF INPUT > 0. * WRITE OUTDATUM TO OUTPUT1 ."RIGHT-JUSTIFIED . * ELSE. * OUTDATUM = OUTDATUM * ( -1 ). * WRITE OUTDATUM TO OUTPUT1 ."RIGHT-JUSTIFIED. * CONCATENATE '-' OUTPUT1 INTO OUTPUT1. * ENDIF. * ELSE. * CLEAR OUTPUT1. * ENDIF. * CONDENSE OUTPUT1 NO-GAPS . * WRITE OUTPUT1 TO OUTPUT2 RIGHT-JUSTIFIED . * OUTPUT = OUTPUT2. * CLEAR: OUTPUT2. "-------------------自己写的转换代码------------------- " 调用函数转换 DATA:OUTPUT1(20). OUTPUT1 = INPUT. CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = OUTPUT1. CONDENSE OUTPUT1 NO-GAPS. OUTPUT = OUTPUT1. CLEAR: OUTPUT1. ENDFUNCTION.
input
output
第三,使用第二种的自定义函数直接使ALV展示成需要的负号前置,不需要在程序里写转换,
但是要注意函数名称格式是固定的,CONVERSION_EXIT_XXXX_OUTPUT,其中XXXX可以自己起名字
结合ALV的参数
wa_fieldcat-edit_mask