Debugging 如何调试异步RFC-启动新任务…在任务结束时执行?

Debugging 如何调试异步RFC-启动新任务…在任务结束时执行?,debugging,abap,saprfc,Debugging,Abap,Saprfc,我是SAP ABAP的初学者。我正在调试一个异步RFC(并行处理)。我在RFC的调用部分放置了一个断点,在RFC内部放置了一个外部断点,在任务结束时通过perform调用了一个外部断点。我能够调试RFC FM 另一个会议开始。但我无法调试任务结束后调用的perform。调试RFC后,控件返回FM的调用点。它不在表单内部。当所有的迭代都完成时,最后它进入到perform中。为什么会这样?表演不应该并行执行吗 在perform中,我编写了接收来自函数XXX的结果。但是,从RFC返回后,调试器控件不会

我是SAP ABAP的初学者。我正在调试一个异步RFC(并行处理)。我在RFC的调用部分放置了一个断点,在RFC内部放置了一个外部断点,在任务结束时通过perform调用了一个外部断点。我能够调试RFC FM

另一个会议开始。但我无法调试任务结束后调用的perform。调试RFC后,控件返回FM的调用点。它不在表单内部。当所有的迭代都完成时,最后它进入到perform中。为什么会这样?表演不应该并行执行吗


在perform中,我编写了接收来自函数XXX的结果。但是,从RFC返回后,调试器控件不会进入执行中。

关于整个程序流程,您只提供了很少的信息,但其中有一部分可能与您的案例有关:

执行已注册回调例程的先决条件是 调用程序仍然存在于其内部会话中 远程功能终止。然后在此处执行 滚入过程中工作流程的下一次更改。如果节目是 作为调用序列的一部分终止或位于堆栈上 不执行回调例程

[……]

执行回调例程的时间可以编程 显式或隐式访问:

  • 语句WAIT FOR ASYNCHRONOUS TASKS用于显式编程。根据条件指定,此语句将更改 工作进程,从而执行注册到的回调例程 这一次。它等待尽可能多的注册例程结束,直到 满足条件(可限制最大等待时间)。明确的 只要远程功能的结果正确,建议进行编程 在当前程序中是必需的

  • 如果当前程序中不需要远程函数的结果,则为执行回调例程的时间 也可以通过工作流程的隐性变化来确定(例如 例如,在对话框步骤的末尾)。这可能是一个好主意,因为 例如,在不需要使用等待的GUI场景中。在里面 在这种情况下,必须确保工作流程在 节目结束了。如果工作流程是 隐式更改,并不是所有回调例程都及时注册

发出调用并注册回调例程的程序可能已终止或未发出
等待异步任务
,因此回调仅在下一次转入时执行



重新阅读您的问题,您显然假设回调例程将与注册它的程序并行执行。事实并非如此,ABAP不是多线程的。

请阅读-总结是,这不是解决志愿者问题的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。如果需要,我会小心处理。谢谢,我不清楚。我的程序没有终止。为什么我的回叫例程在从RFC返回之后没有被执行?有没有我需要考虑的调试选项?比如系统调试器等等。需要一个清晰的思路。不,也许吧。提供更多关于实际程序的信息,最好以任何人都能理解设置的形式提供。