汎用モジュール/BAPIを探す方法:トランザクションコードと同じ機能のBAPIを探す

BAPIを探す

SAPシステム以外のシステムから、SAPシステムの機能を利用する手段の一つに、BAPIがある。

SAPシステム以外のアプリケーションからは、SAP GUI や Fiori は使えないし、トランザクションコードを呼び出すこともできない。その代わりに、BAPIを呼び出すのだ。

たとえば、T-CD:MIGOで発注入庫を行うBAPIは、BAPI_GOODS_MOVEMENT だ。サードベンダのシステムは、BAPI_GOODS_MOVEMENT を呼び出すことで発注入庫を行うアプリケーションを実現することができる。

では、目的のT-CDと同じ機能を持つBAPIは、どのように探すのか

この記事は、汎用モジュール/BAPI/RFCの違い、そしてBAPIの探し方について考えてみる。

汎用モジュール/BAPI/RFCとは?

汎用モジュールとBAPI、そしてRFC。
これらは、SAPシステムの機能を利用するための手段であり、重要な役割を担っている。その理由は、トランザクションコード以外に、SAPシステムの機能を利用する方法だからである。

汎用モジュール(Function Module)/BAPI/RFCの関連図
汎用モジュール(Function Module)/BAPI/RFCの関連図

汎用モジュール (Function Module)

汎用モジュールは、SAPシステムの機能を実行するためのプログラムコンポーネントである

再利用可能な、SAPシステム上で定義された「ソフトウェア部品」という言い方もできる。昔風に言えば、「共通サブルーチン」。

SAPシステムを操作するためのコンピュータ言語=ABAP言語を除き、SAPシステムでは、内部のデータベースへの直接アクセスを許していない。SAPシステム以外の情報システムは、SAPシステムのデータを直接、参照・変更・削除することはできないということだ。

データベースへの直接アクセスを許していない代わりに、SAPシステムは目的に応じた様々な汎用モジュールを提供している。

外部のシステムやアプリケーションは、汎用モジュールを介し、SAPシステムのデータ操作を行うことになる。

BAPI (Business Application Programming Interface)

BAPIも、SAPシステムの機能を実行するためのプログラムコンポーネントである。その意味において、BAPIは汎用モジュールと同じである。

BAPIは、SAPシステム以外のアプリケーションから呼び出される。外部からSAPシステムにアクセスすることを想定してデザインされているため、インターフェースや呼び出し方が標準化されている。

また、BAPIは後述のRFCプロトコルを使用して実行される。

RFC (Remote Function Call)

RFCは、SAPシステム間や、SAPシステムと外部システム間でBAPIを呼び出すためのプロトコルである

SAPシステム以外のアプリケーションからSAPシステムのデータを操作する場合、BAPIを利用することになる。BAPIはRFCを経由して呼び出されるため、BAPIとRFCは混同されやすい。

汎用モジュールとBAPIの違い

どちらも「SAPシステムの機能を実行するためのプログラムコンポーネント」という点は同じ。

二つの違いは、内部向けか外部向けか、という点にある。

  • 汎用モジュール
    • 主にSAPシステム内部で使用される。SAPシステム内部=ABAP言語から使用される場合、汎用モジュールと呼ばれる。
  • BAPI
    • 外部アプリケーションからSAPシステムにアクセスするためのインターフェースプログラム。中身は汎用モジュールと同じものも多い。言い換えれば、外部アプリケーションから呼び出し可能な汎用モジュールが、BAPIである。

RFCは、BAPIをSAPシステムの外部から使用するための通信プロトコルだ。

汎用モジュールとBAPIはどちらも「機能」で、RFCは「プロトコル」。「機能」と「プロトコル」という点で、汎用モジュールとBAPI、RFCはそれぞれ異なる。

リモート汎用モジュール

BAPIは、SAPシステムの外部から呼び出せる汎用モジュールなので、「リモート汎用モジュール」と呼ばれることがある。

