点击蓝字 关注我们
前言
SE16N是SAP ERP软件提供的一个表内容浏览/编辑器的事务代码.一般情况下,用于查看单表的数据内容.也可以用于编辑表内容.改造SE16N系列就是尝试对SE16N增强一些功能.让它变得更加好用.
本文介绍了SE16N全选删除数据的BUG及修补方式
问题描述
你是否也碰到过这个问题:
用SE16N删除数据的时候,如果查询出来的条目比较多. 例如1000行.
通过标准功能的全选,删除. (如下图)
发现这个全选并非我们想象的全选
我们想象的是查询的1000条记录都被删除. 但是系统似乎只是全选了当前屏幕的数据.删除也只是删除了当前屏幕的数据
选择重复很多次这个操作才能把查询出来的1000条记录全部删除. 这是一个痛苦的过程.
问题分析
进一步的操作发现系统全选的也并非当前屏幕的.
如果多次使用PAGE DOWN按钮显示完整查询表的所有内容后,此时全选,删除就能把这1000行删除掉.
所以猜测标准逻辑的处理原理如下:
当SE16N查询的数据量过大时,为了性能考虑, 服务器不会把这1000条全部推送给GUI(估计有个参数控制了这个条目数或内存数).当用户确实需要查看剩余的数据时, 服务器才会把翻页翻到的数据推送给GUI.
有点像大家使用搜索引擎所有关键字的时候,每次只返回一页的数据, 点击下一页时,才会继续请求数据,返回下一页的内容.
手机浏览器在此基础上有点改进: 点击下一页时,会把保留历史页的内容,同时补充下一页的内容.
全选删除并非删除所有查询的数据,而是所有查询后推送到GUI的缓存数据
所幸.这个机制只对ALV的标准功能按钮有效, 开发自定义添加的ALV按钮功能不受这个机制的影响.
标准解决方案
SAP似乎已经发现这个问题,从操作逻辑上来讲. 这算是一个BUG. 新版的GUI770中已经改进了这个处理机制,表现为 GUI770 版本中. SE16N中的全选,删除可以全部删除.无需多次翻页. 但是GUI770中的大数据量的ALV呈现性能似乎也下降了很多.
有得必有失,就看你更关注的是什么了.
增强方案
如果你已经安装了GUI 770, 那么可以无视下面的内容了.
怎么通过增强方式解决SAP GUI 760以下版本中SE16N全选,删除不生效的BUG.
01
添加按钮
增强SE16N的ALV.添加按钮 <全选> <删除>.
增强点: 程序 LSE16NLCL
METHOD handle_toolbar 方法末尾隐式增强
问
为什么不添加 取消全选按钮?
任意点击ALV中的任意单元格即可取消全选. 无需再通过按钮实现.
答
02
添加按钮功能
增强SE16N的ALV中新加按钮的功能
增强点: 程序 LSE16NLCL
METHOD handle_user_command. 方法末尾隐式增强
通过特定逻辑赋予这个全选,删除按钮功能.实现数据的删除
想看源代码的, 请移步到文末查看.
03
效果验证
SE16N显示数据后, 使用新增的全选按钮选择所有数据.
点击删除按钮后,所有的内容都会被删除.
此时和标准逻辑一样. 需要点击保存按钮确认删除,同时删除信息也会被记录在日志表SE16N_CD_DATA中
BINGO. 问题被完美解决
约定
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
(如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)
公众号 : syjf1976_abap
ABAP开发技巧
微信号 : 392077
公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群