Search This Blog

Tuesday, March 29, 2016

XML Bursting in Oracle Apps R12



XML Bursting in Oracle Apps R12:

It is used to deliver report to multiple emails, let it be your pay slips or PO’s or others.
  1. Create rdf data model.
  2. Register Executable.
  3. Register Concurrent Program
  4. Setup the temporary Working directory.
  5. XML Bursting control File.
  6. Create the rtf template.
  7. Register Data definition.
  8. Upload XML control file to data definition.
  9. Register data template.
  10. Move rdf file to registered TOP.
  11. Move rtf file to tmp directory.
  12. Attach the concurrent program to request group.
  13. Attach another XML Publisher Report Bursting Program concurrent program to same request group.
  14. Run the report.
  15. Errors and solutions

  1. Create rdf data model.

C:\Users\egov\Desktop\burst1.png

Query:
select full_name, person_id,email_address,EFFECTIVE_START_DATE,EFFECTIVE_END_DATE
from per_people_x ppx
where email_address is not null
and employee_number in ('9213','9214','9215')
and business_group_id = :p_business_group_id
and rownum < 5
C:\Users\egov\Desktop\burst2.png

C:\Users\egov\Desktop\burst3.png

function AfterReport return boolean is
 req_id number;
begin
            req_id := FND_REQUEST.SUBMIT_REQUEST(
                application =>'XDO',
             program     =>'XDOBURSTREP',
             description =>null,
             start_time  =>null,
             sub_request =>FALSE,
             argument1   =>'Y',
             argument2   =>:P_CONC_REQUEST_ID,
             argument3     =>'Y');
   
 if req_id = 0 then
   srw.message(100,'Failed to submit bursting program');
 end if;                                        
 SRW.user_exit('FND SRWEXIT');
 return (TRUE);
end;


  1. Register Executable
C:\Users\egov\Desktop\burst4.png

  1. Register Concurrent
C:\Users\egov\Desktop\burst5.png

C:\Users\egov\Desktop\burst6.png


  1. C:\Users\egov\Desktop\burst7.png

C:\Users\egov\Desktop\burst8.png


5.

C:\Users\egov\Desktop\burst9.png


6.
C:\Users\egov\Desktop\brtf template.png

7.

C:\Users\egov\Desktop\b10.png

8.

C:\Users\egov\Desktop\b11.png

9.

C:\Users\egov\Desktop\B12.png

10.

C:\Users\egov\Desktop\b13.png

11.

C:\Users\egov\Desktop\b14.png

12, 13.

C:\Users\egov\Desktop\B15.png

14.
C:\Users\egov\Desktop\b16.png

C:\Users\egov\Desktop\b17.png

Errors and Solution:
If the xml report run is normal and Bursting concurrent Program ends with Error then check the patch number Patch 9501440:R12.XDO.B is applied or not.
 
SELECT patch_name
FROM   apps.ad_applied_patches
WHERE patch_name LIKE '%9501440%'
 
Reference: Doc ID 1276845.
If both programs ends normal, but no email then need to check with the network and database team regarding server and port which we configured in the xml control file.

Saturday, March 26, 2016

User hook Create, Update and Delete api scripts.

1.
Finding user hook for SIT before insert:

SELECT ahk.api_hook_id,
ahk.api_module_id,
ahk.hook_package,
ahk.hook_procedure
FROM hr_api_hooks ahk, hr_api_modules ahm
WHERE ahm.module_name like '%CREATE_SIT%'
AND ahm.api_module_type = 'BP'
AND ahk.api_hook_type = 'AP'
AND ahk.api_module_id = ahm.api_module_id

API_HOOK_ID = 2879
API_MODULE_ID = 1279

2.  Create User hook:

