☰
MES与ERP系统对接接口清单:十三个接口、三类流向全解析
2026/10/7 4:24:16 网站建设 项目流程

简介:这份接口清单聚焦MES与ERP系统对接场景,面向智能制造、企业信息化项目中的实施顾问、系统架构师及开发人员。文档按数据流向分为ERP向MES同步销售订单、物料、供应商、客户、采购订单,MES向ERP回报外购入库、半成品完工、产成品入库、销售出库、生产领料出库、补料单,以及HR向MES同步组织架构和人员信息三类接口。每个接口均列明编号、名称、详细描述、周期及备注,例如销售订单接口同步合同号、物料编码、数量、交货日期等关键字段,能直接用于接口开发、数据映射、联调测试与项目文档编写。整个资源包仅含1个docx文档,压缩包大小约25KB,结构紧凑,便于查阅和二次编辑。目前已有204人学习,适合刚接触系统集成的读者快速建立对接全貌,也可作为需要落地实施MES与ERP集成时的接口参考清单。

1. MES与ERP接口清单值钱在哪:十三个接口、三类流向、一张表说清

制造企业上MES,百分之八十的时间耗在和ERP对数据上。我接过一个项目,ERP顾问和MES顾问关在会议室对着接口清单逐行确认,吵得最凶的不是算法,而是“销售订单同步过来,物料编码到底用谁的”。这份《MES系统与ERP系统对接接口清单.docx》整理了十三个接口,分成三类流向:ERP同步给MES的销售订单、物料、供应商、客户、采购订单;MES回报给ERP的外购入库、完工、产成品入库、销售出库、生产领料、补料;还有HR提供给MES的组织架构和人员信息。它不帮你写接口代码,但能让你在半天内把“对哪些数据、周期多长、哪个车间要用”这件事敲定。适合ERP实施工程师、MES开发、甲方信息化负责人当接口定义的底稿。

2. 先把接口看清楚:ERP→MES、MES→ERP、HR→MES三类流向的业务边界

接口清单不是字段堆砌,而是业务流向的镜子。我习惯拿到清单先按数据流向分组,再对着每个接口问三个问题:谁产生、谁消费、用来干什么。这份清单天然分好了三组,下面逐个拆。

2.1 从ERP往MES同步的5个接口:主数据和订单怎么进车间

这一组接口解决的是“车间开工的依据从哪来”。ERP是主数据源头,MES是执行层,所以销售订单、物料、供应商、客户、采购订单全部从ERP单向同步到MES。

接口编号接口名称核心内容用途周期
001销售订单接口合同号、销售订单号、购货单位;明细含物料编码、数量、单价、单位、交货日期、备注创建车间生产订单实时
002物料接口物料号、名称、规格型号、物料属性、计量单位组、详细描述、备注管理原料实时
003供应商信息接口供应商代码、供应商名称、供应商类别、供应类别、公司类别物料管理实时
004客户接口客户代码、客户名称MES生成销售出库单时使用实时
005采购订单接口合同号、采购订单号、供应商编码;明细含物料编码、物料型号、物料描述、单位、单价、数量、交货日期、合同号、行号生成外购入库依据实时

注意003和004在原始文档里挤在一起,实际是两个独立接口。供应商信息挂在物料管理上,因为很多企业的物料主数据里有“默认供应商”属性;客户接口则是为了销售出库单能带上客户抬头。005采购订单有个条件备注:“如果总装车间负责辅料、包材的采购,则需要,否则不需要。”这句话很关键,后面第3章单独说。

从实施角度看,001和002必须按顺序同步。先有物料主数据,才能拉销售订单明细,否则订单明细里的物料编码在MES里是悬空的。很多项目第一次联调失败,就是先同步订单、后同步物料导致的。

特别要提一下003供应商信息接口和005采购订单接口的关系。如果005要启用,那么供应商信息必须同步完整,因为采购订单明细里的供应商编码需要在MES界面显示,否则车间签收时不知道是哪家供应商送来的。反过来说,如果公司不需要MES管采购,003也可以砍掉,但供应商信息还可能在物料主数据里用到,所以不建议砍。

这份清单里所有周期都标了“实时”,这在实际项目里要打个折扣。实时不代表毫秒级,而是“业务事件发生后尽快同步”。销售订单在ERP审核的同时推送,MES这边轮询或订阅消息队列,通常几秒内到达。如果网络抖动,至少要有重试机制。我不建议用定时任务每小时拉一次,因为车间等不起。实时性是这组接口的默认要求,除非有特殊说明。

2.2 MES回报ERP的6个接口:完工、入库、出库、领料怎么回流

