未转换的报文:

SAP ABAP unicode转换成中文

转换后的报文:

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 && '[email protected]#$%'."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 '[email protected]#$%' IN p_data WITH ''."去掉占位符
ENDFORM.

相关文章: