尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

ERP与CRM、PLM、MES、WMS等七大系统边界与集成指南

ERP与CRM、PLM、MES、WMS等七大系统边界与集成指南 简介这份资料以一张图串联起ERP与CRM、MRP、PLM、APS、MES、WMS、SRM等企业数字化核心系统的定位与相互关系适合企业信息化人员、数字化转型从业者、ERP实施顾问以及希望理清制造/供应链软件边界的初学者阅读。内容围绕各系统的核心职责展开如CRM偏向客户与销售前端MRP侧重物料需求与生产采购协同APS解决智能排程MES聚焦生产现场执行PLM覆盖产品全生命周期并进一步梳理了它们与ERP之间的数据流转和业务衔接逻辑帮助读者跳出单一系统视角、建立整体架构认知。资源为1个docx文档大小约1.63MB文字结构清晰便于直接阅读、批注和二次整理。已有364人学习下载适合用于内部培训、项目选型前扫盲或个人知识体系搭建。1. ERP不是“系统”是企业的账本搞过几年制造业信息化的人都会有同一个感受ERP实施最难的从来不是技术而是边界。销售说客户信息在CRM里改计划说排产要用APS车间说工单得看MES仓库说库存以WMS为准研发说BOM得问PLM——每个人都说得对但问题来了大家口中的ERP到底是什么它和这些系统到底是上下级、平级还是父子关系我的答案是ERP本质上不是“干活的系统”是一本账。它不负责车间里真实的加工动作不负责仓库里具体的货位移动也不负责研发里图纸的版本流转。但它负责把所有这些动作翻译成钱、物料、工时和凭证。CRM、MRP、PLM、APS、MES、WMS、SRM这些系统的执行结果最终都要汇到ERP里形成可审计、可追溯、可结算的数据闭环。所以搞懂它们的关系不是背一张架构图的事而是搞懂“每一笔业务到底在哪里发生、在哪里留痕、在哪里对账”。这篇就按这个思路把七者的边界、数据流和落地接口一次讲透。2. 从“订单到现金”拆边界七大系统各管哪一段2.1 先看一张总览系统、核心对象与ERP的关系我习惯用“订单到现金”这条主链路来拆边界。任何一单生意从客户询价开始经历研发定版、采购备料、计划排产、车间加工、成品入库、发运签收到最终收款每一个环节都有一个系统在记录现场而ERP守着中间的财务和库存台账。系统核心对象关键单据/字段与ERP的主数据关系更新频率最容易和ERP打架的点CRM客户、线索、商机、报价客户主数据、报价单客户档案通常在CRM创建同步给ERP实时/准实时订单以谁为准PLM物料、BOM、图纸、ECN工程BOMEBOM、物料主数据物料编码和设计BOM由PLM发布到ERP变更驱动制造BOM由谁维护MRP物料需求计划净需求、计划订单、例外信息是ERP内部功能模块读取库存/在途/BOM批处理每日/每班和APS的分工边界APS工序、资源、排程详细排程、产能负荷、交期承诺从ERP取工单和物料约束回写计划结果分钟级/事件驱动计划调整谁说了算MES工单、工序、设备、报工工单派工、报工记录、不良数、工时从ERP接工单回传报工与完工数据实时库存扣减时点WMS库位、批次、SN、出入库单收货单、上架单、拣货单、盘点单从ERP接库存组织/物料/库位回传过账凭证实时/准实时账面库存与实物差异SRM供应商、询报价、采购协同供应商主数据、询价单、送货单供应商档案从SRM同步ERPPO由ERP下发准实时供应商主数据唯一性这张表不是官方架构图是我做方案时给客户讲边界用的最简模型。核心逻辑只有一句话ERP管“账实一致的结果”外围系统管“账实发生的过程”。谁负责创建主数据、谁负责回传执行结果这就是关系的内核。2.2 CRM只认客户不认物料CRM的边界非常清晰——从线索到订单它的世界里只有“客户”这个对象。客户叫什么、属于哪个行业、历史买了什么、账期怎么定的、这次报价多少这些数据在CRM里最完整。但要注意CRM里的销售订单不是严格意义上的“订单”准确说是“销售意向”。当销售在CRM录了一张订单它需要同步到ERP经过信用检查、价格校验、库存可用量计算之后才转成正式的ERP销售订单。我见过很多企业把CRM的订单直接当作ERP订单用结果价格条款、收货地址、税码全都不符合财务规范最后只能靠人工干预。所以CRM与ERP的操作边界应该是CRM是客户主数据的唯一创建源而订单的状态机以ERP为准。如果你们用开源CRM或者商用产品设置同步任务时把客户主数据、联系人、报价单做双向同步但订单永远是CRM创建→ERP确认→状态回传。2.3 PLM与MRP一个是“设计怎么说”一个是“缺不缺料”PLM解决的是“这件产品到底由什么组成”。它管物料编码、设计BOM、图纸、工艺路线、变更单ECN。注意一点PLM里的BOM叫EBOM工程BOM是按功能模块组织的比如一台设备拆成机架、电源、控制板。但ERP和MES用的是MBOM制造BOM是按装配顺序组织的要加辅料、工装、虚拟件。我一般建议客户把物料主数据、EBOM的发布放到PLM而MBOM的维护放到ERP。PLM里走完ECN变更流程后物料和BOM增量同步到ERPERP里的计划员再基于工艺路线把EBOM调整成MBOM。这个分工能避免一类经典灾难——研发在PLM里改了BOMERP里物料需求却按旧BOM跑造成采购缺料或呆滞。MRP和APS的边界要单独说。MRP不是独立系统是ERP里的一个计算引擎或模块。它解决的问题是“缺不缺料”跑一次MRP展开BOM、扣掉库存和在途、考虑提前期得出采购建议和生产建议。APS解决的是“什么时候在哪条产线上做”它把MRP输送到时段的工单再往下排到工序级考虑设备产能、模具、人员技能、换型时间。两者的衔接常见做法是ERP里MRP产生的计划订单转为生产工单后接口推送给APSAPS排完详细工序计划再把各工序的开工/完工时间回写到ERP工单的工序行上。如果你们ERP自带简单的排产功能工序不超过三级、设备不共享可以不引入APS但凡有多条产线互相争抢资源MRP的粗能力计划RCCP就不够用了。2.4 MES车间里正在发生的ERP永远追不上ERP里的生产数据本质是“事后录入”。工单报工、完工入库都是车间干完了再填单子财务结账时才看得到成本。MES的存在意义在于它记录的是正在发生的状态。工单下达到哪个工序、设备当前在加工哪件、良品率多少、工人报了多少工时、有没有异常停机这些数据在MES里是实时的。所以MES与ERP的接口是典型的“下行工单、上行报工”。ERP把已经下达的生产订单和物料清单推给MESMES执行完一个工序回传报工记录数量、工时、不良数、设备号、操作工。ERP拿到报工后做工序级完工确认并触发后续的库存和成本过账。很多人问开源MES能不能用比如搜“开源mes系统: carbon本地部署”之类我的观点是MES的难点不在排产算法而在和具体车间设备、工艺、人员的适配。开源MES当学习样例和研究数据模型没问题真上线盯生产还是先评估清楚数采、防错、异常闭环这些现场功能的成熟度再说。2.5 WMS账面库存和实物库存之间的那个“时差”WMS是对ERP库存管理最直接的打脸。ERP里的库存是过账后的结果——收货过账、发货过账、盘点过账账上才变。WMS里的库存是实时的货位状态——每一件货在哪个库区、哪个货位、什么批次、什么状态待检/合格/冻结是靠扫码逐件驱动的。从ERP角度看WMS就像它的一个“超级仓库管家”。ERP说“我有100件在成品库”WMS知道这100件分布在哪几个托盘上哪些被锁定待发货哪些在质检区不能动。两边通过过账接口保持一致ERP的入库单推给WMSWMS收货扫码后回传过账凭证ERP扣掉“在途”增加“可用”。有一个高频坑值得单独说多仓、多国业务的ERP库存同步。搜“多国多仓业务的海外仓系统怎么选”时能看到大量WMS对比核心选型标准不在功能列表而在两点一是库存组织模型能否映射ERP的工厂/库存地点/库位三级结构二是跨国网络延迟下的过账接口能否做异步补偿。如果ERP和WMS之间走实时同步海外仓网络抖动一次整条链路就堵住了。我一般建议WMS过账接口走消息队列做异步最终一致而不是同步HTTP调用。2.6 SRM把供应商拉进同一个数据池SRM的核心是供应商协同。ERP里的供应商主数据在应付账款、采购订单里都有但真正维护供应商资质、等级、合作历史、询报价记录的地方是SRM。日常流程是采购员在SRM里创建询价单供应商在门户报价采购比价后把确定的采购订单下发——这个订单会同步到ERP生成正式的PO后续的收货和发票校验仍以ERP为准。这里要分清一个常见误解ERP的采购模块不等于SRM。ERP管“买了什么、花了多少钱、货到了没有”SRM管“跟谁买、价格怎么谈的、供应商表现如何”。所以SRM的订单状态、交期确认、送货通知应当回传ERP而ERP的应付账款、历史价格应当回传SRM供绩效分析。3. 数据流怎么串主数据下行、执行数据上行3.1 主数据流向每类档案只认一个“出生地”把所有系统连起来之前先决定一件事每一个主数据字段由谁创建。这是整个集成的“宪法”。我见到的标准做法是——客户主数据CRM创建同步到ERP和WMS用于发货。供应商主数据SRM创建同步到ERP。物料主数据PLM创建含图纸、设计属性同步到ERP和MES/WMS。BOMPLM发布EBOMERP维护MBOMMES只接收制造BOM。工艺路线在ERP创建同步到MES和APS。库位ERP创建库存地点WMS创建货位IDERP里只维护到库存地点层级。主数据下行有一个容易被忽略的细节字段映射不是一味的“全字段同步”。比如物料主数据在PLM里有几十个研发属性ERP只需要其中与采购、计划、财务相关的十几个字段MES又只需要物料编码、名称、单位、版本。全字段同步会导致接口极脆弱每加一个字段就要改两边映射。所以我通常会设计一张“主数据分发矩阵”按目标系统裁剪字段集。3.2 事务数据流从商机到应收的完整链路把主数据铺好之后事务数据的传导才有意义。以“一台定制设备从销售到交付”为例完整链路是这样的销售在CRM建商机和报价单确认后生成销售订单同步到ERP。ERP计算可用量不足以交货触发MRP跑出采购建议和生产建议。PLM已经发布了物料和BOM计划员在ERP把计划订单转成生产工单推给APS。APS排到工序级回写工单的开工/完工时间ERP把工单及MBOM推给MES。SRM接收ERP的采购订单供应商送货WMS做收货、上架、过账ERP库存可用量更新。MES完成车间加工和报工回传完工数完工品由WMS入库ERP库存增加。发货时WMS做拣货并回传发货过账ERP同步扣减库存、生成应收、开票。当你把八张系统的数据流画到一张图里会发现规律异常清晰主数据和计划是“从上往下推”的执行结果则是“从下往上汇”的。CRM、SRM、PLM负责前端数据的发起APS、MES、WMS负责后端的执行反馈ERP站在中间做翻译和记账。3.3 对账接口库存和成本差异到底该信谁三个系统都可能有库存数据——ERP有账面库存WMS有实时库存MES有在制品数量。一旦对不上先不要急着“改账”要按“时差”和“单据流”来定位。我一般用一条SQL先在ERP侧做库存事务流水核对SELECT 物料编码, 库存地点, SUM(CASE WHEN 过账类型 收货 THEN 数量 WHEN 过账类型 发货 THEN -数量 ELSE 0 END) AS 账面结余 FROM erp_inventory_transactions WHERE 过账日期 BETWEEN :start_date AND :end_date GROUP BY 物料编码, 库存地点 HAVING ABS(账面结余) 0.001;这段SQL从ERP的库存事务表里汇总每笔过账的增减算出账面结余。注意条件是过账日期不是创建日期——很多ERP系统里事务创建和过账是两个时间排错时容易忽略这一点。HAVING过滤掉结余为零的记录只保留有差异的物料。查到ERP侧结余后再让WMS侧导同一时点的实时库存快照两边按“物料库存地点”比对。如果ERP账上有WMS没有大概率是WMS收货后没有回传过账或者过账接口报错被吞了反过来WMS有而ERP没有通常是库存地点映射没配好WMS在错误的ERP仓库里做了过账。4. 集成落地接口设计、状态机与幂等控制4.1 中间表、API还是消息队列集成的技术选型取决于数据量和实时性要求不是越新越好。中间表适合批处理场景比如ERP夜间跑MRP把结果写到中间表APS定时拉取。简单稳定运维容易缺点是实时性差不适合需要快速响应的场景。REST API适合工单下达、订单同步这类请求/响应式的实时场景接口直接出错能立即返回。消息队列适合高吞吐、异步解耦的过账类场景比如WMS的过账凭证回传生产端不断推消费端慢慢处理。我实际做集成时80%的接口用API 消息队列组合实时请求走REST确认后丢消息队列做最终落库。这样既保证了调用方的及时感知又让重试和补偿落在消息层。4.2 实例ERP下发工单到MES报工回传这是一个最简的工单下发报工回传接口用Python写模拟ERP侧调用MES接口import requests import json # ERP侧下发工单到 MES def send_work_order_to_mes(work_order): payload { work_order_id: work_order[id], material_code: work_order[material_code], material_name: work_order[material_name], planned_qty: work_order[planned_qty], start_date: work_order[start_date], due_date: work_order[due_date], bom_ver: work_order[bom_ver] # 工序列表从ERP的工艺路线读取 # operations: [ # {op_no: 10, work_center: CNC-01, std_minutes: 15}, # {op_no: 20, work_center: ASSY-02, std_minutes: 30} # ] } resp requests.post( http://mes.internal/api/v1/work-orders, jsonpayload, headers{Authorization: Bearer ${MES_API_TOKEN}}, timeout10 ) # 非2xx必须抛异常避免ERP误以为下发成功 resp.raise_for_status() return resp.json() # 返回MES内部的工单号 # MES侧报工记录回传 ERP由MES定时拉取或被动接收均可 def receive_report_from_mes(report): # report: {wo_id: WO-1001, op_no: 10, # qty: 45, scrap_qty: 2, operator: Zhao, reported_at: ...} # 幂等键唯一确定一条报工记录防止重复推送 idempotency_key f{report[wo_id]}-{report[op_no]}-{report[reported_at]} resp requests.post( http://erp.internal/api/v1/production/reports, jsonreport, headers{Idempotency-Key: idempotency_key}, timeout10 ) resp.raise_for_status()这段代码有两个关键设计。第一个是工单下发时payload里我注释掉了operations字段——工单本身是ERP的数据但工序明细有时候MES维护得更细两边要约定到底哪个字段以谁为准。第二个是报工回传用了Idempotency-Key请求头——MES端网络超时后通常会重试如果没有幂等控制同一条报工记录会被记两次ERP的工时和成本就翻倍了。4.3 状态机约定宁可多设计一个“中间态”ERP和外围系统之间状态字段的语义必须提前对齐。最典型的案例是“工单已完工”这个状态MES认为“所有工序都报了完工”就推到完工但ERP认为必须“完工入库过账”才算完工。两个系统对状态的认知差会导致工单在ERP侧永远处于“已发料未完工”成本无法归集。我一般会为这类跨系统状态机加一个“已完工待过账”的中间态。MES推完工ERP收到后置为“待过账”过账成功才是“已完工”。中间态可以容忍异步延迟和网络失败不至于让两端直接跳到终态。同理WMS的收货单过账也值得加一层WMS推“实收数量”ERP过账后回传“过账凭证号”WMS收到凭证号后才把本地状态置为“已过账”。没有这层握手两边库存差就是这么积累出来的。4.4 接口集成里最常见的三个失败点根据过往实施的经验接口联调阶段暴露最多的问题集中在三处时间字段的时区与格式不一致ERP传2026-01-15 23:00:00不带时区MES按本地时间解析排产错一个班次。统一约定ISO 8601带时区格式。单位不一致ERP按“个”下工单MES按“套”报工一个数量翻了几十倍。物料主数据里必须有计量单位换算关系。字符集问题中文备注信息在某些老ERP里是GBK接口传UTF-8直接乱码。集成前先确认中间库和目标库的字符集。5. 三个判断技巧先定归属再谈接口5.1 用“唯一创建方”判断主数据归谁遇到两个系统都维护同一类数据时做个简单的判断如果这条数据只允许一个系统编辑另一个只能读那么这个系统就是唯一创建方。客户档案在CRM建、物料编码在PLM建、供应商在SRM建、库位在WMS建剩余系统统统只读同步。定时去“谁都能改主数据”的项目里排查一遍能发现大量历史遗留的脏数据源头。5.2 集成接口用“单据状态”而非“表同步”跨系统数据同步有两种做法一种是直接同步数据库表一种是通过单据接口加状态流转。ERP与WMS之间直接同步库存表看似简单但两个系统各自有事务逻辑操作顺序完全不同——WMS一收货就改库存表ERP还没来得及过账中间数据就出现短暂的不一致所有读这张表的下游都会受污染。正确的做法是WMS回传一张“入库过账单”ERP消费后生成凭证并回传状态整个过程是一笔单据的完整生命周期不是两个表的镜像。5.3 排查账实差异从主数据开始系统对不上账时很多人一上来就查事务数据翻了一小时流水也没结论。我的排查顺序永远是主数据先行——先比对物料编码映射表再比对库存地点映射最后才看单据流。物料主数据在中间表多同步了一条旧编码或者库存地点少映射了一个会让所有后续对账结果全偏掉。把主数据映射表导出成Excel做一次全量比对往往十分钟就能定位问题所在。如果你正在做ERP和外围系统的选型或集成把这几张系统关系模型图记在脑海里胜过看一百张厂商架构图CRM管客户、PLM管设计、MRP算缺料、APS排工序、MES盯工位、WMS管货位、SRM链供应商ERP则站在中间把它们的每一次动作都记成一笔可审计的账。本文还有配套的精品资源点击获取
返回列表