单身档(明细行)字段扩展是 TIPTOP GP 二次开发里最常见的客制需求之一:标准单身档没有你要的”客户批次号””环保等级”或者”责任工程师”字段。这篇文章记录我处理这类需求的完整流程和容易踩的坑。
动手之前:先回答三个问题
- 这个字段真的属于单身档吗?很多时候字段应该挂在单头档(整个单据一个值)或者主档(料号属性),放错位置以后每次开发都要绕路。
- 历史数据怎么办?新增字段对历史单据是空的,是否需要回填?回填规则是什么?这一步没定,上线后一定会吵。
- 谁在维护客制清单?ERP 升级时,所有客制都要重新评估。没有客制清单的工厂,升级就是一场冒险。
标准流程
TIPTOP GP 基于 Genero / 4GL + Oracle,标准做法遵循以下步骤(具体作业编号以你们公司的客制规范为准):
- 1. 数据库层:在对应单身档表增加字段,注意字段类型和长度宁大勿小,并同步更新表的 schema 定义;
- 2. 画面层:调整对应画面(4ad),把字段放到合适的栏位,设置校验规则和可否维护;
- 3. 程序层:检查该单身档的写入逻辑,确保新增 / 修改 / 删除都处理新字段;
- 4. 报表层:相关报表和查询是否需要带出该字段;
- 5. 测试:至少覆盖新增、修改、作废、下查上查、历史单据打开五种场景。
数据库变更示例
ALTER TABLE ta_file ADD cust_batch VARCHAR2(40);
COMMENT ON COLUMN ta_file.cust_batch IS '客户批次号(客制)';
-- 历史数据回填示例:按指定规则批量更新
UPDATE ta_file SET cust_batch = 'N/A' WHERE cust_batch IS NULL;
我踩过的坑
- 只改了画面没改程序:画面上看得到字段,但过账后数据是空的 — 因为写入逻辑没有覆盖;
- 字段类型给了太小:业务后来要求放完整批号,只能再一次变更;
- 没做客制记录:半年后升级,忘了这个字段是谁加的、为什么加,只能靠逆向分析;
- 报表没跟上:单据上有数据,但月底报表出不来,业务部门以为开发没做完。
如果你正在做 TIPTOP GP 客制,或者对某次客制拿不准,可以把场景发给我聊聊。相关服务:ERP 应用与二次开发。