news 2026/10/23 15:56:30

SAP公司间采购与工厂间转储:一步法、两步法与在途库存详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP公司间采购与工厂间转储:一步法、两步法与在途库存详解

简介:面向SAP MM模块顾问及集团企业供应链管理者的PPT培训资料,系统梳理公司间交易的核心机制与配置路径。内容从公司间采购(STO)切入,说明同一凭证同时承担采购订单与销售订单功能的复合设计,并延伸到工厂间转储的UB转储订单、带交货单方案、无参考库存调拨以及UB转储计划协议等场景;对特殊库存K寄售、O委外、Q项目等公司间操作也给出配置逻辑,并区分同公司/跨公司工厂间调拨的科目设置差异。讲解中贯穿一步法与两步法差异、相关移动类型(301/303/305/351/101等)、财务凭证科目关系及系统演示截图,适合按模块对照学习。资源包共1个PPT演示文稿,约26.85MB,已有317人学习下载,可作为SAP公司间交易专题培训、项目上线前内部培训或自我复习的参考材料。

1. 公司间采购:为什么一张凭证既是采购订单又是销售订单

在 SAP 里做集团内部的物料转移,最反直觉的一点是:你明明在 ME21N 里创建了一张采购订单,可对于供货方来说,这张单子同时又是一张销售订单。它不是“两套单据通过后台勾稽关联”,而是同一个凭证号、同一组行项目,采购侧看到的是价格和收货,销售侧看到的是发货和开票。也就是说,SAP 把公司间交易凭证设计成了一个复合体:行项目上同时挂着采购组织、销售组织、工厂和清账科目四个维度的数据。

搞懂这个复合体机制,是理解整个公司间采购体系的钥匙。因为后面所有的工厂间转储、UB 转储单、带不带交货单、一步法两步法、特殊库存 K/O/Q 的操作差异,本质上都是在回答同一个问题:物权在两个公司代码之间转移时,库存、在途、应付应收和开票这些节点,系统分别在哪一步、用哪种凭证来记账。

2. 工厂间转储的底层模型:UB 转储单与 351/101 的在途库存机制

2.1 UB 转储单的本质:一张采购单如何在两个工厂间流转

先说适用范围。同一集团下,不管两个工厂属于同一家公司还是不同公司,只要不具备“对外销售”的性质,物料在工厂之间的移动通常就走库存调拨,也就是 UB 转储订单。它的操作链很短:需求工厂 ME21N 创建 UB 转储单,供货工厂用 MIGO 做 351 发货,需求工厂再做 101 收货。

这里最值得琢磨的是 351 这个移动类型。351 不是普通的发货过账,它不把库存直接扣减到一个“消失”的状态,而是把物料从供货工厂的非限制库存转移到“在途库存”。在 SAP 的数据模型里,在途库存是挂在收货工厂名下的特殊库存,但在供货工厂尚未完成物权交割前,它不能直接计入收货工厂的非限制库存。所以 351 之后你去查 MB5T,能看到这一批货挂在途,数量清清楚楚。

为什么非要造一个“在途”出来?因为两个工厂(尤其是跨公司代码时)各有各的账。如果 351 直接扣减供货工厂库存、101 直接增加需求工厂库存,中间会有一段“货已出库、账上两边都没有”的真空期;而如果 351 不扣减库存,等 101 收货时又要做复杂的冲销。在途库存正是这段物理运输时间内物权归属的记账载体。借:库存商品、差异科目,贷:库存商品——差异金额记在需求方,这就是在途库存背后的会计逻辑。

2.2 一步法与两步法:301 与 303+305 的移动类型语义

不带交货单的库存调拨里,还有一条更“轻”的路径:MIGO 直接做 301 或 303+305,完全不需要 UB 转储单。这三张移动类型看起来差不多,实际语义差别很大。

301 是“发=收”的一步法。供货工厂做一次 MIGO 301 过账,系统在同一张物料凭证里同时完成发货和收货:一个物料凭证号、两行库存凭证,没有在途库存,也不需要收货确认动作。303+305 是两步法:303 先把库存发出到在途,305 由需求工厂按实际收到的数量接收。这两步各自生成一张物料凭证,中间隔着一段可查询的在途时间。

什么时候用 301,什么时候用 303+305?这是典型的“看组织不看流程”的决策。如果是同一个公司下距离很近的两个工厂,发货和收货是同一批管理者,那 301 一步法最省事——自己发自己收,不需要数据确认。如果是两拨人,发了 10 个,接收人要按实际数量确认,那就必须用 303 发货产生在途,再 305 接收,否则收货方连“货已经出来了”的凭证都看不到。

