SAPラボのYouTubeチャンネル開設しました ▶ SAPラボチャンネルはコチラ

【SAP ABAP】バッチインプットの概要とプログラム(CALL TRANSACTION)の作成方法を徹底解説!

登場人物紹介

三崎レイナ
社会人1年目。新卒でITコンサルティングファームに就職。初配属がSAPプロジェクトにアサインされる。SAPがわからないことだらけで悩んでいたところ、会社の先輩にSAPラボの所長を紹介され、毎週末に所長とSAPのお勉強中!

博士
SAPラボの所長。SAP大好き博士!SAP導入プロジェクトを構想策定~運用保守まであらゆるフェーズを数多く経験。
いまは優しきおじいちゃんだが、プロマネバリバリの時代はかなり怖かったらしい。現在は引退しSAPの後進育成と啓蒙活動に従事中!
若者に負けぬようX(旧Twitter)も奮闘中。

この記事を読むメリット

  • SAPでのバッチインプットの概要が理解できるようになります。
  • バッチインプットレコーダーの使用方法が理解できるようになります。
  • ABAPを用いたバッチインプットプログラムの作成方法が理解できるようになります。
レイナ

バッチインプットを使ったプログラムを使えばトランザクションデータを作成できるって聞いたんだけど、どういったものなんだろう…??

SAPではバッチインプットという機能を用い、SAP上で手作業で実施すべきことを自動化することが可能です。
例えばアドオンプログラムでバッチインプットを利用することで、マスタデータやトランザクションデータを登録することもできます。

今回はバッチインプットの概要からバッチインプットレコーダーの使用方法、ABAPを用いたバッチインプットプログラムの作成について解説します!

SAPフリーランスバンク SAPフリーランスバンク

新着のSAPフリーランス案件

【自動車業界向けSAP S/4HANAグローバルテンプレート展開(全モジュール)】大手町/ソリューションアーキテクト

月額単価
1,800,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
世界有数の自動車技術企業における、SAP S/4HANAグローバルテンプレートの日本展開および継続的な強化を担う長期プログラムです。 日本国内へのロールアウトにおける中核メンバーとして、グローバル標準の維持と日本固有要件の最適化を両立させるためのアーキテクチャ設計をリードしていただきます。 設計権限者としてアーキテクチャの意思決定やガバナンス遵守を担いつつ、日本およびグローバルの関係者と密に連携しながらプロジェクトを推進していただきます。 BlueprintからBuild、Test、Cutover、Go-Liveに至るまでの一連のフェーズにおいて、End-to-Endのソリューション設計および実行をリードしていただきます。 SAP本体のみならず、MESやEWM、サードパーティ製システムを含む非SAPシステムとの統合設計についても統合的な視点で担当していただきます。 主な業務内容:
  • SAP S/4HANAにおけるエンドツーエンドのソリューションアーキテクチャ設計
  • グローバルテンプレートの設計・強化および日本ローカライズ要件への対応
  • 設計権限者としてのアーキテクチャ判断およびプロジェクトガバナンスの遵守
  • 日本およびグローバルの業務・IT関係者との要件調整および合意形成
  • 要件定義から本番稼働判定、カットオーバーまでの実行フェーズにおけるリード業務
  • MES、EWM、外部システム等とのインターフェースおよび統合設計の推進

【大手製造業/新規ERP導入支援(SD/MM/CO)】浜松町(ハイブリッド)/構想策定~要件定義におけるCRP推進

月額単価
1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
大手製造業における新規ERP導入に向けた、構想策定から要件定義フェーズを支援するプロジェクトです。 SAP標準機能を最大限に活用するFit to Standard(F2S)の考え方を軸に、CRP(Conference Room Pilot)を通じて業務要件を具体化していく重要な役割を担います。 クライアントの業務課題を深く理解し、SAPの標準プロセスに合わせた最適な業務フローの構築と意思決定をサポートすることが求められるポジションです。 各領域(SD、MM、CO)のプロフェッショナルとして、製造業特有の要件を整理しながら、プロジェクトの成功に向けた上流工程のコンサルティング業務を担当していただきます。 主な業務内容:
  • Fit to Standardに基づいた業務要件の定義およびCRPの推進・実施
  • SAP標準機能を前提としたTo-Be業務プロセスの策定とドキュメント化
  • クライアント調整、課題整理、意思決定支援のための資料作成
  • 各領域における標準機能とのフィット&ギャップ分析および代替案の提示

【SAP導入プロジェクト】広島(原則リモート)/FI-AP領域の外部設計フェーズ推進

月額単価
1,450,000円 / 月
稼働場所
広島県
業務領域
設計
稼働率:
100%
作業内容:
大手企業向けSAP導入プロジェクトにおける、FI(AP領域)コンサルタント支援案件です。 現在は要件定義フェーズが進行しており、2026年2月以降の外部設計フェーズを中心に対応いただける交代要員を募集しております。 債務管理(AP)領域を主軸に、これまでの要件を踏まえた詳細な設計検討や仕様整理を推進いただくポジションです。 インターフェース関連は別体制が担当し、実際のプログラム実装作業も対象外となるため、設計や関係者調整といったコンサルティング業務に専念できる環境です。 基本はリモートワークでの対応となりますが、プロジェクトの状況により広島への短期出張が発生する可能性があるため、柔軟に対応いただける方を歓迎いたします。 これまでのSAP導入における知見を活かし、プロジェクトの安定稼働に向けた設計・検討業務を担当していただきます。 主な業務内容:
  • FI-AP領域における外部設計書の作成および仕様整理
  • 業務要件に基づいたシステム設計の検討および課題管理
  • PMや他モジュール担当者との連携、調整、レビュー対応
  • 必要に応じた質疑応答および各種ドキュメント作成

