You are on page 1of 81

1

ORACLEAPPLICATIONS

1. INTRODUCTION

ERP:ResourcePlanningwithinanEnterprise.ERPisatermthatcoverswholeProduct
line. ERP means integration of different module. Any business will greatly benefits by
adapting this feature because u can customize it or integrate it with other Packages
tosatisfyuniquerequirements.

BENEFITSOFERP: 1).FlowofInformationEffectively
2).MaintainingStandardizations

Q:
WhatisOracleApplications?
Ans: OracleApplicationsareanERPPackage.TheKeyFeatureoftheentireoracle
ApplicationmoduleisDataIntegration.

Master data is Integrated: All the application share common files of customers,
suppliers, employee, items and other entities that are used by multiple
applications.

TransactiondataisIntegrated:Oracleautomaticallybridgetransactionsfromone
systemtoanother.

Financial data is integrated: Financial data is carried in a common format, and


financialdataistransmittedfromoneapplicationtoanother.

2.

ORACLEAPPLICATIONS

Oracle Applications is one of the Enterprise Resource Planning (ERP) Business


Application packages. It comprises of various Modules, Libraries, Forms, Reports, etc.
Oracle Applications is designed on the basis of Generally Acceptable Accounting
Principles(GAAP).ItisusedtochattertheBusinessneedsofanOrganization.Itconsists
of256differenttypesofmodules,4000Forms,5000Programsetc.AnyOrganizationcan
adopt this package and use the supplied modules with the customization as per their
businessrequirements.

Oracle works on 3 Tier Architecture (i.e. Client, Application and Database). It


supports Form based Interface (i.e. FIN, MFG, MM & HR) and HTML based Interface
(i.e.CRM,SSWA).

Note:SSWASelfServiceWebArchitecture

Applications3TierArchitecture
Desktop Tier

Application Tier

Database Tier

Forms Server
Web
Browser

Reports Server

Database
Server

iAS Server
Concurrent Processing
Server
Discoverer Server

Administration Server

3.

PRODUCTDIRECTORYSTRUCTURE

WhenOracleApplicationsinstallsinamachineitcreatesabasedirectorywiththe
nameORACLE.Thisisthebasedirectoryforaccessingtheapplication.

OracleApplicationssuppliedinthreeflavors
1. ProductionOracleApplications:usedforimplementinginanyorganization.
2. VisionOracleApplications:usedforDemonstrationorTrainingpurpose.
3. TestOracleApplications:usedforR&Dpurpose

ProductDirectoryStructureofOracleApplications

ORACLE

Production OA

Vision OA

Test OA

PRODDB

VISDB

TESTDB

PRODORA

VISORA

TESTORA

PRODCOMM

VISCOMM

TESTCOMM

PRODDATA

VISDATA

TESTDATA

PRODAPPL

VISAPPL

TESTAPPL

VISDB:
ConsistsofOracle8i/Oracle9i/Oracle10gDatabaseexecutablefiles.

VISORA: Captures8.0.6/9iAS/10giASmiddlewareDatabaseexecutablefiles.

VISCOMM:Captures Control Script files, which are used to Start or Stop the
ApplicationServices.

VISDATA: Capturesall.DBFfiles.

VISAPPL: CapturesallModuleSpecificDirectoriesandSomeSpecialDirectories.

APPL_TOP(i.e.VISAPPL)DirectoryStructure

APPL_TOP

APPL_TOP = D:\ORACLE\VISAPPL
GL
11.5.0

AR
AP

Forms

US

Reports

US

BIN
LIB
SQL
HTML
LOG
OUT
Message

FND
AU
11.5.0
Forms

US

Resource

5
GL_TOP:(APPL_TOP/GL/11.5.0)isoneoftheModuleDirectoryofOracleApplications.
Itconsistsofareleasedirectory(i.e.11.5.0)underwhichForms,Reports,BIN,LIB,SQL,
etc.,

GL_TOP/11.5.0/Forms/USisformsdirectorytostoreall.FMX(Compiled)Formfilesofa
specificmodule.

GL_TOP/11.5.0/Reports/US is a reports directory to capture all the .RDF (Compiled)


Reportfilesofaspecificmoduledirectory.

USisalanguagespecificdirectory.

GL_TOP/11.5.0/BINwillcapturetheC,C++,PRO*C,SQL*LOADERetc.,files.

GL_TOP/11.5.0/LIBwillcaptureall.OBJfilesofC,C++orJAVACLASSfiles.

GL_TOP/11.5.0/Messagewillcaptureall.MSBmessagebodyfiles.

GL_TOP/11.5.0/LOGwillcaptureall.LOGfiles.

GL_TOP/11.5.0/OUTwillcaptureall.OUTfiles.

GL_TOP/11.5.0/SQLwillcaptureall.SQLscriptfiles.

GL_TOP/11.5.0/HTMLwillcaptureall.HTML,.HTMwebfiles.

GL_TOP/11.5.0/FNDisaSpecialDirectoryknownasApplicationObjectLibrary(AOL)
directory.ItisusedtocaptureallModulesApplicationExecutableFiles.

GL_TOP/11.5.0/AUisanApplicationUtility(AU)Directory.Itconsistsofaapplication
release SubDirectory, which consists of Forms and Resource directories. It is used to
storeall.FMBand.PLLandPL/SQLLibraryfiles.

GL_TOP/11.5.0/AU/11.5.0/Forms/USwillcapture.FMBFormfilesofallModules.

GL_TOP/11.5.0//AU/11.5.0/Resource is used to store .PLL and .PL/SQL Library files of


OracleApplications.

4.

DATAMODEL

WhenweinstallOracleDatabasebydefaultsystemwillcreatesSYSandSYSTEM
schemas. These consist of all Data Dictionary Tables. Like this if we install Oracle
ApplicationsSystemwillautomaticallycreatesschemasofallModules(i.e.GL,AR,AP,
etc.)withtherespectivemodulenameasUserandPassword.Alongwiththeseschemas
some special Schemas i.e. APPS, APPLSYS, APPLSYSPUB will be created for special
purpose.

APPSADMIN Application Administrator


GL/GL
AR/AR
User Schemas
AP/AP
PPR/PPR

APPLSYS/APPS
FND Foundation Tables
ALR Alert Tables
WF Work Flow Tables
AD Application database
APPLSYSPUB/PU
APPS/APPS

APPSSchema:ItisPublicSchema.Itconsistsofacollectionofpublicsynonymofall
theobjectsofalltheschemasintheApplicationdatabase.AlltheProcedures,Functions
andPackagescreatedmustbestoredinthisSchema.

APPLSYS Schema: This is a special Schema consists of the files starts with FND,
ALR,WFandAD.

APPLSYSPUBSchema: This schema is a collection of public synonyms of all FND


Tables, which are used for User verification. This is the Gate Way User ID of Oracle
Applications.

Note:1.WhenwearechangingtheAPPSSchemapassword,firstwehavetochangein
thebackendforbothAPPSandAPPLSYSSchemas.
2.PasswordforbothAPPSandAPPLSYSshouldbesame.
3.ChangethepasswordofboththeSchemasinFrontEndandBackEnd.
4. Drop the Concurrent Manager Services and recreate the Concurrent Manager
ServicewiththePasswordasAPPSPassword.

5. RESPONSIBILITIESANDUSER

Responsibility: It is a role authorized to access specific Forms and Programs of a


particular Module. A responsibility is a collection of Menus, Request Groups and Data
Groups.MenusandDataGroupsaremandatorytoaresponsibility.

Menu:AmenuisacollectionofSubMenusandFunctions.

RequestGroup(RG):ItisacollectionofconcurrentPrograms.Itisusedtorequest
programsfromtheresponsibility.

Data Group (DG): It is a collection of Modules used to integrate one or more


Modules for cross application transfer of data, cross application reporting and cross
applicationreference.IfwewanttogetdatafromotherModulesweneedtodefinethose
modulesintheDataGroup.

Functions:Afunctionisapartofanapplicationsfunctionalitythatisregisteredunder
auniquenameforthepurposeofassigningitto,orexcludingitfrom,amenu(andby
extension,aresponsibility).
An Oracle Applications feature that lets you control user access to certain
functionsandwindows.Bydefault,accesstofunctionalityisnotrestricted;yoursystem
administrator customizes each responsibility at your site by including or excluding
functions and menus in the Responsibilities window. There are several types of
functions:formfunctions,subfunctions,andnonformfunctions.

Thesearetwotypesoffunctions
1 FormFunctions:areusedtosecureFormsfromtheresponsibilities.
2 NonFormFunctions:areusedtosecureLayoutItemswithintheForm.

AdvantagesofFormFunctions
IfyouwanttoopentheFormindifferentmodeswithoutcreatingthecopies,we
can create a Form Function and pass the parameters based on the requirement. The
parameter, which is passed in the form function, must be already defined in the form
whiledesigningtheForm.
AmenucanbeassignedtomorethanoneResponsibility.Ifyouwanttorestrict
some of the Forms from a particular responsibility, we can include Form Function of
thoseFormsinMenuExclusionsoftheResponsibility.

PreDefinedResponsibilities

S.No
1
2
3
4
5
6

Module
ApplicationObjectlibrary
SystemAdministration
OracleGeneralLedger
OraclePublicSectorPayables
OracleReceivables
OracleAlerts

Responsibility
ApplicationDeveloper
SystemAdministrator
GeneralLedgerSuperUser
PayablesManager
ReceivablesManager
AlertsManager

HowtoCreateaResponsibility?
Step1:ConnecttoOracleApplicationwithAPPSADMIN/APPSADMINUser.
Step2:GotoApplicationAdministrator.
Step3:GotoSecuritythenResponsibilitythenDefine
Step4:EntertheDataintheopenedWindow.

Note:AboveInformationofResponsibilityisstoredinFND_RESPONSIBILITYTable.

10

HowtoCreateaUser?
Step1:ConnecttoOracleApplicationwithAPPSADMIN/APPSADMINUser.
Step2:GotoApplicationAdministrator.
Step3:GotoSecuritythenUserthenDefine
Step4:EntertheDataintheopenedWindow.

Note:AboveInformationofUserisstoredinFND_USERTable.

UserResponsibilitiesstoredinFND_USER_RESP_GROUPSTable.

11

6.

NEWMODULEDEVELOPMENT

StepsrequiredfordevelopingaNewModule?

1. RegistertheNewModulewithAOLmodule.

SavetheEntries.

2.CreateaSchema/UserfortheNewModuleandGrantRollstoitfromSQLPrompt.

Loginasapps/apps@vis.
SQL>CREATEUSERPPRSIDENTIFIDBYPPRS;
SQL>GRANTCONNECT,RESOURCETOPPRS;
SQL>

3.CreateproductDirectoryStructuretotheNewModuleatServerend.

\\Orafin8\d$\appl\pprs\11.5.0\forms\us
\\Orafin8\d$\appl\pprs\11.5.0\reports\us
\\Orafin8\d$\appl\pprs\11.5.0\bin
\\Orafin8\d$\appl\pprs\11.5.0\sqletc.,

4. Create the Form Using Form Builder with all the coding standards required
accordingtoOracleApplications.

5. CompiletheFormandCopy.FMXfileinModuleSpecific(New)Directory.

6. Copysome.fmxFormfilesfromanyexistingmodulestonewmoduledirectoryfor
registrationdemo.

7. RegistertheformwithApplicationObjectLibrary(AOL)Module.
ConnecttoAPPSTECH/APPSTECH
GotoApplicationDeveloper

12

Application
Form

Save&Close

8.CreateFormFunctionforalltheForm,whichareregisteredwithourmodule.
ConnecttoAPPSTECH/APPSTECH
GotoApplicationDeveloper

Application

Function

Save&Close

9. DefineamenuforournewmoduleusingAOLModule.
ConnecttoAPPSTECH/APPSTECH

13

GotoApplicationDeveloper
Application

Menu

10.AssigntherequiredFormFunctionstothemenus.

11.DefineDataGroup(DG)usingSystemAdministrationModule.
SystemAdministrator
Security

Oracle

DataGroup

14

11.DefineaResponsibilityforthenewmodule.
SystemAdministrator

Security

Responsibility

Define

12.AssignResponsibilitytotheUser.
SystemAdministrator
Security

User

Define

15

13.SetupthebasepathoftheNewModuleattheServerend.
PPRS_TOPisthebasepath
AtRun:regedit