2.3 无参考调拨 vs UB 转储:业务距离决定方案

还有一个实际问题:什么时候直接 MIGO 301/303+305,什么时候必须建 UB 转储单?判断标准不在系统,在运输距离和交接责任。如果两个工厂距离近、库存转移频繁、又不需要第三方物流,直接 MIGO 就行,零配置零确认。但一旦距离远、要交给运输公司、到货时间不可控,就必须有 UB 转储单加上发运功能,因为物流执行需要跟踪、在途库存需要挂在系统里、责任节点需要划分。

方案选型的核心矛盾是:发货数量认同不认同,在途要不要现在系统里。一步法(301 或 647+101 自动收货)意味着发货即收货,没有在途,适合收货方完全信任发货数量、且有人不需要在系统里确认的场景;两步法(303+305 或 641+101 手动收货)产生在途库存,收货方必须做确认动作,库存数据更有保障。单纯的 UB 转储计划协议(ME31L 创建、ME38 确认交货计划)则适合长期、周期性的供货关系,用计划协议代替逐单采购,本质上是把调度前置到需求预测。

3. 带交货单的转储流程:647 自动收货与一步法的生效条件

3.1 交货单把物流执行拆了出去

不带交货单的 UB 转储,物流动作全在 MIGO 里完成。而带交货单的方案,是把“拣配、装运、发货过账”这些物流执行动作交给 SD 模块去处理,MM 只管采购和收货。判断一张 UB 转储单带不带交货单,就看行项目里有没有装运(Shipping)页签。

这个页签不是默认出现的,它由后台配置决定。配置路径是:SPRO → 物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 按工厂配置交货类型和可用性检查过程。Per 工厂配置了交货单类型(比如 NL),并且配置了库存类型的检查规则,UB 转储单行项目上就会出现装运页签,系统才允许 VL10B/VL10D 去创建外向交货单。如果这个配置没做,UB 转储单永远停在“纯采购”的状态,想建交货单也建不了。

有了交货单,流程就拆成了四段:需求工厂建 UB 转储单;供货工厂 VL10B 按转储单批量创建外向交货单;VL02N 对外向交货单做发货过账(PGI);需求工厂对交货单或转储单做收货。整个链条里,采购订单管数量、交货单管物流执行,两张凭证通过转储单号关联起来。

3.2 641 与 647:同一个 PGI 动作的两个分叉

供货工厂在 VL02N 里对交货单发货过账时,移动类型决定了后续走向。不做特殊勾选时,过账走 641:货发出去,挂在途库存,需求工厂必须再用 MIGO 101 手动收货,生成第二张物料凭证。做了特殊配置后,过账走 647:PGI 的同时系统自动触发需求工厂的 101 收货,一个物料凭证就完成了发和收两边库存更新。

关键在于,这两种过账在 VL02N 里看起来差不多,但 647 是“自动收货”的移动类型,它的物料凭证里同时包含了交货过账和收货过账两个行项目。这意味着财务上供货工厂确认发出、需求工厂确认收入,发生在同一毫秒。而 641 之后需求工厂不去做 101,在途库存就永远挂在那里,物权实际上已经转移,但账还没走完。

所以一步法根本不是什么“操作简化技巧”,它是系统内置的一种移动类型设计——647 天然具备双边记账能力。而 641 天然具备在途挂账能力。二选一,本质是选择要不要在业务链条里保留“在途”这个中间态。

3.3 一步法反而要谨慎:自动收货的不可控点

很多人一听到“一步法”就觉得很爽,凭证少、操作少、库存同步。但一步法有两个先决条件,任何一个不满足都会翻车。

第一个条件是必须有交货单。一步过程只在有 SD 交货单的情形下生效,这一点在后台配置里写得很明确:SPRO → 物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 分配凭证类型, 一步过程, 交货不足限度。如果没有交货单、还想做一步法,系统根本不会进入 647 逻辑,实际过账会退化成 351 发货,一步法名存实亡。

第二个条件是收货方不需要确认。647 自动收货意味着“发货过账的瞬间,收货方的库存也涨了”。如果收货工厂实际上没有收到这么多货,或者有破损、短缺,再做后续退货和差异处理,比两步法的手动收货麻烦得多。这也是为什么实际项目中优先推两步法:库存数据有保障。一步法是“实在没有人做系统收货操作”时的兜底方案,而不是首选。这一步选择,直接决定库存的可见性和物权的交割边界是否清晰。

