Thursday, 8 November 2012

CHECKBOX SELECTION IN SAP


*&---------------------------------------------------------------------*
*& Report  ZSS_TEST_003
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  zss_test_003.
TABLES: mara,ekko,vbak,lips.
TYPES: BEGIN OF ty_mara,
          matnr TYPE  matnr,       "Material Number
          mtart TYPE  mtart,       "Material Type
          mbrsh TYPE  mbrsh,       "Industry sector
          matkl TYPE  matkl,       "Material Group
          meins TYPE  meins,       "Base Unit of Measure
       END OF ty_mara,
       BEGIN OF ty_ekko,
          ebeln TYPE  ebeln,       "Purchasing Document Number
          bukrs TYPE  bukrs,       "Company Code
          bstyp TYPE  ebstyp,      "Purchasing Document Category
          bsart TYPE  esart,       "Purchasing Document Type
       END OF ty_ekko,
       BEGIN OF ty_vbak,
         vbeln TYPE vbeln_va,      "Sales Document
         erdat TYPE erdat,         "Date on Which Record Was Created
         auart TYPE auart,         "Sales Document Type
         netwr TYPE netwr_ak,      "Net Value of the Sales Order in Document Currency
       END OF ty_vbak,
       BEGIN OF ty_lips,
         vbeln TYPE vbeln_vl,      "Delivery
         posnr TYPE posnr_vl,     "Delivery Item
         pstyv TYPE pstyv_vl,      "Delivery item category
         ernam TYPE ernam,         "Name of Person who Created the Object
       END OF ty_lips.

DATA: it_mara TYPE STANDARD TABLE OF ty_mara INITIAL SIZE 0,
      wa_mara TYPE ty_mara,
      it_ekko TYPE STANDARD TABLE OF ty_ekko INITIAL SIZE 0,
      wa_ekko TYPE ty_ekko,
      it_vbak TYPE STANDARD TABLE OF ty_vbak INITIAL SIZE 0,
      wa_vbak TYPE ty_vbak,
      it_lips TYPE STANDARD TABLE OF ty_lips INITIAL SIZE 0,
      wa_lips TYPE ty_lips.

PARAMETERS: p_check1 AS CHECKBOX USER-COMMAND check DEFAULT'X',
            p_check2 AS CHECKBOX USER-COMMAND check,
            p_check3 AS CHECKBOX USER-COMMAND check ,
            p_check4 AS CHECKBOX USER-COMMAND check .

DATA: value TYPE char10.

SELECT-OPTIONS: s_mara FOR mara-matnr MODIF ID s1.

SELECT-OPTIONS: s_ekko FOR ekko-ebeln MODIF ID s2.

SELECT-OPTIONS: s_vbak FOR vbak-vbeln MODIF ID s3.

SELECT-OPTIONS: s_lips FOR lips-vbeln MODIF ID s4.

INITIALIZATION.
  p_check1 = 'MARA'.
  p_check2 = 'EKKO'.
  p_check3 = 'VBAK'.
  p_check4 = 'LIPS'.

AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF p_check1 = 'X'.
      IF  screen-group1 = 'S1'.
        screen-active = 1.


      ELSEIF screen-group1 = 'S2'.
        screen-active = 0.


      ELSEIF   screen-group1 = 'S3'.
        screen-active = 0.


      ELSEIF  screen-group1 = 'S4'.
        screen-active = 0.


      ENDIF.
      MODIFY SCREEN.


    ELSEIF p_check2 = 'X'.
      IF  screen-group1 = 'S1'.
        screen-active = 0.


      ELSEIF screen-group1 = 'S2'.
        screen-active = 1.


      ELSEIF   screen-group1 = 'S3'.
        screen-active = 0.


      ELSEIF  screen-group1 = 'S4'.
        screen-active = 0.


      ENDIF.
      MODIFY SCREEN.


    ELSEIF p_check3 = 'X'.
      IF  screen-group1 = 'S1'.
        screen-active = 0.


      ELSEIF screen-group1 = 'S2'.
        screen-active = 0.

      ELSEIF   screen-group1 = 'S3'.
        screen-active = 1.

      ELSEIF  screen-group1 = 'S4'.
        screen-active = 0.


      ENDIF.
      MODIFY SCREEN.


    ELSEIF p_check4 = 'X'.

      IF  screen-group1 = 'S1'.
        screen-active = 0.


      ELSEIF screen-group1 = 'S2'.
        screen-active = 0.


      ELSEIF   screen-group1 = 'S3'.
        screen-active = 0.


      ELSEIF  screen-group1 = 'S4'.
        screen-active = 1.


      ENDIF.
      MODIFY SCREEN.
    ELSE.
      IF  screen-group1 = 'S1'.
        screen-active = 0.


      ELSEIF screen-group1 = 'S2'.
        screen-active = 0.


      ELSEIF   screen-group1 = 'S3'.
        screen-active = 0.


      ELSEIF  screen-group1 = 'S4'.
        screen-active = 0.


      ENDIF.
      MODIFY SCREEN.

    ENDIF.
  ENDLOOP.

