news 2026/9/24 1:25:20

SAP销售BOM配置与实战:从CS61到VA01的完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAP销售BOM配置与实战:从CS61到VA01的完整指南

简介:本资源为SAP SD模块中销售BOM配置的实操型PDF手册,面向ERP顾问、SAP运维人员及销售分销模块学习者,重点解决“盒装综合礼品”类组合物料在销售订单中自动带出组件、定价与库存分离等业务难题。包内仅含1个PDF文件,约540KB,内容以配置路径与业务举例为主,涵盖可用性检查、信贷控制、项目类别、计划行、交货单与发票复制控制等后台设置,并附前台VA01、VL01N、VF01等操作演示。文档通过“组件决定价格”与“上层项决定价格”两种业务情形对比,清晰呈现成品与组件在库存管理、定价、发货过账及发票项目中的不同处理逻辑,帮助读者理解销售BOM的完整配置链路与常见报错排查思路。目前已有5259人学习下载,适合需要快速掌握SAP销售BOM配置要点、对照系统实操验证的中高级用户参考。

1. 销售BOM到底在SAP里扮演什么角色:从一张报价单说起

客户要一台非标设备,销售在报价单上写“主机+两个扩展模块+专用线束”,价格谈拢了,接下来生产、采购、成本核算全得知道这台设备到底由哪些物料组成。这个“由哪些物料组成”的清单,在SAP里就是BOM。而销售BOM(Sales BOM,事务码CS61创建、物料主数据里BOM用途设为5)专门服务于销售场景:它挂在成品物料上,销售订单录入时展开,决定哪些组件参与定价、哪些参与交货、哪些只是随单说明。

很多人第一次接触销售BOM,会把它和标准生产BOM混为一谈。区别在于:生产BOM面向车间,组件是真实要投料生产的;销售BOM面向订单,组件可以是“随主机一起卖出去的配件”,也可以是“客户选配项”。它解决的核心问题是——让销售订单在录入阶段就能把成套结构带出来,而不是靠人工一行行敲。适合谁看?做SD模块的顾问、负责销售订单配置的IT、以及被“订单里组件带不出来”折磨过的运维。下面从配置到举例,一步步拆开。

2. 销售BOM的配置骨架:物料主数据、BOM用途与订单展开逻辑

2.1 先搞清楚BOM用途5和物料主数据的开关

销售BOM能生效,前提是成品物料主数据里打开了销售视图的BOM展开标识。事务码MM02进入销售视图1,找到“BOM展开”字段,勾上。这个字段不勾,后面CS61建得再漂亮,VA01里也不会自动带组件。同时BOM用途必须是5(销售BOM),这是SAP预定义的用途代码,CS01创建BOM时在“用途”栏填5。

配置路径上,BOM用途的允许范围由后台定义:SPRO→生产→基本数据→物料清单→控制数据→定义BOM用途。这里能看到用途5对应的“销售和分销”标识。如果企业有特殊需求,比如销售BOM也要参与成本估算,需要在这里确认用途5的“成本核算”相关标识是否勾选。常见做法是保持标准用途5不动,通过BOM状态和有效期控制。

物料主数据的另一个关键点是“物料类型”。销售BOM通常挂在成品(FERT)或可配置物料(KMAT)上。如果是KMAT,那就要走变式配置(Variant Configuration),销售BOM只是其中一环,复杂度会上升。我一般建议新手先从FERT+销售BOM入手,把展开逻辑跑通,再碰KMAT。

2.2 CS61创建销售BOM:行项目字段逐个说清

事务码CS61,输入父物料、工厂、BOM用途5,回车进入行项目维护。每一行组件要填的字段不多,但每个都影响后续行为:

  • 组件物料:子件编码,必须存在且已扩展到对应工厂。
  • 数量:组件的用量,按父物料的基本计量单位换算。
  • 项目类别:这是销售BOM的灵魂字段。常见的有:
    • L(库存项目):组件参与交货,从库存发货。
    • N(非库存项目):不参与交货,仅作说明或文本。
    • T(文本项目):纯文本行,不涉及物料。
    • R(可变大小项目):用于可配置场景。
  • 相关性:控制组件在订单中是否可选、是否必选。留空表示默认带出。
  • 组件报废率:如果组件有损耗,填百分比。

