在后台作业中运行BAPI,且提交程序显示条目已被用户锁定

2020-08-25 08:39发布

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

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


专家们,

使用BAPI_RESERVATION_CHANGE在方法line_modify中编写MIGO检查功能的代码,在SM12中创建锁定条目

由上述代码创建的SM12条目

POST函数代码写入方法POST_Document中,显示保留已锁定用户USXXXX。

在提交程序中还调用了相同的BAPI_RESERVATION_CHANGE,以在更改后更新预订。

为了避免在BADI中提交BAPI_Commit,我创建了此Submit程序。

但是当我在后台运行相同的BAPI时,显示预订项已锁定,但在前台运行正常。

请帮助,在此先谢谢您!

此致

Saquib

line-modify.jpg (180.2 kB)

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

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


专家们,

使用BAPI_RESERVATION_CHANGE在方法line_modify中编写MIGO检查功能的代码,在SM12中创建锁定条目

由上述代码创建的SM12条目

POST函数代码写入方法POST_Document中,显示保留已锁定用户USXXXX。

在提交程序中还调用了相同的BAPI_RESERVATION_CHANGE,以在更改后更新预订。

为了避免在BADI中提交BAPI_Commit,我创建了此Submit程序。

但是当我在后台运行相同的BAPI时,显示预订项已锁定,但在前台运行正常。

请帮助,在此先谢谢您!

此致

Saquib

line-modify.jpg (180.2 kB)
付费偷看设置
发送
6条回答
N-Moskvin
1楼 · 2020-08-25 09:24.采纳回答

由于您要在两个单独的流程中更新同一文档(预订),因此第一个流程(货物移动)中的锁定条目将阻止第二个流程(后台)中对预订的更改

如果将代码移至作业的唯一原因是防止显式提交,我建议尝试将代码从后台作业移至BADI,而不要这样做。 不做承诺。 主交易(货物移动)肯定会进行一次提交以保存其自己的数据,从而隐式地将您使用BAPI所做的更改保存在数据库中。 (BAPI所做的更改与货物移动的数据位于同一LUW中)。

发布货物移动之后进行更改的另一种解决方案可能是围绕BAPI创建更新功能模块包装,并且 使用CALL FUNCTION Z ...在更新任务中从BADI调用包装函数模块。 (这只会在主程序执行提交工作时触发功能模块)

除了这些可能的解决方案之外,为什么不将您在LINE_MODIFY中所做的所有更改都捆绑到BADI实现类的全局属性中 并使用全局属性中的数据在POST_DOCUMENT方法中进行单个更新?

最诚挚的问候

Geert-Jan Klaps

半个程序猿
2楼-- · 2020-08-25 09:02

您好,Saquib ,

我个人将为您的类的全局属性创建一个结构和表类型。 结构如下:

  • 保留号
  • Items_changed(BAPI结构的表类型)
  • Items_changedx(BAPI结构的表类型)

将该全局属性添加到您的BADI实现类(ZCL_IM_MMSG_MIGO_MR_GI_CON)。

在LINE_MODIFY中:

  • 检查预订是否在您的全局中 属性
  • 否=>将新记录添加到全局属性,并像现在为实际BAPI调用那样更新items_changed和items_changedx
  • 是=>随您更新items_changed和items_changedx中的记录 现在为实际的BAPI调用执行
  • 删除BAPI调用

在POST_DOCUMENT

  • 环全局属性中
  • 将参数从全局属性传递到BAPI调用
  • 不执行提交,而是让主事务执行提交

基本上,这就是我要尝试执行的操作。

最诚挚的问候,

Geert-Jan Klaps

代楠1984
3楼-- · 2020-08-25 09:18

来自SAP文档SUBMIT:

语句SUBMIT with 加法A ND RETURN使用新的LUW打开新的SAP-LUW

,您将不会共享调用程序的锁定对象。 因此,选择"提交"不是一个好选择。

大道至简
4楼-- · 2020-08-25 09:10
Geert-Jan Klaps 给了您很多想法。您还可以:-删除 锁定条目-使用Submit调用您的程序(使用AND RETURN)-再次设置锁定条目
一只江湖小虾
5楼-- · 2020-08-25 09:16

您好Fredric,

您的意思是提交程序正在由新的SAP-LUW造成问题。 因此,建议替代方案是否可以在后台作业中创建FM而不是Submit程序。 或其他任何建议。

谢谢

Saquib

clever101
6楼-- · 2020-08-25 09:12

Hi Geert-Jan,

这是在line_modify中两次连续BAPI调用:

通过全局属性,我们可以一次发送带有最终值的任何东西吗?

谢谢

Saquib

一周热门 更多>