CreateanewString
RenametheNewStringasPPRS_TOP
PPRS_TOP:\\Oracle\visappl\pprs\11.5.0

16

7.

TABLEREGISTRATION

Q:WhywehavetoregisteraTable?
Ans:TodefinetheSpecialObjectsatthetimeofdefinitionofaBusinessApplications.

SpecialObjectsareKeyFlexFields(KFF)andDescriptiveFlexFields(DFF)

InApplicationsTablesareclassifiedintothreecategories

1 TransactionDataTables:arenormaltables,whichareusedtostorethedata
inallthemodulesinwhichwecanperformanyDMLoperations.
2 SeedDataTables:Thedataforthesetablescreatedatthetimeofinstallation.
Therecordspresentinthesetablesarereadonly.
3 InterimDataTables:arethetemporarytables,whichareusedforvalidation
purpose. These tables are used when we are transferring the data from
externalapplicationstothesystemtables.

StepsRequiredforregisteringaTable

1.CreateaTableinModuleSpecificSchema.
ConnectasPPRS/PPRS@VIS
SQL>CREATETABLEPPRS_PARTS(

PART_CODENUMBER(5),

PART_NO VARCHAR2(50),

PART_NAMEVARCHAR2(100),

QPS NUMBER(3),

PPART_CODENUMBER(5));

2.CreateaPublicSynonyminAPPSSchema.
ConnecttoAPPS/APPS@VIS
SQL>CREATEPUBLICSYNONYMPPRS_PARTSFORPPRS_PARTS;
Note:PublicSynonymNameshouldbesameasTableName;

3.RegistertheTablewithAOLModule.
ConnecttoAPPSTECH/APPSTECH
ApplicationDeveloper

Functions

Application

Database

Table

17

TableRegistrationwithApplicationInterface(API)
WecanalsoregistertheTableusingApplicationDBADataDefinitions(AD_DD)
PackagefromtheBackEnd.YoucanalsousetheAD_DDAPItodeletetheregistrations
of tables and columns from Oracle Application Object Library tables. To alter a
registration you should first delete the registration, and then reregister the table or
column.Youshoulddeletethecolumnregistrationfirst,thenthetableregistration.

procedureregister_table(p_appl_short_nameinvarchar2,
p_tab_nameinvarchar2,p_tab_typeinvarchar2,
p_next_extentinnumberdefault512,p_pct_freeinnumberdefault10,
p_pct_usedinnumberdefault70);

procedureregister_column(p_appl_short_nameinvarchar2,
p_tab_nameinvarchar2,p_col_nameinvarchar2,
p_col_seqinnumber,p_col_typeinvarchar2,
p_col_widthinnumber,p_nullableinvarchar2,
p_translateinvarchar2,p_precisioninnumberdefaultnull,
p_scaleinnumberdefaultnull);

proceduredelete_table(p_appl_short_nameinvarchar2,p_tab_nameinvarchar2);

proceduredelete_column(p_appl_short_nameinvarchar2,
p_tab_nameinvarchar2,p_col_nameinvarchar2);

18

Note: Table can be register from Front End by Application Developer or Back End by
DatabaseAdministrator.

TypeofTableSuffixesandtheirmeaning

_TL
NoSuffix
_V
_VL
_All

Translation Tables, Used to Store the Information of Language


Specific
AreNormalTables
AreViews
AreViewsbasedonTranslationTables
IndicatesMultiOrganizationTables

19

ApplicationsStoragesTables

TableName
FND_APPLICATION
FND_FORM
FND_FORM_FUNCTIONS
FND_MENU
FND_MENU_ENTRIES

StoragePurpose
NewModuleInformation
FormsInformation
InformationofFunctionsofaForm
MenuInformation
List of Functions Assigned to the Menu
Information
FND_DATAGROUP
DataGroupInformation
FND_DATAGROUP_UNIT
ListofModulesAssignedtotheDataGroup
FND_RESPONSIBILITY
AllResponsibilityInformation
FND_RESP_GROUPS
Allresponsibilitygroupsinformation
FND_TABLES
AllTablesInformation
FND_COLUMNS
AllTableColumnsInformation
FND_USER
AllUsersInformation
FND_USER_RESP_GROUPS
AllUsersResponsibilityInformation
FND_ID_FLEXS
AllKeyFlexFieldsInformation
FND_ID_FLEX_STRUCTURES AllStructuresInformation
FND_ID_FLEX_SEGMENTS
AlltheSegmentsInformation
FND_FLEX_VALUE_SETS
EachSegmentsValueSetInformation
FND_FLEX_VALUES
EachValueCodesofaValueSetofaSegment
FND_FLEX_VALUE_TL
Each Value Description of a Value Set of a
Segment

20

8.

FLEXFIELDS

A flexfield is a field made up of subfields, or segments.There are two types of


flexfields:keyflexfieldsanddescriptiveflexfields.Akeyflexfieldappearsonyourform
as a normal text field with an appropriate prompt. A descriptive flexfield appears on
yourformasatwocharacterwidetextfieldwithsquarebrackets[]asitsprompt.
Flex Fields are used to capture the Business Information of the Organization. The
organizationcanusetheFlexFieldsbasedontheirBusinessStructure.

KEYFLEXFIELDS(KFF)

KFF are used to capture mandatory or Key Business information of the


Organization.EachKeyFlexFieldishavingitswonbaseTable.

21
Q:HowmanyKFFaresuppliedwiththePackage?
Ans:Thereare31KFF.

S.No TypeofFlexField
Module
Table
1
AccountingFF
GL
GL_CODE_COMBINATION
2
JobFF
HR
PER_JOB_DEFINITIONS
3
PositionFF
HR
PER_POSITION
4
GradeFF
HR
PER_GRADE
5
LocationFF
FA
FA_LOCATION
6
AssetFF
FA
FA_KEYWORDS
7
SalesTaxFF
AR
AR_SALEX_TAX
8
TerritoryFF
AR
AR_TERRITORY
9
SystemItemsFF
INV
MTL_SYSTEM_ITEM
10 ItemCategoryFF
INV
MTL_ITEM_CATEGORY
.

31

AccountingCompanyKFFStructure

GGC

GM

Seg1

Company

VS1

1. Trucks
2. Cars

GSS

Seg2

Seg3

Department

Accounts

VS2

1. Sales
2. Finance
3.

VS3

1.
2.
3.
4.
5.

Seg1

Company

VS4

Seg2

Seg3

Production

Location

VS5

VS6

Seg4

Department

VS7

Seg4

Accounts

VS8

Cash
Bank
Rent
X
Y

CodeCombinationIDofKFFisGGC_GM_VS1_1

GGC
CompanyName

GM
BranchName

VS1
Segment1

Trucks

22

Value Set: is a collection of properties like Length, Data Type, Minimum Value,
MaximumValue,AlignmentandValueValidationetc.

FlexfieldsconsistsofStructures

StructuresconsistsofSegments

SegmentsconsistsofValueSet

ValueSetconsistsofParameters.

FND_ID_FLEXSTablecapturestheinformationofalltheKeyFlexFields.

APPL_ID

ColumnconsistsofApplicationID

ID_FLEX_CODE
ColumnKFFCode

Exampleof APPL_ID:AR,AP,GLetc.

ID_FLEX_CODE:AR#,AP#,GL#,etc.

STRUCTURES

ACCOUNTING

RECEIVABLE

GL#

101

201

S1

Code Descr

TM

202

102

S2

Code Descr

AP#

TTS

203

103

S3

Code Descr

TTC

101

301

S1

Code Descr

TMAP

302

S2

Code Descr

101

301

S1

Code Descr

APTC

302

S2

Code Descr

FND_ID_FLEX_STRUCTURESTablecapturestheinformationofallthestructures.
EachStructureisuniquelyidentifiedby
APPLICATION_ID(ModuleCode),
ID_FLEX_CODE(CodeofKFF)
ID_FLEX_NUM(NumberofaStructure)

FND_ID_FLEX_SEGMENTSTablecapturestheinformationofSegments.
EachSegmentisUniquelyidentifiedby

APPL_ID

ID_FLEX_CODE

ID_FLEX_NUM

SEG_NUM
FLEX_VALUE_SET_ID

23

FND_FLEX_VALUE_SETS Table captures the information of each Segments Value


Set.
EachValueSetisUniquelyidentifiedbyFLEX_VALUE_SET_IDasForeignKeyof
FND_ID_FLEX_SEGMENTSTable.

FND_FLEX_VALUESTablecapturestheinformationeachValuecodesofaValueSet
ofaSegment.
EachValueCodeisuniquelyidentifiedby
FLEX_VALUE_SET_ID
FLEX_VALUE_ID

FND_FLEX_VALUE_TLTablecapturestheinformationofeachValueDescriptionofa
ValueSetofaSegment.
EachValueDescriptionisuniquelyidentifiedby

FLEX_VALUE_ID

If we accept a KFF in the form, the information will be stored first in


GL_CODE_COMBINATION Table (i.e. Mater Table) then in Transaction Table i.e.
Detailstable).

FormtoAcceptKFF
Responsibility:R1(TM)/R2(TCS)
JournalForm
Journal:Date:
Currency:
Form
Application
UserFormName
Description
Name1
Function1

Name2
Function2

GL_CODE_COMBINATIONTable(MasterTable)
S1
S2
S3
S4
S5
.
StructureID CCID
1
1
1

TM
2001

TransactionTable(DetailsTable)
This Code is
generated by
SN
Date Debt
Credit
.
CCID
DataBase
1
1
1

2001

24

StepsrequiredtoregistrationofNewKeyFlexfield(KFF)

1. CreateaKFFTableinModuleSpecificSchema.
ConnecttoPPRS/PPRS@VIS

2. CreateaPublicSynonyminAPPSSchema.
ConnecttoAPPS/APPS@VIS
SQL>CREATEPUBLICSYNONYMPPRS_PARTSFORPPRS_PARTS;
3. RegistertheTablewithAOLModule.
PPRS_PARTSTablealreadyregistered.
4. RegistertheKFFwithAOLModule.
ConnecttoAPPSTECH/APPSTECH
GotoFlexFieldKeyRegistration

25

26

27

28

DESCRIPTIVEFLEXFIELDS(DFF)

DFF are used to capture the additional or extra Business information of the
organization.DFFareusedtoaddextraaccounts,thesearevarryfromonebusinessto
anotherbusiness.AllDFFcolumnsaredefinedasAttributeColumns.Allthesecolumns
aredefinedinthetransactiontableitself.Therearearound5000+DFFavailablewiththe
package.

DFFhavetwodifferenttypesofSegments
1. GlobalDFF
2. ContextSensitiveDFF

Q:HowtoknowthataformishavingDFF?
Ans:GotoHelpinMenuBar

Diagnostic

Examine

EnterOraclePassword:APPS
BlockName:$DescriptiveFlexfields(Changethefieldlikethis))
Field:PPRSFLEX
IftheFormhavingthebutton withsquarebrackets[]thenwecansaythatthe
formishavingDFF.AformcanhavemultipleDFFbutaBlockcanhaveonlyone
DFF.ToreferenceaDFFuseBlock_Name.DFF_Name.

Q:HowtoenableaDFF?
ToenableDFFswitchresponsibilityto
ApplicationDeveloper

FlexField

Descriptive

Segments

EnterTotle:PPRSDFF

ClickonSegmentButtonatthebottomofthePopUpWindow.

29

Example:

TableT1

Column1

Column2

Column3

Column4

..

Attributes,A1..A20

AttributeCategoryorContextColumnAC1,Ac2,Ac3,AC4.
FORM
Block1
Column1DFF1AC1AttributeA1..A5

Block2
Column2DFF2AC2AttributeA6..A15

Block3
Column3DFF3AC3AttributeA16..A20

WecanregistermorethanoneDFFonatable.HowmanynumberofDFFthatwe
wanttoregisteronatable,wemusthavethosemanynumberofattributecategoriesor
Contextcolumnsaretobeusedtogroupasetofattributecolumn.Theattributecategory
andattributecolumnsmappedwithonDFFcantbemappedwithotherDFF.

When we register a DFF, System internally generates the default Context field
value as global data elements (GDE). The values for Attribute Category column or
ContextColumnarenull,whenweareenablingthefieldsasglobaldataelements.

C1AC1A1..A20
Column
DFF

GlobalDataElementsA1,A2

INDIA
(A3..A4)

UK
(A3..A5)

US
(A3..A6)