【空輸業向けSAP導入(CO)】新橋(リモート併用)/管理会計領域の導入支援

月額単価
1,000,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, テスト
稼働率:
100%
作業内容:
空輸業を展開する企業における、SAP導入プロジェクトの支援案件です。 管理会計(CO)領域のコンサルタントとして、現行業務の分析からシステムへの落とし込み、各フェーズにおける導入支援を担当していただきます。 本プロジェクトではプロジェクト管理(PS)領域との連携も重要視されており、広範な管理会計スキルの活用が期待される環境です。 勤務地は新橋となりますが、在宅勤務を併用したハイブリッドな働き方が可能であり、遠方にお住まいの方についてはフルリモートの相談も柔軟に受け付けております。 現フェーズは2026年3月までの期間を予定しておりますが、その後の後続フェーズへの継続参画も強く想定された中長期的な募集となっています。 プロフェッショナルな知見を活かし、空輸業界の基幹システム構築における管理会計の最適化を推進していただきます。 主な業務内容:
  • CO領域における要件定義、設計、およびシステム設定の支援
  • PS(プロジェクト管理)領域との連携を考慮した業務プロセス検討
  • プロジェクト推進に伴う各種ドキュメント作成および課題管理
  • ユーザー部門や他チームとの要件調整および合意形成支援

【エネルギー会社向けFI運用保守】東京都/問い合わせ・障害対応、法改正対応

月額単価
950,000円 / 月
稼働場所
東京都
業務領域
運用・保守
稼働率:
100%
作業内容:
大手エネルギー会社様の基幹システムであるSAP S/4HANAの安定稼働を支える重要な運用保守案件です。 主にSAP FIモジュール(GL/AP/AR/CM)を中心とした機能保守を担当していただきます。 法改正対応、仕様変更対応、ユーザーからの問い合わせ対応など、幅広い保守業務を通じてクライアントのビジネス継続に貢献することがミッションです。 ご自身の専門性とコミュニケーション能力を活かし、クライアントを能動的にサポートしていただきます。 主な業務内容:
  • エンドユーザ様からの問い合わせ対応、障害対応
  • SAPシステムの仕様変更対応、機能改善対応
  • 法改正に伴うシステム対応、設定変更

【医薬業界/次期基幹システム構築(CO)】高田馬場+九段下・リモート併用/管理会計コンサルタント

月額単価
1,300,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
稼働率:
100%
作業内容:
医薬業界における次期基幹システム構築を目的とした、S/4HANA移行プロジェクトです。 現行のSAP ERP 6.0(販売管理、在庫・購買管理、生産管理、会計、原価管理)からS/4HANAへの刷新を実施します。 Greenfield(新規刷新と既存業務フローの見直し)のアプローチを採用し、2028年1月の本番稼働を目指します。 フリーランスのSAPコンサルタントとして、主に管理会計領域における要件定義、設計フェーズを担当していただきます。 主な業務内容:
  • 管理会計(CO)領域におけるシステム機能要件の検討および整理
  • 顧客との対話を通じたシステム化要件の詳細化とドキュメント作成
  • PL/BS/CFの単体・連結レポート要件に基づいたデータ要件の定義

【SAP保守運用支援(SD, MM)】静岡県浜松市/リモート併用/保守運用支援

月額単価
1,400,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPの保守運用支援プロジェクトにご参画いただきます。 高度なIT戦略立案フェーズではなく、現場の課題解決を着実に実行するメンバーとしての役割が期待されます。 社員の方のリードのもと、主体的に業務を遂行(自走)できる方、または各モジュール領域のコンサルタントとして一人称で運用・維持管理ができる方を募集しています。 ユーザーからの問い合わせ対応、見積作成、テスト推進など、具体的な保守運用支援業務を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証

【基幹システム刷新(S/4HANA FI/BTP)】東京・二子玉川(リモート併用)/移行推進サブリード

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, その他
稼働率:
100%
作業内容:
大手企業様の基幹システムをSAP S/4HANAへ刷新する大規模プロジェクトです。 このプロジェクトにおいて、SAP FIモジュールとBTPアドオンを中心とした移行推進チームのサブリードとしてご活躍いただきます。 自ら主体的に動き、移行方針書や移行計画書のドラフト作成からクライアントとのセッションを主導し、合意形成までの一連のプロセスを担当していただきます。 主な業務内容:
  • 移行推進チームのサブリード業務
  • 移行方針書、移行計画書など、各種ドキュメントの作成とクライアントへの提案
  • クライアントおよび関連チームとの調整、合意形成の推進
  • FIモジュールおよびBTPアドオンに関する課題解決のサポート

【販社受発注システム再構築(CO/FI)】神奈川・川崎(リモート併用)/構想策定・効果算定

