更新任务中的ABAP Z表锁垄断了锁

2020-09-13 16:08发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在保存销售订单时,我正在调用更新...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


在保存销售订单时,我正在调用更新任务来更新Z表。 我正在遍历一些标准SAP记录,然后在每次迭代中使用wait参数使Z表入队,并删除记录/添加新记录,然后最终出队。

我发现的是,当多个更新任务正在运行时,第一个更新任务将一遍又一遍地锁定和解锁表,直到它处理完所有记录为止,第二个更新任务才能获得该锁。 这实际上使第二个更新任务一直等到第一个更新任务完成,因为我希望他们在第一个任务释放它时共享锁。

有人可以为我指出要检查/更新的内容的正确方向,以使此事情发生。 我最初曾尝试完善lock参数,但由于某些修改/删除where子句而继续陷入死锁,除非我锁定了整个表。

谢谢!

-克里斯

10条回答
愤怒的猪头君
2020-09-13 16:35

共享锁是什么意思? 如果它被锁定并且您想再次锁定它,通常您会得到sy-subrc 4。

如果您要在更新任务中调用函数,那么您有不同的应用服务器可能会很重要。 但是,如果您有多个任务正在运行并且它们并行运行,则可能会出现问题,将双端队列填充到其他应用服务器需要花费时间。 因此,当程序到达编码点时,另一个应用服务器仍然认为它已被锁定。

我读到正常的行为是第二​​个任务等待直到锁被释放(在enque中使用wait语句时)。

致谢

Stefan

一周热门 更多>

相关问答