☰
SAP公司间交易全解析:一张销售订单如何触发四张会计凭证
2026/10/23 17:33:29 网站建设 项目流程

简介:这份PDF资料面向SAP顾问、财务与供应链实施人员,系统梳理集团内部公司间协同的六类典型业务场景及配置方法,涵盖第三方销售、跨公司销售、公司间转储、跨公司转储STO、转包与跨公司采购,并延伸至公司间资产转移、清账科目配置等财务处理要点。资源包共1个PDF文件,约20.06MB,内容以图文结合方式呈现各业务流程步骤与配置逻辑,涉及SD、MM、PP、FI多模块协同,重点讲解IDoc在自动发票校验、收货过账与应付生成中的触发机制。目前已有13027人学习下载,适合需要理解公司间交易全流程、掌握STO一步法配置与IDoc自动结算思路的读者参考,也可作为项目实践中排查公司间业务凭证与清账问题的对照材料。

1. 公司间交易:为什么一张销售订单能同时触发四张会计凭证

很多做过 SAP 跨公司业务的人都有过这种体验:在 VA01 里敲完一张销售订单,保存之后系统安安静静,但背后已经埋下了一条横跨两家公司代码、涉及 SD、MM、FI 三个模块的凭证链。等交货过账、开票完成,回头一查,四张会计凭证已经各自落在不同的公司代码下,应收、应付、收入、成本全部自动对齐。这不是什么玄学,而是 SAP 公司间业务最核心的设计思路——用一张销售订单作为业务锚点,通过后台配置好的组织单元映射关系,把物流和资金流拆解到不同的法人实体上。

搞懂这套机制的价值在于:公司间业务是集团型企业绕不开的场景,第三方销售、跨公司销售、公司间转储、跨公司采购、转包、跨公司调拨,六种模式覆盖了从采购到销售的完整链路。每一种模式的背后,都是同一套底层逻辑在不同业务场景下的变体。理解了这套逻辑,你就不需要死记硬背每种业务的配置步骤,而是能从组织单元、定价过程、IDoc 触发这三个维度去推导出任何新场景的配置方案。

2. 六种公司间业务的底层逻辑:从业务场景反推组织单元映射

2.1 第三方销售与跨公司销售:没有物流的销售公司怎么记账

第三方销售的本质是公司只做接单和结算,物流由供应商直接发给客户。这种模式下,公司代码下不产生存货移动,销售订单自动触发采购申请,采购订单收货等同于给客户发货确认。系统会自动更新销售订单计划行的日期,确认日期取采购订单的到货日。发票校验 MIRO 生成应付款,同时按采购金额计入销售成本;对客户开票生成应收账款、收入和税。整个链路里,公司代码只扮演了一个资金通道的角色。

跨公司销售则不同。集团内有一家生产公司负责物流,一家销售公司负责接单和结算。销售公司创建销售订单时,行项目的交货工厂指向生产公司下的工厂,装运点自动变成生产工厂的装运点。销售公司创建交货单、发货过账,但产生的会计凭证落在生产公司下——因为存货属于生产公司。销售公司对客户开票产生应收,生产公司对销售公司开公司间发票产生应收,同时通过 IDoc 自动在销售公司生成对生产公司的应付。

这两种模式的共同点是销售公司不体现存货进出,区别在于第三方销售连生产环节都没有,跨公司销售则有完整的生产公司物流执行。从组织单元配置角度看,跨公司销售需要额外维护“按工厂分配组织单位”和“按销售组织定义内部客户号”,这两个配置决定了系统能否正确识别发货工厂属于哪个公司代码、公司间发票应该开给哪个内部客户。

2.2 公司间转储与跨公司转储:同一公司代码和不同公司代码的分水岭

公司间转储发生在同一公司代码下的不同工厂之间,本质上是库存地点转移,不涉及法人实体变更。一步法使用移动类型 301,物料从一个工厂的库存直接转到另一个工厂,系统只产生一张物料凭证,会计上不产生公司间往来。两步法使用 303 和 305,303 是发出到在途,305 是在途收货,中间可以通过 MB5T 查看在途库存。两步法的价值在于物流和执行可以分离,适合工厂之间距离较远、运输周期长的场景。

