SAP S/4HANA MM模块培训 26 - 库存预留:自动预留、MB21与261领料

SAP S/4HANA MM模块培训 26 - 库存预留:自动预留、MB21与261领料
本课介绍库存管理中的预留(Reservation),并在经典 SAP GUI 中创建生产订单
1004402,由系统为三个 BOM 组件自动生成预留6256。视频最后用MB23显示移动类型261、需求数量和已提取数量,但没有释放订单、没有参照预留发料,也没有演示议程中的手工预留、修改、清单评估和拣配。本文先按画面还原真实过程,再把缺失部分作为“SAP 官方教程补充”,并纠正视频把销售订单可用性确认等同于 MM 预留的概念偏差。
摘要
预留是对未来货物移动的提前计划。它至少回答四个问题:什么物料、需要多少、何时需要、用于什么业务目的。生产订单、维护订单、网络等业务对象可以自动生成预留;仓库或业务人员也可以用 MB21 建立手工预留。预留会把需求传给物料计划和仓库执行,但它不等于把一批实物库存锁住,真正能否发料仍取决于库存、日期、订单状态、允许货物移动标志、批次及权限等条件。
视频中的成品为 100004027 Coke Bottle - 1L,工厂 1710,订单类型 YBM1,计划数量 100。保存生产订单后,系统生成订单 1004402 和预留 6256。预留包含组件 6960、1093、1101,每项需求量均为 100,库位均为 171A,已提取数量均为 0。画面中的 Movement Allowed 没有勾选,订单状态也没有出现 REL。因此视频只能证明预留已生成并可显示,不能证明已经允许发料或已经完成 261 货物发出。
学习目标
学完本文,你应该能够:
- 理解预留的业务作用、主要字段和边界。
- 区分自动预留与手工预留,以及各自应从哪里维护。
- 按视频证据还原生产订单
1004402与预留6256的关系。 - 正确解释
261、需求数量、已提取数量和Movement Allowed。 - 使用
MB21、MB22、MB23、MB25、MBVR与MB26完成经典 GUI 主线。 - 参照预留执行货物发出,并用物料凭证和剩余需求验证结果。
- 区分 MM 预留、MRP 需求与 SD ATP 可用性确认。
先看清本课边界

| 范围 | 视频中可以确认 | 视频中没有演示 |
|---|---|---|
| 基本概念 | 预留用于提前计划物料、数量、用途和需求日期 | 没有说明预留不会物理锁定库存 |
| 需求示例 | 生产订单 1 需要 50,订单 2 需要 80,总需求比库存 100 多 30 | 没有在 SAP 中运行可用性检查或 MRP |
| 自动预留 | 创建并保存生产订单 1004402,自动生成预留 6256 | 没有释放订单、没有执行发料 |
| 手工预留 | 口头说明事务码 MB21 | 没有打开 MB21、输入数据或保存预留 |
| 显示预留 | MB23 显示 261 和三个组件 | 没有修改、删除、完成或关闭预留 |
| 货物移动 | 说明已提取数量会在发料后更新 | 没有 MIGO、没有 261 过账、没有物料凭证 |
| 评估、管理与拣配 | 只在开场议程中列出 | 没有演示 MB25、MBVR 或 MB26 |
本文只要补充视频没有做完的操作,章节标题都会明确写出“SAP 官方教程补充”。缺失的 SAP 软件界面仅保留补图标记,由用户后续提供真实截图;本文不生成仿制 SAP 界面。
视频时间线
| 时间 | 视频内容 | 阅读重点 |
|---|---|---|
00:00–00:00:55 | 课程议程 | 议程列出的七类主题并未全部讲完 |
00:00:56–00:02:13 | 预留定义、MRP 和未来货物移动 | 预留是需求记录,不是实物锁库 |
00:02:13–00:04:17 | 原材料 ABC123 与两个生产订单 | 总需求 130、现有库存 100,差额 30 |
00:04:17–00:05:48 | 成品 XYZ123 与两个客户订单 | 这一段更接近 SD ATP,不应写成 MB21 预留 |
00:05:48–00:07:01 | 自动与手工两种创建方式 | 自动来自业务对象;手工入口为 MB21 |
00:07:01–00:07:44 | 登录并选择成品 | 登录、密码、桌面等画面不作为文章配图 |
00:07:45–00:08:45 | 创建生产订单并检查组件 | 100004027、1710、YBM1、数量 100 |
00:08:45–00:09:30 | 保存并回查订单 | 订单 1004402,分配页签显示预留 6256 |
00:09:30–00:10:10 | MB23 显示预留 | 261、三个组件、已提取 0、Movement Allowed 空 |
00:10:10–00:10:14 | 推广结束页 | 没有继续手工预留、发料、清单或拣配 |
预留是什么:提前计划未来货物移动