MES回报给ERP的接口是执行结果的反哺。ERP发出的生产订单经过车间执行,最终要回到ERP里做成本核算和库存更新。这组接口有6个:外购入库单、半成品完工回报、产成品入库单回报、销售出库单回报、生产领料出库回报、补料单。

接口编号接口名称核心内容用途周期
006外购入库单接口采购订单号、合同号、批号、应收数量、实收数量回报给ERP完成采购入库实时
007半成品完工回报接口工单单号、完工日期;明细含物料编码、规格型号、单位、生产任务单号、工序名称、数量、线边库位信息、备注回报生产进度,ERP归集在制品成本实时
008产成品入库单回报接口入库单号、入库日期;明细含物料编码、规格型号、单位、批号(合同号或任务令号)、应收数量、实收数量、备注、收货仓库、仓位、生产任务单号产成品入库,ERP更新成品库存实时
009销售出库单回报接口销售单号、物料编码、物料名称、规格型号、应发数量、实发数量、发货仓库、仓位、批号发货完成,ERP扣减库存实时
010生产领料出库回报接口领料单号、领料部门(车间)、领料日期;明细含物料代码、物料名称、物料型号、批号、实发数量、发料仓库、生产任务令领料完成,ERP发料记账实时
011补料单接口与生产领料出库回报相同的主表和明细结构超出定额领料后回报给ERP实时

注意006和销售出库、生产领料都是“回报”性质,不是“同步”。区别在于同步是ERP主动推,回报是MES主动推,ERP被动接收。接口实现时,MES侧要负责在业务动作完成后立即触发,而不是等统一批处理。比如产成品入库单在MES里审核通过那一刻,就要把008报文发出去。如果网络失败,要有队列缓冲,避免数据丢失。

回报接口有个共同点:MES端一定要有数据队列。比如车间网络突然断了,MES报完工时ERP连不上,这时候数据要先进本地队列,网络恢复后按顺序补送。没有队列的后果就是完工数据越堆越多,最后只能手工补单。我见过一个项目上线三个月,手工补了两百多张报工单,成本全乱套。

2.3 HR系统两个接口:组织架构和人员信息,为什么单独拉出来

很多接口清单只画ERP和MES两张皮,把HR忘了。实际项目里,MES系统主数据的“组织架构”和“人员信息”往往不是在自己系统里维护的,而是从HR同步过来。这份清单给了两个接口:

接口编号接口名称核心内容用途周期
012组织架构接口从HR获取企业组织架构信息MES系统主数据实时
013人员信息接口从HR获取车间工作人员信息MES系统主数据实时

组织架构数据用于MES里的车间、工段、班组的层级树;人员信息用于账号对应关系、工序报工、工时归集。这里有个跨系统细节:HR系统里的人员编号通常是人资编码,而MES里可能需要工号,两者要做映射。组织架构里一个车间对应ERP里的一个成本中心,联调时要把这层关系一并确认。

HR接口看起来很轻,但联调时最容易被当成“最后再说”的部分。建议在MES上线前一个月就同步组织架构和人员信息,因为账号权限、工序报工都要依赖它。等到设备已经开始录数据再发现人员编码对不上,改起来就很痛。

三组接口串起来就是一句话:ERP告诉MES要做什么,HR告诉MES谁来做,MES做完之后把结果回报给ERP。只要这个闭环完整,车间数据就和财务账对得上。

3. 接口字段设计:从合同号到库位,每个字段背后对应一个业务动作

字段不是随便填的。接口清单里每一个字段都对应一个业务动作,漏掉一个,后续追溯链就断一截。我重点拆三个接口的字段。

3.1 销售订单接口:物料编码、数量、交货日期是三个必查字段

001销售订单接口主表有合同号、销售订单号、购货单位,明细有物料编码、数量、单价、单位、交货日期、备注。开发时最容易在三个字段上翻车:物料编码、单位、交货日期。

物料编码:ERP和MES的编码规则通常一致,但偶尔有特例。比如ERP用老编码,MES用新编码,需要在接口映射表里维护转换关系。我一般建议以ERP编码为主键,在MES里加一个外部编码字段存原始值,方便回溯。

单位:销售订单明细的“单位”可能是“件”和“套”的换算关系。MES车间执行时往往用基本单位,接口同步后要按物料主数据里的换算率转成车间单位。转换发生一次就要保留日志,否则后续工时统计对不上。

交货日期:这个日期决定MES排产优先级。接口清单里没有明确格式,但实际对接时一定要约定成字符串还是日期类型。如果是字符串,要规定格式YYYY-MM-DD,避免不同系统间的日期解析差异。

单价字段在MES里不一定需要,但建议保留。有些外协结算会用到MES报工数量乘以ERP单价,两个系统对不上时,这个字段能救急。备注字段则用来传客户要求或特殊说明,别小看它,很多现场争议靠备注解决。

