原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
前言
SE16N是SAP
ERP软件提供的一个表内容浏览/编辑器的事务代码.一般情况下,用于查看单表的数据内容.也可以用于编辑表内容.改造SE16N系列就是尝试对SE16N增强一些功能.让它变得更加好用.
**本文介绍录入数据后的内容自动补充及检查**
一个简单的需求
SE16N用来可以用来维护单表记录,我们可以通过调用SE16N_INTERFACE 快速构造一个单表维护的程序.但是这个程序往往缺少一些单表维护的要素.
示例表 ZTTS_001(入上图所示)
我们在维护示例表时,业务可能会提出下面这些需求.
• 授权检查( **详见其它SE16N改造文章** )
• 维护时,输入商品后需要看到商品描述,但是无需存储(归纳为: **获取特定对象的描述** )
• 输入商品后,从商品主档获取MATKL内容放到MATKL_N,允许修改内容(归纳为: **获取特定对象的属性** )
• ACTIVE字段默认为'X'(归纳为: **字段获取默认值** )
• 扩展结构 ZSBC001中的创建信息在输入时自动填充
• 扩展结构 ZSBC001中的修改信息在修改时自动填充(归纳为: **日志内容填充** )
• 数据保存时, 检查同一个商品不能出现重复的日期范围(归纳为: **日期定界检查** )
• 数据保存时的可配置检查(归纳为: **可配置检查** )
• 保存数据时,需要检查MATKL的内容是否符合业务的特定需求(比如MATKL必须存在与另外一个配置表中).(归纳为: **自定义检查** )
开发的选择
当业务提出上述需求的时候, 你可能就会觉得通过调用SE16N_INTERFACE的程序已经不能满足业务的需求了.
• 一个简单的办法是重新按业务需求单独开发一个程序.
• 一个复杂的办法是改造SE16N,归纳上述业务需求,通过配置实现上述功能.( **这样做的好处是:不用每一个业务的单表维护需求都去开发了,简单配置一下,就可以搞定.** )
配置实现过程
接下来就看看怎么用配置的方式实现上述功能.
_**01** _
**获取特定对象的描述**
这部分在上一篇文章中讲过.
> SE16N获取码表描述
>
> 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧之 改造SE16N(四)
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485323&idx=1&sn=830bc4bc14c530f3402d3859f1cdcc69&chksm=cf5ddabdf82a53abd5eb1d6f6f769ca22ba5fad21867a1c098ab29404d8719282ee24e0db197#rd)
但是在输入新记录时补充文本需要再额外添加一些增强,这些增强在记录录入的时候回车触发DATA_CHANGED 事件中执行, 获取码表描述.
_**02** _
**获取特定对象的属性**
获取特定对象的属性需要配置对象的字段,对象属性所在的表,及属性字段. 目前只支持单一关键字的对象,比如商品编码.
地点编码.尚未支持多关键字的对象,比如库存地点
_**03** _
**字段获取默认值**
这个配置比较简单,默认值允许固定文本, 也可以使用系统变量,配置字段的F1帮助详细描述了配置方式
_**04** _
**日志内容填充**
这部分功能无需配置.在DATA_CHANGED 事件中增强补充创建/修改相关的简单日志信息
> 这个和SM30配置表简单日志功能类似 无峰,公众号:ABAP 技巧与实战 [ SAP小技巧 自定义配置表的简单日志
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485160&idx=1&sn=7f51fd03774c712c060889f1be2cd0dd&chksm=cf5ddbdef82a52c8be5e540fd8478b874ad8df51d3e31f613d04db459bacdb39b8f0671ae33b#rd)
_**05** _
**日期定界检查**
日期定界检查需要配置一个标记,一个日期范围检查的关键字组合及需要定界检查的日期字段名称
_**06** _
**可配置的检查**
通过标记,与数据导入框架中的检查整合.示例配置了一个字段POSNR的非空检查
> 数据导入框架 无峰,公众号:ABAP 技巧与实战 [ SAP开发框架系列之 数据导入
> ](http://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484735&idx=1&sn=edc8f6365cccd5e4880cf1f40f8a4e4d&chksm=cf5dd809f82a511fa50458df27b0bb27b4601c50d927f67ce5d89998b91bb4ccbc7e6ad7525a#rd)
_**07** _
**自定义检查**
通过配置一个检查函数,在执行检查时调用,完成特殊的业务检查需求.
配置效果呈现
上述配置完成之后. 通过SE16N维护表,或者通过程序调用函数SE16N_INTERFACE 维护表.就会实现上述本文开头列出的业务需求
新增行输入物料
回车后,获取商品分类,自动设置激活标记. 获取商品描述 日志相关字段自动添加创建者等信息
保存时.配置的字段非空检查,日期定界检查生效,弹窗提示,阻止用户的保存动作.
用户解决所有问题后, 才能保存数据
(保存数据部分使用了SE16N的标准功能,其中包含了数据锁定,日志记录等信息.SE16N的标准数据修改日志表: SE16N_CD_KEY和
SE16N_CD_DATA . 这两个日志表和我们平常在商品主档中看到的变更记录不太一样. 后面会尝试改造它,显示一个类似于商品变更记录的内容 )
关于上述增强的实现
数据录入后内容补充,在图一部分添加隐式增强实现.
数据合法性检查,在图二部分添加隐式增强实现
图一
图二
关于源代码
这篇文章中涉及的源代码实在有点分散,包含了码表框架, 导入框架部分. 无法一一贴出分享, 如果你有兴趣, 可以自行尝试在上述增强位置实现本文中提到的功能.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
公众号主群加入受限, 请扫码加入副群后,向管理员申请加入主群