当前位置: 首页 > ops >正文

BW非法字符处理

非法字符配置表结构

非法字符配置表内容

MANDT  SEQNO  BAD_HEX      GOOD_HEX

700 1     0000      0020

700 2     0001      0020

700 3     0002      0020

700 4     0003      0020

700 5     0004      0020

700 6     0005      0020

700 7     0006      0020

700 8     0007      0020

700 9     0008      0020

700 10   0009      0020

700 11   000A      0020

700 12   000B      0020

700 13   000C      0020

700 14   000D      0020

700 15   000E      0020

700 16   000F      0020

700 17   0010      0020

700 18   0011      0020

700 19   0012      0020

700 20   0013      0020

700 21   0022      0020

700 22   FF08       0020

700 23   FF09       0020

非法字符处理编码

CALL METHOD ZCL_BW_UTILITIES=>REMOVE_PACKAGE_ILLEGAL_CHARSCHANGINGC_SOURCETAB = SOURCE_PACKAGE.class ZCL_BW_UTILITIES definitionpublicfinalcreate public .public section. "methods CONSTRUCTOR .class-methods REMOVE_PACKAGE_ILLEGAL_CHARSimporting!I_CHAR_LENGTH type I optionalchanging!C_SOURCETAB type TABLE .class-methods CLASS_CONSTRUCTOR .
protected section.
private section.class-data A_ILLEGAL_HEX_CHAR type STRING . "class-data A_ILLEGAL_HEX_PAIR type STRING .class-methods CHECK_SINGLE_FIELDchanging!C_FIELD type CLIKE .
ENDCLASS.CLASS ZCL_BW_UTILITIES IMPLEMENTATION.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Private Method ZCL_BW_UTILITIES=>CHECK_SINGLE_FIELD
* +-------------------------------------------------------------------------------------------------+
* | [<-->] C_FIELD                        TYPE        CLIKE
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD CHECK_SINGLE_FIELD."IF ( STRLEN( C_FIELD ) = 1 AND C_FIELD = '#' ) ORC_FIELD+0(1) = '!'.C_FIELD+0(1) = SPACE.ENDIF.IF C_FIELD CA A_ILLEGAL_HEX_CHAR.TRANSLATE C_FIELD USING A_ILLEGAL_HEX_PAIR.ENDIF.ENDMETHOD.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_BW_UTILITIES=>CLASS_CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD CLASS_CONSTRUCTOR.DATA: IT_HEX    TYPE STANDARD TABLE OF ZBW_ILLEGAL_HEX,"HEX_PAIR  TYPE XSTRING,HEX_CHAR  TYPE XSTRING,CONVERTER TYPE REF TO CL_ABAP_CONV_IN_CE.FIELD-SYMBOLS: <FS_HEX> TYPE ZBW_ILLEGAL_HEX.SELECT * FROM ZBW_ILLEGAL_HEX INTO TABLE IT_HEX.LOOP AT IT_HEX ASSIGNING <FS_HEX>.CONCATENATE HEX_PAIR <FS_HEX>-BAD_HEX <FS_HEX>-GOOD_HEX INTO HEX_PAIR IN BYTE MODE.CONCATENATE HEX_CHAR <FS_HEX>-BAD_HEX INTO HEX_CHAR IN BYTE MODE.ENDLOOP.CALL METHOD CL_ABAP_CONV_IN_CE=>CREATEEXPORTINGINPUT       = HEX_PAIRENCODING    = '4102'REPLACEMENT = '?'IGNORE_CERR = 'X'RECEIVINGCONV        = CONVERTER.CALL METHOD CONVERTER->READIMPORTINGDATA = A_ILLEGAL_HEX_PAIR.CALL METHOD CONVERTER->RESETEXPORTINGINPUT       = HEX_CHARENCODING    = '4102'IGNORE_CERR = 'X'.CALL METHOD CONVERTER->READIMPORTINGDATA = A_ILLEGAL_HEX_CHAR.ENDMETHOD.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_BW_UTILITIES->CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* +--------------------------------------------------------------------------------------</SIGNATURE>method CONSTRUCTOR.endmethod.* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_BW_UTILITIES=>REMOVE_PACKAGE_ILLEGAL_CHARS
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_CHAR_LENGTH                  TYPE        I(optional)
* | [<-->] C_SOURCETAB                    TYPE        TABLE
* +--------------------------------------------------------------------------------------</SIGNATURE>METHOD REMOVE_PACKAGE_ILLEGAL_CHARS."TYPES: BEGIN OF T_POS,POS TYPE I,LEN TYPE I,END OF T_POS.DATA: DETAILS TYPE REF TO CL_ABAP_STRUCTDESCR,IT_POS  TYPE STANDARD TABLE OF T_POS,WA_POS  TYPE T_POS,IDX     TYPE SYTABIX,FVALUE  TYPE STRING.FIELD-SYMBOLS: <LINE>    TYPE ANY,<COMP_WA> TYPE ABAP_COMPDESCR,<FS_POS>  TYPE T_POS,<FS>      TYPE ANY.IF LINES( C_SOURCETAB ) = 0.RETURN.ENDIF.READ TABLE C_SOURCETAB ASSIGNING <LINE> INDEX 1.DETAILS ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( <LINE> ).LOOP AT DETAILS->COMPONENTS ASSIGNING <COMP_WA>.IDX = SY-TABIX.IF <COMP_WA>-TYPE_KIND = 'C' AND<COMP_WA>-LENGTH > I_CHAR_LENGTH.WA_POS-POS = IDX.WA_POS-LEN = <COMP_WA>-LENGTH.APPEND WA_POS TO IT_POS.ENDIF.ENDLOOP.IF IT_POS[] IS INITIAL.RETURN.ENDIF.LOOP AT C_SOURCETAB ASSIGNING <LINE>.LOOP AT IT_POS ASSIGNING <FS_POS>.ASSIGN COMPONENT <FS_POS>-POS OF STRUCTURE <LINE> TO <FS>.CALL METHOD CHECK_SINGLE_FIELDCHANGINGC_FIELD = <FS>.ENDLOOP.ENDLOOP.
*ENDMETHOD.
ENDCLASS.

