SAP默认显示金额,数值时,负号都显示在后面(比如,100.00-),与中国的显示格式不一致,在ALV显示,接口传输时,我们通常需要 负号显示在前面比如,100元,我们要显示为-100.00,而不是100.00-,所以在显示数值时我们需要使用函数CLOI_PUT_SIGN_IN_FRONT进行转换一下。
1.法一
例子如下:
1 2 3 4 5 |
DATA : E_DMBTR TYPE STRING. E_DMBTR = '100.00-'. CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = E_DMBTR. |
但需要注意的是此函数只能对字段串进行处理,所以如是在ALV显示时可把数值金额字段附值给字段串再显示。
2. 法二
1.构建ALV的FIELDCATE时,设置 edit_mask = ‘==XXXXX’,
建立函数CONVERSION_EXIT_XXXXX_OUTPUT设置输出为负号提前,之后调用ALV显示函数,系统会自动调用函数CONVERSION_EXIT_XXXXX_OUTPUT,
1 2 3 4 5 6 7 8 9 10 11 12 13 |
FUNCTION CONVERSION_EXIT_ZMENGE_OUTPUT. *"---------------------------------------------------------------------- *"*"Local interface: *" IMPORTING *" REFERENCE(INPUT) TYPE ANY *" EXPORTING *" REFERENCE(OUTPUT) TYPE ANY *"---------------------------------------------------------------------- OUTPUT = INPUT. CALL FUNCTION 'CLOI_PUT_SIGN_IN_FRONT' CHANGING VALUE = OUTPUT. ENDFUNCTION. |