使用する
BAPI Delete()は、SAPビジネスオブジェクトタイプのインスタンスをデータベースから削除します。同様に、BAPI DeleteMultiple()は、ビジネスオブジェクトタイプのいくつかのインスタンスを削除します。Delete() BAPIは、常にインスタンス全体(たとえば、マテリアルマスター全体)を削除する必要があります。
対照的に、BAPI Cancel()は、ビジネス・オブジェクトのインスタンスをキャンセルします。つまり、キャンセルされるインスタンスはデータベースに残り、キャンセルされる追加のインスタンスが作成されます。詳細については、 Cancel()BAPIのプログラミングを参照してください。
Delete() BAPIは、削除フラグを設定することにより、すぐにまたは後で削除できます。BAPIで使用する削除のタイプは呼び出し元とは無関係であるため、BAPIインターフェースにこれらの詳細を含める必要はありません。
BAPI Undelete()は、特定のオブジェクトに設定されている削除フラグをリセットするために使用されます。
BAPIのDelete()とUndelete()はインスタンスメソッドですが、BAPIのDeleteMutliple()とUndeleteMutliple()はクラスメソッド(インスタンスに依存しません)です。
特徴
Delete()およびUndelete() BAPIのインターフェースは同一である必要があります。
BAPIインターフェース
パラメータのインポート
インポートパラメータを定義するときは、次の点に注意する必要があります。
-
単一のインスタンスを削除する場合は、関連するビジネスオブジェクトタイプのキー項目ごとに、汎用モジュールにインポートパラメータを登録する必要があります。パラメータの名前は、BORのオブジェクトキーの名前と同じである必要があり、同じデータ要素を持っている必要があります。
複数のインスタンスを削除する場合は、ビジネスオブジェクトタイプのキー項目のテーブルを作成する必要があります。これは、範囲テーブルを使用して行うことができます。
-
BAPIには、テスト実行を実行できるようにするTestRunパラメーターも必要です。このパラメーターに値「X」が含まれている場合、BAPIは正常に実行されますが、結果は更新タスクに書き込まれません。このようにして、BAPI BapiService.TransactionCommitの実行後、すべての結果(たとえば、アプリケーションログなど)を評価できますが、BAPIはデータベースを変更していません。
-
変更を必要とせずに顧客がBAPIのインポートパラメータを拡張できるようにする場合は、パラメータExtensionInを作成する必要があります。拡張パラメータと、顧客拡張の概念をDelete() BAPIに実装する方法に関する推奨事項については、 BAPIに対する顧客拡張を参照してください。
-
BAPI DeleteMultiple()を使用する場合、選択基準を使用して、削除するオブジェクトインスタンスを選択できる必要があります。これを行うには、選択パラメータを作成できます。
-
BAPI DeleteMultiple()を使用する場合、選択基準を使用して、削除するオブジェクトインスタンスを選択できる必要があります。これを行うには、選択パラメータを作成できます。
パラメータのエクスポート
エクスポートパラメータを定義するときは、次の点に注意する必要があります。
-
得意先が変更を必要とせずにBAPIのエクスポートパラメータを拡張できるようにする場合は、パラメータExtensionOutを作成する必要があります。拡張パラメータと、顧客拡張の概念をDelete() BAPIに実装する方法に関する推奨事項については、 BAPIに対する顧客拡張を参照してください。
-
メソッドコールバックからのメッセージを呼び出し元のプログラムに報告するには、エクスポートパラメータReturnを作成する必要があります。同期的または非同期的に呼び出されるDelete() BAPIの結果が広範囲に監視されるようにするには、 Returnパラメーターを入力するための以下の規則に従う必要があります。
-
Delete() BAPIが正常に実行された場合、つまり目的のインスタンスが削除された場合は、次の標準化されたT100メッセージをReturnパラメーターで渡す必要があります。
次の点に注意する必要があります。
-
フィールドMESSAGE_V1には、 SalesOrderなどのビジネスオブジェクトタイプの外部名が含まれています。
-
後続の呼び出しで削除されるオブジェクトにアクセスできるキーは、フィールドMESSAGE_V2に返されます。これは、外部番号割当を使用する場合は外部キー、内部番号割当を使用する場合は内部キーです。オブジェクトに複数のキーフィールドがある場合、これらのキーフィールドの値をMESSAGE_V2で連結する必要があります。連結では、BORでキーフィールドが定義されている順序を順守する必要があります。さらに、各キーフィールドには最大長を使用する必要があります。これには、パディングの使用が必要になる場合があります。
Undelete() BAPIが正常に実行されると、次の標準化されたT100メッセージが使用されます。
-
Delete() BAPIの実行中にエラーが発生した場合、アプリケーション固有のエラーメッセージに加えて、次の標準化されたT100メッセージをReturnパラメーターで渡す必要があります。
さまざまなフィールドの意味は、正常に実行された場合と同じです。
Undelete()- BAPIの実行中にエラーが発生した場合、次の標準化されたT100メッセージが使用されます。
-
-
-
標準化されたメッセージに加えて、 Returnパラメーターにさらにメッセージを書き込むことができます。エラーが発生した場合、エラーを詳細に説明するメッセージが返されることが特に重要です。したがって、構造BAPIRET2のすべての項目を使用する必要があります。特に、 Parameter、 Row、およびFieldの各フィールドに入力する必要があります。