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

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:41

问题在于您的主键只有日期,时间和计数列。 添加类似"进程号"的列,该列的值对于每个并行进程都将有所不同,并且您将不再受重复行的限制。

半个程序猿
2楼-- · 2020-09-01 10:29

有一种方法可以保护作业运行多个

请参见程序RSBTONEJOB&RSBTONEJOB2

me_for_i
3楼-- · 2020-09-01 10:31

也许同时可以将它用作主键,例如GUID。 id,您可以使用类-CL_SYSTEM_UUID使用日期和时间来生成唯一键

一只江湖小虾
4楼-- · 2020-09-01 10:38
Praneeth Chintapalli 不用担心,这不会成为问题。 这将是非常独特的。
N-Moskvin
5楼-- · 2020-09-01 10:40

您对数字范围对象有经验吗? 使用数字范围对象可以轻松避免此类问题。

您可以使用事务SNRO创建数字范围对象。 您需要做的是数字范围对象中需要的数字长度domian,例如CHAR010。 接下来,您需要定义时间间隔,然后就可以开始了。

您可以使用标准功能模块NUMBER_GET_NEXT来获取范围内的下一个数字,它始终返回唯一的数字。

悻福寶寶
6楼-- · 2020-09-01 10:26

嗨普兰西斯,

数字范围 SAP使用对象为诸如财务凭证,采购订单,销售订单和许多其他类型的凭证之类的凭证生成编号。

根据数字范围间隔的定义方式,您可以提及起始数字,它将提供从起始点开始的数字(如果起始点为1,则将提供数字2,3,4。 .....)

根据您对计数重置的要求,有一些标准功能模块可用于重置数字范围间隔。 例如,函数NUMBER_RANGE_INTERVAL_INIT可以用于此目的。 因此,您可以将其包含在主程序中,或开发一个单独的程序以在12:00:01(后台作业)执行,该程序可以重置数字范围间隔。

一周热门 更多>