Table Control in ABAP
Table Control in ABAP
Applies To:
Usage of Table Control in ABAP
Summary
Normally we use wizard if we are working with table control. This document helps us how to create a table
control without using a wizard and how to manipulate the database based on the records in the table control.
All the fields in the screen should be disabled .After clicking that Change button, we should be able to insert
new records and update existing records [Except primary key]. Save in the standard toolbar will be used to
save the changes made. Delete button should be used to delete the rows selected from the database.
A custom table zzz_makt with the following fields is used in this program.
Fields
FieldType
ZMANDT
MANDT
ZMATNR
MATNR(Key field)
ZMAKTX
MAKTX
PICK
CHAR1
By: J.Jayanthi
Company and Title: Project Engineer in Wipro Technologies
Date: 08 March 2005
Table of Contents
Applies To:........................................................................................................................................1
Summary ..........................................................................................................................................1
Table of Contents .............................................................................................................................1
Procedure ..2
Code....................................................................................... Error! Bookmark not defined.0
Output Screens ...................................................................... Error! Bookmark not defined.7
Disclaimer & Liability Notice .........................................................................................................201
Author Bio.....................................................................................................................................212
2005 SAP AG
Table Control
Procedure
Go to SE38 -> Create a program with executable type as Module Pool.
2005 SAP AG
Table Control
2005 SAP AG
Table Control
Right click the program name on the left side. Click Create-> Screen. Then give screen no. [as 9000].
2005 SAP AG
Table Control
Click the layout button. Drag the table control from the controls and place it on screen.
Set the properties of table control as follows.
In the properties,
(1) The separators checkboxes need to be checked.
(2) The W/Selcolumn should be given a name which is having char1 in the database table so that the
selection column is visible in the table control.
(3) In order to view the horizontal scrollbar at runtime, choose the option none in Column sel.
2005 SAP AG
Table Control
2005 SAP AG
Table Control
2005 SAP AG
Table Control
Create the status by right clicking create ->GUI Status in the object display.
Similarly create title.
Set the SAVE , BACK, EXIT, CANCEL in standard toolbar and activate it.
2005 SAP AG
Table Control
Create a transaction by right clicking create ->Transaction in the object display. Enter required fields.
2005 SAP AG
Table Control
Code
In the flow logic of the screen 9000, write the following code.
10
Table Control
***********************************************************************
* Internal table Declaration
***********************************************************************
DATA : i_makt TYPE STANDARD TABLE OF zzz_makt WITH HEADER LINE.
***********************************************************************
* Table control Declaration
***********************************************************************
CONTROLS: t_ctrl TYPE TABLEVIEW USING SCREEN '9000'.
***********************************************************************
* Variable Declaration
***********************************************************************
DATA : flg,
ln TYPE i.
"No. of records
*&---------------------------------------------------------------------*
*&
Module
get_T_CTRL_lines
OUTPUT
*&---------------------------------------------------------------------*
*
Populating data
*----------------------------------------------------------------------*
MODULE get_t_ctrl_lines OUTPUT.
SELECT zmatnr zmaktx
INTO CORRESPONDING FIELDS OF TABLE i_makt
FROM zzz_makt.
DESCRIBE TABLE i_makt LINES ln.
* To make the vertical scroll bar to come on runtime
t_ctrl-lines = ln + 100.
ENDMODULE.
" get_T_CTRL_lines
OUTPUT
*&---------------------------------------------------------------------*
*&
Module
2005 SAP AG
USER_COMMAND_9000
INPUT
11
Table Control
*&---------------------------------------------------------------------*
* Triggering event according to the user command
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
DATA :lv_fcode LIKE sy-ucomm,
lv_answer(1) type c.
"Function Code
"Storing the answer
lv_fcode = sy-ucomm.
CASE lv_fcode.
WHEN 'CHANGE'.
* Setting the flag to make the table control in editable mode[excluding
* primary key].
flg = 'Y'.
WHEN 'DELETE'.
* Setting the flag to make the table control in editable mode after
* deleting the selected line
flg = 'Y'.
* Confirmation of delete
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR
= 'Confirm'
text_question
TEXT_BUTTON_1
= 'Yes'(001)
TEXT_BUTTON_2
= 'No'(002)
IMPORTING
ANSWER
lv_answer.
if lv_answer eq '1'.
* Updating the database table from the internal table
UPDATE zzz_makt FROM TABLE i_makt.
* Deleting the selected row from the internal table
DELETE i_makt WHERE pick = 'X'.
* Deleting the selected row from the database table
DELETE FROM zzz_makt WHERE pick = 'X'.
MESSAGE s005 WITH 'Deleted Successfully'.
2005 SAP AG
12
Table Control
ENDIF.
WHEN 'SAVE'.
* Inserting new record or updating existing record in database table
* from the internal table
MODIFY zzz_makt FROM TABLE i_makt.
MESSAGE s005 WITH 'Saved Successfully'.
WHEN 'BACK'.
SET SCREEN '0'.
WHEN 'EXIT' OR 'CANCEL'.
* Leaving the program
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.
" USER_COMMAND_9000
INPUT
*&---------------------------------------------------------------------*
*&
Module
set_screen_fields
OUTPUT
*&---------------------------------------------------------------------*
* Setting the screen fields
*----------------------------------------------------------------------*
MODULE set_screen_fields OUTPUT.
LOOP AT SCREEN.
IF flg IS INITIAL.
screen-input = 0.
ELSEIF ( flg EQ 'Y' ).
IF ( ( screen-name = 'I_MAKT-ZMAKTX'
OR screen-name = 'I_MAKT-CHECK1' )
AND t_ctrl-current_line LE ln ) .
* Making the screen fields as editable
screen-input = 1.
ELSEIF ( ( screen-name = 'I_MAKT-ZMATNR' )
AND t_ctrl-current_line LE ln ).
* Making the screen field as uneditable
screen-input = 0.
2005 SAP AG
13
Table Control
ENDIF.
ENDIF.
* Modifying the screen after making changes
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.
" set_screen_fields
OUTPUT
*&---------------------------------------------------------------------*
*&
Module
zmatnr
INPUT
*&---------------------------------------------------------------------*
* Appending records to the internal table
*----------------------------------------------------------------------*
MODULE zmatnr INPUT.
MODIFY i_makt INDEX t_ctrl-current_line.
IF t_ctrl-current_line GT ln.
READ TABLE i_makt WITH KEY zmatnr = i_makt-zmatnr.
IF sy-subrc NE 0.
* Inserting record if it does not exist in database
APPEND i_makt.
ELSE.
MESSAGE i005 WITH 'Material Number' i_makt-zmatnr 'already exists'.
ENDIF.
ENDIF.
ENDMODULE.
" zmatnr
INPUT
*&---------------------------------------------------------------------*
*&
Module
set_status
OUTPUT
*&---------------------------------------------------------------------*
* Setting the GUI status
*----------------------------------------------------------------------*
MODULE set_status OUTPUT.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR
2005 SAP AG
'ZTITLE'.
14
Table Control
ENDMODULE.
" set_status
OUTPUT
*&--------------------------------------------------------------------*&
Module
CHECK
INPUT
*&--------------------------------------------------------------------* Modify the internal table using the current line in table control
*---------------------------------------------------------------------MODULE check INPUT.
MODIFY i_makt INDEX t_ctrl-current_line.
ENDMODULE.
2005 SAP AG
" CHECK
INPUT
15
Table Control
Output Screens
Enter the transaction code ZTC.
2005 SAP AG
16
Table Control
After that click Change button. Then the non-primary key will be enabled for the existing records and we can
also enter new
records.
2005 SAP AG
17
Table Control
Then Click Save button in the standard toolbar. Then message saying that Saved Successfully will appear in
the status bar.
2005 SAP AG
18
Table Control
Then select records to be deleted from database. Then click the Delete button. After confirmation it will
delete those records from the database.
2005 SAP AG
19
Table Control
20
Table Control
Author Bio
Working as Project Engineer in Wipro Technologies .
Copyright 2005 SAP AG, Inc. All Rights Reserved. SAP, mySAP, mySAP.com, xApps, xApp, and other SAP products and
services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP AG in
Germany and in several other countries all over the world. All other product, service names, trademarks and registered
trademarks mentioned are the trademarks of their respective owners.
2005 SAP AG
21