AT - Events in lists
Variants
1. AT LINE-SELECTION.
2. AT USER-COMMAND.
3. AT PFn.
Variant 1
AT LINE-SELECTION.
Effect
Event in interactive reporting
This event is processed whenever the user chooses a valid line in the
list (i.e. a line generated by statements such as
WRITE ,
ULINE or
SKIP ) with the cursor and presses the
function key which has the function PICK in the interface
definition. This should normally be the function key F2 , because
it has the same effect as double-clicking the mouse, or single-clicking
in the case of a hotspot .
The processing for the event AT LINE-SELECTION usually generates
further list output (the details list) which completely covers the
current list display. If the latter is still visible (to aid user
orientation), this may be due to the key word
WINDOW .
In most cases, the information is from the selected line is used to
retrieve more comprehensive information by direct reading. When
displaying the original list, you store the key terms needed for this
in the HIDE area of the output line.
Note
You can choose a line and start new processing even in the
details lists.
The following system fields are useful for orientation purposes, since
their values change with each interactive event executed.
SY-LSIND Index of list created by current event (basic list =
0, 1st details list = 1, ...)
SY-PFKEY Status of displayed list
(SET PF-STATUS )
SY-LISEL Contents of selected line
SY-LILLI Absolute number of this line in the displayed list
SY-LISTI Index of this list - usually SY-LSIND - 1
(READ LINE )
SY-CUROW Last cursor position: Line in window
SY-CUCOL Last cursor position: Column in window
(GET CURSOR )
SY-CPAGE 1st displayed page of displayed list
SY-STARO 1st displayed line of this page of displayed list
SY-STACO 1st displayed column of displayed list
(SCROLL LIST )
The system field SY-LSIND defines the line selection level
(basic list: SY-LSIND = 0).
Example
-
DATA TEXT(20).
START-OF-SELECTION.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
AT LINE-SELECTION.
CASE TEXT.
WHEN 'List index'.
PERFORM WRITE_AND_HIDE USING 'X' SPACE.
WHEN 'User command'.
PERFORM WRITE_AND_HIDE USING SPACE 'X'.
WHEN OTHERS.
SUBTRACT 2 FROM SY-LSIND.
PERFORM WRITE_AND_HIDE USING SPACE SPACE.
ENDCASE.
CLEAR TEXT.
FORM WRITE_AND_HIDE USING P_FLAG_LSIND P_FLAG_UCOMM.
WRITE / 'SY-LSIND:'.
PERFORM WRITE_WITH_COLOR USING SY-LSIND P_FLAG_LSIND.
TEXT = 'List index'.
HIDE TEXT.
WRITE / 'SY-UCOMM:'.
PERFORM WRITE_WITH_COLOR USING SY-UCOMM P_FLAG_UCOMM.
TEXT = 'User command'.
HIDE TEXT.
IF SY-LSIND > 0.
WRITE / 'PICK here to go back one list level'.
ENDIF.
ENDFORM.
FORM WRITE_WITH_COLOR USING P_VALUE
P_FLAG_POSITIVE.
IF P_FLAG_POSITIVE = SPACE.
WRITE P_VALUE COLOR COL_NORMAL.
ELSE.
WRITE P_VALUE COLOR COL_POSITIVE.
ENDIF.
ENDFORM.
Depending on whether you choose the line at SY-LSIND or
SY-UCOMM , the next details list contains the corresponding value
with the color "positive". If the line is chosen without
HIDE information, the list level is reduced.
Variant 2
AT USER-COMMAND.
Effect
Event in interactive reporting
This event is executed whenever the user presses a function key in the
list or makes an entry in the command field .
Some functions are executed directly by the system and thus cannot be
processed by programs. These include:
PICK See variant AT LINE-SELECTION
PFn See variant AT PFn
/... System command
%... System command
PRI Print
BACK Back
RW Cancel
P... Scroll function (e.g.: P+ , P- , PP+3 ,
PS-- etc.)
Instead of this functions, you can use the
SCROLL statement in programs.
Since many of these system functions begin with "P", you should avoid
using this letter to start your own function codes.
Otherwise, the effect is as for AT LINE-SELECTION ; also, the
current function code is stored in the system field SY-UCOMM .
Example
-
DATA: NUMBER1 TYPE I VALUE 20,
NUMBER2 TYPE I VALUE 5,
RESULT TYPE I.
START-OF-SELECTION.
WRITE: / NUMBER1, '?', NUMBER2.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'ADD'.
RESULT = NUMBER1 + NUMBER2.
WHEN 'SUBT'.
RESULT = NUMBER1 - NUMBER2.
WHEN 'MULT'.
RESULT = NUMBER1 * NUMBER2.
WHEN 'DIVI'.
RESULT = NUMBER1 / NUMBER2.
WHEN OTHERS.
WRITE 'Unknown function code'.
EXIT.
ENDCASE.
WRITE: / 'Result:', RESULT.
After entry of a function code, the appropriate processing is
performed under the event AT USER-COMMAND and the result is
displayed in the details list.
Variant 3
AT PFn.
Effect
Event in interactive reporting
Here, n stands for a numeric value between 0 and 99.
This event is executed whenever the user presses a function key that
contains the function code PFn in the interface definition. The
default status for lists contains some of these functions.
Otherwise, the effect is as for the variant AT LINE-SELECTION .
The cursor can be on any line.
Notes
To ensure that the chosen function is executed only for
valid lines, you can check the current HIDE
information.
This variant should be used only for test or prototyping purposes,
since the default status is not normally used. Instead, you should set
a program-specific status with SET PF-STATUS
. This should not contain any function codes beginning
with " PF ".
Example
-
DATA NUMBER LIKE SY-INDEX.
START-OF-SELECTION.
DO 9 TIMES.
WRITE: / 'Row', (2) SY-INDEX.
NUMBER = SY-INDEX.
HIDE NUMBER.
ENDDO.
AT PF8.
CHECK NOT NUMBER IS INITIAL.
WRITE: / 'Cursor was in row', (2) NUMBER.
CLEAR NUMBER.
Index
© SAP AG 1996