☰
SAP按单生产委外加工:两套BOM结构与库存转移全流程解析
2026/10/27 5:49:16 网站建设 项目流程

简介:这份文档面向SAP PP与MM模块的实施顾问、关键用户及生产计划人员,聚焦按单生产(MTO)模式下的委外加工业务,系统梳理两种典型场景的完整处理逻辑,帮助读者理清项目类别、科目分配组与库存移动类型之间的配合关系。文档以两层BOM外包自身销售成品和三层BOM外包父阶成品为主线,覆盖销售订单创建、MRP运行、计划订单转采购申请、采购订单收货、非限制库存转供应商库存及311 E内部转移等关键环节,并给出MD04、MB1B、MMBE、MIGO等事务代码的实操要点与库存状态变化说明。资源包共1个doc文件,约442KB,内容紧凑、便于打印对照。目前已有2408人学习,适合需要快速掌握委外加工配置思路、排查发料与收货差异的读者参考。

1. 按单生产委外加工:两套 BOM 结构下的真实交付需求

客户下单才排产,排产才发现关键工序得靠外部供应商——这就是按单生产(MTO)委外加工最典型的场景。它和普通采购最大的区别在于:企业要把自己的物料交给供应商,供应商只出加工能力,成品回来还得挂回原销售订单的库存上。一旦物料归属、库存状态、批次编码这三件事没对齐,账实就会分家。这套方案面向两类读者:正在做 SAP 生产与采购模块课程设计、需要一套能跑通完整流程的学生,以及要交付委外加工实施方案的从业者。下面按两套 BOM 结构拆开讲,一套两层、一套三层,覆盖从销售订单到收货发货的全链路。

2. 需求与流程拆解:两种 BOM 结构对应两套物料归属逻辑

委外加工在 SAP 里不是单一事务,它横跨销售、物料需求计划、采购、库存四个模块。要把它讲清楚,先得把两种业务形态分开,因为它们的物料归属逻辑完全不同,混在一起讲必然翻车。

2.1 场景一:外包自身,两层 BOM 的物料流转

第一个场景是成品 W 本身要外包生产,BOM 只有两层:W 是销售成品,T 是共用原材料,T 要求库存为非限制状态。这里的核心矛盾是——T 是共用材料,意味着它不只服务 W 一个订单,库存里可能同时压着好几个订单的量。所以流程的关键在于:先把 T 从非限制库存转到供应商库存,再让供应商用这批料加工出 W。

整个链路是这样推的:VA01 对 W 建销售订单,跑 MRP 产生计划订单;计划订单转采购申请时,项目类别选L(分包/委外),科目分配组选E(关联销售订单成本);采购申请转采购订单,组件里保留需要外发的原料 T;然后用 MB1B 事务码、移动类型 541 把非限制库存转成供应商库存;MIGO 对采购订单收货,成品走 101 E,原料走 543 O;收完货成品进入销售订单库存,原料的供应商库存被消耗;最后对销售订单出货。

这条链路里最容易忽略的是 541 和 543 O 的配对关系。541 是"非限制库存转供应商库存",543 O 是"从供应商库存消耗",一进一出必须成对出现,否则供应商库存会挂账。我一般会在方案里把这两个移动类型写成强制检查项,收货前先 MMBE 看一眼原料的供应商库存够不够。

2.2 场景二:外包自身、销售父阶成品,三层 BOM 的自供料处理

第二个场景复杂一档:销售成品是 D,D 要外包生产,但 D 的组件里有一个 W 是定制生产、专门供 D 使用的自供材料,W 下面还有共用材料 T。BOM 三层,物料归属就出现了"销售订单库存"和"供应商库存"之间的转移问题。

流程前半段和场景一类似:对 D 建销售订单、跑 MRP,D 对 W 的相关需求产生 W 的计划订单;W 的计划订单转生产订单并缴库,W 成为 D 的销售订单库存。到这里 W 是"自己生产的、挂在 D 订单上的库存"。接着对 D 的计划订单转采购申请,项目类别L、科目分配E,组件里保留需要提供的材料 W。关键动作来了:对 W 做 311 E,把销售订单库存发货到供应商库存,收货批次必须采用外协供应商的编码。这一步做完,W 从销单库存变成供应商库存。最后对 D 做 101 收料,W 的批次必须和外协供应商编码一致。

两个场景的差异可以对照看:

对比项场景一(两层 BOM)场景二(三层 BOM)
销售成品WD
外发物料T(共用材料,非限制库存)W(自供材料,销售订单库存)
库存转移方式MB1B 541311 E
成品收货101 E101 E
原料消耗543 O随 311 E 转移后由收货冲销
批次要求无特殊要求必须用外协供应商编码

