LSMWとは、Legacy System Migration Workbench の略で、その名の通りLegacyシステム(SAPに移行する前のシステム)からSAPにデータを大量投入する際に利用できる機能です。
Excelファイルやテキストファイルなどのデータを、「事前に定義したルールに基づき」SAPに会計伝票などとして一括でデータを大量投入することが可能。その特性から、移行の際だけでなくテストデータを大量に作成したい場合や、大規模なマスタメンテナンスをLSMWを利用することができます。
このページでは、LSMWの利用方法を図解していきながら、どのように利用するのか?何ができるのか?をご紹介します。
LSMWを利用できるようになると、様々な場面での業務効率化が期待できます。
「SAPへのデータ移行はどうやって実行すれば良い?」
「大量データを一気に投入したいけど、どのような方法があるの?」
以上のような疑問をお持ちの方にとって有益な情報となると思いますので、是非最後までご覧ください。
LSMWの概要
LSMWは突き詰めると、バッチインプット / BAPI / IDoc を利用した大量データ投入ツールです。
基本的にはバッチインプットが何か?BAPIとは?IDocとは?という知識があれば決して難しいツールではありません。イメージとして、バッチインプット / BAPI / IDoc をバックグラウンドで大量・一括実行していくものである、というイメージを持っていただければ理解が進むかと思います。
早速、LSMWの利用方法を解説します。
【SAP】LSMWの利用方法

LSMWの利用方法を順を追って解説します。尚、LSMW自体が多用なデータをインポートできるようかなり複雑な仕組みを備えているため、このページでは初心者向けに一番基本的な「バッチインプットを利用する」方法で解説を進めます。
バッチインプットとは「SAPのトランザクションを通して」データを一括で投入する処理のことを指します。
単にデータベースに直接データを書き込んでいくような世間一般のバッチ処理とは異なり、「SAPの画面からデータを入力する」ように処理が行われるのです。なんちゃって「RPA」のようなものと理解していただいてOKです。
以下の記事ではバッチインプットを利用したプログラミング方法をご紹介しております。是非ご覧になってみてください。
Project / Subproject / Object の登録
トランザクションコード:LSMW を実行。最初に行うのが、Project / Subproject / Object の登録です。

赤枠内のボタンを押すと新規作成が可能で、任意の名称でProject / Subproject / Object を登録していきます。
Project / Subproject / Object はどれも実際の処理とは関係しません。分かりやすく言うと、ツールを入れておく箱のようなものなので、どのような名称で登録しても問題ありません。目的別・モジュール別などに階層を定義していく形で登録するのがお勧めです。
インポート方法の定義
Project / Subproject / Object の定義が済んだら、続いてデータのインポート方法を作成していきます。データをバッチインプットでインポートするのか、BAPIを利用するのか、はたまたIdocを利用するのか。そして、どのようなルールでインポートするのかを決定していくプロセスです。

Maintain Object Attribute を選択します。

メニューから「Recordings Overview」を選択。ここから、インポート方法の定義(バッチインプットの定義)を行うことができます。

「Create Recording」を選択し、バッチインプットの登録を行います。画面(トランザクションコード)を選択することで、バッチインプットのレコードが開始されます。

バッチインプットの登録が完了すると以下の画面に遷移します。

この画面には、バッチインプットのレコーディングで変更を加えた項目が自動的に表示されます。最後に「Default All」ボタンを押してレコーディングが終了します。

「Maintain Object Attributes」の画面に戻り、以下のようにレコーディングしたバッチインプットを指定します。

インポートデータの定義
インプット方法の定義が完了しました。ここからは、インポートデータの定義(インポートデータの項目・データ型)を定義していくステップに入ります。
まずは、「Maintain Source Structures」を選択して実行します。ここでは、インポートするデータ(ファイル)の定義を行います。

「Source Structure」を定義します。この定義は、この後設定する「Source Field」定義の箱のようなものなので、特に難しく考える必要がありません。

保存して「Source Field」の定義に移ります。

例として以下のようなインポートデータの場合の定義方法をサンプルとします。

先ほど定義した「Source Structure」を指定し構造編集を行います。

インポートデータと同じように項目を定義していきます。項目の並び順がずれないようにすべての項目について定義が必要です。

保存ボタンを押して登録完了です。

インポート方法とインポートデータの関連付け
これまでに、インポート方法とインポートデータの定義が完了しています。
最後に、インポートデータのどの項目をSAPのどの項目に紐づけるか?(Relation)を定義します。

Relationが定義されていることを確認します。

基本は初期提案でこれまでに定義したSource Structureが最初に定義したインポート定義と紐づいているのでこのままでOK。
続いて、「Maintain Field Mapping and Conversion Rules」を実行します。

以下のような画面が表示されます。これは、先ほど定義したSource Fieldです。このSource Fieldをどの項目にインポートしていくかを定義します。


メニューから、「Auto-Field Mapping」を選択することで自動的にマッピングを行うことが可能です。

以下のようなマッピング方法が選択可能。ただし、自動提案の質に多少の難があるため、利用タイミングは要精査です。

必要な項目がすべて関連付けられたことを確認して保存。マッピング不要な項目は何も設定しなくてOK。特にエラーは起こりません。

LSMW:実行前処理
ここまでで、LSMWの事前設定が完了です。
あとは、実際に利用するファイルをインポートし、定義に沿ってデータ変換を行っていくだけです。
Specify Files

インポートするファイルを決定します。
Legacy Data を選択し、検索ヘルプからインプットするファイル名を呼び出して保存します。

Read Data

セットしたファイルの中身を読み込むプロセスです。

何行目から何行目のレコードを読み込むか選択することが可能。両方ブランクのまま実行すると、指定したファイルの全レコードが読み込まれる仕組みです。

Convert Data

読み込んだレコードを変換する処理です。
こちらも、範囲指定で変換を行うことが可能。基本はブランクのまま実行すればOK(全レコードが変換されます。)

正常に処理が終了することを確認します。

Create Batch Input Session

変換したデータをもとにバッチインプットセッションを決定します。ここの名称等は何でもOKです。

正常に終了すると、以下のようなメッセージが表示されます。

これで実行準備が完了します。
LSMW:データインポート実行
最後に「Run Batch Input Sesstion」を実行します。

実行方法は、バッチインプットの実行形式と同様に選択可能です。実際に画面遷移を確認しながら実行することも、バックグラウンドで実行することもできる仕組みです。

実行後のログは以下のように確認可能です。

これにて、LSMWの全実行手順が完了です。
SAP / ABAPを1から学習したい方は

初めてABAPを勉強するのは結構難しいですよね。
でもその悩みを抱えているのは一人じゃありません。全てのABAP使いが同じ道を進んできました。
ABAPをはじめとするプログラミングスキルを武器に、時間と場所に捉われない自由な生き方を目指してみませんか?
読者料典 【完全無料】ABAP:学習カリキュラム ←こちらから!