abap 负数前置

第一种、直接调用函数“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

原文地址:https://www.cnblogs.com/BruceKing/p/14595730.html