Total Pageviews

Saturday 12 December 2020

Raise bundle exceptions using raiseBundledOAAttrValException with example in OAF

package xx.oracle.apps.icx.por.rcv.webui;
import com.sun.java.util.collections.ArrayList;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import oracle.apps.fnd.common.MessageToken;
import oracle.apps.fnd.framework.OAApplicationModule;
import oracle.apps.fnd.framework.OAAttrValException;
import oracle.apps.fnd.framework.OAException;
import oracle.apps.fnd.framework.OAViewObject;
import oracle.apps.fnd.framework.webui.OAPageContext;
import oracle.apps.fnd.framework.webui.beans.OAWebBean;
import oracle.apps.fnd.framework.webui.beans.OAWebBeanTable;
import oracle.apps.icx.por.rcv.server.ReturnItemsVOImpl;
import oracle.apps.icx.por.rcv.webui.RtnSrchCO;
import oracle.jbo.Row;

public class XXRtnSrchCO6 extends RtnSrchCO
{
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
pageContext.writeDiagnostics(this, "Dbg : XXRtnSrchCO Start Process From Request ",1);

OAApplicationModule am = pageContext.getApplicationModule(webBean);
ReturnItemsVOImpl vo1 = (ReturnItemsVOImpl)am.findViewObject("ReturnItemsVO");

String str1 = null;
String str2 = null;
String str3 = null;
String usrId = null;

try
{
str1 = pageContext.getParameter("event");
}
catch(Exception e)
{
pageContext.writeDiagnostics(this, "Dbg : Exception at str1 "+e,1);
}

try
{
str2 = pageContext.getParameter("value");
}
catch(Exception e)
{
pageContext.writeDiagnostics(this, "Dbg : Exception at str2 "+e,1);
}

try
{
str3 = pageContext.getParameter("source");
}
catch(Exception e)
{
pageContext.writeDiagnostics(this, "Dbg : Exception at str3 "+e,1);
}

try
{
usrId = ""+pageContext.getUserId();
}
catch(Exception e)
{
pageContext.writeDiagnostics(this, "Dbg : Exception at usrId "+e,1);
}

pageContext.writeDiagnostics(this, "Dbg : usrId "+usrId,1);
pageContext.writeDiagnostics(this, "Dbg : str1 "+str1,1);
pageContext.writeDiagnostics(this, "Dbg : str2 "+str2,1);
pageContext.writeDiagnostics(this, "Dbg : str3 "+str3,1);

if (("goto".equals(str1)) && ("NavigationBar".equals(str3)) && ("2".equals(str2)))
{
pageContext.writeDiagnostics(this, "Dbg : Next button pressed. ",1);

Object rtnSrchVoName = (String)pageContext.getTransactionValue("RtnSrchVOName");
pageContext.writeDiagnostics(this, "Dbg : rtnSrchVoName "+(String)rtnSrchVoName, 1);

OAWebBeanTable resultsTblBean = (OAWebBeanTable)webBean.findIndexedChildRecursive("ResultsTableRN");

if (resultsTblBean != null)
{
pageContext.writeDiagnostics(this, "Dbg : resultsTblBean Entered", 1);

resultsTblBean.setViewUsageName((String)rtnSrchVoName);
OAViewObject rtnSrchVO = (OAViewObject)am.findViewObject((String)rtnSrchVoName);

if(rtnSrchVO!=null)
{
Row[] headrRow = rtnSrchVO.getAllRowsInRange();

pageContext.writeDiagnostics(this, "Dbg : Length of rtnSrchVO rows is "+headrRow.length, 1);
ArrayList errMsg = new ArrayList();

if(headrRow.length >0)
{
for (int j = 0; j < headrRow.length; j++)
{
Row currRow = headrRow[j];
oracle.jbo.domain.Number returnQty = null;

try
{
returnQty = (oracle.jbo.domain.Number)currRow.getAttribute("ReturnQuantity");
}
catch (Exception ex)
{
pageContext.writeDiagnostics(this,"Dbg : returnQty Exception "+ex,1);
}

pageContext.writeDiagnostics(this,"Dbg : returnQty "+returnQty,1);

if(returnQty!=null)
{
String query4 = "select xx_rcpt_oaf_pkg.is_rcpt_qty_elig(:1) from dual";
String isValidDecimal =null;

try
{
PreparedStatement pStmt = am.getOADBTransaction().createPreparedStatement(query4, 1);
pStmt.setString(1,returnQty.toString());

for(ResultSet rs = pStmt.executeQuery(); rs.next();)
{
if(rs != null)
{
isValidDecimal = rs.getString(1);
}
}

pStmt.close();
}
catch(Exception e)
{
pageContext.writeDiagnostics(this,"Dbg : isValidDecimal Exception "+e,1);
}

pageContext.writeDiagnostics(this,"Dbg : isValidDecimal "+isValidDecimal,1);

if(isValidDecimal!=null && isValidDecimal.length()>0 && isValidDecimal.equalsIgnoreCase("Y"))
{
pageContext.writeDiagnostics(this,"Dbg : Only 2 Decimal places are allowed at Receipt Quantity ",1);
OAAttrValException ex1 = new OAAttrValException(111,rtnSrchVO.getFullName(),currRow.getKey(),"ReturnQuantity",returnQty,"XX","XX_RCPT_QTY_DCML_MSG", null, (byte)0);
errMsg.add(ex1);
}
}
}

if (errMsg.size()> 0)
{
  pageContext.writeDiagnostics(this,"Dbg : Throwing Bundle exceptions     ",1);
  OAAttrValException.raiseBundledOAAttrValException(errMsg);
}
}
}
}
}
pageContext.writeDiagnostics(this, "Dbg : XXRtnSrchCO Process From Request End",1);
super.processFormRequest(pageContext, webBean);
}

}