CountryValueswillbestoredinAttributeCategoryColumn(OR)ContextColumn.We
can also define the field, which is enabled, as global data elements are common for all
theuserdefinedcontextfieldvalues.Thatisthereasontheattributecolumns,whichare
mappedwithglobaldataelements,arenotmappedwithuserdefineddataelements.

30

StepsrequiredforregisteringaDFF

1. CreateaDFFTableinModuleSpecificSchema.
ConnecttoPPRS/PPRS@VIS
SQL>ALTERTABELPPRS_PARTS
ADD(
Attribute1
Varchar2(150),
Attribute2
Varchar2(150),
Attribute3
Varchar2(150),
Attribute4
Varchar2(150),
Context Varchar2(25));

2. CreateaPublicSynonyminAPPSSchema.
ConnecttoAPPS/APPS@VIS
SQL>CREATEPUBLICSYNONYMPPRS_PARTSFORPPRS_PARTS;

3. RegistertheTablewithAOLModule.
PPRS_PARTSTablealreadyregistered.

6. RegistertheKFFwithAOLModule.
ConnecttoAPPSTECH/APPSTECH
GotoFlexField
Descriptive
Register

31

32

9.

NEWFORMDEVELOPMENT

ToenabletheendusertooperatetheFormsuserfriendlyweneedtostandardize
the Forms. To design or develop the form with Applications Standards, Package
providedaStandardFormcalledAPPSTAND.fmb

APPSTAND.fmb:isacollectionoftheentirestandardobjectGroupsusedintheOracle
Applications.FormshouldinheritthefollowingobjectGroupProperties

1. STAND_PC_AND_VA:ThisconsistsofWindows,Canvases,BlocksandItemsused
forPropertyClassesandVisualAttributes.

2. STAND_TOOLBAR:ThisconsistsofWindows,Canvases,BlocksandItemsusedfor
ToolBars.

3. STANDARD_CALENDER: This consists of Windows, Canvases, Blocks and Items


usedforCalendars.

4. STANDARD_FOLDER:ThisconsistsofWindows,Canvases,BlocksandItemsused
forDataRestrictionandChangingtheLayoutoftheFormatruntime.Andthisisnot
usedforCustomForms).

5. QUERY_FIND: This consists of Windows, Canvases, Blocks and Items used for
implementingfindwindowsorSearchmethods.

6. LIBRARIES:

APPCORE.PLL: is the collection of Procedures, Functions and Packages used to


defineMenusandToolBars.

FNDSQF.PLL:
is the collection of Procedures, Functions and Packages used to
defineSpecialObjectslikeKFF,DFF,FormFunctionsandNonForm
functions.

APPDAYPK.PLL: is the collection of Procedures, Functions and Packages used to


defineCalendars.

CUSTOM.PLL:
is the collection of Procedures, Functions and Packages used to
customize the Forms with out modifying the code of Oracle
Applications.

33
Note: The Builtins of CUSTOM.PLL are internally called by the Builtins of
APPCORE.PLLandtheBuiltinsofAPPCORE.PLLarecalledbyfewTriggerslike
WHENNEWFORMINSTANCE,
WHENNEWRECORDINSTANCE,
WHENNEWITEMINSTANCE,
PREBLOCK,
PRERECORD,
PREITEM

APPCORE2.PLL: isaDuplicate/ReplicaofAPPCORE.PLL.IthasthesameBuiltinsas
APPCORE.PLLandthisisusedinCUSTOME.PLL

GLOBE.PLL:
is used to change the regional settings of the Package with out
modifyingthecodeofApplications.GLOBE.PLLinternallycallsthe
BuiltinsofJE.PLL,JL.PLLandJA.PLLLibraries.

JE.PLL:
isusedtochangetheregionalsettingsofMiddleEastCountries.

JA.PLL:
isusedtochangetheregionalsettingsofAsiaPacificCountries.

JL.PLL:
isusedtochangetheregionalsettingsofLatinAmerica.

FORMTEMPLATE:ItisusedtodevelopthenewFormofaBusinessApplication.

1.

2.

3.

4.

TEMPLATE.fmbinheritsalltheObjectGroupsofAPPSTAND.fmb.
AttachesalltheLibraries.
AttachesStandardMenucalledFNDMENU.mmb.
CreatesFormlevelTriggers.SomeoftheseTriggersarereadonlyandsomeareread
and write. Read only triggers are marked with RED Colour and Read and Write
triggersaremarkedwithBLUEColour.

5. APPS_CUSTOMPackageisacollectionofOPEN_WINDOW(WNDINVARCHAR2)
and OPEN_WINDOW(WND IN VARCHAR2) Procedures. These are created by
defaultwhenweopentheTEMPLATE.fmbForm.

34

Example:Ifwewanttoopenawindowinthefollowingstructure.

FORM
BLOCK-1
ITEM-1
WHEN-NEW-ITEM-INSTANCE
ITEM-2
ITEM-3

WHEN-VALIDATE-ITEM
KEY-NEXT-ITEM
KEY-LIST-VALUE

BLOCK-2
ITEM-1
ITEM-2

BLOCK-3

Write the following code in the OPEN_WINDOW Procedure of the APP_CUSTOM


Packagetoopenthenavigationofthefirstwindowandsubsequentwindows,which
iscalledbythePREFORMtrigger.

BEGIN
IF(WND=W1)THEN

Statement1;

Statement2;
ELSIF(WND=W2)THEN

Statement1;

Statement2;

ELSIF(WND=W3)THEN

ELSE

ENDIF;

6. Creates Dummy BLOCKS with name Block Name, Detail Name, Dummy CANVAS
with the Name Block Name and Dummy WINDOW with the name Block Name.
PurposeofthesedummiesisonlytounderstandthecreationofBlocks,Canvasesand
WindowsinaForm.

35

NamingConventionstobefollowedintheFormsDevelopment

1.
2.
3.
4.
5.
6.
7.
8.

NameoftheFormModuleshouldbesameas.fmb.
NameoftheDataBlockshouldbesameasBaseTableName.
NameoftheCanvasandWindowissameasBlockname.
NameoftheLOVshouldbesameasItemName.
NameofthePackageshouldbesameasBlockName.
NameoftheProcedureshouldbesameasItemName.
NameoftheROWLOVshouldbesameasBlock_Name_QF.
NameoftheFND_WINDOWshouldbesameasBlock_Name_QF.

StepsRequiredtoDevelopingaNewForm

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.

Open the TEMPLATE.fmb Form from Form Builder and Save as with Module
specificformname.
Delete the default Blocks with names BLOCK_NAME and DETAIL_BLOCK,
CanvaswithnameBLOCK_NAMEandWindowwithnameBLOCK_NAME.
CreateanewWindowandassignWindowpropertyclasstoit.
CreateCanvasandassignCanvaspropertyclasstoit.
AssignCanvastoWindowandWindowtoCanvas.
Create Data Block using wizard and name it as Table Name. Assign Text Item
PropertyclasstoalltheItemsintheDataBlock.
ModifyPreFormTriggeratFormLevel.
ModifyAPP_CUSTOMPackage.
ChangeFormModuleLevelProperties.
Save and Compile the Form and copy the .FMX file in the Module specific
directory.
PerformalltheprerequisitestoregistertheForm.
a. RegistertheformwithAOLmodule.
b. Defineaformfunction
c. AssignformfunctiontotheMenu.
d. AssignthemenutotheResponsibility.
e. AssignResponsibilitytotheUser.

Note:CheckthefollowingattachmentswhenyouopentheTEMPLATE.fmbForm.
1. ChecktherequiredLibrariesattachedornot.
2. ChecktherequiredObjectGroupsattachedornot.
3. ChecktherequiredVisualAttributesattachedornot.
4. ChecktherequiredPropertyClassesattachedornot.
5. ChecktherequiredFormLevelTriggerscreatedornot.

36

10. DEFININGCALENDARS

Calendars are special objects are used to select the date value in userfriendly
manner.WhenyounavigatetoadatefielditdisplaysanLOVicon.
TheCalendarletsyousatisfythefollowingbusinessneeds:

Representdatesandtimegraphicallysothatyoucanmakeaquickdateandtime
selectionwithoutadditionaltyping.

Selectonlythosedatesordaterangesthatareappropriateforthecurrentfield.

YoucanusetheCalendarwindow,asshowninFigure31,tohelpyouenteradate.

CalendarforDateSelection

CalendarforDateandtimeSelection

StepsrequiredtodefiningtheCalendar

1.

Changethefollowingpropertiesofthedateitem
a. ChangetheSubClasstoText_Item_DatepropertyClass.
b. LOVEnableListLamp
c. ValidatefromlistpropertysettoNO.

Note: Enable List Lamp is a dummy LOV, which is going to come with
TEMPLATE.fmb. The record Group associated with this LOV is SELECT
NULL FROM DUAL; we can use this LOV whenever we want to define
someSpecialObjectsontheTextItem.

37
2.

3.
4.

CreateKEYLISTVALTriggeratItemLevel.
Date:

ChangethePropertiesofdatefieldas
1. Text_Item_Date
2. Enable_List_Lamp
3. Key_ListvalTrigger
WriteCode:CALENDAR.SHOW;
SaveandCompiletheForm.
PerformalltheFormregistrationprocess.

38

11. WHOCOLUMNS

WHOcolumnsareusedtotracktheinformationupdatedorinsertedbytheusers
against the tables. FND_STANDARD package is used for this purpose.
FND_STANDARD.SET_WHOProcedureisusedtoupdatetheWHOcolumnsinaTable
whenaDMLoperations(i.e.INSERT,UPDATE)performed.

StepsrequiredtoTrackWHOInformationinourform
1.

ALTERthetablebyaddingWHOcolumnsinthetable.

2.

OpenTEMPLATE.fmbinformBuilder.

3.

Performalltheprerequisitestodevelopaform.

4.

IncludealltheWHOcolumnsintheDataBlockwithNULLCanvas.

5.

CallFND_STAND.SET_WHOprocedureinPreInsertandPreUpdatetriggers
atBlockLevel.

6.

SaveandCompiletheForm.

7.

Performalltheprerequisitestoregistertheform

Note:1.WHOColumnsneednotregisterwiththetableregistrationoption.
2.TableregistrationwillbedoneonlyforKFFandDFFcolumns.
3.ForFormdevelopmenttableregistrationsnotrequired.

ToShowtheModuleFormDirectoryPath
1. InPREFORMTriggerchangethemodulenamefromFNDtospecificmodule
shortname(i.e.EX,INC,PPR,etc.,).
2. SaveandCompiletheform.

39

12. NONFORMFUNCTIONS

Nonformfunctions(subfunctions)arealsoknownasLayoutItems.Nonformfunctions
allowaccesstoaparticularsubsetofformfunctionalityfromthismenu.

Q:

Howthefunctionsecurityworks?

Ans: Whenever we select responsibility information, it selects the Responsibility_ID,


Menu_ID, Request_Group_ID and Data_Group_ID values. Using MENU_ID
identifiesMenuinformationinFND_MENUES.RetrievesallitsMenu_IDentries
fromFND_MENU_ENTRIES.Beforedisplayingthepromptoftheseentriesinthe
navigator Window application checks whether any functions and submenus
excluded for the above responsibility along with the Application_ID in
FND_RESP_FUNCTIONS. If any entries found then it suppresses the display of
thepromptsoffunctionsandsubmenusinthenavigatorwindow.

STRUCTURES

AP
(102)

GL
(101)

R1
(201)

M1
(301)

RG
(302)

F1

(401)

F1

(401)

F1

(401)

F1

(401)

R2
(202)

R3
(203)

R1
(201)

AR
(103)

R2
(202)

R1
(201)

DG
(303)

F1

(401)

F1

(401)

40
DetailsoftheaboveStructure

GL,AR,AP
areApplicationUsersinformationstoredinFND_USERS
101,102,103

areApplication_IDsinformationstoredinFND_APPLICATIONS

R1,R2,R3

M1,RG,DG

areResponsibilitiesinformationstoredin
FND_RESPONSIBILITY
areResponsibility_IDsinformationstoredin
FND_RESP_GROUPS
areMenusinformationstoredinFND_MENUES

301,302,303

areMenu_IDinformationstoredinFND_MENU_ENTRIES

F1,F2,F3,M2

informationstoredinFND_FORM_FUNCTIONS

201,202,203

StepsRequiredForCodingNonFormfunctions

1. OpenTEMPLATE.fmbinFormBuilder.
2. PerformalltheprerequisitestodevelopaForm.
3. CreatethePUSHBUTTONinthedataBlockandchangethefollowing
properties.
Name

