当前位置: 首页 > news >正文

SAP PP BOM查询报表分享

一、报表逻辑

二、报表界面

三、报表代码

*&---------------------------------------------------------------------*
*& Report ZRPPP_0002
*&---------------------------------------------------------------------*
*& 08.06.2021 09:25:14  BOM查询报表
*&---------------------------------------------------------------------*
REPORT zrppp_0002.
TABLES: marc,mara,mast,stko,stxh .

INCLUDE <color>.
DATA: gr_table   TYPE REF TO cl_salv_table,
      gr_layout  TYPE REF TO cl_salv_layout,
      gs_program TYPE salv_s_layout_key,
      gr_columns TYPE REF TO cl_salv_columns_table,
      gr_column  TYPE REF TO cl_salv_column_table,
      gr_display TYPE REF TO cl_salv_display_settings,
      gt_s_color TYPE lvc_t_scol,
      gs_s_color TYPE lvc_s_scol.
DATA:directory TYPE string.
TYPES: BEGIN OF ty_head  ,
         werks  TYPE mast-werks,
*         stufe TYPE   stpox-stufe,
         matnr  TYPE mast-matnr,
         stlnr  TYPE mast-stlnr,
         matnr1 TYPE mast-matnr,
         maktx1 TYPE makt-maktx,
         ltext1 TYPE char255,
         arbpl  TYPE crhd-arbpl,
         ktext  TYPE crtx-ktext,
*         stlan1 TYPE mast-stlan,
         andat  TYPE mast-andat,
         datuv  TYPE stko-datuv,
*         maktx  TYPE makt-maktx,
         bmeng  TYPE stko-bmeng,
         bmein  TYPE stko-bmein,
         stlan  TYPE mast-stlan,
         stlty  TYPE stko-stlty,
         stlal  TYPE stko-stlal,
         stufe  TYPE char15,
         stlst  TYPE stko-stlst,
       END OF ty_head .
DATA:gw_head TYPE ty_head .

TYPES:BEGIN OF ty_tab ,
        chk         TYPE c.
        INCLUDE TYPE ty_head .
TYPES:
        posnr       TYPE   stpo-posnr,
        postp       TYPE   stpo-postp,
        idnrk       TYPE   stpo-idnrk,
        idnrk_maktx TYPE   makt-maktx,
        zzbbh       TYPE   ztmm_mara-zzbbh,
        mmsta       TYPE   marc-mmsta,
        ltext2      TYPE char255,
        matkl       TYPE mara-matkl,

        labst       TYPE mard-labst,
        lblab       TYPE mslb-lblab,
        meins       TYPE mara-meins,
        wqsl        TYPE ekpo-menge,
        wqsldw      TYPE ekpo-meins,


        wgbez60     TYPE t023t-wgbez60,
        menge       TYPE   stpo-menge,
        mmein       TYPE   stpo-meins,
        zjdwyl(16)  TYPE   p DECIMALS 9,
        ausch       TYPE   stpo-ausch,
        aennr       TYPE   stko-aennr,
        beskz       TYPE   marc-beskz,
        sobsl       TYPE   marc-sobsl,
        lgpro       TYPE   marc-lgpro,
        alpgr       TYPE   stpo-alpgr,
        sanka       TYPE   stpo-sanka,
        alprf       LIKE stpo-alprf,
        ewahr       LIKE stpo-ewahr,
        alpst       LIKE stpo-alpst,
        zzgylx      TYPE   char1,
        zzscbb      TYPE   char1,
        zzxxjl      TYPE   char1,
        vprsv       TYPE   mbew-vprsv,
        zzstprs     TYPE   mbew-stprs,
        peinh       TYPE   mbew-peinh,
        brgew        TYPE mara-brgew,
        ntgew        TYPE mara-ntgew,
        zzmpq1      TYPE ztmm_mara-zzmpq1,
        zzmpq2      TYPE ztmm_mara-zzmpq2,
        sortf       TYPE   sortp, "排序字段
        dumps       TYPE   dumps, "虚拟项目
*       sortfield(255) TYPE c,
        t_color     TYPE lvc_t_scol,  "设置单元格颜色用
        zflag       TYPE c,
        stlkn       TYPE stlkn,
        umlme       TYPE mard-umlme, " 不良品
        insme       TYPE mard-insme, " 冻结
        zzp         TYPE resb-enmng , " 在制品
        kausf       TYPE marc-kausf, "组件报废率
*        IF S_WERKS-LOW = '8010'.
      END OF ty_tab .
DATA:gt_tab TYPE TABLE OF ty_tab WITH HEADER LINE.