跨公司转储(STO)则是不同公司代码之间的工厂调拨,这就触发了公司间交易。公司代码 1 向公司代码 2 下采购订单,公司代码 2 创建交货单并发货过账,公司代码 1 收货,公司代码 2 开销售发票产生应收,公司代码 1 做发票校验产生应付。STO 可以配置为一步法:公司代码 2 发货过账时,公司代码 1 在系统中同时完成收货,公司代码 2 开票时通过 IDoc 自动产生公司代码 1 的应付。这里的关键配置是发货工厂和收货工厂分别属于不同的公司代码,系统通过工厂到公司代码的分配关系自动判断是否产生跨公司凭证。

2.3 转包与跨公司采购:委外加工和需求传递的链路设计

转包业务的核心是委外加工。公司向加工商下采购订单,采购价格为加工费,同时在采购订单中指定组件,组件中包括向加工商发出的材料。公司向加工商发货时,库存状态从自有库存变为 O 库存(委外加工库存),收货时消耗原材料、计算加工费、更新产成品。产成品成本等于消耗的原材料成本加上加工费,差异计入价差科目。标准委外和工序委外的区别在于是否需要对发出的物料进行物流管理,如果委外周期长、加工步骤多,建议走标准委外。

跨公司采购则是集团内销售公司传递需求到生产公司的完整链路。客户向公司代码 1 下订单,公司代码 1 跑 MRP 产生向公司代码 2 的采购申请,转换为跨公司采购订单。公司代码 2 跑 MRP 产生计划订单,转为生产订单,注意 MRP4 视图的独立/集中设置要设为 1,订单中可以看到原始销售订单号码。生产订单完工收货后为客户库存,VL10B 发货给公司代码 1,发货后变为公司代码 1 在途库存,MB5T 可查看。公司代码 1 收货后,公司代码 2 开票,公司代码 1 做发票校验,最后公司代码 1 发货给客户并开票。

这条链路的复杂度在于它同时触发了 MRP 运算、生产订单、STO 物流和公司间结算。从配置角度看,它要求物料主数据在两个公司代码下都维护,MRP 范围要正确设置,采购订单类型要支持跨公司场景,IDoc 要配置为自动触发应付。

3. 公司间发票的定价与 IDoc 触发:应收和应付怎么自动对齐

3.1 公司间发票的定价过程:PI01 和 PI02 是怎么带出来的

公司间发票的标准配置是 IV,其计算使用的价格是 IV01 或 IV02,分别参考 PI01 和 PI02。PI01 是基于数量的公司间价格,PI02 是基于百分比的公司间价格。标准的定价过程是 RVAA01。只要销售订单中的交货工厂是跨公司的,PI01 或 PI02 就会自动带出来。

在 VA01 创建销售订单时,如果行项目的工厂选的是生产工厂,系统会自动带出 PI02 百分比定价类型。如果工厂选的是接单公司自己的工厂,就变成了普通的标准销售订单,PI02 不会出现。这个判断逻辑是:系统检查销售订单行项目的交货工厂是否属于销售组织所在公司代码之外的另一个公司代码,如果是,则触发公司间定价。

配置层面,需要在定价过程中将 TSPP 的勾选中,TSPP 是公司间定价的条件类型,它决定了系统是否启用公司间定价逻辑。同时需要在“按工厂分配组织单位”中为销售公司和生产公司下的交货工厂分配销售区域,分配完成后交货工厂才可以使用销售区域来处理公司间出具发票的业务。

3.2 IDoc 自动触发应付:没有采购订单怎么做发票校验

跨公司销售业务里有一个关键问题:生产公司对接单公司开票生成了应收,但接单公司并没有对应的采购订单,也就无从谈起发票校验。接单公司承认对生产公司的应付,靠的是 IDoc 技术。

