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.

效果:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章