Controlling a Table Control
1. Create a ModulePool program.
2. Create one Screen: 100
3. Create the required screen elements:
Function code for the buttons:
Display : DISPLAY
Exit : EXIT
4. Paste this code in your program
PROGRAM zmtc01.
TABLES: sflight. ” Table Name
TYPES: BEGIN OF ty_sflight, ” Structure
carrid TYPE sflight–carrid,
connid TYPE sflight–connid,
fldate TYPE sflight–fldate,
price TYPE sflight–price,
sel TYPE c,
END OF ty_sflight.
DATA: flag TYPE c.
DATA: flag1 TYPE c.
DATA: int TYPE i,
id TYPE i.
DATA: it_sflight TYPE TABLE OF ty_sflight,
wa_sflight TYPE ty_sflight.
DATA: carrid TYPE sflight–carrid.
DATA: ok_code TYPE sy–ucomm.
CONTROLS: table_control TYPE TABLEVIEW USING SCREEN 100.
*&———————————————————————*
*& Module USER_COMMAND_0100 INPUT
*&———————————————————————*
* text
*———————————————————————-*
MODULE user_command_0100 INPUT.
CASE sy–ucomm.
WHEN ‘DIS’.
SELECT carrid connid fldate price FROM sflight INTO CORRESPONDING FIELDS OF TABLE it_sflight WHERE carrid = sflight–carrid.
flag = ‘X’.
IF sy–subrc = 0.
MESSAGE ‘ALL THE VALUES ARE SUCCESSFULY DISPLAYED’ TYPE ‘S’.
ELSE.
MESSAGE ‘THERE IS NO VALUE AVAILABLE’ TYPE ‘E’.
ENDIF.
WHEN ‘EXIT’.
LEAVE PROGRAM.
WHEN ‘INS’.
* if id is initial.
CLEAR wa_sflight.
INSERT wa_sflight INTO it_sflight INDEX 1.
* else.
* clear wa_sflight.
* INSERT WA_SFLIGHT INTO IT_SFLIGHt index id.
* endif.
id = table_control–current_line.
WHEN ‘DEL’.
LOOP AT it_sflight INTO wa_sflight.
IF wa_sflight–sel = ‘X’.
DELETE it_sflight WHERE sel = ‘X’.
ENDIF.
ENDLOOP.
WHEN ‘EDIT’.
flag1 = ‘X’.
ENDCASE.
ENDMODULE. ” USER_COMMAND_0100 INPUT
*&———————————————————————*
*& Module STATUS_0100 OUTPUT
*&———————————————————————*
* text
*———————————————————————-*
MODULE status_0100 OUTPUT.
IF it_sflight IS INITIAL.
SELECT carrid connid fldate price FROM sflight INTO CORRESPONDING FIELDS OF TABLE it_sflight.
ENDIF.
ENDMODULE. ” STATUS_0100 OUTPUT
*&———————————————————————*
*& Module M1 INPUT
*&———————————————————————*
* text
*———————————————————————-*
MODULE m1 INPUT.
MODIFY it_sflight FROM wa_sflight INDEX table_control–current_line.
* This code is for selecting the record by selecting the lead selection. for this in screen in pai we need to witr some code
IF wa_sflight–sel = ‘X’.
id = table_control–current_line.
ENDIF.
* CLEAR WA_SFLIGHT.
* INSERT WA_SFLIGHT INTO IT_SFLIGHT INDEX 1.
*Int = TABLE_CONTROL-current_line.
ENDMODULE. “M1 INPUT
*&———————————————————————*
*& Module EDIT OUTPUT
*&———————————————————————*
* text
*———————————————————————-*
MODULE edit OUTPUT.
* This code is for making the new record editable.
LOOP AT SCREEN.
IF ( ok_code = ‘EDIT’ AND table_control–current_line = id ) OR ( table_control–current_line = 1 AND sy–ucomm = ‘INS’).
screen–input = 1.
MODIFY SCREEN.
ELSEIF wa_sflight–sel = ‘X’.
screen–input = 1.
MODIFY SCREEN.
ELSEIF ( wa_sflight–carrid IS INITIAL OR wa_sflight–connid IS INITIAL OR wa_sflight–fldate IS INITIAL OR wa_sflight–price IS INITIAL ).
screen–input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE. ” EDIT OUTPUT
5. In Flow Logic of screen 100, Paste this code:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.
LOOP AT IT_SFLIGHT INTO WA_SFLIGHT WITH CONTROL TABLE_CONTROL.
MODULE EDIT.
ENDLOOP.
*
PROCESS AFTER INPUT.
LOOP AT IT_SFLIGHT.
FIELD: WA_SFLIGHT–SEL MODULE M1.
ENDLOOP.
MODULE USER_COMMAND_0100.
6. Activate it, Create the Transaction.
Good explanation, very helpful for a beginner like me.