资讯动态

SAP特殊库存T详解:跨公司STO在途库存原理、配置与实战排查

发布时间:2026/10/1 17:51:46 来源:尧图企业网站定制
前阵子帮客户排查一笔跨月差异两个工厂之间货已经发出去了但月底报表上怎么都找不出这笔库存到底挂在谁头上。后来顾问同事提醒了一句看看特殊库存 T。结果一查 EBEW 表问题当场就清楚了。从那以后我对 T 库存就有了一种“平时不起眼、关键时刻要命”的感觉。SAP MM 里的特殊库存类型很多T 库存绝对是最容易被忽视但又在跨公司转储、公司间采购里绕不开的一个。这篇文章就把 T 库存从头到尾梳理一遍包括它的业务场景、系统原理、移动类型流转、配置要点、日常排查和报表查询给正在做 MM 模块、做供应链计划或者月底被库存差异折磨的朋友一个完整的参考。1. 业务背景为什么会有 T 库存这种特殊库存1.1 特殊库存到底特殊在哪SAP 的库存管理里物料主数据对应的库存数量并不都放在一张表里。常规的“非限制使用库存”“质检库存”“冻结库存”这些是放在工厂和存储地点维度下的普通库存记录里系统里用 MARD、MARC 这些表来存。但有一类库存它虽然也是实物库存却不能简单挂在某个工厂的普通库存下因为它依附于另外的业务对象比如采购订单、销售订单、项目、供应商、客户这种就是特殊库存。特殊库存的“特殊”主要体现在几个方面。一是归属关系特殊比如供应商寄售库存货在我仓库里但所有权是供应商的二是状态特殊比如跨公司在途库存货已经从 A 公司发出但 B 公司还没收到账上既不能算 A 的普通库存也不能直接算 B 的普通库存三是管理维度特殊普通库存按工厂存储地点批次管理就够了特殊库存必须在这个基础上再挂一个业务凭证号比如采购订单号、销售订单号、项目号。因为多了这个维度特殊库存的数据结构、移动类型、报表逻辑都和普通库存不一样。SAP 系统里常见的特殊库存标识有 T跨公司在途库存、O外协库存、Q项目库存、E销售订单库存、M供应商寄售、W客户寄售等。其中 T 标识的全称是 Stock in Transit, Company Code中文一般叫跨公司代码在途库存核心就是解决“货在途中、账怎么记”的问题。1.2 T 库存解决的是哪一类业务问题先想一个最常见的场景同一集团下有工厂 A 和工厂 B分属不同的公司代码。A 需要把一批原材料调拨给 B 使用。货物从 A 的仓库发出后到 B 的仓库收到之前这段运输时间可能是一天也可能是一周。这段时间里对于发货方 A库存已经出库了如果还挂在 A 的普通库存里A 的生产计划和可用性检查就会把它当成可用库存但实际上货已经不在了。对于收货方 B货还没到如果直接记到 B 的普通库存里B 就会以为有可用库存安排生产计划后才发现实物没到直接导致缺料。从财务角度看所有权到底算谁的发票怎么开成本怎么记如果双方都记账或者都不记账集团合并报表就乱套了。如果这个调拨发生在同一个公司代码下的两个工厂之间问题还好办一点因为 SAP 有“转移中库存”的逻辑挂在发货工厂的在途字段里。但如果是跨公司代码的调拨比如公司间采购订单、跨公司 STO转储订单账务和物料管理都要彻底隔离这时候 T 库存就成了标准解法发货方发货过账后货物进入 T 库存挂在发货公司名下的 EBEW 表里收货方收到货做收货过账后T 库存被消耗掉同时形成收货方的普通非限制库存。整个过程清晰、可追溯也符合财务上对在途物资的核算要求。热词里经常有人搜 SAP STO、SAP MM 配置其实 T 库存和 STO 的关系非常紧密——跨公司的库存转储订单STO是生成 T 库存最主要的业务单据理解 T 库存基本也就理解了跨公司转储的核心逻辑。2. 技术原理T 库存是怎么在 SAP 里落地的2.1 关键表结构与数据流向很多初学者一上来就去找 T 库存习惯性地打开 MM03 看库存或者打开 MB52 看库存总览发现压根看不到 T 库存然后就开始怀疑人生。原因很简单T 库存的数据根本不在普通库存表里。SAP 里普通库存无特殊库存标识的数量和价值数据在物料主数据工厂层MARC和存储地点层MARD维护MB52、MMBE 这些报表默认读取的就是这部分数据。而 T 库存这类特殊库存数量存储在以特殊库存标识为关键字段的独立表里。T 库存当前库存数据在 EBEW 表历史数据在 EBEWH 表。打开 EBEW 你会发现关键字段包括MANDT客户端MATNR物料号WERKS工厂SOBKZ特殊库存标识值为 TBWTAR评估类型VBELN参考凭证号一般是跨公司 STO 的转储单号或公司间采购订单号WMS在途库存状态空值表示在途有特定值表示货物到达信息已存在其他数量、价值字段这里尤其要注意 VBELN 这个字段。T 库存不是按“供应商”或“客户”来归集的而是按“关联的采购/转储单据”来归集的。也就是说同样是 A 工厂发给 B 工厂的同一个物料如果走了三张不同的 STO 单那 EBEW 里就会有三条记录。这就要求我们做 T 库存清理和数据核对时必须把单据维度带上。为什么 SAP 要把 T 库存单独存一张表而不是放进 MARD最核心的原因是评估逻辑。MARD 里的普通库存是工厂存储地点维度的数量而 T 库存的物权虽然在发货公司但它最终要流向收货公司这个过程涉及公司间科目、转移价格、发票校验如果混进普通库存公司间对账会非常痛苦。单独放 EBEW一个公司在月末结账时可以非常清晰地确认我还有多少货在途。2.2 移动类型流转与状态管理T 库存的产生和消耗是通过标准的货物移动类型来驱动的。这里把最容易混淆的几组移动类型理清楚。第一组是同公司代码、跨工厂的转储。比如工厂 1000 转给工厂 2000属于同一公司代码内部。SAP 标准的做法是移动类型 301 单步转储或者 303305 两步转储。单步法发货和收货同一次过账完成两步法发货工厂先发到“在途库存”状态收货工厂收货后冲销。这里产生的“转移中库存”虽然在某种程度上也是在途但它不是特殊库存 T它还是挂在工厂维度下的普通库存变式数据不会进 EBEW。这一点相当多的人会搞混。判断标准很简单只要是同一公司代码内部的工厂间转储就不涉及 T 库存只要跨了公司代码才可能涉及 T 库存。第二组是跨公司代码的 STO 转储。发货工厂发货过账时使用移动类型 643如果启用了交货单流程可能用 641。过账完成后货物从发货工厂的普通库存中减少同时形成一笔 T 特殊库存数据写入 EBEW估值上体现为“在途商品”。收货工厂收到实物后使用移动类型 101 对 STO 做收货过账T 库存冲销收货工厂的普通非限制库存增加。第三组是公司间采购订单Intercompany Purchase Order流程。这类业务在后台创建的是标准的跨公司采购订单发货方使用移动类型 351 做发货过账收货方用 101 做收货过账。351 发货同样产生 T 特殊库存。从库存管理角度看351/643 与 101 的组合是 T 库存最标准的两条主线。还有一个点值得关注T 库存本身是有“状态”的。在库存管理里T 库存的 WMS 字段记录在途状态当发货方过账之后货物处于纯粹的在途状态当承运方或收货方在系统里做了“货物到达”相关确认后状态会变更。这个状态直接影响你能不能对这笔 T 库存做收货、退货、差异处理。实际项目中经常遇到的问题是货物已经到了但系统里 WMS 状态不对导致 MIGO 收货时报“在途库存不存在”或“交货已完成”之类的错误这在第 5 部分会详细说。3. 启用 T 库存的配置与基础设置3.1 物料主数据与评估类型T 库存虽然是个系统功能但它在使用前有几个前提条件。首先是物料主数据的维护。如果你用的是标准价格控制移动平均价 V 或标准价 S本身不需要为 T 库存做特殊设置因为 T 库存的价值是跟着物料的价格控制走的。但如果做物料分类账Material Ledger或者启用了分割评估Split Valuation那 T 库存就必须要考虑评估类型BWTAR的问题。分割评估的核心思想是同一个物料因为不同来源比如自制、外购、进口其价值是不同的因此要分开估值。比如一个物料编码下有两个评估类型自产的和外购的。跨公司转储发出去的货如果属于“外购”这个评估类型那发货过账时就必须指定 BWTAR。在物料主数据的“会计 1”视图和“工厂数据/存储 2”视图里需要为相关工厂维护评估类型在 MIGO 做 643/351 发货时移动类型会提示你输入评估类型如果物料主数据里没维护过账就会报错。这里有个实操建议跨公司转储项目初始化时一定要先梳理物料主数据中哪些物料涉及 T 库存流程统一在相关工厂维护评估类型和特殊库存相关字段不要等到 MIGO 报错再补。因为补主数据本身很简单难的是补完主数据后还要处理历史未清的转储单那才是真正的麻烦。3.2 移动类型与特殊库存标识的配置T 库存标识 T 本身是 SAP 系统内置的不需要在后台像创建自定义字段一样去定义。但移动类型和特殊库存的组合关系却需要在后台配置里看清楚。SAP 标准交付的移动类型 643、351、101 等已经预置了 T 库存的业务逻辑直接可用。但企业实际项目中常会遇到两种变化一是因为流程复杂而复制自定义移动类型比如复制一个 351 出来叫 Z351用于特定工厂间的公司间采购这种情况下必须在自定义移动类型的配置里确认“特殊库存标识”字段是否允许 T二是因为行业或审计要求不允许某种移动类型产生 T 库存比如某些半成品不允许在途这里可以在移动类型的事务控制里做限制。后台配置路径大致在“物料管理 库存管理和实际盘点 移动类型 复制/更改移动类型”进去后重点看“允许的特殊库存标识”部分。如果你发现自定义移动类型做发货过账后库存既没进普通库存也没进 T 库存十有八九是这里没配置好。还有一个隐藏的配置点是跨公司 STO 的流程定义。“物料管理 采购 采购订单 设置库存转储订单”里可以选择“无交货单”或“有交货单”两种模式。无交货单模式发货过账直接由 STO 的 643 完成有交货单模式STO 会生成交货单经历挑库、装运、发货过账发货过账移动类型通常是 641 或 643。这两种模式对 T 库存的存在没有本质区别但会影响你在途库存的可见性和实物跟踪颗粒度。实物运输周期长、参与部门多的企业强烈建议用交货单模式因为装运Shipment模块可以记录承运人、车辆、发货时间配合 T 库存状态会让供应链部门省很多电话。4. 两条主要业务场景的完整流程4.1 跨公司 STO 场景全流程跨公司 STO 是 T 库存最典型的应用场景。用一个例子完整走一遍集团内工厂 A公司代码 1000向工厂 B公司代码 2000转储物料 X。第一步创建 STO。业务人员在工厂 B 侧创建库存转储订单订单类型一般是 UB或自定义类型供应商是工厂 A 对应的关联供应商Vendor物料、数量、交货日期、转移价格一一维护。创建完 STO系统会自动生成采购订单号这张单号就是后续 T 库存 VBELN 字段的唯一标识。第二步STO 审批和交货。如果启用了交货单流程工厂 A 的仓管员会看到一张外向交货单执行拣配、装运然后做发货过账。如果没启用交货单流程直接对 STO 做发货过账。发货过账的移动类型是 643。过账后系统产生的物料凭证会明确注明“特殊库存 T”同时生成会计凭证借方“在途商品/发出商品”科目在发货公司代码下贷方“库存商品/原材料”科目。此时查询 EBEW 表会看到物料 X、参考凭证 STO 号、工厂 A、数量已存在。从 B 公司的视角看这是一笔在途资产从 A 公司的视角看库存已经出库但物权尚未完成最终转移。第三步B 工厂收货。货物到达 B 工厂仓管员在 MIGO 里选择“收货”-“采购订单”录入 STO 号做 101 收货过账。系统自动冲销 A 公司账上的 T 库存同时在 B 工厂的普通库存里增加非限制库存并生成 B 公司代码的会计凭证。整个业务闭环完成。这段流程里最容易被审计问到的点是发货工厂 A 在 T 库存挂账期间库存所有权到底算谁的答案是库存价值和所有权仍然在 A 公司如果双方没有特别约定 FOB 条款则风险在途中转移T 库存在 A 公司的资产负债表上体现为在途资产。这个逻辑在月末出具单体报表时是真实存在的所以财务顾问如果不懂 T 库存月末对账时一定会被业务质疑。4.2 公司间采购场景全流程跨公司 STO 本质上是一种“集团内部调拨”而公司间采购订单更强调“买卖双方关系的正式化”。很多集团企业里工厂 A 和工厂 B 并不只是简单的调拨而是有明确的关联交易、转移定价、开票要求的。这时候用的就是标准公司间采购订单发货方用 351 发货收货方用 101 收货。351 发货过账后系统同样生成 T 特殊库存SOBKZT。物流层面的处理和 STO 很相似区别在于财务处理公司间采购往往会额外生成公司间发票Intercompany Invoice也就是发货方给收货方开一张关联交易发票通过 IDOC 或者后台集成传到收货方系统收货方做发票校验时形成应付发货方形成应收。因为多了“开票”这层动作T 库存的挂账时间往往比实物运输时间更长——货到 B 工厂了T 库存可能还没冲销因为发票还没做系统里还没有触发收货冲销对应关系的完整数据。实际操作中公司间采购场景的 T 库存对账最忌讳只对物流凭证。因为 101 收货过账以后T 库存冲销的时间点以“收货过账”为准而不是以“发票校验”为准。所以做差异分析时如果只看 FI 凭证不看物料凭证很容易把“已完成收货但未开票”的在途单当成差异处理掉。4.3 一笔完整业务的凭证流与对账口径为了把 T 库存的来龙去脉说得更透这里整理一下一笔跨公司业务在系统中的核心凭证流环节移动类型库存影响表变化财务影响发货工厂发货过账643/351发货工厂普通库存减少T 库存增加EBEW 新增 SOBKZT 记录贷库存科目借在途/发出商品收货工厂收货过账101T 库存减少收货工厂普通库存增加EBEW 记录冲销MARD/MARC 数量增加贷在途/应付暂估借原材料库存公司间开票/发票校验无关无无确认关联收入/成本形成应收应付月末对账时T 库存余额 发货方已经过账但收货方尚未 101 收货的所有未清转储量。按这个口径去对账基本不会乱。5. 日常问题排查与实战经验5.1 常见问题快查表做了这么些年 MM 顾问遇到 T 库存相关的问题少说几十种下面是几个最常见的直接做成快查表症状可能原因排查办法MB52/MMBE 里看不到某笔在途库存T 库存不在普通库存表报表未包含特殊库存使用 MB5T 或查 EBEW 表 SOBKZTMIGO 收货时提示“特殊库存 T 在物料主数据中不存在”收货工厂物料主数据缺少特殊库存评估类型或对应字段MM02 维护工厂视图检查 BWTAR发货过账成功但 EBEW 没有对应记录移动类型配置中未允许特殊库存标识 TSPRO 检查移动类型特殊库存标识配置实物已到但无法做收货提示“在途库存已完成”或类似错误WMS 字段状态异常、交货单未正确确认用 MBST/MIGO 取消错误状态或请 ABAP 查 EBEW-WMS月末对不上货发了但双方系统数量都不对发货方已过账、收货方未收货或反之用 MB5T 导出 T 库存清单逐笔核对第一类问题在项目上线初期几乎每周都能遇到因为业务用户的习惯是打开 MMBE 看库存发现“没有货”就直接开单不会想到去看特殊库存。所以训练用户的第一课就是看见“没有货”先确认是不是物料凭证里带了 SOBKZT。5.2 几个容易踩的坑第一个坑是跨期收货导致的价值差异。T 库存是在发货工厂挂着在途商品金额的如果发货时用的是移动平均价收货时物料价格已经变化比如供应商涨价101 收货冲销 T 库存时系统会按收货方物料主数据当前的价格做估值而不是发货时的移动平均价。结果就是发货运费、价值差全部滚到了收货工厂的成本里。虽然这是系统标准逻辑但如果你没提前跟财务解释月底一看到差异肯定来问你。我们通常建议公司间转储的物料尽量用标准价控制并且在 STO 上固定转移价格减少这种波动。第二个坑是退货流程。T 库存是可以做退货的比如收货方发现质量不合格要把货退回给发货方。正常的退货方式是收货方做 101 冲销用移动类型 102 或者 MIGO 里的“退货”或者做 122 冲销 643 的发货过账。但实际业务里经常发生一种情况实物退回去了系统里 T 库存没有冲掉因为业务员嫌麻烦只在收货方做了普通的库存地点转移没有动原 STO 的参考凭证。结果就是 EBEW 里挂着一条数额不小的 T 库存永不清零。这种垃圾数据非常难查因为如果不是专门对 EBEW 做 ABAP 报表常规报表根本不会显示它。所以做 STO 流程时一定要约定好退货路径并且在月末用 MB5T 做清理。第三个坑是 WMS 在途状态字段。这个字段在设计时的初衷是把“货物还在路上”和“货物已到但未做收货”这两种状态分开。很多企业在做收货确认时用 WM/LES 模块或者有自己的条码系统货物抵达时会往系统里写一个“已到达”的确认此时 T 库存的 WMS 字段发生变化。如果这个确认动作没有和 MIGO 101 形成联动很容易出现系统认为“已到”但 T 库存没冲销或者系统认为“在途”但实物已经用完的情况。我们的处理方式是做一套每周跑一次的报表把 EBEW-WMS 状态、交货单最后过账时间、STO 上的收货完成字段放在一起展示专门用来盯跨公司转储的未清项。第四个坑是批次管理。如果物料启用了批次管理T 库存的批次建议逻辑和普通库存不太一样。发货方用 643 发货时如果指定批次这个批次号会一直跟着 T 库存走收货方 101 收货时系统会按 T 库存里的批次号自动带出原则上收货方不应该再重新分批次。如果两边主数据的批次生成规则不一致比如发货工厂是自动生成 Z001收货工厂是外部输入101 收货时就会报批次不存在的错误。遇到这种情况不能简单去改物料主数据必须先把发货方的 T 库存批次清理掉再调整批次格式配置否则后患无穷。5.3 如何有效监控 T 库存日常运维里对 T 库存的监控不能只靠月底对账应该做成周度或日度例行机制。最基本的报表是 MB5T可以按工厂、特殊库存标识、评估类型、物料、单据号输出在途库存清单。你可以在 MB5T 里配置多种布局最常用的布局字段包括物料、物料描述、工厂、特殊库存标识、参考凭证、数量、单位、金额、在途状态。每个月末把这笔清单导出来发给各家工厂计划员去认领要求他们在规定时间内完成收货或冲销。如果你会用 ABAP还可以写一个小报表直接读 EBEW 和 EBEWH按“发货工厂、收货工厂、物料、STO 号、挂账天数”分组找出超过 30 天还没收货的在途记录。正常情况下跨公司转储的运输周期不会超过一两周超过 30 天还不收货的基本可以判定为流程异常。这类报表做出来后可以把 T 库存的未清时长做成 KPI纳入供应链月度例会你会发现流程效率会有明显改善。另一个容易被忽略的监控点是 T 库存对 MRP 的影响。在 MRP 运行和可用性检查中T 库存的处理逻辑和普通库存不同。收货工厂的 MRP 不会把发货方的 T 库存作为自己工厂的可用库存来参与计算但如果你的 STO 转储单上设置了“转储订单行项目里的在途数量作为收货需求”系统可以在 MRP 结果里显示“转储在途”的元素。实际项目中很多计划员看 MD04 发现收货工厂有需求但系统不生成采购申请就是因为 T 库存没有被 MRP 识别为供应来源。这个问题要在 MRP 组的配置里专门处理“库存转储”相关参数否则只能通过人工在 MD07/MDVP 这类跨物料库存概览报表里人工盯。6. 报表分析与扩展应用6.1 关键报表与查询方式T 库存的日常查询我按实用程度排个优先级。第一优先是事务代码 MB5T。这个报表是 SAP 专门为特殊库存“在途库存”设计的不需要任何增强和开发直接输入工厂、物料、特殊库存标识 T就能输出完整的在途库存数量和价值。MB5T 的输出项里有参考凭证VBELN你可以双击进一步查看对应 STO 或公司间采购订单的明细。凡是做 MM 顾问的都应该把 MB5T 放进你的收藏夹它是排查 T 库存问题的第一入口。第二优先是直接查表。MB5T 的缺点是没有提供“挂账天数”“是否超过计划收货日期”这类管理参数而且有些企业因为增强逻辑问题MB5T 的数据可能和 EBEW 不完全一致。所以当我们做深度分析时直接用 SE16N 或者写 ABAP 查 EBEW条件是 SOBKZ T。EBEW 里有数量、价值、WMS 状态、最后过账日期足够支撑大多数分析。第三优先是标准的库存报表 MB52 / MB5L。MB52 默认不显示特殊库存但你可以打开布局设置加上“特殊库存标识”这个字段然后筛选 T。MB5L 是库存价值报表配置合理的话可以按公司代码输出 T 库存的总金额这个对财务对账很友好。不过这两个报表的数据范围、统计口径在不同版本里有差异上线前要和新旧对照测试一下。这里再提一句报表权限的问题。T 库存因为涉及跨公司数据报表权限控制要比普通库存严格得多。很多企业只给工厂计划员开放自己工厂的 MB5T 查询权限防止他们看到其他公司的在途金额。但正因为权限严格财务做合并报表时往往需要单独申请更高权限而不是自己直接去 SE16N 查 EBEW这一点在权限设计阶段就要考虑进去。6.2 T 库存与业务模型的扩展思考T 库存不仅仅是一个报表字段它背后代表的是整个跨公司供应链的“在途资金占用”。从财务角度看T 库存金额大小直接反映集团内部物资流动过程中的资金沉淀。通过 MB5T 或 EBEW 汇总的 T 库存价值可以折算出公司在途物资占用的营运资金。很多企业的供应链金融项目里T 库存的账期控制是一个优化点如果跨公司转储周期从 7 天压缩到 3 天T 库存平均金额会下降接近一半释放出来的现金流是非常可观的。从系统设计的角度看T 库存也是对“业务事件驱动记账”的一个绝佳示例。它不是人为去记一条“在途”分录而是通过移动类型 643/351 的过账动作自动产生的后续 101 收货又自动冲销。这个模式你在 SAP 里处处都会看到动作产生事件事件驱动数据更新数据更新驱动记账。理解了这个模型再去理解 EWM 的 PPF 动作、ATP 的可用性检查、物料分类账的差异分摊都会顺很多。最后再说一句和项目上线相关的经验。T 库存的期初导入在项目初始化时是最容易被低估的工作之一。如果上线前存在跨公司在途物资财务通常会在期初做一笔“在途商品”的余额导入但物料管理侧如果没有同步在系统里挂 T 库存上线后第一笔收货就会因为找不到 T 库存而对不上账。正确的做法是期初数据导入时要同时导入“在途商品”的财务余额和“T 库存”的物料数量两边用同一个 STO 号或参考凭证号保持关联才能从切换的第一天就实现账实一致。我在实际项目中踩过太多 T 库存相关的坑印象最深的是某次做月结财务问我“为什么公司间采购 351 发货产生的 T 库存没有被 101 收货冲掉”我查了半天发现是收货方用错了移动类型做的是一个普通的 311 转储没有关联采购订单。所以最后再强烈建议一句一定要在公司的操作手册里明确写清楚跨公司的货必须按采购订单/STO 收货禁止用库存地点转移去处理跨公司实物移动。这句话看着简单能帮你省掉的月底对账痛苦远超你的想象。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