使用する
得意先拡張の概念により、得意先はBAPIで自分で定義したテーブルを処理することができます。
実装に関する考慮事項
お客様がこのタイプの拡張を実装できるようにするには、少なくとも次の予防措置をBAPIに実装する必要があります。
-
BAPIインターフェースで拡張パラメーターを作成する
BAPIインタフェースの拡張パラメータ問題のBAPIの要件に応じて、BAPI汎用モジュールのインタフェースには、データインポート用の1つの拡張パラメータ( ExtensionIn)および/またはデータエクスポート用の1つの拡張パラメータ( ExtensionOut )が含まれている必要があります。
-
ビジネスアドイン(BadIs)
この場合も、各BAPI汎用モジュールには、アプリケーションによって提供される出口に加えて、最大2つの追加BAdIが含まれている必要があります。
得意先は、これらのBAdIでデータ検証またはその他の処理を実行することができます。BAPIインターフェイスとBAdIの拡張パラメータは必須です。対照的に、新しい顧客テーブルからのデータが拡張コンテナに渡される、または拡張コンテナから取得される順序は、完全に顧客次第です。結果として、BAPIテーブル拡張の使用は、上記のタイプの拡張に絶対に必要なわけではありません。ただし、拡張コンテナをより確実に入力および評価できるため、新しいテーブルのヘルプ構造を定義することをお勧めします。
例
以下の例では、BAPI TravelAgency.CreateFromDataを使用して、このタイプの拡張に関与するコンポーネントを示しています。この例では、顧客はBAPIの基礎となるSAPテーブルに加えて、独自のテーブルYSTRAVELAGを作成し、このテーブルを使用してオブジェクトTravelAgencyの追加データを保存します。
定義された顧客テーブル
得意先テーブルYSTRAVELAGの構造は次のとおりです。
対応するヘルプ構造
拡張パラメータの入力と分析を簡素化するために、各顧客テーブルには、BAPIで考慮される対応する顧客テーブルのフィールドを含むデータ構造が必要です。その過程で、次の点に注意してください。
-
このデータ構造の個々のフィールドは、customerテーブルの対応するフィールドと同じ名前とデータ型である必要があります。
-
特に、データ構造には、データレコードの一意の識別を可能にするために、顧客テーブルのすべてのキーフィールドが含まれている必要があります。
-
データ構造の名前は、データベーステーブルへの一意の割り当てを可能にするために、命名規則<namespace>BAPI_<table_name>に従う必要があります。
次の図は、この例でヘルプ構造YBAPI_YSTRAVELAGがどのように表示されるかを示しています。
拡張パラメータとBAPI
上記のように、BAPIインタフェースの2つの拡張パラメータ( ExtensionInおよびExtensionOut)を使用して、拡張機能をBAPI汎用モジュールに渡すか、汎用モジュールから呼び出し元プログラムにコンテナ形式で転送します。
BAPIテーブル拡張を使用した拡張とは対照的に、この場合、拡張コンテナにデータを配置するためのガイドラインはありません。
ヘルプ構造が上記の形式で使用されている場合、これらのコンテナのデータ構造は、顧客フィールドの追加で説明されている構造と同じです(1つの例外を除く)。唯一の違いは、構造BAPIPAREXの項目STRUCTUREが、BAPIテーブル拡張の名前ではなく、対応するヘルプ構造の名前を渡すことです。
上記の例を続けると、ヘルプ構造YBAPI_YSTRAVELAGが使用された場合、拡張コンテナーは次のようになります。
最初のデータレコードの値「BOEING747」と「LUFTHANSA」は、YBAPI_YSTRAVELAGで指定された顧客テーブルYSTRAVELAGのフィールドに書き込まれます。値が挿入されるテーブル行は、キー「4711」で識別されます。
インポートコンテナからのデータのチェックとさらなる処理、およびエクスポートコンテナの入力は、その後、BAPI開発者によって提供されたBAdIで行われます。