728x90

 

> (ABAP) 문자를 바이트길이로 자르기 <

 

스마트폼에 문자를 넣었을때 스마트폼 필드의 길이보다 길어지면 문자가 사라지는 현상이 있다.

그래서 스마트폼에 데이타를 넒길때 필드의 길이보다 길어지지 않게 잘라줘야 하는데

한글이 포함되어있으면 Byte로 잘라야하는 어려움이... ㅡㅡ;

그래서 정리해 본 로직.. 잘 돌아간다.

 

FORM FIX_LENGTH_OF_CHAR  USING    P_SOURCE P_TARGET P_LEN.

  DATALV_LEN  TYPE I,
        LV_LEN2 TYPE I,
        LV_LEN3 TYPE I,
        LV_LEN4 TYPE I,
        LV_STR(255).

  CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
    EXPORTING
      FIELD P_SOURCE
    RECEIVING
      LEN   LV_LEN.

  CLEAR P_TARGET.

  IF P_LEN >= LV_LEN.
    P_TARGET P_SOURCE.
  ELSE.
    LV_LEN2 STRLENP_SOURCE ).
    LV_LEN3 LV_LEN2.
    DO LV_LEN2 TIMES.
      LV_STR P_SOURCE(LV_LEN3).

      CALL METHOD CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH
        EXPORTING
          FIELD LV_STR
        RECEIVING
          LEN   LV_LEN4.

      IF P_LEN >= LV_LEN4.
        P_TARGET LV_STR.
        EXIT.
      ELSE.
        LV_LEN3 LV_LEN3 1.
      ENDIF.
    ENDDO.
  ENDIF.

ENDFORM.                    " FIX_LENGTH_OF_CHAR

 

끝.

 

반응형
Posted by Gomtui
,