5 1 1 1 1 1 Rating 100% (1 Vote)
Access this URL (http://abapblog.com/files/nugg/ZAB_EXTMD07.nugg)ZAB_EXTMD07.nugg
Tags: MD07 , MS07 , MDC7 , MSC7
You may noticed that standard transaction MD07 and MS07 offers basic filters on selection-screen which allows user to select materials they are responsible for, the problem comes when in your company users wants to be more precise in filtering or when the responsibility is set not only on a base of MRP controller. Fortunately SAP gives us the possibility to call MD07 and MS07 with our own list of materials using dummy transaction codes MDC7 and MSC7. All you need to do is to prepare a table of type MDMWX, export it to memory 'START_MD07and call dummy t-code. Bellow you can find an example of the report to call MD07/MS07 with own material list where on selection screen you can find for example purchasing group which is not available in standard. You can also find a link to nugg file.

Standard screen:

Screen of the own program:

Example code (also found in nugg file here).

report  zab_md07.


constantsmemo_id_md07(10type c value 'START_MD07'.

datarm61r like rm61r.
data smp_dyntxt type smp_dyntxt.

typesbegin of t_vendor,
  matnr like eina-matnr,
  lifnr like eina-lifnr,
end of t_vendor.

datag_vendor type t_vendor.
datagt_vendor like standard table of g_vendor.
datagt_mdkp like standard table of mdkp.
datag_dtart like mdkp-dtart.

*--> Table of selected materials
databegin of mdmwx occurs 0.
        include structure mdmw.        "material / plant
dataend of mdmwx.

*--> Sicherung  des Dispokopfes
databegin of gt_mdkps occurs 0.
        include structure mdkp.
databerid like rm61r-berid.
dataend of gt_mdkps.

datagt_mdkpdb like standard table of mdkpdb.
datagt_mdma like standard table of mdma.
field-symbols<mdma> type mdma,
               <vend> type t_vendor,
               <mdkpdb> type mdkpdb,
               <mdkp> type mdkp,
               <mdkps> like line of gt_mdkps.

"add buttons on selection screen to be able to go to MD07, MS07
selection-screenfunction key 1,
                  function key 2.

* Selection screen fields
parameters:     p_plscn like rm61r-plscn.
selection-screen begin of line.
parametersp_dbrkz radiobutton group grp2.
selection-screen comment (28for field s_berid.
select-optionss_berid for rm61r-berid.
selection-screen end of line.
selection-screen begin of line.
parametersp_wrkkz radiobutton group grp2.
selection-screen comment (28for field s_werks.
select-optionss_werks for rm61r-werks.
selection-screen end of line.

selection-screen begin of block blk1 with frame title text-bl1.
          p_dspkz radiobutton group grp1,
          p_liekz radiobutton group grp1.
selection-screen end of block blk1.

selection-screen begin of block blk2 with frame title text-bl2.
select-optionss_matnr for marc-matnr,
                s_ekgrp for marc-ekgrp,
                s_dispo for marc-dispo,
                s_dismm for marc-dismm,
                s_lifnr for rm61r-lifnr.

selection-screen end of block blk2.

selection-screen begin of block blk3 with frame title text-bl3.
parameters:   p_dfilt like rm61r-dfilt,
              p_filbz like rm61r-filbz,
              p_ergbz like rm61r-ergbz.
selection-screen end of block blk3.


at selection-screen.
  case sscrfields-ucomm.
    when 'FC01'.
      call transaction 'MD07'.
    when 'FC02'.
      call transaction 'MS07'.
  endcase .

*additional icons on selecetion screen
  clear smp_dyntxt.
  smp_dyntxt-text text-s01.
  smp_dyntxt-icon_id '@79@'.
  smp_dyntxt-icon_text text-s01.
  smp_dyntxt-quickinfo text-s01.
  smp_dyntxt-path 'T'.
  sscrfields-functxt_01 smp_dyntxt.
  clear smp_dyntxt.
  smp_dyntxt-text text-s02.
  smp_dyntxt-icon_id '@79@'.
  smp_dyntxt-icon_text text-s02.
  smp_dyntxt-quickinfo text-s02.
  smp_dyntxt-path 'T'.
  sscrfields-functxt_02 smp_dyntxt.


  if s_werks[] is initial and s_berid[] is initial.
    message s663(61).
*   Enter plant or MRP area
  elseif s_werks[] is initial and p_wrkkz eq 'X'.
    message s664(61).
*   Enter a plant
  elseif s_berid[] is initial and p_dbrkz eq 'X'.
    message s665(61).
*   Enter an MRP area
  if s_lifnr[] is initial and p_liekz eq 'X'.
    message s619(61).
*   Please specity valid vendor
  if s_dispo[] is initial and p_dspkz eq 'X'.
    message s677(61).
*   Please enter an MRP controller

  if p_wrkkz eq 'X'"select materials by plant
    select matnr werks werks as berid from marc
into corresponding fields of table gt_mdma
where werks in s_werks
and   matnr in s_matnr
and   ekgrp in s_ekgrp
and   dispo in s_dispo
and   dismm in s_dismm.
  elseif p_dbrkz eq 'X'"select material by MRP area
    select mdma~matnr mdma~werks mdma~berid
into corresponding fields of table gt_mdma
from mdma
join marc as marc
on  marc~matnr eq mdma~matnr
and marc~werks eq mdma~werks
where mdma~matnr in s_matnr
and mdma~berid in s_berid
and mdma~dismm in s_dismm
and mdma~dispo in s_dispo
and marc~ekgrp in s_ekgrp.

  sort gt_mdma by matnr werks berid.
  delete adjacent duplicates from gt_mdma comparing all fields.

  "check if we want to filter material on a base of inforecords
  " for vendor
  if gt_mdma[] is not initial and s_lifnr[] is not initial.
    "select material for vendors
    select matnr lifnr from eina
into corresponding fields of table gt_vendor
for all entries in gt_mdma
where lifnr in s_lifnr
and   matnr eq gt_mdma-matnr
    and   loekz eq space.

    sort gt_vendor by matnr lifnr.
    delete adjacent duplicates from gt_vendor comparing matnr.

  if p_liekz eq 'X'"filter materials for selected vendors
    loop at gt_mdma assigning <mdma>.
      read table gt_vendor assigning <vend> with key matnr <mdma>-matnr
      binary search.
      if sy-subrc eq 0.
        move <mdma>-matnr to mdmwx-matnr.
        move <mdma>-werks to mdmwx-werks.
        move <mdma>-berid to mdmwx-berid.
        append mdmwxclear mdmwx.
  else"append all materials to MDMWX
    loop at gt_mdma assigning <mdma>.
      move <mdma>-matnr to mdmwx-matnr.
      move <mdma>-werks to mdmwx-werks.
      move <mdma>-berid to mdmwx-berid.
      append mdmwxclear mdmwx.

  move p_plscn to rm61r-plscn.
  move p_dbrkz to rm61r-dbrkz.
  move p_wrkkz to rm61r-wrkkz.
  move p_dspkz to rm61r-dspkz.

  movep_dfilt to rm61r-dfilt,
  p_filbz to rm61r-filbz,
  p_ergbz to rm61r-ergbz.


"check if our table is not empty
  if mdmwx[] is initial.
    message e085(61).

*--> export of table MDMWX to the memory (note 1019303)
  export mdmwx rm61r-plscn rm61r-werks rm61r-dispo
  rm61r-dspkz rm61r-berid
  rm61r-dfilt rm61r-filbz rm61r-ergbz
to memory id memo_id_md07.

*--> Start of dummy-Transaction, which simulates the entry screen
*    of transaction MD07 or MS07.
  if rm61r-plscn is initial.                                "HW 652438
    call transaction 'MDC7' and skip first screen.
    call transaction 'MSC7' and skip first screen.