Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ALV Interactive - Call Transaction

Former Member
0 Likes
1,386

Hi,

I am doing ALV interactive report, i wrote the code but not sure whether it is correct or not and couldnt check as there is no data available. Can any one tell me whether this is correct or not.

In the Form User command, is it necessary to mention s_selfield-tabname = 'I_FINAL' or not. If i need to make any changes please let me know.

When the transaction MD04 is called I want to the pass the matnr and the werks respectively and skip first screen. can anyone please suggest me how write that.

Please see the code below


TYPE-POOLS: slis.

*---------------------------------------------------------------------*
*                            Tables                                   *
*                                                                     *
*---------------------------------------------------------------------*

TABLES : zlhstockoverview,        "Stock Overview Details Table
         zwipstat,                "WIP Status Table
         afpo,                    "Order item
         mara,                    "General Material Data
         marc.                    "Plant Data for Material


*---------------------------------------------------------------------*
*                             Types                                   *
*                                                                     *
*---------------------------------------------------------------------*

* Types declaration for the table ZLHSTOCKOVERVIEW
TYPES: BEGIN OF t_zlhstockoverview,
         werks TYPE werks_d,           "Plant
         matnr TYPE matnr,             "Material Number
         dispo TYPE dispo,             "MRP controller
         dat00 TYPE dat00,             "Receipt/Requirements date
         extra TYPE extra,             "MRP element data
         umdat TYPE umdat,             "Rescheduling date
         ornum TYPE aufnr,
     lotnumber TYPE zmes_lot,
       END OF t_zlhstockoverview.

* Types declaration for the table ZWIPSTAT.
TYPES: BEGIN OF t_zwipstat,
        lotnum TYPE zmes_lot,          "MES Lot number
      ordernum TYPE aufnr,             "Order Number
     opr_descp TYPE zoprdescp,         "Operation Description
       END OF t_zwipstat.

* Types declaration for the table ZWIPSTAT1.
TYPES: BEGIN OF t_zwipstat1,
        lotnum TYPE zmes_lot,          "MES Lot number
      ordernum TYPE aufnr,             "Order Number
     opr_descp TYPE zoprdescp,         "Operation Description
       END OF t_zwipstat1.


* Types declaration for the table AFPO.
TYPES: BEGIN OF t_afpo,
         aufnr TYPE aufnr,             "Order Number
         dauat TYPE aufart,            "Order Type
         psmng TYPE co_psmng,          "Order item quantity
       END OF t_afpo.


* Types declaration for the table AFPO.
TYPES: BEGIN OF t_mara,
         matnr TYPE matnr,              "Material Number
         normt TYPE normt,              "Industry Standard Description
       END OF t_mara.

* Types declaration for the table FINAL1
TYPES: BEGIN OF t_final1,
       ordernum TYPE aufnr,
          dauat TYPE afpo-dauat,
          matnr TYPE zlhstockoverview-matnr,
          normt TYPE mara-normt,
         lotnum TYPE zwipstat-lotnum,
          psmng TYPE afpo-psmng,
          umdat TYPE zlhstockoverview-umdat,
          dat00 TYPE zlhstockoverview-dat00,
          ornum TYPE aufnr,
      lotnumber TYPE zmes_lot,

        END OF t_final1.

* Types declaration for the table FINAL
TYPES: BEGIN OF t_final,
          ordernum TYPE aufnr,
          dauat TYPE afpo-dauat,
          matnr TYPE zlhstockoverview-matnr,
          normt TYPE mara-normt,
         lotnum TYPE zwipstat-lotnum,
          psmng TYPE afpo-psmng,
          umdat TYPE zlhstockoverview-umdat,
          dat00 TYPE zlhstockoverview-dat00,
          ornum TYPE aufnr,
      lotnumber TYPE zmes_lot,

        END OF t_final.

*---------------------------------------------------------------------*
*                       Internal tables                               *
*                                                                     *
*---------------------------------------------------------------------*


DATA: i_zlhstockoverview TYPE STANDARD TABLE OF t_zlhstockoverview
      INITIAL SIZE 0,
      i_zwipstat TYPE STANDARD TABLE OF t_zwipstat INITIAL SIZE 0,
      i_zwipstat1 TYPE STANDARD TABLE OF t_zwipstat1 INITIAL SIZE 0,

      i_afpo TYPE STANDARD TABLE OF t_afpo INITIAL SIZE 0,
      i_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
      i_final1 TYPE STANDARD TABLE OF t_final1 INITIAL SIZE 0,
      i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0.


* Structurs declaration
DATA: is_zlhstockoverview TYPE t_zlhstockoverview,
      is_zwipstat TYPE t_zwipstat,
      is_zwipstat1 TYPE t_zwipstat1,
      is_afpo TYPE t_afpo,
      is_mara TYPE t_mara,
      is_final1 TYPE t_final1,
      is_final TYPE t_final.

*----------------------------------------------------------------------*
*                           ALV VARIABLE'S                             *
*----------------------------------------------------------------------*

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
       is_layout TYPE slis_layout_alv,
       i_event  TYPE slis_t_event,          "TO DEFINE THE EVENT
                                            "   CATALOG FOR MARA
      t_event  TYPE slis_alv_event.         "THIS IS A STRUCTURE TO
                                            "    HANDLE DIFFERENT EVENTS




* Variable declaration
DATA : v_extra TYPE zlhstockoverview-extra,
       v_route(36) TYPE c,
       v_oprnum(4) TYPE C,
       v_index TYPE sy-tabix.

*Constant declaration.
DATA: c_delb0 TYPE delb0 VALUE 'PrdOrd'.


*---------------------------------------------------------------------*
*                       Selection-screen                              *
*                                                                     *
*---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .

PARAMETERS: p_werks TYPE marc-werks. "default 'TQT1'.     "PLANT

SELECT-OPTIONS: s_matnr FOR mara-matnr,             "MATERIAL Number
                s_aufnr FOR afpo-aufnr,             "Production Order No
                s_oprdes FOR v_route,               "Route - Operation
                                                    "        Description
                s_opnum FOR v_oprnum.               "Operation Number

PARAMETERS: p_date  TYPE mdez-dat00.                "Requirement Date

SELECT-OPTIONS: s_dispo FOR marc-dispo,             "MRP Controller
                s_normt FOR mara-normt.             "EG Number

SELECTION-SCREEN END OF BLOCK b1.


