资讯动态

SAP公司间退货STO全流程详解:从配置到结算的实战指南

发布时间:2026/9/15 21:29:53 来源:尧图企业网站定制
1. 为什么会产生公司间退货STO先看清业务再动手SAP里的STOStock Transport Order库存转储订单做过供应链和MM模块的朋友都不会陌生。两个工厂之间调拨库存一张采购订单就能解决。可一旦牵涉到公司间这三个字事就没那么简单了——采购方和供货方是两个独立的公司代码定价、发票、结算、税每一环都要跟着走。而标题里再加一个退货意味着你还要把这套已经跑通的流程再按反方向走一遍。这篇内容的核心就是我在零售行业项目里落地公司间退货STO时用到的一套实现方式以及过程中踩过的坑和最终确定的方案。这不是纯粹的配置手册更像是一个项目笔记适合正在做SAP MM/SD模块的顾问、零售企业的供应链或财务同事在遇到子公司要往母公司退货或者关联公司之间退换货这类需求时能有个清晰的入手方向。先说业务。零售行业的公司间调拨最常见的是总部采购后统一配送到区域公司或者品牌公司把货供给销售公司。正向往返的逻辑系统里跑的是STO采购订单销售公司下采购订单给总部的工厂总部工厂做交货、发货过账销售公司收货接下来财务做公司间结算。那退货是怎么回事我在项目里遇到的场景大致有三类试销退回新品类先铺到区域门店试销效果不好剩余库存要退回总部仓再做调拨或报废处理。质量问题退供应商A公司卖给B公司的货B公司验收时发现外包装破损或者被门店退回后判为残次需要退回到A公司仓库。计划调整退仓区域公司预测做大了库存积压总部决定把一部分货退回中央仓重新分配到其他区域。这三类场景本质上都是货从下游流回上游。有人可能会问直接用退货采购订单或者做一笔反向STO不行吗系统当然支持各种实现但从财务和库存口径来看公司间关联交易下的退货最标准、最不容易出乱子的做法就是重新建立一张方向相反的STO订单把原供货方变成收货方原采购方变成发货方整个过程依然走STO的标准链条订单、交货、发货、收货、结算。这和直接冲销原始单据有本质区别。冲销意味着这笔交易不存在但实际业务是货确实流动过只是现在要逆向流动需要留下完整的审计足迹同时结算上也不能简单抹掉而是要形成一笔反向的金额挂到各自的应收应付上。退货STO就是为这个场景设计的。2. 整体方案设计单据流、资金流与结算路径怎么搭2.1 单据流主线先从订单到收货再看结算公司间退货STO的设计思路可以概括为一句话按正向STO的流程跑只是方向反过来。不要试图自己发明一套新的工具链而是复用标准功能。完整单据流是这样的退货方创建采购订单原来卖货的那家公司假设叫供货公司记为Plant A这次变成采购方创建STO采购订单供应商是原来买货的那家公司记为Plant B。这步用的是ME21N。原采购方做交货Plant B作为现在实际持有库存的一方对这个STO做外向交货用VL01N或者批量创建VL10B生成交货单。原采购方发货过账交货单做Picking、装运、发货过账VL02N库存从Plant B移出。原供货方收货Plant A做收货用MIGO移动类型通常是103/105或者按配置设定的收货移动类型。收货后库存进入Plant A。公司间结算用MM的库存转储结算MIRO/MKRI或者SD公司间发票的路径做财务结算。乍一看很简单但实际配置和操作里有几个坑必须提前处理。我们一个一个来说。2.2 角色切换为什么采购订单比内向交货单省事做退货方案的时候业务方常问一句话既然货是退回来的为什么不能直接做一张内向退货交货单Inbound Returns Delivery为什么非要再下一张采购订单我的回答是内向退货交货单确实能处理从供应商退回的场景但它是围绕SD模块的销售退货流程设计的默认会匹配原始的销售订单或外向交货单。放在公司间STO这个场景下你要么得去关联原来的正向STO要么得额外维护一套退货参照逻辑。这会让整个流程变得很重。而STO的本质是两个工厂之间的采购-供货关系它本身就是一张采购订单天然支持谁创建订单、谁作为供应商这种方向定义。退货时只需要反转双方角色原供货方变成下订单的一方原采购方变成供应商。这样整条链路上所有单据都是标准操作财务、库存、报表都能延续原有逻辑不需要改任何增强点。2.3 结算路径MM缝隙结算和SD公司间发票怎么选这是方案设计里最关键的一个决定。我在项目里见过两种主流做法第一种MM路径MIRO/MKRI做库存转储结算。退货STO的采购订单创建后Plant A在MIRO里做发票校验选择基于STO的结算选项系统根据交货和收货记录生成一笔公司间应付同时Plant B那边会相应产生一笔公司间应收。这个路径的优点是纯MM不涉及SD的出具发票流程对于不会用到SD定价、税和信用管理的零售客户来说落地最快。第二种SD路径外向交货单出具公司间发票。也就是说Plant B做外向交货之后在VL02N做完发货过账然后通过VF01出具公司间发票billing type IV把金额结算给Plant A。这种路径的好处是定价灵活可以走SD条件技术适合零售里经常涉及促销分摊、渠道价差、返利计算很复杂的场景。我在那个项目里最终选了MM路径。原因有几个人员背景是纯零售供应链财务希望结算规则简单直接涉及的商品价格就是标准采购价没有太多促销折扣更关键的是退货STO是偶发业务不想为了它额外配置一套SD billing的定价过程。如果你那边公司间调拨一直用的SD公司间发票那你退货STO也应该延续同一条路径否则财务对账会同时出现两套结算逻辑月底对账会让你崩溃。3. 后台配置与主数据准备动手前的关键设置3.1 工厂、公司代码与装运点先从组织架构理清关系做任何STO方案前第一件事是确认工厂和公司代码的映射关系。零售企业常见做法是每个区域公司一个公司代码下面挂一个或多个工厂/库存地点。公司间STO的前提是发货工厂和收货工厂必须分属不同的公司代码否则根本谈不上公司间。紧接着要检查装运点Shipping Point配置。STO交货单的创建依赖装运点确定系统靠发货工厂接收工厂交货类型的组合来匹配装运点。退货场景里发货工厂变成了原来收货的Plant B装运点自然也要跟着变。如果不提前配好Plant B对应的装运点VL10B批量跑的时候会直接报错没有找到装运点。我踩过最狠的一个坑就是正向STO一直跑得好好的退货STO一创建交货单就报错业务人员急得不行结果查下来就是Plant B没配装运点。因为在正向流程里Plant B只做收货不做发货从来没暴露过这个问题。3.2 交货类型与移动类型退货不是反向收货很多人以为退货STO的交货类型应该用销售退货的REReturns Delivery移动类型应该用653、654这些退货移动类型。但实际上公司间退货STO的交货类型完全取决于你配置STO采购订单时用的交货类型和装运点确定。这么说吧STO采购订单里有一个交货类型字段通常配置为NLCC或者DL类型系统在生成外向交货单时靠这个字段去找对应的交货类型。你在配置STO订单类型时可以单独复制一个退货STO订单类型把它的交货类型也指向一套独立的、允许退货标识的交货类型。这样这张退货STO生成的外向交货单从单据层面就和正向STO区分开了不再依赖原销售交货的逻辑。至于移动类型STO的发货过账和收货过账使用的移动类型是在后台库存转储-设置移动类型里定义的供货方和收货方可以分别设置。退货STO也可以用同一套正向移动类型因为逻辑上它就是一次正向的调拨只是发起方变成了原来收货方。这一点最好和财务提前确认清楚因为退货场景下有时候库存价值、批次成本、异动原因码需要和正常的正向STO区分。提示如果你们公司财务要求在凭证里能一眼看出这是退货建议专门复制一套移动类型比如601改为Z01并在移动类型上挂异动原因Movement Reason。这样库存分析报表里可以过滤出退货类型的转储不用对着原始凭证一个个翻。3.3 定价与价目表退货价怎么定公司间STO的定价核心是公司间转移价格也就是供货公司卖给采购公司的价格。正向STO里Plant A作为供货方出库时按成本价出然后公司间结算按转移价格结算给Plant B。退货STO的方向反转后定价逻辑也得重新想现在Plant B是发货方系统按成本价出库Plant A作为采购方需要按什么价格入账这个退货价通常是原始公司间结算价但你得在采购订单里手动维护或者通过条件技术从采购信息记录带出。我在项目里的做法是在创建退货STO的采购订单时价格字段直接敲原始结算价的负号不是随手乱写的而是经过财务确认的退货只针对于区域内未售出的库存不涉及销售返利所以价格就简单按原价退回。如果你们遇到的是部分商品损坏退供应商可能还要约定残值折扣那个就需要采购方和供货方再签一份退货协议。建议在实施初期就让业务提供一份公司间退货定价规则常见的有三种退货场景定价规则采购订单价格维护方式试销全额退回按原公司间结算价手工维护原价质量问题部分折价按协商折扣价手工维护折价计划调整退仓按原转移价格从信息记录带出千万不要试图在STO采购订单里走负数价格来体现退货SAP标准逻辑并不支持这种用法强行配置会导致发票校验时定价条件类型异常。3.4 订单类型与单据编号能复制就不要新建配置层面我的经验是复制标准的STO采购订单类型而不是从头创建一个全新的订单类型。理由很简单复制可以保留大量标准功能比如物料确定、批次确定、科目分配、货物接收标识等你只需要把外向交货标识、发票校验标识、订单类型特殊字段做微调即可。具体来说在后台配置路径物料管理-采购-采购订单-定义文档类型找到现有STO订单类型比如UB类型的复制品复制出一个ZSTO_R订单类型然后做四件事把缺省值-退货标识不勾选因为STO本身不是退货订单它只是方向反转的调拨单。确认货物接收标识勾上退货STO也是需要收货的。检查创建交货标识确保生成外向交货的逻辑还是走的STO链路。如果希望编号独立设置一个新的号码段。这里的核心认知是退货STO不是销售退货它就是一张新的STO采购订单只是Role Reversal角色互换。把这个角色换过来想清楚后续所有的交货、收货、结算配置就顺理成章了。4. 退货STO的完整操作流程一步一步拆给你看4.1 创建退货STO采购订单关键字段逐个说用ME21N创建退货STO采购订单核心步骤和普通STO一致但有几个字段一定不能错供应商填原采购方的供应商编码。以前Plant B向Plant A采购时Plant A是供应商现在反过来Plant B成为供应商。如果两家公司之间原本没有维护这层供应商关系主数据团队要提前创建。收货工厂填Plant A也就是原来的供货公司仓库。交货工厂这里要特别注意STO采购订单里的交货工厂实际上是由供货工厂字段控制的供应商主数据或者采购组织数据里会关联一个工厂。如果这个工厂指向错误后面交货单会从错误的库存地点发货。订单类型选择刚才复制出来的ZSTO_R。价格按前面说的退货定价规则维护。行项目里的收货标识确认勾选不勾的话MIRO结算是没法正常关联收货的。另外建议在采购订单抬头文本里写清退货STO-原单号XXX方便后续追溯。如果是质量退货最好在行项目文本里写明原因代码这样后面做批次追溯或质量分析的时候能查到原始信息。4.2 外向交货与发货过账和你熟悉的STO发货一致采购订单创建后Plant B的仓管员就可以在VL10B里批量选择这张STO单据创建外向交货单。因为是公司间调拨交货单类型应该走的是STO对应的交货类型不会有销售退货那套退货交货流程。交货单创建完成后在VL02N里做Picking拣配和发货过账Post Goods Issue。这步完成后Plant B的库存会扣减。实物层面仓管员根据交货单拣出货物打包、贴标、运到Plant A仓库。这里要注意批次问题。我在零售项目里遇到的情况是很多货都有批次管理比如食品、化妆品批次发货过账时系统会要求指定批次。如果退货的货和订单里的批次不一致发货过账会直接报错。通常做法是在STO采购订单行项目里启用批次确定或者干脆在发货过账时手工输入实际退货批次。如果发现原批次根本不存在了比如已经在Plant B被销售消耗掉了那就不能做STO退货只能走报损或盘亏流程。4.3 收货与发票校验这里容易出现重复收货Plant A那边收到货后用MIGO做采购订单收货移动类型按后台配置常见的是101或者103105。收货后Plant A的库存增加。紧接着是发票校验事务码MIRO。这里有个关键操作在MIRO里事务类型要选择公司间物料或者基于STO的选项系统会让你输入STO采购订单号然后自动带出结算金额。确认无误后过账生成Plant A对Plant B的应付。同时Plant B的财务会在同一笔公司间业务里收到一笔应收。这个对应关系是靠系统后台的结算科目和内部客户/供应商设置自动完成的不需要两边各做一个凭证。注意有些项目里Plant B发货过账后系统会自动生成对Plant A的应收凭证Plant A那边再在MIRO里做发票校验时如果配置重复会出现两边重复记应收应付的情况。所以上线前一定要和财务顾问一起把公司间结算的自动生成逻辑捋清楚确认到底哪一步生成应收、哪一步生成应付。4.4 财务结算对账月底跑平不能靠运气退货STO本身跑完之后月底对账是个重点。我的习惯是让财务跑三张报表库存转储报表用MB5L或者SAP标准库存报表过滤出Plant B到Plant A的库存移动确认所有移动都有对应的STO单据。公司间结算对账用FBL3N/FS10N分别查看两个公司代码的应收应付科目余额金额应该方向相反、总额一致。采购订单历史报表用ME2L/ME80FN查看这些退货STO的后续单据流确认订单、交货、收货、发票四个状态全部完成。如果对账有差异优先排查的通常是三个点有没有交货单没发货过账的有没有收货了但没做发票校验的有没有STO订单被业务人员随手改了价格导致两边金额对不上。这些问题在标准功能下都有迹可循不要急着上增强先看数据。5. 常见问题与排查技巧实录5.1 订单价格带不出来或者带出来是上次的价格退货STO采购订单的价格如果手工敲很容易出错。最典型的情况是订单创建后到MIRO结算时财务发现金额不对一查是业务员把退货价录错了。我的建议是如果是试销退货这类全额退回场景可以在采购信息记录里把公司间转移价格正常维护好然后在STO订单类型里配置信息记录更新或者条件类型默认值让订单从信息记录自动带出价格尽量减少手工录入。如果是折价退货那就在采购订单里强制要求填写备注同时在审批流程里让财务参与审核。5.2 批次错误导致发货过账失败前面讲过Plant B发货过账时批次不匹配是高频报错。排查方式是首先在MSC2N看看实际库存批次是否存在确认可用数量然后对比采购订单行项目的批次确定配置看是自动建议还是手工输入。这里分享一个实用技巧在STO采购订单里可以预先指定计划交货批次或者在物料主数据里设置批次确定规则让系统根据先到期先出或后进先出自动建议批次。不过这要和实操场景匹配如果仓管员实际操作时经常发现建议批次和实物对不上还不如直接手工输入省得一直报错后还要强制覆盖。5.3 MIRO结算时提示没有找到该订单的交货/收货记录这个报错九成是流程顺序问题。STO的公司间结算依赖交货单和收货凭证如果Plant B那边还没发货过账或者Plant A还没做收货MIRO自然找不到数据。排查顺序是先看VL03N查交货单状态是否已发货过账再看MIGO用采购订单号查收货记录。两步都完成后再回MIRO。如果两边都完成但仍然报错那就要检查STO采购订单的货物接收标识是不是不小心去掉勾了。5.4 退货STO的金额在报表里显示为正数有些项目财务会觉得退货应该是负数金额结果看到报表里产生的结算金额是正数心里一慌。其实不用慌因为公司间结算的凭证方向已经体现了退货逻辑Plant A产生了应付Plant B产生了应收金额方向正好和正向STO相反。这个相反是通过应付应收的方向体现的不是通过金额正负体现的。如果财务还是希望报表能明显区分正向和退货我的做法是给退货STO订单类型单独挂一个订单原因字段比如RET-TRAIL然后在写报表比如公司间交易明细表时增加一列订单原因这样就能一键筛出所有退货类业务。6. 几个能帮你少加班的设计细节选题和落地之间还隔着不少细节最后再分享几个我认为直接影响上线效果的点。第一退货STO的审批流不能和正向STO共用一套。退货涉及金额方向反转如果还在走正常调拨审批很可能出现采购经理看到订单金额是负数直接拒单流程卡住半天。我在项目里专门配置了单独的审批策略金额阈值和审批人都不一样退货由供应链负责人和财务同时会签。第二两个公司代码之间的货物移动要提前约定所有权转移点。正向STO通常是发货过账即转移所有权货在运输途中已经属于采购方。退货STO也一样Plant B发货过账后货就属于Plant A了。如果运输途中货损了按这个逻辑是Plant A的库存损失。这个规则要在项目章程里写明不然两个公司会为运输途损扯皮。第三考虑用替代Substitution自动带出订单原因。如果不想依赖业务员手工填订单原因可以在采购订单行项目上配置替代规则当订单类型ZSTO_R时自动把订单原因带为RETURN或者TRAIL。这个替代逻辑不复杂但能保证报表数据百分之百完整不会因为漏填导致月底统计不准。第四别忽略通知单。哪怕是公司间关联交易货物从Plant B退回Plant A之前最好在系统外或者SAP内建一张退货通知单记录退货原因、批次明细、质量说明等信息。STO订单可承载的文本信息有限这些额外信息后续做质量追溯、供应商索赔时非常有用。我在实际项目里最大的体会是退货STO不是一个高深的新技术它是对标准STO流程的一次方向反转按理说应该很简单。但正因为它是反着走的业务习惯、财务账务、人员操作都会不自觉地按正向来导致各种低级错误。所以方案设计时把角色反转讲清楚把定价规则定死把审批流分开这三点比任何配置都重要。如果你现在正在做类似零售公司间退货STO的需求建议先拿一条物料、一个小批量从订单到发票完整跑通一遍再放量。这一遍跑下来基本能暴露80%的坑。剩下的就边做边补吧。

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

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

免费获取报价