# 工厂间/公司间调拨核心事务代码 ME21N # 创建转储订单 / 公司间采购订单 ME31L # 创建计划协议(长期供货场景) ME38 # 确认计划协议交货计划 VL10B # 按转储订单批量创建外向交货单 VL02N # 外向交货单发货过账(641/647 分叉点) MIGO # 收货/发货(301/303/305/351/101) MB5T # 在途库存查询

这套事务代码的调用顺序不是随意的。ME21N 建单、VL10B 建 DN、VL02N 过账、MIGO 收货,每一环都在往物料凭证里追加一条记账。你去查 MB5T,看到的就是这些移动类型在途库存的汇总。排查库存差异时,沿着这套顺序走一遍比对每一步的物料凭证,基本就锁定了问题发生的位置。

4. 跨公司 STO 与特殊库存:从发货到开票的完整闭环

4.1 STO 的完整操作链:ME21N → VL10B → VL02N → VF01 → MIRO

跨公司的公司间采购(STO)与同公司内的 UB 转储最大的区别在于:只要跨了公司代码,就必须有销售发票环节。因为对于供货公司,这张凭证是销售;对于采购公司,它是采购。销售要开票确认收入,采购要收票确认成本,两边才能在公司间清算科目上对冲。

基本链路是:客户公司 ME21N 创建公司间采购订单(STO);供货公司 VL10B/VL10D 根据 STO 创建外向交货单;VL02N 做发货过账;VF01/VF04 创建销售发票(公司间开票);最后 MIRO 做采购发票校验。注意这里的销售发票不是发给外部客户的,它记到的是公司间清算科目上。整套链路的底层驱动,就是第 1 章说的那个复合体凭证:供货公司侧,系统自动从这张 STO 单里衍生出销售订单和交货需求;采购公司侧,它一直是那张采购订单。

这个机制带来的好处是明显的:一张 STO 单,两端看到的业务语义不同,但凭证号唯一、行项目关联一致,不需要人工去创建“对应的销售订单”。SAP 用同一个凭证号把跨公司交易绑定在一起,对账时沿着单号拉一遍就全出来了。

4.2 两种收货方案的差异:自动触发还是手动确认

公司间交易的后台配置不同,会形成两种不同的收货方式。第一种是供货公司交货单过账后,系统自动触发客户工厂收货,客户公司不需要再做 MIGO 收货动作;第二种是过账后不会自动触发,客户公司需要根据采购订单或交货单手动 MIGO 收货。

这两种方案的取舍,和前面 641/647 的选择逻辑一脉相承。自动触发的本质是把“收货确认”这个动作交给系统代替人完成,好处是凭证少、周期短;坏处是如果实际到货有差异,系统里的库存已经先涨了,差异处理要回头改物料凭证。手动收货则是把确认权留在采购公司手里——我看到多少,就收多少货,差异直接体现在收货数量上,不用事后冲销。

从实施经验看,同一集团下的公司间交易,优先推手动收货的更多。因为公司间交易虽然比外部采购简单,但它仍然涉及两个利润中心甚至两个法人实体的成本和收入归属,物权交割的准确记录比省一次 MIGO 动作重要得多。自动触发经常会在审计时被质疑:库存和实物不一致的窗口期内,账上到底是谁的货?

4.3 特殊库存 K/O/Q 的公司间交易:库存归属比位置更重要

目录里还有一类单独列出来的场景:公司间特殊采购(Q/K/L/服务)。这里的 K、O、Q 不是工厂仓库里的自有库存,而是 SAP 里的特殊库存类型。K 是寄售库存——物料放在你的仓库里,但所有权还是供应商的,消耗时才结算;O 是委外库存——你提供原材料给供应商加工,物料在供应商处,但所有权还是你的;Q 是项目库存——物料挂在某个 WBS 项目下,只能用于该项目。

特殊库存一旦卷入公司间交易,问题就复杂了:库存的位置、物权归属、结算对象三方可能不一致。比如 K 寄售库存从 A 公司转到 B 公司,不能简单做一个 301,因为原料还在寄售状态,还没发生所有权转移,转过去之后 B 公司消耗时的结算对象就变了。常见的实现思路上,这类场景需要先把特殊库存转换成自有库存,再做公司间调拨;或者在公司间 STO 行项目里直接指定特殊库存标识,让系统在后端过账时把库存从寄售/委外/项目的视野里切出来。

