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.

arrow
arrow
    文章標籤
    unicode sap
    全站熱搜
    創作者介紹
    創作者 Benson 的頭像
    Benson

    runman1999

    Benson 發表在 痞客邦 留言(0) 人氣()