2. Objectives
• Describe the different ways of invoking additional forms
• Open, call, and close forms
• Navigation between forms
• Control opened forms and called forms
• Manage transaction processing for opened forms and called forms
• Choose the most appropriate method for invoking forms
• Pass form parameters
http://ebiztechnics.blogspot.com
4. Characteristics of OPEN_FORM
• Restricted
• Not valid in Enter Query mode
• No savepoint issued
• Modeless with respect to other opened forms
• Session run time option: FORMS60_SESSION
http://ebiztechnics.blogspot.com
6. Navigating Between Forms
Navigation and validation aspects:
• Each open form has a current item.
• There is no validation when navigating
between forms.
• No triggers fire when navigating
between forms, except the When-Window-Activated/Deactivated and
When-Form-Navigate triggers.
• Click the noncurrent item in the other form.
http://ebiztechnics.blogspot.com
7. Open Forms with the Same Session
• Commit processing in all forms within
the same session, in a certain order
• If error occurs, then focus set to
initiating form
• Messages per open form within the
same session
• CLEAR_FORM usually causes a
ROLLBACK statement
http://ebiztechnics.blogspot.com
8. Open Forms in Different Sessions
Runform Server
Connection
A
B
C
Session
http://ebiztechnics.blogspot.com
10. Characteristics of CALL_FORM
• Unrestricted
• Valid in Enter Query mode
• Savepoint issued
• Modal with respect to calling form
• Does not cause navigation and validation
• Forms called from query-only form are
always query-only
• Exiting a called form
http://ebiztechnics.blogspot.com
11. Save Not Allowed in
Post-Only Mode Form
A calling form has unapplied changes.
Save not allowed.
http://ebiztechnics.blogspot.com
12. Transaction Processing for Called Forms
• Characteristics of Post-Only mode:
– Commit not allowed, only a post
– Full rollback not allowed, only a
rollback to savepoint
• Rollback behavior of called forms
• Call savepoints and post savepoints
http://ebiztechnics.blogspot.com
13. Transaction Processing for Called Forms
IF <form called> THEN
POST;
ELSE
COMMIT_FORM;
END IF;
• Examples of adjusting default
transaction processing:
• Key-Commit on form
http://ebiztechnics.blogspot.com
14. Transaction Processing for Called Forms
Key-Exit on form
Adjust labels of corresponding buttons and menu items
IF <form called> THEN
EXIT_FORM
ELSE
EXIT_FORM;
END IF;
http://ebiztechnics.blogspot.com
16. Controlling Opened and Called Forms
Form A
CALL_FORM
Form B
Form C
OPEN_FORM
Form D
OPEN_FORM
CALL_FORM
Form E
Form F
CALL_FORM
Form A+B+E = Call form stack
http://ebiztechnics.blogspot.com
17. Different Ways of Invoking Forms
• When to use OPEN_FORM
• When to open a form in a new session
• When to use CALL_FORM
• When to use NEW_FORM
http://ebiztechnics.blogspot.com
18. Closing a Form
• CLOSE_FORM:
– form_name
– form_id
• Characteristics of CLOSE_FORM:
– Restricted
– Not valid in Enter-Query mode
– CLOSE_FORM or EXIT_FORM
– Cannot close a form that called
another form
http://ebiztechnics.blogspot.com
19. Using Form Parameters
• What is a
form
parameter?
• How to
create a
form
parameter?
http://ebiztechnics.blogspot.com
20. Passing Values to Form
P1
P2
P3
Runform
command line
Design-time
parameters
Form B
Parameter
list
OPEN_FORM
CALL_FORM
NEW_FORM
Form A
Run time
http://ebiztechnics.blogspot.com
21. Using Form Parameter Values
• Passing a form parameter at run time:
from command line.
• ifrun60 module=empl.fmx userid=scott/tiger@trn9
dept_id=30
• Referencing form parameters from
within a module:
– :PARAMETER.parameter_name
– ‘PARAMETER.parameter_name’
http://ebiztechnics.blogspot.com
22. Parameter Lists
OPEN_FORM( …, )
CALL_FORM( …, )
NEW_FORM( …, )
DEPT_ID
CUST
TEXT_PARAMETER
DATA_PARAMETER
‘30’
‘CUST_RG’
Parameter List
The default parameter list is DEFAULT
http://ebiztechnics.blogspot.com
24. Passing Data Between Forms
P1
P2
P3
P1
P2
P3
OPEN_FORM(*)
1. If a parameter list exists, destroy it.
2. Create a parameter list.
3. Add a text parameter to a list with the value
of an item.
4. Open a form with this parameter list.
Design-time
parameters
Form B
Run time
parameters
Form A
http://ebiztechnics.blogspot.com
25. Passing Data Between Forms
• Characteristics of form parameters:
– Can be used only as input parameters
– Have data type CHAR, NUMBER, or DATE
– CHAR parameter can be up to 64 K long
– Can be design-time objects
• Characteristics of global variables:
– Are programmatic constructs
– Have type CHAR(255)
– Are visible to all forms in the current
Runform session
http://ebiztechnics.blogspot.com
26. Summary
• Open, call, and close forms:
– OPEN_FORM, CALL_FORM, and CLOSE_FORM
– Multiple database sessions
• Navigate between forms:
– NEXT_FORM,
PREVIOUS_FORM, and GO_FORM
• Identify restrictions on the call form stack
• Passing parameters to forms.
http://ebiztechnics.blogspot.com
Notes de l'éditeur
Example
Key-Commit trigger at form level:
BEGIN
IF GET_APPLICATION_PROPERTY(calling_form) is not null THEN
POST;
ELSE
COMMIT_FORM;
END IF;
END;
Example
Key-Exit trigger at form level:
BEGIN
IF GET_APPLICATION_PROPERTY(calling_form) is not null THEN
EXIT_FORM(ask_commit , no_rollback);
ELSE
EXIT_FORM;
END IF;
END;
Technical Note
You can obtain information about the call form stack by using the
GET_APPLICATION_PROPERTY built-in with the CALLING_FORM parameters.
Technical Note
The parameters whose values are being passed must be defined in the called form at
Design time. That is, the called form must be expecting a value for each of the
Parameters included in the parameter list it receives from the calling form.
Technical Note
You can not create a parameter list named DEFAULT or that already exists. Use
GET_PARAMETER_LIST and ID_NULL to check whether a parameter list already
Exists.
Technical Note
Global variables are used more often than parameters for passing data between forms.