:
BOOK
SubClass
:
BUTTON
Label

:
BOOK
Canvas
:
CanvasName

4. CreateaNonFormFunctionforthisLayoutIteminAOLModule.
5. AssignthisNonFormFunctiontotheMenuleavingthepromptempty.
6. ModifyPREFORMTriggeratFormLevel.
IFFND_FUNCTION.TEST(NON_FORM_FUNCTION_NAME)THEN
/*RetrievesFunctionID*/
APP_ITEM_PROPERTY.SET_PROPERTY(EX_ORDERS.BOOK,
ENABLED,PROPERTY_ON);
ELSE
APP_ITEM_PROPERTY.SET_PROPERTY(EX_ORDERS.BOOK,
ENABLED,PROPERTY_OFF);
ENDIF;

7. SaveandCompiletheForm.
8. Performalltheprerequisitestoregistertheform.

41

13. SEARCHMETHODS

TherearetwosearchmethodsavailablewithAPPSPackage
1. ROWLOVTypeSearchMethod.
2. FINDWINDOWTypeSearchMethod.

ToOpenaSearchWindow
GotoMenuBar
View
Find

1.

ROWLOV
ItisusedtosearcharecordbasedonPrimaryKeyColumn.

StepsRequiredtoImplementROWLOV
1. OpenForminFormBuilder.
2. Performalltheprerequisitestodeveloptheform
3. Create a user defined Parameter and change the Data Type and width of the
column,sameasPrimaryKeyColumn.
4. Create a LOV using wizard and assign the return value of the LOV to the
Parameter.
5. ROWLOVisbasedonRecordGroup.
6. SELECTOrder_No,CustomerFROMEx_Orders;

P_Order_No(Parameter_Name)

LookUpReturnItem

7. CreateQUERY_FINDuserdefinedTriggeratBlockLevel.

Note:LOVNameshouldbeBlock_Name_QF

Trigger:QUERY_FIND(UserDefinedTrigger)

APPS_FIND.QUERY_FIND(LOV);
IFQUERY_FINDISNOTNULLTHEN

ENDIF;
IFG_QUERY_FIND:=TRUETHEN

Execute_Query;

ENDIF;

8.CreatePRE_QUERYTriggeratBlockLevel.

42
IFPARAMETER.G_QUERY_FIND=TRUETHEN
:EX_ORDERS.ORDER_NO:=:PARAMETER.P_ORDER_NO;
:PARAMETER.G_QUERY_FIND:=FALSE;
ENDIF;

Note: In latest versions of Applications Parameter_Query_Find will be


implicitly
assignedbythecompilerafterQueryExecute.Weneednotassignit
explicitlyasFALSE.

10. Save and Compile the form and copy .fmx file in to module specific forms
directory.

2.

FINDWINDOWS

QueryFind is used to search the matching records based on value entered in


specifiedfieldsbytheuser.ItconsistsofWindow,Canvas,Block,TextItemsandthree
defaultlayoutItems(i.e.CLEAR,NEW,FIND).

QUERY_FIND Consists of
WINDOW (Default Name is QUERY_FIND)
CANVAS (Default Name is QUERY_FIND)
BLOCK (Default Name is QUERY_FIND)
KEY_NXTBLK (Block Level trigger)
CLEAR (Button Item) Trigger
WHEN_BUTTON_PRESSED
APP_FIND.FIND (Results_Block_Name);

CLEAR (Button Item)


Trigger WHEN_BUTTON_PRESSED
APP_FIND.CLEAR;

CLEAR (Button Item)


Trigger WHEN_BUTTON_PRESSED
APP_FIND.NEW (Results_Block_Name);

StepsRequiredToCreateaFINDWINDOW

43
1

OpenTEMPLATE.fmbforminFormBuilder.

Performalltheprerequisitestodeveloptheform.

OpenAPPSTAND.fmbforminFormBuilder.

OpenQUERY_FINDObjectGroupfromAPPSTAND.fmbtoTEMPLATE.fmb.

RenameQUERY_FINDWindow,CanvasandBlocknameswiththenameofthe
ResultsBlockname(i.e.EX_ORDERS)andQFsuffix

Note:NameoftheQUERY_FINDlookslikeEX_ORDERS_QF.
6

ModifytheFIND_BLOCKbyaddingtheTextItemsaspertherequirement.

ModifythecodinginKEYNXTBLKtriggeratBlockLevel.

APP_FIND.FIND(Results_Block_Name);

Modify the coding in the WHENBUTTONPRESSED Trigger associated with


theNEWButton.

APP_FIND.FIND(Results_Block_Name);
10

Modify the coding in the WHENBUTTONPRESSED Trigger associated with


theFINDButton.

APP_FIND.FIND(Results_Block_Name);
11

CreateQUERY_FINDuserdefinedtriggeratResultsBlockLevel.

APP_FIND.FIND(Results_Window_Name,Find_Window_Name,
Find_Block_Name);
12

When we press the FIND button in FIND_WINDOW, it will first evaluates


G_QUERY_FIND = TRUE then fires PREQUERY Trigger then Fetches the
resultsbasedonmatchesthenfiresPOSTQUERYTrigger.

13

CreatePREQUERYTriggeratResultsBlockLevel.

IF:PARAMETER.G_QUERY_FIND=TRUETHEN
COPY(:FIND_BLOCK.ITEM_NAME1,RESULTS_BLOCK,ITEM_NAME1);
COPY(:FIND_BLOCK.ITEM_NAME2,RESULTS_BLOCK,ITEM_NAME2);
COPY(:FIND_BLOCK.ITEM_NAME3,RESULTS_BLOCK,ITEM_NAME3);
APP_FIND.QUERY_FIND(:FIND_BLOCK.START_DATE,
:FIND_BLOCK.END_DATE,RESULTS_BLOCK.ORDER_DATE);
ENDIF;

14

Save and Compile the form and copy .fmx file in to module specific forms
directory.

15

Performalltheprerequisitestoregistertheform.

44
Note:APP_FIND.QUERY_RANGE(:Query_Find_Block_Name.START_DATE,
:Query_Find_Block_Name.END_DATE,Results_Block_Name.Order_Date);
This code is to be written in PREQUERY Trigger at Results Block Level and is
usedtosearchthevaluesbasedontherangeofvalues.

StepsRequiredToInvokeDescriptiveFlexFields(DFF)
1

CreateaDFFTableinModuleSpecificSchema.

CreateaPublicSynonyminAPPSSchema.

RegistertheTablewithAOLModule.

RegisterDFFwithAOLModule.

OpenTEMPLATE.fmbForminFormBuilder.

Performalltheprerequisitestodeveloptheform.

IncludealltheDFFcolumnsinDataBlockwithNULLCanvas.

CreateaTextItemintheDataBlockandchangethefollowingproperties.

10

11
12

Name

:
DFF
SubClass

:
Text_Item_Desc_Felx
DatabaseItem
:
NO
LOV

:
Enable_List_Lamp
ValidateFromList :
NO
Canvas

:
Canvas_Name

CreateaPackageSpecificationinProgramUnitwithaDFFProcedureandthe
nameofthepackageissameasBlockName.
PROCEDUREDFF(EVENTINVARCHAR2);
CreatePackageBodyinProgramUnit.
PROCEDUREDFF(EVENTINVARCHAR2)IS
BEGIN
IFEVENT=WHWNNEWFORMINSTANCETHEN

FIND_DESCR_FLEX.DEFINE(EX_ORDERS,DFF,EX,EXDFF);
FIND_DESCR_FLEX.DEFINE(Block_Name,Item_Name,
Application_Short_Name,Name_Of_DFF);
ENDIF;
END;

Call the DFF procedure in WHWNNEWFORMINSTANCE Trigger at Form


LevelandpassingtheeventasWHENNEWFORMINSTANCE.
Call FND_FLEX.EVENT in WHENNEWITEMINSTANCE Trigger at form
level.

45

13
14

Note:FND_FLEX.EVENTisacommonBuiltInusedtoinvokeDFFandKFF.
Save and Compile the form and copy .fmx file in to module specific forms
directory.
Performalltheprerequisitestoregistertheform.
ToEnabletheDFF
GotoFlexField

Descriptive

Segments
To see the Enable DFF
Go to Forms
Click on DFF Button
Open the DFF Window with Invoked Fields

StepsRequiredInvokeKeyFlexFieldsfromtheForm

1
2
3
4

5
6
7
8
9
10
11
12
13

14

CreateaKFFTableinModuleSpecificSchema.
CreateaPublicSynonyminAPPSSchema.
RegistertheTablewithAOLModule.
RegisterKFFwithAOLModule.
Note:WheneverweregisteraKFF,SysteminternallygeneratesaStructurewith
thesamenameasTitleoftheKFFandtheStructure_ID.
CreatetheStructureofKFF.
AssociateSegmentstotheStructure.
DefineValueSets.
AssignValueSetstoSegments.
DefineValuestoeachSegmentbasedonValueSets.
OpenTEMPLATE.fmbForminFormBuilder.
Performalltheprerequisitestodeveloptheform.
IncludealltheKFFColumnsinDataBlockwithNULLCanvas.
CreateaTextItemintheDataBlockandchangethefollowingproperties.
Name

:
KFF
SubClass

:
Text_Item
DatabaseItem
:
NO
LOV

:
Enable_List_Lamp
ValidateFromList :
NO
Canvas

:
Canvas_Name

CreateaPackageSpecificationinProgramUnitwithaKFFProcedureandthe
nameofthepackageissameasBlockName.
PROCEDUREKFF(EVENTINVARCHAR2);

46
15

16
17

18
19

CreatePackageBodyinProgramUnit.
PROCEDUREKFF(EVENTINVARCHAR2)IS
BEGIN
IFEVENT=WHWNNEWFORMINSTANCETHEN

FIND_DESCR_FLEX.DEFINE(EX_ORDERS,KFF,EX,
Code_Of_KFF,Structure_Code_No);
FIND_DESCR_FLEX.DEFINE(Block_Name,Item_Name,
Application_Short_Name,Code_Of_KFF,Structure_Code_No);
ENDIF;
END;

Call the KFF procedure in WHWNNEWFORMINSTANCE Trigger at Form


LevelandpassingtheeventasWHENNEWFORMINSTANCE.
Call FND_FLEX.EVENT in WHENNEWITEMINSTANCE Trigger at form
level.
Note: FND_FLEX.EVENTisacommonBuiltInusedtoinvokeDFFandKFF.
Save and Compile the form and copy .fmx file in to module specific forms
directory.
Performalltheprerequisitestoregistertheform.

47

14. PROFILES
Profiles are used to determine the behavior of Oracle Application Forms and
Programs. The registration information of all the users will be stored in
FND_PROFILES_OPTIONtable.ThedictionaryofalltheProfileOptionsismaintained
byAOLmodule.TosetthevaluesoftheProfileOptions,weuseSystemAdministrator
Module. Profile Options are used to pass the values to the variables declared in our
forms and programs, by which we can determine the behavior of Oracle Application
Forms.

Note:Thereare5316typesofprofilesoptionsaregoingtocomewiththepackage.

EachProfileOptionhasaccessat3levels.
1 UserAccessLevel.
2 ProgramAccessLevel.
3 SystemAdministratorLevel

USER LEVEL: If the Profile is having access at this level any front end login user can
changethevaluesoftheProfileOptions.

Main Menu
Edit
References
Profiles

PROGRAM LEVEL: If the Profile is having access at Program Level then we can use
theminourPrograms.

SYSTEMADMINISTRATORLEVEL:IftheProfileishavingaccessatthislevelthenwe
canuseProfileOptionsatthefollowingfoursublevels.
1 SITELevel
2 APPLICATIONLevel
3 RESPONSIBILITYLevel
4 USERLevel

SITELEVEL:SiteisacollectionofModules.AModuleisacollectionofResponsibilities.
Responsibilityisassignedtodifferentusers.

48
If we set the Profile Options at Site level then these Profile Options get
affected to all the Forms and Programs of all the Modules, which are
accessedfromoursite.

APPLICATION LEVEL: If we set the Profile Options at this level then the Profile
Optionsgetaffectedtoalltheformsofaparticularmodule.
RESPONSIBILITY LEVEL: If we set the Profile Options at this level then the Profile
OptionsgetaffectedtoalltheFormsandPrograms,whichareassignedtoa
particularResponsibility.

