Application Development 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: 

Multi selection

Former Member
0 Kudos

Hi all,

how can I use the multi selection in table controls? So what command I use to get all lines I have selected?

Thanks for your help,

Fabian

1 ACCEPTED SOLUTION

Former Member
0 Kudos

u can add one button and write code for that,

in PAI

case sy-ucomm.

  when 'ALL'.
    loop at itab.
       itab-sel = 'x'.
       modify itab transporting sel.
       clear itab.
    endloop.
endcase.

5 REPLIES 5

Former Member
0 Kudos

u can add one button and write code for that,

in PAI

case sy-ucomm.

  when 'ALL'.
    loop at itab.
       itab-sel = 'x'.
       modify itab transporting sel.
       clear itab.
    endloop.
endcase.

0 Kudos

In your table control attributes, under the section 'Selectability', Select the radiobutton for 'Multiple' under 'Lines' and then enter the internal table field for recording this selection. You need to add a field of character length 1 to your internal table and give that field name here. When you loop at your table control, this field will be 'X' if the row is selected.

0 Kudos

I created a table control with a selection column (Mark).

In which internal table will be the 'x' when I mark a line?

Thanks,

Fabian

0 Kudos

Your table control must be populating data in some internal table (where you have added new character column which is updated with X for selected record).

So in PAI loop at table control pass on all data to internal table. There you need to make sure this selection value also gets updated in internal table.

ferry_lianto
Active Contributor
0 Kudos

Hi Fabian,

You can take a look at SAP demo program <b>RSDEMO02</b> on how to setup the selection column (Mark).

Also find the following sample code for table control logic handling based on user selection action.

MODULE USER_COMMAND_0100 INPUT.
  DATA: FLDNAME(100), HELP(100).

  SAVE_OK = OK_CODE.
  CLEAR OK_CODE.
  CASE SAVE_OK.
    WHEN 'TOGGLE'.
      IF DISPLAY = 'X'.
        PERFORM ENQUEUE USING 'E'.
        IF RC = 0.
          DISPLAY = SPACE.
          LOOP AT TC-COLS INTO COL.
            COL-SCREEN-INPUT = '1'.
            MODIFY TC-COLS FROM COL INDEX SY-TABIX.
          ENDLOOP.
        ENDIF.
      ELSE.
        PERFORM ENQUEUE USING 'D'.
        IF RC = 0.
          DISPLAY = 'X'.
          LOOP AT TC-COLS INTO COL.
            COL-SCREEN-INPUT = '0'.
            MODIFY TC-COLS FROM COL INDEX SY-TABIX.
          ENDLOOP.
        ENDIF.
      ENDIF.

    WHEN 'SORTUP'.
      READ TABLE TC-COLS INTO COL WITH KEY SELECTED = 'X'.
      IF SY-SUBRC = 0.
        SPLIT COL-SCREEN-NAME AT '-' INTO HELP FLDNAME.
        SORT I_BINLOC ASCENDING BY (FLDNAME).
      ENDIF.

    WHEN 'SORTDOWN'.
      READ TABLE TC-COLS INTO COL WITH KEY SELECTED = 'X'.
      IF SY-SUBRC = 0.
        SPLIT COL-SCREEN-NAME AT '-' INTO HELP FLDNAME.
        SORT I_BINLOC DESCENDING BY (FLDNAME).
      ENDIF.

    WHEN 'INSERT'.
      READ TABLE TC-COLS INTO COL WITH KEY SCREEN-INPUT = '1'.
      IF SY-SUBRC = 0.
        LOOP AT I_BINLOC INTO ZMBINLOC WHERE ZMARK = 'X'.
          CLEAR ZMBINLOC.
          INSERT ZMBINLOC INTO I_BINLOC INDEX SY-TABIX.
        ENDLOOP.
        DESCRIBE TABLE I_BINLOC LINES TC-LINES.
      ENDIF.

    WHEN 'DELETE'.
      READ TABLE TC-COLS INTO COL WITH KEY SCREEN-INPUT = '1'.
      IF SY-SUBRC = 0.
        LOOP AT I_BINLOC INTO ZMBINLOC WHERE ZMARK = 'X'.
          I_DELETE = ZMBINLOC.
          I_DELETE-ZMARK = SPACE.
          APPEND I_DELETE.
          DELETE I_BINLOC.
        ENDLOOP.
        DESCRIBE TABLE I_BINLOC LINES TC-LINES.
      ENDIF.

    <b>* Select all entries in table control 
WHEN 'SELALL'.
      READ TABLE TC-COLS INTO COL WITH KEY SCREEN-INPUT = '1'.
      IF SY-SUBRC = 0.
        LOOP AT I_BINLOC INTO ZMBINLOC.
          ZMBINLOC-ZMARK = 'X'.
          MODIFY I_BINLOC FROM ZMBINLOC.
        ENDLOOP.
        DESCRIBE TABLE I_BINLOC LINES TC-LINES.
      ENDIF.</b>

    WHEN 'DESALL'.
      READ TABLE TC-COLS INTO COL WITH KEY SCREEN-INPUT = '1'.
      IF SY-SUBRC = 0.
        LOOP AT I_BINLOC INTO ZMBINLOC.
          ZMBINLOC-ZMARK = ' '.
          MODIFY I_BINLOC FROM ZMBINLOC.
        ENDLOOP.
        DESCRIBE TABLE I_BINLOC LINES TC-LINES.
      ENDIF.

    WHEN 'COPY'.
      READ TABLE TC-COLS INTO COL WITH KEY SCREEN-INPUT = '1'.
      IF SY-SUBRC = 0.
        CALL SCREEN 200 STARTING AT 03 01 ENDING AT 32 4.
        IF COPY_OK = 'ENTER'.
          LOOP AT I_BINLOC INTO ZMBINLOC WHERE ZMARK = 'X'.
            ZMBINLOC-WERKS = COPY_WERKS.
            ZMBINLOC-LGORT = COPY_LGORT.
            ZMBINLOC-ZMARK = ' '.
            INSERT ZMBINLOC INTO I_BINLOC INDEX SY-TABIX.
          ENDLOOP.
          SORT I_BINLOC ASCENDING BY WERKS LGORT ZBINLOC.
          DELETE ADJACENT DUPLICATES FROM I_BINLOC.
          DESCRIBE TABLE I_BINLOC LINES TC-LINES.
        ENDIF.
      ENDIF.

    WHEN 'SAVE'.
      SORT I_BINLOC ASCENDING BY WERKS LGORT ZBINLOC.
      DELETE ADJACENT DUPLICATES FROM I_BINLOC.
      IF NOT I_DELETE[] IS INITIAL.
        DELETE ZMBINLOC FROM TABLE I_DELETE.
      ENDIF.

      MODIFY ZMBINLOC FROM TABLE I_BINLOC.
      IF SY-SUBRC = 0.
        MESSAGE S899(BD) WITH TEXT-002.
      ENDIF.

    WHEN 'EXIT'.
      PERFORM ENQUEUE USING 'D'.
      LEAVE PROGRAM.

    WHEN OTHERS.
  ENDCASE.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

Hope this will help.

Regards,

Ferry Lianto