SAP ABAP unicode轉換成中文

未轉換的報文:

轉換後的報文:

用到的代碼:

FORM frm_unicode_to_char  CHANGING p_data.
  DATA: lv_patt TYPE string VALUE '\u',"可以根據實際情況修改此處的值
        rt_tab  TYPE match_result_tab,
        ls_tab  LIKE LINE OF rt_tab.

  DATA:BEGIN OF lt_tab OCCURS 0,
         unicode(6),  "帶\U的6位unicode
         cncha(6),    "對應的中文
       END OF lt_tab.

  DATA lv_str0(4).
  DATA lv_str1(4).
  DATA lv_str2(6).
  DATA lv_str3 TYPE string.
  DATA lv_offset0 TYPE i.
  DATA lv_offset1 TYPE i.

  FIND ALL OCCURRENCES OF lv_patt IN p_data RESULTS rt_tab.

  LOOP AT rt_tab INTO ls_tab.
    CLEAR: lv_offset0,lv_str0,lv_str1.

    lv_offset0 = ls_tab-offset + 2.
    lv_offset1 = ls_tab-offset.

    lv_str0 = p_data+lv_offset0(4)."不帶\U的4位unicode
    TRANSLATE lv_str0 TO UPPER CASE.
    lv_str1 = cl_abap_conv_in_ce=>uccp( lv_str0 )."轉換之後的中文

    lt_tab-unicode = p_data+lv_offset1(6).
    lt_tab-cncha = lv_str1 && '!@#$%'."5位佔位符
    APPEND lt_tab.
  ENDLOOP.

  SORT lt_tab BY unicode.
  DELETE ADJACENT DUPLICATES FROM lt_tab COMPARING unicode.

  LOOP AT lt_tab.
    REPLACE ALL OCCURRENCES OF lt_tab-unicode IN p_data WITH lt_tab-cncha.
  ENDLOOP.

  REPLACE ALL OCCURRENCES OF '!@#$%' IN p_data WITH ''."去掉佔位符
ENDFORM.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章