这张表建议直接放进方案的需求章节,答辩时评委一眼就能看出你区分了两套逻辑,而不是把一套流程套两遍。

2.3 关键字段与移动类型的对应关系

把上面两个场景抽象一下,委外加工真正要控制的字段就四个:项目类别、科目分配组、组件保留标记、批次编码。项目类别L决定这是一张委外采购申请,系统据此生成外协加工的特殊库存逻辑;科目分配组E把成本挂到销售订单上,保证按单归集;组件保留标记决定哪些料要外发;批次编码在场景二里是硬约束,写错就收不了货。

移动类型则是物料物理位置的语言:541 是非限制转供应商,311 E 是销单库存转供应商,101 E 是成品收货进销单库存,543 O 是消耗供应商库存。这四个移动类型构成了委外加工的"库存黑匣子",任何一步用错,MD04 上的供需就会对不上。通常的做法是,在方案里给每个移动类型配一句"什么时候用、用错会怎样",比单纯列事务码有用得多。

3. 总体方案设计:从销售订单到收货的四段式架构

把流程拆成四段,每段有明确的输入输出和检查点,这是我在做委外方案时最常用的结构。四段分别是:需求生成段、采购转换段、库存转移段、收货结算段。每段之间用 MD04 和 MMBE 做交接验证,避免错误往下游传。

3.1 四段式流程的职责划分

需求生成段负责把销售订单变成计划订单,核心事务是 VA01 和 MRP 运行。这一段的输出是计划订单,检查点是 MD04 上能看到成品和原料的供需缺口。采购转换段把计划订单转成采购申请再转采购订单,核心是项目类别L和科目分配E的正确填写,输出是一张带组件的委外采购订单。库存转移段处理原料外发,场景一走 541,场景二走 311 E,输出是供应商库存增加、原库存减少。收货结算段用 MIGO 收货,成品 101 E、原料按场景走 543 O 或由 311 E 冲销,输出是销单库存增加、供应商库存消耗。

四段之间不是串行就完事,每段结束都要回 MD04 看一眼。MD04 是这套方案的"后悔药"——任何一步做错,MD04 上的供需行会立刻显示异常,比等到收货报错再回头查省事得多。

3.2 采购申请与采购订单的字段配置

采购申请转采购订单时,字段配置是整套方案的技术核心。下面这段是采购申请创建时的关键字段设置,用 ABAP 风格的伪代码表示字段赋值逻辑,方便对照系统操作:

" 采购申请创建关键字段(事务码 ME51N / 计划订单转换) CLEAR ls_pritem. ls_pritem-banfn = '0010000123'. " 采购申请号,由计划订单转换自动带出 ls_pritem-bsart = 'NB'. " 标准采购订单类型 ls_pritem-ptext = 'MTO委外-W成品'. " 短文本,写清成品物料号 ls_pritem-matnr = 'W-FG-001'. " 成品物料号 ls_pritem-werks = '1000'. " 工厂 ls_pritem-menge = '100'. " 数量,与销售订单一致 ls_pritem-lpein = 'ST'. " 单位 ls_pritem-knttp = 'L'. " 科目分配类别:L=分包(委外) ls_pritem-aufnr = 'SO-4711'. " 科目分配:E 对应的销售订单号 ls_pritem-sobkz = 'E'. " 特殊库存标识:E=销售订单库存 " 组件行:保留需要外发的原料 ls_comp-matnr = 'T-RM-001'. " 原料 T ls_comp-menge = '200'. " 按 BOM 用量 ls_comp-rgekz = 'X'. " 反冲标识按需 APPEND ls_comp TO lt_comp.

这段配置里,knttp = 'L'和sobkz = 'E'是必须成对出现的两个字段。L告诉系统这是委外,E告诉系统成品收货要进销售订单库存。如果只填L不填E,收货时成品会进普通库存,销售订单就挂不上账,后面出货直接报"无库存"。组件行里的rgekz是反冲标识,按实际业务决定,不是必填项。

采购订单层面还要确认组件的"保留"标记。在采购订单的组件概览里,需要外发的原料行要勾上保留,否则收货时系统不会自动冲销供应商库存,543 O 就消耗不到料。这个勾选在计划订单转采购申请时通常能带过来,但转采购订单后建议再核一遍,血泪经验是转换过程中偶尔会丢标记。

3.3 库存转移的两种路径与批次控制

库存转移是两套场景分道扬镳的地方。场景一用 MB1B、移动类型 541,把 T 的非限制库存直接转成供应商库存,这一步不涉及销售订单库存,因为 T 是共用材料。场景二用 311 E,把 W 的销售订单库存转到供应商库存,这里的E是特殊库存标识,表示来源是销单库存。