3.2 完工回报接口:批号(合同号/任务令号)是追溯的灵魂

007半成品完工回报接口明细里最关键的字段是“批号(合同号或者任务令号)”。在008产成品入库单回报接口里,批号字段再次出现。为什么反复强调?因为产品质量追溯就是靠批号串起来的:销售合同号或生产任务令号一路带到加工批次,哪个批次出了问题,能直接定位到工单和供应商。

联调时注意,“生产任务单号”和MES内部的工单单号是两个概念。清单里007的主表是“工单单号”,明细里又带“生产任务单号”,实际业务里同一张工单可能对应多个生产任务单。接口设计时要确认是1对1还是1对多,否则MES回报数量时ERP不知道归到哪个任务令。

“线边库位信息”也是一个容易忽略的字段。半成品完工后放在哪个线边库,这个库位在ERP里是否存在,直接决定后续领料能不能扣减。需要先同步库位主数据,或者把库位写在接口映射表里,否则回报时ERP会报“仓位无效”。

工序名称字段也要统一。ERP里的“车加工”在MES里可能叫“CNC”,如果不做映射,完工回报到ERP后成本归集会落到不同科目。我一般建议工序编码用一套,名称允许不同,接口里优先传编码。

3.3 采购订单与外购入库:为什么说“如果总装车间负责辅料采购才需要”

005采购订单接口和006外购入库单接口都有同一句备注:“如果总装车间负责辅料、包材的采购,则需要,否则不需要。”这句话很多实施顾问直接跳过,实际上它决定了两个接口要不要开发。

大部分企业辅料、包材由采购部统一采购,系统流程是ERP采购订单发供应商,供应商送货到仓库,仓库在ERP内做采购入库。这时候MES不需要碰采购订单,车间只管领用就行。

但有些企业总装车间自己有辅料库,车间现场签收供应商送货,甚至车间直接下采购订单。这种情况下,MES必须同步采购订单,并在收货时通过006外购入库单把实收数量回报给ERP,ERP才能生成采购入库凭证。判断标准就一句话:采购收货的动作发生在MES里还是ERP里。发生在MES里,005和006必须开发;发生在ERP里,这两个接口可以砍掉。

006接口里的“批号”字段要特别注意。外购入库的批号往往是供应商批次或收货日期批次。如果MES里面还要做来料批次追溯,那这个批号必须在MES里生成,并回传给ERP,保证两个系统里看到的是同一个批号。

4. 接口落地三选一:Web Service、REST API、中间库表怎么选不翻车

接口清单定义了业务需求,实现路径还得自己定。我见过同一个接口清单,三种实现都有人做。选型不取决于谁的技术新,取决于两边系统的开放程度和实施工期。

4.1 三种实现路径对比:实时性、开发量、调试难度

实现方式实时性开发量调试难度适用场景
Web Service(SOAP)高中中ERP是SAP、Oracle、金蝶等成熟产品,官方提供标准服务
REST API高低低两边都是自研系统,或MES用Spring Boot等框架封装API
中间库表中(依赖轮询)低高两边数据库都开放,允许建中间表,且有DBA配合

现在做MES接口,我首选REST API。用Spring Boot对外提供的接口方便调试,用Postman就能直接打数据,字段对不上时后端一眼能看出来。如果ERP是SAP或金蝶这类成熟产品,优先看官方API,比如鼎捷ERP的API、金蝶的系统接口,通常已经封装好了标准功能。实在没接口,最后才用中间库表。中间库表看起来简单,但调试问题最多:两边连同一个库,写入一方锁表,另一方查询卡住,还容易把业务表当成中间表乱搞。

中间库表最坑的地方是分布式事务。两边系统都连同一个数据库,看起来简单,但MES写入中间表后ERP没读走,中间表越积越满。解决办法是给中间表加一个处理状态字段,ERP读走之前标记为已处理。同时要把中间表单独建schema,不要混进业务库。

4.2 字段映射与类型转换:日期、数字、单位别在转换里丢精度

接口联调大量时间花在字段映射上。我的习惯是拿到接口清单后,先做一张字段映射表,左边是ERP字段,右边是MES字段,中间写转换规则。以001销售订单接口为例:

ERP字段MES字段转换规则
VBELN(销售订单号)order_no直接映射,字符串
POSNR(行号)order_line直接映射,数字转字符串
MATNR(物料编码)item_code查物料映射表,不存在的报错
KWMENG(数量)order_qtydecimal(18,3),按单位换算率换算
WERKS(工厂/车间)workshop用映射编码,不用中文名

