首页 > 其他分享 >向上展开BOM

向上展开BOM

时间:2024-01-22 15:36:26浏览次数:32  
标签:物料 werks matnr wultb marc BOM 向上 type 展开

*&---------------------------------------------------------------------*
*& Report  ZBOM_UP
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

report  zbom_up.
types: begin of typ_marc,
    matnr           type marc-matnr,"物料编码
    werks           type marc-werks,"工厂
    bstrf           type marc-bstrf,"采购订单数量的舍入值
    lgfsb           type marc-lgfsb,"外部采购的缺省仓储位置
    kordb           type marc-kordb,"标识: 源清单要求
    beskz           type marc-beskz,"采购类型
    dispo           type marc-dispo,"MRP 控制者(物料计划人)
    matkl           type mara-matkl,"物料组
    prdha           type mara-prdha,"产品层次
    bstme           type mara-bstme,"采购订单的计量单位
    meins           type mara-meins,"计量单位
    maktx           type makt-maktx,"物料描述
  end of typ_marc.

types:begin of typ_output,
    matnr           type marc-matnr,   "物料
    werks           type marc-werks,   "工厂
    maktx           type makt-maktx,   "物料描述
    prdha           type prodh_d,
    vtext           type ztpps001-vtext1,"产品层次
    dispo           type marc-dispo,"MEP控制者
    dsnam           type ztpps001-dsnam1,"MEP控制者描述
    lifnr           type lfa1-lifnr,"供应商
    sortl           type lfa1-sortl,"供应商描述
    erfme           type pbed-meins,"单位
    m01             type pbed-plnmg,
    m02             type pbed-plnmg,
    m03             type pbed-plnmg,
    m04             type pbed-plnmg,
    m05             type pbed-plnmg,
    m06             type pbed-plnmg,
    m07             type pbed-plnmg,
    m08             type pbed-plnmg,
    m09             type pbed-plnmg,
    m10             type pbed-plnmg,
    m11             type pbed-plnmg,
    m12             type pbed-plnmg,
    price           type ztpps001-price,"单价
    konwa           type konp-konwa    ,"单位
    idnrk           type stpox-idnrk   ,"物料
    pswrk           type stpox-pswrk   ,"工厂
    beskz           type marc-beskz    ,"采购类型
    gjahr           type gjahr         ,"年度
    box             type c             ,"复选框
    mess            type char100       ,"消息
    led             type icon-id       ,"指示灯
*    celltab         TYPE lvc_t_styl    , "STYLE
  end of typ_output.


data: gt_marc                type standard table of typ_marc,
      gw_marc                type typ_marc.

  data:
    lt_wultb_a type table of stpov,
    lt_wultb   type table of stpov,
    lw_wultb   type stpov.

  data:
    l_mess    type char100.


data       gt_output              type standard table of typ_output.

clear gw_marc.
gw_marc-matnr = '000000005000000002'.
gw_marc-werks = '7810'."工厂


append gw_marc to gt_marc.



*输入一个物料 展开全部上阶物料

  loop at gt_marc into gw_marc.
      "根据下阶物料查找上阶物料
      refresh: lt_wultb.
      lw_wultb-matnr = gw_marc-matnr."上阶物料
      lw_wultb-werks = gw_marc-werks."上阶物料工厂
      lw_wultb-idnrk = gw_marc-matnr."下阶物料
      lw_wultb-pswrk = gw_marc-werks."下阶物料工厂
      append lw_wultb to lt_wultb.
      "查找物料在哪个BOM使用,一直查找到最上一阶
      perform frm_cs_where_used_mat tables lt_wultb
                                           lt_wultb_a
                                    using gw_marc-matnr
                                          gw_marc-werks
                                    changing l_mess.
      "结果汇总
      append lines of lt_wultb to lt_wultb_a.
    endloop.



