Template Form in Oracle Applications

Template Form in Oracle Apps

This document provides an overview of the template form. This form derives its importance from the fact that this form is the starting point of all development involving forms. The document highlights the importance of Template.fmb in forms development and also provides a detailed explanation of the various components of the Template form.

Overview of the Template Form

The TEMPLATE form is the starting point for all development of new forms. The first step in creating a form for use in Oracle Applications is to copy the template form from $AU_TOP/forms/US, to a local directory and renaming it.

The Template form is unique because it contains some special libraries and triggers that render the application using the template form some standard characteristics. The components of the template form are:

· References to object groups: The template form contains platform–independent references to predefined standard object groups in the APPSTAND form. STANDARD_PC_AND_VA, STANDARD_TOOLBAR, and STANDARD_CALENDAR).

· Libraries: The template form contains platform–independent attachments of several libraries (including FNDSQF, APPCORE, and APPDAYPK).

· Special triggers: The template form contains several form–level triggers with required code. These are responsible for standard the behavior of the form.

· Predefined Program Units: The template form contains predefined program units that include a spec and a body for the package APP_CUSTOM, which contains default behavior for window opening and closing events.

· Applications Color Palette: The template form contains the application color palette. This gives the forms developed using the template form the look and feel of Oracle Applications

· Many referenced objects (from the object groups) that support the Calendar, the toolbar, alternative regions, and the menu. These objects include LOVs, blocks, parameters, and property classes, and so on.

· The TEMPLATE form contains sample objects that can be seen as examples for the expected layout cosmetics. These samples can be completely removed from the form later as they are only examples and are not required. The following objects are the samples and can be removed:



§ Canvas–view: BLOCKNAME

Hence, the template form comes along with many attachments, predefined program units, and defined visual attributes as well as examples that not only give the forms that are developed using the template.fmb a standard look and feel, but also make t easier to develop forms with consistent and standard functionality.

Libraries in the Template form

As stated above, the template form contains platform–independent attachments of several libraries. These libraries are used while running the form as a part of Oracle Applications. Hence, these libraries should not be changed or modified. There are three main libraries that are attached to the template form:


APPCORE: APPCORE contains the packages and procedures that are responsible for the standard ‘Oracle Applications’ behavior of the forms. The forms have to support the menu, toolbar, and other required standard behaviors in compliance with oracle applications. The Oracle Applications forms also have to display specific runtime behaviors in accordance with the Oracle Applications Interface Standards, such as the way in which fields are enabled, behaviors of specific types of windows etc. APPCORE contains the procedures to support this standard runtime behavior. APPCORE also contains various other utilities for exceptional handling, message levels, and so on.

APPDAYPK: The APPDAYPK library contains the packages that control the Oracle Applications Calendar feature. The calendar (or the date picker) is a utility that oracle apps provide to pick the dates for a date type field.

FNDSQF: FNDSQF contains packages and procedures for Message Dictionary, flexfields, profiles, and concurrent processing. It also has various other utilities for navigation, multicurrency, WHO, etc.

Other Libraries à The template form also contains a few other libraries that are not linked directly to the template form, but are linked to the three libraries listed above. Although, while using the form it makes no difference whether the library is linked directly to template or to another library that is linked to template. These are discussed below.

CUSTOM library: The CUSTOM library (CUSTOM.pll) is probably the most widely used and customized in the libraries attached to the template form. This library allows extension of Oracle Applications forms without modification of Oracle Applications code. Any form goes to the CUSTOM.pll whenever any event fires on the form. Code can be written in the CUSTOM.pll with the logic branching based on the form, block and trigger on which you want it to run.

You can use the CUSTOM library for customizations such as Zoom (such as moving to another form and querying up specific records), enforcing business rules (for example, vendor name must be in uppercase letters), and disabling fields that do not apply for your site.

GLOBE: The GLOBE library allows Oracle Applications developers to incorporate global or regional features into Oracle Applications forms
without modification of the base Oracle Applications form. Oracle Applications sends events to the GLOBE library. Regional code can
take effect based on these events. The GLOBE library calls routines in
the JA, JE, and JL libraries.