月額単価
1,700,000円 / 月
稼働場所
神奈川県
業務領域
要件定義
稼働率:
100%
作業内容:
販社(販売会社)における受発注システムの再構築構想を策定する、極めて重要な最上流フェーズの案件です。 この構想フェーズでは、最適なSAPソリューション選定に向けたインプット情報を作成することが主要なミッションとなります。 具体的には、概算費用と効果を試算するためのモデル作成、そして会計領域を中心とした施策検討を実施します。 特に顧客別・商品別収益分析(CO)の施策やToBe像を確立するため、CO/FIの知見が不可欠となるポジションを担当していただきます。 主な業務内容:
  • 施策別効果分析モデルの作成(業務削減、人件費、運転資本などの定量化)
  • 業務/IT統合の観点を取り入れた改革シナリオの立案
  • 経営層向けの説明資料(ROI/Payback試算を含む構想報告書)の作成支援
  • 現行業務工数ヒアリング、帳票/IF数集計
  • 会計領域の施策検討(顧客別、商品別収益分析(CO)のToBe設計およびデータ連携方式検討)

【ECC→S4HANA移行(MM)】東京都/リモート併用/グローバルテンプレート構築・展開

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
稼働率:
100%
作業内容:
ECCからS/4HANAへの移行に伴う、グローバルテンプレートの構築・展開プロジェクトです。 パイロット拠点のテストフェーズ完了に伴い、東南アジア、インド、UAEへの次拠点展開と、中国、ヨーロッパ、アフリカ、北米への次々拠点展開を並行して進めていきます。 本案件では、MM領域のコンサルタントとして、テンプレート導入における要件定義や設計、テスト推進などを担当していただきます。 主な業務内容:
  • コンフィグ要件定義、および設定担当者への説明・レビュー
  • アドオン要件定義(特に帳票関連)、および設計者への説明・レビュー
  • 結合テスト、ウォークスルーテストシナリオの検討
  • 発生する個別課題の検討および解決推進
  • 顧客(情報システム部門)との直接の調整・フェーシング
この記事のポイント

バッチインプットとは?

バッチインプットとは、SAP上で手作業で入力する動作をプログラムで再現し自動入力させる手法です。
アドオンプログラムの中でバッチインプットの処理をすることが可能で、大量のマスタデータやトランザクションデータを処理する際に便利です。

しかしバッチインプットにもデメリットがあります。

バッチインプットプログラムのデメリット

  • 処理速度が遅い。
  • SAPのバージョンやGUIのバージョンの違いにより、画面仕様(画面名や画面項目名や画面遷移など)が異なる場合に動かなくなってしまう可能性があります。

対象のマスタデータやトランザクションデータを更新するためのBAPIが準備されていれば、BAPIを用いる方がよいでしょう。

バッチインプットレコーダーの使用方法

バッチインプットレコーダーとは、SAPの画面を実際に動かしたとき、システム的にどのような挙動をしているのかを記録するものです。
この結果を元にバッチインプットプログラムを作成していきます。
(慣れたらバッチインプットレコーダーを使わずともバッチインプット用のプログラムを作成できるようになるかも)

さっそくバッチインプットレコーダーを動かしてみましょう!
ここではT-CODE:MM01(品目マスタ登録)をレコーディングしていきます。

バッチインプットレコーダーを使ってみる

バッチインプットレコードを登録してみましょう。
ここでは品目マスタ登録(T-CODE:MM01)のバッチインプットをレコーディングしていく例をみていきます!

まず、T-CODE:SHDBを起動し、「新規記録」を押下します。

バッチインプットレコーダーの使用方法

以下の項目に入力します。

  • レコード
    T-CODE:SHDBの一覧画面に表示されるレコード名になります。分かりやすい名称にしましょう。
  • トランザクションCode
    バッチインプットさせたいトランザクションコードを入力します。
  • バックグラウンドシミュレーションモード
    オンライン実行とバックグラウンド実行で挙動が異なるトランザクションコードが存在します。
    その場合はバッチインプットで動作させたい実行モードに合わせて設定します。
バッチインプットレコーダーの使用方法

ここでは例として品目マスタ登録(T-CODE:MM01)を行っています。
以下のように登録する品目の情報を入力していきます。

  • 品目コード/産業コード/品目タイプを入力してENTER
  • 基本データ1/基本データ2 ビューを選択してENTER
バッチインプットレコーダーの使用方法(品目マスタ登録)

次に以下の手順を実行します。

  • 基本データ1:品目テキスト/基本数量単位/品目グループを入力してENTER
  • 基本データ2:標準テキスト/危険物インジケーターPを入力してENTER
バッチインプットレコーダーの使用方法(品目マスタ登録)
  • 最後に登録確認用のポップアップが出力されるので「Yes」を押下
バッチインプットレコーダーの使用方法(品目マスタ登録)

以上で品目マスタ登録(T-CODE:MM01)での操作は終わりになります!

次に表示される画面は、品目マスタ登録(T-CODE:MM01)を操作した際のバッチインプットレコードの内容です。

バッチインプットレコーダーの結果

バッチインプットレコーダーで記録したものは、SAPで操作した全ての動作や自動で入力された内容も入っており、実際にバッチインプットを動かす際には不要となるレコードも含まれています

バッチインプットのレコードの見方

プログラム/Dynproのブロックごとに画面での動作を表しています。

下図のように1つの画面に対して1つのプログラム/Dynproのブロックに対応しており、例えばT-CODE:MM01の最初の画面はプログラム:SAPLMGMM/Dynpro:0060のブロックで確認できます。

