由于许多作业试图执行相同的更新命令,因此更新表在后台失败。

2020-09-01 10:15发布

         点击此处--->   EasySAP.com群内免费提供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。

         点击此处--->   EasySAP.com群内免费提供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。

付费偷看设置
发送
10条回答
哎,真难
1楼-- · 2020-09-01 10:31

嗨,

一种替代方法是从表中读取最后一条记录,并相应地增加计数器。

我还建议您在更新之前探索锁定表的方法。 您可以编写代码以继续尝试更新,直到释放锁为止。 肯定会以这种方式工作,这也是我建议的解决方案。

注意

GK

吹牛啤
2楼-- · 2020-09-01 10:15

当表被锁定时,那么您 在尝试对表进行排队时将收到一条错误消息,您可以在更新周围放置一个循环,并继续尝试进行排队,直到释放锁以进行更新为止。 您可以将循环设置为尝试5次,以避免无限循环。 您尝试过这种方法吗? 还是有问题?

歪着头看世界
3楼-- · 2020-09-01 10:30
Praneeth Chintapalli 理想的解决方案可确保您的关键字段始终唯一 不管从多个端更新表。 如建议继续添加一个字段(可以是递增的序列号),现在您将拥有四个字段作为主键组合,这将永远不会干扰或与其他更新冲突,因为键组合始终是唯一的。 问候
SC_Yao
4楼-- · 2020-09-01 10:35

正如其他人指出的那样,体面的解决方案是确保默认情况下(通过使用UUID,增强现有的键结构等)为每个记录分配唯一的键。

我不喜欢依赖时间的计数器字段的想法。 在确定计数器值和插入操作之间的时间内,同一值可能已被其他进程用尽。

如果您真的 出于某种原因而更改表结构,并且不处理大量记录,您可以尝试"强力",尝试对每个记录进行插入操作,直到成功为止:

"准备要插入的记录
 ...
 
 LOOP AT记录ASSIGNING FIELD-SYMBOL()。
  
   做。
    
     插入custom_table FROM记录。
    
     如果sy-subrc = 0。
       成功
       出口。
     其他。
       "已经存在,增加数量
       <记录>-计数= <记录>-计数+ 1。
     万一。
    
     如果 -count> maximum_count。
       "处理达到最大计数(例如错误处理和退出)
       ...
     万一。
    
   ENDDO。
  
 结局。
 

一周热门 更多>