IDoc 的全称是 Intermediate Document,是 SAP 系统间数据交换的标准格式。在公司间开票生成应收的时候,系统通过 EDI 文档交换技术自动生成对应公司的应付。这个过程无需用户参与,接单公司的用户可以在 FBL1N 画面查询到对内部供应商的应付信息,双击查看详细信息可以看到这笔账款的来源是通过 IDoc 凭证生成,执行的事务代码是 FB01。在 WE10 画面可以看到相关的 IDoc 历史记录。

配置 IDoc 需要涉及系统间的 RFC 连接配置,涉及的模块含 SD、MM、FICO。输出类型 RD04 是公司间发票的特殊输出类型,它决定了系统在开公司间发票时是否自动生成销售公司的会计凭证。如果不用 RD04,也可以手工做凭证记对发货工厂的应付、销售成本和进项税,但自动化程度就降低了。

3.3 跨公司会计凭证的产生条件:什么时候会触发两套账

跨公司会计凭证的产生条件是一笔业务交易涉及到了两个公司代码。不管这笔交易来源于后勤业务还是财务模块,只要涉及两个公司代码,就会产生跨公司会计凭证,即一笔业务分别在两个公司下产生一笔会计凭证。

后勤业务比如跨公司发料、跨公司报工都会自动产生跨公司会计凭证。在财务模块输入凭证时,如果在一个行项目中输入了不同于凭证抬头的公司代码,则会产生跨公司会计凭证。这个机制的底层逻辑是 SAP 的凭证原则:每一笔会计凭证必须属于一个公司代码,如果业务涉及多个公司代码,就必须拆成多张凭证,每张凭证属于一个公司代码,凭证之间通过公司间清账科目进行对冲。

公司间清账科目的配置使用事务代码 OBYA,配置的事务代码可选择 40/50 或 01/31。如果公司间仅交易不挂客户、供应商,则配置 40/50 以及对应的总账科目作为公司间清账科目即可。如果公司间交易需要挂客户、供应商,比如通过发货单产生公司间交易,则需配置 01/31 并把客户、供应商设置为清账科目。公司间清账配置对应的表为 T001U。

注意:配置 OBYA 公司间清账科目的前提是 OBY6 中公司代码参数中字段“公司”均不为空或者均为空,不可以其中一个公司代码有值,另外一个公司代码没有值。这个坑在配置初期很容易踩到,因为公司代码通常是复制出来的,复制过程中可能带入了不完整的公司参数。

4. 配置链路拆解:从组织单元到定价过程的完整依赖关系

4.1 组织单元配置:公司代码、工厂、销售组织、采购组织的分配关系

公司间业务的配置起点是组织单元。建立公司目录使用事务代码 OX02,从现有的公司数据里复制出来,然后到 OX15 修改名称并添加地址信息。建立工厂目录使用 OX10,复制完工厂之后修改工厂的名称和地址。给公司代码分配工厂使用 OX18,注意因为公司代码是复制的,可能会出现新的公司代码已经分配了工厂的情况,需要删掉重新分配。

建立销售组织使用 OVX5,复制完成之后在定义销售组织里面修改名称和地址。创建分销渠道使用 OVXI。分配公司工厂和销售组织的关系是公司间销售的关键配置,它决定了销售组织下的销售订单能否使用另一个公司代码下的工厂作为交货工厂。

创建和分配装运点使用 OVXD 和 OVXC。分配采购组织使用 OX17,注意生产工厂在本业务中并不是需要维护采购中心的。新建内部供应商使用 XK01 或 XK02,需要维护内部供应商与供货工厂的关联关系。新建内部客户使用 XD01 或 XD02,这里创建以供货公司为角度的内部客户,所以销售组织是供货公司的销售组织。

维护组织单位与工厂的对应关系使用 OVV9,路径是 SPRO-销售与分销-出具发票-公司间出具发票-按工厂分配组织单位。注意内部客户的供货方销售组织需要扩充,否则会提示 VF009 的错误消息。物料主数据需要维护两个销售组织的数据、两个工厂的会计数据以及供货公司的采购数据。物料要滚算标准成本、标记并发布,这是必须的。

