如何调试异步RFC - 开始新任务...在任务结束时执行...?

问题描述:

我是SAP ABAP的初学者。我正在调试一个异步RFC(并行处理)。我已经在RFC的调用部分放了一个断点,在RFC内部有一个外部断点,并且在任务结束时通过执行调用了一个外部断点。我能够调试RFC FM。如何调试异步RFC - 开始新任务...在任务结束时执行...?

另一个会话打开。但是我无法调试任务结束后调用的执行。 RFC调试完成后,控制权返回到FM的调用点。它不会进入表单。当所有的迭代完成后,最后它进入执行。为什么这样?不应该执行并行执行吗?

里面的执行,我写了像RECEIVE RESULTS FROM FUNCTION XXX。但是从RFC返回后,调试器控件不会进入执行程序。

+1

请阅读[在什么情况下,我可以添加“紧急”或其他类似的短语到我的问题,以获得更快的答案?](https://meta.*.com/q/326569) - 摘要是这不是解决志愿者问题的理想方式,而且可能对获得答案起反作用。请不要将这添加到您的问题。 – halfer

+0

我会照顾它的。谢谢 – user3757558

你给对整个程序流程的信息很少,但有可能是有关你的情况documentation的一部分:

一种用于注册的回调例程的执行前提是 是当 终止远程功能时,调用程序仍然存在于其内部会话中。然后执行此处 工作过程的下一次更改在滚入。如果程序是 终止或作为呼叫序列的一部分位于堆栈上,则不执行 回调例程。

[...]

当回调例程执行的,可以明确地编程 或隐式地到达时间:

  • 声明等待异步任务是一个明确的规划。如条件所述,此语句更改 工作进程,并因此执行此次注册最多为 的回调例程。它等待尽可能多的注册例程结束,直到满足条件(最大等待时间可以被限制)。只要在当前程序中需要远程功能 的结果,建议使用明确的 编程。

  • 如果远程函数的结果没有在当前程序中所需的,在该回调例程被执行 也可以通过工作过程的(隐式变更为 例如来确定,在结束的时间对话步骤)。对于 示例,这可能是一个好主意,在不需要使用WAIT的GUI场景中。在 这种情况下,必须确保工作过程在 程序结束之前发生变化。还有一种风险是,如果工作进程 被隐式改变,并不是所有回调例程都被及时注册。

很可能是程序发出呼叫,并在注册回调例程终止或不发出WAIT FOR ASYNCHRONOUS TASKS使回调仅在下卷中执行。


重读你的问题,你似乎认为回调例程将在平行于已注册它的程序执行。事实并非如此,ABAP不是多线程的。

+0

我不清楚。我的程序没有终止。为什么从RFC返回后,我的回调函数没有执行? – user3757558

+0

有没有我需要考虑的调试选项?像系统调试器等。需要清晰的想法 – user3757558

+1

是的。不,也许。提供有关实际计划的更多信息,最好以任何人都能理解该设置的形式提供。 – vwegert