SAPトランザクションコードの代わりになるBAPIの一覧

トランザクションコードの代わりになるBAPIのリスト

本記事は、トランザクションコードの代替手段としてのBAPIについて解説し、そのメリットを説明する。そして、各トランザクションコードに対応するBAPIの一覧を掲載する。BAPIを探すのが面倒な場合は、本記事の一覧を参考にしてほしい。

SAPのトランザクションコード(T-CODE)を呼び出してデータの一括登録を行うバッチインプットは、SAPシステムにデータを一括登録する強力な手段だ。しかし、バッチインプットに対応していないトランザクションコードは存在する。

そんな時は、トランザクションコードの代わりになるBAPI(Business Application Programming Interface)を使うのがおすすめだ。

バッチインプットできないトランザクションコードはどれ?

バッチインプットできない色々なトランザクションコードを解説した記事は以下。

目次

トランザクションコードの代わりになるBAPI

BAPIとは

SAPのBAPIとは、外部システムやアプリケーションがプログラムを通じてSAPシステムの機能を実行するための、SAP社が提供している標準インターフェースである。

バッチインプットは、トランザクションコード=画面操作を模倣して処理を行う。一方、BAPIはトランザクションの画面操作を経由せず、直接SAPシステムの内部処理やデータにアクセスするため、プログラムからシステムの操作を、より効率的に行うことができる。データ登録時のコミットやロールバックといったトランザクション制御を行うなど、バッチインプットよりも柔軟で細かな処理が可能だ。

バッチインプットは画面操作を模倣するため、画面デザインやバージョン違いなど、システム変更の影響を受けやすいが、BAPIの仕様は安定しており、システム変更の影響を受けにくいという特長もある。

BAPIはSAP社も推している

バッチインプットは SAP GUI + トランザクションコード をベースにしており、ECC以前のSAPシステムから活用されている実績のある手法である。しかし、S/4HANA以降は、UI(ユーザーインターフェース)は「Fiori」が中心となっており、Fioriはバッチインプットに対応していない。そして、今後リリースされる新しい機能のUIは、SAP GUIではなくFioriとなることが既定路線である。

SAP GUIをベースとした新機能のリリースが見込めないということは、同様にSAP GUIを利用するバッチインプットの活用機会も、今後は減少することが予想される。実際、SAP社も、バッチインプットではなくBAPIを推奨している。

たとえば、SAP Note #216806(新しい転記トランザクションとバッチインプット)には、「長期的には、対応する BAPI を使用することをお奨めします」という記述がある。

SAP社もバッチインプットではなく、BAPIを推しているのだ。

バッチインプットとBAPIの違い

一方でBAPIは、バッチインプットと比べてハードルが高いとされている。それは、ABAPプログラムの知識が必要であり、初心者向きではないから。そのような、BAPIのメリットだけでなく、デメリットについても解説した記事は以下。

BAPIを使うことのメリット

BAPIを使うことで得られる代表的なメリットは以下。メリットには、バッチインプットよりも優れる点がある。

1. バッチインプットできない登録処理もBAPIならできる

バッチインプットもBAPIも、SAPシステムにデータを登録する手段であるが、BAPIの方が柔軟性に優れている。

バッチインプットが使えないトランザクションでも、BAPIならば同等のデータ登録処理を実行できる場合が少なくない。

バッチインプットは、トランザクションコードを実行する時の画面(SAP GUI)操作をトレースしてデータを入力する方法である。しかし、一部のトランザクションコードは特殊な画面要素(例:動的な画面の遷移、Enjoyトランザクション、ALVグリッドなどのカスタムコントロールなど)を使用しており、バッチインプットできない場合がある。

一方のBAPIは、SAPシステムのオブジェクトに直接アクセスして操作を行うプログラミングインターフェースであり、SAP GUIを経由せずにビジネスロジックを呼び出すため、画面の制約を受けない。

そのため、バッチインプットが使えないトランザクションでも、BAPIを利用することで同じ処理を実現できるのだ。

