为什么ABAP需要SET UPDATE TASK LOCAL

如果在调用标准BAPI之后,COMMIT WORK AND WAIT语句不等待所有V1更新模块的执行,该怎么办。



更新程序同步问题



SAP R / 3系统使用更新模块以事务方式存储与主数据相关的其他数据。您可以在此处阅读有关此内容的更多信息



为了保证数据的一致性,保存后必须等待V1类型模块的执行。通常,这是通过执行COMMIT WORK AND WAIT命令来实现的。

一些标准的BAPI功能模块在文本中调用COMMIT WORK。执行此类FM之后,您将无法使用任何简单命令来验证保存过程是否已完成。为了解决此问题,一些程序员将一些复杂的查询写入VB表或等待不合理的n秒。一切都更加简单。



SET UPDATE TASK LOCAL可以解救



简而言之,它将为V1更新模块启动本地执行模式。从调用操作员到LUW当前DB结束之间注册的V1更新模块,将激活该模式。此外,V1模块:



  • 保存在ABAP内存中,而不保存在VB更新表中;
  • 在当前进程中执行,而不是并行执行;
  • 通过COMMIT WORK语句同步。


也就是说,当调用COMMIT WORK时,程序将等待直到执行本地注册的V1更新模块。差异显示在图中:







如果无法控制COMMIT WORK语句并且想要等待所有V1模块等待某个过程完成,则SET SET UPDATE TASK LOCAL总计很有用。



All Articles