1. 先拆业务:多角交易里到底有几条流
1.1 从一条真实的业务链说起
客户找我的时候,描述的是很典型的集团业务场景:集团下有贸易公司、生产公司和销售公司,海外的原材料先进贸易公司,贸易公司卖给生产公司,生产公司加工后卖给销售公司,销售公司再卖给终端客户。采购负责人补了一句:很多情况下货从生产公司直接发到销售公司的客户那里,中间不经过销售公司仓库。财务总监问得很直接:SAP里这么多公司代码,公司间多角交易到底怎么做才不乱?
这个场景几乎每个做集团ERP的人都会碰到。所谓多角交易,不是SAP里的一个标准功能按钮,而是集团内部多个法人公司之间发生的、首尾相接的采购销售链条。常见形态是“三家以上公司代码参与同一个最终客户订单的交付”,但实际物流可能只有一次发货。
我一般不会马上打开SAP写配置,而是先画业务环。因为这个方案不像一个销售订单类型那样有标准答案,它考验的是把业务翻译成“货物流、发票流、资金流、税流”的能力。四条流拆清楚,方案就已经成型一半。
1.2 四条流分开看,事情马上变简单
拿刚才的例子继续。
货物流:海外供应商发货到贸易公司C,C卖给生产公司B,B卖给销售公司A,A卖给终端客户。也可以从C直接发货到B,甚至从B直发给A的客户。
发票流:C开票给B,B开票给A,A开票给客户。这是完整的逐级开票链。不少集团想减少开票层数,于是就可能拆成“A开票给客户,B开票给A,C不开票给B”或“C直接开票给A”,但这样又带来货权转移和增值税问题。
资金流:客户付钱给A,A付钱给B,B付钱给C。很多集团会设置资金结算中心,内部往来不真正逐笔打款,而是通过对冲或净额结算,这部分在SAP里需要用公司间往来科目和内部清账来处理。
税流:每一张内部发票都涉及增值税税率、开票时间点、红蓝冲规则。如果涉及出口贸易,还要考虑退税主体是谁;如果不同公司代码使用不同本位币,还会叠加汇兑损益。
这四个流不搭,任何配置方案都会成为“把错误流程自动化”。所以方案讨论第一步永远是跟业务确认:在真实物理世界中,货在哪一个节点转移所有权,发票必须由谁开给谁,资金是否逐笔清算。这三个问题定下来,再谈SAP单据怎么落地。
1.3 为什么SAP标准功能是“两角”结构
SAP内部交易的标准玩法,不管是公司间销售订单(Intercompany Sales Order)还是跨公司库存转移订单(STO),本质上都是两两配对:一个公司对另一个公司。系统不会因为你建了一个销售订单,就自动在三家公司之间连续传递所有权和账务。
比如销售公司A和工厂公司B之间,标准流程是A向B下跨公司采购订单,B收到后创建一张公司间销售订单,然后B发货、开公司间发票,A收货、发票校验。这是一对一的闭环。多角交易等于要把这些一对一的闭环串起来:C对B一套,B对A一套,A对客户一套。每两段之间的价格、发票、往来科目都可能不同。
很多客户第一次做方案时,希望“一张销售订单贯穿三家公司”,这个预期要纠正。SAP能保证的是每段闭环内的凭证高度可追溯,但不是用一个单据号完成全部。想清楚了这一点,方案讨论就不会一边想着设计完美蓝图,一边被系统边界卡死。
提示:多角交易方案讨论的核心,是把法务上的每一段合同关系还原成SAP里两两配对的公司间单据,再用交货单、IDOC、条件价格把几段串成一条可追踪的链。
2. 三种落地方案:背靠背、调拨链、代理结算
2.1 方案A:背靠背的跨公司销售订单链
这是用得最多的方案。外部客户订单签约在A,A向B下跨公司采购订单;B在SD里生成公司间销售订单,同时向C下跨公司PO;C同样生成公司间销售订单。每一层都是“采购订单+销售订单”背靠背配对,物理交货可以指定由最终生产公司直发终端客户。
优点是业务逻辑最贴近合同关系。每个公司代码都有自己的采购成本、销售收入、库存成本和毛利,财务凭证完整,外部审计容易解释。发票链和货物流天然对应,税票主体不会乱。
缺点是单据量很大。三家公司之间如果每天有上千行订单,系统里销售订单、采购订单、交货单、发票单数量会成倍增长,业务操作和月结对账压力都大。另外价格条件必须逐级维护,公司间价格如果长期不动还好,一旦要按季度调价,维护条件记录的工作量就很可观。
这个方案适合贸易型销售公司,或者各公司都有独立经营考核的集团。每一家公司需要看到自己“买进卖出赚了多少”的时候,背靠背是最合适的。
2.2 方案B:跨公司STO逐级调拨
如果链条重点是内部产能调配,而不是每个环节都要做销售,可以考虑STO。比如C把原材料调拨给B,B把成品调拨给A,然后A对外销售。每一步用一张跨公司库存转移订单接送货,物料所有权的转移通过发货过账和收货过账实现,不需要在SD里做一堆公司间销售订单。
这个方案的优点是库存归属清晰。每个工厂各自的库存、在途库存都能追踪,适合生产公司负责库存管理的集团。不过它的缺点是,STO本质上偏重于“物”,对“业务合同关系”的表达弱。如果每一层都希望体现B“向C采购再卖给C”的毛利,STO就不如背靠背直观。
实际项目里最常见的组合是:内部工厂之间用STO,到了面向外部客户的一环再用销售订单。也就是说,链条拆成两段:STO负责把物权调到最终销售公司,销售订单负责对外成交。这样既控制了中间单据量,也让销售公司保留完整的客户合同。
2.3 方案C:代理/寄售结算,压缩发票层
有些公司存在“过票公司”。明明货从C直发A的客户,但合同关系要经过B做中间商,B额外承担了信用风险和资金占用,账面却只有过路收入。
对这种场景,用寄售(Consignment)和代销会明显减少凭证层。C把货放在B的寄售库存,B实际领用消耗时才确认采购负债和成本;或者B把货给A做代销,A卖出去给最终客户之后才和B结算。
这样做的好处是,中间公司不需要在系统中模拟“先买后卖”的重复物流,库存、发票、往来都压缩在真实消耗节点。缺点是寄售消耗的确认、后续结算和税票处理比普通采购销售繁琐,需要业务和财务都理解“消耗点结算”的逻辑。如果集团已经习惯每单都要对清楚,这种方案容易在月末对账时争论。
2.4 怎么选:把税、法、资金全部放到一张表里
我通常建议客户用一张表对比,而不是凭感觉选。
| 维度 | 背靠背订单链 | STO调拨链 | 代理/寄售 |
|---|---|---|---|
| 合同关系还原度 | 高 | 低 | 中 |
| 单据量 | 高 | 中 | 低 |
| 库存归属清晰度 | 中 | 高 | 中 |
| 内部毛利体现 | 每层都能体现 | 弱 | 弱 |
| 税务/发票复杂度 | 常规但票多 | 常规 | 消耗点结算复杂 |
| 资金清算复杂度 | 高,逐层应收应付 | 中 | 低,可集中结算 |
| 合并抵消工作 | 较多 | 中 | 较少 |
| 实施风险 | 低 | 低 | 中高 |
选型时先问业务一个问题:中间公司到底是不是“需要承担货权和收入的主体”?如果答案是要挣差价的独立经营主体,老老实实选方案A;如果只是内部调拨中转,方案B更省事;如果中间公司只做信用背书或资金通道,方案C能显著降低运营成本。
3. 关键配置路径:从组织架构到财务入账
3.1 组织与主数据:逻辑系统、业务伙伴、内部客户/供应商
方案定了以后,配置才真正开始。首先检查组织架构定义。公司代码、销售组织、工厂之间的分配关系要明确:销售公司下的销售组织能否看到生产公司的工厂,能不能把其他公司代码的工厂设为发货工厂。这一步决定了公司间销售订单能不能建立。
如果是多套系统通过IDOC集成,还要先配置逻辑系统(事务码SALE),为每个系统分配逻辑系统名称,再在通信参数里维护发送/接收关系。很多项目里“逻辑系统配置”往往被当成IT杂活,其实是多角交易跨系统联动的地基。
主数据方面,S/4 HANA里客户和供应商统一为业务伙伴(BP)。一个内部伙伴往往既是供应商又是客户,要在同一个BP上同时维护FI供应商、FI客户和SD客户视图。常见的坑是只维护了客户视图,结果跨公司PO创建时找不到供应商,或者公司间发票开不出。
内部客户/供应商的编号最好用独立号段,避免和外部客户混在一起。这样报表里一看到某个号段,就知道是关联公司,公司间往来对账和审计抽凭都会方便很多。
3.2 SD侧:订单类型、项目类别、开票类型和定价
创建跨公司销售订单时,销售订单类型建议复制标准订单类型,但行项目类别、开票计划、交货类型都要单独维护。项目类别决定该行是正常销售、免费样品、寄售还是公司间库存转移。一旦选错,后面所有交货、开票都会走错方向。
公司间开票类型需要单独定义。标准外向交货过账之后,系统根据开票类型生成公司间发票,发票接收方是内部客户。价格方面主要靠条件类型PI01和PI02,PI01用于公司间销售收入,PI02用于公司间采购成本。两个条件类型在定价过程中缺一不可,而且它们的取值必须和财务核算逻辑一致。
很多配置团队在这里忽略“输出确定”。公司间发票的打印、PDF发送、通过IDOC发送给下游,全靠在输出类型里设置输出条件。没有配输出,发票只存在于系统里,对方公司可能什么都收不到。
3.3 MM侧:跨公司采购订单、STO移动类型与收货
跨公司采购订单和普通PO的区别在于,采购组织可以属于销售公司,但工厂属于另一个公司代码。系统通过“公司代码不同”这个条件自动触发公司间开票逻辑。配置时要确保采购凭证类型支持“跨公司代码”标识,否则PO建不到别的工厂头上。
STO方案里,移动类型和收货逻辑是核心。发货过账用STO发货移动类型,收货过账用101系列,系统会自动产生公司在途库存和在途负债。跨公司STO追求的是“发货方有收入、收货方有成本”的效果,内部收入通过公司间发票实现,并不是把存货白送。
多角交易中经常有直发场景:B的工厂发完货不是运给A的仓库,而是直接发到A的客户。为了减少中间库存,SD交货单可以直接从B工厂过账,同时MM里A做虚拟收货。这个“虚拟收货”要在交货类型和工厂参数里配,很多实施项目在UAT阶段才发现问题。
3.4 FI/CO侧:往来科目、利润中心、外币评估
公司间交易的往来科目建议单独使用内部结算科目,不要跟普通应收应付混在一个统驭科目里。比如“内部应收—关联公司”“内部应付—关联公司”,这样月末用FBL3N/FBL1N导出内部往来,对账和抵消都有抓手。
如果集团要按利润中心考核,收入、成本、库存都要落到正确的利润中心,最好在单据层用“利润中心派生规则”自动填充,不要依赖用户手工填写。多角交易链条很长,手工填很容易填错,最后CO报表口径到处都是洞。
外币评估配置在跨币种公司代码之间尤其重要。A公司本位币是人民币,B公司本位币是美元,A对B的应收美元到月末会形成未清外币项。必须用外币评估程序(FAGL_FC_VAL,ECC里是F.05)按期末汇率评估汇兑损益,并且在配置里指定汇率差异科目。否则内部往来余额永远对不上,合并报表时差异全堆在未分配利润。
涉及成本核算时,公司间转账也要注意成本构成分解。内部结算金额进入存货或成本时要作为初级成本要素处理,否则容易出现“成本要素没有分配给成本构成”这类报错,物料分类账一激活就满地是雷。
3.5 集成侧:IDOC关联交易凭证与接口
多角交易如果走系统间集成,公司间采购订单和公司间发票通常通过IDOC传输。ORDERS消息类型传递销售订单/采购订单,INVOIC消息类型传递发票。配置点集中在WE20伙伴参数文件、WE21端口、WE30消息类型和基本类型分配,以及NACE销售凭证输出控制。
“关联交易IDOC凭证”是我见过搜索量很高的词,说明实际项目里IDOC出问题的概率不低。最常见的是发送方已经生成了IDOC,但接收方因为主数据不完整或凭证类型不匹配,无法自动过账。排查时用WE02看IDOC状态,重点检查接收方的客户/供应商主数据是否包含公司代码视图、是否有对应的销售订单或采购订单。
如果外围系统要接收各家公司的会计凭证,就要提前写接口功能说明书。多角交易的凭证往往不是单一凭证,而是几张凭证通过关联号绑定。设计接口时,最好把“公司间参考号”作为主键,否则外围系统追不到来龙去脉。
4. 多角交易最容易踩的坑:现场排查实录
4.1 收入成本错位:毛利润出现在错误的公司
多角交易里最让人头疼的是毛利润失真。A公司给客户开票十几万,成本却等于B公司按标准价结转的几万,中间差额被当成A的毛利,实际上里面混合了B的生产成本和集团内部利润。
这个问题通常出在公司间价格设置上。PI01和PI02如果没有按“成本加成”或“转移价格”逻辑维护,A的收入就会包含B应体现的利润。更合理的做法是公司间结算价采用标准成本加成比例,让生产和销售两家公司各吃一段毛利。如果集团不要求内部利润,就统一用标准成本作为公司间结算价,事后在合并报表层面抵消。
4.2 关联交易IDOC凭证报错:逻辑系统与伙伴参数
有一个项目,公司间PO已经在A系统创建了,B系统却一直收不到,采购员只能手工补建一张PO。查下来发现:A系统的逻辑系统名称和B系统伙伴参数里的对端逻辑系统不一致,IDOC在发送时队列一直重试失败。
这类问题要按三层排查:第一,逻辑系统配置是否全局一致;第二,WE20伙伴参数文件里消息类型和基本类型是否配对;第三,接收方主数据是否完整。三样都对,IDOC才会自动过账。
4.3 物料分类账连接缺失:跨公司实际成本下传
当公司代码启用了物料分类账,多角交易会把多级差异从上游带下来。C的标准价是10元,实际采购价是12元,发给B的物料如果按10元结算,B的生产成本就少计2元;B再发给A的成品价格又基于10元,差异层层滚雪球。
所以在方案阶段就要设计好:实际成本是否可以跨公司代码流转。如果系统报“物料至物料分类帐的连接缺失”,一般是因为相关工厂或公司代码未统一激活物料分类账,或者跨公司转移时移动类型的差异分配逻辑没维护。这不是一个事务码能解决的,要回到配置整体视图。
4.4 外币未清项清账与评估
还有一家公司审计时发现,内部应收应付两边余额差了一大截。原因是两边的本位币不同,A记账时按汇率折算成本位币,B记账时也按记账当天汇率折算,到月末汇率一变,未清项的价值就出现偏差。
解法是月末统一做外币评估,同时在内部往来对账时不要按“本位币余额”逐笔对,而按“原币金额+汇率”对。如果内部结算币种能统一,建议所有关联交易都用同一种币种,外币评估只在公司报表层面做,这个坑能少一半。
4.5 权限、审批与期初数据切换
用户打不开公司间销售订单界面,第一反应通常是没有权限。查了PFCG角色,事务代码在,但用户主数据里的默认销售组织是空白的,导致界面根本带不出公司间订单类型。PFCG配的是“能用的权力”,默认参数配的是“进去以后看到什么”,两个都要对。
审批流也一样。销售订单审批过程中,系统生成跨公司PO的动作是等审批结果的,如果审批流停住,下游什么都等不到。SAP Workflow配置要跟MD07缺料检查、可用性检查串起来,否则只能靠业务追单。
期初数据切换要区分年末上线和年中上线。1月1日切换,主要导入期初库存和往来余额,采购订单/销售订单可以重建;7月1日切换,必须导入未清PO、未清销售订单、在途库存和未清内部往来,否则业务链会断在“历史单据”上。多角交易尤其要注意内部往来未清项,两边公司要同步导入,导入后原币和本位币余额都要核对。
5. 我最后的选型建议
5.1 一个优先推荐组合
如果业务上没有特别的税务和法务要求,我一般优先推荐“外部销售订单+跨公司采购订单+公司间销售订单”的组合,也就是方案A作为主链,内部库存调拨用STO。理由很简单:它是SAP最成熟、最可预期的路径,后续月结、审计、合并报表的阻力最小。
但如果链条里有超过三家法人,中间那几家只是过票,我会强烈建议适当引入寄售/代销,把多层发票压到两层。这需要财务总监和税务顾问点头,但一旦达成共识,系统运行成本能明显下降。
5.2 上线前必须跑通的测试闭环
上线前别急着铺数据,先把闭环跑通:创建最终客户订单,看系统是否自动生成跨公司PO;供应商一方生成公司间销售订单;做交货和发货过账;生成公司间发票;内部客户收货和发票校验;最终客户开票;最后做收款清账和内部往来对冲。每一步用FBL3N/FBL1N/FBL5N查凭证,重点看公司间往来科目是否平衡。
我还会额外跑一遍“多角链的冲销场景”。退货、价格重开、红蓝票在单边公司发生的情况,三家公司是否都能联动冲销。很多项目正流程通了,冲销流程全乱套,上线后客退单变成灾难现场。
5.3 一点个人体会
做这种方案讨论,我最深的体会是三句话:先别谈配置,先谈货权;每次只增加一个公司代码,不要指望一步到位;内部交易的价格条件必须当作财务制度来管。多角交易本质上不是IT问题,是利益分配问题。系统能帮你把每一段的账记得清清楚楚,但前提是业务愿意把“谁赚哪一段”这件事摆在桌面上说清楚。