TYPES: BEGIN OF ty_zzp  ,
         matnr1  TYPE  afpo-matnr,
         zenmng2 TYPE resb-enmng,
       END OF ty_zzp .
DATA   gt_zzp TYPE TABLE OF ty_zzp.


DATA:BEGIN OF gw_info.
DATA: ztype     TYPE bapi_mtype,
      zmsg      TYPE bapi_msg,
      zauth_wrk TYPE char1, "工厂权限
      zauth_prs TYPE char1, "价格权限
      END OF gw_info .


DATA: gv_path    TYPE string .

"打印相关参数
DATA: lv_fname              TYPE rs38l_fnam,
      gv_option             TYPE ssfcompop,
      gv_control_parameters TYPE ssfctrlop,
      gs_output             TYPE ssfcresop.

DATA: r_lgort1 TYPE RANGE OF mard-lgort,
      r_lgort2 TYPE RANGE OF mard-lgort.

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS:
  s_werks FOR marc-werks NO INTERVALS NO-EXTENSION OBLIGATORY MEMORY ID wrk,
  s_matnr FOR mara-matnr,
  s_mtart FOR mara-mtart ,
  s_stlan FOR mast-stlan  NO INTERVALS NO-EXTENSION.

  PARAMETERS: p_stlst TYPE stko-stlst DEFAULT '1'.

  SELECT-OPTIONS:s_stlal FOR mast-stlal NO-EXTENSION NO INTERVALS ,"DEFAULT '01',
  s_andat FOR mast-andat .

  SELECTION-SCREEN SKIP 1.
  PARAMETERS: c_01 AS CHECKBOX DEFAULT 'X'.
  SELECTION-SCREEN ULINE.
  PARAMETERS: c_11 AS CHECKBOX DEFAULT 'X',
              c_12 AS CHECKBOX DEFAULT ''.
  SELECTION-SCREEN ULINE.
  PARAMETERS: c_02 AS CHECKBOX DEFAULT '' USER-COMMAND cmd,
              c_03 AS CHECKBOX DEFAULT '' USER-COMMAND cmd.


SELECTION-SCREEN END OF BLOCK part1.

CLASS l_cl_handle_events DEFINITION.
  PUBLIC SECTION.
    METHODS: on_user_command FOR EVENT added_function OF cl_salv_events_table
      IMPORTING e_salv_function.
    METHODS: on_link_click FOR EVENT link_click OF cl_salv_events_table
      IMPORTING row column.
ENDCLASS.

CLASS l_cl_handle_events IMPLEMENTATION.
  METHOD on_user_command.
    PERFORM handle_user_command USING e_salv_function.
  ENDMETHOD.
  METHOD on_link_click.
    PERFORM handle_link_click USING row column.
  ENDMETHOD.
ENDCLASS.

INITIALIZATION.
  s_andat-high = sy-datum .
  APPEND s_andat .
  "1001
  r_lgort1 = VALUE #(  sign = 'I' option = 'EQ'  ( low = 'BRJ1' )
  ( low = 'BRJ2' )
  ( low = 'CMP1' )
  ( low = 'RJS1' )
  ( low = 'CMS1' )
  ( low = 'FGR1' )
  ( low = 'LD01' )
  ( low = 'RJ01' )
  ( low = 'RJ0Z' )
  ( low = 'RJP1' )
  ( low = 'ZY02' )
  ( low = 'ZY03' )
  ( low = 'ZY06' )
  ( low = 'ZYLD' )
  ( low = '9999' )
  ( low = 'XN02' )
  ( low = 'ZY04' )
  ( low = 'ZY05' )
  ( low = 'ZY07' )
  ( low = 'FGR2' ) ) .

  "1002
  r_lgort2 = VALUE #(  sign = 'I' option = 'EQ'
  ( low = 'BRJ1' )
  ( low = 'BRJ2' )
  ( low = 'CMS1' )
  ( low = 'RJ01' )
  ( low = 'RJ03' )
  ( low = 'ZY02' )
  ( low = 'ZY03' )
  ( low = 'ZY06' )
  ( low = '9999' )
  ( low = 'XN02' )
  ( low = 'ZY04' )
  ( low = 'ZY05' )
  ( low = 'ZY07' )
  ( low = 'FGR2' ) ) .

AT SELECTION-SCREEN OUTPUT.
  IF ( c_02 = 'X'  OR  c_03 = 'X' ) AND c_11 = ''.
    c_11 = 'X'.
  ENDIF.

START-OF-SELECTION.
  PERFORM frm_check_input .
  CHECK gw_info-ztype NE 'E' .
  PERFORM frm_get_data .
  PERFORM frm_show_alv .
*&---------------------------------------------------------------------*
*& Form frm_get_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_get_data .
  DATA: lt_stb    TYPE TABLE OF stpox WITH HEADER LINE,
        lw_topmat TYPE cstmat,
        lv_dstst  TYPE csdata-xfeld,
        lv_werks  TYPE werks_d,
        lv_stlan  TYPE stlan,
        lv_matnr  TYPE matnr,
        lv_bmeng  TYPE stko-bmeng,
        lv_bmein  TYPE stko-bmein.

  DATA:BEGIN OF lt_ekpo OCCURS 0 .
  DATA:matnr TYPE matnr,
       menge TYPE menge_d,
       meins TYPE meins,
       END OF lt_ekpo .
  DATA:flg_end TYPE c .
  DATA gh_mard TYPE mard.
  DATA gd_mard TYPE TABLE OF  mard.
  DATA gh_mard_sun TYPE   mard.
  DATA gd_mard_sun TYPE TABLE OF  mard.
*  BREAK guoxiongjie .

  SELECT
  marc~matnr AS lp_matnr,
  CAST( @space AS CHAR( 1 ) ) AS done,
  mast~stlnr,
  mast~stlan,
  mast~stlal,
  mara~meins,
  marc~beskz,
  marc~sobsl,
  mara~matkl,
  mast~andat AS datuv
*      stko~datuv
  INTO TABLE @DATA(lt_mat)
        FROM mara INNER JOIN marc ON mara~matnr = marc~matnr
        INNER JOIN mast ON marc~matnr = mast~matnr AND marc~werks = mast~werks
*             INNER JOIN stko ON mast~stlnr = stko~stlnr AND mast~stlal = stko~stlal
        WHERE marc~werks IN @s_werks
        AND marc~matnr IN @s_matnr
        AND mara~mtart IN @s_mtart
        AND mast~stlan IN @s_stlan
        AND mast~stlal IN @s_stlal
*      AND stko~datuv IN @s_andat
        AND mara~lvorm = ' '
        AND marc~lvorm = ' '.

  SELECT b~stlnr, b~stlal, b~stkoz, b~vgkzl, b~datuv, CAST( @space AS CHAR( 1 ) ) AS chk
  FROM @lt_mat AS a INNER JOIN stko AS b ON a~stlnr = b~stlnr AND a~stlal = b~stlal
  WHERE b~datuv IN @s_andat
  INTO TABLE @DATA(lt_stko) .

  LOOP AT lt_stko INTO DATA(lw_stko) WHERE vgkzl IS NOT INITIAL.
    READ TABLE lt_stko ASSIGNING FIELD-SYMBOL(<fs_stko>)
    WITH KEY stlnr = lw_stko-stlnr stlal = lw_stko-stlal stkoz = lw_stko-vgkzl .
    IF sy-subrc EQ 0.
      <fs_stko>-chk = 'E' .
    ENDIF.
  ENDLOOP.
  DELETE lt_stko WHERE chk = 'E' .

  LOOP AT lt_mat ASSIGNING FIELD-SYMBOL(<fs_mat>) .
    READ TABLE lt_stko INTO lw_stko WITH KEY stlnr = <fs_mat>-stlnr stlal = <fs_mat>-stlal .
    IF sy-subrc EQ 0.
      <fs_mat>-datuv = lw_stko-datuv .
    ELSE.
      <fs_mat>-done = 'E' .
    ENDIF.
  ENDLOOP.
  DELETE lt_mat WHERE done = 'E' .

*  SELECT a~*
*    FROM @lt_mat AS a JOIN @lt_stko AS b ON a~stlnr = b~stlnr AND a~stlal = b~stlal
*    INTO TABLE lt_mat .



  IF lt_mat[] IS INITIAL.
    MESSAGE '未查询到BOM数据' TYPE 'S' DISPLAY LIKE 'E'.
    RETURN .
  ENDIF.

  CLEAR:gt_tab,gt_tab[].
  SORT lt_mat ASCENDING BY lp_matnr stlan stlal .
*  BREAK guoxiongjie .

  lv_werks = s_werks-low .

  DATA:lv_total TYPE char6,
       lv_row   TYPE char6,
       lv_text  TYPE char50.