VERT: The VERT library allows Oracle Applications developers to incorporate vertical industry features (for automotive, consumer packaged goods, energy, and other industries) into Oracle Applications forms without modification of the base Oracle Applications form. Oracle Applications sends events to the VERT library. Vertical industry code can take effect based on these events. The VERT library calls routines in various other libraries.

JA: The JA library contains code specific to the Asia/Pacific region and is called by the GLOBE library.

JE: The JE library contains code specific to the EMEA (Europe/ MiddleEast/ Africa) region and is called by the GLOBE library.

JL: The JL library contains code specific to the Latin America region and is called by the GLOBE library.

Thanks Shivmohan Purohit

Oracle 11i Application Developer – Technical FAQ – Part 2

Hello Friends, here is the second set of Questions on Application Developers , more of general questions, i am not digging in particular areas , only trying to put question which i normally ask with candidates. If you want help in any specific areas , plz advise, i will try to do that.

Q11 ) What is SET-OF-BOOKS?
Collection of Chat of Accounts and Currency and Calendars is called SOB

Q12 ) What is the interface?
Interface Table is a table which is used as medium for transfer of data between two systems.

Q13 Tell me what is the procedure to develop an interface?
a. First we will get the Requirement document.
b. We will create control file based on that plot file.
c. Then the control files which loads the data into staging tables.
d. Through pl/sql programs we will mapping and validate the data and then dump into the interface tables.
e. Through the standard programs we will push the data from interface tables to Base tables.

Q14) What is multi org?
“Legal entity has more than one operating unit is called as multi org”
a) Business group — Human resources information is secured by Business group
b) Legal entity. — inter-company and fiscal/tax reporting.
c) Operating unit — secures AR, OE, AP, PA and PO Information.
d) Organizations — is a specialize unit of work at particular locations

Q15) What are the User PARAMETERS in the Reports?

FND SRWINIT sets your profile option values, multiple organizations and allows Oracle Application Object Library user exits to detect that they have been called by an Oracle Reports program.
FND SRWEXIT ensures that all the memory allocated for AOL user exits have been freed up properly.
FND FLEXIDVAL are used to display flex field information like prompt, value etc
FND FLEXSQL these user exits allow you to use flex fields in your reports
FND FORMAT_CURRENCY is used to print currency in various formats by using formula column

Q17) what are the two parameters that are mandatory for pl/sql type concurrent program?
Procedure/function (ERRBUF OUT
ERRBUF :- Used to write the error message to log or request file.
RETCODE :- Populate log request file with program submission details info.

Q18.) What is Value Set?
–The value set is a collection (or) container of values.
–When ever the value set associated with any report parameters. It provides list of values to the end user to accept one of the values as report parameter value.
n If the list of values needed to be dynamic and ever changing and define a table based values set.

Q19) What r the validation types in Value Set?
1) None ——– validation is minimal.
2) Independent ——input must exist on previously defined list of values
3) Dependent ——input is checked against a subset of values based on a
prior value.
3) Table —– input is checked against values in an application table
4) Special ——values set uses a flex field itself.
5) Pair —— two flex fields together specify a range of valid values.
6) Translatable independent —– input must exist on previously defined list
of values; translated values can be used.
7) Translatable dependent ——- input is checked against a subset of values
based on a prior values; translated value can be used.

Q20) Who information’s?
1) Created by
2) Creation date
3) Last _updated by
4) last_update_date

Thanks  — Shivmohan Purohit

Oracle Applications – Interview Questions (All Modules)

Oracle Applications – Interview Questions (All Modules)

Question: What are the key benefits of forms personalization over custom.pll?
Answer: Multiple users can develop forms personalization at any given point in time.
It is fairly easy to enable and disable forms personalization.
–>A programmer is not required to do simple things such as hide/disable fields or buttons.
–>Provides more visibility on customizations to the screen.

Question: Tell me some limitations of forms personalization when compared to CUSTOM.pll?
–>Can’t create record group queries, hence can’t implement LOV Query changes.
–>Can’t make things interactive, i.e. can’t have a message box that gives multiple choices for example Proceed or Stop etc.

Question: How can you import invoices into Oracle Receivables?

You can either use AutoInvoice by populating tables RA_INTERFACE_LINES_ALL, RA_INTERFACE_DISTRIBUTIONS_ALL & RA_INTERFACE_SALESCREDITS_ALL.Alternately you may decide to use API ar_invoice_api_pub.create_single_invoice for Receivables Invoice Import.

