aol-chamy

100
Oracle APPS Tech Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited General Notes to Begin Application An application, such as Oracle General Ledger or Oracle Inventory, is a functional grouping of forms, programs, menus, libraries, reports, and other objects. Custom applications group together site–specific components such as custom menus, forms, or concurrent programs. Application Short Name The application short name is an abbreviated form of your application name used to identify your application in directory and file names and in application code such as PL/SQL routines. Oracle Schema Database username used by applications to access the database. Also known as Oracle ID (includes password) or Oracle user. Every module has its own schema. Environment Variable An operating system variable that describes an aspect of the environment in which your application runs. For example, you can define an environment variable to specify a directory path. $APPL_TOP: An environment variable that denotes the installation directory for Oracle Application Object Library and your other Oracle applications. $APPL_TOP is usually one directory level above each of the product directories (which are often referred to as $PROD_TOP or $PRODUCT_TOP or $<prod>_TOP) Note that environment variables may be documented with or without the $ sign. For Windows NT environments, most environment variables correspond to Registry settings (without the $ sign), although some variables may be located in cmd files instead of in the Registry. Application Basepath An environment variable that denotes the directory path to your application–level sub-directories. You include your application Basepath in your application environment files and register it with Oracle Application Object Library when you register your application name. Corresponds to the $PRODUCT_TOP directory.

Upload: sivanaganna

Post on 02-Apr-2015

234 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

General Notes to Begin Application

An application, such as Oracle General Ledger or Oracle Inventory, is a functional grouping of forms, programs, menus, libraries, reports, and other objects. Custom applications group together site–specific components such as custom menus, forms, or concurrent programs.

Application Short Name

The application short name is an abbreviated form of your application name used to identify your application in directory and file names and in application code such as PL/SQL routines. Oracle Schema

Database username used by applications to access the database. Also known as Oracle ID (includes password) or Oracle user. Every module has its own schema. Environment Variable

An operating system variable that describes an aspect of the environment in which your application runs. For example, you can define an environment variable to specify a directory path.

$APPL_TOP: An environment variable that denotes the installation directory for

Oracle Application Object Library and your other Oracle applications. $APPL_TOP is usually one directory level above each of the product directories (which are often referred to as $PROD_TOP or $PRODUCT_TOP or $<prod>_TOP) Note that environment variables may be documented with or without the $ sign. For Windows NT environments, most environment variables correspond to Registry settings (without the $ sign), although some variables may be located in cmd files instead of in the Registry.

Application Basepath

An environment variable that denotes the directory path to your application–level sub-directories. You include your application Basepath in your application environment files and register it with Oracle Application Object Library when you register your application name. Corresponds to the $PRODUCT_TOP directory.

Page 2: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Server–side Server–side is a term used to describe PL/SQL procedures that are stored in an Oracle database (on the database server). Procedures and functions stored in the database are also referred to as stored procedures and functions, and may also be referred to as being database server–side procedures. Client–side Client–side is a term used to describe PL/SQL procedures that run in programs that are clients of the Oracle database, such as Oracle Forms, Oracle Reports, and libraries. The term ”client–side” in this manual usually refers to the forms server (where the forms reside). ”Client–side” in this manual does not typically refer to the ”desktop client”, which is usually a PC or other desktop machine running a Web browser. Program Application The application with which you register your report in the Concurrent Programs window. Responsibility Application The application with which you define your responsibility in the Responsibility form.

Value

What you enter as a parameter. A value can be a date, a name, text, or a number. The Submit Request form provides you with lists of values for most parameters, to ensure you choose valid values. Value Set A set of values against which Oracle Application Object Library validates values your end user enters when running your program. You define your value set by specifying validation rules, format constraints and other properties. For example, you could define a value set to contain values that are character strings, validated from a table in your application. You can specify that Oracle Application Object Library use the same value set to validate different report parameters. You can also use value sets that you use in your flex fields to validate your report parameters. Parameter

A value you specify when you run a report. For example, if you run an audit report, you might specify the audit date as a parameter when you run the report.

Page 3: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Application Object Library (AOL) Earlier it is called by FND (Foundation). It’s a Library of objects, which are used

during development and customizations of Oracle Applications modules. These objects maintain similar look and feel throughout the application and they can be accessed from any of the modules. Main Features

1. TEMPLATE Form 2. WHO Columns 3. QUERY-FIND 4. MESSAGE DICTIONARY 5. ZOOM 6. USER PROFILES 7. FLEX FIELDS 8. CONCURRENT PROCESSING 9. FUNCTION SECURITY 10. LOOKUPS 11. ATTACHMENTS.

I. TEMPLATE Form:

How Forms and Reports are incorporated with Oracle Applications?

For building a Form a base table is essential. For making a table accessible for

Oracle Applications, there are some required steps. As usual a table is created in the user’s schema. Oracle Applications is able to access data only from the specific schema, which is attached to Applications through the data group. So, user has to grant all privileges for the base table to the APPS schema. Create synonym for the base table in the APPS schema. Next step is to register the table to the Application. For implementing this step we need to use the Application developer module. Otherwise certain API is available. AD_DD package supports for this. When we register the table the information about the table has been stored in FND_TABLES. Similar is the case with views and Indexes. For using any objects in Oracle Applications they have to be registered with Applications through Application Developer.

Once the table is registered we can start with building of FORM. For building a Form Oracle Applications provides us a template form.

The TEMPLATE form is the required starting point for all development of new forms. Start developing each new form by copying this file located $AU_TOP/forms/US to a local directory renaming it as appropriate.

Page 4: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

TEMPLATE contains the following: 1. References to object groups in the APPSTAND form (STANDARD_PC_AND_VA, STANDARD_TOOLBAR,

And STANDARD_CALENDAR). 2. Attachments of several libraries (FNDSQF, APPCORE, and APPDAYPK). 3. Several form–level triggers with required code. The text within these triggers must remain within the trigger; however, frequently developers need to add text before or after this text. 4. Package APP_CUSTOM, which contains default behavior for window opening and closing events. You usually have to modify this code for the specific form under development. 5. The TEMPLATE form contains sample objects that show typical items and layout cosmetics. These are provided merely as samples; to remove them entirely from your form, delete the following objects. Blocks: BLOCKNAME, DETAILBLOCK Window: BLOCKNAME Canvas–view: BLOCKNAME

When you customize your form delete these objects, create new. For all the

objects you create, attach the corresponding property classes. Once you complete the building of form, the form has to be attached to Oracle Applications through AOL. Before that generate the form and executable has to be placed at the appropriate folder. Say $CMN_TOP/forms/US. Now a FORM has to be registered with Oracle Applications through AOL for this executable. After that register a FUNTION for this FORM. When you register the FUNCTION you can specify the parameters associated with the form. Now attach the function to the menu, which is attached to your responsibility. Now the form is ready to run. Libraries: Libraries allow code to be written once and used by multiple forms. The template form contains the following: FNDSQF contains packages and procedures for message dictionary, flexfields, profiles, and the concurrent manager. It also has various other utilities for navigation, multi currency, WHO, etc. APPCORE contains the packages and procedures that are required of all forms to support the menu, Toolbar, and other required standard behaviors. APPDAYPK contains the packages that control the Applications Calendar. APPFLDR contains all of the packages that enable folder blocks. Oracle Applications does not support use of the APPFLDR library for custom development.

Page 5: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

INTEGRATING APPLICATIONS WITH CUSTOM APPLICATIONS The following steps given are for a UNIX system; just make the appropriate changes for your specific operating system. 1. Register your custom application with the Application Object Library. It is recommended to use an XX as the preface to the custom schema short name so that it does not conflict with any future Oracle Application short names. Log into Applications as the System Administrator and navigate to: Application --> Register. For example: Application Short Name Basepath Description ---------------------------------------------------------------------------------------- Custom Application XXCUS XXCUS_TOP Custom Application 2. Create a custom directory tree for your custom schema as the APPLMGR user. Use the basepath parameter from the Application registration for the top-level directory. This top-level directory will reside just under APPL_TOP. The subdirectories under the custom directory may vary depending on the server type (forms server, concurrent processing server, etc...). Make sure that the rights/protections are open for the world (rwx). For example: APPL_TOP (/appl/v1100000) | XXCUS_TOP (/appl/v1100000/XXCUS)--> other product directories | -------------------------------------------------- | | | | | | | | bin forms html lib log mesg out reports | | US US 3. Modify the applications environmental file (example: APPLSYS.env) to include the custom schema basepath as the APPLMGR user.

Page 6: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

For example: XXCUS_TOP = "/appl/v1100000/XXCUS" export XXCUS_TOP 4. Register the custom schema as an Oracle user. a. Create the user in the RDBMS database using SQL*Plus under the system account. Give the user a default and temporary tablespace with quotas and then grant the CONNECT role. For example: $ sqlplus system/manager SQL> create user XXCUS identified by CUST default tablespace USER_DATA temporary tablespace TEMP quota unlimited on USER_DATA quota unlimited on TEMP; SQL> grant connect to XXCUS identified by CUST;

XXCUS is the product short name, CUST is the password for the custom schema then USER_DATA and TEMP are existing tablespaces.

b. Register the user with the Application Object Library. Log into Applications as the System Administrator and navigate to: Security --> ORACLE --> Register. For example: Database Username Password Privilege Install Group Description ------------------------------------------------------------------------------------ XXCUS CUST Enabled 0 Custom Application 5. Add the custom schema to a data group. Log into Applications as the System Administrator and navigate to: Security --> ORACLE --> Data Group. For example: Data Group: Standard Description: Standard Data Group

Page 7: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Application Oracle ID Description ------------------------------------------------------------- Custom Application APPS Custom Application It is recommended that you use the STANDARD data group and pair the custom schema with APPS or you can add a new data group. This depends upon your own requirements. 6. Create your custom tables, indexes, views and sequences. It is suggested that you add WHO columns to your custom tables so that Oracle Applications can keep track of customizations. Register your custom schema's tables (including flexfields) with the PL/SQL package AD_DD. You use the procedure AD_DD.register_table for the custom schema tables and AD_DD.register_column for the custom schema table columns. Note: Flexfields and Oracle Alert are the only features or products that depend on this information. If you alter the table later, then you may need to include revised or new calls to the table registration routines. To alter a registration you should delete the registration, and then reregister the table or column. You should delete the column registration first, then the table registration. Though you create your tables in your own schema you should run the AD_DD procedures against the APPS schema. You must commit your changes for them to take effect. This API does not check for the existence of the registered table or column in the database schema, but only updates the required AOL tables. You need not register views. Syntax: execute ad_dd.register_table (appl short name, table name, table type, next extent, % free, % used) For example: $ sqlplus apps/apps SQL> execute ad_dd.register_table ('XXCUS', 'CUST_TABLE’, 'T', 8, 10, 90)

Where appl short name='XXCUS', table name='CUST_TABLE', table type='T', next extent=8, % free=10, % used=90

Note: 1. Use ’T’ if it is a transaction table (almost all application tables), or ‘S’ for a

seed data table (used only by Oracle Application products). 2. pct_free: The percentage of space in each of the table’s blocks reserved for

future updates to the table (1-99). The sum of pct_free and pct_used must be less than 100.

3. pct_used: Minimum percentage of used space in each data block of the table.

Page 8: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Syntax: execute ad_dd.register_column (appl short name, table name, column name, column seq, column type, column width, null, translate) For example: $ sqlplus apps/apps SQL> execute ad_dd.register_column ('XXCUS', 'CUST_TABLE’, 'CUST_NO', 1, 'NUMBER', 5,'N', 'N') where appl short name='XXCUS', table name='CUST_TABLE', column name='CUST_NO', column seq=1, column type='NUMBER', column width=5, null='N', translate='N' Note:

1. Null: Use ‘N’ if the column is mandatory or ‘Y’ if the column allows null values. 2. Translate: Use ‘Y’ if the column values will be translated for an Oracle

Applications product release (used only by Oracle Applications products) or ‘N’ if the values are not translated (most application columns).

Syntax: execute ad_dd.delete_column (appl short name, table name, column name); Syntax: execute ad_dd.delete_table (appl short name, table name); 7. Run the custom schema against the APPS_DDL and APPS_ARRAY_DDL packages. Run the scripts $AD_TOP/admin/sql/adaddls.pls, adaaddls.pls, adaddlb.pls and then adaaddlb.pls (in this order) under SQL*Plus: $ sqlplus apps/apps SQL> @$AD_TOP/admin/sql/adaddls.pls system_pword custom_schema custom_schema_pword SQL> @$AD_TOP/admin/sql/adaaddls.pls system_pword custom_schema custom_schema_pword SQL> @$AD_TOP/admin/sql/adaddlb.pls system_pword custom_schema custom_schema_pword SQL> @$AD_TOP/admin/sql/adaaddlb.pls system_pword custom_schema custom_schema_pword 8. Integrate your database objects with the APPS schema by granting APPS the access to your custom schema's objects. a) Grant all privileges from each custom data object to APPS.

Page 9: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

For example: $ sqlplus xxcus/cust SQL> grant all on CUST_TABLE to APPS b) Create a synonym in APPS to each custom data object. For example: $ sqlplus apps/apps SQL> create synonym APPS.CUST_TABLE for XXCUS.CUST_TABLE c) Create custom code objects in APPS For example: $ sqlplus apps/apps SQL> create function CUST_FUNCTION… 9. Build your custom forms, menus and libraries as the APPLMGR user. Use the TEMPLATE form located in $AU_TOP/forms/US directory as the required starting point for your development work for your custom forms. Follow the form development steps (which incorporate the development standards) that are described in the Oracle Application Developers Guide. You will modify the form as needed, move the generated form to its proper directory, register the form with the Oracle Application Object Library and then add it to a menu. The following examples assume you are developing on the forms server. a. Make a copy of the TEMPLATE form and then rename it as the APPLMGR user. For example: $ cd $AU_TOP/forms/US $ cp TEMPLATE.frm test.frm

b. In the forms designer attach any additional libraries to your custom form. The TEMPLATE form already has the APPCORE, APPDAYPK, FNDSQF, GLOBE and CUSTOM libraries attached. The only Oracle Applications library that you should modify is the CUSTOM library. All the libraries need to reside in directory $AU_TOP/resource/plsql and make sure that your FORM45_PATH includes $AU_TOP/resource so that your form can find the libraries.

Page 10: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

c. Modify the form as desired following the development standards. You will be setting the properties of container and widget objects, creating window layout, coding table handler, item handler, event handler and code logic, enabling querying behavior, coding messaging, adding flexfield logic and coding any other appropriate logic.

d. Generate the form on the forms server as the APPLMGR user. Make sure that the $FORMS45_PATH is set and that the current directory is $AU_TOP/forms/us.

f45gen userid=apps/appspwd module=<form name>.fmb output_file=<schema_top>/forms/<language>/<form name>.fmx module_type=form batch=no compile_all=special For example: $ f45gen userid=apps/apps module=TEMP.fmb output_file=/appl/v1100000/XXCUS/forms/US/TEMP.fmx module_type=form batch=no compile_all=special Where form name=TEMP,schema_top=/appl/v1100000/XXCUS and language=US

