原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
一
前言
前期写过一些改造SE16N的文章.
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧之 改造SE16N(三)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485310&idx=1&sn=553de71b38de7b5ced176b766ccb67ad&chksm=cf5dda48f82a535eb1a46435f08ec10410d7a0c8a0357117442a5e363f56e27894b464003307&token=151789507&lang=zh_CN#rd)
之后很久没有再找到SE16N的改进点. 最近用户提到了一个关于使用SE16N维护配置表的改进点, 思路还不错.因此又对SE16N做了一个新的小改进
本文主要介绍单值选择条件自动填入新增的记录
二
赘述
一般情况下, 可以通过事务代码 SE16N 或者函数 SE16N_INTERFACE进入单表创建/维护/显示功能.
这个功能很好用,自开发的单表(配置表维护)都可以使用这个功能,当然,如果应用之前文章介绍的改进后,会更加好用.
也可以增强配置树调用SE16N维护表内容( SE16N自带了写入请求功能, 只不过需要手工写入请求)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 打造全新的配置体系(二 实现方式)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486967&idx=1&sn=5530ce1545477c5b23aa0d04be2c9860&chksm=cf5dd0c1f82a59d78d1d14127d57b5f6796c703f557ef681c52d416d06387148886682a28a8f&token=151789507&lang=zh_CN#rd)
三
业务需求
在一个ALV单击跳转到SE16N显示/维护 单表内容的功能中. 用户提到,如果表中没有记录,新增记录时,应该自动带出关键字
四
业务需求归纳
标准事务代码SE16N, 或者函数SE16N_INTERFACE 传递的选择条件, 如果是单值, 在新增记录时,需要自动设置这些单值的选择内容.
五
实现效果
实现效果如下, 任意选择条件, 只要是单值条件
新增记录
回车后 自动带入单值的选择条件内容.
后面创建日期,创建时间,创建人信息不允许修改,自动填入
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧之 改造SE16N(五)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485340&idx=1&sn=76031e8ad8841af477b785d2dc6ab7c6&chksm=cf5ddaaaf82a53bc032358b180b079fc6fcea060be2d6374cd6583b6b9c0fb08d296571510d6&token=151789507&lang=zh_CN#rd)
六
实现方式
该增强无法在点击新增按钮后立即实现,因为没有跟踪到点击新增按钮创建空白行的代码(貌似该逻辑无法跟踪). 理论上,功能放在那里更加合适.
因此,把该功能放到了回车动作中. 回车动作触发了事件
handle_data_changed_finished
标准SE16N功能的ALV中貌似没有注册这个事件, 需要在隐式增强中注册该事件及回调类方法
实现逻辑比较简单 通过MEMORY ID 传递选择条件, 函数SE16N_INTERFACE开头增强传递. 在DATA_CHANGED
事件中获取传递的选择条件. 如果是单值, 对于ALV新增行补充该内容)
需要注意的是, 标准SE16N 界面的选择条件写入 IT_OR_SELFIELDS 内表. 但是函数传递的选择条件 在内表 IT_SELFIELDS中
七
总结
这个优化只是一个很简单的功能, 设置后,可以简化使用SE16N创建新记录后的值输入. 把存在单值限制的设置默认值.
SE16N其他优化文章中还提到过其他默认值设置方式
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧之 改造SE16N(五)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485340&idx=1&sn=76031e8ad8841af477b785d2dc6ab7c6&chksm=cf5ddaaaf82a53bc032358b180b079fc6fcea060be2d6374cd6583b6b9c0fb08d296571510d6&token=151789507&lang=zh_CN#rd)
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论