USERLEVEL:WhenwesettheProfileOptionsatthislevelthentheProfileOptionsget
affectedtoalltheFormsandProgramsofalltheResponsibilities,whichare
assignedtoaparticularUser.

WhenwesettheProfileOptionsatallthe4levelthen
1. UserLevelwilloverwriteResponsibilityLevel
2. ResponsibilityLevelwilloverwritetheApplicationLevel
3. ApplicationLevelwilloverwritetheSiteLevel

The BuiltIn that is used to get the value of the Profile Option is
FND_PROFILE.GET,whichtakestwoargumentsi.e.NameoftheProfileOptionandthe
OutputVariable.ThisBuiltInfirstsearchesforthevalueatUserLevelanditwillgetthe
USER_ID, RESPONSIBILITY_ID and APPLICATION_ID of Form where the Form is
called.

Site

GL

R1

R2

Site Level

AR

R3

User-1

R4

Application Level

AP

R5

R6

User-2

R7

Responsibility Level

User Level

49

WhenwecalltheBuiltIn,itwillfirstsearchesatUserLevel
1

IfthevalueisnotfoundatUserLevelthenitwillsearchatResponsibilityLevel.

IfthevalueisnotfoundatResponsibilityLevelthenitwillsearchatApplication
Level.

IfthevalueisnotfoundatApplicationlevelthenitwillsearchatSiteLevel.This
isthedefaultlevelofProfileOption.

Q: HowtosetthevaluesforexistingProfileOptions?

Sys.Admin
Security
User
Define
Password Length can be changed by
Profile Option.

BuiltIntochangethelengthofthepasswordiscalledSIGNONPasswordLength.
Note: Whenever we set the Profile Option at Site Level, we have to relogin into
Applications.

ThedifferentSignonAuditAccountsare

NONE
USER
RESPONSIBILITYand
FORM.

Q: How to know the WHO the users are currently connected to the
ServerforAuditAccounts?

Sys.Admin
Security
Monitor
FORM

Query the Form and Select


the Signon Audit Account

LOVbasedonRecordGroup,RecordGroupBasedonSelectStatement.

50
ProfileswillbechangedonthebasisofProfileOptionsRecordGroup.

Profile ProfileType
Status
P1
NoLOV
SQLValidationisnotrequired
P2
Static/Fixed
SQLValidationisrequired
Values
DefinedinFND_LOOKUPSTable
P3
Variable
SQLValidationisrequired
Validationisbasedonanytable.

Stepsrequiredcreatingaprofileontables
1. Defineaprofile.
2. Settinganewprofile.
3. AddingcodeintoFormsTrigger.

51

15. CUSTOMIZATIONOFFORMS

CUSTOM.PLL is used to customize the forms with out modifying the code of Oracle
Applications. There is only one CUSTOM.PLL exists for all the Forms in Oracle
Applications. CUSTOM.PLL is going to be in use when ever we start Form Server
Service.InCUSTOM.PLLwehaveaPackagebynameCUSTOM.Underthispackagewe
havethebuiltinsasZOOMAVAILABLE,EVENTandSTYLE.

ZOOM AVAILABLE: is the function which returns a BOOLEAN value (TRUE or


FALSE).BydefaultitreturnsFALSE.IfthisfunctionisgoingtoreturnTRUE,theZOOM
Menu Item from the main menu is enabled. The ZOOM menu item is used to call one
formfromanotherform.

EVENT:isaprocedurewhichisusedtohandlespecificeventsinwhichwearegoingto
addourcustomcode.Themaineventsthatwecanhandlewiththisprocedureare
WHENNEWFORMINSTANCETrigger
WHENNEWBLOCKINSTANCETrigger
WHENNEWRECORDINSTANCETrigger
WHENNEWITEMINSTANCETrigger
WHENVALIDATERECORDTrigger
PREFORMTrigger
POSTFORMTrigger

Allthesetriggers,whicharecreatedatformlevel,whichareidentifiedwithblue
colors.EventprocedurebydefaultperformsNULL.

STYLE:isafunction.Itreturnsanintegerrangingfrom1to4
1
indicate
BEFORE
2
indicate
AFTER
3
indicate
OVERWRITE
4
indicate
STANDARD

TheseareModuleSpecificevents.ThebuiltinsofCUSTOM.PLLarecalledbythe
builtins of APPCORE.PLL in all the form level triggers which are going to come with
TEMPLATE.fmbform.

CUSTOM.PLL(LibraryName)

CUSTOM(PackageName)

EVENT(ProcedureName)

Wheneverwecreateordevelopaforminapplicationsthesearesomeformlevel
triggers, which will be created, and in all the form level triggers builtins of

52
APPCORE.PLLarecalled.ThebuiltinsofAPPCORE.PLLaregoingtocallthebuiltins
ofCUSTOM.PLL.

RestrictionsinCUSTOM.PLL
1. WeshouldnotattachandcallanybuiltinsofAPPCORE.PLLinCUSTOM.PLLto
avoidrecursion.InsteadwecanuseAPPCORE2.PLLinCUSTOM.PLL.
2. APPCORE2.PLLisaduplicateofAPPCORE.PLL.AllthebuiltinsofAPPCORE2
aresuffixedwith2.
3. We cant use SQL statements directly in CUSTOM.PLL. In order to use SQL
statementswecanmakeuseofPackagesandProcedures.

Note:1.Togettheinformationaboutcurrentformnameinuse

Gotohelpinmainmenu

OpenOracleApplications

2.TogettheBlockNameandItemNameofthecurrentform

Gotohelpinmainmenu

Diagnostic

Examine

HowtoImplementZOOMAvailability?
1. Firstidentifycallingformandcalledformdetails.
2. Opencalledforminformbuilder.
3. Createaparameter.
4. ModifyWHENNEWINSTANCEtriggeratformlevel.

IF:Parameter.P_Vendor_NameISNOTNULLTHEN

GO_BLOCK(VNDR);

DO_KEY(EXECUTE_QUERY):

:Parameter.P_Vendor_Name:=NULL;
ELSE

/*ExistingStatements*/
ENDIF;
5. ModifyPREQUERYtriggeratBlocklevel.
6. SaveandCompiletheformandcopy.fmxfileinmodulespecificdirectory.
Note:BydefaultZOOMoptionintheMenubarisdisabledforalltheForms.
7. OpentheCUSTOM.PLLlibraryinOracleFormBuilder.
8. ModifythecodeinZOOM_AVAILABLEFunction.

53

FORM_NAME:=NAME_IN(SYSTEM.CURRENT_FORM);
BLOCK_NAME:=NAME_IN(SYSTEM.CURSOR_BLOCK);

BEGIN
IF(FORM_NAME=POXPOEPOAND
BLOCK_NAME=PO_HEADERS)THEN

RETURNTRUE;
ELSE

RETURNFALSE;
ENDIF;
9. HandleZOOMEventinEVENTProcedureofCUSTOM.PLL.
Builtins of calling or Opened Form are CALL_FORM, OPEN_FORM and
NEW_FORM.

FND_FUNCTION.EXECUTE(FUNCTION_NAME=,
OPEN_FORM=Y,

SESSION_FLAG=N,
OTHER_PARAMETERS=P_VENDOR_NAME);

54

16. CONCURRENTPROCESSING(CP)

ConcurrentProgrammingisaprocessingrequestssimultaneouslyandproducing
differentresults.DifferenttypesofprogramssupportedbyoracleapplicationsareOracle
Reports,PL/SQL,JAVA,JAVAConcurrentProcess,SQLScripts,SQL*Loader,PRO*C,
C,C++,HOSTetc.

To process all the Concurrent Programs in applications is Application User


ConcurrentManagerServer.Inapplicationswecanrunonlythoseprogramswhichare
assignedtotheRequestGroupofourResponsibility.TorunanyConcurrentProgramin
applicationweuseSRS(StandardRequestSubmission)Form.Actualexecutablenameof
the SRS Form is FNDRSRUN.fmb. We can call this SRS From directly from the main
menu or we can create a form function for this form and assign this to our Menu
Responsibility.
Based on the executable name CP identifies the actual executable name, executable
methodsandforwhichmoduleitisassigned.

ReportsServerstoresOracleReports

DatabaseServerstoresJAVA,C,etc.

ConcurrentManagerServerStoresPro*C,Pro*Cobol,etc.

The information of the Concurrent Programs are stored in


FND_CONCURRENT_PROCESSEStable.

Columnsofthistableare Request_ID

User

Program

Executable

Arguments

PhasePending,Running,Completed

StatusStandby,Normal,Errors

(or) Normal,Paused,WarningsNormal

Whenever we submit a program SRS Form first the request information goes to
InternalConcurrentManager.

InternalConcurrentManagerhastwocomponents
1. ResponseComponent
2. IdentificationComponent

ResponsecomponentgeneratesauniqueRequest_IDforeachprogramsubmittedfor
SRS form and updates the request information in FND_CONCURRENT_REQUEST
table,then forwardstherequest toIdentification component. Identification Component

55
searchesfortheprograminFND_CONCURRENT_REQUESTtableandexecutesoutput
formatandoutputstylebasedontheexecutablenameitidentifiestheactualexecutable
name,executionmethodandmodulename.Basedonthemodulenameandexecutable
methodapplicationidentifiestheexecutableinModulespecificdirectoryandmapsthe
parametervaluestotheexecutablefromFND_CONCURRENT_REQUESTandupdates
the program information in FND_CONCURRENT_PROCESSES. Once the process is
completeditgeneratesthe.logand.outfilesinmodulespecificdirectory.

Note:InFormsFormFunctionsareusedtopasstheparametersatruntime,whereasin
reportsprogramsareusedtosetthedifferentoutputformats.

StepsRequiredforRegisteringaSimpleReport
1.
2.
3.
4.
5.
6.
7.
8.

CreateaReportusingReportBuilder.
Compileandcopy.RDFfileinmodulespecificdirectory.
RegistertheexecutablewithSystemAdministratorModule.
DefinetheConcurrentProgram.
AssigntheexecutabletoConcurrentProgram.
AssigntheConcurrentProgramtoRequestGroup.
AssigntheRequestGrouptotheResponsibility.
AssigntheResponsibilitytotheUser.

FND_EXECUTABLES Table captures the information of all the executables, which are
registered.

FND_CONCURRENT_PROGRAMS Table stores the information of Concurrent


Programs.

Q:

HowtoRuntheReportfromOracleApplications?

Ans: OpenVIEWinmainmenu

Requests

Submitarequestbypressingthebutton

Q:WhatarethedifferenttypesofparametersavailableinReports?
Ans: Therearetwotypesofparameters
1. BINDPARAMETERS
2. LEXICALPARAMETERS.

Theparameters,whichwecreateatdesigntime,arecalledActualParameters.The
parameters defined at concurrent program level are called Formal Parameters.
Validationofaparameteristobedonetotheformalparameters.

56

RegisteringParametricReports
1. CreateaReportusingReportBuilderwithparameters.
2. Compileandcopy.RDFfileinmodulespecificdirectory.
3. RegistertheexecutablewithSystemAdministratorModule.
4. DefinetheValuesettovalidatetheparameters.
5. DefinetheConcurrentProgram.
6. AssigntheexecutabletoConcurrentProgram.
7. DefineParameters.
8. AssignValueSettotheParameters.
9. AssignbindparameterofyourstotheTOKEN.
Note: Token is used to map bind parameters with the formal parameters of the
ConcurrentProgram.
10. AssigntheConcurrentProgramtoRequestGroup.
11. AssigntheRequestGrouptotheResponsibility.
12. AssigntheResponsibilitytotheUser.

ToreferencethevaluesofPriorParametersofaparticularprogramintothevaluesof
other parameter is based on the Value Set. The value of the 1st parameter is to be
referencedinwhereclauseofthe2ndParameter.
WHEREDeptno=:$FLEX$.First_Parameter

Note:1.TocallSRSFormfromourownMenuregisterSRSForm(FNDRSRUN)in
ourModule.

2.WecanassignonlyoneRequestGroupforaResponsibility.

3. We can call the programs of multiple Request Groups from a Request


Group.

4.ForeachRequestGroupwecancreateafunction.

To run the programs of the Request Group from the Responsibility it is not
compulsory to assign the Request Group to the Responsibility. We can also assign a
Form function to the Menu it is defined on FNDRSRUN with Request Group code,
RequestGroupapplicationshortnameandTitleasparameters.

57

17. FLEXFIELDFEPORTS

