Monday, August 12, 2019

OAF Interview Questions


1.       Difference between table and advanced table
Both are useful to display data in tabular form. However, advanced table is latest.
In advanced table, we have below features that are not in table region
1. Sortable header
2. Summary total
3. Insert row or add another row button
4. Multi select and single select option à Update/delete multiple rows
2.       What is controller?
Controller is a JAVA file associated to a page or region
3.       What to do with controller?
·       Handle button press
·       Dynamic WHERE clauses
·       Commits
·       Forward to another page
4.       When is ProcessRequest called?
When the page is loaded on to screen
5.       When is ProcessFormRequest called?
When we perform some action on page like clicking a button
6.       What is extension?
Add some functionality to existing component of OAF page or region
7.       What is personalization?
In OAF, personalization means only UI changes.
8.       What are the levels of personalization in their ascending order?
User level
Function level
Responsibility level
Organization level
Site level
9.       What is an EO?
EO contains business logic and rules. EO’s are used to perform DML operations
10.   What is VO?
VO contains database query. It is used to show data and provide iteration over data set.
11.   What is VL?
A view link is a link between VO’s. We use VL to achieve Master-Detail operation
12.   What is the difference between inline LOV and external LOV?
Inline LOV can be used only in a particular page.
External LOV is like common LOV, it can be used by multiple pages
13.   Difference between autocustomization criteria and result based search?
Result based search generates search items automatically.
In Autocustomization search, we need to set the search criteria fields
14.   What is customization?
Altering existing functionality/UI/business logic
15.   Can you extend every AM?
No, root AM cannot be extended
16.    Why root AM can’t be extended?
Root AM is loaded first and the MDS substitutions are parsed. So, root AM can’t be extended.
17.   What are the different methods of passing parameters?
Tokens à vname = {@AttributeName}
HashMap à HashMap variablename = new HashMap();
Variablename.add(“ParameterName”,ParameterValue);
Through session à pageContext.putSessionValue(“ParameterName”, ParameterValue);
18.   What is the significance of ProcessFormData?
For a POST request, the data on the page is bound to VO in this method.
19.   What is the main controller in OAF?
OAController
20.   What is the difference between HashMap and HashTable?
HashMap is not thread safe while HashTable is thread safe
HashMap is performance wise better as it is not thread safe. Since HashTable is thread safe so it not better performance wise and multiple threads cannot access same HashTable
21.   What is the difference between button and submit button?
When submit button is clicked, it triggers the address written in “action” attribute.
Button is used to redirect to any link, action type – fireAction and firePartialAction
22.   What are the important libraries in OAF?
Import oracle.apps.fnd.framework.OAException;
Import oracle.apps.fnd.framework.server.OADBTransaction;
Import oracle.apps.fnd.framework.server.OADBTransactionImpl;
23.   In Oracle Forms, we have WHEN-VALIDATE-RECORD, what will be the equivalent of that in OAF?
ProcessFormData
EO
24.   How to disable all personalizations from EBS?
From functional administrator responsibility
25.   How to show popup in OAF?
Popup region is there, it can be used to show popup
26.   Can we add new columns to advanced table region through personalization?
Yes
27.   Which two types of extension are most common?
VO, CO
CO à You require any business logic change, to handle button, to dynamically control an item/region (Render true/false)
VO à To add new column in SQL query
28.   On any given OAF page, what is the sequence in which these methods will fire in a controller?
ProcessFormData
ProcessRequest
ProcessFormRequest
PR à PFD à PFR
29.   A user clicks on submit button on a page. The fields on this page are attached to VO attributes, which in turn are attached to EO attributes. An exception is raised from validation EO due to data validation errors.
Tell me, which methods in controller will be fired when a SubmitButton is clicked on that page
PFD, PFR
30.   What are the steps to embed a custom region into a standard OAF page?
Flexible layout, FlexiContent
31.   You have two OAF pages, page A and page B. Depending upon the value of department selected in page A, you wish to restrict the LOV of approvers in page B.
How will you do this? Why would you not prefer to extend the view object LOV?
In custom pages à Extension is not necessary, because we will have source code and we can directly add/modify
In seeded pages à CO Extension is required
Get the value from page A, pass the parameter to page B, in the PR method, bind the parameter to the LOV and execute it (Dynamic where clause)
32.   What are the different methods that you can consider to default value into a field?
Using Process request method, we can set a value
Using VO method, we can set value
33.   What are the different mechanisms of debugging an OAF page?
SOP (System.out.println)
DebugMode in JDeveloper
Diagnostics on the instance
34.   I wish to know the SQL query of VO, what is the simplest method?
Click on ‘About this page’ à Business components à click on VO
35.   How would you deploy BC4J extensions to server?
Using jpximport
jpximport C:\jdev\jdevhome\jdev\myprojects\OAFExtProj.jpx –username apps –password apps –dbconnection “(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=glo.dev.com)(PORT=1521))(CONNECT_DATA=(SID=VIS)))”
36.   How do you load XML page developed using JDeveloper?
Import C:\kumar\jdev\jdevhome\jdev\myprojects\xxstuller\oracle\apps\fnd\webui\ComponentListPG.xml –username apps –password apps –dbconnection “(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=glo.dev.com)(PORT=1521))(CONNECT_DATA=(SID=VIS)))” – rootDir C:\kumar\jdev\jdevhome\jdev\myprojects
1.       Move the BC4J files (xml/class), CO files (class) à $JAVA_TOP
2.       PG.xml / RN.xml à MDS layer
37.   Tell me two different methods you can use to get the XML files of standard OAF pages
Using: JDR_UTILS.PRINTDOCUMENT();
MDS folder from middle tier
38.   Please explain different types of tasks you can do using Functional Administrator responsibility
Enable/Disable/Download/Perform personalizations
39.   Let’s say page A has been personalized in Development and UAT environments. Is it possible to merge the personalizations done to same page in two different environments using functional administrator?
No, merging is not possible
40.   Where is dbc file located on the server?
$FND_SECURE
41.   By setting profile option “Disable Self Service Person%”, not only the personalization, but also the OAF extensions are disabled. Explain why?
If it is a CO extension, it will by default get disabled
If it is a VO substitution, this will also be disabled by the profile option
42.   Of the following levels in personalizations, i.e., Responsibility level, Site level and function level, which level has highest priority and least priority?
Site Resp Org  Function
Least                   Highest
43.   Query to get the personalizations in Oracle Applications instance
SELECT
    path.path_docid perz_doc_id,
    jdr_mds_internal.getdocumentname(path.path_docid) perz_doc_path
