FIELD_TOUCHED()
The FIELD_TOUCHED() operator
checks if fields were modified during the dialog execution.
Syntax
FIELD_TOUCHED (
{ [group.]field.*
| group.*
| *
} [,...] ) - group can be a table name, a screen record,
a screen array or
FORMONLY. - field is the name of the field in the form.
Usage
FIELD_TOUCHED returns TRUE if
the value of a screen field (or multiple fields) has changed
since the beginning of the interactive instruction.
The operator
accepts a list of explicit field names, and supports the [group.]*
notation in order to check multiple fields in a single evaluation.
When passing a simple asterisk (*) to the
operator, the runtime system will check all fields used by the
current dialog.
When used in an INPUT ARRAY instruction,
the runtime system assumes that you are referring to the current
row.
The FIELD_TOUCHED operator can only
be used inside an INPUT, INPUT ARRAY and CONSTRUCT interaction
block.
For more details about the FIELD_TOUCHED operator
usage and the understand the "touched flag" concept, refer
to the definition of the DIALOG instruction.
Do not confuse the FIELD_TOUCHED operator withFGL_BUFFERTOUCHED
built-in function; which checks a different field modification
flag, that is reset when entering the field. The global touched
flag controlled by FIELD_TOUCHED is reset when the
dialog starts or when DIALOG.setFieldTouched() is
used.
Example
INPUT ...
...
AFTER FIELD custname
IF FIELD_TOUCHED( customer.custname ) THEN
MESSAGE "Customer name was changed."
END IF
...
AFTER INPUT
IF FIELD_TOUCHED( customer.* ) THEN
MESSAGE "Customer record was changed."
END IF
...