帳票フレームワーク

連載記事:アプリケーション開発技術 第6回

業務帳票の設計がWEBアプリケーションによって従来と変わるものではありません。

帳票は、

  • レポートヘッダ・フッタ
  • ページヘッダ・フッタ
  • 明細行
  • キーブレーク行(いわゆる小計・中計・大計)

のパーツから構成されます。 小規模なシステムであれば、帳票ツールを使い帳票を定義しデータセットを設定し(テーブル名、クエリなど)、明細行を構成する項目とデータセットのフィールドとの関係を定義するだけでキーブレークも含め自動的に帳票を出力してくれます。しかし、大規模システムでの帳票となると、アプリケーションでデータを準備し、明細行に使用するフィールドの取り出し、明細行項目への設定などをプログラミングすることが必要となります。

業務帳票の設計イメージ

※クリックで拡大されます↑

帳票フレームワークでも帳票ツールを利用しますが、データの準備、明細行項目へのデータ設定はプログラミングが必要です。しかし業務プログラマが実装するのは特別なキーブレーク以外は上記2項目のプログラミングだけで十分です。業務SEの設計に従いデータをハンドリングするだけです。しかもデータ準備はDAOそのもの、明細行編集も、select結果のレコード単位に明細項目に値を設定するだけです。プログラマが帳票ツールのAPIを意識する必要はありません。

先に特別なキーブレークを除くと書きました。機能的には小計・中計・大計はツールお任せで良いのですが、ここにオープンシステムでの難問があります。少数点以下の値の足し算が表示される値と不整合をおこすというものです。

Javaでの開発であればBigDecimalを利用しますが、帳票ツール側が対応していない場合は、小計・中計・大計を自前で管理することになります。 この場合、集計管理のコーディングが必要です。

多くの金額をベースにした業務システムでなぜ小数点以下が必要なのかと思われるかもしれません。利息計算でもしなければ小数点以下が必要になることもないかもしれませんが、帳票ツールお任せで「明細行の合計と小計欄の値が合わない」というユーザからの苦情を経験したことがありませんか。 業務帳票ツールの盲点ではないでしょうか。