SAP 小技巧 BOM 数据查询

作者:ABAP技巧与实战 约 9 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, PP, SD, 开发, 数据工程, 物料管理, 生产, 销售分销

# SAP小技巧 BOM数据查询

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

__ _ _ _ _

**点击蓝字** 关注我们

前言

BOM(物料清单)是SAP中一个基本概念,

用于把产品(或半成品)与原材料(或半成品)构筑关系.在生产,采购,销售等环节可以通过展开获取产品对应的原材料的内容.

**本文主要介绍BOM相关的内容并尝试通过视图实现BOM清单查询**

_本文为了详述BOM分析过程,写的比较啰嗦. 可以跳过相关章节阅读,文末付费部分是视图源代码,截图中已经包含._

标准功能

CS01/CS02/CS03 用于创建/修改/显示BOM

输入 物料/工厂/BOM用途/

备选物料清单 (可以理解为BOM的版本,BOM抬头/明细内容查询也依赖与备选物料清单值)

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

相关表

暂未收录其它特殊业务的BOM相关表,只考虑了BOM基本数据表

• MAST BOM 链接物料

• STKO BOM 表头

• STAS BOMs - 项选择

• STPO BOM 项目

表之间的基本关系

视图ZV_BOM

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

创建/修改过程

记录了BOM创建/修改的全过程及对应表的内容,以便分析数据变化的特点及数据关系.

过程有点啰嗦,如果你熟悉这个过程, 可以跳过本章节

_**01** _

**初始状态的BOM**

下面是一个新创建的BOM及BOM相关表的内容.

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**02** _

**备选BOM**

创建一个新的备选BOM后的相关表内容

创建备选,从下图可以看出, 备选作为关键字, 增加了一组属于备选的内容(此时MAST 不能直接关联STPO了,可以关联STAS 再关联STPO)

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**03** _

**BOM的变更**

BOM的变更有两种方式

• 无变更号的变更

• 有变更号的变更

无变更号变更就是在原数据上修改内容,表内容和新建时大概一致,无需赘述.

系统可以通过变更号记录BOM的变更情况, (类似与定价,新增的数据会记录不同的开始/结束日期,可以查询不同日期的定价).BOM的变更也有期间概念,

只是这个期间依赖与BOM变更号存在,并且没有明确的结束日期(下次变更的开始日期作为前面记录的结束日期)

_**04** _

**变更号的创建/修改**

CC01/CC02/CC03创建/修改/显示变更号

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

创建如下变更号,为了方便后续查询,使用如下名称规则命名

• TEST_H 测试BOM抬头变更

• TEST_H_2 测试BOM抬头变更2

• TEST_H_3 测试BOM抬头变更3

• TEST_I 测试BOM行项目变更

• TEST_I_2 测试BOM行项目再次变更

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**05** _

**变更号所在的表**

AENR 更改文档

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**06** _

**使用变更号修改BOM**

有些变更号不能修改BOM抬头的数量,有些变更号可以修改

新建一个TEST_H_3 , 如果TEST_H_3和TEST_H_2的有效开始日期一致, 将无法修改抬头基本数量.

如果TEST_H_3日期和之前的日期不一致, 则允许修改抬头基本日期( 估计不希望同一个日期存在两个基本数量, 这样指定该日期将无法确定抬头数量)

后面记录了每次变更BOM后的各表的数据情况. 过程有点啰嗦.

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

测试使用TEST_H修改BOM描述,BOM分组,

该变更文档没有记录在STKO中.因为该变更号的有效起始日期与BOM本身的有效起始日期相同,所以无法修改基本数量

变更数据记录在表,该表有BOM分组/BOM描述字段

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

尝试使用TEST_I变更号修改BOM明细

STKO没变,STAS改变

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

STPO改变

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

ZV_BOM数据异常,该异常是因为修改行项目时,STAS中记录了更多变更相关的信息

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

再次变更行项目 其中0010项目被两次变更

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**07** _

**变更的最终情况**

BOM创建日期 2022-06-29 两个变更号的有效起始日期都是2022-06-30 .

调查变更后, CS03查询BOM时,根据输入的日期不同,出现不同的结果

CS03查询使用不同的日期查询结果不同

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

CS03如果输入一个日期范围 2022-06-29 -> 2022-06-30 ,可以查询到所有变更的情况

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

标准函数查询

标准函数查询BOM CS_BOM_EXPL_MAT_V2

或 CS_BOM_EXPL_MAT_V2_HANA

结果与CS03一致. 不同的日期查询结果不同.

输入项

CAPID PP01 固定使用

DATUV 2022-06-29 有效日期

MTNRV 254 物料

WERKS 5981 地点

STLAL 2 备选

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

CDS视图

基于上述分析,可以看到 ZV_BOM视图内容在存在变更号变更BOM的情况下,已经无法使用. 需要分析所有数据的特点, 创建新的视图来解决BOM数据查询问题.

有两个思路

• 仅考虑BOM最终生效的内容

• 考虑每个期间BOM的内容

_**01** _

**ZDDL_BOM_M**

ZDDL_BOM_M 作为BOM的最终版本, 如果修改编号的有效开始日期都是过去, 那么使用这个视图可以获取当前及以后BOM的最终版本.

该视图的原理如下

• 使用有效开始日期最大的行作为抬头STKO内容

• 使用有效的STAS内容:通过变更号变更明细后, STAS中会对原行也增加一条记录(有删除标记),把原行合并,保留有删除标记的行,参与数据关联

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**02** _

**ZDDL_BOM_M结果**

对于上述多次变更的BOM 该视图的呈现结果如下图. 如果所有的变更都在过去, 忽略日期因素, 该视图可以获取当前/将来有效的BOM信息

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**03** _

**标准查询功能**

查询历史情况的BOM视图

怎么才能模拟标准功能 CS12(或CS11) 呈现的效果.

如下图, 使用不同的查询日期, 可以查询出不同的结果(这些不同的结果是因为使用变更号修改BOM产生了不同期间的数据)

查询日期 2022-06-29

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

查询日期 2022-06-30

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

查询日期2022-07-01

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**04** _

**ZDDL_BOMD**

补充一个视图用来查询历史版本: 补充有效开始/结束日期,使用视图时,需要限制一个日期

最终发现通过STKO的变更行和原行的关联关系,及STPO的变更行和原行的关联关系, 可以计算出行的结束日期.

计算STKO的有效期间

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

计算STPO的有效期间

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

整合的视图

SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图
SAP 小技巧 BOM 数据查询 - 封面图

_**05** _

**ZDDL_BOMD结果**

分别限制不同的日期, 查询结果和CS03/CS12的结果一致.

SAP 小技巧 BOM 数据查询 - 封面图.textContent = new Date().getFullYear();