使用する
お客様は、BAPIに関連するSAPテーブルに独自のフィールドを追加したり、事後にこれらのテーブルの既存のフィールドをBAPIに追加したりすることを望んでいると想定しています。
プロセス
この場合、最大で次の手順が必要です。
-
データベーステーブルの拡張
得意先は、BAPIに関連する追加するSAPテーブルごとに次のアクションを実行する必要があります。
-
テーブルに追加される顧客フィールドを含むデータ構造を作成します。
-
次に、上記のa)で作成されたデータ構造を含むデータベーステーブルにAPPENDを追加します。
例は、顧客フィールドの追加の下にあります。
-
-
BAPIテーブル拡張の識別および/または作成
得意先は、このタイプの拡張に使用される各SAPテーブルに対応するBAPIテーブル拡張があることを確認する必要があります。これは、BAPI拡張パラメーターに関するドキュメントを読むことによって行われます。必要なテーブル拡張がSAPから提供されていない場合は、顧客がそれを作成する責任があります。次のガイドラインを必ず守ってください。
-
BAPIテーブル拡張の命名規則は、<namespace>BAPI_TE_<table_name>です。構造名の長さの制限のためにこの命名規則に従うことができない場合は、それに応じて名前を減らしますが、コンテキストを明確に保つようにしてください。
-
各テーブルには、テーブル拡張子を1つだけ含める必要があります。したがって、複数のBAPIが同じテーブルを使用する場合、それらはテーブル拡張を共有する必要があります。
例外:
BAPIに同じデータベーステーブルを参照する2つ以上のパラメータがある場合、これらのBAPIパラメータごとに個別のBAPIテーブル拡張が作成されます。この場合の命名規則は、<namespace> BAPI_TE<table_name><consecutive_number>です。この例では、テーブル拡張の名前はYBAPI_TE_STRAVELAG1、YBAPI_TE_STRAVELAG2などになります。
-
BAPIテーブル拡張の構造には、BAPIテーブル拡張が関連するテーブルの識別されたすべてのキー項目が含まれている必要があります。テーブル拡張には、最初はキーフィールド以外のフィールドは含まれていません。
-
-
BAPIテーブル拡張の強化
APPEND手法は、上記で特定および/または作成したBAPIテーブル拡張を拡張するために使用されるようになりました。上記のように、次の場合を区別できます。
-
得意先がBAPIテーブル拡張のSAPテーブルからフィールドを追加する場合は、これらのフィールドをAPPEND構造に直接追加します。
-
顧客が自分のフィールドを対応するSAPテーブルに追加した場合は、データベーステーブルの拡張に使用したものと同じデータ構造(顧客フィールドを含む)をAPPENDに含める必要があります。
-
SAPテーブルからBAPIに既存のフィールドを追加し、顧客フィールドを追加する場合は、次の手順に従います。
-
まず、対応するテーブルの既存のすべてのフィールドをAPPEND構造に追加します。
-
次に、新しい顧客フィールドを含むINCLUDEを同じAPPEND構造に追加します。データベーステーブルと対応するBAPIテーブル拡張の両方で同じINCLUDEを使用する必要があることに注意してください。
-
-
-
BAdIのプログラミング
最初のBAdIは、データチェックを実行するオプションを顧客に提供し、2番目のBAdIは、BAPIに渡されたデータのさらなる処理を可能にします( BAPI開発者によるアクションも参照)。ここでは、標準のBAdIルールが適用されます。
-
BAPI呼び出しの前にExtensionInを入力する
拡張テーブルを含むBAPIを呼び出す前に、拡張機能がパラメータExtensionInに書き込まれていることを確認する必要があります。ExtensionInは、コンテナに書き込まれるデータレコードごとに次のように入力されます。
-
フィールドVALUEPART1には、最初にテーブル行を識別するキーが入力されます。
-
次に、フィールドVALUEPART1からVALUEPART4に、顧客フィールドの値が適切な順序で入力されます。このようにコンテナを構造化することにより、BAPIテーブル拡張の構造で単一のMOVEコマンドを使用してその内容を変換することができます。
実装の部分は、次のように疑似コーディングで記述できます。
ExtensionInパラメーターの入力と拡張BAPIの呼び出しに関する詳細なプログラミング例は、例にあります。
-
-
BAPI呼び出し後のExtensionOutの評価
特定の状況によっては、 ExtensionOutコンテナの構造への変換を実装する必要がある場合があります。