FUNCTION ZF_BASED_DISPLAY_LENGTH.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(I_LENG) TYPE I
*" VALUE(I_CHAR) TYPE CHAR200
*" EXPORTING
*" VALUE(E_LENG) TYPE I
*" VALUE(E_CHAR) TYPE CHAR200
*"----------------------------------------------------------------------
DATA GS_LENG TYPE I.
DATA SUM_LENG TYPE I.
DATA SUM_LENGD TYPE I.
DATA SUM_CHAR TYPE CHAR200.
*获取字符串的显示长度
GS_LENG = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( I_CHAR ).
IF GS_LENG > I_LENG.
SUM_LENG = 0.
SUM_LENGD = 0.
WHILE SUM_LENGD < I_LENG.
CLEAR SUM_CHAR.
ADD 1 TO SUM_LENG .
SUM_CHAR = I_CHAR(SUM_LENG).
SUM_LENGD = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( SUM_CHAR ).
ENDWHILE.
IF I_LENG < CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( SUM_CHAR ).
SUM_LENG = SUM_LENG - 1 .
SUM_CHAR = I_CHAR(SUM_LENG).
ENDIF.
E_LENG = SUM_LENG.
E_CHAR = SUM_CHAR.
ELSE.
E_LENG = STRLEN( I_CHAR ).
E_CHAR = I_CHAR.
ENDIF.
ENDFUNCTION.
效果: