简介:SAP STO 自动触发交货单、自动发票、自动交货、自动采购发票(配置文档).doc 是一份面向SAP顾问与后勤模块实施人员的完整配置参考,聚焦企业库存转储(STO)业务流程自动化,覆盖从采购订单下达、自动创建交货单、VL02N发货过账、自动MIGO收货、VF01销售开票到MIRO采购发票的端到端配置。文档基于真实业务场景展开,目录清晰,共分8个章节,依次讲解业务背景、STO自动触发交货单配置、发货过账、收货、销售/采购发票自动化,以及常规IDOC和S/4系统专用的BRF+消息输出设置,并附配置路径与操作截图,便于按步骤逐一落地。压缩包内仅有1个doc文档,约17.76MB,携带可读性良好的排版与大量图示,适合需要快速查询STO自动触发配置细节的中高级SAP后勤顾问。目前已有1299人学习下载,文档弥补了同类资料中较少涉及的自动发票与消息输出环节,对处理公司间采购与内部结算的用户有直接参考价值。
1. STO 自动触发配置:把六步手工活压成一条后台链
SAP-STO 配置在集团内部调拨里几乎是每天的日常。传统做法是采购订单下达后,人工盯 VL10B 创建交货单、VL02N 发货过账、MIGO 收货、VF01 开销售发票、MIRO 再对采购发票,六步环环相扣,任何一步漏了,库存和账就两头对不上。最怕的不是操作慢,而是“以为系统自动了,其实根本没人管”。这套 STO 自动触发配置的目标,是把 1600 工厂向 1310 工厂采购这条链路,做成从 Z016 采购订单保存那一刻起,交货、发货、收货、两张发票全部自动触发。这篇按 60 页的 STO 自动触发配置文档落地拆开,讲组织绑定、VL10CUC 参数文件、后台变式以及最后怎么验证跑通。适合正在做公司间调拨自动化、被手工补单折磨的顾问和运维。
2. 配置前先理清环境:1600/1310 组织架构与主数据绑定
STO 自动化和普通销售订单不同,它牵扯两个公司代码、两个工厂,同一个对象一边是供应商、一边是客户。配置顺序有讲究:组织绑定和主数据没配好,后面的 VL10CUC 参数文件、BRF+ 输出设置全是白搭。我习惯先画一张“组织架构对应表”,把公司代码、工厂、采购组织、销售组织、客户、供应商之间的对应关系写死,再动手配后台。这一步省下来的时间,后面会成倍还回来。
2.1 业务场景:谁向谁采购,订单类型 Z016
先把文档里的场景读一遍:1600 公司下的 1600 采购组织、1600 工厂,用 Z016 订单类型向 1310 公司的 1310 工厂采购。1310 工厂在 1600 公司体系里承担的是“内部供应商”角色,供应商编码是 1310,对应采购组织 1310;反过来,1600 工厂在 1310 公司体系里是“内部客户”,编码 1600,销售组织为 1500。也就是说,同一对工厂在两边系统里,一个被当成供应商,一个被当成客户,这个双重视角决定了后面所有自动单据的抬头和伙伴角色。
为什么要特别强调订单类型 Z016?因为自动触发交货单、自动开票这些配置,大多挂在订单类型、项目类别和交货类型上。标准订单类型如果不做复制,很可能不会走这套自动逻辑。Z016 这种自定义类型在配置时要确认两点:一是它分配了对应的项目类别(能触发 STO 交货的那个);二是采购订单的“交货”页签里允许自动创建交货单。这两点缺一个,后面的 VL10CUC 都接不上。
| 角色 | 组织对象 | 编号 |
|---|---|---|
| 采购方 | 公司代码 / 采购组织 / 工厂 | 1600 / 1600 / 1600 |
| 供应商(1600 侧视角) | 内部供应商编号 | 1310 |
| 供应商侧采购组织 | 采购组织 | 1310 |
| 客户(1310 侧视角) | 内部客户编号 | 1600 |
| 销售组织 | 销售组织 | 1500 |
| 采购订单类型 | 订单类型 | Z016 |
表格里的编号都是文档原值,配置时照着填就行。最容易出错的是销售组织——1600 工厂在 1310 公司体系里对应的销售组织是 1500,不是 1600,很多人在这一步把销售组织写成 1600,结果后面自动开票的抬头全错。
2.2 工厂与客户绑定:装运工厂信息
第一个要落的后台配置是“定义装运工厂信息,工厂与客户绑定”。含义是:当 1310 工厂作为装运工厂给 1600 发货时,系统要能根据“装运工厂 + 客户”找到对应的交货参数。配置逻辑是把 1310 工厂绑定到内部客户 1600 上,并给出销售组织 1500。这样当采购订单在 1600 侧创建、系统自动生成对 1600 的交货单时,抬头的销售组织和客户编号才不会取错。
这个绑定维护在装运工厂相关视图里,具体事务码跟着系统版本走,文档里的配置路径重点看“工厂与客户绑定”那张截图:工厂 1310,客户 1600,销售组织、分销渠道、产品组要完整。漏配分销渠道或产品组,后面创建交货单时系统会报“没有找到装运信息”;最常见的翻车是只配了工厂和客户,忘了维护“装运信息”里的销售组织范围,系统按默认组织找,找不到就静默跳过。
2.3 BP 中的内部供应商:1310 供应商与采购组织绑定
另一侧是 BP(Business Partner)里的供应商主数据。1310 作为内部供应商,要维护供应商编码 1310、采购组织 1310,并且在该采购组织下绑定 1600 工厂。这里的绑定是“供应商-采购组织-工厂”三层关联,少了任何一层,自动创建交货单时系统都无法确认从哪个工厂采购、发给哪个工厂,最终要么选不出单,要么创建出错误交货单。
我一般会建一份“内部供应商主数据核对清单”,把供应商、采购组织、工厂、订单货币、统驭科目全部列出来逐项核对。STO 场景里最容易漏的是“供应商在采购组织视图里的收货方”字段——如果收货方默认不是 1600 工厂,自动生成的交货单收货方就会错。这个字段在标准主数据里经常没人注意,但它直接影响 MIGO 收货能不能自动过账。
注意:BP 里的 1310 供应商必须同时维护会计视图和采购视图。只维护采购视图,发票和收货环节会因为没有统驭科目而中断。
2.4 按工厂配置交货类型与可用性检查过程
交货类型的配置决定自动创建出来的交货单长什么样。按工厂配置交货类型和可用性检查过程,意思是把 1310 工厂作为发货工厂,给它指定交货类型(文档里后面出现的 NLCC,就是这种公司间 STO 专用交货类型)以及对应的可用性检查过程。可用性检查过程决定 ATP 是否参与、怎么参与;STO 场景通常希望检查逻辑简单,不要把销售订单那一套复杂 ATP 搬过来。
这里要顺带说明“可用性检查”在整条链里的角色:如果可用性检查过程配置成有库存就转、没库存就等,会导致交货单创建时机不稳定。文档后面在 VL10CUC 参数文件里特别强调“请勿勾选批量 ATP 检查处于活动状态”,就是为了绕开批量可用性检查对性能和创建时机的干扰。所以在这一步就把交货类型和检查过程的组合想清楚,宁可让业务后补手工补货,也不要让自动链路被 ATP 卡住。
3. 自动触发交货单:VL10CUC 参数文件与 STOA 设置
当组织绑定和主数据齐了,接下来是自动链路的第一动作:采购订单保存后,系统自动创建对 1600 的交货单。这一环的发动机是后台事务码 VL10CUC,承载它的参数文件叫 STOA。很多项目在前后台跑不通,问题不在主数据,而是这个参数文件里一两个开关勾错了。
3.1 定义采购订单保存时自动创建内向交货单
先按文档配置“定义采购订单保存时自动创建内向交货单”。从 1600 采购方视角看,1310 工厂发出的货物到达后,1600 这边收到的是“内向交货单”,所以配置里这个说法对应的是采购侧收货。这个配置项做的是:允许 Z016 这类采购订单在保存时触发交货单创建,而不是等到人工执行 VL10B。
配置完以后,测试方法很直接:新建一笔 Z016 采购订单,保存时注意看系统日志。如果配置生效,返回消息里会出现“交货单 xxx 已创建”或类似提示;如果没有任何提示,先别急着查 VL10CUC,回来看这项配置的作用范围——它是按订单类型生效,还是按工厂、按公司代码生效,Z016 有没有被包含进去。
注意:改配置后只会对新建的 STO 采购订单有影响,已经新建的采购订单不会再自动创建交货单,需要手工执行 VL10B 补单。文档开头就写了这句话,实践中几乎每周都有人拿老订单来问为什么没自动。
3.2 VL10CUC 与 STOA 参数文件:两个不要勾的开关
文档里的配置路径落到事务码 VL10CUC,对参数文件 STOA 进行设置。VL10CUC 是“按参数文件为采购订单创建交货单”的后台批量事务码;STOA 是自定义参数文件,相当于把“选哪些采购订单、用什么交货类型、是否检查库存”这些选择条件打包,供后台周期执行。
STOA 参数文件里,文档特意标注了两处:请勿勾选“地理路线”,请勿勾选“批量 ATP 检查处于活动状态”。这两个开关是初配时最容易踩的坑。地理路线一旦勾上,系统会去读取装运路线主数据,而 STO 场景里很少有工厂去维护真实路线,结果是作业每次跑都“静默跳过”,一张交货单也建不出来;批量 ATP 检查则会在批量选单时对每张单跑可用性检查,单量上来后作业时间成倍拉长,还容易因为库存不足把整批创建任务挂起。
| 参数 / 开关 | 建议 | 原因 |
|---|---|---|
| 地理路线 | 不勾 | STO 多不维护路线主数据,勾上后自动创建被静默跳过 |
| 批量 ATP 检查 | 不勾 | 批量选单时逐单跑检查,性能差且库存不足会中断创建 |
| 选单范围 | 工厂 1600,订单类型 Z016 | 与业务场景一致,选错范围则选不出单 |
| 交货状态 | 留空或未处理 | 避免把已创建交货单的订单反复拉进来 |
参数文件建好后,先在后台执行一次 VL10CUC 看有没有输出。如果日志提示“未选择任何交货单”,按第 5 章的方法查:先取消 STOA 里的地理路线和批量 ATP,再用 VL10C 前台单次运行做对比。
3.3 老订单不生效,新订单才自动:先加急手工补跑
这也是文档反复强调的生效范围问题。改动 STOA 参数文件、改动自动创建配置以后,对已经存在的 STO 采购订单不会有任何追溯作用。那些老订单仍然需要人工执行 VL10B 或 VL10C 批量创建交货单。我自己的习惯是:每次改完配置,先建一张新的 Z016 测试订单验证,再把历史遗留订单用 VL10B 补跑列表拉出来,能补则补,不能补的单独跟业务解释。
跑 VL10B 补单时注意选单范围:工厂 1600、订单类型 Z016、交货状态“尚未创建”。如果选了已创建交货单的订单,系统会提示没有可处理的数据;这个提示不是配置错了,是选单条件里“交货状态”没选对。经验是把交货状态限制在空白或未处理,别带上“已交货”。
3.4 把 VL10CUC 挂成后台周期作业
参数文件配置好以后,直接在前台跑 VL10CUC 只能验证一次,真正“自动”要靠 SM36 后台作业。我一般会建一个名为 ZSTO_AUTO_DELIVERY 的后台作业,作业步骤固定调用 VL10CUC,使用创建好的 STOA 参数文件。作业频率按业务量定:日单量几十张的工厂可以 15 分钟跑一次,单量少的一天跑两三次足够。
作业名: ZSTO_AUTO_DELIVERY 操作: VL10CUC(使用 STOA 参数文件) 变式: STOA 计划: 工作日 08:00-18:00,每 15 分钟执行 输出: 作业日志 + 假脱机列表参数说明:变式 STOA 必须先建立,SM36 作业里直接引用;执行频率用“每 15 分钟”能在交货单创建后尽快进入发货环节,又不至于把系统资源打满。作业日志里重点看有没有“未选择任何交货单”的提示,如果有,多半是 STOA 变式里的选择条件或第 3.2 节那两个勾出了问题。
4. 自动发货、自动收货到自动开票:VL23、MIGO 与公司间发票
交货单自动创建后,链路进入后半程:1310 侧发货过账、1600 侧 MIGO 收货、1310 侧开销售发票、1600 侧按收到的发票自动 MIRO。这一段最容易出问题的是单据之间的连接条件,比如库存地点、拣配方式、条件类型。前半程交货单建得再顺,后半程一个库存地点为空就能把整条链卡死。
4.1 VL23 变式:发货过账自动化的前提
文档里发货自动化的核心事务码是 VL23。执行 T-code:VL23 创建及修改变式,并根据需要设置需要定期执行的时间。VL23 是用来维护“自动发货过账”报表变式的,它生成的变式给后台批量发货过账作业用。重点配置项有两个:一是销售组织为 1310,交货单类型为 NLCC;二是自动过账要求交货单中能自动确认发运的库存地点,并且取消手工拣配设置。
为什么库存地点这么关键?自动过账的时候,系统要自动确定从哪个库存地点发货。如果交货单行项目里库存地点是空的,过账程序没有依据,只能报错挂起。取消手工拣配则是因为拣配环节通常需要人和设备介入,STO 链路里既然要全自动,就不能在拣配那一步等人动。
变式名: ZSTO_VL02N 维护事务码: VL23 选择条件: 销售组织 = 1310 交货类型 = NLCC 库存地点 = 留空,由交货单自动确认 附加: 自动过账 = 勾选参数说明:库存地点留空不是漏填,而是让系统按交货单上的自动确认结果过账;如果把库存地点写死,遇到多库存地点的工厂反而不准。销售组织和交货类型必须和后面自动开票的配置保持一致,否则发货过账后无法触发销售发票。
4.2 自动 MIGO 收货:凭证类型、一步过程与交货不足限度
1600 工厂侧的收货,文档里配置路径很短:分配凭证类型、一步过程、交货不足限度。翻译成落地参数:MIGO 收货时用的凭证类型要固定分配,防止默认值类型不对导致不能自动过账;“一步过程”指收货和 GR/IR 在一笔事务里完成,不要拆成两步让人工介入;“交货不足限度”给一个容许偏差,比如交货数量比订单数量少 5% 以内时,系统照常自动收货。
为什么设置交货不足限度?STO 运输途中破损、短装是常态。如果没有偏差容限,哪怕少一箱,MIGO 自动收货也会被卡在“交货不足”的错误上,整条自动链断掉。限度具体设多少看工厂的运输损耗情况,我一般先给 5%,跑一个月看自动收货失败的单子里有多少是超限的,再调。
4.3 公司间自动开票:VF01 与 MIRO 的联动
发货过账之后,1310 侧自动触发 VF01 开销售发票,1600 侧根据这张发票自动 MIRO。文档里配置路径集中在两块:定义公司间开票类型、维护开票凭证的复制控制。文档里特意标红:输出过程和输出类型非常重要。因为销售发票开出后,必须靠输出类型生成 IDOC 发送给采购方,1600 侧才能据此自动创建采购发票;输出过程或输出类型配错,发票开出来了,对面收不到消息,MIRO 就永远不触发。
开票价格来源是另一块易错区。文档给了两条路:第一,手工维护公司间销售价格,两边各维护一套价格,最简单但维护量翻倍;第二,销售发票定价类型直接复制采购订单价格,前提是两侧条件类型名称完全一致。采购订单如果用了含税价条件类型或自定义复杂定价,销售发票定价过程里的例程也要配上对应的条件类型和计算例程,否则复制过来金额就是错的。
| 方案 | 维护量 | 主要风险 |
|---|---|---|
| 手工维护公司间价格 | 销售、采购两侧各维护 | 价格不同步,两边对账成本高 |
| 复制采购订单价格 | 维护条件类型一致 | 条件类型不一致则金额错误 |
只要公司间销售定价过程中的定价类型和采购定价类型名称一致,就可以从采购订单复制价格为开票价格。这个原则在文档里写得很明确,落地时照着检查条件类型清单就好。
4.4 消息输出与 BRF+:S/4 新增的一环
如果你是 S/4 HANA,文档最后专门列了“BRF+ 消息输出设置(S/4 系统专用)”。传统 ECC 里发票输出靠 NACE 维护输出类型加合作伙伴参数文件,S/4 里输出控制被 BRF+ 接管,所以 VF01 开票后能否自动把发票发给 1600,取决于 BRF+ 里有没有为这个公司间开票类型配置输出通道。这一步没配,前四步再顺,MIRO 也等不到消息。
落地时把常规 IDOC 配置和 BRF+ 设置分开检查:常规 IDOC 配置查端口、合作伙伴参数文件、消息类型和进程代码;BRF+ 查输出类型、输出通道和条件记录。文档里两部分都写了,对应的就是 ECC 和 S/4 两条系统的不同实现。如果还在 ECC,BRF+ 这节可以跳过,重点看常规 IDOC 配置。
另外,后台作业建议把这几步串成一个作业链:VL23 发货过账作业跑完,紧接着跑 MIGO 收货作业,收货成功后再触发 VF01 开票。我一般用 SM36 定义作业步骤时设置“如果上一步成功则继续”,并在作业之间留 5 分钟缓冲,防止过账未提交就开票。这个串链顺序如果乱了,最容易出现发票先开、收货还没过账的对账差异。
5. 避坑清单:STO 自动化链路最常见的 5 个翻车点
这套链路从 PO 到 MIRO,跨 MM、SD、FI 三个模块,翻车点也集中。挑实践中出现频率最高的几条,按“现象 → 原因 → 解决”写清楚。每一条都是我在项目里实际处理过的,不是从文档里抄出来的理论。
5.1 改了配置,老订单还是没有交货单
现象:顾问改完“自动创建交货单”的配置,业务拿一张上周的 STO 订单做测试,保存后系统毫无反应。
原因:自动创建逻辑只在采购订单保存时触发,对已有订单不溯及。文档开头就注明“改配置后只会对新建的 STO 采购订单影响”。
解决:新建一张 Z016 测试订单验证;老订单手工执行 VL10B 补建交货单。另外确认老订单的采购订单类型确实是 Z016,标准 NB 类型不会走这套参数文件。
5.2 VL10CUC 选不出单:地理路线和批量 ATP 是祸首
现象:后台作业正常跑完,日志显示“未选择任何交货单”,但前台 VL10C 按相同条件能看到待处理的采购订单。
原因:八成是 STOA 参数文件勾了“地理路线”或“批量 ATP 检查”。地理路线在无路线主数据时静默跳过,批量 ATP 把单子卡在检查阶段。
解决:回 VL10CUC 参数文件,取消这两个勾,再次运行。选单条件里也检查工厂、订单类型、交货状态的组合,任何一个选错都选不出单。
5.3 发货过账失败:库存地点和手工拣配
现象:VL23 后台发货过账作业每次都有出错交货单,错误信息指向库存地点或拣配。
原因:交货单行项目的库存地点为空,系统无法自动过账;或者交货单类型配置里仍要求手工拣配,自动流程在拣配步骤中断。
解决:在交货单类型和项目类别配置中允许自动确定库存地点,并取消“手工拣配”标识;已经生成的交货单可以批量补库存地点后重新过账。
5.4 开票金额对不上:条件类型名称不一致
现象:VF01 自动开出的公司间销售发票,金额和采购订单价格有差异,有些行甚至是 0。
原因:销售发票定价用的是“复制采购订单价格”,但复制时条件类型对不上;采购订单里含税价条件类型在销售发票定价过程里没有同名映射。
解决:检查采购订单定价过程和销售发票定价过程,让条件类型名称一致;含税价或自定义条件需要把相同计算例程配到销售发票的条件类型上。两边名称一致,复制才会生效。
5.5 S/4 里发票开过去,对方 MIRO 不触发
现象:VF01 发票已生成、已过账,但 1600 侧始终收不到 IDOC,MIRO 一直没有供应商发票可处理。
原因:S/4 的输出控制走 BRF+,公司间开票类型没有配置对应的 BRF+ 输出类型和发送通道;ECC 里则是 IDOC 端口或合作伙伴参数文件没维护。
解决:S/4 补 BRF+ 消息输出设置,配输出类型、输出通道、条件记录;ECC 检查 WE20 合作伙伴参数文件和端口配置。也可以先手动触发一次输出,看输出日志里的错误码定位断点。
6. 验证跑通:一张 Z016 采购订单走完 STO 全链路
配置完成后的第一件事不是培训业务,而是自己用一张新采购订单把链路完整走一遍。我在每个 STO 自动化项目上线前都会固定做这组验证,照着表一步步勾,任何一步不符合预期就停下来排查,绝不让问题流到业务手里。
| 步骤 | 事务码 / 操作 | 预期结果 |
|---|---|---|
| 1 创建 Z016 PO | ME21N | 保存时提示自动创建交货单 |
| 2 检查交货单 | VL06 / VL10E | 存在对应外向交货单,类型 NLCC |
| 3 自动发货过账 | VL23 作业或 VL02N | 交货单过账,产生物料凭证 |
| 4 自动收货 | MIGO 作业 | 1600 工厂收货过账 |
| 5 自动销售发票 | VF01(后台触发) | 公司间销售发票生成 |
| 6 自动采购发票 | MIRO(IDOC 触发) | 1600 侧供应商发票生成并过账 |
走查时盯三个时间点:PO 保存时间、交货单创建时间、发票过账时间。正常情况下,面向后台作业的链路会有几分钟延迟;超过 30 分钟没动静,就要按第 5 章逐条排查。
如果某一步提示“没有选择的交货单”或“没有可处理的数据”,直接运行 WS_MONITOR_OUTB_DEL_GDSI 程序,检查选择参数是否有误。这个程序是文档里明确提到的兜底检查工具,能列出符合条件的交货单、交货状态和错误原因。我习惯把它作为后台作业排错的第一站,而不是先去翻各种日志表,效率高很多。
从那以后,我每次部署完 STO 自动触发配置,都会强制自己用一张新 Z016 订单把全链路走一遍,并且把每一步的单号记录到交接文档里。老订单补跑、新订单验证、后台作业日志扫一遍,三个动作加起来不到十分钟,但能挡住绝大多数“上线后没人发现自动链路断了”的事故。这套配置的坑大多不是高深技术,而是参数文件里一个勾选、主数据里一个字段、条件类型里一个名称。希望帮到你。
本文还有配套的精品资源,点击获取