预留不是一张采购订单,也不是一张已经过账的物料凭证。它是一条面向未来的需求记录,告诉仓库和计划系统:某个业务目的在某个日期需要某种物料和数量。
一条预留项目通常包含:
- 物料编号与描述;
- 工厂、库存地点,必要时还有批次;
- 需求数量、基本计量单位和需求日期;
- 移动类型,例如成本中心发料、订单发料或转移过账;
- 成本中心、订单、WBS 等账户分配对象;
- 已提取数量、允许货物移动、最终发料、完成或删除等状态;
- 创建来源,例如手工创建、生产订单、维护订单或项目网络。
预留的三项核心作用是:
- 计划:把未来物料需求纳入 MRP 或其他供需计算。
- 准备:让仓库提前知道需求日期、用途、数量和拣配对象。
- 执行参考:发料时参照预留复制物料、账户分配和需求数据,减少重复录入。
预留不等于锁住库存
标准预留通常不会把某一批实物库存隔离为“任何其他业务都不能使用”。它表达需求并参与计划/可用性判断,但实际可发数量仍可能被其他货物移动、批次状态、质量状态或业务优先级影响。若企业需要硬分配、分段库存或销售订单确认,应使用相应的库存分段、特殊库存、ATP 或仓储分配机制,而不能只依赖一张普通预留。
视频示例一:100 件库存为何仍会短缺 30 件

视频用原材料 ABC123 说明预留需求:
- 当前库存:
100 PC; - 生产订单 1 需求:
50 PC; - 生产订单 2 需求:
80 PC; - 总需求:
130 PC; - 净短缺:
30 PC。
这个例子的正确理解是:账面库存仍可能显示 100,但计划系统同时看见两笔需求,总需求已经超过现有库存。根据需求日期、检查范围和配置,可用性检查可能显示短缺,MRP 则可据此生成补货建议。
不能把它写成“预留 1 已经物理占走 50 件,所以其他任何业务都不能使用”。预留主要负责表达需求;是否进行承诺、是否阻止其他业务消耗以及如何排序,取决于更完整的可用性检查和库存分配设计。
视频示例二需要纠正:客户订单属于 SD ATP 主线

视频又以成品 XYZ123 举例:库存 100 PC,客户 1 订购 50 PC,客户 2 再要求 100 PC,于是第二张订单只能确认 50 PC。这个数量逻辑可以帮助理解“需求会占用可用量”,但它不是手工 MM 预留的标准业务主线。
| 对比项 | MM 预留 | SD 销售订单与 ATP |
|---|---|---|
| 主要目的 | 提前计划发料、转移过账等货物移动 | 对客户订单进行可用性检查与数量/日期确认 |
| 常见创建来源 | MB21、生产订单、维护订单、网络 | 销售订单行项目及其需求 |
| 主要执行对象 | 仓库发料与库存管理 | 销售、交货和客户承诺 |
| 数量结果 | 需求量、已提取量、未清量 | 确认数量、确认日期、交货相关数量 |
| 是否可直接等同 | 否 | 否 |
因此,文章保留视频的数量例子,但把它明确标记为 SD ATP/产品可用性检查的概念类比,不将客户订单写成 MB21 预留。
自动预留与手工预留