バッチインプットレコーダーをした結果の見方

また、1つのプログラム/Dynproのブロック毎に1つのOKCODEのレコード(項目名が「BDC_OKCODE」のレコード)が存在しています。
これはENTERや実行ボタンなどを押下した場合の内部的なコードを示しています。

加えて、トランザクションコードから呼び出した画面で入力した項目は、以下のようにバッチインプットレコード上でどの項目名に対してどのような項目値を入力したかが記録されています。

バッチインプットレコーダーをした結果の見方

項目名が「BDC_CURSOR」や「BDC_SUBSCR」のレコードはカーソルがどの項目に当てられているかが記録されていますが、これはバッチインプットの処理上では不要である場合がほとんどです。

記録されたバッチインプットレコード

これまでに記録されたバッチインプットレコードの内容を見てみましょう。

プログラムDynpro開始ID項目名項目値
SAPLMGMM0060X
BDC_CURSORRMMG1-MATNR
BDC_OKCODE=ENTR
RMMG1-MATNRtest_mat_sato01
RMMG1-MBRSHM
RMMG1-MTARTROH
SAPLMGMM0070X
BDC_CURSORMSICHTAUSW-DYTXT(02)
BDC_OKCODE=ENTR
MSICHTAUSW-KZSEL(01)X
MSICHTAUSW-KZSEL(02)X
SAPLMGMM4004X
BDC_OKCODE/00
BDC_SUBSCRSAPLMGMM 2004TABFRA1
BDC_SUBSCRSAPLMGD1 1002SUB1
MAKT-MAKTXtest material
BDC_SUBSCRSAPLMGD1 2001SUB2
BDC_CURSORMARA-MATKL
MARA-MEINSPC
MARA-MATKLZBRAKES
MARA-MSTAE03
BDC_SUBSCRSAPLMGD1 2561SUB3
BDC_SUBSCRSAPLMGD1 2007SUB4
BDC_SUBSCRSAPLMGD1 2005SUB5
BDC_SUBSCRSAPLMGD1 2011SUB6
BDC_SUBSCRSAPLMGD1 2033SUB7
BDC_SUBSCRSAPLMGD1 0001SUB8
BDC_SUBSCRSAPLMGD1 0001SUB9
BDC_SUBSCRSAPLMGD1 0001SUB10
SAPLMGMM4004X
BDC_OKCODE/00
BDC_SUBSCRSAPLMGMM 2004TABFRA1
BDC_SUBSCRSAPLMGD1 1002SUB1
MAKT-MAKTXtest material
BDC_SUBSCRSAPLMGD1 2002SUB2
MARA-NORMTaaaaa
BDC_SUBSCRSAPLMGD1 2010SUB3
BDC_CURSORMARA-PROFL
MARA-PROFL001
BDC_SUBSCRSAPLLO_SGT_MM 2016SUB4
BDC_SUBSCRSAPLMGD1 2003SUB5
BDC_SUBSCRSAPLMGD1 2004SUB6
BDC_SUBSCRSAPLMGD1 2499SUB7
BDC_SUBSCRSAPLADRT21 2000SUB8
BDC_SUBSCRSAPLFGSCMPRD_DYN 3011SUB9
BDC_SUBSCRSAPLMGD1 2012SUB10
SAPLSPO10300X
BDC_OKCODE=YES

「BDC_CURSOR」や「BDC_SUBSCR」はカーソルの位置を表すもので、実際にコーディングする際は不要なレコードになります。一部の場合を除いて、大抵の場合は不要とみなして良いでしょう。
それらを削除したレコードは以下になります。

プログラムDynpro開始ID項目名項目値
SAPLMGMM0060X
BDC_OKCODE=ENTR
RMMG1-MATNRtest_mat_sato01
RMMG1-MBRSHM
RMMG1-MTARTROH
SAPLMGMM0070X
BDC_OKCODE=ENTR
MSICHTAUSW-KZSEL(01)X
MSICHTAUSW-KZSEL(02)X
SAPLMGMM4004X
BDC_OKCODE/00
MAKT-MAKTXtest material
MARA-MEINSPC
MARA-MATKLZBRAKES
MARA-MSTAE03
SAPLMGMM4004X
BDC_OKCODE/00
MAKT-MAKTXtest material
MARA-NORMTaaaaa
MARA-PROFL001
SAPLSPO10300X
BDC_OKCODE=YES

上記のうち、色が付いているレコードは画面上でデフォルトで入力されている項目値であり、バッチインプットの際も自動入力されるのでコーディングする際には不要になるレコードになります。
それらを削除したレコードは以下になります。

プログラムDynpro開始ID項目名項目値
SAPLMGMM0060X
BDC_OKCODE=ENTR
RMMG1-MATNRtest_mat_sato01
RMMG1-MBRSHM
RMMG1-MTARTROH
SAPLMGMM0070X
BDC_OKCODE=ENTR
MSICHTAUSW-KZSEL(01)X
MSICHTAUSW-KZSEL(02)X
SAPLMGMM4004X
BDC_OKCODE/00
MAKT-MAKTXtest material
MARA-MEINSPC
MARA-MATKLZBRAKES
SAPLMGMM4004X
BDC_OKCODE/00
MARA-NORMTaaaaa
MARA-PROFL001
SAPLSPO10300X
BDC_OKCODE=YES