2. トランザクション制御できる

BAPIはトランザクション制御が行えるという特長を持つ。

トランザクション制御とは、複数の処理を一つのまとまり(単位)として扱い、すべての処理が正常に完了した場合にのみ結果を確定(コミット)させる仕組みである。これにより、処理の途中でエラーが発生した場合には、それまでに行われた処理をすべて取り消す(ロールバック)ことができ、データの整合性を保つことが可能となる。

一方、バッチインプットは、SAPの画面操作を模倣して大量のデータを一括で登録する手法であるが、トランザクション制御ができないという欠点がある。例えば、10件のデータを処理する際に1件でエラーが発生しても、残りの9件はそのまま登録されてしまうため、処理全体の整合性が損なわれる可能性がある。

それに対して、BAPIではすべての処理が正しく完了したときのみデータを確定できるため、エラー発生時には処理全体を一括で取り消すことが可能である。このように、処理の信頼性とデータ整合性の確保という点において、BAPIはバッチインプットよりも優れた手法であるといえる。

3. サードパーティのデータ登録ツールを利用できる

BAPIを利用するには、通常はアドオンと呼ばれるカスタムプログラムを開発する必要がある。しかし、サードパーティーのツールを使えば、プログラムを開発しなくてもBAPIを利用することが可能だ。

以下は、BAPIを利用してSAPシステムにデータを登録できる、サードパーティ製データ登録ツールの一例である。これらの製品を活用すれば、アドオンを開発しなくても、BAPIを利用したデータの一括登録が可能だ。

ツール名称販売/開発元特長
ConnectPlusクレスコ・イー・ソリューションノンプログラミングで効率的にデータ連携が可能。Excelやクラウドサービスとのリアルタイム双方向連携をサポートしている。
MALSY三菱電機デジタルイノベーションExcelからECCやS/4HANAに直接データ登録が行える。バッチインプットとBAPIをサポート。エンドユーザーがSAPシステムを意識せずに操作可能で、エラーメッセージやステータスを入力したExcelに即時に返す機能も備えている。
Precisely Automate
(旧Winshuttle)
PreciselySAPデータの抽出や更新を行うためのツールで、ExcelやAccessと連携し、BAPIを利用したデータ登録にも対応している。
UiPath SAP AutomationUiPathRPAの代表的な製品であるUiPathは、SAPシステムの操作の自動化も可能であり、BAPIやGUIベースのトランザクションにも対応している。
Syniti Data WorkBenchクライム/SynitiExcelを介してSAPシステムとのデータ連携を簡素化する。プログラミング不要で3ステップの簡単操作、迅速な導入、高品質なデータ入力、効率的なプロセスを実現。
BAPIを利用するサードパーティのデータ登録ツール

ツールを活用するとアドオンの開発を抑えられるので、開発コストの削減につながる


バッチインプットできるトランザクションコードの一覧

他方、BAPIではなく、バッチインプットを利用するサードパーティ製のデータ登録ツールは、以下の記事で紹介している。

BAPIを探そう

トランザクションコードと異なり、BAPIは SAP GUI の「SAPメニュー」に表示されないため、自分で探す必要がある。目的に合うBAPIを探す方法は、以下の記事を参考にしてほしい。

トランザクションコードに対応したBAPIの一覧

BAPIを探す時間がない読者のために、筆者が確認済みのBAPIの一覧を、本記事で紹介する。

以下は、データ登録および更新(削除)のトランザクションコードに対応するBAPIの一覧である。筆者が実際に使っことのあるBAPIを集めてみた。目当てのトランザクションコードに対応するBAPIが、下の一覧の中に見つかれば幸いだ。

CO: 管理会計

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
KO01Create Internal Order内部指図登録BAPI_INTERNALORDER_CREATE

