☰
SAP-MM公司间采购STO:移动类型、在途库存与清账配置
2026/11/3 15:54:14 网站建设 项目流程

简介:《SAP系统中关于公司间采购模式介绍归纳汇总》是一份面向SAP MM顾问、集团财务及供应链实施人员的专题课件,聚焦集团内部不同公司之间的采购、转储与结算场景,帮助读者厘清公司间交易与外部采购、工厂间调拨的边界。内容从公司间交易凭证兼具采购订单与销售订单功能的系统设计切入,依次展开UB转储订单的带交货单与不带交货单、一步法与两步法,公司间采购STO、计划协议、跨公司销售、集中采购,以及K寄售、O委外、Q项目等特殊库存下的公司间操作与配置,并附系统演示与总结对照表。资源包为1个pptx文件,约26.85MB,图文与演示截图集中,便于按章节通读或投屏讲解。目前已有319人学习。读者可据此掌握各类公司间方案的适用条件、移动类型组合、清账科目借贷关系与配置要点,积累可落地的实施与排错思路。

1. 一张凭证两个身份:SAP-MM 公司间采购到底在管什么

同一集团下 A 公司向 B 公司下一张采购单,A 公司打开看到的是采购订单,B 公司打开看到的却是销售订单——同一张凭证在两家公司眼里是两个身份,这是 SAP-MM 里公司间采购(STO)最容易被新人问住的地方。这份资料把工厂间转储、公司间采购、带交货单与不带交货单的一步法两步法,以及 K 寄售、O 委外、Q 项目这类特殊库存在公司间场景下的配置串成了一条线。它不是教你把按钮点一遍,而是让你在项目上能回答三个问题:这批货的物权在哪一步转移、在途库存要不要立刻体现在系统里、接收方到底有没有人坐在电脑前做收货确认。做集团多公司、多工厂 MM 实施和运维的顾问,看这份东西会比翻标准教材省事得多,因为里面全是按场景拆开的选择题,而不是一条流水线。

2. 工厂间转储的四条路:301、303+305、351+101 与 647 的分水岭

2.1 先想清楚物权、在途和凭证切分这三件事

工厂间转储在 SAP 里看起来都是“把库存从 A 挪到 B”,真正的区别藏在三个地方:物权什么时候从发出方转移到接收方、系统里有没有在途库存这个中间状态、以及一次业务要生成几张物料凭证。这三个问题定下来,移动类型基本就跟着定了,反过来先背移动类型再去套场景,项目上很容易出问题。

同一公司代码下两个工厂之间的调拨,最轻量的做法是 MIGO 直接做 301 一步法:发出工厂库存减少、接收工厂库存增加,同一张物料凭证、同一张会计凭证完成,没有在途库存,也没有“发了但没收”的中间状态。代价是接收方对数量没有确认权,发出方说发了多少,接收方账面就增加多少。两家工厂物理距离近、库存转移频繁、发出和接收是同一批管理者的时候,这个方案最省事,因为自己发、自己收,不需要再做一轮数据确认。

当发出和接收是两套人马时,301 就不好用了。接收方需要按实际到货数量确认,系统里就要有一个“在途”的中间状态,于是换成 303 发货加 305 接收的两步法:303 过账后发出工厂库存减少,库存在系统里进入在途,物权已经在账面上转移,接收工厂再用 305 按实际收到的实物数量入库。这两步是两张物料凭证,在途库存可以用事务码 MB5T 按工厂、物料、库存类型查出来。

再往上走到 UB 转储订单,逻辑还是一步法和两步法的组合,只是中间多了一张单据来做业务约束。不带交货单的 UB STO 用 351 发货、101 收货,带交货单的 UB STO 用 641 两步法或 647 一步法。这四种模式的关系,用一张表基本能说清:

类型移动类型是否要 STO是否要交货单有无在途跨公司时是否要配清账科目
MIGO 一步法301否否无是,跨公司调拨必配
MIGO 两步法303 发货 + 305 接收否否有是,跨公司调拨必配
UB STO 不带交货单351 发货 + 101 收货是否有是
UB STO 带交货单两步法641 发货 + 101 手动收货是是有是
UB STO 带交货单一步法647 发货,系统自动带 101是是无是

这张表不需要背,但选方案的时候一定要把它摊在桌面上对一遍,尤其是“有没有在途”和“有没有人做收货确认”这两列,它们直接决定后面财务对账时能不能查到货。

