点击蓝字 关注我们

前言

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

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

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

标准功能

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

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

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

相关表

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

  • MAST BOM 链接物料

  • STKO BOM 表头

  • STAS BOMs - 项选择

  • STPO BOM 项目

表之间的基本关系

视图ZV_BOM

创建/修改过程

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

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

01

初始状态的BOM

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

02

备选BOM 

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

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

03

BOM的变更

BOM的变更有两种方式

  • 无变更号的变更

  • 有变更号的变更

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

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

04

变更号的创建/修改

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

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

  • TEST_H        测试BOM抬头变更

  • TEST_H_2    测试BOM抬头变更2

  • TEST_H_3    测试BOM抬头变更3

  • TEST_I         测试BOM行项目变更

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

05

变更号所在的表 

AENR 更改文档

06

使用变更号修改BOM

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

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

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

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

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

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

STKO没变,STAS改变

STPO改变

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

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

07

变更的最终情况 

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

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

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

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

标准函数查询

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

CDS视图

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

有两个思路

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

  • 考虑每个期间BOM的内容

01

ZDDL_BOM_M

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

该视图的原理如下:

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

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

02

ZDDL_BOM_M结果

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

03

标准查询功能

查询历史情况的BOM视图

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

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

查询日期 2022-06-29

查询日期 2022-06-30

查询日期2022-07-01

04

ZDDL_BOMD

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

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

计算STKO的有效期间

计算STPO的有效期间

整合的视图

05

ZDDL_BOMD结果

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

总结

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

SAP小技巧 BOM数据查询相关推荐

  1. SAP小技巧之 标签打印

    前言: SAP小技巧系列主要是记录一些项目中碰到的问题及解决思路与方式.这些问题可能你也碰到过,希望能给你一些帮助. 标签打印 怎么通过SAP开发程序打印标签? 提起这个问题,很自然的会想起ABAP常 ...

  2. Excel小技巧----VLOOKUP数据匹配

    Excel小技巧----VLOOKUP数据匹配 一.目的: 将左侧打乱的地市代码与右侧地市名称准确对应起来. 二.方式:使用excel中的vlookup函数. 1.选择vlookup函数 2.匹配过程 ...

  3. sql left join 去重_混入了一些奇怪的东西?SQL小技巧之数据去重

    大家好,欢迎踏入野生程序猿的生存之道,我是你们的老朋友大猿猿! 今天聊聊数据库里怎样删除重复数据. "重复"的定义 首先咱先明确一下什么叫重复数据,比如你有个表,好比说学生表吧,这 ...

  4. SAP小技巧之 实现SMARTFORM打印中的小计与总计

    点击蓝字 关注我们 一 前言 公众号群里面有人在讨论SMARTFORM打印中的小计和总计的实现.好久没有做SMARTFORM了, 所以没有参与讨论. 后来网上查询了一下. 也没有找到很好的解决方案.所 ...

  5. SAP小技巧 商业图形(一)简介

    点击蓝字 关注我们 一 前言 最近准备扩展动态报表的功能,添加图形呈现(饼图,柱形图等).考虑了两个方向 使用EXCEL呈现图形 使用SAP标准函数呈现图形 这两个方向都有可行性. EXCEL呈现图形 ...

  6. SAP小技巧之 全版本的SAPGUI免密登录方式

    点击蓝字 关注我们 前言 SAPGUI 7.4以下版本提供了一个创建快捷方式时输入密码的功能(激活这个功能需要调整注册表,搜索SAPGUI免密登录,可以查到很多,这里就不啰嗦了).有多少人为了使用这个 ...

  7. SAP小技巧 发票校验BAPI调用总结

    点击蓝字 关注我们 一 前言 同事开发供应商结算功能时,需要把供应商的采购入库,采购退货,及供应商的费用项,返利项等整合到一张发票校验单据中. 调用BAPI的时候,因为参数填写的原因,报了一些错误.帮 ...

  8. SAP小技巧 DOCKING容器解决分辨率问题

    一 前言 通过SAP ENJOY演示中心可以学习SAP常用容器的用法(TCODE: DWDM ) 其中有5个DEMO程序介绍不同的容器 自定义容器 固定容器(DOCKING容器) 拆分器容器 easy ...

  9. SAP小技巧 成本价检查及自动维护体系

    点击蓝字 关注我们 一 前言 成本价是ERP系统中商品的重要库存属性之一,如果商品没有成本价, 会导致商品凭证没有对应的会计凭证(或者会计凭证中的成本相关金额为0). 进而影响成本科目,影响企业的毛利 ...

最新文章

  1. unicode 编解码记录
  2. Apache Jakarta Commons 工具集简介
  3. [ZJOI2007]时态同步 树形DP
  4. Windows Azure Marketplaces上的Bing Search API可用啦!
  5. vue中自定义指令、组件化、生命周期、节流和防抖、获取DOM、mint-ui简介、过渡和动画
  6. python学了真的很有用吗-学习Python真的有必要参加培训吗?老男孩Python学习机构...
  7. 错误ImportError: 'No module named skimage.io'和ImportError: No module named google.protobuf.internal
  8. Developer Zone Android*
  9. 开源的仿真软件HOPSAN
  10. android 组态软件,Livzenwex安卓版组态软件
  11. IAST 实践利用洞态做开源组件的安全治理
  12. 电脑版微信每天自动发送
  13. 利用Mono.Cecil动态修改程序集来破解商业组件
  14. Primeng中一些组件的格式调整以及css设置
  15. 什么是ROM、RAM、DRAM、SRAM和FLASH的区别
  16. win10安装MingW64
  17. 病毒、蠕虫和木马的区别
  18. 刷脸签到python代码_背景提升 | “刷脸”时代,如何运用Python实现人脸识别?
  19. 阿里云ECS服务器搭建-阿里云开发者社区
  20. Codeforces - 1166E - The LCMs Must be Large

热门文章

  1. python解析pcap包,python-用scapy读取PCAP文件
  2. 【测控电路】包络检波电路
  3. 2018-2019 C++程序设计报告
  4. 小猪o2o生活通系统安装后空白页面是什么原因怎么解决?
  5. 台球游戏问题C++语言
  6. 【自学Java】桌球游戏-边界检测,桌球碰撞反弹的实现,以及模拟真实运动,小球减速运动
  7. 智方8000系医疗器械销售管理系统 v6.05 官方
  8. 什么?你还不知道 Word 批量转 PDF?python来教你
  9. 《MFC编程》:MFC程序的分类
  10. 分形维数学习个人笔记1