SAP ABAP实用技巧介绍系列之将unicode字符转换成中文
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字符转换成中文相关推荐
- SAP ABAP实用技巧介绍系列之 ABAP内存管理学习
Created by Jerry Wang, last modified on May 26, 2014 使用如下report 测试ABAP memory: REPORT ztest_export. ...
- SAP ABAP实用技巧介绍系列之 使用XSLT替换xml中指定node的value
Created by Jerry Wang, last modified on Jun 30, 2014 用于测试的xml: <catalog> <cd> <title& ...
- SAP ABAP实用技巧介绍系列之 使用simple transformation的mapping功能
Created by Jerry Wang, last modified on Jun 25, 2014 Simple transformation如下: 当node VALTO_DATE的value ...
- SAP ABAP实用技巧介绍系列之 在xslt里call ABAP method
Created by Jerry Wang, last modified on Jul 02, 2014 用于测试的xml: <catalog> <cd> <title& ...
- SAP ABAP实用技巧介绍系列之 ABAP XSLT 定义变量
Created by Jerry Wang, last modified on Jul 01, 2014 下面的xslt 片段定义了两个变量: header变量的内容为一系列html tab,而col ...
- SAP ABAP实用技巧介绍系列之 获得webservice的schema node
Created by Jerry Wang, last modified on Jul 23, 2014 webservice WSDL URL: https://:44324/sap/bc/srt/ ...
- SAP ABAP实用技巧介绍系列之反模式:一些低效的ABAP内表操作
Created by Jerry Wang, last modified on Jun 15, 2015 Why is this message raised? From SAP help, we k ...
- SAP ABAP实用技巧介绍系列之could not create BAdI implementation
Created by Jerry Wang, last modified on Apr 03, 2014 当试图为一个mark成SAP internal use的BAdI definition创建一个 ...
- SAP ABAP实用技巧介绍系列之使用代码获得user的SAP lock信息
Created by Jerry Wang, last modified on May 21, 2014 如下report 先后三次重复调用带参数的enqueue function module对da ...
最新文章
- Oracle创建表管理表
- 零基础自学python的建议-零基础学python是学2还是3好
- js 正则判断字符串是否为字母或数字
- ITK:将2D图像堆叠为3D图像
- Linux用系统命令杀死僵尸进程
- 汉中计算机培训班学费是多少,汉中远程教育培训班收费多少
- React-Native 之 GD (六)无数据情况处理
- 纯CSS3实现lightbox+图像轮播
- uni-app微信小程序——商城(6)——我的主页
- mkv格式用什么播放器打开?视频转换器怎样操作
- 毕业设计 STM32单片机的畜牧养殖场管理与检测系统 - 物联网
- 三分钟部署Laxcus大数据管理系统
- linux与python客户端,Python编写的socket服务器和客户端
- 机器学习笔记~五种常见的聚类算法简介
- 计算机系统如何恢复出厂设置路由器,怎么让路由器恢复出厂设置?路由器怎么恢复默认设置?...
- 使用 Vue3 重构 Vue2 项目(长文)
- [Python]学习笔记5——For循环
- 是否能够成为真正的编程高手,主要是在于是否有毅力坚持学习和练习。本实例要求输出名言“贵有恒,何必三更起五更睡:最无益,只怕一日曝十日寒。”主要是想让读者激励自己,坚持学习C语言
- CAD想要快速绘图的基本技巧
- 西门子1200程序V15版本实例,设备已经运行生产,博图V15以上可打开 包含上位机通讯,modbus485
热门文章
- 【转】Android 最火的快速开发框架XUtils
- 学java教程之String类
- Ubuntu下命令行cd进不了/home/用户目录
- Android--获取当前系统时间
- 网站程序IIS布署问题备忘录
- 【转】【翻译】实体框架中的POCO支持 - 第二部分 - 复杂类型,延迟装载和显式装载...
- 优化案例(part6)--Feature co-shrinking for co-clustering
- CSS基础(part9)--CSS背景
- 机器学习-集成学习-梯度提升决策树(GBDT)
- cmd mysql log_如何使用mysqlbinlog工具?