だいぶスッキリしましたね。
この内容と同じバッチインプットレコードのデータを用いれば、品目マスタを登録できるはずです。

バッチインプットプログラムを作成

実際にABAPを用いてバッチインプットプログラムを作ってみましょう。

バッチインプットセッションを登録してT-CODE:SM35で実行する方法もありますが、今回はプログラムの中から直接トランザクションコードを呼び出してバッチインプットする方法を解説します。

バッチインプットプログラムの作成手順は以下になります。

バッチインプットプログラムの処理の流れ

  • 通称「BDCテーブル」と呼ばれる内部テーブルを作成
    標準で準備されている構造「BDCDATA」を用い、先ほど編集したバッチインプットレコードと同様の構造で内部テーブルを作成します
  • CALL TRANSACTIONでトランザクションコードを呼び出し
    BDCテーブルの内容でトランザクションコードを動かします。
  • メッセージ内容を読み込み後続処理
    バッチインプット結果はメッセージに格納されているので、そのメッセージを読み込み成功した場合/失敗した場合でログを残す等の処理を行います。

実際のプログラムを見た方が早いと思いますので、先ほどの品目マスタ作成の例を用いてサンプルプログラムをお見せします!

サンプルプログラム

以下の前提条件でサンプルプログラムを作成してみました。

  • 同じ品目コードを登録することはできないので、ここでは選択画面で登録する品目コードを入力させるようにしています。
  • バッチインプット後のメッセージはWRITE分で出力しています。
  • SAPやGUIのバージョンにより期待値通りに動作しないことがあります。

ABAPを用いたバッチインプットのサンプルコード

*&---------------------------------------------------------------------*
*& Report ZTEST_SATO20
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ztest_sato20 NO STANDARD PAGE HEADING.

* 選択項目定義
PARAMETERS:
  p_matnr TYPE mara-matnr. " 品目コード

* 変数定義
DATA:
  it_bdcdata    TYPE TABLE OF bdcdata,   " BDCテーブル
  it_bdcmsgcoll TYPE TABLE OF bdcmsgcoll. " バッチインプット処理メッセージ

* 主処理
START-OF-SELECTION.

* 品目マスタ登録の第一画面
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '0060'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=ENTR'.
  PERFORM bdc_field       USING 'RMMG1-MATNR'
                                p_matnr.        " 選択画面で入力した品目コード
  PERFORM bdc_field       USING 'RMMG1-MBRSH'
                                'M'.
  PERFORM bdc_field       USING 'RMMG1-MTART'
                                'ROH'.

* 品目マスタ登録のビュー選択画面
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '0070'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=ENTR'.
  PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(01)'
                                'X'.
  PERFORM bdc_field       USING 'MSICHTAUSW-KZSEL(02)'
                                'X'.

* 品目マスタ登録の基本データ1画面
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'MAKT-MAKTX'
                                'test material'.
  PERFORM bdc_field       USING 'MARA-MEINS'
                                'PC'.
  PERFORM bdc_field       USING 'MARA-MATKL'
                                'ZBRAKES'.

* 品目マスタ登録の基本データ2画面
  PERFORM bdc_dynpro      USING 'SAPLMGMM' '4004'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '/00'.
  PERFORM bdc_field       USING 'MARA-NORMT'
                                'aaaaa'.
  PERFORM bdc_field       USING 'MARA-PROFL'
                                '001'.

* 品目マスタの登録確認画面
  PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.
  PERFORM bdc_field       USING 'BDC_OKCODE'
                                '=YES'.

* バッチインプット処理
  CALL TRANSACTION 'MM01'      " MM01を実行
             USING it_bdcdata  " バッチインプットデータ
              MODE 'N'         " 処理モード
            UPDATE 'A'         " 更新モード
          MESSAGES INTO it_bdcmsgcoll.

* メッセージ出力処理
  LOOP AT it_bdcmsgcoll INTO DATA(wa_bdcmsgcoll) .
*   メッセージを格納
    MESSAGE ID wa_bdcmsgcoll-msgid
          TYPE wa_bdcmsgcoll-msgtyp
        NUMBER wa_bdcmsgcoll-msgnr
          WITH wa_bdcmsgcoll-msgv1
               wa_bdcmsgcoll-msgv2
               wa_bdcmsgcoll-msgv3
               wa_bdcmsgcoll-msgv4
          INTO DATA(l_text).

*   メッセージを出力
    WRITE /001 l_text.

  ENDLOOP.

*----------------------------------------------------------------------*
*        Start new screen                                              *
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program TYPE c
                      dynpro  TYPE c.
* 変数定義
  DATA:
    wa_bdcdata TYPE bdcdata. " BDC構造

  CLEAR wa_bdcdata.
  wa_bdcdata-program  = program.
  wa_bdcdata-dynpro   = dynpro.
  wa_bdcdata-dynbegin = 'X'.
  APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.
*----------------------------------------------------------------------*
*        Insert field                                                  *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam TYPE c
                     fval TYPE c.
* 変数定義
  DATA:
    wa_bdcdata TYPE bdcdata. " BDC構造

  CLEAR wa_bdcdata.
  wa_bdcdata-fnam = fnam.
  wa_bdcdata-fval = fval.
  APPEND wa_bdcdata TO it_bdcdata.
ENDFORM.

サンプルプログラムの解説