汎用モジュールがBAPIとなり得るか、つまり、汎用モジュールがリモートで実行可能か否かは、汎用モジュールの属性を参照することで確認できる。

T-CD:SE37(汎用モジュールビルダ)より、汎用モジュールを参照し、「属性」タブの「リモート可能モジュール」のチェックがONであれば、その汎用モジュールはリモート汎用モジュール、すなわちBAPIである。

BAPIを使用するサードベンダのアプリ

以下は、BAPIを用いてSAPシステムにアクセスする、サードベンダ製品の一覧である(筆者調べ)。

製品名提供企業概要
OpenLegacy HubOpenLegacyマイクロサービスベースのAPI自動生成プラットフォーム。SAPと非SAPシステム間のデータ転送を効率化。
TalendTalendSAPと外部システムとのデータ連携をサポートする多様なコネクタとAPI。BAPI呼び出しやIDoc処理に対応。
ConnectPlusGTクレスコ・イー・ソリューションSAP ERP、SAP S/4HANAのデータ連携管理ツール。外部システムとのリアルタイム連携を実現。
ConnectPlusETクレスコ・イー・ソリューションSAP ERP、SAP S/4HANAのデータ抽出ツール。
MALSY三菱電機インフォメーションシステムズSAP ERP、SAP S/4HANAのデータを、Excelから直接操作できるツール。
RFgenNORAXハンディターミナルからSAPシステムのデータを操作するソリューション。

上記以外にも、外部からSAPシステムのデータにアクセスするソフトウェア製品は存在する。

それらは全て、BAPIを用いることで、SAPシステムのデータを操作するアプリケーションを実現している。

汎用モジュール/BAPIの探し方

それでは、BAPIの探し方を見ていこう。

1. BAPIエクスプローラーで探す

SAPシステムには、BAPIを参照できるトランザクションがある。そのトランザクションの名は「BAPIエクスプローラ」。

トランザクションコード(T-CD)は、そのまんま"BAPI"である。

T-CD:BAPIを起動すると、「階層別」「アルファベット順」に参照できるようになっており、「階層別」は業務領域別に、階層構造でBAPIを参照することができる。

たとえば、購買発注関連のBAPIを「階層別」から探す場合、次のように操作する。

  1. 購買発注は「在庫/購買管理(MM)」モジュールに属するので、
    「在庫/購買管理」->「購買管理」
    へと下りる。
  2. 「購買発注」(探したいBAPI)の英語名を類推し、「PurchaseOrder」へ。
    「PurchaseOrder」から下は、BAPIが持つキー項目や、メソッド(命令)が一覧できる。
  3. 購買発注伝票登録を行うBAPIであれば、メソッドは、登録=Createの文字で始まる「CreateFormData1」と予想できるので、選択する。
  4. 詳細」タブより、BAPIの属性を参照する。「内容説明」を読むと「Enjoy 購買発注登録」とあるので、T-CD:ME21Nと同等の汎用モジュールであることがわかる。
    また、「汎用モジュール」の「BAPI_PO_CREATE1」が、この汎用モジュール/BAPIのIDである。
  5. 文書」タブに移動すると、BAPIの文書(解説)を読むことができる。

上の例では、

  • 「購買発注」というワードから「PurchaseOrder」という単語の類推
  • 「購買発注伝票の登録」というトピックから「CreateFormData1」というメソッド名の類推

が、少々難しいかもしれない。

しかし、トランザクションコードの名前に規則性があるように、BAPIのメソッドにも規則性がある。
たとえば、「登録」のメソッド名は、上の例のように"Create"で始まることが多い。「変更」であれば"Change"、削除であれば"Delete"といった具合だ。

この規則性を覚えておけば、探し出すときの手掛かりになるだろう。

2. 汎用モジュールビルダ(T-CD:SE37)で探す

汎用モジュールビルダ(T-CD:SE37)は、その名が示す通り、汎用モジュール/BAPIを作成・変更するためのトランザクションである。

汎用モジュールビルダは、登録済みの汎用モジュールの参照もできる。つまり、汎用モジュールの「検索」ができる。その「検索」機能を使って、目当ての汎用モジュールを探すのだ。