e. Test the form by itself. Create either a static html file that calls your form directly (instead of the usual sign on form) or create a dynamic html file and cartridge.

f. Register your form. Log into Applications as the Application Developer responsibility and navigate to: Application --> Form.

For example: Form Application User Form Name Description ---------------------------------------------------------------------------------------- TEST Custom Application TEST Custom Form

g. Register the form as a function. If needed, register sub functions per the functionality that you require. Log into Applications as the Application Developer responsibility and navigate to: Application --> Function. Click on "Description" in the popup list.

For example: ------------- | Description | ------------- User Function Function Name Type Description -------------------------------------------------------------------------------------- TEST TEST FORM Custom Application

Page 11: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Now click on "Form" in the popup list. ------ | Form | ------ Function Form Application Parameters ----------------------------------------------------------------------- TEST TEST Custom Application

Note: the Application field will be grayed out. It will automatically be filled in when you enter the form name in the Form field.

h. Add your custom functions (forms and subfunctions) to an existing menu or create a new one. The menu will be tied to a responsibility. Log into Applications as the Application Developer responsibility and navigate to: Application --> Menu.

For example: Menu: XXCUS_MAIN User Menu Name: XXCUS_MAIN Description: Main Custom Menu Seq Prompt Submenu Function Description ---------------------------------------------------------------------- 1 Custom TEST Custom Form 2 Requests Standard Request Submission Administer Requests i. Create a custom request group that will hold your custom and/or standard requests for your custom responsibility. Log into Applications as the System Administrator and navigate to: Security --> Responsibility --> Request. For example: Group: XXCustom Application: Custom Application Description: Custom Application Requests -------- Type Name Application ------------------------------------------------------------- Program Custom Report 1 Custom Application Program Custom Report 2 Custom Application

Page 12: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

j) Create a custom responsibility for your custom schema. Log into Applications as the System Administrator and navigate to: Security --> Responsibility --> Define. Be sure to add the responsibility to a user. k. Test the form from within Applications. 10. Build online help for your custom applications as the AP PLMGR user. a. Make sure that your custom form refers to your custom application short name in the call to the FND_STANDARD.FORM_INFO routine in the PRE-FORM trigger. For example, in the forms designer open your custom form and navigate to:

Triggers --> PRE-FORM. XXCUS is the custom application short name and BLOCKNAME is the name of the window:

Begin FND_STANDARD.FORM_INFO ('$Revision: 99 $', 'Template Form', 'XXCUS' '$Date: 99/05/25 12:01:01 $', '$Author: John Doe $'); app_standard.event('PRE_FORM'); app_window.set_window_position('BLOCKNAME','FIRST_WINDOW'); End; b. Create a subdirectory for your help files using the application short name. This subdirectory will reside under the directory path specified by the profile HELP_BASE_URL plus the language that you are working under. c. Create a subdirectory under your help files subdirectory to hold the links files. The links allow Oracle Applications to find the correct help files. d. Create your online help html files. Include the html target tags of the form near the beginning of the file. The target name is comprised of the form name and the window name. d. Create your online help html files. Include the html target tags of the form near the beginning of the file. The target name is comprised of the form name and the window name. For example, create a file called $OA_DOC/US/XXCUS/custom.htm using an html editor. The target tag with form name=CUSTOM and window name=BLOCKNAME would be custom.BLOCKNAME:

Page 13: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I) [Netscape]"> <title>Custom Application Help </title> </head> <body bgcolor="#F8F8F8"> <a NAME="toc_"></a> <a NAME="custom.BLOCKNAME"></a> e. Create your links file. The links file stores the connection between the target and target in the destination html file. You will have one links file for each form and it will be named after the form. Copy an existing Oracle Applications links file to your links subdirectory and modify it. For example, copy an existing links file to your custom links subdirectory, modify $OA_DOC/US/XXCUS/links/custom.htm using an html editor. The target is CUSTOM_BLOCKNAME (form name=CUSTOM and window name=BLOCKNAME), the html help file is custom.htm with a target tag of custom.BLOCKNAME: <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="GENERATOR" content="Mozilla/4.51 [en] (WinNT; I [Netscape]"> </head> <body> <script LANGUAGE='JavaScript'> Function onerror(msg, URL, lineNum) { var newloc = '../../notfound.htm?' + queryString location.replace(newloc) return true } var CUSTOM_BLOCKNAME = 'custom.htm#custom.BLOCKNAME' var queryString location.href.substring(location.href.indexOf('?')+1,location.href.length) var newloc = '../' + eval(queryString) location.replace(newloc) </script></body></html>

Page 14: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

f. If desired, a link to your custom application can be added to the Oracle Applications online help file, library.html. 11. Create your message dictionary. a. Make sure you have a message (mesg) subdirectory under your custom applications basepath. b. Define your messages following the message standards. Login as the Application Developer and navigate to: Application --> Messages. For example: Name Language Application Number -------------------------------------------------------------- XXCUS_UPDATE US Custom Application 1 Current Message Text -------------------------------------------------------------- Custom Applications update message c. Create the message files. From the operating system run the Message Dictionary Generator program (FNDMDGEN) as the APPLMGR user. FNDMDGEN apps/appspword 0 Y <Language> <Application Short Name> DB_TO_RUNTIME For example: $ FNDMDGEN apps/apps 0 Y US XXCUS DB_TO_RUNTIME Where Language=US and Application Short Name=XXCUS The FNDMDGEN program will generate a message file named <Language>.msb in place it in the custom applications basepath mesg directory. d. If needed make a copy of the generated file (located on the server) and transfer the copy to the appropriate mesg directory for the custom application on the client system. e. Code the logic to set up messages. You will use calls to the FND_MESSAGE package to retrieve and set up messages for display.

Page 15: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

f. Code the logic to display messages. You will either display the message to a user on the client or write it to a file on the server. You will use calls to the FND_MESSAGE package to display messages. 12. Set up your concurrent processing for your Custom Schema. a. Write the concurrent program execution file and place it in the appropriate directory. You can use a variety of methods such as C, Pro*C, SQL*Plus, PL/SQL, Oracle Reports or a host language program (a shell script). b. Define the concurrent program executable with the Oracle Application Object Library. This links the execution file and the method used to execute it with a defined concurrent program. Log into Applications as the System Administrator and navigate to: Concurrent --> Program --> Executable. c. Define the concurrent program with the Oracle Application Object Library along with any program parameters or any incompatibilities. Log into Applications as the System Administrator and navigate to: Concurrent --> Program --> Executable. d. Add the request functionality for your concurrent program. The program can be called from the run reports form, from a trigger within an application form or from a Pro*C program. To use the run reports form, just add the submit request window to your custom menu so that you have access to the Standard Request Submission Interface (SRS). Register Your Application

You must register your application name, application short name, application base path, and application description with Oracle Application Object Library. Oracle Application Object Library uses this information to identify application objects such as responsibilities and forms as belonging to your application. This identification with your custom application allows Oracle Applications to preserve your application objects and customizations during upgrades.

When you register your application, your application receives a unique application ID number that is included in Oracle Application Object Library tables that contain application objects such as responsibilities. This application ID number is not visibl e in any Oracle Applications form fields. Form Registration:

After developing a FORM, it has to be registered with AOL so that it is available

for the Application.

Page 16: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Steps involved in registering a FORM:

1. FTP the APPSTAND.fmb and TEMPLATE.fmb file to the local disk from the Application path /u003/visappl/au/11.5.0/forms/US.

Note: - Before to copy the TEMPLATE file you should first copy the APPSTAND.fmb file and then only your TEMPLATE file will run successfully without bugs.

2. Attach the required .pll files to the TEMPLATE form Note: - There are 20 .pll files could be get from the Application path /u003/visappl/au/11.5.0/resource.

3. Open the TEMPLATE form and rename the form as you like and save it in the

same path. 4. Delete the ‘Detailblock & Blockname’ from the list of Data Block and a Canvas

called ‘Blockname’ and a Window called ‘Blockname’.

Page 17: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

5. Create a Window, Canvas and a Data Block based on Database tables and inherit the property class of it. Window inherits the property class name window and Canvas inherits the property class name canvas and same as like Data Block.

6. Customize the coding in the PRE_FORM Trigger and also in the package called

APP_CUSTOM according to the client Requirements.

You must modify the following triggers: 1. PRE-FORM 2. WHEN-NEW-FORM-INSTANCE.

You do not modify these form-level triggers, but you can write block or item level triggers that override the form-level trigger. 1. KEY-LISTVAL 2. ON-ERROR.

Page 18: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

You do not modify the following triggers in any way. 1. STANDARD_ATTACHMENTS 2. ZOOM 3. FOLDER_ACTION 4. KEY-HELP 5. KEY-EXIT 6. KEY-EDIT 7. KEY-COMMIT 8. WHEN-WINDOW-CLOSED 9. CLOSE_WINDOW

7. FTP the <FORM.fmb> to any Apps Module

Page 19: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

8. Generate the .fmb file to .fmx file

Page 20: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

9. Open the Oracle Application and switch to the Application Developer Responsibility and navigate to ApplicationèForms.

10. Fill-up the fields in the Form Window and save it.

Page 21: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

11. Then switch to the Function menu as ApplicationèFunction from the same Application Developer Responsibility and Fill-up the fields in the Description canvas.

12. Then Click the Form canvas from the same window and fill-up the fields and save it. Note: - The Form Name could be same as you denote in the Form menu.

Page 22: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

13. Then switch to the ApplicationèMenu and find the menu of the particular Application Developer Responsibility and Register the Function name and save it. Note: - The Function Name must be same as you denoted in the Function menu 14. Final step is that navigation to that particular responsibility. There in the menu navigator you can see your form. Just enter into form it will be automatically executed

MASTER_DETAIL Relationship: Co-ordination between windows: When the master and detail blocks are in different windows, then the user must provide a mechanism for immediate and differed co-ordination. When the block is not visible keep the co-ordination as differed. Co-ordination: Maintaining a correspondence between the master block and detail block is called co-ordination. Any event that makes a different Record, the current record of the current block is called co-ordination-causing event. There are two phases of block coordination, Clear phase and population phase. During clear phase the control is navigated to the detail block and the detail records are flushed off. During the Population phase forms issues a select statement to retrieve the corresponding detail records for the current master record. Co ordination properties: 1.Immediate: When the co-ordination causing event occurs, the detail records are fetched automatically (immediately) 2. Differed with auto query: The detail records r not fetched immediately, but when navigated to the detail block 3. Differed with no auto query: The user has to execute a query explicitly after navigating to the detail block. Steps involved in implementing MASTER_DETAIL relationship: 1. Create a button in the master block to navigate to the detail block. 2. Create check box in the control block in the detail window to specify users preference about immediate or differed co-ordination. It should be immediate when checked and differed when unchecked. By default it must be immediate.

Page 23: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

3. Create your item handler procedures as follows: Procedure lines (event in varchar2) is Begin If event ='WHEN-BUTTON-PRESSED' then app_custom.open_window('<windowname>'); End if; End lines; Procedure order_lines (event in varchar2) is Begin If event='WHEN-CHECKBOX-CHANGED' then app_window.set_coordination(event,:control.order_lines,order_lines); /* order_lines - name of the relation, control.order_lines - name of the checkbox */ End if; End order_lines; 4. Customize APP_CUSTOM template package: In the open_window procedure add: If window='LINES' then

app_window.set_coordination('OPEN- WINDOW', :control.order_lines, 'ORDER_LINES');

End if; In the Close_window Procedure add If window='LINES' then

app_window.set_coordination('WHEN-WINDOW-CLOSED', :control.order_lines, 'ORDER_LINES')

End if; Invoke these event handlers in the relevant triggers. Steps Involved in Report Cus tomization:- 1. Create report XXXXX.RDF in Report Builder. 2. FTP to the correct TOP directory ( $PO_TOP/reports/US for PO(Purchase Order Module), or $PO_TOP/reports/US for Purchase Order and so on; for custom reports put the executable in the custom TOP directory )

Page 24: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

3. Check whether the <file name.rdf> file could be placed on the corresponding TOP

Convert the file to Binary Format

Put the file to corresponding Module

Path

File Name

Page 25: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

4. Switch to ‘Application Developer’ Responsibility from the list of ‘Applications’. The following screen appears.

6. First Register your report in the Concurrent Executable Form by Click the menu CONCURRENTèPROGRAMèEXECUTABLE.

Page 26: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

7. Double click the Concurrent Executable menu the following screen appears. Then fill up the details, which are listed in the Concurrent Executable Form. The Execution File Name’ Field contains the <Report File Name.rdf> and click save icon

8. Then Register your report in Concurrent Program by choosing concurrentè Program’ in the same Concurrent Menu of the same ‘Application Developer’ responsibility.

Page 27: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

8. After Double clicking the ‘Program’ the following screen appears. Fill-up the Fields. The ‘Executable Name’ contains the ‘Concurrent Executable Name’

9. Then Switch to the ‘System Administrator’ Responsibility and choose Security è

ResponsibilityèRequest. The following screen shows below

Page 28: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

10. After Double click the Request Field the screen appears. Fill-up the Request Group Details as shown in the screen below. Create a new Request and refer the Concurrent Program name in the Request Name Field.

11. Again switch to the Application Developer Responsibility and choose Other à

Request à Run

Page 29: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

12. After double click the Run field a tab window appears. Choose Single Request option and clisk OK

13. Then a Submit Request window appears. In the Name Field type the Concurrent Program Name and Click the Submit button.

Choose the option NO in the pop-up window.

Page 30: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

14 Then choose ViewàRequest in the top of the menu bar. 15 A Find_Request window appears. In that click Find button

16. The Following Request Window appears. Note that your Report could be in Normal Status. If it is Normat then Click View Log and View Output.

Page 31: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

17. After clicking the View Output option the output screen will appers.

Page 32: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

2. TRACKING DATA CHANGES THROUGH WHO COLUMNS:

The WHO feature reports information about who created or updated rows in oracle Applications tables. If you add special WHO columns to your tables and WHO logic to your forms, your users can track changes made to their data. You represent each of the WHO columns as hidden fields in each block of your form (corresponding to the Who columns in each underlying table). Call FND_STANDARD.SET_WHO in PRE–UPDATE and PRE–INSERT to populate these fields.

1. CREATED_BY 2. CREATION_DATE 3. LAST_UPDATED_BY 4. LAST_UPDATE_DATE 5. LAST_UPDATED_LOGIN

Who needs WHO? Oracle Applications upgrade technology relies on WHO information to detect and preserve customization. For knowing who changed or created rows in the tables. WHO identifies changes made by forms and by concurrent programs. When not to use WHO? Do not use WHO columns to qualify rows for processing. Your form logic must never depend upon WHO columns containing correct information. Do not resolve WHO columns to HR_EMPLOYEES Use Event handlers to code WHO in your Forms

