2. ERP核心对象与接口
在ERP-MES-SCADA三层集成架构中,ERP是业务意图的源头。MES要排产、SCADA要执行,前提是ERP把“做什么、用什么做、做多少、在哪做、成本归谁”这五件事以结构化数据的形式暴露出来。本节聚焦ERP侧六个核心对象——生产订单、物料主数据、BOM、工艺路线、库存与成本中心,逐一分析它们的数据结构、可供集成的字段,以及实际可用的接口形态。
一、生产订单:集成的主驱动对象
生产订单(Production Order)是ERP向MES下达生产任务的核心载体。一张典型的生产订单包含:订单号、物料编码、计划数量、计划开始/结束日期、实际开始/结束日期、订单状态(创建/下达/确认/技术完成/关闭)、收货库存地点、工作中心、优先级等字段。MES最关心的是“已下达”状态的生产订单,因为只有下达后才允许报工和领料。
集成时通常采用两种方式:一是ERP主动推送,当订单状态变为“下达”时,通过中间件或消息队列将订单头+行项目推送给MES;二是MES定时轮询,通过RFC/BAPI或REST API按状态和时间戳拉取增量订单。以SAP为例,常用接口包括BAPI_PRODORD_GET_LIST(按条件查询订单列表)和BAPI_PRODORD_GET_DETAIL(获取订单明细,含组件、工序、状态)。实际工程中建议采用“事件驱动+定时补偿”的混合模式:状态变更时推送,同时每5分钟轮询一次防止消息丢失。
二、物料主数据:集成的语义基础
物料主数据(Material Master)是所有对象引用的“字典”。MES侧如果物料编码与ERP不一致,后续所有集成都会失败。物料主数据的关键字段包括:物料编码、物料描述、基本计量单位、物料类型(成品/半成品/原材料)、物料组、批次管理标识、序列号管理标识、采购类型(自制/外购)、MRP控制者等。
集成时需特别注意三点:第一,计量单位必须统一,ERP中可能存在基本单位与库存单位不一致的情况,MES报工时应明确使用哪个单位;第二,批次管理标识决定MES是否需要采集批次信息,若ERP侧启用了批次管理,MES报工时必须回传批次号;第三,物料状态(如“冻结”“待检”)会影响MES能否投料,需在接口中同步状态字段。常用接口为BAPI_MATERIAL_GET_DETAIL或通过OData服务读取。
三、BOM与工艺路线:结构与工艺的双重约束
BOM(Bill of Materials)定义“用什么做”,工艺路线(Routing)定义“怎么做”。两者共同构成生产订单的技术底座。
BOM在ERP中以父子层级存储,关键字段包括:父项物料、子项物料、组件数量、计量单位、损耗率、生效日期、替代物料组。MES需要根据BOM生成投料清单和齐套检查逻辑。集成时通常按“父项物料+工厂+有效日期”查询,接口如CS_BILLOFMATERIAL_READ或BAPI_MATERIAL_BOM_GET。
工艺路线包含工序号、工作中心、标准工时、机器时间、人工时间、检验标识等。MES据此生成工单工序序列,并作为报工和排产的依据。集成时需注意工序号在ERP与MES中的映射关系,以及工作中心编码是否与SCADA侧设备编码对齐。常用接口为BAPI_ROUTING_GET_DETAIL。
四、库存与成本中心:执行反馈与成本归集
库存对象在集成中承担两个角色:一是投料前的可用量校验,MES需要知道某物料在某库存地点、某批次的非限制使用库存量;二是完工后的入库回传,MES报工完成后需通知ERP增加成品库存。关键接口包括BAPI_GOODSMVT_CREATE(货物移动过账)和库存查询类RFC。实际项目中,库存校验建议在MES侧做本地缓存+定时刷新,避免每次投料都实时调用ERP造成性能瓶颈。
成本中心是ERP成本核算的归集单元。MES采集的工时、机时、废品数量最终要按成本中心回传,ERP据此计算作业成本和差异。集成字段包括成本中心编码、作业类型(如机器工时、人工工时)、实际作业量。接口通常为BAPI_ACTIVITYTYPE_GET_DETAIL或自定义RFC。需注意成本中心与工作中心的映射关系,一个工作中心可能对应多个成本中心,需在集成配置中明确。
五、接口选型与集成策略
ERP侧可供集成的接口形态主要有四类:BAPI/RFC(SAP原生,适合批量、事务性操作)、IDoc(异步消息,适合大批量主数据分发)、OData/REST(现代SAP S/4HANA推荐,适合轻量级查询)、中间表/数据库直连(不推荐,耦合度高但实施快)。选型时需权衡实时性、数据量、事务一致性和运维成本。
六、集成字段映射示例
以下为生产订单下达接口的字段映射参考(以SAP BAPI_PRODORD_GET_DETAIL返回结构为例):
| ERP字段 | MES字段 | 说明 |
|---|---|---|
| ORDER_NUMBER | erpOrderNo | ERP生产订单号,唯一键 |
| MATERIAL | materialCode | 物料编码,需与MES物料主数据一致 |
| PLAN_QTY | planQty | 计划数量,注意单位转换 |
| BASE_UOM | uom | 基本计量单位 |
| START_DATE | planStartTime | 计划开始日期,需转时间戳 |
| FINISH_DATE | planEndTime | 计划结束日期 |
| WORK_CENTER | workCenterCode | 工作中心,需与MES资源映射 |
| ORDER_STATUS | orderStatus | 状态码映射(如REL→已下达) |
| COMPONENT / QUANTITY | componentList | 组件清单,含物料、数量、单位 |
| OPERATION / WORK_CNTR | operationList | 工序清单,含工序号、工作中心、工时 |
字段映射不是简单的名称对应,而是语义对齐。例如ERP的“计划数量”可能以基本单位存储,而MES排产需要按销售单位或包装单位计算,中间需要单位换算系数。再如ERP的“工作中心”是成本核算单元,MES的“工作中心”是排产资源单元,两者粒度可能不同,需要在集成层做映射表维护。这些细节决定了集成后系统能否真正跑通业务闭环,而非仅仅“接口通了”。