Thursday, 8 November 2012

INTERACTIVE REPORT MARA TO MAKT USING CHECKBOX


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_005
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_005.

TABLES: mara,makt.

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_makt,
        matnr TYPE  matnr,    "Material Number
        spras TYPE  spras,    "Language Key
        maktx TYPE  maktx,    "Material Description (Short Text)
       END OF ty_makt.

DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
      wa_mara TYPE ty_mara,
      it_makt TYPE STANDARD TABLE OF ty_makt INITIAL SIZE 0,
      wa_makt TYPE ty_makt,
      lv_matnr TYPE matnr,
      c1.

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

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.

  SET PF-STATUS 'CHK'.

AT USER-COMMAND.
  CASE sy-ucomm.
    WHEN 'DISPLAY'.
      DATA ln TYPE i.
  DESCRIBE LIST NUMBER OF LINES ln.
  DO ln TIMES.
    READ LINE sy-index FIELD VALUE c1 .
    IF c1 = 'X'.
      SELECT matnr
             spras
             maktx
   FROM  makt
   INTO TABLE it_makt
   WHERE matnr = wa_mara-matnr.
      IF sy-subrc EQ 0.
        SORT it_makt BY matnr.
      ENDIF.
      IF it_makt IS NOT INITIAL.
        LOOP AT it_makt INTO wa_makt.
          WRITE: / wa_makt-matnr,
                   wa_makt-spras,
                   wa_makt-maktx.
        ENDLOOP.
      ENDIF.
    ENDIF.
  ENDDO.
      WHEN 'EXIT'.
      message:'Are you sure' type'I'.
      LEAVE LIST-PROCESSING.
    WHEN OTHERS.
      endcase.



END-OF-SELECTION.

  IF it_mara IS NOT INITIAL.
    LOOP AT it_mara INTO wa_mara.
      WRITE: / c1 AS CHECKBOX,wa_mara-matnr,
               wa_mara-matnr,
               wa_mara-ersda,
               wa_mara-ernam.



      HIDE wa_mara-matnr.

    ENDLOOP.
  ENDIF.


AT LINE-SELECTION.

  SELECT matnr
         spras
         maktx
  FROM  makt
  INTO TABLE it_makt
  WHERE matnr = wa_mara-matnr.
  IF sy-subrc EQ 0.
    SORT it_makt BY matnr.
  ENDIF.
  IF it_makt IS NOT INITIAL.
    LOOP AT it_makt INTO wa_makt.
      WRITE: / wa_makt-matnr,
               wa_makt-spras,
               wa_makt-maktx.
    ENDLOOP.
  ENDIF.

No comments: