先说结论:ERP 和 WMS 对接,主数据必须先行。我做过 30 多个上线项目,凡是想"业务单据先通、主数据后面慢慢补"的,十个有九个在上线前夜翻车。剩下一个不是运气好,是上线日期被推迟了才补上。

主数据和业务单据的关系,就像路和车。接口能把 ERP 的入库单推到 WMS、能把出库单传过去,这叫路修通了。但主数据是路牌:物料编码对不上、库位代码各说各话、客户主数据缺字段,车照样开不到目的地。接口先通不代表能上线——这个坑我见过三次,一模一样的剧本。

为什么主数据晚补一定会爆雷

先讲一个 2024 年夏天的项目。加州河滨市,一家美妆电商品牌自建仓,5 万平方英尺,日均 4000 单左右。客户 IT 总监拍板:"主数据清洗太费时间,我们先打通 PO 和 SO 接口,上线后再补物料主数据。"

上线前三天联调,ERP 推了一张采购订单过来,WMS 报错:SKU-48213 不存在。ERP 那边的物料号是 "SKU-48213",WMS 这边导入时是 "SKU48213",少了个连字符。两边谁也不让谁。翻出接口文档一看,字段映射里物料号写的是"直接透传"——透传的都是脏数据。

更狠的在后面。ERP 里有 6000 多个活跃 SKU,其中 400 多个是停产又复产的"僵尸物料":价格表里还躺着,但已经不进货了。上线当天第一波收货,收货员扫码,WMS 显示"物料未维护",卡在栈板上。上线时间从上午 9 点推到下午 4 点,仓库里堆了 12 辆卡车的货。最后怎么救的?连夜冻结 ERP 的物料创建权限,只认 WMS 的物料主数据为准,ERP 反向同步。这一折腾,上线推迟了两周,多花了三个顾问周。

这个坑我见过三次,第二次是在一家俄亥俄的家居 3PL。那次反着来:项目启动第一天就定主数据规则——物料编码、客户编码、库位编码,三个主数据域在上线前 8 周冻结,任何新 SKU 进仓必须先走主数据审核。业务单据接口反而是最后两周才联调的。上线夜只遇到两个小问题,一个是批次号的字段长度 ERP 是 20 位、WMS 是 30 位,加了个截断逻辑,半小时搞定。那个项目是我做过的最省心的上线之一。

两个项目摆在一起,答案很清楚:主数据先行不是"求稳",是"唯一能活"的路线。主数据是两个系统之间所有对话的语言,语言没统一,对话越快,误会越大。

分步做法:主数据先行的七个动作

我现在每个项目都用同一套做法,照着走就行:

  1. 立编码规则先于一切。上线前 8~10 周,先把物料编码规则、库位编码规则、客户/供应商编码规则三份文档定稿,三方签字。谁签字谁负责改。规则定完就冻结,特殊情况走变更单,不能口头改。

  2. 主数据认领一个"主人"。ERP 和 WMS 都需要物料数据,但只能有一个系统是源头。我一般定:物料归 ERP(财务和采购都在那),库位归 WMS(仓库最懂货架),客户和供应商归 ERP。源头系统负责创建和变更,下游只读。

  3. 做一次全量主数据清洗。别偷懒,建一张表,把 ERP 里的活跃物料和 WMS 里的存货物料逐行对一遍。重点查三类:编码不一致的、名称/规格对不上的、状态是停产但还在跑单据的。我见过一个项目清洗出 7% 的僵尸物料——这些不死干净,上线就是定时炸弹。

  4. 接口字段映射表逐字段签字。不是"大概通一下"——采购单头、行项目、物料、数量单位、批次、效期,每一个字段写明来源、去向、转换规则。特别是数量单位:ERP 按箱、WMS 按件的项目我做过四次,转换系数错一次,整批单据全废。

  5. 先通主数据接口,再通业务接口。顺序是:物料同步接口先调通且数据一致 → 库位/客户/供应商接口调通 → 业务单据(PO/ASN/SO/退货)接口最后调通。这个顺序不能反。业务单据调通的时候,主数据必须已经是"对齐状态",否则你调的是一堆假阳性。

  6. 联调造单必须带真实脏数据。测试场景里必须掺入几种典型脏数据:物料号多一位、客户简称含空格、批次号超长。只用干净数据联调,等于没调过。

  7. 上线前夜 checklist(我每轮都用这张表):

    • 主数据三份编码规则是否冻结,变更单是否为零
    • ERP→WMS 物料全量对账是否一致,差异条数为零
    • 库位是否已同步到 WMS,空库位是否验证过
    • 僵尸物料是否已标记停用,单据能否再建单
    • 数量单位转换系数是否逐 SKU 复核过
    • 上一个完整业务日的数据重演(PO→收货→上架→波次→出库→回传)是否全绿
    • 回滚预案:如果上线当天接口大面积报错,先回哪个系统

主数据接口的同步频率,也顺带说清楚。物料、客户、供应商这三类,用准实时推送:ERP 建了物料,几分钟内必须到 WMS,不能隔夜。库位是 WMS 内部的,改完即生效,不需要推送。我见过项目把物料同步做成每天凌晨跑批,上午 10 点仓库急着发新品,物料还没过来,拣货任务建不出来。所以准实时是底线:延迟超过 15 分钟,接口就要报警。

系统集成联调现场

什么时候可以"业务先行":混合策略

也不是没有例外。如果你的场景是:仓库是纯新建、没有历史库存、物料不到 500 个、单据类型只有收货和出库两种——可以走混合策略:主数据规则和业务单据接口并行做,但主数据接口先上线、业务接口后上线。这个"混合"其实还是主数据先行,只是时间轴压缩了。

唯一真正的例外是:ERP 是老系统动不了、WMS 是新上的,且老 ERP 里根本没有主数据治理能力。那我做的做法是把主数据权全部收给 WMS:WMS 建物料、建库位、建客户,ERP 只管传单据和拿回传。这叫"主数据以新系统为准",本质还是先统一语言再通话。

翻车点预警:这些坑最容易在上线前夜爆

第一坑:字段长度不一致。ERP 的客户简称允许 50 个字符,WMS 只收 30 个。上线前没对过,客户简称传过来被截断,两个系统里同一个客户名字不一样,对账对不上。解决:映射表里每个字段都写明长度,超长策略写死(截断还是报错),二选一。

第二坑:单位换算埋在程序里。有些集成商把"1 箱 = 24 件"写死在代码里,客户换了包装规格,接口不报错,数据默默错了三个月。解决:换算系数必须是主数据里的一个字段,跟着物料走,不在代码里硬编码。

第三坑:退货单据引用失效。物料在 ERP 里被停用了,WMS 这边退货单还引用着。单据传过去,接口报物料不存在,退货流程卡住。解决:物料停用前必须检查 WMS 是否还有未结单据引用,做一层前置校验。

第四坑:多组织/多仓的组织维度错位。ERP 的组织架构和 WMS 的仓库编码不是一对一的,接口传组织代码,WMS 解析到错误的仓。解决:组织映射单独成表,不要混在物料映射里。

结尾不讲虚的。下一轮 ERP-WMS 对接项目,开工会第一件事:把"主数据先行"四个字写在白板上,让三方都签字。你会感谢我的——我见过的每一个按这个顺序做的项目,上线夜都没出大事;每一个反着做的,我都在上线前夜接到过求救电话。

作者:林晓|WMS实施顾问