2.2 MIGO 直发:301 一步法和 303+305 两步法的实际操作

同一个公司下两个工厂之间的调拨,如果前面判断下来用 MIGO 直发,操作本身不复杂,麻烦的是参数填错之后系统给的报错不够直白。301 的路径是 MIGO 进“其他收货”或者“转储”,移动类型选 301,然后填物料、发出工厂、发出库存地点、接收工厂、接收库存地点和数量。这里有两个容易漏的参数:发出库存地点不填,系统会用物料主数据里的默认库存地点,碰上物料在多个库存地点都有库存时很容易发错;接收工厂的库存地点如果启用了仓储管理或者做了库存地点级别的可用性检查,数量不满足时会直接卡住过账。

事务码:MIGO 操作:转储 / 其他 移动类型:301 必填参数: 物料号 —— 必须在发出工厂和接收工厂都已有物料视图 发出工厂 —— 库存减少方 发出库存地点 —— 不填时取物料主数据默认值,容易发错 接收工厂 —— 库存增加方 接收库存地点 —— 必须已存在且允许该物料存储 数量 —— 按发出工厂的可用库存校验

303 加 305 的两步法要拆成两次操作。第一次 MIGO 选 303 发货,填发出工厂、库存地点、接收工厂,过账后发出工厂库存减少,系统生成在途库存;第二次 MIGO 选 305 收货,按实际到货数量填接收工厂和库存地点,过账后接收工厂库存增加、在途库存减少。这两次操作之间,任何一次数量填错都会让在途库存挂着,月底盘点前必须用 MB5T 把在途清掉,否则账面库存和实物对不上。

提示:303 发货后如果接收方迟迟不做 305,在途库存会一直挂在发出工厂名下。很多项目上线初期没人盯这个,三个月后 MB5T 里堆了一堆陈年旧账,处理起来需要走盘盈盘亏,不如一开始就约定好在途超过几天必须有人跟。

一步法和两步法怎么选,我给新人的判断口径比较土但管用:发出和接收是不是同一批人。是同一批人、距离近、频次高,就 301;是两批人、接收方要按实物确认数量,就 303+305。如果两个工厂之间还夹了第三方运输、需要拣配和装运单据,那就不是 MIGO 直发能覆盖的场景了,要往上走 UB 转储订单,带不带交货单再另外判断。

2.3 UB 转储订单不带交货单:ME21N 建单、351 发货、101 收货

UB 转储订单是不带 SD 交货单时最常用的一种 STO。它的业务含义是:需求工厂向供货工厂发起一张转储订单,这张单据在需求工厂侧是采购订单,在供货工厂侧是销售订单,供货工厂按订单发货,需求工厂按订单收货。和 301 最大的区别是中间多了订单这个业务约束——发货和收货都必须参考同一张订单,数量不能凭空多出来,财务上也有了可以追溯的业务依据。

建单用 ME21N,凭证类型选 UB,行项目里要填物料、工厂、库存地点、数量,还要在行项目的“交货计划”或者“装运”相关页签里把供货工厂指定出来。这里有个细节:UB 单据类型本身不代表一定不带交货单,带不带取决于后台有没有给这个工厂组合配置交货单类型。如果后台配了 DlTp(交货单类型)是 NL,行项目上会出现装运页签,系统就认为这张 STO 要走交货单流程;如果 DlTp 是空的,行项目上没有装运页签,走的才是 351+101 这条路。

发货用 MIGO,操作选“对采购订单发货”,移动类型 351,参考单据填刚才那张 UB 转储订单,系统带出物料、工厂、数量,确认后过账。351 过账后供货工厂库存减少,库存在系统里转入在途状态。收货用 MIGO,操作选“对采购订单收货”,移动类型 101,参考同一张订单,按实际到货数量确认,接收工厂库存增加、在途库存减少。两次过账生成两张物料凭证,在途状态可以用 MB5T 按“库存转储在途”这个库存类型查出来。

如果供货工厂需要按交期分批发货,UB 转储订单也可以走计划协议。ME31L 创建计划协议,ME38 维护交货计划,供货工厂按计划做 351 发货,需求工厂按计划做 101 收货。这条路径适合月度稳定供货、每批数量有波动的场景,单次转储频次高的时候能省掉大量建单操作。计划协议本身的配置要点和普通 UB 订单差不多,区别在计划行的交期和数量维护逻辑上,第一次做的时候建议先用一张 UB 订单把流程走通,再切计划协议。

