简介:SAP按单生产委外加工是围绕客户定制需求组织的常见生产模式。围绕这一主题的总结文档专为SAP实施顾问、生产计划及物料管理人员编写,聚焦MTO外包流程中的核心控制点。内容系统性对比了两个典型场景:两层BOM结构下外包自身销售成品,以及三层BOM结构下外包并销售父阶成品。文中逐步详解销售订单创建(VA01)、MRP运行、计划订单转采购申请(项目类别L、科目分配E)、非限制库存转供应商库存(MB1B 541)、自供材料销单库存转供应商库存(311 E),以及MIGO收货(101 E/543 O)直至销售发货的完整操作,并重点强调共用材料与自供材料在供应商库存中的批次管理要求。场景差异对比有助于避免移动类型混用,提升外协库存对账准确性。资源为单个doc文档,共442KB,以操作步骤、事务代码和库存移动类型说明为主,结构紧凑便于按需查阅。目前已有2390人学习浏览,适合希望理清按单生产委外操作差异、快速掌握关键事务代码逻辑的实施人员参考。
1. MTO委外加工:换个角度理解“外包自身”的两个关键前提
委外加工在SAP里并不难,难的是“按单生产+外包自身”这种组合。很多从业者第一次碰到MTO委外加工时,都会被两个问题卡住:一是共用材料怎么发料才不破坏销售订单库存,二是三层BOM里“自供材料”为什么还要用供应商批次。这两个问题背后其实是一条主线——物料从自有库存移动到供应商库存时,移动类型和批次策略决定了整条链路的成败。这篇笔记拆的是两个实际测试场景,一个两层BOM,一个三层BOM,流程可复现,字段配置也一并给出。适合做MTO跟单、生产计划或供应链方案实施的同行,读完可以直接拿去对配置、走测试。
2. 两层BOM外包流程:销售订单到101 E入库的四步闭环
场景一的结构很简单:W是按单生产的成品,需要外包生产;T是共用材料,库存要求为非限制。整条业务线从销售订单切入,经过MRP运行,把计划订单依次转换为采购申请、采购订单,最后通过发料和收货形成闭环。这一章把每一步的事务代码、字段值和库存变化逻辑拆开讲。
2.1 VA01与MRP:销售订单强制驱动计划订单生成
MTO模式下,销售订单不是终态,而是MRP运行的起点。用VA01对W创建销售订单后,跑MRP时系统会根据BOM展开需求,生成计划订单。这里的计划订单来源是“销售订单库存”,也就是说产出物挂在销售订单库存下,而不是普通工厂库存。
这个步骤没有任何特殊字段要设,但需要确认物料的MRP类型。常见做法是把W设为MTO物料,MRP类型用M0或M1,这样计划订单会自动带上销售订单号。如果物料的MRP类型是PD(再订货点),系统就不会为销售订单展开需求,后续所有流程都走不通。
VA01 创建销售订单(W) MD01/MD04 运行MRP,查看计划订单运行MRP后,计划订单的“订单类型”会显示为PB(采购订单)或PE(生产订单),取决于物料主数据的采购类型。对W来说,既然外包生产,就让它走采购流程。值得注意,MRP运行范围如果只选了工厂,没包含供应商库存,共用材料T的需求量会多算一层,这是后话,避坑部分再展开。
2.2 采购申请字段矩阵:L分包属性与E科目分配的由来
计划订单转采购申请这步是整个流程的关键分叉点。转换时系统会弹出字段选择,涉及三个核心字段:项目类别、科目分配类别、处理组件。
项目类别选择“L”,代表分包(Subcontracting),也就是把生产步骤交给外部供应商完成。科目分配组选择“E”,表示有KD-CO的客户,即销售订单库存要参与成本对象核算。这一步如果漏选L,采购订单会变成普通采购,供应商不会收到组件出库的需求;漏选E,成本没法归集到销售订单,CO模块结算时对不上账。
处理组件里保留需要外出的原料T。系统会列出BOM中所有组件,你只需勾选要发给供应商的项。共用材料T在这里如果库存是非限制,后续可以用531发到供应商库存。
字段设置效果可以用以下代码块模拟:
采购申请项目类别:L(分包) 科目分配类别:E(KD-CO客户) 处理组件:T(共用材料,非限制库存)转换完成后,采购申请转采购订单,MB1B 541把非限制库存发到供应商库存。到这一步,W的计划订单被采购订单替代,T的库存从工厂自有库存变成供应商库存。
2.3 MB1B 541与MIGO 101 E/543 O:库存位移的完整链路
发料与收料是这一章的落地动作。MB1B 541做的是“非限制库存转供应商库存”,移动类型541是分包发料给供应商的标准动作。操作时物料填T,工厂和存储地点要填对,供应商编号会带出采购订单上的供应商。
收料动作在MIGO完成。对采购订单做收货时,系统会同时执行两个移动类型:成品W做101 E入库,原料T做543 O出库。101代表收货,E代表销售订单库存(E是特殊库存标识);543代表分包消耗发货,O代表供应商库存。两者成对出现,缺一个都说明配置有问题。
收料后看库存状态,W的销售订单库存增加,T的供应商库存减少。这之后就可以做销售订单发货。很多初学者在这步容易混淆:他们认为收料就是“收成品、退原料”两个独立动作,实际上MIGO收货是一笔过账同时处理两行物料,不能拆开做。
2.4 两层场景的移动类型与库存效果对照
把整个流程的移动类型和库存变化整理成一张表,便于测试时核对:
| 操作 | 事务代码 | 移动类型 | 特殊库存标识 | 库存影响 |
|---|---|---|---|---|
| 非限制转供应商库存 | MB1B | 541 | 无 | T非限制减少,T供应商库存增加 |
| 外包收料(成品) | MIGO | 101 | E | W销售订单库存增加 |
| 外包收料(原料消耗) | MIGO | 543 | O | T供应商库存减少 |
这张表不是标准文档,是我按实际测试结果整理的。配置正常的系统里,MIGO收货完成那一刻,物料凭证会显示两行,一行W正向,一行T负向。如果只看到一行,说明采购订单里的组件没维护全,回头检查处理组件是否遗漏。
3. 三层BOM自供料流程:计划订单、生产订单与311 E库存转移
场景二比场景一复杂的地方在于:销售成品D外包生产,但D的组件W是自产件,W又消耗共用材料T。也就是说,外包的是父阶D,自供的是子阶W,而T是底层共用料。这里涉及三件事:W的计划订单转生产订单并缴库、对D的采购申请字段设置、以及311 E把W从销单库存发到供应商库存。
3.1 D外购父阶:W的计划订单为何要先转生产订单并缴库
对D建立销售订单并执行MRP后,D的相关需求会向下展开到W。由于W是自产件,系统对W生成的是生产订单类型的计划订单,而不是采购申请。此时必须先对W做计划订单转生产订单,并完成生产入库,让W进入D的销售订单库存。
这步的逻辑容易理解,但实操上有三个细节。第一,W的生产订单下达时,系统会检查W的组件T是否可用;第二,W缴库时移动类型是101,特殊库存标识E,挂在D的销售订单下;第三,W的库存状态变成“销售订单库存”而非非限制库存,这直接决定了后续对D发料时不能用541,而是用311。
流程顺序如下:
VA01 对D创建销售订单 MD04 运行MRP,W产生计划订单 CO40/CO41 计划订单转生产订单 MIGO 101 E缴库,W进入D的销单库存缴库完成后,D的销售订单库存增加,而W的库存从一个“计划中的供应”变成“可发运的组件”。此时MD04里D的供应来自采购订单,W的供应来自生产订单,T的供应来自库存。
3.2 采购申请字段设置:L/E组合与处理组件W的保留
D的物料做计划订单转采购申请时,字段设置和场景一几乎一样:项目类别L,科目分配E。区别在处理组件上——这里保留的是W,不是T。因为D外包生产时,供应商需要拿到W作为原料,W再从自己的销单库存发出。
有个容易忽略的地方:处理组件列表只会显示D的BOM直接组件,不会向下展开到T。T是W的组件,它的消耗在W生产入库时就已经发生,与外包D无关。所以如果处理组件里同时勾了W和T,反而会重复发料。
字段配置效果:
物料:D 项目类别:L(分包) 科目分配:E(KD-CO客户) 处理组件:W(自供材料,销单库存)到这里,采购申请转采购订单后,MD04里D的供应行已经出现,W的库存仍然挂在D的销单库存上,等待发料动作。
3.3 311 E发货:批次必须写外协供应商编码
D的采购订单收货前,W要发到供应商库存。这一步用的是MB1B 311 E,把W从销单库存转移到供应商库存。311是转储移动类型,E代表特殊库存标识。
以往做内部转储时,311只需要填工厂和存储地点,但这里多了一个强制项:批次。收货批次必须写外协供应商的编码,这样在供应商库存里,W不再以普通批次存在,而是以供应商编码为标识。这个设计是为了让系统知道这批W是交给哪家供应商的,后续D收料消耗时能按供应商反向溯源。
MB1B 发货W,移动类型311,特殊库存E 批次:外协供应商编码为什么不能用541?因为541适用于非限制库存发料,而W所在的是销售订单库存(E),两者的库存类型不同,移动类型也必须不同。311 E的原理是先把W从销单库存转出,再以供应商库存身份进入供应商地点,库存物理上没动,但所有权视图变了。
3.4 D收货后批次与库存的联动关系
D收料时执行MIGO 101 E,以此消耗供应商库存中的W。这里的关键在于:系统必须能识别出收货消耗的是“哪一批W”。如果之前311 E时批次随便填了,收货时系统找不到对应供应商库存,要么报错,要么扣错批。
收料后的库存状态是:D的销售订单库存增加,W的供应商库存减少。而T的库存早在W生产缴库时就已经消耗,不在D的外包链路里再出现。
三层场景和两层场景的库存转移对比可以这样看:
| 操作 | 移动类型 | 特殊库存 | 对象 |
|---|---|---|---|
| W生产缴库 | 101 | E | W进入D销单库存 |
| W发供应商 | 311 | E | W转供应商库存,批次为供应商编码 |
| D外包收料 | 101 | E | D入库,W被消耗 |
| T消耗 | 261/262 | 无 | 在W生产中产生 |
4. 供应商库存与批次视角:MD04到MMBE的验证链条
前两章讲完了两个场景的操作序列,这一章把视角抬高一层,看整条链路的“库存验证法”。SAP里做外包流程,最大的风险不是操作失误,而是操作完成后不知道去哪里确认结果。MD04和MMBE就是两个核心验证窗口。
4.1 MD04看供应:计划订单、采购订单与生产订单的堆叠关系
MD04是物料需求计划清单,按时间轴显示一个物料的全部供应和需求。外包流程跑完后,在MD04里能看到什么?
以场景一为例,输入W的物料号,MD04会显示:销售订单行(需求)、采购订单行(供应)、以及发货后的采购订单收货记录。切换到T的物料号,能看到销售订单需求展开后的组件需求,以及541发料的收货记录。如果计划订单没有被正确转换,MD04里会出现“计划订单+采购申请”并存的冗余行,说明转换动作没有执行干净。
MD04还有个隐藏用途是检查“是否发错供应商”。在库存列里看特殊库存标识,E代表销售订单库存,O代表供应商库存。如果T的库存列显示的是非限制,说明541没有执行;如果显示O但供应商编号不是采购订单上的号,说明发货时供应商字段填错了。
4.2 MMBE看库存:非限制、销单库存与供应商库存的移动类型切换
MMBE查看库存概览时,系统会按库存类型分组显示:非限制库存、销售订单库存、供应商库存。外包流程跑完,最关键的是看“销售订单库存”和“供应商库存”两个页签下的变化。
场景一的验证顺序:收料前,T在非限制库存有数,供应商库存是零;收料后,T的供应商库存出现正数,非限制库存不变,W的销售订单库存出现正数。这里有个细节,非限制库存不会因为发料减少,因为共用材料T的发料是从非限制库存转到供应商库存,做的是库存转移,不是消耗。
场景二的验证顺序:W生产缴库后,销售订单库存出现正数;311 E操作后,供应商库存出现正数,销售订单库存减少;D收料后,供应商库存减少,D的销售订单库存增加。整条链可以反向追踪——从D的收货凭证追到W的转储凭证,再追到W的生产入库凭证。
4.3 批次管理的硬规则:供应商编码就是分批次的钥匙
两个场景对批次的处理态度完全不同。场景一没有提批次,因为T是共用材料,不需要批次管理;场景二明确要求批次写外协供应商编码。这背后的规则是:如果物料启用批次管理,并且以外包方式发料,批次号就承担了“供应商识别”的角色。
实务中我一般会检查物料主数据的“批次管理”字段。如果W启用了批次,但311 E发货时批次号留空,系统会直接报错;批次写错(比如写成本厂批次),系统能过,但D收料时看不到对应库存,MIGO会提示“找不到可用的供应商库存”。
有一种常见误解是“批次号可以在收货后再改”。实际上批次已经过账,反向凭证会把库存退回销单库存,再重新做一次311 E。虽然能修正,但操作痕迹很乱,审计时说不清。正确做法是在标准流程里把批次设为必输字段,从源头堵住。
4.4 移动类型速查表:541/311/543/101的使用边界
四种移动类型在两张场景里的边界差异容易记混,整理如下:
| 移动类型 | 使用场景 | 特殊库存 | 典型事务代码 |
|---|---|---|---|
| 541 | 非限制库存发至供应商库存 | 无 | MB1B |
| 311 | 销售订单库存转供应商库存 | E | MB1B |
| 543 | 分包消耗(收料时同步产生) | O | MIGO |
| 101 | 外包收料或生产缴库 | E | MIGO |
边界的判断标准是“库存从哪来”。非限制来的用541,销单库存来的用311,收料自动产生的消耗行用543,所有入库动作都是101但特殊库存标识不同。这样拆解后,现场遇到报错时能快速定位是哪一段配置问题。
5. 委外加工常见问题排查:五个高频翻车点与处理路径
这一章全是实际流程跑下来会遇到的操作性问题,每一条都按“现象→原因→解决”的结构写。如果你在做测试或上线支持时被某个报错卡住,先来这里对号入座。
5.1 场景一收料后只看到成品入库,没有原料消耗行
现象:MIGO对采购订单收货时,物料凭证里只有W的101 E行,T的543 O行缺失。收料能正常过账,但T的供应商库存没有减少,账实不符。
原因:处理组件里的T没有被正确维护。计划订单转采购申请时,处理组件是空的,或T被过滤掉了,导致采购订单没有分包组件。系统认为这是一张普通采购订单而非分包采购订单。
解决:回头检查MD04里的采购订单,双击进入“组件”页签,确认T在列表中。如果没有,删除采购订单,回到采购申请重新转换,在处理组件里勾选T。配置好的系统在采购订单创建时组件会自动带入,人工删除是常见误操作。
5.2 场景二末期数据正确,但中间过程批次写错导致对不上账
现象:311 E发货时批次写成了W的现有批次号,D收料时报错“无可用库存”,或收料成功但W的供应商库存未能扣减。
原因:133/直送场景下,供应商库存依赖批次识别。批次号没有按供应商编码维护,系统在D收料时找不到对应的供应商库存记录,于是要么中断,要么按错误批次冲减。
解决:MIGO逆向操作,先取消D的收货(移动类型102),再取消W的转储(移动类型312),重新按“批次=供应商编码”执行311 E发货,再执行收料。
MIGO 102 取消D收货 MB1B 312 取消W转储(反向311) MB1B 311 重新发货,批次填供应商编码 MIGO 101 重新收货5.3 共用材料T被发成了自有库存消耗而非供应商库存
现象:场景一的步骤完全按文档执行,但收料后T的库存变成负数,W的销售订单库存增加了,T却没有变成供应商库存。
原因:发料时用了261移动类型或做了生产订单投料,T被消耗而非转移。261是生产订单投料,会减少非限制库存但不会生成供应商库存行。
解决:发料动作只能由采购订单驱动的分包发料完成,不能在原材料环节手工做261。正确做法是删掉错误物料凭证,用MB1B 541从非限制库存发到供应商库存,确认移动类型不是261。
5.4 三层场景里W缴库后,D的采购申请里看不到W组件
现象:D的计划订单转采购申请时,处理组件列表为空,或者只有T没有W。
原因:D的BOM里W的物料类型是“自制”,在计划订单转采购申请时,系统默认只显示“外购”类型的组件,自制物料被过滤。W虽然是自制件,但这里要作为分包组件发给供应商,需要在BOM里维护“供应商供货”相关标记。
解决:在CS02里修改D的BOM,将W组件的“物料类型”勾选为分包相关。常见做法是把W的项目类别设为“L”或“S”,确保转换时组件能被系统识别为分包物料。这里有个前置条件,W必须已启用批次管理和供应商库存管理。
5.5 批次设置为非必输,测试时漏填导致后期大量数据修正
现象:测试时为了省事,把批次字段设为可选。执行几次后,MMBE里供应商库存出现多个空批次,后续收料时无法区分供应商,只能批量调整。
原因:系统层面没有强制规则,所有操作人员都按习惯跳过批次。等到对账时发现供应商库存和批次对不上,只能做库存转移或冲销。
解决:在物料主数据的“批次管理”页签里,把“批量输入”设为必输;或者在MIGO的字段状态组里,把批次字段设为“必须输入”。从流程上强制操作人员填写,不能依赖自觉。
6. 验证闭环:MD04、MMBE、CO03三个事务代码卡住每个交接点
流程跑通不是终点,能证明确实跑通了才是上线前要做的事。我一般会在MTO外包流程测试里固定用三个事务代码做验证,从前到后形成闭环:MD04看供应结构、MMBE看库存状态、CO03看成本归集。三个视图各管一段,任何一段对不上都要回溯。
MD04第一个看,它的作用是确认每一层物料的需求与供应是否成对。对D执行MD04,应该看到销售订单需求、采购订单供应、W的生产订单供应三行并存;再对W执行MD04,看到生产订单需求和原料T的组件需求;对T执行MD04,看到组件消耗和供应商库存发料记录。任何一行缺失,都说明上游动作没执行完。
MMBE第二个看,它的作用是确认库存视图变更。验证顺序为:收料前记录W的销单库存正数、T的非限制库存正数;收料后记录W的销单库存正数、W的供应商库存出现正数、T的供应商库存出现正数但非限制库存不变、D的销单库存出现正数。这里最容易出问题的是T,如果T的非限制减少而非供应商库存增加,说明移动类型用错。
CO03第三个看,它的作用是确认成本流向正确。输入销售订单号或销售订单行项目,检查成本对象是否归集了外包加工费、外包组件成本、原材料消耗成本。很多做MTO测试的人忽略这一步,直到月结时发现成本没归集到订单上才意识到科目分配E的重要性。
这三个事务代码的验证顺序不能颠倒。MD04确认数量,MMBE确认库存,CO03确认金额。我在做外包流程测试时,习惯每完成一个场景的收料动作,就立刻去MD04和MMBE各看一次记录,而不是等全部步骤跑完再回头看。这样一旦报错,就知道问题发生在哪一步,不需要从头到尾倒查。
实际测试中,我吃过一次亏:场景二跑完后MD04显示供应正常,MMBE显示W的供应商库存也正常,但CO03里看不到成本。查下来是科目分配类别没选E,采购订单带的是空科目分配,成本全部挂在未分配上。从那以后,每次转采购申请时我都会先确认科目分配类别字段的值,再去动其他配置。这个习惯救了我很多次。
希望这套验证路径能帮你少走弯路,特别是批次必输字段,强烈建议从第一天测试就强制打开。
本文还有配套的精品资源,点击获取