Create Table Control Using ABAP Programming
Create Table Control Using ABAP Programming
Programming
June 29th, 2009 ekoy posted in Abap/4 | No Comments »
Tags: abab, table control
In last two weeks, I have learned self-taught how to create table control in SAP Screen using
ABAP 4. After trial and error, finally I have finished my small project. While learning about
table control, I use SAP Help as main reference, some websites and presentation slides from
Michael Adams, Queensland University of Technology.
A Table Control is a screen ‘container’ or object that allows display of multiple rows of a table
(database or internal table) on a screen. It is good for displaying a one-to-many relationship on
the one screen. The table control object has many features built in to enhance screen display and
usability.
As well as drawing the table control on the screen it is necessary to declare the table control as a
data item (in the TOP include program for the transaction).
• <ctrl> is the name of the table control on a screen in the ABAP program
• <TABLEVIEW> corresponds to a complex type – (CXTAB_CONTROL defined in the
ABAP dictionary)
• <scr> is the screen from which the table control will get its initial values
2. Adding table control to a screen
In the graphical screen editor choose the table control element button. Use the left mouse button
to position and size the control on the screen.
To add field to table control, we can retrieve from table or internal table. Click on icon
“dictionary/program field window” or function key F6.
There two option while retrieve field, i.e. based on database table or internal table. If want to
retrieve from database table, input the name of table then click push button “Get from
Dictionary”. If want to retrieve from internal table, input the internal table name then click push
button “Get from program”.
Mark the field to be added to table control, and then click on push button OK.
Drag selected fields into table then release the mouse button.
Here the fields we selected will be displayed in reversed order. I do not exactly why it happens. I
have tried some ways and tricks to display in correct order, but the fields still displayed in
reversed order. Finally, to get the correct order I selected the fields one by one.
Label column is text field. To add it, just click on the text field icon, drag it onto header of the
column and then type the label.
Table Control Principle
There are a set of programming principles that should be adhered to when using table controls
and step loops. Data from the database should be initially loaded into an internal table. This
means that the database is accessed for read purposes only once in the transaction. Next the rows
of the internal table are loaded into the table control. Any changes that are made to the data are
then saved back to the internal table. At the end of the transaction, the contents of the internal
table can be written back to the database, again to minimize database I/O.
PAI logic for screen 1 (see screen below) loads the internal table with data from the database
according to the entries supplied by the user.
PBO logic for screen 2 (see screen below) populates the table control from the internal table
(buffer).
User action in screen 2 triggers the PAI logic. PAI logic updates the internal table with new
values entered (into the table control screen fields) by the user.
PAI logic is triggered by actions such as scrolling down a single row as well as actions such as
BACK, EXIT, etc.
Unless the user action causes the transaction to leave the current screen, after the PAI modules
have been executed, the PBO modules for the screen are executed again. Thus the table control
fields are updated or refreshed after every user action.
In PBO processing fields are transported from the module pool to the screen in a predefined
order.
• The table control step loop is processed row by row. Fields with corresponding names are
transported from the module pool to the screen.
• After the step loop has been processed all remaining module pool fields are transported to
the screen.
PAI (Process After Input)
• All screen fields that do not belong to a table control and are not specified in a FIELD
statement are transported to module pool fields
• Table control fields are transported row by row to module pool fields
• Fields specified in FIELD statements are transported immediately before the FIELD
statement is executed
1. Method 1: Read the internal table into the Table Control in the screen’s flow logic. Used
when the names of the Table Control fields are based on fields of the internal table.
2. Method 2: Read the internal table into the Table Control in the module pool code. Used
when the names of the Table Control fields are based on fields of the database table.
After the read operation the field contents are placed in the header line of the internal table. If the
fields in the table control have the same name as the internal they will be filled automatically.
Otherwise we need to write a module to transfer the internal table fields to the screen fields.
We must reflect any changes the user makes to the fields of the table control in the internal table
otherwise they will not appear when the screen is redisplayed after PBO processing, (eg, after the
user presses Enter or scrolls) However, this processing should be performed only if changes have
actually been made to the screen fields of the table control (hence the use of the ON REQUEST)
Since, in this case, the system cannot determine the number of internal table entries itself, we
must use the EXIT FROM STEP-LOOP statement to ensure that no blank lines are displayed in
the table control if there are no more corresponding entries in the internal table.
PROCESS BEFORE OUTPUT.
LOOP WITH CONTROL TCREG.
MODULE READ_ITAB_REG.
ENDLOOP.
MODULE MODIFY_ITAB_REG
ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
Method 1
Method 2
MODULE USER_COMMAND_100.
CASE OK_CODE.
WHEN ‘SAVE’.
LOOP AT ITAB-REG.
CHECK ITAB_REG-MARK = ‘X’.
MOVE-CORRESPONDING ITAB_REG TO TCREG.
UPDATE TCREG.
ENDLOOP.
WHEN …
…
ENDCASE.
ENDMODULE.
Those are the simple steps how to create table control. What I have learned this week only the
beginning. Actually there are more areas in SAP Table Control with abap programming that can
be explored deeper, but may be next time.