首页 / 资讯中心 / 文章详情

SAP MM公司间交易与工厂间转储:STO移动类型及配置避坑

SAP MM公司间交易与工厂间转储:STO移动类型及配置避坑 ★ FEATURED ARTICLE
简介这份PPT资源面向SAP MM顾问、集团企业IT实施人员及财务共享中心相关从业者系统梳理公司间采购与内部调拨的业务逻辑和系统配置思路帮助解决集团内跨公司交易中凭证性质、库存归属与清算科目处理等实际问题。压缩包共1个pptx文件约26.85MB以图文并茂的幻灯片形式呈现便于培训分享与查阅。内容涵盖公司间采购STO复合凭证的采购订单与销售订单双重属性、工厂间UB转储订单带交货单与不带交货单的操作差异、一步法与两步法的物料凭证与会计凭证生成逻辑以及无参考库存调拨的301、303305处理方式同时延伸至公司间特殊采购中的K-寄售、O-委外、Q-项目等特殊库存配置并涉及跨公司销售、集中采购与公司间计划协议等方案。已有319人学习适合需要快速建立公司间交易整体框架并对照系统演示查漏补缺的读者参考。1. 公司间交易一张凭证为何要同时成为采购订单和销售订单在 SAP-MM 里待久了总会碰到一个让人觉得有点玄学的设计同一张公司间 STO 单据采购公司打开它是采购订单销售公司打开它却是销售订单两个部门的人看着同一串单据号看到的东西完全不一样。这不是系统偷懒而是把一对天然对立的事实塞进同一个对象里让物权转移在系统里始终只有一个真相源。搞懂这个复合体后面 301、303305、641、647、351 这些移动类型为什么分岔公司间采购为什么要多走一道发票校验而工厂间转储不用就都能顺着推下来。反过来如果只记事务码不理解这层结构配置漏一项就会翻车凭证流断在半路连从哪儿查都不知道。2. 工厂间转储的三条分岔路301、303305 与 UB STO 差在哪先给结论这三条路解决的是同一个业务动作把库存从一个工厂搬到另一个工厂但它们对「物权什么时候转移」「发出方和接收方的责任边界在哪」「系统里要不要留下在途痕迹」的回答完全不同。业务上选错账面存货的归属就会跟实际仓库对不上月底盘点时就会非常麻烦。2.1 301 一步法发出和接收压在同一张物料凭证里301 是最简的一条路。在 MIGO 里选 301填发出工厂、接收工厂、物料和数量过账后系统生成一张物料凭证里面同时记录发出的减少和接收的增加会计上直冲两个工厂的存货科目差异进差异科目。这条路没有中间状态。货从 A 工厂装车的那一刻系统里 B 工厂的库存就已经增加了哪怕车还在路上。所以 301 的适用场景很窄两个工厂物理距离近转移频繁发出和接收是同一批人在管不需要对方确认数量。原文给的判断标准很直白自己发、自己收不需要数据确认就用 301。301 的代价是责任模糊。货在路上丢了、少了系统里查不到任何痕迹因为系统认为它已经到了。这是标准的问题来源一旦出问题连追溯的入口都没有。2.2 303305 两步法在途库存是物权的中转站303 把库存从发出工厂发到在途此时发出工厂的库存减少在途库存增加用 MB5T 可以查到。这一步完成后按原文的说法物权已经发生转移货不在发出方账上了也不在接收方账上而是挂在一个中间态。等实物到了接收工厂做 305把在途库存转成自己的非限制使用库存。两张物料凭证中间隔着一个可以查、可以对账的在途池子。这条路的价值全在「在途」这两个字上。接收方没确认收货货就不算到发了 10 个实际到 9 个差异在 305 那一步就能暴露出来而不是等盘点才发现。代价是操作量翻倍而且要有人盯着 MB5T 里的在途别长期挂着不收挂久了就成了月末对账的死角。把移动类型的语义摊开看会更清楚移动类型事务场景执行方库存变化是否产生在途301MIGO 一步法转储任一方发出减、接收增同一张物料凭证否303MIGO 发货到在途发出工厂发出减在途增是305MIGO 从在途接收接收工厂在途减接收增是收到即清351对 STO 发货不带交货单发出工厂发出减在途增是101对 STO 收货接收工厂在途减接收增是收到即清641VL02N 交货单发货过账发出工厂发出减在途增是647VL02N 交货过账并自动收货发出工厂一步完成同一张凭证否这张表里 351 和 641 的区别只有一条有没有 SD 交货单。这个开关在第 3 章展开。2.3 UB STO为什么工厂间搬货还要挂一张采购订单问题来了既然 301 和 303305 已经把库存搬完了为什么还要搞一个 UB 类型的 STO因为库存搬运只是这件事的一半。真实的工厂间调拨还要回答谁批准这次调拨、发多少、什么时候发、走哪家运输、按什么价格结算、发货不足怎么处理。301 和 303 里没有这些字段它们只是库存事务不是业务凭证。UB STO 补的正是这层。它是一张采购订单需求工厂是采购方供货工厂是供应方行项目里带工厂对可以挂交货计划、可以走 SD 交货单、可以做拣配和发运、可以有价格条件。原文把这种设计叫复合体本质是让库存事务拥有业务凭证的骨架。不带交货单的 UB STO 走 351101。时序是需求工厂 ME21N 建 STO供货工厂在 MIGO 里对这张 PO 做 351 发货到在途需求工厂做 101 收货。351 不经过 SD所以没有交货单、没有拣配、没有发运单适合不需要运输管理的场景。带交货单的 UB STO 走 641 或 647。641 发货后在途挂起接收方手工 101647 是发货过账的同时系统自动完成 101同凭证、无在途。这两条路的差别就是一步还是两步。再补一个变体UB 转储计划协议ME31L 创建ME38 确认交货计划发货仍是 351101。原文把它单列出来是因为高频调拨场景下一单一单建 PO 效率太低用计划协议把一段时间的交货计划一次性确认掉。计划协议解决的是单据量问题不是库存逻辑问题这一点别搞混。3. 交货单是个开关DlTp、一步过程与 647/641/351 的分流配置没吃透的时候最容易出现的困惑是明明配了 STO为什么有的能建交货单有的不能明明勾了一步过程为什么过账出来还是 641答案都落在两张配置表上。3.1 DlTp 有没有配决定行项目有没有装运页签配置路径是 SPRO → 物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 按工厂配置交货类型和可用性检查过程。这张表的粒度是供货工厂加接收工厂的组合每个组合上挂一个交货单类型 DlTp 和一套库存类型的检查规则。DlTp 为空UB STO 的行项目就没有装运页签前端只能走 MIGO 351系统根本不给你建交货单的入口。DlTp 配了 NL 之类的交货类型同时配了库存检查规则行项目才会出现装运页签VL10B/VL10D 才能根据这张 STO 选出交货单。这是最容易出问题的一步业务说要走交货单发运结果配置里 DlTp 空着前端怎么点都找不到装运页签第一反应往往是权限问题或者版本差异其实只是这张表没配。配完之后还要退回 PO 重新进一次行项目页签才会刷出来。3.2 一步过程勾选647 只在有交货单时才生效另一张表是 SPRO → 物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 分配凭证类型、一步过程、交货不足限度。这张表按供货工厂、接收工厂、凭证类型三个维度定一步过程标识。勾了一步、且有交货单VL02N 发货过账时走 647系统在同一张物料凭证里自动完成 101 收货不留在途。不勾一步走 641发货完成产生在途接收方手工 MIGO 101。原文特别强调过一句一步法只在有交货单的情形下生效。也就是说没有配 DlTp、走 351 的场景一步过程这个勾选不起任何作用永远是 351 发加 101 收的两步节奏。这条约束经常被忽略导致有人反复调一步过程标识却看不到任何变化。顺带说下这张表里的交货不足限度。它管的是发货数量和订单数量的容差超过限度要报错或警告。做公司间场景时这个值别设得太宽宽到发货方少发 20% 系统都不提示接收方那边的差异就只能靠人工发现了。3.3 跨公司清账科目借贷方向在哪一步翻面同一公司下不同工厂之间调拨会计上只动存货科目和差异科目简单。跨公司就不一样了两个工厂分属两个法人主体不能直接冲减对方的存货必须过一个中间科目公司间清算科目。原文的借贷关系写得很清楚供方公司这边借公司间清算科目贷库存商品 采购公司这边借库存商品加差异贷公司间清算科目。这个科目在月底是要对账清掉的它本质上是集团内部的一笔往来挂账。所以配跨公司转储只配移动类型远远不够还得把这个清账科目配到对应的事务键上否则过账时直接报「科目未找到」凭证流当场中断。提示跨公司场景建议先在测试环境把 301 或 303305 跑通确认清账科目能正常带出再去配 STO 这一层。反过来做出错时很难分辨是科目问题还是配置问题。还有个细节值得注意原文提到公司间交易也可以不用 STO直接走类似工厂间转储的 301 或 303305前提就是配好跨公司清账科目。这条路在业务上合法但它绕过了采购订单这一层没有审批、没有交货计划、没有价格。什么时候能这么干取决于这次转移在财务上算不算一次内部购销。4. 公司间采购的闭环ME21N 到 MIRO 的两套节奏工厂间转储走到 UB STO 就到头了公司间采购还要再往前一步两个法人之间要开票、要校验发票、要结算。这一步加进来整个流程就从库存链路变成了采购销售双链路。4.1 五步与六步差别只在谁按下收货原文给了两套流程前四步完全一样采购公司 ME21N 建 STO供方公司 VL10B/VL10D 建交货单VL02N 发货过账VF01/VF04 开销售发票。分歧在第五步。如果后台配成 DN 过账后自动触发客户工厂收货那么 VL02N 发货过账的同时采购公司那边的收货已经生成五步就走完了。如果没配这个自动触发采购公司要自己拿 DN 或 PO 做一次 MIGO 收货然后进 MIRO这就是六步。这两套流程没有优劣只有组织现实。采购公司有仓储团队、有系统操作人员就走六步收货数量和实物对得上差异当场能发现采购公司只是个纯采购主体没人碰系统就走五步让系统自动接。判断口径和第 2 章里一步法两步法的判断口径是同一个接收方认不认这个数量。4.2 发票校验对冲VF01 和 MIRO 为什么必须成对公司间采购比工厂间转储多出来的那一层就是发票。供方 VF01 开的是销售发票采购方 MIRO 做的是采购发票校验。两张发票在系统里是两套凭证、两套编号、两套税业务上却是同一笔钱的两面。这里最常见的翻车点是发票校验的数量基准。MIRO 如果按收货做校验而采购方的收货还没做或者只做了一部分就会报数量超差。所以六步流程里 MIGO 必须排在 MIRO 之前五步流程里自动收货那一步没触发成功MIRO 一样过不去。另一个点是价格。公司间 STO 通常要配公司间价格条件让供方开票金额和采购方校验金额能对上。价格没配或者配错两边金额差一分钱月底对账就得手工调。做多了就知道公司间采购的对账痛苦程度跟价格条件的配置质量成反比。4.3 特殊采购与特殊库存骨架没变落点变了摘要里点到的 K-寄售、O-委外、Q-项目还有原文目录里的服务类特殊采购看起来是另一套东西但放到公司间场景里骨架还是前面那套采购方建单、供方发货、收货、开票。变的是收货的落点。普通 STO 收进来是非限制使用库存寄售收进来落在寄售库存所有权还在供应商那边要到消耗时才结转委外收进来对应提供给外部加工方的库存项目库存在收货时就绑到项目号上后续所有移动都带着这个项目维度。这套编码在不同企业里叫法不完全一致常见的实现思路是把它统一理解为特殊库存标识加特殊采购类型的组合配置时两边都要对上。所以配这类场景光配 STO 不够行项目里的特殊库存标识、特殊采购类型、账户分配类别都得一起对上错一个就会出现收进来的货不在预期库位、或者成本没落到预期对象上的情况。注意特殊库存的公司间转移在途库存的查询口径和普通库存不一样。MB5T 里能不能看到取决于特殊库存标识有没有带到在途那一层查不到先别急着判定配置错了。5. 避坑与排查凭证流断在半路时该看哪几个地方5.1 现象VL10B 选不出 STO 对应的交货单原因DlTp 没配或者配了交货类型但库存检查规则没配。行项目没有装运页签VL10B 的选单逻辑里自然筛不出这张单据。解决回到设置库存调拨订单的按工厂配置表确认供货工厂加接收工厂这个组合有记录、DlTp 有值、检查规则指向带库存检查的那一套。配完退回 PO 重新进一次行项目装运页签才会出现。5.2 现象勾了一步过程发货过账出来还是 641原因一步过程只对带交货单的场景生效而且取值取决于凭证类型和工厂对的组合。如果实际走的是 351一步勾选本来就不起作用。解决先确认这张 PO 有没有装运页签、有没有建出交货单。没交货单的话一步法这条路根本不存在再怎么翻配置也没用有交货单还要确认配置表里的凭证类型跟实际 PO 的凭证类型一致。这一步我一般会让配置人员把工厂对和凭证类型念一遍比对着系统查快得多。5.3 现象跨公司转储过账时报「科目未找到」原因只配了移动类型没配跨公司清账科目。同一公司不同工厂不需要这个科目所以很多人先在单公司环境测通一上跨公司就出问题。解决检查对应事务键下清账科目有没有配到这两个公司代码同时确认借贷方向和原文给的一致供方公司借公司间清算科目、贷库存商品采购公司借库存商品加差异、贷公司间清算科目。5.4 现象MIRO 提示发票数量超过收货数量原因发票校验按收货做但收货还没做或者只做了一部分。五步流程里自动收货没触发成功、六步流程里 MIGO 被漏掉都会卡在这里。解决先用 MB5T 看还有多少在途再看采购公司的收货凭证有没有生成。在途还挂着说明接收方的 101 没做让接收方补一张 MIGO 再跑 MIRO。5.5 现象MB5T 里查不到在途库存原因走的是 301 一步法这条路径本来就不产生在途或者走了一步法 647系统自动收货时同凭证里已经完成接收。解决这不是故障。确认在途之前先看移动类型是 301/647 还是 303/351/641前者没有在途是设计如此。排查单据流的时候手工翻表也能做但单据量一大就必须借助数据。下面这段查询思路我用得比较多先把 UB 类型 STO 拉出来再去交货单里找有没有对应的前置凭证 找出 UB 类型且未删除的 STO 行项目 SELECT ekko~ebeln, 采购订单号 ekpo~ebelp, 行项目号 ekpo~werks, 接收工厂 ekpo~reswk 供货工厂 FROM ekko INNER JOIN ekpo ON ekpo~ebeln ekko~ebeln INTO TABLE DATA(lt_sto) WHERE ekko~bsart UB 库存转储订单类型 AND ekko~loekz 排除已删除的订单头 AND ekpo~loekz . 交货单行项目通过 VGBEL 回指前序凭证STO 场景下就是采购订单号 IF lt_sto IS NOT INITIAL. SELECT lips~vgbel, lips~vbeln FROM lips INTO TABLE DATA(lt_dn) FOR ALL ENTRIES IN lt_sto WHERE lips~vgbel lt_sto-ebeln. ENDIF. 两边比对lt_sto 中存在的而 lt_dn 中缺失的就是没有生成交货单的行项目这段代码的关键参数有三个EKKO-BSART 是订单类型UB 代表库存转储订单EKKO-LOEKZ 和 EKPO-LOEKZ 是删除标识必须排除否则一堆历史作废单据会污染结果LIPS-VGBEL 是交货单行项目上记录的前序凭证号STO 场景下正好回指采购订单号。另外 FOR ALL ENTRIES 之前必须判空这是 ABAP 的老规矩内表为空会导致查询结果异常。字段名以实际系统为准不同版本的表结构可能有微调。6. 一步还是两步在数据及时性和责任边界之间做取舍把前面几章收拢起来真正要做的判断其实只有两个问题接收方认不认发货数量在途状态要不要在系统里可见。这两个问题的答案组合起来方案基本就定了。场景特征推荐方案判断依据同公司、两厂距离近、转移频繁、同一批人管收发MIGO 301 一步法无在途操作最少不需要对方确认同公司、两厂分开管理接收方要按实际数量确认303 发 305 收在途可查差异能在 305 暴露跨公司需要第三方运输和发运单据UB STO 加交货单需要 SD 的交货和发运链路接收方有系统操作人员641 101 两步法库存数据有保障接收方没人碰系统647 一步法自动收货避免单据挂着不收高频批量调拨UB 计划协议 ME31L ME38减少单据量发货仍走 351101这里面的设计取舍很值得琢磨。一步法优化的是操作成本和系统里的在途挂账代价是放弃了一个可核对的中间状态两步法优化的是数据可信度代价是操作量和接收方的人工投入。SAP 把选择权交给配置而不是写死一个默认答案原因就是这两件事在不同集团里的权重完全不一样。我见过太多项目在方案评审时跳过这个问题直接按着上一家的配置抄一遍上线三个月后在月末对账上痛苦地补。从那以后我每次做公司间方案都会先把「谁认这个数量」这个问题在业务会上明确下来再去打开配置而且必须让接收方的人亲口确认他们有人能在系统里做那张 101。配置表可以改人的安排改起来要难得多。这份整理把工厂间转储、公司间采购、计划协议、特殊库存这几个场景的流程、配置路径和事务码对照放在了一起需要的时候翻出来对一遍比在系统里试错快。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站