2

我在 YouTube 上观看了很多视频,并且对如何找到用户出口(增强功能?)并实施它们有了基本的了解。但是,当我尝试复制我所看到的内容时,它似乎不起作用。

我希望创建一个用户出口,当生产订单通过 CO11N 确认(关闭/完成)时执行。有人建议我输入一行代码“BREAK 用户名”。这样我就可以验证我的代码是否正在触发。什么都没有。我试过从网上找到的代码中输入一条消息

MESSAGE s208(00) WITH 'TEST'.

不显示任何消息。我已经激活了包含和项目。我尝试了不同的退出/包含,无论我做什么,似乎都没有破坏或显示消息。

我缺少一些简单的东西吗?我试过 CONFPI05 和 CONFPM05。

4

2 回答 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 用户名。

于 2015-09-26T08:08:54.067 回答
1

我检查了文档

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

另一个文档中,我发现了另一个警告:

在此客户增强中,严禁发送错误消息或其他消息,否则存在数据不一致的危险。SAP 对此不承担任何责任!!

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

推送保存后是否应该处理您的代码?

如果是,您可以尝试什么:

  • 在任何地方设置断点。/h或者在数据插入期间尝试。
  • 在调试屏幕中激活更新调试: 在此处输入图像描述
  • 使用 F8 继续该过程。
  • 希望你停在你的断点处。
于 2015-09-25T21:17:44.213 回答