Skip to Content
avatar image
Former Member

multiple line selection in report list

HI All,

I have a requirment to display multiple line items with a checkbox prefixed, and i should be able to select multiple line items with the checkbox provided and should keep the selectd line items in an internal table(note the list is not ALG LIST or GRID)

can anybody please tell me how to select multiple line items and and keep the selected items in a in a normal report list.

Regards

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

7 Answers

  • avatar image
    Former Member
    Sep 02, 2008 at 10:58 AM
    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 02, 2008 at 10:59 AM

    hii

    use following code

    SELECT
              carrid                       "carrier id
              connid                       "connection id
              airpfrom                     "airport from
              airpto                       "airport to
              deptime                      "departure time
              arrtime                      "arrival time
        INTO CORRESPONDING FIELDS OF TABLE t_flight
        FROM spfli.
    
    
      LOOP AT t_flight INTO fs_flight.
        SET PF-STATUS 'SELECT'.
    
        WRITE:
         /20
                 box AS CHECKBOX,
                 fs_flight-carrid,
                 fs_flight-connid,
                 fs_flight-airpfrom,
                 fs_flight-airpto,
                 fs_flight-deptime,
                 fs_flight-arrtime.
    
      ENDLOOP.
    
    FORM detail_data .
    
      DATA:
         w_index TYPE sy-index,
         w_space TYPE c VALUE ' '.
    
      w_index = sy-index.
      DESCRIBE TABLE t_flight LINES w_lines.
      w_index = w_index + 2.
      DO w_lines TIMES.
        READ LINE sy-index FIELD VALUE box INTO box
                  fs_flight-carrid INTO fs_flight-carrid
                   fs_flight-connid INTO fs_flight-connid.
    
        IF box EQ 'X'.
          SELECT
              carrid                       "carrier id
              connid                       "connection id
              fldate                       "flight date
              seatsmax                     "maximum seats
              seatsocc                     "occupied seats
          INTO CORRESPONDING FIELDS OF TABLE t_flight1
          FROM sflight
          WHERE connid EQ fs_flight-connid
          AND carrid EQ fs_flight-carrid.
    
    
          LOOP AT t_flight1 INTO fs_flight1.
            WRITE:
                /20
                     fs_flight1-connid,
                     fs_flight1-fldate,
                      fs_flight1-seatsocc,
                      fs_flight1-seatsmax.
    
    
    
            MODIFY LINE sy-lilli  FIELD VALUE  box
                 FIELD FORMAT box INPUT OFF.
            MODIFY LINE sy-lilli  FIELD VALUE  box FROM w_space.
    
    
            w_flag = '*'.
            MODIFY LINE sy-index FIELD VALUE w_zero FROM w_flag.
    
          ENDLOOP.
        ENDIF.
      ENDDO.
    
    ENDFORM.                    " detail_data

    regards

    twinkal

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 02, 2008 at 11:02 AM

    Hi,

    SY-LISEL will contain the data that was displayed at the output.

    Use that.

    Regards,

    Rama.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 02, 2008 at 11:02 AM

    Hi,

    You can use any 1 either ALV list or Grid.....both will work fine....

    In the internal table, if you tick the checkbox the field with the checkbox in the displayed internal table will have the value as X.

    Check that.....

    Regards,

    Kunjal

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 02, 2008 at 11:04 AM

    Hi

    you can try like this...

    place check boxes and in the event code (like AT USER COMMAND) you can read the list output using READ LINE statement and if the line output belongs to your internal table data (u can check based on length of the output) then you can check the check box value (X or SPACE). if X, then you can take the data into another internal table.

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 02, 2008 at 11:08 AM

    Hii,

    Have a look at this sample code

    Report z_sdn.
    *" Data declarations...................................................
    *"--------------------------------------------------------------------*
    * Work variables                                                      *
    *"--------------------------------------------------------------------*
    DATA:
      BEGIN OF fs_spfli,
        carrid   LIKE spfli-carrid,        " Airline Code
        connid   LIKE spfli-connid,        " Flight Connection Number
        airpfrom LIKE spfli-airpfrom,      " Departure airport
        airpto   LIKE spfli-airpto,        " Destination airport
        deptime  LIKE spfli-deptime,       " Departure time
        arrtime  LIKE spfli-arrtime,       " Arrival time
      END OF fs_spfli,
    
      BEGIN OF fs_sflight,
        carrid   LIKE sflight-carrid,       " Airline Code
        connid   LIKE sflight-connid,       " Flight Connection Number
        fldate   LIKE sflight-fldate,       " Flight date
        seatsmax LIKE sflight-seatsmax,     " Maximum seats in economy class
        seatsocc LIKE sflight-seatsocc,     " Occupied seats in economyclass
      END OF fs_sflight,
      w_checkbox TYPE c,                    " Variable for checkbox
      w_currentline TYPE i,                 " Variable to display current
                                            " line
      w_lines TYPE i,
      w_read TYPE c .
    
    *"--------------------------------------------------------------------*
    * Internal Table to hold flight schedule information                  *
    *"--------------------------------------------------------------------*
    DATA:
      t_spfli LIKE
        TABLE OF
              fs_spfli.
    
    *"--------------------------------------------------------------------*
    * Internal Table to hold flight information                           *
    *"--------------------------------------------------------------------*
    DATA:
      t_sflight LIKE
          TABLE OF
                fs_sflight,
      t_sflight1 LIKE t_sflight.
    
    *"--------------------------------------------------------------------*
    *    START-OF-SELECTION Event                                         *
    *"--------------------------------------------------------------------*
    START-OF-SELECTION.
      PERFORM get_data_spfli.
    
    *"--------------------------------------------------------------------*
    *    END-OF-SELECTION Event                                           *
    *"--------------------------------------------------------------------*
    END-OF-SELECTION.
      SET PF-STATUS 'MENU'.
      PERFORM display_data_spfli.
    
    *"--------------------------------------------------------------------*
    *    TOP-OF-PAGE Event                                                *
    *"--------------------------------------------------------------------*
    TOP-OF-PAGE.
      PERFORM header_table_spfli.
    
    *"--------------------------------------------------------------------*
    *    AT LINE-SELECTION EVENT                                          *
    *"--------------------------------------------------------------------*
    AT LINE-SELECTION.
      SET PF-STATUS space.
      IF sy-lsind EQ 1 AND sy-lilli GE 4.
        PERFORM get_data_sflight.
        PERFORM display_data_sflight.
        PERFORM flag_line.
      ENDIF.                               " IF sy-lsind EQ 1..
    
    *"--------------------------------------------------------------------*
    *    AT USER-COMMAND                                                  *
    *"--------------------------------------------------------------------*
    AT USER-COMMAND.
      IF sy-lsind EQ 1.
        SET PF-STATUS space.
        CASE sy-ucomm.
          WHEN 'DISPLAY'.
            PERFORM get_data_sflight1.
            PERFORM display_data_sflight.
          WHEN 'SELECTALL'.
            PERFORM select_all.
            PERFORM flag_line.
          WHEN 'DESELECTAL'.
            PERFORM deselect_all.
            PERFORM flag_line.
        ENDCASE.                           " CASE sy-ucomm
      ENDIF.                               " IF sy-lsind EQ 1
    
    *"--------------------------------------------------------------------*
    *    TOP-OF-PAGE DURING LINE-SELECTION                                *
    *"--------------------------------------------------------------------*
    TOP-OF-PAGE DURING LINE-SELECTION.
      PERFORM sec_list_heading.
    
    *&---------------------------------------------------------------------*
    *&      Form  get_data_spfli
    *&---------------------------------------------------------------------*
    *  This subroutine fetches the data from SPFLI
    *----------------------------------------------------------------------*
    * This subroutine does not have parameters to pass
    *----------------------------------------------------------------------*
    FORM get_data_spfli .
    
      SELECT carrid                        " Airline Code
             connid                        " Flight Connection Number
             airpfrom                      " Departure airport
             airpto                        " Destination airport
             deptime                       " Departure time
             arrtime                       " Arrival time
        FROM spfli
        INTO TABLE t_spfli.
    
    ENDFORM.                               " GET_DATA_SPFLI
    
    *&---------------------------------------------------------------------*
    *&      Form  display_data_spfli
    *&---------------------------------------------------------------------*
    * This subroutine displays the data of SPFLI
    *----------------------------------------------------------------------*
    * This subroutine does not have parameters to pass
    *----------------------------------------------------------------------*
    FORM display_data_spfli .
      LOOP AT t_spfli INTO fs_spfli.
        WRITE: /02 w_checkbox AS CHECKBOX,
                05 w_read,
                   fs_spfli-carrid UNDER text-001,
                   fs_spfli-connid UNDER text-002,
                   fs_spfli-airpfrom UNDER text-003,
                   fs_spfli-airpto UNDER text-004,
                   fs_spfli-deptime UNDER text-005,
                   fs_spfli-arrtime UNDER text-006.
        HIDE:
          fs_spfli-carrid,
          fs_spfli-connid.
      ENDLOOP.                             " LOOP AT t_spfli..
    ENDFORM.                               " DISPLAY_DATA_SPFLI
    
    *&---------------------------------------------------------------------*
    *&      Form  header_table_spfli
    *&---------------------------------------------------------------------*
    * This subroutine diplays the headings of table spfli
    *----------------------------------------------------------------------*
    * This subroutine does not have parameters to pass
    *----------------------------------------------------------------------*
    FORM header_table_spfli .
    
      WRITE: /10 text-001 COLOR 4,
              25 text-002 COLOR 4,
              40 text-003 COLOR 4,
              55 text-004 COLOR 4,
              70 text-005 COLOR 4,
              85 text-006 COLOR 4.
    
    ENDFORM.                               " HEADER_TABLE
    
    *&---------------------------------------------------------------------*
    *&      Form  get_data_sflight
    *&---------------------------------------------------------------------*
    * This subroutine fetches the data from SFLIGHT
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM get_data_sflight .
    
      SELECT carrid                        " Airline Code
             connid                        " Flight Connection Number
             fldate                        " Flight date
             seatsmax                      " Maximum seats in economy class
             seatsocc                      " Occupied seats in economyclass
        FROM sflight
        INTO TABLE t_sflight
       WHERE carrid EQ fs_spfli-carrid
         AND connid EQ fs_spfli-connid.
    
    ENDFORM.                               " GET_DATA_SFLIGHT
    
    *&---------------------------------------------------------------------*
    *&      Form  display_data_sflight
    *&---------------------------------------------------------------------*
    * This subroutine displays the SFLIGHT data
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM display_data_sflight .
    
      LOOP AT t_sflight INTO fs_sflight.
        WRITE: / fs_sflight-carrid UNDER text-001,
                 fs_sflight-connid UNDER text-002,
                 fs_sflight-fldate UNDER text-007,
                 fs_sflight-seatsmax UNDER text-008 LEFT-JUSTIFIED,
                 fs_sflight-seatsocc UNDER text-009 LEFT-JUSTIFIED.
      ENDLOOP.
        CLEAR: fs_sflight.
    ENDFORM.                               " DISPLAY_DATA_sflight
    
    *&---------------------------------------------------------------------*
    *&      Form  sec_list_heading
    *&---------------------------------------------------------------------*
    *  This subroutine diplays the headings of table spfli
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM sec_list_heading .
    
      WRITE: /2 text-001 COLOR 4,
             15 text-002 COLOR 4,
             33 text-007 COLOR 4,
             45 text-008 COLOR 4,
             60 text-009 COLOR 4.
    
    ENDFORM.                               " SEC_LIST_HEADING
    
    *&---------------------------------------------------------------------*
    *&      Form  get_data_sflight1
    *&---------------------------------------------------------------------*
    * This subroutine displays the data from SFLIGHT according to checkbox
    * clicked.
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM get_data_sflight1 .
    
      DATA:
        lw_checkbox TYPE c.
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = 3 + sy-index.
        CLEAR:
          w_checkbox,
          fs_spfli.
    
        READ LINE w_currentline FIELD VALUE
          w_checkbox INTO lw_checkbox
          fs_spfli-carrid INTO fs_spfli-carrid
          fs_spfli-connid INTO fs_spfli-connid.
        IF sy-subrc EQ 0.
          IF lw_checkbox EQ 'X'.
            SELECT carrid                  " Airline Code
                   connid                  " Flight Connection Number
                   fldate                  " Flight Date
                   seatsmax                " Max Seats
                   seatsocc                " Occupied Seats
              FROM sflight
              INTO TABLE t_sflight1
             WHERE carrid EQ fs_spfli-carrid
               AND connid EQ fs_spfli-connid.
            IF sy-subrc EQ 0.
              APPEND LINES OF t_sflight1 TO t_sflight.
            ENDIF.                         " IF sy-subrc EQ 0.
          ENDIF.                           " IF lw_checkbox EQ 'X'
        ENDIF.                             " IF sy-subrc EQ 0.
      ENDDO.                               " DO w_lines TIMES
    
    ENDFORM.                               " GET_DATA_SFLIGHT1
    
    *&---------------------------------------------------------------------*
    *&      Form  select_all
    *&---------------------------------------------------------------------*
    * This subroutine selects all the records of SPFLI
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM select_all .
    
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = sy-index + 3.
        READ LINE w_currentline FIELD VALUE
        w_checkbox INTO w_checkbox.
        IF sy-subrc = 0.
          MODIFY LINE w_currentline FIELD VALUE
          w_checkbox FROM 'X'.
        ENDIF.                             " IF sy-subrc = 0.
      ENDDO.                               " DO lw_line TIMES.
    
    ENDFORM.                               " SELECT_ALL
    
    *&---------------------------------------------------------------------*
    *&      Form  deselect_all
    *&---------------------------------------------------------------------*
    * This subroutine deselects all the records of SPFLI
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM deselect_all .
    
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_currentline = sy-index + 3.
        READ LINE w_currentline FIELD VALUE
        w_checkbox INTO w_checkbox.
        IF sy-subrc = 0.
          MODIFY LINE w_currentline FIELD VALUE
          w_checkbox FROM ' '.
        ENDIF.                             " IF sy-subrc = 0.
      ENDDO.                               " DO lw_line TIMES.
    
    ENDFORM.                               " DESELECT_ALL
    
    *&---------------------------------------------------------------------*
    *&      Form  flag_line
    *&---------------------------------------------------------------------*
    * This subroutine flags the line which has been read
    *----------------------------------------------------------------------*
    * This subroutine does not have interface parameters to pass
    *----------------------------------------------------------------------*
    FORM flag_line .
    
      DESCRIBE TABLE t_spfli LINES w_lines.
      DO w_lines TIMES.
        w_checkbox = 'X'.
        READ LINE sy-lilli FIELD VALUE
          w_read INTO w_read
          w_checkbox INTO w_checkbox.
        IF sy-subrc EQ 0.
    
          MODIFY CURRENT LINE
          FIELD FORMAT w_checkbox INPUT OFF
          FIELD VALUE w_read FROM '*'.
    
        ENDIF.                             " IF sy-subrc EQ 0
      ENDDO.                               " DO w_lines TIMES
    
    ENDFORM.                               " FLAG_LINE
    
    

    Regards

    Abhijeet

    Add comment
    10|10000 characters needed characters exceeded

  • Sep 02, 2008 at 11:13 AM

    Hi Prashant,

    The Best way is use ALV instead of classical report.

    I tried in classical report. It will be very difficult. Check below sample code.

    Copy paste this code and check the functionality. Here i am using AT LINE-SELECTION. U can use AT User command as well.

    TYPES: BEGIN OF t_mara,
             check TYPE c,
             matnr TYPE mara-matnr,
           END OF t_mara.
    DATA: i_mara TYPE TABLE OF t_mara,
          i_mara1 TYPE TABLE OF t_mara,
         wa_mara TYPE t_mara.
    
    DO 10 TIMES.
      wa_mara-matnr  = sy-index.
      APPEND wa_mara TO i_mara.
    ENDDO.
    
    LOOP AT i_mara INTO wa_mara.
      WRITE: /1 wa_mara-check AS CHECKBOX,
              2 wa_mara-matnr.
    ENDLOOP.
    
    AT LINE-SELECTION.
      REFRESH i_mara1[].
      DO 10 TIMES.
        READ LINE sy-index.
        CHECK sy-lisel(1) EQ 'X'.
        wa_mara-check = 'X'.
        wa_mara-matnr = sy-lisel+1(18).
        APPEND wa_mara TO i_mara1.
      ENDDO.
      WRITE 'U have selected below lines.'.
      LOOP AT i_mara1 INTO wa_mara.
        WRITE: /1 wa_mara-check AS CHECKBOX,
                2 wa_mara-matnr.
      ENDLOOP.
    

    Thanks,

    Vinod.

    Add comment
    10|10000 characters needed characters exceeded