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 Database Server

Reports 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 PRODORA PRODCOMM PRODDATA PRODAPPL

VISDB VISORA VISCOMM VISDATA VISAPPL

TESTDB TESTORA TESTCOMM TESTDATA 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 GL 11.5.0 APPL_TOP = D:\ORACLE\VISAPPL

Forms AR AP Reports BIN LIB SQL HTML LOG OUT Message FND AU 11.5.0 Forms Resource

US US

US

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

GSS

Seg1

Seg2

Seg3

Seg1

Seg2

Seg3

Seg4

Seg4

Company

Department

Accounts

Company

Production

Location

Department

Accounts

VS1

VS2

VS3

VS4

VS5

VS6

VS7

VS8

1. Trucks 2. Cars

1. Sales 2. Finance 3.

1. 2. 3. 4. 5.

Cash Bank Rent X Y

CodeCombinationIDofKFFisGGC_GM_VS1_1 GGC CompanyName GM BranchName VS1 Segment1 1 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
GL#

RECEIVABLE
AP#

101

TM

102

TTS

103

TTC

101

TMAP

101

APTC

201

S1

202

S2

203

S3

301

S1

302

S2

301

S1

302

S2

Code Descr

Code Descr

Code Descr

Code Descr

Code Descr

Code Descr

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 GotoFlexField Key Registration

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 Column1 DFF1 AC1 AttributeA1..A5 Block2 Column2 DFF2 AC2 AttributeA6..A15 Block3 Column3 DFF3 AC3 AttributeA16..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. C1 AC1 A1..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. CreateKEYLISTVALTriggeratItemLevel. Date: ChangethePropertiesofdatefieldas 1. Text_Item_Date 2. Enable_List_Lamp 3. Key_ListvalTrigger WriteCode:CALENDAR.SHOW; SaveandCompiletheForm. PerformalltheFormregistrationprocess.

3. 4.

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. 2. 3. 4. 5. 6. 7. ALTERthetablebyaddingWHOcolumnsinthetable. OpenTEMPLATE.fmbinformBuilder. Performalltheprerequisitestodevelopaform. IncludealltheWHOcolumnsintheDataBlockwithNULLCanvas. CallFND_STAND.SET_WHOprocedureinPreInsertandPreUpdatetriggers atBlockLevel. SaveandCompiletheForm. Performalltheprerequisitestoregistertheform 2.TableregistrationwillbedoneonlyforKFFandDFFcolumns. 3.ForFormdevelopmenttableregistrationsnotrequired. ToShowtheModuleFormDirectoryPath 1. InPREFORMTriggerchangethemodulenamefromFNDtospecificmodule shortname(i.e.EX,INC,PPR,etc.,). 2. SaveandCompiletheform.

Note:1.WHOColumnsneednotregisterwiththetableregistrationoption.

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
GL (101) AP (102) AR (103)

R1 (201)

R2 (202)

R3 (203)

R1 (201)

R2 (202)

R1 (201)

M1 (301)

RG (302)

DG (303)

F1 F1 F1 F1

(401) (401) (401) (401) F1 F1 (401) (401)

40 DetailsoftheaboveStructure GL,AR,AP areApplicationUsersinformationstoredinFND_USERS 101,102,103 R1,R2,R3 201,202,203 M1,RG,DG 301,302,303 F1,F2,F3,M2 areApplication_IDsinformationstoredinFND_APPLICATIONS areResponsibilitiesinformationstoredin FND_RESPONSIBILITY areResponsibility_IDsinformationstoredin FND_RESP_GROUPS areMenusinformationstoredinFND_MENUES areMenu_IDinformationstoredinFND_MENU_ENTRIES informationstoredinFND_FORM_FUNCTIONS

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 8.CreatePRE_QUERYTriggeratBlockLevel. Execute_Query; ENDIF;

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 2 3 4 5 OpenTEMPLATE.fmbforminFormBuilder. Performalltheprerequisitestodeveloptheform. OpenAPPSTAND.fmbforminFormBuilder. OpenQUERY_FINDObjectGroupfromAPPSTAND.fmbtoTEMPLATE.fmb. RenameQUERY_FINDWindow,CanvasandBlocknameswiththenameofthe ResultsBlockname(i.e.EX_ORDERS)andQFsuffix