*---------------------------------------------------------------------*
* Start-of-selection                                                  *
*                                                                     *
*---------------------------------------------------------------------*

START-OF-SELECTION.


SELECT werks
       matnr
       dispo
       dat00
       extra
       umdat
       INTO TABLE i_zlhstockoverview
       FROM zlhstockoverview
       WHERE delb0 = c_delb0
         AND werks = p_werks
         AND umdat = p_date
          OR dat00 = p_date
         AND matnr IN s_matnr
         AND dispo IN s_dispo.


LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.

    MOVE is_zlhstockoverview-extra TO v_extra.
    SPLIT v_extra AT '/' INTO is_zlhstockoverview-lotnumber
                              is_zlhstockoverview-ornum.

    APPEND is_zlhstockoverview TO i_zlhstockoverview.

ENDLOOP.


if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT lotnum
           ordernum
           opr_descp
           FROM zwipstat
           INTO TABLE  i_zwipstat1
           for all entries IN i_zlhstockoverview
           WHERE werks = i_zlhstockoverview-werks
             AND ordernum = i_zlhstockoverview-ORNUM.
ENDIF.

if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT aufnr
           dauat
           psmng
           FROM afpo
           INTO TABLE i_afpo
           FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
           WHERE aufnr = i_zlhstockoverview-ornum
           AND aufnr IN s_aufnr.
ENDIF.

if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT matnr
           normt
           FROM mara
           INTO TABLE i_mara
           FOR ALL ENTRIES IN i_zlhstockoverview
           WHERE matnr = i_zlhstockoverview-matnr
             AND matnr IN s_matnr.

ENDIF.

LOOP AT i_zwipstat1 INTO is_zwipstat1.


  v_index = sy-tabix.

    IF NOT is_zwipstat1-opr_descp+0(4) IN s_opnum AND
       NOT is_zwipstat1-opr_descp+4(36) IN s_oprdes.

       DELETE i_zwipstat1 INDEX v_index.
       else.
       move I_ZWIPSTAT1 to I_ZWIPSTAT.

    ENDIF.


ENDLOOP.

LOOP AT i_zwipstat INTO is_zwipstat.

    READ TABLE i_afpo INTO is_afpo WITH KEY
                aufnr = is_zwipstat-lotnum.

      MOVE is_afpo-dauat TO is_final1-dauat.
      MOVE is_afpo-psmng TO is_final1-psmng.

      MOVE is_zwipstat-lotnum TO is_final1-lotnum.
      MOVE is_zwipstat-ordernum TO is_final1-ordernum.

  APPEND is_final1 TO i_final1.

ENDLOOP.


LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.

    READ TABLE i_final1 INTO is_final1 WITH KEY
         lotnum = is_zlhstockoverview-lotnumber.

      MOVE is_zlhstockoverview-matnr TO is_final1-matnr.
      MOVE is_zlhstockoverview-umdat TO is_final1-umdat.
      MOVE is_zlhstockoverview-dat00 TO is_final1-dat00.
      MOVE is_zlhstockoverview-ORNUM TO IS_FINAL1-ORNUM.
      MOVE is_zlhstockoverview-LOTNUMBER TO IS_FINAL1-LOTNUMBER.

    APPEND is_final1 TO i_final1.

ENDLOOP.



LOOP AT i_mara INTO is_mara.


    READ TABLE i_final1 INTO is_final1 WITH KEY
                          matnr = is_mara-matnr.

      MOVE is_final1-ordernum TO is_final-ordernum.
      MOVE is_final1-dauat TO is_final-dauat.
      MOVE is_final1-matnr TO is_final-matnr.
      MOVE is_final1-lotnum TO is_final-lotnum.
      MOVE is_final1-psmng TO is_final-psmng.
      MOVE is_final1-umdat TO is_final-umdat.
      MOVE is_final1-dat00 TO is_final-dat00.
      MOVE is_FINAL1-ORNUM TO IS_FINAL-ORNUM.
      MOVE is_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.


      MOVE is_mara-normt TO is_final-normt.

    APPEND is_final TO i_final.

ENDLOOP.


* Sub routine to display the ALV
PERFORM output_alv.

PERFORM ZF_EVENTCAT USING I_EVENT.

*&---------------------------------------------------------------------

*&      Form  OUTPUT_ALV
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------

FORM output_alv .


    IF it_fieldcat IS INITIAL.
    PERFORM field_fill USING it_fieldcat.
  ENDIF.

* Sub routine to set the layout
  PERFORM set_layout USING is_layout.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = sy-repid
     is_layout                         = is_layout
     it_fieldcat                       = it_fieldcat
   TABLES
      t_outtab                          = i_final
   EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
  ENDIF.

ENDFORM.                    " OUTPUT_ALV

*&---------------------------------------------------------------------

*&      Form  FIELD_FILL
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*      -->P_IT_FIELDCAT  text
*----------------------------------------------------------------------

FORM field_fill USING pt_fieldcat TYPE slis_t_fieldcat_alv.

DATA : ls_fieldcat TYPE slis_fieldcat_alv,
         pos TYPE i VALUE 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'ORDERNUM'.
  ls_fieldcat-ref_fieldname = 'ORDERNUM'.
  ls_fieldcat-ref_tabname   = 'ZWIPSTAT'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'DAUAT'.
  ls_fieldcat-ref_fieldname = 'DAUAT'.
  ls_fieldcat-ref_tabname   = 'AFPO'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'MATNR'.
  ls_fieldcat-ref_fieldname = 'MATNR'.
  ls_fieldcat-ref_tabname   = 'MARA'.
  lS_fieldcat-hotspot   =  'X'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'NORMT'.
  ls_fieldcat-ref_fieldname = 'NORMT'.
  ls_fieldcat-ref_tabname   = 'MARA'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'LOTNUM'.
  ls_fieldcat-ref_fieldname = 'LOTNUM'.
  ls_fieldcat-ref_tabname   = 'ZWIPSTAT'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'PSMNG'.
  ls_fieldcat-ref_fieldname = 'PSMNG'.
  ls_fieldcat-ref_tabname   = 'AFPO'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'UMDAT'.
  ls_fieldcat-ref_fieldname = 'UMDAT'.
  ls_fieldcat-ref_tabname   = 'ZLHSTOCKOVERVIEW'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'DAT00'.
  ls_fieldcat-ref_fieldname = 'DAT00'.
  ls_fieldcat-ref_tabname   = 'ZLHSTOCKOVERVIEW'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'ORNUM'.
  ls_fieldcat-seltext_l       = text-002.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'LOTNUMBER'.
  ls_fieldcat-seltext_l       = text-003.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.


