Aol Chamy

Download as pdf or txt
Download as pdf or txt
You are on page 1of 100

Oracle APPS Tech

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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 f or 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 passwo rd 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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 s pecified 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:

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
<!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 i n 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>

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 f or 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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’.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

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

8. Generate the .fmb file to .fmx file

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 )

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

Put the file to corresponding Module

Convert the file to Binary Format

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

File Name

Path

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

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

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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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'))

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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*/

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
* 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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
applications. 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 whe n 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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);

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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');

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
PACKAGE KK_DFF IS
PROCEDURE KK_FLEX (EVENT VARCHAR2);
END;

PACKAGE BODY KK_DFF IS


PROCEDURE KK_FLEX (eve nt 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 c oncatenated 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 seqment s for a particular structure id.

7. Register your form and Run it.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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, wh ich acts upon it.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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”

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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!)

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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"]

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
[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".

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 i d?

#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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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. Ho w 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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 separatel y?

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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 pr ocedure 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 manage r.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
179. How to register a shell Script as a concurrent Program?

1. Register conc urrent 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 s qlldr 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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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;

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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 procedur e 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.

Prepared by
M.KARUPPUCHMAY OCP
This Document is a property of Quest Software Pvt. Ltd. Unauthorized use is prohibited
Oracle APPS Tech
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;

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

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

You might also like