资讯动态

SAP公司间业务配置详解:6种场景与内部结算闭环

发布时间:2026/10/15 21:26:45 来源:尧图企业网站定制
简介面向 SAP 实施顾问、企业财务及供应链管理人员文档聚焦集团内部公司间协作的六种典型业务模式系统讲解从销售订单、采购申请到发货收货、发票校验、IDOC 自动过账的完整链路。全书以约 20MB 的单个 PDF 呈现覆盖第三方销售、跨公司销售、公司间转储、跨公司转储STO、转包和跨公司采购的适用场景、判断依据与详细配置步骤并针对 301/303/305 移动类型、MRP 联动、OBYA 公司间清账科目、ABT1N 资产跨公司转移等高频难点给出实操要点和注意事项。已有 12975 人学习下载内容含流程图示与分步骤操作说明其中转包业务还辨析了标准委外与工序委外的适用差异可帮助读者快速掌握集团内交易逻辑与标准配置路径减少项目中的反复调试。1. 为什么“公司间业务”值得单独写一份配置详解先讲清楚这件事的复杂度拿到“SAP公司间6种公司间业务案例及配置详解”这个标题很多刚接触内部顾问工作的朋友会觉得内容不会太多——公司间业务不就是集团内部两个公司代码之间做一笔内部往来、月底合并抵消吗真实项目里这种理解会直接导致上线后内部对账不平、库存归属错乱甚至审计时拿不出完整交易链路。公司间业务在 SAP 里是一套完整的“内部交易闭环”从采购订单、发货过账、公司间开票、对方收货、内部结算到月末对账每一步都涉及 MM、SD、FI、CO 四个模块的联动配置。不同业务场景跨公司库存转储、公司间采购、第三方直发、内部服务分摊等对应的定价过程、科目确定、税码规则、结算参数完全不同配错一个条件类型月底合并报表就会出现内部损益。这篇文章从一线实施视角把最常见的 6 种公司间业务场景拆开讲每种业务长什么样、配置路径怎么走、关键参数设成什么、上线前怎么验证。适合正在做多公司代码项目的顾问、负责内部结算的财务关键用户以及想搞懂公司间业务闭环的 SAP 初学者——读完你可以直接拿配置路径和测试脚本在自己的开发系统里走一遍。2. 公司间业务的标准解法内部订单 跨公司库存转储的全套配置路径2.1 为什么 SAP 要用“内部订单 内部结算”来建模而不是直接做一笔总账凭证很多从金蝶、用友转过来的顾问第一反应是同一集团下两个公司代码之间转货直接做借库存、贷内部往来不就行了吗从财务记账角度确实可以但 SAP 的模块化架构决定了公司间业务要走完“物流 发票 结算”三层否则会出现三类严重问题。第一库存所有权不清晰。SAP 的库存是按工厂 公司代码维度管理的生产工厂和销售公司如果属于不同公司代码物料从一个工厂转到另一个工厂必须有一个“内部收货 内部发货”的双重动作库存价值才能正确落到接收方的账上。直接做总账凭证虽然账平了但 MM 层的库存记录不会跟着变物料账跑完差异就全堆在发运方。第二内部结算没有触发点。公司间交易必须有“价格”——这个价格不是随便填的而是通过定价过程自动带出的内部转移价格比如按标准成本加成、按外部采购价直接转售。定价结果要进到 SD 的公司间发票、同时映射到 CO 的内部结算月底集团合并时才能自动抵消内部损益。第三审计链路断裂。外部审计看公司间交易要的是“采购申请 → 采购订单 → 发货单 → 公司间发票 → 内部结算凭证”完整链条。跳过中间环节直接过账出不了这条链审计师直接打回。所以 SAP 给出的标准路径就是发运公司代码创建一个内部订单内部结算订单走正常 MM 发货流程发货过账后触发公司间开票接收公司代码做收货过账最后月末通过内部结算把收入和成本结平。这条链路既保证物流账实一致又提供审计可追溯的交易流。2.2 配置前置清单不先做这些后面全白搭公司间业务配置不是上来就配定价条件而是有几个前置项必须先落地。我一般按下面顺序检查缺一个直接后续报错配置项后台路径作用工厂分配公司代码SPRO → 企业结构 → 分配 → 物料管理 → 给工厂分配公司代码确保发运工厂和接收工厂所属公司代码正确装运数据IMG → 物料管理 → 采购 → 采购订单 → 设置库存调拨订单 → 定义工厂的装运数据跨公司转储时确定发运工厂和收货工厂的装运点内部订单类型SPRO → 内部订单 → 订单类型 → 定义订单类型创建用于公司间结算的订单类型一般复制标准类型 OR 或单独建自定义类型结算参数文件SPRO → 内部订单 → 结算 → 定义结算参数文件包括结算规则、结算接收方类型成本中心/订单/资产、PA 传输结构公司间发票类型SPRO → 销售与分销 → 开票 → 发票 → 定义发票类型复制标准发票类型 IV公司间发票并调整复制控制定价过程SPRO → 销售与分销 → 基本功能 → 定价 → 定价控制 → 定义定价过程在公司间开票中用条件类型 PI01/PI02 取内部转移价格科目确定SPRO → 物料管理 → 评估和科目设置 → 科目确定 → 配置自动记账维护公司间内部结算的存货科目、收发差异科目、对方清算科目一个常见误区是把内部订单类型直接复用标准生产成本订单结果结算规则里找不到内部结算接收方月末结算时报“接收方类型不允许”。内部订单类型必须单独配或者明确复制标准类型的结算规则后改结算接收方。2.3 最小可跑通的测试脚本用 BAPI 创建公司间库存转储前置配置完成后需要跑通一条最小业务链来验证配置是否生效。我通常建议先不用 SD 完整流程而是直接做库存转储两步法因为这个链路短、涉及模块少、排错快。下面这段 ABAP 代码演示了用 BAPI 创建跨工厂转储订单的核心逻辑。REPORT ztest_intco_sto. DATA: ls_head LIKE bapibestpo_create_header, lt_item LIKE TABLE OF bapibestpo_create_item, ls_item LIKE bapibestpo_create_item, lt_return LIKE TABLE OF bapiret2, ls_return LIKE bapiret2, lv_ebeln TYPE bstyp, lv_ebelp TYPE ebelp. * 抬头发运工厂 1000公司代码 1000向接收工厂 2000公司代码 2000转储 ls_head-doc_type UB. UB 跨公司转储订单 ls_head-suppl_plant 1000. 发运工厂 ls_head-rec_plant 2000. 接收工厂 ls_head-purch_org 1000. 采购组织 ls_head-purch_grp 001. 采购组 ls_head-companycode 1000. 发运方公司代码 * 明细物料、数量、价格价格最终由公司间定价过程重新确定 ls_item-material MAT001. ls_item-plant 2000. 收货工厂 ls_item-quantity 100. ls_item-po_unit PC. ls_item-net_price 10.50. ls_item-price_unit 1. ls_item-item_cat 0. APPEND ls_item TO lt_item. CALL FUNCTION BAPI_PO_CREATE EXPORTING po_header ls_head IMPORTING po_number lv_ebeln TABLES po_item lt_item return lt_return. LOOP AT lt_return INTO ls_return. WRITE: / ls_return-type, ls_return-message. ENDLOOP. IF lv_ebeln IS NOT INITIAL. MESSAGE 转储订单已创建 TYPE S. ENDIF.参数说明doc_type UB是跨公司库存转储订单的标准订单类型确保系统走公司间库存转储的定价规则suppl_plant和rec_plant分别对应发货工厂和收货工厂这两者属于不同公司代码才会触发公司间结算net_price只是暂存价格后续公司间开票时会根据定价过程重新确定内部转移价所以这个字段在转储场景下不是最终价值。跑通这一步后再完全用界面操作VL10B 创建交货单 → VL02N 发货过账 → VF04 开公司间发票 → 对方 MIGO 收货。链路走通后再看 FI 凭证里是否自动生成了内部往来科目如果科目不对多半是科目确定表配置缺失或定价过程里的科目键没对应上。3. 拆解 6 种公司间业务每种业务的配置要点与落地差异3.1 跨公司库存转储两步法最基础也是最容易踩坑的场景这是集团内部最常见的业务生产工厂在公司代码 1000 下成品仓库和销售公司在公司代码 2000 下生产完工后要把库存从生产工厂仓库转到销售公司仓库。用的是两步法——发货工厂做一步发货过账接收工厂做一步收货过账中间产生一个“在途库存”。配置要点集中在三个方面。第一转储订单类型为 UB 或自定义类型后台必须定义装运数据也就是每个工厂的发货/收货装运点否则 VL10B 创建交货时找不到装运点直接报错。第二定价过程要赋予公司间转移价的条件类型常用做法是 PI01公司间价格取物料主数据里的内部价格或者 PI02公司间价格加固定金额/百分比做加成。第三科目确定里必须维护 GBB 和 BSX 的事务键映射发货方减库存、接收方加库存差额走内部结算科目。一个很容易让人翻车的细节两步法在发货过账时生成的 FI 凭证里发货方只有库存减少和内部结算应收并没有“在途库存”概念接收方收货后才有库存增加。如果业务要求发货方仍然保留在途库存在负债表上就需要启用“在途库存”评估类型这属于高级配置不是默认行为。多数项目上线初期按两步法标准行为走在途到货周期短且跨月少时不必额外配。3.2 公司间采购销售需要 SD 和 MM 双向打通的完整闭环这是另一种高频场景集团内 A 公司销售方按内部转移价向 B 公司开销售发票B 公司则按普通采购流程收货并消耗。和跨公司库存转储不同这个场景是 A 公司主动发起——通常 B 公司向外部客户销售但货权先转到 B 公司账面再由 B 公司卖给外部客户或是 B 公司直接采购 A 公司的产品用于内部生产消耗。配置上这个场景最容易漏的是“发票类型”和“定价过程”的组合。公司间销售走的不是普通 OR 发票而是 IV公司间发票或 CV公司间贷项凭证这两个发票类型必须从普通发票类型复制后修改——重点改掉“会计凭证的过账码”和“科目确定规则”否则开票时把收入记成了外部销售收入月底合并时内部收入不会被自动抵消。SD 侧的定价过程需要专门复制一个公司间定价过程里面放 PI01 而不是 PR00标准外部售价。PI01 取的是物料主数据里的“内部价格”或通过条件表 17/18 维护的价格。如果条件表里没有维护当前有效期开票时价格直接为零财务端看到零金额发票会一头雾水查半天才发现是定价过程没配条件记录。MM 侧采购订单走标准流程但在收货过账时使用的移动类型和科目默认从公司间发票自动带过来不需要额外维护科目。容易出错的是收货过账后产生的外币评估——如果两个公司代码本位币不同公司间开票金额会因汇率产生差异月底用 OB52 或 F.13 做外币重估时把差异归到汇兑损益科目这个科目也要提前在 OBYC 里配好。3.3 公司间服务分摊用内部订单做费用转移的必经之路集团内共享服务中心向各法人公司提供服务IT 运维、财务共享、人力资源服务费用需要从服务中心公司代码分摊到各业务公司代码这就属于典型公司间服务业务。SAP 里的实现方式有两种内部订单结算或者通过服务采购订单走 MM 流程。内部订单结算路径比较轻服务中心挂一个内部订单收集实际成本工资、折旧、差旅月末按结算规则分摊到各接收方内部订单或成本中心。结算规则里维护多个结算接收方每个接收方对应一个公司代码的利润中心或成本中心。关键配置是结算参数文件里的“结算接收方类型”必须勾上“利润中心/成本中心/内部订单”并且要维护分配结构PA 传输结构否则 CO 结算凭证生成后 FI 凭证不会自动带出内部往来科目。这个场景有一个独特的坑结算凭证在公司间会产生利润中心差异。因为发单方和接收方利润中心不同CO 结算时如果 PA 传输结构取的是成本中心默认利润中心很容易出现接收方利润中心不一致导致 FI 凭证借贷不平衡。解决办法是在结算参数文件里强制“利润中心来自成本中心”并确保各成本中心都指定了正确利润中心。3.4 第三方采购公司间结算货直接发客户但结算走内部法人业务形态是这样的某集团销售公司拿到外部客户订单后不一定从自己库存发货而是让生产公司直接把货发给客户同时生产公司和销售公司之间要完成一次内部结算——相当于销售公司向生产公司“采购”这批货但实物不经过销售公司仓库。这种业务配置复杂在“三张单联动”SD 销售订单对外→ MM 采购订单公司间→ 采购订单收货时触发公司间结算。回到 SAP 标准功能层面标准方案是“第三方订单” “公司间采购”也就是销售订单里指定供应商为集团内生产公司系统会自动生成对应的采购订单给该生产公司。发货后生产公司向销售公司开公司间发票销售公司再向外部客户开正常销售发票。配置上要注意两个地方。第一SD 销售订单的项目类别必须支持第三方采购项目类别 TAB 或类似配置要提前维护否则创建销售订单时不会自动生成对应采购单。第二公司间发票的开票日期和销售发票的开票日期可能存在时间差如果月结时销售发票还没开公司间发票已经生成公司间结算会产生未清项月底对账时要把这批未匹配的公司间发票标记出来。3.5 公司间资产/在建工程转移把“资产调拨”也纳入内部交易闭环大型集团内部常常有资产调拨某工厂的设备转到另一个法人公司继续使用或者某项目公司把已经资本化的一幢厂房转给另一家公司。这类业务多数项目直接用 AB 跨公司资产转移的 TCode 处理但它本质上也是一种公司间结算——资产原值、累计折旧、净值都要在两个公司代码之间完成一次内部计价。配置关键在资产转移的“内部结算科目”。常见做法是在资产主数据或资产类里维护“内部结算资产科目”同时把发方资产的价值和对方资产作为新增资产接收做镜像。从专业实践来看跨公司资产转移会涉及增值税处理不同税率下是否有进项税转出要提前确定。价格确定上一般按账面净值 内部加价加价部分走营业外收入或在建工程转固时的差异科目。这个场景最容易出问题的是折旧科目和资产价值的后续调整。资产转移生成的新资产其“折旧起算日”可能是资产交付日而不是原资产入账日这会导致转移后首月折旧金额和财务预期不一致。上线前要专门做一次资产转移的 UAT 测试比对原资产和接收方新资产的净值衔接。3.6 公司间销售退回与贷项方向相反时配置为何不能直接镜像不要以为公司间退货就是把公司间销售流程倒过来跑——这是最常见的错误认知。SAP 里公司间销售退货走的是 CV公司间贷项凭证而不是 IV因为退货意味着接收方要开一张贷项给发运方。但很多项目直接在 IV 的复制控制里加一个退货流程结果系统把贷项又记成了公司间收入月底集团内部收入为正负两边同时出现抵消不掉。正确做法是单独复制销售退货流程开票类型指定为 CV。定价过程可以复用公司间定价过程但退货条件下系统会自动用负的价格条件记录。如果价格记录里没有维护负价格退货金额直接变成正数两边公司间的价值方向就完全错了。另外一个容易被忽略的点退货流程会触发收货原发货方接收退回货和发货退货方退回货两个移动类型都要在科目确定里维护对应评估类。如果原发货方退回后再做二次发货还要再走一遍标准转储流程此时公司间开票的次数就是两次——一次贷项一次正常发票对账时业务方会觉得重复。4. 公司间业务配置避坑指南5 个上线前必须排查的高发问题4.1 现象公司间发票创建时报“定价未找到”原因定价过程里条件类型 PI01公司间价格没有配条件记录或者条件表范围没包含当前工厂组合。现象是发票价格取不到系统报定价错误。解决维护 VK11条件类型 PI01输入物料号 发运工厂 接收工厂的组合有效期要覆盖当前期间。注意公司间价格记录通常是按“物料 发货工厂 收货工厂”三个维度维护的很多项目只维护了物料维度导致特定工厂组合取不到值。维护完条件记录后重新进入 VF04 开票即可。4.2 现象两步法转储后接收方库存没增加但发运方已经减库存原因发货过账后接收工厂还没做收货过账此时库存处于“在途”状态。如果之前没用过在途库存评估系统默认不会显示任何跨公司在途数量业务方看到发货方库存减少、接收方没有增加误以为库存丢失。解决先确认是否启用了移动类型 101 的收货流程并检查 VL31N 是否按计划创建了收货交货单。如果没有可以让接收方直接 MIGO 选择“采购订单”收货移动类型 101输入转储单号完成收货过账。如果项目需要可视化在途库存需要启用“评估的在途库存”功能这属于额外配置但不是所有项目都有此需求。4.3 现象公司间开票成功后FI 凭证内部往来科目不对原因科目确定里自动记账规则和公司间发票上的“科目设置组/科目键”不一致。常见的原因是定价过程里用的“条件类型”决定了过账科目键而科目键对应的科目配置OBYC GBB/BSX没有按公司代码维度维护完整。解决检查 VF03 查看公司间发票的会计凭证找到行项目上的科目键然后去 OBYC 里对应该科目键的事务/科目表映射补齐各公司代码的统驭科目和总账科目。这里最容易出错的是多个公司代码共用一个科目表但科目确定表里只给一个公司代码配了科目其他公司代码取不到自动记账科目导致过账失败或过到默认统驭科目。4.4 现象月末 CO 内部订单结算后FI 凭证借贷不平原因最常见的情况是内部订单只挂了成本但结算规则里的接收方类型或接收方编号未维护系统无法把成本全部分摊完。其次如果接收方是多个成本中心/内部订单每个接收方的利润中心不一致CO 在做 PA 传输时生成的两张 FI 凭证发方和收方利润中心不同合并时出现不可抵销的差异。解决KO88 结算前先跑 KO04 或 KO07 检查内部订单余额对比“已结算金额”和“待结算金额”。结算成功后如果 FI 凭证不平查看 CO 凭证的利润中心字段修改各成本中心的利润中心使其和公司代码对应一致。利润中心不一致的问题在跨公司分摊场景几乎必现上线前列出所有利润中心、成本中心、公司代码的对应关系表统一核对一遍。4.5 现象退货贷项凭证生成时系统自动将退货金额按正数记账原因公司间退货用了标准 IV 流程而不是 CV或者定价过程里的条件类型取不到负价格记录。退货的方向应当是“负的销售收入”但标准定价默认按正数除非条件记录或定价过程中退货事件触发了负值计算。解决确认开票类型为 CV 且定价过程包含公司间退货条件。在 VK11 维护 PI01 的负价格如果退货价格和原销售价格一致可以用“退货参考”自动带出原发票价格取负。配置层面检查 VF01 开票复制控制中退货参考凭证的“价格来源”设为“从参考发票复制”这样才能保证退货金额方向正确。5. 把 6 种业务落到配置上参数差异表、核心配置动作和端到端冒烟测试5.1 一张表对照 6 种业务的配置差异做完前面 6 种业务的逐个拆解后最高效的落地方式是做一张配置对照表方便实施项目里按单子逐项核对。这张表也是我做上线前配置自查时必用的。业务类型核心单据开票类型定价过程要点结算对象最容易踩的坑两步法库存转储UB 转储单无MM 内部结算PI01 条件记录按物料发运工厂收货工厂内部订单/结算规则在途库存不可见、装运点缺失公司间采购销售SD SO MM POIVPI01 取内部价格复制公司间定价过程内部订单 SD 开票发票类型误用 OR公司间服务分摊内部订单无CO 结算结算规则 PA 传输结构成本中心/内部订单利润中心不一致导致 FI 不平第三方采购公司间结算SD SO MM POIV/CV第三方订单项目类别 公司间定价内部订单销售发票未开时公司间发票未清公司间资产转移AB 资产转移无FI 直接过账内部结算科目 资产类科目资产/在建工程折旧起算日错位公司间退货贷项SD 退货 SOCV退货参考复制原发票价格取负内部订单贷项凭证误用 IV 导致内部收入双边挂账这张表的用途不是背流程而是做“业务表单 → 系统配置 → 事务代码 → 财务报表”之间的映射确保每种业务在系统里有一致的走法。5.2 核心配置动作定价过程、结算参数、科目确定的三个必改项配置动作一定价过程。公司间开票的定价过程必须单独复制标准 RVAA1开票定价过程去掉 PR00加上 PI01/PI02。配置路径 V/08 维护定价过程定价过程里“金额小计”和“科目确定”标签页里的科目键要明确改为公司间科目键我一般会在条件类型行里把“科目键”设为 KOFI 或自定义的 KOIV避免与外部销售收入同科目。配置动作二结算参数文件。内部订单的结算参数文件在 OKB9 或 KOAN 维护。重点检查“结算参数文件”里的“PA 传输结构”是否启用以及结算规则接收方是否允许“多个接收方 各百分比”。很多项目只在内部订单类型里挂了默认参数文件但没维护接收方导致 KO88 时自动生成的结算规则为空。配置动作三科目确定。OBYC 里必须针对以下事务键维护公司间科目BSX存货记账、GBB收货/发货差异、PRD成本价格差异以及自定义的“内部结算科目”键。公司间业务的特殊之处在于同一物料在不同公司代码下的评估类可能不同所以评估类维度的科目映射也要逐一核对。5.3 端到端冒烟测试一条命令走完流程 vs 手工逐步验证配置完成后不能只看配置项是否完整必须做端到端流程测试。常见做法是先手工走一遍完整业务链再用自动化工具固化回归脚本。手工验证路径如下# 第一步创建跨公司转储订单 ME21N (或通过 BAPI_PO_CREATE 创建) # 第二步创建交货单并发货过账 VL10B → 选择转储订单 → 创建交货单 VL02N → 发货过账 → 移动类型 641 # 第三步公司间开票 VF04 → 选择公司间发票 → 开票 # 第四步对方收货 MIGO → 采购订单 → 收货 → 移动类型 101 # 第五步查看双方公司代码的 FI 凭证 FB03 → 分别输入发运方和接收方公司代码的凭证号 # 第六步CO 结算验证 KO88 → 输入内部订单 → 结算 → 查看 CO 凭证每一步执行完后要检查一个关键字段FI 凭证行项目里的“内部结算”科目是否借贷平衡、是否带出正确的利润中心和成本中心。如果某个环节断掉优先排查的不是流程本身而是后台配置——因为端到端测试出现断链 90% 是配置缺失不是操作错误。我在项目里会用 LSMCW 录一段完整流程的 BDC 脚本把上述手工路径录成可重复执行的回放脚本每次配置变更后跑一遍10 分钟内验证完整链路。录脚本的注意点是每一步都要等待系统消息弹窗后再继续不能只录操作键否则回放时因为消息窗口没弹出而直接跳过关键步骤测试结果失真。6. 进阶验证技巧用 ABAP 快速对账 6 种公司间业务的内部结算金额手工走完流程后还需要一个“对上账”的手段——确认发运方和接收方的公司间结算金额一致、内部税金正确、利润中心匹配。我把这个方法作为每次上线前必跑的自查工具。REPORT zintco_recon. TABLES: bsis, bkpf. DATA: lt_bsis LIKE bsis OCCURS 0 WITH HEADER LINE, lv_bal LIKE bsis-hsl, lv_hkont(10), lv_bukrs(4). SELECT-OPTIONS: s_bukrs FOR bsis-bukrs, s_belnr FOR bsis-belnr. * 取公司间内部结算科目的余额 SELECT * INTO TABLE lt_bsis FROM bsis WHERE bukrs IN s_bukrs AND belnr IN s_belnr AND hkont lv_hkont 内部结算科目按项目配置替换 AND augdt 00000000. LOOP AT lt_bsis. lv_bal lv_bal lt_bsis-hsl. ENDLOOP. IF lv_bal 0. WRITE: / 内部结算科目余额不为零差异, lv_bal. ELSE. WRITE: / 内部结算科目余额核对完毕无差异. ENDIF.参数说明bsis是 BS 科目未清项表只查未清项才能发现跨月未结算的公司间交易hkont替换为项目里配置的公司间内部结算总账科目代码augdt 00000000表示只查未清项已经清账的公司间发票不在内。实际项目里内部结算科目可能不止一个可以改成从 KONTO 或 T030 表动态取科目集。这个报表比用 S_ALR_87012077 看资产负载表更直接因为它是按内部结算科目维度过滤的直接反映出公司间交易的未清差异。如果发现余额不为零优先检查两件事有没有未执行的公司间开票以及是否有退货贷项还没清账。做完验证脚本后我自己养成的习惯是每次配置变更后不只看配置项本身还要跑一遍对账脚本和端到端流程脚本确保“配置改得动、流程走得通、账对得上”。做 SAP 实施最怕的就是配完不看数据等到月结才发现内部往来科目挂着十几个未清项那时候追起来就真的是玄学问题了。希望这篇公司间业务配置详解能帮你少走几段我当年走过的弯路祝所有做内部顾问的朋友都能把公司间业务做得干净利落不再为对账熬夜——希望帮到你。本文还有配套的精品资源点击获取

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

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

免费获取报价 →
↑