FROM
    jdr_paths path
WHERE
    path.path_docid IN (
        SELECT DISTINCT
            comp_docid
        FROM
            jdr_components
        WHERE
            comp_seq = 0
            AND comp_element = 'customization'
            AND comp_id IS NULL
    )
ORDER BY
    perz_doc_path;
44.   How to call concurrent program from OAF pages?
submitRequest() method is used for calling concurrent program. The submitRequest() method takes 6 parameters and returns request id of submitted concurrent request.
Public int submitRequest
String ProgramApplication ,
String ProgramName ,
String ProgramDescription ,
String StartTime,
boolean SubRequest,
Vector Parameters ) throws RequestSubmissionException

Below is the description of each components in the method,
ProgramApplication – Application short name
ProgramName – Concurrent program name
ProgramDescription – concurrent program description
StartTime – Time at which request should start running
SubRequest – Set to TRUE if the request is submitted from another running request and has to be treated as sub request
Parameters – Parameters of the concurrent request
Following is the example
import oracle.apps.fnd.cp.request.ConcurrentRequest;
import oracle.apps.fnd.framework.server.OADBTransaction;
public int submitCPRequest(Number headerId) {
try {
OADBTransaction tx = (OADBTransaction)getDBTransaction();
java.sql.Connection pConncection = tx.getJdbcConnection();
ConcurrentRequest cr = new ConcurrentRequest(pConncection);
String applnName = "EAM"; //Application that contains the concurrent program
String cpName = "EAMXX"; //Concurrent program name
String cpDesc = "Concurrent Program Description"; // concurrent Program description
// Pass the Arguments using vector
// Here I have added my parameter headerId to the vector and passed the vector to the concurrent program
Vector cpArgs = new Vector();
cpArgs.addElement(headerId.stringValue()); 
// Calling the Concurrent Program
int requestId = cr.submitRequest(applnName, cpName, cpDesc, null, false, cpArgs);
tx.commit();
return requestId;
} catch (RequestSubmissionException e) {
OAException oe = new OAException(e.getMessage());
oe.setApplicationModule(this);
throw oe;
}

45.   How to call PL/SQL stored procedure from an OAF page?
Below are the steps to invoke a stored procedure from an EO or AM,
1.       Create JDBC CallableStatement with the PL/SQL block containing the stored procedure invocation
2.       Bind any variables
3.       Execute the statement
4.       Optionally retrieve the values of any OUT parameters
5.       Close the statement
Example:
import java.sql.CallableStatement;
import java.sql.SQLException;
import java.sql.Types;
import oracle.apps.fnd.framework.server.OADBTransactionImpl;
String outParamValue = null;

OADBTransaction txn = getDBTransaction();
CallableStatement cs = txn.createCallableStatement("begin xx_pkg.xx_procedure(:1, :2); end;");
{
((OracleCallableStatement)cs.registerOutParameter(2, Types.VARCHAR, 0, 2000);
cs.setString(1, "gyan");
outParamValue = cs.getString(1);
cs.execute();
cs.close();
}
catch (SQLException sqle)
{
cs.close();
46.   How to create submit button dynamically in OAF page?
Use below code to create submit button programmatically,
OASubmitButtonBean oasb =              (OASubmitButtonBean)pageContext.getWebBeanFactory().createWebBean(pageContext, "BUTTON_SUBMIT");         
OAAdvancedTableBean oatb =(OAAdvancedTableBean)webBean.findChildRecursive("WOResultsTab");         oasb.setID("SubmitPrintButton");         
oasb.setUINodeName("SubmitPrintButton");         oasb.setEvent("SubmitPrintButton");         
oasb.setText("Click Here");         
oatb.setFooter(oasb);

No comments:

Post a Comment

Link between Receivables, Payables and Projects

 --Link between AP, AR and PA select aia.* from ap_invoices_all aia ,pjc_exp_items_all peia ,pjb_bill_trxs pbt ,pjb_inv_line_dists pild ,pjb...