内部テーブル「it_bdcdata」がBDCテーブルです。
このBDCテーブルに対して、関数「bdc_dynpro(画面名の設定)」「bdc_field(項目入力値やOKコードの設定)」を用いて、バッチインプット用のレコードを格納させていきます。

その後、CALL TRANSACTIONでT-CODE:MM01を呼び出します。

CALL TRANSACTIONのパラメータ

CALL TRANSACTIONでは複数のパラメータを設定することができます。
以下に解説しますが、いろいろ試してみてどういう動作をするか実際動作確認してみると良いでしょう。

CALL TRANSACTIONのパラメータ名パラメータの解説
USING
(使用するBDCテーブル)
BDCテーブルを設定します。
MODE
(処理モード)
バッチインプット時の画面を表示するかどうか設定をすることができます。

【設定内容】
A:すべての画面を表示
E:エラー画面のみ表示
N:画面の表示はしない
※AやEはテスト時に使う場合が多く、たいていの場合はNを設定します。
UPDATE
(更新モード)
データの更新モードを設定することができます。
※指定しない場合はAになります。

【設定内容】
A:非同期更新
 更新の終了を待たず次の処理を行います。
 処理は早いですがロックエラー等の原因にもなります。

S:同期更新
 更新の終了まで待機し、終了したら次の処理を行います。
 非同期更新より処理は遅くなります。

L:ローカル更新
呼出元プログラムと同じダイアログプロセスで実行します。※筆者は使ったことありません。
MESSAGES INTO
(メッセージテーブル)
バッチインプットの処理中に表示されるメッセージを格納する内部テーブルを設定します。
例えば、エラーのメッセージタイプのメッセージのみ取り出してログに出力するような使用をします。

構造は「BDCMSGCOLL」を参照します。
博士

ちょっとだけABAP7.4以降の新構文を取り入れているので、以下も参考に見比べてみると良いのじゃ!

サンプルプログラムの実行

最後にサンプルプログラムを実際に動かしてみて、期待値通りに動作するか確認してみましょう!

パターン①:既存の品目コードを入力して実行

既に登録されている品目コードを選択画面へ入力して、品目マスタを登録してみましょう。
このパターンは想定されていなかったので品目マスタへの登録は失敗するはずです。

バッチインプットを用いたアドオンプログラム実行

実行した結果は以下になります。
期待値通りに、品目マスタは更新されませんでした。

バッチインプットを用いたアドオンプログラム実行結果

実際の開発では、既存の品目コードが入力された場合も考慮してBDCテーブルを作成する必要があります!

バッチインプットで入力されるであろうデータについて、あらゆるパターンを考慮してBDCテーブルを作成するようにすべし!

パターン②:新規の品目コードを入力して実行

次に登録されていない品目コードを選択画面に入力して実行してみましょう。
この場合は品目マスタの登録に成功するはずです。

バッチインプットを用いたアドオンプログラム実行

実行した結果は以下になります。

メッセージの内容的にも品目マスタが登録された旨が表示され、T-CODE:MM03でも品目マスタが登録されていることが確認できました!

バッチインプットを用いたアドオンプログラム実行結果

さいごに

バッチインプットを用いたアドオンプログラムは便利な機能ですが、すべての入力パターンを網羅してBDCテーブルを作成することや、実行結果をログに残し失敗したデータをどうやってリカバリするかまで検討して設計することが重要になります。

博士

バッチインプットに関する解説は以上じゃ!

新着のSAPフリーランス案件

【自動車業界向けSAP S/4HANAグローバルテンプレート展開(全モジュール)】大手町/ソリューションアーキテクト

月額単価
1,800,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
世界有数の自動車技術企業における、SAP S/4HANAグローバルテンプレートの日本展開および継続的な強化を担う長期プログラムです。 日本国内へのロールアウトにおける中核メンバーとして、グローバル標準の維持と日本固有要件の最適化を両立させるためのアーキテクチャ設計をリードしていただきます。 設計権限者としてアーキテクチャの意思決定やガバナンス遵守を担いつつ、日本およびグローバルの関係者と密に連携しながらプロジェクトを推進していただきます。 BlueprintからBuild、Test、Cutover、Go-Liveに至るまでの一連のフェーズにおいて、End-to-Endのソリューション設計および実行をリードしていただきます。 SAP本体のみならず、MESやEWM、サードパーティ製システムを含む非SAPシステムとの統合設計についても統合的な視点で担当していただきます。 主な業務内容:
  • SAP S/4HANAにおけるエンドツーエンドのソリューションアーキテクチャ設計
  • グローバルテンプレートの設計・強化および日本ローカライズ要件への対応
  • 設計権限者としてのアーキテクチャ判断およびプロジェクトガバナンスの遵守
  • 日本およびグローバルの業務・IT関係者との要件調整および合意形成
  • 要件定義から本番稼働判定、カットオーバーまでの実行フェーズにおけるリード業務
  • MES、EWM、外部システム等とのインターフェースおよび統合設計の推進

【大手製造業/新規ERP導入支援(SD/MM/CO)】浜松町(ハイブリッド)/構想策定~要件定義におけるCRP推進

