SAP生产预留全解析:RESB、MB1A发料、COGI排错与MD04追溯
简介SAP生产预留操作指引是面向SAP实施顾问、生产计划员及仓库管理人员的实用手册以预留功能为主线系统讲解预留背景、预留编码OMC2、缺省值、工厂级预留参数配置、预留可用性检查以及MB21手动创建、MB23按预留编号查询、MB25按物料查询、MBBR批量创建等核心操作帮助解决生产过程中物料备料不及时与预留数据不统一的实际问题。整个资源包为1个DOCX格式文档仅约836KB目录结构清晰既适合按模块快速查阅也适合作为SAP生产模块内部培训材料。除基础预留操作外文档还延伸了批量处理MBVR、生产订单自动预留OPL8控制、预留底表查询、预留数不超过库存数等进阶主题便于读者从配置到执行理解完整链路例如通过OPL8控制生产订单是否自动生成预留利用预留底表核对后台数据。已有693人学习对正在梳理SAP生产预留流程或需要编写操作指引的顾问有一定参考价值。1. 生产预留是什么为什么订单刚保存材料就被系统“占住”了刚接触生产模块的同事往往有这个疑问CO01创建生产订单保存之后去MD04一看每个组件都凭空多出一条预留记录。这条记录就是标题里的生产预留SAP在订单生成的瞬间按BOM自动算出的待领料单哪个订单用料、什么物料、多少数量、哪天要、从哪个库存地点领。它不只是“备忘”MRP把它当需求来源仓库把它当备料依据缺料分析绕不开它发料过账也以它为准。这篇笔记围绕生产预留的前台操作、关键参数和常见踩坑展开既适合刚接手的生产计划员照着操作也希望能给中级顾问提供RESB和COGI层面的一点边界提示。看完你会发现大部分发料问题到最后都卡在预留上。2. 预留从哪来订单自动生成、MB2x 手动创建与 RESB 里的硬字段2.1 生产订单自动预留从 BOM 到组件需求的那一步生产订单保存时系统按订单数量、工厂、BOM展开逐项生成组件需求并在RESB表里写成预留记录。这里的展开不是拍脑袋数量取BOM基础数量×订单数量还要考虑损耗率、替代料组、批量参数库存地点的默认值来自物料主数据MRP4视图的预留参数以及该物料在工厂下的库存维护情况。我一般让用户用最笨也最稳的办法确认CO03打开生产订单切到“组件”页签能看到每个物料的组件行其中“预留号”一列就是系统自动生成的预留编号。把这个编号抄到MB23里查能看到抬头和项目明细。注意一点只有生产订单和流程订单会产生这类自动预留计划订单不会计划订单在MD04里显示为计划订单行真要参与发料必须先转成生产订单转单成功的那一瞬预留才诞生。还有一个容易被忽略的点物料主数据MRP4视图里有个“预留”字段维护值不同决定了预留是按工厂、按库存地点还是按个体来创建。如果这里没设置好组件预留可能不指定库存地点仓库发料时就要手工补后患很大。这个参数业务人员通常不去动但顾问要会看——很多“发料带不出库存地点”的工单根子就在这个字段。2.2 手动预留MB21 / MB22 / MB23 适用场景与字段坑不是所有预留都来自生产订单。维修领料、研发样品、临时借用、替代料切换前的手工占料这些场景没有正式生产订单系统又不希望库存被现货订单抢走最可靠的做法就是手工建预留。事务代码三个MB21创建、MB22修改/删除、MB23显示。流程上其实比生产订单发料还简单但坑都藏在字段里。MB21进入后先填抬头移动类型、工厂、用途、需求日期。移动类型决定将来过账时库存怎么出、消耗记到哪常用的是261生产订单发料和201部门领料。如果选201过账时会要求成本对象如果选261系统会问你生产订单号等于把手工预留挂到一张订单下。我处理过的翻车案例里最多的是移动类型填错、消耗方没填结果过账时系统报“成本对象不存在”或者“结算对象缺失”。项目行里必填的是物料号、数量、需求日期、库存地点。特殊库存标识务必先确认普通库存不用填销售订单库存E、客户寄售库存K、供应商寄售库存W都要显式写清漏了系统按普通库存找自然找不着货。MB22可以改数量和日期也可以整条删除。删除预留不是删一个提醒那么简单它等于把需求从MRP里拿掉后续缺料分析立竿见影地减少一行。所以谁有MB22删除权限在多数企业里是要单独控制的。手动预留和订单自动预留共用同一套表和同一套逻辑只是“预留类型”的标记不同。MB23显示界面里能看到抬头数据和项目数据项目数据里“要求数量”是还没动的原始需求“已提数量”是已经发货的数量两者相减就是仓库还能继续领的量。2.3 RESB 表把预留从“黑匣子”变成可查的硬字段前台界面再怎么点终究是黑匣子。预留在后台的存储表是RESB预留表每一行对应一条预留的组件行项目。用SE16N直接按预留号查RESB几秒钟能看到比前台多好几倍的字段。这里列几个我排查问题时常看的字段说明排查用途RSnum预留号抬头按预留号定位整条记录RSPOS预留项目号对应组件行一张单多行靠它区分MATNR物料号查哪个料被占住BDMNG需求数量原始需求ENMNG已提数量已发货、已过账的数量WERKS / LGORT工厂 / 库存地点确认预留落在哪个仓库BWART移动类型实际过账用的移动类型BDTER需求日期看哪天要领、是否已过期SHKZG借/贷标记确认预留是增加需求还是冲减需求用RESB排查最关键的是把“需求数量”和“已提数量”放在一起看。两者相等预留已经清空理论上不该再占可用库存两者差值大说明料没发够仓库要么备货不足要么卡在某个库存地点上。很多业务部门报“缺料”其实料就在某个库位上等着只是预留的LGORT和维护的库存地不一致发料的人找不到行。顺带说一句改了RESB里的数据本质上就是绕过前台改后台除非救场否则不要干。真到了必须改的时候先确认没有物料凭证和会计凭证挂在下面改完立刻让用户去MD04复核需求。3. 从预留到实发261 按单发料、262 冲销与 COGI 兜底队列3.1 261 按单发料带出预留、部分发货与冲销闭环仓库拿着生产订单领料单来发料最标准的动作是MB1A移动类型填261生产订单发料订单号填进去回车系统自动把该订单所有剩余预留组件带出来按行显示物料、需求数量、库存地点。这时候仓库可以做三件关键的事修改数量只发一部分、修改库存地点换库位、给批次物料输入批次号。部分发货是常态。一张订单十个组件仓库可能先到五个把那五行数量保留其余行数量改成0保存。过账后预留里已提数量增加剩下来的需求继续挂在预留上直到下次接着发。MB1A勾选“检查可用量”时系统会校验库存够不够够则放行不够则提示且不允许过账不勾选时如果物料主数据允许负库存系统会硬着头皮过到负库存账上。这个勾选习惯每家公司不一样我一般建议正式生产发料保持勾选避免红字库存攒一堆。3.2 262 冲销与批次物料什么时候不能一冲了之发错了料最常见的后悔药是262它的含义是冲销261的发货。操作上我推荐不手工重输一遍数量而是MB1A移动类型填262后用“参照凭证”功能直接指定原来的物料凭证系统自动按原凭证的行、数量、批次、库存地点反向过账把库存补回去同时已提数量回退到冲销前的状态。但冲销不是无条件的。以下几种情况要先想清楚物料凭证已经用于后续业务比如已经消耗或已经被销售订单占用冲销会造成库存负数的系统会拦你批次物料发货时没走批次确定冲销时批次又不在库存里系统会提示批次数量不够。这时候光靠262解决不了得看业务是真实的退料还是账务调整。车间退一半、退到非原库位、退到质量冻结库这些都不该用标准262硬冲而应该结合实际流程选退货移动类型或质量检验库存转移再配合预留状态手工确认。3.3 COGI 报错兜底队列先看错误原因再动手别随手删发料过账一瞬间如果出错物料凭证不会凭空消失而是进到COGI里“挂”起来。COGI的界面像一张排队表每一行是一次失败的货物移动显示了物料、数量、工厂、错误原因。常见原因包括物料账期未开、成本对象缺失、估值类别的科目确定失败、数量超过可用库存且不允许负库存。处理COGI有两条路先双击进去“更正”把缺的字段补上再重新过账或者确认这单不要了“删除”这条记录。我的血泪经验是删除要极其克制——COGI里删掉的是“这次移动”但预留的已提数量、订单组件的已发状态并不会自动复原后面对账时账实对不上再回头查这张订单历史凭证已经短了一截。所以删之前务必留个截图记录预留号、物料、数量、错误原因删完再去MB23核一遍已提数量确认没有产生半个数的差异。4. 看数与 MRP 联动MB25 未发清单、MD04 需求追溯和 ATP 占用4.1 MB25一张清单看全未发现货日常管理预留用得最多的前台报表是MB25。按物料、工厂、预留类型、期间筛选执行出来是一张预留清单每行包括预留号、物料、需求数量、已提数量、仍然需要数量、需求日期、库存地点。这张表最值钱的地方在于“仍然需要数量”——它是仓库每天要发的余量也是计划员判断会不会缺料的起点。我习惯让计划员每周一用MB25导出一份全部未发完的预留按需求日期排序把超出需求日期还没发完的标记出来。那个清单就是周三生产会的讨论素材哪些是料没到哪些是预留下错哪些是仓库没来得及发。这样做能省掉大量“到处问”的时间因为问题都集中在一张表上。4.2 MD04 里的预留行读需求、收货和可用量的口径MD04是物料需求追溯最常用的界面。输入物料、工厂执行能看到一串需求/收货行其中就包含预留行数量是“尚未发货”的剩余需求。这里特别要记住一个口径随着261发料预留行的数量逐步减少全部发完后这条预留不再作为开放需求出现在MD04里。所以别在缺料分析里把已发完的预留再算一遍那样会重复占需求。MD04里的预留来源可以追溯到生产订单号或预留号双击预留行能看到明细点进去还能看到对应的订单组件。做缺料表时计划和仓库总会对不上“系统显示缺料仓库说料早发了。”这种争论十有八九出在口径上——系统里缺的是“还未发的预留需求”仓库说的“发”是已经过账的数量。两边各拿各的数做判断永远对不齐。这时候让双方都看MD04的预留行和MB25的仍然需要数量口径统一争吵立刻少一半。4.3 预留与 ATP 可用量系统为什么不肯给别的订单发料可用量检查ATP是另一条容易栽的沟。做ATP检查时系统把所有未清的预留都视为“已占用的需求”这意味着库存里明明堆着100个只要某个预留也在等这100个第二个订单想再订系统就会提示可用量不足。换句话说预留不仅影响发料还影响销售订单交期确认、影响其他生产订单的开工判断。这也是为什么过期预留要及时处理计划停了、订单取消了预留还挂在那里可用量就一直被吃掉。处理方式是MB22删除对应预留或在生产订单里做“删除标记”“技术性完成”让组件预留停用或失效。记住“停用”不等于“删除”技术完成后的订单预留仍然可见只是不再参与新业务的可用量计算。5. 生产预留操作避坑指南五条从现象到救场的记录5.1 发料带不出组件先查预留的库存地点现象MB1A输入生产订单号回车组件行只带出一部分甚至一条都不出来。 原因组件预留的库存地点与物料在系统里的维护地点不一致或者预留根本没指定库存地点也可能是物料主数据MRP4视图的预留参数设置为按工厂导致预留没有落到具体库位。 解决先MB23看预留的库存地点字段再用MB22把正确的库存地点补上去。如果批量发生回到物料主数据MRP4视图检查“预留”字段和应用范围参数是不是被误改过。别一上来就怀疑BOMBOM只决定有哪些料不决定料在哪个库位。5.2 262冲销后已提数量没恢复先看COGI和参照关系现象做了262冲销库存数量回正了但MB23里预留的已提数量纹丝不动。 原因冲销凭证本身并没有成功过账而是挂在COGI里没处理另一种可能是冲销时没有参照原物料凭证系统开了一条独立移动旧凭证状态没被反向关联。 解决先去COGI看有没有待处理的错误行有则按第3章的方式重处理成功后核对MB23没有COGI记录时把262那笔物料凭证找出来确认它是否关联了原261凭证。以后冲销养成习惯一律参照原凭证操作。5.3 手工改预留数量最容易被低估的翻车点现象缺料报表显示欠料实际仓库有库存反复对不上账。 原因计划员为了让某个物料“不欠料”用MB22把预留需求数量改小了或者直接删掉过期预留但生产订单组件数量没同步调整。MRP跑出来的结果和订单实际需求从此分叉报表被误导。 解决业务上规定“改预留必须同时改订单组件数量”或“必须走订单组件变更流程”杜绝只改预留不改订单。权限上让MB22的修改按工厂、按物料组收口只有计划主管和顾问可动操作留日志。别把MB22当成消停缺料提示的工具。5.4 过账报“物料账期未开”问题其实不在预留现象261发料过账一直报“物料账期未开”或者“本期不允许过账”用户在预留上反复改需求日期毫无作用。 原因预留本身没问题是MM的物料账期或工厂账期还没打开当前日期落在未开账期内。发料过账首先要满足账期条件预留需求日期在账期后也一样过不了。 解决检查当前工厂的账期参数确认本月物料账期已经开放。这种事经常发生在月初第一天业务着急系统还停留在上个月。等账期打开后直接在COGI里重处理即可不需要动预留。5.5 批次物料冲销失败多数是因为没参照原始凭证现象带批次管理的物料发货后发现发错做262冲销系统提示“批次数量不足”或“无法确定批次”。 原因冲销时手工输入物料、数量、库存地点但没指定原批次系统在库存里找不到对应的批次库存于是报错。也可能是原始发货时批次被手工改过冲销却让系统按批次确定规则重新跑。 解决做262一律使用“参照凭证”让系统从原261凭证里读取批次、数量、存储类型、特殊库存标识逐项反向过账。如果原凭证都不在了就不要硬冲按退料流程走质量检验或库存转移会更合规。6. 十分钟验证法用 MB25 MD04 复盘一条预留的完整闭环前面讲得再多不如亲手跑一遍。我建议每个新接手生产计划或仓库发料的人用十分钟做一个“一条预留闭环验证”挑一个用量稳定、有库存的物料走一遍从建单到发满的完整链路边操作边核对几组数字跑通一次后续再遇到预留相关的问题就有参照系。我的验证顺序是CO01建一张两张订单量的生产订单进去看组件页签拿到预留号 → MB23确认需求数量正确 → MB1A用261只发一半数量 → MB25按物料查这张预留看“仍然需要数量”是不是正好剩下另一半 → 去MD04看同一条预留行的剩余需求是否同步变小 → 再把剩下的一半发完 → MB25确认仍然需要数量为0MD04里的该预留行不再作为开放需求显示SE16N查RESBBDMNGENMNG。每个检查点和预期结果可以记成一张自己的对照表检查点看哪里预期结果预留生成CO03组件页签 / MB23有预留号数量与BOM展开一致部分发料MB1A 261修改数量过账成功已提数量增加余量核对MB25仍然需要数量剩余未发量需求同步MD04预留需求行显示剩余量全部发完MB25 / RESBBDMNGENMNG无开放需求冲销验证可选MB1A 262参照凭证库存回退余量恢复这套验证跑完后你对预留的敏感度会完全不同。以前跟着报错走现在基本能猜测是哪一层出了问题BOM展开对了但库存地点错了是主数据问题数量全对但MRP不跑去看订单类型和计划相关参数发料过不了账去COGI看账期和成本对象可用量不对去清查过期预留。方向对了处理时间至少省一半。最后说个习惯。以前做某制造企业的上线支持第二周缺料报表开始对不上查下来是有人批量删了过期预留但没有同步调整订单状态也没有留下任何记录。后来我定了一条规矩删除或修改预留必须同时导出RESB对比表和MB25前后截图权限也只放给计划主管和顾问。这条规矩后来替我们挡住了好几轮对账麻烦。预留是系统里最细小却最讲账实一致的东西前台点一下很容易后台影响一大片——操作前把口径想清楚操作后把数字核一遍这个方向就值得投入。希望帮到你。本文还有配套的精品资源点击获取