自动预留
自动预留由上游业务对象生成。例如生产订单包含 BOM 组件时,系统会为组件创建预留;维护订单或项目网络也可能产生相应需求。它的特点是:
- 预留项目与来源对象保持关联;
- 物料、数量、日期和账户分配通常来自来源对象;
- 需求变化应优先在来源对象中维护;
- 发料后已提取数量和未清数量随过账更新。
手工预留
手工预留适合没有上游订单、但业务已知未来要领料或转移的场景。经典 SAP GUI 中使用 MB21 创建,后续用 MB22 修改、MB23 显示。手工预留也必须有明确用途和移动类型,不能只写物料与数量而不说明发往哪里或由谁承担成本。
两者的管理边界
自动预留属于来源对象的一部分。直接改自动预留可能受限制,且可能被来源对象重新计算;最稳妥的做法是修改生产订单组件、维护订单组件或项目需求,让系统同步更新预留。手工预留则可以在 MB22 中按权限和状态进行维护。
视频实录:选择成品并创建生产订单
讲师先从物料清单中选择成品 100004027 Coke Bottle - 1L。

随后进入生产订单创建界面,使用:
- 物料:
100004027; - 生产工厂:
1710 Plant 1 US; - 订单类型:
YBM1 MTS Production Order; - 计划生产数量:
100。

订单抬头随后显示总数量 100 EA,状态栏提示检查范围内的物料可用。这只是在当时检查范围下的可用性结果,不等于组件已经领料。

YBM1 是演示系统中的自定义订单类型,前缀 Y 表明它不是所有 SAP 系统都会存在的标准代码。实际企业必须使用自身配置的订单类型,不能照抄 YBM1。
视频实录:BOM 三个组件形成自动预留需求
进入 Components 组件总览后,画面显示三个组件:
| 项目 | 组件 | 描述 | 需求数量 | 单位 | 工厂 | 库位 |
|---|---|---|---|---|---|---|
0010 | 6960 | Coke Bulk Solution | 100 | L | 1710 | 171A |
0020 | 1093 | Empty Plastic Bottle - 1L | 100 | PC | 1710 | 171A |
0030 | 1101 | Plastic Bottle Lid - 1L | 100 | PC | 1710 | 171A |

这张画面证明生产 100 瓶成品需要 100 L 散装可乐溶液、100 个空瓶和 100 个瓶盖。它展示的是组件需求,并不证明三项物料当前库存充足,也不证明已经发料。
视频实录:成本计算报错,但订单 1004402 确实已保存
保存时系统先弹出 Error calculating costs / see log,询问是否仍要保存。讲师选择继续。

这个错误说明成本计算需要进一步检查,不能忽略;但它也不能被写成“订单保存失败”,因为下一画面给出了明确的保存成功状态,并且稍后可以在 CO03 和 MB23 回查。
讲师点击保存后,状态栏明确显示 Order number 1004402 saved。

这一步与前几课只停在草稿的情况不同:本视频确实产生了可回查的生产订单号。随后讲师进入订单显示界面,标题和字段再次显示:
- 生产订单:
1004402; - 成品:
100004027 Coke Bottle - 1L; - 工厂:
1710; - 订单类型:
YBM1; - 状态包含
CRTD,画面中没有REL。
订单已保存不等于订单已释放,也不等于组件已经完成发料。这三个状态必须分开判断。
视频实录:订单分配页签显示预留 6256
在生产订单显示的 Assignment 页签中,Reservation 字段为 6256。

由此可以建立证据链:
生产订单 1004402 → BOM 组件需求 → 自动预留 6256
预留不是讲师手工输入的编号,而是订单保存后由系统生成。后续若需要判断预留来源,应先回到生产订单,核对订单状态、组件和需求日期。
视频实录:MB23 显示 261 预留
讲师执行 MB23,输入预留 6256。显示结果中可以确认:
- 移动类型:
261 GI for order; - 订单:
1004402; - 三个组件:
6960、1093、1101; - 每项需求数量:
100; - 需求日期:
30.09.2021; - 已提取数量:三项均为
0; Movement Allowed:三项均未勾选;Completed与Deleted:画面中均未勾选。

