SAP BAPIチュートリアル – ABAPでBAPIを作成する方法
⚡ スマートサマリー
BAPI SAP ABAPは、ビジネスオブジェクトをRFC対応で標準化した方法で呼び出すもので、外部アプリケーションからR/3のプロセスやデータにアクセスできるようにします。このページでは、標準化されたBAPI、SWO1での作成方法、テスト、リリース、そしてABAPからBAPIを呼び出す方法について説明します。

BAPIとは何ですか?
ビジネス アプリケーション プログラミング インタフェース (BAPI) は、外部アプリケーションが R/3 システム内のビジネス プロセスおよびデータにアクセスできるようにする標準化されたプログラミング インタフェース (メソッド) です。
彼ら 安定した標準化されたメソッドを提供する R/3 システムと外部アプリケーション、レガシー システム、アドオンとの間のシームレスな統合を実現します。
BAPI は次のように定義されています。 BOR(ビジネスオブジェクトリポジトリ) 方法として SAP 特定のビジネス機能を実行するビジネスオブジェクトタイプ。これらは次のように実装されます。 RFC対応機能 モジュールであり、ABAP ワークベンチの関数ビルダーで作成されます。
いくつかのBAPIとメソッドは基本的な機能を提供し、ほとんどの用途に使用できます。 SAP ビジネスオブジェクト。これらは 標準化されたBAPI。
標準化された BAPI のリスト:
- データ読み取り用の BAPI – GetList() 、 GetDetail() 、 GetStatus() 、 ExistenceCheck()
- データを作成または変更するための BAPI - Create()、Change()、Delete()、および Undelete()
- 大量処理用の BAPI -ChangeMultiple()、CreateMultiple()、DeleteMultiple()。
BAPIの利点
BAPIは、文書化されリリースされたインターフェースであるため、画面ベースの手法よりも好ましい。 SAP リリース間で安定性を維持します。これにより、いくつかの実用的な利点が得られます。
- 安定したインターフェース: リリース済みのBAPIの署名はアップグレードによって変更されないため、呼び出し元のプログラムは引き続き動作します。
- ビジネスロジックの再利用: BAPIはトランザクションと同じ検証を実行するため、BAPIを通じて追加されたデータは一貫性を保ちます。
- リモートが有効になりました: BAPIはRFC対応の関数モジュールであるため、他のモジュールから呼び出すことができます。 SAP システム、 Java または.NETプログラム、またはWebサービス。
- 画面に依存しない: バッチ入力記録とは異なり、BAPIは画面レイアウトが変更されても動作が中断しません。
概念とその利点が明確になったところで、次のセクションではBAPIを段階的に構築していきます。
BAPIの作成方法
ステップ1) トランザクション swo1 ([ツール] -> [ビジネス フレームワーク] -> [BAPI 開発] -> [ビジネス オブジェクト ビルダー]) に移動します。BAPI を作成する機能要件に従って、ビジネス オブジェクトを選択します。
ステップ2) ビジネス オブジェクトを変更モードで開きます。 次に、「ユーティリティ」->「API メソッド」->「メソッドの追加」を選択します。次に、汎用モジュールの名前を入力し、「続行」を選択します。
ステップ3) 次のダイアログボックスで、次の情報を指定する必要があります。
- メソッド : メソッドの適切な名前を提案します。
- テキスト : BAPI の説明を入力します。
- ラジオボタン:ダイアログ、 Sync同期的、インスタンスに依存しない。BAPI は通常、同期的に実装されます。
ステップ4) メソッドを作成するには、次のダイアログ ボックスで [はい] を選択します。
ステップ5) プログラムが生成され、実行された後、作成したメソッドでプログラムを確認します。これにより、BAPI が作成されます。
BAPI のテスト
BAPI をテストするには、 テスト ビジネス オブジェクト ビルダー内のビジネス オブジェクトの個々のメソッド。 (または、トランザクション「SWUD」を使用してメソッドをテストできます)。
BAPI の解放と凍結
- BAPI をリリースするには、まず汎用モジュールをリリースします (トランザクション se37 を使用)。
- ビジネス オブジェクト ビルダーでメソッドのステータスを「リリース済み」に設定します (トランザクション SWo1 を使用して、[編集] -> [ステータスの変更] -> [リリース済み] を選択します)。
BAPI Explorer (トランザクション コード BAPI) を使用して、BAPI の 360 度ビューを表示することもできます。
ABAPでBAPIを呼び出す方法
BAPIは、RFC対応の汎用関数モジュールと同様に呼び出されます。重要なルールは、BAPIはCOMMIT WORKを発行しないため、呼び出し元はBAPI_TRANSACTION_COMMITで変更を確定するか、BAPI_TRANSACTION_ROLLBACKで変更を破棄する必要があるということです。以下の例では、標準BAPIを使用して販売注文を作成します。
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ 警告: コミットする前に、必ずRETURNテーブルでタイプEまたはAのメッセージを確認してください。エラー発生後にBAPI_TRANSACTION_COMMITを呼び出すと、不完全なドキュメントが保存されてしまい、これはBAPIでよくある間違いの一つです。
BAPI、BDC、RFCの比較
BAPI、 BDC、そしてプレーンRFCはすべてデータを移動します SAPしかし、安定性や再利用する物質の種類が異なります。以下の表でそれらを比較します。
| 基準 | BAPI | BDC | RFC(カスタム) |
|---|---|---|---|
| インタフェース | ビジネスオブジェクトのリリース済みメソッド | トランザクションの画面シーケンス | 任意のカスタム機能モジュール |
| アップグレード時の安定性 | リリース済みのBAPIについては保証されています | 画面が変わると壊れる | 開発者次第 |
| リモート対応 | はい | いいえ | はい |
| ビジネス検証 | 取引内容と全く同じです。 | フル、実際の画面を実行 | 開発者がコードしたものだけ |
| ベスト | 安定した統合とインターフェース | BAPIが存在しない場所へのロード | カスタムポイントツーポイントサービス |
経験則としては、リリース済みのBAPIが存在する場合はそれを使用し、存在しない場合はBDCにフォールバックし、カスタムRFCは特注サービスのために予約しておくのが良いでしょう。