ENDFORM.                    " FIELD_FILL


*&---------------------------------------------------------------------

*&      Form  SET_LAYOUT
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*      -->P_IS_LAYOUT  text
*----------------------------------------------------------------------

FORM set_layout USING ls_layout TYPE slis_layout_alv.

CLEAR ls_layout.
  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.

ENDFORM.                    " SET_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  ZF_EVENTCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_I_EVENT  text
*----------------------------------------------------------------------*
form ZF_EVENTCAT  using    p_i_event TYPE SLIS_T_EVENT.

CALL function 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = P_I_EVENT
 EXCEPTIONS
   LIST_TYPE_WRONG       = 1
   OTHERS                = 2
          .
IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CLEAR T_EVENT.


READ TABLE P_I_EVENT  WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
  IF SY-SUBRC = 0.
    MOVE 'USER_COMMAND' TO T_EVENT-FORM.
    APPEND T_EVENT TO P_I_EVENT.
  ENDIF.

endform.                    " ZF_EVENTCAT


*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*


FORM user_command USING s_ucomm LIKE sy-ucomm s_selfield TYPE
slis_selfield.


    CASE s_ucomm.

        WHEN '&IC1'.
          IF s_selfield-fieldname = 'MATNR' AND
             s_selfield-tabname = 'I_FINAL'.

            CALL TRANSACTION 'MD04'.

        endif.

    ENDCASE.


CLEAR S_UCOMM.
ENDFORM.

Hi,

I am doing ALV interactive report, i wrote the code but not sure whether it is correct or not and couldnt check as there is no data available. Can any one tell me whether this is correct or not.

In the Form User command, is it necessary to mention s_selfield-tabname = 'I_FINAL' or not. If i need to make any changes please let me know.

When the transaction MD04 is called I want to the pass the matnr and the werks respectively and skip first screen. can anyone please suggest me how write that.

Please see the code below


TYPE-POOLS: slis.

*---------------------------------------------------------------------*
*                            Tables                                   *
*                                                                     *
*---------------------------------------------------------------------*

TABLES : zlhstockoverview,        "Stock Overview Details Table
         zwipstat,                "WIP Status Table
         afpo,                    "Order item
         mara,                    "General Material Data
         marc.                    "Plant Data for Material


*---------------------------------------------------------------------*
*                             Types                                   *
*                                                                     *
*---------------------------------------------------------------------*

* Types declaration for the table ZLHSTOCKOVERVIEW
TYPES: BEGIN OF t_zlhstockoverview,
         werks TYPE werks_d,           "Plant
         matnr TYPE matnr,             "Material Number
         dispo TYPE dispo,             "MRP controller
         dat00 TYPE dat00,             "Receipt/Requirements date
         extra TYPE extra,             "MRP element data
         umdat TYPE umdat,             "Rescheduling date
         ornum TYPE aufnr,
     lotnumber TYPE zmes_lot,
       END OF t_zlhstockoverview.

* Types declaration for the table ZWIPSTAT.
TYPES: BEGIN OF t_zwipstat,
        lotnum TYPE zmes_lot,          "MES Lot number
      ordernum TYPE aufnr,             "Order Number
     opr_descp TYPE zoprdescp,         "Operation Description
       END OF t_zwipstat.

* Types declaration for the table ZWIPSTAT1.
TYPES: BEGIN OF t_zwipstat1,
        lotnum TYPE zmes_lot,          "MES Lot number
      ordernum TYPE aufnr,             "Order Number
     opr_descp TYPE zoprdescp,         "Operation Description
       END OF t_zwipstat1.


* Types declaration for the table AFPO.
TYPES: BEGIN OF t_afpo,
         aufnr TYPE aufnr,             "Order Number
         dauat TYPE aufart,            "Order Type
         psmng TYPE co_psmng,          "Order item quantity
       END OF t_afpo.


* Types declaration for the table AFPO.
TYPES: BEGIN OF t_mara,
         matnr TYPE matnr,              "Material Number
         normt TYPE normt,              "Industry Standard Description
       END OF t_mara.

* Types declaration for the table FINAL1
TYPES: BEGIN OF t_final1,
       ordernum TYPE aufnr,
          dauat TYPE afpo-dauat,
          matnr TYPE zlhstockoverview-matnr,
          normt TYPE mara-normt,
         lotnum TYPE zwipstat-lotnum,
          psmng TYPE afpo-psmng,
          umdat TYPE zlhstockoverview-umdat,
          dat00 TYPE zlhstockoverview-dat00,
          ornum TYPE aufnr,
      lotnumber TYPE zmes_lot,

        END OF t_final1.

* Types declaration for the table FINAL
TYPES: BEGIN OF t_final,
          ordernum TYPE aufnr,
          dauat TYPE afpo-dauat,
          matnr TYPE zlhstockoverview-matnr,
          normt TYPE mara-normt,
         lotnum TYPE zwipstat-lotnum,
          psmng TYPE afpo-psmng,
          umdat TYPE zlhstockoverview-umdat,
          dat00 TYPE zlhstockoverview-dat00,
          ornum TYPE aufnr,
      lotnumber TYPE zmes_lot,

        END OF t_final.

*---------------------------------------------------------------------*
*                       Internal tables                               *
*                                                                     *
*---------------------------------------------------------------------*


DATA: i_zlhstockoverview TYPE STANDARD TABLE OF t_zlhstockoverview
      INITIAL SIZE 0,
      i_zwipstat TYPE STANDARD TABLE OF t_zwipstat INITIAL SIZE 0,
      i_zwipstat1 TYPE STANDARD TABLE OF t_zwipstat1 INITIAL SIZE 0,

      i_afpo TYPE STANDARD TABLE OF t_afpo INITIAL SIZE 0,
      i_mara TYPE STANDARD TABLE OF t_mara INITIAL SIZE 0,
      i_final1 TYPE STANDARD TABLE OF t_final1 INITIAL SIZE 0,
      i_final TYPE STANDARD TABLE OF t_final INITIAL SIZE 0.


* Structurs declaration
DATA: is_zlhstockoverview TYPE t_zlhstockoverview,
      is_zwipstat TYPE t_zwipstat,
      is_zwipstat1 TYPE t_zwipstat1,
      is_afpo TYPE t_afpo,
      is_mara TYPE t_mara,
      is_final1 TYPE t_final1,
      is_final TYPE t_final.

