Follow us: Connect on YouTube Connect on YouTube Connect on YouTube


Monday, 18 April 2016

Oracle Forms Introduction

Components of Forms:

     Oracle has provided “Forms Developer Suite” that enable business developers to easily and quickly construct sophisticated database forms and business logic with a minimum of effort. It consists of the following programs, or components:

Forms Developer
Form Compiler
Forms Runtime

Components of Form builder
Object Navigator: It is hierarchical browsing and editing interface that enables you locate and manipulate application objects quickly and easily.

Property Palette: It is used set and modify the properties for all objects in form modules.

Layout Editor: It is graphical design facility for creating and arranging interface items and graphical objects in your application.

PL / SQL Editor: It is the integrated functionality of oracle procedure builder that exists with in form builder.

Form Module types:
 Form Module: It is a collection of objectives such as block, canvas, items and event based PL/SQL code blocks called trigger.

 Menu Module: It is a collection of menu items. It can be main menu or sub menu.

 PL / SQL Libraries: The library module is a collection of PL/SQL function and package stored in a single library file. This library file is the attached to form / menu modules. All other objects in the form or menu can now access share the collection of PL/SQL functions and procedures.

Object Libraries: It is a collection of form objects that you can use in other modules. You can create it to store, maintain and distribute standard objects that can be reuse across the entire development organization.

Objects of forms:

Blocks:Block is logical owner of items. It provides a mechanism for grouping related items into a functional unit for storing, displaying and manipulating records.

Items:These are interface objects that present data values to the user or enable the user to interact with the form.

Canvas:A canvas is the background object upon which interface items appear.

Frames:Frames are used to arrange items with in a block.

Windows:Windows contains for all visual objects that make up a form builder application.

PL/SQL Code Block: It is used for event driven code. That code automatically executes when a specific event occurs.

Data Blocks:

In Forms Builder there are two main types of blocks

Database Blocks: A data block is associated with a specific database table (or view), a stored procedure, a FROM clause query, or transactional triggers.

Control Blocks: A control block is not associated with a database, and its items do not relate to any columns within any database table. Its items are called control items.

Canvas Types:
Form Builder provides four types of canvases, all of which can be displayed in the same window at runtime.  A canvas' type defines how Form Builder will display it in the window to which it is assigned.

Content Canvas:  The most common canvas type is the content canvas (the default type).  A content canvas is the "base" view that occupies the entire content pane of the window in which it is displayed.  You must define at least one content canvas for each window you create.

Stacked Canvas:  A stacked canvas is displayed a top of on the content canvas assigned to the current window.

Tab Canvas:  A tab canvas made up of one or more tab pages allows you to group and display a large amount of related information on a single dynamic Form Builder canvas object.

Toolbar Canvas:  A toolbar canvas often is used to create toolbars for individual windows.  You can create two types of toolbar canvases:  horizontal or vertical.  Horizontal toolbar canvases are displayed at the top of a window, just under its menu bar, while vertical toolbars are displayed along the far left edge of a window.

Form Module Hierarchy

Using trigger and program units, form functionality will be added.Trigger can be written at different levels in form module

Oracle has provided one template form (TEMPLATE.fmb) and stated that this form should be the starting point for all development of new forms in Oracle Application.
Oracle has already written minimum but all code which is required to implement Oracle Application Standard Functionality. The pre-written components of the template form includes platform-independent references to:
Object groups in the APPSTAND form

Special triggers
Predefined Program Units
Applications Color Palette

The APPSTAND form contains the master copy of the shared objects. It contains the following Object Groups

STANDARD_PC_AND_VA:contains the Visual Attributes and Property Classes required to implement much of the user interface for Forms-Based Products

STANDARD_TOOLBAR:Contains the windows, canvasses, blocks, and items of the Applications Toolbar

STANDARD_CALENDAR: contains the windows, canvasses, blocks, and items of the Applications Calendar

QUERY_FIND:contains a window, canvas, block, and items used as a starting point for coding a Find Window

Libraries in the TEMPLATE Form