FI: 財務会計

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
F-02Enter G/L Account Posting一般転記入力BAPI_ACC_DOCUMENT_POST
FB01Post Document伝票転記BAPI_ACC_DOCUMENT_POST
ABZONAcquis. w/Autom. Offsetting Entry自動相殺仕訳のある取得BAPI_ASSET_ACQUISITION_POST
AS01Create Asset Master Record資産マスタ登録BAPI_FIXEDASSET_CREATE1

MM: 在庫購買管理

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
MB01Post Goods Receipt for PO購買発注入庫登録BAPI_RESERVATION_CREATE
MB1AGoods Withdrawal出庫登録BAPI_GOODSMVT_CREATE
MB1BTransfer Posting在庫転送登録BAPI_GOODSMVT_CREATE
MB1COther Goods Receipts発注外入庫登録BAPI_GOODSMVT_CREATE
MBSTCancel Material Document入出庫伝票取消BAPI_GOODSMVT_CANCEL
ME21Create Purchase Order購買発注登録BAPI_PO_CREATE1
ME21NCreate Purchase Order購買発注登録BAPI_PO_CREATE1
ME22Change Purchase Order購買発注変更BAPI_PO_CHANGE
ME51Create Purchase Requisition購買依頼登録BAPI_PR_CREATE
ME51NCreate Purchase Requisition購買依頼登録BAPI_PR_CREATE
ME52Change Purchase Requisition購買依頼変更BAPI_PR_CHANGE
ME52NChange Purchase Requisition購買依頼変更BAPI_PR_CHANGE
MI01Create Physical Inventory Document実地棚卸伝票登録BAPI_MATPHYSINV_CREATE
MI02Change Physical Inventory Document実地棚卸伝票変更BAPI_MATPHYSINV_CHANGECOUNT
MI04Enter Inventory Count with Document実地棚卸検数の入力 (伝票あり)BAPI_MATPHYSINV_COUNT
MI05Change Inventory Count棚卸検数変更BAPI_MATPHYSINV_CHANGECOUNT
MI07Process List of Differences棚卸差異一覧処理BAPI_MATPHYSINV_POSTDIFF
MIGOGoods Movement在庫移動BAPI_GOODSMVT_CREATE
BAPI_GOODSMVT_CANCEL
MIROEnter Incoming Invoice請求書受領入力BAPI_INCOMININVOICE_CREATE1
MM01Create Material &品目 & 登録BAPI_MATERIAL_SAVEDATA
MM02Change Material &品目 & 変更BAPI_MATERIAL_SAVEDATA

PP: 生産計画管理

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
CA01Create Routing作業手順登録BAPI_ROUTING_CREATE
CO01Create Production Order製造指図登録BAPI_PRODORD_CREATE
CO02Change Production Order製造指図の変更BAPI_PRODORD_CHANGE
CO11Enter Time Ticket作業記録票入力BAPI_PRODORDCONF_CREATE_TT
CO11NSingle Screen Entry of Confirmations確認の単一画面入力BAPI_PRODORDCONF_CREATE_TT
CO40Convert Planned Order計画手配変換BAPI_PRODORD_CREATE_FROM_PLORD
CO41Coll. Conversion of Planned Orders計画手配一括変換BAPI_PRODORD_CREATE_FROM_PLORD
COR1Create Process Orderプロセス指図登録BAPI_ALM_ORDER_MAINTAIN
COR2Change Process Orderプロセス指図変更BAPI_ALM_ORDER_MAINTAIN
CR01Create Work Center作業区登録CRAP_WORKCENTER_CREATE
CR02Change Work Center作業区変更CRAP_WORKCENTER_CHANGE
CS01Create Material BoM品目 BOM 登録CSAP_MAT_BOM_MAINTAIN*1
BAPI_MATERIAL_BOM_GROUP_CREATE
BAPI_BOM_UPLOAD_SAVE
CS02Change Material BoM品目 BOM 変更CSAP_MAT_BOM_MAINTAIN*1
CSAP_MAT_BOM_DELETE*1
BAPI_MATERIAL_BOM_GROUP_CREATE
BAPI_BOM_UPLOAD_SAVE
MB31Goods Receipt for Production Order製造指図入庫登録BAPI_GOODSMVT_CREATE
MD11Create Planned Order計画手配登録BAPI_PLANNEDORDER_CREATE
MD12Change Planned Order計画手配変更BAPI_PLANNEDORDER_CHANGE
BAPI_PLANNEDORDER_DELETE
MD61Create Planned Indep. Requirements計画独立所要量の登録BAPI_REQUIREMENTS_CREATE
MD62Change Planned Indep. Requirements計画独立所要量の変更BAPI_REQUIREMENTS_CHANGE
MS11LTP: Create planned orderLTP: 計画手配登録BAPI_PLANNEDORDER_CREATE
MS12LTP: Change planned orderLTP: 計画手配変更BAPI_PLANNEDORDER_CHANGE
BAPI_PLANNEDORDER_DELETE