261 表示发料到订单,在这里指生产订单组件领料。反向移动通常为 262。但视频没有执行 261,所以不能写成“已经发料 100”。三项 Quantity Withdrawn = 0 正好证明没有任何领料数量被记入这张预留。
如何阅读 MB23 的数量与状态

需求数量
需求数量来自组件需求或手工预留项目,是计划要移动的总量。视频中三项均为 100,但第一项单位为 L,其余两项为 PC,不能把三个 100 简单相加。
已提取数量
已提取数量记录已经参照预留完成的货物发出数量。部分发料后,它小于需求数量;全部发料后,它可能等于需求数量。视频中均为 0,所以预留仍没有实际提取记录。
视频画面 + SAP 官方教程补充:Movement Allowed
该标志用于控制是否允许参照预留执行货物移动。视频中三个标志都为空,订单状态也未显示 REL,因此只能得出“当前画面尚未证明具备按预留发料条件”。SAP 官方资料还指出,生产订单相关发料需要满足相应操作/订单的释放条件。
不能武断写成“Movement Allowed 为空的唯一原因就是订单未释放”。实际状态还可能受订单、组件、日期、配置和其他控制影响。正确做法是回查订单状态、组件状态和预留明细,再决定是否允许发料。
SAP 官方教程补充:Completed、Deleted 与最终发料
Completed表示预留项目已完成,不再保留为正常未清需求。Deleted表示项目被标记删除,不能再按普通未清项目处理。- 最终发料(Final Issue)表示不再预计后续领料,通常用于关闭剩余未清需求;它不等于删除历史凭证。
这些标志必须结合来源对象处理。对于生产订单自动预留,不应只在库存事务中强行改变状态而忽略订单组件。
视频实录结论:做到哪里,停在哪里

视频真实完成了以下链路:
- 选择成品
100004027。 - 用工厂
1710、订单类型YBM1和数量100创建生产订单。 - 查看三个 BOM 组件。
- 保存并得到生产订单
1004402。 - 在订单 Assignment 页签确认预留
6256。 - 用
MB23查看261预留及三项组件。
视频没有完成:
- 释放生产订单;
- 勾选或验证
Movement Allowed; - 手工创建预留;
- 参照预留执行
261; - 生成物料凭证;
- 更新已提取数量;
- 运行预留清单、管理或拣配。
SAP 官方教程补充:用 MB21 创建手工预留

经典 SAP GUI 的手工预留主线如下:
- 执行
MB21。 - 输入基准日期、移动类型和工厂。移动类型决定账户分配字段和后续业务方向。
- 在项目中输入物料、需求数量、需求日期、库存地点,必要时输入批次。
- 按移动类型填写成本中心、订单或其他账户分配对象。
- 检查项目、日期、单位、库存地点和账户分配。
- 保存并记录系统返回的预留编号。
常见手工场景包括成本中心未来领料、没有上游订单的计划性领料,以及允许使用预留的转移过账。企业应先确认移动类型和审批规则,不要为了“占库存”而随意建立无业务目的的预留。
<!-- SAP截图:待用户补充当前 S/4HANA 的 MB21 创建手工预留与保存成功界面 -->
修改与显示
MB22:修改允许维护的手工预留数据。MB23:显示单张预留及项目状态。
对于来源于生产订单等业务对象的自动预留,应优先修改来源对象,而不是把 MB22 当成绕过上游控制的入口。
当前 S/4HANA 应用入口
SAP 当前课程还列出了 Manage Manual Reservations 与 Manage Reservation Items 等应用。前者用于创建、选择、显示和更改手工预留;后者更偏向项目级处理,可完成项目或标记删除。具体应用名、业务角色和可用字段随 S/4HANA 版本与授权而变化,实施时应以本系统 Fiori Apps Library、业务目录和角色配置为准。
SAP 官方教程补充:参照预留执行货物发出

