
TIPTOP 客製紀錄 (三):報表 —— 讓數據在紙面上優雅起舞
TIPTOP 客製教育訓練的最終章。掌握報表引擎的運作原理,將枯燥的資料庫數據轉化為一片豐饒的報表綠洲。
Topics
WRITTEN BY

- Name
- Harry Chang
在前面的兩堂課中,中科大學妹已經逐步從基礎的 單檔表單 與進階的 單檔明細 中畢業。現在,我們來到了 TIPTOP 客製教育訓練的最終章——報表。
如果說 ERP 是一個大水箱,報表就是那座能將水精準噴灑到每朵花上的噴泉頭。
起點-由架構開始

同樣的邏輯,在 TIPTOP 的森林裡尋找一個「順眼」的報表程式,我是使用 aapr106,將它複製出來。接著,把所有的註記(Comments)全部拿掉,我們會得到一個乾淨的報表骨架。
報表程式與維護程式最大的不同點在於它的架構有暫存檔案,儲存的內容是XML的資料要傳送給報表主機。
這以下是一個標準報表程式的「乾淨版」架構與說明,修改成 capr901:
這就是 TIPTOP 報表的基底。無論邏輯多麼複雜,底層的骨架永遠圍繞著資料的 Forecah 與 EXECUTE。
執行的順序
這邊記錄在 TIPTOP 新增一個報表程式的順序,這是我推薦的標準流程:
- 需求定義:使用昨天的
tc_apx_file - SQL 撰寫:在資料庫中先跑出正確的結果,這是報表的靈魂。
- 程式編譯:編譯
capr901.4gl。 - 複製畫面:複製4FD檔案並進行QBE條件確認。
- 權限註冊:到
p_zz新增報表程式代號。 - 連結設定:運行
r.l2 capr901。 - 權限放行:在
p_zz點選給予權限。 - 樣板設定:
p_zaw進行樣板的複製與修改 - CR主機:複製樣板,並修改欄位與XML。
當這 9 個步驟走完,妳就能看到Edge產出那一張張充滿價值的數據。
練習的開始
同前面的邏輯,我們增加一些實戰難度:capr901 嘗試在 Crystal Report (CR) 主機製作一個完整的報表樣板。
這項練習的目的,不只是為了排版,更重要的是要讓學妹理解「兩台主機協作」的運作機制。在 TIPTOP 的報表架構中,資料的產出是透過跨主機的資料拋轉呈現在瀏覽器上。
練習的核心與機制在於:
- 跨主機的接力賽:學會區分「TIPTOP 主機(邏輯大腦)」與「CR 報表主機(專業繪師)」的角色。TIPTOP 負責將資料整理成 XML 格式(種子),然後傳送到 CR 主機進行渲染(開花)。
- XML 標籤的映射:在 Crystal Report 設計器中,妳必須精確地將 XML 中的欄位標籤對應到報表的版面上。名字一旦錯了一個字,數據就無法正確顯示,這是在考驗妳對資料結構的細緻度。
- 樣板 (Template) 的權限連結:透過
p_zaw讓 TIPTOP 系統「認識」妳在 CR 主機上畫好的樣板。這就像是在兩座山頭之間搭起一座橋樑,讓數據能順利通往瀏覽器(Edge)展現出來。

這是在練習「系統觀」,「TIPTOP 的 Crystal Report 列印機制採用了一種高度解耦的『中继架構』。其核心在於:4GL 程式不直接處理報表排版,而是先透過複雜的運算,將最終數據灌入動態生成的暫存表 (l_table),並由 cl_prt_cs3 底層函式將 SQL 指令與參數封裝成 XML 格式的描述檔發送至 CR 主機。CR 主機端則透過預先設計好的樣板 (.rpt),根據 XML 提供的 Metadata 進行欄位映射 (Field Mapping),回頭向資料庫撈取暫存表內的數據。這種機制能確保即便在處理巨量資料時,也能精確控制數據邏輯,同時保有 Crystal Report 在報表美化與輸出格式上的極致靈活性。」
園藝法則:數據報表的種類
在 TIPTOP 的森林裡,報表的形態決定了它服務的對象。我們主要將收成打包成三類不同的包裝:
- 明細表 (Detail Reports):最紮實的數據底層。它是園丁每天核對水分與養分的紀錄,講求的是資料的完整性與檢索的便利。
- 憑證 (Vouchers/Documents):系統對外的「承諾」。如採購單、出貨單,代表著權威與交易的依據,排版的嚴謹度與精確性是第一優先。
- 管理報表 (Management Reports):高度濃縮的「精華液」。它是給農場主人看的,將萬千數據轉化為決策的燈塔。
核心心法:報表是與使用者溝通的第一道橋樑 報表是使用者最常接觸到的層面,不同人員使用的方式也不同,這是第一個妳與使用者溝通最好的橋樑。透過最簡單、最精確的查詢,去面對不同需求最後的地方,這才是報表客製最考驗園丁內功的環節。
結語:數位花園的全面收成
隨著報表篇的圓滿結束,這三天的 TIPTOP 客製教育訓練也畫下了完美的句點。
從 單檔表單 的紮根,到 單檔明細 的繁茂,再到今天「報表篇」的最終收穫。我們不僅建立了技術上的基本功,後續的「組合技」,就要仰仗多練習不同個案,在代碼與邏輯之間,尋找到了那份屬於自己的節奏感。
教育訓練雖然結束了,但在 TIPTOP 森林裡的探索才剛剛開始。基本功已經打好,圍籬已經築起,接下來,就看學妹如何在這片肥沃的土地上,種出屬於她自己的特殊知識了,我只要偶爾下下指導棋就好。