2.4 跨公司时 UB 和 301 的差别:清账科目是一票否决项

前面讲的三条路径,放在同一公司不同工厂之间,会计凭证基本都是公司代码内部的存货科目一借一贷,最多差一个价格差异科目。一旦跨到不同公司代码,账务逻辑就变了:供方公司要减少库存,采购公司要增加库存,但两边不在同一个公司代码里,系统需要一个“公司间清算科目”来做中间过渡,否则过账直接报错。

具体的借贷关系资料里写得很清楚:供方公司借公司间清算科目、贷库存商品;采购公司借库存商品加差异、贷公司间清算科目。这个科目不是建个总账科目就完事,还要在后台按公司代码、按工厂组合去做自动记账配置,配置不完整时表现是过账时报“科目确定错误”或者“不可能确定账户”。很多项目上 301 在同一公司内跑得飞起,一跨公司就卡住,十有八九是这里没配。

跨公司做 301 或者 303+305 是可行的,前提就是这套清账科目配好。但即便配好了,我还是建议跨公司场景优先考虑 UB 转储订单,不是技术上行不通,而是业务上需要订单来约束数量和交期。301 跨公司时发出方说发多少就发多少,财务月底对账两边金额对不上,要倒回去查物料凭证,很费劲。UB 订单至少有一个订单号可以把采购、发货、收货、发票串起来。

3. 带交货单的一步法与两步法:VL10B、641、647 到底差在哪

3.1 为什么要引入交货单:拣配、装运点和运输环节

UB 转储订单不带交货单时,发货动作是一个 351 过账,系统只关心库存够不够、订单数量还有多少没发。这套逻辑在厂区内短驳没问题,一旦两个工厂之间隔着第三方运输、需要拣配打包、需要装运单据给司机,351 就不够用了。这时候要引入 SD 模块的交货单,把发货拆成“创建交货单—拣配—发货过账”三步,库存扣减发生在发货过账这一步,交货单本身承载了装运点、交货日期、包装、批次这些物流信息。

带交货单的前提是后台给 UB 单据类型配了交货单类型。SPRO 路径是“物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 按工厂配置交货类型和可用性检查过程”,在这里按供货工厂和接收工厂的组合把 DlTp 配成交货单类型 NL,同时把可用性检查规则配上。配完之后,ME21N 建的 UB 订单行项目上会出现装运页签,VL10B 才能根据这张订单批量创建交货单。

VL10B 是按采购订单批量创建交货单的事务码,进去之后选“采购订单”作为参考单据,填供货工厂、交货日期范围,系统列出所有可以创建交货单的 UB 行项目,勾选之后执行就能生成交货单。VL10D 是 VL10B 的一个变体,界面不同但底层逻辑一样,项目上习惯哪个用哪个就行。

3.2 两步法:641 发货过账、MB5T 看在途、MIGO 101 收货

两步法的第一步是在 VL02N 里对交货单做拣配和发货过账,移动类型是 641。这一步过账后,供货工厂库存减少,库存进入在途状态,交货单状态变成“已完成发货”。注意 641 只是发货过账,接收方还没有收货,账面在途挂在那里,可以用 MB5T 查“库存转储在途”这个库存类型看到。

事务码:VL02N 输入:交货单号 操作: 1. 点击“拣配”页签,录入批次 / 库存地点 / 实际拣配数量 2. 保存拣配 3. 点击“发货过账”,系统按移动类型 641 过账 结果: 供货工厂库存减少 在途库存增加(MB5T 可查) 交货单状态更新为已发货

第二步是接收工厂用 MIGO 做 101 收货,参考单据可以是交货单,也可以是 UB 转储订单,按实际到货数量确认。过账后接收工厂库存增加、在途库存减少,整个转储闭环完成。两步法生成两张物料凭证,在途库存有明确的生命周期,月底对账时可以用 MB5T 把还没收的在途清单拉出来,逐单跟催。

两步法的价值就在这个在途上。它把“发了多少”和“收了多少”分开记录,接收方有确认权,数量有差异时也能看得出来。代价是多一次操作、多一张凭证,而且必须有人负责收货,没人收货在途就一直挂着。

3.3 一步法:647 发货过账自动带 101,一张物料凭证收尾

