SAP 在Unicode 環境下
aa = '中文長度問題'.
ww1 = strlen( aa ).
ww1 = 6
如果要轉為non-unicode 的長度
ww2 = cl_abap_list_utilities=>dynamic_output_length( aa ).
ww2 = 12
FUNCTION z_unicode_text_split.
*"----------------------------------------------------------------------
*"*"Global Interface:
*" IMPORTING
*" REFERENCE(TEXT_OLD)
*" REFERENCE(FIELD_LEN)
*" EXPORTING
*" REFERENCE(TEXT_NEW)
*" REFERENCE(DIFF_LEN)
*"----------------------------------------------------------------------
CLEAR diff_len.
aa = text_old.
ww1 = strlen( aa ).
ww2 = cl_abap_list_utilities=>dynamic_output_length( aa ).
IF ww2 > field_len. " 含中文字串太長的處理
w_ch = ww2 - ww1. "實際中文數量
w_en = ww1 - w_ch. "實際英文數量
w_text_len = w_en + ( ( field_len - w_en ) DIV 2 ).
* w_text_len = field_len - ( ww2 - field_len ). "有瑕疵
CALL FUNCTION 'TEXT_SPLIT'
EXPORTING
length = w_text_len
text = aa
* AS_CHARACTER =
IMPORTING
line = aa.
* rest = bb.
ww1 = strlen( aa ).
ww2 = cl_abap_list_utilities=>dynamic_output_length( aa ).
ENDIF.
text_new = aa.
diff_len = ww2 - ww1. "差異量
ENDFUNCTION.