AFTER FIELD block
In dialog instructions INPUT, INPUT ARRAY,
CONSTRUCT or in a DISPLAY ARRAY using the
FOCUSONFIELD attribute, the AFTER FIELD block is executed every
time the focus leaves the specified field.
For single record inputs driven by INPUT or query by example (QBEs) driven by
CONSTRUCT, the AFTER FIELD block is executed when moving the focus
from field to field.
For editable lists driven by INPUT ARRAY, the AFTER FIELD block
is executed when moving the focus from field to field in the same row, or when moving to another row
in the same column.
For record lists driven by DISPLAY ARRAY using the FOCUSONFIELD
attribute, the AFTER FIELD block is executed when moving the focus from field to
field. However, the fields will not be editable as in an INPUT ARRAY.
The AFTER FIELD keywords must be followed by a
list of form field specifications. The screen-record name can be omitted.
AFTER FIELD is executed before
AFTER INSERT, ON ROW CHANGE, AFTER
ROW, AFTER INPUT or AFTER
CONSTRUCT.
When a NEXT FIELD instruction is executed in an AFTER
FIELD block, the cursor moves to the specified field,
which can be the current field. This can be used to prevent
the user from moving to another field / row during data input. Note
that the BEFORE FIELD block is also executed
when NEXT FIELD is invoked.
The AFTER FIELD block of the current field is not executed when performing a
NEXT FIELD; only BEFORE INPUT, BEFORE CONSTRUCT,
BEFORE ROW, and BEFORE FIELD of the target item might be executed,
depending on the sub-dialog type.
When ACCEPT DIALOG, ACCEPT INPUT, or ACCEPT
CONSTRUCT is performed, the AFTER FIELD trigger of the current field is
executed.
Use the AFTER FIELD block to implement field validation
rules:
INPUT BY NAME p_item.* ...
AFTER FIELD item_quantity
IF p_item.item_quantity <= 0 THEN
ERROR "Item quantity cannot be negative or zero"
LET p_item.item_quantity = 0
NEXT FIELD item_quantity
END IF