Question: In OA Framework, once your application has been extended by substitutions, is it possible to revert back to remove those substitutions?

Answer: yes, by setting profile option “Disable Self-Service Personal%” to Yes, keeping in mind that all your personalizations will get disabled by this profile option. This profile is also very useful when debugging your OA Framework based application in the event of some error. By disabling the personalization via profile, you can isolate the error, i.e. is being caused by your extension/substitution code or by Oracle’s standard functionality.

Question: For a PL/SQL based concurrent program do you have to issue a commit at the end?

Answer: The concurrent program runs within its own new session. In APPS, the default database setting enforces a commit at the end of each session. Hence no explicit COMMIT is required.

Question: What is the difference between running Gather Stats and “Program – Optimizer[RGOPTM]” in Oracle General Ledger?

Answer: “Gather Stats” will simply gather the stats against existing tables, indexes etc. However Gather Stats does not create any new indexes. But “Program – Optimizer[RGOPTM]” can create indexes on GL_CODE_COMBINATIONS, provided accounting segment has the indexed flag enabled,

Question: How do you know if a specific Oracle patch has been applied in apps to your environment?

Answer: Use table ad_bugs, in which column bug_number is the patch number.

SELECT bug_number ,to_char(creation_date, ‘DD-MON-YYYY HH24:MI:SS’) dated

FROM apps.ad_bugs

WHERE bug_number = TRIM(‘&bug_number’) ;

Question: How to make concurrent program end with warning?

Answer: If the concurrent program is of type PL/SQL, you can assign a value of 1 to the “retcode” OUT Parameter. For a Java Concurrent program, use the code similar to below ReqCompletion lRC; //get handle on request completion object for reporting status IRC = pCpContext.getReqCompletion(); lRC.setCompletion(ReqCompletion.WARNING, “WARNING”);

Question: Which table is used to provide drill down from Oracle GL into sub-ledger?


Question: You have just created two concurrent programs namely “XX PO Prog1” & “XX PO Prog2”. Now you wish to create a menu for Concurrent Request submission such that only these two Concurrent Programs are visible from that Run Request menu. Please explain the steps to implement this?


a) Define a request group, lets say with name “XX_PO_PROGS”

b) Add these two concurrent programs to the request group “XX_PO_PROGS”

c) Define a new Form Function that is attached to Form “Run Reports”

d) In the parameter field of Form Function screen, enter REQUEST_GROUP_CODE=”XX_PO_PROGS” REQUEST_GROUP_APPL_SHORT_NAME=”XXPO” TITLE=”XXPO:XX_PO_PROGS” e) Attach this form function to the desired menu.

Question: Which responsibility do you need to extract Self Service Personalizations?
Answer:Functional Administrator

Question: Can you list any one single limitation of Forms Personalization feature that was delivered with 11.5.10
Answer:You can not implement interactive messages, i.e. a message will give multiple options for Response. The best you can get from Forms Personalization to do is popup up Message with OK option.

Question: This is a very tough one, almost impossible to answer, but yet I will ask. Which Form in Oracle Applications has most number of Form Functions?

Answer: “Run Reports”. And why not, the Form Function for this screen has a parameter to which we pass name of the “Request Group”, hence securing the list of Concurrent Programs that are visible in “Run Request” Form. Just so that you know, there are over 600 form functions for “Run Reports”

Question: How will you migrate Oracle General Ledger Currencies and Sets of Books Definitions from one environment to another without Keying? Will you use FNDLOAD?

Answer: FNDLOAD can not be used in the scenario. You can use migrator available in “Oracle iSetup” Responsibility

Question: How can an end-user be given control to run a script developed by a developer, given that an end user will never have access to apps password (and rightly so)?

Answer: This script can be attached to a Concurrent Program via a concurrent program executable. The user will then be given access to this Concurrent Program.

Question: But how will the end user or Oracle Apps make this script run every 10hours daily?

Answer: A concurrent program can be scheduled to run at desired intervals. The schedule is defined at the time of submission.

Question: What are the basic steps when defining a concurrent program?

Answer: Broadly speaking there are three steps when developing a concurrent program in Oracle Apps Step 1. Make Oracle Apps identify the executable Step 2. Provide a handle to the executable by means of defining a concurrent program Step 3. Make this concurrent program accesible to selected users via their responsibility.

thanks - shivmohan purohit

Oracle Applications – Technical Interview Questions

Hello Friends, Upon requests on some of my friends, i am posting few more generic oracle applications’ questions. hope this will give you overview of generic features. do share your feedback if these are good n useful.

what is a flexfield qualifier ?

Oracle Applications products use flexfield qualifiers to identify certain segments used for specific purposes. eg: segment named ‘Account’ is qualified as ‘Natural Account’so that it identifies Accounts, similarly a segment named ‘Company’ can be qualified as ‘Balancing Segment’, i.e, for these segment values B/S can be brought out in Accounting Flexfield in GL.

A flexfield is made of segments and oracle identifies if particular segment in the accounting flexfield is an account segment or a company segment, based on some predefined values called as flexfield qualifiers which are assigned to the segments to look meaningful for defining the accounting flexfield. Eg: Account segment uses Natural Account segment and the company segment uses Balancing segment are mandatory for defining the accounting flexfield. Other values are Cost center segment, Inter company segment, secondary tracking segment

What is the difference between configuration, conversion, and customization?

Conversion ,customization and configuration are part of an oracle implementation project they come in this order

1. configuration/set up

2. Customization

3. Conversion

Configuration is setting up customer specific requirement which generally exist in oracle apps customization is filling the gap between oracle apps and Customer requirement by developing some extension and solution design

Customization is relatively different thing, something that is not a part of oracle apps core product but the client requirement demands it we go for Customization. If the functionality demanded by the client exists in the application, it is to be configured according to his needs by taking some data, this is called configuration

Conversion is structural change of customer data in a form which is compatible with oracle database best of luck. Conversion is the process of mapping the tables from a legacy system to apps system. Sometimes conversions can be from one version to other

Where we can check the status of PO.

In po_headers_all authorization_status coloumn is their we can find through this coloumn

What is back order in OM

There are few reasons that a scheduled order could be Backordered during pick release process.

1. In-sufficient onhand

2. Order might be put as ‘Pick release hold’

3. If it’s a lot controlled item being involved then some of the factors will be checking at picking rule setup (like Lot- expiration date, etc) and tured to ‘Backordered’ incase the criteria does not meet.

Where we find the status of order information.

Order header status is in oe_order_headers_all table reference with flow_status_code column and order line status would be oe_order_lines_all table reference with flow_status_code column.

What are the tables of auto invoice?


For report i have to parameters those are from_date and to_date ,so to_date should be greater when compare to from_date ,if we are giving to_date is less then it must shows some error how we will make it.

While defining Parameters you can set range option(in concurrent prog parameters window). Select low for from_Date and high for to_Date.Then it will not allow for from_date > to_date.

How to find the custom directory in front end.

From Application Developer responsibility, navigate to Application –> Register. Query for the custom application name. The value in the field Basepath, is the OS system variable that stores the actual directory info.

What are the execution methods in oracle apps?

1. Host

2. Immediate

3. Java Stored Procedure

4. Java Concurrent Program

5. Multi Language Function

6. Oracle Reports

7. Request Set Stage Function

8. Pl/Sql Stored Procedure

9. Spawned

10. Sql*Lodar

11. Sql*Plus

12. Perl Concurrent Program

What are APIs

API stands for application program interface. Oracle has its own api facility to transfer data from a external source to oracle base table so api is an standard oracle tool to transfer data to oracle database. It is a very simple method and a person with no technical background also can use api. Example-uploading journal and budget data through API.

Thanks – plz share questions if you have more in this area. also share your comment/feedback. Shivmohan Purohit

Oracle Applications FND Useful Tables

Hello Friends , here is some of quite commonly used AOL FND ( Foundation) tables and their usage. There are many other tables also in FND but here i am putting only few commonly used tables. for other table if needed we can dig furthur. Let go through below article and let me know if it useful.






