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
Add a comment