break-point.
*&---------------------------------------------------------------------*
*&      Form  FRM_CS_WHERE_USED_MAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_LT_BOM  text
*      -->P_GW_MARC_MATNR  text
*      -->P_GW_MARC_WERKS  text
*      <--P_L_MESS  text
*----------------------------------------------------------------------*
form frm_cs_where_used_mat  tables   pt_wultb   structure stpov
                                     pt_wultb_a structure stpov
                            using    pv_matnr
                                     pv_werks
                            changing pv_mess.
  data:
    lt_wultb   type table of stpov,
    lw_wultb   type stpov,
    lt_equicat type table of cscequi,
    lt_kndcat  type table of cscknd,
    lt_matcat  type table of cscmat,
    lt_stdcat  type table of cscstd,
    lt_tplcat  type table of csctpl.
  data:
    l_datub    type rc29l-datub ,
    l_datuv    type rc29l-datuv ,
    l_matnr    type rc29l-matnr,
    l_postp    type rc29l-postp,
    l_stlan    type rc29l-stlan value '1',
    l_werks    type rc29l-werks,
    lw_topmat  type mc29s.
  data:
    l_tabix type i.
  loop at pt_wultb.
    l_datub = sy-datum.
    l_datuv = sy-datum.
    l_matnr = pt_wultb-matnr."物料
    l_werks = pt_wultb-werks."工厂
    clear lw_topmat.
    refresh:
      lt_wultb,
      lt_equicat,
      lt_kndcat,
      lt_matcat,
      lt_stdcat,
      lt_tplcat.
    call function 'CS_WHERE_USED_MAT'
      exporting
        datub                      = l_datub
        datuv                      = l_datuv
        matnr                      = l_matnr
*       POSTP                      = l_postp
*       RETCODE_ONLY               = ' '
        stlan                      = l_stlan
        werks                      = l_werks
*       MCLMT                      = ' '
*       MNSTL                      = ' '
*       MXSTL                      = ' '
*       STLTP                      = ' '
*       NEWSI                      = ' '
      importing
        topmat                     = lw_topmat
      tables
        wultb                      = lt_wultb
        equicat                    = lt_equicat
        kndcat                     = lt_kndcat
        matcat                     = lt_matcat
        stdcat                     = lt_stdcat
        tplcat                     = lt_tplcat
*       PRJCAT                     =
      exceptions
        call_invalid               = 1
        material_not_found         = 2
        no_where_used_rec_found    = 3
        no_where_used_rec_selected = 4
        no_where_used_rec_valid    = 5
        others                     = 6.
    if sy-subrc <> 0.
* Implement suitable error handling here
      "若不存在上阶物料,则为成品物料
      if pt_wultb-matnr = pv_matnr and
         pt_wultb-werks = pv_werks.
        delete pt_wultb.
      endif.
    else.
      loop at lt_wultb into lw_wultb.
        "成品已经存在,不要此条目
*        READ TABLE gt_output TRANSPORTING NO FIELDS
*                             WITH KEY matnr = lw_wultb-matnr
*                                      werks = lw_wultb-werks.
**                                      idnrk = pt_wultb-idnrk.
*        IF sy-subrc = 0.
*          CONTINUE.
*        ENDIF.
*        "存在同一成品,不要此条目
*        READ TABLE pt_wultb TRANSPORTING NO FIELDS
*                            WITH KEY matnr = lw_wultb-matnr
*                                     werks = lw_wultb-werks.
*        IF sy-subrc = 0.
*          CONTINUE.
*        ENDIF.
*        "与别的物料存在同一成品, 不要此条目
*        READ TABLE pt_wultb_a TRANSPORTING NO FIELDS
*                              WITH KEY matnr = lw_wultb-matnr
*                                       werks = lw_wultb-werks.
*        IF sy-subrc = 0.
*          CONTINUE.
*        ENDIF.
        "记录下阶物料和工厂
        lw_wultb-idnrk = pv_matnr.
        lw_wultb-pswrk = pv_werks.
        append lw_wultb to pt_wultb.
      endloop.
      "若存在上阶物料,则删除本阶物料
      delete pt_wultb.
    endif.
  endloop.
endform.                    " FRM_CS_WHERE_USED_MAT

 

标签:物料,werks,matnr,wultb,marc,BOM,向上,type,展开
From: https://www.cnblogs.com/Anyohh233/p/17980135

