ABAP根据显示长度转换为字符长度截取字符串

ABAP根据显示长度转换为字符长度截取字符串ABAP根据显示长度转换为字符长度截取字符串

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.

效果:

ABAP根据显示长度转换为字符长度截取字符串