About :Oracle Apps(E-Business Suite), Oracle Application Framework (OAF), Application Development Framework (ADF) / ADF Mobile
Thursday, October 27, 2016
OAF Page Controller Flow , When Multiple CO's are there.
Events are handled from mainRN to child RN.
Following is the log snippet for the same.
--Process Request Method
PR Method of Main Page RN
PR Method of Shared RN
-- Process Form Request Method
PFR Method of Main Page RN
PFR Method of Shared RN
Events are handled from mainRN to child RN.
Following is the log snippet for the same.
--Process Request Method
PR Method of Main Page RN
PR Method of Shared RN
-- Process Form Request Method
PFR Method of Main Page RN
PFR Method of Shared RN
Friday, September 30, 2016
OAF- Query to list all personalizations
Following query can be used to list all the personalizations of OAF using MDS Repository.
**But the problem with the below one, we cant be sure personalizations which are done by the business and as well as personalizations (vanilla) which are provided by oracle
*CREATED_BY column does not have any info any significance to validate if it is provided by oracle or done by business.
*business means : customization's done by developer for custom requirements.
select
jp.created_by,
jp.path_name, jp.path_docid
, jdr_mds_internal.getdocumentname(jp.path_docid) page_path
from jdr_paths jp where 1=1
AND jp.path_type='DOCUMENT'
AND jdr_mds_internal.getdocumentname(jp.path_docid) like '/oracle/apps/%custo%'
Monday, July 18, 2016
Oracle AP Invoice Aging Report Query
------------------------------------------------
SELECT org_name,
vendor_name,
vendor_number,
vendor_site_details,
invoice_number,
invoice_date,
gl_Date,
invoice_type,
due_date,
past_due_days,
amt_due_remaining,
CASE
WHEN past_due_days >= -999 AND past_due_days < 0
THEN
amt_due_remaining
ELSE
0
END
CURRENT_BUCKET,
CASE
WHEN past_due_days >= 0 AND past_due_days <= 30
THEN
amt_due_remaining
ELSE
0
END
BUCKET_0_30,
CASE
WHEN past_due_days > 30 AND past_due_days <= 60
THEN
amt_due_remaining
ELSE
0
END
BUCKET_31_60,
CASE
WHEN past_due_days > 60 AND past_due_days <= 90
THEN
amt_due_remaining
ELSE
0
END
BUCKET_61_90,
CASE
WHEN past_due_days > 90 AND past_due_days <= 120
THEN
amt_due_remaining
ELSE
0
END
BUCKET_91_120,
CASE
WHEN past_due_days > 120 AND past_due_days <= 999999
THEN
amt_due_remaining
ELSE
0
END
GREATER_THAN_120
FROM (SELECT hou.name org_name,
pv.vendor_name vendor_name,
pv.segment1 vendor_number,
pvs.vendor_site_code || ' ' || pvs.city || ' ' || state
vendor_site_details,
i.invoice_num invoice_number,
i.payment_status_flag,
i.invoice_type_lookup_code invoice_type,
i.invoice_date Invoice_Date,
i.gl_date Gl_Date,
ps.due_date Due_Date,
(CEIL (SYSDATE - ps.due_date)) past_due_days, -- DAYS_DUE,
DECODE (
i.invoice_currency_code,
'USD',
DECODE (
0,
0,
ROUND (
( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1)),
2
),
ROUND( ( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1))
/ 0)
* 0
),
DECODE (
i.exchange_rate,
NULL,
0,
DECODE (
0,
0,
ROUND (
( (NVL (ps.amount_remaining, 0)
/ (NVL (ps.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1)),
2
),
ROUND( ( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1))
/ 0)
* 0
)
)
)
amt_due_remaining
FROM ap_payment_schedules_all ps,
ap_invoices_all i,
ap_suppliers pv,
ap_supplier_sites_all pvs,
ap_lookup_codes alc1,
hr_operating_units hou
WHERE i.invoice_id = ps.invoice_id
AND i.vendor_id = pv.vendor_id
AND i.vendor_site_id = pvs.vendor_site_id
AND i.org_id = hou.organization_id
AND i.cancelled_date IS NULL
--AND ps.amount_remaining = 0
AND (NVL (ps.amount_remaining, 0)
* NVL (i.exchange_rate, 1)) != 0
AND i.payment_status_flag IN ('N', 'P')
AND alc1.lookup_type(+) = 'INVOICE TYPE'
AND alc1.lookup_code(+) = i.invoice_type_lookup_code
--and i.INVOICE_NUM ='358908411'
AND ap_invoices_pkg.get_approval_status (
i.invoice_id,
i.invoice_amount,
ps.payment_status_flag,
invoice_type_lookup_code
) in('APPROVED','NEEDS REAPPROVAL'))
-- AND i.org_id = fnd_profile.VALUE ('ORG_ID'))
where 1=1
ANd vendor_name IN ( 'Advantage Corp' ,'Capp Consulting' )
and invoice_number IN ('18-JAN-2007','AC0904','22-JUN-2007','25-JUL-2007')
ORDER BY 2;
------------------------------------------------
SELECT org_name,
vendor_name,
vendor_number,
vendor_site_details,
invoice_number,
invoice_date,
gl_Date,
invoice_type,
due_date,
past_due_days,
amt_due_remaining,
CASE
WHEN past_due_days >= -999 AND past_due_days < 0
THEN
amt_due_remaining
ELSE
0
END
CURRENT_BUCKET,
CASE
WHEN past_due_days >= 0 AND past_due_days <= 30
THEN
amt_due_remaining
ELSE
0
END
BUCKET_0_30,
CASE
WHEN past_due_days > 30 AND past_due_days <= 60
THEN
amt_due_remaining
ELSE
0
END
BUCKET_31_60,
CASE
WHEN past_due_days > 60 AND past_due_days <= 90
THEN
amt_due_remaining
ELSE
0
END
BUCKET_61_90,
CASE
WHEN past_due_days > 90 AND past_due_days <= 120
THEN
amt_due_remaining
ELSE
0
END
BUCKET_91_120,
CASE
WHEN past_due_days > 120 AND past_due_days <= 999999
THEN
amt_due_remaining
ELSE
0
END
GREATER_THAN_120
FROM (SELECT hou.name org_name,
pv.vendor_name vendor_name,
pv.segment1 vendor_number,
pvs.vendor_site_code || ' ' || pvs.city || ' ' || state
vendor_site_details,
i.invoice_num invoice_number,
i.payment_status_flag,
i.invoice_type_lookup_code invoice_type,
i.invoice_date Invoice_Date,
i.gl_date Gl_Date,
ps.due_date Due_Date,
(CEIL (SYSDATE - ps.due_date)) past_due_days, -- DAYS_DUE,
DECODE (
i.invoice_currency_code,
'USD',
DECODE (
0,
0,
ROUND (
( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1)),
2
),
ROUND( ( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1))
/ 0)
* 0
),
DECODE (
i.exchange_rate,
NULL,
0,
DECODE (
0,
0,
ROUND (
( (NVL (ps.amount_remaining, 0)
/ (NVL (ps.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1)),
2
),
ROUND( ( (NVL (ps.amount_remaining, 0)
/ (NVL (i.payment_cross_rate, 1)))
* NVL (i.exchange_rate, 1))
/ 0)
* 0
)
)
)
amt_due_remaining
FROM ap_payment_schedules_all ps,
ap_invoices_all i,
ap_suppliers pv,
ap_supplier_sites_all pvs,
ap_lookup_codes alc1,
hr_operating_units hou
WHERE i.invoice_id = ps.invoice_id
AND i.vendor_id = pv.vendor_id
AND i.vendor_site_id = pvs.vendor_site_id
AND i.org_id = hou.organization_id
AND i.cancelled_date IS NULL
--AND ps.amount_remaining = 0
AND (NVL (ps.amount_remaining, 0)
* NVL (i.exchange_rate, 1)) != 0
AND i.payment_status_flag IN ('N', 'P')
AND alc1.lookup_type(+) = 'INVOICE TYPE'
AND alc1.lookup_code(+) = i.invoice_type_lookup_code
--and i.INVOICE_NUM ='358908411'
AND ap_invoices_pkg.get_approval_status (
i.invoice_id,
i.invoice_amount,
ps.payment_status_flag,
invoice_type_lookup_code
) in('APPROVED','NEEDS REAPPROVAL'))
-- AND i.org_id = fnd_profile.VALUE ('ORG_ID'))
where 1=1
ANd vendor_name IN ( 'Advantage Corp' ,'Capp Consulting' )
and invoice_number IN ('18-JAN-2007','AC0904','22-JUN-2007','25-JUL-2007')
ORDER BY 2;
Wednesday, July 13, 2016
Oracle ERP Cloud - Invoke HCM REST WebService Using CURL
URL For List of HCM REST WebServices : https://docs.oracle.com/cloud/latest/jcs_gs/JSRMR/Use%20cURL.html
Command to invoke REST WebService
curl -i -u "<username>:<password>" -X GET https://<host>:<port>/hcmCoreApi/resources/latest/emps/Example : curl -k -i -u "CASEY.BROWN:Password" -X GET https://rws2-<xxno>-hcm.oracledemos.com/hcmCoreApi/resources/11.1.11/emps/
curl -k -i -u "CASEY.BROWN:Password" -X GET https://rws2-<xxno>-hcm.oracledemos.com/hcmCoreApi/resources/11.1.11/emps//?q=PersonNumber=715
Following is the output :
Wednesday, July 22, 2015
SOAP / REST these are the technologies required for the Fusion Technical Consultants.
Iam a newbie in this area : i just found following are the simple samples provided by the developers.
Expose ADB BC (EO,V) as REST WebService
http://waslleysouza.com.br/en/2014/10/expose-adf-bc-restful-web-service/
Entity Based REST WebService
http://deepakcs.blogspot.in/2013/09/jdeveloper-12c-ejb-with-rest-webservice.htm
Wednesday, May 13, 2015
Way to Fusion
The following posts lists down some set of links which are useful during Fusion Personalization.
Adding Attachments :
https://blogs.oracle.com/fadevrel/entry/getting_started_with_interacting_with
Tuesday, March 10, 2015
Monday, March 09, 2015
OAF - Parameterized Popup
In this article, i will show you how to implement a parameterized popUp in OAF Page.
Region Style : PopUp is available only from R12.1.3 Ebiz.
Iam considering the below requirement to work on the functionality of popUp region.
BC4J Object List :
EmpVO
DeptVO --> parameterized with DeptID
Pages:
HelloPopUPPG.xml (Shows the employee details)
HelloPopUpCO
DeptRN.xml (Shows the Dept Details) -- Shared Region
Final Result
In this article, i will show you how to implement a parameterized popUp in OAF Page.
Region Style : PopUp is available only from R12.1.3 Ebiz.
Iam considering the below requirement to work on the functionality of popUp region.
BC4J Object List :
EmpVO
DeptVO --> parameterized with DeptID
Pages:
HelloPopUPPG.xml (Shows the employee details)
HelloPopUpCO
DeptRN.xml (Shows the Dept Details) -- Shared Region
Final Result
Sunday, March 01, 2015
OAF Integration with XML Report (Merge Multiple VO's)
In this sample, you will get to know how to merge multiple VO's into single XMLDocument and pass this input to RTF Template using : TemplateHelpder API to get the desired output.
RTF Template

Make sure you get the xdo files from $JAVA_TOP and move them in your myclasses of Jdeveloper
Below is the logic of the controller for the buttons in the page :
/*===========================================================================+
| Copyright (c) 2001, 2005 Oracle Corporation, Redwood Shores, CA, USA |
| All rights reserved. |
+===========================================================================+
| HISTORY |
+===========================================================================*/
package xxsri.oracle.apps.fnd.webui;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import oracle.apps.fnd.common.VersionInfo;
import oracle.apps.fnd.framework.OAException;
import oracle.apps.fnd.framework.server.OADBTransactionImpl;
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.xdo.oa.schema.server.TemplateHelper;
import oracle.cabo.ui.data.DataObject;
import oracle.jbo.XMLInterface;
import oracle.xml.parser.v2.XMLDOMException;
import oracle.xml.parser.v2.XMLDocument;
import oracle.xml.parser.v2.XMLElement;
import oracle.xml.parser.v2.XMLNode;
import xxsri.oracle.apps.fnd.server.DeptVOImpl;
import xxsri.oracle.apps.fnd.server.EmpVOImpl;
import xxsri.oracle.apps.fnd.server.XXSriBizzServicesAMImpl;
/**
* Controller for ...
*/
public class XMLReportWithMultipleVOCO 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);
if(pageContext.getParameter("generateXML")!=null)
{
getXMLDocument(pageContext,webBean);
}
//generateReport
else if (pageContext.getParameter("generateReport")!=null)
{
XMLDocument xmlDocObj = getXMLDocument(pageContext,webBean);
System.out.println("GEnerate Report Is Clicked");
// Get the HttpServletResponse object from the PageContext. The report output is written to HttpServletResponse.
DataObject sessionDictionary = (DataObject)pageContext.getNamedDataObject("_SessionParameters");
HttpServletResponse response = (HttpServletResponse)sessionDictionary.selectValue(null,"HttpServletResponse");
try {
ServletOutputStream os = response.getOutputStream();
// Set the Output Report File Name and Content Type
String contentDisposition = "attachment;filename=PerPopleData.html";
response.setHeader("Content-Disposition",contentDisposition);
response.setContentType("application/html");
// Get the Data XML File as the XMLNode
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
xmlDocObj.print(outputStream);
System.out.println("Output Stream-->");
System.out.println(outputStream.toString());
ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
ByteArrayOutputStream outputStreamFle = new ByteArrayOutputStream();
//Generate the PDF Report.
//Process Template
TemplateHelper.processTemplate(
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getAppsContext(),
"FND",//APPLICATION SHORT NAME
"XXCUS_EMP_DEPT_REP", //TEMPLATE_SHORT_CODE
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getLanguage(),
((OADBTransactionImpl)pageContext.getApplicationModule(webBean).getOADBTransaction()).getUserLocale().getCountry(),
inputStream,
TemplateHelper.OUTPUT_TYPE_HTML,
null,
outputStreamFle);
//TemplateHelper.
// Write the PDF Report to the HttpServletResponse object and flush.
byte[] b = outputStreamFle.toByteArray();
response.setContentLength(b.length);
os.write(b, 0, b.length);
os.flush();
os.close();
outputStreamFle.flush();
outputStreamFle.close();
}
catch(Exception e)
{
response.setContentType("text/html");
throw new OAException(e.getMessage(), OAException.ERROR);
}
pageContext.setDocumentRendered(true);
}
}
public XMLDocument getXMLDocument(OAPageContext pageContext, OAWebBean webBean)
{
XMLDocument exportDoc = new XMLDocument();
XMLElement root = (XMLElement)exportDoc.createElement("RootNode");
XXSriBizzServicesAMImpl am = (XXSriBizzServicesAMImpl)pageContext.getApplicationModule(webBean);
XMLNode adbpaXMLNode = getEmpVOXMLData(pageContext,webBean);
XMLNode sysDateXMLNode =getDeptVOXMLData(pageContext,webBean);
appendChild(exportDoc,root,adbpaXMLNode);
appendChild(exportDoc,root,sysDateXMLNode);
exportDoc.appendChild(root);
ByteArrayOutputStream bo = new ByteArrayOutputStream() ;
try
{
exportDoc.print(bo);
}
catch(Exception ex)
{
ex.printStackTrace();
}
System.out.println("Final XML Docu-->"+ bo.toString());
return exportDoc ;
}
public XMLNode getEmpVOXMLData(OAPageContext pageContext, OAWebBean webBean)
{
XXSriBizzServicesAMImpl am = (XXSriBizzServicesAMImpl)pageContext.getApplicationModule(webBean);
EmpVOImpl vo = am.getEmpVO1();
vo.executeQuery();
XMLNode xmlNode = (XMLNode) vo.writeXML(1, XMLInterface.XML_OPT_ALL_ROWS);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
System.out.println("getEmpVOXMLData"+ vo.getRowCount());
return xmlNode;
}
public XMLNode getDeptVOXMLData(OAPageContext pageContext, OAWebBean webBean)
{
XXSriBizzServicesAMImpl am = (XXSriBizzServicesAMImpl)pageContext.getApplicationModule(webBean);
DeptVOImpl vo = am.getDeptVO1();
vo.executeQuery();
XMLNode xmlNode = (XMLNode) vo.writeXML(1, XMLInterface.XML_OPT_ALL_ROWS);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
System.out.println("getDeptVOXMLData"+ vo.getRowCount());
return xmlNode;
}
public void appendChild(XMLDocument doc, XMLNode parent, XMLNode child)
{
try
{
if(parent!=null)
parent.appendChild(child);
else
doc.appendChild(child);
}
catch(XMLDOMException e)
{
try{
doc.adoptNode(child);
if(parent!=null)
parent.appendChild(doc.adoptNode(child));
else
doc.appendChild(child);
}
catch(Exception ex) {}
}
}
}
Thursday, February 26, 2015
Auto-Repeating Layout (ARL) - in OAF
One of the very good feature to display a region multiple times.
As most of them aware of Table/ HGrid to display multiple records, but there is also a container to show the data repeatedly based on the VO applied.
Please find the below screenshot for same.
PG.xml Properties
One of the very good feature to display a region multiple times.
As most of them aware of Table/ HGrid to display multiple records, but there is also a container to show the data repeatedly based on the VO applied.
Please find the below screenshot for same.
PG.xml Properties
Monday, February 23, 2015
Attribute Level Validations in OAF
You Can use the below method in EOImpl
protected void doDML(int operation, TransactionEvent e) {
super.doDML(operation, e);
String value= getEmail();
if (value==null)
{
throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
getEntityDef().getFullName(), // entity name
getPrimaryKey(), // entity primary key
"Email", // attribute Name
value, // bad attribute value
"FND", // message application short name
"XXCUS_EMAIL_REQ"); //
}
}
You Can use the below method in EOImpl
protected void doDML(int operation, TransactionEvent e) {
super.doDML(operation, e);
String value= getEmail();
if (value==null)
{
throw new OAAttrValException(OAException.TYP_ENTITY_OBJECT,
getEntityDef().getFullName(), // entity name
getPrimaryKey(), // entity primary key
"Email", // attribute Name
value, // bad attribute value
"FND", // message application short name
"XXCUS_EMAIL_REQ"); //
}
}
Invoking Workflow From OAF Page
Use the below method in the processFormRequest , on based on the button event.
if(pageContext.getParameter("submit")!=null)
{
String PItemType = "XXHRWF";
String PProcess = "XXPROC";
oracle.jbo.domain.Number pitekKeyNo =
pageContext.getApplicationModule(webBean).getSequenceValue("XX_TEST_SEQ");
String PItemKey = pitekKeyNo.toString(); // This can be a random item key generated
OANavigation wf = new OANavigation();
// Now create Workflow Process
wf.createProcess(pageContext, PItemType, PProcess, PItemKey);
// Set Sales Order Number
wf.setItemAttrText(pageContext, PItemType, PItemKey,"XXATTRIB", "OPERATIONS");
// Start Workflow Process
wf.startProcess(pageContext, PItemType, PProcess, PItemKey);
}
Use the below method in the processFormRequest , on based on the button event.
if(pageContext.getParameter("submit")!=null)
{
String PItemType = "XXHRWF";
String PProcess = "XXPROC";
oracle.jbo.domain.Number pitekKeyNo =
pageContext.getApplicationModule(webBean).getSequenceValue("XX_TEST_SEQ");
String PItemKey = pitekKeyNo.toString(); // This can be a random item key generated
OANavigation wf = new OANavigation();
// Now create Workflow Process
wf.createProcess(pageContext, PItemType, PProcess, PItemKey);
// Set Sales Order Number
wf.setItemAttrText(pageContext, PItemType, PItemKey,"XXATTRIB", "OPERATIONS");
// Start Workflow Process
wf.startProcess(pageContext, PItemType, PProcess, PItemKey);
}
Sunday, February 15, 2015
Playing with conversion of dates
Frequently required script
Following code is used for the purpose of converting : Date Input in : String format into : java.sql.Date
private java.sql.Date stringToDate(String dateS) {
java.sql.Date sqlStartDate = null;
if (dateS != null && !"".equals(dateS)) {
String dateFormat = "yyyy-MM-dd";
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
java.util.Date parsedDate1 = null;
{
try {
parsedDate1 = df.parse(dateS);
} catch (ParseException e) {
// TODO
}
sqlStartDate = new java.sql.Date(parsedDate1.getTime());
}
}
return sqlStartDate;
}
Following scrip tis used to convert String into oracle.jbo.domain.Date
private Date stringToDate(String dateS)
{
Date date=null;
if(dateS!=null && !"".equals(dateS) )
{
String dateFormat = "dd-MMM-yyyy";
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
java.util.Date parsedDate1=null;
try
{
parsedDate1 = df.parse(dateS);
}
catch(ParseException e)
{
e.printStackTrace();
}
date = new Date(new Timestamp(parsedDate1.getTime()));
}
return date;
}
Frequently required script
Following code is used for the purpose of converting : Date Input in : String format into : java.sql.Date
private java.sql.Date stringToDate(String dateS) {
java.sql.Date sqlStartDate = null;
if (dateS != null && !"".equals(dateS)) {
String dateFormat = "yyyy-MM-dd";
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
java.util.Date parsedDate1 = null;
{
try {
parsedDate1 = df.parse(dateS);
} catch (ParseException e) {
// TODO
}
sqlStartDate = new java.sql.Date(parsedDate1.getTime());
}
}
return sqlStartDate;
}
Following scrip tis used to convert String into oracle.jbo.domain.Date
private Date stringToDate(String dateS)
{
Date date=null;
if(dateS!=null && !"".equals(dateS) )
{
String dateFormat = "dd-MMM-yyyy";
SimpleDateFormat df = new SimpleDateFormat(dateFormat);
java.util.Date parsedDate1=null;
try
{
parsedDate1 = df.parse(dateS);
}
catch(ParseException e)
{
e.printStackTrace();
}
date = new Date(new Timestamp(parsedDate1.getTime()));
}
return date;
}
Tuesday, January 27, 2015
Wednesday, January 21, 2015
What happens when you execute an entity-based view object?
ViewObject vo = applicationModule.findViewObject("Departments");
vo.execute();//execute view object to fetch rows
Row row=vo.first();//Move to the first row in the row set
The following sequence diagram highlights how the business components interact
with one another to query the database:
Note : The above content is from : Jobinesh : Oracle ADF Real World Developer Guide a fantastic book on ADF.
Just shared the above for reference to others.
Saturday, November 08, 2014
OAF : Reading the data form the csv file and loading the data to table
PFR Logic :
if(pageContext.getParameter("save")!=null)
{
DataObject fileUploadData = (DataObject)pageContext.getNamedDataObject("FileUploadItem");
String fileName = null;
String contentType = null;
Long fileSize = null;
Integer fileType = new Integer(6);
BlobDomain uploadedByteStream = null;
BufferedReader in = null;
try
{
fileName = (String)fileUploadData.selectValue(null, "UPLOAD_FILE_NAME");
contentType = (String)fileUploadData.selectValue(null, "UPLOAD_FILE_MIME_TYPE");
uploadedByteStream = (BlobDomain)fileUploadData.selectValue(null, fileName);
in = new BufferedReader(new InputStreamReader(uploadedByteStream.getBinaryStream()));
fileSize = new Long(uploadedByteStream.getLength());
System.out.println("fileSize : " + fileSize);
System.out.println("fileName :"+fileName);
System.out.println("contentType :"+contentType);
} catch (NullPointerException ex)
{
throw new OAException("Please Select a File to Upload", OAException.ERROR);
}
writeLinesToVO(pageContext,webBean, in);
}
-----------------------
public void writeLinesToVO(OAPageContext pageContext, OAWebBean webBean , BufferedReader in )
{
xxlearn.oracle.apps.fnd.server.LearnAMImpl am = (xxlearn.oracle.apps.fnd.server.LearnAMImpl)pageContext.getApplicationModule(webBean);
XxcusCsvFileBlobEOVOImpl vo = am.getXxcusCsvFileBlobEOVO1() ;
XxcusCsvFileBlobEOVORowImpl row = null;
try
{
//Open the CSV file for reading
String lineReader = "";
long t = 0;
String[] linetext;
while (((lineReader = in.readLine()) != null))
{
//Split the deliminated data and
if (lineReader.trim().length() > 0)
{
System.out.println("lineReader" + lineReader.length());
linetext = lineReader.split(",");
t++;
int lineLength = linetext.length;
System.out.println("line text length is : " + lineLength);
if(lineLength ==3)
{
row = (XxcusCsvFileBlobEOVORowImpl)vo.createRow();
Number fileID = am.getOADBTransaction().getSequenceValue("XXCUS_CSV_FILE_ID_S");
row.setFileId(fileID);
row.setOrgcode(linetext[0]);
row.setSegment(linetext[1]);
row.setStatus(linetext[2]);
}
for (int k = 0; k < lineLength; k++)
{
System.out.println(linetext[k]);
} //for
}//if
} //while
am.getOADBTransaction().commit();
}//try
catch (IOException e)
{
}
throw new OAException("Data Saved Successfully", OAException.INFORMATION) ;
}
Database Table Structure
-----------------------------------------------------------------------------------------
CREATE TABLE xxcus_csv_file_blob
(
file_id INTEGER
, status varchar2(100)
,segment varchar2(100)
,orgcode varchar2(10)
,creation_date DATE
,created_by NUMBER
,last_update_date DATE
,last_updated_by INTEGER
,last_update_login INTEGER
,CONSTRAINT xxcus_csv_file_id PRIMARY KEY (file_id)
) ;
create sequence XXCUS_CSV_FILE_ID_S ;
-----------------------------------------------------------------------------------------
PS: Above coding is not totally mine, i copied from the below blog
http://rajubandam.blogspot.in/2014/01/uploading-csv-file-into-data-base-table.html
PFR Logic :
if(pageContext.getParameter("save")!=null)
{
DataObject fileUploadData = (DataObject)pageContext.getNamedDataObject("FileUploadItem");
String fileName = null;
String contentType = null;
Long fileSize = null;
Integer fileType = new Integer(6);
BlobDomain uploadedByteStream = null;
BufferedReader in = null;
try
{
fileName = (String)fileUploadData.selectValue(null, "UPLOAD_FILE_NAME");
contentType = (String)fileUploadData.selectValue(null, "UPLOAD_FILE_MIME_TYPE");
uploadedByteStream = (BlobDomain)fileUploadData.selectValue(null, fileName);
in = new BufferedReader(new InputStreamReader(uploadedByteStream.getBinaryStream()));
fileSize = new Long(uploadedByteStream.getLength());
System.out.println("fileSize : " + fileSize);
System.out.println("fileName :"+fileName);
System.out.println("contentType :"+contentType);
} catch (NullPointerException ex)
{
throw new OAException("Please Select a File to Upload", OAException.ERROR);
}
writeLinesToVO(pageContext,webBean, in);
}
-----------------------
public void writeLinesToVO(OAPageContext pageContext, OAWebBean webBean , BufferedReader in )
{
xxlearn.oracle.apps.fnd.server.LearnAMImpl am = (xxlearn.oracle.apps.fnd.server.LearnAMImpl)pageContext.getApplicationModule(webBean);
XxcusCsvFileBlobEOVOImpl vo = am.getXxcusCsvFileBlobEOVO1() ;
XxcusCsvFileBlobEOVORowImpl row = null;
try
{
//Open the CSV file for reading
String lineReader = "";
long t = 0;
String[] linetext;
while (((lineReader = in.readLine()) != null))
{
//Split the deliminated data and
if (lineReader.trim().length() > 0)
{
System.out.println("lineReader" + lineReader.length());
linetext = lineReader.split(",");
t++;
int lineLength = linetext.length;
System.out.println("line text length is : " + lineLength);
if(lineLength ==3)
{
row = (XxcusCsvFileBlobEOVORowImpl)vo.createRow();
Number fileID = am.getOADBTransaction().getSequenceValue("XXCUS_CSV_FILE_ID_S");
row.setFileId(fileID);
row.setOrgcode(linetext[0]);
row.setSegment(linetext[1]);
row.setStatus(linetext[2]);
}
for (int k = 0; k < lineLength; k++)
{
System.out.println(linetext[k]);
} //for
}//if
} //while
am.getOADBTransaction().commit();
}//try
catch (IOException e)
{
}
throw new OAException("Data Saved Successfully", OAException.INFORMATION) ;
}
Database Table Structure
-----------------------------------------------------------------------------------------
CREATE TABLE xxcus_csv_file_blob
(
file_id INTEGER
, status varchar2(100)
,segment varchar2(100)
,orgcode varchar2(10)
,creation_date DATE
,created_by NUMBER
,last_update_date DATE
,last_updated_by INTEGER
,last_update_login INTEGER
,CONSTRAINT xxcus_csv_file_id PRIMARY KEY (file_id)
) ;
create sequence XXCUS_CSV_FILE_ID_S ;
-----------------------------------------------------------------------------------------
PS: Above coding is not totally mine, i copied from the below blog
http://rajubandam.blogspot.in/2014/01/uploading-csv-file-into-data-base-table.html
Friday, November 07, 2014
PLSQL API to validate Oracle E-business Suite Login Credentials.
1. Call the below API to validate user/password details of Oracle E-Business Suite
FND_WEB_SEC.VALIDATE_LOGIN( '<userName>','<password>')
Ex : select FND_WEB_SEC.VALIDATE_LOGIN( 'OPERATIONS','welcome') from dual ;
Returns 'Y' -- if valid , else returns 'N'
1. Call the below API to validate user/password details of Oracle E-Business Suite
FND_WEB_SEC.VALIDATE_LOGIN( '<userName>','<password>')
Ex : select FND_WEB_SEC.VALIDATE_LOGIN( 'OPERATIONS','welcome') from dual ;
Returns 'Y' -- if valid , else returns 'N'
How to Invoke ADF Page From Oracle E-Business Suite. The following gives the step by step information about how to register. ( I have Used : Oracle E-Business Suite : R12.2.4)
Ebiz Login Screen
Target ADF Page à which is expected to
be called
http://localhost:7101/XXHelloADF-ViewController-context-root/faces/HelloWorldPG.jsf
Profile Name: External ADF Application URL
AOL Function Registration
Name XXCUS_ADF_HELLO_WORLD
Code XXCUS_ADF_HELLO_WORLD
Description ADF
Hello World Sample
HTML Call GWY.jsp?targetPage=faces/HelloWorldPG.jsf
Menu
Responsibility
Sunday, November 02, 2014
SQL/PLSQL Interview Questions.
- Perform SORT without Using ORDER BY Clause
select empno from emp
union
select 1 from dual where 1=10 ;
Subscribe to:
Posts (Atom)





































