功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。

*&---------------------------------------------------------------------*
*& Report ZBOM_CHECK
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zbom_check.TYPES : BEGIN OF ltype_bommat,matnr TYPE mara-matnr,werks TYPE marc-werks,END OF ltype_bommat.DATA : lt_bommat TYPE TABLE OF ltype_bommat,ls_bommat LIKE LINE OF lt_bommat.DATA: it_wultb   LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb2  LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb3  LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb4  LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb5  LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb6  LIKE stpov OCCURS 0 WITH HEADER LINE,it_wultb7  LIKE stpov OCCURS 0 WITH HEADER LINE,it_equict  LIKE cscequi OCCURS 0 WITH HEADER LINE,it_kncat   LIKE cscknd OCCURS 0 WITH HEADER LINE,it_matcat  LIKE cscmat OCCURS 0 WITH HEADER LINE,it_stdct   LIKE cscstd OCCURS 0 WITH HEADER LINE,it_tplca   LIKE csctpl OCCURS 0 WITH HEADER LINE,it_bom     LIKE bom_header_api01 OCCURS 0 WITH HEADER LINE,it_bom_rev LIKE bom_header_api01 OCCURS 0 WITH HEADER LINE.PARAMETERS : p_werks LIKE marc-werks.
PARAMETERS : p_matnr LIKE marc-matnr.IF p_werks IS NOT INITIAL AND p_matnr IS NOT INITIAL.CLEAR:it_wultb,it_wultb[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = p_matnrwerks                      = p_werksTABLESwultb                      = it_wultbequicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = p_matnr.ls_bommat-werks = p_werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb.CLEAR:it_wultb2,it_wultb2[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb-matnrwerks                      = it_wultb-werksTABLESwultb                      = it_wultb2equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb2 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb-matnr.ls_bommat-werks = it_wultb-werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb2.CLEAR:it_wultb3,it_wultb3[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb2-matnrwerks                      = it_wultb2-werksTABLESwultb                      = it_wultb3equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb3 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb2-matnr.ls_bommat-werks = it_wultb2-werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb3.CLEAR:it_wultb4,it_wultb4[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb3-matnrwerks                      = it_wultb3-werksTABLESwultb                      = it_wultb4equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb4 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb3-matnr.ls_bommat-werks = it_wultb3-werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb4.CLEAR:it_wultb5,it_wultb5[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb4-matnrwerks                      = it_wultb4-werksTABLESwultb                      = it_wultb5equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb5 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb4-matnr.ls_bommat-werks = it_wultb4-werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb5.CLEAR:it_wultb6,it_wultb6[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb5-matnrwerks                      = it_wultb5-werksTABLESwultb                      = it_wultb6equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.IF it_wultb6 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb5-matnr.ls_bommat-werks = it_wultb5-werks.APPEND ls_bommat TO lt_bommat.ELSE.LOOP AT it_wultb6.CLEAR:it_wultb7,it_wultb7[].CALL FUNCTION 'CS_WHERE_USED_MAT'EXPORTINGdatub                      = sy-datumdatuv                      = sy-datummatnr                      = it_wultb6-matnrwerks                      = it_wultb6-werksTABLESwultb                      = it_wultb7equicat                    = it_equictkndcat                     = it_kncatmatcat                     = it_matcatstdcat                     = it_stdcttplcat                     = it_tplcaEXCEPTIONScall_invalid               = 1material_not_found         = 2no_where_used_rec_found    = 3no_where_used_rec_selected = 4no_where_used_rec_valid    = 5OTHERS                     = 6.ENDLOOP.IF it_wultb7 IS INITIAL.CLEAR ls_bommat.ls_bommat-matnr = it_wultb6-matnr.ls_bommat-werks = it_wultb6-werks.APPEND ls_bommat TO lt_bommat.ELSE.MESSAGE 'BOM层数过多' TYPE 'E'.ENDIF.ENDIF.ENDLOOP.ENDIF.ENDLOOP.ENDIF.ENDLOOP.ENDIF.ENDLOOP.ENDIF.ENDLOOP.ENDIF.
ENDIF.
TYPE-POOLS: slis.
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,it_layout   TYPE slis_layout_alv.
DATA:   lv_repid LIKE sy-repid.
DATA:   it_ls_fieldcat TYPE slis_fieldcat_alv.PERFORM frm_alv_display.*&---------------------------------------------------------------------*
*&      Form  frm_alv_display
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_alv_display .lv_repid = sy-repid.it_layout-detail_popup = 'X'.it_layout-info_fieldname = 'LINECOLOR'.REFRESH :it_fieldcat[].PERFORM frm_fieldcat_init.CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'EXPORTINGi_callback_program = lv_repidit_fieldcat        = it_fieldcat[]is_layout          = it_layouti_default          = 'X'i_save             = 'A'
*     i_grid_title       = resultTABLESt_outtab           = lt_bommat.ENDFORM.                    " FRM_ALV_DISPLAY
*&---------------------------------------------------------------------*
*&      Form  FRM_FIELDCAT_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_fieldcat_init.DEFINE fieldcat.CLEAR  it_ls_fieldcat.it_ls_fieldcat-col_pos       =  1.it_ls_fieldcat-fieldname     = &1.it_ls_fieldcat-seltext_l     = &2.it_ls_fieldcat-outputlen     = &3.it_ls_fieldcat-key           = &4.it_ls_fieldcat-seltext_m = it_ls_fieldcat-seltext_l.it_ls_fieldcat-seltext_s = it_ls_fieldcat-seltext_l.APPEND it_ls_fieldcat TO it_fieldcat.CLEAR  it_ls_fieldcat.END-OF-DEFINITION.fieldcat          'MATNR'              '物料'              '20'          'X'  .fieldcat          'WERKS'              '工厂'                '8'          'X'  .
ENDFORM.                    "frm_fieldcat_init

SAP BOM反查(可追溯值至顶级)相关推荐

  1. SAP BOM批量反查成品BOM清单(带BOM组件数量,反查物料清单)

    1. BOM批量反查成品BOM清单(带BOM组件数量,反查物料清单) 代码执行的效果 代码 TABLES :STAS,MARA,MAKT,MARC,T179T. TYPE-POOLS:SLIS.TYP ...

  2. SAP MM 根据采购订单反查采购申请?

    SAP MM 根据采购订单反查采购申请? 前日微信上某同行发来一个message,说是想知道如何通过采购订单号查询到其前端的采购申请号. 笔者首先想到去检查采购订单相关的常用报表ME2L/ME2M/M ...

  3. 探索PADS layout高级使用技巧:通过BOM 反标记layout中的 元件值

    本文为原创文章,未经本人同意禁止转载. 需要的原始文件:pads格式的pcb文件,BOM文件. 使用到的工具:pads layout, word,excel. 前几天偶然听到几个朋友有这样的需求,但是 ...

  4. 微信小程序之根据经纬度反查地址

    最近做微信小程序项目中遇到根据后台接口获取城市某个区域内的信息,后台接口要求传入城市的区域名称,例如上海市杨浦区,小程序官方地址提供的API只能获取到用户当前的经纬度,如何通过经纬度查询到用户的当前位 ...

  5. 怎么看虚拟网服务器ip地址,如何根据ip地址反查域名

    如何根据ip地址反查域名 内容精选 换一换 为保护用户直播源站的资源不被非法源站下载盗用,视频直播服务提供了Referer防盗链.Key防盗链.IP黑白名单鉴权机制和禁推功能.开启鉴权机制后,CDN会 ...

  6. GO工具开发|基于网站API的子域名与IP反查工具(二)

    作者:墨阳 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 前言 上一篇实现了一个简单的子域名查询和ip反查工具,但是当我们的目标比较多时,一个一个查询体验并不友好 ...

  7. java 反查域名_爬虫实现:根据IP地址反查域名

    域名解析与IP地址 域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便地访问到网站的一种服务:IP地址是网络上标识站点的数字地址,为了方便记忆,采用域名来代替IP地址标识站点地址.域名解析 ...

  8. GO工具开发|基于网站API的子域名与IP反查工具(一)

    作者: 墨阳 免责声明:本文仅供学习研究,严禁从事非法活动,任何后果由使用者本人负责. 0x00 前言 最近开始学习GO语言,希望可以摆脱脚本小子的苦恼,在需要的时候可以根据需要写一些小工具.在做信息 ...

  9. 通过QQ邮箱反查QQ号

    2019独角兽企业重金招聘Python工程师标准>>> 一.通过QQ邮箱反查QQ号 平时生活中,经常会遇到被QQ收购的第三方邮箱,绑定到QQ邮箱的服务,以达到隐藏邮件地址的目的,比如 ...

最新文章

  1. 并行计算实战-双调排序
  2. Taints和Tolerations
  3. C++ dll 类型与 C#类型对应关系
  4. 查询已有链表的hashmap_源码分析系列1:HashMap源码分析(基于JDK1.8)
  5. Struts2是什么?Struts2的优势有哪些?
  6. python requests库api_Python+requests库发送接口入参为xml格式的接口请求
  7. c# 无法将类型隐式转换_C#中的隐式类型数组
  8. Universal-Image-Loader解析(二)——DisplayImageOptions的详细配置与简单的图片加载...
  9. 计算机右键菜单太多,电脑点击右键太多选项怎么办
  10. 双十一囤点知识干货!
  11. echarts官网的使用方法
  12. 小白微信小程序开发入门经验总结,干货!生日惊喜可用
  13. 96---Python 绘制费马螺旋线
  14. 加速计陀螺仪信息采集
  15. java gc roots_Java 虚拟机枚举 GC Roots 解析
  16. 抛弃传统IPO,直接上市,你准备好了吗?
  17. 电子基础篇5---三极管
  18. 火星人现住何处?在干什么?
  19. 一天进步一点点 LDAP协议和AD的概念
  20. 采购项目管理:定义和流程

热门文章

  1. hr背景调查会很详细吗_HR做背景调查存在哪些误区?
  2. [Unity][射线检测]检测两个物体之间是否有其他物体阻挡
  3. 老子云数字孪生智慧工厂,助力企业降本增效
  4. HTML实现九宫格延伸特效
  5. SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则
  6. 云原生安全系列 1:零信任安全和软件开发生命周期
  7. 基于vue+element实现多级菜单动态生成
  8. ESP8266微信一键配网smartconfig,esp32可用
  9. 美创科技再次入选《2023杭州独角兽准独角兽企业榜单》
  10. fortify+DVWA靶场和动态IAST审计JAVA靶场