!--a11y-->
tRFC
他の
R/3 または外部プログラム内のバックグラウンドタスクで汎用モジュールを実行することができます。 このようにして呼び出された汎用モジュールは、直ちには実行されず、 COMMIT WORK が開始されるまで待機します。接尾辞
IN BACKGROUND TASK を使用して実行されたコールについてはすべて、関連するリモートファンクションコールのメカニズムによってトランザクションの整合性が保証されるため、トランザクション RFC は名称を受け取ります。 データベースの更新の場合は、バックグラウンドタスクで実行される予定のコールに対して LUW ( 作業論理単位 ) が登録されます。 ある COMMIT WORK とその次の COMMIT WORK の間で発生し、単一の宛先が指定されている tRFC はすべて、 1 つの LUW まとめられます。 1 つの LUW 内では、すべてのコールが次のように処理されます。LUW
は、国内外を問わず一意のトランザクション ID によって識別されます。 ABAP プログラムからトランザクション ID を設定するには、汎用モジュール ID_OF_BACKGROUNDTASK を呼び出します。 ( この機能は 1 番目の非同期コールから関連 COMMIT WORK までの間に呼び出す必要があります ) 。RFC
はトランザクションに似ているため、データベース操作がすべて実行されるか、またはある汎用モジュールが強制終了されるとすべてロールバックされます。 正常に完了した LUW を再度実行することはできません。 LUW のロールバックをプログラムする必要が生じる場合もあります ( テーブルがロックされている場合など ) 。 この場合、汎用モジュール RESTART_OF_BACKGROUNDTASK を呼び出します。この汎用モジュールはロールバックを実行し、後で LUW が実行されるようにします。通常、
LUW は指定した対象システムで COMMIT WORK の直後に実行されます。 ただし、特定の時刻に実行させたい場合には、汎用モジュール START_OF_BACKGROUNDTASK を使用して開始時刻を設定することができます。前この汎用モジュールもまた、 LUW 内、つまり最初の CALL... IN BACKGROUND TASK の後から、 COMMIT WORK の前までの間に呼び出す必要があります。
トランザクション
RFC の追加情報については、 ABAP エディタのオンラインヘルプを参照してください。トランザクション型コールのステータスチェック
すべてのトランザクション
RFC はテーブル ARFCSSTATE および ARFCSDATA に格納され、各 LUW は一意の ID で識別されます。 システム汎用モジュール ARFC_DEST_SHIP はデータを対象システムに移送し、汎用モジュール ARFC_EXECUTE は格納されたファンクションコールを実行します。 いずれか一方のコールでエラーまたは例外が発生すると、先行のコールによって起動されたデータベース操作がすべてロールバックされ、適切なエラーメッセージがファイル ARFCSSTATE に書き込まれます。トランザクション
ID のステータスを確認するには、次ぎの 2 つの方法があります。汎用モジュール ID_OF_BACKGROUNDTASK は LUW の ID を戻します。 最初の CALL... IN BACKGROUND TASK から COMMIT WORK の前までの間に、このモジュールを呼び出します。
CALL FUNCTION ‘ID_OF_BACKGROUNDTASK’ IMPORTING TASK-ID = TID.
LUW
の ID を識別した後で、汎用モジュール STATUS_OF_BACKGROUNDTASK を使用してトランザクション RFC のステータスを判別することができます。
CALL FUNCTION ‘STATUS_OF_BACKGROUNDTASK’
EXPORTING TID |
= TASK-ID |
IMPORTING ERRORTAB |
= ERTAB |
EXCEPTIONS COMMUNICTATION |
= 01 |
(Connection not available: will try again later) |
|
RECORDED |
= 02 |
(ARFC is scheduled) |
|
ROLLBACK |
= 03 |
(Rollback triggered in target system) |
トランザクション SM58 を呼び出します ( ツール → システム 管理 → 監視 → トランザクション RFC ) 。 このツールは、正常に実行できなかったトランザクション RFC 、またはバッチジョブとして計画する必要のあったトランザクション RFC だけの一覧を表示します。 この一覧には、 LUW の ID とエラーメッセージも含まれています。 SM58 で表示されたエラーメッセージは、対象システムから取り出されます。 メッセージのテキストを照会するには、メッセージをダブルクリックします。
トランザクション SM58 では、トランザクション RFC をさまざまな段階で制御することができます。 プロセスの送信中にコールが異常終了する場合は、再送信を試行する前に、 ロールバック LUW 機能を使用する必要があります。 対象システムを使用できなかった場合には、 Backgr.job 機能を使用して、コール用に登録しておいたバッチジョブを照会することができます。 構文エラーなどの一時的なエラーが発生した場合にはで、 汎用モジュールの実行 を使用してコールを再実行します。
対象システム内で LUW が正常に実行されると、汎用モジュール ARFC_DEST_CONFIRM が実行され、対象システムでの正常な実行が確認されます。 最後に、テーブル ARFCSSTATE と ARFCSDATA 内のエントリが削除されます。
RFC API
‘
C ’で実装された汎用モジュールでプログラムを非同期に実行することもできます ( トランザクション SM59 の接続タイプ TCP/IP 、 宛先のタイプを参照してくだい ). 。 RFC API に関しては、汎用モジュールの実装は通常どおりに行われます。 これには、適切な機能を呼び出す汎用モジュール ARFC_DEST_SHIP および ARFC_DEST_CONFIRM が含まれています。このトピックに関する追加情報については、
RFC APIを参照してください。
