SAP バッチインプット とは? ~使用方法・作成のポイント・運用上の課題と対策をわかりやすく解説~(vol.103)

  • 公開日:2023.09.18

SAPシステムへのデータの一括登録/更新処理を行う上で、「バッチインプット」は非常に重要な役割を果たします。バッチインプットは、ポイントを押さえれば、どのような登録/更新処理でも比較的簡単に作成が可能な反面、幾つかの運用上の課題が存在します。

本ブログ記事では、バッチインプットの概要や使用方法、処理の作成にあたってのポイントや運用上の課題と対策を解説します。
*本ブログの「SAPシステム」は、「SAP ERP」および「SAP S/4HANA」を指します。

SAP バッチインプット とは?

アドオンプログラムを介してSAPシステムの照会処理を行うことは、データベースに対するSQL文を発行すれば可能です。しかし、データの整合性を保持する必要があることを考慮すると、SAPシステム(のデータベース上のテーブル)への登録/更新処理をSQL文の発行により行うことは、運用上、許容できません。これは、SQL文を発行して直接データベース上のテーブルへ登録/更新を行った場合、入力データに不整合があったとしても、データ入力を防ぐ術がなく、テーブル間の不整合を引き起こす恐れがあるためです。
データの整合性を保ったままSAPシステム(のデータベース上のテーブル)への登録/更新を行うためには、SAPシステムに標準で用意されている「BAPI」と呼ばれるAPIを使用するか、「バッチインプット」と呼ばれる機能を使用する必要があります。

  • BAPI
    BAPIとは、Business Application Programming Interface の略語であり、SAPシステムに標準で用意されている汎用モジュールです。
    SAPシステムの各機能に応じた汎用モジュール=BAPIは外部システムから呼び出すことが可能なため、データの登録/更新のほか、チェックロジックなどの機能をSAPシステム外で開発したJavaやExcel VBAのアプリケーションから呼び出す際に使用します。
    *汎用モジュールとは、SAPシステム内のどのプログラムからも呼び出し可能な、再利用できるプログラムの部品です。あくまで部品のため、事前にロジックを実装しておき、後から汎用モジュールを呼び出す形で使用します。
  • バッチインプット
    バッチインプットとは、入力処理の動作を記録し、それをプログラムに組み込むことで、同じ入力処理を自動化する機能です。
    *根本的な動作は異なりますが、動作を記録して同じ処理を繰り返し行わせるという点では、ここ10年ほどで一気に利用が拡大したRPA(Robotic Process Automation)と似たような機能と考えると、イメージしやすいかと思います。

SAPシステム内のすべての機能に応じたBAPIが用意されているわけではなく、BAPIが存在したとしてもBAPI側のパラメーターが不足しているなどの可能性もあるため、そういった場合はバッチインプットを使用する必要があります。

次章では、バッチインプットの使用方法について解説します。

SAP バッチインプット を使用するには?

バッチインプットによるSAPシステムの登録/更新処理は、次の流れで行います。
*バッチインプットによる処理をアドオンプログラムに組み込む方法は割愛します。

  1. 入力処理の動作を記録
    まずはじめに、トランザクションレコーダー(Tr-Code:SHDB)を使用して、作成したい登録/変更処理を記録します。
    例えば、品目マスタの変更を記録する場合は、「Tr-Code MM02」を指定して実行し、変更後に保存ボタンを押すまでの一連の処理を行うと、下図のような記録結果画面が表示されます。この記録結果画面の「再生」ボタンをクリックすると、正しく記録が行えたかを確認できます。

    *赤枠で囲まれた箇所は、データ部分(品目コード/プラント/品目基本情報の各項目)です。
  2. 記録した動作と同じ入力処理を実行
    上図の記録結果画面の赤枠(データ部分)以外の部分は固定値、赤枠内(データ部分)は外部ファイルなどからの入力値として、ABAPプログラム内の内部テーブルに取込みます。その後、「CALL_TRANSACTION」という汎用モジュールに引き渡すことで、バッチインプット処理が実行されます。
    通常、プログラム内では、ループ処理により1レコードに対して1回の「CALL_TRANSACTION」を呼び出すことで、複数のレコードを処理します。

SAP バッチインプット で入力処理を記録する際のポイントとは?