Displaying Exception Messages in OAF

 public void processFormRequest(OAPageContext pageContext
                               ,OAWebBean webBean)
 {
   super.processFormRequest(pageContext, webBean);

   if(pageContext.getParameter("item1")!=null)
   {
    String name=pageContext.getParameter("item6");
    throw new OAException(name,OAException.ERROR);
   }
   if(pageContext.getParameter("item1")!=null)
   {
    String name=pageContext.getParameter("item6");
    throw new OAException(name,OAException.CONFIRMATION);
   }
   if(pageContext.getParameter("item1")!=null)
   {
    String name=pageContext.getParameter("item6");
    throw new OAException(name,OAException.WARNING);
   }
}

Useful OAF Profiles

Personalize Self-Service Defn - To enable the personalization link on every page 

FND: Personalization Region Link Enabled - To enable the personalization link on every region 

FND: Diagnostics - To enable diagnostics on OAF page 

FND: Personalization Seeding Mode - To allow edition of custom personalization 

Disable Self-Service Personal - For disabling all personalization’s 

Fnd Xliff Export Root Path - Use this profile option to set the root path used to generate the full path where the Xliff files are exported to when users extract their translated personalization using the Extract Translation Files page in OA Personalization Framework. The permissions for the root path directory that you specify must be set to read, write, create for all users, using chmod 777 [dir_path].

Xliff Import Root Path - Use this profile option to set the root path used to derive the full path from where the Xliff files are uploaded when users use the Upload Translations page in OA Personalization Framework to upload translated personalization. 

FND: Personalization Document Root Path - Use this profile option to define the root path where personalization documents are exported to or imported from when users use the Database page or the File System page of the Functional Administrator responsibility's Document Manager, respectively. We recommend you set this profile to the $APPL_TOP staging area: $APP_TOP/<CompanyIdentifier>/<CustomProductShortName>/<product-version>/mds/webui of the current deployed environment, where personalization documents are to be imported from or exported to. This profile option should be set at the Site level.

Unable to launch the Java Virtual Machine Located at path: ..\..\jdk\jre\bin\client\jvm.dll

 Below error will receive when attempting to install jDeveloper 10g for OAF on a Windows 10 desktop machine.

Error: Unable to launch the Java Virtual Machine Located at path: ..\..\jdk\jre\bin\client\jvm.dll

Solution: Please do the following setup to fix the above issue.

Run regedit (remember to run it as the administrator)  from your system

  • Expand HKEY_LOCAL_MACHINE 
  • Expand SOFTWARE 
  • Expand Microsoft 
  • Expand Windows 
  • Expand CurrentVersion 
  • Expand App Paths 
  • At App Paths, add a new KEY Name it: jdevW.exe Expand jdevW.exe 
  • Modify the (DEFAULT) value to the full pathway to the jdeveloper executable 
  • ex: "c:\jdev\jdevbin\jdev\bin\jdevW.exe" 
  • Create a new STRING VALUE called PATH and set it value to the jdeveloper pathway 
  • ex: "c:\Jdev\jdevbin\jdk\jre\bin" Save and close regedit

Sunday 8 April 2018

OAF Importer commands

OAF Importer commands

Page Importer:
java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/xx/oracle/apps/po/custom/webui/PoDummyPG.xml -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=XXX)))" -rootdir $JAVA_TOP

JPX Importer:
java oracle.jrad.tools.xml.importer.JPXImporter $JAVA_TOP/xx/oracle/apps/icx/lov/server/XXPrj.jpx -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xxx)(PORT=1522))(CONNECT_DATA=(SERVICE_NAME=xxx)))"

Saturday 7 April 2018