*----------------------------------------------------------------------*
*                           ALV VARIABLE'S                             *
*----------------------------------------------------------------------*

DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
       is_layout TYPE slis_layout_alv,
       i_event  TYPE slis_t_event,          "TO DEFINE THE EVENT
                                            "   CATALOG FOR MARA
      t_event  TYPE slis_alv_event.         "THIS IS A STRUCTURE TO
                                            "    HANDLE DIFFERENT EVENTS




* Variable declaration
DATA : v_extra TYPE zlhstockoverview-extra,
       v_route(36) TYPE c,
       v_oprnum(4) TYPE C,
       v_index TYPE sy-tabix.

*Constant declaration.
DATA: c_delb0 TYPE delb0 VALUE 'PrdOrd'.


*---------------------------------------------------------------------*
*                       Selection-screen                              *
*                                                                     *
*---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .

PARAMETERS: p_werks TYPE marc-werks. "default 'TQT1'.     "PLANT

SELECT-OPTIONS: s_matnr FOR mara-matnr,             "MATERIAL Number
                s_aufnr FOR afpo-aufnr,             "Production Order No
                s_oprdes FOR v_route,               "Route - Operation
                                                    "        Description
                s_opnum FOR v_oprnum.               "Operation Number

PARAMETERS: p_date  TYPE mdez-dat00.                "Requirement Date

SELECT-OPTIONS: s_dispo FOR marc-dispo,             "MRP Controller
                s_normt FOR mara-normt.             "EG Number

SELECTION-SCREEN END OF BLOCK b1.


*---------------------------------------------------------------------*
* Start-of-selection                                                  *
*                                                                     *
*---------------------------------------------------------------------*

START-OF-SELECTION.


SELECT werks
       matnr
       dispo
       dat00
       extra
       umdat
       INTO TABLE i_zlhstockoverview
       FROM zlhstockoverview
       WHERE delb0 = c_delb0
         AND werks = p_werks
         AND umdat = p_date
          OR dat00 = p_date
         AND matnr IN s_matnr
         AND dispo IN s_dispo.


LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.

    MOVE is_zlhstockoverview-extra TO v_extra.
    SPLIT v_extra AT '/' INTO is_zlhstockoverview-lotnumber
                              is_zlhstockoverview-ornum.

    APPEND is_zlhstockoverview TO i_zlhstockoverview.

ENDLOOP.


if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT lotnum
           ordernum
           opr_descp
           FROM zwipstat
           INTO TABLE  i_zwipstat1
           for all entries IN i_zlhstockoverview
           WHERE werks = i_zlhstockoverview-werks
             AND ordernum = i_zlhstockoverview-ORNUM.
ENDIF.

if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT aufnr
           dauat
           psmng
           FROM afpo
           INTO TABLE i_afpo
           FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
           WHERE aufnr = i_zlhstockoverview-ornum
           AND aufnr IN s_aufnr.
ENDIF.

if not I_ZLHSTOCKOVERVIEW is initial.

    SELECT matnr
           normt
           FROM mara
           INTO TABLE i_mara
           FOR ALL ENTRIES IN i_zlhstockoverview
           WHERE matnr = i_zlhstockoverview-matnr
             AND matnr IN s_matnr.

ENDIF.

LOOP AT i_zwipstat1 INTO is_zwipstat1.


  v_index = sy-tabix.

    IF NOT is_zwipstat1-opr_descp+0(4) IN s_opnum AND
       NOT is_zwipstat1-opr_descp+4(36) IN s_oprdes.

       DELETE i_zwipstat1 INDEX v_index.
       else.
       move I_ZWIPSTAT1 to I_ZWIPSTAT.

    ENDIF.


ENDLOOP.

LOOP AT i_zwipstat INTO is_zwipstat.

    READ TABLE i_afpo INTO is_afpo WITH KEY
                aufnr = is_zwipstat-lotnum.

      MOVE is_afpo-dauat TO is_final1-dauat.
      MOVE is_afpo-psmng TO is_final1-psmng.

      MOVE is_zwipstat-lotnum TO is_final1-lotnum.
      MOVE is_zwipstat-ordernum TO is_final1-ordernum.

  APPEND is_final1 TO i_final1.

ENDLOOP.


LOOP AT i_zlhstockoverview INTO is_zlhstockoverview.

    READ TABLE i_final1 INTO is_final1 WITH KEY
         lotnum = is_zlhstockoverview-lotnumber.

      MOVE is_zlhstockoverview-matnr TO is_final1-matnr.
      MOVE is_zlhstockoverview-umdat TO is_final1-umdat.
      MOVE is_zlhstockoverview-dat00 TO is_final1-dat00.
      MOVE is_zlhstockoverview-ORNUM TO IS_FINAL1-ORNUM.
      MOVE is_zlhstockoverview-LOTNUMBER TO IS_FINAL1-LOTNUMBER.

    APPEND is_final1 TO i_final1.

ENDLOOP.



LOOP AT i_mara INTO is_mara.


    READ TABLE i_final1 INTO is_final1 WITH KEY
                          matnr = is_mara-matnr.

      MOVE is_final1-ordernum TO is_final-ordernum.
      MOVE is_final1-dauat TO is_final-dauat.
      MOVE is_final1-matnr TO is_final-matnr.
      MOVE is_final1-lotnum TO is_final-lotnum.
      MOVE is_final1-psmng TO is_final-psmng.
      MOVE is_final1-umdat TO is_final-umdat.
      MOVE is_final1-dat00 TO is_final-dat00.
      MOVE is_FINAL1-ORNUM TO IS_FINAL-ORNUM.
      MOVE is_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.


      MOVE is_mara-normt TO is_final-normt.

    APPEND is_final TO i_final.

ENDLOOP.


* Sub routine to display the ALV
PERFORM output_alv.

PERFORM ZF_EVENTCAT USING I_EVENT.

*&---------------------------------------------------------------------

*&      Form  OUTPUT_ALV
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------

FORM output_alv .


    IF it_fieldcat IS INITIAL.
    PERFORM field_fill USING it_fieldcat.
  ENDIF.

* Sub routine to set the layout
  PERFORM set_layout USING is_layout.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = sy-repid
     is_layout                         = is_layout
     it_fieldcat                       = it_fieldcat
   TABLES
      t_outtab                          = i_final
   EXCEPTIONS
     program_error                     = 1
     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
  ENDIF.

