未轉換的報文:
轉換後的報文:
用到的代碼:
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.