AT SELECTION-SCREEN.

  GET CURSOR FIELD value.
**    loop at screen.

  IF value = 'P_CHECK1'.
*      Select MATNR        "Material Number
*             MTART        "Material Type
*             MBRSH        "Industry sector
*             MATKL        "Material Group
*             MEINS        "Base Unit of Measure
*       from mara
*       into table it_mara
*        where matnr in s_matnr.
*          if sy-subrc eq 0.
*            sort it_mara by matnr.
*            endif.


    p_check2 = space.
    p_check3 = space.
    p_check4 = space.

  ELSEIF value = 'P_CHECK2'.
    p_check1 = space.
    p_check3 = space.
    p_check4 = space.
  ELSEIF value = 'P_CHECK3'.
    p_check1 = space.
    p_check2 = space.
    p_check4 = space.
  ELSEIF value = 'P_CHECK4'.
    p_check2 = space.
    p_check3 = space.
    p_check1 = space.
  ENDIF.

START-OF-SELECTION.

  IF p_check1 = 'X'.

    SELECT matnr        "Material Number
           mtart        "Material Type
           mbrsh        "Industry sector
           matkl        "Material Group
           meins        "Base Unit of Measure
     FROM mara
      INTO TABLE it_mara
      WHERE matnr IN s_mara.


  ELSEIF p_check2 = 'X'.

    SELECT ebeln       "Purchasing Document Number
           bukrs       "Company Code
           bstyp       "Purchasing Document Category
           bsart       "Purchasing Document Type
   FROM ekko
   INTO TABLE it_ekko
   WHERE ebeln IN s_ekko.


  ELSEIF p_check3 = 'X'.

    SELECT   vbeln          "Sales Document
             erdat          "Date on Which Record Was Created
             auart          "Sales Document Type
             netwr          "Net Value of the Sales Order in Document Currency
     FROM vbak
     INTO TABLE it_vbak
     WHERE vbeln IN s_vbak.


  ELSEIF p_check4 = 'X'.

    SELECT  vbeln       "Delivery
            posnr       "Delivery Item
            pstyv       "Delivery item category
            ernam       "Name of Person who Created the Object
      FROM lips
      INTO TABLE it_lips
      WHERE vbeln IN s_lips.


  ENDIF.

END-OF-SELECTION.

  IF p_check1 = 'X'.
    LOOP AT it_mara INTO wa_mara.
      WRITE: / wa_mara-matnr,        "Material Number
               wa_mara-mtart,        "Material Type
               wa_mara-mbrsh,        "Industry sector
               wa_mara-matkl,        "Material Group
               wa_mara-meins.        "Base Unit of Measure
    ENDLOOP.
  ENDIF.

  IF p_check2 = 'X'.
    LOOP AT it_ekko INTO wa_ekko.
      WRITE: / wa_ekko-ebeln,       "Purchasing Document Number
               wa_ekko-bukrs,       "Company Code
               wa_ekko-bstyp,       "Purchasing Document Category
               wa_ekko-bsart.       "Purchasing Document Type
    ENDLOOP.
  ENDIF.

  IF p_check3 = 'X'.
    LOOP AT it_vbak INTO wa_vbak.
      WRITE: / wa_vbak-vbeln,          "Sales Document
               wa_vbak-erdat,          "Date on Which Record Was Created
               wa_vbak-auart,          "Sales Document Type
               wa_vbak-netwr.          "Net Value of the Sales Order in Document Currency
    ENDLOOP.
  ENDIF.

  IF p_check4 = 'X'.
    LOOP AT it_lips INTO wa_lips.
      WRITE: / wa_lips-vbeln,       "Delivery
               wa_lips-posnr,       "Delivery Item
               wa_lips-pstyv,       "Delivery item category
               wa_lips-ernam.       "Name of Person who Created the Object
    ENDLOOP.
  ENDIF.



No comments: