手把手教你配置鼎捷T100二次开发环境:从模块、表格到函数的命名规则全解析(附实战示例)
鼎捷T100二次开发实战指南从环境搭建到命名规范全解析1. 开发环境准备与基础概念鼎捷T100作为企业级ERP系统其二次开发环境与传统软件开发有显著差异。初次接触的开发者在配置环境时往往会遇到各种水土不服的情况。我们先从最基础的开发工具链开始必备工具清单r.t工具T100专用的表格管理工具用于创建和维护数据表结构Genero开发套件T100前端界面的主要开发工具4GL编译器用于编译业务逻辑代码T100 SDK包含各类API接口和开发文档安装完成后建议先运行环境检查命令# 检查工具链完整性 t100env check --all # 验证数据库连接 dbconn test --profile default开发目录结构遵循严格的规范/$ERP/ ├── src/ # 源代码目录 ├── cfg/ # 配置文件 ├── lib/ # 共享库 ├── temp/ # 临时文件 └── log/ # 运行日志2. 模块化开发实践2.1 模块创建规范T100采用模块化架构设计每个功能模块都有明确的边界。创建新模块时需要遵循以下步骤确定模块类型标准模块AIM、AXM等前缀客制模块UC开头表示用户定制行业模块包含行业代码后缀模块注册 在azzi900系统表中注册新模块示例SQLINSERT INTO azzi900 (mod_code, mod_name, mod_type, create_date) VALUES (uc01, 客制采购模块, U, CURRENT_DATE);目录初始化t100mod create --code uc01 --name Custom Purchase2.2 模块依赖管理跨模块调用需要特别注意版本兼容性。推荐使用依赖声明文件mod.dep[requires] aim 2.5. axm 1.8.0 [excludes] axmr 3.0.0-beta3. 数据表设计详解3.1 标准表结构设计T100的表命名遵循严格的编码规则核心格式为[模块代码(2位)][流水号(2位)]_t示例表创建流程使用r.t工具创建表结构定义字段命名规范[表名(不含_t)][字段类型][流水号(3位)]设置必要审计字段ALTER TABLE uc01aa_t ADD COLUMN crtid VARCHAR(10), ADD COLUMN crtdt DATETIME, ADD COLUMN modid VARCHAR(10), ADD COLUMN moddt DATETIME;常用字段类型对照表T100类型SQL类型说明TX30VARCHAR(30)定长文本AMT15DECIMAL(15,2)金额类型DTDATE日期类型TMTIME时间类型3.2 客制字段处理当需要扩展标准表时必须使用特定前缀ua标准表的客制字段ud弹性字段uc全新客制表字段错误示例-- 错误直接修改标准字段 ALTER TABLE imaa_t MODIFY COLUMN imaa001 VARCHAR(50);正确做法-- 添加客制字段 ALTER TABLE imaa_t ADD COLUMN imaaua001 VARCHAR(50);4. 程序开发规范4.1 作业程序命名体系T100程序命名包含丰富的信息[模块(3位)][类型(1位)][流水号(3位)][_行业代码(可选)]程序类型标识符I基础数据维护T事务处理P批处理作业Q查询界面R报表程序示例程序结构FUNCTION uci100_main() DEFINE l_count INTEGER CALL uci100_initialize() WHILE TRUE CALL uci100_process() LET l_count l_count 1 END WHILE END FUNCTION4.2 函数开发要点命名规范[程序名]_[动作类型]()常用动作类型_insert数据新增_update数据修改_query数据查询变量作用域标记DEFINE g_config RECORD -- 全局变量 key VARCHAR(20), value VARCHAR(100) END RECORD FUNCTION demo() DEFINE l_temp INTEGER -- 局部变量 DEFINE p_input VARCHAR -- 参数变量 END FUNCTION异常处理模板TRY -- 业务逻辑 CATCH CALL cl_err(SQLCA.SQLCODE, SQLCA.SQLERRM) ROLLBACK WORK END TRY5. 实战案例采购订单扩展5.1 需求场景在标准采购模块(PMM)基础上扩展增加供应商评估字段添加审批工作流定制报表输出5.2 实施步骤创建客制表CREATE TABLE uc01aa_t ( uc01aa001 TX30, -- 订单编号 uc01aa002 AMT15, -- 评估分数 uc01aa003 DT, -- 评估日期 crtid TX10, -- 创建人 crtdt DT -- 创建时间 );扩展标准程序# 在pmmi100程序中扩展 FUNCTION pmmi100_after_save() -- 写入评估数据 INSERT INTO uc01aa_t VALUES ( pmmi100.po_no, pmmi100.eval_score, CURRENT DATE, globals.user_id, CURRENT DATETIME ); END FUNCTION定制报表开发REPORT uc01r100(po_no) DEFINE po_no VARCHAR(30) SELECT * FROM uc01aa_t WHERE uc01aa001 po_no OUTPUT TO PRINTER FORMAT COLUMN 1: uc01aa001 COLUMN 2: uc01aa002 USING ##.## END FORMAT END REPORT6. 调试与优化技巧6.1 常见问题排查字段类型冲突注意T100对字段类型有严格校验特别是金额和日期字段命名规范错误# 使用lint工具检查命名 t100lint check-naming src/uc01/性能优化建议避免在循环中执行SQL查询使用PREPARE语句复用查询计划批量操作使用BEGIN WORK/COMMIT WORK6.2 调试工具使用日志输出CALL cl_debug(1, 当前订单号 || l_po_no)交互式调试t100debug attach --pid 12345SQL跟踪SET DEBUG ON; -- 执行操作 SET DEBUG OFF;在实际项目中我们发现最常出现问题的环节是字段命名规范和类型转换。特别是在对接第三方系统时建议先建立数据映射表明确每个字段的对应关系和转换规则。