批次控制是场景二的硬骨头。311 E 转移时,收货批次必须填外协供应商的编码,而不是企业自己的批次号。原因在于:供应商库存是按供应商维度管理的,批次编码是供应商侧识别物料的唯一凭据,填错会导致收货时 101 E 找不到对应的供应商库存,报"批次不匹配"。我一般会在方案里把这条写成红色警示:W 材料的批次字段,一定要写外协供应商的编码。

" 311 E 转移时的批次赋值(事务码 MB1B) ls_mseg-matnr = 'W-SFG-001'. " 自供材料 W ls_mseg-werks = '1000'. ls_mseg-lgort = '1000'. " 发出库存地点 ls_mseg-charg = 'VENDOR-8801'. " 批次=外协供应商编码,不可用内部批次 ls_mseg-sobkz = 'E'. " 特殊库存:销售订单库存 ls_mseg-umlgo = '2000'. " 供应商库存对应的库存地点 ls_mseg-bwart = '311'. " 移动类型 311 ls_mseg-umwrk = '1000'.

charg字段填供应商编码,这是整个场景二最容易翻车的点。内部批次号在这里没有意义,因为供应商库存的管理维度是"供应商 + 批次",系统靠这个编码匹配收货时的冲销对象。

4. 模块实现:销售、MRP、采购、库存的落地细节

方案设计讲完,落到具体模块的实现。这一章按事务码和操作顺序展开,每个模块给出可复现的操作要点和参数含义,方便直接对照系统做。

4.1 销售订单与 MRP 的需求传递

VA01 建销售订单时,物料 W 或 D 的物料主数据里要提前维护好"按单生产"相关的设置:物料类型、MRP 类型、特殊采购类。MRP 类型决定跑 MRP 时是生成计划订单还是采购申请,委外场景通常用PD或按单的PD变体。销售订单行项目确认后,跑 MD01 或 MD02 触发 MRP,系统根据 BOM 展开产生下层需求。

场景一里,W 的计划订单直接对应成品;场景二里,D 跑 MRP 后先产生 W 的相关需求,W 的计划订单要转生产订单并缴库,W 才成为 D 的销单库存。这一步的顺序不能颠倒——必须先让 W 入库挂到 D 的销售订单上,才能对 D 做委外采购申请并保留 W 作为组件。如果先转 D 的采购申请,组件里找不到 W 的可用库存,保留就会失败。

MD04 是这一段的核心检查工具。跑完 MRP 后,在 MD04 里应该能看到:成品行有计划订单,原料行有相关的需求行。如果原料行显示的是"缺料"而不是"相关需求",说明 BOM 展开或 MRP 类型配置有问题,得回头查物料主数据。

4.2 计划订单转采购申请的项目类别设置

计划订单转采购申请,可以在 MD04 里直接对计划订单做转换,也可以用 MD15 批量转。转换时系统会弹出采购申请创建界面,这里要盯住三个字段:项目类别L、科目分配类别E、以及组件清单。

项目类别L是委外加工的开关,选了它系统才会在采购申请里生成组件页签,允许挂外发物料。科目分配类别E把采购成本归集到销售订单,保证按单核算。组件清单里要确认需要外发的原料都在,且数量按 BOM 用量正确。场景一保留 T,场景二保留 W。

转换完成后,采购申请号会回写到计划订单上,MD04 里计划订单行变成采购申请行。这时候建议再跑一次 MMBE,确认原料的库存状态:场景一的 T 应该是非限制库存,场景二的 W 应该是销售订单库存。库存状态不对,后面的转移动作就会失败。

4.3 采购订单收货与 101 E / 543 O 的联动

采购申请转采购订单用 ME21N,或者直接在 MD04 里对采购申请做转换。采购订单里要核对组件行的保留标记和数量,确认无误后保存。收货用 MIGO,选择"采购订单收货",移动类型 101。

收货时系统会自动带出E特殊库存标识,这是场景一和场景二共有的行为——因为采购申请里已经设了科目分配E,收货进的就是销售订单库存。成品收 101 E 后,销售订单库存增加。原料侧,场景一走 543 O 消耗供应商库存,场景二因为 W 已经通过 311 E 转成供应商库存,收货时同样冲销供应商库存。

收货后立刻做两件事:一是 MMBE 看成品和原料的库存状态,成品应该在销售订单库存下增加,原料的供应商库存应该减少;二是回 MD04 确认采购订单行已收货关闭。如果原料供应商库存没减少,八成是组件保留标记丢了,或者 543 O 没触发,得去采购订单组件里补勾保留再重收。

4.4 发货与库存状态核对