一步法的操作入口也是 VL02N,区别是发货过账的移动类型变成 647。647 过账时系统会自动触发接收工厂的 101 收货,同一张物料凭证里同时完成供货工厂发货和接收工厂收货,没有在途库存,会计凭证也是一张。接收方不需要再做 MIGO 收货,交货单发货完成即代表双方库存都动了。

一步法适合接收工厂确实没有人做系统收货的场景。比如接收方是一个远距离的仓库或者第三方托管仓,只做实物交接、不在系统里点收货,这时候用两步法在途会一直挂着,反而制造了对账噪音,不如用一步法让发货即收货,账面干净。但一步法的代价是接收方失去了数量确认权,供货方发多少系统就收多少,实物短少只能在事后走盘亏或者差异处理。

注意:一步法只在有交货单的情形下生效。没有交货单的 UB 转储订单,根本不存在 647 这条路,只能走 351+101 两步。后台把“一步过程”勾上但 DlTp 没配,系统不会有任何提示,只是在做 VL10B 时创建不出交货单,然后有人以为是权限问题查半天。

3.4 配置开关:一步过程、DlTp 和移动类型的联动关系

判断一张 UB 转储订单走一步法还是两步法,配置上有两个开关:一是在“分配凭证类型、一步过程、交货不足限度”里,针对单据类型和工厂组合勾不勾“一步过程”;二是在“按工厂配置交货类型和可用性检查过程”里,DlTp 配没配交货单类型。这两个开关的组合决定了最终走哪条路。

一步过程DlTp 交货单类型实际走的路径在途库存
勾选配了 NL647 发货,自动 101 收货无
不勾选配了 NL641 发货,101 手动收货有
不勾选空351 发货,101 手动收货有
勾选空一步过程不生效,实际仍走 351+101有

最后一行是配置里最坑的组合:勾了一步过程但没配交货单类型,系统不会报错,一步过程就是不生效,实际跑出来还是有在途的两步法。项目上如果发现“明明勾了一步法,MB5T 里还是有在途”,先别怀疑移动类型配置,去看 DlTp 是不是空的。

这套配置是按工厂组合来的,不是全局开关。同一个单据类型 UB,A 工厂发给 B 工厂可以配成一步法,A 工厂发给 C 工厂可以配成两步法,取决于业务上接收方有没有人收货。实施的时候建议把这几个工厂组合列一张表,跟业务确认清楚每一组走哪条路,再进后台配,不要配完再回头改,改一次要重新测一遍流程。

4. 公司间采购 STO:五步与六步流程、公司间开票和特殊库存边界

4.1 公司间采购的标准流程:五步和六步差在哪一步

公司间采购和工厂间转储最容易混淆的地方是:工厂间转储解决的是同一公司下不同工厂的库存移动,公司间采购解决的是同一集团下不同公司之间的买卖。后者在系统里除了库存移动,还要走销售开票和采购发票校验,因为两个公司代码之间是真实的买卖关系,供方要确认收入,采购方要确认成本和进项。

标准流程有两种,区别只在收货这一步由谁触发。第一种是供方公司交货单发货过账后,系统按后台配置自动触发采购方工厂收货,流程是五步:采购公司 ME21N 创建公司间 STO,供方公司 VL10B 或 VL10D 根据 STO 创建交货单,供方公司 VL02N 发货过账,供方公司 VF01 或 VF04 创建公司间开票凭证,采购公司 MIRO 做发票校验。第二种不触发自动收货,采购方要自己根据交货单做 MIGO 收货,流程是六步,在发货过账和开票之间多了一步采购方收货。

五步流程(自动收货): 1. 采购公司 ME21N 创建公司间 STO 2. 供方公司 VL10B 根据 STO 创建交货单 3. 供方公司 VL02N 拣配 + 发货过账 4. 供方公司 VF01 创建公司间开票凭证 5. 采购公司 MIRO 发票校验 六步流程(手动收货): 1. 采购公司 ME21N 创建公司间 STO 2. 供方公司 VL10B 根据 STO 创建交货单 3. 供方公司 VL02N 拣配 + 发货过账 4. 供方公司 VF01 创建公司间开票凭证 5. 采购公司 MIGO 根据交货单收货 6. 采购公司 MIRO 发票校验