Store the logic for setting WHO information in pre-insert and/or pre-update event handlers. Call FND_STANDARD.SET_WHO in your event handlers. Call your event handlers during insert or update in the pre-insert and pre-update triggers. Add the following WHO columns: First Column Column name: CREATED_BY Type : number(15) Null? : not null Foreign key : fnd_user Value : to_number(fnd_profile.value('user_id'))

Page 33: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Second Column Column name: CREATION_DATE Type : date Null? : Not null Value : sysdate Third Column Column name: LAST_UPDATED_BY Type : number(15) Null? : Not null Foreign key : fnd_user Value : to_number(fnd_profile.value ('user_id') Fourth Column Column name: LAST_UPDATE_DATE Type : date Null? : Not null Value : sysdate Fifth Column Column name: LAST_UPDATE_LOGIN Type : number(15) Foreign key : fnd_logins Value : to_number(fnd_profile.value ('login_id') Tables updated by concurrent programs need additional columns: column name type null? Foreign key to table? request_id number(15) fnd_concurrent_requests program_application_id number(15) fnd_concurrent_programs Program_id number(15) fnd_concurrent_programs program_update_date date Program_update_date

Page 34: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

3. QUERY FIND

This feature is used to query the data in Forms. There are two implementations for query find. 1. Row–LOV -- shows the available rows and allows you to choose one. 2. FIND WINDOW --shows you the fields the user is likely to want to use for selecting data. Row–LOV

To implement a Row–LOV, create an LOV that selects the primary key of the row

the user wants into a form parameter, and then copy that value into the primary key field in the results block right before executing a query. 1. Create a form parameter(s) to hold the primary key(s) for the LOV. Set the datatype and length appropriately. For example, for the DEPT block, create a parameter called DEPTNO_QF. 2. Create an LOV that includes the columns your user needs to identify the desired row. Return the primary key for the row into the parameter. 3. Create a block-level PRE-QUERY trigger - Execution Style 'Before' that contains: If :parameter.G_query_find = 'TRUE' then <primary key> := :parameter.<your parameter>; :parameter.G_query_find := 'FALSE'; End If; 4. Create a block-level user-named trigger "QUERY_FIND" on the results block with Execution style of 'Override' that contains: APP_FIND.QUERY_FIND('<Your LOV Name>'); 5. Use the find button to invoke Query_find. Find Window

To implement a Find Window, create an additional window that contains the fields

a user is most likely to search by when they initiate the search and copy all the item values from that block into the results block just before executing a query.

Page 35: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

To implement a Find Window, create an additional window that contains the fields a user is most likely to search by when they initiate the search and copy all the item values from that block into the results block just before executing a query. 1. 'Copy' the QUERY_FIND object group from the APPSTAND form to your form. After copying, delete the object group. This is necessary, in case you have to copy it again, for another find window. 2. Rename the Query_Find Block, Canvas, and Window. Set the query able property of the block to FALSE. 3. In the WHEN-BUTTON-PRESSED trigger of the NEW button app_find.new(<your results blockname here>'); 4. In the WHEN-BUTTON-PRESSED trigger of the FIND button

:parameter.g_query_find :='TRUE'; app_find.find('your results blockname'); :parameter.g_query_find:='FALSE'; 5. Set the Previous Navigation Block property of the Query-Find to be the Results block. So if you press previous block from the query block it will take you back to the results block. 6. Edit the KEY-NXTBLK trigger on the Query-Find block so that it has the same functionality as the FIND button.

:parameter.g_query_find :='TRUE' ; app_find.find ('<results block>'); :parameter.g_query_find:='FALSE';

-- :parameter.G_query_find := 'TRUE'; -- app_find.find('TQUERY'); -- :parameter.G_query_find := 'FALSE';

7. Change the title of the Query-Find window. 8. Create necessary items in the Query Find Window: -Required property to FALSE -Default value to NULL -If you copied from Result block, make it non-database items and remove all the triggers. 9. Fit the Query-Find Window to your form. Resize the window, position, fields, and so on.

Page 36: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

10. Create a block-level Pre-Query trigger in the Results block with Execution style "Before" that copies query criteria from the Find Window block to the Results block. If :parameter.G_query_find = 'TRUE' then copy (<find window field>, '<results field>'); :parameter.G_query_find := 'FALSE'; end if; 11. Create a block-level user-named trigger "QUERY_FIND", Execution style "Override") on the Results block that contains: APP_FIND.QUERY_FIND ('<results block window>', '<Find Window>', '<Find Window Block>'); - Content Canvass - Apply the CANVAS property class. - Size(width, height) same as the window. - Stacked Canvass - CANVAS_STACKED property class. 12. Query-field block - empno<item-level> - key-listval

list_values; Select ename into :qfindblk.ename from tquery where empno = :qfindblk.empno;

13. pre_form trigger in the form level and app_custome package To set the first window is <result block window> Comparison between Find window and Row LOV: Find window Row LOV: --------------------------------------------------------------------------------------------------- For Complex searches, specifying criteria In most detail blocks, which by for more than one attribute. default will auto query all records that pertains to the current master record. If more than one record is typically If the user is typically needs to retrieved. search for only one record. The desired

record can be selected based on a primary key

The number of records that might be The number of records that might be is retrieved is large shown in the LOV is small.

Page 37: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

4. MESSAGE DICTIONARY Message

Text your application displays or prints to an output file. You can define your message to be up to about 1800 characters long (about 1260 in English to allow for translation into longer languages such as German). Message Dictionary Message Dictionary lets you catalog messages for display from your application without hard coding them into your forms and programs. Variable Token

A keyword you create to represent a value when you define a message. You specify the same variable token, along with its current value, when you call Message Dictionary from your form or program module. Message Dictionary replaces each variable token in your message with the current value you specify and then displays the message.

Using Message Dictionary, you can:

1. Define standard messages you can use in all your applications. 2. Provide a consistent look and feel for messages within and across all your Applications. 3. Define flexible messages that can include context–sensitive variable text 4. Change or translate the text of your messages without regenerating or

recompiling your application code

Steps involved in using message dictionary: 1. Register your message in the application. 2. Generate your message (from other/ requests/ run) 3. Form level a. Fnd_Message.Set_Name('Appl_Short_Name','Message_Name') b. fnd_message.show

/* If you rewrite the message text, to make it active you have to reopen the application*/

Page 38: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

5. ZOOM

Zoom feature is used when we need to navigate from one form to another. Custom Library plays an important role in that. Zoom is implemented as follows:

You write code in the CUSTOM library, within the procedure ’shells’ that are Provided. All logic must branch based on the form and block for which you want it to run. Whenever the cursor changes blocks in the form, the ’ZOOM_AVAILABLE’ function in the CUSTOM library is run. If this function returns TRUE, then the Zoom entries on the menu and toolbar are enabled; if it returns FALSE, then they are disabled. If the Zoom entries are enabled, then when the user invokes Zoom the message ’event (’ZOOM’)’ is sent to the CUSTOM library. You write code within this event that branches based on the current form and block. Within that code, you are free to write (almost) any code supported by the Developer/2000 toolset. Multi Zoom: There is a LOV with name APPCORE_ZOOM (REC. GRP. APPCORE_ZOOM_DUM) in the template form. In the REC. GRP, Add static values with the function name and some description. Let the return value of the LOV go to : PARAMETER.APPCORE_ZOOM_VALUE. In the code for calling another form show this LOV. Replace the function name with the parameter value in the FND_...execute function. GUI ZOOM Implementation: - Steps: - 1. Create Two Forms (calling and called) using the template. 2. Register the form in GUI 3. Create functions for the forms. 4. Attach the forms to the menu (at least the calling form). 5. Open the custom.pll library ($AU_TOP/resource/CUSTOM.pll). 6. Customize the library: - a. Copy the custom.pll to any of your local directory (as back up copy). b. Open the custom.pll library from $AU_TOP/resource/CUSTOM.pll as 1. function zoom_available

Page 39: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

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. function zoom_available return boolean is form_name varchar2(30) := name_in('system.current_form'); block_name varchar2(30) := name_in('system.cursor_block'); begin if (form_name = 'KK_ZOOM' and block_name = 'DEPT') then return TRUE; else return FALSE; end if; end zoom_available; 2. Function style This function allows you to determine the execution style for some Product-specific events. You can choose to have your code execute

Before, after, or in place of the code provided in Oracle Applications.

The following package variables should be used as return values: custom.before custom.after custom.override custom.standard By default this routine must return custom.standard Function style (event_name varchar2) return integer is Begin Return custom.standard; End style; 3. event ----- This procedure allows you to execute your code at specific events including: * ZOOM * WHEN-NEW-FORM-INSTANCE * WHEN-NEW-BLOCK-INSTANCE * WHEN-NEW-RECORD-INSTANCE

Page 40: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

* WHEN-NEW-ITEM-INSTANCE * WHEN-VALIDATE-RECORD procedure event(event_name varchar2) is form_name varchar2(30) := name_in('system.current_form'); block_name varchar2(30) := name_in('system.cursor_block'); param_to_pass1 varchar2(30):= name_in('system.cursor_VALUE'); begin if (event_name = 'ZOOM') then if (form_name = 'KK_ZOOM' and block_name = 'DEPT') then MESSAGE('ZOOMING TO THE NEW FORM '); fnd_function.execute(FUNCTION_NAME=>'KK_ZOOM2',

OPEN_FLAG=>'Y', OTHER_PARAMS=>'DEPTNO ="'||param_to_pass1||'"');

ELSE NULL; end if; ELSE NULL; end if; end event; 7. Save this library (custom.pll) to the Apps10\AU10\RES\PLSQL\ dir. *Note before saving make a copy and keep.

Try to generate the modified custom.pll and if u are not able to generate then delete the .plx from the dir. If while saving it shows record lock then close the Oracle Apps and then save.

8. Attach the lib to calling form.

9. Create the parameters in the called form by the same name and data type as passed by the calling form.

10. Generate the forms and save them.

Page 41: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

6. USER PROFILES A User Profile a set of changeable options that affects the way your Application runs. Oracle Application Object Library establishes a value for each option in a user’s profile or when he logs on or changes responsibility. A developer can define even more profile options that affects Oracle Application object library based applications. And because you may not want your users to be able to override values for each of your options you can define them at one or more of four levels

User Profile levels:

User profile options exist at four levels, Site, Application, Responsibility and User

Site Level: Site Level is the lowest user profile level. Site Level option values affect the way all the applications run at a given installation. Application Level: Application level is immediately above site level. Application level profile option values affect the way a particular application runs. Responsibility Level: Responsibility is the user profile level immediately above Application Level. Responsibility–level option values affect the way applications run for all users of a responsibility. User Level: User is the highest user profile level and is immediately above Responsibility. User–level option values affect the way applications run for an application user. Personal Profile Values: Flexfields: AutoSkip You can save keystrokes when entering data in your flexfields by automatically skipping to the next segment as soon as you enter a complete valid value into a segment. "Yes" means after entering a valid value in a segment, you automatically move to the next segment. "No" means after entering a valid value in a segment, you must press [Return] to go to the next segment.

Page 42: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Note: You may still be required to use tab to leave some segments if the valid value for the segment does not have the same number of characters as the segment. For example, if a segment in the flex field holds values up to 5 characters and a valid value for the segment is 4 characters, AutoSkip will not move you to the next segment. Flexfields: BiDi Direction This profile option controls the appearance of the flexfields window in Applications running in Semitic languages. Possible values are "Left To Right" and "Right To Left". If the profile option installation, the default value is "Right To Left", where the window appears in a normal, left to right fashion, and the text and layout are reversed to accommodate the right-to-left nature of the Semitic language environment. Flexfields: LOV Warning Limit

Use Flexfields: LOV Warning Limit to improve efficiency when retrieving a list of values. Sometimes, particularly when no reduction criteria has been specified, an LOV can take a very long time to run if there is a very significant amount of data in it. Set this profile option to the number of rows to be returned before the user is asked whether to continue retrieving the entire list. Flexfields: Open Descr Window You can control whether a descriptive flexfield window automatically opens when you navigate to a customized descriptive flexfield. "Yes" means that the descriptive flexfield window automatically opens when you navigate to a customized descriptive flexfield."No" means that when you navigate to a customized descriptive flexfield, you must choose Edit Field from the Edit menu or use the List of Values to open the descriptive flexfield window. Note: This profile option does not apply to descriptive flexfields in folders. Flexfields: Shared Table Lock This profile option is reserved for a future release. You should not alter the value of this profile option. Flexfields: Shorthand Entry If shorthand flexfield entry is defined for your flexfield, you can use a shorthand alias to automatically fill in values for some or all of the segments in a flexfield.

Page 43: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Not Enabled Shorthand Entry is not available for any flexfields for this user, regardless of whether shorthand aliases are defined. New Entries Only Shorthand Entry is available for entering new records in most foreign key forms. It is not available for combinations forms, updating existing records, or entering queries. Query and New Entry Shorthand Entry is available for entering new records or for entering queries. It is not available for updating existing records. All Entries Shorthand Entry is available for entering new records or updating old records. It is not available for entering queries. Always Shorthand Entry is available for inserting, updating, or querying flexfields for which shorthand aliases are defined. Flexfields: Show Full Value If an alias defines valid values for all of the segments in a flexfield, and Flexfields:Shorthand Entry is enabled, when you enter the alias the flexfield window does not appear. "Yes" displays the full flexfield window with the cursor resting on the last segment. Flexfields: Validate On Server This profile option is set to "Yes" to enable server side, PL/SQL flexfields validation for Key Flexfields. This improves performance when using Key Flexfields over a wide area network by reducing the number of network round trips needed to validate the entered segment combinations.

7. FLEXFIELDS

Oracle’s Application provides flex fields that represent flexible data fields you can customize it for your business needs without programming. A Flex field is a flexible field made up of segments. Each segment has a name and a set of values. Mainly there are two types of Flex fields Key flex field and Descriptive Flex field Key Flex fields A key flexfield r epresents an intelligent key that uniquely identifies an application entity.

Oracle General Ledger’s Accounting Flexfield is an example of a key flexfield used to uniquely identify a general ledger account. Same flexfield can be used in different applicat ions. Easy customization is another advantage of Flex field. Customizing a flexfield means specifying the prompt, length and data type of each flexfield segment. It also includes specifying valid values for each segment, and the meaning of each value to your application. You or your end users can even define cross–validation rules to specify valid combinations of segment values.

Page 44: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Descriptive Flex Fields A descriptive flexfield describes an application entity, providing form and database expansion space that you can customize. Each descriptive segment has a name you assign. You can specify valid segment values or set up criteria to validate the entry of any value. Segment

For a key flexfield, a segment is a single piece of the complete code. For a descriptive flexfield, a segment is a single field or a single attribute of the entity. A single column in a table represents a segment. Combination

For a key flexfield, a combination of segment values that make up the complete code or key. Structure

A flexfield structure is a particular arrangement of flexfield segments.

Combinations Table For a key flexfield, a database table you include in your application to store valid

combinations of key flexfield segment values. For Example in GL (Accounting Flex Field) combinations table is GL_CODE_COMBINATIONS. Combinations Form

For a key flexfield, a combinations form is the form whose base table (or view) is the combinations table. Dynamic Insertion

Dynamic insertion is the insertion of a new valid combination into a key flexfield combinations table from a form other than the combinations form. Flexfield Qualifier

A flexfield qualifier identifies a segment your end user should define when customizing your key flexfield. By specifying flex field qualifiers when you build your application, you ensure your end user customizes your flex field to include key segments that your application needs. Segment Qualifier

A segment qualifier describes characteristics of key segment values. You use segment qualifiers to obtain information about segment values your end user enters while using your application.

Page 45: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Steps involved in implementing DFF: 1. Create your table on which DFF to be implemented. Include additional columns starting from attribute1 to attribute n, also one more column for mentioning the structure of the DFF. Give the name as 'attribute category'. For Example: CONNECT INVDEMO/INV;

CREATE TABLE KK_DFF (VEND_CD VARCHAR2(7), VEND_NAME VARCHAR2(20), VEND_ADD VARCHAR2(30), ATTRIBUTE_CATEGORY VARCHAR2(30), ATTRIBUTE1 VARCHAR2(30), ATTRIBUTE2 VARCHAR2(30), ATTRIBUTE3 VARCHAR2(30), ATTRIBUTE4 VARCHAR2(30), ATTRIBUTE5 VARCHAR2(30), ATTRIBUTE6 VARCHAR2(30), LAST_UPDATE_DATE DATE NOT NULL, LAST_UPDATED_BY NUMBER(15) NOT NULL, LAST_UPDATE_LOGIN NUMBER(15), CREATED_BY NUMBER(15) NOT NULL, CREATION_DATE DATE NOT NULL, CONSTRAINT PK_VEND_CD PRIMARY KEY (VEND_CD));

GRANT ALL ON KK_DFF TO APPS_APPDEMO; CONNECT APPS_APPDEMO/APPS; 2. Register that table. declare name varchar2(30) :=upper('&name'); j number :=0; cursor c1 is select column_name, data_type, data_length, nullable from all_tab_columns where table_name =name; begin ad_dd.register_table('inv',name,'t',512,15,78);

Page 46: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

for i in c1 loop j :=j+1;

ad_dd.register_column('inv',name,i.column_name,j,i.data_type, i.data_length,i.nullable,'n'); end loop ; j :=0; name :=null;

commit; end; CONNECT APPS_APPDEMO/APPS CREATE SYNONYM KK_DFF FOR INVDEMO.KK_DFF; Note: To Delete the table registration :

declare Name varchar2(30) := upper('&name'); j number := 0; cursor c1 is select column_name, data_type, data_length, nullable

from all_tab_columns where table_name = Name; begin

ad_dd.DELETE_table('ITM1',NAME); for i in c1 loop

j := j + 1; ad_dd.DELETE_column('ITM1',NAME,i.column_name);

end loop; j := 0; name :=null; commit;

end;

3. Develop your form with two additional non-database columns for invoking DFF. 4. Write the Codes for defining DFF in various triggers. -For calling the events.

-Calling in when-new-item-instance and When-validate-item. KK_DFF.KK_FLEX ('WHEN-VALIDATE-ITEM'); KK_DFF.KK_FLEX ('WHEN-New-ITEM-Instance');

Page 47: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

PACKAGE KK_DFF IS PROCEDURE KK_FLEX (EVENT VARCHAR2);

END; PACKAGE BODY KK_DFF IS PROCEDURE KK_FLEX (event VARCHAR2) IS BEGIN If (event = 'WHEN-VALIDATE-ITEM’) Then Fnd_Flex.Event(event); Elsif (event = 'WHEN-NEW-ITEM-INSTANCE’) Then Fnd_Flex.Event(event); Else App_Exception.Invalid_Argument(‘KK_FLEX', 'Event', event); End If; END KK_FLEX; END KK_DFF; --For query call this procedure in the post-query. PROCEDURE KK_DFF_Q IS BEGIN FND_FLEX.EVENT ('POST-QUERY'); END; --For calling the procedure in the When-New form-Instance (FORM LEVEL) PROCEDURE KK_ST IS BEGIN

FND_DESCR_FLEX.DEFINE (BLOCK=>'KK_DFF', FIELD=>'DFF_VALUES', DESCRIPTION=>'DFF_DESC', APPL_SHORT_NAME=>'INV', DESC_FLEX_NAME=>'KK_DFF'); END; * NOTE --> You have to write two Field level triggers for the field you want to populate the DFF: -- When-New-Item-Instance --FND_FLEX.EVENT ('WHEN-NEW-ITEM-INSTANCE) When-Validate-Item

--FND_FLEX.EVENT ('WHEN-VALIDATE-ITEM') 5. Register your form and Run from the application.

Page 48: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Steps involved in implementing a flexfield: 1. Create the table on which the flexfield to be implemented in user's schema. Add the WHO columns as well as summary_flag and enabled_flag. The segments for the flexfield also included in the table. WHO columns are /* LAST_UPDATED_BY NOT NULL NUMBER (15) LAST_UPDATE_DATE NOT NULL DATE LAST_UPDATE_LOGIN NUMBER (15) CREATED_BY NOT NULL NUMBER (15) CREATION_DATE NOT NULL DATE */ SUMMARY_FLAG NOT NULL VARCHAR2 (1) ENABLED_FLAG NOT NULL VARCHAR2 (1) /* Add a unique_id column as well as structure_id coulumn. */ ITEM_ID NOT NULL NUMBER (15) ITEM_STRUCTURE_ID NOT NULL NUMBER (15) 2. Create a sequence for the unique id column. 3. Create synonyms for the table as well as the sequence in the APPS_APPDEMO user. Table is registered for unique index. 4. Register the table, and the sequence to the AOL. 5. Paint the Form on which the KFF to be implemented. a. The segments, the who columns, summary flag, enabled flag unique id column and the structure id column are made null canvas items. b. Set the query length of all these items 255.

c. Create two non-database columns with max length and query length as 2000 for displaying the concatenated segment code values and the description for the flexfield.

d. To the code column attach the lov 'enable list lamp'. e. Keep the generated form in the top directory. 6. Register your flex field using the form in the AOL. Enable them seqments for a particular structure id. 7. Register your form and Run it.

Page 49: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

KFF FOREGIN KEY FORM Steps: -- 1. Create the form-using template.

a. In your Block, add 2 non-database fields as follows: - Field1, Field2. b. Field1 this displays the concatenated values of your KFF c. Field2 this displays the concatenated Description of your KFF

d. Set LOV as 'ENABLE LIST LAMP' for the field1 in the properties. e. Create a procedure for the foreign key form PROCEDURE KK_FK IS BEGIN

FND_KEY_FLEX.DEFINE (BLOCK => 'KK_FK', FIELD => 'PART_VALUE', ID => 'PART_ID', APPL_SHORT_NAME => 'INV', CODE=>'KK_A', NUM=>'101', DESCRIPTION=>'PART_DESC', VALIDATE=>'FULL'); END KK_FK; f. Call this procedure in WHEN-NEW-FORM-INSTANCE (form level).

g. Write FND_FLEX.EVENT ('TRIGGER NAME') in the Following triggers: -- *PRE-QUERY

--FND_FLEX.EVENT ('PRE-QUERY') *POST-QUERY

--FND_FLEX.EVENT ('POST-QUERY') *PRE-INSERT

--FND_FLEX.EVENT ('PRE-INSERT') *PRE-UPDATE

--FND_FLEX.EVENT ('PRE-UPDATE') *WHEN-VALIDATE-RECORD

--FND_FLEX.EVENT ('WHEN-VALIDATE-RECORD') *WHEN-VALIDATE-ITEM

--FND_FLEX.EVENT ('WHEN-VALIDATE-ITEM') *WHEN-NEW-ITEM-INSTANCE

--FND_FLEX.EVENT ('WHEN-NEW-ITEM-INSTANCE') eg . FND_FLEX.EVENT ('PRE-QUERY'); 2. Register the form in GUI. 3. Create a function for the form. 4. Attach it to the menu.

Page 50: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

8. CONCURRENT PROCESSING

Concurrent Processing is a technique for executing non-interactive, data-dependent functions simultaneously with online operations. It ensures consistent response time. End users can work on the terminal while concurrent process is running in the background. Hardware capacity is fully used. Types of programs, which can be run as concurrent program: Oracle Reports, SQL, PL/SQL, Stored Procedure, spawned, and Host. Concurrent Manager:

A process manager on the Applications database server that coordinates the concurrent processes generated by users’ concurrent requests. See also concurrent processing facility.

Concurrent Process:

A task run by a concurrent manager. A concurrent process runs simultaneously with interactive functions and other concurrent processes. Concurrent Program

A concurrent program is an instance of an execution file, along with parameter

definitions and incompatibilities. Concurrent programs use concurrent program executables to locate the correct execution file. Several concurrent programs may use the same execution file to perform their specific tasks, each having different parameter defaults and incompatibilities.

Concurrent program executable

A concurrent program executable links an execution file or and the method used to execute it with a defined concurrent program. Under Concurrent Processing, an execution method may be a program written in a standard language, a reporting tool, or an operating system language. An execution method can be a PL/SQL Stored Procedure, an Oracle Tool such as Oracle Reports or SQL*Plus, a spawned process, or an operating system host language. Concurrent Program execution file

A concurrent program execution file is an operating system file or database stored procedure, which contains user’s application logic and can be executed by either invoking it directly on the command line or by invoking a program, which acts upon it.

Page 51: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

For example, you run a Pro*C program by invoking it on the command line. You run a SQL script by running SQL*Plus and passing the name of the SQL script without the sql extension. Concurrent Program Subroutine

A concurrent program subroutine is a Pro*C routine which contains your application logic and is linked in with the Concurrent Manager code. Execution method The execution method identifies the concurrent program executable type and the method Oracle Application Object Library uses to execute it. An execution method can be a PL/SQL stored procedure or Oracle tools such as Oracle Reports or SQL * Plus a spawned process or an operating system host language. Oracle Tool Concurrent Program

A concurrent program written in Oracle Reports, PL/SQL, SQL*Loader, or SQL*Plus. Spawned Concurrent Program

A concurrent program that runs in a separate process (on most operating systems) than that of the concurrent manager that starts it.

You write spawned concurrent programs as C or Pro*C stand–alone executable files. On some operating systems, you can also write spawned concurrent programs in your operating system language.

Spawned concurrent programs are the recommended execution method for new C or Pro*C execution files.

Immediate Concurrent Program A concurrent program, which runs in the same process as the concurrent manager, that starts it. They are written as C or Pro*C subroutines and attach them to a concurrent program Library. This concurrent program Library should be attached to the particular concurrent manager. Attention: The immediate concurrent program functionality is provided for backward compatibility only. You should not be creating new immediate concurrent programs.

Page 52: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Program Library

A program library is a set of linked immediate concurrent programs that are assigned to concurrent managers. A concurrent manager can run any spawned or Oracle Tool concurrent programs, but only immediate concurrent programs in its own program library. Use Oracle System Administration to further restrict what concurrent programs a concurrent manager can run when defining a concurrent manager with specialization rules. Request Type

A request type group’s similar concurrent programs to save time in defining and maintaining concurrent managers. Parent Request

A parent request is a concurrent request that submits another concurrent request. In the case of Standard Request Submission, a report set is a parent.

When you submit a report set, the report set submits the reports or programs that you have included in the report set. A parent request may be sequential or parallel, which determines whether the requests it submits, run one at a time or all at once. Child Request (Sub–request)

A child request is a concurrent request submitted by another concurrent request. When you submit a concurrent request to run a report set, the report set submits the reports in the set for concurrent processing. The requests submitted by the report set are child requests.

Logical Database

A logical database is a set of logically related data stored in one or more ORACLE IDs. Concurrent managers use logical databases to determine the scope of concurrent program compatibilities. When you define a concurrent program, you specify what programs are incompatible with this program and cannot run together with this program in the same logical database.

A user in a logical database submits a concurrent request to run a concurrent program. If a concurrent manager that can process your request finds that there are no incompatible programs currently running in the user’s logical database, then the concurrent manager processes the concurrent request. Concurrent managers use logical databases to ensure that incompatible programs do not run together.

Page 53: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

9. FUNCTION SECURITY Function security lets you restrict application functionality to authorized users. Application developers register functions when they develop forms. A System Administrator administers function security by creating responsibilities that include or exclude particular functions. Basic Function Security

1. Group the forms and functionality of an application into logical menu structures that will appear in the Navigator 2. Assign a menu to one or more responsibilities 3. Assign one or more responsibilities to one or more users

Function

A function is a part of an application’s functionality that is registered under a

unique name for the purpose of assigning it to, or excluding it from, a responsibility. There are two types of functions: form functions, and non–form functions. For clarity, we refer to a form function as a form, and a non–form function as a sub function, even though both are just instances of functions in the database. Form (Form Function)

A form function (form) invokes an Oracle Forms form. Form functions have the

unique property that you may navigate to them using the Navigator window.

Subfunction (Non–Form Function) A non–form function (sub function) is a securable subset of a form’s

functionality: in other words, a function executed from within a form. Menu

A menu is a hierarchical arrangement of functions and menus of functions that

appears in the Navigator. Each responsibility has a menu assigned to it. Menu Entry

A menu entry is a menu component that identifies a function or a menu of

functions.

Page 54: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Responsibility A responsibility defines an application user’s current privileges while working

with Oracle Applications. When an application user signs on, they select a responsibility that grants certain privileges, specifically: The functions that the user may access. The menu determines functions assigned to the responsibility. The concurrent programs such as reports that the user may run (request security Group). The application database accounts that forms, concurrent programs, and reports connect to (data group).

10. LOOKUPS: It’s nothing but a set of codes with description. Lookups of AOL can replace list item of FORMS. These values can be identified by a name. Since it is registered with AOL it’s accessible throughout oracle applications. If the Lookup is registered in system level, you cannot add more codes to it. Instead, if it’s in the user level you can add more codes. When a lookup is registered with AOL, the values are stored in %_LOOKUPS table. These lookups can be used for fields in the form. You just have to retrieve the data from the corresponding table depending upon the lookup type. Lookup type will be the name of your lookup.

11. ATTACHMENTS

The attachments feature enables users to link unstructured data, such as images, word processing documents, spreadsheets, or text to their application data. For example, users can link images to items or video to operations as operation instructions. Document

A document is any object that provides information to support another object or action. Examples include images, word processing documents, spreadsheets, or text. Entity

An entity is an object within Oracle Applications data, such as an item, an order, or an order line. The attachment feature must be enabled for an entity before users can link attachments to the entity. In the context of attachments, an entity can be considered either a base entity or a related entity. A base entity is the main entity of the block. A related entity is an entity that is usually related to the block by a foreign–key relationship.

Page 55: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Attachment

A document associated with an entity is called an attachment. Attachment Function

A form or form function in your application cannot use attachments until the attachments feature is set up for that form or function; that is, it must be defined as an ”attachment function” in the Attachment Functions window.

Document Category

A document category is a label that users apply to individual attachments and documents. Document categories provide security by restricting the documents that can be viewed or added via a specific form or form function. When you set up the attachments feature, you assign document categories to particular forms or form functions. When a user defines a document, the user assigns a category to the document. The attachments form can query only those documents that are assigned to a category to which the calling form or form function is associated. A ”Miscellaneous” category is seeded to provide easy visibility of a document across forms.

CODING STANDARDS PL/SQL Procedure coding Standards: To develop a form that follows Oracle Applications standards, you organize your form code into PL/SQL business rule procedures, field handlers, event handlers, and table handlers.

You put very little PL/SQL code directly into form triggers because those triggers

do not represent a logical model; they are simply event points that Oracle Forms provides for invoking procedural code. If you put most of your code in PL/SQL procedures, and then call those procedures from your triggers, you will have modular form code that is easy to develop and maintain.

You my write any PL/SQL procedure that helps you modularize your form code. For example, a field handler, event handler, or business rule procedure may actually consist of several smaller procedures.

Be sure to group these smaller procedures into logical packages so their purpose is clear.

Page 56: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

General PL/SQL Coding Issues: PL/SQL procedures should always be defined within packages. Create a package for each block of a form, or other logical grouping of code. Package Sizes:

A client–side PL/SQL program unit’s source code and compiled code together

must be less than 64K. (A program unit is a package specification or body or stand–alone procedure.) This implies that the source code for a program unit cannot exceed 10K. Keep the number of procedures in a package less than 25 to avoid exceeding the 10K limit. Using Field Names in Client –Side PL/SQL Packages:

Always specify field names completely by including the block name (i.e., BLOCK.FIELD_NAME instead of just FIELD_NAME). Use Object Ids Any code that changes multiple properties of an object using the SET_<OBJECT>_PROPERTY built–in should use object Ids. Not OBJECT NAME. Field Names in Procedure Parameters:

Pass field names to procedures and use COPY to update field values instead of using IN OUT or OUT parameters. This method prevents a field from being marked as changed whether or not you actually modify it in your procedure. Any parameter declared as OUT is always written to when the procedure exits normally. Declare a procedure as test (my_var VARCHAR2 IN) and call it as test (’block.field’) instead of declaring the procedure as test(my_var VARCHAR2 IN OUT) and calling it as foo(:block.field). Using DEFAULT Use DEFAULT instead of ”:=” when declaring default values for your parameters. DEFAULT is more precise because you are defaulting the values; the calling procedure can override the values.

Page 57: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Conversely, use ”:=” instead of DEFAULT when declaring values for your constant variables. Using ”:=” is more precise because you are assigning the values, not defaulting them; the values cannot be overridden. Global Variables Oracle Forms Global: a variable in the ”global” pseudo–block of a form PL/SQL Package Global: a global defined in the specification of a package Oracle Forms Parameter: a variable created within the Oracle Forms Designer as a Parameter Server Side versus Client Side Procedures that call Oracle Forms built–ins (more generally, client built–ins) must reside on the client. Procedures that reference fields directly, either as :block.field or via NAME_IN/COPY, must reside on the client. You can avoid referencing fields directly by accepting field values or names as parameters to your PL/SQL procedures, which also improves your code’s modularity. If a procedure contains three or more SQL statements, or becomes very complicated, the procedure usually belongs on the server. Procedures that perform no SQL and that need no database access should reside wherever they are needed. If a procedure is called from the server, it must reside on the server. If a procedure is called from both client and server, it should be defined in both places, unless the procedure is very complicated and double maintenance is too costly. In the latter case, the procedure should reside on the server. Formatting PL/SQL Code Within a package, define private variables first, then private procedures, and finally public procedures. Always end procedures and packages by following the ”end” statement with the procedure or package name to help delineate procedures. Indent code logically. Using increments of two spaces provides an easy way to track your nested cases.

Page 58: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Indent SQL statements as follows: Example

DECLARE CURSOR employees IS SELECT empno FROM emp WHERE deptno = 10

AND ename IN (’WASHINGTON’, ’MONROE’) AND mgr = 2701;

Use ”– –” to start comments so that you can easily comment out large portions of code during debugging with ”/* ... */”. Indent comments to align with the code being commented. When commenting out code, start the comment delimiter in the leftmost column. When the code is clearly no longer needed, remove it entirely. Use uppercase and lowercase to improve the readability of your code (PL/SQL is case–insensitive). As a guideline, use uppercase for reserved words and lowercase for everything else. Avoid deeply nested IF–THEN–ELSE control. Use IF–THEN–ELSIF instead. View Avoid creating a view that is used by only one SQL statement. Errors in Oracle Forms PL/SQL If (error_condition) then fnd_message.set_name('prod', 'message_name'); fnd_message.error; RAISE FORM_TRIGGER_FAILURE; end if; Errors in Stored procedures If (error_condition) then fnd_message.set_name('prod', 'message_name'); APP_EXCEPTION.RAISE_EXCEPTION; end if; Do not use CALL_FORM or OPEN_FORM Use FND_FUNCTION.EXECUTE

Page 59: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Handlers: What are handlers? Handlers are centralized piece of code that deals with a specific event or item or table. These are packaged procedures called from triggers. Why use handlers? Easy to work with self contained code. All the code that affects an entity appears in one place for easy development and maintenance. Types of handlers Item handlers - For each item in a block Event handlers - For complex events Table handlers - for base tables 1. Item handlers validate items: Item handlers take an EVENT parameter that identifies the trigger calling the item handler. One package per block Named after the block (or form in the single block case). Procedures named after their particular item. Item handler |------If event ='WHEN-NEW-RECORD-INSTANCE'

| Then does your logic | Item-----------if event ='WHEN-VALIDATE-ITEM' then | Do your logic | |------And many more Call item handlers from Triggers Pass the trigger name as the argument to the handlers. Grouping the code into a single package simplifies maintenance and debugging.

Page 60: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Common item handler events include: WHEN-VALIDATE-ITEM: Call an item handler to validate and set the dynamic item attributes. WHEN-NEW-RECORD-INSTANCE Reset the item attributes to the default for a new record. INIT Examine current conditions and reset defaults and dynamic attributes as necessary. Usually called by other handlers that affect this item.

2. Event handlers Control Events Some logic pertains to multiple items when a single event occurs When to use event handlers? Complex cross item behaviors indicate an event handler that calls item handlers when necessary. Name your event handler after the trigger (the event) it handles. Event handler |--------Call item A's Handler with INIT | | Event happens (Post-Query)------|--------Call item B's Handler with INIT | Item A | Item B |--------Call item C's Handler with INIT Item C 3. Table handlers manipulate Tables: Table handlers support Insert, Update, Delete and locks for your block level views.

Page 61: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Question and Answers 1.What is concurrent processing? It is a technique for executing non-interactive, data-dependent functions simultaneously with on-line operations. Major features Ø Online requests. Ø Automatic scheduling. Ø Online request review. Ø Simultaneous queuing. Ø Multiple concurrent programs for each executable. 2.Difference Between Concurrent program, Concurrent program executable and

concurrent program execution file. Concurrent program: A concurrent program is an instance of an execution file, along with parameter definitions and incompatibilities. Concurrent program executable: A concurrent program executable links an execution file or and the method used to execute it with a defined concurrent program. Concurrent program execution file:

A concurrent program execution file is an operating system file or database stored procedure, which contains user’s application logic and can be executed by either invoking it directly on the command line or by invoking a program, which acts upon it. 3.What is spawned concurrent program? Give an example. A concurrent program that runs in a separate process than that of the concurrent manager that starts it. Example: Purging (Automatic deletion of files) process on backend. Because it started by oracle but it is running on Unix Os. 4.What is immediate concurrent program? Give an example. A concurrent program that runs in the same process as the concurrent manager that starts it. E.g. C & Pro *C routines.

Page 62: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

5. How Concurrent manager ensures that incompatible programs do not run together?

Identify programs that should not run simultaneously with your concurrent program because theymight interfere with its execution. You can specify your program as being incompatible with itself. It uses logical database (it is a set of logically related data). When you define a concurrent program, you specify incompatible programs in the same logical database. 6.What are the different types of execution method? Ø Flex Report. Ø Flex SQL. Ø Host. Ø Oracle Reports. Ø PL/SQL Stored Procedure. Ø SQL *Loader. Ø SQL *Plus. Ø Spawned (C or PRO* C). Ø Immediate (PL/SQL or spawned C). Ø Request set Stage Function. 7.What is a FlexField? A FlexField is a field made up of segments. Each segment has a name, and a set of valid values. There are two types of FlexFields: Key FlexFields. Descriptive FlexFields. 8.What are the differences between Quick Pick & Quick Code? Both are the different types of List of Values provided by Oracle Application Library. Ø Quick Pick is variable because it selects values from user-defined tables. Ø Quick Code is static. It selects values from system table called FND_LOOKUPS.

Quick Code is faster then Quick Pick because it uses internal CACHE. 9.What is MultiFlex? MultiFlex lets you define multiple segment structures for the same FlexField. Your FlexField can display different prompts and fields for different end users based on a data condition in your form or application data. This feature is sometimes called MultiFlex.

Page 63: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

10.What is descriptive FlexField? Why do you need a descriptive FlexField? A descriptive FlexField describes an application entity, providing form and database expansion space that you can customize. Each descriptive segment has a name you assign. You can specify valid segment values or setup criteria to validate the entry of any value. 11. What is a derived column? A column you include in a generic combination table in which your FlexField derives a segment qualifier value. You can specify the name of a derived column when you define a segment qualifier. 12.What are the security rules? If you attach the same value set to two different

FlexField, will the security rule be applied? Security rules are the rules, which contains set of values to be included and excluded for a value set. You can restrict the user from entering those values, for which security rules are attached for a responsibility and value set. There can be any number of security rules for a value set. After assigning a security rule to a value set, you need to enable security property in the value set and segment where that value set is attached, and freeze that FlexField. Then only this security rule will be applied. You can attach a value set to any number of segments, report parameters. Where you have attached that value set, that security rule will be applied. 13.What will you do if you want to navigate to the next segment automatically after

entering a valid value to the current segment? You or your end users can set up your FlexFields to save your user's keystrokes by automatically skipping to the next segment as soon as they have entered a valid value into a segment. Simply set the profile option FlexFields Autoskip property to ‘Yes’. Set the profile option FlexFields: Autoskip to No if you want to type [Return] to get to the next segment after entering a value.

14.What is a combination table? What are the types of combination table? Why do you use it?

A database table you include in your application to store valid combinations of key FlexField segment values. You create a combinations table for each key FlexField you want to use. This is the same table you use as your entity table.

Page 64: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Key FlexFields support two types of combinations tables -- generic and specific. You should use a generic combinations table if you want your application to accept new valid combinations you or your end users have not predefined. You can use a specific combinations table (or you can choose to not allow dynamic inserts when you set up your key FlexField) if you want your application to accept only those combinations that you or your end users have predefined. Ø Generic Combinations Table

A combinations table that contains only key FlexField columns and non-mandatory application columns (and therefore could be used for any key FlexField). If your application uses a generic combinations table, you can choose to allow end users to dynamically enter new valid combinations from your application forms. Before storing a new combination in a generic combinations table, your FlexField ensures that the new combination satisfies your cross-validation rules.

Ø Specific Combinations Table A database table that contains valid combinations you or your end users predefine. You must define your combinations table as specific if it contains any mandatory application-specific columns (that is, columns you cannot enter using the FlexField pop-up window). If your application uses a specific combinations table, your FlexField does not allow end users to dynamically enter new valid combinations from your application forms. Instead, you or your end users anticipate all the valid combinations and identify them using a combinations table maintenance form you create. For example, a company may have a specific set of products and predefine the codes for the end users.

15. Why do you need a structure id column? Is it a must that you should have a

structure id column in your table?

A column you include in a combination table or entity table so you can use the MultiFlex feature. You can construct your application so that it places a value in a structure-defining column to determine the FlexField segment structure your end user sees.

No.

16.Maximum numbers of segments a Key FlexField supports?

70 17.Can you implement shorthand FlexFields entry in a combination form?

No

Page 65: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

18. What are the factors to be taken care if you want a dynamic insertion of the combinations?

If you want your application to allow dynamic insertion of new valid combinations, the following factors should be taken care 1.You must not include any mandatory application-specific columns in your

combinations table. 2. You can include non-mandatory columns to the table.

19. What do popid, loadid and valid do?

Popid pops up a key FlexField window so your end user can enter segment values, loadid displays key segment descriptions when your end user queries your form, and valid validates the segment values and checks cross-validation rules. Invoke popid from a KEY_PREFIELD trigger on a key FlexField and from a FND_PRE_QUERY trigger in a block containing a key FlexField. Invoke popid from a KEY_PREFIELD trigger on a key FlexField and from a FND_PRE_QUERY trigger in a block containing a key FlexField. Invoke from a FND_POST_QUERY trigger in a block containing a key FlexField. Valid ensures your end user enters valid values for required key segments, and returns a unique ID for an existing or new valid code combination. Invoke from FND_PRE_UPDATE, FND_PRE_INSERT triggers in a block containing a key FlexField.

20.What option you give if you want your FlexField to display all but the first

segment?

You can use DISPLAYABLE as a toggle switch by specifying more than one value, separated by \\0 delimiters. For example, if you want your flexfield to display all but the first segment, you would specify: DISPLAYABLE=> ’ALL\\01’

Note that \\0 separates 1 from ALL. 21.How can you prevent your user from updating or inserting values for any

segment?

You can enter UPDATEABLE => ‘’ and INSERTABLE => ‘’(two single quotes) to prevent your user from updating and inserting values for any segments.

Page 66: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

22.What will you do if you want your user to be able to update all but the first segment? You can use UPDATEABLE as a toggle switch by specifying more than one value, separated by \\0 delimiters. For example, if you want your flexfield to display all but the first segment, you would specify: UPDATEABLE => ’ALL\\01’

Note that \\0 separates 1 from ALL. 23.What is the default title of your FlexField popup window? How can you change

that? The default title of your FlexField popup window is Structure name. 24. If you have more than one structure how can you assign structure numbers to

your structure ids? The structure number that identifies your key flexfield structure. You can specify the non-displayed database :block.field that holds the identification number of your flexfield structure. You may also specify :$PROFILES$.your_profile_option_name to retrieve a value you set in a user profile option. You can hardcode a structure number, such as 101, into this parameter instead of providing a field reference, but such a number prevents you from using multiple structures for your flexfield. You must use this option if you are using multiple structures. You can use the following SQL statement to retrieve the structure identification numbers for your FlexField: Select id_flex_num, id_flex_structure_name From fnd_id_flex_structures Where id_flex_code = ‘FlexField Code’; Where FlexField code is the code you specify when you register your FlexField. 25.What will you do if you don’t want your user to query the existing code

combinations?

QUERY_SECURITY = “Y” 26.How can you give your own message if you enter an invalid combination?

NO_COMBMSG = “Message Name”

Page 67: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

27. If you give - value required is yes while defining and in the trigger you give allow nulls = “Y”, which one will take a precedence? Trigger will take precedence.

28. Can you recompile all of your pr eviously defined frozen FlexFields at one time without de freezing it?

Yes. In the operating system prompt you can do this. The command varies according to the operating system. 29. How many DFFs and KFFs you can have in a table? More than 1, according to the restrictions on the segment column and attribute columns and max number of columns allowed in a table 30. Will there be any effect if you add additional segment columns in your table

after registering your FlexField. No. Because you cannot re-register the same FlexField 31. What is the maximum number of attribute columns you can have in a table? 200 32. Can you give your Descriptive FlexField table name a string containing _srs_?

Why? No. Oracle Application Object Library reserves table names that contain the string "_SRS_" for the Standard Report Submission feature, so you should not give your descriptive FlexField table name that includes this string. 33. Is it a must that in the Descriptive FlexField form you should have single

character Descriptive FlexFields? No. You can even have ATTRIBUTE_VALUES field. 34. How can you prevent displaying context value in the FlexField popup window? Set Override Allowed to No (not sure!)

Page 68: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

35.Describe Running Totals. Running Totals automatically maintains a running sum or count of items on a form, in a field you specify. Running Totals automatically adjusts or sets the running sum or running count after an insert, delete, or update of the records from which the sum or count is calculated. 36.Define running sum. For a form that has more than one of a particular numerical value (for example, the monetary amount for each order line on an order form), a running sum is the total of all the values. The running sum is updated every time a change is made to the amounts being summed. 37.Define running count. For a form that has more than one of a particular item (for example, the order lines on an order form), a running count is the total number of all the items. The running count is updated every time you insert or delete an item. 38.What are the implementation types for running totals? You can implement Running Totals using either a database or a non-database field to store the running sum or count. 39.Which implementation gives better performance for a large record set- database

field or non-database? When you select the running sum or counts of items into a non-database field, running total calculates the sum or count each time the master record is queried. When you query the master record, the sum or count is queried directly from the database, and is not recalculated from the record set which comprises it. Triggers and macros used for running total / count Trigger Name: FND_STARTUP #FND DEFINE_RUNTOT RUNTOT_NAME="running_total_name" SQL="SQL_select_statement" [TOTAL=":master.sum"] [COUNT=":master.count"]

Page 69: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

[QUERY_TOTAL="{Y|N}"] [QUERY_COUNT="{Y|N}"] If TOTAL and COUNT are non-database fields, set QUERY_TOTAL and QUERY_COUNT to Y. If TOTAL and COUNT are database fields, set QUERY_TOTAL and QUERY_COUNT to N. #FND FIELD_INFO ZONENAME="detail_zone_name" FIELDNAME="item_to_be_summed_or_counted_field_name" RUNTOT_NAME="running_total_name" 40.How do you update running sum immediately when the line amount changes

rather than waiting until your user leaves the record? Trigger Name: FND_POST_CHANGE #FND RUNTOT POST-CHANGE RUNTOT_NAME="running_total_name" 41.To calculate running total for a order value which is in a control block FND_STARTUP Step 1 #FND DEFINE_RUNTOT RUNTOT_NAME="my_running_total" SQL="select sum(nvl(amount,0)) into:control.total from order_lines where order_id=:control.order_id" TOTAL=":control.total" QUERY_TOTAL="Y" Step 2 #FND FIELD_INFO ZONENAME="order_lines" FIELDNAME="amount" RUNTOT_NAME="my_running_total" Now add trigger steps that cause Running Totals to execute the SQL statement to obtain a new running total each time your user chooses a new value for "order_number".

Page 70: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Method-1 If you need to update only one running sum or count when the value in a control zone field changes, use a FIELD_INFO step in FND_STARTUP: Trigger Name FND_STARTUP #FND FIELD_INFO ZONENAME="control" FIELDNAME="order_number" QUERY_RUNTOT="my_running_total" (Note - this is the required step) Method-2 If you need to update more than one running total when the value in a control zone field changes, then from your FND_POST_CHANGE trigger on that control zone field call the user exit Trigger Name #FND_POST_CHANGE (on the order_number field in the control zone) Step 1

#FND RUNTOT QUERY RUNTOT_NAME="my_running_total_1"

Step 2

#FND RUNTOT QUERY RUNTOT_NAME="my_running_total_2"]...

Step n

[#FND RUNTOT QUERY RUNTOT_NAME="my_running_total_n"]

42. How do you implement sequence numbers using running totals? SQL="SELECT COUNT (*)+1 / SELECT max (item_id) + 1 INTO:order.hidden_field FROM order_lines WHERE order_id=:order.order_id" Sequence no’s will work properly if you do not let your users insert or update seq no's

Page 71: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

43. What is the advantage of using max (seq no col) over count (*) method? If a user queries 3 records with seq no's 1,3,4 then count (*) sets next seq no to 4(duplicate) max seq no sets to 5 which implies that max (seq _col) method avoids producing a duplicate seq no immediately upon query. 44. Is it possible to ZOOM from any field of source form to destination form? Yes, by selecting only form name in ZOOM source and leave ZONENAME and FIELDNAME blank. 45. What are the standard events of ZOOM? Ø START ZOOM. Ø QUERY. Ø END ZOOM. 46.Is it possible to make the destination form as QUERY ONLY while ZOOM to

that form and allow all ope ration while go to that form through menu?? Yes, we can set query only property in ZOOM setups. 47.What are the steps for implementing long field editor? Ø Exclude the long column while creating the block Ø Create two NDB fields, one in page 0 number field fnd_rec_id, other in the page 1

character field, in the same name of long column. Ø In prefield trigger of NDB long column, check whether it is query mode and call

user exit fnd texted Ø In postchange trigger if it is mandatory, check and pop up the editor again. Ø There must be mandatory column in that table, in that columns post change , call the

user exit fnd query long, to popup the value into the long column Ø In fnd post_insert and post_update call the user exit store_long, to store the long

column value in the database. Ø As the long column in the block is a NDB field, in the post change of that field, you

need to change the status of that block, so you need to copy the value of a DB field into that same field, then block status will be changed.

Page 72: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

48. How do you add text lines to a long field? #FND ADDLINE field1 ... {PREPEND | APPEND} Field Text line :block.field. You can include as many fields as you need. Alternatively, you can specify here the actual text that you want added. PREPEND - Insert new text before existing text. APPEND - Append new text after existing text. 49. How do you add temporary, non-updateable text lines to a long field? #FND ADDTEMP field1 ... {PREPEND | APPEND} 50. How do you delete temporary text lines from a long field? #FND DELTEMP 51. How do you add text lines from a file to a long text field? #FND ADDFILE field1 ... {PREPEND | APPEND} Field :block.field containing your filename. Alternatively, you can specify the filename here. You can include as many fields or filenames as you need. 52. What is the macro to generate a unique id? #FND UNIQUEID Max no's up to - two billion (2,000,000,000). Trigger name: FND_PRE_INSERT #FND UNIQUEID table_name field table_name = Name of the table that holds your unique ID column. Field = :block.field to receive unique ID. 53. For sequences no's SELECT table_name_S.NEXTVAL FROM DUAL 54. Why are seq no's faster than unique id's 'cause They are cached in memory.

Page 73: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

55. What are the sequence parameters? Ø Start With: Enter the first number that this sequence should generate. The value in

this field must always be between the minimum value and maximum value inclusive.

Ø Minimum Value: This value is the lower bound for the sequence. You must enter a Minimum Value that is less than the Maximum Value.

Ø Increment By: Enter the interval between sequence numbers. The increment can be positive or negative. If you enter a negative value, then the sequence descends. If you enter a positive value, the sequence ascends. You cannot enter a value of zero.

Ø Maximum Value: This value is the upper bound for the sequence. You must enter a Maximum Value that is greater than the Minimum Value. The default value is 2,147,483,647.

Ø Cycle: Enter ‘Yes’ if you want the sequence to generate additional numbers when the end of the sequence is reached.

Ø Guarantee Order: Enter ‘Yes’ if you want the sequence to generate numbers in order of request. Otherwise enter No.

Ø Cache Size: Enter the number of sequence numbers to cache in memory, resulting in faster generation of sequence numbers. You must enter a value greater than or equal to 0. The default value is 20.

56. In which case Key_Prefield trigger will not fire? Two cases - Ø Previous field uses autoskip attribute Ø If a user leaves a record without entering a mandatory field then form places the

cursor into the field without firing key_prefield 57. What will happen in case, where your last field of a zone is Descriptive

FlexFields and there is a next zone as well? Your Descriptive FlexFields is not enabled and you have used FND_FIELD attribute in second step.

The cursor will go in infinite loop and the form will appear to be hanged. 58. If your detail zone in a master details has first field as FlexField than what

happens. The form does not function well as while navigation to detail zone the FlexField window pops up. To avoid this you add a single character non-database field concatenated with your first field of detail zone. For this echo should be off, and insert allowed.

Page 74: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

59. What is user exit and its advantages in AOL. User Exit is a routine your form calls to perform application processing. Its advantages: Ø Perform calculations, comparisons and operations on values quickly and

automatically. Ø Reduce development time, and standard application functionality. Ø Create your own user exit to perform specialized tasks. Ø Integrate your user exits with AOL user exits library. 60. What is the difference between following user exits? Ø FND IF CALLQUERY Ø FND IF ANYQUERY Ø FND IF QUERY FND IF CALLQUERY - Success when calling a query-only form FND IF ANYQUERY - Success when fired in query mode FND IF QUERY - Success when Enter Query mode but before post query 62. What are the major features of ZOOM?

1.1.Multiple Zoom levels: Users can zoom through several zoom levels before returning to the original form. You can go up to 60 levels in zoom.

1.2.Shared Zooms: You can assign same zoom to several forms

1.3.Zoom Browse: Allows the user to navigate anywhere in the application and return to the form from which the browsing began.

1.4.Brief:

1.4.1.To suspend processing in one form and make a side trip to work in another form then return to the original form and resume processing.

1.4.2.To easily move among related forms. 1.4.3.To carry data between forms and return to the original form without

sacrificing the data entered in the original form.

Page 75: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

63. What do you mean by EXAMINE and why it is used?

Examine is a development utility that helps you test and debug your forms. You can use Examine to check the values of hidden and displayed fields, SQL *Forms system variables, SQL *Forms global variables, user profile opt ions, SQL *Plus variables, and operating system environment variables while you develop and test your form.

64. Automatically when you zoom to a form from a field, How do you restrict the

user to edit, but when you zoom through menu options no restriction to the user? Using #FND IF ZOOM

65. How do you zoom automatically to a form from a particular field?

Using #FND ZOOM 66. How the data will be carried from fields in your source form to fields in your

destination form whenever a StartZoom occurs?

In start zoom we say #EXEMACRO EXETRG FND_EXEQRY; In Query Event we say #EXEMACRO COPY SOURCE: PURCHASE_ORDER. VENDOR_NAME INTO VENDOR.VENDOR_NAME;

67. What is shared zoom?

You can assign same zoom to several forms 68. Can we use Examine to change the values in form fields, global variables,

environment variables, and certain profile options? Yes

69. Can you have a SQL statement or other code in your Zoom steps?

No 70. What is the significance of GENERIC option under #FND ZOOM?

If you choose "GENERIC", Oracle Application Object Library executes the particular Zoom you specify in the [APPS = application_short_name] and [ZOOM = zoom_name] arguments.

This option allows you to use a particular Zoom from any context. Typically, you choose "GENERIC" if you want to execute your Zoom when your end user chooses a menu option you define.

Page 76: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

71. To query the data automatically when your user enters the destination form, which Zoom event we use?

Query event

72. To specify constant criteria for every query your user executes while in the

destination form, which option you select in the 'Execute' field of the Define zoom form?

Always

73. Under which zoom event you write the code to copy data from the destination

form back to the source form.

Endzoom event 74. What is the macro to generate a unique id?

#FND UNIQUEID Max no's upto - two billion (2,000,000,000). Trigger name: FND_PRE_INSERT #FND UNIQUEID table_name field

75. How will you make a form query only?

When we are attaching the form to a menu in TYPE field we have to select ac tion type as 'Query form'

76. How can you restrict a particular user to enter a zone?

Using user profiles we can restrict the user to enter a zone. case $profile$ = user name GO_BLOCK =:BLOCK NAME

77. Can bind variable be used as an input value?

No 78. Is it possible to use UNION, INTERSECT, MINUS in Quick Pick SQL

statement? If not, how can you achieve them?

No. It can be achieved by creating a view.

Page 77: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

79. How many Quick codes can be defined in a single quick code?

200 80. What are the steps to be followed while registering the new applications?

Prerequisites to register the new applications: Before using 'Register application' form to register your application, you should perform the following step: ØDefine an environment variable, which translates to your application's base path ØSet up a directory structure for your application ØRegister Your Application. You assign your custom forms to a particular application. When you register your application, you give it a long name, a short name, a prefix, base path (Bin Directory path where the applications files will be stored), description, as well as a place in your system where Oracle Application object Library can find it. ØApplication Base path The name of an environment variable that translates into the top directory of your application's directory tree. Oracle Application Object Library searches specific directories beneath the base path for your application's executable files, including form files. ØUse your custom application's application short name as the ORACLE ID for easy

identification. You must register your ORACLE ID with Oracle Application Object Library.

ØAdding Responsibilities. You can define new responsibilities using the Define Responsibility form in the System Administrator responsibility.

ØYou should create new responsibilities for your custom menus and forms. You can associate these custom responsibilities with your custom application

ØDefine the user under the HR responsibility and attach the users to the required

responsibilities. ØDuring your implementation, you set a value for each user profile option in Oracle

Inventory to specify how Oracle Inventory controls access to and process data.

Page 78: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

81. To have our own quick codes table what are the steps to be followed? ØCreate your own QuickCodes table called XXX_LOOKUPS, where XXX are

characters you choose that refer to your application. Your table name must end with the string '_LOOKUPS' otherwise Oracle Application Object Library does not recognise it as a QuickCodes table.

ØYour table must contain the same columns as FND_LOOKUPS. Columns for XXX_LOOKUPS Table LOOKUP_TYPE VARCHAR2(30) NOT NULL LOOKUP_CODE VARCHAR2(30) NOT NULL LAST_UPDATE_DATE DATE NOT NULL LAST_UPDATED_BY NUMBER(15) NOT NULL MEANING VARCHAR2(80) NOT NULL ENABLED_FLAG VARCHAR2(1) NOT NULL START_DATE_ACTIVE DATE END_DATE_ACTIVE DATE CREATED_BY NUMBER(15) CREATION_DATE DATE LAST_UPDATE_LOGIN NUMBER(15) DESCRIPTION VARCHAR2(80)

82. Different between once Initially and Always in zoom? 'Once initially' executes the query once in the zoom destination form. A Query

event occurs whenever a query executes in the Zoom destination form. So the query will be executed always when you say Execute 'Always'. We use this to make our query criteria constant. 83. What is the significant difference between descriptive FlexField and Key

FlexField?

Key FlexField Descriptive FlexField Form with foreign key reference No such concept Form with key FlexField range No such concept Support two types of combinations tables Do not support

-- GENERIC and SPECIFIC. With SPECIFIC type table you can make Your Application to accept only those Combinations That you or your end users have predefined No such facility Cross Validation Rules facility No such facility Concept of FlexField Qualifiers No such concept Concept of Segment Qualifiers No such concept

Page 79: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

84. Can you attach more than one segment qualifier to a FlexField qualifier? If yes why do you do it? How does it differ?

Yes, You can assign one or more segment qualifiers to each FlexField qualifier. A segment qualifier applies to specific values your end user defines using the Define Key Segment Values form. Segment qualifiers expect QuickCode values. For example, if you have a segment qualifier called "Account Type" you might want a Special QuickCode type called "ACCOUNT_TYPE" that has several codes and meanings. You define Special QuickCode values using the Define Special QuickCode form.

89. Is it possible to create a profile dynamically? You can also create a profile option at run-time with this routine. Syntax: #FND PUTPROFILE NAME="option_name"

FIELD="block.field" CREATE="{Y|N}" WRITE="{Y|N}" READ="{Y|N}" CLEAR="{Y|N}" Concurrent Programs who columns, Program Id, Program application id, request id, Program Update Date. All the tables of flex fields DEFN - FND_ID_FLEXS FLEXFIELD QUALIFIER - FND_SEGMENT_ATTRIBUTE_TYPES SEG QUALIFIER - FND_VALUE_ATTRIBUTE_TYPES STRUCTURES - FND_ID_FLEX_STRUCTURES SEG DEFN - FND_ID_FLEX_SEGMENTS VALUE SETS DEFN - FND_FLEX_VALUE_SETS VALUE SETS VALUES - FND_FLEX_VALUES CROSS VALIDN RULE - FND_FLEX_VALIDATION_RULES CROSS VALIDN ELE - FND_FLEX_VALIDATION_RULE_LINES 92. How do you execute a concurrent program from PL/SQL, and O/S? From form - using a user exit #fnd concurrent Through pl/sql -> fnd_request.submit_request() package fnd_concurrent.wait_for_request Through os -> through concsub Finding concurrent request status - #fnd request_status

Page 80: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

93. What is FlexField qualifier? Where the values are stored? FlexField Qualifier describes the key segments that your end users should define while customising key FlexField, by specifying FlexField qualifier, you ensure that your end users that when he customises he includes the key segments that your application needs. Ex. If you are designing a accounting Key FlexField, you need to have one segment for account, one for balancing, so you define two FlexField qualifier while designing Key FlexField, so that you ensure that your FlexField should have these two segments. The Values Are Stored in FND_SEGMENT_ATTRIBUTE_TYPES 94. What is segment qualifier? Segment Qualifier describes characteristics of key segment values, segment qualifier qualifies or defines the values you can enter for a segment. Ex. For Account Segment, we need to accept Account type, and reconciliation to be done values, you define all these columns, and quick code where values are defined, and derived column where the value to be stored are defined in segment qualifier. 95. How to call a concurrent program from Menu? Using Macros, you define a Macro calling CONCSUB program, and call that CONCSUB macro from the Menu. 96. What are security rules? If I attach the same value set to two different FlexField, will the security rule be applied? Security Rules are the rules, which contains set of values to be included and excluded for a value set. You can restrict that user cannot enter those values, security rules are attached for a responsibility and for a value set, and there can be any number of security rules for a value set. After assigning a security rule to a value set, you need to enable security property in the value set and segment where that value set is attached, and freeze that FlexField. Then only this security rule will be applied. You can attach a value set to any number of segments, report parameters. Where you have attached that value set, that security rule will be applied. 97. What is the parameter you pass at runtime through sqlldr from a concurrent

program? You can either pass a parameter; it will take data file mentioned in the control file or the data file you pass.

Page 81: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

98. How you load data from a flat file to interface table through concurrent program? You define a concurrent program, executable as sqlloader, file name of control file, this control file should be there in application's bin directory i.e GL_TOP/bin and you give the parameter of data file name, and run that concurrent program 99. What are the requirements you need to know while registering an application? Short name, Message Prefix, Abbreviation, Base Path Environment Variable, 100. You have 100 forms; you need to give access of 10 forms each to 10 users, and all 100 forms to one user? How you do it? I will define 10 menu's each with 10 forms, then I will define 10 responsibilities, and attach 10 different menu's to 10 different responsibilities, and I define a menu in which I will attach all the 10 menu's under that menu, and I create a responsibility under which I will attach this menu. 101. Why quick code is faster than quick pick? Quick code loads the data into the cache memory, that's the reason it is very fast. 102. Where quick code values are store? fnd_lookups columns Lookup_type, Lookup_code, meaning 103. Which are AOL reports?

ØConcurrent Programs Details Report. ØGenerate Messages Report ØConvert Messages Report ØIndex Summary Report ØRegister Table Report ØTable summary report ØView summary report

104. Suppose you are submitting 100's of reports through a month, now you want status of the reports, from which table you can get that info? fnd_concurrent_requests

Page 82: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

105. Suppose you have submitted 1000 concurrent program, they are in queue. Power goes off? What happens to your concurrent program? It will be there in the queue, and when that Concurrent Manager becomes active, that program will start running, as it will be there in concurrent_program_queue table it will be re submitted. 106. How do you compile the menu dynami cally at run time?

#fnd menu check 107. How you will check that you are now in a form, which is called from menu or zoomed?

#fnd if zoom 108. You have big complex query, you need to use it in your apps, at several places, how?

Named Sql 109. What are the things you attach when you create a new responsibility? ØApplication ØStart Date ØData Group ØOracle Id ØMenu ØFirst form ØReport Security Group.

110. What is zoom brows?

Browsing from one form to any form, which is not defined as a zoom. 111. What is main menu? It is the menu, which you attach to a responsibility, it is the menu which has Navigate as first prompt, which will call all other submenus. 112. What is responsibility? Who will set the profile option? A responsibility defines: ØApplication database privileges ØAn application's functionality that is accessible ØThe concurrent programs and reports that are available

Page 83: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

113. When start zoom event will get fired? fnd_standard_startup 114. Which are the descriptive FlexField Tables? Definition - FND_DESCRIPTIVE_FLEXS CONTEXT FLD VALUES - FND_DESCR_FLEX_VALUES Segment definitions - FND_DESCR_FLEX_COLUMN_USAGES VALUE SETS - FND_FLEX_VALUE_SETS REF FIELDS - FND_DEFAULT_CONTEXT_FIELDS 115. What are report groups? Where you define? How you define? What are the zones in report groups declaration forms? Report groups are used to control access to reports and concurrent programs. Only a System Administrator can define a report group. 116. Why concurrent program executables are defined separately? To identify the execution file for a concurrent program and in another way we can say as follows: Concurrent program executables allow you to use the same execution file for multiple concurrent programs. To create specialized versions of a concurrent program, either define a new concurrent program using the same executable, or copy the concurrent program. You can specialize a concurrent program by required printers, specialization rules, or application name so that the concurrent programs run using the same execution file but with different parameters. 117. What does AOL do for Oracle Apps? or What is the role of AOL in APPS? ØAdministration facilities ØValue added features of Oracle Apps such as Easy Form & FlexFields ØConcurrent processing ØStandard Report submission ØUser Profiles ØSecurity of the Applications

Page 84: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

118. Describe the Normal Cycle of Development using AOL's Easy Form? ØRegister your Application ØCreate your tables ØAdd WHO columns ØRegister your tables ØPaint your form ØCopy the Form source to the Application Source (Forms) Directory ØRegister your form ØCopy Back the newly generated Form after Reg. to the Home/Dev Dir ØAdd Features to the form 119. Name few important AOL routines used for implementing Quick Pick # FND FKEY DEFINE_LISTVAL # FND FIELD_INFO 120. If you are not defining Quick Pick at form level which trigger needs to be defined at field level?

FND_FKEY 121. What is the trigger to show values for a Quick Pick?

#FND_LISTVAL 122. What is the AOL routine, which executes a Quick Pick definition?

#FND FKEY LISTVAL 123. If you want different Quick Pick's to be displayed according to some condition, how will you manage that? Use CASE statements under a FND_FKEY trigger 124. If you want your users to enter new values for your Quick Pick field what will you do?

Match = "N" 125. What is macro? A SQL*Forms macro is a predefined form action that is invoked from a form trigger with the "#EXEMACRO" command or, when registered with Oracle Application Object Library, from application menus.

Page 85: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

126. Define a WHO column? Columns you add to a table for display of information on creation and last update of a row. If you add WHO columns to an existing table, you have to make even the mandatory WHO column as NULL allowed. If the table is a Key FlexField combination table, you should always define them as NULL allowed. 127. Explain the significance of WHO columns. WHO columns help in display of creation/updation info of a row which helps in audit of data in a business. 128. What are the possible registrations under Database category in AOL? Sequence, Unique ID, Table, View 129. What is the AOL routine, which calls a message in a Form?

#FND MESSAGE 130. What is extended WHO info? How to provide Extended WHO info? If you want to see extended Who information in the Who pop-up window, you must add the LAST_UPDATE_LOGIN column to your tables. The additional Who information includes the operating system logon, terminal identification, and session number of the user who last updated a row. To see extended Who information, your system administrator must turn on Sign-On Audit and set the profile option Who:Display Type to "Extended". 131. If you need to place the message text in a form field, What needs to be done? Use output_field step and attach a form field 132. What is a CLRZONE STEP in a FND zone_info routine? CLRZONE lists the zone names to be cleared when you query a new row / clear the zone of context 133. What is a NEWRECORDS option in a FND zone_info routine? This determines whether addition of new rows to be allowed or not. If the form is based on a view which joins 2 or 3 tables, if you set this as N, you cannot navigate between the queried rows so you should use NEWRECORDS=:block.database_field_name

Page 86: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

134. How will you identify indexes of your table via AOL? \Navigate \Application \Database \Table \Update - In this form you have 4 sibling zones namely Columns, Indexes, Primary Key columns, Foreign Key Columns 135. What is Named SQLs? Some repeatedly used QuickPick logic is named and stored in the database. Forms can reference this "Named SQL" logic in their QuickPick definitions. Named SQLs share QuickPicks across forms. The stored logic includes a SELECT statement, ENTRY & QUERY validation, and an ORDER BY clause. When form triggers reference the Named SQL, the trigger specifies the application and name of the Named SQL, as well as the fields to populate with the results of the SQL logic. 136. What are the two OS files created and maintained by AOL in connection to Message dictionary? usaeng.msb/usaeng.msg 137. What is Report Security Group (RSG)? You can run any report, report set or concurrent program that your system administrator includes in your responsibility's RSG. 138. Will your cross-validation rules affect on FlexField combi nations that already exist? No. 139. Can you implement shorthand FlexFields entry in a combination form? No. 140. What you have to do if the user want to exit the FlexFields window without entering any value in the segments? Required = "N" Note that even if REQUIRED="N", a user who starts entering segment values for this FlexField must either fill out the FlexField in full, or abandon the FlexField.

Page 87: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

141. Name some mandatory/non mandatory WHO columns for Key FlexField? LAST_UPDATED_BY NUMBER(15) NOT NULL LAST_UPDATE_DATE DATE NOT NULL Non-Mandatory: LAST_UPDATE_LOGIN NUMBER(15) NULL CREATED_BY NUMBER(15) NOT NULL CREATION_DATE DATE NOT NULL 142. How does AOL ensure that segments are attached to FlexField qualifier? When you try to freeze the FlexField structure and compile that it gives error: Cannot compile FlexField: FlexFields was unable to freeze FlexField data because of an error. 143. Name some columns used with Concurrent Processing. Request_id [A Fkey to FND_CONCURRENT_REQUESTS] number null ALLOWED PROGRAM_APPLICATION_ID[A Fkey to FND_CONCURRENT_PROGRAMS] -DO-PROGRAM_ID [A Fkey to FND_CONCURRENT_PROGRAMS] -DO- PROGRAM_UPDATE-DATE DATE & NULL ALLOWED 144. What is the use of TEMPLATE form? Template Form is a powerful Oracle Application Object Library feature that simplifies many of the tedious tasks you perform when building application forms. It allows you to build and maintain complex forms quickly and efficiently. In addition, Template Form enforces a standard look throughout your application and provides many Oracle AOL features within your forms without requiring any programming. 145. How do you invoke the calendar? calendar.show; 146. What are the events passed to the custom library? The Custom Library receives two different kinds of events, generic and product-specific.Generic Events are common to all the forms in Oracle applications. These events are: When Form Navigate, When New Form Instance, When New Block Instance and etc. Product Specific Events associated with the business rules of that product. For example the Navigate event in Oracle Human Resources.

Page 88: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

147. What are the Naming conventions for tables? Prod_objects: Where prod is the product short name, and objects are the name of the objects stored in the table and should be plural. PO_VENDORS, AS_LOOKUPS. 148. Can I write independent procedures and functions? No, it is to be written always as part of packages. The size of the package, both source and object code, should not exceed 64K. Server side procedures do not have a size limit. 149. When Segment Qualifier gets affected? When you enter the values in the value set, which was attached to segment in Flex field segments. 150. What is difference between DFF and KFF? DFF is use to describe the entity in your application while KFF is use to identify the entity in your application. 151. What's the maximum number of descriptive flexfields allowable on a form? It depends on the number of zones (blocks) in the form. While defining the segments of the registered DFF in 'Define Descriptive Flexfield Segments' Form, he restrict on dff for one block by asking the application, form, zone names. 152. In Receivables (character), the 'Enter Credit Memos' (ARXMAECM) form has two pre-defined flexfields that are currently being used. What are the steps required to add a third flexfield to this character form? If you need to add one more base table block(zone) in which you want to define the third flexfield, you have to define the segment columns in the new table, register it in apps_appdemo, register the flex field, define the segments and write your form routines. If the third flexfield has to be in the existing zone (in the existing table) then if there is any unused (not enabled) segments columns are there, they can be enabled under a new flexfield and used. 153. What naming convention did you use to name the program, executable, short name and execution file name? First determine a short name such as RAX for your project. Use this for all associated environment variables, etc.

Page 89: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

You can use the Oracle format of RAXSUMCS, where RAX, is for the application, Revenue Accounting, or AR, SUMCS is for a Summary Customer Screen (not sure actual title). This really depends on project standards or whatever has been determined for consistency. You can build some meaning into the naming convention such as, RAX110CE, where RAX, is short name, 110 is for an Update form only (you can use 100, 200, 300, etc. for different type forms), and CE could be for Customer Entry. Be creative and consistent. Developers should be using project standards that are understood by all. Keep it simple. 154. I have had to create some value sets to handle our parameter requirements. What naming convention did you use to name the value set? What manual can I reference to find more information on creating value sets? Be consistent here as well. Has functional team members created any value sets? What format have they used? You can prefix them with the short name you previously defined and still keep to a consistent naming convention, either the Oracle defined value sets or again be creative but consistent. 155. I am doing all this registering, defining, and attaching of custom and modified reports in our development instance, as well as creating the value sets. Am I going to have to manually do this in our test and production instances? Is there an efficient method to keep track of this? Have you tried to capture the keystrokes for all of the above in an out file using an event logger? You can setup something like this, aiaf45.exe record=MYSETUPS - this will capture the events from the above into a file which can be can be used in other application instances. You can find more info about this in the Oracle forms documents. 156. What are the disadvantages of DFF? DFF values are always stored as alphabetic. DFFs are usually become release-dependent. 157. What does the APPSTAND form contain? Standard property classes for your runtime platform, it has object groups STANDARD_PC_AND_VA which has the visual attributes and property classes for implementing user interface, STANDARD_TOOLBAR which contains the windows, canvasses, blocks and items of the Application.

Page 90: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Toolbar, STANDARD_CALENDAR that contains the windows, canvasses, blocks, and items of the Application Calendar, QUERY_FIND that contains a window, canvas, block and items used as a starting point for coding a Find Window. This object group is copied into each form, rather than referenced so that it can be modified. It has got additional objects for internal use by Oracle Application only, and their use is not supported. Specifically the object group STANDARD_FOLDER is not supported. 158. What does the FNDSQF client library has? FNDSQF contains packages and procedures for message dictionary, flexfields, profiles, and the concurrent manager. It also has various other utilities for navigation, multi currency, WHO, etc. 159. What does the APPCORE client library has? APPCORE contains the packages and procedures that are required of all forms to support the menu, Toolbar, and other required standard behaviors. Additionally it contains packages that should be called to achieve specific runtime behaviors in accordance with the Oracle Applications User Interface Standards, such as the way in which fields are enabled, behaviors of specific types of windows, and the dynamic ’Special’ menu. Finally, it contains various other utilities for exception handling, message levels, etc. 160. He advises you to use vi ews for LOVs. But in some occasions he doesn't. What are the occasions? When the query is too simple or too complicated. 161. I have implemented Zoom logic. The form is not working properly. Is there any way to check whether the error is because of wrong application code or the custom library? Help ->Tools->Custom Code->Off. 162. What are the generic events that CUSTOM library receives? WHEN NEW FORM, BLOCK, RECORD, IETM-INSTANCE, WHEN-VALIDATE-RECORD, ZOOM, EXPORT

Page 91: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

163. Are there any mandatory settings to be done at form generation time? Designate the character set designed for you language in the NLS_LANG variable in your oracle.ini file. You should not set USER_NLS_LANG. On MS Windows: Add the line in [Oracle] section of your oracle.ini file: DEVELOPER_NLS_LANG = "AMERICAN_AMERICA.US7ASCII" For Unix, Place the command in the environment script setenv DEVELOPER_NLS_LANG AMERICAN_AMERICA.US7ASCII. 164. Which are the triggers from which you call the flexfield? PRE-QUERY, POST-QUERY, PRE-INSERT, PRE-UPDATE, WHEN-VALIDATE-RECORD, WHEN-NEW-ITEM-INSTANCE, WHEN-VALIDATE-ITEM 165. What precaution you should take if you write them at block-level? Set the trigger execution style to "Before" or include these procedure calls in those form level trigger as well. 166. Which is the property class that TEMPLATE form automatically applies to the module? MODULE property class 167. Which is the procedure with which you call the flexfield? FND_FLEX.EVENT (EVENT) 168. In which library the flexfield packages and procedures are included? FNDSQF 169. Can I set the trigger execution style of any trigger as after? No, only before or override 170. Where the custom library is located? $AU_TOP/res/plsql or platform equivalent

Page 92: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

171. What are the important arguments you specify in flexfield definition? Locations of the ff - block, field including the concatenated values field, and description field, specific registered ff you want and structure if necessary and any additional arguments. 172. What are the procedure names to be called in

WHEN-NEW-FORM- INSTANCE to call KFF and DFF? FND_KEY_FLEX.DEFINE, FND_DESCR_FLEX.DEFINE. 173. Why do my PLSQL stored procedure concurrent programs error out with: 'Invalid number of Arguments’? PLSQL concurrent programs must have 2 OUT arguments defined. RETCODE is used to return the error status ERRBUF is used to return an error message. Note that you do not need to define these arguments in the Define Arguments form, only in the procedure itself. 174. How to Customize Standard Reports? To customize existing reports, the following steps should be taken in 10.6. However, if you are on 10.7, substitute ar25desb for ar20desb. 1. Sign on using an account with write permission to the $PA_TOP/srw directory. 2. Copy the standard report file (*.rdf) to a new name. 3. Invoke "ar20desb" using the following syntax: DISPLAY={IP Address}:0.0; export DISPLAY ar20desb & 4. Modify the program but do not attempt to run the program from within the "ar20desb" environment because it will fail. Compile the program and exit ar20desb. 5. Log on to the Applications and select the Application Developer responsibility. 6. Register the new file name as an executable in the concurrent manager. 7. Run the new report from the concurrent manager.

Page 93: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

8. If ar20desb is not available, follow the steps below to create it from the "adrelink" utility:

a. Sign on to UNIX as applmgr b. Change the directory to the $FND_TOP/bin c. Run "adrelink" using the following syntax:

adrelink force=y ranlib=y "FND ar60desb" 9. If the report does not run successfully from the concurrent manager, the developer should go back to an Xwindows session, re-open the report, modify it, and then move back to the concurrent manager -- repeating until the report performs as expected. 175. How do I register a custom concurrent program? Step 1: Register a concurrent program executable Navigate to the Define Executable form. This determines the type of program being run, ie an Oracle Report, a C program, a shell script etc. Fill in the executable name, application and execution method. For the Execution File, fill in just the filename. The concurrent manager will look in the appropriate directory under the application's top directory. For spawned programs, the file must be in the bin directory, for Oracle Reports the rdf file must be in the SRW directory. For PLSQL concurrent programs, put the name of the stored procedure. Step 2: Define the concurrent program Navigate to the Define Concurrent Program form. This form links a concurrent program to the executable you just defined, as well as defines the programs parameters, incompatibilities, and other options. Enter the concurrent program name, application, short name and description. Check Standard Submission if you want to be able to submit this program from the Standard Report Submission form. Enter the name of the executable you defined and any report information if necessary. Also define any parameters your program needs here and any incompatibilities. Step 3: Add the concurrent program to a Report Group First you will need to find the name of the Report Group to use. Go to Security->Responsibility and query the responsibility you want to run the program with. It should show a Report Group name. Query this name in Security->Responsibility->Report Add your new program to the list of available programs. Now when you go to submit a request with this responsibility, you will be able to submit your custom program.

Page 94: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

176. How do I compile a custom C program? Spawned programs: Step 1: Write the code Self-explanatory Step 2: Compile the source You must use the makefile under $FND_TOP/usrxit Use: make -f $FND_TOP/usrxit/Makefile program.o We do not support using any other makefile Step 3: Link the program This part is a little tricky. You need to create a custom makefile for this step. Use $FND_TOP/lib/sample.mk as a starting point. Copy this file to the lib directory under your applications top directory. Rename it <short name>.mk (ie fnd.mk, gl.mk etc)

Modify this file according to the directions in it. Basically you need to add a target and build commands for your executable.

Next, use adrelink to link the executable: adrelink force=y ranlib=y "shortname programname" Step 4: Register the program as in the above question 178. How do I run a shell script as a concurrent program? 1: Write the script and call it <name>.prog Place the script under the bin directory under your applications top directory. For example, call the script CUSTOM.prog and place it under $CUSTOM_TOP/bin 2: Make a symbolic link from your script to $FND_TOP/bin/fndcpesr For example, if the script is called CUSTOM.prog use this: ln -s $FND_TOP/bin/fndcpesr CUSTOM This link should be named the same as your script without the .prog extension It should be in the same directory as the script. 3: Register a concurrent program as described above, using an execution method of 'Host' Use the name of your script without the .prog extension as the name of the executable For the example above, you would use CUSTOM 4: Your script will be passed at least 4 parameters, in $1 through $4

These will be: orauser/pwd, userid, username, request_id Any other parameters you define will be passed in $5 and higher. Make sure your script returns an exit status. 5: If your script returns a failure exit status but the concurrent manager does not report the error (shows it as still running normal) apply patch 442824

Page 95: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

179. How to register a shell Script as a concurrent Program? 1. Register concurrent program as usual. 2. Place your unix script in $....._TOP/bin. Add a ".prog" extension to the end of it.

$PO_TOP/bin/extract.prog

3. Create a symbolic link (in your $...._TOP/bin) to $FND_TOP/bin/fndcpesr

e.g ln -s $FND_TOP/bin/fndcpesr extract

In our example, we now have 2 programs under $PO_TOP/bin: extract extract.prog

Setting this up, means that when you run the "extract" script from the current

manager, the fndcpesr program is run first which splits the parameters and then sends them to your .prog script (i.e. your actual unix script) as individual parameters rather than as complete string.

Description for arguments: Argument1 $1 user_name/password" Argument 2 $2 user_id Argument3 $3 user name Argument4 $4 Conc Request ID The above four arguments are created by oracle applications when u create a concurrent program for any shell script. The sequence of this argument is same as mentioned above. All the user-defined arguments are starts from argument5 ($5) For Example in sqlldr userid=$1 control=$5 log=$6 bad=$7 discard=$8 Control $5 Control File Name with Full Path log $6 Log File Name With Full Path bad $7 Bad File Name With Full Path discard $8 Discard File Name With Full Path

Page 96: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Shell Script To Run CONCSUB

Concsub $1 INV "Oracle Inventory" $3 CONCURRENT INV VV_ITEM_MAIN_PGM

Description for arguments: Argument1 $1 user_name/password" Argument 2 $2 user_id Argument3 $3 user name Argument4 $4 Conc Request ID The above four arguments are created by oracle applications when u create a concurrent program for any shell script. The sequence of this argument is same as mentioned above. All the user-defined arguments are starts from argument5 ($5)

Shell Script To Run SQL*LOADER

sqlldr userid=$1 control=$5 log=$6 bad=$7 discard=$8 Description for arguments: Argument1 $1 user_name/password" Argument 2 $2 user_id Argument3 $3 user name Argument4 $4 Conc Request ID The above four arguments are created by oracle applications when u create a concurrent program for any shell script. The sequence of these arguments is same as mentioned above. All the user-defined arguments are starts from argument5 ($5) For Example: Control $5 Control File Name With Full Path log $6 Log File Name With Full Path bad $7 Bad File Name With Full Path discard $8 Discard File Name With Full Path

Page 97: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

Shell Script to send log file contents to a particular user as a mail tot_read=0 tot_bad=0 tot_dis=0 success=0 tot_read=`cat $INV_TOP/out/l$5\.req|grep read|cut -d":" -f2` tot_bad=`cat $INV_TOP/out/ l$5\.req|grep rejected|cut -d":" -f2` tot_dis=`cat $INV_TOP/out/l$5\.req|grep discarded|cut -d":" -f2` success=`expr $tot_read - $tot_bad - $tot_dis` echo "total Number of records read...."$tot_read > \tmp\chkmail echo "total Number of records sucessfully uploaded...."$sucess >>\tmp\chkmail echo "total Number of records which are bad ...."$tot_bad >>\tmp\chkmail echo "total Number of records which are discarded...."$tot_dis >>\tmp\chkmail echo "\n\nThis report is Generated by Vivek ">>\tmp\chkmail mail $6 < \tmp\chkmail Note $6 is user mail id Procedure to call Mail Shell Script (Registered as a Concurrent Program) FND_REQUEST.SUBMIT_REQUEST('INV','VV_MAIL','VV_MAIL', argument1=>to_char(sub_return1),argument2=>user); If Sub_return = 0 then Errbuf := 'Error While Sending the Mails to the respective Users’; retcode := 100; Return; Else Commit; End if; Wait_for_req := FND_CONCURRENT.WAIT_FOR_REQUEST( sub_return, sub_interval, sub_max_wait, sub_phase, sub_status, sub_dev_phase, sub_dev_status, sub_message); If sub_dev_phase != 'COMPLETED' and sub_dev_status != 'NORMAL' Then errbuf := 'Error Occured while sending mails to the Users’; retcode := 103; return; end if; commit;

Page 98: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

180. How many parameters can be passed to Concurrent Programs? Your stored procedure concurrent program is restricted to 100 parameters in addition to the first two parameters, which are required and must be specified exactly. (You must take these two parameters into account when you create your stored procedure). Use ERRBUF to return any error messages, and RETCODE to return completion status. The parameter RETCODE returns 0 for success, 1 for success with warnings, and 2 for error. After your concurrent program runs, the concurrent manager writes the contents of both ERRBUF and RETCODE to the log file associated with your concurrent request. Attention: You should restart your concurrent managers whenever you create or reinstall a stored procedure concurrent program. 181. How does ALLOWNULLS affect the required property? Determines whether NULLs should be allowed into any segment. ALLOWNULLS only overrides the segment definition (Value Required is Yes) for each segment if you specify PARTIAL or NONE for the VALIDATE parameter. 181. How you can register Custom Tables in Oracle applications? Problem Description One obvious method is to log onto Applications as the Application Developer Responsibility and navigate to Application->Database->Table (this form is FNDADDTC). Entering any sort of information into this form will give you the following error: FRM-40200 Field is protected against update error Problem Explanation The form FNDADDTC is a view only form hence the FRM-40200 error occurs. Solution Description Register custom tables using the PL/SQL procedures register_table and register_column in the AD_DD package.

Page 99: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited

182. How to solve the following Problem: I am writing a procedure to be run from Standard Request Submission window. The sample of procedure is as follows. CREATE OR REPLACE PROCEDURE TEST (ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2) AS BEGIN FND_FILE.NEW_LINE (FND_FILE.LOG, 'THIS IS LOG'); FND_FILE.NEW_LINE (FND_FILE.OUTPUT, 'THIS IS OUTPUT'); ERRBUF: = NULL; RETCODE: = '0'; END; I registered the program properly and when I run the program, I am getting following message in Log File: ORA-06512: PL/SQL: numeric or value error ORA-06512: at "APPS.TEST", 1 Solution: FND_FILE.NEW_LINE : Use this procedure to write line terminators (new line characters) to a file. Syntax: FND_FILE.NEW_LINE (which, lines); Where

Which: Log file or output file. Use either FND_FILE.LOG or FND_FILE.OUTPUT.

Lines: Number of line terminators to write. We have used wrong argument types in the wrong API that is why we got the error. If you change that procedure as like below you will get the desired result. Create or replace package body samy Is Procedure test1 (ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2) Is Begin

fnd_file.put_line (FND_FILE.LOG, 'This is Log'); fnd_file.put_line (FND_FILE.OUTPUT, 'this is output');

ERRBUF: = NULL; RETCODE: = '0'; End; End;

Page 100: AOL-CHAMY

Oracle APPS Tech

Prepared by M.KARUPPUCHMAY OCP This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited