点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有一个带有update语句的功能模块,并且我试图通过在update语句中保持断点来从2个会话执行相同的FM。
在表中更新的第一会话记录中,对于第二会话sy-subrc = 4,因为表中有相同的记录。
对于第二个会话,还应将记录添加到表中,并增加计数(我们将表中的count字段作为键字段)
实际上我以两个会话为例,实时有N个会话...
任何人都可以提供有效的解决方案吗...。我不想错过任何记录。
Ex:
表格如下:
日期
时间
计数
插入XYZ值WA_XYZ
同时(12:00:00),不同的作业正在尝试在XYZ中插入记录。 在这种情况下,有时WA_XYZ会有相同的记录,因此将插入一个记录而将一个记录拒绝。。但是我不想丢失任何记录。 因此表中只有一个字段称为serial ..
有一个叫做count的字段,当同一条记录试图插入时,它将增加。当时间变化(12:00:01)count从零开始时。
非常感谢,
Praneeth Ch。
嗨,
一种替代方法是从表中读取最后一条记录,并相应地增加计数器。
我还建议您在更新之前探索锁定表的方法。 您可以编写代码以继续尝试更新,直到释放锁为止。 肯定会以这种方式工作,这也是我建议的解决方案。
注意
GK
当表被锁定时,那么您 在尝试对表进行排队时将收到一条错误消息,您可以在更新周围放置一个循环,并继续尝试进行排队,直到释放锁以进行更新为止。 您可以将循环设置为尝试5次,以避免无限循环。 您尝试过这种方法吗? 还是有问题?
正如其他人指出的那样,体面的解决方案是确保默认情况下(通过使用UUID,增强现有的键结构等)为每个记录分配唯一的键。
我不喜欢依赖时间的计数器字段的想法。 在确定计数器值和插入操作之间的时间内,同一值可能已被其他进程用尽。
如果您真的 出于某种原因而更改表结构,并且不处理大量记录,您可以尝试"强力",尝试对每个记录进行插入操作,直到成功为止:
一周热门 更多>