Professional Documents
Culture Documents
Advanced Concepts
1-1
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Objectives
1-2
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Related Course Material
1-3
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Agenda
Global Variables
Query-by-Example (QBE) mode
Special menu entries
‘Zooming’
1-4
TCS Internal Copyright © 2004, Oracle. All rights reserved.
WARNING!
Form Personalizations allows you to
fundamentally alter the behavior of the
product that Oracle ships, and access any and
all data. Therefore,
This feature should only be made available to
trusted users.
Avoid building Personalizations on a production
system.
– Form Personalizations should first be
entered and thoroughly QA’ed on a test
system before they are loaded to a
production system
1-5
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Global Variables
GLOBAL variables are dynamically created at
runtime
They can hold up to 255 bytes
They are visible across all forms that are
currently running
They are very useful for Form Personalizations!
– Allow you to establish a value once then re-
use it
– Allow you to pass information between
forms
1-6
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Global Variables, continued
2 Properties affect them:
VALUE:
–
Creates it if it does not exist
– Always sets the value
INITIAL VALUE:
– Creates it if it does not exist, setting it to null
– Only sets the value if it is currently null
1-7
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Global Variables, continued
Name any you create starting with ‘XX’
– Prevent collisions with global variables that base
product code creates
In Conditions and evaluated strings, refer to
them with :global.<name>
– Example: ='Your password must have at least '||:
global.xx_password_length||' characters.'
– References will produce an error if the variable
does not exist yet
Make sure they exist by first setting the INITIAL
VALUE property in a prior action or rule
Remember, they are shared across all forms
1-8
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Global Variables, continued
1-9
TCS Internal Copyright © 2004, Oracle. All rights reserved.
QBE Mode
QBE is a power-user mechanism to locate
records, instead of Find Windows
Normally invoked by selecting View > Query By
Example > Enter from the pulldown menu
The builtin DO_KEY with argument
ENTER_QUERY will invoke this mode, for the
current block
It is a ‘mode’
– Things operate differently, or are suspended, until
you exit this mode by Running a query or selecting
Cancel
– Specifically, any actions after invoking the mode will
not be executed until the mode is exited
1-10
TCS Internal Copyright © 2004, Oracle. All rights reserved.
QBE Mode, continued
Trigger Events can fire in QBE mode, or not
– Set ‘Fire in Enter-Query Mode’ as desired
– This will cause the Rule to execute in both QBE
and ‘normal’ mode
– It is very, very, very rare that you would want your
rules to fire in this mode!
– Later we’ll discuss one example where this could
be used.
1-11
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Special Menus
Embedded in every menu are 45 entries you
can activate
1-13
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Special menus, continued
This action:
1-14
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Special menus, continued
But ‘Special’ simply activates the menu entry
– At runtime, if the user selects it, it emits an event
name that matches the menu entry name
For example, if you activate SPECIAL1, when the
user selects it the event ‘SPECIAL1’ will be sent
– You create a second rule that triggers off that event
and does what you want
WARNING
– Base product code uses these menu entries too.
Select an entry they do not use
The Menu Entry list shows the current label if
there is one; no label is an indication it is currently
unused
1-15
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming
One of the most commonly requested
enhancements:
– The ability to open a function, passing
context from the current function
For example, from the Purchase Orders
form, open the Vendors form, and pass
the vendor on the current PO to query its
details
Special+Globals+QBE let’s you define these
yourself!
1-16
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy
Activate a Special menu
In response to that menu (when selected by the user),
– Copy context, like primary key fields, into globals
Use Conditions to test those values
If they are not set yet, show an error message
If they are set, Open the desired function
In the target form,
– Create a rule that sets the initial value of those globals to null,
to insure they exist
– Then test them: if they are not null,
{this is where other strategies, discussed later, could be used}
Invoke QBE mode on the appropriate block
Copy the values into base table fields
Execute the query
Clear the globals
1-17
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy, continued
To open the desired function
Create an Action of type Builtin, with the Type
FND_FUNCTION.EXECUTE
This example would open the Responsibilities
form (after first checking security):
1-18
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy, continued
Rules in the target form
Rule 1:
– Trigger Event: WHEN-NEW-FORM-INSTANCE
– Action: For one of the global variables being passed, set its
INITIAL VALUE property to null (empty)
This makes sure the next rule will not fail when the form is
opened standalone
Rule 2:
– Trigger Event: WHEN-NEW-FORM-INSTANCE
– Condition: test if that global variable is not null
– Action 1: Builtin GO_BLOCK to the block you want to query
– Action 2: Builtin DO_KEY with ENTER_QUERY to invoke
QBE
– Don’t put more actions here - they will not fire!
1-19
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: One Strategy, continued
Rules in the target form, continued
Rule 3:
– Trigger Event: WHEN-NEW-RECORD-INSTANCE, for the
block you are querying
– Condition: test if that global variable is not null
– ‘Fire in Enter-Query’ mode checked
– Action 1+: set the VALUE of the appropriate fields to have the
values of the globals you passed
The Value is of the format “=:global.<name>”
Create an Action for each variable you need to process
– Action 2+: Set the VALUE of the globals to null (empty)
This prevents future queries from re-running just this one
Create an Action for each variable you need to process
– Action 3: Builtin DO_KEY with EXECUTE_QUERY to run the
query
1-20
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: Other Strategies
Each form in Oracle Applications has its unique quirks. You
may discover other ways to force it to query:
The target function may already accept the value(s) as
an input parameter
– Use the ‘Add Parameters’ button to see parameters
associated with other functions on the same form
– Note that this will not reveal every parameter that a function
takes, nor its intended usage
– Examining source code is the only way to know exactly how
parameters work
– Oracle does not warrant that a parameter will exist or function
the same after a patch
In forms that have Find Windows, it may be possible to
populate the appropriate field(s) in the Find window,
then issue builtin DO_KEY with argument
NEXT_BLOCK
1-21
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Zooming: Other Strategies, continued
You could modify the DEFAULT_WHERE clause of the
appropriate block, then query it using DO_KEY with
argument EXECUTE_QUERY, then reset the
DEFAULT_WHERE clause back to its original value
1-22
TCS Internal Copyright © 2004, Oracle. All rights reserved.
Summary
In this module, you should have learned how to:
Work with GLOBAL variables, including the differecnes
between the properties VALUE and INITIAL VALUE
Understand Oracle Forms Query-by-Example (QBE) mode
Create Special menu entries, and write Rules that respond
to their selection
‘Zoom’ to other functions, and various strategies to try
1-23
TCS Internal Copyright © 2004, Oracle. All rights reserved.