4. タブコントロール上のフィールド
トランザクションのフィールドが複数のタブ上に表示されていることがよくあります。このような複数のフィールドを1つのタブ上に統合させることで素早くデータを入力することができ使いやすくなります。このような場合、 トランザクションのロジックが重要な役割を果たしているため、1画面上にフィールドを再配置するより少し複雑になります。
トレーニングの復習もかねてこのチュートリアルのテクニックを試してみてください。今回の例題の目的は、以下のトランザクションの、固定資産税タブにある必要なフィールドを、”一般”タブで表示することです。
- AS01: 資産登録
- AS02: 資産変更
- AS03: 資産照会
トランザクション AS02の標準画面は以下のようになっています:
赤い四角の中の項目を”一般”タブで表示したいと思います。”固定資産税”タブ上のこの部分は削除します。それから、”不動産および不動産同様の権利” のグループボックスとフィールドは ”固定資産税” タブの上部に移動して、タブ名を “不動産”に変更します。
変更後の”一般” タブは以下のようになります。
”固定資産税”タブにあったフィールドが “一般” タブに表示された。また、“資産フラグ” と “評価理由”の2つのフィールドは、ラジオボタンで選択するように変更されている。
以下に手順を示します。
① まず、2つのタブのレイアウトを変更します:”固定資産税”タブの”固定資産評価”グループボックス内の評価フィールド群を削除し、 “不動産および不動産同様の権利” フィールド群を上部に移動し、”一般”タブ上に新規フィールドを挿入します。
② 次に、InputScriptsを利用して、変更と照会モードの各フィールドに入力していきます。まず最初に” 一般”タブを開いたら、InputScriptを使って”固定資産税”タブに移動し、InputScriptの変数の中に値を入力して、その後”一般”タブに戻ります。InputScriptsを使用すれば、タブにすべてのフィールドが表示されていなくても、すべてのフィールドにアクセスできるというところがポイントです。
③ 登録と変更モードも同様に、”保存”したときに、新規フィールドが読み込まれるようにします。
④ データ入力ミスの処理に関しては特に注意を払う必要があります。新規の入力フィールドに関するエラーメッセージは” 一般”タブ上に表示させて、間違いをすぐに訂正できるようにしましょう。
GuiXT Script saplaist.j0100.txt
※AS01 および AS02/AS03の初期画面上ですべての変数を削除します。作業の効率化のため、3トランザクションで使用するInputScript変数名をすべて“AS_”から始めています。
// AS01 / AS02 /AS03の変数を削除
Set V[AS_*] “”
**********
GuiXT Script saplaist.1000.txt
AS01/AS02/AS03スクリーン(saplaist.1000)のGuiXT Scriptで、レイアウト変更と、InputScriptの呼び出しを行います。
// Transactions AS01 / AS02 / AS03
// “固定資産税”タブから”一般”タブにフィールドを移動する
// 使用するInputScript:
//
// AS_read.txt データ読み込み
// AS_save.txt 保存
// AS_check.txt チェック
//——————————————-
// 変数 V[AS_*] はトランザクションの第一画面で初期化
// リストからの呼び出し等で資産番号が変わったら変数も初期化されるようにします。
if not V[AS_asset=&F[資産]]
Set V[AS_*] “”
Set V[AS_asset] “&F[資産]”
endif
// 照会トランザクションでは読み取り専用フラグをセットして
// 全トランザクションに同一の “”InputField” コマンドを使用する
if Q[Transaction=AS03]
Set V[AS_readonly] “-readonly”
endif
// 変更、または照会では最初に値を読み込む
if Q[Transaction=AS02] or Q[Transaction=AS03]
if not V[AS_read=X]
Set V[AS_read] “X”
Enter process=“AS_read.txt”
// 画面が表示されないのでスクリプトはそのままにする
Stop
endif
endif
// “固定資産税”タブには、不動産フィールドだけしか残されていないので、タブをリネームする
Text P[固定資産税] “不動産”
// 一般タブ – 独自フィールドの表示
if Q[Page=一般]
// 内側のスクロールバーを抑える
NoScrollBar
// 最後のボックスのすぐ下に置く
offset G[転記情報]+(5,0)
box (0,0) (9,80) “固定資産評価”
pushbutton (1,76) “@0Q\Q固定資産評価詳細@” “=LTXTNETA”
inputfield (1,1) “資産分類キー” (1,24) size=4 name=“AS_classification_key” “&V[AS_readonly]” techname=“ANLA-VMGLI”
Text (1,30) “&V[AS_classification_key_text]” -border
inputfield (2,1) “固定資産価額” (2,24) size=16 name=“AS_man_value” “&V[AS_readonly]” -numerical
Box (4,1) (8,20) “資産フラグ”
radiobutton (5,2) “所有資産” name=“AS_property_indicator” value=“1” “&V[AS_readonly]”
radiobutton (6,2) “リース” name=“AS_property_indicator” value=“2” “&V[AS_readonly]”
radiobutton (7,2) “ロケーション” name=“AS_property_indicator” value=“3” “&V[AS_readonly]”
Box (4,25) (8,46) “評価理由”
radiobutton (5,26) “査定額” name=“AS_man_reason” value=“003” “&V[AS_readonly]”
radiobutton (6,26) “レンタル額” name=“AS_man_reason” value=“001” “&V[AS_readonly]”
endif
// ”一般” タブに移動したフィールドは”固定資産税”タブで削除
if Q[Page=固定資産税]
del G[固定資産評価]
pos G[不動産および不動産同様の権利] (5,1)
endif
if Q[Transaction=AS01] or Q[Transaction=AS02]
// AS01/AS02 の保存時に独自のスクリプトを呼び出す
on “/11” process=“AS_save.txt”
on “/Menu=1,7” process=“AS_save.txt”
// ポップアップでは保存せずに中止(/12)のように扱う
on “/3” fcode=“/12”
on “/15” fcode=“/12”
// “一般”タブで “Enter”時に追加入力をチェックする
if Q[Page=一般]
on Enter process=“AS_check.txt”
endif
endif
*******
“AS_read.txt” は適切なタブ上の評価入力フィールドを読んでから、” 一般”タブに戻ります。テキストフィールドも読み込まれて新規タブ上に表示されます。
// “固定資産税”タブに行く
Enter “=TAB05”
// AS02, 固定資産税
Screen SAPLAIST.1000
Set V[AS_classification_key] “&F[資産分類キー]”
Set V[AS_classification_key_text] “&F[T092T-VMTXT]”
Set V[AS_property_indicator] “&F[資産フラグ]”
Set V[AS_man_reason] “&F[マニュアル評価理由]”
Set V[AS_man_value] “&F[マニュアル固定資産価額]”
Enter “=TAB01”
*******
“AS_save.txt”
同様に、保存の前に標準フィールドの中に追加フィールドをセットします。エラーメッセージがあれば、”一般”タブに戻します。
// トランザクションAS02とAS03を保存
// “固定資産税”タブに行く
Enter “=TAB05”
// 固定資産税
Screen SAPLAIST.1000
// エラー時に使用できるように入力した値を保存しておく
Set V[AS_corr_property_indicator] “&F[資産フラグ]”
Set V[AS_corr_man_value] “&F[マニュアル固定資産価額]”
// 新規の値を入力
Set F[資産分類キー] “&V[AS_classification_key]”
Set F[資産フラグ] “&V[AS_property_indicator]”
Set F[マニュアル評価理由] “&V[AS_man_reason]”
Set F[マニュアル固定資産価額] “&V[AS_man_value]”
// 保存、エラー時続行
Enter “/11” OnError=Continue
// エラーメッセージ:エラー時は初期値に戻す(やらないとタブから移動できない可能性があるため)
Set F[資産フラグ] “&V[AS_corr_property_indicator]”
Set F[マニュアル固定資産価額] “&V[AS_corr_man_value]”
// エラーメッセージを第一タブに戻す
Message “&V[_lasterror]” -statusline
Enter “=TAB01”
**********
“AS_check.txt”
どの場合においても”保存”時に入力チェックは行われていますので、下記”AS_check.txt” の様なデータ入力チェック用のInputScriptを別途用意する必要は必ずしもないのですが、最初に”Enter”キーを押したときにデータ入力チェックが行なわれるようにすると、更にユーザフレンドリーになります。
// 入力チェック
// “固定資産税”タブに行く
Enter “=TAB05”
// 固定資産税
Screen SAPLAIST.1000
// エラー時に使用できるように入力した値を保存しておく
Set V[AS_corr_property_indicator] “&F[資産フラグ]”
Set V[AS_corr_man_value] “&F[マニュアル固定資産価額]”
// 新規の値を入力
Set F[資産分類キー] “&V[AS_classification_key]”
Set F[資産フラグ] “&V[AS_property_indicator]”
Set F[マニュアル評価理由] “&V[AS_man_reason]”
Set F[マニュアル固定資産価額] “&V[AS_man_value]”
// エラーメッセージの処理
Enter OnError=Continue
goto error
// 固定資産税
Screen SAPLAIST.1000
// テキストを読む
Set V[AS_classification_key_text] “&F[T092T-VMTXT]”
// 固定資産税 – 標準の取り扱い
Set V[AS_man_value] “&F[マニュアル固定資産価額]”
// 第一タブに戻る
Enter “=TAB01”
// スクリプトを停止。入力は問題なし
Leave
// エラーメッセージの処理
label error
// 入力値を戻す
Set F[資産フラグ] “&V[AS_corr_property_indicator]”
Set F[マニュアル固定資産価額] “&V[AS_corr_man_value]
// エラーメッセージを第一タブに戻す
Message “&V[_lasterror]” -statusline
Enter “=TAB01”