SE14功能解析及数据恢复

作者:ABAP老白 约 7 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Basis, Data Engineering, SD, 开发, 数据工程, 系统管理, 销售分销
SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

按:SE14危险吗?如果是故意删除数据库、清空数据,那当然是危险的,但是,如果是正常操作导致的问题,比如SE14失败、超时DUMP、丢失了表等等,相信你看完本文会感觉这都不是问题,使用工具程序顺手就能解决了。

下面正文开始:

SE14作为SAP透明表在数据库层的处理工具,作用很多,但是最经常使用的还是在SE11修改了表字段后调整之用。本文要讲的就是这个场景,阐述SE14调整表的过程以及遇到问题后如何恢复数据,文末附上一个解决问题需要用到工具程序。

1. 什么时候需要运行SE14?

当SE11修改了表的字段,新的类型长度如果小于原长度,或者是修改了字段的数据类型,比如C类型变成了P类型等等这些需要强制转换的场景,并且表内已经有了数据,这个时候就需要运行SE14,使数据库内已存在的数据符合新的数据类型。

2. SE14的处理过程是怎样的?

以表ZTEST为例,正常的处理过程分下面几个步骤:

①、给表改名,RENAME 'ZTEST' TO 'QCMZTEST',即在表的前面加上QCM

②、删除表的所有索引,DROP INDEX 'ZTEST~0'

③、根据修改后的透明表字段创建数据库表QCM8ZTEST

④、QCM8表创建所有索引,

CREATE UNIQUE INDEX 'ZTEST~0' ON 'QCM8ZTEST'

⑤、数据从QCMZTEST 复制到 QCM8ZTEST。方法为取出QCM表内的数据放到内表,然后MOVE-

CORRESPONDING到新的表结构的内表,然后内表数据插入到QCM8表。

⑥、删除QCM表,DROP TABLE 'QCMZTEST'.

⑦、把QCM8表改名为透明表表名,RENAME 'QCM8ZTEST' TO 'ZTEST'。(

因为RENAME后数据库会自动把索引带过去,所以不需要删除索引重建 )。

出错后的继续调整过程:

DROP TABLE 'QCM8ZTEST'

CREATE TABLE 'QCM8ZTEST'

CREATE UNIQUE INDEX 'ZTEST~0' ON 'QCM8ZTEST'......

即继续调整的时候首先把QCM8表删除,然后从第三步开始执行

3. SE14为什么会失败?失败有哪些原因?

SE14的失败主要是发生第 ⑤ 步,MOVE-CORRESPONDING失败导致程序DUMP。

MOVE-CORRESPONDING为什么会失败呢?

因为MOVE-

CORRESPONDING属于强制赋值,当字段的新旧类型不同,比如旧类型是C类型,值为“ABC”,新类型为P类型,强制赋值的时候,把“ABC”赋值给P类型就会导致程序DUMP,然后SE14就失败了。

另外,前台执行超时也是一个常见的原因。

4. 如何避免失败

①、使用后台执行的方式执行SE14

②、先把字段删除,激活后再把字段加上,同时类型改为新类型

③、使用工具程序把更改的字段Update为空,然后再运行SE14

5. 如果已经失败了应该怎么办?

①、如果是前台执行超时导致的,只要勾中"后台",然后继续调整就行了

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

②、如果是第5步失败,那么再继续调整也是没有用的,这个时候有两个办法,一是使用工具程序的Update功能把QCMZTEST表的更改字段清空,再运行“继续调整”,二是“解锁表格”,然后使用SE14的“创建数据库表”或者SE11保存直接生成ZTEST表,如果报索引无法创建的错误就使用工具程序DROP

INDEX。使用第二种方法创建的表是空的,需要把数据再复制回来。

6. SE11更改字段的建议

①、如果更改的字段数据不要了,删除再创建,如果还要,确保新格式能放下老数据

②、如果使用先删除再创建的方法,记得传输请求也是分两次

③、SE14尽量以后台的方式执行

7. 工具程 序的 使用

