SAP小技巧 BOM数据查询
点击蓝字 关注我们
一
前言
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数据查询相关推荐
- SAP小技巧之 标签打印
前言: SAP小技巧系列主要是记录一些项目中碰到的问题及解决思路与方式.这些问题可能你也碰到过,希望能给你一些帮助. 标签打印 怎么通过SAP开发程序打印标签? 提起这个问题,很自然的会想起ABAP常 ...
- Excel小技巧----VLOOKUP数据匹配
Excel小技巧----VLOOKUP数据匹配 一.目的: 将左侧打乱的地市代码与右侧地市名称准确对应起来. 二.方式:使用excel中的vlookup函数. 1.选择vlookup函数 2.匹配过程 ...
- sql left join 去重_混入了一些奇怪的东西?SQL小技巧之数据去重
大家好,欢迎踏入野生程序猿的生存之道,我是你们的老朋友大猿猿! 今天聊聊数据库里怎样删除重复数据. "重复"的定义 首先咱先明确一下什么叫重复数据,比如你有个表,好比说学生表吧,这 ...
- SAP小技巧之 实现SMARTFORM打印中的小计与总计
点击蓝字 关注我们 一 前言 公众号群里面有人在讨论SMARTFORM打印中的小计和总计的实现.好久没有做SMARTFORM了, 所以没有参与讨论. 后来网上查询了一下. 也没有找到很好的解决方案.所 ...
- SAP小技巧 商业图形(一)简介
点击蓝字 关注我们 一 前言 最近准备扩展动态报表的功能,添加图形呈现(饼图,柱形图等).考虑了两个方向 使用EXCEL呈现图形 使用SAP标准函数呈现图形 这两个方向都有可行性. EXCEL呈现图形 ...
- SAP小技巧之 全版本的SAPGUI免密登录方式
点击蓝字 关注我们 前言 SAPGUI 7.4以下版本提供了一个创建快捷方式时输入密码的功能(激活这个功能需要调整注册表,搜索SAPGUI免密登录,可以查到很多,这里就不啰嗦了).有多少人为了使用这个 ...
- SAP小技巧 发票校验BAPI调用总结
点击蓝字 关注我们 一 前言 同事开发供应商结算功能时,需要把供应商的采购入库,采购退货,及供应商的费用项,返利项等整合到一张发票校验单据中. 调用BAPI的时候,因为参数填写的原因,报了一些错误.帮 ...
- SAP小技巧 DOCKING容器解决分辨率问题
一 前言 通过SAP ENJOY演示中心可以学习SAP常用容器的用法(TCODE: DWDM ) 其中有5个DEMO程序介绍不同的容器 自定义容器 固定容器(DOCKING容器) 拆分器容器 easy ...
- SAP小技巧 成本价检查及自动维护体系
点击蓝字 关注我们 一 前言 成本价是ERP系统中商品的重要库存属性之一,如果商品没有成本价, 会导致商品凭证没有对应的会计凭证(或者会计凭证中的成本相关金额为0). 进而影响成本科目,影响企业的毛利 ...
最新文章
- unicode 编解码记录
- Apache Jakarta Commons 工具集简介
- [ZJOI2007]时态同步 树形DP
- Windows Azure Marketplaces上的Bing Search API可用啦!
- vue中自定义指令、组件化、生命周期、节流和防抖、获取DOM、mint-ui简介、过渡和动画
- python学了真的很有用吗-学习Python真的有必要参加培训吗?老男孩Python学习机构...
- 错误ImportError: 'No module named skimage.io'和ImportError: No module named google.protobuf.internal
- Developer Zone Android*
- 开源的仿真软件HOPSAN
- android 组态软件,Livzenwex安卓版组态软件
- IAST 实践利用洞态做开源组件的安全治理
- 电脑版微信每天自动发送
- 利用Mono.Cecil动态修改程序集来破解商业组件
- Primeng中一些组件的格式调整以及css设置
- 什么是ROM、RAM、DRAM、SRAM和FLASH的区别
- win10安装MingW64
- 病毒、蠕虫和木马的区别
- 刷脸签到python代码_背景提升 | “刷脸”时代,如何运用Python实现人脸识别?
- 阿里云ECS服务器搭建-阿里云开发者社区
- Codeforces - 1166E - The LCMs Must be Large