ENDFORM.                    " OUTPUT_ALV

*&---------------------------------------------------------------------

*&      Form  FIELD_FILL
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*      -->P_IT_FIELDCAT  text
*----------------------------------------------------------------------

FORM field_fill USING pt_fieldcat TYPE slis_t_fieldcat_alv.

DATA : ls_fieldcat TYPE slis_fieldcat_alv,
         pos TYPE i VALUE 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'ORDERNUM'.
  ls_fieldcat-ref_fieldname = 'ORDERNUM'.
  ls_fieldcat-ref_tabname   = 'ZWIPSTAT'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'DAUAT'.
  ls_fieldcat-ref_fieldname = 'DAUAT'.
  ls_fieldcat-ref_tabname   = 'AFPO'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'MATNR'.
  ls_fieldcat-ref_fieldname = 'MATNR'.
  ls_fieldcat-ref_tabname   = 'MARA'.
  lS_fieldcat-hotspot   =  'X'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'NORMT'.
  ls_fieldcat-ref_fieldname = 'NORMT'.
  ls_fieldcat-ref_tabname   = 'MARA'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'LOTNUM'.
  ls_fieldcat-ref_fieldname = 'LOTNUM'.
  ls_fieldcat-ref_tabname   = 'ZWIPSTAT'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'PSMNG'.
  ls_fieldcat-ref_fieldname = 'PSMNG'.
  ls_fieldcat-ref_tabname   = 'AFPO'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'UMDAT'.
  ls_fieldcat-ref_fieldname = 'UMDAT'.
  ls_fieldcat-ref_tabname   = 'ZLHSTOCKOVERVIEW'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'DAT00'.
  ls_fieldcat-ref_fieldname = 'DAT00'.
  ls_fieldcat-ref_tabname   = 'ZLHSTOCKOVERVIEW'.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'ORNUM'.
  ls_fieldcat-seltext_l       = text-002.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.

  ls_fieldcat-col_pos       = pos.
  ls_fieldcat-fieldname     = 'LOTNUMBER'.
  ls_fieldcat-seltext_l       = text-003.
  APPEND ls_fieldcat TO pt_fieldcat.
  CLEAR ls_fieldcat.
  pos = pos + 1.


ENDFORM.                    " FIELD_FILL


*&---------------------------------------------------------------------

*&      Form  SET_LAYOUT
*&---------------------------------------------------------------------

*       text
*----------------------------------------------------------------------

*      -->P_IS_LAYOUT  text
*----------------------------------------------------------------------

FORM set_layout USING ls_layout TYPE slis_layout_alv.

CLEAR ls_layout.
  ls_layout-zebra = 'X'.
  ls_layout-colwidth_optimize = 'X'.

ENDFORM.                    " SET_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  ZF_EVENTCAT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_I_EVENT  text
*----------------------------------------------------------------------*
form ZF_EVENTCAT  using    p_i_event TYPE SLIS_T_EVENT.

CALL function 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = P_I_EVENT
 EXCEPTIONS
   LIST_TYPE_WRONG       = 1
   OTHERS                = 2
          .
IF sy-subrc <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CLEAR T_EVENT.


READ TABLE P_I_EVENT  WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
  IF SY-SUBRC = 0.
    MOVE 'USER_COMMAND' TO T_EVENT-FORM.
    APPEND T_EVENT TO P_I_EVENT.
  ENDIF.

endform.                    " ZF_EVENTCAT


*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*


FORM user_command USING s_ucomm LIKE sy-ucomm s_selfield TYPE
slis_selfield.


    CASE s_ucomm.

        WHEN '&IC1'.
          IF s_selfield-fieldname = 'MATNR' AND
             s_selfield-tabname = 'I_FINAL'.

            CALL TRANSACTION 'MD04'.

        endif.

    ENDCASE.


CLEAR S_UCOMM.
ENDFORM.

7 REPLIES 7
Read only

Former Member
1,087
 CASE s_ucomm.     
   WHEN '&IC1'.    
      IF s_selfield-fieldname = 'MATNR'
AND    s_selfield-tabname = 'I_FINAL'.  
      SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
      CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
 
      endif.
    ENDCASE.

regards

vijay

Read only

0 Likes
1,087

Hi you need to pass this also along with MAT.

SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.

regards

vijay

Read only

Former Member
0 Likes
1,087

Hi

IF s_selfield-fieldname = 'MATNR' AND

s_selfield-tabname = 'I_FINAL'.

READ TABLE I_FINAL INDEX s_selfield-TABIX.

SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.

SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.

CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN. endif.

mAX

Read only

Former Member
0 Likes
1,087

Hi Hema,

I wonder if your user command event would be working as you've registered the events after calling the ALV GRID DISPLAY and you've not passed the events table to it.

One more suggestion. Never pass SY-REPID to ALV FM. store it in a variable and then pass it. Thats the convention which should be used. Plz. call the subroutine ZF_EVENTCAT before OUTPUT_ALV and within the 'REUSE_ALV_GRID_DISPLAY', pass one more internal table

IT_EVENTS = T_EVENT

Read only

0 Likes
1,087

Hi Satyadev,

I have made the changes to the code accordingly, can you pls have and let me know if i need to change anything else.

Now the problem is I am passing the MATERIAL NUMBER and Werks.

SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.

SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.

but I_FINAL is internal table without header line.


TYPE-POOLS: SLIS.

*---------------------------------------------------------------------*
*                            TABLES                                   *
*                                                                     *
*---------------------------------------------------------------------*

TABLES : ZLHSTOCKOVERVIEW,        "STOCK OVERVIEW DETAILS TABLE
         ZWIPSTAT,                "WIP STATUS TABLE
         AFPO,                    "ORDER ITEM
         MARA,                    "GENERAL MATERIAL DATA
         MARC.                    "PLANT DATA FOR MATERIAL


*---------------------------------------------------------------------*
*                             TYPES                                   *
*                                                                     *
*---------------------------------------------------------------------*

* TYPES DECLARATION FOR THE TABLE ZLHSTOCKOVERVIEW
TYPES: BEGIN OF T_ZLHSTOCKOVERVIEW,
         WERKS TYPE WERKS_D,           "PLANT
         MATNR TYPE MATNR,             "MATERIAL NUMBER
         DISPO TYPE DISPO,             "MRP CONTROLLER
         DAT00 TYPE DAT00,             "RECEIPT/REQUIREMENTS DATE
         EXTRA TYPE EXTRA,             "MRP ELEMENT DATA
         UMDAT TYPE UMDAT,             "RESCHEDULING DATE
         ORNUM TYPE AUFNR,
     LOTNUMBER TYPE ZMES_LOT,
       END OF T_ZLHSTOCKOVERVIEW.