五步还是六步,本质上还是“接收方有没有人做收货确认”这个问题,和工厂间转储的一步法两步法是同一个判断逻辑。区别在于公司间采购多了一层财务含义:自动收货时采购方的库存增加和供方的收入确认几乎同时发生,两边账面对得上;手动收货时如果采购方迟迟不收,供方已经开了票确认收入,采购方库存还没入账,月末合并报表时会出现公司间未实现利润,合并抵消要单独处理。

4.2 公司间开票与发票校验:VF01 开什么,MIRO 对什么

供方公司用 VF01 创建公司间开票凭证,开票类型通常用公司间发票对应的类型,开票依据是交货单。这张发票在供方公司确认收入、确认应收,在采购方形成应付。采购方用 MIRO 做发票校验,参考采购订单和交货单,校验数量、金额、税额,通过后形成应付和存货成本。

这里的关键是价格。公司间 STO 的采购价格和供方开票价格必须一致,否则 MIRO 会报金额差异。实际项目里常见的问题是:STO 建单时价格取的是采购信息记录或者手工填的价格,供方开票时取的是公司间定价过程算出来的价格,两边如果没对齐,发票校验就会挂住。解决思路是把公司间定价过程配好,让 VF01 开票时自动带出和 STO 一致的价格,而不是靠人工在开票时改金额。

另一个常见问题是开票和收货的时点错位。供方发货过账后马上开票,采购方还没收货,MIRO 校验时系统会发现收货数量为零,报“收货数量不足”。这种情况要么等采购方收货后再开票,要么在 MIRO 里用交货单数量做校验基础,具体用哪种取决于项目上财务和业务的约定,没有标准答案,但必须在蓝图阶段就定下来。

4.3 特殊库存 K/O/Q 在公司间场景下的处理边界

特殊库存在公司间交易里是个放大器,普通库存跑通的流程,套到寄售、委外、项目库存上往往会多出几个字段、多几层校验。资料里提到的 K、O、Q 三类,分别对应寄售库存、委外加工库存和项目库存,它们的共同点是物权归属和普通自有库存不一样,所以公司间转移时的会计处理也要跟着变。

K 寄售库存的特征是物料放在客户或者供应商处,物权在消耗之前不转移。公司间场景下如果涉及寄售,要注意寄售库存本身不能直接用普通 STO 转储,必须先做寄售转自有、再做公司间转移,或者用寄售补货的专门流程。直接拿 UB 订单去转寄售库存,系统会报库存类型不匹配。

O 委外加工库存的特征是物料发给供应商加工,加工完成后收回。公司间委外比普通委外多一层:提供组件的公司和收成品的公司可能不是同一个公司代码,组件发出时要走公司间库存转移,成品收回时要走公司间采购。这条链路里 541、543、101 这些移动类型会混在一起用,配置上要确认组件和成品的特殊库存标识在两家公司都一致,否则收货时找不到对应的委外采购订单行。

Q 项目库存的特征是库存和 WBS 元素绑定,专款专用。公司间转移项目库存时,接收方的 WBS 元素必须已经存在并且状态可用,否则过账报错。项目库存的移动类型和普通库存一样,但库存价值要归集到对应的项目上,所以跨公司转移时除了清账科目,还要检查项目预算和承诺项,这一层经常被做 MM 的人忽略,最后是财务在月结时发现问题。

提示:特殊库存的公司间流程,不要拿普通库存的配置直接复制。K、O、Q 三类各有各的账户分配逻辑,复制过去跑第一次可能不报错,跑到月结或者项目结算时才发现价值归集错了,回头改数据的成本比重新配一遍高得多。

4.4 什么时候干脆退回 301/303+305 的简化路径

公司间采购不是所有场景都必须走 STO 加交货单加开票的完整链路。资料里明确提到,公司间交易也可以使用类似工厂间转储的方式,也就是 301 或者 303+305,前提是跨公司清账科目配好。什么情况下适合退回这条简化路径?两个公司之间不是真实的买卖关系、不需要开票、不需要确认收入,只是集团内部把库存从一个法律实体挪到另一个法律实体,财务上按成本价转移,这种场景用 301 比走完整 STO 链路轻得多。

反过来,只要涉及对外开票、涉及公司间利润、涉及税务要求,就必须走完整的公司间采购流程,因为 301 不生成销售发票,供方公司没有收入凭证,税务上交代不过去。判断标准不是技术能不能做,而是业务和财务要不要这张发票。

5. 避坑排查:五个在公司间场景里反复出现的翻车点

