原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
锁定是传输请求管理中的一个标准功能,锁定的请求不允许其它用户在请求中添加新的任务.
> 传球请求管理详见连接 无峰,公众号:ABAP 技巧与实战 [ ABAP基础知识 传输请求(二 管理)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247487193&idx=1&sn=f94f672837e722e3b9aa35caa912b401&chksm=cf5dd3eff82a5af936c614ce075a79d3f0b203144c9521e5b9f85f63c2c252aa81c8ed5b85c6&token=1854533517&lang=zh_CN#rd)
**本文主要介绍怎么通过增强自动锁定传输请求及配置内容的锁保护**
二
传输请求锁定
通过传输请求的标准功能 请求->保护/移除保护来给传输请求添加/去除锁定. 锁定的请求,其他用户无法在其中添加任务.
三
传输请求自动锁定
标准功能中,传输请求需要手工锁定. 如果期望传输请求自动锁定, 可以简单的通过在函数TRINT_INSERT_COMM_HEADER 开头添加隐式增强
实现.
也可以考虑通过配置表来配置集团/用户的自动加锁标记,代码中判断配置结果,确定是否自动添加传输请求的锁标记(文末给出配置解决方式).
四
锁定对开发对象的影响
当开发对象包含在一个被保护的传输请求中(如图一),其它用户尝试修改该对象时,系统为了确保开发对象的一致性,
会强制在原请求中添加新的任务来记录用户对开发对象的修改.因为请求被保护,其它用户无法添加任务,其它用户也就无法修改该开发对象.(如图二报错)
图一
图二
五
锁定对配置对象的影响
配置对象不受锁定的影响.
配置内容可以同时记录在不同的请求中,锁定请求并不影响其他用户用新的请求来记录同一个配置对象.如图三,同一个配置对象的相同的配置条目可以写入两个不同的用户的请求(也可以写入同一个用户的不同配置请求中).
图三
六
新的需求
项目中如果有多个团队在同一个系统中开发/配置. 对于开发的对象,
因为系统的保护机制确保了开发对象被传输请求锁定,对同一个开发对象的修改会强制放入同一个请求. 通过锁定请求,可以让用户独占对开发对象的编辑(直到释放请求)
但是标准功能无法做到对配置对象,配置内容的独占. 因此期望通过增强实现对配置的独占.
七
配置独占的层级
从配置请求的内容组成可以看到, 配置请求有两个层级
• 配置表或视图
• 配置内容
可以考虑通过一定的授权机制在增强中检查特定的层级.
八
实现方式
_**01** _
**配置表**
通过配置表ZTCR_USR配置用户名/用户组/全局 传输请求自动加锁和检查配置锁定标记
_**02** _
**定义类**
创建类ZCL_CR_ENHENCED_CHECK
把相关逻辑整合在类中, 以便后续统一维护
_**03** _
**增强**
在函数TR_EDIT_CHECK_OBJECTS_KEYS 开头隐式增强调用类方法检查配置内容
在函数TRINT_INSERT_COMM_HEADER开头隐式增强调用类方法设置请求状态
九
检查配置锁定效果
如果当前配置的内容已经存在于一个锁定的请求中. 配置报错过程会终止,并且报错提示锁定的请求,用户,日期,时间等信息
十
总结
当一个系统中存在多个项目组同时开发/配置时, 如果多个项目组同时配置一个对象,没有及时沟通的情况下会导致配置混乱.
开发对象没问题, 系统会自动把正在修改的开发对象放入同一个请求.
本文给出一个解决配置混乱的方案:通过自动锁定传输请求及新配置写入请求时检查配置是否已经存在于已经锁定的请求中.
来解决同一个配置被多个用户同时编辑并写入请求的情况.
当发现配置被其它用户锁定,通过协商,由之前锁定的用户统一修改配置,或者释放请求,让其它人配置
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
**公众号 : syjf1976_abap**
**ABAP开发技巧**
**微信号 : 392077**
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论