ABAPの基礎知識 更新系画面その3

続いて更新系画面第三弾である。
前回までは、主にマスタ関連のお話だったが、本稿は、
・更新頻度が高く、レコードごとの権限をつけたいアドオンマスタメンテナンス画面
トランザクション系更新画面
についてのお話である。
このような要件に対応し、Dynproを作らないための秘策は、インタラクティブ・レポートと
各種POPUP汎用モジュール群である。


この、インタラクティブレポート+POPUP汎用モジュールで作られている、典型的な標準画面が、
SDの出庫確認の画面である。
一覧に表示させる条件をまず入力する。
一覧が表示され、それにはチェックボックスがついている。
チェックボックスをONにして、実行ボタンを押すと、POPUPで転記日付を聞いてくる、というのが、その動きである。
大抵の更新画面は、このやり方で作れてしまうのである。


昨今のバブル状態においては、「ABAPできます」というのでプロジェクトに来てもらったら、
インタラクティブレポートを書けない人、なんてのが来てしまうこともあるが、
黙ってトランザクションコードABAPDOCU(うっ、もしかしてトランザクションコード違うかも・・・
違ってたら、明日こっそり直しておこう)に書いてある、サンプルソースを見ながら覚えてもらうのである。
なにせDynproを覚えてもらうよりは、よほど早く覚えてもらえる。
あとは、POPUP汎用モジュール群の出番である。


よく使うPOPUP汎用モジュールを少し紹介しておくと、


・POPUP_DISPLAY_TEXT テキストをPOPUP表示
・POPUP_TO_CONFIRM_STEP YES/NOをPOPUP表示
・POPUP_TO_DECIDELIST ラジオボタンで項目の選択がでてくるPOPUP
・POPUP_TO_GET_VALUE 任意の項目を入力するPOPUP


などがある。
特に、POPUP_TO_GET_VALUEは強力である。
項目をこの汎用モジュールに渡してやれば、自動で入力ができるDynpro画面を生成してくれ、
入力の結果を、汎用モジュールの戻り値として取得できるのである。


例えば、MMで、購買発注に対する入庫を、一括で行う画面を考えてみる。
購買発注時には、保管場所・ロットは決定されておらず、入庫時に決定されるとする。
このような要件は、結構一般的だと思うが、インタラクティブレポートだと、


1.選択項目を入力し、一覧を表示させる
2.入庫を行うレコードの、チェックボックスをONにする
3.実行ボタンを押す
4.レコードごとに、保管場所・ロットを入力するPOPUPが現れ、それに入力する。


というような操作性のアドオンプログラムが作成できる。
作成だけなら、おそらく1日でできるだろう。
テストを含めても1.5日、どんなスカタンなヤツがやったって、5日はかからないはずである。
「一括での更新」の要件だからと言って、Dynpro画面で作成しようとした場合はどうだろうか?
よほどの熟練工を呼んでこないと、1日ではできないと思うが・・・


概要設計をやるコンサルの方も、ぜひインタラクティブレポート+POPUP_GET_VALUE
どこまでできるかを確認していただきたい。
それに沿った画面設計をすれば、劇的な工数削減ができることだろう。