前提条件
BAPI呼び出しの受信者は、同期BAPI呼び出しの場合と同じ方法で分散モデルで定義されます。データの分散も条件に依存している場合、BAPI間またはBAPIとメッセージタイプ間のこれらの依存関係は、レシーバーフィルターとして定義されます。
これらのレシーバーフィルターのそれぞれについて、分散モデルが定義される前に、実行時の値が条件が満たされているかどうかを決定するフィルターオブジェクトが作成されます。
手順
分散モデルのクエリは、受信者を決定し、生成されたアウトバウンド汎用モジュールを呼び出す2つのサブフェーズに分割されます。
受信者を決定する
受信者の決定を実行する前に、BAPIに割り当てられているフィルターオブジェクトを決定する必要があります。このプロセスでは、実行時にフィルターオブジェクトが認識されているかどうかを区別する必要があります。フィルタオブジェクトが実行時にわかっている場合は、受信者の決定時に直接指定できます。そうでない場合は、汎用モジュールALE_BAPI_GET_FILTEROBJECTSが使用可能です。これにより、特定のBAPIに対応するフィルタオブジェクトが抽出されます。
フィルタオブジェクトが解決されると、受信者を特定できます。非同期BAPI呼び出し中、アプリケーションプログラムは汎用モジュールALE_ASYNC_BAPI_GET_RECEIVERを使用します。このモジュールは、すべてのレシーバーを含むテーブルを返します。このモジュールは、すべてのレシーバーを含むテーブルを返します。受信者の決定が条件に関連付けられている場合は、汎用モジュールに上記で決定されたフィルタオブジェクトの値を指定する必要があります。
ALE配布モデルからリモートBAPIを呼び出すための受信者の決定は、通常、次のように表示されます。
プログラム例:非同期受信機の決定(パート1)
受信者決定の詳細については、ALEプログラミングガイドの非同期BAPIの受信者の決定を参照してください。
生成されたアウトバウンド汎用モジュールの呼び出し
受信者が決まっている場合は、ローカル受信者とリモート受信者を区別する必要があります。BAPIは、ローカルレシーバーに対して直接呼び出すことができます。リモート呼び出しの場合、処理がALE層に渡されるように、生成されたALEアウトバウンド汎用モジュールを実行する必要があります。BAPIコールのデータと許可された論理レシーバシステムの一覧は、この汎用モジュールに渡されます。以下のプログラム例は、ALEアウトバウンド汎用モジュールの呼び出しを示しています。
プログラム例:リモートBAPIの非同期呼び出し(パート2)