FND_ID_FLEXS stores registration information about key flexfields. Each row includes the four–character code that identifies the key flexfield, the title of the flexfield (by which a user identifies theflexfield), the name of the combinations table that contains the key flexfield columns, and the name of the structure defining (MultiFlex) column for the flexfield (SET_DEFINING_COLUMN_NAME). Each row also contains values that identify the application that owns the combination table and the application that owns the key flexfield, a table–type flag that specifies whether the combinations table is specificor generic (S or G), whether dynamic inserts are feasible for the flexfield(Y or N), whether the key flexfield can use ID type value sets, and the name of the unique ID column in the combinations table. You need one row for each key flexfield in each application. Oracle Application ObjectLibrary uses this information to generate a compiled key flexfield definition

FND_ID_FLEX_SEGMENTS: FND_ID_FLEX_SEGMENTS stores setup information about keyflexfield segments, as well as the correspondences between application table columns and the key flexfield segments the columns are used for. Each row includes a flexfield application identifier, the flexfield code,which identifies the key flexfield, the structure number(ID_FLEX_NUM), the value set application identifier, the segment number (the segment’s sequence in the flexfield window), the name of the column the segment corresponds to (usually SEGMENTn, where n is an integer). Each row also includes the segment name, whether security is enabled for the segment, whether the segment is required, whether the segment is one of a high, low segment pair, whether the segment is displayed, whether the segment is enabled (Y or N), type of default value, display information about the segment such as prompts and display size, and the value set the segment uses. Each row also includes a flag for whether the table column is indexed; this value is normally Y. You need one row for each segment of each structure for each flexfield. Oracle Application Object Library uses this information to generate a compiled key flexfield definition to store in the FND_COMPILED_ID_FLEXS table Thanks – Shivmohan Purohit

FND_ID_FLEX_STRUCTURES : FND_ID_FLEX_STRUCTURES stores structure information about keyflexfields. Each row includes the flexfield code and the structurenumber (ID_FLEX_NUM), which together identify the structure, and the name and description of the structure. Each row also includes values that indicate whether the flexfield structure is currently frozen, whether rollup groups are frozen (FREEZE_STRUCTURED_HIER_FLAG), whether users can dynamically insert new combinations of segment values through the flexfield pop–up window, and whether the flexfield should use segment cross–validation rules. Each row also contains information about shorthand flexfield entry for this structure, including whether shorthand entry is enabled, the prompt for the shorthand window, and the length of the shorthand alias field in the shorthandwindow. You need one row for each structure of each key flexfield. Oracle Application Object Library uses this information to generate acompiled key flexfield definition to store in the FND_COMPILED_ID_FLEXS table

FND_FLEX_VALUES stores valid values for key and descriptive flexfield segments. Oracle Application Object Library uses this table when users define values for independent or dependent type value sets. Oracle Application Object Library also uses this table when users define parent values for ranges of child values that exist in a validation table(Oracle Application Object Library stores the parent values in this table). Each row includes the value (FLEX_VALUE) and its hierarchy level if applicable as well as the identifier of the value set the value belongs to. If the value is a dependent value, PARENT_FLEX_VALUE_LOW contains the independent value this value depends upon. Oracle Application Object Library does not use the PARENT_FLEX_VALUE_HIGH column. If ENABLED_FLAG contains N, this value is currently invalid, regardless of the start and end dates.

If ENABLED_FLAG contains Y, the start and end dates indicate if this value is currently valid.SUMMARY_FLAG indicates if this value is a parent value that has child values, and STRUCTURED_HIERARCHY_LEVEL contains the rollup group the parent value belongs to, if any (1 through 9). COMPILED_VALUE_ATTRIBUTES contains the compiled values of anysegment qualifiers assigned to this value. These values are in a special Oracle Application Object Library format, and you should never modify them.

VALUE_CATEGORY and ATTRIBUTE1 through ATTRIBUTE50 are descriptive flexfield columns, where VALUE_CATEGORY is the context (structure defining) column.

These descriptive flexfield columns do not contain values unless you have defined the descriptive flexfield at your site. You need one row for each independent, dependent or parent value belonging to a value set.Oracle Application Object Library uses this information to ensure that users enter valid values in flexfield segments

FND_FLEX_VALUE_HIERARCHIES stores information about child value ranges for key flexfield segment values. Each row includes an identification of the parent value the range belongs to, as well as the low and high values that make up the range of child values. FLEX_VALUE_SET_ID identifies the value set to which the parent value belongs. You need one row for each range of child values (you can have more than one row for each parent value). Oracle Application Object Library provides this information for applications reporting purposes.


