Abap 功能模块消息给出,如何查找错误?

Abap 功能模块消息给出,如何查找错误?,abap,system-error,Abap,System Error,我将FM消息调用到功能模块MRM_SRM_INVOICE_SIMULATE中,如何找到产生错误的点 谢谢需要进一步的数据为您提供适当的帮助 但是您是否已经尝试在消息语句中添加断点 为此: 通过/h+操作打开调试器 然后在菜单Breakpoints->breakpointat->breakpointat语句[Shift+F5] 在弹出窗口网格中,在第一行中写入消息,然后单击确定。 之后,您需要复制错误,调试器将在运行时到达的每个消息语句中停止 注意:可能会出现许多消息语句。您需要使

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


谢谢

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

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

为此:

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

  • 然后在菜单
    Breakpoints->breakpointat->breakpointat语句[Shift+F5]

  • 在弹出窗口网格中,在第一行中写入
    消息
    ,然后单击确定。

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


注意:可能会出现许多
消息
语句。您需要使用
F8
键逐个检查。

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

然后尝试以下操作:

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

  • 请详细描述您的问题。我有一个自定义功能模块,用于更新文档状态。在自定义FM中,调用标准FM,恢复包含错误的返回参数。在FM MRM_SRM_发票_中,模拟我在调用FM消息时看到错误消息的点。如何识别生成消息的点?给出完整的编码,整个架构似乎是错误的。要发布的代码太长,我需要知道如何截取FM消息中XMSEG表的数据项。谢谢您的建议。我在消息“KI”“222”“E”处设置了断点,但是内部XMSEG表的值没有经过任何点