Professional Documents
Culture Documents
Oracle Application Framework (OA Framework) is the Oracle Applications development and deployment platform for
HTML-based business applications.
Client Tier
Application - Tier
Database - Tier
HTTP Request
Application
Components
WEB
CLIENT
Servlet / JSP
Data Base
HTTP Response
Raaj Nagulapalli
M.C.A
MVC1 Architecture :
M Model
V View
C Controller
Client Tier
HTTP Request
WEB
CLIENT
Application - Tier
Database Tier
Application
Components
Servlet / JSP
Java
Bean
Data Base
HTTP Response
Model : Model Represents data object. Model is what is being manipulated and presented to the user
View : Serves as Screen representation of Model. It is the object that presents the current state of the data objects.
Controller : Defines the way user interface reacts to the users input. The Controller component is the object that
manipulates the model or data object.
In MVC1 Architecture
Servlet / JSP acts as View as well as Controller.
Java Bean acts as Model Component.
Disadvantages :
1) Only One Application developer has to develop the component with Business Logic, as well as Presentation Logic.
2) Application developer has to concentrate on Business Logic as well as Presentation Logic.
3) Application Developer Must have the Multiple Skills
4) Resources such as Java developers and Web developers can not be used effectively
5) Development Time is more
6) Lot of confusion with Business Logic, Presentation Logic since they are being developed as single component.
Raaj Nagulapalli
M.C.A
MVC2 Architecture :
Client Tier
Application - Tier
Database Tier
HTTP Request
Controller
WEB
CLIENT
Model
HTTP Response
Data Base
View
Controller:
It is java Servlet called as Action Servlet. It receives request from the web client and stores data into the Java Bean
called as Form Bean (Model) and receives response (success / fail) from the Form Bean. Based on the response from Form
Bean, Action Servlet decides, which page (view) to be presented to the client.
Model :
It is Java Bean called as Form Bean. It will receive the client data through the Controller and performs the data
validations or data base transactions such DML and DQL operations. After performing database transactions it provides the
data for the view.
View :
It is a JSP. It populates the data from the Form Bean ( Model ) and Present to the user.
Raaj Nagulapalli
M.C.A
Application - Tier
Database Tier
Model
HTTP Request
Controller1,
2,3, 4 n
VO
A
WEB
CLIENT
Data Base
EO
HTTP Response
View
AM Application Module
VO View Object
EO Entity Object
Controller :
It is a Java Class.
OAControllerImpl is a parent of all Controller Classes.
Controller performs data base transactions through the Application Module interface.
It will get the data through the Application Module and Push into the View.
View :
It is JSP with GUI Components.
It populates data of its GUI components through the Controller.
View never Interact with the Model Component.
Model :
It is a combination of Application Module, View Object and Entity Object.
Application Module :
It is an interface given to the Controller Classes.
It can be shared by multiple controllers.
It performs DQL operations through the View Object
It performs DML operations through the Entity Object.
OAApplicationModuleImpl is a parent of Application Module Class.
It is mandatory for all applications
View Object :
Raaj Nagulapalli
M.C.A
Entity Object :
D2k
OAF
ADF
MVC Architecture
MVC Architecture
applications
applications
applications
PL/SQL
JAVA
JAVA
Web Application
Enterprise Applicaion
Raaj Nagulapalli
M.C.A
jdevbin
|____
Jdevdoc
|____ jdevhome
to desktop
: apps
Password
: apps
Role
: not necessary ( Roles such as site level, user level, application level )
Next
Raaj Nagulapalli
M.C.A
3) Driver : thin
Host Name : localhost ( if database is on the current system else I.P Addres of DB server )
JDBC Port : 1521
SID
: vis
Eg:
Hello Page
Raaj Nagulapalli
M.C.A
2) Creation of a project
Raaj Nagulapalli
M.C.A
Password : welcome
Application short Name : PO
Responsibility key : PURCHASING_OPERATIONS
Next Finish
3) Create of a package
Right click on .jpr file New Business Component Package Next
Package Name : first.oracle.apps.po.hello.server
( Select Entity object mapped to database schema objects )
Next
Connection Name : test
Sql Flavour : oracle
Type Map : oracle
Next
User name : apps
Password : apps
Next finish
Note : it generates test
2) TestAMImpl.java
files
5) Create of a Page
Right Click on .jpr file New Web Tier OA Components Page OK
Name : HelloPG
Package : first.oracle.apps.po.hello.webui
Note : It generates HelloPG.xml file
7) Set the Properties of the page
Select the page Structure
Raaj Nagulapalli
M.C.A
Region1
Properties :
Id : RootRN
AM Definition : click on the box and select the AM
Window Title : First Window
Title
Text Field :
Properties :
Id : UserId
Item Style : messageTextInput
Prompt : User Name
Data Type : VARCHAR2 ( As desired )
Comments : Created for Login User Id
Required : Yes ( Yes Mandatory field, No Optional )
Read only : True ( to Show it as read only filed, we can not edit the filed )
False we can edit the filed.
( use for Id generating automatically , used with database sequence )
Disable : true ( to avoid the cursor focus into the text filed )
Maximum Length : the maximum no of Chars that can be entered into the text filed.
Initial Value : default value
10
Raaj Nagulapalli
M.C.A
11
Raaj Nagulapalli
M.C.A
The difference between Checkbox and Radio Button is that, Checkbox allows Multiple selection where as Radio Button
allows Single Selection.
Radio Buttons :
First create RadiGroup
Next create Radio Buttons
Radio Group
Id : gender
Item style : messageRadioGroup
Data Type : VARCHAR2
Prompt : Gender
Radio Button
Id : male
Item Style : messageRadioButton
Group Name : gender
Initial Vale : Male
Value Checked : Male
Prompt : MALE
12
Raaj Nagulapalli
M.C.A
Id : address
Item Style : richTextEditor
Vertical alignment : Top
Maximum Length : 1000 ( as desired )
Date :
Id : hireDate
Item Style : messageTextInput
Data Type : DATE
Prompt : Date Of Joining
tipType : dateFormat
TipMessage ( Hint Message ): First store message into the database table called: FND_NEW_MESSAGES
with the help of Apps front end .
Navigation :
Application Developer Application Messages
13
Raaj Nagulapalli
M.C.A
Oracle
Apps Technical
14
Raaj Nagulapalli
M.C.A
Apps DBA
Oracle DBA
Pre
Next
Pre
Next
15
Raaj Nagulapalli
M.C.A
Criteria item
The LOV can be on the existing Page or New Page as per the requirement
Eg:
Creation of a page ( like previous process )
Right Click on Project file ( .jpr ) New Web Tier OA components Page OK
Name : DemoLovItemPG ( as per naming conventions Page must end with PG)
Package : test.oracle.apps.po.orgid.webui
When the item style set as messageLovInput, then following will be generated automatically under the item
1) Region3
2) lovMappings
16
Raaj Nagulapalli
M.C.A
Name of the package : ( paste the copied one test.oracle.apps.po.orgid.server and modify to
test.oracle.apps.po.orgid.lov.server
Next OK next Finish
Query Statement :
SELECT ORGANIZATION_ID, ORGANIZATION_NAME
FROM ORG_ORGANIZATION_DEFINITIONS ;
Test to test the query or it can be tested by using TOAD tool (ok Query valid)
Next Next Next Finish
C) Shuttle VO to AM
double click on AM Data Model test.oracle.apps.po.orgid.server
organizationLovVO >> instance name : OrganizationLovVO
Apply OK
17
Raaj Nagulapalli
M.C.A
OAWebBean webBean );
OAWebBean webBean );
OAWebBean webBean );
OAWebBean webBean );
It will be executed before loading the page. It is used for initializations. Like a doGet() in Java or pre-form triggers in
D2k application.
OAWebBean webBean );
It will be executed after loading the page. Like a doPost() in Java or post-form triggers in D2k application.
OAWebBean webBean );
This is used implement the business logic such validation, DML operations and etc.
pageContext : is variable to read value, messages from the client and also used to call another page
webBean : is a variable to send the response to the client and to control the bean properties dynamically
18
Raaj Nagulapalli
M.C.A
+===========================================================================+
| HISTORY
+===========================================================================*/
package mnrao.oracle.apps.po.firstcomp.webui.webui;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
/**
* Controller for ...
*/
public class FirstCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
19
Raaj Nagulapalli
M.C.A
*/
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
}
/**
* Procedure to handle form submissions for form elements in
* a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
}
=========================================================================
to test the order of execution write the following code in processRequest ()
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
System.out.println( " I am in Process Request Method ");
}
20
Raaj Nagulapalli
M.C.A
=========================================================================
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA
|
+===========================================================================+
| HISTORY
+===========================================================================*/
package demo.oracle.apps.po.choice.webui.webui;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.OAException;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
/**
* Controller for ...
*/
public class LoginCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
21
Raaj Nagulapalli
M.C.A
{
super.processFormRequest(pageContext, webBean);
if( pageContext.getParameter("submit")!=null)
{
String lstrUid = pageContext.getParameter("uid");
String lstrPwd = pageContext.getParameter("pwd");
if( lstrUid.equalsIgnoreCase("OPERATIONS")&& lstrPwd.equalsIgnoreCase("WELCOME"))
{
throw new OAException( "Valid User", OAException.CONFIRMATION);
}
else
{
throw new OAException( "InValid User", OAException.ERROR);
}
}// end of if checking for submit
if( pageContext.getParameter("clear")!=null)
{
22
Raaj Nagulapalli
M.C.A
Eg:
Creation of a page ( like previous process )
Right Click on Project file ( .jpr ) New Web Tier OA components Page OK
Name : DemoLovItemPG ( as per naming conventions Page must end with PG)
Package : test.oracle.apps.po.orgid.webui
Region2 :
Id : Header
Region Style : header
Text : Enter Details
Create item1 with Item Style as messageLovInput
Region2 ( Header ) Rt.Click item
Item properties :
Id : organizationID
Item Style : messageLovInput
23
Raaj Nagulapalli
M.C.A
Prompt : organizationID
When the item style set as messageLovInput, then following will be generated automatically under the item
3) Region3
4) lovMappings
3) lovMap1
2) Create VO inside the lov.server package
Query Statement :
SELECT ORGANIZATION_ID, ORGANIZATION_NAME
FROM ORG_ORGANIZATION_DEFINITIONS ;
Test to test the query or it can be tested by using TOAD tool (ok Query valid)
Next Next Next Finish
C) shuttle VO to AM
double click on AM Data Model test.oracle.apps.po.orgid.server
organizationLovVO >> instance name : OrganizationLovVO
Apply OK
24
Raaj Nagulapalli
M.C.A
Next
Region ID : OrganizationTableRN
Region Style : table
Next Shuffle (OrganizationId and OrganizationName ) Next Next Finish
25
Raaj Nagulapalli
M.C.A
Note : The steps 3, 4 and 5 are extra steps with external region.
When the item style set as messageLovInput, then following will be generated automatically under the item
1) Region3
2) lovMappings
3) Lov Map
26
Raaj Nagulapalli
M.C.A
Name of the package : ( paste the copied one test.oracle.apps.po.supp.server and modify to
test.oracle.apps.po.supp.lov.server
Next OK next Finish
Query Statement :
select vendor_id, vendor_name, creation_date from po_vendors
Test to test the query or it can be tested by using TOAD tool (ok Query valid)
Next Next Next Finish
Shuttle VO to AM
double click on SuppDetailsAM Data Model test.oracle.apps.po.supp.lov.server
SuppDetailsVO >> instance name : SuppDetailsVO
Apply OK
5) Add VO to external region by using wizard and set one of the item property search allow true
27
Raaj Nagulapalli
M.C.A
6) Add external region to corresponding LOV input item by using external property
2) Manually
28
Raaj Nagulapalli
M.C.A
full_name,
FROM FWK_TBX_EMPLOYEES
Shuttle VO to AM
3) Add VO to Query Region by using wizard
Go to QueryRN New Region Using Wizard
Application Module : test.oracle.apps.po.query.server.TestAm
Available View Usage : EmpVO select next
Region Id : EmpQueryDetailsRN
RegionStyle : table next select the Style as messageStyleTest ( to make the fields as read only )
Next finish
Go to EmpQueryDetailsRN set the item Style of the attributes as messageStyledText to set the attributes as read only
Set the property of EmpQueryDetailsRN
Records Displayed : 6 ( as desired )
4) Set the following properties on QueryRN
Construction Mode : resultBasedSearch
Include Simple : True
Include Views Panel : True
Include Advanced Panel : True
To search based on particular field go to EmpQueryDetailsTableRN and set the required Attribute as search allow true
Here EmployeeId and Title are set as search allow true. Hence the following form showing with
29
Raaj Nagulapalli
M.C.A
EmployeeId :
Title :
Type the values and select Go
30
Raaj Nagulapalli
M.C.A
Alias_name
31
Raaj Nagulapalli
M.C.A
pst.setInt(1, 1001);
pst.setString(2, Chandra);
pst.setInt(3, 25);
32
Raaj Nagulapalli
M.C.A
xxxCO.Java coding
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA |
|
All rights reserved.
|
+===========================================================================+
| HISTORY
|
+===========================================================================*/
package aa.oracle.apps.po.aa.webui;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import aa.oracle.apps.po.aa.server.AaaAMImpl;
import oracle.apps.fnd.framework.OAException;
/**
* Controller for ...
*/
public class StudentInsertCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
33
Raaj Nagulapalli
M.C.A
if(ret==0)
{
throw new OAException(" Record Succussfully Inserted", OAException.CONFIRMATION);
}
else if(ret==1)
{
throw new OAException("Sql Exception", OAException.ERROR);
}
else
{
throw new OAException("Unkwon Error", OAException.ERROR);
}
}
}
}
xxxAMImpl.java coding
package aa.oracle.apps.po.aa.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.jbo.server.ApplicationModuleImpl;
import aa.oracle.apps.po.aa.lov.server.SuppDetailsVOImpl;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Connection;
34
Raaj Nagulapalli
M.C.A
35
Raaj Nagulapalli
M.C.A
pst.execute();
// System.out.println("Success");
con.commit();
return 0;
}
catch(SQLException e)
{
return 1;
}
catch( Exception e )
{
return 2;
}
finally
{
try
{
pst.close();
}
catch(SQLException e)
{
return 1;
}
}
} // end of insertRecord Method
} // end of class
In the above statement result set will be stored into the prepared statement
ResultSet rs = pst.getResultSet();
36
Raaj Nagulapalli
M.C.A
Stored Procedure :
It is a set statements at the database server. It contains statements such as SELECT, INSERT, DELETE, UPDATE and also
statements to perform validations
It carries three types of parameters
1) in to pass the value
2) out to return the value
3) in-out to pass as well as to return the value
3) in-out parameter :
cst.registerInOutParameter(4, Types.INT);
cst.setInt(4,2007);
4) Execute the Callable statement
cst.execute();
5) Read the out parameters
37
Raaj Nagulapalli
M.C.A
Types :
It is an interface from java.sql package.
It provides the constants to map with the database data types.
Types.BIT
Types.BOOLEAN
Types.INTEGER Types.BIGINT
Types.SMALLINT
Types.NUMERIC
Types.FLOAT
Types.REAL
Types.DOUBLE
Types.VARCHAR
Types.LONGVARCHAR Types.TIME
Types.DATE
Types.BLOB
Types.CLOB
Types.TINYINT
Types.DECIMAL;
Types.CHAR
Types.TIMESTAMP
Types.VARBINARY
Types.BINARY
Example :
38
Raaj Nagulapalli
M.C.A
Sample procedure to insert records into database and get status back
CREATE OR REPLACE PROCEDURE STUDENT_PROC ( ROLLNO NUMBER, NAME VARCHAR2, AGE NUMBER,
retCode OUT NUMBER )
IS
BEGIN
INSERT INTO STUDENT VALUES ( ROLLNO, NAME, AGE);
COMMIT;
retCode :=0;
EXCEPTION
WHEN OTHERS THEN
retCode:=1;
END;
/
xxAMImpl.java coding
39
Raaj Nagulapalli
M.C.A
package aa.oracle.apps.po.aa.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.jbo.server.ApplicationModuleImpl;
import aa.oracle.apps.po.aa.lov.server.SuppDetailsVOImpl;
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.Types;
40
Raaj Nagulapalli
M.C.A
try
{
con=this.getOADBTransaction().getJdbcConnection();
cst= con.prepareCall("{CALL STUDENT_PROC( ? , ? , ? , ?) }");
cst.setInt(1,lSno);
cst.setString(2,lSname);
cst.setInt(3,lAge);
cst.registerOutParameter(4,Types.NUMERIC);
cst.execute();
int retCode = cst.getInt(4);
return retCode;
}
catch(SQLException e)
{
return 1;
}
catch( Exception e )
{
return 2;
}
finally
{
try
{
cst.close();
}
catch(SQLException e)
{
return 1;
}
}
}
}
41
Raaj Nagulapalli
M.C.A
xxCO.Java coding
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA |
|
All rights reserved.
|
+===========================================================================+
| HISTORY
|
+===========================================================================*/
package aa.oracle.apps.po.aa.webui;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import aa.oracle.apps.po.aa.server.AaaAMImpl;
import oracle.apps.fnd.framework.OAException;
/**
* Controller for ...
*/
public class StudentInsertCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
}
/**
* Procedure to handle form submissions for form elements in
* a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
42
Raaj Nagulapalli
M.C.A
if ( pageContext.getParameter("Submit")!=null)
{
int sno = Integer.parseInt(pageContext.getParameter("Rno"));
String sname = pageContext.getParameter("Sname");
int sage = Integer.parseInt(pageContext.getParameter("Age"));
AaaAMImpl am = ( AaaAMImpl ) pageContext.getApplicationModule(webBean);
int ret = am.insertRecord(sno,sname,sage);
if(ret==0)
{
throw new OAException(" Record Succussfully Inserted", OAException.CONFIRMATION);
}
else if(ret==1)
{
throw new OAException("Sql Exception", OAException.ERROR);
}
else
{
throw new OAException("Unkwon Error", OAException.ERROR);
}
} // end of if checking for submit button
} // end of class.
43
Raaj Nagulapalli
M.C.A
1) Create SupplierSearchPG
Properties
Id : RootRN
Window Title : SearchWindow
Title
: Supplier Search
44
Raaj Nagulapalli
M.C.A
Rows : 2
Columns : 2
Under SupplierDetailsRN,
Create 1) messageTextInput field for SupplierName
2) messageLovInput field for SupplierType
3) messageLovInput field for SupplierNumber
Create Region ( ButtonRN ) for the Buttons ( Submit and Clear ) with properties
region style : rowlayout
Horizontal Alignment : centre
Add Go and Clear with itemStyle as submitButton
pv.VENDOR_TYPE_LOOKUP_CODE
"Vendor Number"
from po_vendors pv
suttle both to AM
45
Raaj Nagulapalli
M.C.A
AM definition : test.oracle.apps.po.supp.lov.server.SupplierSearchAM
Go to SupplierNumberLovRN new table Using Wizard
Application Module : test.oracle.apps.po.supp.lov.server.SupplierSearchAM
Available View Usage : SupplierNumberVO
Regiod Id : SupplierNumberTableRN
Region Style : table
Search Allow : True for SupplierNum
Add to SupplierType
Go to SupplierType
Properties
External Lov : /test/oracle/apps/po/supp/webui/SupplierTypeLovRN
Lov Mappings
Lov Region Item : VendorType
Return Item : SupplierType
Criteria Item : SupplierType
Add to SupplierNumber
5) Create Region ( SiteDetailsRN ) for site details with Region Style as Advanced Table
6) Create VO for SiteDetailsRN inside the .server package.
Query :
select
pv.VENDOR_NAME
Supplier Name",
pv.SEGMENT1
"Supplier Number",
pvsa.VENDOR_SITE_CODE
"Supplier Site",
pv.VENDOR_TYPE_LOOKUP_CODE
pvsa.COUNTRY
"Supplier Type",
"Country Code"
46
Raaj Nagulapalli
M.C.A
from
po_vendors pv,
po_vendor_sites_all pvsa
where
pv.VENDOR_ID = pvsa.VENDOR_ID
and
and
and
7) Go to SupplierSerachPG
Go to SiteTableRN
Properties :
View Instance : SiteDetailsTableVO
Supplier Number
Supplier Site
Supplier Type
Country Code
1) Supplier Name
SiteTableRN New Column
Properties :
Column Id : Column1
Create Item under the Column (SuppName )
Id : SuppName
Item Style : messageStyleText
View Attribute : SupplierName
ColumnHeader New sortableHeader
Properties :
Prompt : Supplier Name
2) Supplier Number
SiteTableRN New Column
Properties :
Column Id : Column2
Create Item under the Column (SuppNum )
Id : SuppNum
Item Style : messageStyleText
View Attribute : SupplierName
47
Raaj Nagulapalli
M.C.A
3) Supplier Site
SiteTableRN New Column
Properties :
Column Id : SuppSite
Create Item under the Column (SuppSite )
Id : SuppSite1
Item Style : messageStyleText
View Attribute : SupplierSite
ColumnHeader New sortableHeader
Properties :
Prompt : Supplier Site
4) Supplier Type
SiteTableRN New Column
Properties :
Column Id : Column4
Create Item under the Column (SuppType)
Id : SuppType1
Item Style : messageStyleText
View Attribute : SupplierType
ColumnHeader New sortableHeader
Properties :
Prompt : Supplier Type
5) Country Code
SiteTableRN New Column
Properties :
Column Id : Column5
Create Item under the Column (Country)
Id : Country
Item Style : messageStyleText
View Attribute : CountryCode
ColumnHeader New sortableHeader
Properties :
Prompt : Country Code
48
Raaj Nagulapalli
M.C.A
AdvancedTable Region
Column
Sortable Header ( Column Names )
Items with messageStyledText
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA
|
+===========================================================================+
| HISTORY
+===========================================================================*/
package ge.oracle.apps.po.supp.server.webui;
import oracle.apps.fnd.common.VersionInfo;
49
Raaj Nagulapalli
M.C.A
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
// newly added package
import ge.oracle.apps.po.supp.server.SupplierAMImpl;
/**
* Controller for ...
*/
public class SupplierSearchCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
}
/**
* Procedure to handle form submissions for form elements in
* a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
//the following is a Newly Added Code
SupplierAMImpl am = ( SupplierAMImpl )pageContext.getApplicationModule(webBean);
if( pageContext.getParameter("Go")!=null)
{
am.setSearchParams(pageContext, webBean);
}
if( pageContext.getParameter("Clear")!=null)
{
am.clearForm(pageContext, webBean); // it is user defined method.
}
50
Raaj Nagulapalli
M.C.A
==================================================
SupplierAMImpl.java ( the code , which is added is being highlighted with bold and big font )
package ge.oracle.apps.po.supp.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.jbo.server.ApplicationModuleImpl;
import ge.oracle.apps.po.supp.lov.server.SupplierTypeLovVoImpl;
import ge.oracle.apps.po.supp.lov.server.SupplierNumberLovVOImpl;
// newly added packages
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageLovInputBean;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
// --------------------------------------------------------------// ---
// ---------------------------------------------------------------
/**
*
* Sample main for debugging Business Components code using the tester.
*/
public static void main(String[] args)
{
launchTester("ge.oracle.apps.po.supp.server", "SupplierAMLocal");
}
51
Raaj Nagulapalli
M.C.A
/**
*
* Container's getter for SupplierTypeLovVo
*/
public SupplierTypeLovVoImpl getSupplierTypeLovVo()
{
return (SupplierTypeLovVoImpl)findViewObject("SupplierTypeLovVo");
}
/**
*
* Container's getter for SupplierNumberLovVO
*/
public SupplierNumberLovVOImpl getSupplierNumberLovVO()
{
return (SupplierNumberLovVOImpl)findViewObject("SupplierNumberLovVO");
}
52
Raaj Nagulapalli
M.C.A
OAMessageTextInputBean
suppNameBean = ( OAMessageTextInputBean )
webBean.findChildRecursive("SupplierName");
suppNameBean.setValue(pageContext, null );
OAMessageLovInputBean
suppNumber =( OAMessageLovInputBean )
webBean.findChildRecursive("SupplierNumber");
suppNumber.setValue(pageContext,null );
vo.setWhereClauseParam(0,"####"); // here # is a junk char to make the condition as false
vo.setWhereClauseParam(1,"####");
vo.setWhereClauseParam(2,"####");
vo.executeQuery();
}
//the above two methods are a newly added methods
}
Search based on where clause parameters
53
Raaj Nagulapalli
M.C.A
1) Create SupplierSearchPG
Properties
Id : RootRN
Window Title : Supplier Search Page
Title
: Supplier Search
Create Region ( ButtonRN ) for the Buttons ( Submit and Clear ) with properties
region style : rowlayout
Horizontal Alignment : centre
Add Go and Clear with itemStyle as submitButton
fs.SUPPLIER_ID,
fst.SITE_NAME,
fst.SUPPLIER_SITE_ID,
fs.ON_HOLD_FLAG,
fs.START_DATE,
fs.END_DATE
FROM
54
Raaj Nagulapalli
M.C.A
WHERE
fs.supplier_id = fst.supplier_id
AND
AND
AND
Value
Supid
${oa. SupplierSerachDetailsVO.SupplierId}
Siteid
${oa. SupplierSerachDetailsVO.SupplierSiteId}
2) Delete
Id : Delete
Item Style : image
Prompt : Delete
Image URI : deleteicon_enabled.gif
Action Type : fireAction
Event : DeleteButtonClick
Parameters : ( called as SPEL parameters )
Name
Value
${oa. SupplierSerachDetailsVO.SupplierSiteId}
55
Raaj Nagulapalli
M.C.A
Supplier Number
Supplier Site
Supplier Type
Country Code
1) Supplier Name
SiteTableRN New Column
Properties :
Column Id : SuppName
Create Item under the Column (SuppName )
Id : SuppName1
Item Style : messageStyleText
View Attribute : SupplierName
ColumnHeader New sortableHeader
Properties :
Prompt : Supplier Name
2) Supplier Number
SiteTableRN New Column
Properties :
Column Id : SuppNum
Create Item under the Column (SuppNum )
Id : SuppNum1
Item Style : messageStyleText
View Attribute : SupplierName
ColumnHeader New sortableHeader
Properties :
Prompt : Supplier Number
3) Supplier Site
SiteTableRN New Column
Properties :
Column Id : SuppSite
Create Item under the Column (SuppSite )
Id : SuppSite1
Item Style : messageStyleText
View Attribute : SupplierSite
ColumnHeader New sortableHeader
56
Raaj Nagulapalli
M.C.A
Properties :
Prompt : Supplier Site
4) Supplier Type
SiteTableRN New Column
Properties :
Column Id : SuppType
Create Item under the Column (SuppType)
Id : SuppType1
Item Style : messageStyleText
View Attribute : SupplierType
ColumnHeader New sortableHeader
Properties :
Prompt : SupplierType
5) Country Code
SiteTableRN New Column
Properties :
Column Id : Country
Create Item under the Column (Country)
Id : Country1
Item Style : messageStyleText
View Attribute : CountryCode
ColumnHeader New sortableHeader
Properties :
Prompt : Country Code
57
Raaj Nagulapalli
M.C.A
AdvancedTable Region
Column
Sortable Header ( Column Names )
Items with messageStyledText
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA
|
+===========================================================================+
| HISTORY
+===========================================================================*/
package ge.oracle.apps.po.supp.server.webui;
58
Raaj Nagulapalli
M.C.A
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
// newly added package
import ge.oracle.apps.po.supp.server.SupplierAMImpl;
/**
* Controller for ...
*/
public class SupplierSearchCO extends OAControllerImpl
{
public static final String RCS_ID="$Header$";
public static final boolean RCS_ID_RECORDED =
VersionInfo.recordClassVersion(RCS_ID, "%packagename%");
/**
* Layout and page setup logic for a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processRequest(pageContext, webBean);
}
/**
* Procedure to handle form submissions for form elements in
* a region.
* @param pageContext the current OA page context
* @param webBean the web bean corresponding to the region
*/
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
//the following is a Newly Added Code
SupplierAMImpl am = ( SupplierAMImpl )pageContext.getApplicationModule(webBean);
if( pageContext.getParameter("Go")!=null)
{
am.setSearchParams(pageContext, webBean);
}
if( pageContext.getParameter("Clear")!=null)
{
am.clearForm(pageContext, webBean);
}
//the above is a Newly Added Code
59
Raaj Nagulapalli
M.C.A
}
}
==================================================
SupplierAMImpl.java ( the code , which is added is being highlighted with bold and big font )
package ge.oracle.apps.po.supp.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.jbo.server.ApplicationModuleImpl;
import ge.oracle.apps.po.supp.lov.server.SupplierTypeLovVoImpl;
import ge.oracle.apps.po.supp.lov.server.SupplierNumberLovVOImpl;
// newly added packages
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageLovInputBean;
import oracle.apps.fnd.framework.webui.beans.message.OAMessageTextInputBean;
// --------------------------------------------------------------// ---
// ---------------------------------------------------------------
/**
*
* Sample main for debugging Business Components code using the tester.
*/
public static void main(String[] args)
{
launchTester("ge.oracle.apps.po.supp.server", "SupplierAMLocal");
}
60
Raaj Nagulapalli
M.C.A
/**
*
* Container's getter for SupplierTypeLovVo
*/
public SupplierTypeLovVoImpl getSupplierTypeLovVo()
{
return (SupplierTypeLovVoImpl)findViewObject("SupplierTypeLovVo");
}
/**
*
* Container's getter for SupplierNumberLovVO
*/
public SupplierNumberLovVOImpl getSupplierNumberLovVO()
{
return (SupplierNumberLovVOImpl)findViewObject("SupplierNumberLovVO");
}
61
Raaj Nagulapalli
M.C.A
suppNameBean.setValue(pageContext, null );
OAMessageLovInputBean
suppNumber =( OAMessageLovInputBean )
webBean.findChildRecursive("SupplierNumber");
suppNumber.setValue(pageContext,null );
vo.setWhereClauseParam(0,"####"); // here # is a junk char to make the condition as false
vo.setWhereClauseParam(1,"####");
vo.setWhereClauseParam(2,"####");
vo.executeQuery();
}
//the above two methods are a newly added methods
}
Steps to Register a Page with Oracle apps server
1) Take the package folder from the myclasses folder
C:\Jdev\jdevhome\jdev\myclasses name of the package ( test.oracle.apps.po.hello.webui )
Copy the test folder from the myclasses
62
Raaj Nagulapalli
M.C.A
2) upload ( Paste ) the Folder into the following location of Apps Server
D:\oracle\viscomn\java
3) prepare the following script
D:\Jdev\jdevhome\jdev\myprojects\test\oracle\apps\po\hello\webui\HelloPG.xml -username apps -password apps -rootdir
D:\jdev\jdevhome\jdev\myprojects\ -dbconnection
"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=APPS.ora.com)(PORT=1521))(CONNECT_DATA=(SID=VIS)))"
4) Run the Script at Command Prompt
C:\Jdev\jdevbin\jdev\bin > import D:\Jdev\jdevhome\jdev\myprojects\test\oracle\apps\po\hello\webui\HelloPG.xml username apps -password apps -rootdir D:\jdev\jdevhome\jdev\myprojects\ -dbconnection
"(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=APPS.ora.com)(PORT=1521))(CONNECT_DATA=(SID=VIS)))"
63
Raaj Nagulapalli
M.C.A
Specify the function Name in the following and copy the User Function Name: HELLOPGFUNCTION into notepad )
64
Raaj Nagulapalli
M.C.A
OA.jsp?page=/test/oracle/apps/po/hello/webui/HelloPG
Save the above
65
Raaj Nagulapalli
M.C.A
66
Raaj Nagulapalli
M.C.A
67
Raaj Nagulapalli
M.C.A
Attach the User Function Name ( HELLOPGFUNCTION, which was taken into notepad ) to Menu as shown below
68
Raaj Nagulapalli
M.C.A
69
Raaj Nagulapalli
M.C.A
70
Raaj Nagulapalli
M.C.A
When Click on AddAnotherRow Button , it should display following to add the new record.
71
Raaj Nagulapalli
M.C.A
In the above SupplierId Value should be populated from the Database Sequence automatically.
supp.oracle.apps.po.create.server
SupplierId ( messageStyledText , since its value will be populated from the sequence )
SupplierName ( messageTextInput )
StartDate
( Date Type )
EndDate
( Date Type )
72
Raaj Nagulapalli
M.C.A
1) Id : submit
ItemStyle : submittButton
2) Id : back
ItemStyle : submittButton
3) place the spacer between the buttons.
3) Create EO under schema.server for Supplier Details ( since inserting into database )
1) create supp.oracle.apps.po.create.schema.server package
2) create EO under the above package
Rt.Click on supp.oracle.apps.po.create.schema.server Package and create EO
New Entity Object Next
Name : SupplierTableEO
Package : supp.oracle.apps.po.create.schema.server
Schema Object : FWK_TBX_SUPPLIERS
Database Schema : APPS
Tables (Check ) Views ( No Check ) Synonyms ( No Check )
Next
Entity Attributes ( displayed )
Next Next Next Next Finish
Snapshots( No Check )
4) Create VO for Supplier Details, based on above EO (SupplierTableEO ) under the .server package
Rt.Click on supp.oracle.apps.po.create.server
New View Object Next
package
Name : SupplierTableVO
Package : supp.oracle.apps.po.create.server
Available :
supp.oracle.apps.po.create.schema.server
SupplierTableEO ( select ) and shuttle to right
Next
>> ( shuttle all the fields or required fields )
Next Next
Check Expert Mode ( to make the query as editable )
Check Test ( as desired )
Next it shows all Query Columns and View Attributes
Next Next Finish
Note : the above create VO is called as EO based VO, which can be used to perform DML operations through EO
5) Shuttel VO to AM ( SupplierAM )
6) Go to Page and SupplierRN
Go to item SupplierId
Properties :
73
Raaj Nagulapalli
M.C.A
supp.oracle.apps.po.create.schema.server
Name : SiteTableEO
Package : supp.oracle.apps.po.create.schema.server
Schema Object : FWK_TBX_SUPPLIER_SITES
Database Schema : APPS
Next Next Next Next Next Finish
7) Create VO for Site Details, based on above EO (SiteTableEO) under the .server package
Rt.Click on supp.oracle.apps.po.create.server
New View Object Next
Name : SiteTableVO
Package : supp.oracle.apps.po.create.server
package
Available :
supp.oracle.apps.po.create.schema.server
SiteTableEO ( select ) and shuttle to right
Next
>> ( shuttle all the fields or required fields )
Next Next
Check Expert Mode Next Next Next Finish
9) Go To SupplierCreationPG Structure
Go To RootRN and create the Region for Site Details
Id: SiteDetailsRN
Region Style : advancedTable
View Instance : SiteTableVO
Width : 75%
Add the following columns to advanced table Region ( SiteDetailsRN )
1) Coulmn1
Rt.Click Item
Id: SiteName ( messageTextInput )
74
Raaj Nagulapalli
M.C.A
4) Coulmn4
Rt.Click Item
Id: CarrierCode ( messageLovInput )
View Attribute : CarrierCode
ColumnHeader Rt.Click
SortableHeader
Prompt : CarrierCode
5) Coulmn5
Rt.Click Item
Id: PurchaseSiteFlag ( messageChoice )
View Attribute : PurchasingSiteFlag
ColumnHeader Rt.Click
SortableHeader
Prompt : PurchaseSiteFlag
6) Column6
Rt.Click Item
Id: Edate ( messageTextInput : Date type )
View Attribute :EndDate
ColumnHeader Rt.Click
SortableHeader
Prompt : EndDate
11 ) create VOs for Address ( Column2 ), PaymentTerms ( Column3 ), CarrierCode ( Column4) and
Lov VOs must be created inside of lov.server package.
Create supp.oracle.apps.po.create.lov.server
1) Address ( Column2 )
Name : AdressDetailsLovVO
Package : supp.oracle.apps.po.create.lov.server
Query : select address_id, address_name from FWK_TBX_ADDRESSES
75
Raaj Nagulapalli
M.C.A
2) PaymentTerms ( Column3 )
Name : PaymentTermsLovVO
Package : supp.oracle.apps.po.create.lov.server
Query :
select lookup_code, meaning from FWK_TBX_LOOKUP_CODES_VL where lookup_type =
'FWK_TBX_PAYMENT_TERMS'
3) CarrierCode ( Column4)
Name : CarrierCodeLovVO
Query :
select lookup_code, meaning from
FWK_TBX_LOOKUP_CODES_VL
where lookup_type = 'FWK_TBX_CARRIER'
1) AdressDetailsLovVO,
Create Region ( Rt.Click on .jpr and create )
Name : AdressDetailsLovRN
Package : supp.oracle.apps.po.create.webui
Style : LostOfValues
Scope : public
AM Defintion : SupplierLovAM
Add VO (AdressDetailsLovVO ) to AdressDetailsLovRN Rt.Click
New Table Using Wizard
Available View Use : AddressDetailsLovVO
Region Id : AdressDetailsLovTableRN
Address Id
Search Allowed : true
2) PaymentTermsLovVO
Create Region ( Rt.Click on .jpr and create )
Name : PaymentTermsLovRN
Package : supp.oracle.apps.po.create.webui
Style : LostOfValues
Scope : public
AM Defintion : SupplierLovAM
Add VO (PaymentTermsLovVO ) to PaymentTermsLovRN Rt.Click
New Table Using Wizard
Available View Use : PaymentTermsLovVO
Region Id : PaymentTermsLovTableRN
LookupCode Search Allowed : true
76
Raaj Nagulapalli
M.C.A
3) CarrierCodeLovVO
Create Region ( Rt.Click on .jpr and create )
Name : CarrierCodeLovRN
Package : supp.oracle.apps.po.create.webui
Style : LostOfValues
Scope : public
AM Defintion : SupplierLovAM
Add VO (CarrierCodeLovVO) to CarrierCodeLovRN Rt.Click
New Table Using Wizard
Available View Use : CarrierCodeLovVO
Region Id : CarrierCodeLovTableRN
LookupCode Search Allowed : true
14) Attach the above external regions to lov items 1) Address 2) PaymentTerms 3) CarrierCode
1) Column2 ( Address )
Address item
Properties :
External Lov : /supp/oracle/apps/po/create/webui/AdressDetailsLovRN
Lov Map
Lov Region Item : AddressId
Return Item : Address
Criteria Item : Address
2) Column3 (PaymentTerms )
PaymentTerms item
Properties :
External Lov : /supp/oracle/apps/po/create/webui/PaymentTermsLovRN
Lov Map
Lov Region Item : LookupCode
Return Item : PaymentTerms
Criteria Item : PaymentTerms
3) Column4 (CarrierCode )
CarrierCode item
Properties :
External Lov : /supp/oracle/apps/po/create/webui/CarrierCodeLovRN
Lov Map
Lov Region Item : LookupCode
Return Item : CarrierCode
Criteria Item : CarrierCode
77
Raaj Nagulapalli
M.C.A
16) Go to Page and add the PurchaseSiteFlagVO to Choice item PurchaseSiteFlag ( Column5)
Properties :
Picklist View instance : PurchaseSiteFlagVO
Picklist Display Attribute : Meaning
Picklist Value Attribute
: LookupCode
View Attribute : PurchasingSiteFlag
19) Develop the controller for Adding new Row and Submitting .
Name : SupplierCreateCO
Code inside the SupplierCreationCO.java
/*===========================================================================+
| Copyright (c) 2001, 2003 Oracle Corporation, Redwood Shores, CA, USA |
|
All rights reserved.
|
+===========================================================================+
| HISTORY
|
+===========================================================================*/
package chand.oracle.apps.po.supp.server.webui;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.webui.OAControllerImpl;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
78
Raaj Nagulapalli
M.C.A
pageContext.setForwardURL("OA.jsp?page=/chand/oracle/apps/po/supp/webui/SupplierCreationPG",
null,
OAWebBeanConstants.KEEP_MENU_CONTEXT,
null,
79
Raaj Nagulapalli
M.C.A
null,
false, //RetainAM
null,
OAWebBeanConstants.IGNORE_MESSAGES);
}
am.supplierTableBlankRowLogic();
//the above is newly added code
}
}
The code inside the
SuppAMImpl.java
package chand.oracle.apps.po.supp.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.jbo.server.ApplicationModuleImpl;
import chand.oracle.apps.po.supp.poplist.server.PurchaseSiteFlagVOImpl;
// newly added packages
import oracle.jbo.Row;
import oracle.jbo.domain.Number;
import oracle.apps.fnd.framework.OAException;
// --------------------------------------------------------------// --- File generated by Oracle Business Components for Java.
// ---------------------------------------------------------------
/**
*
* This is the default constructor (do not remove)
*/
public SuppAMImpl()
{
}
/**
*
* Sample main for debugging Business Components code using the tester.
*/
public static void main(String[] args)
{
launchTester("chand.oracle.apps.po.supp.server", "SuppAMLocal");
}
/**
*
80
Raaj Nagulapalli
M.C.A
81
Raaj Nagulapalli
M.C.A
82
Raaj Nagulapalli
M.C.A
83
Raaj Nagulapalli
M.C.A
Extract XLF file for a particular directory (For arabic language, for a different language, change accordingly).
<JDEV_DIR>\jdevbin\jdev\bin\xliffextract /xxt/oracle/apps/pon/registration/webui -includeSubpackages -mmd_dir
D:\Jdev1150CU2\jdevbin\jdev\lib\ext\jrad\config\mmd -root D:\Temp\XLIF\registration -xliff_dir
D:\Temp\XLIF\registration -source db -username apps -password <APPS_PASSWORD> -dbconnection
"(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=<DB_HOSTNAME>)(PORT=<DB_PORT>))(CONNECT_DATA=(SID=<DB_
SID>)))" -languages ar-AE
Extract XLF file for a particular file(For arabic language, for a different language, change accordingly).
<JDEV_DIR>\jdevbin\jdev\bin\xliffextract
/oracle/apps/pon/outcome/creation/webui/customizations/site/0/ponCreatePOPG -root D:\temp -xliff_dir D:\temp mmd_dir <JDEV_HOME>\jdevbin\jdev\lib\ext\jrad\config\mmd\ -source db -username apps -password
<APPS_PASSWORD> -dbconnection " (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL=
TCP)(HOST = <DB_HOSTNAME>)(PORT = <DB_PORT>)) ) (CONNECT_DATA = (SERVICE_NAME = <DB_SID>)
) )" -languages ar-AE
7. When you have the Substitutions upload the JPX using the following script from the UNIX prompt,
java oracle.jrad.tools.xml.importer.JPXImporter $CUST_TOP/TestProject.jpx -username $APPS_NAME -password
$APPS_PASSWORD -dbconnection
"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=<DB_HOSTNAME>)(Port=<DB_PORT>))
(CONNECT_DATA=(SID=<DB_SID>)))"
8. To find the personalizations for a particular object or for the whole system or for a particular package.
Login with the user who has Functional Administrator responsibility, you search the Object you have substituted
(Functional Administrator=>Personalization=>Import/Export).
Search with a particular path, Eg. /oracle/apps/icx will give all the personalization under the path.
If the the profile option FND: Personalization Document Root Path set properly, the personalization can be exported to
the system directly.
*************************************
By
Raaj Nagulapalli
M.C.A
rnagulapalli@gmail.com
+919492949048
84
Raaj Nagulapalli
M.C.A