这里的判断准则是:特殊库存公司间交易,其实是在“普通库存的调拨流程”上叠加了一层所有权和成本归属的边框。你先把边框画清楚——消耗后结算还是移库即结算,归哪个 WBS、哪个成本对象——再决定用哪一套移动类型和结算配置。边框画错了,物料位置看起来都对,月底成本一结就出大问题。

4.4 公司间清算科目:跨公司调拨的会计枢纽

不管是工厂间转储里的跨公司调拨,还是完整的 STO 开票流程,只要跨了公司代码,清算科目都是绕不开的。配置跨公司清账科目(OBYA)之后,供货公司的发货凭证里,借方记公司间清算科目、贷方记库存商品;采购公司的收货凭证里,借方记库存商品加差异、贷方记公司间清算科目。两边清算科目金额相等方向相反,集团合并报表时自动抵消。

这个机制保证了每一笔跨公司交易在单公司账上都是平的,又不影响集团整体的库存和损益。很多实施项目在测试环境里跑 STO 流程,物料凭证都过了,但会计凭证不平,十有八九是 OBYA 里清账科目没配全,或者配置到了错误的科目表。公司间交易能不能闭环,看清算科目就知道。

5. 配置与常见问题排查:UB 转储与 STO 最容易翻车的五个点

# 关键配置路径参考 物料管理 -> 采购 -> 采购订单 -> 设置库存调拨订单 -> 分配凭证类型, 一步过程, 交货不足限度 物料管理 -> 采购 -> 采购订单 -> 设置库存调拨订单 -> 按工厂配置交货类型和可用性检查过程

5.1 现象:UB 转储单行项目没有装运页签,无法创建交货单

原因:按工厂配置的交货类型(DlTp)没有配置,或者配置了但可用性检查过程没维护。系统判断一张转储单“要不要走物流”全靠这个工厂级配置,没有它,行项目上根本不会显示装运页签,VL10B 也选不到单。

解决:SPRO 里按工厂维护交货单类型(如 NL)和库存类型的检查规则。改完配置后重新打开转储单,确认行项目出现装运页签。注意这是个工厂级配置,其他工厂即使同时启用,也必须逐工厂检查一遍。

5.2 现象:勾选了一步过程,但发货过账后收货工厂没有自动收货凭证

原因:一步法只在有交货单的情形下生效。没有交货单时,即使后台勾选了一步过程,系统实际走的是 351 发货 + 101 手动收货,一步法配置被静默忽略。这种翻车最隐蔽,因为配置看着没错,流程也能走,只是“自动收货”的预期落空了。

解决:先确认该工厂是否配置了交货单类型、转储单是否创建了外向交货单。没有交货单就不可能触发 647 自动收货。若不想加交货单,就接受两步法的现实,按 351 + 101 排流程。

5.3 现象:MB5T 查不到在途库存,但实物确实已经发运

原因:用了 301 一步法,或配置成 647 自动收货。这类移动类型在过账瞬间同时完成发货和收货,系统不产生任何中间态,自然没有在途库存可查。不是数据丢了,是方案本身把“在途”这个节点从设计上去掉了。

解决:如果业务流程需要在途可见(比如第三方运输、物权未交割),改用 303+305 或 641+101 两步法。如果只是希望月底对账快点,那就接受“无在途”的模型,别再去 MB5T 找数据。

5.4 现象:跨公司调拨的会计凭证不平,或者多出一笔无法解释的清算金额

原因:跨公司的清账科目没有配置,或者配置到了错误的科目表。同公司代码下的工厂转储不需要清算科目,跨公司必须配,这是常见遗漏点。尤其测试时很多人直接在同一个公司代码下模拟,等到真实跨公司跑 STO 才暴露。

解决:检查 OBYA 配置,确认清账科目在发货方和收货方公司代码下都有效。同时查看 641/647 过账后的会计凭证,看清算科目行是否成对出现。若不平,多半是科目确定规则里缺了工厂/公司代码的组合。

5.5 现象:UB 计划协议创建了,但系统没有产生任何可发货的需求

原因:计划协议的流程和标准采购订单不同,ME31L 创建之后必须用 ME38 确认交货计划行。未确认的交货计划不会生成可执行的需求,VL10B 自然一张单都挑不出来。

解决:用 ME38 对计划协议行做确认,生成可发货的交货计划行。确认时注意数量、日期、工厂是否完整。这是一个流程步骤,不是配置问题,但实施时经常被当成“系统 bug”来排查,白花时间。

五条经验里的共同规律是:大多数翻车都不是 SAP 没实现功能,而是某个配置开关(DlTp、一步过程、OBYA)处于“可用但未启用”的状态。排查时不要先怀疑数据,先沿着 2.3 节的配置路径把开关状态过一遍,再回头对移动类型和物料凭证。