USEREXITS:Thesearethe3rdpartyprograms(i.e.Java,Pro*C,etc.)thatwecanlink
withourreportsto performaparticular task.Wecanlink3rdpartyprogramswithour
reports with SRW.USER_EXIT(Name_of_the_User_Exit). We can reference the input
parametersinuserexitswithSRW.REFERENCE(:input_parameters).

FNDSRWINIT: ThisUserExitisusedtoinitializethereportinthememory.

FNDSRWEXIT: This User Exit is used to release the memory occupied by the
program.

ThisUserExitisusedtotailortheSELECTstatementwhichreturns
FNDFLEXSQL:
astring.ItisaconcatenationoftheSegmentcolumnsofaparticularstructure.

Parameters:
ApplicationShortName:SQLGL
Code:
GL#
Number:
P_STRUCTURE_ID
Output:
P_FLEXDATA

Note: Bind Parameters can be mapped with only one column where as Lexical
Parametersisaplaceholdercolumnwhichcanbeusedtosubstitutestringinthe
parameter.

Example:
SELECTP_FlexDataCflexData,Journal_Name,,,
FROMKFF,TRANS
WHEREKFF.CCID=TRANS.CCID
ANDSTRUCT_ID=:P_STRUCT_ID;

FND FLEXID_VAR: is user to retrieve Value_Set_IDs of all the Segments based on a


parameterStructureandalsoretrievesvaluesanddescriptionsbasedonValue_IDsand
Value_Set_IDs.

ApplicationShortName
: SQLGL
Code
: GL#
Number
: P_STRUCTURE_ID
Data
: C_FLEXDATA
Description
: :C_DESC
ItconcatenatestheValueSetIDsofSegments.

58

StepsRequiredtocreateaSimpleFlexFieldReport
1.

OpentheReportinReportBuilder.

2.

CreateUserdefinedparametersasperourrequirement.
Name

Data
Width Initial Notes
Type
Value
F_CONC_REQUEST_ID Number 15
0
AlwaysCreate
P_FLEXDATA
Character 600
Long Cumulativewidthmore
String thanexpectedwidth
requiredtoholdthe
data(i.e.concatenated
valueofSegments1..n)
P_STRUCT_NUM
Character 15
101
ContainsStructure
Number

3.

4.

5.

CallFNDSRWINITUserExitinBeforeReportTrigger.
BEGIN

SRW.USER_EXIT(FNDSRWINIT);

RETURN(TRUE);
END;

CallFNDSRWEXITUserExitinAfterReporttrigger.
BEGIN

SRW.USER_EXIT(FNDSRWEXIT);

RETURN(TRUE);
END;

CallFNDFLEXSQLUserExitinBeforeReportTrigger.
BEGIN

SRW.USER_EXIT(FNDSRWEXIT);
BEGIN

SRW.REFERENCE(:P_STRUCT_NUM);

SRW.USER_EXIT(FNDFLEXSQL

APPL_SHORT_NAME=SQLGL

CODE=GL#

NUM=:P_STRUCT_NUM

OUTPUT=:P_FLEXDATA

MODE=SELECT

DISPLAY=ALL);
END;

RETURN(TRUE);

59

6.

7.
8.

9.

END;

Note: When we are calling multiple user exits in a trigger we should call these
UserExitsinseparateBlocks(i.e.BEGIN..END).

CreateareportqueryintheDataModel.
SELECT&P_FLEXDATAC_FLEXDATA
FROMGL_CODE_COMBINATION
WHERECHART_OF_ACCOUNT_ID=&P_STRUCT_NUM;

CreatetwoFormulaColumnsC_VALUEandC_DESC_ALL.
CallFNDFLEXIDVALinthePL/SQLformulaofCVALUEtoreferenceValue
CodeCombination.
To retrieve the concatenated flexfield segment values and description you
incorporatetheAOLuserexitsinthesecolumns
BEGIN

SRW.REFERENCE(:C_FLEXDATA);

SRW.FND(:P_STRUCT_NUM);

SRW.USER_EXIT(FNDFLEX_ID_VAL

APPL_SHORT_NAME=SQLGL
CODE=GL#

NUM=:P_STRUCT_NUM

OUTPUT=:P_FLEXDATA

VALUE=:C_VALUE

DISPLAY=ALL);

RETURN(:C_VALUE);
END;

Call FND FLEXIDVAL in the PL/SQL formula of C_DESC_ALL to retrieve


DescriptionCodeCombination.
BEGIN

SRW.REFERENCE(:C_FLEXDATA);

SRW.FND(:P_STRUCT_NUM);

SRW.USER_EXIT(FNDFLEX_ID_VAL

APPL_SHORT_NAME=SQLGL
CODE=GL#

NUM=:P_STRUCT_NUM

OUTPUT=:P_FLEXDATA

DESCRIPTION=:C_DESC_ALL

DISPLAY=ALL);

RETURN(:C_DESC_ALL);
END;

60
10.

RunthereportwithdefaultLayout.

11.

Compileandcopy.RDFinmodulespecificdirectory.

12.

Performalltheprerequisitestoregisterthereport.
SystemAdministrator

Concurrent

Program

Executable

Note:AlltheFNDTablesarestoredinApplicationObjectLibrary(AOL).

61

18. QUALIFIERS

QualifiersareusedtoidentifytheSegmentswithspecificPropertyandthevalueofthe
Segmentswhiledesigningthereports.Qualifiersareclassifiedintotwocategories.
1. FlexFieldQualifiers(FFQs)
2. SegmentQualifiers(SQs)

FlexFieldQualifiers(FFQs):areusedtoassignaspecificpropertytotheSegment
Qualifier. These are based on Key Flex Fields (KFF). FFQs are varry from one KFF to
anotherKFFanditisnotcompulsorythatalltheKFFshouldhaveFFQs.

SegmentQualifiers(SQs): are used to assign a specific property to the value of a


Segment.SQsisbasedonFFQsanditisnotcompulsorythatalltheFFQsshouldhave
SQs.

Note:YoumustdefineFlexfieldQualifierbeforeyoudefineSegmentQualifier.

ForexampleaccordingtoAccountingFlexFields
1. BalancingSegmentProperty(UserName)
GL_BALANCING(ActualName)
a. GlobalFlexfieldQualifier:appliestoallsegments.
b. UniqueFlexfieldQualifier:appliestoonlyoneSegment.
c. RequiredFlexfieldQualifier:appliestoatleastoneSegment.

WriteCodebeforeExecutionoftheReport
FNDFLEXSQL
APPL_SHORT_NAME=SQLGL
CODE=GL#
NUM=P_STRUCT_NUM
OUTPUT=:P_COMPANY
MODE=SELECT
DISPLAY=GL_BALANCING

2. NaturalAccountingSegmentProperty(UserName)
GL_ACCOUNT(ActualName)
a. GlobalFlexfieldQualifier
b. UniqueFlexfieldQualifier
c. RequiredFlexfieldQualifier

62
WriteCodebeforeExecutionoftheReport

FNDFLEXSQL
APPL_SHORT_NAME=SQLGL
CODE=GL#
NUM=P_STRUCT_NUM
OUTPUT=:P_ACCOUNT

MODE=SELECT
DISPLAY=GL_ACCOUNT

3. CostCenterSegmentProperty(UserName)
GL_COST_CENTER(ActualName)
a. ThisisnotUniqueandisnotcompulsory

19.INTERFACES

Interfaces are the Tables, which are act as a medium to transfer the data from one
module to another module or to transfer the data from legacy system into Oracle
Applications. There are 352 tables provided by the Oracle Package. Each module is
havingitsownInterfaceTables.

Interfacing:
Itistheprocessofconvertingtherecordsfromoneformattoanotherformat.
Themaincomponentsofthisinterfacingare

TransferProgram

InterfaceTableand

ImportProgram

TransferProgram:
If the source modules data are implemented in Oracle Applications then the Transfer
ProgramsaregoingtocomewiththePackage.Ifthesourcemodulesareimplementedin
external system (i.e. other than Oracle Applications) then we have to develop our own
Transfer Programs. Generally these Transfer Programs are developed using PL/SQL,
JAVAorSQLLoader.

TheLogicoftheTransferProgramsis

ItmapsthecolumnsofsourcetablewiththecolumnsofInterfaceTables.

ItperformsRowLevelandColumnLevelvalidations.

IttransfersthedatafromSourcetotheInterfaceTable.

63

InterfaceTables:
Thecolumnsofthesetablesareclassifiedinto4types.
1. MandatoryColumns.
2. ConditionallyRequiredColumns.
3. OptionalColumns.
4. InternalProcessingColumns.

MandatoryColumns:
ThesearetheNormalcolumnsintheInterfaceTables.Thesearethemaincolumnswhich
arerequiredinthedestinationtables(i.e.OracleApplicationModuleTables).

Note: With the help of mandatory columns only the Import Program will converts the
recordsfromsourcetodestination.

ConditionallyRequiredColumns:
ThevaluesforthesecolumnsarebasedonthevaluesofMandatorycolumns.

Example: When we are converting foreign currency transactions to INR then it as


compulsory to provide conditionally required columns like Currency
conversionrate,ConversionTimeandConversionDate.

OptionalColumns:
These are used when a client wanted to transfer some additional information from
sourcetodestination.Thesearebasedonclientsrequirement.

InternalProcessingColumns:
Status and Error Message columns are called Internal Processing Columns. These are
specific only to Interface Table. These columns are going to be used by the Import
Program to updatethe status and errormessage, ifthe record fails itsvalidation while
importingfromInterfaceTabletotheDestinationTable.

ImportProgram:
For all Interface Tables, Oracle Application Package is going to provide Import
Programs. These are generally registered with destination modules. These Import
ProgramsaredesignedusingPL/SQL,JAVA,C,C++,etc.

ThelogicoftheImportProgramis

It maps the columns of the Interface Table with one or more columns in the
destinationtable.

64

Itperformsrowlevelandcolumnlevelvalidation.

It imports the data from Interface Table to the Destination tables, if the records
validatedsuccessfully.

ItdeletesallthesuccessfullyvalidatedrecordsfromInterfaceTable.

If the record fails its validation then the Import Program will update the status
anderrormessagecolumnsofInterfaceTable.

Q:

What is the difference between Interface and Application Program Interface


(API)?

Ans: InterfacesareusedtotransferthedatafromlegacysystemtoOracleApplication
systemwhereasAPIisusedtoconvertthedatafromoneform toanother form
withintheOracleApplicationModule.

Example:

AR

Transfer Program 1

Import Program

AP

GL

Transfer Program

Daily Transactions

Transfer Program

PO

Journal
Transfer Program

FA

Interface Table
Weekly Transactions

Ledger
Legacy

Transfer Program

Balance

65

Scenario1: Interface Tables are provided and the integrating modules are
implemented in Oracle Applications. In this scenario the package itself is going to
provideaseparatetransferprogramforeachintegratingmodule.Seefigurefordetails.
Indent:isspecifiesthedetailslike,thelistofmaterialsrequired,howmuchquantityis
required,whenthematerialisrequiredandqualityoftheitems.

Interface
AP
GL

Scenario2:InterfaceTablesareprovidedandtheintegratedmodulesareimplemented
inexternalsystemwiththesamedatabaseasOracleApplications.Inthisscenariofront
endisdifferentanddatabaseissame.

Takeforexamplethereare40columnsaccordingtotransactiontableofclientout
ofwhich23aremandatorycolumnsand17areoptionalcolumns.Butasperapplications
interface table is having 20 mandatory columns. While transferring the data from
existing system to applications we have to search for matching columns in transaction
tablewiththeinterfacemandatorycolumns.Matchingcolumnsmaybeofmandatoryor
optional columns of transaction table of client. Assume that there are 17 columns are
foundmatchingcolumnsoutof20mandatorycolumns.Ifwewanttoinserttherecord
intointerfacetableweneed20mandatorycolumnscompulsorily.Inthisexamplesince
thereare17matchingcolumnsoutof20columnswehavetoprovidedefaultvaluesto
the nonmatching (i.e. 3) columns with the authentication of the client. If the client is
havingmandatorycolumnsofhisown,whicharenotmandatoryininterfacetable,then
wemapthosecolumnswiththeoptionalcolumnsofinterfacetable.

