Академический Документы
Профессиональный Документы
Культура Документы
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.
Read more about SAP R3 systems
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.
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.
from the internal table and then storing the altered rows of the table control back to the
internal table.
1. Method 1: Read the internal table into the Table Control in the screens 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.
Method 1 (table control fields = itab fields)
In the flow logic we can read an internal table using the LOOP statement. Define the
reference to the relevant able control by specifying WITH CONTROL
Determine which table entry is to be read by specifying CURSOR CURRENT_LINE.
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)
PROCESS BEFORE OUTPUT.
LOOP AT ITAB_REG WITH CONTROL TCREG
CURSOR TCREG-CURRENT_LINE.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT ITAB_REG.
MODULE MODIFY_ITAB_REG.
ENDLOOP.
MODULE MODIFY_ITAB_REG INPUT.
MODIFY ITAB_REG INDEX TCREG-CURRENT_LINE.
ENDMODULE.
Method 2 (table control fields = dict. fields)
If using a LOOP statement without an internal table in the flow logic, we must read the
data in a PBO module which is called each time the loop is processed.
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.
PROCESS AFTER INPUT.
LOOP WITH CONTROL TCREG.
CHAIN.
FIELD: ITAB_REG-REG,
ITAB_REG-DESC.
MODULE MODIFY_ITAB_REG
ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
MODULE READ_ITAB_REG OUTPUT.
READ TABLE ITAB_REG INDEX TCREG-CURRENT_LINE.
I IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING ITAB_REREG TO TCREG.
ELSE.
EXIT FROM STEP-LOOP.
ENDIF.
ENDMODULE.
MODULE MODIFY_ITAB_REG INPUT.
MOVE-CORRESPONDING TCREG TO ITAB_REG.
MODIFY ITAB_REG INDEX
TCREG-CURRENT_LINE.
ENDMODULE.
Updating the internal table
Method 1
PROCESS AFTER INPUT.
LOOP AT ITAB_REG.
CHAIN.
FIELD: ITAB_REG-REG,
ITAB_REG-DESC.
MODULE MODIFY_ITAB_REG ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
MODULE MODIFY_ITAB_REG INPUT.
ITAB_REG-MARK = 'X'.
MODIFY ITAB_REG INDEX TCREG-CURRENT_LINE.
ENDMODULE.
Method 2
PROCESS AFTER INPUT.
LOOP WITH CONTROL TCREG.
CHAIN.
FIELD: TCREG-REG,
TCREG-DESC.
MODULE MODIFY_ITAB_REG ON CHAIN-REQUEST.
ENDCHAIN.
ENDLOOP.
MODULE MODIFY_ITAB_REG INPUT.
MOVE-CORRESPONDING TCREG TO ITAB_REG.
I TAB_REG-MARK = 'X'.
MODIFY ITAB_REG INDEX TCREG-CURRENT_LINE.
ENDMODULE.
Updating the database
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