使用する
構文
CALL FUNCTION func STARTING NEW TASK task
[DESTINATION {dest|{IN GROUP {group|DEFAULT}}}]
parameter list
[{PERFORMING subr}|{CALLING meth} ON END OF TASK].
追加:
1…。グループ内の宛先{グループ|デフォルト}
2. … {PERFORMING subr} | {CALLING meth} ON END OF TASK
効果
RFCインタフェースを使用して、 funcで指定されたリモート対応汎用モジュールの非同期呼び出し。追加のDESTINATIONを使用して、 destで単一の宛先を指定したり、 INGROUPを使用してアプリケーションサーバーのグループを指定したりできます。後者は、複数の汎用モジュールの並列処理をサポートしています。呼び出し側プログラムは、リモートで呼び出された関数がターゲット・システムで開始されるとすぐに、その処理が終了するのを待たずに、ステートメントCALLFUNCTIONを使用して続行されます。PERFORMINGとCALLINGを使用できますリモートで呼び出された関数が終了したときに結果をコピーするためのコールバックルーチンを指定します。funcおよびdestには、文字型のデータオブジェクトが必要です。
宛先が指定されていない場合、宛先NONEが暗黙的に使用されます。宛先NONEが使用されると、現在のユーザーセッションに対して新しいメインセッションが開かれます。非同期RFCは、他のプログラミング言語で記述された外部システムまたはプログラムとの通信をサポートしていません。
タスクには文字タイプのデータオブジェクトを指定する必要があります。このオブジェクトには、リモートで呼び出される汎用モジュールに対して、最大8桁の自由に定義可能なタスクIDが含まれています。このタスクIDは、呼び出しごとに一意である必要があり、関数を識別するためにコールバックルーチンに渡されます。各タスクIDは、独自のコンテキストで個別のRFC接続を定義します。つまり、同じタスクIDの汎用モジュール呼び出しが繰り返される場合、接続がまだ存在していれば、関連する汎用グループのグローバルデータにアクセスできます。
追加1
... DESTINATION IN GROUP {group|DEFAULT}
効果
IN GROUPを宛先として指定すると、現在のSAPシステムの事前定義されたアプリケーションサーバのグループで複数の汎用モジュールを並行して実行することができます。
にとってグループ、タイプのデータオブジェクトを指定する必要がありますRZLLI_APCLABAPディクショナリから、初期のもの、またはトランザクションRZ12で作成されたRFCサーバグループの名前を含むもの。指定する場合デフォルト、またはグループ初期の場合、現在のSAPシステムで現在使用可能なすべてのアプリケーションサーバーがグループとして使用されます。プログラム内で使用できるRFCサーバーグループは1つだけです。追加を使用した最初の非同期RFC中グループで、指定されたRFCサーバーグループが初期化されます。グループが指定されている非同期RFCごとに、最適なアプリケーションサーバが自動的に決定され、呼び出された汎用モジュールがこれに対して実行されます。
現在利用可能なリソースが不足しているために汎用モジュールをアプリケーションサーバで実行できない場合、残りのRFC例外に加えて、戻り値を割り当てることができる事前定義された例外RESOURCE_FAILUREが発生します。この例外の場合、追加メッセージ許可されていません。
追加2
... {PERFORMING subr}|{CALLING meth} ON END OF TASK
効果
この追加を使用して、いずれかのサブプログラムを指定できますsubrまたは、リリース6.20以降、メソッド覚醒剤非同期的に呼び出された汎用モジュールが終了した後に実行されるコールバックルーチンとして。にとってsubr、同じプログラムのサブプログラムを直接指定する必要があります。にとって覚醒剤、一般的なメソッド呼び出しと同じ詳細を入力できます。
指定されたサブプログラムsubrちょうど1つを持つことができます歌うタイプのパラメータclikeそれだけ。方法覚醒剤パブリックである必要があり、オプションではない入力パラメーターを1つだけ持つことができますp_taskタイプのclike。RFCインターフェースが呼び出されると、このパラメーターは、呼び出しで指定されたリモートで呼び出された関数のタスクIDとともに提供されます。タスクで。リモート機能の結果は、サブプログラムで受け取ることができますsubrまたは方法覚醒剤ステートメントRECEIVEを使用します。コールバックルーチンでは、プログラムの実行を終了またはSAPLUWを終了させるステートメントを実行することはできません。リスト出力のステートメントは実行されません。
コールバックルーチンを実行するための前提条件は、リモート関数が終了した後も、呼び出し元のプログラムが内部で利用可能であることです。次にワークプロセスが変更されたときに実行されます。プログラムが終了した場合、またはプログラムがスタック内の呼び出しシーケンスの一部である場合、コールバックルーチンは実行されません。ステートメント待つ特定またはすべてのコールバックルーチンが実行されるまで、プログラムの実行を停止するために使用できます。
CALLFUNCTION-新しいタスクの開始parameter_list
構文
… [EXPORTING p1 = a1 p2 = a2 …]
[表t1=itab1 t2 = itab2 …]
[例外exc1=n1 exc2 = n2…[メッセージの混乱]
[OTHERS=n_others]]。
効果
これらの追加は、実際のパラメータを汎用モジュールの仮パラメータに割り当て、クラスベースではない例外に値を返すために使用されます。これらの追加は、同期RFCの場合と同じ意味を持ちます。唯一の例外は、IMPORTINGおよびCHANGINGでは値をコピーできないことです。