
TIPTOP 客製紀錄 (二):單檔明細 —— 穿梭在陣列與邏輯的綠色迷宮
進階課程:挑戰單檔明細。掌握 DISPLAY ARRAY 與 INPUT ARRAY,讓學妹學會如何在清單中精準控制每一列資料的「生長」。
Topics
WRITTEN BY

- Name
- Harry Chang
在第一課(單檔表單)中,中科大學妹已經學會了如何正確地在 TIPTOP 的土壤中種下一顆資料種子。但是,ERP 的世界從來不只是單一資料的對應。絕大部分的業務流程,都需要同時管理「一整排」資料。這就是我們第二課的核心:單檔-明細。
這是一場關於「陣列 (Array)」與「資料列控制」的實戰演練。
起點-由架構開始

同昨天邏輯,在 TIPTOP 的森林裡尋找一個「順眼」的程式(找那種邏輯清晰、沒有過多雜草的程式),我是使用 aooi090,將它複製出來。接著,把所有的註記(Comments)全部拿掉,我們會得到一個最乾淨、最純粹的 4GL 骨架。
在 TIPTOP 的世界裡,每一隻單檔維護程式都必須符合這個標準架構。這就像是花園的圍籬,定義了程式運行的邊界。
這以下是一個標準單檔程式的「乾淨版」架構與逐行說明,修改成 capi902:
這就是 TIPTOP 客製的基底。無論功能多麼複雜,底層的骨架永遠是這幾行。只要記住這個節奏,妳就已經掌握了客製程式的律動。
執行的順序
這邊記錄在 TIPTOP 新增一個程式的順序,每個人可能不太一樣,這是我最順手的程序:
- 資料結構定義:使用昨天的tc_apx_file。
- 欄位細修:修改
capi902的相關欄位設定。 - 程式編譯:編譯
capi902.4gl。 - 畫面繼承:複製
aooi090的 4FD 檔案到capi902。 - 介面調整:在 Genero Studio 中修改
capi902的畫面欄位與佈局。 - 上傳與系統連結:執行上傳,並運行
r.f2 capi902與r.gf capi902 0 c y y。 - 權限註冊:到
p_zz新增程式代號。 - 連結設定:運行
r.l2 capi902。 - 權限放行:在
p_zz點選給予該檔案對應的使用權限。
以上如果順利,你就可以在 TIPTOP 森林中開啟你親手新增的功能了。

練習的開始
同昨天的邏輯,但今天我們要增加一些難度。這一次的任務不再只是修剪枝葉,而是要挑戰開闢一片新的苗圃:新增一個名為 tc_apz_file 的資料表,並從頭開始建立一支全新的維護程式。
這項練習的核心目的,是為了訓練學妹「批量複製與重構」的效率。在 TIPTOP 的世界裡,熟練使用 vi 編輯器的指令是基本功中的基本功。我教她如何透過 vi 的強大功能,練習快速複製並重構整支程式:
:%s/tc_apx/tc_apz/g (或在選定範圍內使用 1,$s/tc_apx/tc_apz/g)
這場練習的精髓在於:
- 全域替換的膽識:學會如何精準地在數千行代碼中,一鍵替換所有的資料來源前綴。
- 架構的完整複製:從
MAIN到各個FUNCTION,透過整體的替換,讓新人更有感地發現「前綴」在 TIPTOP 命名規範中的靈魂地位。 - 從零到一的複習:當資料庫表格變了,從
p_zta的匯入到4FD的欄位對應都要重新來過,這能迫使學妹在短時間內反覆複習那 10 個開發步驟。
這不是單純的複製貼上,而是在練習「如何站在巨人的肩膀上快速開墾」。當妳能靈活運用 vi 指令在幾秒鐘內完成整支程式的初步重構,那份對於代碼的掌控感,會讓妳在應對更複雜的客製需求時,更顯游刃有餘。
第二課收成與行動
我們在這堂課中,成功實作了一支具備清單維護功能的程式。這不僅是技術的累積,更是對系統嚴密性的體認。

園藝法則:精準修剪的藝術
在處理明細客製時,我再次提醒學妹關於大型 ERP 的生存規範:
- Index 的嚴格守護:永遠確認妳操作的是真正的數據索引(如
ARR_CURR()),而不是畫面上的顯示序號。這是防止程式在捲動時發生「錯位」現象的護城河。 - BP 段的架構佈局:理解 BP 段的初始化重要性。這是進入明細操作視窗前的第一道手續,決定了後續順序的觸發時機。
- Row Event 的先後順序:必須精確掌握
BEFORE ROW與ON ROW CHANGE..等 的觸發時機。這就像是園丁修剪每一列枝條前後的動作——進入前先定位,離開後再結算。
核心心法:用同樣的資料結構,了解單身明細的運作 當妳發現維護程式與明細表格其實共用著極其相似的資料紀錄(RECORD)定義時,妳就會明白:明細不過是將單一的種子,整齊地排列成了一排苗圃。透過這層關聯,妳能更容易掌握資料在「單筆」與「多筆」之間流轉的脈動。
結語:通往組合技的基石
隨著單檔表單與單檔明細的圓滿收成,我們已經在 TIPTOP 的土壤中紮下了最穩固的基本功。
從「點」的資料維護到「線」的陣列處理,這不再只是單一功能的完成,而是對全域資料流動的深刻體悟。接下來的挑戰,將會是這些基礎知識的「組合技應用」——如何將這些散落在各處的資料,透過更複雜的邏輯串接與維護,發揮出系統應有的最大價值。
基本功已經打好,這座數位花園的圍籬也已築起。在下一課中,我們將學習如何將這些辛勤灌溉的數據「打包」輸出,挑戰最後的 報表呈現,完成這場傳承之旅的最後收穫。