LogicoftheTransferPrograminthisscenario
1. Createthedatabaselinksbetweenthetwodatabases.
2. Search for the matching columns of the interface table with source tables or
externaltables.
3. Provide default values for the mandatory columns of interface table for the
columnswherethematchingcolumnsarenotfoundinsourcetable.
4. Performrowlevelandcolumnlevelvalidations.
5. Incase if the clients requirement is to transfer all the mandatory columns of the
source to the destination, we can map the remaining mandatory columns of the
clientaregoingtobemappedwithoptionalcolumnsoftheinterfacetable.
6. CreateaPL/SQLprocedureandmapthecolumnsofInterfaceTablecolumns.
7. TransferthedatafromsourcetabletotheInterfaceTable.

66

Scenario3: Interface Tables are provided and the integrating modules are
implemented in external system with different database (i.e. Sybase, DB2, SQL Server,
etc.).Inthisscenariowehavetoconvertthedataintoflatfile(i.e..dat).Thenwewrite
thetransferprogramusingPL/SQLscript.

Scenario-3: Transfer the Data from Legacy System to Oracle Apps.

SYBASE
INTERFACE
Import

DB2
TABLE
Program
SQL SERVER

Using
PL/SQL

Transfer

Data To

Temp.
Oracle

Table
Applications

Database
Convert
Load
SQL
Flat File

Data To
Data To Loader

Convert Data
UTL
Load
Using PL/SQL
Data To
FILE

GL_DAILY_RATES_INTEAFACE Table is used to store the conversion rates on daily


basis.Itconsistsofthefollowingfields

From_
To_
From_
To_
User_
Conversion_ Mode_
Currency currency Conversion_ Conversion_ Conversion_ Rate
Flag
Date
Date
Type
USD
INR
01SEP2006 30SEP2006 Corporate
44
I
ASD
INR
01SEP2006 15Sep2006 Spot
28
I

This Interface table consists of Database Trigger, which fires the input program
whenever we insert the record in this. This will create no of records into
GL_DAILY_RATES Table of GL module based on the From_Conversion_Date and
To_Conversion_Dateperiod.
Example:

Intheabovetablethereare30daysinthefirstrecord.
ThisDBTriggerupdatestotal60recordsinGL_DAILY_RATESi.e.
30recordsforconversionfromUSDtoINRand
30recordsforconversionfromINRtoUSD.

67
ValidationsRequiredaccordingtothisinterfacetableare
1. FromcurrencyshouldexistsinGL_CURRENCYTableanditshouldbeactive.
2. TocurrencyshouldalsoexistsinGL_CURRENCYTableanditshouldbeactive.
3. FromConversionDate:Alldatevalidationsappliedforthisdate.
4. ToConversionDate:Samevalidationsrequiredasfromcurrencybutitshouldbe
greaterorequaltoFromConversionDate.
5. ConversionType:ThisconversiontypeshouldexistinGL_CONVERSION_TYPE.
6. ConversionRate:Itshouldbeanumber.
7. ModeFlag:ItisthestatuscolumninGL_DAILY_RATESinterfacetable.

I
stand
forInsert
U
stands
forUpdate
D
stands
forDuplicate.

Note:FromCurrency,ToCurrencyandConversionTypeareCasesensitive.

Stepsrequiredfortransferringdatafromlegacysystemtooracleapplications
1. Create daily.dat flat file and save it in server directory
D:\Oracle\Visdb\plsql\temp(thisisthedefaultdirectoryforUTLscriptfiles.To
knowthepathofthisdirectoryopentheinitvis.orafile.
From_
To_
Currency currency
USD
ASD

INR
INR

From_
Conversion_
Date
01SEP2006
01SEP2006

To_
Conversion_
Date
30SEP2006
15Sep2006

User_
Conversion_
Type
Corporate
Spot

Conversion_
Rate

Mode_
Flag

44
28

I
I

2. Create Transfer program using SQL and PL/SQL to upload data from flat file to
theInterfaceTable.

WritethecodeatSQL*PLUSprompt(i.e.SQL>)

DECLARE
Fp
UTL_FILE.FILE_TYPE;
F_Curr
Varchar2(10);
T_Curr
Varchar2(10);
F_Date
Date;
T_Date
Date;
C_Type
Varchar2(9);
C_Rate
Varchar2(2);
M_Flag
Varchar2(1);
My_Line Varchar2(100);
BEGIN
Fp:=UTL_FILE.FOPEN(D:\Oracle\Visdb\9.2.0\plsql\temp,daily.dat,r);
UTL_FILE.GET.LINE(Fp,My_Line);

68

LOOP

UTL_FILE.GET.LINE(Fp,My_Line);

F_Curr:=SUBSTR(My_Line,1,3);

T_Curr:=SUBSTR(My_Line,1,3);

F_Date:=SUBSTR(My_Line,1,3);

T_Date:=SUBSTR(My_Line,1,3);

C_type:=TRIM(SUBSTR(My_Line,1,3));

C_Rate:=SUBSTR(My_Line,1,3);

M_Flag:=SUBSTR(My_Line,1,3);

INSERTINTOGL.GL_DAILY_RATES_INTERFACE(
FROM_CURRENCY, TO_CURRENCY, FROM_CONVERSION_RATE,
TO_CONVERSION_RATE,
USER_CONVERSION_RATE,
CONVERSION_DATE,M_FLAG)VALUES
(F_Curr,T_Curr,F_Date,T_Date,C_type,C_Rate,M_Flag);
ENDLOOP;
EXCEPTIONWHENNO_DATA_FOUNDTHEN
TL_FILE.FCLOSE(FP);
MESSAGE(ENDOFTHEFILE);
END;

20. BISINESSCOMPONENTS

The main components that are required to any business transaction are DATE,
CURRENCY,ACCOUNTSandENTITIES.

DATES:Tovalidatethesedatecomponentsweneedtodefinecalendarbasedonperiod
type. This period type is to specify how many number of periods required for
maintainingthebalancesoftheorganization(i.e.daily,weekly,monthly,quarterly,etc.).
This period types are stored in GL_PERIOD_TYPES table. Based on these period types
we define calendars. These calendars information is stored in GL_CALENDARS table.
Foreachcalendarwedefineperiodsdependinguponthenumberofperiodsassignedto
period types. This periods information is stored in GL_PERIODS table. By default the
status of all these periods is closed. This period statuses are stored in
GL_PERIOD_STATUSEStable.

ACCOUNTS: To define accounting structure in General Ledger or in Finance Module


we use Flexfield Structures. The structures defined using accounting KFF are called as
ChartOfAccounts.ChartOfAccountsIDuniquelyidentifieseachStructure.

ENTITIES:entityisnothingbutamodule.SupplierEntity(AP),CustomerEntity(AR),
EmployeeEntity(HR),etc.,aresomeexamples.

69

CURRENCY:Thereare200typesofcurrenciescomewiththepackage.Allthecurrency
informationwillbestoredinGL_CURRENCIEStable.Thecurrency,whichisassignedto
ourSetOfBooks,iscalledFunctionalCurrencyandtheremainingallthecurrenciesare
calledasForeignCurrencies.

Thereare3typesofcurrencies
1. FunctionalCurrency
2. ForeignCurrency
3. StaticCurrency

FunctionalCurrency:inwhichwearegoingtomaintainthebalances.
ForeignCurrency:Allthecurrenciesotherthanfunctionalcurrenciesarecalledforeign
currency.
Statistical Currency: This is used to record the usage factor for various measurement
units.
Example:If3departmentsaregoingtosharethesamepremisesandrentforthe
premises is 20000. This 20000 has been shared proportionally to all the departments
dependingupontheirusagefactor.

CHARTOFACCOUNTS:isthestructuredefinedonaccountingKeyFlexField.

SETOFBOOKS(SOB):TheseareusedtosecureaJournalsTransactionsofaparticular
companyandareacollectionofcomponentsCalendar,CurrencyandChartOfAccounts.
Assign these SOB to a responsibility to the GL_RESPONSIBILITY using
GL_SET_OF_BOOKS profile option. When we open the Journal from the responsibility
thedefaultstatusofthisperiodisclosed.Torecordatransactionfromourresponsibility
we have to open the periods. Depending upon the first opening period system assigns
never open status to its prior period and future entry status period to next periods
dependinguponthenumberoffutureperiodsetsinourSetsOfBooks.

PeriodStatus
Journal
Journal
Inquiries/
Entry
Posting
Reports
NeverOpen
NO
NO
NO
Open
YES
YES
YES
Closed
NO
NO
YES
FutureEntry
YES
NO
NO
PermanentlyClosed
YES
NO
YES

Set Of Books information stored in GL_DETS_OF_BOOKS table. Its Set_of_Books_ID


uniquelyidentifieseachsetofbook.

70
Q:

How do we can find the Set Of Books, Flex Fields, Open/Close Periods,
CategoryandSources?
InAOLModule
InAOLModule
Setup
Setup
Financials

FlexFields
Books

Define

Define
InAOLModule
InAOLModule
Setup
Setup

OpenClose

Journal

LatestOpenPeriods

Category
InAOLModule

Setup

Journal

Sources

GL_INTERFACE:ItisusedtoconvertthetransactionsofsubledgerintoJournals.

ValidationsrequiredforGL_INTERFACEtableare
1. STATUS: should be always new when we are transferring the data from sub
ledgertothestatusofgeneralledger.Importprogramchangesthestatustohold
iftherecordisnotvalidatedsuccessfully.Thestatusshouldbeinsentencecase.
2. SET_OF_BOOKS_ID:thisshouldexistinGL_SETS_OF_BOOKStable.
DECLARE
CHKVARCHAR2(1);
BEGIN
SELECTXINTOCHKFROMAPPS.GL_SETS_OF_BOOKS
WHERESET_OF_BOOKS_ID=&SOB_ID;
DBMS_OUTPUT.PUT_LINE(THISSOB_IDVALIDYOUCANPROCEED);
EXCEPTIONWHENNO_DATA_FOUNDTHEN
DBMS_OUTPUT.PUT_LINE(THISSOB_IDISNOTVALID);
END;
/

3. ACCOUNTING_DATE:isthedatewhenexactlywecanpostthejournals.Tables
required to validate the accounting date are GL_SETS_OF_BOOKS,
GL_PERIOD_TYPES,
GL_PERIOD_SETS,
GL_PERIODS
and
GL_PERIOD_STATUSES.
4. CURRENCY_CODE: This code should be same as the currency assigned to the
Sets o f Books. This code should exist in GL_CURRENCY table. If the currency

71
codeisdifferentfromSetsofBooksthenitismandatoryforustoprovidevalues
for the conditional columns like USER_CURRENCY, USER_TYPE,
CURRENCY_CONCERSION_RATEandCURRENCY_CONVERSION_DATE.
Note:
5. DATE_CREDITED:isthetransactiondateorJournaldate.Thisdateshouldbein
openorfutureentryperiods.Thetablesaffectedforthissameasaccountingdate.
Herewehavetogivetheconditionforopenandfutureperiods.Dateshouldbe
between starting date of latest open period and ending date of future entry
period.
6. CREATED_BY:ThisisfrontendloginUSER_IDshouldexistinFND_USERtable
andthisusershouldalsohavetheresponsibilitytorecordtheJournals.
7. ACTUAL_FLAG:ingeneralledgerwearegoingtomaintain3typesofbalances.
a. ActualBalances(flagisA)
b. BudgetBalances(flagisB)
c. EncumbranceBalances(flagisE)
Toupdateactualbalancesthegeneralhastobecreatedasactualjournal.Budget
journals are going to affect budget balances. Encumbrance journals are going to
affectencumbrancebalances.
8. USER_JE_CATEGORY_NAME: it is usedtodescribe the purpose of thejournal
entry.ThiscategoryisgoingtobestoredinGL_JE_CATEGORIES.
9. USER_JE_SOURCE_NAME:itisusedtostoretheoriginofthejournalentry.This
sourceisstoredinGL_JE_SOURCES.
10. BUDGET_VERSION_ID: This column is required when we are going to record
BudgetJournals.ThisinformationisstoredinGL_BUDGET_ENTITIES.
11. ENCUBRANCE_TYPE_ID: This is required when we are going to required
EncumbranceJournals.
12. SEGMENT_COLUMNS:Wehavetoprovidethevaluesforthesegmentcolumns
depending upon howmany number of segment columns associated with the
Chart_Of_Accounts_IDorStructure_IDassociatedwithourSet_Of_Books.
Thetablesusedtovalidatethesegmentsare
FND_ID_FLEXES,
FND_ID_FLEXE_STRUCTURES,
FND_ID_FLEXE_SEGMENTS,
FND_ID_FLEXE_VALUE_SETS,
FND_ID_FLEXE_VALUES,
FND_ID_FLEXE_VALUE_TL.

72
13. ENTER_DR and ENTER_CR: Columns are used to enter the debit amount ar
Creditamount.

SampleCodeRequiredtoUploadtheDatafromLegacySystem
LOADDATA
INFILE*
INTOTABLEGL.GL_INTERFACE
FIELDSTERMINATEDBY,OPTIONALLYENCLOSEDBY
(STATUS,
SET_OF_BOOKS_ID,
ACCOUNTING_DATE,
CURRENCY_CODE,

DATE_CREATED,
ACTUAL_FLAG, USER_JE_CATEGORY_NAME, USER_JE_SOURCE_NAME, SEGMENT1, SEGMENT2,
SEGMENT3,SEGMENT4,SEGMENT5,ENTER_DR,ENTER_CR)
BEGINDATA
Record1
new, 1, 25MAY2001, USD, 25MAY2001, 1001239,A,Sales Invoice, Receivables, 03, 110, 1570,
0000,110,1947,
Record2
new, 1, 25MAY2001, USD, 25MAY2001, 1001239,A,Sales Invoice, Receivables, 03, 110, 6160,
1100,120,,1947

Save the above code with the file name GLINT.CTL in the path
Oracle\visdb\8.1.6\binatserverend.
ThenrunthefollowingcommandatcommandpromptatServerendtouploadthedata
intovariousdatabasetables.
SQLLDRAPPS/APPS@VIScontrol=glint.ctl
Journalsaregoingtobemaintainedin3levels
1. Batches: is a collection of Headers. This information will be stored in
GL_JE_BATCHEStable.
2. Headers: is a collection of Lines. Headers are based on Category and Currency.
ThisinformationwillbestoredinGL_JE_HEADERStable.
3. Lines:ThisinformationwillbestoredinGL_JE_LINEStable.

73

21. MULTIORGANIZATION
The ability to define multiple organizations and the relationships among them
within a single installation of Oracle Applications is called multi organization. Multi
Organization is the future used to store the data of multiple organizations in a single
Database.

StructureofMultiOrganization

Tata Groups

TM

TCS

TTS

TS

SOB1

SOB2

SOB3

SOB4

Trucks

Cars

Develop

Consulting

CARS_AR

TRUCKS_AR

GL: Set Of Books Name (SOB1)


MO: Operation Units (Cars)
HR: Business Group (Tata Group)

GL: Set Of Books Name (SOB1)


MO: Operation Units (Cars)
HR: Business Group (Tata Group)

Training

Nth Org

74
Themaincomponentsofthemultiorganizationare
1) BusinessGroup(BG)
2) LegacyEntity
3) SetOfBooks(SOB)
4) OperatingUnitsorDivisions
5) Organizations

