I would like to share a simple report that can be used to modify the selection screen of MD07.
The program will define a new selection screen. Then it will call the standard MD07.
Remeber that MD07 does not allow the use of multiple selection for Materials:
This is the selection screen of the new program:
This is the ABAP code:
*=======================================================================
*-----------------------------------------------------------------------
* Consulting2b
*-----------------------------------------------------------------------
* Program: Z_MD07_RMMD07DB
* Type: Report
*-----------------------------------------------------------------------
* Created By: Mariano Cabalen
* Created On: 15/01/2008
*-----------------------------------------------------------------------
* Description
* This Program will execute MD07.
*-----------------------------------------------------------------------
* INPUT : Internal Table MDMWX has to be filled with
* material / plant / MRP area combination of
* selected materials
*-----------------------------------------------------------------------
* OUTPUT: MD07 overview of these materials to be processed
* like in MD07
*-----------------------------------------------------------------------
*=======================================================================
REPORT Z_MD07_RMMD07DB MESSAGE-ID ZMD.
************************************************************************
* VARIABLES DEFINITIONS *
************************************************************************
*--> Type-Pools
TYPE-POOLS: m61x.
*--> DB-Table
TABLES: marc, mara, mdma, eord, pgmi, mkal,
t000md, mdlv.
*--> Data definitions
CONSTANTS: memo_id_md07(10) TYPE c VALUE 'START_MD07'.
*--> Structures and Data
DATA: rm61r LIKE rm61r.
DATA: l_bertx LIKE rm61r-bertx.
*--> Table of selected materials
DATA: BEGIN OF mdmwx OCCURS 0.
INCLUDE STRUCTURE mdmw. "material / plant / MRP area
DATA: END OF mdmwx.
*--> Table of selected materials
TYPES: BEGIN OF it_md07,
MATNR LIKE MDMW-MATNR,
WERKS LIKE MDMW-WERKS,
BERID LIKE MDMW-BERID,
BERTX LIKE MDMW-BERTX,
END OF it_md07.
Types: tb_md07_h type standard table of it_md07.
data: tb_md07 type tb_md07_h WITH HEADER LINE,
tb1_md07 type tb_md07_h WITH HEADER LINE,
tb2_md07 type tb_md07_h WITH HEADER LINE,
tb3_md07 type tb_md07_h WITH HEADER LINE.
************************************************************************
* SELECT-OPTIONS *
************************************************************************
START-OF-SELECTION.
SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_werks FOR rm61r-werks OBLIGATORY, "Plant
s_berid FOR rm61r-berid. "MRP area
SELECTION-SCREEN: END OF BLOCK a1.
SELECTION-SCREEN: BEGIN OF BLOCK a2 WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: chk_mat RADIOBUTTON GROUP rad1.
SELECTION-SCREEN COMMENT 3(27) TEXT-R01.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
s_matnr FOR rm61r-matnr. "Material
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: chk_ven RADIOBUTTON GROUP rad1.
SELECTION-SCREEN COMMENT 3(39) TEXT-R02.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
s_lifnr FOR eord-lifnr. "Vendor
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: chk_pro RADIOBUTTON GROUP rad1.
SELECTION-SCREEN COMMENT 3(32) TEXT-R03.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
s_prgrp FOR pgmi-prgrp. "Product Group
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: chk_lin RADIOBUTTON GROUP rad1.
SELECTION-SCREEN COMMENT 3(60) TEXT-R04.
SELECTION-SCREEN END OF LINE.
SELECT-OPTIONS:
s_mdv01 FOR mkal-mdv01. "Production Line
SELECTION-SCREEN: END OF BLOCK a2.
SELECTION-SCREEN: BEGIN OF BLOCK a3 WITH FRAME TITLE text-003.
SELECT-OPTIONS:
s_matkl FOR mara-matkl, "Material group
s_dispo FOR rm61r-dispo, "MRP controller
s_ekgrp FOR marc-ekgrp, "Purchasing Group
s_beskz FOR rm61r-beskz, "Procurement Type
s_sobsl FOR rm61r-sobsl, "Special procurement type
s_dismm FOR rm61r-dismm, "MRP Type
s_mmsta FOR rm61r-mmsta, "Plant-Specific Material Status
s_maabc FOR rm61r-maabc. "ABC indicator
SELECTION-SCREEN: END OF BLOCK a3.
END-OF-SELECTION.
************************************************************************
* PERFORMANCE CHECKS *
************************************************************************
*--> MRP-Area active ?
PERFORM read_t000md.
IF NOT s_berid IS INITIAL.
IF t000md-disfg IS INITIAL.
MESSAGE I001(ZMD).
EXIT.
ENDIF.
ENDIF.
*--> Performance Check for Material Selection by Source List
IF chk_ven = 'X'.
IF s_lifnr IS INITIAL.
MESSAGE I000 WITH TEXT-T00.
EXIT.
ENDIF.
ENDIF.
*--> Performance Check for Material Selection by Product Group
IF chk_pro = 'X'.
IF s_prgrp IS INITIAL.
MESSAGE I000 WITH TEXT-T01.
EXIT.
ENDIF.
ENDIF.
*--> Performance Check for Material Selection by Production Version
IF chk_lin = 'X'.
IF s_mdv01 IS INITIAL.
MESSAGE I000 WITH TEXT-T02.
EXIT.
ENDIF.
ENDIF.
************************************************************************
* START OF MAIN PROGRAM *
************************************************************************
*--> Select all materials by source list
IF chk_ven = 'X'.
IF s_berid IS INITIAL.
SELECT a~matnr
b~werks
INTO TABLE tb_md07
FROM eord AS a
INNER JOIN marc AS b ON a~matnr = b~matnr
AND a~werks = b~werks
INNER JOIN mara AS c ON a~matnr = c~matnr
WHERE b~werks IN s_werks AND a~lifnr IN s_lifnr
AND a~vdatu <= sy-datum AND a~BDATU >= sy-datum
AND b~dispo IN s_dispo AND b~beskz IN s_beskz
AND b~sobsl IN s_sobsl AND b~dismm IN s_dismm
AND b~mmsta IN s_mmsta AND b~maabc IN s_maabc
AND b~ekgrp IN s_ekgrp AND c~matkl IN s_matkl.
ELSE.
*--> Select all materials in MRP Areas other than plant MRP Area
IF NOT s_berid IS INITIAL.
SELECT a~matnr
b~werks
c~berid
INTO TABLE tb_md07
FROM eord AS a
INNER JOIN marc AS b ON a~matnr = b~matnr
AND a~werks = b~werks
INNER JOIN mdma AS c ON a~matnr = c~matnr
AND a~werks = c~werks
INNER JOIN mara AS d ON a~matnr = d~matnr
WHERE b~werks IN s_werks AND a~lifnr IN s_lifnr
AND a~vdatu <= sy-datum AND a~BDATU >= sy-datum
AND b~dispo IN s_dispo AND b~beskz IN s_beskz
AND b~sobsl IN s_sobsl AND b~dismm IN s_dismm
AND b~mmsta IN s_mmsta AND b~maabc IN s_maabc
AND b~ekgrp IN s_ekgrp AND d~matkl IN s_matkl
AND c~berid IN s_berid.
ENDIF.
ENDIF.
ENDIF.
*--> Select all materials by material
IF chk_mat = 'X'.
IF s_berid IS INITIAL.
SELECT a~matnr
a~werks
INTO TABLE tb_md07
FROM marc AS a
INNER JOIN mara AS b ON a~matnr = b~matnr
WHERE a~werks IN s_werks AND a~dispo IN s_dispo
AND a~beskz IN s_beskz AND a~sobsl IN s_sobsl
AND a~dismm IN s_dismm AND a~mmsta IN s_mmsta
AND a~maabc IN s_maabc AND a~matnr IN s_matnr
AND a~ekgrp IN s_ekgrp AND b~matkl IN s_matkl.
ELSE.
*--> Select all materials in MRP Areas other than plant MRP Area
IF NOT s_berid IS INITIAL.
SELECT a~matnr
a~werks
b~berid
INTO TABLE tb_md07
FROM marc AS a
INNER JOIN mdma AS b ON a~matnr = b~matnr
AND a~werks = b~werks
INNER JOIN mara AS c ON a~matnr = c~matnr
WHERE a~werks IN s_werks AND a~dispo IN s_dispo
AND a~beskz IN s_beskz AND a~sobsl IN s_sobsl
AND a~dismm IN s_dismm AND a~mmsta IN s_mmsta
AND a~maabc IN s_maabc AND b~berid IN s_berid
AND a~matnr IN s_matnr
AND a~ekgrp IN s_ekgrp AND c~matkl IN s_matkl.
ENDIF.
ENDIF.
ENDIF.
*--> Select all materials by product group
IF chk_pro = 'X'.
IF s_berid IS INITIAL.
SELECT a~nrmit
a~wemit
INTO TABLE tb1_md07
FROM pgmi AS a
WHERE a~werks IN s_werks AND a~prgrp IN s_prgrp.
SORT tb1_md07 by werks matnr.
LOOP AT TB1_MD07.
SELECT SINGLE matnr werks
FROM MARC INTO (tb2_md07-matnr, tb2_md07-werks)
WHERE matnr = tb1_md07-matnr AND werks = tb1_md07-werks
AND dispo IN s_dispo AND beskz IN s_beskz
AND sobsl IN s_sobsl AND dismm IN s_dismm
AND mmsta IN s_mmsta AND maabc IN s_maabc
AND ekgrp IN s_ekgrp.
IF SY-SUBRC = 0.
APPEND tb2_md07.
ENDIF.
ENDLOOP.
SORT tb2_md07 by werks matnr.
LOOP AT TB2_MD07.
SELECT SINGLE matnr
FROM MARA INTO (tb_md07-matnr)
WHERE matnr = tb2_md07-matnr
AND matkl IN s_matkl.
tb_md07-werks = tb2_md07-werks.
IF SY-SUBRC = 0.
APPEND tb_md07.
ENDIF.
ENDLOOP.
ELSE.
*--> Select all materials in MRP Areas other than plant MRP Area
IF NOT s_berid IS INITIAL.
SELECT a~nrmit
a~wemit
INTO TABLE tb1_md07
FROM pgmi AS a
WHERE a~werks IN s_werks AND a~prgrp IN s_prgrp.
LOOP AT TB1_MD07.
SELECT SINGLE matnr werks
FROM MARC INTO (tb2_md07-matnr, tb2_md07-werks)
WHERE matnr = tb1_md07-matnr AND werks = tb1_md07-werks
AND dispo IN s_dispo AND beskz IN s_beskz
AND sobsl IN s_sobsl AND dismm IN s_dismm
AND mmsta IN s_mmsta AND maabc IN s_maabc
AND ekgrp IN s_ekgrp.
IF SY-SUBRC = 0.
APPEND tb2_md07.
ENDIF.
ENDLOOP.
SORT tb2_md07 by werks matnr.
LOOP AT TB2_MD07.
SELECT SINGLE matnr
FROM MARA INTO (tb_md07-matnr)
WHERE matnr = tb2_md07-matnr
AND matkl IN s_matkl.
tb_md07-werks = tb2_md07-werks.
IF SY-SUBRC = 0.
APPEND tb_md07.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ENDIF.
*--> Select all materials by production line
IF chk_lin = 'X'.
IF s_berid IS INITIAL.
SELECT a~matnr
b~werks
INTO TABLE tb_md07
FROM mkal AS a
INNER JOIN marc AS b ON a~matnr = b~matnr
AND a~werks = b~werks
INNER JOIN mara AS c ON a~matnr = c~matnr
WHERE b~werks IN s_werks AND a~mdv01 IN s_mdv01
AND a~adatu <= sy-datum AND a~BDATU >= sy-datum
AND b~dispo IN s_dispo AND b~beskz IN s_beskz
AND b~sobsl IN s_sobsl AND b~dismm IN s_dismm
AND b~mmsta IN s_mmsta AND b~maabc IN s_maabc
AND b~ekgrp IN s_ekgrp AND c~matkl IN s_matkl.
ELSE.
*--> Select all materials in MRP Areas other than plant MRP Area
IF NOT s_berid IS INITIAL.
SELECT a~matnr
b~werks
c~berid
INTO TABLE tb_md07
FROM mkal AS a
INNER JOIN marc AS b ON a~matnr = b~matnr
AND a~werks = b~werks
INNER JOIN mdma AS c ON a~matnr = c~matnr
AND a~werks = c~werks
INNER JOIN mara AS d ON a~matnr = d~matnr
WHERE b~werks IN s_werks AND a~mdv01 IN s_mdv01
AND a~adatu <= sy-datum AND a~BDATU >= sy-datum
AND b~dispo IN s_dispo AND b~beskz IN s_beskz
AND b~sobsl IN s_sobsl AND b~dismm IN s_dismm
AND b~mmsta IN s_mmsta AND b~maabc IN s_maabc
AND c~berid IN s_berid
AND b~ekgrp IN s_ekgrp AND d~matkl IN s_matkl.
ENDIF.
ENDIF.
ENDIF.
*--> Fill Table MDMWX as Selection Table for Lists
LOOP at tb_md07.
IF s_berid IS INITIAL.
mdmwx-matnr = tb_md07-matnr.
mdmwx-berid = tb_md07-werks.
mdmwx-bertx = l_bertx.
mdmwx-werks = tb_md07-werks.
APPEND mdmwx.
ELSE.
mdmwx-matnr = tb_md07-matnr.
mdmwx-berid = tb_md07-berid.
mdmwx-bertx = l_bertx.
mdmwx-werks = tb_md07-werks.
APPEND mdmwx.
ENDIF.
ENDLOOP.
*--> Check: Selektion nichtleer
IF mdmwx[] IS INITIAL.
MESSAGE e085(61).
ENDIF.
*--> export of table MDMWX to the memory
EXPORT mdmwx rm61r-werks rm61r-dispo rm61r-dspkz rm61r-berid
TO MEMORY ID memo_id_md07.
*--> Start of dummy-Transaction MDC7, which simulates the entry screen
* of transaction MD07.
CALL TRANSACTION 'MDC7' AND SKIP FIRST SCREEN.
************************************************************************
* END OF MAIN PROGRAM *
************************************************************************
*&---------------------------------------------------------------------*
*& Form read_t000md
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* Has to be called at the beginning of the transaction
* T000md-disfg : flag MRP area functionality is active
*----------------------------------------------------------------------*
FORM read_t000md.
STATICS:
done_flag,
l_t000md LIKE t000md. "Puffer
IF done_flag IS INITIAL.
* check done_flag is initial.
SELECT SINGLE * FROM t000md.
IF sy-subrc <> 0.
CLEAR t000md.
ENDIF.
done_flag = 'X'.
l_t000md = t000md.
ELSE.
t000md = l_t000md.
ENDIF.
ENDFORM. " read_t000md
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
3 | |
3 | |
3 | |
3 | |
2 | |
2 | |
2 | |
2 | |
2 | |
2 |