4.2 定价过程配置:V/08 和 OVKK 的配合逻辑

定义定价过程使用事务代码 V/08,定价类型 PI02 即公司间百分比,需求是 22。维护供方销售组织的定价过程使用 OVKK,注意销售组织是生产公司的,Dopr = I,Cupp = 1。接单公司对客户的定价过程也是在这里确定,只不过销售组织是接单公司的销售组织,而 DoPr = A,Cupp 看当前客户主数据的定价过程。

这个配置的逻辑是:定价过程决定了销售订单中能带出哪些条件类型,PI02 作为公司间百分比条件类型,只有在定价过程中被激活并且需求被满足时才会出现。需求 22 是 SAP 标准的需求例程,它检查销售订单行项目的交货工厂是否属于另一个公司代码。如果是,则 PI02 被激活,公司间价格自动计算。

4.3 开票复制控制与输出类型:VF01 怎么区分两张发票

在“出具发票-出具发票凭证-维护开票凭证的复制控制”中,需要维护公司 A 出具给客户的发票到公司间发票的复制控制规则。这个配置决定了 VF01 开票时系统如何从交货单生成发票。

创建销售订单和交货单时,销售订单和交货的创建都需要在公司 A 的销售区域下进行,同时在销售订单中需要在订单行项目层次将交货工厂改为公司 B 的交货工厂。交货完成后,需要根据交货单创建两张发票,可以用 VF01 或 VF04 选择不同的开票类型:“与交货相关”和“公司间出具发票”,分别给出具发票,前者由公司 A 给其客户,后者由公司 B 给公司 A。

当 VOV7 设置销售订单行项目类别的开票相关为 K,则对客户的开票能部分开票,但是公司间的开票不支持行项目拆分开票。跨公司销售和发票拆分开票时系统默认优先开对客户的发票,然后再开公司间发票。如果需要先开公司间发票,需要在 VF04 设置默认的发票类型为 IV,或者在 VF01 手动选择发票类型为 IV。

4.4 跨公司资产转移与内部订单:ABT1N 和统计型内部订单的适用边界

公司间转移资产如果是因为公司间合并,比如公司 2 被公司 1 完全吸收合并,资产不是通过买卖方式转移而是合并,可以考虑通过 ABT1N 进行批量的资产跨公司转移。使用 ABT1N 时需要注意:需要配置公司并分配公司代码给公司,SAP 中才可以视为公司为联营公司;配置转移变式,设定转移方法和使用的事务类型;设置资本化日期可以修改;AO90 配置从关联公司购置对应的科目;可能需修改 AC305/306 消息号为警告。

内部订单是否可以跨公司使用?统计性内部订单可以统计跨公司费用,比如一个项目部分费用发生在 A 公司,部分费用发生在 B 公司,A、B 公司记账时除了记账到各自成本中心外,也记账到同一个统计型内部订单,这样通过内部订单统计到 A 和 B 一共发生的费用。创建这种统计型内部订单时不需输入公司代码。实际型内部订单不可以跨公司代码,创建时必须输入公司代码。模型订单用来指定内部订单创建时的默认值,可将模型订单分配给内部订单。

5. 避坑与排查:公司间业务配置中最容易翻车的五个地方

5.1 公司间清账科目配置后仍然报错

现象:OBYA 配置了公司间清账科目,但跨公司凭证过账时仍然提示找不到清账科目。

原因:OBY6 中公司代码参数中字段“公司”的配置不一致。如果其中一个公司代码有值,另外一个没有值,OBYA 的配置不会生效。

解决:检查 OBY6 中所有涉及公司间交易的公司代码,确保“公司”字段要么都为空,要么都分配了同一个公司。这个配置在复制公司代码时容易被忽略,因为复制模板可能带有不完整的公司参数。

5.2 公司间发票开不出来,提示 VF009

现象:VF01 开公司间发票时系统提示 VF009 错误,无法生成发票。