Note:NameoftheQUERY_FINDlookslikeEX_ORDERS_QF. 6 7 8 9 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. CreatePREQUERYTriggeratResultsBlockLevel. 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 15 Save and Compile the form and copy .fmx file in to module specific forms directory. Performalltheprerequisitestoregistertheform.

13

IF:PARAMETER.G_QUERY_FIND=TRUETHEN

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. 1 2 3 4 5 6 7 8 CreateaDFFTableinModuleSpecificSchema. CreateaPublicSynonyminAPPSSchema. RegistertheTablewithAOLModule. RegisterDFFwithAOLModule. OpenTEMPLATE.fmbForminFormBuilder. Performalltheprerequisitestodeveloptheform. IncludealltheDFFcolumnsinDataBlockwithNULLCanvas. CreateaTextItemintheDataBlockandchangethefollowingproperties. 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.

StepsRequiredToInvokeDescriptiveFlexFields(DFF)

10

11 12

45 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

13 14 1 2 3 4

StepsRequiredInvokeKeyFlexFieldsfromtheForm
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);

5 6 7 8 9 10 11 12 13

14

46 15 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.

16 17

18 19

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 Site Level

GL

AR

AP

Application Level

R1

R2

R3

R4

R5

R6

R7

Responsibility Level

User-1

User-2

User Level

49

WhenwecalltheBuiltIn,itwillfirstsearchesatUserLevel
1 2 3 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 Phase Pending,Running,Completed Status Standby,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. 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. 2.WecanassignonlyoneRequestGroupforaResponsibility. 3. We can call the programs of multiple Request Groups from a Request Group. 4.ForeachRequestGroupwecancreateafunction.

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. 2. OpentheReportinReportBuilder. CreateUserdefinedparametersasperourrequirement. 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. 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); Name

4.

5.

59 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;

6.

7. 8.

9.

60 10. 11. 12. RunthereportwithdefaultLayout. Compileandcopy.RDFinmodulespecificdirectory. 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 Q: 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. What is the difference between Interface and Application Program Interface (API)?

Ans: InterfacesareusedtotransferthedatafromlegacysystemtoOracleApplication systemwhereasAPIisusedtoconvertthedatafromoneform toanother form withintheOracleApplicationModule. Example: AR AP PO


Transfer Program
Transfer Program 1

Import Program
Transfer Program

GL
Daily Transactions

Transfer Program

Journal

Interface Table
Weekly Transactions

FA

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 44 28 Mode_ Flag 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
GL: Set Of Books Name (SOB1) MO: Operation Units (Cars) HR: Business Group (Tata Group) TRUCKS_AR GL: Set Of Books Name (SOB1) MO: Operation Units (Cars) HR: Business Group (Tata Group) CARS_AR Trucks Cars Develop Consulting Training SOB1 SOB2 SOB3 SOB4 TM TCS TTS TS Nth Org Tata Groups

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 GL GL GL GL GL GL Responsibility TM_GL TCS_GL TTS_GL TS_GL . Nth_GL ProfileOption GL_Set_Of_Books GL_Set_Of_Books GL_Set_Of_Books GL_Set_Of_Books GL_Set_Of_Books GL_Set_Of_Books SetOfBooks SOB1 SOB2 SOB3 SOB4 . 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. SEIBEL DB2 SQL Server Different Databases Oracle Discoverer Static Databases Reporting Tools

Data Warehousing

Cagnoes

Informedia

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 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. Gatherstherequirementsofenduser Createsenduserlayer CreatesBusinessArea LoadDataintoBusinessArea GiveControlaccesstoBusinessArea CreatesJoinsandConditions SendtoUsers

You might also like