上一篇 PLM 专题里,风机支架从 BKT-017 换成了 BKT-018。设计已经批准,200 台需求中,40 台继续使用旧配置,160 台等待新配置。仓库还有旧料,供应商手里还有旧采购单,新料库存却是零。
这些记录进入 ERP 后,计划员要重新计算供给,采购要拿到供应商答复,生产要确认什么时候能开工。等现场报回耗料和工时,财务还要查清订单上的成本从哪里来。沿着这张订单看下去,ERP 的对象和系统边界会具体得多。
本文继续使用模拟的 A 工厂离散装配场景。数量、单号和金额均为教学设定,不对应客户部署或厂商 API。本文讨论制造相关的经营记录;税务、收入确认及完整财务制度另有业务规则,不在本篇展开。
ERP 是系统类别,SAP 是厂商及其产品生态。SAP S/4HANA 属于 ERP 产品,HANA 是数据库,Fiori 是用户界面体系。SAP 的产品层次与部署说明还区分营销名称、技术产品名称与部署方式。使用具体功能资料时,要记录产品、发布版本、启用范围和配置,不能把不同版本的操作直接混用。
从管理问题进入,新增八篇 ERP 与 SAP 专题可按下表查阅。各篇使用独立教学样本,不改变本文风机订单的数量和成本。
| 当前问题 | 深入阅读 |
|---|---|
| 收货了却不能付款 | 货已经收到了,为什么供应商的款还付不了 |
| 发货了却没有回款 | 产品已经发走了,为什么钱还没收回来 |
| 完工后成本仍在变化 | 产品已经做完,为什么订单成本还在变 |
| 产品换厂后无法执行 | 同一款产品,为什么换个工厂就做不出来 |
| 增加采购仍然缺料 | 库存越买越多,生产为什么还在缺料 |
| 接单以后无法承诺交期 | 订单接下来了,交期为什么还不敢承诺 |
| ERP 与仓库库存不一致 | ERP 和仓库都有库存,到底该看哪一个 |
| 报工成功但库存成本未对齐 | 车间已经报完工,ERP 为什么还没对上账 |
一张客户订单会形成哪些 ERP 记录
先分清订单、行项目和执行对象
销售订单 SO-200 要交付 200 台 FAN-100。客户、交货地点、数量、配置和日期落在订单及行项目上。工程切换后,内部需要将 40 台旧配置和 160 台新配置分别关联到适用的生产供给;是否拆销售行,要看客户合同、配置表达和企业订单规则。
ERP 中可以有多张生产订单来满足同一销售行,也可以合并多个需求来安排生产。本例为了跟踪变更范围,将旧配置 40 台保留在已开工订单 MO-0040,为新配置 160 台建立供给安排,后续形成 MO-0160。两者都保留回到销售需求的关联。
| 业务对象 | 本例要保存的内容 | 不能仅凭它推断的事实 |
|---|---|---|
| 销售订单行 | 产品、数量、客户要求日期与确认交期 | 工厂已经具备生产条件 |
| 需求记录 | 工厂、配置、需求日期与来源 | 已经独占某批库存 |
| 计划订单 | 建议生产或采购的数量与日期 | 正式订单已建立或供应商已确认 |
| 采购订单行 | 物料、供应商、数量、价格与交付安排 | 物料已到货、检验合格或可领 |
| 生产订单 | 产品、数量、适用 BOM 与路线、计划及执行状态 | 所有物料齐套或成本已经完整 |
| 库存事务 | 收发、转移、调整及关联单据 | 每一笔都已完成最终财务计价 |
| 成本与凭证记录 | 材料、资源、费用、结算依据及期间 | 现场没有漏报、重复或迟到记录 |
CRM 可以提供客户和商机,CPQ 可以形成报价与配置结果,SRM 可以承接供应商协同。它们传入 ERP 的数据仍要经过编码、单位、组织和业务状态校验。ERP 中的采购单已经发出,SRM 中的供应商答复还未收到,这两个状态可以同时存在。
系统名称无法替代数据责任约定
本例让 PLM 管理批准的产品定义,ERP 管理经营订单和核算记录,MES 保存执行过程,WMS 保存库位、批次与仓储动作。企业可以使用同一套软件中的多个模块承接这些职责,也可以部署独立产品。
交接时要确定记录的维护方。例如 ERP 生产订单与 MES 执行工单可能一对多;ERP 的工厂和仓库可能对应 WMS 中更多的库区与库位。接口需要保存这些映射,不能只用一个同名的“工单号”或“仓库号”连起来。
制造 BOM、工艺路线、采购提前期、最小采购量、单位换算、成本方法和库存维度都会影响后面的结果。若 BKT-018 在 ERP 中被误设成“箱”,WMS 却按“件”回传,接口即使返回成功,库存数量也可能已经错了。
工程变更后怎样重新计算物料供给
先把新旧配置的数量放在同一个时点
沿用上一篇的切换安排,计划员在一个固定快照下核对:
| 对象 | 快照中的状态 | 对新配置 160 台的作用 |
|---|---|---|
MO-0040 | 40 台已开工,旧支架已领出 | 继续旧配置,已领数量不再作为仓库可用量 |
| 未开工需求 | 160 台,每台用一件新支架 | 形成 160 件 BKT-018 毛需求 |
BKT-017 库存 | 80 件,受旧版用途限制 | 本例无批准替代关系,不抵扣新料需求 |
BKT-017 未收采购 | 100 件,尚未确认修改 | 仍然是旧料供给,不抵扣新料需求 |
BKT-018 库存 | 0 件 | 无现货抵扣 |
BKT-018 已确认在途 | 0 件 | 无已确认到货抵扣 |
为便于核算,这一步暂不设安全库存、损耗、最小采购量、其他需求及额外预留。新支架净缺口就是 160 件。若新料有合格库存或已确认供给,必须先检查工厂、配置、可用日期和适用状态,再决定哪些可以抵扣。
MRP(物料需求计划)按需求与供给计算补货建议。Microsoft 的净需求与需求关联文档展示了需求如何由现货和计划供给覆盖,也说明查看结果时需要选对计划,并在供需变化后重新运行相关计划。本文的缺口计算是简化模型,实际还要纳入企业启用的批量、日历和补货规则。
计划建议、正式订单和交付承诺分别核对
采购与供应商协商后,原来的 100 件旧料采购可以出现三种结果:保留旧料、取消,或按批准流程改为新料。假设本例最终确认改为 100 件 BKT-018,且在需求日前可用,再运行计划时,新料剩余缺口才变成 60 件。
这 60 件需要另一笔供给。旧采购单改料与新增采购之间要保留关联,避免一边仍将旧单 100 件算成新料供给,一边又额外采购完整的 160 件。原先生成的计划建议也应在重算或转单时正确处理,不能重复算成一笔独立供给。
计划订单可以经人工确认,也可以按授权的自动规则转为正式订单。Dynamics 365 的计划订单转单说明区分了手动、自动和基于查询的转单方式。本文选择由相应岗位确认转单,避免把某个产品的自动化设置当作通用前提。
需求关联通常称为 pegging,用来解释某笔供给覆盖哪些需求。它与库存预留的业务作用不同。需要独占库存时,还要执行企业配置的预留或分配动作,并核对它作用到物料、仓库还是具体批次。
数量够了,日期仍然可能不够
假设从本次重排时点起,160 件新支架需要在第 4 天具备可领条件。供应商确认其中 100 件第 3 天到货,另 60 件第 5 天到货。到货后还需要收货、检验和配送时间,因此第 4 天的缺口至少仍有 60 件;连先到的 100 件是否可领,也要继续检查。
MRP 的建议到货日、采购单交货日、供应商确认日、物料可用日和客户承诺日需要分别记录。如果没有经过产能、物流和现场条件确认,不能仅凭一份采购安排推导整批风机的新交期。
MRP 可以计算物料需求,也可以与资源计划相连。有限产能能否同时满足,要看启用的计划与排程能力,不能简单认定所有 ERP 都按无限产能运行,或所有 APS 结果都可以直接执行。排程算法和插单规则留到 APS 专题展开。
仓库和车间的记录怎样进入 ERP
到货、可领、耗用和完工各有依据
采购到货后,本例进一步假设 160 件新支架都已收货,其中 140 件质量放行,20 件待检。ERP 与 WMS 可以同时显示在库 160 件、可领 140 件。待检的 20 件是否参与未来计划供给,应按质量规则和预计可用日期处理,不能直接变成当前可发数量。
如果允许分批生产,计划岗位可按授权安排 140 台先行;如果必须整批切换,就继续等待。两种做法都需要留下数量、工单范围和版本依据,不能让一次“齐套”布尔值掩盖剩余缺口。
材料配送到线边也未必表示已经耗用。有的企业把它作为仓库之间的转移,之后按实际投料或倒冲记录生产耗用;有的企业直接按工单领料记入生产。本文不预设统一模式,项目中应明确每类动作由谁触发 ERP 事务。
倒冲指按报工等触发条件,依据 BOM 和配置自动计算并扣记用料。如果 MES 已上传实际耗料,ERP 又对同一业务自动倒冲,就可能重复扣料。采用哪一种记录作为过账依据,要与异常补料、退料和替代料规则一起确定。
同一批实物只能形成约定的一次库存增加
MES 完工报工可以先提供合格数、报废数、工序和工时;WMS 成品收货可以补充批次、库位和实收数量。如果两者描述同一笔完工入库,就要选择一个过账触发来源,另一个做关联或核对。不同企业的完工暂存、收货和上架流程会有差异,不能让两个接口各自无条件增加成品库存。
收发和财务处理也有不同阶段。Dynamics 365 的实物与财务更新说明将采购收货与供应商发票、生产完工报告与生产成本处理分别列出。项目中应确认各阶段如何影响数量、计价与凭证,不能把“还没有发票”解释成“物料不存在”。
接口重试需要回到业务事务
下面是一条追加领料事件的概念示例。MO-0160 的基础用料此前已单独记录,这条事件只表示追加的 2 件支架;单号、时间和字段均为模拟值。
{
"source_system": "WMS_A",
"business_event_id": "ISSUE-00871",
"event_revision": 1,
"event_type": "material_issue",
"plant": "A",
"erp_production_order": "MO-0160",
"source_document": "PICK-0072",
"source_line": "10",
"material": "BKT-018",
"batch": "LOT-B018-03",
"quantity": 2,
"unit": "EA",
"business_date": "2026-10-14",
"occurred_at": "2026-10-14T10:20:00+08:00",
"reason_code": "APPROVED_COMPONENT_SCRAP_REPLACEMENT"
}
接收方先检查订单与工厂映射、物料和单位、批次状态、订单是否允许该动作,以及业务日期所属期间。价格应来自约定的计价规则或受控成本来源,WMS 的数量记录不能自行决定 ERP 的财务估值。
幂等处理可以用“来源系统+业务事件编号”识别同一事件,另保存修订和内容校验信息。相同内容重传时返回已有结果,包括 ERP 事务号;同一身份却带来不同数量时,进入冲突处理。更正用独立的更正事件关联原事务,不能通过覆盖事件内容悄悄多扣或少扣库存。
接收成功、业务校验通过、过账完成应分别可查。异步接口可以先返回接收编号,后续再回传或查询业务结果。若 ERP 已过账但回执丢失,发送方应按原事件查询或重试,不生成一个全新的事件编号来绕过重复检查。
期间已关闭、订单已结束或批次不允许发料时,失败结果要进入可跟踪的差异队列。责任人按授权处理,不能由接口自行改成当天日期、换一个工单或解除质量限制。
订单完工以后还要核对哪些成本
先核对数量与执行记录,再解释差异
接着前面的模拟场景,假设剩余 20 件支架后来也获得放行,MO-0160 最终完成 160 台合格风机。装配过程中有 2 件支架损坏,按批准流程另补供并领用 2 件,支架总净耗用为 162 件,无退料。这里损坏的是部件,不能据此再虚增 2 台整机报废。
为便于解释,取支架材料、装配人工和一项制造费用做核对,其余材料与费用省略。下表仅是这些选定成本项的小计,不能当作整机成本或报价依据。金额使用模拟人民币数据,采用简化的实际成本分析口径,不计税费、汇率和在制分摊。
| 成本项 | 计划依据 | 实际依据 | 计划金额 | 实际金额 | 差异 |
|---|---|---|---|---|---|
| 支架材料 | 160 件 × 20 元 | 净耗用 162 件 × 22 元 | 3,200 | 3,564 | +364 |
| 装配人工 | 80 小时 × 50 元 | 88 小时 × 50 元 | 4,000 | 4,400 | +400 |
| 选定制造费用 | 计划分配 1,000 元 | 按批准口径分配 1,100 元 | 1,000 | 1,100 | +100 |
| 选定项目合计 | 同一订单与范围 | 同一订单与范围 | 8,200 | 9,064 | +864 |
这里选择以计划数量计算价格影响,以实际价格计算增量用料影响:160 ×(22 − 20)=320 元;2 × 22=44 元,两项相加为材料差异 364 元。若用另一种差异分解顺序,分类金额可能变化,比较时应保持同一口径。
人工多了 8 小时,对应 400 元。是否由支架损坏、等待、返修或其他工序问题造成,还需要 MES 的工时类型和异常记录支持。制造费用增加 100 元,也要追到费用池、分配基础、费率及批准规则,不能仅凭“制造费用”四个字归因。
完工数量、订单结束和期间关闭分别验收
成本核对至少要能沿生产订单找到领退料事务、报工记录、资源费率、完工入库与必要的调整。若采购价格尚未最终确认,或工时有迟报,当前成本就应带上状态和计算时点。
Microsoft 的生产过账文档分别说明了材料耗用、时间耗用、完工报告和订单结束时的成本处理。本文借此区分这些阶段;具体入账科目、暂估与冲回方式仍取决于成本方法和系统配置。
采用标准成本时,库存计价和差异记录的表现会与上面的简化实际成本分析不同,不能直接把 9,064 元写成产成品入库价值。即使订单已经结束,某些成本方法仍可能有期末调整。核对报告应写明当前看到的是计划、估计、已过账还是期末调整后的金额。
成品可销售还可能受质量状态约束,客户交付又涉及拣货、发运和签收。订单有 160 台完工记录,不会自动证明 160 台都已交付或客户款项已收回。Dynamics 365 的生产流程概览也将完工报告、质量评估、仓储发运、订单结束和期间关闭列为不同业务环节。
发现已经过账的数量错误时,按允许的退料、冲销、调整或返工流程处理,保存原记录与更正关系。跨期间的修改还要遵循相应财务权限,不能回写一个更好看的历史数值。
怎样验收这条链路并接入 Agent
用同一组对象核对正常、异常和恢复路径
验收时可以从 SO-200 的需求出发,查到旧配置 MO-0040、新配置 MO-0160、对应采购供给、库存事务和成本依据。查询应固定组织、配置、数量单位和时间范围;各系统读取时间不同,要标出差异,必要时等待记录齐全后再对账。
| 验收场景 | 应当看到的结果 |
|---|---|
| 只有 80 件旧支架与旧料采购单 | 新支架 160 件缺口仍存在,不跨料号抵扣 |
| 旧采购 100 件获批改为新料 | 更新正式供给并重算,新增建议为 60 件,原建议不重复计入 |
| 供应总量足够,但 60 件晚于需求日 | 显示日期缺口,保留供应商承诺与计划依据 |
| 新料收货 160 件,待检 20 件 | 区分在库与可领,按授权决定是否分批释放 |
| 同一领料事件重传,或 ERP 回执丢失 | 只有一笔业务事务,能够按原事件查到过账结果 |
| 同一事件身份带来不同数量 | 标为冲突,不静默覆盖原事务 |
| MES 报工与 WMS 收货描述同一完工 | 按配置只形成一次入库,另一来源完成关联或核对 |
| 160 台合格品,支架净耗用 162 件 | 保留补料与部件报废依据,不额外生成整机产出或报废 |
| 成本记录缺一笔或到达已关闭期间 | 报告缺失与阻断,不自动改日期或结束订单 |
| 下游系统无法读取 | 返回未知范围,不能解释为零库存、零在制或零成本 |
数量对账也要区分计数粒度。工序报工数可能含返工再次过站,不能把所有工序的数量相加当作整机产量;仓库发料减退料得到的净发料,也不一定等于现场已实际耗用。线边余料、转移和倒冲规则都要进入核对范围。
Agent 先回答有证据的问题
适合从两个问题开始:“新配置的 160 台还缺什么?”以及“这张订单的选定成本项为什么多了 864 元?”
第一个问题需要读取适用 BOM、计划版本、可用库存、质量状态、已确认采购供给和需求日期。第二个问题需要读取相同订单范围内的材料净耗、价格依据、工时、费率和费用分配记录。每条结论保留来源系统、对象标识、业务发生时间、读取时间及计算口径。
Agent 应把事实、计算和待确认原因分开。例如“多耗 2 件支架”有事务支持,“按本例口径增加 44 元”属于计算,“是某个工位操作不当造成”还需要异常与责任调查记录。来源缺失时,只能明确列出尚不能判断的部分。
可以让 Agent 生成缺料说明、建议催交清单、接口差异清单或成本核对草稿。转采购单、释放生产订单、调整库存、冲销过账和关闭期间需要各自的业务授权与前置状态校验。执行后再保存目标事务号和可核对的结果,不能只记一次工具调用成功。
这篇留下了 ERP 的订单与供给关系、现场事务边界,以及成本核对的样本。下一篇进入 MES,沿 MO-0160 继续记录派工、开工、过站、报工、返工与完工的状态变化。相关路径可以回到制造业系统数据地图,选题进度保留在全景目录。