做SAP MM这行,最怕半夜接到用户电话说“库存对不上”。有一年某厂从南京往上海调拨一批原材料,火车运输三天,结果这三天里系统里既看不到南京的库存减少,也看不到上海有货,计划员以为是缺料,转头又下了一张采购单。等货到了,仓库收货又收重了。后来查了一圈,问题就出在STO转移订单没有启用特殊库存T的完整链路。所谓T库存,就是SAP里专门用来登记“在途转移库存”的一种特殊库存类型,专门承接工厂间调拨、跨公司转储过程中那批“已经发出但还没到货”的物料。这篇就把T库存从业务背景、底层逻辑、配置实操到运维踩坑完整讲一遍,适合正在做MM模块实施或日常运维的顾问,也适合被各种库存差异逼疯的计划和仓库同事。
1. 为什么系统里会有“看不见的库存”:T库存到底解决什么问题
1.1 一个让用户半夜打电话给我的场景
先说业务侧最常见的一个困惑。工厂A给工厂B做调拨,货从A仓库装车发出,B的仓库要三天后才收货。这三天里,A的账面库存已经减少了,因为货确实不在A的仓库了;B的账面库存还没有增加,因为B还没办入库。那么这批货在系统里应该记在哪里?如果不做任何特殊处理,系统里的答案就是“哪里都没有”——A少了,B没多,总账对不上,实物明明在卡车上,账面却“消失”了。
这个问题的本质是:传统库存管理假设“货要么在我仓库,要么不在”,但现实里有大量货物在供应商到工厂、工厂到工厂、工厂到客户之间的运输通道上。这时候如果强行把这批货记在某一端的非限制库存里,必然导致库存高估或低估。T库存这个特殊库存类型,就是SAP给“在途货物”准备的专用户口:货已经发货出库,但还没到收货方仓库,所以暂时挂在收货方名下,但不在收货方的物理库存地点里。
1.2 T库存是什么:特殊库存里的“在途户口”
SAP的库存管理里有普通库存和特殊库存之分。普通库存就是指归属于工厂、存放在工厂某个库存地点下的库存,比如1000工厂的0001库位有500个物料,这就是最常见的非限制使用库存。特殊库存则用于表示“物料虽然从物权或业务逻辑上跟我有关,但不能像普通库存那样直接放在我的库位里管理”的场景。
特殊库存类型是一张比较固定的清单,不同字母代表不同业务模式:
| 特殊库存类型 | 含义 | 典型场景 |
|---|---|---|
| E | 寄售库存 | 供应商放在你仓库里的货,用多少结算多少 |
| K | 客户寄售库存 | 发给客户、由客户代为保管的货,物权仍归你 |
| O | 供应商分包库存 | 你提供给供应商做委外加工的原材料 |
| M | 采购在途库存 | 供应商/关联公司已发货、尚未到达的采购物资 |
| Q | 项目库存 | 指定到WBS/项目下的专用库存 |
| T | 转储在途库存 | 工厂间/公司间STO发货后、收货前那批货 |
T库存的重点在于“转储”二字。只要业务是工厂间库存转移(STO,Stock Transport Order),并且采用了标准的两步法流程,发货工厂过账后、收货工厂入库前,这批货就一定会以特殊库存类型T的形式挂在收货工厂名下。从某种意义上说,T库存是一个“过渡账户”,它把实物运输过程变成了系统里可见的中间态。
1.3 哪些业务会产生T库存:STO两步法是主战场
产生T库存最常见的业务就是STO两步法。所谓两步,就是发货方做一次发货过账,收货方再做一次收货过账。第一步:发货工厂用MIGO做发货,移动类型643,货物从发货工厂的非限制库存转到收货工厂的在途库存。第二步:收货工厂到货后,用MIGO做收货,移动类型645,货物从在途库存转到收货工厂的非限制库存(或质检库存)。
这套流程在跨工厂调拨、集团内部跨公司调拨里非常常见。尤其是当运输距离远、运输周期长、货权需要在运输途中明确归属时,T库存几乎是唯一合理的选择。这里有个容易混淆的点:有些项目里STO也做一步法,发货方发货后系统自动给收货方记库存,不经过T库存。一步法适合当天送达的短途调拨,两步法适合长途运输。如果项目上了两步法,但后台没有把移动类型643/645配好、或者用户操作时乱用了其他移动类型,就会出现我在开头说的那种“库存凭空消失”的情况。
2. 上手前必须搞懂的底层逻辑:归属、评估与MRP的三个问题
2.1 归属:库存“户口”在接收工厂,物理位置在运输途中
T库存最核心的特征是:库存的管理户口归收货工厂,但物理位置不在收货工厂的任何库存地点里。这一点一定要先讲清楚,否则后面很多查询和报表都容易看错。
普通库存的查询维度是“工厂+库存地点”,比如你看MMBE,某物料在1000工厂的0001库位有500个。但在途库存不一样,它的“工厂”是接收工厂,比如2000工厂,但“库存地点”是空的,因为货不在仓库里。你在MMBE的普通视图里看不到它,必须在“特殊库存”相关选项里勾选T才能看到。
这个设计是有道理的。物权上,STO转储的本质是接收方向发送方下了一张内部采购订单,发送方发货时,物权就转移到了接收方。因此接收方的账上必须体现这批资产,哪怕它还在火车上。库存地点是仓储维度的概念,货不在仓库里,当然不能硬塞进某个库位。把“属于我但不在我库位”的货用特殊库存来表示,既满足了财务资产确认,又保持了仓储实物的准确性。
2.2 评估:谁评估,就进谁的资产负债表
T库存的评估逻辑与普通库存不同,这里有三个层面需要理清。
第一,在途库存的评估价格使用收货工厂的评估价格。也就是说,当发送方发货过账时,库存金额从发送方转出,按照接收方的价格(可能是标准价、移动平均价,取决于物料在接收工厂的评估策略)进入接收方账上。这一点在跨公司STO时特别关键,因为发货方和收货方可能属于不同公司代码,甚至不同国家,货币也可能不一样,价格口径必须明确。
第二,从财务视角看,在途库存是接收方的资产。发送方发货过账时,发送方在资产负债表上减少库存,同时(如果是跨公司场景)确认一笔对内销售收入;接收方则在资产负债表上确认一笔在途存货资产。这本质上模拟了“货权转移”的商业实质:货在路上,但已经不是发送方的库存了,也不是谁都不管的无主资产。
第三,个别项目会遇到“在途库存如何过渡科目”的问题。比如发送方发货后,接收方还没有收到货,但发送方已经把库存转出了,总账上需要一个中间科目来挂这笔“已发未到”的价值。SAP标准设计里,通过移动类型配置和科目确定规则,可以把在途金额记入接收方工厂名下的在途物资科目或者公司间往来过渡科目。这块经常是FICO顾问和MM顾问的衔接点,实施时建议提前对好科目表,别等上线了才发现凭证进错了科目。
2.3 MRP:在途库存能不能满足需求,由配置决定
计划员最关心的问题:这笔在途库存能不能用来满足工厂B的需求?答案是:默认情况下可以,但要看配置。
在SAP标准逻辑里,T库存是接收工厂的库存,MRP运算时,接收工厂的供应量会包含这笔在途库存。这意味着,如果2000工厂的某个物料已经有了100个在途T库存,而系统算出来的净需求只有80个,那么MRP不会产生新的采购申请。这个逻辑对于长途调拨业务非常有用,因为计划员不需要手工去记“还有一批货在路上”。
但这里也埋了一个雷:如果配置或操作不当,在途库存没有被纳入MRP供应,系统就会误判缺料,产生重复的采购申请。这个坑我在第五部分会专门展开讲,这里先记住一个结论——在途库存是否参与MRP供应,不是天然固定的,需要结合物料主数据、MRP组、后台策略综合判断。
3. 配置与操作:完整走通一单STO在途库存
3.1 后台配置的两个关键点
要把T库存跑起来,后台配置有几个地方绕不开。我这里只讲跟T库存强相关的配置点,其他STO相关配置不展开。
第一个关键点是移动类型643和645的配置。SPRO路径大致在“物料管理-库存管理和实际盘点-移动类型-复制、更改移动类型”。你需要确认移动类型643是否允许“建立货物移动”,并且它的“库存类型”和“特殊库存类型”字段是否设成了T。实际项目中,很多公司是复制标准643/645后微调字段状态,比如是否允许发货超过库存、是否自动建立批次等。配置的原则是“尽量贴近标准”,非必要不动字段。
第二个关键点是在收货工厂这边启用“在途库存管理”或者确认STO相关配置。严格来说,两步法STO本身就会产生在途库存,但在某些SAP版本或某些业务流程中,物料在接收方的MRP行为、以及是否允许在途库存被收货到质检库存,还需要在SPRO中做相应设置。根据我的经验,最容易漏的是“工厂级别的收货配置”,常见路径在“物料管理-库存管理和实际盘点-收货-设置-针对工厂设置库存转储的收货”,如果这里没有激活,系统行为可能不符合期望。具体路径每个项目版本有差异,建议上线前用测试订单完整跑一遍。
3.2 前台三步走:建单、发货、收货
下面按实际操作为例,把一个标准的两步法STO从创建到入库完整走一遍。
第一步,创建STO转储单。事务代码ME21N,采购订单类型选UB(跨工厂转储订单),供应商就是发货工厂。比如2000工厂要向1000工厂要货,那么2000工厂的采购员建一张转储单,供应商填1000工厂,物料、数量、交货日期都按需填好。注意,STO本身不用在行项目里指定特殊库存类型T,T是后续发货/收货过账时通过移动类型自动带出来的。
第二步,发送方发货。1000工厂的仓管员用MIGO做发货,移动类型填643。此时系统会要求选择“转储订单号”或“采购订单号”,填上第一步创建的STO单号。过账后,1000工厂的非限制库存减少,2000工厂的在途库存(特殊库存类型T)增加。这一步做完,你在1000工厂的MMBE里会看到库存少了,在2000工厂的MMBE特殊库存视图里会看到T库存多了。
第三步,接收方收货。货物到达2000工厂后,仓管员用MIGO做收货,移动类型填645,同样关联STO单号。过账后,2000工厂的T库存减少,非限制库存增加。到这一步,一次完整的T库存流转就闭环了。如果2000工厂启用了质检,那么645收货时物料可以先进入质检库存,质检放行后再转非限制库存,这取决于移动类型配置和质检设置。
这里有个实际操作细节:MIGO做645收货时,如果发货数量是100,实际到货是98,你可以按实际数量98收货,系统会记录一笔差异。差异处理方式与项目配置有关,通常会产生差异行项目,需要计划或财务关注,不能睁一只眼闭一只眼直接清账忽略。
3.3 怎么看T库存:MMBE和MB51的组合拳
查询T库存,最直观的工具是MMBE(库存总览)。进入MMBE后,输入物料号、工厂(接收工厂),在“特殊库存”栏位勾选“T-转储在途库存”,执行即可看到在途数量。查询时注意,MMBE默认视图可能不显示特殊库存,不勾选就会漏看。
如果想看历史的收发记录,用MB51(物料凭证清单)更清晰。MB51里可以选择移动类型643/645、工厂、物料、过账日期范围,一次性把某段时间内所有在途收发列出来。结合MB5T这类在途库存报表,可以按单、按物料追踪在途变化。这里说句经验之谈:日常运维中,我排查“库存差异”类问题,基本都是MMBE + MB51 + MD04三个事务代码来回切。先看现在剩余多少,再看历史移动凭证,最后看需求供应状况,基本能定位八成问题。
4. 高频衍生场景:跨公司STO、一步法与521的区别
4.1 跨公司STO在T库存上的差异
跨公司STO与普通工厂间STO核心流程相似,但因为涉及两个公司代码,会产生公司间开票和内部结算。发送方发货过账(643)后,接收方在途库存增加;同时发送方需要开一张公司间发票给接收方,金额往往按内部转移价格计算。接收方收到公司间发票后,会基于这笔在途库存形成应付,发送方确认应收。
这里有个容易让MM顾问懵的点:跨公司STO里,T库存挂在接收公司代码下的接收工厂,评估用的是接收方的价格。而公司间发票金额与接收方评估价之间可能存在差异,这部分差异需要财务通过科目配置处理。如果你在项目中既做MM又对接FICO,建议尽早把“公司间发票金额模版”和“在途评估科目”的对账规则定清楚,上线后能少很多麻烦。
4.2 一步法 vs 两步法:为什么有的项目不需要T库存
一步法STO的逻辑是:发送方发货过账时,系统同时完成接收方的收货过账。也就是说,不需要接收方再做645收货,货在系统里直接变成了接收方的非限制库存。这个流程速度快、操作少,适合运输周期非常短、甚至可以忽略在途时间的场景。
两步法适合运输周期长、货权转移节点重要、财务要求账面清晰体现“在途资产”的场景。两步法多一次人工收货,但可以处理“发货100、到货98”这种数量差异,库存流转更可控。配置层面,两者主要差异在移动类型和订单类型设置。我在项目里见过不少客户一开始用了一步法,后来随着调度距离变长、在途物资金额越来越大,财务审计要求能看到在途金额,才临时改成两步法。改的过程中,历史在途数据怎么切分、未清转储单怎么处理,都是比较头疼的问题。所以选型时一定提前问清楚:你们的运输周期到底多长?财务要不要反映在途资产?
4.3 为什么常见的521不产生在途库存
热搜词里有“sap 521移动类型”,这里顺带讲清楚。521是采购订单收货到非限制库存的移动类型,它处理的是“外部供应商发货到我的仓库”这个场景。供应商发货后,即使货在运输途中,只要还没到你的仓库,你在SAP里并不会看到在途库存(除非用特殊库存类型M的采购在途模式)。普通采购收货的常规操作就是MIGO 521直接收进非限制库存,货到了才做,没到就不做。
521和T库存最大的区别在于业务模式:521是普通外部采购,物权在供应商发运前转移给你,但运输途中系统不管;T库存是内部STO转储,系统主动给你记录在途状态。如果你在一张STO上用了521去收货,那就完全绕过了T库存逻辑,很可能导致发送方和接收方账目对不上。我在项目里见过有用户嫌麻烦,直接用521做STO收货,结果在途库存一直挂在账上,两边就是消不掉。所以遇到“STO相关的收货”,第一反应应该是643/645或者641/101这类转储移动类型,而不是521。
5. 项目实战中踩过的坑与排查链路
5.1 “发货成功,收货方却查不到库存”
这个坑我在这几年至少遇到五六次。现象是:发送方1000工厂MIGO 643发货成功,物料凭证也产生了,但接收方2000工厂的用户说在MMBE里看不到这批货。排查链路如下:
第一步,问清楚用户是怎么查的。绝大多数情况是用户在MMBE里只看了普通库存,没有勾选特殊库存T。解决方案是重新查询并勾选T库存视图。
第二步,如果勾选了T库存还是看不到,检查物料凭证过账的工厂。有时候用户建STO时,行项目里的“收货工厂”字段填错了,导致643发货过账后货物挂在了一个错误的工厂下面。这时候去MB51按物料凭证号查,看看移动类型643行项目里的工厂到底是哪个。
第三步,如果凭证显示工厂正确,但T库存仍然没有,那就要检查移动类型643配置里是否启用了“自动建立特殊库存”或是否被改成了其他特殊库存代码。配置问题不常见,但一旦出现,普通运维很难一眼看出来,需要用调试或者对比标准移动类型配置来确认。
5.2 计划员重复采购:T库存没参与MRP供应的典型事故
有一家客户的场景是这样的:1200工厂是成品组装厂,每天通过STO从1100工厂调拨关键物料,运输周期两天。某个月生产计划大增,计划员发现MD04里显示缺料,于是紧急下了一批采购申请。结果三天后,1100工厂的在途货物到达,1200工厂库存短期内多出一大截,资金占用飙升。事后复盘,根因是T库存没有被纳入MRP供应计算。
排查链路也很典型。先在MD04里看物料的需求和供应清单,确认是否有“转储在途库存”的供应行。如果没有,再看物料主数据的MRP视图:该物料是否设置了“仅按库存地点组装”或者其他影响在途库存纳入供应的策略。更隐蔽的是,如果接收工厂的MRP组里启用了“不考虑在途库存”的参数,或者在物料主数据“MRP1”视图的“工厂库存”字段做了限制,T库存就不会被当作可用库存。
这里给个实操建议:跑MRP之前,先在MD07或者MD04里检查一下物料的供应构成,看看T库存是否正常显示。如果计划员频繁靠“拍脑袋”决定要不要补货,后台参数极有可能有问题。不要盲目改配置,先评估业务需求——有些工厂确实不希望把在途库存纳入供应(因为运输不可靠),这种情况下计划员必须清楚知道该手工扣除在途量。
5.3 冲销的连锁反应:643和645必须“上下联动”
STO两步法最怕的魔鬼操作是单边冲销。发送方发货错了,仓管员直接在MIGO里冲销643发货凭证。如果这时候接收方还没有做645收货,那么冲销没有问题,T库存会减少,发送方非限制库存会恢复。但如果接收方已经做过645收货了,发送方再单边冲销643,后果就是:系统里T库存又回来了,但实物已经在接收方仓库里,接收方的非限制库存也没减少。两边账实全乱。
我在项目里见过最严重的一次,两个工厂因为单边冲销导致库存差异纠缠了两周,最后靠手工盘点和财务调账才平掉。所以操作规范必须明确:两步法STO的冲销要先把“收货侧”取消(冲销645,恢复T库存),再取消“发货侧”(冲销643,恢复发送方库存)。如果实物已经消耗了,那就不能用冲销,要走“退货STO”或“反向转储”的方式做实物回流。这个规则不只靠嘴说,最好在操作手册里写清楚,甚至在权限上做限制,避免没有经验的仓管员乱操作。
5.4 MIGO发货时物料被锁:后台作业撞车
用户热搜里有一条“sap migo检查导致物料锁定”,这和T库存也有关系。STO大批量调拨时,如果工厂恰好在跑MRP或者物料分类账批处理作业,MIGO里做643发货就可能因为物料锁表报错或卡死,表现为“物料在工厂XXX中被锁定”或后台作业长时间占锁。这种情况下,前端操作越频繁,锁冲突越明显。
我们的处理经验是:把大批量STO的收发窗口尽量避开后台批处理高峰,比如每天深夜MRP跑批,就把调拨作业安排在下午;如果必须并发,则要检查锁对象和作业优先级。另外,HANA版本上很多锁问题可以通过优化批处理减少,但顾问和用户都要有这个意识——不是所有MIGO卡死都是系统坏掉了,先查后台作业队列往往更快。
5.5 盘点与冻结:在途库存到底能不能盘
T库存物理上不在仓库里,所以常规的库存盘点(包括热搜里提到的IM cycle count冻结库存)无法对它进行实物盘点。这一点很多用户不理解,觉得“货都在路上了,怎么就不能盘了”。实际上,在途库存的“实物”处于运输途中,仓库盘点单上根本没有对应的库位,无法执行盘点计数。正确做法是:等货物到达并完成645收货、进入非限制库存后,再纳入盘点范围。如果财务想确认在途数量,可以用MB5T这类报表导出在途库存明细,提供给审计做“账面确认”,但这与仓库盘点不是一回事。
项目上遇到过客户要求“把在途库存冻结起来不让动”,这其实意义不大,因为T库存本身就不能用于发货拣配,只有变成非限制库存后才能被业务消耗。如果确实想从业务上冻结某些在途量,应该去冻结对应的转储单或者取消未清的发货计划,而不是动库存。
6. 从T库存延伸出去:M库存、E库存与在途报表的思考
6.1 T库存和M库存别混用
很多初学者会把特殊库存类型T和M搞混,因为两者都翻译成“在途库存”。按SAP标准体系,T主要用于STO工厂间转储的在途,M主要用于公司间采购、外部采购的在途(供应商已发货未到我仓库)。实际项目中,M库存和T库存能否并存、各自怎么配置,取决于业务流程和后台设置。如果你在一个跨公司场景里发现T库存和M库存同时在用,不要觉得奇怪,先确认业务模式再判断是否合理。
我在实施中倾向于这样给用户解释:T库存是“内部调拨在途”,M库存是“外部采购在途”。这样简单直白,用户不容易混淆。真正查账的时候,MMBE里勾选对应的特殊库存类型即可,两者在库存报表上是分开显示的。
6.2 寄售E库存与T库存对比
用户如果要彻底理解特殊库存,绕不开E库存(寄售库存)。E库存和T库存最大的区别在物权:E库存的物权归供应商,T库存的物权归接收工厂;E库存消耗时才结算,T库存发货时就已经转移了货权。从财务上看,E库存不计入工厂的存货资产,T库存是计入接收工厂资产的。很多公司同时做供应商寄售和内部调拨,顾问如果把这两类库存混在一起做报表,管理层看到的“库存总金额”就会有明显误导。建议在报表层面分开列示:自有库存、寄售库存、在途库存、委外库存,各归各。
6.3 在途可视化:怎么把T库存做成管理层爱看的报表
聊到最后,说一下T库存的实际应用价值。很多管理层关心“资金占用在途中多少钱”“还有多少货没到”。这个数据完全可以从T库存里取。常用的做法是用MB5T或者定制报表,按接收工厂、物料组、金额统计当前在途库存余额。如果集团内部运输周期稳定,你甚至可以算出“在途天数”,用来评估供应链效率。
我自己的习惯是,在做完643发货和645收货的凭证流测试后,一定会顺手写一个简单的ALV报表,按工厂展示T库存的物料、数量、金额、转储单号、发货日期。这样用户不用天天去MMBE里翻,管理层开会问起来也能直接回答。这个报表逻辑不复杂,对用户价值却很高,属于典型的“小功能、大收益”。
回到开头那个半夜电话的场景。后来我帮用户把T库存的查询方式、两步法操作规范、冲销规则都梳理清楚后,再也没出现过“货到了系统里却找不到库存”的鬼故事。SAP特殊库存里的T库存,看起来只是一个不起眼的小字母,但它背后的业务逻辑牵涉到物权、评估、MRP、财务科目,牵一发动全身。建议每一个做MM的顾问,都花点时间把自己负责工厂的STO全链路完整走一遍,你收获的绝对值回票价。