SAP小技巧 BOM数据查询

点击蓝字 关注我们

前言

BOM(物料清单)是SAP中一个基本概念, 用于把产品(或半成品)与原材料(或半成品)构筑关系.在生产,采购,销售等环节可以通过展开获取产品对应的原材料的内容.

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

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

标准功能

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

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

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

a82be0206c21ea4d5362c7d8fad33ae5.png

f45f12dbb04cddad673b195057d7625b.png

相关表

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

  • MAST BOM 链接物料

  • STKO BOM 表头

  • STAS BOMs - 项选择

  • STPO BOM 项目

表之间的基本关系

视图ZV_BOM

d5dac361d3b2e8dc8278775bc4b31ca8.png

4f27e8a6813c540fedd2e88983f2852c.png

创建/修改过程

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

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

01

初始状态的BOM

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

4dc9362cbe33aff69d847c578ea4f725.png

95a3b93674f225425920320022b13e6c.png

ebafd925e64ab397298cd54912114d7f.png

1802e8cdcdc43da2e1a753f47d8bf4d9.png

26d8da0601e3327f66013a938ba67192.png

698ca2d55777e67f4d75e8174faff210.png

02

备选BOM 

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

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

a69d89f8eae27f4ad2e2fb791b9feaa7.png

76c1a3c0f65c8693125d326dd4d39183.png

809b26ad11ac006ffe64e240b2338898.png

33913ce0b48795d887c642f91a8ce7e0.png

58b7c95d1cb9209c74cee15ef207edbd.png

03

BOM的变更

BOM的变更有两种方式

  • 无变更号的变更

  • 有变更号的变更

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

系统可以通过变更号记录BOM的变更情况, (类似与定价,新增的数据会记录不同的开始/结束日期,可以查询不同日期的定价).BOM的变更也有期间概念, 只是这个期间依赖与BOM变更号存在,并且没有明确的结束日期(下次变更的开始日期作为前面记录的结束日期)

04

变更号的创建/修改

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

9f3c6aa5329824192f2784e67ce75dc3.png

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

  • TEST_H        测试BOM抬头变更

  • TEST_H_2    测试BOM抬头变更2

  • TEST_H_3    测试BOM抬头变更3

  • TEST_I         测试BOM行项目变更

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

caaa3107670eab321a99b4df1778ccc1.png

db0d20a6c5007713e418264b29367044.png

05

变更号所在的表 

AENR 更改文档

7db3e7834d7514fd7d22dad097efa9da.png

06

使用变更号修改BOM

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

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

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

50812c52eee605892668f3f0beda8a14.png

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

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

307ba69f1b2056a8ff27f2c5fb876f20.png

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

STKO没变,STAS改变

a285cb3b30fdd27ee19fd933b0e365a5.png

STPO改变

1d9314b968560c2ecdeb3f1227174b90.png

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

576b2978dc2226e9a65ff0ee1e1a2e4c.png

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

2035f64bfd380200c0e0a446f05cd721.png

77b490416c8f0f51b1fd205c22e2271f.png

922aa4830758ef988a8fdfbb673711a7.png

4a20938fb5697967cddb5c26c9950fa2.png

07

变更的最终情况 

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

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

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

7ba9f62a0abd4a00121d419f2f38077f.png

a40206f96854e54abc62d96708295238.png

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

90e2f2a1bf192a783bf3f5c5e1aa581b.png

 标准函数查询

标准函数查询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 备选

bb5359597054e374bc5452821b1ba13a.png

49be317cb5533705020420311ad316d2.png

CDS视图

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

有两个思路

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

  • 考虑每个期间BOM的内容

01

ZDDL_BOM_M

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

该视图的原理如下:

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

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

677b4cc4b5a0ae0bee140058d0667568.png

b2fdfcb4f3edac366a9b515b3fa8906b.png

3dcd0d05650e24e8f0429ed0e4356565.png

136f84d01e99917a6c5131bdb34bfb8a.png

02

ZDDL_BOM_M结果

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

46d8ae322ebe48bf0808b467ad46bca9.png

03

标准查询功能

查询历史情况的BOM视图

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

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

查询日期 2022-06-29

b27e4e5791ed27264a38e3a1a2fae3fd.png

查询日期 2022-06-30

de1697be9074ef901c8dc3928d764bf3.png

查询日期2022-07-01

0c70877b287b91790c1d1033caf8ad89.png

04

ZDDL_BOMD

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

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

计算STKO的有效期间

a5d243ec3b612df3eea0c920bcab6ad5.png

计算STPO的有效期间

c3b994314b2fc421941a57558797e0d1.png

整合的视图

11f0293188f5913f5b9430af51056538.png

f7c39cdc550a4187cb8d408f865faa06.png

05

ZDDL_BOMD结果

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

68997ba5cad8335f7614f27a3616040e.png

564be0e3bd4a106abffe40861c7fa26c.png

总结

BOM主数据如果启用了变更号修改BOM,可以记录BOM每次修改的具体信息, 并且可以通过有效开始日期来控制修改的生效日期. 但是会让BOM表中的数据看起来比较复杂.

一般情况下, 推荐使用标准BOM查询函数查询 (后一个基于HANA优化了性能)

CS_BOM_EXPL_MAT_V2  BOM explosion for material

CS_BOM_EXPL_MAT_V2_HANA        HANA MBOM explosion function module

在创建BOM相关报表时, 每个BOM调用查询函数获取结果,再整合输出. 这个过程有点麻烦,且性能会受影响.

本文通过分析BOM数据的特征,创建的BOM视图可以获取和BOM函数类似的结果(未考虑变式分解/BOM子项目/相关性分配等特殊业务)

文中的CDS视图尚未用更多的特殊情况验证. 源码附在文末, 有兴趣可以参与测试验证,也希望能分享你的测试结果及改进建议.

  • 0
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值