国货新锐品牌 80 SKU PLM 6 周上线
从 0 到 1 搭建品牌内部 PLM:配方库 + 项目流程 + 合规校验三件套
PLM ↔ 鼎捷 T100 ERP 双向数据同步
广东 OEM 工厂
PLM 里的配方 BOM 与 ERP 物料代码对不上;新增配方要研发员 + ERP 管理员两边手工录入
RabbitMQ 消息队列 + BOM 字段映射表 + 时间戳冲突解决(last-write-wins + 人工干预入口)
客户是广东 OEM 工厂,2017 年上线鼎捷 T100 ERP 用了 8 年,物料编码体系成熟。2024 年底引入新 PLM 系统(CosDev 同期交付的),但前 3 个月 PLM 与 ERP 数据是割裂的:PLM 里的 BOM 与 ERP 物料代码对不上;新增配方要研发员在 PLM 录一遍 + ERP 管理员在 ERP 再录一遍。 手工对码每天 2-3 小时,每月还要做一次"全量对账"找差异,3-4 人一天。问题积累到 2025 年 Q1 终于爆发:一个出货单因为 PLM 里的最新 BOM 没及时同步到 ERP,导致 ERP 按旧 BOM 备料,最终少备 8 公斤透明质酸钠原料,影响一批次成品交付,赔了客户 ¥3.2 万。这件事推动客户立即启动双向同步项目。
总工期 4 周。 第 1 周|字段映射 + 冲突策略设计。逐字段对齐 PLM 物料表 ↔ T100 物料主档:12 个核心字段(物料代码 / INCI 名 / 原料类型 / 供应商 / 规格 / 单位 / 储存条件 / 安全库存 / 报价 / 报价生效期 / 是否禁限用 / 状态)。冲突策略走 last-write-wins(按 changedate 时间戳),不一致项进人工 review 队列(队列没人处理超 24 小时升级到主管)。 第 2 周|鼎捷 BAPI 联调。这一周踩了 5 个坑:① BAPI_MATERIAL_GET 返回的 MATKL 字段类型文档写 NUMC 实际是 CHAR;② 部分自定义字段必须先 commit work 才能查询;③ 报价字段 PRICE 在某些场景返回 -999(表示"未设置")但文档写"0 表示未设置";④ 物料状态字段 LVORM 文档说是 BOOL 实际是 CHAR(1) 含 X / "" / N 三态;⑤ 鼎捷的 RFC 接口默认连接超时 5 秒,跨配方变更(一次 30+ 物料)会超时,要分批调用。靠客户内部鼎捷工程师手动 dump 实际响应 + dump SAP NetWeaver Trace 才修对。 第 3 周|RabbitMQ 消息队列削峰。设计两个 queue:plm_to_erp / erp_to_plm,按物料 ID 做去重(5 秒窗口内同一物料的多次变更只发最后一次)。失败消息进 dead-letter queue 并触发 alert。 第 4 周|冲突 review 队列 UI + 上线测试。研发员手动产生 50 个测试场景(含 8 个故意冲突),全部跑通后灰度上线。
上线 6 个月: · 日均 800+ 配方 / 物料变更双向同步 · 冲突率从 30%(手工对码时代)降到 0.3%(自动同步 + last-write-wins) · ERP 管理员每天 2 小时录入降到 0(彻底取消岗位职责) · 类似"少备料"的事故 0 次复发 · 客户加签第二期合同(¥10 万)做"PLM ↔ T100 财务模块对接"
低估了鼎捷 BAPI 文档残缺度,第 2 周联调遇到 5 个字段返回值类型不一致,导致进度延后 3 天。后总结的经验:所有"接老 ERP 系统"项目,第 1 周必须做"BAPI 实际行为探针"——先写一个不做任何业务逻辑的"调用 + dump"脚本,把所有可能用到的接口实际跑一遍,把文档对不上的字段全部记录下来再开始写业务代码。 PLM 接 ERP 这种活儿,最难的不是写代码,是把对方系统的"实际行为"和"文档说明"之间的差异搞清楚。
「PLM 接 ERP 这种活儿,最难的不是写代码,是把对方系统的"实际行为"和"文档说明"之间的差异搞清楚。」