上个月在一家制造企业做上线支持,MM模块的同事跑过来问我:"为什么我MIGO给供应商发料,凭证记到一半报了个错,提示移动类型541不被允许?"这个问题我太熟了。委外加工(Subcontracting)在SAP MM里看着不复杂,无非就是采购订单类型用F、发料、收货,但它背后涉及的物料BOM、特殊库存O、信息记录、移动类型541/543的联动,比普通采购绕得多。很多项目委外流程上线前没把底层逻辑搞清楚,结果一跑实际业务就爆雷。
这篇文章我把委外加工从BOM配置到MIGO发货、再到收货结算的全链路拆开讲,重点放在那些"文档上没写、顾问手册里一笔带过"的坑上。适合刚开始接触SAP委外流程的实施顾问,也适合甲方MM模块关键用户、PP模块的物料计划同事,以及供应链部门需要日常操作委外订单的朋友。看完你至少能搞清楚:委外加工和普通外购到底差在哪、特殊库存O怎么理解、541发货和543消耗是怎么回事、BOM改了之后采购订单组件为什么不同步,以及遇到超发、退料、冲销、盘点这种日常问题该怎么处理。
1. 委外加工的业务本质:先搞懂特殊库存O和那条从541到543的价值链
1.1 委外加工到底是个什么业务
委外加工的场景在企业里太常见了:机械厂把钢材发出去做电镀,电子厂把PCBA发出去做贴片,食品厂把原料发给代工厂做成半成品,服装厂把面料发给印花厂做后整理。共同特征是:元材料/组件的所有权始终是你的企业,只是物理上放在了供应商那里,由供应商提供加工劳务,加工完成后再把成品或半成品收回来。
这个业务在SAP里对应的不是普通采购,而是"外协加工"(Subcontracting / External Processing),也有顾问叫"分包"或"委外"。它的核心不是"买一个东西",而是"购买一个加工服务,同时把自有库存暂时转移到供应商处"。
很多项目出问题,根源就是把委外当成普通采购加一个发货动作来处理。一旦你的组件的库存所有权在供应商手里,SAP就必须用一个专门的库存类型来记录这笔"不在自己仓库、但属于自己"的库存,这就是特殊库存O(Vendor Subcontracting Stock,供应商分包库存)。
1.2 特殊库存O怎么理解
你可以把特殊库存O理解成:一个虚拟的、寄放在供应商厂里的仓库。这个仓库的物权属于你,只是不在你的货架上。
- 组件发出去:库存从你工厂的非限制库存,移动到供应商的O库存,移动类型是541。
- 供应商加工过程中消耗组件:O库存减少,移动类型是543,这个动作不是手工做的,是收货时系统自动记的。
- 供应商用完组件、把成品送回来:你对采购订单做101收货入库,同时系统自动把对应的组件从O库存消耗掉(543)。
- 组件发多了或者业务取消:用542把组件从O库存退回自己的工厂库存。
这套逻辑你一定要先建立起来,否则后面所有操作都会懵。我见过不止一个项目,用户把发给供应商的组件直接用261(工单发料)出库,导致组件成本直接进了成本中心,而采购订单的组件需求却一直挂着,供应商那边对不上账。这就是典型的"没理解O库存"导致的错误。
1.3 委外加工全流程的全景图
在讲具体操作之前,先把全流程拉通一遍。委外加工的标准业务链路大致是:
- 主数据准备:维护委外物料(成品/半成品)的物料主数据、物料BOM、加工费信息记录、货源清单。
- 创建采购订单:采购订单项目类别选L(外协加工),订单上勾选"物料清单",系统根据BOM自动带出组件行(需要发给供应商的原材料)。
- 发货给供应商:MIGO用移动类型541,按采购订单发货,组件从工厂库存转移到供应商O库存。
- 供应商加工并送货:供应商完成加工后,你仓库对采购订单做收货(移动类型101),成品入非限制库存,系统自动按BOM做543组件消耗。
- 发票校验与付款:供应商开加工费发票,你按采购订单做MIRO发票校验,付款。
这个流程里最容易出问题的是第3步和第4步的联动,尤其是"收货时组件是怎么消耗的""组件消耗数量怎么算""冲销时会发生什么",这些后面我会逐个展开。
2. 主数据与BOM配置:材料、加工费、BOM用途这几个前置条件一个都不能错
2.1 委外物料的主数据维护,重点看采购视图和MRP4视图
委外流程涉及两类物料:委外物料本身(加工完收回来的成品或半成品)和组件(发给供应商的原材料)。两类物料的主数据关注点不一样。
- 委外物料:物料类型可以是成品(FERT)或半成品(HALB)。采购视图里"采购类型"通常维护为"F"(外部采购)或"X"(内外部均可),"特殊采购类"不要乱设,委外采购不是靠特殊采购类控制的,而是靠采购订单项目类别L。特别要注意MRP4视图里的"外协加工相关"字段(Dismantlement? 这里指组件在BOM中的“外协加工”标识),如果这个标识设置不对,BOM展开后组件行可能不会被赋值到采购订单里。
- 组件物料:一般就是原材料(ROH)或半成品,只需要保证有基本视图、采购视图、MRP视图和会计视图,能正常发料入库。
另外强烈建议维护好物料的评估类(Valuation Class)和总账科目,委外收货时组件价值会作为成本构成记入成品入库成本,加工费会单独记入加工费科目。如果评估类配置不对,收货过账时报"科目确定错误"会卡住整张订单。
2.2 委外BOM的维护,比你想的更讲究
委外的BOM是物料BOM(不是销售订单BOM或设备BOM),用CS01维护。但这里有一个很多初级顾问忽略的细节:BOM的用途和状态决定它能不能被采购订单正确读取。通常生产型BOM(BOM用途为生产)是最稳的选择。如果BOM用途设成其他类型,采购订单"物料清单"展开时可能读不到组件。
维护委外BOM时,我建议你确认下面几项:
- BOM必须分配了正确的工厂,并且有效性(Validity Date)覆盖采购订单的日期,否则展开会空。
- 组件行的"项目类别"(Item Category)默认是L(库存项目),发料用的就是这个。如果被改成N(非库存项目)或无项目类别,541发货时会找不到可发料的库存。
- BOM数量(Base Quantity)和你采购订单的数量单位必须一致,否则收货时组件消耗数量会按比例换算,你看着像算错了,其实系统没错。
- 组件行上如果有"外协加工"标记(External Processing标志),会影响是否带进委外采购订单,建议在测试环境先验证展开结果。
2.3 批次和序列号:能不启用就别硬上,真要追溯就要接受复杂度
很多企业做委外时会纠结一个问题:组件发给供应商,收回来的时候怎么保证还是原来那批料?
先说批次。SAP在委外收货时,组件消耗可以按系统默认策略自动选批次(一般是按库存批次的最早收货日期,或你自定义的批次确定策略)。如果你的业务只是"发给供应商一批料,收回来一批成品",不需要逐批对应,那完全可以让系统自动选批次,你只要在发料时手工指定要发哪个批次就行。真正难的是"发出去这批料必须收回来这批料"——那就要求你发料时指定批次、收货时也指定批次,并且采购订单组件行上的批次信息要维护好。这个复杂度会传导到供应商对账和质检追溯,建议只有在客户有硬性合规需求时才这么干。
序列号更麻烦。如果委外成品启用序列号管理,那么541发料时组件可能要输入序列号,101收货时成品也要输入序列号,组件序列号和成品序列号之间往往还要做关联。一旦某个环节漏做,后续序列号追溯就断了。我的建议是:委外流程优先保证数量和价值正确,序列号追溯这种需求能放到生产订单里做就别放在委外里做。
3. 从建单到发料:信息记录、货源清单、采购订单L项目与MIGO 541的实操链路
3.1 加工费怎么维护:信息记录里不要只填价格
委外采购的信息记录维护的是加工费,不是成品全额采购价。这一点经常被新顾问搞混。在ME11创建采购信息记录时,你要维护的是供应商对"完成一件加工后交付的成品"收取的加工费。
以电镀为例:假设每公斤钢材电镀费是3元,那么信息记录维护的物料就是电镀后的半成品(或电镀服务对应的物料编码),价格单位可能是1公斤,净价是3元。
我在项目上看到的常见坑是:信息记录价格没维护,或者维护的是组件价格而不是加工费。结果采购订单里条件类型PB00价格字段为空,收货时加工费没有对应金额入账,财务对账时发现委外加工成本缺失。还有一点要注意,如果供应商有几档加工费标准(比如批量大价格低),条件里做阶梯价格时,"价格单位"别设错,收货数量对应的价格一定要点开"等级价格"看实际匹配到哪一档。
3.2 货源清单到底要不要强制维护
做委外采购时,系统提示"必须维护货源清单才能创建采购订单"是高频报错。这个提示的触发原因是后台配置里"无货源清单"的检查方式被设成了"E"(报错)。标准做法是在OMDU(后台配置路径:物料管理→采购→货源清单→定义"无货源清单"的检查)里把检查方式改成警告或注释,但业务上建议还是给委外物料维护货源清单,尤其是在用MRP跑出采购申请转采购订单的场景下,货源清单能帮系统自动带出建议供应商。
如果你有多家委外供应商做同一种物料,配额协议(Quota Arrangement)是比手工指定供应商更省事的管理方式。配额比例按月度或季度调节,跑MRP时系统自动按配额把采购申请分给不同供应商。注意配额协议也要有有效期,过期后MRP会报找不到货源。
3.3 采购订单项目类别L和"物料清单"勾选
委外采购订单和普通采购订单的区别,核心在两个地方。
第一,项目类别是L(Subcontracting / External Processing)。这个类别决定了:物料会进入特殊库存O管理,订单会产生组件需求,MIGO收货时系统会要求先有组件发货记录。如果项目类别没选L,后面所有委外动作都做不了。
第二,采购订单项目上有一个"物料清单"(BOM)勾选框。勾选后,创建订单时系统自动根据物料BOM展开组件行,显示出需要发给供应商的组件和数量。如果不勾,订单就只是"下单了一个加工服务",没有组件需求,541发料时找不到可发物料。
组件行的数量由订单数量乘以BOM组件数量自动计算。举例:一张委外订单要做100件成品,BOM里用到的组件A单件用量是2,那么组件行数量自动带200。如果供应商那边是分批送货,每个批次收20件,那么组件消耗按收货比例20%自动扣,也就是扣40件组件A。
采购订单创建后,系统会为组件行生成一个预留(Reservation)。这个预留号在ME2O里能看到,541发货就是基于这个预留做的。很多项目经常忽略预留的存在,以为"采购订单里有了组件行就能发料了",其实发料依赖的是预留,采购订单组件行只是预留的来源。
3.4 MIGO 541发货:到底该怎么操作
541发货在SAP里有好几种入口,最常用的是MIGO。操作路径不长,我直接给你走一遍:
- 事务码MIGO,事务类型选A07(发货),移动类型填541。
- 在"采购订单"标签页填入委外采购订单号,或者直接填供应商代码。
- 系统带出所有待发组件行(来自预留),根据实际发货情况修改数量。
- 确认工厂、库存地点、批次后,点击过账。
保存后生成物料凭证,移动类型541,库存从工厂非限制库存转到供应商O库存,特殊库存O数量增加。
这里有几个我实测过容易翻车的细节:
- 发货界面里组件行的数量不能超"未清数量",否则会报可用性检查错误。如果供应商损耗率很高,你要提前评估是允许超发还是要走补发流程。
- 组件行里的批次不是必输项,但如果你的物料启用了批次管理却不维护批次,过账时大概率被卡。建议用"批量确定"功能实现自动带批次,而不是让仓库一个个手输。
- 页面增强不要乱加。我看到过有项目为了在MIGO发货界面加一个"委外加工单号"字段,做了屏幕增强,结果字段增强之后后台逻辑出问题,收货时物料凭证抬不起头来。委外发货本身标准的抬头文本、字段已经够用,除非业务真的需要,否则别给自己挖坑。
发货这一步做完,你可以在MB51查物料凭证,在MB54查供应商分包库存O的实时数量。这两个报表建议每天盯一次,特别是有多条委外订单并行时,O库存的数量很容易对不上。
3.5 用ME2O做委外组件监控,而不是天天翻MIGO
日常监控委外组件到位情况,最专业的工具是ME2O(Subcontracting Monitoring)。这个报表能按供应商、按物料、按采购订单展示:总需求数量、已发货数量、供应商库存数量、已消耗数量、未完成数量。它比你自己拿Excel去汇总541和543的凭证可靠得多。
打开ME2O后,先看"组件总需求"和"供应商库存"两个块。组件总需求是当前未清采购订单的组件累计需求,供应商库存是已经发出去但还没被收货消耗的数量。两者之差基本就是"还欠供应商多少料,可以安排发货"的数字。
我再补充一句:如果你手头有委外订单但MIGO里找不到可发料行,先别急着怀疑系统坏了,用ME2O看一下这个订单当前有没有预留、预留状态是"已交货"还是"未清"。"已交货"说明这个组件的需求已经被之前一次或多次发货满足完了,你要补发就必须走"补发"逻辑,而不是再走一次标准541。
4. 收货结算与冲销:101/543的联动逻辑和数量错误的补救方法
4.1 收货时系统内部干了三件事,你可能都没注意到
供应商完成加工后把货送回工厂,你在MIGO做A01(收货),选择"采购订单",输入采购订单号,系统带出要收的成品数量。界面很简单,但点击过账的那一刻,系统在后台做了三件事:
- 成品101收货入库,数量进非限制库存。
- 按收货数量×BOM单件用量计算组件消耗数量,生成移动类型543的物料凭证,供应商O库存扣减。
- 财务记账:组件消耗价值+加工费合并计入成品入库成本。
以100件成品为例,BOM里组件A单件用量2,那么收货时组件A的543数量就是200。如果其中一批只收20件,组件消耗就是40件。
这个自动消耗逻辑你一定要心里有数。很多用户看MIGO收货只看到成品入库的101凭证,或者看采购订单历史只看到一条101,没意识到还有543在后台跑,结果月末跟供应商对账发现O库存负数对不上,才回过头来查。
4.2 组件消耗数量是"按BOM算的",不是"按供应商实际用的"算的
这是委外流程里最容易被业务挑战的一个点。供应商实际加工100件成品可能用了205件组件(有正常损耗),但SAP收货时只会按BOM用量扣200件,剩下5件怎么办?
两种处理方式:
- 如果这5件供应商用掉了、没法退回来,那就当正常损耗处理,你可以再补发5件给供应商(走补发/额外发料流程),或者调整BOM里的损耗因子,以后让系统多预留下单量。
- 如果这5件还在供应商那里,那就留在O库存里,作为供应商现场的委外余料,下次订单继续用。
千万不要为了让账平,直接在收货时把组件消耗数量改成205。因为SAP的委外收货组件消耗是根据BOM比例自动算的,你一旦改了消耗数量,后续采购订单组件余额就和实际库存对不上了,审计时也过不了。
4.3 收货数量错了:冲销102和供应商退货怎么选
收货后发现数量不对,要分情况处理:
- 只是多了、少了的纯数量冲销:用MIGO做102冲销101,系统同时会冲销对应的543消耗(生成542退回组件库存)。前提是供应商O库存里还有足够的组件可退回。如果你的O库存已经在收货后被下一个订单消耗完了,102冲销就会报错或者产生负库存。
- 成品有质量问题要退给供应商返工:不建议用102直接冲销,因为组件已经消耗了,退回逻辑不干净。更稳妥的做法是:做一次102把成品退回去,同时看情况调整组件库存;或者走"退货采购订单(Return Purchase Order)"流程,让供应商重新送货回来。
我在项目上遇到过最麻烦的情况是:用户对101做了102冲销,但组件O库存已经被供应商用掉了一部分,导致冲销时系统要求542退回组件,实际仓库根本没有那么多组件库存,最后只能做盘亏调整。所以我的建议是:102冲销要谨慎,先看ME2O里的供应商O库存够不够,再决定要不要冲销。
4.4 发票校验:加工费发票的金额和数量钩稽
委外加工的MIRO发票校验,比普通采购多一层钩稽逻辑。发票上不仅要匹配订单数量,还要确保金额对应的是加工费(不包含组件成本)。如果一个供应商同时给你做多种委外物料,开票时经常把不同物料的加工费合并开,这时在MIRO里做"计划交货成本"或"后续借记"时要特别小心。
另外一个财务相关的高频坑是凭证分割(Document Splitting)。委外收货过账涉及组件消耗和加工费两条成本流,如果启用了新总账的凭证分割而没有正确配置利润中心,MIRO过账时会出现"利润中心缺失"的报错。这个配置一般在FICO顾问手里,但MM顾问最好也了解,不然用户找过来你完全听不懂在讲什么。
5. 高频运维坑点:BOM变更不同步、补料退料、序列号追溯和供应商库存盘点
5.1 改了BOM,采购订单组件不跟着变,这是最典型的坑
BOM变更在委外业务里是家常便饭。但很多人不知道,已经创建并下达的采购订单,组件行是BOM的一个快照,不会自动随BOM变更而更新。也就是说,你1号改了BOM,5号创建的采购订单会按新BOM带组件,但1号之前已经创建的、还没发货的采购订单组件行还是旧的。
后果是什么?供应商按旧订单生产和领料,结果仓库按旧组件行发货,少了新组件、多了旧组件,现场一团乱。
解决办法不是去开发程序自动同步,而是建立一套流程规范:
- BOM变更后,立即检查所有未清委外采购订单(用ME2O或ME23N状态筛选)。
- 对还未发货的订单,在ME22N里"删除组件行+重新展开BOM",或者手工修改组件行,让订单组件和最新BOM一致。
- 对已经部分发货的订单,新BOM生效后后续交货的组件消耗会按新BOM比例计算,但已发出的旧组件只能靠补发或者退回处理。
有一些大型项目会做BOM同步增强,在BOM变更时自动更新未清采购订单,但这种增强的上线成本不低,而且很容易误更新已收货订单。我的建议是:流程规范优先,系统增强最后。
5.2 补发料、退料的移动类型选哪个
日常操作里,你可能会遇到几种特殊的库存调整需求:
- 组件少发了,要给供应商补发:继续用541发货即可,系统会调出当前采购订单的剩余预留,你填数量过账就行。
- 组件多发了,要退回自己仓库:用542(Subcontracting Return),库存从O库存回到工厂库存。
- 某批次组件有质量问题,供应商要退回来:可以用542退回,也可以结合质量检验流程做后续处理。
- 组件彻底报废不能退回:如果组件在供应商那里报废了,实物已经不在了,账面上要平掉这个O库存,可以用特殊的移动类型(比如552?)做报废出库。这块建议提前跟财务确认科目,别自己乱选移动类型。
5.3 序列号追溯:委外发料和收货的序列号怎么对
如果你还是不得不做序列号管理,那我把关键链路说清楚。
组件发给供应商用541时,如果组件启用了序列号参数文件,MIGO发货界面会要求输入序列号。成品收回做101收货时,需要维护成品序列号。中间供应商用哪个序列号的组件做成哪个序列号的成品,系统标准功能并不强制关联,你需要在发货单/收货单或者供应商反馈的清单里人为维护对应关系。
我在一个汽车零部件项目见过他们这样处理:发货组件时打印一份带序列号的发料单,供应商每完成一件成品,就记录合格成品序列号和对应组件序列号,交货时由仓库在MIGO收货界面按系统提示录入成品序列号并关联组件序列号。这套操作非常耗时,但客户有召回追溯的强制要求,没办法。
5.4 供应商处的O库存怎么盘点、怎么对账
委外组件放在供应商那里,盘点一直是个头疼问题。标准SAP没有针对O库存的成熟盘点方案,大多数项目用以下组合拳:
- 日常用ME2O看未清组件需求,用MB54看O库存余额,每周和供应商交换一次加工剩余料清单。
- 月末导出供应商库存数量(MB54),跟供应商自己报的库存做差异核对。
- 差异处理:如果是供应商领错料/损耗超了,就让供应商赔料或赔钱;如果是账务差异,可以做调整库存(但要非常小心)。真正做O库存盘点的企业很少,因为审计对这块的要求也很难完全满足。
5.5 计划协议和JIT场景下的委外,和标准采购订单有什么区别
如果是长期委外加工业务,很多企业会用计划协议(Scheduling Agreement)而不是单笔采购订单。计划协议里同样有项目类别L,同样能带BOM组件行。区别在于:计划协议的交货计划(Delivery Schedule)行和JIT叫料结合时,组件消耗是按"计划行收货"触发的。
比如你跟供应商跑JIT计划,每周给一次需求预测,供应商按计划行送货。每次你收货时,系统同样按BOM比例做543组件消耗。这里要注意:计划协议里的"计划行状态"必须维护得好,否则供应商库存和组件消耗会乱。
5.6 委外订单改价之后,组件预留和收货结算怎么联动
供应商中途要求涨价,你在ME22N里改了采购订单条件价格(PR00 / PB00),这个操作本身不难。但改价后要注意两点:
- 收货时系统按订单当前的加工费入账,不是按创建时的价格入账,所以改价后收货的成品入库成本会自动变化。
- 如果订单已经部分收货了,改价只影响未收货部分,已经收货的部分要用后续发票调整(MIRO里的后续借记/后续贷记)处理。
很多MM顾问不知道这个逻辑,改完价格后看到财务那边"价格差异"科目有余额,答不上来,其实就是因为部分收货前后两个价格存在差异。
6. 如果你正在负责一个委外项目上线,请按这个顺序准备
最后分享一点我自己的项目经验。如果让我重新做一个委外模块的推广上线,我会按这个顺序推进,能省掉大量返工:
- 先跑通财务口径:把所有涉及委外的移动类型(541、543、542、101、102)的科目确定捋清楚,和FICO顾问对一遍评估类、总账科目、成本要素。这一步错了,后面全是白搭。
- 再做物料主数据和BOM:在测试系统里创建完整委外物料、组件、BOM、信息记录,模拟一张采购订单,仔细看组件行、预留是否生成。
- 全流程蓝图上确认:把"创建订单→发货→收货→发票校验→冲销"在开发/质量系统里完整走一遍,重点测试收货时的543消耗和102冲销的库存变化。
- 给用户做实操培训时,不要只讲事务代码,而是要把"特殊库存O"这个概念讲透。用户理解了541、543的含义,后面自己就能排查大部分问题。
如果是你自己日常管委外业务,也请记住一句话:**组件在供应商那里,库存还是你的,所有操作都要围绕特殊库存O来做。**这句话我几乎在每个项目上都重复,说多了用户嫌烦,但能避免80%的委外账务问题。