月額単価
1,500,000円 / 月
稼働場所
東京都
業務領域
要件定義
稼働率:
100%
作業内容:
大手製造業における新規ERP導入に向けた、構想策定から要件定義フェーズを支援するプロジェクトです。 SAP標準機能を最大限に活用するFit to Standard(F2S)の考え方を軸に、CRP(Conference Room Pilot)を通じて業務要件を具体化していく重要な役割を担います。 クライアントの業務課題を深く理解し、SAPの標準プロセスに合わせた最適な業務フローの構築と意思決定をサポートすることが求められるポジションです。 各領域(SD、MM、CO)のプロフェッショナルとして、製造業特有の要件を整理しながら、プロジェクトの成功に向けた上流工程のコンサルティング業務を担当していただきます。 主な業務内容:
  • Fit to Standardに基づいた業務要件の定義およびCRPの推進・実施
  • SAP標準機能を前提としたTo-Be業務プロセスの策定とドキュメント化
  • クライアント調整、課題整理、意思決定支援のための資料作成
  • 各領域における標準機能とのフィット&ギャップ分析および代替案の提示

【SAP導入プロジェクト】広島(原則リモート)/FI-AP領域の外部設計フェーズ推進

月額単価
1,450,000円 / 月
稼働場所
広島県
業務領域
設計
稼働率:
100%
作業内容:
大手企業向けSAP導入プロジェクトにおける、FI(AP領域)コンサルタント支援案件です。 現在は要件定義フェーズが進行しており、2026年2月以降の外部設計フェーズを中心に対応いただける交代要員を募集しております。 債務管理(AP)領域を主軸に、これまでの要件を踏まえた詳細な設計検討や仕様整理を推進いただくポジションです。 インターフェース関連は別体制が担当し、実際のプログラム実装作業も対象外となるため、設計や関係者調整といったコンサルティング業務に専念できる環境です。 基本はリモートワークでの対応となりますが、プロジェクトの状況により広島への短期出張が発生する可能性があるため、柔軟に対応いただける方を歓迎いたします。 これまでのSAP導入における知見を活かし、プロジェクトの安定稼働に向けた設計・検討業務を担当していただきます。 主な業務内容:
  • FI-AP領域における外部設計書の作成および仕様整理
  • 業務要件に基づいたシステム設計の検討および課題管理
  • PMや他モジュール担当者との連携、調整、レビュー対応
  • 必要に応じた質疑応答および各種ドキュメント作成

【空輸業向けSAP導入(CO)】新橋(リモート併用)/管理会計領域の導入支援

月額単価
1,000,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計, テスト
稼働率:
100%
作業内容:
空輸業を展開する企業における、SAP導入プロジェクトの支援案件です。 管理会計(CO)領域のコンサルタントとして、現行業務の分析からシステムへの落とし込み、各フェーズにおける導入支援を担当していただきます。 本プロジェクトではプロジェクト管理(PS)領域との連携も重要視されており、広範な管理会計スキルの活用が期待される環境です。 勤務地は新橋となりますが、在宅勤務を併用したハイブリッドな働き方が可能であり、遠方にお住まいの方についてはフルリモートの相談も柔軟に受け付けております。 現フェーズは2026年3月までの期間を予定しておりますが、その後の後続フェーズへの継続参画も強く想定された中長期的な募集となっています。 プロフェッショナルな知見を活かし、空輸業界の基幹システム構築における管理会計の最適化を推進していただきます。 主な業務内容:
  • CO領域における要件定義、設計、およびシステム設定の支援
  • PS(プロジェクト管理)領域との連携を考慮した業務プロセス検討
  • プロジェクト推進に伴う各種ドキュメント作成および課題管理
  • ユーザー部門や他チームとの要件調整および合意形成支援

【エネルギー会社向けFI運用保守】東京都/問い合わせ・障害対応、法改正対応

月額単価
950,000円 / 月
稼働場所
東京都
業務領域
運用・保守
稼働率:
100%
作業内容:
大手エネルギー会社様の基幹システムであるSAP S/4HANAの安定稼働を支える重要な運用保守案件です。 主にSAP FIモジュール(GL/AP/AR/CM)を中心とした機能保守を担当していただきます。 法改正対応、仕様変更対応、ユーザーからの問い合わせ対応など、幅広い保守業務を通じてクライアントのビジネス継続に貢献することがミッションです。 ご自身の専門性とコミュニケーション能力を活かし、クライアントを能動的にサポートしていただきます。 主な業務内容:
  • エンドユーザ様からの問い合わせ対応、障害対応
  • SAPシステムの仕様変更対応、機能改善対応
  • 法改正に伴うシステム対応、設定変更

【医薬業界/次期基幹システム構築(CO)】高田馬場+九段下・リモート併用/管理会計コンサルタント

月額単価
1,300,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
稼働率:
100%
作業内容:
医薬業界における次期基幹システム構築を目的とした、S/4HANA移行プロジェクトです。 現行のSAP ERP 6.0(販売管理、在庫・購買管理、生産管理、会計、原価管理)からS/4HANAへの刷新を実施します。 Greenfield(新規刷新と既存業務フローの見直し)のアプローチを採用し、2028年1月の本番稼働を目指します。 フリーランスのSAPコンサルタントとして、主に管理会計領域における要件定義、設計フェーズを担当していただきます。 主な業務内容:
  • 管理会計(CO)領域におけるシステム機能要件の検討および整理
  • 顧客との対話を通じたシステム化要件の詳細化とドキュメント作成
  • PL/BS/CFの単体・連結レポート要件に基づいたデータ要件の定義

