はじめに
の出力結果を見ると、下図のように明細の前後にヘッダ部、フッタ部のレコードが出力されています。
本当は1伝票で、ヘッダ部1回、フッタ部1回と明細行分の出力を想定していたので、赤線で消したレコード分出過ぎです。
今回の課題
今回は
に挑戦します。
不要なレコードの出力を食い止めろ
やり方は人それぞれ。
私は変数を使って、出力を食い止めてみます。
1.変数を使って食い止める
今回は、顧客ID毎の伝票なので、顧客IDが変わったらヘッダ部とヘッダ部を出力するようにします。
その判定には、変数を使用します。
1.変数
比較用の顧客IDを保管するための変数:顧客ID を用意します。
2.抽出条件の設定
まず、ヘッダ部を出力する「抽出条件1」とフッタ部を出力する「抽出条件3」に、以下の条件をAND条件で追加します。
次に、「抽出条件3」に変数値の代入を追加します。
3.データ加工処理
上記の設定を加えたら、保存してデータ加工を実行します。
出力結果がこちら ![]()
とりあえず、各伝票毎にヘッダ部が1回、フッタ部が1回の出力になりました。
が。。。出方がちょっと不細工です。
レコードの出力順を調整せよ
1.ヘッダ部 > フッタ部 > 明細 の順に出力
こっちは滅茶苦茶簡単。
下図のように、抽出条件の並び替えで対応できます。
並び順を変えて出力した結果がこちら ![]()
無事、ヘッダ部 > フッタ部 > 明細 の順に出力されました ![]()
2.ヘッダ部 > 明細 > フッタ部 の順に出力
こっちはチョット工夫が必要。
1.変数
まず、フッタ部を最後の明細を出力した後に出力しないといけないので、明細の件数を知る必要があります。
また、何件目の明細を出力したかをカウントする必要もあります。
これら2つは、変数:明細行数と、変数:カウント で管理します。
なお、この2つは、変数タイプ=数値、初期値=0 で登録します。
2.仮想テーブル
明細の件数を知るのに、仮想テーブルを使用します。
詳しいことはマニュアルで確認していただくとして。
今回は以下の条件で登録します。
1.仮想テーブルファイルに取り込むデータは入力ファイル
2.形式はExcel、入力情報で登録したIDを使用
3.仮想テーブル名は初期値(VT_TABLE1)
4.[項目取り込み]をクリック
で、登録した定義がこちら ![]()
3.抽出条件の設定
抽出条件は、ヘッダ部 > 明細 > フッタ部 の順で、それぞれ以下の設定をします。
4.データ加工処理
上記の設定を加えたら、保存してデータ加工を実行します。
出力結果がこちら ![]()
こちらも、ヘッダ部 > 明細 > フッタ部 の順に無事出力されました ![]()
以上です。














