ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

SAP MM库存类型与保留在库:为什么库存够却发不了货?

SAP MM库存类型与保留在库:为什么库存够却发不了货? 做SAP MM时间长了经常被同事问一个问题库存明明够为什么MD04里面显示可用数量就是不够十有八九问题出在“库存类型”和“保留在库”这两个概念上。你看系统里一个物料的库存表面是一串数字其实它被分成了好几个池子非限制、质检、冻结而每个池子又可能被一张张预留单悄悄占掉一部分——这部分就叫“保留在库”Reserved Stock。今天这篇是SAP MM学习笔记的第19篇专门把库存类型和保留在库这两个容易被混在一起、又经常让人栽跟头的概念拆开讲一遍。包括它们是怎么产生的、在业务里有什么价值、怎么用MB21/MB23/MD04这些事务代码去操作和排查。适合正在学MM模块的朋友、刚接手物料可用性管理的计划员/仓管以及被“为什么库存够却发不了货”这种问题绕晕的顾问们。1. 库存类型到底在SAP里是怎么划分的1.1 三种常规库存类型非限制、质检、冻结在SAP的物料主数据、MB52库存报表和MMBE库存概览里库存数量永远不是“一个总数”。系统层面用“库存类型Stock Type”这个字段来区分库存的可用状态常见的就是三种非限制使用库存Unrestricted-use Stock这是真正“能用”的库存可以正常做生产发料、销售发货、库存转储。报表里通常显示为Unrestricted或“非限制”。质检库存Quality Inspection Stock就是大家常说的“Q库存”入库后进入待检验状态在质检结果出来之前系统不让你正常领用和销售。采购收货用移动类型105就可以直接收到Q库存。冻结库存Blocked Stock被业务或质量冻结的库存可能是残次品、待报废品、有争议的物料。采购收货用移动类型103或者发现异常后用324从非限制转过来。这三种库存类型之间的转换最常见的就是Q库存放行。质量部门在QA11里针对检验批做使用决策UD如果判定合格系统自动生成移动类型321把物料从质检库存转到非限制库存如果判定不合格可以转到冻结库存移动类型323。这套机制保证了“没有经过质量确认的物料不能进入正常流转”听起来似乎多了一步但现实中能帮你挡掉很多不合格品流入产线的问题。要注意的是库存类型和“可用库存”之间的关系。非限制库存是绝对可用的质检库存和冻结库存严格来说都属于“不能动”的库存。很多业务人员看MMBE只看了总数没展开库存类型的行结果发现“账上100个实际能用的只有40个”——那60个可能就躺在质检和冻结里。所以做物料可用性分析第一件事就是把库存类型这一层剥开看。1.2 不要和特殊库存搞混和库存类型并列容易混的还有一个维度叫“特殊库存Special Stock字段SOBKZ”。特殊库存是指物料的权属或存放方式比较特殊常见的包括K型供应商寄售库存货在自家仓库但所有权还是供应商的用多少结算多少。M型项目库存物料收货后挂到WBS/项目下专款专用。Q型在途库存主要出现在跨工厂/跨公司转储STO场景里货已经发出但对方还没收货。E型销售订单库存按单采购/按单生产时收货直接挂到销售订单头上。这里特别容易绕晕一个物料可以同时存在“非限制库存类型”和“特殊库存K”的组合也可以存在“质检库存类型”和“特殊库存M”的组合。也就是说库存类型解决的是“能不能用”的问题特殊库存解决的是“货属于谁/挂在哪个对象下”的问题两个维度互相独立组合使用。我在项目上见过不少用户把“质检库存”和“冻结库存”都理解成“不能用的货”这个方向没错但一遇到寄售物料就懵了寄售物料明明也能用为什么库存不显示在非限制里因为它是K型特殊库存非限制库存是“自有非限制”寄售库存是“供应商的非限制”显示的位置不一样。理解了这个逻辑看MB51物料凭证、看MD04需求来源思路都会清晰很多。2. 保留在库的本质预留是怎么“锁”住库存的2.1 预留与保留在库的关系“保留在库”这个中文翻译其实很容易被误解很多人以为是财务上冻结的库存。实际上它对应的是SAP里的“预留Reservation”。简单说预留就是一张内部单据上面写清楚“什么物料、哪个工厂/库位、哪个日期、要发多少数量、发给谁生产订单/成本中心/项目/资产”。只要这张单子存在系统就会把对应数量的库存标记为“已被占住”这部分被占住的数量就是保留在库。我常用一个类比你把电影票提前买了座位还在电影院里但其他人已经买不了了。库存的总数没有减少可用数却少了。保留在库就是那个“已售出”的座位系统在计算可用库存的时候会把它扣除掉。在数据库层面这些保留数量是实实在在存在表里的。物料主数据的库存表MARD里除了非限制库存LABST、质检库存INSME、冻结库存SPEME三个数量字段还有三个对应的保留字段VMLAB是非限制保留在库VMINS是质检保留在库VMSPE是冻结保留在库。所以你去查表或者看MB52报表时会看到“保留在库”这列和“库存”并列显示。知道了这个底层的逻辑后面排查问题就快很多。2.2 它怎么参与可用性检查预留不是建完就完事了它真正厉害的地方在于参与可用性检查Availability Check / ATP。在MD04的库存/需求清单里预留会作为“需求行”显示和销售订单、计划订单、采购申请放在一起。系统在做可用性检查时会把这些需求都纳入考虑可用库存 非限制库存 - 已经确认给需求方的数量。举个例子非限制库存100个你创建了一张数量60的预留那么MD04里的可用数量就只剩下40。如果这个时候又来了一张销售订单要50个系统做ATP检查时会告诉你库存不足只能确认40。这个机制保证了不会出现“同一个物料被许给好几家最后一发货发现谁都不够”的情况。要说明的是预留参与可用性检查是有前提的。物料主数据MRP3视图里有个“可用性检查”字段通常设成“01 仅按ATP逻辑”之类的规则后台SPRO里也配置了对应的检查规则和检查范围。有些企业没做这块配置预留建了但系统不扣减可用库存计划员就会很困惑——其实不是预留没用是检查规则没配好。2.3 预留数据到底去哪查RESB表如果你想看预留的明细不要去翻乱七八糟的自开发报表直接看标准表RESB这是SAP里预留/相关需求的核心底表。比较常用的字段包括RSNUM预留号RSPOS预留行项目号BDTER需求日期BDMNG需求数量ENMNG已提货/已发料数量KZEAR是否最后一批提货的标识生产订单的组件预留也写在RESB里。一个生产订单对应多个组件预留行这些行关联到生产订单底表AUFK订单头、AFKO订单控制、AFPO订单项目。很多顾问在查“为什么生产订单不能发料”“为什么预留没消耗”的时候最后都是回到RESB这张表里找到答案的。日常查看则用MB23看单张预留MB24看预留清单MB25看预留变更日志都是非常高频的事务代码。3. 保留在库的典型利用场景3.1 生产备料防止备好的料被“顺手牵羊”生产订单下达后系统会根据BOM自动生成组件预留这是SAP的标准设计。预留会出现在MD04里告诉计划员和仓库这张生产订单什么时间需要什么料、需要多少。仓库看到预留后可以提前备料把物料从总仓移到线边仓或者备料区。这个时候“保留在库”的意义就体现出来了物料一旦被这张订单的预留锁定其他部门想领走系统会提示库存不足这就从流程上杜绝了“料备好了生产要开工时却发现被别的单子领走了”的尴尬。这里有个实操心得预留的需求日期BDTER一定要维护准。如果需求日期填得比实际生产日期早很多库存会被提前锁定其他业务想用也用不了如果填得晚了生产领料时物料可能还没备齐。我见过不少工厂生产计划员图快直接把需求日期填成系统当天结果所有物料一下子都被锁定销售订单那边全在喊缺货。所以日期这个字段看起来不起眼实际是把控库存可用性的阀。3.2 维修工单和项目领料先锁料再走流程除了生产订单最常用的自动预留来源就是PM维修工单和项目。设备维修需要领备件在PM工单里挂上备件清单工单下达后自动生成预留维修班组到了现场直接凭预留领料不用临时查库存。项目领料也类似物料挂在WBS/项目库存M型特殊库存下通过移动类型251发料到项目。这类场景最怕的是“流程还没走完料已经被领走”。比如维修工单还在审批中维修工就先到仓库口头找仓管要料仓管心一软就发了结果就是财务上维修成本归集不到工单上项目成本归集不到WBS上账实差异一堆。所以我一直建议所有领料都必须先有预留再发料宁可先建一张预留单在系统里占住库存也不要图省事走线下口子。3.3 手工预留给跨部门、跨工厂的调拨留个位置并不是所有预留都来自生产订单或工单很多临时需求可以通过手工预留来“占坑”。比如研发部门要打样、行政部门要领维修耗材、销售要做演示样机直接用手工预留解决在MB21里维护物料、数量、需求日期、移动类型比如201成本中心发料、成本中心或内部订单保存后系统自动占用库存。等真正领料时仓管用MB1A按预留发料数量精准、凭证完整、成本归集也一步到位。跨工厂调拨STO也能利用预留的思路。总部有一批货要调拨到外地工厂虽然STO会形成采购订单需求但如果调拨计划还没最终确认可以在系统里先用手工预留锁定总部的库存防止这批货在等待期间被其他订单消耗掉。等STO正式执行了、货发出了再把预留删掉即可。这个过程本质是给业务留出决策缓冲期同时不让库存失控。3.4 对质检库存的特殊预留这个场景相对进阶但很实用。有些物料因为供货紧张采购收货后只能先进Q库存而研发或者打样部门想先用一点点做验证能不能从Q库存里直接预留一点出来从系统逻辑上是可以的MB21创建预留时“库存类型”字段可以选择Q质检这样预留占用的就是质检保留在库VMINS。不过实际操作中很多移动类型默认的源库存类型是非限制你做完Q库存预留发料时系统照样报错“移动类型不允许从质检库存发货”。这时候要么改移动类型的配置要么让质量部门先用QA11做放行将Q库存转成非限制再发料。我的建议是正常业务还是走QA11放行流程别为了图方便在Q库存上强行发料不然质检闭环就被打破了后续追溯会很麻烦。3.5 多部门抢料时用预留做“排队”保留在库另一个很容易被忽略的用途是给多需求方做一个透明的“排队顺序”。假设一种关键物料库存只剩50个A部门要30个B部门也要30个谁先拿到系统里比的就是预留的创建时间。A先建了预留30个就被锁住了B再做可用性检查时系统会提示只能部分满足。这个时候业务领导就能基于系统数据做决策而不是听两个部门在会议室里比嗓门。我在这类场景里的经验是把“先建预留先得”的规则在项目上线前明确写进业务规程里同时配合MD04的需求日期排序让计划员能一目了然地看到所有需求的优先级。预留看起来是一张简单的单子本质上它充当了企业内部资源分配的“顺序凭证”。4. 实操从创建预留到释放预留的完整流程4.1 第一步用MB21创建手工预留手工预留是理解整个保留在库机制最直接的入口。操作路径事务代码MB21进入创建预留初始界面。输入移动类型、工厂和预留日期回车进入行项目界面。以“成本中心领料”为例常用的移动类型是201行项目里维护物料编码要预留的料号可以带出物料描述和单位。数量预留数量系统会检查可用性并显示确认数量。工厂/库存地点从哪个库位预留如果物料主数据维护了默认库位系统会自动带出。库存类型默认空非限制需要锁Q库存就选Q需要锁冻结就选B。特殊库存如果物料挂在项目/寄售下面这里填M/K等标识。账户分配成本中心、内部订单等取决于移动类型要求。保存后系统提示生成了预留号比如0001234567。这时你到MD04里看会看到这个物料的需求清单里多了一行类型为“预订/保留”的行数量就在那里后面跟一个需求日期。再到MB52或者MMBE里看库存保留在库的列也会对应增加。实操中我提醒一点如果保存时报“科目确定错误”或者“账户分配缺失”先回过来检查账户分配页签绝大多数情况是成本中心没填或者填了已失效的成本中心极少是真的后台配置坏了。4.2 第二步用哪些事务代码查看和分析查看预留的工具有很多我这里整理一下各自用途MB23显示单张预留的完整抬头和行项目信息适合快速确认某一号预留的状态。MB24预留清单按工厂、物料、预留类型筛选适合批量查看某个库位有多少条预留。MB25预留日志显示预留被创建、修改、删除的历史记录适合追责和审计。MD04单个物料的库存/需求清单可以看预留对可用库存的影响。MB52/MMBE库存报表可以直观看到保留在库列和库存类型分布。日常我的习惯是先用MD04看单个重点物料的供需平衡配套看预留行如果是月底盘点或者清理用MB24按库位导出所有预留清单再逐个确认哪些要继续保留、哪些该删除。MB52则主要给业务部门看库存全貌因为它能直接一屏展示所有物料的库存、在途和保留情况不用一个个料去查。4.3 第三步发料、冲销与释放预留预留最终是要被消耗掉的。仓库发料时在MB1A里选择和预留相同的移动类型比如201在界面上方填入预留号回车后系统自动带出物料、库位、数量、账户分配确认无误后过账。过账后预留的已发料数量ENMNG增加剩余数量减少当发料数量等于预留数量时这张预留就算“完成”了会自动关闭。如果发了一部分料剩余部分确定不再需要正确的做法是到MB22里把剩余数量改小或者直接打上删除标记把整张预留删掉让被占用的保留在库释放出来。这里要特别提醒删除预留不会产生任何物料凭证它只是把那一行需求去掉然后保留在库的数量就自动归还到可用库存里了。很多新手不敢删预留怕删了影响历史记录其实MB22/MB24删除预留是很正常的业务操作预留只是控制数据不是财务凭证。如果发料之后发现发错了需要冲销可以用MBST或者对应的移动类型反向操作比如262冲销261发料。这时要注意如果冲销时没有关联原预留号或者关联的是别的预留系统不会自动把数量恢复到你原来的那张预留上而是把库存加回到非限制库存。这不算系统错误但会造成预留和实际消耗对不上所以冲销时尽量保留原始参考信息。4.4 常用移动类型速查表这里把和库存类型、预留相关的常用移动类型整理一下方便收藏移动类型业务含义备注101采购收货到非限制库存最常用收货103采购收货到冻结库存有争议先冻结105采购收货到质检库存生成Q库存201成本中心/内部订单发料手工预留常用251项目库存发料挂WBS/项目261生产订单发料生产组件预留消耗262生产订单退料冲销261301/303跨工厂转储309/311库内转储321质检转非限制QA11放行生成323质检转冻结质量判定不合格324非限制转冻结业务冻结521无参考发料一次性业务领用慎用541分包发料发给供应商加工移动类型不需要死记硬背理解了“是否收货”“是否发料”“目标库存类型是什么”这几个维度碰到不认识的类型去查表或者看系统帮助就行。但至少上面列出的这些高频类型建议顾问和关键用户都混个脸熟。5. 常见问题与排查技巧实录5.1 问题速查表在实际项目里跟“保留在库”相关的问题来来回回就那几个我整理成一张速查表现象可能原因排查与解决MB21保存时报“科目确定错误”成本中心/内部订单没填或已失效检查账户分配页签确认成本对象有效性预留建立了MD04里可用数量没变化物料主数据可用性检查字段设为无或检查规则没生效检查MRP3视图可用性检查字段SPRO检查规则为Q库存建预留后发料时报“移动类型不允许从质检库存发货”移动类型源库存类型配置只允许非限制先用QA11放行Q库存或调整移动类型配置预留只消耗了一部分剩余数量一直挂在MD04里剩余预留没有手动修改数量或删除用MB22调整数量或删除标记释放保留在库发料冲销后库存数量回来了但预留没恢复冲销时没有按原预留关联冲销时保持原预留号或手动修正预留确认数量MB52里保留在库一直很大实际仓库里早就没货了发料时没输入预留号预留从未被消耗规范仓管发料流程定期用MB24清理无效预留这张表不用死记但建议收藏。遇到问题先按表排查绝大多数情况5分钟能定位。5.2 我的几个独家避坑经验第一个经验是预留一定要设生命周期。很多企业上线SAP后各类预留像雪球一样越滚越大原因是没人定期清理。我建议每个月至少跑一次MB24把所有预留按需求日期排个序把过期超过30天还没发料的预留列出来逐一和业务确认是取消还是顺延。最好在项目制度里写明白“谁创建预留谁负责清理预留”这句话能解决80%的历史遗留问题。第二个经验是盘点前一定要把预留处理干净。如果仓库正在盘点而你还有一堆未发料的预留挂在系统里盘出来的账面数据和实物一定对不上。实务上可以在盘点前把未完成的预留全部删除或者冻结等盘点结束后再重新创建。曾有用户因为没做这一步盘点了整整两天最后差异上万条查来查去发现差的就是那批“被预留但实际没发”的库存非常浪费时间。第三个经验是不要滥用521这种无参考发料。521发料虽然省事不需要成本中心、不需要生产订单但正因为“无参考”它不会自动关联到任何成本对象财务过账和后续追溯都很麻烦。很多倒冲或临时领料的问题都是因为怕麻烦用了521结果月末成本归集的时候一地鸡毛。能用201挂成本中心就尽量别用521裸发。最后再说一点个人体会做SAP MM这行库存类型和保留在库这两个概念看似基础实则贯穿了物料管理从采购、生产、销售到财务的所有环节。系统里的“保留在库”是一把双刃剑用得好它是你控制领料节奏、保障生产供应的工具用得不好它就是账实不符、库存虚占的万恶之源。我现在每到一个新项目第一件事就是检查客户的预留清理机制是否健全这个动作十次里有九次能提前发现库存管理的大隐患。希望这篇笔记能帮你在SAP MM的路上少踩几个坑特别是下次再有人问你“为什么库存够却发不了货”的时候你能一眼看出问题出在哪个池子里。
返回列表