* TYPES DECLARATION FOR THE TABLE ZWIPSTAT.
TYPES: BEGIN OF T_ZWIPSTAT,
        LOTNUM TYPE ZMES_LOT,          "MES LOT NUMBER
      ORDERNUM TYPE AUFNR,             "ORDER NUMBER
     OPR_DESCP TYPE ZOPRDESCP,         "OPERATION DESCRIPTION
       END OF T_ZWIPSTAT.

* TYPES DECLARATION FOR THE TABLE ZWIPSTAT1.
TYPES: BEGIN OF T_ZWIPSTAT1,
        LOTNUM TYPE ZMES_LOT,          "MES LOT NUMBER
      ORDERNUM TYPE AUFNR,             "ORDER NUMBER
     OPR_DESCP TYPE ZOPRDESCP,         "OPERATION DESCRIPTION
       END OF T_ZWIPSTAT1.


* TYPES DECLARATION FOR THE TABLE AFPO.
TYPES: BEGIN OF T_AFPO,
         AUFNR TYPE AUFNR,             "ORDER NUMBER
         DAUAT TYPE AUFART,            "ORDER TYPE
         PSMNG TYPE CO_PSMNG,          "ORDER ITEM QUANTITY
       END OF T_AFPO.


* TYPES DECLARATION FOR THE TABLE AFPO.
TYPES: BEGIN OF T_MARA,
         MATNR TYPE MATNR,              "MATERIAL NUMBER
         NORMT TYPE NORMT,              "INDUSTRY STANDARD DESCRIPTION
       END OF T_MARA.

* TYPES DECLARATION FOR THE TABLE FINAL1
TYPES: BEGIN OF T_FINAL1,
       ORDERNUM TYPE AUFNR,
          DAUAT TYPE AFPO-DAUAT,
          MATNR TYPE ZLHSTOCKOVERVIEW-MATNR,
          NORMT TYPE MARA-NORMT,
         LOTNUM TYPE ZWIPSTAT-LOTNUM,
          PSMNG TYPE AFPO-PSMNG,
          UMDAT TYPE ZLHSTOCKOVERVIEW-UMDAT,
          DAT00 TYPE ZLHSTOCKOVERVIEW-DAT00,
          ORNUM TYPE AUFNR,
      LOTNUMBER TYPE ZMES_LOT,

        END OF T_FINAL1.

* TYPES DECLARATION FOR THE TABLE FINAL
TYPES: BEGIN OF T_FINAL,
          ORDERNUM TYPE AUFNR,
          DAUAT TYPE AFPO-DAUAT,
          MATNR TYPE ZLHSTOCKOVERVIEW-MATNR,
          NORMT TYPE MARA-NORMT,
         LOTNUM TYPE ZWIPSTAT-LOTNUM,
          PSMNG TYPE AFPO-PSMNG,
          UMDAT TYPE ZLHSTOCKOVERVIEW-UMDAT,
          DAT00 TYPE ZLHSTOCKOVERVIEW-DAT00,
          ORNUM TYPE AUFNR,
      LOTNUMBER TYPE ZMES_LOT,

        END OF T_FINAL.

*---------------------------------------------------------------------*
*                       INTERNAL TABLES                               *
*                                                                     *
*---------------------------------------------------------------------*


DATA: I_ZLHSTOCKOVERVIEW TYPE STANDARD TABLE OF T_ZLHSTOCKOVERVIEW
      INITIAL SIZE 0,
      I_ZWIPSTAT TYPE STANDARD TABLE OF T_ZWIPSTAT INITIAL SIZE 0,
      I_ZWIPSTAT1 TYPE STANDARD TABLE OF T_ZWIPSTAT1 INITIAL SIZE 0,

      I_AFPO TYPE STANDARD TABLE OF T_AFPO INITIAL SIZE 0,
      I_MARA TYPE STANDARD TABLE OF T_MARA INITIAL SIZE 0,
      I_FINAL1 TYPE STANDARD TABLE OF T_FINAL1 INITIAL SIZE 0,
      I_FINAL TYPE STANDARD TABLE OF T_FINAL INITIAL SIZE 0.


* STRUCTURS DECLARATION
DATA: IS_ZLHSTOCKOVERVIEW TYPE T_ZLHSTOCKOVERVIEW,
      IS_ZWIPSTAT TYPE T_ZWIPSTAT,
      IS_ZWIPSTAT1 TYPE T_ZWIPSTAT1,
      IS_AFPO TYPE T_AFPO,
      IS_MARA TYPE T_MARA,
      IS_FINAL1 TYPE T_FINAL1,
      IS_FINAL TYPE T_FINAL.

*----------------------------------------------------------------------*
*                           ALV VARIABLE'S                             *
*----------------------------------------------------------------------*

DATA : IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
       IS_LAYOUT TYPE SLIS_LAYOUT_ALV,
       I_EVENT  TYPE SLIS_T_EVENT,          "TO DEFINE THE EVENT
                                            "   CATALOG FOR MARA
       T_EVENT  TYPE SLIS_ALV_EVENT,         "THIS IS A STRUCTURE TO
                                            "    HANDLE DIFFERENT EVENTS
       V_PRG    LIKE SY-REPID.               "WILL HOLD THE PROGRAM NAME


* VARIABLE DECLARATION
DATA : V_EXTRA TYPE ZLHSTOCKOVERVIEW-EXTRA,
       V_ROUTE(36) TYPE C,
       V_OPRNUM(4) TYPE C,
       V_INDEX TYPE SY-TABIX.

*CONSTANT DECLARATION.
DATA: C_DELB0 TYPE DELB0 VALUE 'PRDORD'.


*---------------------------------------------------------------------*
*                       SELECTION-SCREEN                              *
*                                                                     *
*---------------------------------------------------------------------*

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 .

PARAMETERS: P_WERKS TYPE MARC-WERKS. "DEFAULT 'TQT1'.     "PLANT

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR,             "MATERIAL NUMBER
                S_AUFNR FOR AFPO-AUFNR,             "PRODUCTION ORDER NO
                S_OPRDES FOR V_ROUTE,               "ROUTE - OPERATION
                                                    "        DESCRIPTION
                S_OPNUM FOR V_OPRNUM.               "OPERATION NUMBER

