03-24-2006 4:02 PM
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
03-24-2006 4:06 PM
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.
03-24-2006 4:06 PM
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.
03-24-2006 4:10 PM
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.
03-24-2006 4:11 PM
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
03-24-2006 4:54 PM
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.
03-24-2006 5:14 PM
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