Created by Jerry Wang, last modified on May 29, 2014

输入unicode格式的字符:

输出是转换之后的对应中文字符:

代码如下.

class_constructor里的domain fixed value:

class ZCL_CHINESE_TOOL definitionpublicfinalcreate public .
public section.type-pools ABAP .types:tt_post_attributes TYPE STANDARD TABLE OF crmt_soc_post_attr .types:tt_post_uuid TYPE STANDARD TABLE OF crmt_soc_data_uuid .types:tt_socialuserinfo type standard table of socialuserinfo .class-methods CLASS_CONSTRUCTOR .class-methods GET_FORMATTED_STRINGimporting!IV_FLAG type CRMT_SOC_UNICODE_FLAG optional!IV_STRING type STRINGreturningvalue(RV_STRING) type STRING .
protected section.
private section.types:tt_sentit TYPE STANDARD TABLE OF crmc_soc_senti_t .class-data SV_UNICODE_FLAG type CRMT_SOC_UNICODE_FLAG .class-data ST_INVALID type STRING_TABLE .class-data ST_CONTROL_FLAGS type STRING_TABLE .class-methods IS_HEXDECIMALimporting!IV_STRING type CHAR4returningvalue(IS_HEXDECIMAL) type ABAP_BOOL .class-methods IS_VALID_UNICODE_FLAGimporting!IV_FLAG type CRMT_SOC_UNICODE_FLAGreturningvalue(RV_VALID) type ABAP_BOOL .
ENDCLASS.
CLASS ZCL_CHINESE_TOOL IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CHINESE_TOOL=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method CLASS_CONSTRUCTOR.APPEND cl_abap_conv_in_ce=>uccp( 'p2d3' ) to st_invalid. "#EC NOTEXTAPPEND cl_abap_conv_in_ce=>uccp( '1234' ) to st_invalid. "#EC NOTEXTDATA: it_taba TYPE STANDARD TABLE OF dd07v,it_tabb TYPE STANDARD TABLE OF dd07v.FIELD-SYMBOLS: <item> TYPE dd07v.CALL FUNCTION 'DD_DOMA_GET'EXPORTINGdomain_name   = 'CRM_SOC_UNICODE_FLAG'langu         = sy-languwithtext      = 'X'TABLESdd07v_tab_a   = it_tabadd07v_tab_n   = it_tabbEXCEPTIONSillegal_value = 1op_failure    = 2OTHERS        = 3.LOOP AT it_taba ASSIGNING <item>.APPEND <item>-domvalue_l TO st_control_flags.ENDLOOP.endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_CHINESE_TOOL=>GET_FORMATTED_STRING
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_FLAG                        TYPE        CRMT_SOC_UNICODE_FLAG(optional)
* | [--->] IV_STRING                      TYPE        STRING
* | [<-()] RV_STRING                      TYPE        STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>method GET_FORMATTED_STRING.CONSTANTS: c_default TYPE CRMT_SOC_UNICODE_FLAG VALUE '\u'.TYPES: BEGIN OF ty_pair,unicode TYPE char4,chinese TYPE char2,END OF ty_pair.DATA: lv_offset TYPE i,lv_start TYPE i,lt_match TYPE match_result_tab,ls_match LIKE LINE OF lt_match,lv_unicode TYPE char4,lv_upper TYPE char4,lt_chinese TYPE STANDARD TABLE OF ty_pair,ls_pair TYPE ty_pair,lv_len TYPE i,lv_chinese TYPE crmt_soc_unicode_flag,lv_replace TYPE char7,lv_input TYPE string.IF iv_flag IS NOT SUPPLIED.sv_unicode_flag = c_default.ELSEIF is_valid_unicode_flag( iv_flag ) = abap_false.rv_string = iv_string.RETURN.ELSE.sv_unicode_flag = iv_flag.ENDIF.FIND ALL OCCURRENCES OF sv_unicode_flag IN iv_string RESULTS lt_match.IF sy-subrc <> 0.rv_string = iv_string.RETURN.ENDIF.lv_input = iv_string.lv_len = strlen( lv_input ).CLEAR: lt_chinese.LOOP AT lt_match INTO ls_match.lv_start = ls_match-offset + ls_match-length.CHECK lv_len >= lv_start + 4.lv_upper = lv_unicode = iv_string+lv_start(4).TRANSLATE lv_upper TO UPPER CASE.CHECK is_hexdecimal( lv_unicode ) = abap_true.lv_chinese = cl_abap_conv_in_ce=>uccp( lv_upper ).READ TABLE st_invalid WITH KEY table_line = lv_chinese TRANSPORTING NO FIELDS.CHECK sy-subrc <> 0.ls_pair-unicode = lv_unicode.ls_pair-chinese = lv_chinese.APPEND ls_pair TO lt_chinese.ENDLOOP.LOOP AT lt_chinese INTO ls_pair.lv_replace = sv_unicode_flag && ls_pair-unicode.REPLACE ALL OCCURRENCES OF lv_replace IN lv_input WITH ls_pair-chinese.ENDLOOP.rv_string = lv_input.endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Private Method ZCL_CHINESE_TOOL=>IS_HEXDECIMAL
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_STRING                      TYPE        CHAR4
* | [<-()] IS_HEXDECIMAL                  TYPE        ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>method IS_HEXDECIMAL.CONSTANTS: mask TYPE string VALUE '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.IF iv_string CO mask.is_hexdecimal = abap_true.ENDIF.endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Private Method ZCL_CHINESE_TOOL=>IS_VALID_UNICODE_FLAG
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_FLAG                        TYPE        CRMT_SOC_UNICODE_FLAG
* | [<-()] RV_VALID                       TYPE        ABAP_BOOL
* +--------------------------------------------------------------------------------------</SIGNATURE>method IS_VALID_UNICODE_FLAG.READ TABLE st_control_flags WITH KEY table_line = iv_flag TRANSPORTING NO FIELDS.IF sy-subrc = 0.rv_valid = abap_true.ENDIF.endmethod.
ENDCLASS.

