CO11N中生产订单确认的用户退出?

问题描述 投票:2回答:2

我在YouTube上看了不少视频,对如何找到用户退出(增强功能?)并实现它们有基本的了解。然而,当我尝试复制我所看到的东西时,它似乎并没有工作。

我想创建一个用户退出,当一个生产订单通过CO11N被确认(closedfinished)时,这个用户退出将被执行。有人建议我放一行代码 "BREAK username"。这样我就可以验证我的代码是否在执行。什么都没有中断。我试着把在网上找到的代码中的信息放进去

MESSAGE s208(00) WITH 'TEST'.

没有任何信息显示。我已经激活了include和项目,我尝试了不同的exitsincludes,无论我做什么,似乎都没有破坏或显示消息。我已经尝试了不同的exitsincludes,无论我做什么,似乎都没有中断或显示消息。

是不是我漏掉了什么简单的东西?我试过CONFFPI05和CONFPM05。

sap abap badi
2个回答
2
投票

CONFPI05是针对工艺订单的。CONFPM05是工厂维护订单。首先你需要检查你使用的是哪种订单。我假设你使用的是生产订单。你应该检查User-Exit CONFPP05比。

总之,我建议使用BAdI WORKORDER_CONFIRM。在这个BAdI中,有一些方法可以让你发出错误信息。

从BAdI文档中可以看到。

请注意,在这些方法中,不能发送任何系统信息。唯一的例外是AT_SAVE和AT_CANCEL_CHECK方法。在这些方法中,系统消息可以被发送,但必须同时触发异常ERROR_WITH_MESSAGE(对于AT_SAVE方法)或NOT_ALLOWED(对于AT_CANCEL_CHECK方法)。

请注意,在这些方法中,"提交工作 "指令可能不会被执行,因为这会导致数据库中的数据不正确。

我强烈建议在任何User-Exit或BAdI实现中不要使用MESSAGE语句。MESSAGE语句会隐含调用COMMIT WORK,这可能会导致数据库的不一致(顺便说一下,这种情况经常发生)。

还有一点需要注意。你应该使用 检查站组 而不是直接使用BREAK-POINT或BREAK用户名。


1
投票

我检查了 文件:

CONFPI05保存确认后更新自己的数据。

另一文件 我发现了另一个警告。

在这个客户增强版中,严禁发送错误信息或其他信息,否则有可能导致数据不一致。SAP不能对此负责!

这听起来像是更新任务的变化。默认情况下,更新任务中的断点是不启用的。

你的代码是否应该在推送保存后进行处理?

如果是,你可以试试。

  • 在任何地方设置一个断点。或者尝试 /h 在数据插入过程中。
  • 在调试界面激活更新调试。enter image description here
  • 用F8继续这个过程
  • 希望你能在断点处停止。
© www.soinside.com 2019 - 2024. All rights reserved.