0

我将 FM MESSAGES GIVE 调用到功能模块 MRM_SRM_INVOICE_SIMULATE 中,如何找到产生错误的点?

谢谢

4

2 回答 2

1

需要进一步的数据才能为您提供适当的帮助。

但是您是否已经尝试在MESSAGE语句中添加断点?

去做这个:

  • /h通过+ 操作打开调试器

  • 然后在菜单中Breakpoints -> Breakpoint at -> Breakpoint at statement [Shift+F5] ABAP 调试器:如何在语句中放置断点

  • 在弹出的窗口网格中,写MESSAGE在第一行,然后单击确定。 ABAP 调试器:语句确认弹出窗口中的断点

  • 之后,您需要复制错误,调试器将在运行时到达的每个 MESSAGE语句中停止。

注意:可能有许多 MESSAGE语句达到。F8您需要使用密钥一一检查。

于 2020-12-14T17:51:11.043 回答
0

从显示的消息列表中提取消息 IDMSGID和消息编号MSGNO

然后尝试以下操作:

  1. 尝试通过静态代码分析找到消息触发的位置:在事务SE91中,导航到由MSGID和给出的消息MSGNO,然后对单个消息执行 Where-Used-List。这将为您提供发出该消息的代码位置。在每个地方放置一个断点并重复导致该消息的事务。系统应该在消息发出的地方停止。
  2. 一些开发人员动态发布消息(使用变量 forMSGIDMSGNO),因此静态代码分析无法找到发布消息的点。这很糟糕,但还有另一种方法可以找到它。MESSAGE@cape_bsas 的答案中描述的断点 at 语句通常停止得太频繁,但您可以在 field 上放置一个观察点SY-MSGNO,指示调试器在SY-MSGNO假定给定消息号后立即停止。
于 2020-12-16T09:09:54.843 回答