SAPシステムにデータを一括登録できる「バッチインプット」。
バッチインプットでデータを一括登録できるツールには、三井金属ユアソフト社の「汎用バッチインプット」、三菱電機インフォメーションシステムズ社の「MALSY」などが知られている。
しかし、バッチインプットできないトランザクションコード(T-CODE)は幾つか存在する。
本記事とは逆の、バッチインプットができるトランザクションコードを一覧を集めた記事は以下。
バッチインプットとは
バッチインプットとは、SAP GUI によるトランザクションコード実行時の画面操作を記録し、SAPシステムに再現させることでデータ登録を行う、RPAのようなSAPシステムのデータ登録手法である。
SAP GUI の画面操作の記録は、T-CODE:SHDB(トランザクションレコーダー)で行う。
画面操作した記録は、「BDC」と呼ばれるデータに記録される。
Excel に例えると、SHDBは「マクロレコーダー」で、BDCはマクロレコーダーによって出力される「VBAコード」に当たる。
出力されたBDCの、データ値の部分に登録したい値を設定し、SAPシステムにデータ登録を行うのが「バッチインプット」だ。
BDC は ABAPプログラムからも利用できるので、バッチインプットはアドオン開発でも、よく使われる手法である。
プログラムをゼロから書かなくても、データ登録を行うアプリケーションを作成できるため、開発生産性が高い手法だ。
バッチインプットできないトランザクションコード
SHDB は画面操作を記録するが、すべてのトランザクションコードの画面操作を記録できるわけではない。
画面操作を記録できないトランザクションコードは存在する。
また、画面操作は記録できるが、バッチインプットとして実行しようとすると、画面操作を再現できなかったり、エラーを発生させてしまうトランザクションコードもある。
では、バッチインプットできないトランザクションコードを見ていこう。
スクロールする画面
受注伝票登録(VA01)の受注伝票明細や発注伝票登録(ME21N)の発注伝票明細など、表形式の「明細一覧」を持つ画面において、縦横のスクロールは不可避である。
しかし、「スクロール」の操作をバッチインプットはサポートしていない。SHDBなどのトランザクションレコーダでスクロール操作をしても、スクロールの画面操作は記録されない。それは次のSAP Noteに書かれている。
376808 – バッチインプット: 明細一覧でスクロールできない (No scrolling in item list in batch input)
つまり、UIがテーブル形式で、スクロール操作が必要なT-CODEは、バッチインプットできない。
スクロール操作はバッチインプットレコーダーで記録できない…
ただし、明細の行番号を指定してジャンプするなど、スクロールせずに明細内を移動できるT-CODEなら、画面操作を記録できるので、バッチインプット可能である。
Enjoyトランザクション
「Enjoy」とは、1990年代後半に導入されたGUI(グラフィカルユーザーインターフェース)で、それまでの SAP R/3 のGUIをよりユーザーフレンドリーにする目的で開発された。それまでのGUIにはなかった、ドラッグ&ドロップ機能、詳細なアイコン、ユーザによる画面レイアウトのカスタマイズなどが特徴である。
Enjoyトランザクションは、バッチインプットと互換性がない。
以下のMMモジュールのトランザクションは、バッチインプットできない。SAP Note 381630 より。
381630 – MM の Enjoy トランザクションのバッチインプットを使用できない (Batch input for Enjoy transaction in MM not possible)
- 購買管理
- ME21N: 購買発注登録
- ME51N: 購買依頼登録
- サービス
- ML81N: サービス入力シート
- 在庫管理
- MIGO: 入庫 購買発注
- 請求書照合
- MIRO: 請求書登録
- MIR7: 請求書保留
- MIRA: 請求書登録
以下の SAP Note にも同様の記載がある。
217437 – ME21N/ME51N: バッチインプットと CATT を実行できない (ME21N/ME51N: Batch input and CATT not possible)
304122 – MIGO: バッチインプットと CATT がサポートされない (MIGO Batch input and CATT not supported)
381593 – MIRO/MIR7/MIRA:バッチインプットできない (MIRO/MIR7/MIRA: Batch Input is not possible)
ME21N、MIRO など、Enjoy画面はバッチインプットできない!
上記のNoteには記載されていないが、G/L勘定伝票入力の FB50、未転機G/L伝票入力の FV50 もEnjoyトランザクションなので、バッチインプット不可である。
FB50の代替手段は、標準プログラム RFBIBL00 を使用するか、汎用モジュール BAPI_ACC_DOCUMENT_POST を使用する。
VA01(受注伝票登録)
SDモジュールに欠かせない VA01(受注伝票登録)は、バッチインプットに向いていない(できないことはないが)。
受注明細を1件しか登録しないような、単純な伝票登録であれば、バッチインプットは可能である。
しかし、次のSAP Noteにあるように、バッチインプットできない画面操作がある。
381636 – バッチインプット VA01 でテキストがコピーされない (No transfer of texts during batch input VA01)
代替手段として、汎用モジュール BAPI_SALESORDER_CREATEFROMDAT2 を使用する。
MALSYはバッチインプットだけでなく、BAPIも使用できるので、アドオンを開発しなくても、Excelからの一括データ登録が可能である。
支払振替プログラム
SAP Note 361464 によれば、技術上の理由から支払振替 (CJFN) のバッチインプットはサポートされない。
361464 – (FI) バッチインプットでの CJFN: 更新されない ( (FI) CJFN via batch input: No update)
代替手段として、標準プログラム RFFMS300 を使用するとある。
ユーザーインターフェースが複雑なトランザクション
統合ワークベンチ(SE80)、ニューカスタマイザ(SE41)、ロール管理(PFCG)など。
これらは一例だが、ユーザーインターフェースが複雑で、画面操作をパターン化しにくい。そのため、バッチインプットできない。
こういったトランザクションは開発者向けで、エンドユーザは使用しない。バッチインプットできなくても、MBトランザクションほどの影響は受けないと考えられる。
SAP GUI に依存するトランザクション
CO11N(作業完了確認)は、ALVグリッド(テーブル形式のUI)を持たないので、一見するとバッチインプットできそうに見える。
しかし、実はEnjoyトランザクションの一つなので、バッチインプットと相性が悪い。
一応、「SAP GUI 経由」という条件付きで、バッチインプットは可能だ。
つまり、SAP GUI を表示した状態ならバッチインプットできるが、SAP GUIを持たないサーバサイドで実行するアドオンなど、バックグラウンドプロセスとしては実行できない。
もっとも、CO11N はEnjoyトランザクションであるから、登録できない項目も存在する。たとえば、画面下にあるテキスト欄は、バッチインプットレコードしても記録されないため、バッチインプット実行してもテキストの入力はできない。
CO11N の旧T-CODEである CO11 なら、Enjoyではないのでバッチインプット可能だ。
また、CO11Nに相当する汎用モジュールは BAPI_PRODORDCONF_CREATE_TT である。こちらの方が、CO11/CO11Nよりも汎用性が高く、テキストの入力も可能である。
MALSYはバッチインプットだけでなく、BAPIもサポートしているツールなので、ExcelからBAPIを呼び出してデータを一括登録することが可能だ。
S/4HANAでバッチインプットできないトランザクションコード
S/4HANAで廃止されたMBトランザクション
MB1A(在庫出庫)やMB1B(在庫移動)など、「MB」で始まる「MBトランザクション」は、S/4HANAでは廃止されている。
1804812 – MB トランザクション: 限定保全/廃止 (MB transactions: Limited maintenance/decommissioning)
左記の SAP Note によれば、廃止されたトランザクションは以下。これらのトランザクションは、MIGOに置き換わると書かれている。
MB01、MB02、MB03、MB04、MB05、MB0A、MB11、MB1A、MB1B、MB1C、MB31、MBNL、MBRL、MBSF、MBSL、MBSL、MBST、MBSU
MBトランザクション自体はバッチインプット可能だが、S/4HANAでは廃止されているため、バッチインプットしようにもできない。
MBトランザクションの代わりのトランザクションは MIGO だが、MIGO は Enjoyトランザクション のため、バッチインプットできない。
MBトランザクションは、S/4HANAでは全滅。
MIGOはEnjoy画面だから、バッチインプットできない。
どうすりゃいいんだ!?
代替手段として、汎用モジュール BAPI_GOODSMVT_CREATE を使用する。
MALSYはバッチインプット以外に BAPIを呼び出せるので、アドオンを開発しなくても、BAPI_GOODSMVT_CREATE を呼び出してExcelからデータを一括登録することが可能なツールである。
上記の通り、MBトランザクションは種類が多い。種類豊富なMBトランザクションが消滅し、且つバッチインプットもできないとなると、影響は甚大だ。
旧SAP ERPからS/4HANAへのコンバージョンにおいては、最も検討すべきポイントだろう。
汎用モジュールがブロックされているトランザクション
S/4HANAで VA06(受注伝票モニター) を実行すると、ショートダンプ SYSTEM_ABAP_ACCESS_DENIED が発生するか、メッセージ
「トランザクションVA06はサポートされていません(SAPノート2228098を参照)」
がポップアップする。
この原因は、VA06 が呼び出している汎用モジュールがS/4HANAとは互換性がなく、ブロックされているためである。
解決策は、Fioriアプリ “受注フルフィルメント問題” を使うように、とのこと。次の SAP Note に記載がある。
2456442 – VA06 によるショートダンプ SYSTEM_ABAP_ACCESS_DENIED (VA06 giving shortdump SYSTEM_ABAP_ACCESS_DENIED)
S/4HANAでブロックされている汎用モジュールを確認する方法は、以下の記事を参照。
まとめ:バッチインプットできないトランザクションコードと対処法
バッチインプットは、SAPシステムの黎明期の頃からサポートされており、RPAが存在しなかった時代から、RPAのように画面プログラムを自動操作する手段として利用されてきた。SAPシステムにおける標準的なデータ登録手法として、S/4HANAになった現在でも多く利用されている。
ユアソフトやMALSYなど、サードパーティのツールと組み合わせれば、アドオンを開発することなく、Excelからデータを一括登録することが可能だ。
しかし、制限によってバッチインプットができないトランザクションコードは多く存在する。そのような場合は、トランザクションコードと同じ機能を持つ汎用モジュール/BAPIを使うことで対処は可能だ(汎用モジュール/BAPIを探し出す方法は下の記事を参照)。
一方、バッチインプットはSAP GUI という古くからあるUIに依存するため、次世代のUIであるFioriには対応していない。そして、SAP社は今後S/4HANAに実装する新機能は、Fioriを標準UIにする方針である。したがって、バッチインプットが使えるトランザクションやS/4HANAの機能は、今後は減少していくと予想される。
SAPシステムを長く使い続けるためには、BAPI や WebAPI(OData)など、バッチインプットに代わるデータ一括登録の方法を検討しておくことが重要だろう。
この記事ではバッチインプットできないトランザクションコードについて解説したが、逆に、「バッチインプットできる」トランザクションコードの一覧リストを紹介した記事は以下。
コメント