创建完成后保存,系统生成BOM编号。此时用CS03可以查看,用CS12可以多层展开。注意:CS61保存后不会自动触发订单展开,订单展开是VA01运行时动态读取的。

2.3 VA01里销售BOM怎么被带出来:展开时机与条件

VA01创建销售订单,输入成品物料和数量,回车后系统会检查物料主数据的BOM展开标识。如果勾了,且存在用途5的有效BOM,系统自动把组件行带到订单里。带出来的组件行会显示在“项目概览”下方,每个组件有独立的行号。

这里有个容易翻车的点:组件带出来后,如果项目类别是L,系统会检查库存和可用性;如果是N,则不检查。另外,组件的定价方式取决于“定价相关性”标识。如果希望组件单独定价(比如配件单独收费),需要在BOM行项目里设置“定价相关”标识,或者在订单里手动调整。

展开逻辑还受“BOM展开日期”影响。VA01里有个“BOM展开”按钮,可以手动触发重新展开。如果订单日期和BOM有效期不匹配,组件可能带不出来。常见做法是BOM有效期设得足够宽,或者用变更号管理。

提示:销售BOM展开是动态的,订单保存后组件行就固定了。后续BOM变更不会自动更新已有订单,需要手动重新展开或走工程变更流程。

3. 一个完整举例:从CS61到VA01再到交货的全程走一遍

3.1 场景设定与主数据准备

假设一家做工业控制柜的公司,成品物料CTRL-1000(控制柜整机),销售时标配包含:柜体CTRL-BODY、电源模块CTRL-PWR、散热风扇CTRL-FAN。客户有时会加选一个扩展模块CTRL-EXT,这个作为可选组件放在销售BOM里,项目类别N(非库存,仅说明),定价相关勾上,单独收费。

先准备物料:CTRL-1000物料类型FERT,销售视图勾BOM展开;CTRL-BODY、CTRL-PWR、CTRL-FAN物料类型HAWA(贸易商品)或ROH,扩展至工厂1000;CTRL-EXT同样扩展。所有物料维护好基本单位、物料描述、销售视图的税分类等。

然后CS61创建销售BOM,父物料CTRL-1000,工厂1000,用途5。行项目:

行号组件数量项目类别定价相关相关性
0010CTRL-BODY1L
0020CTRL-PWR1L
0030CTRL-FAN2L
0040CTRL-EXT1NX

保存后BOM编号生成。用CS03检查,确认组件和项目类别正确。

3.2 VA01录入订单看组件如何带出

VA01,订单类型OR(标准订单),售达方、物料CTRL-1000、数量1。回车后系统弹出“BOM展开”对话框(如果配置了自动展开则直接带出)。在项目概览里,除了CTRL-1000主行,下面会出现四个组件行。CTRL-BODY、CTRL-PWR、CTRL-FAN的项目类别是L,系统会检查库存;CTRL-EXT是N,不检查库存,但定价相关,会在定价条件里出现。

此时可以手动调整组件数量,比如客户要2个扩展模块,直接改0040行的数量。系统会重新计算价格。如果某个组件不需要,可以删除行或设数量为0。注意:删除组件行后,如果BOM重新展开,可能又带出来,所以一般用“拒绝”标识而不是删除。

保存订单。订单号生成后,组件行成为订单的一部分。后续交货(VL01N)时,只有项目类别L的组件会进入交货单,N类组件不参与交货。开票(VF01)时,定价相关的组件会出现在发票明细里。

3.3 交货与开票环节的组件处理差异

VL01N创建交货单,选择订单,系统带出可交货的行项目。CTRL-BODY、CTRL-PWR、CTRL-FAN会出现,CTRL-EXT不会。发货过账后,库存减少的是这三个组件,而不是成品CTRL-1000。这是销售BOM的一个关键特性:成品不参与库存移动,组件直接发货。如果企业希望成品也参与库存管理,那应该用生产BOM+成品入库,而不是销售BOM。

开票时,VF01带出订单的定价条件。CTRL-EXT因为定价相关,会单独一行显示价格。其他组件如果定价相关为空,则价格包含在成品主行里。这里常见做法是:标配组件不单独定价,价格打包在成品里;选配组件单独定价,方便客户看清加价项。

注意:销售BOM组件的发货过账会直接减少组件库存,如果组件库存不足,交货会卡住。所以MRP要针对组件跑,而不是成品。