OAF Apache Bounce Steps in R12.2

OAF Apache Bounce Steps in R12.2

Login to Putty

Step 1 : Perform the below steps to Set the environment

login as: appldev
appldev@xxx password: Enter password
[appldev@xxx ~]$ cd ../..
[appldev@xxx ~]$ cd /u01/EBSDEV/APPS
[appldev@xxx APPS]$ . EBSapps.env run

  E-Business Suite Environment Information
  ----------------------------------------
  RUN File System                : /u01/EBSDEV/APPS/fs1/EBSapps/appl
  PATCH File System            : /u01/EBSDEV/APPS/fs2/EBSapps/appl
  Non-Editioned File System : /u01/EBSDEV/APPS/fs_ne

DB Host: xxx  Service/SID: EBSDEV

Sourcing the RUN File System ...

Step 2 : Run the adcgnjar to register the OAF changes to the weblogic server

[appldev@xxx APPS]$ cd $AD_TOP/bin
[appldev@xxx bin]$ adcgnjar

                     Copyright (c) 2002, 2012 Oracle Corporation
                        Redwood Shores, California, USA

                            AD Custom Jar Generation

                                 Version 12.2.0

NOTE: You may not use this utility for custom development
      unless you have written permission from Oracle Corporation.

Enter the APPS username: apps

Enter the APPS password:

customall.jar generated successfully.

Step 3 : Perform the below steps to stop the server

[appldev@xxx bin]$ cd $ADMIN_SCRIPTS_HOME
[appldev@xxx scripts]$ admanagedsrvctl.sh stop oacore_server1

You are running admanagedsrvctl.sh version 120.14.12020000.11

Enter the WebLogic Admin password:
Stopping oacore_server1...
Refer /u01/EBSDEV/APPS/fs1/inst/apps/EBSDEV_xxx/logs/appl/admin/log/adoacorectl.txt for details

Server specific logs are located at /u01/EBSDEV/APPS/fs1/FMW_Home/user_projects/domains/EBS_domain_EBSDEV/servers/oacore_server1/logs

admanagedsrvctl.sh: exiting with status 0


admanagedsrvctl.sh: check the logfile /u01/EBSDEV/APPS/fs1/inst/apps/EBSDEV_xxx/logs/appl/admin/log/adoacorectl.txt for more information ...

Step 4 : Perform the below steps to start the server

[appldev@xxx scripts]$ admanagedsrvctl.sh start oacore_server1

You are running admanagedsrvctl.sh version 120.14.12020000.11

Enter the WebLogic Admin password:

Calling txkChkEBSDependecies.pl to perform dependency checks for oacore_server1
*** ALL THE FOLLOWING FILES ARE REQUIRED FOR RESOLVING RUNTIME ERRORS
*** Log File = /u01/EBSDEV/APPS/fs1/inst/apps/EBSDEV_xxx/logs/appl/rgf/TXK/txkChkEBSDependecies_Sun_Feb_25_16_52_39_2018/txkChkEBSDependecies_Sun_Feb_25_16_52_39_2018.log
Perl script txkChkEBSDependecies.pl got executed successfully

Starting oacore_server1...

Server specific logs are located at /u01/EBSDEV/APPS/fs1/FMW_Home/user_projects/domains/EBS_domain_EBSDEV/servers/oacore_server1/logs

admanagedsrvctl.sh: exiting with status 0

admanagedsrvctl.sh: check the logfile /u01/EBSDEV/APPS/fs1/inst/apps/EBSDEV_xxx/logs/appl/admin/log/adoacorectl.txt for more information ...


[appldev@xxx scripts]$

Tuesday 31 October 2017

Useful Codes Used in OAF -2

Method To Insert the record in the table.

write the following code in the AM

public void InsertRecord()
{
  InsertVOImpl vo= getInsertVO1();
  OADBTransaction trans= getOADBTransaction();
  vo.executeQuery();
  Row v_row;
  v_row = (Row)vo.createRow();
  vo.insertRow(v_row);
}


The following code shows the initialization process of AM in controller.

public void processRequest(OAPageContext pageContext, OAWebBean webBean)
{
    super.processRequest(pageContext, webBean);
    InsertRecordsAMImpl am=(InsertRecordsAMImpl)pageContext.getApplicationModule(webBean);
    am.InsertRecord();

}


The following code shows the creation of record.

public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
  super.processFormRequest(pageContext, webBean);
   InsertRecordsAMImpl am=(InsertRecordsAMImpl)pageContext.getApplicationModule(webBean);
    if(pageContext.getParameter("item6")!=null)
    {
     am.getOADBTransaction().commit();
     throw new OAException("Data Created sucsessfully",OAException.CONFIRMATION);
    }
}