做SAP MM的顾问和实施,一定会碰到公司间STO(Stock Transport Order,库存转储订单)这个场景。哪怕是刚入行的顾问,简历上不写两句“公司间STO”都不好意思投项目。原因很简单——只要企业有多个公司代码,并且涉及集团内部调拨库存,公司间STO就是绕不开的标准解法。而这玩意儿的坑,恰好也藏在“标准”两个字里:配置链路长、单据类型多,从后台到前台环环相扣,错一步就一路错到底。
我自己最早接触公司间STO,是在一个制造型集团的MM rollout项目里。当时用户提的需求是:A公司(生产厂)缺料,要从B公司(兄弟工厂)调一批原材料过来,双方“内部结算”,不涉及真正的外部销售和外部采购。听起来像是一个很简单的移库?实际动手做的时候才发现,它横跨MM、SD、LE、FI好几个模块,单是定价过程就有得折腾。所以这篇就把我积累下来的公司间STO实操经验做一个梳理,从业务场景、后台配置、前台操作到常见报错,尽量一次讲透。
在看具体配置之前,先确认我们说的是同一个东西——公司间STO到底解决什么问题。
1. 公司间STO的业务本质与方案选型
1.1 什么样的业务场景会用到公司间STO
先不急着写配置,我们先把用户的真实需求捋清楚。公司间STO最常见的触发条件有几个:
- 同一个集团内有多个公司代码,分别是独立的法人主体,各自有独立的账套和库存管理。
- 其中一个公司缺料或需要采购,而另一个公司恰好有库存或者有产能,比如总部统一采购后分拨给各工厂、兄弟工厂之间互相调拨余料、成品调拨到销售公司等。
- 双方需要按内部结算价记账,不能做成免费移库,也不能做成外部买卖。
- 物流上经常涉及跨工厂甚至跨地域的发货和收货,不是简单的“同一个公司代码下的工厂间移库”。
如果以上条件满足三条以上,公司间STO基本就是首选方案。
在SAP里,实现公司间库存调拨不止一种方式。除了STO,常见的还有直接做一步法或者两步法的工厂间调拨(比如移动类型301/303/305),还有跨公司销售(Cross-Company Sales)。它们的核心区别在于:工厂间调拨不产生采购订单,也不产生公司间的应收应付;跨公司销售是走SD的完整销售流程,适合内部交易按“买卖关系”来管理。而公司间STO的核心特征是走采购订单(PO)+交货单(DN)+收货(GR)+发票校验(IV)的完整供应链链路,同时能自动产生公司间的应付/应收和库存转移。
举个实际的场景:集团下有两个公司代码,分别是1000(华东工厂,负责生产)和2000(华南工厂,负责部分原材料加工),但物料的主数据、采购、库存计划全放在2000。1000缺料了,向2000要一批半成品。这种“兄弟公司互相供料”的情况,用STO来做就是标准的Ansatz:1000下一张采购订单,供应商是2000,单子自动流到2000那边变成一张销售订单;2000按销售订单发货过账,库存从2000转出;1000收货入库,库存到1000的工厂;之后系统自动跑一个公司间发票流程,生成1000对2000的应付、2000对1000的应收。整个过程不产生真正的销售收入,但两个公司的账都是平的。
1.2 选STO而不选其他方案的原因
在实际项目里,我们经常被用户问:为什么不能直接让我用Migo做个转储?为什么非要搞销售订单出来?这个问题的答案不在于SAP能不能做,而在于业务上算不算得清账。
- 如果你只需要同一个公司代码下的A工厂转到B工厂,那用STO反而繁琐,直接用301/303再配上工厂级库存转移就够了,因为不涉及法人实体间的结算和税务。
- 如果涉及两个公司代码,但是“偶尔调拨一次”,财务上只是想用一个内部往来科目过渡,有人会选跨公司库存调拨+FI手工凭证处理。这种方案省了配置,却增加了人工凭证操作,月底对账容易乱,顾此失彼。
- 如果调拨频繁、数量大、种类多,并且要求可追溯、可审计,或者有内部转移定价规则,那公司间STO就是最合适的选择。
我个人的经验是:判断标准有几条——采购方是否需要在单据上做请购审批、公司间结算价是否随市场或成本变化、是否需要按单追溯发货和收货状态、双方财务是否都是独立结算的法人。只要这些答案是“是”,公司间STO就是综合成本最低、最规范的方案。
顺带说一句:公司间STO和公司内STO(两个工厂属于同一个公司代码)的区别不只是“公司代码不同”。公司内STO一般不需要销售订单和出具发票,只需采购订单+交货单+发货/收货;公司间STO则多了一步“出具公司间发票”的动作。在配置层面,两者共享部分后台表,但审批、定价、科目确定上差异不小。项目里千万别笼统地称为“STO配置”,先把公司间还是公司内定义清楚。
2. 公司间STO的后台配置拆解
说实话,公司间STO的项目里,最花时间的不是写文档,而是调后台配置。因为配置点分散在多个模块,SD侧和MM侧还要同时到位。在这一节里,我把最关键的几个配置环节拆开讲,特别是那些“配错了不容易发现、发现了又不知道怎么查”的点。
2.1 最关键的第一步:定义内部客户和关联供应商
公司间STO在单据上的逻辑是:采购方(需求公司)从“关联供应商”采购——这个供应商其实是集团内的销售公司;而销售方(供货公司)的系统里,会自动生成一张面向“内部客户”的销售订单——这个客户其实就是采购方。听上去很绕,说白了就是:两个独立的公司代码,通过客户/供应商主数据“互相认识”。
所以后台配置第一步,就是把这层关联关系配好在IMG里。核心路径是:
- SPRO → 财务会计 → 应收应付科目 → 客户科目 → 准备工具 → 定义内部客户(内部结算客户)
- SPRO → 物料管理 → 采购 → 供应商主数据 → 供应商准备 → 定义关联供应商(或直接用XD01/ XK01手工创建)
正常情况下,顾问会在每个公司代码下面创建一个专用的内部客户和内部供应商,主数据里会勾选“公司间业务”相关的控制参数,并且把SD的销售范围、装运数据维护好。否则后续创建销售订单的时候,找不到对应的销售范围,流程就会断在源头。
这里有个实际操作上的提醒:内部客户和内部供应商的编号,尽量用有规律的编号段,比如内部客户一律用Cxxxx,内部供应商一律用Vxxxx,这样在报表和业务人员日常使用中一眼能分辨出来,排查问题时也不会把“内部客户”和“真正的外部客户”搞混。我在之前的项目里就吃过编号不规范的亏——有个工厂的调拨异常,业务方拿着单据来找我,我一看单子上的客户号是外部客户的号段,但名字却是兄弟公司,第一反应以为是主数据关系搞错了,查了半天才发现是客户主数据里销售范围分配错了,极其耽误事。
2.2 单据类型与项目类别:采购订单和销售订单如何联动
公司间STO的采购订单需要指定“单据类型”,这个单据类型必须是**在IMG中启用了后续的“订单类型”**的,也就是它要能在后台对应到销售方的订单类型和项目类别。用UB(库存转储订单)或者UB类型的变式是常规操作。
关键路径:
- SPRO → 物料管理 → 采购 → 采购订单 → 定义单据类型:确认UB或自定义的STO单据类型里,在“后续单据类型”和“项目类别”字段填上对应SD订单类型(如OR),项目类别填TAS(库存转储)。
- SPRO → 销售与分销 → 销售 → 销售单据 → 销售单据抬头 → 定义销售单据类型:检查OR是否启用,尤其是“交货单”相关的字段。
- SPRO → 销售与分销 → 销售 → 销售单据 → 销售单据项目 → 定义项目类别:确认TAS的项目类别设置,比如在“项目类别”里勾选“库存转储”,以及是否允许自动建立采购订单。
这里要重点讲一下“项目类别”的机制。公司间STO的PO里,行项目默认是TAS,系统一保存PO,就会自动跑到供货方公司代码下生成一张销售订单。这张销售订单的项目类别决定了后续交货的流程方式。如果配置不对,最常见的症状是:PO保存成功了,但是没有自动生成销售订单,或者生成了销售订单但后续DN不能做。排查的顺序是:
- 看PO的项目类别是不是TAS;
- 看TAS对应的“后续项目类别”是否填对了;
- 看销售订单的项目,对应行项目类别是否有问题。
如果你检查了配置觉得都对,问题还是存在,那大概率问题出在“采购组织/工厂分配给公司代码”和“工厂的装运数据”上。记住,公司间STO是全链条的信息流转,有个比喻可以帮助理解:采购订单就是“请购信号”,销售订单是“接单信号”,销售订单都生成不了,后面全是空中楼阁。
2.3 装运与交货配置:没有DN就等于没发货
公司间STO有一个区别于普通采购的核心点:采购方做收货(GR)之前,销售方要先做发货过账(PGI),而这个发货是基于交货单(DN)来做的。也就是说,整条链路的“物流中心”实际上是SD的交付流程。
后台需要配置的关键点:
- SPRO → 后勤执行 → 装运 → 交货 → 定义交货项目类别:确认采购订单相关的交货类型、项目类别能匹配上。
- SPRO → 后勤执行 → 装运 → 交货 → 在发货和收货时定义项目类别确定规则:确保STO过程中,创建DN时能正确确定交货项目类别。
- SPRO → 销售与分销 → 装运 → 交货 → 定义交货类型:确认DN类型(如LF)支持STO。
除了上述标准路径,最容易忽略的是装运点和收货方工厂的装运数据。如果销售方的工厂没有维护“装运点/收货点”,或者采购方的工厂没有维护“客户(内部)的装运数据”,那DN就创建不了。在实际项目中,我遇到的DN无法创建的问题几乎有一半都和装运点没配好有关,剩下的一半才是真正的问题在项目类别上。
顺带提一个我个人觉得好用的配置习惯:公司间STO的DN类型,有些项目会单独自定义一个,比如ZLF,而不是直接用标准的LF。好处是可以通过自定义类型设置不同的编号范围、页面布局和单据确定规则。同时,用自定义DN类型还可以在报表里单独区分“公司间调拨发货”和“外部销售发货”,统计上方便很多。如果你的项目没有特殊要求,用标准LF也完全没问题,但一定要在文档里说清楚逻辑,否则后期有人随便改了标准类型,影响面会很大。
2.4 定价过程:公司间结算价怎么算出来的
公司间STO在采购方看来是一张采购订单,在销售方看来是一张销售订单,而这张销售订单的价格,不是随随便便填的市场价,而是要按公司间转移价格来做的。这里属于最容易踩坑的重灾区,我把它单独拿出来强调。
如果在供货方(销售方)看销售订单,你会发现它的定价过程用的是SD的定价过程。但公司间STO的定价过程,通常应该和“正常外部销售”的定价过程不一样,原因很简单:公司间的结算价不应该受外部价格策略、折扣、促销影响,它更多是“成本加成”或“参考某个内部价目表”。它可以在后台VD01/VK11配置条件记录。
关键配置路径:
- SPRO → 销售与分销 → 基本功能 → 定价 → 定价控制 → 定义并分配定价过程:检查或新建销售订单的定价过程,确定公司间销售订单用的是哪个定价过程。
- SPRO → 销售与分销 → 基本功能 → 定价 → 定价控制 → 定义条件类型:确认PRS(价格)、KBET等条件类型的使用权限。
大部分项目里,公司间STO会走一个单独的定价过程,比如用PRS公司间价格作为主价格,通过条件记录维护“客户/物料”或者“物料/工厂”的转移价格。有些项目则干脆一点,用“标准成本”或“移动平均价”做转移价——这种情况下,可以通过定价过程中的公式取值来实现,不需要手动去输价格。
实际操作里最典型的问题是:采购方PO上的价格和销售方SO上的价格对不上。因为PO的净价格其实是从SO那边复制过来的;SO价格取不到,PO的价格也会变成0或取默认值。PO上的“信息记录”如果没有维护,或者定价过程没取到条件记录,价格就会异常。
所以我的建议是:在项目初期就把公司间定价规则定义清楚,要么以采购方的PO价格为基准反向复制到SO,要么以销售方的SO条件记录为基准同步到PO。不要两边各配一套,销售方说价格在PO端维护,采购方说价格在SO端维护,最后月底两边对账的时候哭都来不及。
2.5 科目确定:库存、收发差异和往来科目怎么配
公司间STO的会计凭证生成涉及多张凭证:销售方发货过账时生成一张会计凭证,把库存转出、确认发出商品;采购方收货时生成一张会计凭证,把库存转入;后续再跑出具发票,生成公司间的往来。
这是FI配置的核心,一般由FI顾问完成,但MM顾问也要了解,因为你得知道为什么收货之后财务那边会蹦出来各种奇怪的科目。
关键路径一般在:
- SPRO → 物料管理 → 评估和科目设置 → 科目确定 → 无向导的科目确定 → 配置自动记账。
- 尤其要关注:BSX(库存记账)、GBB(库存转储/收货/发货差异)、PRD(成本差异)、WRX(采购价格差异/GR/IR清账)等事务的科目分配。
不同移动类型在发货/收货时会触发相应的“科目修改”和“价值链”,科目确定规则找错、没配全,系统就会在过账时报错“无法确定科目”。这个问题可以说是我做STO项目时遇到最多的FI侧报错。MM顾问和FI顾问联调的时候,一定要准备一个完整的科目确定测试矩阵:发哪种移动类型、对应哪种物料类型和评估类、消耗是计入成本还是库存,逐条检查。
这里再提一个比较绕的点:公司间STO通常有两种计价方式,一种是按库存移转价(good issue and goods receipt at plant price),另一种是按采购订单价。这两种方式下,发货时确认的“发出商品”和成本科目会不一样,科目的逻辑要跟着调。如果计价方式没跟财务确认,配置方向也很容易做返工。
2.6 出具公司间发票的配置
销售方给采购方开了“内部销售订单”,之后不能就这么算了,销售方还得开一张公司间发票(Intercompany Invoice),通过它生成采购方对应“应付”和销售方对应“应收”。
这张公司间发票的开票动作,通常是用VF01/VF04来执行,但它的单据类型、开票类型需要单独配置,一般是和FI的“内部结算”科目配合。配置路径主要是:
- SPRO → 销售与分销 → 出具发票 → 公司间出具发票 → 定义公司间出具发票的单据类型。
实际操作经验:如果是标准STO流程,采购订单创建后会自动生成销售订单,入库之后再去VF04做销售订单的开票。这里要留意,开票过程中可能会因为“定价过程”没取到价格而报错,或者因为“会计凭证的过账期间”没打开而报错。很多初学者在这里最容易卡住,以为自己的配置没问题就是数据刷不出来,最后发现根本是销售方的“开票计划”里没维护好出具发票类型和过账期间。
2.7 转移定价与附加成本:别漏了运费和税
一个很容易被忽略,却在真实业务里天天遇到的问题:公司间调拨,到底要不要算运费?要不要算税?
很多标准配置里,STO的定价过程很简单,只有物料价格。但如果两地在不同的地域,甚至报关/运输成本需要在内部结算中体现,那就需要在定价过程里加“运费”或“附加成本”的条件类型。比较常见的做法是维护一个统一的“运费条件类型”,在销售订单或采购订单中手动输入,或用公式自动计算。这个配置和采购订单的“条件”单子有关系,MM侧有时候还要配合服务采购订单,那要复杂一层。
税务方面,如果两家公司代码在同一个国家,且属于“同一法人”的增值税合并申报范围内,往往内部交易可以不计税;如果涉及不同税务登记号,则可能需要在公司间发票里计算销项税/进项税。这个具体规则一定要听财务的,不能自己想当然。税务配置牵扯“税收国家”和“税收确定过程”,不在MM的专职范围内,但MM顾问如果完全不关注,就会导致后续采购订单和销售订单的税码不匹配,过账数据出来两边对不上。
3. 实操流程:从公司间采购订单到最终对账
配置说完,实操演示也得上。很多顾问在项目里把后台配好了,但真正到UAT阶段,业务方跑流程时还是会东错西错。我们以下面这个场景为例,走一遍完整的链路。
前置条件:
- 公司代码1000、2000,各自的工厂P100和P200。
- P100(需求方/购方)需要向P200调拨物料MAT-A 100件。
- 物料在企业集团层面统一编码,由于调拨跨越公司代码,评估范围级价格控制不确定,先按“按库存转移价格”方案演示。
3.1 第一步:创建公司间STO采购订单(ME21N)
在采购方P100视角,用ME21N创建一张普通采购订单,但有几个关键点要设置正确:
- 供应商字段:填关联供应商,比如给2000公司代码配置的供应商编号V2000。
- 采购组织/采购组:必须选P100所属的采购组织和采购组。
- 工厂:P100(本工厂)。
- 行项目的物料、数量、交货日期:照实填。
这里关键的一步:在“交货”选项卡里,确认“交货单类型”是UB类型,如果系统没自动带出来,手动填上。然后保存PO。
如果后台配置正确,PO保存后会立刻在“采购订单历史”或通过ME23N查看时看到“后续单据”,也就是自动生成了一张销售订单号。如果没有出来,优先检查后台“采购订单类型—后续单据类型”的映射,以及内部客户/供应商的销售范围数据是否完整。
PO上的价格,如果维护了公司间信息记录(ME11),可以自动带出;如果没有信息记录,可以手工维护一个价格。这里有个细节:这个价格会直接影响采购方的入库金额和应付金额,后面销售方开票时会同步该价格,所以价格一定要经财务确认。
3.2 第二步:销售方看销售订单(VA03)
切换到销售方P200视角。用VA03查刚才自动生成的销售订单号,可以看到它已经存在于2000公司代码下,订单类型是OR,行项目类别是TAS。
注意检查销售订单上的装运信息:装运点、交货工厂,应该自动取值自P200的工厂配置。如果销售订单的“装运”页签里没有工厂,后面创建DN会失败或带出错的交货工厂。如果销售订单没有出现,去查PO的“项目类别”——有可能是项目类别被改成了标准采购,导致系统不生成SD后续单据。
3.3 第三步:创建交货单(VL01N)
交货单是销售方做的动作。用VL01N,输入销售订单号,系统按“销售订单”和“项目类别”自动确定DN类型,通常是LF。
创建DN时,系统会把销售订单里的物料、数量、装运数据带进来。保存DN之后,系统生成一张外向交货单,状态是“A”(未发货),后续可以进行拣配、装运、发货过账。
实际业务里,如果调拨物料不涉及仓库管理(WM),常见的做法是不用做拣配,直接在VL02N里“发货过账”,也就是做PGI,过账时物料从P200的库存中扣减。发货过账产生的移动类型是643(公司间STO的发货),这会触发一张会计凭证,把P200的库存转出,同时确认一笔“公司间应收”或者“发出商品”。这一步做完,库存就已经从销售方账上消失了。
3.4 第四步:采购方收货(MIGO)
采购方P100用MIGO做收货。此时你不需要手工去关联销售订单,只需要关联采购订单号,系统会按PO的行项目收货。收货移动类型是101,关联到“公司间STO的收货”。
收货完成后,库存进入P100。同时,系统生成一张FI凭证,按配置的科目确定规则,借记库存、贷记GR/IR之类的中间科目,此时采购方的入库金额按PO价格或移动平均价确定,具体看“按采购订单价”还是“按移转价”的配置。
这里有个坑:有些公司间STO是“两步法”,即销售方先发货到“在途科目”,采购方收货后在途科目才清掉;还有“一步法”,那是采购方收货的同时就清掉销售方的科目。这个差异对应的后台配置主要在“收货时科目修改”和“移动类型”的组合上。顾问在配置前一定要和财务确认:调拨是在途物资在谁的账上,谁承担运输风险。
3.5 第五步:公司间发票出具(VF01)和对账
最后一步是出具公司间发票。销售方P200用VF01,输入销售订单号,系统生成一张公司间发票,金额等于SO的价格。
这张发票会同时触发两个动作:一是销售方公司代码2000产生对P100的应收、对内部客户C1000开票;二是采购方公司代码1000端,在FI里产生对V2000供应商的应付。通常采购方的应付是系统在后台配置“公司间出具发票”时自动生成的,采购方只需要在月底通过MRBR/MR11去查看是否有差异,或者跑“发票校验”做清账。
走到这里,一次完整的公司间STO闭环就算结束了。如果是一般的月度调拨业务,这样的流程可能一个月要走上几十上百次,所以不少项目会通过后台配置+前台策略再做一些自动化——例如用消息类型控制、输出类型自动打印交货单、自动生成公司间发票等,减少人工介入。
3.6 实操示例:一次常见调拨的过账数据追踪
我举一个真实调试的案例,方便大家理解每一步数据结构。
假设公司在1000公司代码下的工厂P100,向2000公司代码下的工厂P200调拨物料M-100,数量10个。系统里P200的库存单价是100元/个(移动平均价,MAP),PO上的公司间价格是110元/个。
- P200做643发货过账:借方“发出商品/公司间应收”1100,贷方“库存原材料”1000,差额计入“发出商品成本差异”或者“销售收入调整”,具体看科目配置。很多配置走的是“按销售价确认发出商品”,这里就是按1100;如果按成本价,就是贷方1000,差异100走一个专门的调整科目。
- P100做101收货:借方“库存原材料”1100(按PO价入库),贷方“GR/IR”1100。
- 之后出具公司间发票:2000公司贷方“销售收入—公司间”1100,借“应收—1000公司”;1000公司借“应付—2000公司”,贷“GR/IR”清理1100。
这个例子里,需要注意一个问题:如果P100评估范围是“按标准价控制”,那收货时不会按PO价直接计入库存,而是按标准价计入,采购价和标准价的差异走“采购差异科目”。所以,不是所有STO的入库分录都是上面这么“清清爽爽”的,评估控制方式一变,账务逻辑就变了。项目里,MM顾问必须把每个公司代码的评估控制方式(V/价值的“评估控制”)拉出来做个清单,并和财务对清楚。
4. 常见问题与排查技巧实录
配置和流程都讲完了,给新手上路前,说说我实际项目中遇到的高频问题。这些坑几乎是从一个项目复制到另一个项目,如果你能在项目验收前排查掉大部分,后面上线会省心很多。
4.1 采购订单没有自动产生销售订单
这是最频繁的报错:“我ME21N保存了PO,但是VA03查不到销售订单”。
排查思路:
- 首先看ME23N里PO的“采购订单历史”。如果完全没有“后续单据”显示,说明系统没触发后续SO生成功能。此时检查采购订单类型(单据类型)在后台是否配置了“后续单据类型”。
- 检查PO行项目类别是否为TAS。如果不是,改成TAS并重新保存,或者直接检查物料主数据的“采购订单文本/项目类别”是否被什么自定义规则覆盖了。
- 检查销售方的“内部客户”主数据是否维护了销售范围视图。如果销售范围缺失,SD模块在创建订单时无法确定销售范围,流程就会中断。有一个技巧:用XD03查看内部客户主数据的公司代码数据和销售范围数据,如果销售范围空白,马上补,不要等到VA03搜索时才反应“怎么没有”。
- 检查工厂和装运点配置。销售订单创建其实是按“收货工厂”和“发货工厂”做联动,如果表单中无法确定“装载点”,也会失败。
4.2 采购订单保存后报“项目类别TAS未定义”之类的错误
这个报错的关键词:TAS、项目类别确定。
我见过最隐蔽的错误是:后台配置“项目类别确定”的时候,把“TAS”和采购单类型UB的关系断开,或者漏了订单类型的“单据确定规则”。建议排查步骤:
- SPRO里去“采购订单→定义单据类型”查看UB类型的“后续单据类型”,无误后,去“销售订单项目→定义项目类别”里面检查TAS行项目的底层配置。
- 检查“项目类别确定”时,系统如何根据物料主数据的“项目类别组”+“单据类型”判断出TAS。如果物料主数据项目类别组填错了(比如设成NORM甚至空),SD就带不出TAS,而可能生成标准OR的销售订单,但单子内容却不对。
补充一个经验:项目上物料主数据数量多,难免有物料在“采购数据”视图里漏维护“项目类别组”,或者维护成外部采购的组。上线前做数据清洗时,一定要把参与STO的物料清单拉出来,统一设置项目类别组和质量检查状态,不然现场时不时冒出一张“该物料不能走公司间调拨”的报错单。
4.3 交货单无法创建或者发货过账报错
DN的问题,除了前面说的装运点配置,还有一个高频点是**“没有维护好销售订单行项目的装运工厂”**。说通俗点:SO虽有,但它不知道从哪个工厂发货。
排查步骤:
- VL01N创建外向交货单时,系统报“未确定装运点”或“项目类别不可用于装运”,基本可以锁定工厂主数据问题。
- 去VA03查看SO行项目的“装运”页签,工厂是否正确显示P200。如果为空,检查销售订单类型“项目类别”是否设置为不要求装运,或者“装运工厂确定规则”是否没配。
- 发货过账报“科目确定失败”,则多半是我们在第2.5节里说的科目配置问题。重点检查移动类型643和101对应的“科目修改”、一般修改,有没有配全。
这种问题有个特点:开发或测试环境配置不全的时候,经常到“发货”这一步才暴露。所以我建议在公司间STO联调前,先配一版完整的“端到端测试脚本”,从PO到DN到发货到收货到开票,每个动作都记录报错和结果。如果脚本全绿,再开始大批量测试,能省掉后来排查的时间。
4.4 金额不一致:PO价格、SO价格和最终发票金额差异
公司间STO的调拨价,如果三处不一致,月底对账就不好过。产生的原因往往不是系统Bug,而是“价格源”和“传输机制”没想清楚。
比如:PO价格手工输入110,但SO那边在销售方维护了一个110的条件记录——两边本应一致,却因为SO的定价过程没有取条件记录,价格被默认成0?可是销售订单又自动复制到采购订单,把价格改成了0?这类问题的本质是:配置取值优先级和条件记录主数据不一致。
排查建议:
- 先看VA03的“定价分析”,用条件技术逐行看价格是怎么取到的。系统里正常的表现应该是取到PRS或自定义条件类型,来源是条件记录。
- 再看ME23N的PO定价,确认行项目价格条件是否有KOMG和KONV记录,来源是“采购信息记录”还是“从SO复制”。
- 最后看VF01开票后的金额,确认它是以SO的价格为准。
如果发现SO没有正确的价格,但PO有,那就复查“公司间定价过程分配”。很多项目在SD的客户主数据“销售范围视图”里,为内部客户指定了一个价格组或定价过程;如果内部客户的定价过程是空白的,系统就会用默认的“标准定价过程”,这种情况下价格策略跟外部销售一致,很容易把外部客户的价格组套用到内部客户身上,产生各种奇怪结果。我遇过一个奇葩问题:内部客户调拨的价格异常高,查下来的原因竟然是他套了外部客户专用的价格组,连折扣率都套用了。所以在做STO项目时,尽量为内部客户单独建一个客户组,并将定价过程拆出来,别混用。
4.5 月底对账不平:库存与暂估/应付差异
对账问题是财务顾问和MM顾问联调时最头疼的问题,尤其是STO走的是“PO+SO+DN+IV”全链路,中间只要有一张单子出问题,就会导致在途、暂估和应付不平。
常见原因:
- 采购方在PO收货后没做后续发票校验,GR/IR科目长期挂着,月底MR11无法清账。
- 销售方发货过账了,但采购方没做收货,货物已在途,而系统里P100没有对应在途库存记录。这部分在途库存的项目字段如果没反应出来,财务上会很难核对。
- 自定义的移动类型没有做好“公司间”标识,导致结算和科目带出规则与众不同。
排查技术手段通常包含:
- MB5L看库存余额和GR/IR差异;
- MR11/MR22看供应商/客户暂估差异;
- VF04看SO是否已开票未过账;MIGO/MB03看收货的数量和金额;
- 必要时跑SAP标准的“STO对账报表”,或者直接用SE38跑RMBABSTO等。很多项目会按公司间客户/供应商为维度去写一些自定义对账逻辑,这个和各自的业务匹配度较高,但顾问要能在最终上线前给出一套标准匹配清单,方便财务每月做对账。
其实很多“对账不平”,根子上不是期末处理的问题,而是日常单据流断在某个环节没人发现。我在上线验收阶段,都会建议用户每天或者每周跑一次“单据流转检查”逻辑,检查开单了没发货、发货了没开票、开票了没清账这些单据。自动把不完整的单据过滤出来发给相关业务员跟进处理,避免月末集中爆发。
5. 从上线运维角度看公司间STO的进阶建议
说完坑,再说点有益的实操习惯。这些内容不是SAP标准课程会讲的,但做过几年项目你会认可这些话。
- 一定要做权限分离:公司间STO涉及采购方和销售方两种视角,销售方的业务人员可能根本没有ME21N的权限,采购方也不应该能随便给销售方做发货。项目角色设计时,把这套流程拆成“公司间调拨采购员”“公司间调拨销售员”两套角色,各自分配权限,流程不容易乱。
- 信息记录和主数据的维护策略建议在项目文档里明确:公司间价格到底是在ME11维护还是在客户/物料条件里维护。我倾向于在SD的条件记录里维护,因为公司间STO本质上还是“销售方产出并开票”,价格维护侧和销售订单同侧,更容易保持一致性。
- 序列号/批次的库存管理如果在物料主数据里启用,那么STO流程里的PO、SO、DN、收货单也一样要支持批次确定和历史记录追溯。很多企业做调拨的物料恰好是批次管理物料,比如原料批次、成品序列号,如果系统没设好“批次确定”策略,操作员会反复收到错误提醒。
- 在途库存管理与两步法:现在大型集团调拨业务量大,在途信息和物料凭证要对上,不能只做一步法把在途业务藏在“发货方库存”里。尽量用系统支持的在途库存管理(比如挂到“公司间在途库存”+移动类型TECO之类)来实时反映物流过程。这块需要和物流、仓储团队核实现有流程,不是单纯IT层面的事。
- 接口与周边系统集成:公司间STO往往和WMS、TMS、MES等周边系统做接口,比如销售方做出库后会回传WM,采购方收货后会自动触发后续生产备料。上线后遇到单据状态不一致的情况,先分清是SAP标准流程的差异,还是周边系统同步失败导致的。学会用SM37查后台Job、用SM58查ALE/IDoc状态,是运维STO流程必备的技能。
6. 快速自查清单:上线前照着查一遍
最后,把公司间STO上线前最容易出问题、最值得反复检查的清单整理成一份速查表,可以在项目里直接用。
| 检查项 | 检查点 | 常见故障 |
|---|---|---|
| 内部客户/供应商主数据 | 是否维护了公司代码数据、销售范围数据 | SO无法创建/PO找不到供应商 |
| 采购订单类型 | UB是否维护后续单据类型 | PO不自动产生SO |
| 项目类别 | TAS是否被正确确定 | PO项目类别被改、SO类型异常 |
| 装运点配置 | 工厂/装运点是否存在 | DN无法创建 |
| 交货类型 | DN类型是否能承接SO的TAS行 | DN项目类别为空 |
| 定价过程 | 内部客户是否使用公司间定价过程 | 单价异常或为0 |
| 科目确定 | 643/101的G/L科目是否配置完整 | 发货/收货过账失败 |
| 发票类型 | 公司间发票类型是否配置 | VF01无法开票 |
| 税码 | 税确定过程是否按公司间业务配置 | 发票税额错误/未确定 |
| 权限设置 | 采购和销售角色是否分离 | 误操作/越权单子 |
这些项在蓝图设计阶段若能逐条核对,基本能避免上线初期80%的流程类问题。等到项目真正跑起来之后,你会发现所谓“公司间STO”,更多是一门“协调的艺术”,不只是SAP模块功能的配置。它需要MM、SD、LE、FI甚至税务的同事站在同一张桌子前,把每个细节沟通到位,才能让这个标准功能真正标准化落地。
对我个人来说,做公司间STO项目最有成就感的一刻不是配置全部通过那会儿,而是月底财务跑完报表,跑过来跟你说“这个月的内部调拨平了,和手工台账完全一致”——那才说明你是真正把这套流程里的每一环都打通了。