成品收货进销单库存后,就可以对销售订单出货,用 VL01N 建交货单、VL02N 过账发货。发货前用 MMBE 或 CO09 确认销售订单库存可用量,避免"账上有、实际不可用"的情况。

整个流程做完,建议做一次全链路库存核对:销售订单库存的成品数量 = 收货数量 - 已发货数量;供应商库存的原料数量 = 转入数量 - 消耗数量,理论上应该归零或只剩合理余量。这个核对动作我一般写成方案里的验收清单,答辩时拿出来展示,比口头说"流程跑通了"有说服力得多。

5. 避坑与排查:委外加工最容易翻车的五个点

这套流程看着顺,实际做的时候坑不少。下面五条是我在项目里反复遇到的,每条按现象、原因、解决写,建议直接抄进方案的"风险与应对"章节。

5.1 收货报"批次不匹配"

现象:场景二对 D 做 101 收货时,系统报批次不匹配,收不进去。原因:311 E 转移 W 时批次填了内部批次号,而不是外协供应商编码,导致供应商库存的批次维度和收货时冲销的维度对不上。解决:回退 311 E 的物料凭证,用 MBST 冲销,重新做 311 E 并把批次改成外协供应商编码,再收货。预防办法是在方案里把批次字段写成强制校验项。

5.2 成品收货进了普通库存

现象:MIGO 收货后,MMBE 里成品进的是非限制库存,销售订单库存没增加。原因:采购申请或采购订单的科目分配类别没设成E,或者收货时手工改掉了特殊库存标识。解决:冲销收货,检查采购订单行项目的科目分配,补上E后重收。这个错误在场景一里尤其常见,因为操作者容易把 101 E 当成普通 101 做。

5.3 供应商库存挂账不消耗

现象:收货完成后,原料的供应商库存没减少,543 O 没触发。原因:采购订单组件行的保留标记丢失,系统不知道这批料要冲销供应商库存。解决:ME22N 修改采购订单,在组件概览里补勾保留,然后冲销收货重做。根因往往是计划订单转采购申请时组件标记没带过来,转换后要人工核一遍。

5.4 MD04 供需对不上

现象:跑完 MRP 后,MD04 上原料行显示缺料,而不是相关需求。原因:物料主数据的 MRP 类型或特殊采购类配置不对,BOM 没正确展开。解决:检查原料的物料主数据 MRP 视图,确认 MRP 类型和采购类型;检查 BOM 的有效期和组件状态。这类问题属于配置层,改完要重新跑 MRP 验证。

5.5 场景二顺序颠倒导致保留失败

现象:对 D 转采购申请时,组件里保留 W 失败,提示无可用库存。原因:W 的生产订单还没缴库,销单库存不存在,自然保留不到。解决:严格按"W 生产订单缴库 → 对 D 转采购申请 → 311 E 转移"的顺序执行。这个顺序在方案里要写成流程图的硬约束,不能靠操作者记忆。

6. 验收与答辩:用一张库存核对表证明流程闭环

方案做完,怎么证明它是对的?我的习惯是准备一张库存核对表,把每个关键节点的库存状态和数量列出来,答辩时逐行对照。这张表比任何流程图都直观,因为它证明的是"账实一致",而不是"我操作过"。

检查节点检查对象期望状态核对工具
MRP 运行后成品计划订单存在且数量匹配销售订单MD04
转采购申请后项目类别 / 科目分配L / EME53N
库存转移后原料库存非限制减少、供应商库存增加MMBE
收货后成品库存销售订单库存增加MMBE
收货后原料供应商库存减少或归零MMBE
发货后销售订单库存减少对应发货量CO09

答辩时还有一个技巧:主动讲清楚两套场景的差异点,而不是等评委问。评委最常问的是"为什么场景二要用 311 E 而不是 541",答案在于物料归属——W 是挂在 D 销售订单上的自供材料,必须先以销单库存形态存在,再用 311 E 转到供应商库存;541 是从非限制库存直接转,跳过了销单库存这一层,场景二用 541 会导致 W 的成本归集不到 D 的销售订单上。把这个逻辑讲透,比背流程步骤得分高。

另外,验收时一定要演示一次"错误回退":故意把批次填错,展示怎么用 MBST 冲销、怎么重做。评委看到你有回退方案,会认为你真的跑过流程,而不是纸上谈兵。我一般会在方案附录里放一张常见错误的冲销事务码对照表,答辩时随手能翻。

从那以后我每次做委外方案,都会在收货前强制走一遍 MMBE 核对,把成品和原料的库存状态截图存档,作为流程闭环的证据。这个习惯帮我挡掉过好几次"账上跑通、实际挂账"的尴尬。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询