TIPTOP 客製紀錄 (三):報表 —— 讓數據在紙面上優雅起舞

TIPTOP 客製紀錄 (三):報表 —— 讓數據在紙面上優雅起舞

TIPTOP 客製教育訓練的最終章。掌握報表引擎的運作原理,將枯燥的資料庫數據轉化為一片豐饒的報表綠洲。


在前面的兩堂課中,中科大學妹已經逐步從基礎的 單檔表單 與進階的 單檔明細 中畢業。現在,我們來到了 TIPTOP 客製教育訓練的最終章——報表。

如果說 ERP 是一個大水箱,報表就是那座能將水精準噴灑到每朵花上的噴泉頭。


起點-由架構開始

TIPTOP 報表架構

同樣的邏輯,在 TIPTOP 的森林裡尋找一個「順眼」的報表程式,我是使用 aapr106,將它複製出來。接著,把所有的註記(Comments)全部拿掉,我們會得到一個乾淨的報表骨架。

報表程式與維護程式最大的不同點在於它的架構有暫存檔案,儲存的內容是XML的資料要傳送給報表主機。

這以下是一個標準報表程式的「乾淨版」架構與說明,修改成 capr901

這就是 TIPTOP 報表的基底。無論邏輯多麼複雜,底層的骨架永遠圍繞著資料的 ForecahEXECUTE

執行的順序

這邊記錄在 TIPTOP 新增一個報表程式的順序,這是我推薦的標準流程:

  1. 需求定義:使用昨天的tc_apx_file
  2. SQL 撰寫:在資料庫中先跑出正確的結果,這是報表的靈魂。
  3. 程式編譯:編譯 capr901.4gl
  4. 複製畫面:複製4FD檔案並進行QBE條件確認。
  5. 權限註冊:到 p_zz 新增報表程式代號。
  6. 連結設定:運行 r.l2 capr901
  7. 權限放行:在 p_zz 點選給予權限。
  8. 樣板設定p_zaw進行樣板的複製與修改
  9. CR主機:複製樣板,並修改欄位與XML。

當這 9 個步驟走完,妳就能看到Edge產出那一張張充滿價值的數據。


練習的開始

同前面的邏輯,我們增加一些實戰難度:capr901 嘗試在 Crystal Report (CR) 主機製作一個完整的報表樣板。

這項練習的目的,不只是為了排版,更重要的是要讓學妹理解「兩台主機協作」的運作機制。在 TIPTOP 的報表架構中,資料的產出是透過跨主機的資料拋轉呈現在瀏覽器上。

練習的核心與機制在於:

  • 跨主機的接力賽:學會區分「TIPTOP 主機(邏輯大腦)」與「CR 報表主機(專業繪師)」的角色。TIPTOP 負責將資料整理成 XML 格式(種子),然後傳送到 CR 主機進行渲染(開花)。
  • XML 標籤的映射:在 Crystal Report 設計器中,妳必須精確地將 XML 中的欄位標籤對應到報表的版面上。名字一旦錯了一個字,數據就無法正確顯示,這是在考驗妳對資料結構的細緻度。
  • 樣板 (Template) 的權限連結:透過 p_zaw 讓 TIPTOP 系統「認識」妳在 CR 主機上畫好的樣板。這就像是在兩座山頭之間搭起一座橋樑,讓數據能順利通往瀏覽器(Edge)展現出來。
CR 報表樣板

這是在練習「系統觀」,「TIPTOP 的 Crystal Report 列印機制採用了一種高度解耦的『中继架構』。其核心在於:4GL 程式不直接處理報表排版,而是先透過複雜的運算,將最終數據灌入動態生成的暫存表 (l_table),並由 cl_prt_cs3 底層函式將 SQL 指令與參數封裝成 XML 格式的描述檔發送至 CR 主機。CR 主機端則透過預先設計好的樣板 (.rpt),根據 XML 提供的 Metadata 進行欄位映射 (Field Mapping),回頭向資料庫撈取暫存表內的數據。這種機制能確保即便在處理巨量資料時,也能精確控制數據邏輯,同時保有 Crystal Report 在報表美化與輸出格式上的極致靈活性。」

Loading Diagram...

園藝法則:數據報表的種類

在 TIPTOP 的森林裡,報表的形態決定了它服務的對象。我們主要將收成打包成三類不同的包裝:

  1. 明細表 (Detail Reports):最紮實的數據底層。它是園丁每天核對水分與養分的紀錄,講求的是資料的完整性與檢索的便利。
  2. 憑證 (Vouchers/Documents):系統對外的「承諾」。如採購單、出貨單,代表著權威與交易的依據,排版的嚴謹度與精確性是第一優先。
  3. 管理報表 (Management Reports):高度濃縮的「精華液」。它是給農場主人看的,將萬千數據轉化為決策的燈塔。

核心心法:報表是與使用者溝通的第一道橋樑 報表是使用者最常接觸到的層面,不同人員使用的方式也不同,這是第一個妳與使用者溝通最好的橋樑。透過最簡單、最精確的查詢,去面對不同需求最後的地方,這才是報表客製最考驗園丁內功的環節。


結語:數位花園的全面收成

隨著報表篇的圓滿結束,這三天的 TIPTOP 客製教育訓練也畫下了完美的句點。

單檔表單 的紮根,到 單檔明細 的繁茂,再到今天「報表篇」的最終收穫。我們不僅建立了技術上的基本功,後續的「組合技」,就要仰仗多練習不同個案,在代碼與邏輯之間,尋找到了那份屬於自己的節奏感。

教育訓練雖然結束了,但在 TIPTOP 森林裡的探索才剛剛開始。基本功已經打好,圍籬已經築起,接下來,就看學妹如何在這片肥沃的土地上,種出屬於她自己的特殊知識了,我只要偶爾下下指導棋就好。