相关文章

  • JavaScript 中的展开运算符是什么?
    展开运算符(SpreadOperator)是JavaScript中的一种语法,用于将可迭代对象(如数组或字符串)展开为独立的元素。它使用三个连续的点号(...)作为操作符。展开运算符可以在多种情况下使用,包括数组、对象和函数调用等。下面是一些展开运算符的用法示例:1:展开数组:使用展开运算符可以将一......
  • PHP学习第八天:扩展开发与多线程编程
    在PHP学习的第八天,我深入了解了扩展开发和多线程编程的概念。早上,我学习了如何编写PHP扩展。扩展是PHP的模块,可以提供额外的功能。我了解了扩展开发的基础知识,如C语言和PHPAPI。通过编写一个简单的扩展,我熟悉了扩展的结构和编写过程。了解扩展开发使我能够更深入地了解PHP的内部工......
  • 细说JavaScript BOM之window对象
    window对象是JavaScript中最大的对象,其他对象都是window对象的一部分,window对象表示浏览器的一个实例,在浏览器中它有双重身份,既是通过JavaScript访问浏览器窗口的一个接口,又是ECMAScript标准中规定的Globel(全局)对象。第二个身份说明了我们在网页中定义的任何一个变量、函数和对......
  • 什么是JavaScript BOM
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9466bdfb467e4a49b64c69669d68d396.png)BOM是BrowserObjectModel的缩写,即浏览器对象模型。由于BOM是和浏览器相关的一些操作,因此产生的后果就是无数的浏览器厂商各自使用自己的一套方式实现BOM(当然现在这个问题基本......
  • 细说JavaScript BOM之HTML5新特性
    1、applicationCache对象什么是ApplicationCache呢?HTML5引入了应用程序缓存技术,意味着Web应用可进行缓存,并在没有网络的情况下使用,通过创建cachemanifest文件,可以轻松的创建离线应用。ApplicationCache带来的优势:1.离线浏览2、提升页面载入速度3、降低服务器压力需要......
  • 细说JavaScript BOM之window常用子对象
    一、locationlocation翻译过来就是位置的意思,打开浏览器窗口大家可以看到导航栏上有一个URL地址。//例如https://www.zhishunet.com//分心可知,它使用的网络协议是https服务器名称是www,zhishunet.comlocation常用对象属性属性描述search设置或返回从问好(?......
  • 洛谷题单指南-模拟和高精度-P1098 [NOIP2007 提高组] 字符串的展开
    原题链接:https://www.luogu.com.cn/problem/P1098题意解读:题目本身是一道模拟题,但是细节点较多,要拿100分,有以下注意点:1、-号两个需要同时为小写字母或者数字,才进行填充2、-号左边>=右边,直接输出-3、对待填充的内容的处理,可以先看是否填充*;小写字母和数字的填充都是前一位asci......
  • SOLIDWORKS插件SolidKits.BOMs工具之属性修改
    SOLIDWORKS模型的属性信息可以写在自定义属性中,也可以写在配置特定属性中,这些我们在制作SOLIDWORKS模板的时候就已经定义好了,如果随着企业的发展,属性名做了调整,就可以使用SOLIDWORKS属性修改插件-SolidKits.BOMs工具来批量完成属性名的修改,比如将代号改为图号,将备注属性删除等操作......
  • antd表格中默认展开所有行,expandable下的defaultExpandAllRows属性失效
    antd表格中默认展开所有行,expandable下的defaultExpandAllRows属性失效原因:dom节点渲染时defaultExpandAllRows是生效的,但此时还没有数据,当表格组件拿到数据时会重新渲染表格组件,导致defaultExpandAllRows失效解决:给表格组件Table绑定一个随机key(本文使用的是reduxjs/toolkit下......
  • web DevOps / css id / css class / javascript / Browser Object Model / bom / Docu
    sNSD_DEVOPS_02CSS概述概念与理解层叠样式表—也就是CSS—是在HTML之后应该学习的第二门技术。HTML用于定义内容的结构和语义,CSS用于设计风格和布局。比如,我们可以使用CSS来更改内容的字体、颜色、大小、间距,将内容分为多列,或者添加动画及其他的装饰效果。修改页......