SAP資格過去問ならSAPnavi

NoteやStripe決済で安全にSAP過去問を購入することができます。
領収書発行可能 / 即時入手可能

SAP過去問 (SAP Exam)

Receiving Results from an Asynchronous RFC

使用する

非同期で呼び出された関数から結果を受け取るには、次の構文を使用します。

CALL FUNCTION Remotefunction

STARTING NEW TASK Taskname

PERFORMING RETURN_FORM ON END OF TASK.

呼び出された関数が完了すると、呼び出し側プログラム(などAT USER-COMMAND)の次のダイアログステップが、システムをFORMルーチンに導き、結果をチェックします。このFORMルーチンは特別な構文で構成されており、タスクの名前を参照するusingパラメーターを使用して呼び出す必要があります。

Client System

CALL FUNCTION Remotefunction

STARTING NEW TASK Taskname

DESTINATION Dest

PERFORMING RETURN_FLIGHT ON END OF TASK.

...

FORM RETURN_FLIGHT USING TASKNAME.

RECEIVE RESULTS FROM FUNCTION Remotefunction

IMPORTING F1 = a1

EXCEPTIONS SYSTEM_FAILURE MESSAGE SYSTEM_MSG.

SET USER-COMMAND 'OKCD'.

ENDFORM.

  • 汎用モジュールが結果を返さない場合は、追加PERFORMING RETURN_FORM ON END OF TASKを省略できます。

  • 非同期呼び出しが同じ宛先を持つ複数の連続する汎用モジュールを呼び出す場合は、それぞれに異なるタスク名を割り当てる必要があります。

  • で非同期RFCを開始する呼び出し側プログラムは、PERFORMINGロール領域を切り替えたり、内部モードに変更したりすることはできません。これは、非同期汎用モジュール呼び出し応答を関連するプログラムに渡すことができないためです。SUBMITまたはでロールエリア切り替えを実行できますCALL TRANSACTION

  • 非同期呼び出しを実行した呼び出し側プログラムが終了した場合、応答を期待しているにもかかわらず、非同期呼び出しからのこれらの応答は配信できません。

  • PERFORMINGフォームONENDOF TASKでWAITステートメントを使用して、以前に開始された非同期呼び出しへの応答を待つことができます。この場合、WAITは同じプログラムコンテキストにある必要があります。

  • 問題のタスクを実行するサブルーチンによって論理式の条件が満たされた場合、または指定された期間を超えた場合、プログラム処理はWAIT後に続行されます。WAITステートメントの詳細については、ABAPエディタのオンラインヘルプを参照してください。

  • キーワードRECEIVEは、汎用モジュール呼び出しでのみ発生しますCALL FUNCTION Remotefunction STARTING NEW TASK Taskname汎用モジュールが結果を返さない場合は、この部分を定義する必要はありません。

  • ステートメントの効果はSET USER-COMMAND 'OKCD'、ユーザーがコマンドフィールドに関数を入力してEnterキーを押した場合とまったく同じです。したがって、リストとカーソルの現在の位置が考慮されます。

    コールバックはサポートされていません。

    SET USER-COMMAND 'OKCD'ステートメントはコマンドを置き換えますREFRESH SCREENREFRESH SCREENはメンテナンスされていないため、使用しないでください。

    DATA: INFO LIKE RFCSI,

    * Result of RFC_SYSTEM_INFO function module

    MSG(80) VALUE SPACE.

    * Exception handling

    CALL FUNCTION 'RFC_SYSTEM_INFO'

    STARTING NEW TASK 'INFO'

    PERFORMING RETURN_INFO ON END OF TASK

    EXCEPTIONS

    COMMUNICATION_FAILURE = 1 MESSAGE MSG

    COMMUNICATION_FAILURE = 2.MESSAGE MSG.

    IF SY-SUBRC = 0.

    WRITE: 'Wait for response'.

    ELSE.

    WRITE MSG

    ENDIF.

    ...

    AT USER-COMMAND.

    * Return from FORM routine RETURN_INFO via SET USER-COMMAND

    IF SY-UCOMM = 'OKCD'.

    IF MSG = SPACE.

    WRITE: 'Destination =', INFO-RFCDEST.

    ELSE.

    WRITE MSG.

    ENDIF.

    ENDIF.

    ...

    FORM RETURN_INFO USING TASKNAME.

    RECEIVE RESULTS FROM FUNCTION 'RFC_SYSTEM_INFO'

    IMPORTING RFCSI_EXPORT = INFO

    EXCEPTIONS

    COMMUNICATION_FAILURE = 1 MESSAGE MSG

    SYSTEM_FAILURE = 2 MESSAGE MSG.

    SET USER-COMMAND 'OKCD'. "Sets OK code

    ENDFORM.

タイトルとURLをコピーしました