6. 设计取舍:一步法还是两步法,本质是在途库存可见性

看完整套公司间交易的移动类型和配置,你会发现 SAP 并没有替你决定“哪种方案最好”,它只是把选择权精确地放在几个节点上:要不要交货单、要不要在途库存、自动收货还是手动收货。这几个节点的组合,构成了工厂间转储那两侧对照表里的六种方案。方案之间没有优劣,只有是否匹配现场条件。

我一般会这么理解这个取舍:一步法省掉的不是操作,而是“确认”这个动作;两步法多出来的也不是麻烦,而是“物权转移的时间窗口”。选择一步法,是默认发货数量与收货数量一致、且收货方不需要在系统里表达“我收到了”;选择两步法,是承认货物在途这段时间存在管理意义,需要有一个账面上的中间状态来承接风险。所以在真实项目里,这两个问题必须先问清楚:发货和收货是不是同一批人?在途库存要不要体现在报表里?

技术实现上,这个取舍被固化成了移动类型和配置的绑定:301/647 是无在途语义,303+305/641+101 是有在途语义,UB 转储单的有无决定能不能使用 647 自动收货。系统给了配置开关,但没有给你“随便改”的自由,一步法的生效条件死死绑在交货单上,这就是设计者留下的边界:想减少凭证,可以;想完全取消物流执行节点,不行。

从那以后我每次做蓝图确认,都会先问收货工厂一句:你们的收货岗位能不能保证在发货当天做 101 操作?答案决定了整套移动类型的选型。能,就两步法;不能,再退回一步法兜底;连有没有人做系统收货都不确定,那就回到 301 直接调拨。先用一个最低线的问题把场景框住,再进配置,基本不会选错方案。希望你也能用这个思路把公司间交易的各种场景理清楚。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 15:50:35

TPC-H V3.0.1实战指南:数据生成、查询执行与避坑全解析

简介:TPC-H V 3.0.1 是由事务处理性能委员会(TPC)官方发布的权威数据仓库基准测试套件,专为评估企业级数据库在复杂查询、多表关联与大规模数据分析场景下的吞吐量、响应延迟及可扩展性而设计,适用于数据库内核研发、数…

作者头像 李华
网站建设 2026/10/23 15:47:47

Rake接收机Matlab仿真:分集接收与合并技术详解

简介:这份资源面向无线通信、扩频与CDMA方向的学习者和研究人员,提供Rake接收机的Matlab仿真实现,用于理解多径衰落信道下的分集接收与信号合并机制。压缩包为rar格式,共2个文件,均为.m脚本,分别对应发射端…

作者头像 李华
网站建设 2026/10/23 15:11:14

Linux分区工具parted完全指南:GPT分区、在线扩容与自动化脚本实践

做服务器运维这些年,我几乎每天都要跟磁盘分区打交道。今天想认真聊一聊parted分区工具,这是GNU出品的一个命令行分区工具,也是我在处理GPT分区表、超大容量磁盘和自动化初始化任务时的首选。很多人一上来就习惯用fdisk,但碰到超过…

作者头像 李华
网站建设 2026/10/23 15:05:05

C# 实现 B站动态抽奖组件:从接口调用到随机抽取全流程

简介:BiliRaffle 是一款面向 C# 开发者与 B 站工具爱好者的动态抽奖组件,基于 bilibili-api 实现,可帮助用户快速搭建 B 站动态抽奖的自动化流程,适合具备一定 .NET 桌面开发基础、希望研究抽奖逻辑或二次开发的技术人员。资源包共…

作者头像 李华
网站建设 2026/10/23 15:01:03

零基础Python入门:从环境搭建到第一个可运行项目

简介:本资源为《Python Crash Course》第三版英文原版PDF电子书,面向零基础编程初学者及希望系统掌握Python核心技能的转行者与学生,提供从语法入门到项目实战的一站式学习路径。全书以清晰结构、渐进式练习和三大实践项目(Pygame…

作者头像 李华
网站建设 2026/10/23 14:58:54

RClimDex极端气候指数计算:从日值数据到27个监测指标

简介:RClimDex用户手册是一份面向气候科研工作者、气象业务人员及高校相关专业学生的权威参考资料,系统讲解由加拿大环境部气候研究分支开发的极端气候指数计算软件。资源为单份doc格式文档,压缩包仅约600KB,虽然以文字为主&#…

作者头像 李华