DECLARE
L_API_HOOK_ID NUMBER:= 2879;
L_API_HOOK_CALL_ID NUMBER;
L_OBJECT_VERSION_NUMBER NUMBER;
L_SEQUENCE NUMBER;
BEGIN
SELECT HR_API_HOOKS_S.NEXTVAL
INTO L_SEQUENCE
FROM DUAL;
HR_API_HOOK_CALL_API.CREATE_API_HOOK_CALL
(P_VALIDATE => FALSE,
P_EFFECTIVE_DATE => TO_DATE('01-JAN-1952','DD-MON-YYYY'),
P_API_HOOK_ID =>L_API_HOOK_ID ,
P_API_HOOK_CALL_TYPE => 'PP',
P_SEQUENCE => L_SEQUENCE,
P_ENABLED_FLAG => 'Y',
P_CALL_PACKAGE => 'XXFUJ_CREATE_SIT_A_UHPKG',
P_CALL_PROCEDURE => 'XXFUJ_CREATE_SIT_LEV_VAL',
P_API_HOOK_CALL_ID => L_API_HOOK_CALL_ID,
P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
DBMS_OUTPUT.PUT_LINE('L_API_HOOK_CALL_ID '|| L_API_HOOK_CALL_ID);
END ;

3. COMMIT

SELECT API_HOOK_CALL_ID,API_HOOK_ID,
OBJECT_VERSION_NUMBER,
CALL_PACKAGE,
CALL_PROCEDURE,
ENABLED_FLAG,
STATUS
FROM HR_API_HOOK_CALLS
--WHERE api_hook_id = 2878
--WHERE API_HOOK_CALL_ID = 1263
WHERE CALL_PACKAGE LIKE '%FUJ%'

commit

4. runnig the script
declare
l_api_module_id number := 1279; --Value 1731 is derived from Step 1 above using following query
begin
hr_api_user_hooks_utility.create_hooks_one_module (l_api_module_id);
dbms_output.put_line('Success');
exception when others then
dbms_output.put_line('Exception : '||SQLERRM);
end;

5. COMMIT


6. to delete the user hook:

BEGIN
Hr_Api_Hook_Call_Api.delete_api_hook_call ( p_validate => FALSE,
p_api_hook_call_id => 1274,
p_object_version_number =>2
);
DBMS_OUTPUT.PUT_LINE('deleted Successfully');
END;

7. COMMIT

8. to update the user hook:

declare
p_object_version_number number;
BEGIN
Hr_Api_Hook_Call_Api.update_api_hook_call ( p_validate  =>TRUE,
   p_effective_date               => to_date('01-jan-2004'),
   p_api_hook_call_id             =>1270,
   --p_sequence                     in     number    default hr_api.g_number,
   --p_enabled_flag                 in     varchar2  default hr_api.g_varchar2,
   --p_call_package                 in     varchar2  default hr_api.g_varchar2,
   --p_call_procedure               in     varchar2  default hr_api.g_varchar2,
   p_object_version_number      =>p_object_version_number
);
DBMS_OUTPUT.PUT_LINE('updated Successfully');
END;

9. commit


SELECT ANALYSIS_CRITERIA_ID,
ID_FLEX_NUM,
SEGMENT1 Allowance_Name,
SEGMENT2 EFFECTIVE_DATE,
SEGMENT11 AMOUNT
  FROM
PER_ANALYSIS_CRITERIA
WHERE ANALYSIS_CRITERIA_ID = 4949604

SELECT ELEMENT_NAME, ELEMENT_TYPE_ID
FROM PAY_ELEMENT_TYPES_F_TL
WHERE LANGUAGE = USERENV('LANG')
AND ELEMENT_TYPE_ID IN (593,559,562,561,564,590,589,597)

User hook on Special Info to attach element to Assignment entries screen

User hook on Special Info to attach element to Assignment entries screen:

1. Requirement once the employee applies for Allowance and get final approved , Once data entered into HR tables, then the allowance should be attached auto to Assignment Entries screen.

2. Solution using user hooks on SIT.

Step1: Creating Procedure for Creating Element Entries.

Step2: Creating Package for user hook.

Step3: Registering user hook.

Step1:

--FOR USER HOOK IN SIT Allowances

PROCEDURE CREATE_ELEMENT_ENTRY_UH_P

(P_BUSINESS_GROUP_ID IN NUMBER,

P_PERSON_ID IN NUMBER,

P_ANALYSIS_CRITERIA_ID IN NUMBER,

P_SEGMENT1 VARCHAR2, --ELEMENT_TYPE_ID

P_SEGMENT2 VARCHAR2, --EFFECTIVE DATE

P_SEGMENT11 VARCHAR2 --AMOUNT

--P_SEGMENT1 VARCHAR2

)

IS

/*DECLARE

P_BUSINESS_GROUP_ID NUMBER := 81;

--EVENT_TYPE VARCHAR2(20) := 'insert';

P_PERSON_ID NUMBER := 26876;

--P_ABSENCE_ATTENDANCE_ID NUMBER := 3033909;

P_SEGMENT1 VARCHAR2(20) := 589; --ELEMENT_TYPE_ID

P_SEGMENT2 VARCHAR2(20) := '2015/12/10 00:00:00';--EFFECTIVE DATE

P_SEGMENT11 VARCHAR2(20) := 100; --AMOUNT

*/

l_effective_start_date DATE := NULL;

l_effective_end_date DATE := NULL;

l_object_version_number NUMBER := NULL;

l_element_entry_id NUMBER := NULL;

l_create_warning BOOLEAN;

l_err_msg VARCHAR2 (500) := NULL;

L_ASS_ID NUMBER;

L_PAYROLL_ID NUMBER;

L_ELEMENT_LINK_ID NUMBER;

l_date_start DATE;

l_date_end DATE;

L_ABSENCE_ATTENDANCE_TYPE_ID NUMBER;

L_INPUT_VALUE_ID NUMBER;

l_reason NUMBER;

p_value6 VARCHAR2(1);

p_value7 VARCHAR2(1);

reqid number;

BEGIN

-----------TO GET ASSIGNMENT_ID, PAYROLL_ID

BEGIN

SELECT DISTINCT ASSIGNMENT_ID, PAYROLL_ID

INTO L_ASS_ID, L_PAYROLL_ID

FROM PER_ALL_ASSIGNMENTS_F X

WHERE X.PERSON_ID= P_PERSON_ID

AND X.PRIMARY_FLAG='Y'

AND TO_DATE(SUBSTR(P_SEGMENT2, 1, 10), 'YYYY/MM/DD') BETWEEN X.EFFECTIVE_START_DATE AND X.EFFECTIVE_END_DATE

;

END;

--gettting the Element_link_id of the person

--GET ELEMENT LINK

BEGIN

SELECT DISTINCT F.ELEMENT_LINK_ID,PIV.INPUT_VALUE_ID

INTO L_ELEMENT_LINK_ID, L_INPUT_VALUE_ID

FROM

PAY_ELEMENT_LINKS_F F,

PAY_ELEMENT_TYPES_F P,

PAY_INPUT_VALUES_F PIV

WHERE

TRUNC(SYSDATE) BETWEEN F.EFFECTIVE_START_DATE AND F.EFFECTIVE_END_DATE

AND TRUNC(SYSDATE) BETWEEN P.EFFECTIVE_START_DATE AND P.EFFECTIVE_END_DATE

AND F.ELEMENT_TYPE_ID=P.ELEMENT_TYPE_ID

AND F.PAYROLL_ID = L_PAYROLL_ID

AND P.ELEMENT_TYPE_ID = P_SEGMENT1

AND F.ELEMENT_TYPE_ID = PIV.ELEMENT_TYPE_ID

AND PIV.NAME = 'Override Amount';

END;

BEGIN

pay_element_entry_api.create_element_entry (

p_validate => FALSE,

p_effective_date => trunc(TO_DATE(SUBSTR(P_SEGMENT2, 1, 10), 'YYYY/MM/DD'),'mm'),--P_SEGMENT2

p_business_group_id => P_BUSINESS_GROUP_ID,

p_assignment_id => L_ASS_ID,

p_element_link_id => L_ELEMENT_LINK_ID,

p_entry_type => 'E',

p_input_value_id2 => L_INPUT_VALUE_ID, ---Override Amount

p_entry_value2 => to_number(P_SEGMENT11),--Amount

p_effective_start_date => l_effective_start_date,

p_effective_end_date => l_effective_end_date,

p_element_entry_id => l_element_entry_id,

p_object_version_number => l_object_version_number,

p_create_warning => l_create_warning

);

COMMIT;

DBMS_OUTPUT.put_line (

'Element has been uploaded: ' || l_element_entry_id

);

EXCEPTION

WHEN OTHERS

THEN

l_err_msg := SQLERRM;

DBMS_OUTPUT.put_line ('Main Exception: ' || l_err_msg);

END;

Step2:

CREATE OR REPLACE PACKAGE APPS.XXFUJ_CREATE_SIT_A_UHPKG IS

--USER HOOK PACKAGE FOR HR_SIT_BK1.CREATE_SIT_A

PROCEDURE XXFUJ_CREATE_SIT_LEV_VAL

--THIS WILL VALIDATE THE SIT WITH REFERENCE TO THE LEAVE EXISTS.

/*

Example: If a emp is on Annual leave from 01-jan-2017 to 30-jan-2017

now we are entering in SIT (Training) 10-jan-2017 to 15-jan-2017

As training days falls between the annual leave days, then the user entering the SIT will be notified by warning message.

*/

(P_PERSON_ID in NUMBER

,P_BUSINESS_GROUP_ID in NUMBER

,P_ID_FLEX_NUM in NUMBER

,P_EFFECTIVE_DATE in DATE

,P_COMMENTS in VARCHAR2

,P_DATE_FROM in DATE

,P_DATE_TO in DATE

,P_REQUEST_ID in NUMBER

,P_PROGRAM_APPLICATION_ID in NUMBER

,P_PROGRAM_ID in NUMBER

,P_PROGRAM_UPDATE_DATE in DATE

,P_ATTRIBUTE_CATEGORY in VARCHAR2

,P_ATTRIBUTE1 in VARCHAR2

,P_ATTRIBUTE2 in VARCHAR2

,P_ATTRIBUTE3 in VARCHAR2

,P_ATTRIBUTE4 in VARCHAR2

,P_ATTRIBUTE5 in VARCHAR2

,P_ATTRIBUTE6 in VARCHAR2

,P_ATTRIBUTE7 in VARCHAR2

,P_ATTRIBUTE8 in VARCHAR2

,P_ATTRIBUTE9 in VARCHAR2

,P_ATTRIBUTE10 in VARCHAR2

,P_ATTRIBUTE11 in VARCHAR2

,P_ATTRIBUTE12 in VARCHAR2

,P_ATTRIBUTE13 in VARCHAR2

,P_ATTRIBUTE14 in VARCHAR2

,P_ATTRIBUTE15 in VARCHAR2

,P_ATTRIBUTE16 in VARCHAR2

,P_ATTRIBUTE17 in VARCHAR2

,P_ATTRIBUTE18 in VARCHAR2

,P_ATTRIBUTE19 in VARCHAR2

,P_ATTRIBUTE20 in VARCHAR2

,P_SEGMENT1 in VARCHAR2

,P_SEGMENT2 in VARCHAR2

,P_SEGMENT3 in VARCHAR2

,P_SEGMENT4 in VARCHAR2

,P_SEGMENT5 in VARCHAR2

,P_SEGMENT6 in VARCHAR2

,P_SEGMENT7 in VARCHAR2

,P_SEGMENT8 in VARCHAR2

,P_SEGMENT9 in VARCHAR2

,P_SEGMENT10 in VARCHAR2

,P_SEGMENT11 in VARCHAR2

,P_SEGMENT12 in VARCHAR2

,P_SEGMENT13 in VARCHAR2

,P_SEGMENT14 in VARCHAR2

,P_SEGMENT15 in VARCHAR2

,P_SEGMENT16 in VARCHAR2

,P_SEGMENT17 in VARCHAR2

,P_SEGMENT18 in VARCHAR2

,P_SEGMENT19 in VARCHAR2

,P_SEGMENT20 in VARCHAR2

,P_SEGMENT21 in VARCHAR2

,P_SEGMENT22 in VARCHAR2

,P_SEGMENT23 in VARCHAR2

,P_SEGMENT24 in VARCHAR2

,P_SEGMENT25 in VARCHAR2

,P_SEGMENT26 in VARCHAR2

,P_SEGMENT27 in VARCHAR2

,P_SEGMENT28 in VARCHAR2

,P_SEGMENT29 in VARCHAR2

,P_SEGMENT30 in VARCHAR2

,P_CONCAT_SEGMENTS in VARCHAR2

,P_ANALYSIS_CRITERIA_ID in NUMBER

,P_PERSON_ANALYSIS_ID in NUMBER

,P_PEA_OBJECT_VERSION_NUMBER in NUMBER);

END;

/

CREATE OR REPLACE PACKAGE BODY XXFUJ_CREATE_SIT_A_UHPKG IS

--USER HOOK PACKAGE FOR HR_SIT_BK1.CREATE_SIT_A

PROCEDURE XXFUJ_CREATE_SIT_LEV_VAL

--THIS WILL VALIDATE THE SIT WITH REFERENCE TO THE LEAVE EXISTS.

/*

Example: If a emp is on Annual leave from 01-jan-2017 to 30-jan-2017

now we are entering in SIT (Training) 10-jan-2017 to 15-jan-2017

As training days falls between the annual leave days, then the user entering the SIT will be notified by warning message.

*/

(P_PERSON_ID in NUMBER

,P_BUSINESS_GROUP_ID in NUMBER

,P_ID_FLEX_NUM in NUMBER

,P_EFFECTIVE_DATE in DATE

,P_COMMENTS in VARCHAR2

,P_DATE_FROM in DATE

,P_DATE_TO in DATE

,P_REQUEST_ID in NUMBER

,P_PROGRAM_APPLICATION_ID in NUMBER

,P_PROGRAM_ID in NUMBER

,P_PROGRAM_UPDATE_DATE in DATE

,P_ATTRIBUTE_CATEGORY in VARCHAR2

,P_ATTRIBUTE1 in VARCHAR2

,P_ATTRIBUTE2 in VARCHAR2

,P_ATTRIBUTE3 in VARCHAR2

,P_ATTRIBUTE4 in VARCHAR2

,P_ATTRIBUTE5 in VARCHAR2

,P_ATTRIBUTE6 in VARCHAR2

,P_ATTRIBUTE7 in VARCHAR2

,P_ATTRIBUTE8 in VARCHAR2

,P_ATTRIBUTE9 in VARCHAR2

,P_ATTRIBUTE10 in VARCHAR2

,P_ATTRIBUTE11 in VARCHAR2

,P_ATTRIBUTE12 in VARCHAR2

,P_ATTRIBUTE13 in VARCHAR2

,P_ATTRIBUTE14 in VARCHAR2

,P_ATTRIBUTE15 in VARCHAR2

,P_ATTRIBUTE16 in VARCHAR2

,P_ATTRIBUTE17 in VARCHAR2

,P_ATTRIBUTE18 in VARCHAR2

,P_ATTRIBUTE19 in VARCHAR2

,P_ATTRIBUTE20 in VARCHAR2

,P_SEGMENT1 in VARCHAR2

,P_SEGMENT2 in VARCHAR2

,P_SEGMENT3 in VARCHAR2

,P_SEGMENT4 in VARCHAR2

,P_SEGMENT5 in VARCHAR2

,P_SEGMENT6 in VARCHAR2

,P_SEGMENT7 in VARCHAR2

,P_SEGMENT8 in VARCHAR2

,P_SEGMENT9 in VARCHAR2

,P_SEGMENT10 in VARCHAR2

,P_SEGMENT11 in VARCHAR2

,P_SEGMENT12 in VARCHAR2

,P_SEGMENT13 in VARCHAR2

,P_SEGMENT14 in VARCHAR2

,P_SEGMENT15 in VARCHAR2

,P_SEGMENT16 in VARCHAR2

,P_SEGMENT17 in VARCHAR2

,P_SEGMENT18 in VARCHAR2

,P_SEGMENT19 in VARCHAR2

,P_SEGMENT20 in VARCHAR2

,P_SEGMENT21 in VARCHAR2

,P_SEGMENT22 in VARCHAR2

,P_SEGMENT23 in VARCHAR2

,P_SEGMENT24 in VARCHAR2

,P_SEGMENT25 in VARCHAR2

,P_SEGMENT26 in VARCHAR2

,P_SEGMENT27 in VARCHAR2

,P_SEGMENT28 in VARCHAR2

,P_SEGMENT29 in VARCHAR2

,P_SEGMENT30 in VARCHAR2

,P_CONCAT_SEGMENTS in VARCHAR2

,P_ANALYSIS_CRITERIA_ID in NUMBER

,P_PERSON_ANALYSIS_ID in NUMBER

,P_PEA_OBJECT_VERSION_NUMBER in NUMBER)

IS

L_ANL VARCHAR2(1);

BEGIN

BEGIN

IF P_ID_FLEX_NUM = 50453 --Allowance Request

THEN

XX_SIT_EVENTS.CREATE_ELEMENT_ENTRY_UH_P(P_BUSINESS_GROUP_ID, P_PERSON_ID, P_ANALYSIS_CRITERIA_ID, P_SEGMENT1, P_SEGMENT2, P_SEGMENT11);

--HR_UTILITY.SET_MESSAGE (800, 'LSG_ANN_LEAVE_GREATER_THAN_30');

--HR_UTILITY.set_warning;

--RAISE_ERROR;

END IF;

EXCEPTION WHEN OTHERS THEN NULL;

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;

EXCEPTION WHEN OTHERS THEN NULL;

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;

END;

Step3:

Register user hook.

XXFUJ_CREATE_SIT_A_UHPKG.XXFUJ_CREATE_SIT_LEV_VAL

XX_SIT_EVENTS.CREATE_ELEMENT_ENTRY_UH_P

1.

SELECT ahk.api_hook_id,

ahk.api_module_id,

ahk.hook_package,

ahk.hook_procedure

FROM hr_api_hooks ahk, hr_api_modules ahm

WHERE ahm.module_name like '%CREATE_SIT%'

AND ahm.api_module_type = 'BP'

AND ahk.api_hook_type = 'AP'

AND ahk.api_module_id = ahm.api_module_id

API_HOOK_ID = 2879

API_MODULE_ID = 1279

2.

DECLARE

L_API_HOOK_ID NUMBER:= 2879;

L_API_HOOK_CALL_ID NUMBER;

L_OBJECT_VERSION_NUMBER NUMBER;

L_SEQUENCE NUMBER;

BEGIN

SELECT HR_API_HOOKS_S.NEXTVAL

INTO L_SEQUENCE

FROM DUAL;

HR_API_HOOK_CALL_API.CREATE_API_HOOK_CALL

(P_VALIDATE => FALSE,

P_EFFECTIVE_DATE => TO_DATE('01-JAN-1952','DD-MON-YYYY'),

P_API_HOOK_ID =>L_API_HOOK_ID ,

P_API_HOOK_CALL_TYPE => 'PP',

P_SEQUENCE => L_SEQUENCE,

P_ENABLED_FLAG => 'Y',

P_CALL_PACKAGE => 'XXFUJ_CREATE_SIT_A_UHPKG',

P_CALL_PROCEDURE => 'XXFUJ_CREATE_SIT_LEV_VAL',

P_API_HOOK_CALL_ID => L_API_HOOK_CALL_ID,

P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);

DBMS_OUTPUT.PUT_LINE('L_API_HOOK_CALL_ID '|| L_API_HOOK_CALL_ID);

END ;

COMMIT

SELECT API_HOOK_CALL_ID,API_HOOK_ID,

OBJECT_VERSION_NUMBER,

CALL_PACKAGE,

CALL_PROCEDURE,

ENABLED_FLAG,

STATUS

FROM HR_API_HOOK_CALLS

--WHERE api_hook_id = 2878

--WHERE API_HOOK_CALL_ID = 1263

WHERE CALL_PACKAGE LIKE '%FUJ%'

commit

3.

declare

l_api_module_id number := 1279; --Value 1731 is derived from Step 1 above using following query

begin

hr_api_user_hooks_utility.create_hooks_one_module (l_api_module_id);

dbms_output.put_line('Success');

exception when others then

dbms_output.put_line('Exception : '||SQLERRM);

end;

COMMIT

To delete an user hook:

BEGIN

Hr_Api_Hook_Call_Api.delete_api_hook_call ( p_validate => FALSE,

p_api_hook_call_id => 1274,

p_object_version_number =>2

);

DBMS_OUTPUT.PUT_LINE('deleted Successfully');

END;

COMMIT

To Update an user hook:

declare

p_object_version_number number;

BEGIN

Hr_Api_Hook_Call_Api.update_api_hook_call ( p_validate =>TRUE,

p_effective_date => to_date('01-jan-2004'),

p_api_hook_call_id =>1270,

--p_sequence in number default hr_api.g_number,

--p_enabled_flag in varchar2 default hr_api.g_varchar2,

--p_call_package in varchar2 default hr_api.g_varchar2,

--p_call_procedure in varchar2 default hr_api.g_varchar2,

p_object_version_number =>p_object_version_number

);

DBMS_OUTPUT.PUT_LINE('updated Successfully');

END;

SELECT ANALYSIS_CRITERIA_ID,

ID_FLEX_NUM,

SEGMENT1 Allowance_Name,

SEGMENT2 EFFECTIVE_DATE,

SEGMENT11 AMOUNT

FROM

PER_ANALYSIS_CRITERIA

WHERE ANALYSIS_CRITERIA_ID = 4949604

SELECT ELEMENT_NAME, ELEMENT_TYPE_ID

FROM PAY_ELEMENT_TYPES_F_TL

WHERE LANGUAGE = USERENV('LANG')

AND ELEMENT_TYPE_ID IN (593,559,562,561,564,590,589,597)

Errors and Solution:

1. Don’t forget to commit the transactions in the Step3.

2. If you get the error in the HR as “ Error: run the script $PER_TOP/admin/sql/hrahkpar.sql”

Solution: Delete the user hook , commit, create again using Step3.

3. If updated the package, procedure delete again the user hook and recreate again.

4. No need to bounce the apache or middle just run the Step3 of 3rd point.

Saturday, March 19, 2016

13.2 OAF Update Page Creation From Data Entry Page

To Create Update Page from the Existing Data Entry Page:
1. Close the Jdeveloper.
2. Copy the D:\JDev_Home\jdevhome\jdev\myprojects\xxffrd\oracle\apps\xxcust\ffrd\webui\EntryPG.xml
3. Paste in the same folder will show as ‘EntryPG– Copy.xml’
4. Change the name to UpdatePG.xml
5. Open the jdev and you can see the Upage Page.
6. Now open the EntryPGCO (Controller of EntryPG) in jdev, click save as ‘UpdagePGCO’
7. Open the UpdagePGCO and change the name of the Class from EntryPGCO to UpdatePGCO.
8. Change the Controller attached to region of UpdatePG from EntyPGCO to UpdagePGCO.
9. Its done and you got your update Page. 

28. OAF Working with Attachments.


2(I)
2.1 Create Item with
Style    attachmentTable
Instance InsertRecordsVO1.
Text     Attachments
Render Search Region False
2.2 Give EntityMap properties Entity as XX_STRILING_MAP
2.3 Right click the EntityMap and click new PrimaryKey, Give Attribute (primary Key of your VO)
2.4 no need of categoryMap.
2(II)
2.1 Create Item with Style attachmentLink , give Instance as InsertRecordsVO1.
2.2 Right click the EntityMap and click new PrimaryKey, Give Attribute (primary Key of your VO)
2.3 Right click the EntityMap and click new categoryMap, In properties under Attachments give Category as MISC

27. OAF Showing image from the database


3.1 in the VO add new column   "Null Image_Source" below created VO from EO.
SELECT StirlingPatientEntryEO.PATIENT_ID,
       StirlingPatientEntryEO.PATIENT_NAME,
       StirlingPatientEntryEO.REVIEW,
       StirlingPatientEntryEO.PHONE_NUMBER,
       StirlingPatientEntryEO.SEX,
       StirlingPatientEntryEO.AGE,
       StirlingPatientEntryEO.AMOUNT,
       StirlingPatientEntryEO.DATE_CHECKED,
       StirlingPatientEntryEO.ADDRESS,
       StirlingPatientEntryEO.LAST_UPDATE_DATE,
       StirlingPatientEntryEO.LAST_UPDATED_BY,
       StirlingPatientEntryEO.CREATION_DATE,
       StirlingPatientEntryEO.CREATED_BY,
       StirlingPatientEntryEO.LAST_UPDATE_LOGIN,
       StirlingPatientEntryEO.IMAGE,
       Null Image_Source
FROM XXSTIRLING_PATIENT_ENTRY_TABLE StirlingPatientEntryEO
3.2 Created UpdatePG with the above created VO
Check how to create UpdatePG in OAF in this Blog
3.3 for the Attribute StirlingPatientEntryEO.IMAGE below are the properties.
ID imageIT
style image
datatype CLOB
ViewInstance PatientEntryVO1
ViewAtribute Image
3.4 Add code under the processRequest of UpdagePG Controller.
           //for image display starts here
                     if(pageContext.isLoggingEnabled(1))
                     pageContext.writeDiagnostics(this, "Entering processRequest..", 1);
                     Serializable[] param = {pageContext.getTemporaryImageLocation()};
                     pageContext.getApplicationModule(webBean).invokeMethod("initImg",param); //initImg is the method we will create in AM
                     OAImageBean oaimagebean = (OAImageBean)webBean.findIndexedChildRecursive("imageIT"); //id of image in the PG
                     if(oaimagebean != null)
                     {
                     oaimagebean.setAttributeValue(UIConstants.SOURCE_ATTR, new OADataBoundValueViewObject(oaimagebean, "ImageSource")); //ImageSource we created null column in the VO
                     oaimagebean.setWidth(100);
                     oaimagebean.setHeight(110);
                     oaimagebean.setBorderWidth(2);
                     }
                     if(pageContext.isLoggingEnabled(1))
                     pageContext.writeDiagnostics(this, "Leaving processRequest..", 1);
                     }
               //for image display ends here here
              
              

