通过接口或者Excel上载创建的主数据描述,凭证数据的文本字段等,偶尔会有包含特殊字符的情况,且大部分时候是不可见字符,比如制表符,回车换行,0x0000等等。如果没有工具程序,只用SE16等查找或者更改非常困难,所以特意做了一个程序来干这个事情。
辅助功能1、显示可见字符的ASCII码
辅助功能2、自动创建日志表
辅助功能3、自定义的更新功能(有更改日志)
*&---------------------------------------------------------------------*
*& Report ZCHECKSPECIALHEX
*& 检查/修正表内的CNDT类型字段值包含的特殊字符
*&---------------------------------------------------------------------*
*& Baitianzhen
*& 2022.04.16
*&---------------------------------------------------------------------*
REPORT zcheckspecialhex NO STANDARD PAGE HEADING .
TYPE-POOLS: sscr,slis.
TABLES: dd02v,dd03l,tadir,sscrfields.
DATA: fldct TYPE lvc_t_fcat WITH HEADER LINE,
slayt TYPE lvc_s_layo,
repid TYPE sy-repid,
subrc TYPE sy-subrc,
char45 TYPE char45,
tabix TYPE sy-tabix,
fmname TYPE funcname,
whstr TYPE string,
tmpstr TYPE string,
numstr TYPE string,
keystr TYPE string,
cspace TYPE char4,
tmpint TYPE i,
percnt TYPE i,
cflag.
DATA: set_str TYPE string,
con_str TYPE string.
DATA: cxroot TYPE REF TO cx_root,
excmsg TYPE char255.
DATA: paraname TYPE char40,
stru_type TYPE REF TO cl_abap_structdescr,
itab_type TYPE REF TO cl_abap_tabledescr,
comp_des TYPE abap_componentdescr,
comp_tab TYPE abap_component_tab WITH HEADER LINE.
DATA: logtname TYPE tablename VALUE 'ZCSL'.
DATA: BEGIN OF wa_value ,
fldname TYPE string,
fldtype TYPE string,
fldvalue TYPE string,
hexvalue TYPE string,
END OF wa_value.
DATA: BEGIN OF it_flds OCCURS 0 ,
fldname TYPE fieldname,
ref_tab TYPE tabname,
ref_fld TYPE fieldname,
convext TYPE convexit,
inttype TYPE inttype,
END OF it_flds.
DATA: BEGIN OF wa_log,
mandt TYPE mandt ,
tabname TYPE tabname,
objectid TYPE cdobjectv,
fieldname TYPE fieldname,
erdat TYPE erdat ,
erzet TYPE erzet ,
ernam TYPE ernam ,
value_old TYPE cdfldvalo,
value_new TYPE cdfldvaln,
END OF wa_log.
DATA: it_fkey LIKE TABLE OF it_flds WITH HEADER LINE.
DATA: it_fnok LIKE TABLE OF it_flds WITH HEADER LINE.
DATA: it_dd03 TYPE TABLE OF dd03p WITH HEADER LINE.
DATA: rf_tabl TYPE REF TO data,
rf_twa TYPE REF TO data,
rf_out TYPE REF TO data,
rf_owa TYPE REF TO data.
FIELD-SYMBOLS: <fs_out> TYPE STANDARD TABLE,
<fs_tabl> TYPE STANDARD TABLE,
<fsx> TYPE x, <fs_owa>, <fs_twa>, <fs_fld>, <fs>.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN FUNCTION KEY 3.
SELECTION-SCREEN FUNCTION KEY 4.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t01.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (31) ctxt0 FOR FIELD p_tname .
PARAMETERS: p_tname TYPE tabname16 MEMORY ID dtb .
SELECTION-SCREEN COMMENT 52(31) ctxtl .
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS s_type FOR cflag NO INTERVALS.
SELECT-OPTIONS s_flds FOR dd03l-fieldname NO INTERVALS MATCHCODE OBJECT dd_fieldname.
SELECT-OPTIONS s_conl FOR char45 NO INTERVALS LOWER CASE.
SELECT-OPTIONS s_sfld FOR d