http://www.xdnf.cn/news/13411.html

相关文章:

  • 智能空气流向控制系统SKLX的优化与实践
  • Hi3519DV500开发板适配新sensor的详细流程(最新版)
  • 96页PPT华为销售战略规划市场洞察品牌策略
  • Squid 代理服务器实战:解决动态 IP 访问第三方接口的生产级方案
  • 多系统合路器(POI)详解
  • 【数据结构】 优先级队列 —— 堆
  • 波形合成之C语言实现
  • NuGet 从入门到精进全解析
  • Intel Boot Guard
  • 系统集成自动化流程编排实现条件分支高级篇(二)
  • 实战使用docker compose 搭建 Redis 主从复制集群
  • 依存句法分析
  • Cockpit:一个开源的 Linux 系统管理工具
  • 蚁群算法(Ant Colony Optimization)原理与应用解析
  • (功能测试Charles)如何抓取手机http的报文
  • 2025神经网络动力学理论、优化算法及应用专题研讨会 ( NOTAA 2025)
  • 裸金属服务器+可信计算:构建自主可控的数据安全新底座
  • 【无标题】NP完全问题的拓扑对偶统一解法 ——四色问题到P=NP的普适框架
  • 篇章四 论坛系统——业务开发——前期准备——公共组件
  • 数据库连接池——关键技术点介绍
  • 亚马逊 API 接口开发:解锁商品详情页实时数据(接入流程解析)
  • Django中的ORM的使用步骤----以MySQL为例
  • 湖北理元理律师事务所债务优化实践:法律框架下的生活重建方案
  • 一台电脑最多能接多少个硬盘
  • 网络编程(数据库:SQLite)
  • 英一真题阅读单词笔记 09年
  • 【编译工具】(版本控制)Git + GitHub Actions:自动化工作流如何让我的开发效率提升200%?
  • HDFS 使用原生连接器连接 S3 对象存储
  • leetcode234-回文链表
  • 美团NoCode设计网站的尝试经验分享