BEFORE FIELD block

In dialog instructions INPUT, INPUT ARRAY, CONSTRUCT or in a DISPLAY ARRAY using the FOCUSONFIELD attribute, the BEFORE FIELD block is executed every time the specified field gets the focus.

For single record inputs driven by INPUT or query by example (QBEs) driven by CONSTRUCT, the BEFORE FIELD block is executed when moving the focus from field to field.

For editable lists driven by INPUT ARRAY, the BEFORE 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 BEFORE FIELD block is executed when moving the focus from field to field. However, the fields will not be editable as in an INPUT ARRAY.

Important: The BEFORE FIELD block is also executed when performing a NEXT FIELD instruction.

The BEFORE FIELD keywords must be followed by a list of form field specification. The screen-record name can be omitted.

BEFORE FIELD is executed after BEFORE INPUT, BEFORE CONSTRUCT, BEFORE ROW and BEFORE INSERT.

Use this block to do some field value initialization, or to display a message to the user:

INPUT BY NAME p_cust.* ...
   BEFORE FIELD cust_status
     LET p_cust.cust_comment = NULL
     MESSAGE "Enter customer status"

When using the default FIELD ORDER CONSTRAINT mode, the dialog executes the BEFORE FIELD block of the field corresponding to the first variable of an INPUT or INPUT ARRAY, even if that field is not editable (NOENTRY, hidden or disabled). The block is executed when you enter the dialog and every time you create a new row in the case of INPUT ARRAY. This behavior is supported for backward compatibility. The block is not executed when using the FIELD ORDER FORM, the mode recommended for DIALOG instructions.

With the FIELD ORDER FORM mode, for each dialog executing the first time with a specific form, the BEFORE FIELD block will be invoked for the first field of the initial tabbing list defined by the form, even if that field was hidden or moved around in a table. The dialog then behaves as if a NEXT FIELD first-visible-column would have been done in the BEFORE FIELD of that field.

When form-level validation occurs and a field contains an invalid value, the dialog gives the focus to the field, but no BEFORE FIELD trigger will be executed.