0% found this document useful (0 votes)
37 views101 pages

AOL

The document outlines the process of creating and managing various Oracle Application components, including functions, menus, concurrent programs, and user profile options. It details the necessary SQL queries and PL/SQL scripts for registering and deleting these components, as well as setting up security and request groups. The objective is to enable the registration of custom application components and understand the integration with Oracle Applications.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views101 pages

AOL

The document outlines the process of creating and managing various Oracle Application components, including functions, menus, concurrent programs, and user profile options. It details the necessary SQL queries and PL/SQL scripts for registering and deleting these components, as well as setting up security and request groups. The objective is to enable the registration of custom application components and understand the integration with Oracle Applications.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 101

Creating (AOL objects) Function, Menu, Request Group,

Responsibility,Concurrent Program,Users,Flex fields,


Value sets, Profile Options from Application and with API
Script (Backend)

AOL is a collection of pre-built application components and facilities and it consists


of forms, subroutines, concurrent programs and reports, database tables and
objects, messages, menus, responsibilities, flex filed definitions, various guides and
library functions.

Objective:
§ Register custom Application components.
§ Understand the security authorization features of Oracle Applications.
§ Run concurrent programs using Standard Report Submission.
§ Design and implement Key and Descriptive Flex fields.
§ Define and modify user profile options.

Setting Up Your Application:


§ Oracle Applications and custom applications that integrate with Oracle
§ Applications need to have a particular directory structure where its
§ Components must be available.
Those components are,
1. Forms 2. Menus 3. Programs 4. Reports.

Register Functions: § A function is a part of an application functionality that is


registered under a unique name for the purpose of assigning /excluding it from a
responsibility. § Application developers register functions when they develop forms.
select * from fnd_form_functions
select * from fnd_form_functions_tl
Menus:
§ A menu is a hierarchical arrangement of application functions that is displayed in
the navigator window.
§ A menu consists of menu entries, which could be a submenu or a function.
§ Form functions are selected and navigated to using Navigator window.
§ Each responsibility has a menu associated with it.
§ Note the Menu name associated with a responsibility.
SELECT * FROM FND_RESPONSIBILITY_TL
WHERE RESPONSIBILITY_NAME = 'Application Developer'
select * from FND_MENUS_VL
SELECT * FROM FND_MENUS
SELECT * FROM FND_MENUS_TL
SELECT * FROM FND_MENU_ENTRIES
SELECT * FROM FND_MENU_ENTRIES_TL
§ Query the menu name to find the menu entries.
§ Add your functions as menu entries here or create a new menu with your
functions and add that as a sub- menu here.
§ Now you switch the responsibility and check whether your menu entry is
appearing in corresponding responsibility.
List of Menus Excluded from a given Responsibility:
SELECT frv.responsibility_name,
fmv.user_menu_name
FROM fnd_resp_functions frf,
fnd_menus_vl fmv,
fnd_responsibility_vl frv
WHERE frf.rule_type = 'M'
AND frf.action_id = fmv.menu_id
AND frf.responsibility_id = frv.responsibility_id
AND frv.responsibility_name = '&resp_name';
List of Functions Excluded from a given responsibility:
SELECT frv.responsibility_name,
fffv.user_function_name
FROM fnd_resp_functions frf,
fnd_form_functions_vl fffv,
fnd_responsibility_vl frv
WHERE frf.rule_type = 'F'
AND frf.action_id = fffv.function_id
AND frf.responsibility_id = frv.responsibility_id
AND frv.responsibility_name = '&resp_name';
Concurrent Program Name, Responsibility Name and User Name for a
concurrent request id?
SELECT fcr.request_id,
frv.responsibility_name,
fcpv.concurrent_program_name prog_short_name,
fcpv.user_concurrent_program_name con_prog_name,
fu.user_name requested_by
FROM fnd_concurrent_requests fcr,
fnd_concurrent_programs_vl fcpv,
fnd_user fu,
fnd_responsibility_vl frv
WHERE fcpv.concurrent_program_id = fcr.concurrent_program_id
AND fu.user_id = fcr.requested_by
AND frv.responsibility_id = fcr.responsibility_id
AND fcr.request_id = &req_id;
Concurrent Program:
§ A concurrent program is an executable file that runs simultaneously with online
operations and with other concurrent programs.
§ We need a concurrent program for ..
1. Any long running data intensive program
2. Operating system script
3. Oracle Reports
§ The various steps to define and register a concurrent program are.
4. Define concurrent program executable
5. Define concurrent program
6. Include the concurrent program in a request group
7. Run concurrent program through submit request form.
§ Enter a name for executable and short name.
§ Choose the application to which this
§ executable belongs such that the system will
§ Look for this file in that directory structure.
§ Enter the execution method as
1. Flex Rpt The execution file is written using the Flex Report API.
2. Flex Sql The execution file is written using the Flex Sql API.
3. Host The execution file is a host script.
4. Oracle Reports The execution file is an Oracle Reports file.
5. PL/SQL Stored Procedure The execution file is a stored procedure.
6. SQL*Loader the execution file is a SQL script.
7. SQL*Plus the execution file is a SQL*Plus script.
8. SQL*Report the execution file is a SQL*Report script.
9. Spawned The execution file is a C or Pro*C program.
10. Immediate The execution file is a program written to run as a subroutine of the
concurrent manager.
§ Enter the execution file name without the file extension.
§ For PL/SQL stored procedures enter the <package>.<procedure name> in the
execution file name. This procedure must have 2 out parameters of type
varchar2 preferably with names errbuf and errout. These two parameters should be
added before adding any other parameters.

