> (ABAP) 문자를 바이트길이로 자르기 <
스마트폼에 문자를 넣었을때 스마트폼 필드의 길이보다 길어지면 문자가 사라지는 현상이 있다.
그래서 스마트폼에 데이타를 넒길때 필드의 길이보다 길어지지 않게 잘라줘야 하는데
한글이 포함되어있으면 Byte로 잘라야하는 어려움이... ㅡㅡ;
그래서 정리해 본 로직.. 잘 돌아간다.
FORM FIX_LENGTH_OF_CHAR USING P_SOURCE P_TARGET P_LEN.
DATA: LV_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 = STRLEN( P_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
끝.