ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

SAP特殊采购类80跨工厂生产配置实战:从MRP到采购订单全流程解析

2026/10/7 8:46:23 拓冰建站 浏览量
SAP特殊采购类80跨工厂生产配置实战:从MRP到采购订单全流程解析 这个标题刷到我主页的十有八九是在项目里被“跨工厂生产”这个需求卡过脖子。SAP里的特殊采购类80说简单简单说绕也绕最坑的不是配置本身而是你根本不知道还有哪个环节没配MRP一跑就是不出单、转采购报错、或者BOM展开在错误的工厂。这篇我按实战项目走一遍把从后台配置、物料主数据、BOM到完整测试流程全部拆开讲顺便把我在项目里踩过的坑和排查思路一起交代清楚。1. 特殊采购类80到底解决什么问题1.1 跨工厂生产的业务形态先聊场景。有些公司工厂很多A工厂有成品需求但A厂没有产线、没有产能或者技术工艺只有B工厂能做这时候成品本质上是在B工厂生产然后再进入A工厂的库存。你可以选择的方式无非三种A厂下普通采购订单找B厂购买、做跨工厂库存转储、或者用特殊采购类80让MRP自动帮你把这个跨厂链条串起来。80这个特殊采购类型官方的说法是“跨工厂生产”本质上是把“采购”和生产计划结合起来需求工厂A在MRP运行后自动产生对生产工厂B的采购需求同时B工厂这边会收到对应计划订单通过自己的生产订单去完成生产。你不需要在A厂手工维护BOM和工艺路线也不用反复去建重复的内部采购订单——只要配置正确系统会自己把需求链拉通。1.2 为什么不能直接建采购订单有人问我直接建一张采购订单给B厂不也一样吗能一样但只是钦定的结果不是实时计划的结果。直接建采购订单的问题在于A厂的MRP看不到B厂的生产进度A厂所有需求必须人工盯B厂能不能按期交付完全靠线下沟通。A厂库存在途数量不透明跑MRP时系统不知道B厂已经在生产、什么时候能到货容易产生大量多余采购申请。如果B厂生产订单延期A厂这边不会有任何警示整个计划的联动性为零。特殊采购类80的核心价值是让两个工厂的系统逻辑在一个MRP框架里协作A厂提需求B厂响应生产A厂通过采购订单或转储单完成收货。这条链路是可追溯、可计划的这也正是80在生产计划体系里独特的位置。2. 配置前的物料与基础数据准备2.1 物料主数据三件套跨工厂生产涉及的物料主数据最容易漏的就是“在哪个工厂扩展物料”。注意80配置是用在**需求工厂A的但供应工厂B**也必须有一套完整的物料主数据否则B厂的计划订单、生产订单根本没法建。我建议你按这个顺序去检查数据项需求工厂A生产工厂B基本视图MM01必须有必须有工厂/存储视图MK工厂等必须MK、MRP视图必须MRP 3视图特殊采购类填80不填或按正常生产物料设置MRP 4视图生产工厂填B工厂不填会计1/2视图有收货要记账有生产要结算物料需求计划视图MRP类型、批量、安全库存同左重点关注批量与策略组很多项目上80配置“没生效”查到最后都是A厂物料主数据里MRP 4的“生产工厂”空了或者填成了自己。这一步没错的话后边80的后台配置才有意义。2.2 BOM和工艺路线放在哪个工厂跨工厂生产的BOM要建在生产工厂B这是铁律。A工厂只需要把物料主数据维护好不需要在A厂建BOM。系统从A厂跑MRP时特殊采购类型80会告诉它“去B厂找BOM、找工艺路线”所以B厂的BOM一定要确保在有效期内、用量正确、组件库存地合理。BOM建在B厂后组件本身在哪个工厂库存并不强制要求是B厂。如果组件在A厂有库存B厂生产订单发料时会有跨工厂的问题这个要提前和财务、物料部门确认——要么做跨工厂库存调拨到B厂要么配置好储备转储逻辑。很多项目80跑不顺卡在生产订单没法发料不是BOM问题是组件库存地错了。2.3 供应商主数据与货源清单需求工厂A通过采购订单向B厂采购时系统得知道B厂对应哪个供应商。常规做法是在A厂把B工厂编码映射为一个内部供应商一般用工厂编号作为供应商编号的前缀方便识别。这个供应商主数据要用BP业务伙伴概念维护特别是S/4 HANA 2020以后供应商主数据合并到BP里不维护BP后面采购订单根本下不去。另外还要确认是否维护货源清单Source List。如果A厂物料启用了货源清单检查采购申请转采购订单时必须有匹配的货源。我在项目上遇到过明明创建了采购信息记录但转单时报“未找到货源”就是在ME01维护货源清单时漏了“工厂级别”的勾选或者把供应商编号填错了。3. 核心配置步骤把80串起来3.1 特殊采购类型的后台配置后台配置路径在IMG里是Production - Material Requirements Planning - Master Data - Define Special Procurement Type。系统里已经有80的默认逻辑你不需要从零造一个新类型但可以复制后微调。我建议不要直接改SAP标准80复制一个Z80出来改比如调整“外部采购”标识或者“内部生产订单”的默认逻辑。特殊采购类型80的关键设置是“外部采购” 外部获得的物料以及“生产”相关的跨工厂生产逻辑它决定了MRP里需求工厂和供给工厂的传递方式。确认分配“工厂”字段这是新类型和旧类型的主要区别如果这里留空系统会要求你在物料主数据里额外指定生产工厂。配置部分看起来简单但传输到测试机、生产机时经常会因为请求被漏掉导致行为不一致。我们项目上曾出现过开发机跑80一切正常测试机突然不产生计划订单查下来发现后台配置虽然传输过去了但物料主数据里的生产工厂字段没一并传输二开字段又没做逻辑迁移前后折腾了两天。3.2 MRP参数与特殊采购字段检查物料主数据里MRP相关的三个关键字段最好一次查完MRP类型需求工厂A和生产工厂B都要维护建议都用PD自动计划否则MRP根本不会跑。特殊采购类A厂MRP 3视图填80这个不填或填错所有配置等于白做。生产工厂A厂MRP 4视图填B工厂这个字段在部分项目上叫“Prodn. in plant”或者“生产工厂”注意别填错成了“计划工厂”或者其他字段。有时候物料是启用了MRP区域MRP Area的比如A厂下面还有不同库位分别计划这会增加复杂度。我遇到的一个案例是物料在A厂启用了“工厂存储地点”的MRP区域导致MRP结果不在工厂层80产生的采购申请一直挂在该存储地点上而生产工厂B那边收不到需求。这种场景下建议先看MRP区域是否真有必要如果只是测试80链路先停用MRP区域干扰项会更顺。3.3 采购信息记录与配额协议特殊采购类80对应的是外部采购所以A厂一定要有外部采购这条供应链的完整信息。除了常规的ME11创建采购信息记录还要注意信息记录的工厂要包含A厂而不是B厂因为A厂才是采购方。如果A厂与B厂是同一公司代码下的两个工厂那么采购订单用NB类型就行如果是不同公司代码就要考虑用公司间采购或者用库存转储单的规则。配额协议如果存在会直接影响货源选择。80链路下我们不希望系统自动选择外部供应商而是固定走B厂所以最好把配额比例设为100%给B厂对应供应商或者直接不维护该物料在A厂的配额协议。4. 完整测试流程实录可直接照着做4.1 测试场景与主数据准备我拿一个最简单的例子来说明成品FERT-A100在A工厂需求工厂工厂编号1000有独立需求但实际产线在B工厂生产工厂工厂编号2000。流程目标MRP运行后需求工厂1000产生采购申请。采购申请转内部采购订单供应商是工厂2000对应的内部供应商。采购订单收货到1000工厂库存增加。同时在2000工厂生成计划订单后续可以通过生产订单执行生产完工后记入2000库存再由2000发出给1000。测试前先准备好以下数据序号主数据操作1物料FERT-A100MM01在工厂1000和2000分别扩展1000维护特殊采购类80生产工厂20002BOMCS01在工厂2000维护组件可以是原材料或半成品3工艺路线CA01在工厂2000维护至少一个工序和工时4供应商主数据BP创建编号例如SUP2000对应工厂2000工厂1000内有效5信息记录ME11创建物料FERT-A100供应商SUP2000工厂10006货源清单ME01维护物料FERT-A100工厂1000供应商SUP2000这个六个前置条件只要有一个缺失后面流程就会以各种奇怪的方式失败建议做个检查清单逐项确认。4.2 跑MRP并验证需求传递执行事务代码MD01全工厂MRP或者MD03单物料MRP建议先跑MD03单物料隔离变量。在工厂1000输入物料FERT-A100MRP控制参数选择“不删除、不创建采购申请”第一次跑先看计划结果。执行完看MD04库存/需求清单。正常情况下应该看到独立需求PIR或销售订单触发需求。因为特殊采购类80系统不会给1000工厂生产计划订单而是产生一张采购申请。采购申请的需求工厂是1000物料是FERT-A100数量精确匹配净需求。再跑工厂2000的MRP正常情况下工厂2000会为FERT-A100生成计划订单。如果这一步没生成排查方向是工厂2000是否也对该物料跑MRPMD01全厂会跑MD03可以单独跑2000。物料在2000工厂MRP类型是否正确。后台配置里80的“生产工厂MRP执行”逻辑是否生效。这里有个容易混淆的点跨工厂生产80的含义是需求工厂A的MRP“能看到”生产工厂B的计划但生产工厂B本身的计划订单是基于什么触发其实是A工厂的采购申请转成采购订单之后B工厂会通过“采购订单生产过程”subcontracting或stock transfer来触发计划。更常见的做法是A厂的采购申请转采购订单后B厂可以通过MD04看到由内部采购订单触发的需求再跑MRP生成计划订单。所以流程细节上采购订单创建后记得在B厂重新跑一次MRP。我把这两种模式稍微理一下模式1采购申请存在于A厂B厂通过MRP控制接收到需求这种在80版本中更常见即B厂为“供应”工厂MRP会将采购申请传递到B厂。模式2A厂PR转POB厂锁定PO需求再通过MRP生成计划订单。不管哪种核心目的都是让两个工厂的计划协同起来测试的时候别死磕“必须采购申请直接从A变计划”只要链路等效就可以。4.3 采购申请转采购订单MD04里看到采购申请后把它转成采购订单选中采购申请行点“采购订单”图标系统会自动带出供应商SUP2000。确认采购订单类型是NB标准采购订单项目类别是普通项目标准工厂是1000。检查“交货工厂”或“供应工厂”字段是否为空具体字段取决于你的交付配置有些项目需要维护“发货工厂”2000这样收货时逻辑才通。保存采购订单记下采购订单号。保存后去MD04看1000工厂该物料应该看到采购订单行在“未清”状态数量与采购申请一致。再去2000工厂的MD04正常情况下会有对应的“预留/相关需求”出现这一条通常是新手最容易忽略的验证点。我实际项目里就遇到过采购订单保存成功但B厂MD04死活不显示相关需求排插了半天最终发现是后台“采购订单交货工厂”维护字段填错B厂根本不知道这张单子是发给它的。4.4 收货、发料与库存回写对采购订单做收货事务代码MIGO选择“收货”“采购订单”输入采购订单号。系统默认移动类型101工厂1000库存地点可以根据实际填。确认数量保存。收货后MD04里采购订单变为已清库存显示在1000工厂价值通过移动类型101计入存货科目。但这里有个关键点在80跨工厂生产场景里B厂的生产订单怎么发料、怎么完工入库一般有两种做法做法一B厂生产订单正常发料组件从B厂库存发出完工入库到B厂库存然后通过库存转储到A厂。这个做法比较正统但也意味着A厂与B厂之间还有一次转储动作。做法二B厂生产订单直接关联到A厂采购订单完工时按采购订单收货逻辑直接进入A厂库存。这种做法在特殊采购类80中实现时通常需要做增强或额外配置我不建议新手一上来就搞最好先确认标准流程能否覆盖。大部分项目用的是第一种即B厂生产完工后通过“跨工厂转储”或者“采购订单交货”把货从B厂转到A厂。所以完整测试时别只停在A厂采购订单收货还得验证B厂生产订单整个流程。如果你们项目实际是“B厂生产入库到B厂库存、再通过转储给A厂”那重点测试后半段转储不要混为一谈。4.5 成本与凭证流检查80流程能不能上线最终财务要拍板。所以测试的最后阶段一定要把账务逻辑梳理清楚用MB51或FB03查看货物移动的会计凭证确认物料消耗、收货记账的科目是否正确。如果A厂、B厂属于不同公司代码跨公司转储结算要做公司间发票测试时要额外检查发票校验MIRO和结算逻辑。用KOB1或CO03确认生产订单成本如果B厂生产订单结算后仍然挂在“在产品”则说明结算规则配置有遗漏。成本这块有一个高频坑A厂采购订单收货时系统按采购订单价格入账但采购订单价格默认取采购信息记录。如果信息记录价格和B厂实际生产成本差异很大月末结算会出现价格差异挂在存货或差异科目里。建议在测试阶段把信息记录价格、B厂标准成本、实际成本三份都拉出来对比一下提前和财务对齐差异处理规则。5. 常见问题与排查技巧5.1 需求没跑到生产工厂症状A厂MD04正常B厂MD04没有任何需求计划订单完全没生成。排查步骤按优先级来确认物料在B厂有扩展MRP视图完整。确认A厂物料主数据MRP 4“生产工厂”字段B厂而不是空或等于A厂。认后台特殊采购类型80对应的“内部生产”或“跨工厂生产”勾勾是否启用了工厂维度。确认B厂MRP控制参数MD01全厂跑里没有把该物料排除。如果是采购订单触发需求确认采购订单中的“工厂”和“供应工厂”都不为空。这个问题的根源九成是物料主数据字段没维护齐全。5.2 BOM展开不对或找不到BOM症状B厂计划订单生成时报“物料XXXX在工厂2000中无BOM”或者BOM展开时组件数量为0。排查思路确认BOM存在CS03查看看有效性起止日期是否覆盖当前日期。确认BOM用途是“生产”而不是“工程设计”或“成本核算”或者“设备”。如果BOM存在但展开失败极可能是组件在B厂没有工厂视图或存储视图这会导致MRP组件需求报错。还有一种情况是物料本身在A厂有BOM在B厂没BOM。记住80流程是A厂需求、B厂生产B厂必须有自己的BOM。5.3 采购申请数量为0或没生成症状A厂有需求库存也缺但MRP后没有采购申请或者采购申请数量为0。这是最常见的初学者问题大多和MRP类型、批量规则有关系。确认MRP类型不是ND不计划或VB手动再订购用PD最省心。检查批量规则。如果批量是EX按需一般没问题如果是PK或HK要看批量大小、最小批量、最大批量是否把需求吞掉了。确认该物料没有被设置为“安全库存覆盖”或“动态安全库存”完全满足导致净需求为0。检查是否存在其他供应来源比如已有的计划订单、采购订单、生产订单已经覆盖需求MRP认为不需要新增。我建议测试时把MD04里的“可承诺库存”打开看系统剩余可用数量是哪部分覆盖了需求再决定是否调批量规则。5.4 计价与跨工厂库存问题症状A厂收货成功但会计凭证不显示或者B厂生产订单完工后库存跑到一个错误的存储地点。排查检查物料在A厂是否有会计视图1和视图2否则收货时无法自动记账。检查评估类valuation class和总账科目映射是否在OBYC里配置完整尤其是GBB对应的“BSX”库存记账科目。跨工厂转储时移动类型303/305或351/355对应的科目配置是否齐全少一条OBYC配置就会报“科目确定未找到”。如果A厂和B厂是不同公司代码mapping的客户/供应商主数据必须完整否则跨公司采购订单凭证流中断。5.5 MD07与整体物料供应分析MD07是看物料覆盖天数的工具在80链路的测试中也很有用。它可以快速显示该物料在多个工厂的覆盖情况帮助确认A厂和B厂各自的风险。我习惯在测试结束时用MD07跑一次FERT-A100的全部工厂视图重点关注两个指标A厂覆盖状况是否覆盖未来N天需求万一覆盖不足大概率是采购订单交期太久或数量不对。B厂覆盖状况B厂的安全库存、计划订单是否合理别让B厂自己欠料影响A厂的跨工厂需求。MD07不能帮你解决所有问题但能快速定位“是哪个工厂的计划失衡导致整个供应链卡住”这一点在项目汇报时比MD04的截图直观得多。6. 一个经验性总结个人体会特殊采购类80的配置并不复杂真正的复杂度在于它横跨了PP、MM、CO三个模块PP管BOM和工艺路线、MM管采购和库存、CO管成本结算。任何一边的数据不完整整个链路就像三脚架缺了一条腿。我个人实际做项目的心得是上线前一定模拟完整的端到端测试不要只测“MRP产生了采购申请”就草草收工要把转采购订单、收货、生产订单发放、完工入库、月末结算全部串一遍。很多项目在测试时只跑到MD04看到PR就以为成功了结果上线后第一个月结就炸锅问题往往出在成本结算和跨工厂凭证流上。另外一个小建议如果你有多个工厂都要做跨厂生产建议先在开发环境建一套“配置文件标准模板”把物料主数据、BOM、货源清单、BP供应商、信息记录全部用LSMW或定制程序批量复制别手工一个个敲既慢又容易出错。毕竟80这个配置真正容易翻车的从来不是配置本身而是基础数据的一致性。这个内容后续还可以扩展的方向比如特殊采购类80与重复制造REM、与MRP Live在S/4 HANA里的区别、以及80/82跨工厂生产库存转储混用场景下的需求传递逻辑篇幅关系这次先写到这里后面有需要再单独开坑聊。