以经典 MIGO 为例,标准思路是:
- 选择
Goods Issue,参考对象选择Reservation。 - 输入预留编号,让系统复制物料、移动类型、账户分配和开放数量。
- 核对本次提取数量、工厂、库存地点、批次和项目选择状态。
- 检查库存是否充足,处理所有错误和警告。
- 执行过账,记录系统返回的物料凭证号。
- 回到
MB23或预留清单,确认已提取数量和未清数量更新。 - 回查生产订单组件、物料凭证和库存,证明业务真正完成。
对于本视频的生产订单自动预留,过账前还要先确认订单/相关操作已满足释放条件,并且 Movement Allowed 允许货物移动。缺少这些条件时,不应通过修改状态或改用无参照发料来掩盖问题。
<!-- SAP截图:待用户补充当前 S/4HANA 参照预留执行 261、成功物料凭证和 MB23 更新结果 -->
部分发料、全部发料与最终发料
假设需求为 100 PC:
- 第一次发料
40 PC:已提取数量更新为40,通常仍有60未清。 - 第二次发料
60 PC:累计已提取达到100,项目可完成。 - 若业务决定剩余数量不再发料,可按来源对象和企业规则设置最终发料,关闭剩余需求。
- 若发料错误,应使用对应反向移动或取消物料凭证,而不是直接改预留数量来掩盖已经发生的库存凭证。
SAP 官方教程补充:预留清单、评估与拣配

