SAP公司间项目STO全流程配置与避坑指南
简介这份文档面向需要在SAP系统中处理跨公司采购交易的操作员与项目经理聚焦公司间项目QSTO的业务背景、系统配置与完整操作链路帮助读者理清从项目创建、采购申请与订单、交货单处理到收货、开票的先后顺序并针对CO科目分配错误、采购收货及销售开票等常见问题给出排查与解决思路。资源包共1个docx文件约3.52MB内容以配置说明与操作步骤记录为主附带常用事务代码的实例应用和问题原因分析便于按目录快速定位对应环节。目前已有654人学习适合作为日常操作对照与异常处理时的参考手册。1. 公司间项目 STO两个公司代码之间那笔“内部买卖”到底怎么跑通A 公司接了一个项目物料却要从 B 公司走B 公司再向外部供应商采购——这种“项目挂在一家公司、采购发生在另一家公司”的结构在 SAP 里就是典型的公司间项目 STOStock Transport Order库存调拨单。它跟普通 STO 最大的区别在于交货单要跨公司代码过账收货方拿到的不是普通库存而是挂在 WBS 元素上的项目库存中间还夹着一步公司间开票。整条链路涉及 CJ20N、ME21N、VL10B、VL02N、MIGO、VF01、MIRO 七八个事务代码任何一环配置没对齐报错就会以“CO 科目分配对象属于公司代码 3不是 4”这种看不出所以然的形式甩到你脸上。这份指南的价值就在于把配置顺序和操作顺序钉死适合正在做跨公司项目采购的 SAP 顾问和关键用户照着复现。2. 配置先行SFW5 激活与跨公司交货类型怎么定公司间项目 STO 跑不起来十有八九不是操作错而是配置缺了一块。这一章按“先激活业务功能、再定交货类型、最后补财务清账”的顺序拆每一步都给出事务代码和检查点照着走一遍能把大部分前置条件补齐。2.1 SFW5 激活 LOG_MM_SIT 业务功能第一步不是建项目是确认系统里公司间 STO 的业务功能开关有没有打开。事务代码 SFW5 进入后搜索LOG_MM_SIT这个开关控制的是跨公司代码库存调拨的增强逻辑没激活的话后面交货单过账会缺移动类型分支。# SFW5 操作路径事务代码内导航非命令行 # 1. 输入事务代码 SFW5 回车 # 2. 菜单路径企业业务功能 - 后勤 - 物料管理 # 3. 在列表中找到 LOG_MM_SIT勾选后点击“激活” # 4. 激活是后台作业用 SM37 查看作业状态确认 FINISHED这里的关键参数是激活范围LOG_MM_SIT一旦激活会影响所有工厂间的 STO 行为不是只针对当前项目。所以如果系统里已有其他 STO 流程在跑激活前要让相关方确认没有依赖旧逻辑的自定义增强。激活作业跑完后用 SM37 查作业日志状态必须是FINISHED如果是RELEASED但没结束说明后台还在处理这时候去建交货单会读到半激活状态行为不可预期。2.2 交货类型与项目类别的绑定关系跨公司交货单能不能生成取决于交货类型和交货项目类别有没有配对。路径是SIMG - 后勤执行 - 交货 - 定义交货类型公司间项目场景通常复用NLCC公司间交货或项目专用的NLCQ类交货类型具体用哪个看系统里已配置的副本。配置对象事务代码/路径检查点交货类型SIMG 定义交货类型交货类型是否允许跨公司代码交货项目类别SIMG 定义交货项目类别项目类别是否带 WBS 科目分配移动类型OMJJ683/107 与 109 是否成对存在交货项目类别这一层最容易被忽略如果项目类别里没有勾选“科目分配”相关标识交货单行项目就带不出 WBS 元素后面销售开票必然报 VF156 找不到 WBS。OMJJ 里要确认移动类型683公司间发货和107收货方在途成对配置以及109收货方入库的科目修改是否指向正确的清账科目。这三者缺一个过账时要么没会计凭证要么凭证借贷方串到错误的公司代码。2.3 按工厂配置交货类型与可用性检查路径SIMG - 物料管理 - 采购 - 采购订单 - 设置库存调拨单 - 按工厂配置交货类型和可用性检查过程这一步决定的是 STO 采购订单保存时系统按哪个工厂去推导交货类型。# 配置检查逻辑伪代码用于理解系统推导顺序 # 输入STO 采购订单行项目 # 1. 读取供货工厂B 公司工厂 7091 # 2. 按工厂查配置表取交货类型如 NLCQ # 3. 按交货类型取可用性检查规则 # 4. 若工厂未配置回退到默认交货类型通常导致跨公司逻辑失效参数上要盯住“供货工厂”这一列A 公司采购订单里填的供货工厂是 B 公司的 7091配置表里必须存在 7091 这一行否则系统回退到默认交货类型生成出来的交货单不带公司间标识VL02N 过账时移动类型会走成普通调拨收货方拿不到项目库存。可用性检查过程按项目需要选项目库存场景一般用KP或系统自定义的检查规则目的是在 STO 创建阶段就拦住库存不足的行而不是等到交货单过账才报错。2.4 OBYA 维护公司间清账科目跨公司过账必然产生公司间应收应付OBYA 就是配这对清账科目的地方。路径SIMG - 财务会计 - 总账会计 - 业务交易 - 准备跨公司代码交易事务代码 OBYA。配置时按“公司代码组合 科目表”维护A 公司 7010 和 B 公司 7090 这一对要单独建一行应收科目和应付科目分别指向两边各自的公司间往来科目。这里翻车的典型是只配了单向发货方过账成功收货方那笔 109 移动类型找不到对应清账科目MIGO 直接报“科目未定义”。配完后建议用 FBKP 或直接看科目主数据确认两个科目都允许公司间业务、且没有设置为只能自动过账的冲突标识。3. 操作链路从 CJ20N 建项目到 MIRO 发票校验配置齐了之后操作顺序不能乱。这一章按真实执行顺序走一遍每个事务代码给出关键输入字段和容易填错的地方重点放在“为什么这一步必须在前一步之后”。3.1 CJ20N 建项目与 WBS 元素挂载A 公司 7010 先建项目事务代码 CJ20N。项目定义下挂 WBS 元素物料需求最终要落到 WBS 上所以 WBS 的“科目分配”标识和“库存”标识要打开。# CJ20N 关键操作点 # 1. 输入项目定义编号回车进入项目构建器 # 2. 在 WBS 层级下创建元素维护“基本数据”页签 # 3. 勾选“科目分配元素”确认“库存”相关标识 # 4. 保存后记下 WBS 元素编号后续 STO 和交货单都要引用WBS 元素编号是整条链路的锚点STO 采购订单行项目的科目分配填它交货单行项目带出它销售发票校验它。这里有个血泪经验——WBS 元素如果建在 A 公司 7010 下但交货单是从 B 公司 7090 发货系统在开票环节会做一次“WBS 是否属于销售公司代码”的检查不通过就报 VF156。所以建 WBS 时就要想清楚它归属哪个公司代码别等开票了才发现归属错位。3.2 B 公司对外采购ME51N 到 MIGO 的完整闭环B 公司 7090 先向外部供应商采购这一步是普通采购流程但收货时要收进项目库存。# ME51N 创建采购申请 # 1. 输入采购申请类型项目采购常用 NB 或系统自定义类型 # 2. 行项目填物料、数量、交货日期、供应商 # 3. 科目分配页签填 WBS 元素B 公司自己的项目 WBS # 4. 保存记下采购申请号 # ME21N 转采购订单 # 1. 引用采购申请号生成订单 # 2. 确认行项目科目分配仍指向正确 WBS # 3. 保存记下采购订单号如 4100000175 # MIGO 收货 # 1. 操作选“收货”参考选“采购订单” # 2. 输入采购订单号确认移动类型 101 # 3. 检查行项目“科目分配”页签的 WBS 是否正确 # 4. 过账记下物料凭证号如 5000001298MIGO 收货这一步的检查点是“收货后库存进了哪里”。正确结果是 B 公司 7091 工厂的项目库存增加会计凭证里借项目库存、贷 GR/IR。如果收货后库存进了普通库存而不是项目库存说明采购申请或订单的科目分配没带 WBS或者 WBS 的库存标识没开。这一步错了后面 A 公司收货时对不上数量整条链路要回滚重来。3.3 A 公司向 B 公司建 STOME21N 的跨公司字段A 公司 7010 向 B 公司 7090 建 STO事务代码 ME21N订单类型用公司间 STO 专用类型常见UB或项目定制的ZUB。# ME21N 创建公司间 STO # 1. 订单类型选公司间 STO 类型 # 2. 供应商填 B 公司对应的内部供应商编码如 7090 对应的供应商号 # 3. 行项目物料、数量、供货工厂填 7091B 公司工厂 # 4. 科目分配页签填 A 公司项目 WBS 元素 # 5. 确认“交货”页签里交货类型自动带出 NLCQ 类 # 6. 保存记下 STO 号如 4300000176这里最容易填错的是“供应商”字段公司间 STO 的供应商不是外部供应商而是 B 公司对应的内部供应商主数据这个供应商主数据要跟 B 公司 7090 绑定。填错的话后续 VL10B 生成交货单时找不到发货方或者交货单过账时公司间清账科目对不上。另一个检查点是供货工厂必须填 B 公司的 7091填成 A 公司自己的工厂就变成普通 STO跨公司逻辑整个不触发。3.4 VL10B 生成交货单与 VL02N 发货过账STO 保存后用 VL10B 按采购订单生成交货单再用 VL02N 过账发货。# VL10B 生成交货单 # 1. 选择“采购订单”作为参考凭证 # 2. 输入 STO 号 4300000176执行 # 3. 在结果列表勾选行点击“创建交货单” # 4. 记下交货单号如 800000123 # VL02N 发货过账 # 1. 输入交货单号进入修改模式 # 2. 检查行项目“批次”“库存地点”是否正确 # 3. 点击“发货过账”移动类型应为 683107 # 4. 记下物料凭证号如 4900002188VL02N 过账时移动类型683107的含义是B 公司 7091 发货 683同时在途 107 记到 A 公司侧。如果过账后只看到 683 没有 107说明 OMJJ 里移动类型配对没配全或者交货类型没带出跨公司标识。这一步过账成功后B 公司的项目库存减少A 公司侧产生在途库存接下来才能做收货。3.5 MIGO 收货与 VF01/MIRO 开票校验A 公司用 MIGO 根据交货单收货移动类型109然后走销售开票和发票校验。# MIGO 收货A 公司侧 # 1. 操作选“收货”参考选“交货单” # 2. 输入交货单号 800000123 # 3. 确认移动类型 109检查行项目 WBS 为 A 公司项目 WBS # 4. 过账记下物料凭证号如 5000001299 # 注意此步通常不产生会计凭证库存直接进项目库存 # VF01 销售开票 # 1. 参考交货单号创建发票 # 2. 检查行项目 WBS 元素是否正确带出 # 3. 若报 VF156转第 4 章排查 # MIRO 发票校验 # 1. 输入 STO 采购订单号 4300000176 # 2. 核对发票金额与收货金额 # 3. 过账完成公司间应付确认MIGO 收货这一步“无会计凭证产生”是正常现象因为 109 移动类型在跨公司场景下只做库存转移价值已经在 683107 过账时记到在途科目。如果这里意外产生了会计凭证说明移动类型配置串了要回 OMJJ 检查 109 的科目修改。VF01 开票是整条链路最容易卡住的地方WBS 归属检查、复制控制里的字段映射都会在这里集中爆发下一章专门拆。4. 避坑排查四类高频报错的现象、原因与解法这条链路跑通一次不难难的是报错时知道往哪看。下面四条是按实际踩坑频率排的每条都按“现象 → 原因 → 解决”写照着对号入座能省不少时间。4.1 报错“CO 科目分配对象属于公司代码 3不是 4”现象采购申请审批、STO 创建或收货时弹出这条消息消息号 KI100流程直接中断。原因WBS 元素归属的公司代码跟当前操作的公司代码不一致。比如在 B 公司 7090 下操作却引用了 A 公司 7010 的 WBS系统做科目分配检查时发现对象不属于当前公司代码按错误级别拦截。解决短期用 OBA5 把消息号 KI100 从 E 改成 W让流程能继续走但这是后悔药不是根治长期要把 WBS 建在正确的公司代码下或者调整科目分配逻辑。改 OBA5 之前要评估改成 W 之后错误被吞掉后续对账可能对不上建议只在测试或紧急场景用生产环境还是修数据。4.2 MIGO 根据交货单收货报错现象A 公司 MIGO 引用交货单收货系统提示无法收货或交货单状态不对。原因交货单没有完成发货过账。VL02N 那一步如果只保存没点“发货过账”交货单状态停在“已创建”收货方读不到可收货的数量。解决回 VL02N 确认交货单状态补做发货过账物料凭证生成后再回 MIGO 收货。这个坑的本质是操作顺序被跳过不是配置问题所以排查时先看交货单的凭证流别一上来就查配置。4.3 销售开票报 VF156 找不到 WBS 元素现象VF01 开票时日志报VF 156 Error while substituting WBS element 发票创建失败。原因WBS 元素属于发货方公司代码但开票检查的是销售方公司代码下的开票元素。跨公司场景下系统在外部客户开票时会额外检查网络里是否存在销售公司代码的开票元素找不到就报错。解决两条路。一是按 SAP Notes 937407 和 499389 的思路在销售公司代码的网络里定义更高级别的开票元素二是把 WBS 元素从交货单到销售发票的复制控制里删掉复制请求号 105 到 901事务代码 VOFM这一步通常需要开发配合改复制规则。选哪条看项目结构如果 WBS 本来就不该出现在 B 公司删复制控制更干净如果业务要求保留就补开票元素。4.4 公司间清账科目未定义或借贷方串位现象VL02N 过账或 MIGO 收货时报“科目未定义”或者过账成功但会计凭证借贷方公司代码不对。原因OBYA 里公司代码组合没配全或者配了但科目主数据的公司间标识、自动过账标识冲突。解决回 OBYA 补全 7010 和 7090 这一对的应收应付科目再用 FS00 检查两个科目是否允许公司间业务、是否被标记为只能自动过账。配完后用 FBKP 模拟一笔过账验证别等生产过账才发现。5. 进阶验证用凭证流和复制控制把链路钉死跑通一次不算完能稳定复现才算。我一般会在测试环境把整条链路走完后用凭证流把每个节点的物料凭证、会计凭证、交货单、发票串起来看一遍确认没有断点。具体做法是 MB03 查物料凭证 5000001298 和 5000001299看它们的凭证流是否指向同一张交货单 800000123再用 VF03 查发票的凭证流确认它引用的交货单和 STO 号对得上。凭证流断在哪问题就在哪一段。复制控制这块值得单独花时间。VOFM 里交货单到销售发票的复制规则决定了哪些字段会带到发票行项目。公司间项目场景下WBS 元素的传递逻辑要跟业务确认如果 WBS 只属于 A 公司就在复制规则里把它过滤掉避免 VF156如果两边都要引用就确保复制规则里的字段映射指向正确的公司代码层级。改复制规则前先在测试客户端用请求号隔离改完跑一遍完整链路确认发票金额、WBS、公司间清账三处都对得上再传到生产。还有一个验证习惯每次改完配置用 SM30 或配置传输日志确认改动落在正确的请求号里别让测试环境的临时改动混进生产传输。公司间 STO 的配置分散在 SFW5、OMJJ、OBYA、VOFM 好几处漏传一个就会在生产复现测试环境没出现过的报错。从那以后我每次动这类跨模块配置都强制走一遍“配置清单 → 请求号核对 → 测试链路 → 凭证流验证”四步少一步都不敢往生产传。希望帮到你。本文还有配套的精品资源点击获取