简介这是一套聚焦SAP MM公司间交易场景的PPT演示文档由资深顾问整理适合SAP MM顾问、内部顾问和参与集团项目实施的人员学习。内容从公司间交易基础概念切入系统梳理了STO公司间采购、工厂间转储UB转储、无参考库存调拨、计划协议及特殊库存K寄售、O委外、Q项目等等典型业务的操作与配置方式。针对不同流程文档区分了不带交货单和带交货单两种模式并具体说明一步法、两步法的差异以及需求工厂创建转储订单、发货工厂拣配发货过账、收货过账等关键节点同时涉及公司间清算科目、移动类型351/101、641/101、301/303/305等的对应关系。资源为单个PPTX文件约26.85MB图文结合配有目录导航与系统演示截图便于按需查阅和复盘。目前已有317人学习是理解公司间交易全貌、快速查阅配置要点的实用参考资料。1. 一张公司间采购单为什么能同时扮演采购订单和销售订单SAP-MM模块里最反直觉的一张凭证大概就是公司间采购单STO。同一集团下的A公司向B公司下一张采购订单A侧打开的是标准采购界面B侧看到的却是一张可以挂交货单、可以做发货过账、可以开销售发票的销售凭证。同一个单号在两个公司代码里被解读成两种完全不同的业务对象这就是STO模式的核心。很多做MM的人第一次上手时容易把它当成跨公司调货随即在发货过账环节卡住不知道该用MIGO 351还是VL02N不知道该配SD交货单还是纯MM方案。搞清楚STO的凭证双面结构、移动类型的配对逻辑以及一步法和两步法的配置取舍才能理解SAP为什么能把集团内部交易做得像外部买卖一样规范又比外部交易省掉一整套报价和订单确认的往返。这套机制的底层逻辑值得从头拆一遍。2. STO的双面凭证结构SAP-MM框架下采购视图与销售视图的共线关系2.1 凭证的双面机制同一行项目如何驱动MM和SD两套流程素材里的理论定义说得很直白发生在同一集团下两个公司之间的交易业务SAP把公司间采购交易凭证设计成既有采购订单功能又有销售订单功能的复合体。这句话信息量很大。我们拆开看所谓复合不是两张单通过字段关联而是同一张凭证在数据模型上同时具备两种身份。对采购方来说STO是一张普通采购订单它有采购组织、工厂、库存地点、采购信息记录可以做收货、做发票校验MIRO。对供货方来说同一凭证在SD侧的销售视图里可以被交货处理VL10B/VL10D能按这张单生成外向交货单VL02N能做发货过账VF01/VF04能开销售发票。单号只有一个但MM的采购流程和SD的销售流程都挂在同一个凭证号下面跑。为什么会这样设计本质上集团内部交易是左手倒右手但如果做成外部交易那样一单一单对开就得维护PO和SO之间的引用关系发货、开票、对账全部要人工对平这样的冗余和出错率是集团不愿意背的。SAP的选择是让凭证在对象层做多态采购方需要的是采购语义销售方需要的是销售语义两边各取所需中间靠同一个单号保证流程贯通。会计上如何拆账跨公司交易不允许出现真正的应收应付两个公司代码各自记账差额全部集中在公司间清算科目上对冲。素材里给了明确的借贷关系供方公司借公司间清算科目、贷库存商品采购公司借库存商品和差异科目、贷公司间清算科目。这张清算科目表就是把一张物料凭证拆成两个公司代码账务的关键枢纽。2.2 移动类型链351/641/647与101/103的配对逻辑移动类型是SAP库存过账的动词。同样是集团内部转储选哪个动词决定库存落在哪、在途在哪、谁去收货。先看素材给出的完整谱系场景发货移动类型收货移动类型有无在途有无交货单MIGO一步法301发收同凭证无无MIGO两步法303305有无UB STO无DN351101有无UB STO带DN两步法641PGI101有有UB STO带DN一步法647PGI自动收货101自动无有这个表是理解公司间交易的地图。注意351和641的区别351是不带交货单的发货它只能手工MIGO过账641是带交货单的发货动作发生在VL02N对外向交货单做PGI发货过账时。两者的业务结果相似——库存进入在途等待接收方101收货——但前者没有物流执行对象后者有完整的外向交货单可追踪。为什么移动类型能跨工厂、跨公司更新库存因为移动类型定义了记账的事务代码组合、科目修饰、库存地点目标和特殊库存标识。以351为例系统知道这是库存调拨-发货物料凭证挂到在途这个特殊库存维度上641在带DN的前提下做同样的在途处理但凭证流里多出交付相关的SD单据。这里还要理解物料凭证和会计凭证的关系一次跨公司货物移动物料凭证可能只有一张但会计凭证会按公司代码拆成多张。普通库存发货是贷库存商品到了跨公司场景科目确定规则会把这一行替换成借公司间清算科目或贷公司间清算科目再配上差异科目吸收数量或金额差。这种替换不发生在物料凭证层而是发生在会计过账逻辑里所以配置不到位时最常见的问题就是过账时弹科目确定错误。2.3 SAP-特殊库存K、O、Q类型的公司间过账与配置要点特殊库存是SAP库存维度里多出来的一个坐标。普通库存用工厂库存地点就能唯一定位特殊库存还要叠加特殊库存标识伙伴/项目/订单号。素材点到的是K寄售、O委外、Q项目几种加上L线边库存都属于这个范畴。K寄售货在自己仓库但所有权还在供应商手里。公司间交易里把K库存转给另一家公司时不能简单按普通库存做库存转移要先处理所有权变更比如生成寄售结算或寄售转自有凭证否则物权归属和账务会对不上。O委外原材料发到加工商处库存挂在委外加工商名下但所有权还是自己的。公司间委外加工场景里发料和收料都要携带委外加工的伙伴维度科目确定也要为这个组合单独配置。Q项目库存挂在项目WBS下公司间调拨会直接影响项目成本的归集比普通转储多一层成本对象检查。素材只给了名称和方向没展开细节。常见的实现思路是在移动类型配置里为这些特殊库存场景配置变式Movement Type Variants并在库存类型的检查规则里把特殊库存标识和移动类型配对。公司间过账若涉及K/O/Q库存科目确定规则要额外配一套特殊库存公司间清算组合否则系统会按普通库存的科目逻辑去找替身过账直接报错。这块在实际项目中经常和公司间发票校验绑在一起是SAP-特殊库存与公司间交易交叉处最容易埋雷的地方。3. 工厂间调拨全谱系301/303/305、UB STO与UB计划协议的适用边界3.1 MIGO无参考调拨301一步法与303305两步法的库存语义MIGO无参考调拨是工厂间转储里最轻量的方案因为它不需要任何上游单据直接对着物料做货物移动。301一步法的语义是发送接收一张MIGO凭证同时完成两家工厂的库存增减没有在途库存也没有物料转移界限。素材给了一个非常具体的判断标准同一公司下两个工厂距离很近、库存转移频繁、发送和接收是同一批管理者时优先用301一步法——自己发、自己收不需要数据确认。换成两波人管理情况就变了。供货工厂发了10个接收工厂必须按实际数量确认一次这时素材推荐303305303把货发到在途305由接收方从在途收进来。这样设计的好处是交接变成了系统可见的操作节点发货方看到在途接收方不点确认库存就一直挂在途中数量对不上时能从在途库存里倒查。一句话概括301适合心理账户一致的小团队303305适合有明确交接责任边界的场景。在途库存就是数字化了的交接凭证。3.2 UB转储订单带不带交货单的分水岭UB转储订单和MIGO直接调拨最大的区别是有参考需求工厂先创建一张UB类型的转储采购订单供货工厂基于这张单做发货而不是对着物料随便过账。这个参考带来的是流程可追溯性——谁发起的、发了什么、目标工厂是谁全部挂在凭证上。不带交货单时流程是需求工厂创建UB转储订单发货工厂MIGO 351发货需求工厂MIGO 101收货。行项目上没有装运Shipping页签系统里没有任何SD对象参与这适合仓库自己安排车辆、不需要拣配和装运跟踪的场景。带交货单时流程升级成供货工厂用VL10B/VL10D基于STO行项目生成外向交货单VL02N对外向交货单做发货过账移动类型641或647。有了交货单这个SD对象就能做拣配、装运、打印交货单给司机、跟踪物流状态。素材特别强调了一个分水岭规则DlTp交货单类型没配置UB STO行项目就没有装运页签配了NL这样的交货单类型并设置了库存类型检查规则行项目才会出现装运页签。这个细节说明走不走SD不是业务上拍脑袋决定的而是后台配置决定的。”装运页签是否存在“不是流程选择而是配置结果。这是STO与SD模块耦合最明显的节点。3.3 UB计划协议ME31L与ME38的按计划拉动UB计划协议解决的是长期稳定频繁的转储场景。需求工厂用ME31L创建计划协议供货工厂在协议上用ME38确认交货计划后续按计划行Schedule Line执行。过账逻辑和UB STO一致供货工厂MIGO 351发货需求工厂MIGO 101收货有在途库存。它与UB转储订单的区别在头上计划协议是框架合同携带的是计划行而不是采购订单行项目。每天的重复转储不用反复建单直接在计划协议上刷新计划行供货方确认即可。素材里的操作顺序是创建UB转储计划协议确认交货计划发货工厂发货需求工厂收货——四步比UB STO少了一次建单的开销。很多团队把计划协议和框架订单混用其实两者拉动逻辑不同框架订单是刚性的数量承诺计划协议是带时间维度的滚动计划适合供货节奏由需求方定期更新的场景。3.4 选型判断距离、组织边界与人员安排决定移动类型素材给出了一套非常落地的选型逻辑值得原样保留同一个公司下两个工厂距离很近、库存转移频繁、发送和接收是同一批管理者优先MIGO 301一步法。两波人管理、发货数和收货数要确认MIGO 303发货产生在途库存接收工厂用305按实际数量接收。距离远、要走第三方运输一般选UB STO加发运功能。一步法还是两步法看接收工厂是否有安排人员做系统收货有人就两步法实在没人做系统接收就一步法但素材明确说优先推两步法库存数据有保障。注意这里库存数据有保障不是玄学而是指在途库存把物权转移和实物交接分离了。发货过账后货在途接收方不确认数量就一直挂在系统里不会被静默吞掉。一步法省掉了手动收货这个人但也丢掉了中间态的可见性账实万一有出入没有在途节点可以提供线索。选型本质上是控制粒度换人力成本。SAP把这几条路全部保留是因为业务在这些维度上的差异实在太大做成一刀切模板必然翻车。4. 一步法与两步法的配置决策DlTp、在途库存与SPRO路径4.1 一步法647101自动的系统执行路径一步法完整链路是需求工厂ME21N创建UB转储订单供货工厂VL10B/VL10D基于STO生成外向交货单VL02N对外向交货单做发货过账移动类型647系统自动生成101收货物料凭证需求工厂库存同步增加。关键机制在647这个数字上。647过账的同时系统会写两张物料凭证一张是发货凭证一张是自动的101收货凭证。会计凭证也可能按公司代码拆成多张但控制逻辑已经内置在这个一步过程里。素材提示配置路径是分配凭证类型, 一步过程, 交货不足限度——一步过程是个开关交货不足限度则决定发货数量和自动收货数量之间的允差。一步法下自动收货数量直接取发货数量没有人工确认环节所以允差配置在这里几乎不起纠偏作用它更多是给后续差异记账留一个口子。一步法的价值是省人接收工厂不需要任何人坐在系统前点收货。代价是货到底到没到、少没少没有中间确认点全凭运输方和库房的线下记录。素材强调一步法只在有交货单的情形下生效这句话的意思是没有DN配置的UB STO发货只能走351351天然存在在途和手动101根本不可能一步收口。4.2 两步法641101手动 / 351101的在途库存语义两步法包含两条相似路径带DN的641101手动收货不带DN的351101。两条路的库存结果一样发货过账后货进入在途库存接收工厂MIGO 101或对交货单收货后库存才落到目标工厂的非限制使用库存里。在途库存是SAP里一个独立的库存状态它不属于任何物理库存地点挂在目标工厂在途维度上。MB5T这个事务码就是专门查它的。素材里写MB5T看到在途库存实际操作中如果发现MB5T挂账越来越多基本可以断定是两步法配了但第二步没人做。为什么优先推荐两步法因为发货工厂已经把货发掉物权转移了但接收工厂还没确认收货这段灰色时期恰恰是丢数的高发期。两步法把这段时期变成系统可见的在途量账实差异可以从MB5T里倒查。一步法省了这张确认单代价是你永远不知道货是在路上、在门口还是在仓库角落没上账。对接收方有专人做系统收货的组织两步法是数据可信度最高的方案。素材的倾向很明确优先两步法库存数据有保障。4.3 SPRO配置路径与关键字段从分配凭证类型到按工厂配置交货类型配置路径是两条都在采购模块下物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 分配凭证类型在这里配置一步过程开关和交货不足限度。物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 按工厂配置交货类型和可用性检查过程在这里给工厂分配DN类型比如NL并配置可用性检查规则。第二条配置决定了行项目有没有装运页签也决定了一步法可不可用。第一步配置里的一步过程标志则决定有DN时过账走641还是647。两个开关组合起来就是一张完整的移动类型决策表DlTp交货单类型一步过程发货移动类型收货方式在途库存空-351101手动有已配置NL未勾选641101手动有已配置NL勾选647101自动无可以用下面的ABAP伪代码来理解系统的判断逻辑。注意SAP不同版本配置存储的字段名有差异这里只示意检查思路实际以SE16N查询为准* 伪代码校验UB转储订单的一步法配置 * 核心字段有两个维度订单类型 工厂 DATA(lv_has_dn) check_dn_type( order_type UB plant me_plant ). 工厂是否分配了交货单类型 DATA(lv_stkof) check_step_flag( order_type UB mov_type 647 ). 是否启用一步过程 IF lv_has_dn abap_false. WRITE: / 无DN类型UB STO只能走351101两步法有在途库存. ELSEIF lv_stkof abap_true. WRITE: / 已启用一步过程VL02N过账预期移动类型647系统自动收货. ELSE. WRITE: / 有DN但未启用一步过程VL02N过账移动类型641需要手工101. ENDIF.这个判断链解释了为什么很多项目里一步法怎么配都不生效DlTp空着系统根本进不了有DN的支路或者DlTp配了但一步过程标志没勾发货就还是641。两处配置必须同时到位647才会出现。5. 公司间交易的常见避坑五个翻车现场与排查路径做公司间交易配置的这半年我踩过、也看别人踩过不少坑。下面五条是血泪经验里最高频的每条按现象、原因、解决三步拆开。5.1 行项目没有装运页签现象创建好的UB转储订单行项目找不到装运页签VL10B列表里也抓不到这张单想生成外向交货单无从下手。原因按工厂配置的交货单类型DlTp为空系统解析不出DN类型。装运页签是否存在是配置结果不是流程选择。仓库想带交货单干活但后台没给这个工厂配NL类型系统就认为你不需要SD参与。解决去SPRO路径按工厂配置交货类型和可用性检查过程给对应工厂配置DN类型。配置完成后新建的STO行项目才会出现装运页签已存在的行项目可能需要调整或重跑一次单据流。配完先在测试工厂验证一次VL10B能抓单再放量。5.2 一步法怎么配都不生效过账总是641现象在分配凭证类型里勾了一步过程VL02N发货过账后生成的移动类型仍是641接收工厂还是得手工做101收货。原因翻车的常见原因有两个。一是该STO根本就没配DlTp行项目没有装运页签发货移动类型必然是351一步法压根不在选项内二是DlTp配了但一步过程标志或交货不足限度的设置不完整系统回退到两步法逻辑。解决先查DlTp是否已配置再查移动类型641/647对应的一步过程标志最后检查物料主数据的库存类型检查规则是否允许自动收货。按4.3节的判断链逐项排查647出现之前任何一项缺失都是白配。5.3 跨公司清账科目缺失导致过账报错现象MIGO 351发货时提示无法确定总账科目或者在清算科目上卡死物料凭证无法过账。原因跨公司的工厂间调拨必须在两个公司代码之间建立清算科目链路。供方要能贷库存商品、借公司间清算科目采购方要能借库存商品加差异、贷公司间清算科目。这套规则没配系统不知道差额往哪个科目放就直接报错。解决在后台的跨公司清账科目配置里按公司代码对建好清算科目映射同时检查物料评估类与科目表的对应关系是否正确。差异科目也要单独给路径否则数量差或金额差异入不了账。5.4 在途库存越滚越大MB5T查出来没人认现象两步法上线跑了一阵子MB5T里挂在途的单子越来越多有些实物早就签收进库了系统里还在途。原因两步法的第二步依赖接收方手工MIGO 101。收货人员没做、账号没权限、或者觉得反正货到了过几天再补——只要不点库存就永远挂在途。没有惩罚机制在途库存就成了业务里的灰色地带。解决立规则——发货过账当日必须完成系统收货确认把MB5T在途清单纳入每月盘点范围逐条清理如果接收工厂确实没有专人做系统操作就别硬扛两步法改成一步法至少不会让在途库存无限膨胀。5.5 特殊库存参与STO库存落到非限制使用现象K寄售或O委外库存走公司间STO后系统把物料过到了非限制使用库存所有权和实物状态对不上账。原因移动类型配置里没有为特殊库存场景设置变式。库存类型K/O/Q/L是移动类型可以操纵的维度没配变式时系统按普通库存的逻辑处理于是K寄售库存被当成自由库存移动物权的账务逻辑全部错位。解决在移动类型配置里为特殊库存场景配置对应的变式并检查库存类型的检查规则寄售转自有库存要先做寄售结算不能拿641/647直接怼。凡是物料主数据里带特殊库存标识的过账前都要确认配置里带了特殊库存维度。6. 设计取舍的思考为什么SAP保留这么多看起来重复的转储方案301、303305、351101、641101、647101、UB计划协议——第一眼看是一团重复本质上却是一个控制粒度谱系。拆开看每条路径都在回答三个问题要不要采购单据参考要不要在途库存中间态要不要SD交货单参与MIGO 301答案全是不要最轻量UB STO带DN二步法答案全是要最完整。SAP把这套选项做成配置而不是流程模板核心哲学是流程不可逆性越高配置选择越重要。集团里A公司仓库自己人调货和B公司用第三方物流跨省送货需要的控制粒度完全不同一刀切必然牺牲某一侧的效率。一步法的价值是省人但它省掉的恰恰是那道确认动作。两步法多一道101却把物权转移和实物交接分离成了一个在途库存节点数据上留痕账实查起来有据可依。素材说得很直白能有接收人员优先两步法。这句话背后是朴素的工程观念——库存数据不透明时出错的代价远比省下的那点人力成本大。所以配置选择真正权衡的不是哪种方法更高级而是你的组织能不能承受在途库存这个中间态操作。能承受两步法不能一步法是止损的妥协。从那以后我每次在项目里定方案前都会强制先画一张流程矩阵谁发起、谁发货、谁收货、要不要在途、有没有DN五条线钉死才开始配SPRO再也不凭感觉选移动类型了。这套整理把从工厂间转储到公司间STO、再到特殊库存的路径都归拢到了一处用到哪个场景直接对照着查能省不少翻配置的力气。希望帮到你。本文还有配套的精品资源点击获取