Friday, 9 November 2012

THIRD LEVEL INTERACTIVE USING MARA MARC AND MARD


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_009
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_009.
TABLES:mara,marc,mard.
TYPES: BEGIN OF ty_mara,
          matnr TYPE matnr,      "Material Number
          ersda TYPE ersda,      "Created on
          ernam TYPE ernam,      "Name of Person who Created the Object
       END OF ty_mara,
       BEGIN OF ty_marc,
          matnr TYPE matnr,      "Material Number
          werks TYPE werks_d,   "Plant
          pstat TYPE pstat_d,    "Maintenance status
       END OF ty_marc,
       BEGIN OF ty_mard,
         matnr TYPE matnr,      "Material Number
         lgort TYPE lgort_d,    "Storage Location
       END OF ty_mard.
DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
      wa_mara TYPE ty_mara,
      it_marc TYPE STANDARD TABLE OF ty_marc INITIAL SIZE 0,
      wa_marc TYPE ty_marc,
      it_mard TYPE STANDARD TABLE OF ty_mard INITIAL SIZE 0,
      wa_mard TYPE ty_mard,
      lv_matnr TYPE matnr.


SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE  text-001.
SELECT-OPTIONS: s_matnr FOR mara-matnr.
SELECTION-SCREEN: END OF BLOCK b1.

INITIALIZATION.

  CLEAR: wa_mara,
         wa_marc,
         wa_mard.
  REFRESH: it_mara,
           it_marc,
           it_mard.

AT SELECTION-SCREEN.
  IF s_matnr IS NOT INITIAL.
    SELECT SINGLE matnr
    FROM mara
    INTO lv_matnr
    WHERE matnr IN s_matnr.
    IF sy-subrc NE 0.
      MESSAGE: 'Material Number does not exist' TYPE'e'.
    ENDIF.
  ENDIF.


START-OF-SELECTION.
  SELECT matnr
         ersda
         ernam
    FROM mara
    INTO TABLE it_mara
    WHERE matnr IN s_matnr.
  IF sy-subrc EQ 0.
    SORT it_mara BY matnr.
  ENDIF.
  SELECT matnr
         werks
         pstat
    FROM marc
    INTO TABLE it_marc
    WHERE matnr IN s_matnr.
  IF sy-subrc EQ 0.
    SORT it_marc BY matnr.
  ENDIF.



END-OF-SELECTION.
  IF it_mara IS NOT INITIAL.
    LOOP AT it_mara INTO wa_mara.
      WRITE: / wa_mara-matnr,
               wa_mara-ersda,
               wa_mara-ernam.
      HIDE wa_mara-matnr.
    ENDLOOP.
  ENDIF.

  DATA: fld(30),
        val(30).

AT LINE-SELECTION.


*  data: v_matnr TYPE matnr.
  IF sy-lsind = 1.
    GET CURSOR FIELD fld VALUE val .
*    CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
*      EXPORTING
*        input         = val
*     IMPORTING
*       OUTPUT        = v_matnr
*              .

    IF fld = 'WA_MARA-MATNR'.

      SELECT matnr
             werks
             pstat
      FROM marc
      INTO TABLE it_marc
*      WHERE matnr = v_matnr.
        WHERE matnr = wa_mara-matnr.
      LOOP AT it_marc INTO wa_marc.
        WRITE: / wa_marc-matnr,
                wa_marc-werks,
                wa_marc-pstat.

        HIDE wa_marc-matnr.
        CLEAR: wa_marc.
      ENDLOOP.
    ENDIF.
  ELSEIF sy-lsind = 2.

    SELECT  matnr
            lgort
    FROM mard
    INTO TABLE it_mard
    WHERE matnr = wa_marc-matnr.
    LOOP AT it_mard INTO wa_mard.
      WRITE: / wa_mard-matnr,
              wa_mard-lgort.
      HIDE wa_mard-matnr.
      CLEAR: wa_mard.
    ENDLOOP.
  ENDIF.

No comments: