ON CHANGE OF f.
... OR f1
Executes the processing block enclosed by the " ON
CHANGE OF f " and " ENDON " statements whenever the contents of
the field f change (control break processing).
Normally, you use the statement to manipulate database fields during
GET events or SELECT / ENDSELECT processing.
There are special control structures for processing
control breaks in LOOP s on
internal tables or extract datasets
ON CHANGE OF is unsuitable for recognizing control levels in
loops of this type because it always creates a global auxiliary field
which is used to check for changes. This global auxiliary field can
only be changed in the relevant ON CHANGE OF statement. It is
not reset when the processing goes into loops or subroutines, so
unwanted effects can occur if the loop or subroutine is executed again.
Also, since it is set to its initial value when created (like any other
field), any ON CHANGE OF processing will be executed after the
first test, unless the contents of the field concerned happen to be
identical to the initial value.
SELECT * FROM T100 WHERE SPRSL = SY-LANGU AND
MSGNR < '010'
ORDER BY PRIMARY KEY.
ON CHANGE OF T100-ARBGB.
WRITE: / '***', T100-ARBGB, '***'.
WRITE: / T100-MSGNR, T100-TEXT.
Displays all messages with their numbers in the logon language,
provided the number is less than '010'.
Each time the message class changes, it is output.
... OR f1
Also executes the code whenever the contents of the
field f1 changes.
You can use this addition several times.
* Logical database F1S
TABLES: SPFLI, SFLIGHT, SBOOK.
ON CHANGE OF SPFLI-CARRID OR
WRITE: /5 SPFLI-CARRID, SPFLI-CONNID,
5 SFLIGHT-FLDATE, SPFLI-FLTIME,
5 SFLIGHT-SEATSMAX, SFLIGHT-SEATSOCC.
WRITE: / SBOOK-CUSTOMID.
The code between ON CHANGE OF and ENDON is executed
only if at least one of the fields SPFLI-CARRID ,
SPFLI-CONNID or SFLIGHT-FLDATE has changed, i.e. there is
a different flight connection (which also has bookings).
Between ON CHANGE OF and ENDON , you can use
ELSE for case distinction.
You can also use ELSEIF statements in conjunction with special
implementation of ON , but should always try to avoid this
because they may not be supported in future.
AT - control breaks
with internal tables
AT - control breaks with extracts
© SAP AG 1996