The TEMPLATE form includes platform-independent attachments of several libraries. Few of these libraries are:

APPCORE:It contains the packages and procedures that are required of all forms to support the menu, Toolbar, and other required standard behaviors

APPCORE2:It is a near-duplicate of APPCORE intended for use with the CUSTOM library. Oracle recommends that you should use the corresponding routine in the APPCORE2 library in place of APPCORE. The various routines available are APP_ITEM_PROPERTY2, APP_DATE2, APP_SPECIAL2

APPDAYPK:It contains the packages that control the Calendar feature

FNDSQF:It contains packages and procedures for Message Dictionary, flexfields, profiles

CUSTOM:It allows extension of forms without modification of form code

GLOBE: It allows developers to incorporate regional features into forms. The GLOBE library calls routines in the JA (Asia/Pacific region), JE (Europe/Middle East/Africa), and JL (Latin America region) libraries

Form Creation Steps in oracle apps
1.    Open Template.fmb
2.    Delete BLOCKNAME from Windows, Canvas and Data Blocks
3.    Create New Window and set Subclass in formation as ‘Window’
4.    Create Canvas and set Subclass in formation as ‘Canvas’
5.    Attach Window in Canvas and canvas in window (Property palate)
6.    Create the Data Block using wizard
7.    Set the First Navigation block in Module Property
8.    Open PRE-FORM Trigger and provide the WINDOW NAME in place of BLOCKNAME.
app_window.set_window_position(' BLOCKNAME ', 'FIRST_WINDOW');
9.    Open APP_CUSTOM Package provide the WINDOW NAME in place of your first window
         if (wnd = '<your first window>') then app_window.close_first_window;
10. Compile the form.

Generate FMX
Transfer (in binary format) the FMB file to server at $AU_TOP/forms/US
Login to UNIX environment and run below command (from $AU_TOP/forms/US) to generate FMX

For 11i
f60gen module=XXForm.fmb module_type=form userid=apps/<apps_password> compile_all=special output_file=$XXLCB_TOP/forms/US/XXForm.fmx

For R12
frmcmp_batch module=XXFORM.fmb userid=apps/<apps_password> output_file=$XXLCB_TOP/forms/US/XXFORM.fmx
Share this article :


  1. Hi There,

    So bloody thorough! Ah! So happy and blessed out! I feel redeemed by reading out Oracle Forms Introduction Keep up the good work!

    I got a list of the INDEXES from DBA Team which are non value added to the Database with the following conditions
    Thank you very much and will look for more postings from you.

    Thanks and Regards,

  2. Hello,

    Oracle Forms Introduction being contrived to exist for many projects simply so it can be run will be the first to hit the wall, but those projects where the functions to make existing transactions cheaper in real world applications will find the elusive real world demand.

    I am trying to use this in a materialized view and got below error:

    SQL Error: ORA-12015: cannot create a fast refresh materialized view from a complex query

    12015. 00000 - "cannot create a fast refresh materialized view from a complex query"

    *Cause: Neither ROWIDs and nor primary key constraints are supported for

    complex queries.

    *Action: Reissue the command with the REFRESH FORCE or REFRESH COMPLETE

    option or create a simple materialized view.

    select IR.rowid MV_INST_LOBR_ROWID, J.rowid Job_ROWID, J.* FROM JOB J





    Basically, the intention is to get all the records joining MV_INST_LOB_R and JOB table
    where MV_INST_LOB_R do not have record for the joining condition J.I3200_CUST_AC_NO_PT1 / J.I3200_CUST_AC_NO_PT2

    Can you help me in converting to simple query, so that I can use simple materialized view.

    Follow my new blog if you interested in just tag along me in any social media platforms!


  3. Thanks and Regards. Oracle Apps R12 Training Videos at affordable cost. please check

  4. Oracle Apps R12 and Oracle Fusion Cloud Self Paced Online Training Videos Published on Udemy with Life Time Access & Live Meeting Support to Clear your Queries. Avail 25% to 80% discount. Please Check for Never Before Offers and Discount Coupon Codes.