本日、システム移行に伴い本番環境へのデータ投入作業予定日だったのだが、クライアントからのソースデータ準備が間に合っていない影響でスケジュールが後ろ倒しに。とは言っても、本番稼働の開始日自体はずらせないので、必然的に週末が当て込まれる。まぁ、特に予定もない3連休なので俺は別に構わないのだけども、土日出勤すると連勤日数とか労基が絡んでくる話にもなるので、代わりに今日休んでと言われた。
当日に休暇と言われてもいまいちありがたみ薄いよな。今日は天気悪くてなんか寒いしサ。休みってのは当日よりもその前夜が一番心安らぐものだ・・・。
そういうわけで、この週末は僕ちゃん仕事〜😇。
移行作業と並行して、一つアドオン機能の新規開発も今振られている。機能としてはあまり複雑なものじゃないけど、今のプロジェクトに入って始めて1から設計書書き起こすので、なかなか亀の歩みになっている。プロジェクト変わる度に、新しい設計書書式と開発標準規約に従う必要があるので気を遣う。あまつさえ初めてのSAPなので、新しい用語がポコポコ出てきたりして頭が追いつかない・・・。
特に今回のアドオンはバッチインプットというSAPならではの機能を使って実装する。ざっくり言って、データのバッチ(大量同時)処理をプログラムするためにSAPが用意している機能というか、一連のアルゴリズムのようなもの。
例えば、品目マスタに新しい商品を追加したいとなったら、ユーザはSAP標準のトランザクションMM01でGUI上から新規登録できる。数品目程度ならそれで十分だとしても、改廃期に数十、百品目を登録するとなったら手入力はさすがにだるいのでバッチ処理の機能が必要。
バッチインプットの概念としては、ユーザがGUI上のMM01で行う入力やボタン押下の作業を、ソースファイルにまとめた品目情報の数だけ繰り返す、っていうイメージ。人間がやる作業手順を真似てプログラムが自動で繰り返してるだけなので、一種のRPA(ロボティック・プロセス・オートメーション)といったところか。
一見、バッチ処理にしては少々周りくどいように感じる。品目一覧のソースファイルがあるなら、それを基にDBのマスタテーブルに一気に直接挿入したらええやんと思うかもしれない。しかし、その方法だとデータに不備があった時、他のマスタとのリレーションがぶっ壊れてシステム全体にバグが波及する恐れがあるし、それを防ぐためのバリデーション処理なんかを考慮したら開発の難易度が跳ね上がる。モジュール跨いだマスタとかだと、エンジニアが必ずしもSAPの設計意図を完璧に汲み取っているとは限らないので・・・。そもそもSAPは直接テーブルを編集することをサポートしてない。
その点で言えばバッチインプットは、あくまでもSAP標準のトランザクションでの入力実行を自動で繰り返すだけなので、データチェックも言わばSAP標準で1件ごと行ってくれる。確かに処理時間は多少かかるが、入力されたデータの整合性は言わばSAPが保証してくれてるということ。この辺、SAPらしい堅牢性が表れた仕組みだと思う。
まぁ、バッチインプット以外にもSAPがサポートしているバッチ処理方法はあって、それこそ移行データ投入に使ってるツールなんかもその一種とも言える。しかしこの場合、当然ながらSAPが用意しているテンプレートに従ってソースファイルを用意しなければいけないわけで。これがなかなか小難しい作りだし、普段GUI上で入力しないような値の項目まで羅列されているので、実務作業者にいちいちこれを用意させるのは結構ハードルが高い。バッチインプットなら、普段GUI上で作業する上で入力している情報だけが最低限必要なわけで、ソースファイルのテンプレートもある程度ユーザに寄り添って融通が効く。そのためのアドオンである。
で、そのバッチインプットをプログラミングするために、SAPがバッチインプットレコーダーというのを用意してくれている。GUI上で、MM01で品目を一件登録するという作業の流れを録画しておけば、どの画面でどの項目に何と入力してどこをクリックしたかという情報を文字で記録してくれるというもの。VBAマクロにも似たような機能あるよな。マクロと違ってコーディングしてくれるわけじゃなくて、コーディングに必要な情報をまとめておいてくれるというだけだけど。
この録画情報を基に設計書を書き起こす、という作業を進めております。4月上旬に基本情報技術者試験も予約したんだけど、頭追いつくかなワシ・・・?