本辅助程序基本上能解决所有的SE14造成的问题,最起码价值20 Manday,但是因为直接操作数据库,也请谨慎使用。

功能介绍:

①、查找表,可以根据表名查找是否存在,比如下面:

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

②、查看表内容,可以查看非SAP DDIC表的内容,比如QCM表

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

③、备份表,数据安全第一,任何时候多一个备份动作都是应该的

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

④、复制数据,核心功能,恢复数据用。可以把源表内容复制到目的表,主要是把QCMZTEST表的内容复制到ZTEST

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

⑤、DROP INDEX,因为SE14的Bug,在解锁表后索引并没有删除,导致新建表失败或者没有索引,需要先DROP INDEX

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

⑥、Update Table,可以update指定字段。在这儿用于把无法转换的字段清空。

SE14功能解析及数据恢复 - 封面图
SE14功能解析及数据恢复 - 封面图

8. 代码:

• * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *&---------------------------------------------------------------------**& Report ZSE14*&---------------------------------------------------------------------**& Baitianzhen*& SE14辅助工具,请谨慎使用!*&---------------------------------------------------------------------*REPORT zse14 NO STANDARD PAGE HEADING.

TABLES:dd02l,dd03l.SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE btxt1. PARAMETERS: p_find RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X', p_view RADIOBUTTON GROUP g1, p_back RADIOBUTTON GROUP g1, p_copy RADIOBUTTON GROUP g1, p_drop RADIOBUTTON GROUP g1, p_updt RADIOBUTTON GROUP g1.SELECTION-SCREEN END OF BLOCK b1.SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE btxt2. PARAMETERS: p_index TYPE char20 MODIF ID a, p_uptab TYPE tabname MODIF ID c, p_upfld TYPE fieldname MODIF ID c, p_upval TYPE char255 MODIF ID c, p_frtab TYPE tabname MODIF ID g, p_totab TYPE tabname MODIF ID g, p_tanam TYPE tabname MODIF ID e, p_where TYPE char255 MODIF ID b, p_uprow TYPE i MODIF ID f DEFAULT 1000. SELECT-OPTIONS s_exfld FOR dd03l-fieldname NO INTERVALS MODIF ID d. PARAMETERS p_trunc AS CHECKBOX MODIF ID d.SELECTION-SCREEN END OF BLOCK b2.SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE btxt3. PARAMETERS p_usejob AS CHECKBOX.SELECTION-SCREEN END OF BLOCK b3.SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE btxt4. SELECTION-SCREEN COMMENT /1(79): txt1,txt2,txt3,txt4,txt5,txt6,txt7.SELECTION-SCREEN END OF BLOCK b4.

AT SELECTION-SCREEN OUTPUT. btxt1 = '功能'. btxt2 = '操作'. btxt3 = '选项'. btxt4 = '说明'. %_p_drop_%_app_%-text = 'DROP INDEX'. %_p_copy_%_app_%-text = '复制数据'. %_p_updt_%_app_%-text = 'UPDATE TABLE'. %_p_view_%_app_%-text = '查看表数据'. %_p_find_%_app_%-text = '查找表'. %_p_back_%_app_%-text = '备份表'. %_p_frtab_%_app_%-text = '从表'. %_p_totab_%_app_%-text = '到表'. %_s_exfld_%_app_%-text = '排除源表字段'. %_p_trunc_%_app_%-text = '复制前清空目的表(所有Client所有数据)'. %_p_index_%_app_%-text = '索引名'. %_p_where_%_app_%-text = 'WHERE语句'. %_p_uptab_%_app_%-text = 'UPDATE表'. %_p_upfld_%_app_%-text = 'UPDATE字段'. %_p_upval_%_app_%-text = 'UPDATE值为'. %_p_tanam_%_app_%-text = '数据库表名'. %_p_uprow_%_app_%-text = '最大行数'. %_p_usejob_%_app_%-text = '后台执行

...

ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「SE14功能解析及数据恢复.md」整理生成,仅用于内部技术分享与学习交流。