3.5 method in AM .
//for image dob starts here
public void initImg(String s2)
{
OAViewObjectImpl oaviewobjectimpl = getPatientEntryVO1();      //VO name
oaviewobjectimpl.executeQuery();
if(oaviewobjectimpl.first() != null)
{
OARow oarow = (OARow)oaviewobjectimpl.first();
BlobDomain blobdomain = (BlobDomain)oarow.getAttribute("Image"); //attribute name of blob column i.e., Image
if(blobdomain != null)
{
String s3 = createFile(s2, blobdomain, (String)oarow.getAttribute("PatientName")); //attribute name of PatientName
oarow.setAttribute("ImageSource", s3);
}
}
}
public void fromInputToOutput(InputStream inputstream, OutputStream outputstream)
throws IOException
{
byte abyte0[] = new byte[255];
for(int i = 255; i == 255;)
{
i = inputstream.read(abyte0);
if(i < 0)
break;
outputstream.write(abyte0, 0, i);
}
outputstream.close();
inputstream.close();
}
public String createFile(String s, BlobDomain blobdomain, String s1)
{
File file = new File(s);
if(!file.exists())
file.mkdirs();
File file1 = new File(s, s1);
try
{
fromInputToOutput(blobdomain.getBinaryStream(), new FileOutputStream(file1));
}
catch(IOException ioexception)
{
ioexception.printStackTrace();
}
return "fwk/t/" + file1.getName();
}

