最近在研究Unicode切中文字串
報表中文字算2個,unicode系統卻算1個,當中英文數字夾雜的時候滿麻煩的
我發現一個function叫做 'TEXT_SPLIT' 切的倒是很整齊的
當輸入字串後會傳回兩個參數line 會傳回結果,rest 會傳回被切剩下的字串
經過研究改寫一下可以依照長度切一切一筆一筆放在itab中做相關運用
這種寫法我自己測試的一下切的滿準的還遇不到什麼問題。輸入4會切出兩個中文字
FORM CUT_SPLIT TABLES PT_STRING STRUCTURE UPS_YS_STRING_TABLE
USING PI_STRING TYPE STRING
PI_SIZE TYPE i.
DATA: PI_STR1(4096).
DATA: PI_STR2(4096).
DATA: P_LEN TYPE I.
REFRESH PT_STRING.
P_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( PI_STRING ).
PI_STR1 = PI_STRING.
IF P_LEN <= PI_SIZE OR PI_SIZE IS INITIAL.
PT_STRING-LINE = PI_STR1.
APPEND PT_STRING.
EXIT.
ENDIF.
WHILE P_LEN > 0.
CALL FUNCTION 'TEXT_SPLIT'
EXPORTING
LENGTH = PI_SIZE
TEXT = PI_STR1
IMPORTING
LINE = PI_STR1
REST = PI_STR2.
PT_STRING-LINE = PI_STR1.
APPEND PT_STRING.
IF PI_STR2 = ''.
EXIT.
ENDIF.
P_LEN = CL_ABAP_LIST_UTILITIES=>DYNAMIC_OUTPUT_LENGTH( PI_STR2 ).
PI_STR1 = PI_STR2.
ENDWHILE.
ENDFORM.