Previous | Next | Contents | Index | Navigation | Glossary | Library |
Note: This Zoom demo/example is based on the training class form DEMXXEOR used in the class "Develop Extensions to Oracle Applications" (available through Oracle Education Services). The form files can be found on the Release 10SC Production 13 (and later) Development Kit CD-ROM, installable using the Oracle Installer file WINDOWS.PRD that you find under the ALPHAINS directory. The product name to install is "Training Class Forms (Develop Extensions to Oracle Applications)". See the Readme.txt file included for setting up the corresponding tables and views in your database.
The DEMXXEOR form is a very simple form for entering orders. In this example, we add two parameters (ORDER_ID and CUSTOMER_NAME) to the form that can be accepted from Zoom upon form startup. The form then fires an automatic query based on the parameters if one of the parameters has a value.
For the Zoom itself, we make Zoom available from the first block of the same form. The user can have a value in one or both of the Order Number and Customer Name fields. When the user clicks on the Zoom button, Zoom opens another session of the same form and automatically queries up any existing orders fitting the criteria.
Once you understand how this Zoom works and is implemented, you should be able to take the same approach with other forms (not necessarily zooming to another session of the same form).
Note: The DEMXXEOR form shipped on the Release 10SC Production 15 (and later) Development Kit CD-ROM already has these modifications.
WHERE (:parameter.order_id is null or dem_orders_v.order_id like :parameter.order_id) AND (:parameter.customer_name is null or dem_orders_v.customer_name like :parameter.customer_name)
/* fire automatic query if a parameter has a value from Zoom */ if (:parameter.order_id is not null) or (:parameter.customer_name is not null) then GO_BLOCK('ORDERS'); do_key('EXECUTE_QUERY');
/* clear the parameters after the query so they don't remain criteria for future queries */ :parameter.order_id := null; :parameter.customer_name := null; end if;
------------------------------------------------------------ PACKAGE BODY custom IS -- -- Customize this package to provide specific responses to -- events within Oracle Applications forms. -- -- Do not change the specification of the CUSTOM package -- in any way. -- ------------------------------------------------------------ function zoom_available return BOOLEAN is -- -- This function allows you to specify if zooms exist for the -- current context. If zooms are available for this block, then -- return TRUE; else return FALSE. -- -- This routine is called on a per-block basis within every -- Applications form. Therefore, any code that will enable -- Zoom must test the current -- form and block from which the call is being made. -- -- By default this routine must return FALSE. form_name varchar2(30) := name_in('system.current_form'); block_name varchar2(30) := name_in('system.cursor_block'); begin if (form_name = 'DEMXXEOR' and block_name = 'ORDERS') then return TRUE; else return FALSE; end if; end zoom_available; --------------------------------------------------------------- function style(event_name varchar2) return integer is -- -- This Zoom example does not do anything to the STYLE function
begin return custom.standard; end style; --------------------------------------------------------------- procedure event(event_name varchar2) is -- -- This procedure allows you to execute your code at specific -- events. 'ZOOM' or product-specific events will be passed -- in event_name. See the Applications Technical Reference -- manuals for a list of events that are available through -- this interface. form_name varchar2(30) := name_in('system.current_form'); block_name varchar2(30) := name_in('system.cursor_block'); param_to_pass1 varchar2(255); param_to_pass2 varchar2(255);
BEGIN
if (event_name = 'ZOOM') then
if (form_name = 'DEMXXEOR' and block_name = 'ORDERS') then param_to_pass1 := name_in('ORDERS.order_id'); param_to_pass2 := name_in('ORDERS.customer_name');
/* use fnd_function.execute instead of open_form */ FND_FUNCTION.EXECUTE(FUNCTION_NAME=>'DEM_DEMXXEOR', OPEN_FLAG=>'Y', SESSION_FLAG=>'Y', OTHER_PARAMS=> 'ORDER_ID="'||param_to_pass1|| '" CUSTOMER_NAME="'|| param_to_pass2||'"'); /* all the extra single and double quotes account for any spaces that might be in the passed values */
end if;
else null; end if; end event;
END custom; ------------------------------------------------------------------
Writing Code for the CUSTOM Library
Events Passed to the CUSTOM Library
When to Use the CUSTOM Library
CUSTOM Library Package Procedures
Previous | Next | Contents | Index | Navigation | Glossary | Library |