视频议程提到了评估、管理和拣配,但没有演示。经典 GUI 可按以下主线理解:
| 事务码 | 用途 | 关键检查 |
|---|---|---|
MB23 | 显示单张预留 | 来源对象、移动类型、需求/已提取数量、状态 |
MB25 | 预留清单 | 按工厂、日期、物料、账户分配等筛选未清需求 |
MBVR | 管理手工预留 | 批量设置 Movement Allowed,并按日期规则管理删除;不能直接管理订单从属预留 |
MB26 | 预留拣配清单 | 为仓库准备待提取物料并支持后续发料处理 |
本课字幕没有出现可靠的 MB20 操作,SAP 当前官方课程中用于预留列表的经典入口是 MB25。因此正文不把 MB20 写成已确认的预留清单事务码。
MBVR 的对象范围要特别注意:它针对手工预留进行批量管理。自动从属预留仍然要回生产订单、维护订单或网络等来源对象处理。基准日期既可用于选择项目,也可按配置决定何时允许移动或何时进入删除管理范围。
MB26 可一次处理多个预留或生产订单的货物移动。过账前可以调整录入数量、最终发料、库存地点,并调用库存确定或批次确定。清单过滤只影响显示时必须特别谨慎:若某项目不应被处理,应从待过账清单中明确移除,而不能仅假设“隐藏了就不会过账”。
使用清单时建议至少核对:
- 需求日期是否已到或临近;
- 项目是否允许货物移动;
- 需求量、已提取量和未清量;
- 工厂、库存地点、批次与可用库存;
- 来源订单是否释放、关闭或删除;
- 是否存在长期未清、重复或已经失去业务意义的预留。
SAP 官方教程补充:MRP、可用性检查与预留的关系
预留向计划系统表达需求,但 MRP、生产订单可用性检查和 SD ATP 并不是同一个功能。
| 功能 | 回答的问题 | 典型结果 |
|---|---|---|
| 预留 | 将来什么时间、为哪个用途需要多少物料? | 需求项目、已提取量、未清量 |
| MRP | 供需平衡后何时缺料,需要如何补货? | 计划订单、采购申请等补货建议 |
| 生产订单可用性检查 | 订单组件在检查范围和日期上是否可用? | 可用/短缺信息、缺料清单 |
| SD ATP | 可以向客户确认多少数量、在哪个日期交付? | 确认数量与确认日期 |
视频中 ABC123 的两个生产订单例子属于组件需求与计划/可用性检查主线;XYZ123 的两个客户订单例子属于 SD ATP 主线。把四类功能分开,才能避免用 MB21 代替销售确认,或误以为运行 MRP 就已经锁住库存。
常见错误与正确处理
| 常见错误 | 为什么不对 | 正确处理 |
|---|---|---|
| 看到订单已保存就写成已发料 | 保存只产生订单与需求 | 必须有 261 过账、物料凭证和已提取数量 |
| 把预留理解为实物锁库 | 普通预留主要表达需求 | 结合 ATP、库存分段和业务优先级设计 |
| 把客户订单可用性写成 MM 预留 | 两者属于不同业务对象 | 客户承诺使用 SD ATP 主线 |
| 直接修改自动预留 | 可能破坏与来源订单的一致性 | 从生产订单/维护订单/网络修改组件需求 |
忽略 Movement Allowed | 参照预留发料可能被拒绝 | 回查订单/操作释放、项目状态和配置 |
| 把需求数量当成已提取数量 | 计划需求不等于实际库存移动 | 以物料凭证和 Withdrawn Qty 为准 |
单位不同仍把三个 100 相加 | L 与 PC 不可直接相加 | 按物料和单位分别判断 |
| 用改预留数量代替冲销错误发料 | 无法撤回已过账库存与会计影响 | 取消/反向物料凭证,再修正需求 |
只看 MB23 不看来源订单 | 自动预留状态受来源对象控制 | 同时核对生产订单状态和组件 |
| 把议程当成已完成实操 | 视频在 MB23 后结束 | 未演示内容明确标为官方补充 |
SAP 官方教程补充:完整业务核对清单
创建前
- 是否已有生产订单、维护订单或网络自动生成需求?
- 只有在没有合适来源对象时,才考虑手工
MB21。 - 业务需要的是发料、转移过账还是其他货物移动?
- 移动类型、账户分配对象、工厂和需求日期是否明确?
创建后
- 预留编号是否成功生成?
- 物料、数量、单位、工厂、库存地点和批次是否正确?
- 自动预留是否能追溯到正确的来源订单?
- 需求日期是否进入正确的计划时段?
发料前
- 来源订单及相关操作是否处于允许发料的状态?
Movement Allowed是否满足要求?- 库存、批次、质量状态和特殊库存是否可用?
- 本次是部分发料、全部发料,还是最终发料?
- 是否应该参照预留,而不是重新手工录入一笔无参照发料?
发料后
- 系统是否返回物料凭证号?
- 凭证中的
261、物料、数量、单位、工厂、库位和订单是否正确? MB23的已提取数量和未清量是否按预期更新?- 生产订单组件、实际成本和库存是否同步更新?
- 若发生错误,是否使用正确反向移动/取消凭证处理?
本课最重要的结论
预留的完整判断链是:
业务需求 → 自动或手工创建 → 来源对象与移动类型 → MRP/仓库准备 → 状态与可用性检查 → 参照预留过账 → 物料凭证 → 已提取量与未清量复核
视频清楚证明生产订单 1004402 已保存,并自动生成预留 6256;MB23 中三项组件的需求量均为 100,已提取数量均为 0,Movement Allowed 均未勾选。它没有证明订单已释放或 261 已完成。手工 MB21、参照预留发料、MB25 清单、MBVR 管理和 MB26 拣配全部属于本文明确标注的 SAP 官方教程补充。
截图补充说明
本文保留了当前 SAP S/4HANA 手工预留、订单释放、参照预留 261、物料凭证和清单评估的补图位置,用户后续可以使用自己的真实系统截图补齐。软件截图必须保持清晰、完整,不能用生成式图片模拟 SAP 界面。
视频中的英文 PPT、记事本、Windows 桌面、登录信息和推广页均未直接使用;所有被文章采用的非 SAP 视觉内容都重新制作成中文 1920×1080 图片。
参考资料
- 原始培训视频:Inventory Management - Reservations
- SAP Learning:Outlining Reservations in SAP S/4HANA
- SAP Learning:Using Automatically Created Reservations
- SAP Learning:Creating Manual Reservations
- SAP Learning:Checking Availability
- SAP Learning:Posting a Goods Issue with Reference
- SAP Learning:Evaluating Reservations
- SAP Learning:Posting Goods Issues for Production Orders
- SAP Learning:Running an ATP Check in SAP S/4HANA Sales
- SAP Help:Reservations(MB21/MB22/MB23/MB25)
- SAP Help:Goods Issue With Reference to a Reservation
- SAP Help:Goods Issues - General
- SAP Help:Release Production Orders
- SAP Help:Product Availability Check