SAP ABAP实用技巧介绍系列之将unicode字符转换成中文相关推荐

  1. SAP ABAP实用技巧介绍系列之 ABAP内存管理学习

    Created by Jerry Wang, last modified on May 26, 2014 使用如下report 测试ABAP memory: REPORT ztest_export. ...

  2. SAP ABAP实用技巧介绍系列之 使用XSLT替换xml中指定node的value

    Created by Jerry Wang, last modified on Jun 30, 2014 用于测试的xml: <catalog> <cd> <title& ...

  3. SAP ABAP实用技巧介绍系列之 使用simple transformation的mapping功能

    Created by Jerry Wang, last modified on Jun 25, 2014 Simple transformation如下: 当node VALTO_DATE的value ...

  4. SAP ABAP实用技巧介绍系列之 在xslt里call ABAP method

    Created by Jerry Wang, last modified on Jul 02, 2014 用于测试的xml: <catalog> <cd> <title& ...

  5. SAP ABAP实用技巧介绍系列之 ABAP XSLT 定义变量

    Created by Jerry Wang, last modified on Jul 01, 2014 下面的xslt 片段定义了两个变量: header变量的内容为一系列html tab,而col ...

  6. SAP ABAP实用技巧介绍系列之 获得webservice的schema node

    Created by Jerry Wang, last modified on Jul 23, 2014 webservice WSDL URL: https://:44324/sap/bc/srt/ ...

  7. SAP ABAP实用技巧介绍系列之反模式:一些低效的ABAP内表操作

    Created by Jerry Wang, last modified on Jun 15, 2015 Why is this message raised? From SAP help, we k ...

  8. SAP ABAP实用技巧介绍系列之could not create BAdI implementation

    Created by Jerry Wang, last modified on Apr 03, 2014 当试图为一个mark成SAP internal use的BAdI definition创建一个 ...

  9. SAP ABAP实用技巧介绍系列之使用代码获得user的SAP lock信息

    Created by Jerry Wang, last modified on May 21, 2014 如下report 先后三次重复调用带参数的enqueue function module对da ...

最新文章

  1. Oracle创建表管理表
  2. 零基础自学python的建议-零基础学python是学2还是3好
  3. js 正则判断字符串是否为字母或数字
  4. ITK:将2D图像堆叠为3D图像
  5. Linux用系统命令杀死僵尸进程
  6. 汉中计算机培训班学费是多少,汉中远程教育培训班收费多少
  7. React-Native 之 GD (六)无数据情况处理
  8. 纯CSS3实现lightbox+图像轮播
  9. uni-app微信小程序——商城(6)——我的主页
  10. mkv格式用什么播放器打开?视频转换器怎样操作
  11. 毕业设计 STM32单片机的畜牧养殖场管理与检测系统 - 物联网
  12. 三分钟部署Laxcus大数据管理系统
  13. linux与python客户端,Python编写的socket服务器和客户端
  14. 机器学习笔记~五种常见的聚类算法简介
  15. 计算机系统如何恢复出厂设置路由器,怎么让路由器恢复出厂设置?路由器怎么恢复默认设置?...
  16. 使用 Vue3 重构 Vue2 项目(长文)
  17. [Python]学习笔记5——For循环
  18. 是否能够成为真正的编程高手,主要是在于是否有毅力坚持学习和练习。本实例要求输出名言“贵有恒,何必三更起五更睡:最无益,只怕一日曝十日寒。”主要是想让读者激励自己,坚持学习C语言
  19. CAD想要快速绘图的基本技巧
  20. 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485

热门文章

  1. 【转】Android 最火的快速开发框架XUtils
  2. 学java教程之String类
  3. Ubuntu下命令行cd进不了/home/用户目录
  4. Android--获取当前系统时间
  5. 网站程序IIS布署问题备忘录
  6. 【转】【翻译】实体框架中的POCO支持 - 第二部分 - 复杂类型,延迟装载和显式装载...
  7. 优化案例(part6)--Feature co-shrinking for co-clustering
  8. CSS基础(part9)--CSS背景
  9. 机器学习-集成学习-梯度提升决策树(GBDT)
  10. cmd mysql log_如何使用mysqlbinlog工具?