5.1 现象:后台勾了一步过程,跑出来还是有在途库存

原因基本只有一个:DlTp 交货单类型没配,或者配了但没配到对应的工厂组合上。一步过程只对带交货单的 UB 转储订单生效,没有交货单,一步过程这个开关就是个摆设,系统不报错、不提示,实际还是走 351+101。

解决分两步:先用 ME21N 打开一张新的 UB 订单,看行项目上有没有装运页签,没有就说明交货单类型没配;再去 SPRO 的“按工厂配置交货类型和可用性检查过程”里,按供货工厂和接收工厂的组合把 DlTp 配上,同时检查可用性检查规则是否也已经维护。配完重新建一张订单测一遍,不要拿旧订单测,旧订单的行项目不会自动带出新配置。

5.2 现象:跨公司做 301 或 351,过账报“不可能确定账户”

原因是跨公司清账科目没配全。同一公司内的工厂间转储,借贷双方在同一个公司代码,用存货科目就能平;跨公司时代收代付需要一个中间科目,这个科目要在自动记账配置里按公司代码、按业务类型配好,缺一个组合就报错。

排查路径是先看报错里的科目确定消息,找到是哪个公司代码、哪个业务类型没配,再去自动记账的后台补。补的时候注意供方公司和采购公司两侧都要配,只配一侧还是会报错。配完不要直接在生产上试,找一张测试订单在测试环境走完整流程,确认物料凭证和会计凭证都能生成。

5.3 现象:VL02N 发货过账提示“不可能为交货单确定工厂”

这个报错通常出现在跨公司交货单上。原因是交货单的装运点或者供货工厂在配置里没有对应到正确的工厂,系统不知道从哪个工厂扣库存。常见触发场景是 STO 行项目里的供货工厂填错了,或者交货单创建后有人手工改了工厂字段。

解决要先看交货单行项目的工厂字段和 STO 行项目是否一致,不一致就以 STO 为准修正交货单;一致的话再去查装运点和工厂的分配配置,看当前装运点是否允许这个供货工厂发货。改配置之前建议先用 VL03N 看交货单的完整状态,确认是配置问题还是数据问题,不要一上来就动后台。

5.4 现象:MIRO 发票校验金额对不上,差几分钱或者差一个税

金额差异在公司间采购里非常常见,原因通常有两类:一是 STO 价格和公司间开票价格取数逻辑不一致,二是税码在采购订单和开票凭证上不一致。前者要靠统一定价过程解决,后者要在 STO 建单时就确认好税码,并且让 VF01 开票时从订单带出同一个税码。

排查方法是先看 MIRO 的差异明细,确认差异是数量差异、价格差异还是税额差异。数量差异去查交货单和收货凭证的实际数量;价格差异去比对 STO 净价和开票净价;税额差异去比对两边的税码。已经过账的发票如果差异在容忍范围内,可以在 MIRO 里做差异处理;超出容忍范围的要冲销重开,不要硬调,硬调会把差异留到月结。

5.5 现象:351 发货过账成功,MB5T 里查不到在途

351 发货后理论上应该产生在途库存,查不到通常是两个原因:一是移动类型 351 的后台配置被改过,没有勾选生成在途库存;二是 MB5T 的查询条件填错了,工厂、物料、库存类型三个条件只要有一个不对就查不出来。

先确认 351 的配置,看移动类型是否还保留着生成在途库存的设置,这个配置在项目上被“优化”掉的情况不少见;配置没问题再检查 MB5T 的查询条件,库存类型要选“库存转储在途”,工厂要选发出工厂而不是接收工厂。两步法排查下来基本都能定位,定位不了就用 MB51 查物料凭证,看 351 那张凭证的库存类型字段到底是什么。

6. 对账与验证:用三个视角把公司间交易锁死

公司间交易跑通不难,难的是月底对账时能证明每一笔都对得上。我一般用三个视角交叉验证:凭证流视角、在途视角、清算视角,三个视角都平了,才敢说这条链路是干净的。

凭证流视角看的是业务单据有没有断链。一张公司间 STO 从建单到收货到开票,应该能用 STO 号串起交货单、物料凭证、发票。用 MB51 按订单号查物料凭证,能看出 351 和 101 是不是成对出现;用 VL06O 查交货单状态,能看出有没有发货了没收货的单;用采购订单历史看发票校验状态,能看出有没有收货了没开票的单。这三张清单拉出来交叉比对,断在哪一步一目了然。