Business Group (BG): The business group represents the highest level in the
organization structure, such as the consolidated enterprise, a major division, or an
Operation Company. A BG is used to secure human resources information like
generation of employee numbers, generation of applicants, position flex fields, Job flex
fields,GradeFlexfield,Fiscalyear,etc.

LegacyEntity:Itisalegalbusiness,whichisgoingtohaveitsownlegislationcodeortax
registrationnumber.Atthislevelwearegoingtoprepareallourfinancialstatements.

Set Of Books (SOB): ASOBisacollectionofCurrency,CalendarandChartofAccounts


(COA). Oracle General Ledger is used to secure Journal transactions (such as journal
entriesandbalances)ofacompanybysetofbooks.ForeachorganizationoftheBusiness
GroupweneedtodefineasetofBook.

OperationUnit:AnoperatingunitisadivisionoraBusinessunitofthelegalentity.At
this level we are going to maintain the information of subledgers. We are going to
maintain the ledgers at Legal Entity level. Receivable, Payables, Assets, etc. are comes
underOperationUnitlevel.

Organization: The different types of organizations are Inventory Organization, Asset


Organization, Human ResourceOrganization, etc. These organizations are going tobe
maintainedatoperatingunitlevel.

Note:In case if we are working with single organization we can define an entity as a
BusinessGroup,LegalEntity,OperatingUnitandOrganizations.

The individual Accounts (i.e. Application Receivables) of an organization (i.e. Tata


Motors)ofmultiorganization(TataGroup)areidentifiedby
FirstbyModulethenResponsibilitythenProfileOptionthenSetofBooks

75
Intheaboveexample:
Module

Responsibility

ProfileOption

SetOfBooks

GL

TM_GL

GL_Set_Of_Books

SOB1

GL

TCS_GL

GL_Set_Of_Books

SOB2

GL

TTS_GL

GL_Set_Of_Books

SOB3

GL

TS_GL

GL_Set_Of_Books

SOB4

GL

GL_Set_Of_Books

GL

Nth_GL

GL_Set_Of_Books

SOBn

DatawillbesecuredforeveryorganizationbyusingSetOfBooksID.
The following are the tables are going to be effected for all the Organizations of multi
organization.
GL_JE_BATCHES
GL_JE_HEADERS
GL_JE_LINES
To record the sales transactions of all the organizations will be stored in the
AR_TRANSACTION_ALLtable.Extracolumnsrequiredtoidentifytheindividualsales
transactions are Set_Of_Books_ID, Org_ID (Operating Unit) and Organization_ID
(BusinessGroup).

76

22. ALERTS
OracleAlertfacilitatestheflowofinformationwithinyourorganizationbylettingyou
createentitiescalledalerts.OracleAlertwillsendmessagesorperformpredefined
actionsinanactionsetwhenimportanteventsoccur.

Alertisamechanismthatchecksyourdatabaseforaspecificexceptioncondition.
Alertsareusedtomonitoryourbusinessinformationandtonotifyyouoftheinformation
youwant.

TherearetwotypesofAlerts
1. Aneventalert
2. Aperiodicalert.

Aneventalerts:Eventalertsimmediatelynotifiestheactivity(i.e.aninsertoran
updatetoatable)inthedatabaseasithappens/occurs.

Tocreateaneventalert,youperformthefollowingtasksintheorderlisted:
Definethedatabaseeventsthatwilltriggeryouralert
Specifythedetailsforyouralert
Defineactionsforyouralert
Createactionsetscontainingtheactionsyouwantyouralerttoperform

Exampleofaneventalert:Selectstatementthatreportsthecreationofnewusers:
SELECTuser_name,:MAILIDINTO&NEWUSER,&USER
FROMfnd_user
WHERErowid=:ROWID;

Aperiodicalerts:Periodicalertsperiodicallyreportkeyinformationaccordingtoa
scheduleyoudefine.
For example, you can define a periodic alert for Oracle Purchasing that sends a
messagetothePurchasingManagerlistingthenumberofapprovedrequisitionlinesthat
each purchasing agent placed on purchase orders. You can define this alert to run
weekly,andprovideperformancemeasurementonaconsistentandtimelybasis.

Tocreateaperiodicalert,youperformthefollowingtasksintheorderlisted:
Define your periodic alert and specify its frequency
Specify the details for your alert
Defineactionsforyouralert
Createactionsetscontainingtheactionsyouwantyouralerttoperform

77
Exampleofaperiodicalert:Selectstatementthatlooksforuserswhohavenotchanged
their passwords within the number of days specified by the value in
:THRESHOLD_DAYS.:

SELECTuser_name,password_date,:THRESHOLD_DAYS
INTO&USER,&LASTDATE,&NUMDAYS
FROMfnd_user
WHEREsysdate=NVL(password_date,sysdate)+:THRESHOLD_DAYS
ORDERBYuser_name;

AlertAction:Anactionyouwantyouralerttoperform.Analertactioncandependon
theoutputfromthealert.Anactioncanincludesendinganelectronicmailmessagetoa
mail ID, running an Oracle Applications program, running a program or script from
youroperatingsystem,orrunningaSQLscripttomodifyinformationinyourdatabase.
Youcanhavemorethanoneactionforanalert,andanactioncanincorporatetheoutput
ofthealert.
Action Set: A sequence of alert actions that are enabled for a particular alert. You can
assignasequencenumbertoeachactionyouincludeinanactionsettospecifytheorder
inwhichtheactionsareperformed.

78

79
Message: This action is used to send a message to application user email_id using
Electronicmailserver.
Concurrent Program: Using this action we can run any concurrent program, which is
registeredinoracleapplicationswhenanexceptionisraised.
SQLStatementScript:ThisoptionisusedtoruntheSQLstatementswhenanexception
israised.
OS Script: This option is used to run a Shell Script or Batch file when an exception is
raised.
Responsibility is used to define the Alerts are Alerts Manager in production services.
AlertsManagerVisionEnterprisesinvisiondatabase.
Note:History table is used to store the exceptions raised and actions taken by alerts
information.Alert(i.e.whetherthealert isfiredor not)status isfound inAlerts
Historyoption.

Details:Validatesoftheentiredetailssummary.Anyoneoftheconditionsissatisfiedis
enoughtoraiseanexception.
ActionSets:isthecollectionofactions.Thisoptioncallstheactionswhenanexceptionis
raised.
Note:VisionApplicationscomesunderOperatingUnit

OracleIDisAPPSandOperationUnitisVISION

80

23. DISCOVERER
Oracle Discoverer is a decision support product that enables you to perform ad
hoc queries on a database, analyze and format the results of the query, prepare the
resultsforpresentation,andmanagedatainawaythatismeaningfulforyourbusiness
situation.Itseparatesthemoredifficultdatabaseadministrationtasksfromthesimpler
queryingandreportingtaskssothatanalysts,managers,andotherinformationworkers
caneasilygettheirworkdonewithouthavingtoknowabouteitherdatabasesorSQL.

OracleDiscovererhasthreeparts:
1. AdministrationEditionenablesyoutocreatealayerofmetadata,calledtheEnd
UserLayerthathidesthecomplexityofthedatabasefromusersandreflectsthe
businessareasspecifictoyourcompanydata.
2. Discoverer Plus enables you to easily query a database, save query results in
workbooks,analyzetheresults,andformatareport.
3. Discoverer Viewer enables you to view workbooks created in Discoverer Plus
usingnothingmorethanawebbrowser.

Business Intelligence: is software it is going to give solutions, Business Solutions and


predictfuturetrends.
Discoverer: is one of the business intelligence tool used to answer business queries by
creatingadhocquerieswithoutdependingonITspecialists(i.e.Developers).Theother
BusinessIntelligencetoolsareCagnos,Informatica,etc.

Different Databases

Static Databases

Oracle

Discoverer

SQL
Server

DB2

Reporting Tools

Data
Warehousing

Cagnoes

Informedia
SEIBEL

81
Themaintoolsofdiscovererare
1. DiscovererAdministrator
2. DiscovererDesktop
3. DiscovererViewer
4. DiscovererPlus
From release 11.5.9 onwards discoverer is fully integrated with application server. All
theabovetoolsarebasedonenduserlayer.
EndUserLayer:isaMetaData(i.e.Dataaboutdata)oralogicaldatabase,whichisused
tohidethecomplexicityofthedatabase.Enduserlayercanbedefinedondatabaseusers
or nondatabase users. Nondatabase users are also called as application users. One
databaseorapplicationusercanhaveonlyoneenduserlayer.Enduserlayerdefinedon
end user can also give grant access to other database users. An end user layer is a
collectionofoneormorebusinessareas.
DiscovererAdministrator:functionsare

Gatherstherequirementsofenduser

Createsenduserlayer

CreatesBusinessArea

LoadDataintoBusinessArea

GiveControlaccesstoBusinessArea

CreatesJoinsandConditions

SendtoUsers

BusinessArea:isalogicalgroupoftablesandviewsofaparticularenduserlayer.B.Ais
acollectionoffolders.Afolderisatableloadedfromthedatabase.Folderisacollection
ofitems.Eachitemrepresentsacolumninthetable.Wecanalsodefinespecialitemsfor
calculationpurpose.
Discoverer Desktop: This tool is going to be used by the end user in standalone
machine.Itis used to access end user layers. Using desktop we can create worksheets.
Wecananalyzethedata.Wecancreatecharts(Graphs).
Discoverer Viewer: This tool is going to access the end user layer at client site on the
WebinHTMLformatonly.Usingthistoolwecananalyzethedataandcreategraphs.
Discovererplus:isusedtoaccessenduserlayerontheWebinappletformat.Usingthis
toolwecancreateworksheets,analyzedataandcreatecharts.

You might also like