关键要注意三类:日期字段统一成字符串“YYYY-MM-DD HH:mm:ss”,不要传时间戳,否则不同时区解析出错。数字字段全部用decimal,不要用float。车间扫码枪报工时经常输入小数,float在数据库里会变成0.30000000000000004。单价涉及金额,更不能丢精度。单位字段必须做换算率,ERP按“箱”出库,MES按“件”报工,接口里没有换算率字段,目标端就直接懵了。

4.3 接口幂等性设计:重复同步不产生重复数据

接口幂等性是接口清单里没写、但你必须自己补的东西。网络抖动时,MES调用ERP接口超时,MES会重发请求,ERP如果没做幂等处理,就会生成两张领料单。做实施面试题时经常考这点,实际项目里翻车更多。

解决办法很简单:每个接口都定义一个唯一业务键。销售订单接口用“销售订单号+行号”,完工回报用“工单单号+生产任务单号+工序名称”,入库回报用“入库单号”。目标表里对唯一键加索引,插入前先查询是否已存在。

另一个习惯是加接口日志表。每次调用记录接口编号、请求时间、请求报文、响应码。出现重复数据时,先查日志确认是重复推送还是重复消费。这两个问题处理方式完全不同。日志至少保留三个月,上线初期保留半年,方便对账。

5. 避坑:接口联调时的常见问题与排查顺序

接口清单只是纸面设计,联调才见真章。下面几条都是我在现场踩过的,每一条都能对应到具体清单里的一个接口。

5.1 现象:销售订单同步过来,MES里看不到物料编码

原因:001销售订单接口和002物料接口是分开的,物料还没同步过去,销售订单明细就推过来了,MES外键找不到物料。解决:联调时先跑002物料接口,再跑001销售订单接口;在同步逻辑里加校验,物料编码不存在时先把订单放入待处理队列,不整单丢弃。

5.2 现象:半成品完工回报提示“生产任务单号不存在”

原因:007接口里的“生产任务单号”直接用MES内部工单号推送,ERP端没有这个单号。解决:在MES创建车间生产订单时,把ERP的生产订单号写入MES的扩展字段;回报时用扩展字段里的ERP单号,而不是MES的工单单号。

5.3 现象:同一张销售订单被重复拉取,生成了多张车间生产订单

原因:MES端拉取001接口后没有记录已拉取状态,或者接口调用超时后ERP端重试,MES又拉了一遍。解决:MES维护一张“销售订单拉取记录表”,以销售订单号+行号为唯一键;每次拉取先查该表,已存在的跳过。ERP端接口也要做幂等,客户端传一个流水号,ERP按流水号去重。

5.4 现象:接口提示成功,但ERP库存没有变化

原因:MES回报008产成品入库单后,ERP接口只是接收了数据,没有调用货物移动过账。或者MES里选的收货仓库在ERP里不存在。解决:联调时在ERP端查“物料凭证”而不是只看接口返回。仓库、仓位编码要在映射表里逐个核对,不能拿中文名传参。

5.5 现象:补料单回传后,ERP里没有关联到原领料单

原因:011补料单接口的主表字段和010生产领料出库回报几乎一样,但明细里没有带“原领料单号”,ERP侧无法关联。解决:在补料单明细里增加“原领料单号”字段,ERP侧按这个字段找到原领料单,做追加发料。

排查顺序我一般固定为:先看接口日志,确认请求有没有到对方系统;再查源系统单据状态,确认数据本身没问题;然后查目标系统入库结果,确认业务动作有没有执行;最后才怀疑网络和权限。按这个顺序,九成问题能定位到具体层。

6. 验证接口对不对:用“三表核对”法五分钟自查

接口联调完,怎么证明数据是对的?光看接口返回码不够。我习惯用三表核对法:源系统单据表、接口日志表、目标系统业务表,三张表对一遍。

拿001销售订单接口举例。先在ERP里查销售订单审核时间和明细行数;再到接口日志表里查这条订单的同步记录,确认拉取时间和返回结果;最后到MES的车间生产订单表里查关联生成的订单数量。三处一致,这个接口才算通。只查接口日志和MES表,很容易出现“日志成功但数据缺失”的情况。

具体步骤:

  1. 选一条真实业务单据,比如一张含5行明细的销售订单。
  2. 在ERP端查主表和明细行数,记录下来。
  3. 在接口日志表查这条单号的同步请求,确认返回成功码,记录时间。
  4. 在MES端查对应的数据行数,重点比对物料编码、数量、交货日期。
  5. 三张表数据一致,这个接口通过;不一致,回到对应章节排查。

这个方法也适用于回报接口。比如008产成品入库单,在MES端确认入库单审核,在接口日志里查回报结果,再到ERP里查物料凭证和库存数量。只要三表数字一致,成本核算就不会出大问题。

我从那以后每测一个接口,都强制走一遍三表核对,哪怕只是五条数据。这套方法不挑系统,换成SAP、金蝶、鼎捷都适用。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询