//for image dob ends here              

ref: https://community.oracle.com/message/2197822#2197822

26. OAF Storing Images into Database


1. In database table create column datatype as Blob
2. In VO Attribute based on EO Check the attribute type is BlobDomain
3. Create Item in Region:
itemStyle : MessageFileUpload.
 DataType : Blob 

25. OAF Multi Language text (Ex: Arabic, French)

In our Company we have Both English and Arabic Instances for Oracle Apps R12.1.3
So If we create any Custom OAF Page we need to add the Arabic Labels. Let see how to add them.
Example:
Page:ResultBaseSearchPG
Step1: Create folder under D: Drive as Temp
Step2: run the below command in cmd.
D:\JDev_Home\jdevbin\oaext\bin\xliffextract /xxresultbasesearch/oracle/apps/po/resultbasesearchprj/webui/ResultBaseSearchPG
-root D:\JDev_Home\jdevhome\jdev\myprojects
-source db -username apps -password apps
-dbconnection "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.10)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=VIS)))"
-languages ar-AE
-mmd_dir D:\JDev_Home\jdevbin\oaext\config\mmd
-xliff_dir D:\Temp\XLIF\XXTFRMSLAUC19

below is same as above but in single line to directly paste in cmd prompt:
D:\JDev_Home\jdevbin\oaext\bin\xliffextract /xxffrd/oracle/apps/xxcust/ffrd/webui/ResultBaseSearchPG -root D:\JDev_Home\jdevhome\jdev\myprojects  -source db -username apps -password apps  -dbconnection "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.10)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=VIS)))"  -languages ar-AE  -mmd_dir D:\JDev_Home\jdevbin\oaext\config\mmd  -xliff_dir D:\Temp\XLIF\ResultBaseSearchPGAR