原因:内部客户的供货方销售组织没有扩充。公司间发票的开票方是供货公司的销售组织,如果该销售组织没有分配给内部客户,系统无法确定开票方。

解决:检查内部客户主数据,确保供货公司的销售组织已经分配给该内部客户。同时检查 OVV9 中按工厂分配组织单位的配置,确保交货工厂已经分配了正确的销售区域。

5.3 PI02 定价类型在销售订单中不出现

现象:创建跨公司销售订单时,行项目中看不到 PI02 公司间百分比定价类型。

原因:定价过程中 TSPP 没有勾选,或者需求 22 没有激活,或者销售订单行项目的交货工厂没有指向另一个公司代码下的工厂。

解决:检查 V/08 定价过程中 TSPP 的勾选状态,确认需求 22 已经分配给 PI02。检查销售订单行项目的工厂是否属于另一个公司代码,如果工厂属于销售公司自己,PI02 不会出现。

5.4 IDoc 没有自动生成应付

现象:公司间发票已经开出,应收已经生成,但接单公司下没有自动生成应付。

原因:IDoc 配置不完整,输出类型 RD04 没有正确配置,或者 RFC 连接没有建立。

解决:检查 WE20 中合作伙伴参数文件的配置,确认输出类型 RD04 已经分配给对应的合作伙伴。检查 SM59 中 RFC 连接是否正常。在 WE10 中查看 IDoc 的历史记录,确认 IDoc 是否已经生成但处理失败。

5.5 ABT1N 批处理执行时提示 LEAVE TO TRANSACTION 错误

现象:使用 LSMW 录屏过程中,SM35 执行时出现“LEAVE TO TRANSACTION 在批处理中不能使用”的错误提示。

原因:ABT1N 正常操作时保存后会出现一个对话框提示产生的凭证,而在批处理中无法显示这个对话框。

解决:这个错误不影响执行结果,可以正常导入。判断依据是 ABT1N 保存后的对话框在批处理中无法显示,但凭证已经生成。可以通过后续查询确认凭证是否已经正确创建。

6. 设计取舍:为什么 SAP 选择用 IDoc 而不是实时接口来做公司间结算

公司间业务的底层设计有一个值得思考的取舍:为什么 SAP 选择用 IDoc 这种异步文档交换技术来做公司间应收应付的自动对齐,而不是用实时接口?

从架构角度看,IDoc 是 SAP 系统间数据交换的标准格式,它天然支持异步处理、批量传输和错误重试。公司间结算涉及两个公司代码、多个模块、多张凭证,如果采用实时接口,任何一个环节的失败都会导致整个链路回滚,业务中断的风险很高。IDoc 的异步特性允许应收和应付在不同时间点生成,即使中间有延迟,最终也能通过 IDoc 的状态监控和重处理机制保证一致性。

另一个取舍是公司间定价的计算方式。PI01 基于数量、PI02 基于百分比,这两种方式覆盖了大多数公司间定价场景。百分比方式适合标准产品的内部转移定价,数量方式适合按实际成本加成的场景。SAP 没有提供更复杂的定价公式,而是把灵活性留给了定价过程的条件类型配置,通过需求例程和条件类型组合来实现复杂的定价逻辑。

从验证方法角度看,检查公司间业务是否正确配置,最直接的方式是跑一遍完整流程,然后在 FBL1N 和 FBL3N 中查看应收应付是否自动生成,在 WE10 中查看 IDoc 状态,在 MB5T 中查看在途库存。如果所有环节都能自动串联,说明配置正确。如果某个环节断了,根据断点位置反查对应的配置点。

我一般会在配置完成后强制走一遍完整流程:创建销售订单、创建交货单、发货过账、开两张发票、查 IDoc 状态、查会计凭证。这个习惯帮我省了很多事后排查的时间,因为公司间业务的配置依赖关系太强,任何一个配置点的遗漏都可能在流程的某个环节才暴露出来。希望帮到你。

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

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

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

立即咨询