【SAP保守運用支援(SD, MM)】静岡県浜松市/リモート併用/保守運用支援

月額単価
1,400,000円 / 月
稼働場所
静岡県
業務領域
運用・保守
稼働率:
100%
作業内容:
SAPの保守運用支援プロジェクトにご参画いただきます。 高度なIT戦略立案フェーズではなく、現場の課題解決を着実に実行するメンバーとしての役割が期待されます。 社員の方のリードのもと、主体的に業務を遂行(自走)できる方、または各モジュール領域のコンサルタントとして一人称で運用・維持管理ができる方を募集しています。 ユーザーからの問い合わせ対応、見積作成、テスト推進など、具体的な保守運用支援業務を担当していただきます。 主な業務内容:
  • ユーザーからの問い合わせ対応、トラブルシューティング、要望ヒアリング
  • 見積作成、WBS策定、スケジュール管理
  • 受け入れテストの計画、実施、検証

【基幹システム刷新(S/4HANA FI/BTP)】東京・二子玉川(リモート併用)/移行推進サブリード

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, その他
稼働率:
100%
作業内容:
大手企業様の基幹システムをSAP S/4HANAへ刷新する大規模プロジェクトです。 このプロジェクトにおいて、SAP FIモジュールとBTPアドオンを中心とした移行推進チームのサブリードとしてご活躍いただきます。 自ら主体的に動き、移行方針書や移行計画書のドラフト作成からクライアントとのセッションを主導し、合意形成までの一連のプロセスを担当していただきます。 主な業務内容:
  • 移行推進チームのサブリード業務
  • 移行方針書、移行計画書など、各種ドキュメントの作成とクライアントへの提案
  • クライアントおよび関連チームとの調整、合意形成の推進
  • FIモジュールおよびBTPアドオンに関する課題解決のサポート

【販社受発注システム再構築(CO/FI)】神奈川・川崎(リモート併用)/構想策定・効果算定

月額単価
1,700,000円 / 月
稼働場所
神奈川県
業務領域
要件定義
稼働率:
100%
作業内容:
販社(販売会社)における受発注システムの再構築構想を策定する、極めて重要な最上流フェーズの案件です。 この構想フェーズでは、最適なSAPソリューション選定に向けたインプット情報を作成することが主要なミッションとなります。 具体的には、概算費用と効果を試算するためのモデル作成、そして会計領域を中心とした施策検討を実施します。 特に顧客別・商品別収益分析(CO)の施策やToBe像を確立するため、CO/FIの知見が不可欠となるポジションを担当していただきます。 主な業務内容:
  • 施策別効果分析モデルの作成(業務削減、人件費、運転資本などの定量化)
  • 業務/IT統合の観点を取り入れた改革シナリオの立案
  • 経営層向けの説明資料(ROI/Payback試算を含む構想報告書)の作成支援
  • 現行業務工数ヒアリング、帳票/IF数集計
  • 会計領域の施策検討(顧客別、商品別収益分析(CO)のToBe設計およびデータ連携方式検討)

【ECC→S4HANA移行(MM)】東京都/リモート併用/グローバルテンプレート構築・展開

月額単価
1,450,000円 / 月
稼働場所
東京都
業務領域
要件定義, 設計
稼働率:
100%
作業内容:
ECCからS/4HANAへの移行に伴う、グローバルテンプレートの構築・展開プロジェクトです。 パイロット拠点のテストフェーズ完了に伴い、東南アジア、インド、UAEへの次拠点展開と、中国、ヨーロッパ、アフリカ、北米への次々拠点展開を並行して進めていきます。 本案件では、MM領域のコンサルタントとして、テンプレート導入における要件定義や設計、テスト推進などを担当していただきます。 主な業務内容:
  • コンフィグ要件定義、および設定担当者への説明・レビュー
  • アドオン要件定義(特に帳票関連)、および設計者への説明・レビュー
  • 結合テスト、ウォークスルーテストシナリオの検討
  • 発生する個別課題の検討および解決推進
  • 顧客(情報システム部門)との直接の調整・フェーシング

★★★SAPラボのライター募集★★★

SAPラボでは、SAPの知識を活かして副業をしたい方を募集してるのじゃ!

SAPラボのライターの特徴

・ライティング初心者OK!
・報酬高単価!
・業務委託契約なので副業として最適!

SAP記事執筆者としての活動実績として利用可能なので、転職時や案件探しの際に企業へのアピール材料にもなります。

募集要項

・SAP導入や運用保守プロジェクトへの参画経験1年以上

ご応募/お問合せ先

info@sap-labo.com

少しでもご興味ある方、ぜひお気軽にご連絡下さい!

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

この記事を書いた人

株式会社スプラッシュエンジニアリング(https://splash-eng.com/)の代表取締役。

新卒でSAPエンジニアとして働き始め、SAPエンジニア・コンサルタント歴は10年以上。
2015年にシステム開発会社である株式会社Luxyを創業し2021年にバイアウト。その後、受託開発会社の株式会社アガルートITパートナーズ代表取締役も兼任。
2024年にこれまでの会社の代表を退任し株式会社スプラッシュエンジニアリングを創業。

一緒に「SAPラボ」を盛り上げてくれる副業ライター(SAP経験者)を募集してますので、お問い合わせよりお願いします!

この記事のポイント