使用する
システム負荷のバランスの取れた分散を実現するために、宛先追加を使用して、任意のアプリケーションサーバまたはSAPシステムの事前定義されたアプリケーションサーバグループの並列タスクで汎用モジュールを実行することができます。
詳細については、次のサブセクションで説明します。
-
並列処理の前提条件
-
並列処理のための汎用モジュールとABAPキーワード
-
並列処理におけるリソースの管理
プロセス
並列処理の前提条件
並列処理を実装する前に、アプリケーションとSAPシステムが次の要件を満たしていることを確認してください。
-
論理的に独立した作業単位:
並行して実行されるデータ処理タスクは、タスクの他のインスタンスから論理的に独立している必要があります。つまり、タスクは、並列処理されている同じデータ・セットの他のレコードを参照せずに実行でき、タスクは、並列操作の他の結果に依存しません。たとえば、並列処理は、順次処理する必要があるデータや、あるデータ項目の処理がデータの別の項目の処理に依存しているデータには適していません。定義上、データが並列処理で特定の順序で処理されること、または特定の結果が処理の特定の時点で利用可能になることは保証されません。
-
ABAP要件:
-
呼び出す汎用モジュールは、外部呼び出し可能としてマークされている必要があります。この属性は、汎用モジュール定義(トランザクションSE37)のリモート機能呼び出しサポート項目で指定されます。
-
呼び出された汎用モジュールには、宛先”BACK”への関数呼び出しが含まれていない場合があります。
-
非同期RFC呼び出しを行った後、呼び出し側プログラムを新しい内部セッションに変更しないでください。つまり、CALL FUNCTION STARTING NEW TASKを使用した後は、このようなレポートでSUBMITまたはCALLTRANSACTIONを使用しないでください。
-
CALL FUNCTION STARTING NEW TASK DESTINATIONINGROUPキーワードを使用して外部プログラムを開始することはできません。
-
-
システムリソース:
並列ジョブからのタスクを処理するには、SAPシステムのサーバーに少なくとも3つのダイアログワークプロセスが必要です。また、並列処理システムのワークロード基準を満たしている必要があります。ディスパッチャーキューが10%未満であり、並列ジョブからのタスクを処理するために少なくとも1つのダイアログワークプロセスが解放されています。
並列処理におけるリソースの管理
以下の宛先追加を使用して、SAPシステムで汎用モジュール(非同期呼び出し)の並列実行を実行します。
事前定義されたアプリケーションサーバーのグループ:
CALL FUNCTION Remotefunction STARTING NEW TASK Taskname
DESTINATION IN GROUP Groupname
現在利用可能でアクティブなすべてのアプリケーションサーバー:
CALL FUNCTION Remotefunction STARTING NEW TASK Taskname
DESTINATION IN GROUP DEFAULT
この追加により、現在使用可能なリソース(ワークプロセス)の量が決まります(つまり、すべてのサーバーまたはアプリケーションサーバーのグループで、ログインサーバーと同等)。各アプリケーションサーバーで非同期呼び出しを実行するために使用できるリソースは、現在のシステム負荷によって異なります。
アプリケーション開発者は、本番システム(つまり顧客のシステム)でのRFCグループの可用性に責任があります。RFCグループを更新する方法の詳細については、負荷分散のためのグループ宛先の更新を参照してください。
使用可能なリソースを決定した後、使用可能なアプリケーションサーバーで非同期呼び出しが実行されます。その特定の時間に使用可能なリソースがない場合、システムは例外ルーチンRESOURCE_FAILUREを実行します(追加の例外を参照)。非同期汎用モジュール呼び出しの場合、この例外はアプリケーションプログラムによって処理される必要があります。
RFCグループで使用可能なリソースを決定するプロセスは次のとおりです。
最初に、システムは関連するアプリケーションサーバーのディスパッチャキューの長さを決定します。全長の10%を超える場合、サーバーはリソースを使用できません。小さい場合、システムは現在の空きダイアログプロセスの数から2を引いた数を使用可能にします(システムや管理プログラムへのログオンなど、他の目的のための予約インスタンスとして)。したがって、 RFC並列処理を考慮に入れる場合、1つのアプリケーションサーバーには少なくとも3つのダイアログプロセスが必要です。
例