您的位置:首页 > 房产 > 建筑 > SAP HCM HR_MAINTAIN_MASTERDATA自带解锁功能

SAP HCM HR_MAINTAIN_MASTERDATA自带解锁功能

2024/10/6 2:23:12 来源:https://blog.csdn.net/wl8511/article/details/142291447  浏览:    关键词:SAP HCM HR_MAINTAIN_MASTERDATA自带解锁功能
导读

锁功能:在SAP HCM模块有针对人的加锁功能,今天遇到的一个问题是,人员无法被锁住,给我第一反应就是代码没有加锁,代码有问题,但是去看代码系统确实已经加锁,但是系统还是提示这个,那问题出现在哪里呢,今天给就来分析下次问题发生的情况,以后大家避免踩坑。

作者:vivi,来源:osinnovation

1 背景

中台做个前端页面,然后调用SAP封装好的逻辑展现出来,同时中台也有和SAP一样的表结构,今天在做人员异动流程的时候,SAP系统返回:SAP返回雇佣/申请人没有被锁定,第一反应就是程序中可能没有加锁,所以执行函数的时候提示这个,但是检查程序里面循环调用的时候确实有加锁,问题就奇怪在这个地方。下图是错误的提示。

图片

2 从代码开始发现问题。

因为是自定义开发的代码,所以问题肯定就在代码上,所以只有剖析代码去发现问题,首先是找到加锁的地方,从47行开始系统是已经加锁的,既然加锁为什么还是提示没锁住,所以首先不要死磕代码,可以想一个办法去验证这个问题,我想到的办法是,代码执行51行的时候去查看PA30,看看系统能不能锁住人,如果能锁住人,说明锁是没问题的,如果不能锁住,就是加锁的函数出问题,但是实际打开PA30,页面确实提示人员被锁住,所以加锁的函数是没问题,那就要继续向下看,看看是那个地方出现的雇员\申请人没有被锁住,HR的人员创建函数比较简单,就那么几个,一般是HR_INFOTYPE_OPERATION与HR_MAINTAIN_MASTERDATA。

图片

后来发现是这个函数提示,人员没被锁住,那是不是可以在这个函数之前打个断点,然后PA30查询下是是不是被锁住,后发现这个时候PA30是能查看到这个人,没有提示锁,那么问题就是在调用HR_INFOTYPE_OPERATION的时候系统已经解锁,所以只有向上去看代码,向上看只有一个标准函数HR_MAINTAIN_MASTERDATA,所以解锁就应该出现在这个函数。

图片

后来发现HR_MAINTAIN_MASTERDATA函数的481行下面的这个form就是解锁的,NO_ENQUEUE默认是传空,所以HR_MAINTAIN_MASTERDATA在执行0000、0001信息类型后系统就会自动取解锁,你要在调用HR_INFOTYPE_OPERATION的时候需要加一次锁。

图片

3 总结。

所以以后遇到这个函数HR_MAINTAIN_MASTERDATA,然后调用HR_INFOTYPE_OPERATION函数的时候记得需要再次加锁。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com