Step3: The above command will create xlf file under D:\Temp\XLIF\ResultBaseSearchPGAR
Open the xlf file> change the text for all the <target>
Let say:
Before:
<source>FileNumber</source>
           <target>FileNumber</target>
           <prop-group name="ora_untranslatable">
              <prop prop-type="tagName">messageStyledText</prop>
              <prop prop-type="attributeName">prompt</prop>
After Mofication:
<source>FileNumber</source>
           <target>رقم الملف</target>
           <prop-group name="ora_untranslatable">
              <prop prop-type="tagName">messageStyledText</prop>
              <prop prop-type="attributeName">prompt</prop>
-- It was before FileNumber in <target> we changed to our Arabic Language and save it.

Step4:
Importing the Translation in to Apps:
D:\JDev_Home\jdevbin\oaext\bin\xliffimport -username apps -password apps -dbconnection "(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=10.10.10.10)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=VIS)))" D:\Temp\XLIF\ResultBaseSearchPGAR\ar-AE\ResultBaseSearchPG.xlf

Step5: For export and import of translations no information will be shown in the command prompt unless there is error.

Step6: Just login to apps change the instance to arabic and check it.

24. OAF Interview Questions

OAF Interview Questions – Part1

1. What is an EO?
a. Map to a database table or other data source
b. Each entity object instance represents a single row
c. Contains attributes representing database columns
d. Fundamental BC4J object through which all inserts/updates/deletes interact with the database
e. Central point for business logic and validation related to a table
f. Encapsulates attribute-level and entity-level validation logic
g. Can contain custom business methods
2. What is a VO?
a. Represent a query result
b. Are used for joining, filtering, projecting, and sorting your business data
c. Can be based on any number of entity objects
d. Can also be constructed from a SQL statement
3. What are the methods in controller?
ProcessRequest, ProcessformData and processformrequest
ProcessRequest : is called when the page is requested for the first time from the server.
ProcessFormRequest : is called when some event occurs on the page
ProcessformData(not visible). : Used to capture Data from the form fields which the user has entered and post it into Model Layer.
4. What is a Controller?
Controller is the java file and can be associated to a complete OAF page or to a specific region.
There are several tasks you will do routinely in your code.
Handle button press and other events
Automatic queries
Dynamic WHERE clauses
Commits
JSP Forwards
The logic for accomplishing all these tasks is written in controller
5. When is the processRequest method called?
PR method is called when the page is getting rendered onto the screen
6. When is processFormRequest method called?
PFR method is called when we perform some action on the screen like click of submit button or click on lov
7. What is extension?
Extension is when you take an already existing component ex an OAF page or a region and then add some more functionality to it without disturbing the original functionality.
8. What is personalization?
Oracle Apps Framework has an OA Personalization Framework associated with it so that you can personalize any OAF page in an Oracle E-business Suite application without changing the basic or underlying code of that OA Framework page, Oracle Application Framework makes it very easy to personalize the appearance of the page or even the personalization of data displayed on to an OA Framework page.
9. What are levels of personalization?
1. Function Level
2. Localization Level
3. Site Level
4. Organization Level
5. Responsibility Level
6. Admin-Seeded User Level
7. Portlet Level
8. User Level
10) What is BC4J?
Business Components for Java is JDeveloper’s programming framework for building multitier database applications from reusable business components. These applications typically consist of:
• A client-side user interface written in Java and/or HTML.
• One or more business logic tier components that provide business logic and views of business objects.
• Tables on the database server that store the underlying data.
11.What are all the components of BC4J?
Following are the components of BC4J:
• Entity Object – EO encapsulates the business logic and rules. EO’s are used for Inserting, Updating and Deleting data from the database table. E0 is also used for validating the records across the applications.
• View Object – View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set. VO’s are primarily based on EO’s. It can be used on multiple EO’s if the UI is for update.
• Application Module – Application Modules serve as containers for related BC4J components. The pages are related by participating in the same task. It also defines the logical data model and business methods needed.
12) What is an EO?
EO encapsulates the business logic and rules.EO’s are used for Inserting, Updating and Deleting data. This is used for validating across the applications. We can also link to other EO’s and create a Association object.
13) What is an VO?
View object encapsulates the database query. It is used for selecting data. It provides iteration over a query result set.VO’s are primarily based on Eo’s. It can be used on multiple EO’s if the UI is for update. It provides a single point of contact for getting and setting entity object values. It can be linked together to form View Links.
14) What is an AO?
An association object is created where we link EO’s. For example take the search page where we link the same EO to form a association between the manager and employee. Every employee should have a manager associated. But if it President then no there is no manager associated. This is a perfect example to understand the AO.
15) What is an VL?
A view link is an active link between view links. A view link can be created by providing the source and destination views and source and destination attributes. There are two modes of View link operation that can be performed. A document and Master/Detail operation.
16). What is UIX?
UIX is an extensible, J2EE-based framework for building web applications. It is based on the Model-View-Controller (MVC) design pattern, which provides the foundation for building scalable enterprise web applications.
17). Where the VO is located in the MVC architecture?
VO is located in the View Layer in MVC which is responsible for presenting the data to the user.
18) Which package should include EO and AO.
The EO and AO will be present in the schema.server package.
19) What is the difference between inline lov and external lov.
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.
External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.
20) What is a Javabean?
JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.
21) What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.
22) What is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.
23) What is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.
24) What is XML?
XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).
25) What is the difference between customization and extension?
Customization is under direct user control. The user explicitly selects between certain options. Using customization a user can:
Altering the functionality of an application
Altering existing UI
Altering existing business logic
Extension is about extending the functionality of an application beyond what can be done through personalization. Using extension we can:
Add new functional flows
Extend or override existing business logic
Create New application/module
Create New page
Create New attribute
Extend/Override defaults & validations
26) What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Using Personalization we can:
• Tailor the order in which table columns are displayed.
• Tailor a query result.
• Tailor the color scheme of the UI.
• Folder Forms
• Do Forms Personalization
27) Can you extend every possible Application Module?
No..Root AM cannot be extended.
28) What is rootAM?
The application module which is associated with the top-level page region (the pageLayout region) is root application module.
29) Why can’t Root AM be extended?
The root AM is loaded first and after that the MDS Substitutions are parsed.
Hence ROOT AM gets loaded even before the time the substitutions definition from MDS layer get worked out.
Obviously, the root am cant substitute itself, hence it can’t be extended
30) What are the various profile options in OAF?
FND Diagnostics: required for ABOUT THIS PAGE and Diagnostic link on page.
Personalize Self Service Definitions: To enable Personalize page link on the page.
FND Personalization Region Link Enabled: used to enable Region Personalization links at every region.
FND Migrate to JRAD: By default set to Yes. Page would run from MDS if Yes, else it will run from AK.
FND Document root path: required for personalization migration. It is set to path of the MDS folder on the respective servers.
FND Branding image:
FND Banding Size: these profiles options are used for changing standard image (Oracle) on the page.
31) Steps for VO substitution?
1. About this Page-> VO, AM, EO, Path of Page
2. Export Commad (in cmd Prompt)
3. New .jpr =Open page
4. Look for AM and VO or EO.
5. Copy the class files of VO,AM or EO
6. Decompile into Java and store it into MyProjects (with respective directory structure)
7. Open VO.xml in a new jpr
8. Create a new BC4J based on your Original VO.
9. Create a new VO and extends original VO
10. Change the query
11. Rebuild the project
12. Go to .jpx(double click)
13. Go to Substitutions
14. Substitute Vo
15. Rebuild your Project .jpr
16. Transfer New VO class and xml to respective directory structure
17. FTP .jpx into $JAVA _TOP
18. unix command promrt CD$ JAVA_TOP
19. jpx importer command
20. Bounce Apache Server
32) What are different methods for passing paramaters?
1. Tokens
eg. vname={@AttributeName}
2. Hash Maps
eg. HashMap variablename=nre HashMap();
variablename.add(“ParameterName”,ParameterValue);
3.ThroughSession
eg. pageContext.putSessionvalue(“ParamterName”,ParameterValue)
33) setForwardURL list
There are many parameters, here is the complete list of it:-
public void setForwardURL(String functionName,
byte menuContextAction,
String menuName,
com.sun.java.util.collections.HashMap parameters,
boolean retainAM,
String addBreadCrumb,
byte messagingLevel)
Parameters:
functionName – This is the function name representing the page you want to forward to. If its null, an IllegalArgumentException will be thrown.
Also if the function is not under the current HOMEPAGE a OAException will be thrown.
menuContextAction – Determines the behavior of the MenuContext after forwarding to the new page. It accepts the following values:
OAWebBeanConstants.KEEP_MENU_CONTEXT: Keeps the menu context as is.
OAWebBeanConstants.KEEP_NO_DISPLAY_MENU_CONTEXT: Keeps the menu context as is, but will not display all menus including global buttons.
OAWebBeanConstants.KEEP_NO_DISPLAY_MENU_CONTEXT_RETAIN_GLOBAL_BUTTONS: Keeps the menu context as is, but will not display all menus excluding global buttons.
OAWebBeanConstants.REMOVE_MENU_CONTEXT: Removes the menu context
OAWebBeanConstants.GUESS_MENU_CONTEXT: Selects the given functionName function if it exists in the current menu.
If not it will try to make a guess by moving up the menu tree until it finds it. An exception will be thrown if the function could not be located.
OAWebBeanConstants.RESET_MENU_CONTEXT: Reset the menu context to the given functionName and menuName.
menuName – The name of the HOMEPAGE menu to reset the Menu context to when the menuContextAction is OAWebBeanConstants.RESET_MENU_CONTEXT.
If the menuName is not of type HOMEPAGE a OAException will be thrown. You can pass null otherwise.
parameters –
HashMap of parameter name/value pairs to append to the forward URL. The final forward URL parameters are in the following sequence:
It will first get the function’s corresponding URL call by querying the function information from the database. If the user is not authorized to execute this function, a security OAException will be thrown.
It will then append all parameters passed in the parameters HashMap. First parameter added to the HashMap will be first added to the URL. Also the framework will encode all parameter values before appending them to the URL.
It will remove all parameters if they have null values in the passed parameters HashMap. This provides an easy way for developers to set a certain parameter’s value to null if they want to remove it.
It will remove any OA Framework internal URL parameters such as bcrumb, retainAM, and so on..
retainAM – If true, all the cached application modules will be retained. If false, all the cached application modules will be released.
Developers must use this parameter to control the release behavior of the cached appplication modules.
This method will ignore any retainAM=true or retainAM=false as a URL parameter or as part of parameters
34) Code to copy rows in VO
public void copy()
{
SuppliersVOImpl pervo = getSuppliersVO1();
Row row[] = pervo.getFilteredRows(“SelectFlag”,”Y”);
for (int i=0;i35) What for isPreparedForExecution() and executeQuery() methods used?
isPreparedForExecution function will check whether all parameters are assigned properly and query is ready for execution.
On multiple navigations to the page this query will not be executed multiple times.
While executeQuery function is used for executing the VO query so that it can fetch the data from database into VO cache.
36) What is the pattern used in developing any OAF component?
MVC (Model, View, Controller)
Lists the components in the MVC architecture
Model: Application Module, View Objects, View Links, Entity Objects, Entity Associations etc.
View: Page, Region, Attributesets etc.
Controller: Controller class files
36) What is the pattern used in developing any OAF component?
MVC (Model, View, Controller)
Lists the components in the MVC architecture
Model: Application Module, View Objects, View Links, Entity Objects, Entity Associations etc.
View: Page, Region, Attributesets etc.
Controller: Controller class files
37) Which is the component responsible for user actions?
Controller is the object. The code present in ProcessFormRequest gets executed up on the user action.
38) If we have to initialize something during the page loading, which is the right place?
A. ProcessRequest() method of the Controller file is the right place.
39) What is the significance of ProcessFormData()?
For a ‘POST’ request the data on the page is binded to the view object in this method
40) Does ‘GET’ request result in calling ProcessFormData()?
No, only POST request calls that.
41) What is the main Controller component in OAF?
OAController is the main class and our controller will become subclass of it.
42) How does page structure get created at runtime?
OAPageBean is responsible for creating the bean hierarchy structure at runtime after calling ProcessRequest() of each of the beans in the hierarchy.
43) Where does the client BC4J objects get placed in the server?
They are located in the oracle.apps...server
44) Where does the server BC4J objects get placed in the server?
They are located in the oracle.apps...schema.server
45) Where does the Page and Controller related files get placed?
They are located in oracle.apps...webui
46) What are Validation View Objects?
They are the VVO’s used in validation of attributes, they are the BC4J components and have their AM ie VAM Validation Application Module
47) What is the version of Jdeveloper to be used in 11i or R12?
For 11i, Jdeveloper 9i will be used and for R12 Jdeveloper 10g will be used.
48) What is a Database Connectivity File?
It is a .dbc file which is specified in the project properties. The location of this file on the server is $FND_TOP/secure
49) What is a View Object?
It is a BC4J(Business Component for Java) object which encapsulates the query results. View objects will support the display of the content to user in the Page.
50) How do you create a view object?
View objects can be created in the Business components package, can be based on entity objects or an sql query. View objects based on sql query are read only view objects
51) What is an entity object?
Entity object is created based on a database table, it is responsible for insertion/updation/validation of the table data. They are stored in the oracle.apps...schema.server package directory
52) What is an Application Module(AM)?
Application module holds the related objects pertaining to an application ie. View objects, Entity Objects etc. The application module helps in getting the required database connection, maintains the page session or transaction context
53) What is the object passed to every page request?
OAPageContext object is passed to every request, using this object the controller initializes the application module object and will call the required methods.
54) Where is the view object(VO) initialization or query filtering done?
It is done with view object implementation class Ex. EmpVOImpl.java
55) What is the property to set for an AM so that the transaction state is maintained across pages?
RETENTION_LEVEL property is set to value MANAGE_STATE for an AM.
56) What is the Personalization?
Personalization means changes to the existing ‘Page’ according to the customer requirement
57) Give some examples of Page Personalization?
Addition of new columns to a table results, adding of fields, changing the order of regions, columns etc. Apart from this validation of certain fields, display of Descriptive flex fields etc can also be achieved
58) What is extension?
Extension is the changing of the existing components for adding more features or customer required features. View Objects, Controller, Application Module can be extended.
59) What is substitution?
When view objects are extended, we need to tell the applications that our extended view object should be used or substituted during runtime, substitution will serve this purpose
60) How to do register a new OA Framework page in Oracle Applications?
oracle.jrad.tools.XMLImporter utility will be used. After successfully importing the page data will be stored in metadata repository tables of the database
61) How do you move personalization from one machine to another?
Using the functional administrator responsibility the xml file can be downloaded, this file contains the required personalization done on a particular page. The same can be used to upload in a different instance. Here XMLImporter utility can be also used.
62) How is the applications security maintained during the OA Framework components development or how is the required security obtained?
The Database connectivity file ( .dbc file) has the applications username and password along with the responsibility to be used for connecting to the applications at page run time.
63) What are the different layers of onion reuse object model in OAF?
The hierarchy is as :
Controller (XXCO.java)
|__
Application Module (XXAMImpl.java, XXAM.xml)
|__
View Objects(XXVOImpl.java, XXVORowImpl.java, XXVO.xml)
|__
Entity Objects(XXEOImpl.java, XXEO.xml)
|_ Database
64) What is ‘Partial Page Rendering’ PPR?
PPR is a mechanism where in only the required part of the page is refreshed as against the whole page. The page objects fire the ‘events’ and accordingly the request is handled in the controller file
65) What are the search region options available?
Simple Search – ResultBasedSearch is the construction mode for the region
Advanced or autocustomization search – Autocustomization is the mode here
None – User has the develop the page, regions, controller etc here
66) What is the bean used for supporting transactions across pages visually to the user?
OATrainBean is used to link the pages across the transaction. AM supports the transaction context or state here across the pages.
67) How does personalization takes its effect at runtime?
After the page structure or bean hierarchy is formed with, the personalization layers get applied on top of it to come up with the final structure. Remember that is the reason why personalization is upgrade safe.
68) Name some components requiring extension?
View Objects, Controller, Application Module. Yes nested application module concept is allowed.
After you modify a class file and move it to the server what is the immediate step that will be followed?
The services of the instance ie. Apache server etc. have to be bounced so that the new code in the class file takes effect.
69) Where does the two categories of files in OAF be placed in the server?
All the xml files of the page/region will be placed in the respective TOP’s mds directory. All the class files irrespective of TOP will be placed under $JAVA_TOP which can be $COMMON_TOP/java
70) When do you create additional business components package?
Apart from B4CJ client business components package and B4CJ server business components package we create additional business components package when we develop any sharable thing such as ‘LOV’ (List of Values), ‘Poplist’ etc which will be used in multiple pages
71) How do you map the LOV created to your base page?
One of the items in the page has to be MessageLOVInput which extends the new LOV region, apart from this LOV mappings between base page and LOV region have to be created.
72) What is the default top region of any new page that you create?
PageLayout is the top level default region
73) At what level region controller for a page can be set?
It can be under a Main region under PageLayoutRegion or any region as per the business need. Provision of defining multiple controllers for a page also exist.
74) PPR follows GET or POST flow?
POST flow
75) What is the extension to the tool for developing OAF components?
Jdeveloper OA Extension class support the OA F development
76) What are the methods in controller?
ProcessRequest and processformrequest
77) What is a Controller?
Controller is the java file and can be associated to a complete OAF page or to a specific region.
There are several tasks you will do routinely in your code.
? Handle button press and other events
? Automatic queries
? Dynamic WHERE clauses
? Commits
? JSP Forwards
The logic for accomplishing all these tasks is written in controller
78) When is the processRequest method called?
PR method is called when the page is getting rendered onto the screen
79) When is processFormRequest method called?
PFR method is called when we perform some action on the screen like click of submit button or click on lov
80) What are levels of personalization?
1. Function Level
2. Localization Level
3. Site Level
4. Organization Level
5. Responsibility Level
6. Admin-Seeded User Level
7. Portlet Level
8. User Level
81) What is the difference between inline lov and external lov.
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.
External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.
82) What is a Javabean?
JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.
83) What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.
84) What is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.
85) What is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.
86) What is XML?
XML is a markup language for documents containing structured information.
Structured information contains both content (words, pictures, etc.) and some indication of what role that content plays (for example, content in a section heading has a different meaning from content in a footnote, which means something different than content in a figure caption or content in a database table, etc.).
87) What is the difference between customization and extension?
Customization is under direct user control. The user explicitly selects between certain options. Using customization a user can:
Altering the functionality of an application
Altering existing UI
Altering existing business logic
Extension is about extending the functionality of an application beyond what can be done through personalization. Using extension we can:
Add new functional flows
Extend or override existing business logic
Create New application/module
Create New page
Create New attribute
Extend/Override defaults & validations
88) What is Personalization?
Personalization enables you to declaratively tailor the UI look-and-feel, layout or visibility of page content to suit a business need or a user preference. Using Personalization we can:
• Tailor the order in which table columns are displayed.
• Tailor a query result.
• Tailor the color scheme of the UI.
• Folder Forms
• Do Forms Personalization
88)Can you extend every possible Application Module?
Answer: No..Root AM cannot be extended.
89) What is rootAM?
The application module which is associated with the top-level page region (the pageLayout region) is root application module.
90) Why can’t Root AM be extended?
The root AM is loaded first and after that the MDS Substitutions are parsed.
Hence ROOT AM gets loaded even before the time the substitutions definition from MDS layer get worked out.
Obviously, the root am cant substitute itself, hence it can’t be extended
91) What is MVC Architecture?
MVC Architecture is a Model View Controller Architecture. The controller responds to user actions and directs application flow. The model encapsulates underlying data and business logic of the application. The view formats and presents data from a model to the user.
92) Which is the MVC layer VO located?
O is located in the View Layer which is responsible for presenting the data to the user.
93) Which package should include EO and AO.
The EO and AO will be present in the schema.server package.
94) What is the difference between inline lov and external lov.
Inline lov is a lov which is used only for that particular page for which it was created and cannot be used by any other page.External lov is a common lov which can be used by any page. It is a common component for any page to use it. It can be used by giving the full path of the lov in the properties section “External LOV” of the item.
95) What is a Javabean?
Ans: JavaBeans is an object-oriented programming interface that lets you build re-useable applications or program building blocks called components that can be deployed in a network on any major operating system platform.
96) What is query Bean?
QueryBean is used to execute and return the results of a query on behalf of the QueryPortlet application.
97) What is the difference between autocustomization criteria and result based search?
Results based search generates search items automatically based on the columns on the results table.
In Autocustomization search we need to set what all fields are required to display as a search criteria.
98) What is MDS?
MDS is MetaData Service. When a web page is broken into small units like buttons,fields etc they are stored in a database. These are not stored as binary files but as data in tables. The data are present in JDR tables. MDS provides service to store & return page definitions. MDS collects those definitions in components/fields in a meaningful manner to build a page.
99) Why Should we give retainAM=Y?
The AM should be retained whenever you are navigating away from a page and when you know that there is a possibility to come back to the page again and data is to be retained. Example : Any navigation link that opens in a new page or any navigation which has a back button to come back to the initial page.
The AM should not be retained for two independent pages, especially if they have common VOs which fetch different result sets. In such cases, retaining the AM may not remove the cache of VOs and so the result may not be as expected.
100) What is the significance of addBreadCrumb=Y
The basic intention of the breadcrumb is to let the user know of the navigation path he took to reach the current page.
101) How do you find right jdev patch for your oracle application version.
Search in oracle.metalink.com as Jdev with OA Extension.
100) How do you find right jdev patch for your oracle application version.
Search in oracle.metalink.com as Jdev with OA Extension.
101) What are the tools you had used for decompiling java class?
Jad is one of the tool for decompiling the java class.
102) What will setmaxFetchSize(0) will do?
setmaxFetchSize just determines how much data to be sent at a time.
105) What is a HGrid?
A HGrid, otherwise known as a hierarchy grid, allows users to browse through complex sets of hierarchical data.
106) Tell me the OAF components required for a simple search page?
VO,AM,Page
107) What is a switcher in oAF and when it is used?
A switcher is a control, that allows the selective display of information.For example if you want to display a image for update enabled and update disabled you can use switcher.
108) What are all the methods in CO?
processForRequest
processRequest
109) When a page renders which method in CO fires?
processRequest
110) How do you handle back button navigation in OAF based application?
Ans: Want to answer this section? use the comment section.
111) Where will you write your business logic?
EO.
112) What will vo.createRow() do?
createRow creates a row in the VO.
113) How do you catch the button event on ProcessFormRequest Method?
if (“update1?.equals(pageContext.getParameter(OAWebBeanConstants.EVENT_PARAM)))
Here update1 is the event.
114) What is pageButton bar?
When you want to display buttons on top and bottom of the page then you create a region as pageButtonbar and create buttons within this region.
115) How do you add a link to OAF Page?
Create a new item with style as link and give its destination uri property which is the url where you want to navigate to.
116) Which is the top most region in OAF page?
PageLayoutRN
117) What are all the several ways to debug an OAF based application?
We can use the debugger option .Set breakpoints and run the page in debug mode.
118) How do you call an pl/sql api from OAF page.
To call a PL/SQL API from OAF, we use OracleCallableStatement or CallableStatement
119) Should a search page have an EO?
Not necessary. If you are creating a record then we need a EO
120) What will happen when you set DisableClientSideValidation property to True?
If you set the property to True it shows that there will no validation that will occur on the web tier as part of the form submit.
121) What is SPEL?
It is an expression that will either return TRUE or FALSE.
122) Where is a SPEL used?
SPEL is used in places where you want to show or hide an item programatically.
123) What is PPR?
PPR is Partial Page rendering. Which means that only a particular part of the page is refreshed and not the entire page.
Examples of PPR scenarios?
Ans: [*]Hiding/Showing Objects[/*]
[*]Required/Optional[/*]
[*]Disabled/Enabled[/*]
[*]Read only/Updatable[/*]
124) How do you generate stack of exception and display the list of error messages in OAF page?
Create an arrayList of exceptions then do a raiseBundledException.
125) What is the significance of ProcessFormData method?
Fires when page submit happens..
126) Describe the steps for VO Extension?
1.Identify VO to be extended.And Copy to your machine from server.
2.Create new Vo in xx.oracle.apps package and extend parent VO.
3.Create substitution in jdev.
4.Deploy extended VO to $JAVA_TOP.
5.Load jpx file to database using jpximporter..
127) How to enable personlization?
1.Login to the application.
2.Click on Functional Administrator responsibility.
3.Click on Core Services Tab.
4.Click on Profiles.
5.Enter Pers%Self% in Name and click Go.
6.In the results you will see Personalise Self-Service Defn.Update it and enter Yes in the Site Value
128) When we should bounce the page?
Want to answer this section? use the comment section.
129) What is the command used to import an oaf page and region?
java oracle.jrad.tools.xml.importer.XMLImporter $JAVA_TOP/ -username <>-password <>-dbconnection “(DESCRIPTION= (ADDRESS=(PROTOCOL=tcp)(HOST=[LINK=http://cpa51d.cpa.bdoutsource.com/][/LINK])(PORT=1558)) (CONNECT_DATA= (SID=<>) ) )” -rootdir . ;
130) Where to locate the definition of standard OAF Pages and regions?
$APPL_TOP/icx/11.5.0/mds/por/ — for purchasing
131) What is Passivation?
Passivation is the process of saving application state to a secondary medium (the database) at specific event points so it can be restored (activated) when needed.
132) How do you get the value from the database sequence?
OADBTransaction transaction = getOADBTransaction();
Number employeeId = transaction.getSequenceValue(“SEQ Name”);
setEmployeeId(employeeId);
133) How do you perform your validation in OAF?
All OAF validations are done in the Entity Object.
134) How do you copy rows from one vo to another?
To copy multiple rows you can add the multipleSelection item for the table.Check which row is selected and write code for implementing this.
135) What is a transaction unit in OAF?
With the transaction unit identifier, you can indicate when a specific UI task begins and ends, and if the user navigates in an unexpected manner such as using the browser Back button. You can check the transaction unit status and react to ensure that inappropriate actions are not performed and unwanted data in the BC4J cache is not committed.
136) How to implement a dependent poplist?
Dependent poplist can be implemented by enabling firePartialAction and capturing the event for the source poplist and passing the value selected in the source to the method where we set the where clause and execute the query for the destination poplist.
137) How do we pass parameters between pages?
pageContext.forwardImmediately(“OA.jsp?page=/xxch/oracle/apps/fnd/test/webui/DetailsPG&fname=”+fname.
Here fname is the variable we are passing to the DetailsPG.
138) How do we synchronize a EO and Table in the database?
Right click on the EO and click Synchronise.
139) How to set currency formatting in an OAF advance table region?
pageContext.getOANLSServcies().formatCurrency(num,”USD”);
140) How to call Concurrent Program in OAF?
public int submitRequest( String ProgramApplication ,String ProgramName ,String ProgramDescription ,String StartTime,boolean SubRequest,Vector Parameters ) throws RequestSubmissionException
ProgramApplication -Application Short name of application under which the program is registered.
ProgramName – Concurrent Program Name for which the request has to be submitted.
ProgramDescription – Concurrent Program Description.
StartTime – Time at which the request should start running.
SubRequest – Set to TRUE if the request is submitted from another running request and has to be treated as a sub request.
Parameters – Parameters of the concurrent Request.
Example:
public int submitCPRequest(OAPageContext oapagecontext,OAWebBean oawebbean,Number headerId)
{
OAApplicationModule am = oapagecontext.getApplicationModule(oawebbean);
try {
OADBTransaction tx = (OADBTransaction)am.getOADBTransaction();
java.sql.Connection pConncection = tx.getJdbcConnection();
ConcurrentRequest cr = new ConcurrentRequest(pConncection);
String applnName = “PO”; //Application that contains the concurrent program
String cpName = “POXXXX”; //Concurrent program name
String cpDesc = “Concurrent Program Description”; // concurrent Program description
Vector cpArgs = new Vector(); // Pass the Arguments using vector
cpArgs.addElement((String)headerId);
int requestId = cr.submitRequest(applnName, cpName, cpDesc, null, false, cpArgs); // Calling the Concurrent Program
tx.commit();
return requestId;
}
catch (RequestSubmissionException e)
{
OAException oe = new OAException(e.getMessage());
oe.setApplicationModule(am);
throw oe; }
}
141) How to Extend a VO which is having View Link?
VO extension will take of viewlink by itself So we can extend this VO as usual VO Extension.
142) What is the Purpose of Serializable in OAF?
To Pass Multiple parameters of different type as a single
143) How to Synchronize an Entity Object (EO) with Data Base?
Step 1 : Right click on Entity Object(EO) and click on “Synchronize with DataBase..”
Step 2 : Double Click on the EO, Click on Attributes in the left Panel and then Click on “New from Table….”
144) What are the methods in controller?
Controller is having three type of methods they are
1. ProcessRequest, 2. ProcessFormRequest 3. ProcessFormData
145) How do you catch the button event on ProcessFormRequest Method?
if (pageContext.getParameter(.EVENT_PARAM). equals(“update”)) Here update is the event.
146) How to create a Dynamic VO?
OAApplicationModule am = oapagecontext.getApplicationModule(oawebbean);
String DynamicVOQuery = “select a.scheduled_start_date,a.wip_entity_id,b.wip_entity_name from WIP_DISCRETE_JOBS a,WIP_ENTITIES b “;
DynamicVOQuery = DynamicVOQuery + “where a.wip_entity_id=b.wip_entity_id and wip_entity_name = :1 “;
OAViewObject DynamicViewObject =(OAViewObject) am.findViewObject(“DynamicVO”);
if(DynamicViewObject == null) {
DynamicViewObject =(OAViewObject) am.createViewObjectFromQueryStmt(“DynamicVO “, DynamicVOQuery);
DynamicViewObject.setWhereClauseParams(null);
DynamicViewObject.executeQuery(); oracle.jbo.Row row1 =DynamicViewObject.first();
if(row1 != null)
{ String mFndUserDescription = row1.getAttribute(0).toString(); }
DynamicViewObject.remove(); }
147) When is processFormRequest method called?
ProcessFormRequest(PFR)t method is called when we perform some action on the screen like click of submit button or click on Go or any action perform on the page the result is displayed is called PFR.
148) Which package should include EO and AO?
The EO and AO will be present in the schema.server package.
149) What is Activation and Passivation in OAF
Passivation is the process of saving application state to a secondary medium (the database) at specific event points so it can be restored (activated) when needed. This restoration of data is called Activation. Passivation in OAF is done implicitly when the appropriate profile options are enabled.
150) What is Validation View Object(VVO), Validation Application Module , Root Application Module , View Link , Entity Expert , Association Object , Attribute Set?
Validation View Object – A view object created exclusively for the purpose of performing light-weight SQL validation on behalf of entity objects or their experts.
Validation Application Module – An application module created exclusively for the purpose of grouping and providing transaction context to related validation view objects. Typically, a standalone entity object or the top-level entity object in a composition would have an associated validation application module.
Root Application Module – Each pageLayout region in an OA Framework application is associated with a “root” application module which groups related services and establishes the transaction context.
This transaction context can be shared by multiple pages if they all reference the same root application module, and instruct the framework to retain this application module (not return it to the pool) when navigating from page to page within the transaction task.
View Link – Establishes a master/detail relationship between two view objects
Entity Expert – A special singleton class registered with an entity object (EO) that performs operations on behalf of the EO.
Association Object – BC4J association objects implement the relationships between entity objects. For example, a purchase order header can reference a supplier, or it can own its order lines.
Attribute Set – Bundles of region or item properties that can be reused either as is or with modifications. For example, all buttons sharing the same attribute set would have the same label and Alt text.