/*=============================================
CREATE CONCURRENT PROGRAM EXECUTABLE FROM BACKEND
==============================================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_SHORT_NAME LIKE 'XXCUST'
DECLARE
v_executable VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.executable (executable => 'XXAA Ar Aging Report',
application => 'XXCUST Custom Application',
short_name => 'XXAA_AR_AGING',
execution_method => 'Oracle Reports',
execution_file_name => 'XXAA_AR_AGING'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'succeefully created executable name is '||
v_executable );
END;
SELECT * FROM fnd_executables
WHERE execution_file_name = 'XXAA_AR_AGING'

/*=============================================
DELETE CONCURRENT PROGRAM EXECUTABLE FROM BACKEND
==============================================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_program.delete_executable (executable_short_name => v_short_name,
application => 'XXCUST Custom Application'
);
COMMIT;
DBMS_OUTPUT.put_line('Concurrent Program Executable succeefully Deleted'||
v_short_name );
END;
SELECT * FROM fnd_executables_vl
WHERE execution_file_name = 'XXAA_AR_AGING'
Concurrent Program:
§ Define a concurrent program,
§ Choose an executable created, which will be executed once this concurrent
program is scheduled to run.
Output formats of a concurrent program:
HTML.
PDF.
TEXT.
PS (Post Script).
PCL (HP’s Printer Control Language).
/*=============================================
CREATE CONCURRENT PROGRAM DEFINE FROM BACKEND
==============================================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
DECLARE
v_name VARCHAR2 (50) := 'XXAA Ar Aging Report';
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.REGISTER (program => v_name,
application => 'XXCUST Custom Application',
enabled => 'Y',
short_name => v_short_name,
executable_short_name => v_short_name,
executable_application => 'XXCUST Custom Application',
style => 'A4',
output_type => 'TEXT',
use_in_srs => 'Y'
);
COMMIT;
DBMS_OUTPUT.put_line ('succeefully created concurrent program '||
v_short_name );
END;
SELECT * FROM fnd_concurrent_programs_vl
WHERE concurrent_program_name='XXAA_AR_AGING'
/*=============================================

/*=============================================
DELETE CONCURRENT PROGRAM FROM BACKEND
==============================================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_program.delete_program (program_short_name => v_short_name,
application => 'XXCUST Custom Application'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Concurrent Program succeefully Deleted ' ||
v_short_name );
END;
SELECT * FROM fnd_concurrent_programs_vl
WHERE concurrent_program_name='XXAA_AR_AGING'
Define Concurrent Parameters:
§ The parameters are the placeholders for the input values to a concurrent program.
§ If the execution method of a concurrent program is Oracle Reports then each
parameter is linked to the actual report parameter via the “Token” field in the
parameters window
§ For PL/SQL stored procedures these parameters are passed to the program by
position.
/*=============================================
CREATE PARAMETERS TO THE CONCURRENT PROGRAM FROM BACKEND
==============================================*/
DECLARE
v_cprogram VARCHAR2 (50) := 'XX_APPS88_HRMS';
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.parameter (program_short_name => v_cprogram,
application => 'Human Resources',
SEQUENCE => 10,
parameter => 'Employee Number',
enabled => 'Y',
value_set => '240 char',
display_size => 50,
description_size => 20,
concatenated_description_size => 20,
prompt => 'P_EMPLOYEE_NUM',
token => 'P_EMPLOYEE_NUM'
);
COMMIT;
DBMS_OUTPUT.put_line (' successfully created parameter for concurrent program
' || v_cprogram );
EXCEPTION
WHEN OTHERS
THEN DBMS_OUTPUT.put_line ('error out here' || SQLCODE || SQLERRM);
END;
/*=============================================
DELETE PARAMETERS IN THE CONCURRENT PROGRAM FROM BACKEND
==============================================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_program.DELETE_PARAMETER (program_short_name => v_short_name,
application => 'XXCUST Custom Application',
parameter => 'P_DATE'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Parameter succeefully Deleted For The Concurrent
Program ' || v_short_name );
END;
Define Request Group:
§ Note the Request group name for the responsibility, with which you want to attach
the concurrent program.
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
SELECT * FROM FND_RESPONSIBILITY_VL
WHERE 1=1
AND RESPONSIBILITY_NAME = 'Receivables, Vision Operations (USA)'
SELECT * FROM fnd_request_groups
WHERE 1=1
AND request_group_name like 'Receivables All'

/*=============================================
DELETE PARAMETERS IN THE CONCURRENT PROGRAM FROM BACKEND
==============================================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_program.DELETE_PARAMETER (program_short_name => v_short_name,
application => 'XXCUST Custom Application',
parameter => 'P_DATE'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Parameter succeefully Deleted For The Concurrent
Program ' || v_short_name );
END;
Define Request Group:
§ Note the Request group name for the responsibility, with which you want to attach
the concurrent program.
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
SELECT * FROM FND_RESPONSIBILITY_VL
WHERE 1=1
AND RESPONSIBILITY_NAME = 'Receivables, Vision Operations (USA)'
SELECT * FROM fnd_request_groups
WHERE 1=1
AND request_group_name like 'Receivables All'
Define Request Group :
§ Query the request group and add your concurrent program to the group.
§ A request group is a collection of reports and concurrent programs.
§ A system administrator defines request group in order to control user access to
reports and concurrent programs.
/*=============================================
ADD CONCURRENT PROGRAM TO THE REQUEST GROUP FROM BACKEND
==============================================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
SELECT * FROM FND_RESPONSIBILITY_VL
WHERE 1=1
AND RESPONSIBILITY_NAME = 'Receivables, Vision Operations (USA)'
SELECT * FROM fnd_request_groups
WHERE 1=1
AND request_group_name like 'Receivables All'
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.add_to_group (program_short_name => v_short_name,
program_application => 'XXCUST Custom Application',
request_group => 'Receivables All',
group_application => 'Receivables'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'succeefully attached concurrent program to request
group' || v_short_name );
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('error out here' || SQLCODE || SQLERRM);
END;
----
>>================================================
==============<<----
SELECT fcpt.user_concurrent_program_name,
frg.request_group_name,
fcp.concurrent_program_name,
frt.responsibility_name,
fat.application_name,
fa.application_short_name,
fa.basepath
FROM fnd_request_group_units frgu,
fnd_concurrent_programs fcp,
fnd_concurrent_programs_tl fcpt,
fnd_request_groups frg,
fnd_executables fe,
fnd_responsibility fr,
fnd_responsibility_tl frt,
fnd_application_tl fat,
fnd_application fa
WHERE 1 = 1
AND fat.application_id = frgu.application_id
AND frgu.request_unit_id = fcp.concurrent_program_id
AND frgu.request_group_id = frg.request_group_id
AND fe.executable_id = fcp.executable_id
AND fcp.concurrent_program_id = fcpt.concurrent_program_id
AND frg.request_group_id = fr.request_group_id
AND fr.responsibility_id = frt.responsibility_id
AND fa.application_id = fat.application_id
AND fcpt.user_concurrent_program_name LIKE 'XXAA Ar Aging Report'
ORDER BY 6,4,3,2
/*=============================================
DELETE CONCURRENT PROGRAM FROM THE REQUEST GROUP FROM
BACKEND
==============================================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.remove_from_group (program_short_name => v_short_name,
program_application => 'XXCUST Custom Application',
request_group => 'Receivables All',
group_application => 'Receivables'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Successfully Deleted executable name is ' ||
v_short_name );
END;
/
*==================================================
======================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
DECLARE
v_name VARCHAR2 (50) := 'XXAA Ar Aging Report';
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.executable (executable => v_name,
application => 'XXCUST Custom Application',
short_name => v_short_name,
execution_method => 'Oracle Reports',
execution_file_name => v_short_name
);
COMMIT;
DBMS_OUTPUT.put_line ( 'succeefully created executable name is '||
v_short_name );
END;
SELECT * FROM fnd_executables_vl
WHERE execution_file_name = 'XXAA_AR_AGING'
---
>>>===============================================
============
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_program.delete_executable (executable_short_name => v_short_name,
application => 'XXCUST Custom Application'
);
COMMIT;
DBMS_OUTPUT.put_line('Concurrent Program Executable succeefully Deleted'||
v_short_name );
END;
SELECT * FROM fnd_executables_vl
WHERE execution_file_name = 'XXAA_AR_AGING'
/
*==================================================
======================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
DECLARE
v_name VARCHAR2 (50) := 'XXAA Ar Aging Report';
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.REGISTER (program => v_name,
application => 'XXCUST Custom Application',
enabled => 'Y',
short_name => v_short_name,
executable_short_name => v_short_name,
executable_application => 'XXCUST Custom Application',
style => 'A4',
output_type => 'TEXT',
use_in_srs => 'Y'
);
COMMIT;
DBMS_OUTPUT.put_line ('succeefully created concurrent program '||
v_short_name );
END;
SELECT * FROM fnd_concurrent_programs_vl
WHERE concurrent_program_name='XXAA_AR_AGING'
---
>>>===============================================
============
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING';
BEGIN
fnd_program.delete_program (program_short_name => v_short_name,
application => 'XXCUST Custom Application'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Concurrent Program succeefully Deleted ' ||
v_short_name );
END;
SELECT * FROM fnd_concurrent_programs_vl
WHERE concurrent_program_name='XXAA_AR_AGING'
/
*==================================================
======================*/
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.parameter (program_short_name => v_short_name,
application => 'XXCUST Custom Application',
SEQUENCE => 10,
parameter => 'As Of Date',
enabled => 'Y',
value_set => '240 char',
display_size => 50,
description_size => 20,
concatenated_description_size => 20,
prompt => 'As Of Date',
token => 'P_DATE'
);
COMMIT;
DBMS_OUTPUT.put_line (' successfully created parameter for concurrent program
' || v_short_name );
EXCEPTION
WHEN OTHERS
THEN DBMS_OUTPUT.put_line ('error out here' || SQLCODE || SQLERRM);
END;
---
>>>===============================================
============
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_program.DELETE_PARAMETER (program_short_name => v_short_name,
application => 'XXCUST Custom Application',
parameter => 'P_DATE'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Parameter succeefully Deleted For The Concurrent
Program ' || v_short_name );
END;
/
*==================================================
======================*/
SELECT * FROM FND_APPLICATION_VL
WHERE 1=1
AND APPLICATION_NAME = 'XXCUST Custom Application'
SELECT * FROM FND_RESPONSIBILITY_VL
WHERE 1=1
AND RESPONSIBILITY_NAME = 'Receivables, Vision Operations (USA)'
SELECT * FROM fnd_request_groups
WHERE 1=1
AND request_group_name like 'Receivables All'
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.add_to_group (program_short_name => v_short_name,
program_application => 'XXCUST Custom Application',
request_group => 'Receivables All',
group_application => 'Receivables'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'succeefully attached concurrent program to request
group' || v_short_name );
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('error out here' || SQLCODE || SQLERRM);
END;
SELECT fcpt.user_concurrent_program_name,
frg.request_group_name,
fcp.concurrent_program_name,
frt.responsibility_name,
fat.application_name,
fa.application_short_name,
fa.basepath
FROM fnd_request_group_units frgu,
fnd_concurrent_programs fcp,
fnd_concurrent_programs_tl fcpt,
fnd_request_groups frg,
fnd_executables fe,
fnd_responsibility fr,
fnd_responsibility_tl frt,
fnd_application_tl fat,
fnd_application fa
WHERE 1 = 1
AND fat.application_id = frgu.application_id
AND frgu.request_unit_id = fcp.concurrent_program_id
AND frgu.request_group_id = frg.request_group_id
AND fe.executable_id = fcp.executable_id
AND fcp.concurrent_program_id = fcpt.concurrent_program_id
AND frg.request_group_id = fr.request_group_id
AND fr.responsibility_id = frt.responsibility_id
AND fa.application_id = fat.application_id
AND fcpt.user_concurrent_program_name LIKE 'XXAA Ar Aging Report'
ORDER BY 6,4,3,2
;
---
>>>===============================================
============
DECLARE
v_short_name VARCHAR2 (50) := 'XXAA_AR_AGING'; --> Conc Program Short Name
BEGIN
fnd_global.apps_initialize (user_id => 1318,
resp_id => 21623,
resp_appl_id => 660
);
fnd_program.remove_from_group (program_short_name => v_short_name,
program_application => 'XXCUST Custom Application',
request_group => 'Receivables All',
group_application => 'Receivables'
);
COMMIT;
DBMS_OUTPUT.put_line ( 'Successfully Deleted executable name is ' ||
v_short_name );
END;
/
*==================================================
======================*/
Concurrent Programs Assigned to a Request Group:
SELECT fcpv.concurrent_program_name short_name,
fcpv.user_concurrent_program_name conc_prog_name,
frg.request_group_name req_group_name
FROM fnd_concurrent_programs_vl fcpv,
fnd_request_groups frg,
fnd_request_group_units frgu
WHERE fcpv.concurrent_program_id = frgu.request_unit_id
AND fcpv.enabled_flag = 'Y'
AND frgu.request_group_id = frg.request_group_id
AND frg.request_group_name = '&request_group_name';
Check if the concurrent program is assigned to a given responsibility:
SELECT fcpv.concurrent_program_name short_name,
fcpv.user_concurrent_program_name conc_prog_name,
frg.request_group_name req_group_name,
frv.responsibility_name
FROM fnd_concurrent_programs_vl fcpv,
fnd_request_groups frg,
fnd_request_group_units frgu,
fnd_responsibility_vl frv
WHERE fcpv.concurrent_program_id = frgu.request_unit_id
AND fcpv.enabled_flag = 'Y'
AND frgu.request_group_id = frg.request_group_id
AND frg.request_group_id = frv.request_group_id
AND frv.responsibility_name = '&resp_name'
AND fcpv.user_concurrent_program_name = '&con_prg_name';
SRS Form:
§ Then use SRS (Standard Report Submission) form for running and monitoring your
application’s reports/concurrent programs at specific time interval.
§ This lets user specify run and print options and parameter value for reports and
concurrent programs.
§ Use fnd_file.put_line(fnd_file.log, ‘any message’) to show message in conc
program log file.
Switch Responsibility to ‘Receivables, Vision Operations (USA)’ à View à Requests à
A concurrent request proceeds through three, possibly four, life cycle stages or
phases:
ü Pending Request is waiting to be run
ü Running Request is running
ü Completed Request has finished
ü Inactive Request cannot be run.
Concurrent Programs Business Events:
In R12 for concurrent programs submission and completion has business events
associated with them
in the concurrent program definition form there is a business events tab which
displays the list of events associated
here you specify the points at which business events are enabled. The possible
points are:
Request Submitted
Request On Hold
Request Resumed
Request Running
Program Completed
Post Processing Started
Post Processing Ended
Request Completed.
But make sure you set the profile "Concurrent: Business Intelligence Integration
Enable". You will need to set "Yes" to enable Business Events from Concurrent
Processing System
Within each phase, a request’s condition or status may change. Below appears a
listing of each phase and the various states that a concurrent request can go
through.
Concurrent Request Phase and Status:
Phase: PENDING:
· Normal: Request is waiting for the next available manager.
· Standby: Program to run request is incompatible with other program(s) currently
running.
· Scheduled: Request is scheduled to start at a future time or date.
· Waiting: A child request is waiting for its Parent request to mark it ready to run.
Phase: RUNNING:
· Normal: Request is running normally.
· Paused: Parent request pauses for all its child requests to complete.
· Resuming: All requests submitted by the same parent request have completed
running. The Parent request is waiting to be restarted.
· Terminating: Running request is terminated, by selecting Terminate in the Status
field of the Request Details zone.
Phase: COMPLETED:
· Normal: Request completes normally.
· Error: Request failed to complete successfully.
· Warning: Request completes with warnings. For example, a report is generated
successfully but fails to print.
· Cancelled: Pending or Inactive request is cancelled, by selecting Cancel in the
Status field of the Request Details zone.
· Terminated: Running request is terminated, by selecting Terminate in the Status
field of the Request Details zone.
Phase: INACTIVE:
· Disabled: Program to run request is not enabled. Contact your system
administrator.
· On Hold: Pending request is placed on hold, by selecting Hold in the Status field
of the Request Details zone.
· No Manager: No manager is defined to run the request. Check with your system
administrator.
Request Set:
§ Request Sets are a method of grouping multiple reports and/or concurrent
programs by business function with common run and print options.
§ The various tasks of the request set are linked together to determine the
execution order, whether the tasks execute sequentially or in parallel.
§ Stage is a component of a request set used to group requests within the set. All
requests in a stage are run in parallel, while stages themselves are run
sequentially in the set.
§ Tasks that must operate separately are created in different stages.
§ After defining the initial stage for execution, all subsequent stages are defined
under the three completion status codes for the previous stage.
Useful FND Queries:
1. Concurrent Program Info
SELECT fcpt.user_concurrent_program_name concurrent_program,
fdfcu.column_seq_num sequence_number,
fdfcu.DEFAULT_VALUE DEFAULT_VALUE,
fdfcut.form_left_prompt prompt,
fdfcut.description description,
ffvs.flex_value_set_name,
fl.meaning,
fe.executable_name
FROM apps.fnd_concurrent_programs fcp,
apps.fnd_concurrent_programs_tl fcpt,
apps.fnd_concurrent_programs_tl fcpd,
apps.fnd_descr_flex_col_usage_tl fdfcut,
apps.fnd_descr_flex_column_usages fdfcu,
apps.fnd_descr_flex_col_usage_tl fdfcud,
apps.fnd_application fa,
apps.fnd_flex_value_sets ffvs,
apps.fnd_lookups fl,
apps.fnd_executables fe
WHERE fcpt.user_concurrent_program_name = 'Payables Open Interface Import'
AND fcp.concurrent_program_id = fcpt.concurrent_program_id
AND fcpt.concurrent_program_id = fcpd.concurrent_program_id
AND fdfcut.application_id = fa.application_id
AND fdfcut.descriptive_flex_context_code = 'Global Data Elements'
AND fdfcut.descriptive_flexfield_name = '$SRS$.' || fcp.concurrent_program_name
AND fdfcut.application_id = fdfcu.application_id
AND fdfcut.descriptive_flex_context_code = fdfcu.descriptive_flex_context_code
AND fdfcut.descriptive_flexfield_name = fdfcu.descriptive_flexfield_name
AND fdfcut.application_column_name = fdfcu.application_column_name
AND fdfcut.application_id = fdfcud.application_id
AND fdfcut.descriptive_flex_context_code = fdfcud.descriptive_flex_context_code
AND fdfcut.descriptive_flexfield_name = fdfcud.descriptive_flexfield_name
AND fdfcut.application_column_name = fdfcud.application_column_name
AND fdfcu.flex_value_set_id = ffvs.flex_value_set_id
AND fcp.execution_method_code = fl.lookup_code
AND fl.lookup_type = 'CP_EXECUTION_METHOD_CODE'
AND fcp.executable_id = fe.executable_id
ORDER BY 1, 2, 3
SELECT cpt.user_concurrent_program_name,
cpt.description,
cp.concurrent_program_name,
a.application_short_name,
e.executable_name,
cp.creation_date,
uc.user_name creator,
cp.last_update_date,
ulu.user_name updater,
cp.enabled_flag,
cp.run_alone_flag,
cp.srs_flag,
cp.print_flag,
cp.save_output_flag,
cp.required_style,
cp.output_print_style,
cp.printer_name,
cp.minimum_width,
cp.minimum_length,
cp.output_file_type,
cp.enable_trace,
cp.restart,
cp.nls_compliant,
cp.request_set_flag
FROM applsys.fnd_concurrent_programs cp,
applsys.fnd_concurrent_programs_tl cpt,
applsys.fnd_application a,
applsys.fnd_executables e,
applsys.fnd_user uc,
applsys.fnd_user ulu
WHERE cp.creation_date > TO_DATE ('17-MAY-1995') -- Enter Creation Date
AND cp.application_id = cpt.application_id
AND cp.concurrent_program_id = cpt.concurrent_program_id
AND cpt.LANGUAGE = SYS_CONTEXT ('USERENV', 'LANG')
AND cp.application_id = a.application_id
AND cp.executable_application_id = e.application_id
AND cp.executable_id = e.executable_id
AND cp.created_by = uc.user_id
AND cp.last_updated_by = ulu.user_id
AND cpt.user_concurrent_program_name = 'Payables Open Interface Import'
ORDER BY cp.concurrent_program_name
2. Concurrent Program parametersSELECT cp.concurrent_program_name,
cu.*,
vs.flex_value_set_name
FROM applsys.fnd_concurrent_programs cp,
applsys.fnd_descr_flex_column_usages cu,
applsys.fnd_flex_value_sets vs
WHERE cp.creation_date > TO_DATE ('17-MAY-1995') --Enter Creation Date
AND cu.application_id = cp.application_id
AND cu.descriptive_flexfield_name = '$SRS$.' || cp.concurrent_program_name
AND cu.flex_value_set_id = vs.flex_value_set_id
AND cp.concurrent_program_id = :concurrent_program_id --(Enter
CONCURRENT_PROGRAM_ID of
CONCURRENT_PROGRAM)
ORDER BY cp.concurrent_program_name,
cu.column_seq_num
3. Concurrent Request Details
SELECT p.concurrent_program_name,
pt.user_concurrent_program_name,
rt.responsibility_name,
r.*
FROM applsys.fnd_concurrent_requests r,
applsys.fnd_concurrent_programs p,
applsys.fnd_concurrent_programs_tl pt,
applsys.fnd_responsibility rsp,
applsys.fnd_responsibility_tl rt
WHERE r.request_id = &request_id -- Enter Request ID
AND r.program_application_id = p.application_id
AND r.concurrent_program_id = p.concurrent_program_id
AND p.application_id = pt.application_id
AND p.concurrent_program_id = pt.concurrent_program_id
AND pt.LANGUAGE = SYS_CONTEXT ('USERENV', 'LANG')
AND r.responsibility_application_id = rsp.application_id
AND r.responsibility_id = rsp.responsibility_id
AND rsp.application_id = rt.application_id
AND rsp.responsibility_id = rt.responsibility_id
AND rt.LANGUAGE = SYS_CONTEXT ('USERENV', 'LANG')
4. Request Group Details
SELECT rga.application_short_name "Req Grp App",
rg.request_group_name "Request Group Name",
rg.request_group_code "Request Group Code",
rg.description "Request Group Desc",
cp.concurrent_program_name "Concurrent Program",
ea.application_short_name "Exec App",
e.executable_name "Executable",
rga.application_id "Req Grp App ID",
rg.request_group_id "Req Grp ID",
e.application_id "Exec App ID"
FROM applsys.fnd_executables e,
applsys.fnd_concurrent_programs cp,
applsys.fnd_request_group_units rgu,
applsys.fnd_request_groups rg,
applsys.fnd_application rga,
applsys.fnd_application ea
WHERE e.application_id LIKE '%'-- Enter Application ID
AND e.executable_name LIKE '%' -- Enter Executable Name
AND cp.executable_application_id = e.application_id
AND cp.executable_id = e.executable_id
AND cp.enabled_flag = 'Y'
AND rgu.request_unit_id = cp.concurrent_program_id
AND rgu.unit_application_id = cp.application_id
AND rgu.request_unit_type = 'P'
AND rg.application_id = rgu.application_id
AND rg.request_group_id = rgu.request_group_id
AND rga.application_id = rgu.application_id
AND ea.application_id = e.application_id
5. Request Set Details
SELECT rst.user_request_set_name,
rs.request_set_name,
rsst_start.user_stage_name start_stage,
rss.display_sequence stage_sequence,
rss.stage_name,
rss.request_set_stage_id,
rss.success_link,
rss.warning_link,
rss.error_link,
rsst.user_stage_name,
rsst.description stage_description,
rsp.SEQUENCE program_sequence,
cp.user_concurrent_program_name,
pa.*
FROM applsys.fnd_request_sets_tl rst,
applsys.fnd_request_sets rs,
applsys.fnd_request_set_stages_tl rsst_start,
applsys.fnd_request_set_stages rss,
applsys.fnd_request_set_stages_tl rsst,
applsys.fnd_request_set_programs rsp,
applsys.fnd_concurrent_programs_tl cp,
applsys.fnd_request_set_program_args pa
WHERE rs.request_set_name LIKE '%' -- Enter Request Set Name
AND rs.application_id = rst.application_id
AND rs.request_set_id = rst.request_set_id
AND rst.LANGUAGE = SYS_CONTEXT ('USERENV', 'LANG')
AND rsst_start.set_application_id = rs.application_id
AND rsst_start.request_set_id = rs.request_set_id
AND rsst_start.request_set_stage_id = rs.start_stage
AND rsst_start.LANGUAGE = 'US'
AND rss.set_application_id = rs.application_id
AND rss.request_set_id = rs.request_set_id
AND rsst.set_application_id = rss.set_application_id
AND rsst.request_set_id = rss.request_set_id
AND rsst.request_set_stage_id = rss.request_set_stage_id
AND rsst.LANGUAGE = 'US'
AND rsp.set_application_id = rss.set_application_id
AND rsp.request_set_id = rss.request_set_id
AND rsp.request_set_stage_id = rss.request_set_stage_id
AND rsp.program_application_id = cp.application_id
AND rsp.concurrent_program_id = cp.concurrent_program_id
AND cp.LANGUAGE = 'US'
AND pa.application_id(+) = rsp.set_application_id
AND pa.request_set_id(+) = rsp.request_set_id
AND pa.request_set_program_id(+) = rsp.request_set_program_id
ORDER BY rst.user_request_set_name,
rss.display_sequence,
rsp.SEQUENCE,
pa.descriptive_flex_appl_id,
pa.descriptive_flexfield_name,
pa.application_column_name
1.Find Locks Info
SELECT SID,
id1,
id2,
lmode,
request,
BLOCK
FROM v$lock
WHERE SID = &sid
2.Find Session Info
SELECT module,
action,
SID,
serial#
FROM v$session
WHERE action LIKE '%%'
3.Find Lock Mode
SELECT a.SID,
b.NAME,
a.id1,
a.lmode,
a.request
FROM v$lock a,
SYS.obj$ b
WHERE b.obj# = a.id1
4.Find Locked Objects SELECT oracle_username,
os_user_name,
session_id,
process,
locked_mode,
o.owner,
o.object_type,
o.object_name
FROM v$locked_object l,
SYS.dba_objects o
WHERE l.object_id = o.object_id
ORDER BY o.owner,
o.object_name,
session_id
5.Control File QuerySELECT * FROM v$controlfile
6.Folder Info QuerySELECT b.application_short_name,
d.responsibility_name,
a.OBJECT,
c.NAME folder_name
FROM apps.fnd_default_folders a,
apps.fnd_application b,
apps.fnd_folders c,
apps.fnd_responsibility_vl d
WHERE a.application_id = b.application_id
AND a.folder_id = c.folder_id
AND d.responsibility_id = - (a.user_id)
AND d.responsibility_name LIKE '%%'
ORDER BY b.application_short_name,
d.responsibility_name;
Create Users and assign Responsibilities:
§ Switch to System Administrator responsibility
§ Navigate to Security-->User-->Define
§ Add or query a User.
§ Add responsibility to user as required.

/*=============================================
CREATE APPLICATIONS USER FROM BACKEND
==============================================*/
DECLARE
v_user_name VARCHAR2 (30) := UPPER ('Raju');
v_password VARCHAR2 (30) := '******';
v_email VARCHAR2 (30) := UPPER ('[email protected]');
BEGIN
fnd_user_pkg.createuser (x_user_name => v_user_name,
x_owner => NULL,
x_unencrypted_password => v_password,
x_start_date => SYSDATE,
x_end_date => NULL,
x_email_address => v_email
);
COMMIT;
DBMS_OUTPUT.put_line ('User:' || v_user_name || 'Created Successfully');
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ( 'Unable to create User due to' || SQLCODE || ' ' ||
SUBSTR (SQLERRM, 1, 100) );
ROLLBACK;
END;
select * from fnd_user
where user_name like 'RAJU'
/*=============================================
/*=============================================
PASSWORD RESET FOR THE APPLICATIONS USER FROM BACKEND
==============================================*/
DECLARE
v_user_name VARCHAR2 (30) := UPPER ('RAJU');
v_new_password VARCHAR2 (30) := '********';
v_status BOOLEAN;
BEGIN
v_status :=
fnd_user_pkg.changepassword (username => v_user_name,
newpassword => v_new_password
);
IF v_status = TRUE
THEN
DBMS_OUTPUT.put_line ( 'The password reset successfully for the User:' ||
v_user_name );
COMMIT;
ELSE
DBMS_OUTPUT.put_line ( 'Unable to reset password due to' || SQLCODE || '
' || SUBSTR (SQLERRM, 1, 100) );
ROLLBACK;
END IF;
END;
/*=============================================
Assign the Responsibilities to User from Backend
==============================================*/
DECLARE
V_username VARCHAR2 (30) := UPPER ('RAJU');
cursor cur is
SELECT r.responsibility_key,
a.application_short_name,
r.responsibility_name
FROM fnd_responsibility_vl r,
fnd_application_vl a
WHERE a.application_id = r.application_id
AND responsibility_name IN
('Application Developer'
,'Functional Administrator'
,'XML Publisher Administrator'
,'System Administrator'
,'General Ledger, Vision Operations (USA)'
,'Inventory, Vision Operations (USA)'
,'Payables, Vision Operations (USA)'
,'Receivables, Vision Operations (USA)'
,'Purchasing, Vision Operations (USA)'
)
;
BEGIN
FOR rec in cur
loop
fnd_user_pkg.addresp (username => V_username,
resp_app => rec.application_short_name,
resp_key => rec.responsibility_key,
security_group => 'STANDARD',
description => NULL,
start_date => SYSDATE,
end_date => NULL
);
DBMS_OUTPUT.put_line ( rec.responsibility_name || 'Responsibility Assigned to' ||
v_username );
COMMIT;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN DBMS_OUTPUT.put_line ( 'Unable to Assign Responsibilities to User' ||
SQLCODE || '
' || SUBSTR (SQLERRM, 1, 100) );
ROLLBACK;
END
FLEXFIELDS

Key Flex fields:


§ Most businesses use codes made up of meaningful segments to identify Account
Number, Part number and other business entities, eg: a company might have a
part number
”PAD–NR–YEL–8 1/2x14” indicating a notepad, narrow–ruled, yellow, and 14” by 8
1/2”.
§ A Flex field is a field which is made up of segments.
§ Each segment has a name and a set of valid values.
§ A Key flex field identifies an entity.
Register Key Flex fields:
§ Register your key flex field with Oracle Application Object Library.
§ Each key flex field has one corresponding table, known as the combinations table,
where the flex field stores a list of the complete codes, with one column
for each segment of the code.
§ There is a corresponding unique ID number (a code combination ID number or
CCID) for that code which is also stored in the combination table.
§ A flex field structure is a specific configuration of segments. Same flex field can
have multiple segment structure.

Customize Key Flex field Segments:


§ A segment is a single sub–field within a flex field. You define the appearance and
meaning of individual segments when customizing a flex field.
§ A segment is represented in your database as a single table column.
§ Flex field validates each segment against a set of valid values, which are mostly
predefined
§ A flex field qualifier identifies a particular segment of a key flex field.
Key Flex field Feature:
§ Dynamic Insertion:
§ The insertion of a new valid combination into a combinations table from a form
other than the combinations form.
Key Flex field Cross validation:
Cross–Validation:
§ Cross–validation rules prevent users from creating new key flex field combinations
that contain values that should not coexist in the same combination.

Descriptive Flex fields:


§ Descriptive flex fields provide customizable "expansion space" on your forms. You
can use descriptive flex fields to have additional information, important
and unique to your business that would not otherwise be captured by the form.
§ A descriptive flex field appears on a form as a single-character, unnamed field
enclosed in brackets.
§ Descriptive flex fields have two different types of segments, global and context-
sensitive.
§ A global segment is a segment that always appears in the descriptive flex field
pop-up window.
§ A context-sensitive segment is a segment that may or may not appear depending
upon what other information is present in your form.

Overview of Flexfields:

A flexfield is a field made up of sub–fields, or segments. There are two types of

flexfields: key flexfields and descriptive flexfields.

Key Flexfields:
A Key flexfield is a field made up of segments, where each segment has both a

value and a meaning, which appears on your form as a normal text field with an

appropriate prompt.

One example of a key flexfield is the Accounting Flexfield. This flexfield can always

be customized to have as many segments as needed like Company,

Department, Cost center, Account etc.

Descriptive flexfields:

Descriptive flexfields lets you add additional fields to the form in order to track

additional information needed by the business that would not be captured by the

standard form. Descriptive flexfields can be context sensitive, where the

information your application stores depends on other values your users enter in

other parts of the form.

A descriptive flexfield appears on a form as a single–character, unnamed field

enclosed in Square Brackets [ ]. Each field or segment in a descriptive flexfield has

a prompt and can have a set of valid values

Descriptive Flexfield Concepts:

Descriptive flexfields have two different types of segments, global and context–

sensitive.

A global segment is a segment that always appears in the descriptive flexfield pop–

up window.

A context–sensitive segment is a segment that may or may not appear depending

upon what other information is present in your form.


A descriptive flexfield can get context information from either a field somewhere on

the form, or from a special field (a context field) inside the descriptive flexfield pop–

up window. If the descriptive flexfield derives the context information from a form

field (either displayed or hidden from users), that field is called a reference field for

the descriptive flexfield.

A descriptive flexfield uses columns that are added on to a database table. A

descriptive flexfield requires one column for each possible segment and one

additional column in which to store structure information (that is, the context

value). The descriptive flexfield columns are usually named ATTRIBUTEn where n is

a number.

For example, if you have a descriptive flexfield on an Order Entry (Header) form, it

populates the Structure column with the context field and the columns ATTRIBUTEn

with the flexfield segments of the table OE_ORDER_HEADERS_ALL.

Example of enabling DFF:

Goal: Enable DFF in Sales Order form in Order Management

Navigation: Go to “Order management super User, Vision Operations” responsibility

> Orders, Returns >> Sales Orders


Enable the DFF at right bottom screen.

To know the name of the DFF in a particular form do the following

Navigation: Help Menu >> Diagnostics >> Examine

Select Block Name as $DESCRIPTIVE_FLEXFIELD$

Field as ORDER.DF

Value will be populated and it will be the title of your DFF.

Title: Additional Header Information (Order Management)


Order management in the brackets represent the Application in which this DFF is

registered.

To enable this

Navigation: Go to Application Developer >> Flexfield >> Descriptive >> Segments


Query the DFF

Press F11 and enter

Title: Additional Header Information

Application: Order Management


Press CTL + F11 to query the record
Click on Segments

Enter the following information

Number: 5

Name: Erp Schools Demo


Window Prompt: Erp Schools Demo

Column: ATTRIBUTE11

Save the record (CTL + S)

Press OK

You can assign any value set if you want, its optional so I am just leaving it as blank

Now check the “Freeze Flexfield Definition” Checkbox


Press OK

Now Click Compile button


Press OK
You will see the confirmation as shown above.

Now to go to Order management super User, Vision Operations” and open the Sales

order Form and click on DFF box.


You can hide the context field by un checking the Displayed Check Box in Context

Field
To Make any changes you have to uncheck the “Freeze Flexfield Definition”

Checkbox
Press OK

Now uncheck the Displayed Box in Context Field area as shown


Save your Record

Check the “Freeze Flexfield Definition” Checkbox


Press OK

Press Compile Button


Press OK
“Flexfield View Generator” concurrent program will be submitted. To see the status

of the program go to View Menu on top >> Requests >> Find


Once you see the status as completed you can go to Order Management and check

for your changes


Now you should be able to hide the Context.

To demonstrate different types (Independent, Dependent and Table) of value set

let’s first define a concurrent program.

1. Define Executable.

Navigation: Application Developer > Concurrent > Executable


Enter Information as below

Note: You don’t really need to have PLSQL package defined for this demo.

Save it.

Navigation: Application Developer > Concurrent > Program


Enter Information as below
Save it.

Assign this Concurrent program to “Application Developer” responsibility by adding

it to Request group

Note: Form more information about defining concurrent program and adding it to

request group follow the below tutorial

http://erpschools.com/articles/concurrent-program-registration-and-add-it-to-

request-group
Value Sets

Independent Value Set:

Navigation: Application Developer > Application > Validation > Sets


Enter information as below

Save it.
Create Values for the value set we defined above

Navigation: Application Developer > Application > Validation > Values


Enter information as below
Save it.

Attach this value set to Concurrent program parameter

Navigation: Application Developer > Concurrent > Program > Parameters


Enter information as below
Save it.

To test the value set try submitting the concurrent program

Navigation: Application Developer > View > Requests > Submit New Request >

Single Request > OK


Enter Concurrent Program Name that we defined at the beginning of this tutorial
Click on LOV button to see the values available for this parameter.

———————————————————————————
Dependent Value Set

To define a Dependent value set we also need one Independent value set.

Example: To List down States in a Country we need to have list of Countries for

which states need to be defined.

First Define list of countries in a independent value set

Navigation: Application Developer > Application > Validation > Sets

Enter Values for the above value set

Navigation: Application Developer > Application > Validation > Values


Enter Values in the below screen
Now define another Value set

Navigation: Application Developer > Application > Validation > Sets


Click Edit Information Button to link this Dependent Value set with Independent

Value set defined in previous step

Enter Values for each country


Navigation: Application Developer > Application > Validation > Values

Ensure to Select Country name in “Independent Value” field before click Find.

Click Find and enter states for Country India


Save it

Now repeat the above two steps to enter states of country USA
Ensure to select country as USA before clicking Find button
Save it.

Navigate to Concurrent Program Parameters screen and enter Country parameter

as shown below

Navigation: Application Developer > Concurrent > Program > Query our Concurrent

Program > Parameters


Save it.

Add another parameter to link State Value set as shown below


Save it.

To test “Dependent Value set” navigate to concurrent program submission window


Select country and you can observe that list of values in State parameter will

change automatically depending on value select in Country parameter field.


——————————————————————————–

Table Type Value Set

Navigation: Application Developer > Application > Validation > Sets


Select Validation type as “Table” and click Edit Information button

Enter information as below


Click Test button validate the information that is entered

Navigate to Concurrent Program Parameters screen and add fourth parameter


Navigate to Concurrent Program Submission window to check the list of values in

Parameter-4

Click LOV button on Order Number field to see list of values available from

OE_ORDER_HEADERS_ALL table.

These values change dynamically as data changes in the OE_ORDER_HEADERS_ALL

table.
Profile Option in Oracle Apps

Profile Option values control the behavior of Oracle Apps, in other words they

determine how Oracle Apps should run. The value for a profile option can be

changed any time.

For Example, we have a profile option called MO: Operating Unit. Assigning a value

to this profile option will determine what operating unit it should use when a user

gets into a particular responsibility.

We have two types of Profile options – System and Personal profile options

depending on to whom they are visible and who can update their values.

System Profile options are visible and can be updated only in System Administrator

responsibility. In short they will be maintained by a System Administrator only.

User Profile Options are visible and can be updated by any end user of Oracle Apps.

Profile Options can be set at different levels. Site level being the highest and User

being the lowest in the hierarchy. If a profile option is assigned at two levels, then

value assigned at lowest level takes the precedence.

 Site (restricted to the whole of Apps)

 Application ( restricted only to a particular application like Payables,

Receivables)

 Responsibility (restricted only to a particular responsibility)

 Organization (restricted to a particular organization)

 User (restricted to a user)


Now let’s see how to create a new profile option and assign a value to it.

Say you want to create a profile option called erpSchools Debug and the possible

values that the user can choose are Yes, No. If the user chooses Yes, then the

custom concurrent program will print all the debug messages otherwise the debug

messages will not printed in the log file of the concurrent request.

Creating a Profile Option:

Navigation: Application Developer > Profile

Profiles window will open up where you enter the below details:

Name: Give a meaningful and unique name for this profile option

Application: Enter the application for which this profile option will be used like

Payables, Receivables etc. If it is for a custom program then choose the custom

application.

User Profile Name: Again enter a meaningful and unique name. This is the name

that the users will see in the Profile Options window.

Description: Enter the purpose or usage of this option.


Heirarchy Type Access Levels: At what levels this profile option should be visible

and updatable.

Active dates: Enter the dates on which the profile option becomes active/inactive

User Access:

Visible – Determines whether your end users can see and query this profile option in

their personal profiles. Otherwise, they cannot query or update values for this

option.

Updatable – Determines whether your end users can change the value of this profile

option using their Profile Values window. Otherwise, your system administrator must

set values for this profile option.

SQL Validation: You can write up a SQL statement to display the selected rows in

LOV. If this section is left blank, there will no LOV instead the user can enter any

free text as value.

Click here to know more about SQL Validation rules

Save the work.


Assign a value to the profile option:

Navigation: System Administrator > Profile > System

Enter the below when the window opens and click on Find button

Under Display section, Choose at what level you want to assign a value.

In the Find field, enter the profile option name to which you want to assign the

value.
Enter the value that you want to assign to profile option at the appropriate level and

save.

To derive a value of profile option from PL/SQL procedure:

We have seen how to create and assign value to profile option. Most of the times,

custom concurrent program will need to get the value of a profile option that will

determine its course of actions. You will use API called FND_PROFILE.

1.To get the value of profile option:

1 select FND_PROFILE.value('ERPSCHOOLS DEBUG') from dual;


Remember to pass on the name of the profile option and not the user profile name

here.

2. To set value to profile option from PL/SQL procedure:

1 BEGIN

2 FND_PROFILE.put ('ERPSCHOOLS DEBUG','No');

3 END;
FNDLOAD Commands for AOL Objects

1. Lookups
-- -------------
FNDLOAD apps/apps O Y DOWNLOAD
$FND_TOP/patch/115/import/aflvmlu.lct XX_CUSTOM_LKP.ldt
FND_LOOKUP_TYPE APPLICATION_SHORT_NAME="XXCUST"
LOOKUP_TYPE="XX_LOOKUP_TYPE"

FNDLOAD apps/apps O Y UPLOAD $FND_TOP/patch/115/import/aflvmlu.lct


XX_CUSTOM_LKP.ldt UPLOAD_MODE=REPLACE
CUSTOM_MODE=FORCE

2. Concurrent Program
-- -----------------------------
FNDLOAD apps/apps O Y DOWNLOAD
$FND_TOP/patch/115/import/afcpprog.lct XX_CUSTOM_CP.ldt PROGRAM
APPLICATION_SHORT_NAME="XXCUST"
CONCURRENT_PROGRAM_NAME="XX_CONCURRENT_PROGRAM"

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/afcpprog.lct


XX_CUSTOM_CP.ldt - WARNING=YES UPLOAD_MODE=REPLACE
CUSTOM_MODE=FORCE

3. Profile
-- ---------
FNDLOAD apps/apps O Y DOWNLOAD
$FND_TOP/patch/115/import/afscprof.lct XX_CUSTOM_PRF.ldt PROFILE
PROFILE_NAME="XX_PROFILE_NAME"
APPLICATION_SHORT_NAME="XXCUST"
$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD
$FND_TOP/patch/115/import/afscprof.lct XX_CUSTOM_PRF.ldt -
WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

4. Request Set and Link


-- ------------------------------
FNDLOAD apps/apps 0 Y DOWNLOAD
$FND_TOP/patch/115/import/afcprset.lct XX_CUSTOM_RS.ldt REQ_SET
REQUEST_SET_NAME='REQUEST_SET_NAME'

FNDLOAD apps/apps O Y UPLOAD


$FND_TOP/patch/115/import/afcprset.lct XX_CUSTOM_RS.ldt
UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

5. FND Message
-- ---------------------
FNDLOAD apps/apps 0 Y DOWNLOAD
$FND_TOP/patch/115/import/afmdmsg.lct XX_CUSTOM_MESG.ldt
FND_NEW_MESSAGES APPLICATION_SHORT_NAME="XXCUST"
MESSAGE_NAME="MESSAGE_NAME%"

FNDLOAD apps/apps O Y UPLOAD


$FND_TOP/patch/115/import/afmdmsg.lct XX_CUSTOM_MESG.ldt
UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

6. D2K FORMS
-- ------------------
$FND_TOP/bin/FNDLOAD apps/apps 0 Y DOWNLOAD
$FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FRM.ldt FORM
FORM_NAME="FORM_NAME"
$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD
$FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FRM.ldt -
WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

7. Form Function
-- ---------------------
FNDLOAD apps/apps 0 Y DOWNLOAD
$FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FUNC.ldt FUNCTION
FUNCTION_NAME="FORM_FUNCTION_NAME"

$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD


$FND_TOP/patch/115/import/afsload.lct XX_CUSTOM_FUNC.ldt -
WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

8. Alerts
-- ---------
FNDLOAD apps/apps 0 Y DOWNLOAD $ALR_TOP/patch/115/import/alr.lct
XX_CUSTOM_ALR.ldt ALR_ALERTS
APPLICATION_SHORT_NAME=XXCUST ALERT_NAME="XX - Alert Name"

FNDLOAD apps/apps 0 Y UPLOAD $ALR_TOP/patch/115/import/alr.lct


XX_CUSTOM_ALR.ldt CUSTOM_MODE=FORCE

9. Value Set
-- --------------
$FND_TOP/bin/FNDLOAD apps/apps 0 Y DOWNLOAD
$FND_TOP/patch/115/import/afffload.lct XX_CUSTOM_VS.ldt VALUE_SET
FLEX_VALUE_SET_NAME="XX Value Set Name"
$FND_TOP/bin/FNDLOAD apps/apps 0 Y UPLOAD
$FND_TOP/patch/115/import/afffload.lct XX_CUSTOM_VS.ldt -
WARNING=YES UPLOAD_MODE=REPLACE CUSTOM_MODE=FORCE

10. Data Definition and Associated Template


--- ----------------------------------------------------------
FNDLOAD apps/$CLIENT_APPS_PWD O Y DOWNLOAD
$XDO_TOP/patch/115/import/xdotmpl.lct XX_CUSTOM_DD.ldt
XDO_DS_DEFINITIONS APPLICATION_SHORT_NAME='XXCUST'
DATA_SOURCE_CODE='XX_SOURCE_CODE'
TMPL_APP_SHORT_NAME='XXCUST'
TEMPLATE_CODE='XX_SOURCE_CODE'

FNDLOAD apps/$CLIENT_APPS_PWD O Y UPLOAD


$XDO_TOP/patch/115/import/xdotmpl.lct XX_CUSTOM_DD.ldt

11. DATA_TEMPLATE (Data Source .xml file)


--- ----------------------------------------------------------
java oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD -DB_USERNAME apps
-DB_PASSWORD apps -JDBC_CONNECTION
'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)
(PORT=XX_PORT_NUMBER))
(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE
DATA_TEMPLATE -LOB_CODE XX_TEMPLATE -APPS_SHORT_NAME
XXCUST -LANGUAGE en -lct_FILE $XDO_TOP/patch/115/import/xdotmpl.lct
-LOG_FILE $LOG_FILE_NAME

java oracle.apps.xdo.oa.util.XDOLoader UPLOAD -DB_USERNAME apps -


DB_PASSWORD apps -JDBC_CONNECTION
'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)
(PORT=XX_PORT_NUMBER))
(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE
DATA_TEMPLATE -LOB_CODE XX_TEMPLATE -XDO_FILE_TYPE XML -
FILE_NAME $DATA_FILE_PATH/$DATA_FILE_NAME.xml -
APPS_SHORT_NAME XXCUST -NLS_LANG en -TERRITORY US -
LOG_FILE $LOG_FILE_NAME

12. RTF TEMPLATE (Report Layout .rtf file)


--- -------------------------------------------------------
java oracle.apps.xdo.oa.util.XDOLoader DOWNLOAD -DB_USERNAME apps
-DB_PASSWORD apps -JDBC_CONNECTION
'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)
(PORT=XX_PORT_NUMBER))
(CONNECT_DATA=(SERVICE_NAME=XX_SERVICE_NAME)))' -LOB_TYPE
TEMPLATE -LOB_CODE XX_TEMPLATE -APPS_SHORT_NAME XXCUST -
LANGUAGE en -TERRITORY US -lct_FILE
$XDO_TOP/patch/115/import/xdotmpl.lct -LOG_FILE $LOG_FILE_NAME

java oracle.apps.xdo.oa.util.XDOLoader UPLOAD -DB_USERNAME apps -


DB_PASSWORD apps -JDBC_CONNECTION
'(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=XX_HOST_NAME)
(PORT=XX_PORT_NUMBER))
(CONNECT_DATA=(SERVICE_NAME=SERVICE_NAME)))' -LOB_TYPE
TEMPLATE -LOB_CODE XX_TEMPLATE -XDO_FILE_TYPE RTF -
FILE_NAME $RTF_FILE_PATH/$RTF_FILE_NAME.rtf -
APPS_SHORT_NAME XXCUST -NLS_LANG en -TERRITORY US -
LOG_FILE $LOG_FILE_NAME

You might also like