
TIPTOP 客製紀錄 (三):Crystal Report 報表開發基礎
TIPTOP 客製開發進階:Crystal Report 報表開發。紀錄報表引擎的運作原理與中繼架構,將資料庫數據轉換為格式化的報表產出。
WRITTEN BY

- Name
- Harry Chang
在完成 單檔表單 與 單檔明細 的開發後,下一個重要的課題是報表開發。報表在 ERP 系統中負責將資料精準呈現給使用者。本篇筆記將重點紀錄 TIPTOP 與 Crystal Report 協同運作的報表開發流程。
標準程式架構

在開發報表程式時,同樣建議尋找邏輯清晰的標準報表程式(例如 aapr106)進行複製。移除所有註解後,即可取得乾淨的報表骨架。
報表程式與一般維護程式最大的不同在於,報表程式包含處理暫存檔案的架構,其儲存的內容主要為 XML 資料,用以傳送給 Crystal Report 報表主機。
以下是修改為 capr901 的標準報表程式架構說明:
報表程式的底層邏輯,主要圍繞著資料的 Foreach 與 EXECUTE 進行處理。
開發執行順序
在 TIPTOP 中新增 Crystal Report 報表程式的標準流程如下:
- 需求定義:確認資料來源(例如沿用
tc_apx_file)。 - SQL 撰寫:在資料庫中先行測試 SQL 語法,確認產出的資料結果正確無誤。
- 程式編譯:編譯
capr901.4gl。 - 複製畫面:複製 4FD 檔案並進行 QBE(Query By Example)條件確認。
- 權限註冊:到
p_zz新增報表程式代號。 - 連結設定:運行
r.l2 capr901。 - 權限放行:在
p_zz點選給予權限。 - 樣板設定:在
p_zaw進行樣板的複製與修改設定。 - CR主機設定:在 Crystal Report 主機上複製樣板 (.rpt),並修改欄位對應與 XML 定義。
完成上述 9 個步驟後,即可在系統前端(如 Edge 瀏覽器)檢視報表產出結果。
Crystal Report 實作練習
在報表開發實務中,重點在於:在 Crystal Report (CR) 主機上製作一個完整的報表樣板 (capr901)。
這項練習的目的在於理解「兩台主機協作」的運作機制。在 TIPTOP 的報表架構中,資料的產出是透過跨主機的資料拋轉,最終呈現在使用者的瀏覽器上。
重點機制包含:
- 跨主機的資料傳遞:區分「TIPTOP 主機(負責邏輯與資料處理)」與「CR 報表主機(負責畫面渲染)」的角色。TIPTOP 負責將資料整理成 XML 格式,傳送給 CR 主機進行排版渲染。
- XML 標籤的對應 (Mapping):在 Crystal Report 設計器中,必須精確地將 XML 中的欄位標籤對應到報表的版面上。若命名不一致,數據將無法正確顯示。
- 樣板 (Template) 權限連結:透過
p_zaw讓 TIPTOP 系統與 CR 主機上的樣板建立連結,使數據能順利轉換並於瀏覽器上呈現。

TIPTOP 的 Crystal Report 列印機制採用了高度解耦的「中繼架構」。其核心在於: 4GL 程式不直接處理報表排版,而是先透過複雜的運算,將最終數據寫入動態生成的暫存表 (l_table),並由 cl_prt_cs3 底層函式將 SQL 指令與參數封裝成 XML 格式的描述檔,發送至 CR 主機。CR 主機端則透過預先設計好的樣板 (.rpt),根據 XML 提供的 Metadata 進行欄位對應 (Field Mapping),並向資料庫撈取暫存表內的數據。這種機制能確保即便在處理巨量資料時,也能精確控制數據邏輯,同時保有 Crystal Report 在報表美化與輸出格式上的極致靈活性。
開發規範:報表種類與應用
在 ERP 系統中,報表的應用型態決定了其服務對象與設計重點,主要分為以下三類:
- 明細表 (Detail Reports):提供最詳盡的底層數據紀錄。強調資料的完整性與檢索的便利性。
- 憑證 (Vouchers/Documents):系統對外的正式單據(如採購單、出貨單)。代表著交易依據,排版的嚴謹度與精確性為第一優先。
- 管理報表 (Management Reports):高度濃縮的數據分析。主要提供給管理層級作為決策參考,需具備高度的資料摘要與視覺化呈現。
核心觀念:報表是與使用者溝通的橋樑 報表是使用者最常接觸到的系統產出,針對不同人員的需求提供正確、清晰的查詢結果,是報表客製化最重要的環節。
結語
完成 單檔表單、單檔明細 到本篇「Crystal Report 報表」的開發紀錄後,已涵蓋 TIPTOP 系統客製化最核心的三大技術領域。
熟練掌握基本功後,後續面對更複雜的業務邏輯,便能以這些基礎架構為基礎進行「組合應用」。在了解系統架構與限制的前提下,靈活運用這些開發技巧,即可有效應對各類客製化需求。