简介:SAP 生产预留操作指引文档面向 SAP 实施顾问、生产计划与物料管理人员,以及需要掌握预留配置、创建和查询的初中级用户,帮助梳理生产预留从参数设置、可用性检查到业务操作的完整流程,适合 SAP PP/MM 相关岗位作为入门与查漏补缺材料。压缩包内共 1 个 docx 文件,约 836KB,以分节文档形式组织,目录从预留背景、OMC2 预留编码、缺省值与工厂级参数配置、可用性检查,延伸到 MB21 手工创建、MB23 按编号查询、MB25 按物料查询、MBBR 批量创建、MBVR 批量处理、OPL8 生产订单控制与工单自动预留等事务码操作,并补充预留底表和预留数不超过库存数等要点,便于按主题查阅和对照系统练习。目前已有 697 人学习,内容结构清晰,可作为日常操作手册、内部培训笔记和问题排查参考。
1. 环境先摆清:SAP 生产预留不是会点 MB21 就算装好
第一次接手 sap 生产预留配置,最容易把它当成前台练习:MB21 能打开、字段能填,就以为环境装好了。换个客户端才发现,菜单层级变了、号码段没配、MVT 默认值没勾,前台保存直接报错。这类配置不是装一个客户端就完事,真正决定能不能跑的是 OMC2 号码段、预留缺省值、工厂参数、物料 MRP3 可用性检查和订单类型 OPL8 这几层底座。装不好时,用户看到的是“预留建了但不能发货”“生产订单下达后不生成预留”“MBVR 跑了不清理”,运维看到的是后台配置和作业日志对不上。这套操作指引适合刚接 SAP MM/PP 配置的开发者,也适合要把生产预留流程复现到测试账套的运维。
2. 配置底座:OMC2 编号段、预留缺省值与工厂参数先落地
我一般先把环境核对表摆出来,再动 SPRO。生产预留的坑很少是单个事务码造成的,多数是客户端、权限、工厂、物料主数据、订单类型这几层没对齐。不同版本 SPRO 菜单层级会变,OMC2、MB21、MBVR 这些事务码基本不变,所以下面按事务码找路径,不按菜单文字硬记。
| 核对项 | 确认内容 | 取证方式 |
|---|---|---|
| 测试客户端 | 是否允许改配置、是否独立于生产 | 问 BASIS 或看客户端角色 |
| SPRO 权限 | 物料管理、库存管理、生产订单参数可改 | 测试保存一个配置请求 |
| 工厂与存储地点 | 预留业务涉及的工厂、存储地点已启用 | 后台工厂参数逐项看 |
| 物料主数据 | MRP3 可用性检查字段可维护 | MM03 看物料视图 |
| 订单类型 | OPL8 对应订单类型已确认 | SPRO 生产订单参数 |
| 号码段 | OMC2 预留号码段未用穿 | 测试客户端建一条 MB21 |
2.1 OMC2 编号段:先确认号码段没被用穿
预留凭证号从号码段来,OMC2 没配好,MB21 前台再熟也保存不了。配置顺序我习惯先看号码段现状,再决定补区间还是调当前编号,不直接拿传输请求往生产盖。
# 预留号码范围配置顺序 SPRO -> 物料管理 -> 库存管理和实际库存 -> 号码分配 -> 为预留定义号码分配 # OMC2 # 检查项:号码段区间、当前编号、外部给号标记、测试与生产是否一致 # 先在测试客户端用 MB21 建一条,确认号码落在预期段这段不是脚本,是配置顺序和检查点。OMC2 决定预留号码段区间和当前编号,号码段只负责流水,不要把工厂、物料、日期这些业务含义硬编进号码里,否则后面查 MB23 和底表会对不上。当前编号是下一条预留的起点,测试客户端如果从生产拷贝过来,当前编号可能落后或超前;外部给号标记决定用户能不能手工输号,生产环境一般不建议随手放开。常见做法是先在测试账套建一条 MB21,看号码落在哪个区间,再回 OMC2 核对区间余量。号码段快用穿时先扩区间,不要改历史凭证号。传输请求里号码段和业务数据分开看,别把测试当前编号盖回生产。
2.2 缺省值:MVT、天数 M、保持、MRA 四个参数别照抄
预留缺省值是最容易被“抄配置”带偏的一层。MVT 勾选控制前台项目行 M 默认勾不勾,天数 M 控制允许提前发货的工作日窗口,保持控制预留保留多少天后由 MBVR 清理,MRA 控制是否为预留自动创建存储地点库存数据。四个参数各有业务含义,不是全部勾上就省事。
SPRO -> 物料管理 -> 库存管理和实际库存 -> 预留 # 预留缺省值 # 关键字段 MVT:勾选后前台项目行 M 默认勾选 天数 M:例如 10 个工作日,控制允许提前发货窗口 保持:例如 30 天,超期由 MBVR 删除 MRA:为预留自动创建存储地点库存数据 # 前台临时控制:编辑 -> 附加功能 -> 用于所有项目 -> 移动开关MVT 勾选后,前台多行项目的 M 会默认勾上,用户不用每行手工点。但 M 勾选代表允许发货,勾得太早会让用户误以为随时可发,我一般要求临近发货才勾,成本中心预留尤其要复核。天数 M 填 10 个工作日,表示可以提前发货的天数窗口;保持填 30 天,表示预留保留 30 天,超期由 MBVR 物理删除。这里要记牢:后台配了不等于系统自动跑,MBVR 不执行,超期预留还在库里。MRA 对应自动创建存储地点库存数据,是否启用看仓库业务,不要看别人勾就跟着勾。前台“移动开关”只是临时控制多行项目 M,不是后台缺省值,别拿它替代配置。
| 参数 | 作用 | 常见取值 | 注意 |
|---|---|---|---|
| MVT | 前台项目行 M 默认勾选 | 勾选或按业务放开 | 全默认勾选会让用户误发 |
| 天数 M | 允许提前发货的工作日窗口 | 10 个工作日 | 与 MBVR 勾选逻辑绑定 |
| 保持 | 预留保留天数 | 30 天 | 超期由 MBVR 删除,不自动清 |
| MRA | 自动创建存储地点库存数据 | 按仓库业务决定 | 不要照抄其他工厂 |
注意:MVT 和前台移动开关不是一回事。前者是缺省值,后者是当前会话的临时开关,排错时先看后台。
2.3 工厂级参数:工厂参数补全后前台才认
缺省值配完只完成一层,工厂参数还要按工厂补。预留业务落在具体工厂和存储地点上,只配一个工厂,换工厂建 MB21 就可能行为不一致。我一般把涉及预留的工厂列出来,逐厂核对工厂参数,再回前台用同一物料做对照。
SPRO -> 物料管理 -> 库存管理和实际库存 -> 工厂参数 # 按工厂逐项核对:预留相关开关、存储地点、库存检查 # 配完回 MB21 建一条,换工厂再建一条,对比 M 默认值和保存结果工厂参数是第二层控制,缺省值管客户端层的默认行为,工厂参数管具体工厂的业务规则。配置时不要只盯着一个字段,先把工厂、存储地点、库存检查相关开关过一遍,再用 MB21 做对照测试:同一物料在 A 工厂建预留,M 默认勾选;换 B 工厂再看,才能发现工厂参数漏配。传输请求按 OMC2、缺省值、工厂参数的依赖顺序排,别一个请求混所有。生产上线前把测试客户端和生产客户端的编号段、工厂参数各拍一张截图留档,后面出问题好对照。
3. 可用性检查与手工预留:MB21 报不报错看 MRP3 与 02/03
手工预留最容易出现的误判是“MB21 能保存就代表检查生效”。实际上 MB21/MB22 的可用性检查由物料主数据 MRP3 的可用性检查字段和动态可用性检查里的事务代码规则共同决定,02 和 03 分别管 MB21 和 MB22 的检查规则。规则没对齐,库存不够也能建预留,用户以为系统放行,后面发料才翻车。
3.1 动态可用性检查:MRP3 与 02/03 两处要成对
配置动态可用性检查时,我先把物料 MRP3 的可用性检查字段和后台 02/03 规则对成一对,再用边界数量测试。只配后台不改物料,或者只改物料不配规则,都会出现“该拦不拦”的假象。
SPRO -> 物料管理 -> 库存管理和实际库存 -> 预留 -> 设置动态可用性检查 # 检查规则 02 / 03 与物料主数据 MRP3 的可用性检查字段对齐 # MB21 / MB22 的检查规则由 02 / 03 决定 # 测试物料:库存总数 1001、已预留 2,用 1000 / 1001 做边界这段配置的关键是“成对”。02 和 03 是事务代码规则,物料主数据 MRP3 里还要挂对应可用性检查,两边不一致时,MB21 可能不报错,MB22 修改却报错。库存不足时能不能创建预留,取决于检查是否生效:A 场景允许库存不够时建预留,B 场景库存不足时不能建。文档里用库存总数 1001、已预留 2、可用 999 做边界,拿 1000 和 1001 去试,就是要看系统到底放行还是拦截。这个例子容易把人绕晕,记住可用数是 999,新增预留不能越过可用数,A/B 是两种配置结果,不是系统自相矛盾。测试时先 MB23 看已有预留,再 MMBE 看库存占用,最后回 MB21 建边界数量,顺序别反。
3.2 MB21 手工创建:成本中心 201、生产 261、研发 Y10 三条线
MB21 的业务场景要落到移动类型上。新品研发无法对工单实施发料,又想把消耗纳入 SAP 系统做全局控制,常见做法是申请后创建成本中心预留,适用于转储、成本中心投料。移动类型按需求选:成本中心 201、生产 261、研发 Y10。Y10 是本地研发领用移动类型,按各自系统配置确认,不要拿别的系统编号硬套。
# MB21 创建预留 后勤 -> 物料管理 -> 库存管理 -> 预留 -> MB21 - 创建 # 移动类型按业务选 201 # 成本中心投料 261 # 生产发料 Y10 # 研发领用,按本地移动类型配置确认 # 项目行 M 勾选:允许发货;不勾选不可用MB21 保存前重点看项目行 M。勾选 M 就可以随时发货,即使一个月以后发货;一般临近才勾,不勾选不可用。这里的“不可用”是指后续发货环节受限,不是预留凭证不存在。成本中心 201 用于成本中心投料,生产 261 用于生产发料,研发 Y10 用于研发领用,三条线不要混在一个预留里。保存后去 MMBE 看预留占用,再 MB23 按预留号查明细,确认移动类型、数量、需求日期都对。MB22 修改手工预留时也会受 02/03 规则影响,如果 MB21 能存、MB22 报错,先查规则是不是只挂在一个事务上。
| 移动类型 | 场景 | 注意 |
|---|---|---|
| 201 | 成本中心投料 | 成本中心预留,M 勾选看发货时点 |
| 261 | 生产发料 | 与生产订单发料区分 |
| Y10 | 研发领用 | 按本地移动类型配置核对 |
3.3 MB23 与 MB25:按编号查和按物料查两条路
排查预留时,先把查询路径分清。MB23 按预留编号查,适合拿到预留号后追头行明细;MB25 按物料查,适合从物料维度看这个物料被哪些预留占用;MMBE 看库存和预留占用总量。三条路径配合,才能判断是预留没建、数量不对,还是可用性检查没生效。
MB23 # 按预留编号查预留 MB25 # 按物料查预留 MMBE # 看库存/预留占用 # 排查顺序:MB23 看头行 -> MB25 看同物料预留 -> MMBE 看可用MB23 适合确认单条预留的状态、移动类型、需求日期和数量;MB25 适合发现同物料还有没有其他预留把可用数吃掉了;MMBE 看库存总数和预留占用,能解释为什么 MB21 在某个数量点报错。常见误用是只看 MMBE 就下结论,结果漏掉 MB25 里同物料的另一条预留。我一般要求排查记录写清预留号、物料、工厂、移动类型、需求日期、可用数,后面给用户解释时不用来回猜。自动预留也能用 MB23 查,但自动产生的预留不能 MB22 修改,手工 MB21 在已自动创建预留后也不能再建,这条限制后面 OPL8 还会遇到。
4. 批量与自动预留:MBBR、MBVR、OPL8 和两张底表
手工预留跑通后,批量创建、批量处理、生产订单自动预留才是日常运维的大头。MBBR 解决批量建,MBVR 解决超期清理和批量勾选 M,OPL8 决定生产订单类型什么时候生成预留。这三个点没配好,前台用户会觉得系统“时灵时不灵”,其实是后台作业和订单参数在起作用。
4.1 批量创建 MBBR 与批量处理 MBVR:作业不跑,后台参数就是摆设
MBBR 用于批量创建预留,适合一次建多条成本中心或研发预留。批量模板的物料、工厂、移动类型、数量、需求日期要一致,先小批量跑,确认 MB23 能查到再放大。MBVR 用于批量处理预留,包括清理超期预留和批量勾选 M,但系统不会自动清除超期预留,后台设置必须靠作业跑。
MBBR # 批量创建预留,先小批量验证模板 MBVR # 批量处理预留:清理超期、批量勾选 M # MBVR 删除逻辑(按后台基准日期): # 基准日期 - 过去需求日期 > 30 天 -> 删除 30 天外预留 # 将来需求日期 - 基准日期 < 10 天 -> 自动勾选“允许的移动”MBVR 的逻辑要按基准日期理解:后台配置“允许移动的天数 10”“保持期间 30”后,基准日期减去过去需求日期大于 30 天,程序运行 MBVR 时会对距离基准日期 30 天以外的预留做删除,删的是数据库内 30 天外预留;将来需求日期减去基准日期小于 10 天,MBVR 会对 10 天以内的预留自动勾选“允许的移动”。这两个动作都依赖程序执行,没人跑作业,后台参数就不起作用。常见做法是后台设两个 JOB,一个处理前 30 天的删除,一个处理后 10 天内的勾选,每天分别跑一次。正式跑之前先模拟运行看日志,确认删除清单里没有还要发货的预留。
| 对象 | 用途 | 关键参数 | 注意 |
|---|---|---|---|
| MBBR | 批量创建预留 | 物料、工厂、移动类型、数量、日期 | 先小批量,MB23 复核 |
| MBVR | 清理超期、批量勾 M | 基准日期、保持 30 天、天数 M 10 | 不跑作业不生效 |
| 两个 JOB | 每日自动处理 | 一个前 30 天删除,一个后 10 天勾选 | 日志留档 |
4.2 OPL8 生产订单自动预留:从不、下达后、立即三档怎么选
OPL8 控制生产订单类型是否预留,路径在 SPRO 生产订单参数里。档位常见有三类:从不生成预留;下达后生成,订单状态变成 REL 才生成;立即生成,建单就产生预留。选哪档看业务节奏,不要拿生产订单类型直接试。
SPRO -> 生产 -> 生产线控制 -> 主数据 -> 订单 -> 定义订单类型的相关参数 # OPL8 # 预留控制档位: # 从不 # 下达后:状态 REL 才生成预留 # 立即 CO03 # 看生产订单 BOM 和需求数量 MB23 # 查系统自动创建的预留 MIGO # 自动预留不能 MB22 改,但可以发货选“下达后”时,订单没到 REL 就不会生成预留,用户会以为系统没反应;选“立即”时,建单就生成预留,计划变动频繁的订单类型要慎用;选“从不”时,后面只能走手工预留或其他流程。自动产生的预留无法用 MB22 修改,但可以用 MIGO 发货,这是设计限制,不是权限问题。用 CO03 看生产订单的 BOM 和需求数量,再用 MB23 查自动创建的预留,两边数量对上才算跑通。MB21 在已自动创建预留后无法再手工创建,遇到“为什么不能手工加预留”先查 OPL8 和 MB23。承诺量与预留不是一回事,承诺量看销售/订单承诺,预留看物料需求占用,排查时别混。
4.3 底表 RKPF/RESB:黑匣子排查先看头和行
前台字段对不上时,底表是排查黑匣子。RKPF 是凭证头,存预订(预留)的头信息;RESB 是行项目,存预订(预留)的行项目。用 SE16N 先按预留号查 RKPF,再关联 RESB 看行项目,能确认预留到底建没建、行项目移动类型和数量对不对。
SE16N -> RKPF # 凭证头:预订(预留) SE16N -> RESB # 行项目:预订(预留) # 先按预留号查 RKPF,再看 RESB 行项目 # 核对维度:预留号、工厂、物料、需求日期、移动类型RKPF 和 RESB 只建议查询,不建议直接改表。前台 MB23 看不到的字段,用 SE16N 显示出来核对,改数据仍走事务码。排查时先按预留号查 RKPF,确认头存在,再看 RESB 行项目数量、移动类型、需求日期;如果头在行不在,或者行项目数量不对,再回 MB21/MB22 或自动预留逻辑查。常见做法是把 RKPF/RESB 查询结果和 MB23、MMBE 截图放一起,给用户解释时少绕弯。底表查询权限要控制,生产环境不给普通用户 SE16N 改表权限。
5. 常见问题排查:SAP 生产预留配置翻车的五处现场
预留配置出问题,现象往往在前台,根因在后台或作业。下面五处是我踩过的典型现场,按“现象 -> 原因 -> 解决”记,排查时先走一遍事务码顺序,再看配置。
MB23 -> MB25 -> MMBE -> SE16N(RKPF/RESB) -> MBVR(模拟) # 先确认预留存在与数量,再看可用性,最后看批处理日志这段顺序用于把“前台现象”落到“后台证据”。MB23 确认单条预留,MB25 看同物料占用,MMBE 看可用数,SE16N 看底表头和行,MBVR 模拟看清理/勾选清单。下面每条都按这个顺序取证。
5.1 现象:MB21 保存报号码范围错误
现象:MB21 填完保存,报号码范围不存在、号码段未定义或当前编号冲突,换用户也一样。
原因:OMC2 没给预留分配号码段,或者号码段当前编号已用穿;测试客户端从生产拷贝后当前编号落后,也会出现冲突。还有人把外部给号打开,用户手工输重号。
解决:回 OMC2 看号码段区间和当前编号,先补区间或调当前编号,再在测试客户端建一条 MB21 验证。生产环境不要直接改历史凭证号,号码段快用穿先扩区间。外部给号标记按需放开,普通用户不给。传输请求里号码段单独核对,别拿测试当前编号盖生产。
5.2 现象:前台 M 默认不勾,用户每次手工点
现象:MB21 建预留,项目行 M 默认没勾,用户每次手工勾,漏勾后发货环节说预留不可用。
原因:预留缺省值里 MVT 没勾,或者前台“移动开关”被临时改过;也有工厂参数不一致,A 工厂默认勾、B 工厂不勾。
解决:先看 SPRO 预留缺省值的 MVT,再问用户是不是用过“编辑 -> 附加功能 -> 用于所有项目 -> 移动开关”。MVT 是后台缺省值,移动开关是当前会话临时控制,两者别混。工厂参数按工厂逐个核对,用同一物料在两个工厂各建一条 MB21 对比。M 不要无脑全默认勾,成本中心预留要求临近发货才勾,配置和培训一起做。
5.3 现象:MB21 不报可用性错误,库存超了也能建
现象:库存总数 1001、已预留 2,用户还能建出超过可用数的预留,或者该拦截时不拦截。
原因:物料主数据 MRP3 的可用性检查字段没挂规则,或者后台动态可用性检查 02/03 与 MRP3 不一致;也有库存不足时允许建预留的配置在起作用。
解决:先 MB23 看已有预留,MB25 看同物料占用,MMBE 看可用数,再用 1000/1001 做边界测试。回 SPRO 设置动态可用性检查,把 02/03 与 MRP3 对成一对。A 场景允许库存不够时建预留,B 场景库存不足不能建,先确认业务要哪种,再改配置。测试账套验证通过再动生产,别拿生产物料试边界。
5.4 现象:生产订单下达后不生成预留
现象:生产订单已下达,CO03 能看到 BOM,但 MB23 查不到自动预留,用户说系统没生成。
原因:OPL8 对应订单类型选了“从不”,或者选“下达后”但订单状态没到 REL;也可能订单类型参数改过但传输没到位。
解决:先 CO03 看订单状态和 BOM 需求,再 MB23 按订单/物料查预留。回 OPL8 看订单类型的预留档位:从不、下达后、立即。选“下达后”必须 REL 才生成,选“立即”建单就生成。自动预留不能用 MB22 改,但可以 MIGO 发货;MB21 在已自动创建预留后也不能再手工建。改订单类型参数前用测试订单类型验证,不要直接改生产在用的类型。
5.5 现象:MBVR 跑了不清理、不勾 M
现象:后台配了保持 30 天、天数 M 10,MBVR 跑完超期预留还在,或者 10 天内预留没自动勾 M。
原因:MBVR 作业没排、没人跑,或者基准日期与需求日期不满足公式;也有后台参数改了但作业还是旧变式。
解决:按公式核对:基准日期减过去需求日期大于 30 天,才删除 30 天外预留;将来需求日期减基准日期小于 10 天,才自动勾选允许移动。先 MBVR 模拟运行看清单,再正式跑。后台设两个 JOB,一个前 30 天删除,一个后 10 天勾选,每天各跑一次,日志留档。系统不会自动清超期预留,作业不跑,后台参数就是摆设。
6. 验证跑通:用 MB23、MMBE、RKPF/RESB 和 MBVR 日志确认验收
验收不要只看 MB21 保存成功。我一般按一条业务链走完:手工建三类预留、查库存占用、做可用性边界、跑自动预留、跑 MBVR 模拟,最后用底表核对头和行。下面这张表可以直接当测试账套验收单。
| 验收项 | 操作 | 预期 | 取证 |
|---|---|---|---|
| 手工预留 | MB21 建 201、261、Y10 各一条 | 保存成功,M 状态符合业务 | MB23 截图 |
| 库存占用 | MMBE 看物料可用数 | 预留占用与数量一致 | MMBE 截图 |
| 可用性边界 | 库存 1001、已预留 2,试 1000/1001 | 按 B 场景拦截超可用数 | MB21 报错截图 |
| 自动预留 | OPL8 |
本文还有配套的精品资源,点击获取