PARAMETERS: P_DATE  TYPE MDEZ-DAT00.                "REQUIREMENT DATE

SELECT-OPTIONS: S_DISPO FOR MARC-DISPO,             "MRP CONTROLLER
                S_NORMT FOR MARA-NORMT.             "EG NUMBER

SELECTION-SCREEN END OF BLOCK B1.


*---------------------------------------------------------------------*
* START-OF-SELECTION                                                  *
*                                                                     *
*---------------------------------------------------------------------*

START-OF-SELECTION.


SELECT WERKS
       MATNR
       DISPO
       DAT00
       EXTRA
       UMDAT
       INTO TABLE I_ZLHSTOCKOVERVIEW
       FROM ZLHSTOCKOVERVIEW
       WHERE DELB0 = C_DELB0
         AND WERKS = P_WERKS
         AND UMDAT = P_DATE
          OR DAT00 = P_DATE
         AND MATNR IN S_MATNR
         AND DISPO IN S_DISPO.


LOOP AT I_ZLHSTOCKOVERVIEW INTO IS_ZLHSTOCKOVERVIEW.

    MOVE IS_ZLHSTOCKOVERVIEW-EXTRA TO V_EXTRA.
    SPLIT V_EXTRA AT '/' INTO IS_ZLHSTOCKOVERVIEW-LOTNUMBER
                              IS_ZLHSTOCKOVERVIEW-ORNUM.

    APPEND IS_ZLHSTOCKOVERVIEW TO I_ZLHSTOCKOVERVIEW.

ENDLOOP.

IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.

    SELECT LOTNUM
           ORDERNUM
           OPR_DESCP
           FROM ZWIPSTAT
           INTO TABLE  I_ZWIPSTAT1
           FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
           WHERE WERKS = I_ZLHSTOCKOVERVIEW-WERKS
             AND ORDERNUM = I_ZLHSTOCKOVERVIEW-ORNUM.
ENDIF.

IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.

    SELECT AUFNR
           DAUAT
           PSMNG
           FROM AFPO
           INTO TABLE I_AFPO
           FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
           WHERE AUFNR = I_ZLHSTOCKOVERVIEW-ORNUM
           AND AUFNR IN S_AUFNR.
ENDIF.

IF NOT I_ZLHSTOCKOVERVIEW IS INITIAL.

    SELECT MATNR
           NORMT
           FROM MARA
           INTO TABLE I_MARA
           FOR ALL ENTRIES IN I_ZLHSTOCKOVERVIEW
           WHERE MATNR = I_ZLHSTOCKOVERVIEW-MATNR
             AND MATNR IN S_MATNR.

ENDIF.

LOOP AT I_ZWIPSTAT1 INTO IS_ZWIPSTAT1.

  V_INDEX = SY-TABIX.

    IF NOT IS_ZWIPSTAT1-OPR_DESCP+0(4) IN S_OPNUM AND
       NOT IS_ZWIPSTAT1-OPR_DESCP+4(36) IN S_OPRDES.

       DELETE I_ZWIPSTAT1 INDEX V_INDEX.
       ELSE.
       MOVE I_ZWIPSTAT1 TO I_ZWIPSTAT.

    ENDIF.
ENDLOOP.


LOOP AT I_ZWIPSTAT INTO IS_ZWIPSTAT.

    READ TABLE I_AFPO INTO IS_AFPO WITH KEY
                AUFNR = IS_ZWIPSTAT-LOTNUM.

      MOVE IS_AFPO-DAUAT TO IS_FINAL1-DAUAT.
      MOVE IS_AFPO-PSMNG TO IS_FINAL1-PSMNG.

      MOVE IS_ZWIPSTAT-LOTNUM TO IS_FINAL1-LOTNUM.
      MOVE IS_ZWIPSTAT-ORDERNUM TO IS_FINAL1-ORDERNUM.

  APPEND IS_FINAL1 TO I_FINAL1.
ENDLOOP.


LOOP AT I_ZLHSTOCKOVERVIEW INTO IS_ZLHSTOCKOVERVIEW.

    READ TABLE I_FINAL1 INTO IS_FINAL1 WITH KEY
         LOTNUM = IS_ZLHSTOCKOVERVIEW-LOTNUMBER.

      MOVE IS_ZLHSTOCKOVERVIEW-MATNR TO IS_FINAL1-MATNR.
      MOVE IS_ZLHSTOCKOVERVIEW-UMDAT TO IS_FINAL1-UMDAT.
      MOVE IS_ZLHSTOCKOVERVIEW-DAT00 TO IS_FINAL1-DAT00.
      MOVE IS_ZLHSTOCKOVERVIEW-ORNUM TO IS_FINAL1-ORNUM.
      MOVE IS_ZLHSTOCKOVERVIEW-LOTNUMBER TO IS_FINAL1-LOTNUMBER.

    APPEND IS_FINAL1 TO I_FINAL1.
ENDLOOP.



LOOP AT I_MARA INTO IS_MARA.


    READ TABLE I_FINAL1 INTO IS_FINAL1 WITH KEY
                          MATNR = IS_MARA-MATNR.

      MOVE IS_FINAL1-ORDERNUM TO IS_FINAL-ORDERNUM.
      MOVE IS_FINAL1-DAUAT TO IS_FINAL-DAUAT.
      MOVE IS_FINAL1-MATNR TO IS_FINAL-MATNR.
      MOVE IS_FINAL1-LOTNUM TO IS_FINAL-LOTNUM.
      MOVE IS_FINAL1-PSMNG TO IS_FINAL-PSMNG.
      MOVE IS_FINAL1-UMDAT TO IS_FINAL-UMDAT.
      MOVE IS_FINAL1-DAT00 TO IS_FINAL-DAT00.
      MOVE IS_FINAL1-ORNUM TO IS_FINAL-ORNUM.
      MOVE IS_FINAL1-LOTNUMBER TO IS_FINAL-LOTNUMBER.


      MOVE IS_MARA-NORMT TO IS_FINAL-NORMT.

    APPEND IS_FINAL TO I_FINAL.
ENDLOOP.



    PERFORM ZF_EVENTCAT USING I_EVENT.


    IF IT_FIELDCAT IS INITIAL.
    PERFORM FIELD_FILL USING IT_FIELDCAT.
    ENDIF.

    PERFORM ZF_DISPLAY.