Oracle 11i Application Developer – Technical FAQ – Part 1

Hello Friends, Some of my friends are requesting to put some good easy and relevant Questions along with Answers for Oracle Application which are used in all modules. So here i am putting some question in parts, each part having 10 Questions. plz share your feedback on difficulty level and your interest.

this is now updated and corrected after feedback from gerath.


Q1       In which FND table independent value set will be stored?



Q2       How to schedule the concurrent programs from Back end(PLSQL) -not from SRS form.

A2            fnd.request.submit_request( Concurrent_program_name,  application_short_name,  description,  parameters)


Example: req_id := FND_REQUEST.SUBMIT_REQUEST(‘FND’, ‘FNDSCARU’);    Fnd_request.submit_request can be called from any valid EBS session (initialized by fnd_global.apps_initialize)


Q3       Where do concurrent request log files and output files go?

A3       The concurrent manager first looks for the environment variable $APPLCSF, If this is set, it creates a path using two other environment variables:


It places log files in $APPLCSF/$APPLLOG

Output files go in $APPLCSF/$APPLOUT

So for example, if you have this environment set:

$APPLCSF = /u01/appl/common

$APPLLOG = log

$APPLOUT = out

The concurrent manager will place log files in /u01/appl/common/log, and output files in /u01/appl/common/out

Note that $APPLCSF must be a full, absolute path, and the other two are directory names. If $APPLCSF is not set, it places the files under the product top of the application associated with the request. So for example, a PO report would go under $PO_TOP/$APPLLOG and $PO_TOP/$APPLOUT

Logfiles go to: /u01/appl/po/9.0/log

Output files to: /u01/appl/po/9.0/out

Of course, all these directories must exist and have the correct permissions.  Note that all concurrent requests produce a log file, but not necessarily an output file


 Q4       How do I cancel a running concurrent request?           

A4            Navigate to the Concurrent Request Summary form

Select a request

In GUI, use the Cancel buttons

The Sysadmin responsibility can cancel any running request  , If you cancel a running request be aware that the backend process continues. See this good forum discussion for details: http://forums.oracle.com/forums/thread.jspa?threadID=832725&tstart=0            


Q5       Why does Help->Tools->Examine ask for a password?       

A5       The profile option Utilities:Diagnostics is set to NO

This profile option controls whether users can use the Examine utility. The password should be the APPS password.       


Q6       How do I check if Multi-org is installed?          

A6            SELECT multi_org_flag FROM fnd_product_groups;          


Q7       How do I find the name of a form?    

A7       GUI: Use Help->About Oracle Applications

Scroll down to find the form name


Q8       How do I open a form in query-only mode?      

A8            Navigate to the Form Functions form (Application->Function)    Query the particular form and add the parameter QUERY_ONLY=YES

 go to applcation developer responsibility


query the function name

then goto form tab

then goto parameters field

then write the following code QUERY_YES=”YES”

save the changes and then see the forms get affected in query only mode.


Q9       How can I change in custom.pll? After changes how can I send on the server and what’s effect in this condition?

A9       1. FTP  the Custom.pll from $AU_TOP/resource

2. Open the Custom.pll in 11i or earlier

3. Include the following code for your Form logic :


     Form_Name varchar2(50) := name_in(‘system.current_form’);

     If Form_Name = ‘YOUR CUSTOM FORM” then


    include your logic   



 4. Once changes over , using the following command to generate the CUSTOM.plx 

f60gen module=CUSTOM.pll userid=apps/apps@mfgdev module_type=LIBRARY

to generate the latest CUSTOM.plx and move this CUSTOM.plx to $AU_TOP/resource


Q10     What is ‘$flex$ and ‘$profile$, What is the use of ‘$flex$’

A10         $Flex$ is used when we need to return the Flex value contained by any AOL Vlauset or AOL object . they used within Forms, value sets.

 For Ex .  $Flex$.<Valueset name>  would return the value held by that valueset .

  $profiles$. are used to get the values of environment variables like org_id or mfg_Organization_id etc which are related to the current apps environment.

  Ex.  $profiles$.org_id would return the operating unit which is active at that time for the user

 Will be updating with more question in upcoming posts.

Shivmohan Purohit