0% found this document useful (0 votes)
2K views

Oracle Apps Technical Tutorial

Uploaded by

api-196786892
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2K views

Oracle Apps Technical Tutorial

Uploaded by

api-196786892
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 81

1

ORACLEAPPLICATIONS

1. INTRODUCTION
ERP: Resource Planning with in an Enterprise. ERP is a term that covers whole Product 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 of 256 different types of modules, 4000 Forms, 5000 Programs etc. Any Organization can 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. It consists of a release directory (i.e. 11.5.0) under which Forms, 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/FND is a Special Directory known as Application Object Library (AOL) directory.ItisusedtocaptureallModulesApplicationExecutableFiles. GL_TOP/11.5.0/AU is an Application Utility (AU) Directory. It consists of a application 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

When we install Oracle Database by default system will creates SYS and SYSTEM schemas. These consist of all Data Dictionary Tables. Like this if we install Oracle Applications System will automatically creates schemas of all Modules (i.e. GL, AR, AP, etc.) with the respective module name as User and Password. Along with these schemas 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

APPS Schema: It is Public Schema. It consists of a collection of public synonym of all


the objects of all the schemas in the Application database. All the Procedures, Functions andPackagescreatedmustbestoredinthisSchema.

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

APPLSYSPUB Schema: 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. When we arechanging the APPS Schemapassword, firstwe have tochange in 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.

Request Group (RG): It is a collection of concurrent Programs. It is used to request 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
a unique name for the purpose of assigning it to, or excluding it from, a menu (and by extension,aresponsibility). An Oracle Applications feature that lets you control user access to certain functions and windows. By default, access to functionality is not restricted; your system 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
If you want to open the Form in different modes without creating the copies, 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. A menu can be assigned to more than one Responsibility. If you want to restrict 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 Transaction Data Tables: are normal tables, which are used to store the data inallthemodulesinwhichwecanperformanyDMLoperations. 2 Seed Data Tables: The data for these tables created at the time of installation. Therecordspresentinthesetablesarereadonly. 3 Interim Data Tables: are the temporary tables, which are used for validation 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)
We can also register the Table using Application DBA Data Definitions (AD_DD) Package from the Back End. You can also use the AD_DD API to delete the registrations 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: key flexfields and descriptive flexfields. A key flexfield appears on your form 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_VALUES Table captures the information each Value codes of a Value Set 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. DFF are used to add extra accounts, these are varry from one business to another business. All DFF columns are defined as Attribute Columns. All these columns are defined in the transaction table itself. There are around 5000+ DFF available with the package. DFFhavetwodifferenttypesofSegments 1. GlobalDFF 2. ContextSensitiveDFF Q:HowtoknowthataformishavingDFF? Ans:GotoHelpinMenuBar Diagnostic Examine EnterOraclePassword:APPS BlockName:$DescriptiveFlexfields(Changethefieldlikethis)) Field:PPRSFLEX If the Form having the button with square brackets [ ] then we can say that the formis havingDFF.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 want to register on a table, we must have those many number of attribute categories or 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) Country Values will be stored in Attribute Category Column (OR) Context Column. We can also define the field, which is enabled, as global data elements are common for all the user defined context field values. That is the reason the attribute columns, which are 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

To enable the end user to operate the Forms user friendly we need to standardize the Forms. To design or develop the form with Applications Standards, Package providedaStandardFormcalledAPPSTAND.fmb APPSTAND.fmb: is a collection of the entire standard object Groups used in the Oracle Applications.FormshouldinheritthefollowingobjectGroupProperties 1. STAND_PC_AND_VA: This consists of Windows, Canvases, Blocks and Items used forPropertyClassesandVisualAttributes. 2. STAND_TOOLBAR: ThisconsistsofWindows,Canvases,BlocksandItemsusedfor ToolBars. 3. STANDARD_CALENDER: This consists of Windows, Canvases, Blocks and Items usedforCalendars. 4. STANDARD_FOLDER: This consists of Windows, Canvases, Blocks and Items used 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: is a Duplicate/Replica of APPCORE.PLL. It hasthe sameBuiltins as APPCORE.PLLandthisisusedinCUSTOME.PLL GLOBE.PLL: is used to change the regional settings of the Package with out modifying the code of Applications. GLOBE.PLL internally calls the 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. Creates Form level Triggers. Some of these Triggers are read only and some are read and write. Read only triggers are marked with RED Colour and Read and Write triggersaremarkedwithBLUEColour.