本ブログ記事では割愛しましたが、バッチインプットは、入力処理の記録さえ正しく行えれば、プログラムへの組み込みは比較的容易に行うことが出来ます。裏を返せば、バッチインプットの使用には、入力処理の記録が重要な作業と言えます。
そこで、新たに入力処理の記録を行う際に知っておくべきポイントを解説します。

  • 垂直スクロール処理
    SAPシステムの画面では、垂直スクロールが行える画面が多く存在しますが、スクロール処理はスクロールバーをクリックして行っても記録されません。必ず、画面上部の「次ページ」アイコンを使用してください。
  • レコード選択が有効に記録されないケース
    例えば、品目マスタの変更時に表示されるビュー選択画面などは、行選択が記録されません。このようなケースでは、選択アイコンを使用してください。
  • レコード選択機能
    多数の明細から1レコードを選択して変更する場合の動作記録では、明細画面の下にある「位置」ボタンをクリックすることで、ポップアップ画面の検索を使用することが可能となります。
    これにより、変更する明細がどこにあっても、キー項目の検索で画面の1行目に表示することができるため、必ず1行目の変更として記録すれば問題ありません。


SAP バッチインプット を運用する際の課題と対策とは?

バッチインプットは、基本的に入力方法さえわかれば登録/更新処理を作成できるため、調査時間も少なく、BAPIと比べて作成が容易と言えます。その反面、いくつか課題があります。
本章では、バッチインプットの課題と対応策を解説します。

  • 課題1:処理速度が遅い
    処理にもよりますが、同じ更新をBAPIで実行するのに比べると、バッチインプットでは10倍以上の時間を要するケースが少なくありません。例えば、品目マスタなどの大量レコードの一括更新処理の場合、件数によっては運用時間内に処理が終了しない可能性があります。

    <対応策>
    単純な方法ですが、入力データを分割し、複数の処理を並行して起動することで、処理時間を短縮することが可能です。

  • 課題2:DBトランザクション処理が出来ない
    バッチインプットによる登録/更新処理は、画面操作と同様に保存ボタンが押下された時点でコミットされますので、2つ以上の画面の同期をとって処理することができません。
    例えば、品目マスタとBOMマスタの更新を順次実施した場合、後作業であるBOMマスタの更新で失敗すると、品目マスタのみが更新された状態となります。

    <対応策>
    エラーの発生を前提にプログラムを設計し、リカバリ方法考慮した設計を行うことで、更新漏れをカバーできます。
    ループ処理による大量データの更新プログラムでは、エラーとなったレコードをリカバリ処理の入力データとして利用可能形式で出力します。
    上記の品目マスタとBOMマスタの例であれば、既に品目マスタが更新された状態となっても、再度同じ処理を最初から実行することが可能なように設計することで、リカバリが容易になります。

  • 課題3:SAPシステムのバージョンアップに伴う画面変更により処理がエラーとなる
    SAP ECCへのEHP適用やSAP S/4HANAへのコンバージョンなど、SAPシステムのバージョンアップに伴い、画面展開/表示明細数/画面プログラム名 などが変更になるケースがあります。バッチインプット処理は画面動作の記録を基に作成されているため、このような変更が発生した場合には、動作しなくなります。一般ユーザーが利用しないBC系/システム系の画面では、特に多くの画面変更が行われるので、注意が必要です。

    <対応策>
    SAPシステムのバージョンアップが発生した際は、バッチインプットを組み込んだアドオンプログラムは必ずテストを実施しましょう。また、一定割合でプログラム変更が発生することを、事前に見積や計画に加味しておく必要があります。

まとめ

さてここまで、SAPシステム(のデータベース上のテーブル)への登録/更新処理には必要不可欠な「バッチインプット」について、入力処理の記録を行う際に初心者がつまずくであろう部分のTipsと、運用でつまずく可能性がある課題とその対応策について解説して参りました。
今後、SAP S/4HANAへのコンバージョンをご予定の場合は、バッチインプット処理の改修対応が必要となりますので、ご留意ください。

弊社では、SAP S/4HANAへの移行にあたり、SAP標準ツールの分析の結果に加え、プログラムの利用頻度の統計情報や権限情報なども含めた独自の分析を行うことで、より広範囲/高精度な影響調査が行えるソリューション「Panaya」をご提供しております。

Panaya」を活用したSAP社認定のSAP S/4HANA移行サービスをご提供しておりますので、ご興味ございましたら、是非、弊社までお声掛けください。
https://erp.dentsusoken.com/inquiry/

※本記事は、2023年9月1日時点の情報をもとに作成しています。製品/サービスに関する詳しいお問い合わせは、電通総研のWebサイトからお問い合わせください。