4. 避坑与排查:销售BOM配置中最容易翻车的5个点

4.1 组件带不出来:现象、原因、解决

现象:VA01录入成品物料后,组件行没有自动出现。原因通常有三个:物料主数据销售视图的BOM展开标识没勾;BOM用途不是5;BOM有效期不覆盖订单日期。解决:MM02检查BOM展开标识;CS03查看BOM用途和有效期;VA01里手动点“BOM展开”按钮测试。如果手动能展开,说明是自动展开配置问题,检查订单类型的BOM展开控制。

4.2 组件带出来但价格不对:定价相关性搞混了

现象:组件带出来了,但发票里组件没有单独价格,或者价格重复计算。原因:BOM行项目的“定价相关”标识与订单定价条件不匹配。解决:CS03查看组件行的定价相关标识;VA03查看定价条件里组件的条件类型。如果希望组件单独定价,确保BOM行定价相关勾上,且订单里组件行的定价条件正确。如果希望打包定价,则不要勾。

4.3 交货时组件不出现:项目类别选错了

现象:VL01N创建交货单,组件行不见了。原因:组件项目类别是N或T,这两种不参与交货。解决:CS03把需要交货的组件项目类别改为L。但注意,如果BOM已经用在订单里,改BOM不会影响已有订单,需要手动在订单里调整项目类别或重新展开。

4.4 组件库存被重复扣减:BOM层级搞乱了

现象:发货过账后,组件库存扣了两次。原因:销售BOM里嵌套了另一个销售BOM,导致多层展开时同一组件出现多次。解决:CS12多层展开检查,确认没有循环嵌套。销售BOM一般只做一层,不要嵌套销售BOM。如果确实需要多层,用生产BOM做底层,销售BOM只挂顶层。

4.5 订单保存后BOM变更不生效:动态展开的边界

现象:CS61修改了BOM,但已有订单里的组件没变。原因:销售BOM展开是订单创建时动态读取的,保存后组件行就固化了。解决:手动在VA02里点“BOM展开”重新带出,或者删除组件行重新展开。如果变更频繁,考虑用ECN(工程变更管理)控制,或者把BOM变更做成新版本,新订单用新版本。

5. 进阶技巧:用变式配置和用户出口把销售BOM玩活

销售BOM单独用,只能解决“固定套装”的问题。如果客户选配组合多,比如控制柜的扩展模块有A、B、C三种,选不同的组合价格不同,那就需要变式配置(Variant Configuration)配合。KMAT物料+特性+依赖对象,销售BOM里用可选组件,通过依赖控制组件的选择。这条路复杂度高,但灵活性强。我一般建议先把标准销售BOM跑熟,再上变式配置。

另一个进阶点是用户出口。SAP在销售订单的BOM展开环节留了增强点,比如USEREXIT_BOM_EXPLOSION或者BADI。通过出口可以控制:哪些组件带出、带出后自动修改项目类别、根据客户组过滤组件。常见做法是用BADI实现“根据销售区域隐藏某些组件”。代码层面,在BADI实现里读取订单抬头和行项目,修改BOM展开结果的内表。

验证方法:创建一个测试订单,对比增强前后的组件行差异。用ST05跟踪SQL,确认没有性能问题。如果增强逻辑复杂,建议加日志,方便排查。

最后说个我自己的习惯:每次配完销售BOM,一定用CS12多层展开看一眼,再用VA01建一张测试订单,走一遍交货和开票。别省这一步,很多坑都是“以为配好了”导致的。希望帮到你。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 1:25:02

offergo 实战:技术面被问到不会的题,怎么体面应对

技术面被问住几乎是每个程序员都会遇到的事。差别只在于,有人被问住之后还能体面地把话题接回来,有人则当场卡死,后面十分钟全在自我怀疑。这篇把应对流程拆成四步,都是可以直接照做的动作。 一、先判断这是「不会」还是「没想清…

作者头像 李华
网站建设 2026/9/24 1:21:13

Penpot自托管部署实战:从Figma迁移到开源设计平台

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 1:20:46

小米手机卡FASTBOOT界面?从驱动到线刷的全流程自救指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 1:17:10

老旧档案OCR选型:不是比识别率,而是匹配档案特征

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 1:13:44

RNS510车载系统固件更新与功能扩展实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 1:09:53

频率准确度与稳定度:晶振选型中的关键参数解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华