5. APPS_CUSTOM Package is a collection of OPEN_WINDOW(WND IN VARCHAR2) 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 Package to open the navigation of the first window and subsequent windows, 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
WHO columns are used to track the information updated or inserted by the users 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. Call FND_STAND.SET_WHO procedure in PreInsert and PreUpdate triggers atBlockLevel. SaveandCompiletheForm. Performalltheprerequisitestoregistertheform 2.TableregistrationwillbedoneonlyforKFFandDFFcolumns. 3.ForFormdevelopmenttableregistrationsnotrequired. ToShowtheModuleFormDirectoryPath 1. In PREFORM Trigger change the module name from FND to specific module 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 identifies Menu information in FND_MENUES. Retrieves all its Menu_ID entries from FND_MENU_ENTRIES. Before displaying thepromptof these entries in the 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 specified fields by the user. It consists of Window, Canvas, Block, Text Items and three 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 Create a Package Specification in Program Unit with a DFF Procedure and the 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: When ever we register a KFF, System internally generates a Structure with 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 Create a Package Specification in Program Unit with a KFF Procedure and the 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_OPTION table. The dictionary of all the Profile Options is maintained by AOL module. To set the values of the Profile Options, we use System Administrator 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. USER LEVEL: When we set the Profile Options at this level then the Profile Options get 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. If the value is not found at Responsibility Level then it will search at Application Level. If the value is not found at Application level then it will search at Site Level. 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: is a procedure which is used to handle specific events in which we are going to addourcustomcode.Themaineventsthatwecanhandlewiththisprocedureare WHENNEWFORMINSTANCETrigger WHENNEWBLOCKINSTANCETrigger WHENNEWRECORDINSTANCETrigger WHENNEWITEMINSTANCETrigger WHENVALIDATERECORDTrigger PREFORMTrigger POSTFORMTrigger All these triggers, which are created at form level, which are identified with blue colors.EventprocedurebydefaultperformsNULL. STYLE:isafunction.Itreturnsanintegerrangingfrom1to4 1 indicate BEFORE 2 indicate AFTER 3 indicate OVERWRITE 4 indicate STANDARD TheseareModuleSpecificevents.ThebuiltinsofCUSTOM.PLL arecalledbythe 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) Whenever we create or develop a form in applications these are some form level triggers, which will be created, and in all the form level triggers builtins of

52 APPCORE.PLL are called. The builtins of APPCORE.PLL are going to call the builtins ofCUSTOM.PLL.

RestrictionsinCUSTOM.PLL
1. Weshouldnotattach andcallanybuiltinsofAPPCORE.PLLinCUSTOM.PLLto avoidrecursion.InsteadwecanuseAPPCORE2.PLLinCUSTOM.PLL. 2. APPCORE2.PLL is a duplicate of APPCORE.PLL. All the builtins of APPCORE2 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)
Concurrent Programming is a processing requests simultaneously and producing differentresults.DifferenttypesofprogramssupportedbyoracleapplicationsareOracle Reports, PL/SQL, JAVA, JAVA Concurrent Process, SQL Scripts, SQL * Loader, PRO *C, C,C++,HOSTetc. To process all the Concurrent Programs in applications is Application User Concurrent Manager Server. In applications we can run only those programs which are assigned tothe RequestGroup of ourResponsibility. To run any Concurrent Program in 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 Responsecomponent generates auniqueRequest_ID foreachprogramsubmitted for SRS form and updates the request information in FND_CONCURRENT_REQUEST table, then forwards the request to Identification component. Identification Component

