原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
项目中可能会有需求删除表中的特定记录,尤其是自定义表的记录,项目前期可能因为各种原因导致自定义表存在无效数据,这些无效数据占用空间,并且可能影响程序逻辑.影响系统整体监控.
有很多方法可以删除这些数据, 最快的方法就是在SQL编辑中用DELETE 语句按指定条件删除.
但是,一旦删除条件考虑不周. 一时的爽快将会带来长时间的痛苦.
这种痛苦的经历触发了写一个数据删除工具的念头
**本文主要介绍一款数据删除工具**
二
思维导图
整理了数据删除的关键点
三
SE16N的缺陷
SE16N中包含了数据的删除功能. 对应查询出来的数据可以选中删除. 适用于少量数据的删除.删除内容有备份
SE16N对查询数据的全选删除受ALV缓存数据的影响, 不能一次性的完成操作. 之前还写过一篇文章介绍了SE16N的全选删除的改造.(该文章无法建立链接,
感兴趣的可以在公众号中查找)
四
数据删除工具
下面是数据删除工具的功能介绍
_**01** _
**计数**
根据输入的表,及删除条件, 计数. 可以用来检查删除条件是否正确. 同时通过计数大致判断删除条件是否正确.
后续考虑添加功能显示待删除数据的内容(该功能也可以用DB02的SQL编辑器实现)
_**02** _
**备份**
执行计数, 如果计数>0且勾选了存在备份表. 程序会生成一个处理日志, 同时创建备份表 <原表名>_<日志ID> . 把符合条件的原表数据写入备份表.
_**03** _
**删除**
先执行备份的过程, 成功的话,执行原表的删除动作
_**04** _
**日志**
根据查询条件查询日志内容.日志中详细记录了每次操作执行的步骤及这些步骤的SQL语句,
同时日志ALV清单中提供了功能完成备份表内容的回写及备份表的清空
_**05** _
**回写**
把日志表记录的备份表内容回写到原表中,如果没有错误发生, 日志记录添加回写标记
_**06** _
**清理**
因为备份表占用了一定的空间. 当确认备份表内容可以清理后, 可以使用这个功能清理掉备份表的内容,同时日志中标记备份表被删除
_**07** _
**日志表定义**
日志表记录相关的操作记录
五
关于工具的获取
免费方式: 分享朋友圈并截图发给作者. 并注明需要源代码(需要自行创建表,屏幕,等源代码无法覆盖的对象) 还是获取安装包(内核是传输请求).
付费方式: 随意打赏文章后联系作者索取源代码或安装包
> 关于安装包的使用详见链接 无峰,公众号:ABAP开发技巧 [ SAP工具箱之 ABAP安装程序V3.0
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484922&idx=1&sn=521be895251d71a7fe35514fd45fb036&chksm=cf5dd8ccf82a51da04aeaa06f1017d618442b5bff5271f1a31011471de5e367a2f64303cff98&token=1626996525&lang=zh_CN#rd)
安装程序核心就是把传输请求导入系统, 如果安装过程出错, 可以用STMS完成导入功能.
六
免责申明
该工具使用者,如果因为失误(未勾选备份或手工清理了备份表)而导致的重要数据丢失并不可找回.责任请自负.
七
总结
数据删除工具需要使用者有一定的HANA SQL语句经验, 可以写简单或复杂WHERE 条件.
数据删除工具核心逻辑调用了HANA SQL语句快速完成数据的计数,备份,删除等操作. 这些语句可以在HANA SQL编辑器中直接执行.
工具只是把数据删除的相关操作整合到一起,记录了日志, 方便查询及执行.
备份表由数据库底层的语句创建, 数据字典中无法查看.
因为DB02中提供了SQL语句查询数据内容. 所以这个工具就没有包含显示数据内容的功能.
这可以作为后续的一个改进点,或者实现对DB02的SQL编辑器的调用.
**使用中发现什么问题或改进意见请不吝赐教**
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论