使用する
たとえば、アプリケーションリンク有効化(ALE)のコンテキストで2つの分散システム間でデータを転送するために、ビジネスオブジェクトインスタンスを複製するために、特定の標準化されたBAPIを実装することができます。
ビジネスオブジェクトタイプを複製する目的は、オブジェクトタイプの特定のインスタンスを1つ以上の追加システムで使用できるようにすることです。複製されたインスタンスは通常、同じオブジェクトキーで作成されます。
これらのBAPIのインターフェースは、複製されるビジネス・オブジェクトの特性と内容によって異なります。このため、ビジネスオブジェクトごとにレプリケートBAPIを実装する必要があります。
ビジネスオブジェクトインスタンスは、次の2つの方法で複製できます。
-
リクエストに応じて(「プル」)
システム「A」は、システム「B」からの複製を要求します。次に、システム「B」は、要求されたビジネスオブジェクトインスタンスをシステム「A」に複製します。
-
サブスクリプションリスト経由(「プッシュ」)
このアプローチでは、システム「B」は複製を必要とするシステムのリストを維持します。定期的に、システム「B」はビジネスオブジェクトインスタンスをリスト内のすべてのシステムに複製します。
上記のレプリケーションメソッドは両方とも、BAPIのReplicate()、 SaveReplica()、およびSaveReplicaMultiple()を使用して実装できます。これらのBAPIは両方ともクラスメソッドです(インスタンスに依存しません)。
-
特徴
-
Replicate()
BAPI Replicate()は、複製されるビジネスオブジェクトインスタンスのオリジナルを含むシステムで呼び出されます。BAPI Replicate()は、次の目的で使用されます。
-
複製するビジネスオブジェクトインスタンスを特定し、必要なデータを整理する
-
受信システムでSaveReplica()メソッドを呼び出す
BAPI Replicate()は、ビジネスオブジェクトのインスタンスのレプリケーションのみを要求できます。実際のレプリケーションは、サーバーシステムがクライアントシステムで以下に説明するSaveReplica() BAPIの1つを呼び出すときに実行されます。
以下の手順に従う必要があります。
-
複製するデータを選択します。
-
受信者を決定します。
これは、汎用モジュールALE_SYNC_BAPI_GET_RECEIVERを使用してALE分散モデルで実行されます。この汎用モジュールの詳細については、 『ALEプログラミングガイド』の「BAPIを使用した配布」のセクションを参照してください。Replicate() BAPIのパラメーターRecipientsでレシーバーの数を制限することもできます。
-
受信機を介してループし、関連するSaveReplica() BAPIを呼び出します。
-
Returnパラメーターに値を入力し、 Replicate() BAPIを完成させます。
パラメータのインポート
Replicate() BAPIのインターフェースには、以下のパラメーターが含まれている必要があります。
-
複製されるビジネス・オブジェクト・インスタンスを識別するパラメーター
これらを実装するには、たとえば、ビジネスオブジェクトタイプのキーフィールドの範囲テーブルを使用したり、レプリケートするインスタンスを選択できるようにする選択パラメータを使用したりできます。
-
パラメータ受信者
このパラメーターは、ビジネス・オブジェクト・インスタンスが複製される論理システムを識別します。このパラメータは、データエレメントBAPILOGSYSに基づいています。このパラメータが「初期」に設定されている場合、受信者はALE分散モデルを使用して決定されます。
-
変更を必要とせずに顧客がBAPIのインポートパラメータを拡張できるようにする場合は、パラメータExtensionInを作成する必要があります。
拡張パラメータと、 Replicate() BAPIでカスタマーエンハンスメントの概念を実装する方法に関する推奨事項については、 BAPIのカスタマーエンハンスメントを参照してください。
Replicate() BAPIのインターフェースには、以下のパラメーターを含めることもできます。
-
パラメータRequestChanges
このパラメータを使用すると、すでに複製されているオブジェクトインスタンスの変更を、エンジニアリング変更管理から直接コピーして、受信システムに転送できます。このパラメータは、問題のビジネスオブジェクトタイプがエンジニアリング変更管理を提供する場合にのみ使用する必要があります。
このパラメータをデータ要素RQSTCHNGで構成します。これには、次の値を指定できます。
-
”(値なし):「値なし」は標準設定であり、変更サービスにアクセスしないことを意味します。
-
‘X’:この値は、変更されたオブジェクトインスタンスが変更サービスから直接複製されることを意味します。
受信者が変更管理にアクセスすると、変更管理の変更ポインターがリセットされるため、パラメーターRequestChangesをRecipientsパラメーターと一緒に使用しないでください。その場合、他の受信者はアクセスを許可されない可能性があります。このパラメータに関するドキュメントでは、この接続を明示的に参照する必要があります。
-
-
その他のBAPI固有のインポートパラメータ。たとえば、複製するインスタンスのデータ範囲を指定します(たとえば、プラントデータの有無にかかわらず材料)。
パラメータのエクスポート
BAPI Replicate()には、次のエクスポートパラメータが含まれている必要があります。
-
メソッド呼び出しからのメッセージが呼び出し側プログラムに返されるReturnパラメーター。
-
複製されるオブジェクトインスタンスに関する情報を含むテーブル。
-
得意先が変更を必要とせずにBAPIのエクスポートパラメータを拡張できるようにする場合は、パラメータExtensionOutを作成する必要があります。
SaveReplica()およびSaveReplicaMultiple()
クラスメソッドSaveReplica()およびメソッドSaveReplicaMultiple()は、ビジネスオブジェクトインスタンスのレプリケートを生成します。これらは、意味的に同一である異なるシステムでオブジェクトを複製するために使用されます。技術的な理由により、これらのオブジェクトは異なるオブジェクトキー(オブジェクトID)で作成される場合があります。
BAPI SaveReplica()は、システムが1つのビジネス・オブジェクト・インスタンスをターゲット・システムに複製するため、またはすでに複製されている1つのビジネス・オブジェクトを変更するために使用されます。SaveReplicaMultiple () BAPIは、ターゲットシステム上の複数のビジネスオブジェクトインスタンスを複製したり、すでに複製されているいくつかのインスタンスを変更したりできます。
複製するビジネスオブジェクトタイプごとに、要件に応じて、これらのメソッドの一方または両方を実装する必要があります。
パラメータのインポート
インポートパラメータを定義するときは、次の点に注意する必要があります。
-
SaveReplica () BAPIの場合、個々のビジネス・オブジェクト・インスタンスを複製するために必要なすべてのデータをインポート・パラメーターで提供する必要があります。SaveReplicaMultiple() BAPIの場合、複数のインスタンスを複製するためのすべての関連データをインポートパラメーターで指定する必要があります。すべてのビジネス・オブジェクト情報が提供される場合がありますが、それは導出可能でなければなりません。これらはクラスメソッドであるため、BORキー項目を汎用モジュールまたはBAPIのパラメータにすることはできません。
-
オブジェクト全体ではなく、オブジェクトの一部のみを複製する場合は、他のオプションのインポートパラメータを使用できます。
-
SaveReplica()またはSaveReplicaMultiple() BAPIが呼び出されたときに、すでにレプリケートされているインスタンスを変更する場合、変更する(つまり、新しい値を受け取る)フィールドと同じままにするフィールドは次のようにする必要があります。識別されます。あなたは「選択」によってこれをすることができます:
-
BAPIには、テスト実行を実行できるようにするTestRunパラメーターも必要です。このパラメーターに値「X」が含まれている場合、BAPIは正常に実行されますが、結果は更新タスクに書き込まれません。このようにして、BAPI BapiService.TransactionCommitの実行後、すべての結果(たとえば、アプリケーションログなど)を評価できますが、BAPIはデータベースを変更していません。
パラメータのエクスポート
エクスポートパラメータを定義するときは、次の点に注意する必要があります。
-
得意先が変更を必要とせずにBAPIのエクスポートパラメータを拡張できるようにする場合は、パラメータExtensionOutを作成する必要があります。
-
メソッドコールバックからのメッセージを呼び出し元のプログラムに報告するには、パラメータReturnを作成する必要があります。同期的または非同期的に呼び出されるSaveReplica() BAPIの結果が広範囲に監視されるようにするには、 Returnパラメーターを入力するための以下の規則に従う必要があります。
-
SaveReplica() BAPIが正常に実行される場合は、次の標準化されたT100メッセージをReturnパラメーターで渡す必要があります。
次の点に注意する必要があります。
-
フィールドMESSAGE_V1には、 SalesOrderなどのビジネスオブジェクトタイプの外部名が含まれています。
-
複製されたオブジェクトを識別する情報は、MESSAGE_V2で返されます。
-
-
SaveReplica() BAPIの実行中にエラーが発生した場合、アプリケーション固有のエラーメッセージに加えて、次の標準化されたメッセージをReturnパラメーターで渡す必要があります。
さまざまなフィールドの意味は、正常に実行された場合と同じです。
-
標準化されたメッセージに加えて、Returnパラメーターにさらにメッセージを書き込むことができます。エラーが発生した場合、エラーを詳細に説明するメッセージが返されることが特に重要です。したがって、構造BAPIRET2のすべての項目を使用する必要があります。特に、 Parameter、Row、およびFieldの各フィールドに入力する必要があります。
-