*1: S/4HANAのバージョンによってはブロックリストに登録されており使用不可。

PS: プロジェクト管理

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
CJ01Create Work Breakdown StructureWBS 登録BAPI_PROJECT_MAINTAIN
CJ02Change Work Breakdown StructureWBS 変更BAPI_PROJECT_MAINTAIN
CJ06Create Project Definitionプロジェクト定義登録BAPI_PROJECT_MAINTAIN
BAPI_PROJECTDEF_CREATE
CJ07Change Project Definitionプロジェクト定義変更BAPI_PROJECT_MAINTAIN
CJ20NProject BuilderプロジェクトビルダBAPI_BUS2001_CREATE
BAPI_BUS2054_CREATE_MULTI
BAPI_BUS2002_CREATE
BAPI_BUS2002_ACTELEM_CREATE_M
BAPI_NETWORK_COMP_ADD
CJR2PS: Change plan CElem/Activ. inputPS: 計画原価要素/活動投入量の変更BAPI_COSTACTINPUT_POSTACTINPUT
BAPI_COSTACTINPUT_POSTPRIMCOST

SD: 販売管理

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
VA01Create Sales Orders受注登録BAPI_SALESORDER_CREATEFROMDAT2
VA02Change Sales Orders受注変更BAPI_SALESORDER_CHANGE
VF01Create Billing Documents請求伝票登録BAPI_BILLINDOC_CREATE
BAPI_BILLINDOC_CREATEFROMDATA
BAPI_BILLINDOC_CREATEMULTIPLE
BAPI_BILLINGDOC_CREATEMULTIPLE
VL01NCreate Outbound Dlv. with Order Ref.出荷伝票登録 (受注参照)BAPI_OUTB_DELIVERY_CREATE_SLS
VL01NOCreate Outbound Dlv. w/o Order Ref.出荷伝票登録 (受注参照なし)BAPI_OUTB_DELIVERY_CREATE_SLS

モジュール非依存

T-CODEトランザクション名
Transaction Name EN
トランザクション名
Transaction Name JA
対応するBAPI
Corresponding BAPI
BPMaintain Business Partnerビジネスパートナ更新BAPI_BUPA_CREATE_FROM_DATA

まとめ:バッチインプットできないならBAPIを使おう

SAPシステムにおけるデータ入力の自動化手段として、トランザクションコードを自動化するバッチインプットは多くの現場で使われている。しかし、SAP GUIの画面のデザインに依存するため、すべてのトランザクションコードには対応していない。

一方、BAPIはSAP内部のビジネスロジックやデータに直接アクセスするため、バッチインプットが対応できないトランザクションでも、データ登録を行うことができる。

もし、バッチインプットが使えなかったり、苦戦しているトランザクションコードがあるなら、BAPIに切り替えることでデータ登録が上手くいくかもしれない。SAP社も、長期的にはBAPIの利用を推奨している。

バッチインプットできないならBAPIを使う」という選択肢を、本記事の「トランザクションコードに対応したBAPIの一覧」を参考に、ぜひ検討してみてほしい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次