2017-06-04 103 views
1

我是SAP ABAP的初學者。我正在調試一個異步RFC(並行處理)。我已經在RFC的調用部分放了一個斷點,在RFC內部有一個外部斷點,並且在任務結束時通過執行調用了一個外部斷點。我能夠調試RFC FM。如何調試異步RFC - 開始新任務...在任務結束時執行...?

另一個會話打開。但是我無法調試任務結束後調用的執行。 RFC調試完成後,控制權返回到FM的調用點。它不會進入表單。當所有的迭代完成後,最後它進入執行。爲什麼這樣?不應該執行並行執行嗎?

裏面的執行,我寫了像RECEIVE RESULTS FROM FUNCTION XXX。但是從RFC返回後,調試器控件不會進入執行程序。

+1

請閱讀[在什麼情況下,我可以添加「緊急」或其他類似的短語到我的問題,以獲得更快的答案?](https://meta.stackoverflow.com/q/326569) - 摘要是這不是解決志願者問題的理想方式,而且可能對獲得答案起反作用。請不要將這添加到您的問題。 – halfer

+0

我會照顧它的。謝謝 – user3757558

回答

1

你給對整個程序流程的信息很少,但有可能是有關你的情況documentation的一部分:

一種用於註冊的回調例程的執行前提是 是當 終止遠程功能時,調用程序仍然存在於其內部會話中。然後執行此處 工作過程的下一次更改在滾入。如果程序是 終止或作爲呼叫序列的一部分位於堆棧上,則不執行 回調例程。

[...]

當回調例程執行的,可以明確地編程 或隱式地到達時間:

  • 聲明等待異步任務是一個明確的規劃。如條件所述,此語句更改 工作進程,並因此執行此次註冊最多爲 的回調例程。它等待儘可能多的註冊例程結束,直到滿足條件(最大等待時間可以被限制)。只要在當前程序中需要遠程功能 的結果,建議使用明確的 編程。

  • 如果遠程函數的結果沒有在當前程序中所需的,在該回調例程被執行 也可以通過工作過程的(隱式變更爲 例如來確定,在結束的時間對話步驟)。對於 示例,這可能是一個好主意,在不需要使用WAIT的GUI場景中。在 這種情況下,必須確保工作過程在 程序結束之前發生變化。還有一種風險是,如果工作進程 被隱式改變,並不是所有回調例程都被及時註冊。

很可能是程序發出呼叫,並在註冊回調例程終止或不發出WAIT FOR ASYNCHRONOUS TASKS使回調僅在下卷中執行。


重讀你的問題,你似乎認爲回調例程將在平行於已註冊它的程序執行。事實並非如此,ABAP不是多線程的。

+0

我不清楚。我的程序沒有終止。爲什麼從RFC返回後,我的回調函數沒有執行? – user3757558

+0

有沒有我需要考慮的調試選項?像系統調試器等。需要清晰的想法 – user3757558

+1

是的。不,也許。提供有關實際計劃的更多信息,最好以任何人都能理解該設置的形式提供。 – vwegert