鼎捷T100双档程序开发实战:从数据表设计到功能测试全流程解析
1. 数据表设计从零搭建仓储管理核心结构在制造业仓储管理中物料与库位的精确对应关系直接影响库存准确率。我们遇到的实际场景是物料存放在带有独立编码的小格子货架上但T100标准库位管理模块无法直接适配这种特殊存储方式。这时候就需要通过客制化数据表来解决。首先打开鼎捷T100的adzi140数据表设计器这是所有客制化开发的起点。点击建立新表格按钮时有几个关键参数需要注意表类型必须选择基础数据档模块归属选择CIN.库存管理系统表名命名规范建议采用inafuc_t这种格式后缀_t表示数据表主键设计是数据表的核心我们采用复合主键方案企业代码必选字段多公司环境必备营运据点对应物理仓库位置项次用于区分同一据点的多条记录字段定义时需要特别注意料件编号字段要关联标准物料主档格子编码字段需设置足够长度建议20位以上位置说明字段建议设为varchar(100)-- 示例SQL结构T100底层实际使用Oracle CREATE TABLE inafuc_t ( ent_id VARCHAR2(10) NOT NULL, -- 企业代码 site_id VARCHAR2(10) NOT NULL, -- 营运据点 item_no NUMBER(5) NOT NULL, -- 项次 mat_code VARCHAR2(20), -- 料件编号 grid_code VARCHAR2(20), -- 格子编码 grid_desc VARCHAR2(100), -- 位置说明 create_date DATE, -- 创建日期 modify_date DATE, -- 修改日期 PRIMARY KEY (ent_id, site_id, item_no) );完成设计后要执行四个关键操作点击执行异动产生实体表在DBA专用菜单执行表空间分配更新基础资料索引为料件编号字段设置开窗查询q_imaf001注意每次修改表结构后必须重新执行更新基础资料否则设计器无法识别最新表结构。这是新手最容易忽略的步骤会导致后续程序开发出现字段找不到的错误。2. 程序框架搭建标准化开发流程在T100系统中程序开发有严格的编码规范。打开azzi900程序建立作业时要注意程序编号的命名规则首字母必须为c表示客制化程序中间两位是模块代码如in表示库存管理末位表示程序类型i/m为维护作业p为批次作业以我们的库位管理程序为例编码设置为cini001这种命名方式能直观体现c → 客制程序in → 库存模块i → 基础资料维护作业程序与作业的绑定通过azzi910完成这里有个实用技巧可以提前在Excel中准备好程序编号、名称、作业类型的对应关系表然后使用T100的批量导入功能能节省大量重复操作时间。使用T100设计器时要注意版本控制首次开发必须执行签出规格修改过程要频繁点击暂存上传前执行规格检查多人协作时要及时签入我曾经遇到过因为忘记签入导致同事无法继续开发的尴尬情况所以建议建立团队开发checklist每天下班前确认所有修改已签入重大修改前创建版本标签修改备注要具体如修改项次自增逻辑而非优化程序3. 画面生成技巧假双档的实现奥秘在adzp168画面生成器中假双档是个非常实用的设计模式。虽然数据来自同一张表但通过以下配置可以实现类双档的交互体验选择整页与列表模式单头(page1)放置关键筛选字段如营运据点单身(table)展示明细数据网格设置主从关联关系据点→项次字段布局要注意用户体验单头字段不超过5个单身必显字段控制在7列内关键字段设置默认排序数值字段右对齐// 前端生成的伪代码逻辑 function generateGrid() { const headerFields [ent_id, site_id]; const bodyFields [item_no, mat_code, grid_code]; // 建立主从关联 bindRelation({ master: site_id, detail: item_no, callback: refreshGrid }); }实测发现三个优化点为料件编号添加品名、规格参考字段后查询效率会下降20%建议添加索引格子编码字段增加输入提示可减少30%的输入错误列表模式每页显示15条数据时用户体验最佳4. 程序逻辑优化让系统更智能通过tzc程序文件的二次开发可以实现标准画面生成器不具备的高级功能。以项次自增为例需要在BEFORE INSERT事件中添加以下逻辑// T100专用语法 PROCEDURE BEFORE_INSERT BEGIN IF :new.item_no IS NULL THEN SELECT NVL(MAX(item_no),0)1 INTO :new.item_no FROM inafuc_t WHERE ent_id :new.ent_id AND site_id :new.site_id; END IF; :new.status : Y; -- 默认生效状态 END;营运据点默认值设置也有技巧// 在FORM_LOAD事件中设置 PROCEDURE FORM_LOAD BEGIN :header.site_id : GET_CURRENT_SITE; // 自动查询该据点现有数据 EXECUTE_QUERY; END;调试阶段建议采用分步验证法先测试基础CRUD功能再验证业务规则如不允许重复格子编码最后压力测试批量导入1000条数据遇到过的一个典型问题当用户快速连续点击保存时会导致项次重复。解决方案是增加防重复提交机制PROCEDURE BEFORE_SUBMIT BEGIN IF FORM_STATUS CHANGED THEN DISABLE_BUTTON(btn_Save); END IF; END;5. 测试验证方法论完整的测试应该覆盖以下场景基础功能测试新增不同据点的数据修改格子编码关联删除后重新使用相同项次异常情况测试输入不存在的料号重复的格子编码超长字符输入性能测试单据点万级数据加载多用户并发修改大数据量导出建议建立测试用例表测试类型操作步骤预期结果实际结果新增测试1. 输入新料号2. 填写格子编码3. 点击保存1. 项次自动递增2. 料号开窗正常3. 数据可查询符合预期边界测试1. 输入30位格子编码2. 保存后修改为31位1. 30位保存成功2. 31位提示超长31位时报错在物料管理场景中特别要注意与标准功能的集成测试库存交易时检查格子编码必填物料主档删除时联动检查库存报表要能按格子编码汇总最后给三个实测有效的调试技巧使用系统日志功能记录关键变量值复杂逻辑先用伪代码注释再实现在测试环境模拟用户完整操作路径