たとえば、「受注」関連のBAPIを検索したい場合は、SE37 を次のように操作する。

  1. 汎用モジュール」の入力欄にカーソルをあわせ、[F4]キーを押す。
  2. 情報システム」ボタンを押す。
  3. 汎用モジュールの検索ダイアログボックスが表示されるので、「内容説明」に「*Sales*」と、ワイルドカード付きの英語で入力し、[Enter]キーを押す。
  4. 内容説明」の文言に「Sales」を含む汎用モジュールの一覧が表示される。

「内容説明」は大文字と小文字を区別するため、入力時は大文字と小文字を意識するようにする。

「内容説明」には日本語を入力しても構わないが、日本語ではほとんどヒットしないため、英語で入力した方がよい。

また、検索条件が「Sales」だけだと、一致する汎用モジュールが大量に表示されてしまい、探し難いので、「汎用モジュール」には"BAPI*"や"RFC*"も追加した方がよい。

BAPIのID(技術名称)の接頭辞は、"BAPI"または"RFC"が多いため、汎用モジュール名に指定しておくと、最初からBAPIを絞り込みやすい。

3. ビューを検索する

汎用モジュールの一覧を照会できるビュー V_FDIRT があるので、それを検索する。

T-CD: SE16N または SE16H(S/4HANA専用)を起動し、テーブル(Dataベース)に V_FDIRT を指定する。

選択基準には、次の値を入力する。

有効 = 'X'
モード = 'R' (リモート汎用モジュールを選択したい場合)
内容説明 = 検索したい汎用モジュールのキーワード

たとえば、「購買」関連のBAPIを探したいなら、「内容説明」に「*Purchase*」と、ワイルドカード付きの英語で入力する。

日本語で「*購買*」と入力しても構わないが、日本語ではほとんどヒットしないため、英語で入力した方がよい。

また、SE16はワイルドカードは使えるが、大文字と小文字を区別するため、「内容説明」に入力するワードは、大文字と小文字を意識する。

4. 生成AIに尋ねる

今のところ、これが最もお勧めの方法である。

たとえば生成AIに向かって、

受注伝票を登録できるBAPIを教えて

というような、緩い問いかけをするだけで、生成AIは答えを返してくれる。SAPシステムに詳しくない人でも、目当てのBAPIを容易に探すことができるのだ。

当ブログの別記事では、生成AIを使ってBAPIを探すためのプロンプト(命令文)を紹介している。左記のプロンプトは、ChatGPT や Google Gemini にコピペするだけで、トランザクションコードに対応するBAPIを一括で検索できるようになっている。是非利用していただきたい。

生成AIプロンプト:トランザクションコードと同じ機能の汎用モジュール(BAPI)を探す

あとがき

汎用モジュール、BAPI、RFC、これらの違いを明確に知らなくても、SAPシステムの仕事をするのに困ることはないだろう。

ではなぜ、この記事で「BAPIの探し方」をテーマにしたのか?

その理由は、S/4HANAの導入においては、トランザクションコードの代替手段、すなわちBAPIの理解を深めておくことが重要だからである。

SAP ERP は S/4HANA への代替わりと共に、トランザクションコードを用いる「バッチインプット」の使用を控え、代替手段としてBAPIを利用するよう、推奨している。

それは、SAP Note #216806(新しい転記トランザクションとバッチインプット)や、#304122(MIGO: バッチインプットと CATT がサポートされない)など、多くの SAP Note にも書かれている。

今後の「SAPの2027年問題」に備え、S/4HANAへのコンバージョンを真剣に検討していくには、BAPIを理解し、BAPIの活用を考えることが、重要なテーマの一つなのである。

【関連記事】

バッチインプットできないSAPのトランザクションコードまとめ

汎用モジュールのブラックリスト|使用禁止の汎用モジュールを調べる

生成AIプロンプト:トランザクションコードと同じ機能の汎用モジュール(BAPI)を探す

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です