简介:本资源是一份面向SAP ABAP开发与SD模块实施顾问的实战型配置指南,聚焦销售BOM(物料清单)在复杂产品组合场景(如盒装综合礼品)中的全流程配置与业务验证。文档系统讲解BOM主数据设置、可用性检查策略(成品KP/组件02)、信贷控制(静态检查+风险类别800)、项目类别与计划行分配(B-展开多级票据/SD01应用)、交货及发票复制逻辑,以及两种价格决定策略(子项定价 vs 上层项定价)的差异与实操效果。资源为单个DOCX文件,大小1.3MB,内容结构清晰,含IMG路径指引、主数据截图说明、订单(VA01)与发票(VF11)测试案例及结果对比分析。已有493人学习下载,适合中高级SAP顾问快速掌握销售BOM核心配置要点、规避常见库存与信贷冲突问题,并直接复用于客户项目交付。
1. 销售BOM在SAP中不是“把物料清单往销售订单里一塞”:它决定报价准确性、交货承诺可信度和生产协同效率
很多刚接触SD模块的顾问或业务用户以为,销售BOM(Sales BOM)只是把一堆子件列出来、挂到主产品上——结果上线后频繁出现报价单成本错、交货单拆分混乱、生产计划无法识别实际需求结构,甚至客户投诉“说好发整套设备,怎么只发了外壳?”
其实,销售BOM是SAP中连接销售、生产、采购与成本核算的关键枢纽:它定义了客户视角的交付结构(比如“智能电表套装=主机+CT模块+通讯卡+安装支架+说明书”),而非工厂内部的制造结构(即生产BOM)。这个结构直接影响VA01创建订单时的行项目展开逻辑、MRP运行时的独立需求生成、以及CO-PA中收入与成本的归集粒度。
本文聚焦ECC 6.0(含EHP7/8)环境下的销售BOM配置落地,不讲ABAP开发、不依赖FICO或PP深度集成,只用标准事务码+基础主数据完成可投产的最小闭环。适合SD顾问、实施项目经理、以及需自主维护销售结构的制造企业IT支持人员。文中所有操作均经实测验证,覆盖从物料主数据准备、BOM创建、销售配置到订单级行为验证的完整链路,并明确标注哪些参数改不得、哪些字段填错会导致MRP跑出“幽灵需求”。
2. 销售BOM配置四步法:从物料类型到订单生效的最小可行路径
销售BOM不是孤立配置项,它依赖于物料主数据、BOM类型、销售视图及订单类型四个核心锚点。跳过任一环节,都会导致VA01中BOM不展开、MD04查不到需求、或MIGO收货时子件无法自动带出。以下为经产线验证的四步法,每步附关键参数说明与避坑提示。
2.1 确认主物料必须启用销售BOM能力:检查物料类型与基本视图
销售BOM只能挂在具有销售视图(Sales View)的物料上,且该物料类型必须允许BOM分配。常见错误是直接拿原材料(ROH)或半成品(HALB)当主件——它们默认禁用销售BOM功能。
提示:销售BOM主件必须是FERT(产成品)或HAWA(贸易商品)类型,且物料主数据中“基本数据”视图的“物料类型”字段必须为这两者之一;ROH/HALB/UNBW等类型即使手工激活销售视图,系统也会在保存时强制报错
Message No. C3215。
执行事务码MM01创建或修改主件物料(如ZSMART_METER_KIT),进入“基本数据”视图,确认:
- 物料类型:
FERT(产成品) - 在“销售:一般/工厂”视图中勾选“销售BOM”复选框(关键!此字段控制VA01是否触发BOM展开)
- “MRP视图”中设置MRP类型为
PD(预测驱动)或ND(无MRP),严禁用VB(基于销售订单)——否则销售BOM子件需求将无法被MD04识别
// MM01中关键字段截图示意(文字描述) 基本数据视图: 物料类型:FERT 物料描述:智能电表套装(含安装服务) 销售:一般/工厂视图: [x] 销售BOM ← 必须勾选! 销售组织:1000 分销渠道:10 产品组:ZKIT MRP视图: MRP类型:PD MRP控制者:PD01为什么这一步不能省?
销售BOM的展开逻辑由MVKE-VSBED(销售BOM标志)字段驱动,该字段仅在销售视图激活且勾选“销售BOM”时才写入数据库。未勾选时,即使后续创建了BOM,VA01也不会读取——这是最隐蔽的“配置完成但无效”类问题。
2.2 创建销售BOM:用CS01定义结构,避开“组件数量=1”的玄学陷阱
销售BOM使用独立BOM类型ERF(销售BOM),与生产BOM(MST)、设计BOM(FERT)严格隔离。创建时必须指定BOM用途(Usage)为01(销售),否则系统无法关联到销售流程。
执行事务码CS01:
- 物料:输入主件物料号(如ZSMART_METER_KIT)
- 工厂:输入销售发货工厂(如1000)
- BOM用途:
01(销售) - BOM类型:
ERF(系统默认,不可改) - 有效性:起始日期设为今天或更早,结束日期务必留空(
99991231)——若填具体日期,过期后VA01将静默跳过BOM展开,不报错也不提示
添加组件时注意:
- 子件物料必须已维护销售视图(同主件要求)
- 组件数量(Base Qty)必须为整数,且单位必须与主件销售单位一致(如主件销售单位是
EA,子件数量不能填0.5;若需按比例配置,必须用“销售BOM替代项”机制,见第4章) - “项目类别”选
L(普通项目),禁用N(非库存项目)——后者会导致MIGO收货时子件无法生成收货凭证
// CS01中典型BOM结构示例(文本化表示) 主件:ZSMART_METER_KIT (FERT, EA) ├── ZSMART_METER_MAIN (FERT, EA) 数量:1.000 ├── ZCT_MODULE_V2 (FERT, EA) 数量:1.000 ├── ZCOMM_CARD_4G (FERT, EA) 数量:1.000 ├── ZMOUNT_BRACKET (FERT, EA) 数量:1.000 └── ZMANUAL_EN_DE (FERT, EA) 数量:1.000血泪经验:曾有项目因子件数量填1.0(带小数点)导致VA01展开后子件行项目数量显示为0——SAP内部将带小数点的数值识别为浮点型,而销售BOM组件数量字段(STPO-MENGE)为整数类型,强制截断为0。务必输入1而非1.0。
2.3 绑定销售BOM到销售订单类型:通过OVKK控制BOM展开时机
销售BOM是否在VA01中自动展开,取决于订单类型(Order Type)与销售BOM的关联关系,而非单纯靠物料主数据。OVKK事务码用于定义该映射,漏配则BOM永远不生效。
执行OVKK:
- 输入订单类型(如
OR标准订单) - 在“销售BOM”标签页中:
- 勾选“销售BOM”复选框
- 输入BOM用途:
01(必须与CS01中一致) - 输入BOM类型:
ERF - “BOM项目类别”保持默认
L(与CS01一致)
注意:一个订单类型可绑定多个BOM用途,但同一用途下只能有一个BOM类型。若需对同一主件在不同订单类型中启用不同BOM(如
OR用标准套装,CR用定制套装),需在CS01中为同一主件创建多条BOM(不同BOM用途),再在OVKK中分别绑定。
验证方法:
配置后,在VA01中创建新订单,输入主件物料号 → 按回车 → 观察屏幕下方状态栏是否显示“销售BOM已展开”。若未显示,检查OVKK中订单类型是否选错(如误配TA询价单类型)、或BOM用途是否输成02(工程BOM)。
2.4 配置销售BOM的定价与条件技术:让子件价格自动继承主件折扣
销售BOM子件默认不参与定价,其金额为零,导致开票金额仅为主件价格。要实现“套装总价=主件+子件之和,并统一应用客户折扣”,需启用条件技术中的“销售BOM定价”功能。
执行OVZK(销售BOM定价控制):
- 输入销售组织、分销渠道、产品组(如1000/10/ZKIT)
- 勾选“销售BOM定价”复选框
- “定价类型”选
A(标准定价) - “条件类型”指定为
PR00(基本价格)或K004(客户折扣)——此处决定哪些条件会向下传递给子件
关键参数说明:
- 若选
PR00,子件将按自身主数据中的销售价格取值,主件折扣不传递 - 若选
K004,子件将继承主件行项目的折扣率,实现“套装整体打折” - 必须确保子件物料在VK11中已维护对应条件记录(如ZSMART_METER_MAIN对客户1000的PR00价格),否则子件价格为零
// OVZK配置示例 销售组织:1000 分销渠道:10 产品组:ZKIT [x] 销售BOM定价 定价类型:A 条件类型:K004 ← 传递折扣,非价格本身为什么必须配OVZK?
SAP默认关闭销售BOM定价,因其涉及复杂的条件继承逻辑。未启用时,VA01中BOM展开的子件行项目“净价”字段为空,VBRP表中NETWR为0,最终导致FI过账金额缺失子件部分——这是财务对账差异的高频根源。
3. 销售BOM配置避坑指南:5个让SD顾问连夜改配置的真实问题
配置看似简单,但SAP销售BOM的隐性约束极多。以下问题均来自真实项目现场,按“现象→原因→解决”结构整理,避免你重蹈覆辙。
3.1 现象:VA01输入主件物料后,BOM不展开,状态栏无提示
原因:主件物料销售视图中“销售BOM”复选框未勾选(MVKE-VSBED = ''),或OVKK中订单类型未绑定BOM用途。
解决:
- 用
MM02检查主件物料销售视图,确认VSBED字段为X - 用
OVKK确认当前订单类型(VA01顶部显示)已绑定BOM用途01 - 额外排查:检查主件物料是否被标记为“批次管理”(
MCHA视图中X),若启用批次管理,销售BOM展开需额外配置批次确定规则(T-codeOVZI),否则静默失败
3.2 现象:BOM展开后子件行项目数量为0
原因:CS01中组件数量输入为1.0或1,0(含小数点或逗号),系统将其转为浮点数后截断为0。
解决:
- 在CS01中双击组件行,将“基本数量”字段改为纯整数(如
1) - 批量修正可用
CS12(BOM批量更改),选择“数量”字段更新为整数
3.3 现象:MD04中主件有独立需求,但子件无MRP需求
原因:主件物料MRP类型设为VB(基于销售订单),而销售BOM子件需求仅在PD/ND/PD类型下由MD04识别。
解决:
- 用
MM02修改主件物料MRP视图,MRP类型改为PD - 运行
MD04后,子件需求将显示为“销售BOM需求”,需求类型为KB(销售BOM)
3.4 现象:开票时子件金额为0,仅主件金额入账
原因:未启用OVZK中的“销售BOM定价”,或子件物料未维护VK11条件记录。
解决:
- 执行
OVZK启用定价,并确认条件类型正确 - 对每个子件物料执行
VK11,为相同客户/销售组织维护PR00价格(即使为0,也需存在记录)
3.5 现象:MIGO收货时,子件无法自动带出,需手动输入
原因:CS01中子件“项目类别”设为N(非库存项目),而MIGO仅自动带出L(库存项目)类型的组件。
解决:
- 用
CS02修改BOM,将所有子件项目类别改为L - 若子件确为服务类(如安装费),应使用“文本行项目”(项目类别
T)而非N,并在VOFM中配置文本行定价
4. 销售BOM与生产BOM的边界:何时该用销售BOM,何时必须切到生产BOM?
销售BOM与生产BOM(MST)常被混淆,但二者定位截然不同。错误混用会导致MRP计划失真、成本核算错乱、甚至生产领料失败。以下是判断准则与切换场景。
| 判断维度 | 销售BOM(ERF) | 生产BOM(MST) |
|---|---|---|
| 业务目标 | 定义客户看到的交付结构(“发什么”) | 定义工厂内部的制造结构(“怎么造”) |
| MRP需求类型 | KB(销售BOM需求),独立于生产订单 | PD(计划订单需求)或PL(生产订单需求) |
| 组件库存状态 | 子件必须为库存物料(FERT/HAWA),可单独销售 | 子件可为ROH(原材料)、HALB(半成品),无需销售视图 |
| 变更频率 | 高(随客户定制变化,如套餐增减配件) | 低(工艺稳定后长期不变) |
| 定价影响 | 子件参与销售定价,影响开票金额 | 子件不参与销售定价,仅影响CO成本计算 |
典型切换场景举例:
场景1:客户订购“标准版电表+可选4G模块”
→ 用销售BOM:主件为ZMETER_STD,BOM中ZCOMM_CARD_4G设为“可选组件”(CS01中勾选“可选”标志),VA01中客户勾选后才展开子件。
→ 不可用生产BOM:因4G模块非制造必需,生产BOM中若包含它,会导致MRP每天生成冗余采购需求。场景2:电表外壳需按颜色分不同模具生产
→ 用生产BOM:主件ZMETER_MAIN的生产BOM中,外壳组件根据STLAL(BOM替代项)按颜色变体展开,MRP据此驱动不同模具排程。
→ 不可用销售BOM:客户不关心模具,只关心收到蓝色/白色外壳,销售BOM无法触发模具级MRP。
血泪教训:某项目曾将生产BOM直接复制为销售BOM(CS01中BOM类型仍为MST),导致MD04中子件需求类型为PD而非KB,计划员误以为是生产计划需求而忽略,最终缺货。销售BOM必须用ERF类型,且BOM用途为01——这是系统级硬约束,不可绕过。
5. 销售BOM的进阶技巧:用替代项(Alternative Items)实现动态配置与版本管理
标准销售BOM是静态结构,但现实中客户常需“三选一”(如电源适配器:110V/220V/USB-C)、“按订单配置”(如软件授权:基础版/专业版/企业版)。此时需启用BOM替代项(Alternative Items),这是SAP原生支持的轻量级配置方案,无需ABAP开发。
5.1 替代项配置三要素:BOM层级、替代组、优先级
替代项本质是同一BOM位置上的多个可选项,由系统按预设规则自动选择。配置需三步:
在CS01中定义替代组(Alternative Group)
- 双击需配置替代的组件行(如电源适配器)
- 在“替代项”标签页中,输入替代组编号(如
AG01) - 勾选“替代项”复选框
为同一替代组添加多个选项
- 在CS01中新增行,物料号填
ZADAPTER_110V,替代组填AG01,优先级填1 - 新增行,物料号填
ZADAPTER_220V,替代组填AG01,优先级填2 - 新增行,物料号填
ZADAPTER_USB,替代组填AG01,优先级填3
- 在CS01中新增行,物料号填
配置替代项确定规则(OVZI)
- T-code
OVZI→ 输入销售组织/分销渠道/产品组 - “替代项确定”标签页中,勾选“启用替代项确定”
- “确定方法”选
01(按优先级)或02(按客户主数据中的偏好)
- T-code
// 替代项结构示意(CS01中) 主件:ZSMART_METER_KIT ├── ZADAPTER_110V (AG01, 优先级1) ├── ZADAPTER_220V (AG01, 优先级2) └── ZADAPTER_USB (AG01, 优先级3)关键参数说明:
- 优先级数字越小越优先,
1为最高 - 若客户主数据(VD01)中“销售:一般/工厂”视图填写了“首选适配器”字段(自定义字段),可选
OVZI中方法02,系统自动匹配 - 替代项组件必须与主件在同一工厂,且均启用销售视图
5.2 替代项在订单中的行为验证:VA01如何选择?
配置完成后,在VA01中输入主件物料 → 按回车 → 系统自动展开BOM,并在替代项位置显示首个优先级组件(如ZADAPTER_110V)。用户可手动修改为其他选项,但需注意:
- 修改后,该订单行项目将锁定所选组件,不再随主件BOM变更而更新
- 若需强制按客户偏好自动选择,必须在VD01中维护客户级替代项偏好(需增强,非标准功能)
验证命令:
运行CS03查看BOM,勾选“显示替代项”,可确认所有选项及优先级是否生效。
5.3 版本化管理:用BOM状态(Status)控制销售BOM生命周期
销售BOM常需迭代(如V1.0标准套装 → V2.0升级版),但旧订单仍需引用V1.0。SAP通过BOM状态(Status)实现版本冻结,无需新建物料号。
- 在CS01中创建V1.0 BOM,保存后执行
CS02 - 进入“状态”标签页,输入状态
01(已发布) - 创建V2.0 BOM时,将V1.0状态改为
02(已废弃),V2.0设为01 - 关键规则:VA01始终读取状态为
01的BOM;已废弃BOM仍可在CS03中查看,但不参与订单展开
注意:状态变更不影响历史订单。已创建的订单仍按当时BOM快照执行,这是SAP保障数据一致性的核心机制。
我做过的所有销售BOM项目,最后都回归到一个习惯:每次配置完,必用VA01建测试订单 →VL01N做交货 →VF01开票 →FB03查凭证,全程跟踪子件是否出现在各环节。因为销售BOM的价值不在配置界面,而在订单流穿过的每一个节点。希望帮到你。
本文还有配套的精品资源,点击获取