* SUB ROUTINE TO SET THE LAYOUT
    PERFORM SET_LAYOUT USING IS_LAYOUT.

*&--------------------------------------------------------------------*
*&      FORM  FIELD_FILL                                              *
*&--------------------------------------------------------------------*
*       TEXT                                                          *
*---------------------------------------------------------------------*
*      -->PT_FIELDCAT  TEXT                                           *
*---------------------------------------------------------------------*

FORM FIELD_FILL USING PT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

DATA : LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
         POS TYPE I VALUE 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'ORDERNUM'.
  LS_FIELDCAT-REF_FIELDNAME = 'ORDERNUM'.
  LS_FIELDCAT-REF_TABNAME   = 'ZWIPSTAT'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'DAUAT'.
  LS_FIELDCAT-REF_FIELDNAME = 'DAUAT'.
  LS_FIELDCAT-REF_TABNAME   = 'AFPO'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'MATNR'.
  LS_FIELDCAT-REF_FIELDNAME = 'MATNR'.
  LS_FIELDCAT-REF_TABNAME   = 'MARA'.
  LS_FIELDCAT-HOTSPOT   =  'X'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'NORMT'.
  LS_FIELDCAT-REF_FIELDNAME = 'NORMT'.
  LS_FIELDCAT-REF_TABNAME   = 'MARA'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'LOTNUM'.
  LS_FIELDCAT-REF_FIELDNAME = 'LOTNUM'.
  LS_FIELDCAT-REF_TABNAME   = 'ZWIPSTAT'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'PSMNG'.
  LS_FIELDCAT-REF_FIELDNAME = 'PSMNG'.
  LS_FIELDCAT-REF_TABNAME   = 'AFPO'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'UMDAT'.
  LS_FIELDCAT-REF_FIELDNAME = 'UMDAT'.
  LS_FIELDCAT-REF_TABNAME   = 'ZLHSTOCKOVERVIEW'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'DAT00'.
  LS_FIELDCAT-REF_FIELDNAME = 'DAT00'.
  LS_FIELDCAT-REF_TABNAME   = 'ZLHSTOCKOVERVIEW'.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'ORNUM'.
  LS_FIELDCAT-SELTEXT_L       = TEXT-002.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.

  LS_FIELDCAT-COL_POS       = POS.
  LS_FIELDCAT-FIELDNAME     = 'LOTNUMBER'.
  LS_FIELDCAT-SELTEXT_L       = TEXT-003.
  APPEND LS_FIELDCAT TO PT_FIELDCAT.
  CLEAR LS_FIELDCAT.
  POS = POS + 1.


ENDFORM.                    " FIELD_FILL


*&---------------------------------------------------------------------*
*&      FORM  ZF_EVENTCAT
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*      -->P_I_EVENT  TEXT
*----------------------------------------------------------------------*
FORM ZF_EVENTCAT  USING    P_I_EVENT TYPE SLIS_T_EVENT.

CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
 EXPORTING
   I_LIST_TYPE           = 0
 IMPORTING
   ET_EVENTS             = P_I_EVENT
 EXCEPTIONS
   LIST_TYPE_WRONG       = 1
   OTHERS                = 2
          .
IF SY-SUBRC <> 0.
 MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

CLEAR T_EVENT.


READ TABLE P_I_EVENT  WITH KEY NAME = SLIS_EV_USER_COMMAND INTO T_EVENT.
  IF SY-SUBRC = 0.
    MOVE 'USER_COMMAND' TO T_EVENT-FORM.
    APPEND T_EVENT TO P_I_EVENT.
  ENDIF.

ENDFORM.                    " ZF_EVENTCAT


*&---------------------------------------------------------------------*
*&      FORM  ZF_DISPLAY
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*
FORM ZF_DISPLAY .

V_PRG  =  SY-REPID.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     I_CALLBACK_PROGRAM                = V_PRG
     IS_LAYOUT                         = IS_LAYOUT
     IT_FIELDCAT                       = IT_FIELDCAT
     IT_EVENTS                         = I_EVENT
   TABLES
      T_OUTTAB                          = I_FINAL
   EXCEPTIONS
     PROGRAM_ERROR                     = 1
     OTHERS                            = 2
            .
  IF SY-SUBRC <> 0.
  ENDIF.
ENDFORM.                    " ZF_DISPLAY

*&---------------------------------------------------------------------*
*&      FORM  USER_COMMAND
*&---------------------------------------------------------------------*

FORM USER_COMMAND USING S_UCOMM LIKE SY-UCOMM S_SELFIELD TYPE
SLIS_SELFIELD.

    CASE S_UCOMM.

        WHEN '&IC1'.
          IF S_SELFIELD-FIELDNAME = 'MATNR'.

            SET PARAMETER ID 'MAT' FIELD I_FINAL-MATNR.
            SET PARAMETER ID 'WRK' FIELD I_FINAL-WERKS.

            CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.

          ENDIF.
    ENDCASE.

CLEAR S_UCOMM.
ENDFORM.

*&--------------------------------------------------------------------*
*&      FORM  SET_LAYOUT                                              *
*&--------------------------------------------------------------------*
*       TEXT                                                          *
*---------------------------------------------------------------------*
*      -->P_IS_LAYOUT  TEXT                                           *
*---------------------------------------------------------------------*

FORM SET_LAYOUT USING LS_LAYOUT TYPE SLIS_LAYOUT_ALV.

CLEAR LS_LAYOUT.
  LS_LAYOUT-ZEBRA = 'X'.
  LS_LAYOUT-COLWIDTH_OPTIMIZE = 'X'.

ENDFORM.                    " SET_LAYOUT

Read only

0 Likes
1,087

Hi

use statament READ with a workarea

DATA: WA LIKE I_FINAL.

IF s_selfield-fieldname = 'MATNR' AND

s_selfield-tabname = 'I_FINAL'.

READ TABLE I_FINAL INTO WA INDEX s_selfield-tabindex.

SET PARAMETER ID 'MAT' FIELD WA-MATNR.

SET PARAMETER ID 'WRK' FIELD WA-WERKS.

CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN. endif.

mAX

Message was edited by: max bianchi

Message was edited by: max bianchi

Message was edited by: max bianchi

Read only

0 Likes
1,087

Hi,

use the rs_selfield-tabindex to read the internal table into work area.

Hope that helps.

regards,

Satya