简介:这份SAP按单生产委外加工总结,面向SAP生产计划与物料管理模块的顾问、实施人员及MTO模式学习者,以两个典型场景演示委外加工完整流程。场景一涵盖两层BOM下自产成品委外、共用材料非限制库存转供应商库等操作,场景二则针对三层BOM及自供材料转移,细化311 E发货、批次绑定外协供应商编码等处理。资源以1个doc文档(442KB)打包呈现,内容包含销售订单创建、MRP运行、采购申请与项目类别L/科目分配E的设置、采购订单收货(101 E收成品、543 O耗原料)及库存状态追踪等核心步骤,并总结移动类型与库存流转的关键控制点。目前已有2390人学习下载,适合希望掌握SAP MTO外包配置逻辑、规避常见库存与收货问题的读者系统参考。
1. 按单生产委外加工:解决一张订单、一组组件、一笔加工费的问题
一张客户订单要求在两周内交付一台设备,设备里有一个关键半成品,车间产能排满,只能发外加工。供应商拿到的不是图纸而是你们仓库里的毛坯,加工完再送回,你付的是加工费而不是整件采购价。这个场景在 SAP 里就是按单生产委外加工。它同时牵动销售订单需求、分包采购订单、组件库存和加工费发票四条线,任何一条对不上,月底成本就乱。这篇笔记面向正在实施或维护这条链路的计划、采购、财务和 IT 同事,按落地顺序把策略选择、主数据、日常操作和典型坑一次讲清。
2. 先立住主流程:策略、特殊采购类型与成本归集怎么选
2.1 策略组20还是25:决定MRP怎么把销售订单变成委外需求
按单生产在 SAP 里最典型的落地方式是物料主数据 MRP1 视图维护策略组(Strategy Group)20,也就是严格的 Make-to-Order。在这个策略下,销售订单需求不会被工厂现有库存冲掉,系统为每张销售订单单独跑 MRP,产生独立的计划订单和生产订单。半成品如果走委外,MRP 展开生产订单 BOM 时,会把这件半成品直接转成采购申请,而不是再生成一个自制计划订单。
策略组 20 的优点是需求与成本都沿销售订单追溯,缺点是所有需求都按单拆开,缺少合并缓冲。策略组 25(按单装配)则是让下层半成品可以先按计划或预测备货,最后装配环节按销售订单触发。如果你的委外半成品是标准化通用件、多张订单共用,用 20 会产生大量重复采购申请,体验很差;如果半成品差异化大、客户定制程度高,用 20 才能保证每张订单的物料和成本不混。
我在项目里判断标准很简单:问一句「这张销售订单取消之后,已经发生的委外加工费愿不愿意算进库存成本」。愿意,用 25 或普通库存策略;不愿意,就老老实实按订单单独建 PO、单独归集成本,也就是策略 20 路线。表 2-1 是两者对比。
表 2-1 策略组 20 与 25 的核心差异
| 对比项 | 策略组 20 | 策略组 25 |
|---|---|---|
| 需求驱动 | 每张销售订单独立驱动 | 最终装配按单,半成品按计划备货 |
| 库存类型 | 销售订单库存(特殊库存 E) | 普通库存为主,按单消耗 |
| 委外 PO 形态 | 每订单一张/多张,成本可单对单 | 可按批量合并,成本先入半成品库存 |
| 订单取消影响 | 委外需求同步变化,已发料需退回 | 半成品可转给其它订单,损失小 |
| 适合场景 | 差异化强、单价高、定制件 | 通用半成品、共用件 |
选错策略是后续所有碎单和成本归集问题的源头,配置前一定和业务确认清楚:这张委外半成品是不是只服务单一销售订单。不要为了便宜行事在两张销售订单之间公用同一份委外库存,后面 KOB1 查成本时会非常痛苦。
2.2 特殊采购类型30:让半成品直接走分包采购
委外加工和普通采购在 SAP 里最大的区别在于「组件」概念。普通采购买来的是成品,入库后没有更多关联;委外采购则是你发一批组件给供应商,供应商加工完成后送回,收货时系统同时完成「成品入库」和「组件消耗」两个动作。实现这个机制的核心字段是物料主数据 MRP2 视图里的特殊采购类型(Special Procurement Type),委外加工填入 30。
物料维护了特殊采购类型 30 后,MRP 不再把该物料视为自制件,也不会走标准的外购流程,而是直接生成分包采购申请。采购员用 ME21N 把采购申请转成采购订单时,订单行项目类别自动变成 L(Subcontracting),系统还会根据该物料的 BOM 自动把需要发给供应商的组件带到采购订单的「组件」页签里。这一步是委外加工和普通采购在外观上最直观的差异。
组件发运的移动类型是 541,收货时系统自动用 543 做组件消耗。发运后组件进入供应商库存(特殊库存 O),不在你自己工厂的可用库存里显示;收货时供应商库存里的组件被扣减,同时成品按采购订单入库,加工费按订单金额暂估入账。我见过不少新手把组件消耗理解成「发货时就消耗」,这是错的:组件真正离开你的账面是在收货环节,不是发运环节。这一点搞清楚,后续对账才不会懵。
2.3 加工费归集到销售订单还是生产订单
委外加工费怎么进成本,取决于采购订单行项目上的科目分配类别。按单生产场景下,最常用的两个选项是 E(销售订单)和 P(生产订单)。
科目分配类别 E 指委外 PO 的加工费与组件消耗成本直接过账到指定的销售订单行项目。收货和发票校验后,成本直接挂在销售订单上,省掉中间生产订单环节。适合「委外加工完成即为客户可用成品、不再进自己产线」的场景,整个链路最短,财务对账也最直观。常见问题是采购员漏填销售订单号,导致成本挂到空库存科目,月底手工找数。
如果委外件回来之后还要在自己工厂继续加工,比如组装、测试、包装,那么加工费先进生产订单更合理。做法是生产订单挂到销售订单上,委外 PO 的科目分配填 P 并填对应生产订单号,之后生产订单再把这部分成本结转到销售订单。代价是多一层生产订单的状态管理,好处是所有自制和外协成本汇集在一个订单里,单位成本计算完整。
这两个选择没有绝对的对错,但要注意:如果同一张采购订单行项目同时被两个销售订单共用,科目分配 E 没法把金额自动拆分,系统会要求手工分配或拆成多个 PO 行。采购员为了省事把不同订单的委外需求合并到一张 PO,是成本乱账的高发原因。我的建议是:严格按销售订单行项目建 PO,不要图省事做合并。
2.4 用一张表串起MRP、物料流和资金流
把上面三条线拼起来,一个典型的按单生产委外场景是这样的:成品策略组 20,客户订单进入 MRP;BOM 里的定制半成品设了特殊采购类型 30,MRP 输出分包采购申请;采购转成分包 PO,PO 挂销售订单号;仓库发组件给供应商,供应商加工送回,仓库收货;财务按 PO 价格做发票校验。表 2-2 是这条链路上每个动作对应的 SAP 凭证和数据对象。
表 2-2 按单生产委外加工主链路数据流
| 业务动作 | SAP 操作 | 产生的关键数据 |
|---|---|---|
| 客户下单 | VA01 创建销售订单 | 销售订单号、需求数量、计划行 |
| 需求分解 | MD01/MD02 跑 MRP | 分包采购申请(PR) |
| 委外下单 | ME21N 创建分包 PO | 采购订单、组件页签、科目分配 E |
| 组件发给供应商 | MB1B/MIGO 移动类型 541 | 供应商库存(特殊库存 O) |
| 供应商送回成品 | MIGO 移动类型 101 | 成品入库、组件消耗 543、加工费暂估 |
| 加工费结算 | MIRO 发票校验 | 应付账款、采购价格差异 |
记住这张表,后续所有配置和排错都可以从这张表里找定位。链路不长,但每一步都有自己独立的容差、状态和凭证流,任何一个环节的业务习惯不好,都会让月底对账像拼图一样困难。
3. 把这些配置一次配对:主数据、BOM与采购参数
3.1 物料主数据六个关键字段
委外物料的主数据分散在多个视图,出问题时常常是因为某几个字段没配对。我一般会按顺序检查六个字段,少一个后面都会返工。
第一,策略组。MRP1 视图,按单生产填 20,按单装配填 25。第二,特殊采购类型。MRP2 视图,委外填 30。第三,采购类型。MRP2 视图,委外通常填 F(外购)。第四,批量程序。MRP1 视图,按单生产常用 EX 或直接按订单批量,避免系统自动做需求合并或切分。第五,计划交货时间。MRP3 视图,用于 MRP 计算采购提前期,委外要包含供应商加工时间。第六,可用性检查。MRP3 视图,按单生产建议检查「独立需求+销售订单」,避免组件被别的订单挪用。
这六个字段不是随便填的。策略组和特殊采购类型决定 MRP 生成什么;批量程序决定 PR 数量是不是按整张订单跑;计划交货时间决定采购申请下达时机;可用性检查决定发料时会不会被系统卡住。很多项目在测试环境能跑通,上线后发不出料,查到最后都是计划交货时间太短或可用性检查范围没配对。
3.2 分包BOM和工序外协的区别
整件委外的 BOM 维护方法和普通 BOM 一样,用 CS01 创建,组件维护的是要发给供应商的毛坯或原料。关键区别在于用途:普通 BOM 用于生产订单领料,委外 BOM 用于分包采购订单的组件复制。物料维护了特殊采购类型 30 后,系统创建分包 PO 时会自动读取这个 BOM,把组件列表和数量带到 PO 的组件页签。
如果委外的是某一个工序而不是整个物料,比如热处理、电镀,那不走特殊采购类型 30,而是在生产订单的工艺路线工序里维护「外部加工」标志,再为这道工序建采购信息记录。采购员按生产订单创建工序外协采购订单,PO 上维护的是工序号和加工费,收货后成本进生产订单的对应工序。两种模式原理完全不同,实施时特别容易混。
我见过一个项目把工序外协做成了整件委外,结果发出去的组件是整套毛坯,供应商却只做了一道热处理工序,后面所有后续工序的计划都乱了。所以实施前先确认:供应商拿到物料后,你希望他交回的是成品,还是半成品继续走自己产线?成品用特殊采购类型 30,继续加工用工序外协。
3.3 采购信息记录、货源清单与容差
委外加工的信息记录需要维护两个价格概念:一个是加工费,也就是供应商为你完成的加工服务价格,会体现在 PO 净价上;另一个是组件价格,用于收货时组件消耗的估价。虽然组件消耗的金额通常按物料主数据成本价计算,但信息记录里的组件页签价格仍建议维护,避免收货时组件金额对不上。
货源清单在委外场景里也建议建立,指定每个供应商可以承接哪些物料的委外。货源清单缺失时系统允许任何供应商录入,但容易出现同一物料在不同供应商之间价格混乱。容差设置是委外采购最容易忽略的参数。在采购订单行项目「交货」页签里维护「交货不足容差」和「过量交货容差」。委外加工供应商经常少交几个、多交几个,如果容差默认 0,收货时系统会直接报错或要求输入原因代码,流程卡在仓库。
我自己的建议是:交货不足容差按业务与供应商约定,常见 10% 到 20%;过量交货如果不想被塞货,设置为 0 或很小,避免供应商把所有损耗都算到你头上。每个供应商的容差可以在信息记录里维护默认值,也可以在具体 PO 里改,但默认值最好先谈好再配置,不要把容差当成万能钥匙,它只是收货环节的容忍度,不解决成本差异。
3.4 上线前检查清单
配置完成后,用一个小批量场景跑一遍全流程,比上线后翻车成本低得多。我会按表 3-1 逐项检查,打过勾再给用户做培训和权限。
表 3-1 按单委外上线前检查清单
| 检查项 | 检查方法 | 通过标准 |
|---|---|---|
| 策略组 20 是否生效 | MD04 查看销售订单需求 | 销售订单库存标记为 E 库存 |
| 特殊采购类型 30 | MD04 跑 MRP | 出现分包采购申请,而非计划订单 |
| 分包 PO 组件 | ME21N 转 PO | 组件页签自动带出 BOM 组件 |
| 科目分配 E | ME21N 行项目 | 销售订单号正确显示 |
| 组件发运 541 | MB1B 过账 | 库存进入供应商库存 O |
| 收货 101 | MIGO 过账 | 成品入库、组件 543 自动消耗 |
| 发票校验 | MIRO | 加工费凭证过账到销售订单 |
这份清单几乎覆盖了所有常见主数据的坑。做完一遍,你就能判断流程是不是真的通,而不是只在配置层面看着合理。
4. 从VA01到MIRO:把一张按单委外订单完整跑通
4.1 销售订单与MRP:看MD04里的分包采购申请
业务创建销售订单用 VA01,输入客户、物料、数量、交货日期。销售订单保存后,计划员用 MD04 查看该物料的库存/需求清单,能直观看到销售订单需求是否进入 MRP。然后在 MD04 里对成品执行单项 MRP,或者直接跑 MD01 总 MRP。
MRP 跑完后,成品如果自制,会看到计划订单;展开 BOM 后,委外半成品会显示一条采购申请,采购申请的类型是分包申请,数量和交期来自销售订单。这时打开采购申请的显示界面,可以看到特殊采购类型的标记,以及系统读取的 BOM 组件清单。这里的组件清单只是预览,真正被锁定到业务凭证是在后续创建 PO 时。
我习惯让计划员在 MD04 里检查三个值:数量是否等于销售订单需求、交期是否覆盖客户交期、组件清单是否完整。如果组件缺失,多半是 BOM 没有维护或物料特殊采购类型不是 30。走到这一步发现问题,成本最低。
4.2 创建分包采购订单:项目类别L、组件页签与科目分配E
在 ME21N 里,从采购申请创建 PO 是最不容易出错的方式。选中分包申请行,点「采用」,系统把物料、数量、交货日期、工厂、供应商带入。关键要检查四个地方。
第一,行项目类别是否为 L。如果物料特殊采购类型正确,系统会自动带 L;一旦被手工改成标准采购类别,组件页签就没有了。第二,组件页签内容。系统根据 BOM 自动带入组件和数量,检查组件数量和 PO 数量是否按比例匹配。第三,科目分配类别。按订单归集成本时,在行项目「科目分配」页签选择 E,输入销售订单号和行项目号。第四,价格和交货日期。价格来自采购信息记录,没有信息记录则需要采购员手工输入,并检查容差是否带出。
保存后,PO 的组件会生成预留。这个预留属于典型的「按单预留」,不能被其它订单消耗。如果后续销售订单数量变更,预留数量不会自动同步,需要采购员手工调整组件数量或重新打开 PO 重新确定组件。这一步是日常操作里最容易被忽略的细节。
4.3 组件发运与供应商退货:541、542和543怎么用
组件发运给供应商的标准移动类型是 541。可以用 MB1B,也可以用 MIGO 选择「发货」过账。过账时需要输入 PO 号、物料、数量,系统会自动识别这是一笔委外发运,库存从工厂自有库存转移到供应商库存(特殊库存 O)。
组件发运受可用性检查约束。如果库存地点没有足够的可用库存,系统会报可用性不足,过账失败。常见做法是计划员先用 MMBE 或库存清单确认可用库存,再发运;如果仓库地点不对,需要先用 MB1B 做内部库存地点转移再发运。供应商收到组件后,可能会发现部分报废或需要退回。退货给供应商用移动类型 542,把组件从供应商库存退回自己仓库;供应商加工失败的成品需要退回,则通过 MIGO 做收货冲销(移动类型 102),系统会同时冲销组件消耗。
我提醒用户:不要把 541 和 542 当成日常调整工具随便用,每一次移动都会改变供应商库存 O 和组件成本。供应商库存对账时,最怕就是发运和退货记录不全,财务账面上挂着一堆说不清的特殊库存。
4.4 收货与发票校验:加工费成本如何进销售订单
供应商加工完成送回成品,仓库用 MIGO 做采购订单收货,移动类型 101。收货时系统自动过账三笔:成品入库金额、组件消耗金额、加工费暂估金额。组件消耗按组件库存成本或信息记录组件价计算,加工费按 PO 净价计算。收货完成后,库存进入销售订单库存(特殊库存 E),这就是按单生产下委外件被锁定给具体订单的原因。
发票校验用 MIRO,基于 PO 收货记录做。发票金额与 PO 不一致时,差额进入采购价格差异科目,并随发票过账到销售订单成本。如果发票数量与收货数量不一致,需要先确认是否还有未收货部分,或者做后续贷项凭证,不能直接硬过。
这里常见的财务问题:PO 挂销售订单 E,收货生成的物料凭证也挂销售订单,但发票校验时候如果漏填销售订单,系统不会自动重算,加工费就落到空库存科目。所以我的习惯是:发票校验前先看 PO 的科目分配,确认销售订单号还在;如果被误删,先改 PO 再校验,不要用事后手工凭证去补。
5. 按单生产委外加工避坑:六个真实翻车现场
5.1 碎单翻车:策略20让供应商一天收到十几张采购订单
现象:同一款委外半成品,十张销售订单分别跑 MRP,每张都生成独立采购申请,采购员也照单全收,一天之内给同一供应商发了几十张委外 PO。供应商抱怨对账繁琐,财务说加工费归集没问题,但采购批量失去了议价能力。
原因:策略组 20 本身按单独立驱动,系统不会自动把不同订单的委外需求合并成一张 PO。批量程序如果没有设置最小批量或舍入值,每张订单数量都会原样转成 PR。
解决:如果业务必须按单追溯成本,保留策略 20,同时在物料主数据 MRP4 视图中设置最小批量或舍入值,让 PR 数量按包装单位取整。超出订单需求的部分会留在销售订单库存里,订单交付后计划员要把余量转给其它订单或做库存调整。如果委外半成品是通用件,更稳妥的方案是把它改成普通库存策略生产,装配环节再按单分配,但代价是成本不再单对单。没有两全,只能在追溯性和批量经济性之间选一个。
5.2 组件发不出:可用性检查卡在库存地点
现象:仓库明明有毛坯库存,但 541 发运时报可用性不足,PO 始终没法发料。查库存却发现物料都躺在另一个库存地点,或者被其它订单的预留锁定。
原因:委外发运的可用性检查范围设在了工厂级或存储地点级,而发运时只能指定单一库存地点。如果组件库存分散,或可用性检查按存储地点执行,系统就不会把其它地点的库存算进来。
解决:在物料主数据 MRP3 视图把可用性检查范围调整为工厂级(或按检查规则包含全部存储地点),同时规范发运库存地点,让仓库统一从一个地点做委外发运。另一个常见诱因是销售订单的预留占用了可用库存,检查 MD04 里的预留数量归属,必要时先调整预留或多拆几张发运单,不要直接绕过可用性检查强行过账。
5.3 BOM变了,PO组件数量却不会自己变
现象:研发修改了委外 BOM,把组件从 1 件改成 2 件,但已经创建的委外 PO 组件数量仍是 1 件,供应商按旧数量领料,成品数量跟着出错。
原因:分包 PO 的组件页签是创建时从 BOM 复制的快照,之后 BOM 变更不会自动同步到已下达 PO。
解决:采购员在 ME22N 修改 PO 时,检查组件页签的系统提示,必要时删除旧组件行并重新确定组件。如果 PO 已经发料,修改组件数量后要同时核对供应商库存差异,多发或少发的组件要通过 541/542 调整。养成习惯:BOM 变更流程里加一个节点,要求计划员检查所有未收货完毕的分包 PO。
5.4 订单取消后,委外PO还在一路跑完
现象:销售订单取消后,采购员没做任何处理,委外 PO 照常到货、照常收货,财务月底发现这张订单已经取消但成本全挂在里面。
原因:策略 20 下需求来自销售订单,但销售订单取消并不会自动取消已经下达的采购订单。MRP 在下一次运行时不再产生新需求,已有 PO 依然按原计划执行。
解决:销售订单取消的事务代码处理完,计划员必须在 MD04 里检查相关的采购申请和 PO,把未下达的 PR 删除,把未发料的 PO 冻结。已经发给供应商的物料要联系退回,做 542 退货。想让系统自动冻结,可以给 PO 设置审批策略或发货截止日期,但本质上还是靠流程控制:订单变更通知要同步发给采购员,不能默认系统自己会收尾。
5.5 科目分配错一个字段,加工费挂到别人头上
现象:采购员复制上个月的 PO 创建新 PO,没注意科目分配里还带着上一张销售订单号,收货和发票校验全挂到旧订单上,旧订单成本虚高,新订单成本缺失。
原因:ME21N 复制采购订单时会把科目分配一起复制,销售订单号是手工字段,系统不会自动判断是否匹配当前需求。
解决:创建 PO 时养成检查「科目分配」页签的习惯,确认销售订单号和行项目号是本次订单。更保险的做法是直接从采购申请创建 PO,科目分配由 PR 带入;如果 PR 本身就是分包申请,销售订单号一般不会错。财务每月的 KOB1 成本核对也能发现异常金额,但等到月底发现再去追溯,凭证已经过账,返工成本高。
5.6 供应商库存对不上:别只盯着自己仓库
现象:供应商领走的组件数量减掉送回成品的组件数量,与系统里的供应商库存 O 不一致,月底和供应商对账时各执一词。
原因:组件是供应商代保管的特殊库存,系统里记录的是自己仓库发出的数量,但供应商实际消耗、报废、丢失的情况不会自动反映在系统里。生产过程的合理损耗通常也没有计入。
解决:每月用 MB58 或供应商库存报表导出委外库存明细,和供应商的月度领用/退回对账单逐料号核对。差异部分按约定处理:合理损耗由订单承担,异常丢失走赔偿流程。处理差异时通过 541/542 调整系统库存,同时在财务凭证备注里写明原因,方便审计。不要以为系统里的 O 库存等于供应商实际持货量,它只是账上余额。
6. 月末怎么核对委外加工成本:三个低成本技巧
6.1 供应商O库存的月度核对
委外加工最容易被财务忽略的是供应商库存 O。虽然它不在自有库存报表里,但资产负债表中仍有对应金额,月末差异直接造成盘点数据失真。我一般用 MB58 导出每个供应商按物料的委外库存数量,再让采购联系供应商出具委外库存确认单,把系统数和确认单数量放同一张表比较。有差异先看上次核对后的发运、退货、收货记录,找出哪一笔移动没对上,再决定做 541/542 调整还是让供应商补料。这个动作每月一次,成本低但能避免年底一次性大调整。
6.2 加工费与PO价格的差异核对
委外加工成本有两个部分:组件消耗和加工费。组件消耗金额在收货时按物料成本价过账,如果物料成本价变动频繁,月底物料账会重新估值;加工费则是按 PO 价格暂估,发票来了再调整。差异会进入采购价格差异科目,如果差异持续存在,说明采购信息记录价格没有及时更新。我的核对方法是:用 KOB1 按销售订单查实际成本,再用 ME2N 拉同一销售订单的委外 PO 金额,两张表按订单号匹配,差额就是暂估与实际的差异。差异太大时逐 PO 看收货数量乘单价是否等于发票金额,找出是哪一笔价格谈错了。
6.3 把核对表做成例行变式
月度核对最容易输在「这个月忘了跑」。我习惯把 ME2N、MB58、KOB1 的筛选条件保存为个人变式,固定工厂、固定物料类型、固定供应商,每月初按变式直接出数,再套用同一个 Excel 对账模板。模板里留三列:系统数量、供应商确认数、差异,差异列用条件格式标红。整个过程不需要写一行 ABAP,纯粹靠标准事务代码和变式就能把核对时间压缩到半天以内。真正养成这个习惯后,委外加工的账就不会再让你月底加班翻凭证了。这对从 ECC 升到 S/4 的团队同样适用,因为移动类型、特殊采购类型和科目分配逻辑在新老版本里是一致的。我也踩过几次月底差异的坑,最深的一次就是供应商库存差异拖了两周才定位到漏做了一次 542 退货。现在所有委外相关的移动凭证都要求仓库在备注里写 PO 号和原因,核对时省了太多时间,希望帮到你。
本文还有配套的精品资源,点击获取