SAP小技巧之 改造SE16N(六 解决全选删除的BUG)

点击蓝字 关注我们

前言

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

公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值