55 searches for the program in FND_CONCURRENT_REQUEST table and executes output format and output style based on the executable name it identifies the actual executable name, execution method and module name. Based on the module name and executable method application identifies the executable in Module specific directory and maps the parameter values to the executable from FND_CONCURRENT_REQUEST and updates 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. ToreferencethevaluesofPriorParametersofaparticularprograminto the valuesof other parameter is based on the Value Set. The value of the 1st parameter is to be referencedinwhereclauseofthe2ndParameter. WHEREDeptno=:$FLEX$.First_Parameter Note: 1. To call SRS Form from our own Menu register SRS Form (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
USER EXITS: These are the 3rd party programs (i.e. Java, Pro * C, etc.) that we can link with our reports to perform a particular task. We can link 3rd party programs with our 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. This User Exit is used to tailor the SELECT statement which returns 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 Parameters is a placeholder column which can be used to substitute string in the 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 parameter Structure and also retrieves values and descriptions based on Value_IDs and 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. Call FND FLEXIDVAL in the PL/SQL formula of CVALUE to reference Value 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
Qualifiers are used to identify the Segments with specific Property and the value of the Segmentswhiledesigningthereports.Qualifiersareclassifiedintotwocategories. 1. FlexFieldQualifiers(FFQs) 2. SegmentQualifiers(SQs)

Flex Field Qualifiers (FFQs): are used to assign a specific property to the Segment
Qualifier. These are based on Key Flex Fields (KFF). FFQs are varry from one KFF to anotherKFFanditisnotcompulsorythatalltheKFFshouldhaveFFQs.

Segment Qualifiers (SQs): are used to assign a specific property to the value of a
Segment. SQs is based on FFQs and it is not compulsory that all the FFQs should have 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 update the status and error message, if the record fails its validation 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: Interfaces are used to transfer the data from legacy system to Oracle Application system where as API is used to convert the data from one form to another 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: is specifies the details like, the list of materials required, how much quantity is required,whenthematerialisrequiredandqualityoftheitems. Interface AP GL

Scenario2:InterfaceTablesareprovidedandtheintegratedmodulesareimplemented
in external system with the same database as Oracle Applications. In this scenario front endisdifferentanddatabaseissame. Take for example there are 40 columns according to transaction table of client out 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 table with the interface mandatory columns. Matching columns may be of mandatory or optional columns of transaction table of client. Assume that there are 17 columns are found matching columns out of 20 mandatory columns. If we want to insert the record into interface table we need 20 mandatory columns compulsorily. In this example since there are 17 matching columns out of 20 columns we have to provide default values to the nonmatching (i.e. 3) columns with the authentication of the client. If the client is having mandatory columns of his own, which are not mandatory in interface table, 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.). In this scenario we have to convert the data into flat file (i.e. .dat). Then we write 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. To Conversion Date: Same validations required as from currency but it should be 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 (thisisthe defaultdirectory for UTL script files.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: To validate these date components we need to define calendar based on period 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. For each calendar we define periods depending upon the number of periods assigned to 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: entity is nothing but a module. Supplier Entity (AP), Customer Entity (AR), EmployeeEntity(HR),etc.,aresomeexamples.

69 CURRENCY: There are 200 types of currencies come with the package. All the currency informationwillbestoredinGL_CURRENCIEStable.Thecurrency,whichisassignedto our Set Of Books, is called Functional Currency and the remaining all the currencies are calledasForeignCurrencies. Thereare3typesofcurrencies 1. FunctionalCurrency 2. ForeignCurrency 3. StaticCurrency FunctionalCurrency:inwhichwearegoingtomaintainthebalances. Foreign Currency: All the currencies other than functional currencies are called foreign currency. Statistical Currency: This is used to record the usage factor for various measurement units. Example: If 3 departments are going to share the same premises and rent for the premises is 20000. This 20000 has been shared proportionally to all the departments dependingupontheirusagefactor. CHARTOFACCOUNTS:isthestructuredefinedonaccountingKeyFlexField. SET OF BOOKS (SOB): These are used to secure a Journals Transactions of a particular 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 thedefault status of thisperiod is closed. To recorda transaction from ourresponsibility 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 ledger to the status of general ledger. Import program changes the status to hold 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 code is different from Sets of Books then it is mandatory for us to provide values for the conditional columns like USER_CURRENCY, USER_TYPE, CURRENCY_CONCERSION_RATEandCURRENCY_CONVERSION_DATE. Note: 5. DATE_CREDITED: is thetransaction date orJournal date. This date shouldbe in open or future entry periods. The tables affected for this same as accounting date. Here we have to give the condition for open and future periods. Date should be between starting date of latest open period and ending date of future entry period. 6. CREATED_BY:This is frontend login USER_ID shouldexist inFND_USER table andthisusershouldalsohavetheresponsibilitytorecordtheJournals. 7. ACTUAL_FLAG:ingeneralledgerwearegoingtomaintain3typesofbalances. a. ActualBalances(flagisA) b. BudgetBalances(flagisB) c. EncumbranceBalances(flagisE) To update actual balances the general has to be created as actual journal. Budget journals are going to affect budget balances. Encumbrance journals are going to affectencumbrancebalances. 8. USER_JE_CATEGORY_NAME: it is used to describe the purpose of the journal 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. Then run the following command at command prompt at Server end to upload the data 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): A SOB is a collection of Currency, Calendar and Chart of Accounts (COA). Oracle General Ledger is used to secure Journal transactions (such as journal entriesandbalances)ofacompanybysetofbooks.ForeachorganizationoftheBusiness GroupweneedtodefineasetofBook. Operation Unit: An operating unit is a division or a Business unit of the legal entity. 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 Resource Organization, etc. These organizations are going to be 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_ALL table. Extra columns required to identify the individual sales 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 Example of a periodic alert: Select statement that looks for users who have not changed 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; Alert Action: An action you want your alert to perform. An alert action can depend on the output from the alert. An action can include sending an electronic mail message to a mail ID, running an Oracle Applications program, running a program or script from your operating system, or running a SQL script to modify information in your database. 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. whether the alert is fired or not) status is found in Alerts Historyoption. Details: Validates of the entire details summary. Any one of the conditions is satisfied is 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 results for presentation, and manage data in a way that is meaningful for your business situation. It separates the more difficult database administration tasks from the simpler querying and reporting tasks so that analysts, managers, and other information workers caneasilygettheirworkdonewithouthavingtoknowabouteitherdatabasesorSQL. OracleDiscovererhasthreeparts: 1. AdministrationEditionenablesyoutocreatealayerofmetadata,calledtheEnd User Layer that hides the complexity of the database from users and reflects the 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 creating adhoc queries with out depending on IT specialists (i.e. Developers). The other 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.Eachitemrepresentsa columninthetable.Wecanalso definespecialitemsfor calculationpurpose. Discoverer Desktop: This tool is going to be used by the end user in standalone machine. It is 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