*  BREAK GUOXIONGJIE .

  lv_total = lines( lt_mat ) .
  LOOP AT lt_mat INTO DATA(lw_mat) WHERE done = ''.
    DATA(lv_lpmatnr) = |{ lw_mat-lp_matnr ALPHA = OUT }|.
    ADD 1 TO lv_row .
    CONCATENATE lv_row '/' lv_total  ', 查询物料BOM:' lv_lpmatnr INTO lv_text .
    CONDENSE lv_text NO-GAPS .
    CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
      EXPORTING
        percentage = 25 "lv_percentage
        text       = lv_text.

    "判断期间~
    SELECT SINGLE bmeng bmein INTO (lv_bmeng ,lv_bmein ) FROM mast INNER JOIN stko ON mast~stlnr = stko~stlnr AND mast~stlal = stko~stlal
    WHERE matnr = lw_mat-lp_matnr AND werks = lv_werks AND stlan = lw_mat-stlan
    AND datuv LE sy-datum AND valid_to GE sy-datum .

    CALL FUNCTION 'ZCS_BOM_EXPL_MAT_V2'
      EXPORTING
*       aufsw   = ' '
        capid   = 'PP01'
        datuv   = lw_mat-datuv
        ehndl   = '1'
        emeng   = lv_bmeng
        mtnrv   = lw_mat-lp_matnr
        mehrs   = c_01   "多层
        stlan   = lw_mat-stlan  " BOM用途
        stlal   = lw_mat-stlal  "备选物料清单
        werks   = lv_werks
        i_stlan = s_stlan-low
      IMPORTING
        topmat  = lw_topmat
*       dstst   = lv_dstst
      TABLES
        stb     = lt_stb.

    lw_mat-done = 'X'.
    MODIFY lt_mat FROM lw_mat TRANSPORTING done.

    IF p_stlst IS NOT INITIAL.
*      CHECK  lw_topmat-stlst EQ p_stlst .
    ENDIF.

    READ TABLE gt_tab WITH KEY matnr = lw_topmat-matnr stlan = lw_topmat-stlan stufe = '0' TRANSPORTING NO FIELDS .
    IF sy-subrc NE 0.
      CLEAR gt_tab .
      gt_tab = VALUE #( werks = lw_topmat-werks matnr = lw_topmat-matnr maktx1 = lw_topmat-maktx
      stufe = '0' idnrk = lw_topmat-matnr andat = lw_topmat-andat stlan = lw_topmat-stlan
      menge = lv_bmeng mmein = lv_bmein stlst =  lw_topmat-stlst ) .

      SELECT SINGLE matkl INTO gt_tab-matkl FROM mara WHERE matnr = gt_tab-matnr .
      gt_tab-bmeng = lv_bmeng.
      gt_tab-bmein = lv_bmein.
      APPEND gt_tab .
    END

http://www.dtcms.com/a/549584.html

相关文章:

  • 国内 扁平化 网站坂田杨美企业网站建设
  • 抖音火花任务自动化脚本
  • 从入门到实践:Linux 基础学习(xshell)
  • 《URP管线主导的角色材质、阴影与显存动态适配优化方案》
  • TensorFlow深度学习实战——自定义图数据集
  • Flutter 3.29.0 使用RepaintBoundary或者ScreenshotController出现导出图片渲染上下颠倒问题
  • Flutter---个人信息(4)---实现修改生日日期
  • 不止于加热:管式炉在材料科学与新能源研发中的关键作用
  • 深圳网站建设方案优化深圳发布广告的平台有哪些
  • Go语言中json.RawMessage
  • Pytorch常用函数学习摘录
  • 个人什么取消网站备案铭万做的网站怎么样
  • 2025-10-30 ZYZOJ Star(斯达)模拟赛 hetao1733837的record
  • 百胜中台×OceanBase:打造品牌零售降本增效的数字核心引擎,热门服饰、美妆客户已实践
  • 深度学习调试工具链:从PyTorch Profiler到TensorBoard可视化
  • 不可变借用的规则与限制: 从只读语义到零拷贝架构的 5 000 字深潜
  • 专题三 之 【二分查找】
  • C++进阶: override和final说明符-----继承2中重写的确认官和刹车(制动器)
  • 数据科学每日总结--Day7--数据库
  • opencv 学习: 01 ubuntu20.04 下 opencv 4.12.0 源码编译
  • 满足“国六”标准的通用型故障诊断仪:Q-OBD
  • 上海专业建站公湖南网站建设设计
  • 智慧时空大数据平台:释放时空信息数据价值
  • 线程基本概念
  • MySQL MDL锁阻塞DDL 导致复制线程卡住
  • 智慧管理,赋能美容院新未来
  • Flink做checkpoint迟迟过不去的临时解决思路
  • 网站注册 优帮云wordpress首页静态化
  • [人工智能-大模型-115]:模型层 - 用通俗易懂的语言,阐述神经网络为啥需要多层
  • Actix Web 不是 Nginx:解析 Rust 应用服务器与传统 Web 服务器的本质区别