如何在并行作业中读取在Buffer中更新的Infotype数据?

2020-08-13 16:45发布

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

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


你好大师,

我有一个使用Decoupled Framework雇用员工的要求。 数据负载巨大,并实现了并行处理。 在调用flush方法之前,所有传入的信息类型在缓冲区中成功更新后,将雇用该员工。 每个Pernr都映射到PA0185中的唯一标识。 不能将单个标识号分配给两个对象。 因此,如果要聘用已经保存的身份证号码的新员工,我必须发出一条错误消息。 问题在于,如果两个批处理/任务中存在相同的数据并且两个数据都成功更新,则在并行批处理中更新数据时,因为在完成数据库提交之前,PA0185上的select查询不会返回两个新员工的任何记录。

任何想法如何解决该问题。

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

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


你好大师,

我有一个使用Decoupled Framework雇用员工的要求。 数据负载巨大,并实现了并行处理。 在调用flush方法之前,所有传入的信息类型在缓冲区中成功更新后,将雇用该员工。 每个Pernr都映射到PA0185中的唯一标识。 不能将单个标识号分配给两个对象。 因此,如果要聘用已经保存的身份证号码的新员工,我必须发出一条错误消息。 问题在于,如果两个批处理/任务中存在相同的数据并且两个数据都成功更新,则在并行批处理中更新数据时,因为在完成数据库提交之前,PA0185上的select查询不会返回两个新员工的任何记录。

任何想法如何解决该问题。

付费偷看设置
发送
3条回答
暮风yp
1楼 · 2020-08-13 16:56.采纳回答

您将需要将"是否要创建新记录以及该记录的插入" 的(最终)检查移至一个了解所有情况的"外部"功能。 但这还可能取决于您当前如何设置并行流程以及您愿意更改这些并行流程的数量。

  • 如果您"加载"了新记录,则可能需要使用 一个可以在每个并行进程中调用的"外部"函数,它控制"新记录"缓冲区,并且如果在缓冲区中找不到匹配项,还可以创建新记录。 例如,可以通过ABAP通道或共享对象来实现此外部功能。
  • 如果新记录很少,则可能需要将新记录的创建移到整个记录的末尾 完成所有并行过程后再进行处理。 并行进程会将有关新记录的所有信息传递给等待所有并行进程的接收主进程。 当所有过程完成后,主过程将重新检查这些新记录并仅创建必要的新记录。

因此,至少有以下三个选项:

  1. 使用ABAP通道
  2. 使用共享对象
  3. 重写编码

如果您想了解有关这三个选项的更多信息,请阅读 以下社区线程,研究提到的SAP功能,如果还有其他问题,还会再提出其他问题:

暮风yp
2楼-- · 2020-08-13 16:57

As 一批完成提交后,另一批读取更新的表的批处理将读取提交的数据(最新数据)。 例外:

  • 如果该批处理在开始时读取了整个表,则当然不会知道其他批处理正在进行的更新。 除了重新读取数据库外,没有其他解决方法。
  • 如果两个批次大约同时访问数据,那么同样会遇到同样的问题。 没有其他解决方案可以使用锁定机制来避免同时读取表。
能不能别闹
3楼-- · 2020-08-13 17:10

感谢Michael。 这非常有帮助。 将尝试这些选项并更新帖子

一周热门 更多>