在途视角看的是 MB5T。两步法产生的在途必须有明确的清理机制,超过约定天数还没收货的,要么跟催收货,要么走差异处理。在途长期挂账不只是库存数字不准,合并报表时还会影响公司间未实现利润的计算。

清算视角看的是公司间清账科目。供方公司和采购公司两侧的清账科目余额应该能对上,对不上就是有一侧过账了另一侧没跟上。我习惯用一段简单的 ABAP 查询把 STO、交货单、物料凭证、发票按订单号串起来,先看单据层面的完整性,再去看科目余额。

" 按采购订单号拉取公司间 STO 的单据链 " 用途:核对 STO -> 交货单 -> 物料凭证 -> 发票 是否齐全 REPORT zmm_intercompany_check. TYPES: BEGIN OF ty_result, ebeln TYPE ekko-ebeln, " 采购订单号 ebeln_dn TYPE likp-vbeln," 交货单号 mblnr TYPE mseg-mblnr, " 物料凭证号 bwart TYPE mseg-bwart, " 移动类型 menge TYPE mseg-menge, " 数量 rbeln TYPE rbkp-beltr, " 发票校验凭证号 END OF ty_result. DATA: gt_result TYPE TABLE OF ty_result, gs_result TYPE ty_result. " 1. 取公司间 STO 的订单抬头,公司间场景下 EKKO-BSART 常见为 UB SELECT ekko~ebeln INTO TABLE @DATA(gt_ekko) FROM ekko WHERE ekko~bsart = 'UB' AND ekko~loekz = ' '. " 2. 按订单号关联交货单行项目,找出已建交货单的 STO SELECT likp~vbeln, lips~vgbel, lips~vgpos INTO TABLE @DATA(gt_dn) FROM likp INNER JOIN lips ON likp~vbeln = lips~vbeln FOR ALL ENTRIES IN @gt_ekko WHERE lips~vgbel = @gt_ekko-table_line. " 3. 按订单号关联物料凭证,找出 351 / 641 / 647 / 101 的过账记录 SELECT mseg~mblnr, mseg~bwart, mseg~menge, mseg~ebeln INTO TABLE @DATA(gt_mseg) FROM mseg FOR ALL ENTRIES IN @gt_ekko WHERE mseg~ebeln = @gt_ekko-table_line AND mseg~bwart IN ('351', '641', '647', '101'). " 4. 按订单号关联发票校验行,确认发票是否已校验 SELECT rbkp~beltr, rseg~ebeln INTO TABLE @DATA(gt_rseg) FROM rbkp INNER JOIN rseg ON rbkp~belnr = rseg~belnr FOR ALL ENTRIES IN @gt_ekko WHERE rseg~ebeln = @gt_ekko-table_line. " 输出侧按订单号把三类单据合并,缺哪一类就说明链路断了 LOOP AT gt_ekko INTO DATA(ls_ekko). CLEAR gs_result. gs_result-ebeln = ls_ekko-ebeln. READ TABLE gt_mseg INTO DATA(ls_mseg) WITH KEY ebeln = ls_ekko-ebeln. IF sy-subrc = 0. gs_result-mblnr = ls_mseg-mblnr. gs_result-bwart = ls_mseg-bwart. gs_result-menge = ls_mseg-menge. ENDIF. APPEND gs_result TO gt_result. ENDLOOP. " 实际项目里会把结果 ALV 输出,人工只看有缺项的订单 cl_demo_output=>display( gt_result ).

这段查询不是让谁直接搬到生产上跑,而是说明核对思路:按订单号把采购、交货、物料凭证、发票四类数据串起来,缺哪一类就是链路断了。参数上要注意两个地方,EKKO-BSART 取公司间 STO 的单据类型,不同项目可能不叫 UB,按实际配置改;移动类型 IN 条件里 351 是不带交货单的发货,641 是带交货单两步法发货,647 是一步法发货,101 是收货,四个都要带上,少一个就会把某种模式漏掉。

三个视角跑顺之后,我一般的习惯是月结前先把 MB5T 的在途清单和清账科目余额导出来,跟业务确认一遍,确认完再让财务关账。从那以后我每次接手新的公司间场景,都会先把这三个视角的查询跑一遍再动手配,不敢直接信业务口头的“流程和上次一样”。希望帮到你。

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询