SAPのトランザクションコード(T-CODE)を呼び出してデータの一括登録を行うバッチインプットは、SAPシステムにデータを一括登録する強力な手段だ。しかし、バッチインプットに対応していないトランザクションコードは存在する。
そんな時は、トランザクションコードの代わりになるBAPI(Business Application Programming Interface)を使うのがおすすめだ。
バッチインプットできない色々なトランザクションコードを解説した記事は以下。
トランザクションコードの代わりになるBAPI
BAPIとは
SAPのBAPIは、外部システムやアプリケーションがプログラムを通じて業務を実行するための、SAPが提供している標準インターフェースである。
バッチインプットは、トランザクションコード=画面操作を模倣して処理を行う。一方、BAPIはトランザクションの画面操作を経由せず、直接SAPシステムの内部処理やデータにアクセスするため、プログラムからシステムの操作を、より効率的に行うことができる。データ処理完了時のコミットやロールバックといったトランザクション制御など、バッチインプットよりも柔軟、且つ細かな制御をすることも可能だ。
バッチインプットは画面操作を模倣するため、画面デザインやバージョン違いなど、システム変更の影響を受けやすいが、BAPIの仕様は安定しており、システム変更の影響を受けにくいという特長もある。
BAPIはSAP社も推している
バッチインプットはSAP GUI+トランザクションコードをベースにしているが、S/4HANAにバージョンアップしてからのUI(ユーザーインターフェース)は「Fiori」が中心である。しかし、Fioriはバッチインプットには対応していない。そして、今後、新しい機能がリリースされる時、UIはSAP GUIではなくFioriが前提となることが、ほぼ確実である。
SAP GUIをベースとした新機能のリリースが見込めないということは、SAP GUIをベースとしたバッチインプットも今後は出番が少なくなると予想される。実際、SAP社も、バッチインプットではなくBAPIを推奨している。たとえば、SAP Note #216806(新しい転記トランザクションとバッチインプット)には、「長期的には、対応する BAPI を使用することをお奨めします」という記述がある。
SAP社もバッチインプットではなく、BAPIを推しているのだ。
BAPIを使うことのメリット
バッチインプットができないことをBAPIはできる
バッチインプットもBAPIも、SAPシステムにデータ登録を行う手段であるが、BAPIの方が柔軟性がある。バッチインプットが使えないトランザクションコードでも、BAPIならトランザクションコードと同じデータ処理を実行できる場合が少なくない。
バッチインプットは、トランザクションコードを実行する時の画面(SAP GUI)操作をトレースしてデータを入力する方法である。しかし、一部のトランザクションコードは特殊な画面要素(例:動的な画面の遷移、Enjoyトランザクション、ALVグリッドなどのカスタムコントロールなど)を使用しており、バッチインプットで処理できない場合がある。
一方のBAPIは、SAPシステムのオブジェクトに直接アクセスして操作を行うプログラミングインターフェースであり、SAP GUIを経由せずにビジネスロジックを呼び出すため、画面の制約を受けない。
そのため、バッチインプットが使えないトランザクションでも、BAPIを利用することで同じ処理を実現できるのだ。
BAPIはバッチインプットと比べ、ハードルが高いとされている。それは、ABAPプログラムの知識が必要であり、初心者向きではないから。そのような、BAPIのメリットだけでなく、デメリットについても解説した記事は以下。
サードパーティのデータ登録ツールを利用できる
BAPIを利用するには、通常はアドオンと呼ばれるカスタムプログラムを開発する必要がある。しかし、サードパーティーのツールを使えば、プログラムを開発しなくてもBAPIを利用することが可能だ。ツールを活用することで、アドオンの開発を抑制し、開発コストを削減できる。
以下は、BAPIを使ってSAPシステムにデータを一括登録できる、サードパーティ製データ登録ツールの一覧である。これらの製品を利用すれば、アドオンを開発しなくても、BAPIを利用してデータの一括登録が可能だ。
ツール名称 | 販売/開発元 | 特長 |
---|---|---|
ConnectPlus | クレスコ・イー・ソリューション | ノンプログラミングで効率的にデータ連携が可能。Excelやクラウドサービスとのリアルタイム双方向連携をサポートしている。 |
MALSY | 三菱電機インフォメーションシステムズ | ExcelからSAPシステムへ直接データ登録が行える。バッチインプットとBAPIをサポート。エンドユーザーがSAPシステムを意識せずに操作可能で、エラーメッセージやステータスを即時にExcelに返す機能も備えている。 |
Precisely Automate (旧Winshuttle) | Precisely | SAPデータの抽出や更新を行うためのツールで、ExcelやAccessと連携し、BAPIを利用したデータ登録にも対応している。 |
UiPath SAP Automation | UiPath | RPAの代表的な製品であるUiPathは、SAPシステムの操作の自動化も可能であり、BAPIやGUIベースのトランザクションにも対応している。 |
Syniti Data WorkBench | クライム/Syniti | Excelを介してSAPシステムとのデータ連携を簡素化する。プログラミング不要で3ステップの簡単操作、迅速な導入、高品質なデータ入力、効率的なプロセスを実現。 |
なお、BAPIではなくバッチインプットを利用するサードパーティ製のデータ登録ツールは、以下の記事で紹介している。
BAPIを探そう
トランザクションコードと異なり、BAPIは SAP GUI の「SAPメニュー」に表示されないので、自分で探す必要がある。目的に合うBAPIを探すには、以下の記事を参考にしてほしい。BAPIの探し方を4パターン紹介している。
トランザクションコードに対応したBAPIの一覧
BAPIを探す時間がない読者のために、筆者が確認済みのBAPIの一覧を、本記事で紹介する。目当てのトランザクションコードに対応するBAPIが、下の一覧の中に見つかれば幸いだ。
以下は、データ登録および更新(削除)のトランザクションコードに対応するBAPIの一覧である。筆者が実際に使っことのあるBAPIを集めてみた。
CO: 管理会計
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
KO01 | Create Internal Order | 内部指図登録 | BAPI_INTERNALORDER_CREATE |
FI: 財務会計
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
F-02 | Enter G/L Account Posting | 一般転記入力 | BAPI_ACC_DOCUMENT_POST |
FB01 | Post Document | 伝票転記 | BAPI_ACC_DOCUMENT_POST |
ABZON | Acquis. w/Autom. Offsetting Entry | 自動相殺仕訳のある取得 | BAPI_ASSET_ACQUISITION_POST |
AS01 | Create Asset Master Record | 資産マスタ登録 | BAPI_FIXEDASSET_CREATE1 |
MM: 在庫購買管理
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
MB01 | Post Goods Receipt for PO | 購買発注入庫登録 | BAPI_RESERVATION_CREATE |
MB1A | Goods Withdrawal | 出庫登録 | BAPI_GOODSMVT_CREATE |
MB1B | Transfer Posting | 在庫転送登録 | BAPI_GOODSMVT_CREATE |
MB1C | Other Goods Receipts | 発注外入庫登録 | BAPI_GOODSMVT_CREATE |
MBST | Cancel Material Document | 入出庫伝票取消 | BAPI_GOODSMVT_CANCEL |
ME21 | Create Purchase Order | 購買発注登録 | BAPI_PO_CREATE1 |
ME21N | Create Purchase Order | 購買発注登録 | BAPI_PO_CREATE1 |
ME22 | Change Purchase Order | 購買発注変更 | BAPI_PO_CHANGE |
ME51 | Create Purchase Requisition | 購買依頼登録 | BAPI_PR_CREATE |
ME51N | Create Purchase Requisition | 購買依頼登録 | BAPI_PR_CREATE |
ME52 | Change Purchase Requisition | 購買依頼変更 | BAPI_PR_CHANGE |
ME52N | Change Purchase Requisition | 購買依頼変更 | BAPI_PR_CHANGE |
MI01 | Create Physical Inventory Document | 実地棚卸伝票登録 | BAPI_MATPHYSINV_CREATE |
MI02 | Change Physical Inventory Document | 実地棚卸伝票変更 | BAPI_MATPHYSINV_CHANGECOUNT |
MI04 | Enter Inventory Count with Document | 実地棚卸検数の入力 (伝票あり) | BAPI_MATPHYSINV_COUNT |
MI05 | Change Inventory Count | 棚卸検数変更 | BAPI_MATPHYSINV_CHANGECOUNT |
MI07 | Process List of Differences | 棚卸差異一覧処理 | BAPI_MATPHYSINV_POSTDIFF |
MIGO | Goods Movement | 在庫移動 | BAPI_GOODSMVT_CREATE BAPI_GOODSMVT_CANCEL |
MIRO | Enter Incoming Invoice | 請求書受領入力 | BAPI_INCOMININVOICE_CREATE1 |
MM01 | Create Material & | 品目 & 登録 | BAPI_MATERIAL_SAVEDATA |
MM02 | Change Material & | 品目 & 変更 | BAPI_MATERIAL_SAVEDATA |
PP: 生産計画管理
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
CA01 | Create Routing | 作業手順登録 | BAPI_ROUTING_CREATE |
CO01 | Create Production Order | 製造指図登録 | BAPI_PRODORD_CREATE |
CO02 | Change Production Order | 製造指図の変更 | BAPI_PRODORD_CHANGE |
CO11 | Enter Time Ticket | 作業記録票入力 | BAPI_PRODORDCONF_CREATE_TT |
CO11N | Single Screen Entry of Confirmations | 確認の単一画面入力 | BAPI_PRODORDCONF_CREATE_TT |
CO40 | Convert Planned Order | 計画手配変換 | BAPI_PRODORD_CREATE_FROM_PLORD |
CO41 | Coll. Conversion of Planned Orders | 計画手配一括変換 | BAPI_PRODORD_CREATE_FROM_PLORD |
COR1 | Create Process Order | プロセス指図登録 | BAPI_ALM_ORDER_MAINTAIN |
COR2 | Change Process Order | プロセス指図変更 | BAPI_ALM_ORDER_MAINTAIN |
CR01 | Create Work Center | 作業区登録 | CRAP_WORKCENTER_CREATE |
CR02 | Change Work Center | 作業区変更 | CRAP_WORKCENTER_CHANGE |
CS01 | Create Material BoM | 品目 BOM 登録 | CSAP_MAT_BOM_MAINTAIN*1 BAPI_MATERIAL_BOM_GROUP_CREATE BAPI_BOM_UPLOAD_SAVE |
CS02 | Change Material BoM | 品目 BOM 変更 | CSAP_MAT_BOM_MAINTAIN*1 CSAP_MAT_BOM_DELETE*1 BAPI_MATERIAL_BOM_GROUP_CREATE BAPI_BOM_UPLOAD_SAVE |
MB31 | Goods Receipt for Production Order | 製造指図入庫登録 | BAPI_GOODSMVT_CREATE |
MD11 | Create Planned Order | 計画手配登録 | BAPI_PLANNEDORDER_CREATE |
MD12 | Change Planned Order | 計画手配変更 | BAPI_PLANNEDORDER_CHANGE BAPI_PLANNEDORDER_DELETE |
MD61 | Create Planned Indep. Requirements | 計画独立所要量の登録 | BAPI_REQUIREMENTS_CREATE |
MD62 | Change Planned Indep. Requirements | 計画独立所要量の変更 | BAPI_REQUIREMENTS_CHANGE |
MS11 | LTP: Create planned order | LTP: 計画手配登録 | BAPI_PLANNEDORDER_CREATE |
MS12 | LTP: Change planned order | LTP: 計画手配変更 | BAPI_PLANNEDORDER_CHANGE BAPI_PLANNEDORDER_DELETE |
*1: S/4HANAのバージョンによってはブロックリストに登録されており使用不可。
PS: プロジェクト管理
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
CJ01 | Create Work Breakdown Structure | WBS 登録 | BAPI_PROJECT_MAINTAIN |
CJ02 | Change Work Breakdown Structure | WBS 変更 | BAPI_PROJECT_MAINTAIN |
CJ06 | Create Project Definition | プロジェクト定義登録 | BAPI_PROJECT_MAINTAIN BAPI_PROJECTDEF_CREATE |
CJ07 | Change Project Definition | プロジェクト定義変更 | BAPI_PROJECT_MAINTAIN |
CJ20N | Project Builder | プロジェクトビルダ | BAPI_BUS2001_CREATE BAPI_BUS2054_CREATE_MULTI BAPI_BUS2002_CREATE BAPI_BUS2002_ACTELEM_CREATE_M BAPI_NETWORK_COMP_ADD |
CJR2 | PS: Change plan CElem/Activ. input | PS: 計画原価要素/活動投入量の変更 | BAPI_COSTACTINPUT_POSTACTINPUT BAPI_COSTACTINPUT_POSTPRIMCOST |
SD: 販売管理
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
VA01 | Create Sales Orders | 受注登録 | BAPI_SALESORDER_CREATEFROMDAT2 |
VA02 | Change Sales Orders | 受注変更 | BAPI_SALESORDER_CHANGE |
VF01 | Create Billing Documents | 請求伝票登録 | BAPI_BILLINDOC_CREATE BAPI_BILLINDOC_CREATEFROMDATA BAPI_BILLINDOC_CREATEMULTIPLE BAPI_BILLINGDOC_CREATEMULTIPLE |
VL01N | Create Outbound Dlv. with Order Ref. | 出荷伝票登録 (受注参照) | BAPI_OUTB_DELIVERY_CREATE_SLS |
VL01NO | Create Outbound Dlv. w/o Order Ref. | 出荷伝票登録 (受注参照なし) | BAPI_OUTB_DELIVERY_CREATE_SLS |
モジュール非依存
T-CODE | トランザクション名 Transaction Name EN | トランザクション名 Transaction Name JA | 対応するBAPI Corresponding BAPI |
---|---|---|---|
BP | Maintain Business Partner | ビジネスパートナ更新 | BAPI_BUPA_CREATE_FROM_DATA |
まとめ:バッチインプットできない時はBAPIを使おう
SAPシステムにおけるデータ入力の自動化手段として、トランザクションコードを自動化するバッチインプットは多くの現場で使われている。しかし、SAP GUIの画面のデザインに依存するため、すべてのトランザクションコードには対応していない。
一方、BAPIはSAP内部のビジネスロジックやデータに直接アクセスするため、バッチインプットが対応できないトランザクションでも、データ登録を行うことができる。
もし、バッチインプットが使えなかったり、苦戦しているトランザクションコードがあるなら、BAPIにスイッチすることで、データ登録が上手くいくかもしれない。SAP社も、長期的にはBAPIの利用を推奨している。
「バッチインプットできないならBAPIを使う」という選択肢を、本記事のトランザクションコードに対応するBAPIの一覧を参考に、ぜひ検討してみてほしい。
コメント