ON CHANGE OF f.
This statement is not allowed in an ABAP Objects context. See Prohibit ON CHANGE OF - ENDON.
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 (AT).
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 is only changed in the relevant
ON CHANGE OF statement. It is not reset when the processing
enters 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.
DATA T100_WA TYPE T100.
SELECT * FROM T100
INTO T100_WA
WHERE SPRSL = SY-LANGU AND
MSGNR < '010'
ORDER BY PRIMARY KEY.
ON CHANGE OF T100_WA-ARBGB.
ULINE.
WRITE: / '***', T100_WA-ARBGB, '***'.
ENDON.
WRITE: / T100_WA-MSGNR, T100_WA-TEXT.
ENDSELECT.
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
NODES: SPFLI, SFLIGHT, SBOOK.
GET SBOOK.
ON CHANGE OF
SPFLI-CARRID OR
SPFLI-CONNID OR
SFLIGHT-FLDATE.
ULINE.
WRITE: /5 SPFLI-CARRID,
SPFLI-CONNID,
5 SFLIGHT-FLDATE,
SPFLI-FLTIME,
5 SFLIGHT-SEATSMAX, SFLIGHT-SEATSOCC.
ENDON.
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).
AT - control breaks with
internal tables
AT - control breaks with extracts