Tuesday, June 26, 2012
To find the concurrent program submission interval
SELECT req.request_id
, decode (prg.user_concurrent_program_name, 'Report Set', 'Report Set:' || req.description, prg.user_concurrent_program_name) AS name
, argument_text as parameters
, req.resubmit_interval
, nvl2 (req.resubmit_interval, 'Periodically', nvl2 (req.release_class_id, 'On specific days', 'Once')) AS schedule_type
, decode (nvl2 (req.resubmit_interval, 'Periodically', nvl2 (req.release_class_id, 'On specific days', 'Once')),
'Periodically', 'Every ' || req.resubmit_interval || ' ' || lower(req.resubmit_interval_unit_code) || ' from ' || lower(req.resubmit_interval_type_code) || ' of previous run',
'Once', 'At :' || to_char (req.requested_start_date, 'DD-MON-RR HH24:MI'), 'Every: ' || crc.class_info) as schedule
, fus.user_name as owner
, to_char(requested_start_date,'DD-MON-YYYY HH24:MI:SS') as next_submission
FROM
apps.fnd_concurrent_programs_tl prg
, apps.fnd_concurrent_requests req
, apps.fnd_user fus
, apps.fnd_conc_release_classes crc
WHERE 1=1
AND prg.application_id = req.program_application_id
AND prg.concurrent_program_id = req.concurrent_program_id
AND req.requested_by = fus.user_id
AND req.phase_code = 'P'
AND req.requested_start_date > sysdate
AND prg.language = 'US'
AND crc.release_class_id(+) = req.release_class_id
AND crc.application_id(+) = req.release_class_app_id
ORDER BY name
Monday, June 25, 2012
To find out profile option set at which level
select substr(ot.user_profile_option_name,1,35),
substr(o.profile_option_name,1,30),
decode(level_id,10001, 'Site', 10002, 'Application', 10003, 'Responsibility', 10004, 'User') lev,
decode(level_id,10001, null, 10002, a.application_name, 10003, r.responsibility_name, 10004, u.user_name) lev_value,
r.RESPONSIBILITY_ID,
v.profile_option_value opt_value
from fnd_profile_option_values v,
fnd_profile_options o,
fnd_profile_options_tl ot,
fnd_application_tl a,
fnd_responsibility_tl r,
fnd_user u
where LEVEL_VALUE = decode(level_id, 10004, u.user_id, 10003, r.responsibility_id, 10002, a.application_id,10001,0)
and v.profile_option_id = o.profile_option_id
and v.application_id = o.application_id
and a.application_id (+) = v.level_value
and r.responsibility_id (+) = v.level_value
--and o.application_id = 275
and u.user_id (+) = v.level_value
and ot.profile_option_name = o.profile_option_name
and nvl(ot.language,'US') = 'US'
and sysdate between nvl(o.start_date_active, sysdate)
and nvl(o.end_date_active,sysdate)
and v.profile_option_value is not null
and ot.user_profile_option_name like 'PJI_%Debug%' order by 1
Friday, June 22, 2012
Query to find the concurrent program status which ran today
SELECT DISTINCT fcp.user_concurrent_program_name,
fcp.concurrent_program_name,
fcr.request_id,
fcr.request_date,
flv.meaning status,
fcr.status_code,
fcr.completion_text,
fcr.logfile_name,
fcr.outfile_name,
fcr.argument_text
FROM apps.fnd_concurrent_programs_vl fcp,
apps.fnd_concurrent_requests fcr,
apps.fnd_lookup_values flv
WHERE fcr.concurrent_program_id = fcp.concurrent_program_id
AND trunc(fcr.last_update_date) = trunc(SYSDATE)
AND flv.lookup_code = fcr.status_code
and fcp.user_concurrent_program_name = 'Program name'
AND flv.lookup_type = 'CP_STATUS_CODE'
AND flv.language = 'US'
ORDER BY fcr.request_date,
fcr.request_id DESC;
Friday, June 15, 2012
When responsibility added to user and it is not showing in the web based application then run the below query to see the responsibility added or not.
Newly added responsibilities not being shown is another symptom of this delay in Java Cache processing
Run the following script to verify that the data is correct:
set linesize 155;
set pagesize 200;
set verify off;
column USER_ID format 9999999999;
column RESP_ID format 9999999999;
column RESP_NAME format a60;
column RESP_APP_ID format 9999999999;
column SEC_GRP_ID format 9999999999;
select fu.user_id, fo.RESPONSIBILITY_ID resp_id, RESPONSIBILITY_NAME resp_name, fo.RESPONSIBILITY_APPLICATION_ID resp_app_id, fo.SECURITY_GROUP_ID sec_grp_id
from fnd_user_resp_groups fo, fnd_responsibility_vl fv, fnd_user fu
where fu.user_id=fo.user_id
and fu.user_name='<affected_user>'
and fo.RESPONSIBILITY_ID=fv.RESPONSIBILITY_ID
and fo.RESPONSIBILITY_APPLICATION_ID=fv.APPLICATION_ID;
set pagesize 200;
set verify off;
column USER_ID format 9999999999;
column RESP_ID format 9999999999;
column RESP_NAME format a60;
column RESP_APP_ID format 9999999999;
column SEC_GRP_ID format 9999999999;
select fu.user_id, fo.RESPONSIBILITY_ID resp_id, RESPONSIBILITY_NAME resp_name, fo.RESPONSIBILITY_APPLICATION_ID resp_app_id, fo.SECURITY_GROUP_ID sec_grp_id
from fnd_user_resp_groups fo, fnd_responsibility_vl fv, fnd_user fu
where fu.user_id=fo.user_id
and fu.user_name='<affected_user>'
and fo.RESPONSIBILITY_ID=fv.RESPONSIBILITY_ID
and fo.RESPONSIBILITY_APPLICATION_ID=fv.APPLICATION_ID;
Tuesday, March 6, 2012
API to delete Template in OTL
begin
hxc_self_service_time_deposit.delete_timecard(37275916, sysdate, 'DELETE','OTL Deposit Process',null);
end;
hxc_self_service_time_deposit.delete_timecard(37275916, sysdate, 'DELETE','OTL Deposit Process',null);
end;
API To Delete whole time card for the week in OTL
DECLARE
-- Constant declarations
l_otl_appl_id CONSTANT NUMBER (3) := 809; --OTL application id
l_resp_appl_id NUMBER (10) := 51102; --OTL Responsibility id
l_user_id VARCHAR2 (20) := 120345; -- id from fnd_user table
BEGIN
-- First initialize your session, this needs to be done for internal reasons so
-- the TimeStore knows who is trying to deposit the information. When you log
-- into SS, the same is done for you by the framework, here however we have to do
-- it manually.
FND_GLOBAL.
APPS_INITIALIZE (user_id => l_user_id,
resp_id => l_resp_appl_id,
resp_appl_id => l_otl_appl_id); -- This is the appl_id for OTL, do not change
--
--Delte time card API calling
--
hxc_timestore_deposit.DELETE_TIMECARD (p_building_block_id => 37275996); --p_building_block_id is the timecard id with scope 'Timecard' and endate should be ''12/31/4712
COMMIT;
END;
-- Constant declarations
l_otl_appl_id CONSTANT NUMBER (3) := 809; --OTL application id
l_resp_appl_id NUMBER (10) := 51102; --OTL Responsibility id
l_user_id VARCHAR2 (20) := 120345; -- id from fnd_user table
BEGIN
-- First initialize your session, this needs to be done for internal reasons so
-- the TimeStore knows who is trying to deposit the information. When you log
-- into SS, the same is done for you by the framework, here however we have to do
-- it manually.
FND_GLOBAL.
APPS_INITIALIZE (user_id => l_user_id,
resp_id => l_resp_appl_id,
resp_appl_id => l_otl_appl_id); -- This is the appl_id for OTL, do not change
--
--Delte time card API calling
--
hxc_timestore_deposit.DELETE_TIMECARD (p_building_block_id => 37275996); --p_building_block_id is the timecard id with scope 'Timecard' and endate should be ''12/31/4712
COMMIT;
END;
API To Delete timecard Detail(row wise) in OTL
DECLARE
-- Constant declarations
-- This is the appl_id for OTL, do not change
c_otl_appl_id CONSTANT NUMBER (3) := 809;
-- Variable declarations
-- declare the PL/SQL Table that will hold the complete timecard (all the BBs)
l_tbl_timecard_info hxc_self_service_time_deposit.timecard_info;
-- declare the PL/SQL Table that will hold all the attributes
l_tbl_attributes_info hxc_self_service_time_deposit.app_attributes_info;
-- declare the PL/SQL Table that will hold the messages returned by the API
l_tbl_messages hxc_self_service_time_deposit.message_table;
l_out_timecard_id hxc_time_building_blocks.time_building_block_id%TYPE;
l_out_timecard_ovn hxc_time_building_blocks.object_version_number%TYPE;
BEGIN
-- First initialize your session, this needs to be done for internal reasons so
-- the TimeStore knows who is trying to deposit the information. When you log
-- into SS, the same is done for you by the framework, here however we have to do
-- it manually.
FND_GLOBAL.APPS_INITIALIZE( user_id => 120345
,resp_id => 51102
,resp_appl_id => 809 );-- This is the appl_id for OTL, do not change
--xc_self_service_time_deposit.delete_timecard(37276080, sysdate, 'DELETE','OTL Deposit Process',null);
hxc_timestore_deposit.delete_detail_bb (
p_building_block_id =>37276080,
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info
);
hxc_timestore_deposit.execute_deposit_process (
p_validate=> FALSE,
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_messages=> l_tbl_messages,
p_mode=> 'SUBMIT',
p_deposit_process=> 'OTL Deposit Process',
p_timecard_id=> l_out_timecard_id,
p_timecard_ovn=> l_out_timecard_ovn
);
COMMIT;
END;
-- Constant declarations
-- This is the appl_id for OTL, do not change
c_otl_appl_id CONSTANT NUMBER (3) := 809;
-- Variable declarations
-- declare the PL/SQL Table that will hold the complete timecard (all the BBs)
l_tbl_timecard_info hxc_self_service_time_deposit.timecard_info;
-- declare the PL/SQL Table that will hold all the attributes
l_tbl_attributes_info hxc_self_service_time_deposit.app_attributes_info;
-- declare the PL/SQL Table that will hold the messages returned by the API
l_tbl_messages hxc_self_service_time_deposit.message_table;
l_out_timecard_id hxc_time_building_blocks.time_building_block_id%TYPE;
l_out_timecard_ovn hxc_time_building_blocks.object_version_number%TYPE;
BEGIN
-- First initialize your session, this needs to be done for internal reasons so
-- the TimeStore knows who is trying to deposit the information. When you log
-- into SS, the same is done for you by the framework, here however we have to do
-- it manually.
FND_GLOBAL.APPS_INITIALIZE( user_id => 120345
,resp_id => 51102
,resp_appl_id => 809 );-- This is the appl_id for OTL, do not change
--xc_self_service_time_deposit.delete_timecard(37276080, sysdate, 'DELETE','OTL Deposit Process',null);
hxc_timestore_deposit.delete_detail_bb (
p_building_block_id =>37276080,
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info
);
hxc_timestore_deposit.execute_deposit_process (
p_validate=> FALSE,
p_app_blocks=> l_tbl_timecard_info,
p_app_attributes=> l_tbl_attributes_info,
p_messages=> l_tbl_messages,
p_mode=> 'SUBMIT',
p_deposit_process=> 'OTL Deposit Process',
p_timecard_id=> l_out_timecard_id,
p_timecard_ovn=> l_out_timecard_ovn
);
COMMIT;
END;
Tuesday, February 14, 2012
Delete time card API
hxc_timestore_deposit.DELETE_TIMECARD ( p_time_building_block_id => l_timecard_to_delete,);
p_time_building_block_id The id of the Time Building Block
p_time_building_block_id The id of the Time Building Block
Tuesday, February 7, 2012
Query to Get OTL Template information for particular user from Database
SELECT ProjectNumber,
TaskNumber,
attribute1,
attribute2,
attribute3,
MAX (monday) AS monday,
MAX (tuesday) AS tuesday,
MAX (wednesday) AS wednesday,
MAX (thursday) AS thursday,
MAX (friday) AS friday,
MAX (saturday) AS saturday,
MAX (sunday) AS sunday
FROM ( SELECT ProjectNumber,
start_time,
TaskNumber,
attribute1,
attribute2,
attribute3,
DECODE (TRIM (day_of_week), 'Monday', measure, NULL) AS monday,
DECODE (TRIM (day_of_week), 'Tuesday', measure, NULL)
AS tuesday,
DECODE (TRIM (day_of_week), 'Wednesday', measure, NULL)
AS wednesday,
DECODE (TRIM (day_of_week), 'Thursday', measure, NULL)
AS thursday,
DECODE (TRIM (day_of_week), 'Friday', measure, NULL) AS friday,
DECODE (TRIM (day_of_week), 'Saturday', measure, NULL)
AS saturday,
DECODE (TRIM (day_of_week), 'Sunday', measure, NULL) AS sunday
FROM (SELECT day_week.day_of_week,
Project_Id,
ProjectNumber,
measure,
start_time,
TaskNumber,
attribute1,
attribute2,
attribute3
FROM ( SELECT TRIM (TO_CHAR (SYSDATE + rown, 'Day'))
AS day_of_week
FROM (SELECT ROWNUM rown
FROM all_objects
WHERE ROWNUM < 8)
ORDER BY DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Monday', 1),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Tuesday', 2),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Wednesday', 3),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Thursday', 4),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Friday', 5),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Saturday', 6),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Sunday', 7)) day_week,
(SELECT DISTINCT pop.project_id,
pop.project_number ProjectNumber,
details.measure,
days.start_time,
pot.task_number TaskNumber,
ta.attribute1,
ta.attribute2,
ta.attribute3
FROM hxc_time_attributes ta,
hxc_time_attribute_usages tau,
hxc_time_building_blocks days,
hxc_time_building_blocks details,
pa_online_projects_v pop,
pa_online_tasks_v pot,
pa_projects_all p,
pa_tasks t
WHERE details.resource_id = :1 --Resource_id(Person_id from per_all_people_f table)
-- AND ABS (days.start_time - TO_DATE (:2, 'YYYY/MM/DD')) <= 21
AND days.scope = 'DAY'
AND DAYS.PARENT_building_block_id =:2 --33983243 --Template_id from hxc_template_summary---37272687
AND days.date_to = hr_general.end_of_time
AND details.scope = 'DETAIL'
AND details.date_to = hr_general.end_of_time
AND details.parent_building_block_id =
days.time_building_block_id
AND details.parent_building_block_ovn =
days.object_version_number
AND tau.time_building_block_id =
details.time_building_block_id
AND tau.time_building_block_ovn =
details.object_version_number
AND tau.time_attribute_id =
ta.time_attribute_id
AND ta.attribute_category = 'PROJECTS'
AND TO_NUMBER (ta.attribute1) = pop.project_id
AND TO_NUMBER (ta.attribute2) = pot.task_id
AND pop.project_id = p.project_id
AND pot.task_id = t.task_id) QRSLT
WHERE TRIM (TO_CHAR (QRSLT.start_time(+), 'Day')) =
day_week.day_of_week)
ORDER BY projectnumber, start_time)
GROUP BY ProjectNumber,
TaskNumber,
attribute1,
attribute2,
attribute3
TaskNumber,
attribute1,
attribute2,
attribute3,
MAX (monday) AS monday,
MAX (tuesday) AS tuesday,
MAX (wednesday) AS wednesday,
MAX (thursday) AS thursday,
MAX (friday) AS friday,
MAX (saturday) AS saturday,
MAX (sunday) AS sunday
FROM ( SELECT ProjectNumber,
start_time,
TaskNumber,
attribute1,
attribute2,
attribute3,
DECODE (TRIM (day_of_week), 'Monday', measure, NULL) AS monday,
DECODE (TRIM (day_of_week), 'Tuesday', measure, NULL)
AS tuesday,
DECODE (TRIM (day_of_week), 'Wednesday', measure, NULL)
AS wednesday,
DECODE (TRIM (day_of_week), 'Thursday', measure, NULL)
AS thursday,
DECODE (TRIM (day_of_week), 'Friday', measure, NULL) AS friday,
DECODE (TRIM (day_of_week), 'Saturday', measure, NULL)
AS saturday,
DECODE (TRIM (day_of_week), 'Sunday', measure, NULL) AS sunday
FROM (SELECT day_week.day_of_week,
Project_Id,
ProjectNumber,
measure,
start_time,
TaskNumber,
attribute1,
attribute2,
attribute3
FROM ( SELECT TRIM (TO_CHAR (SYSDATE + rown, 'Day'))
AS day_of_week
FROM (SELECT ROWNUM rown
FROM all_objects
WHERE ROWNUM < 8)
ORDER BY DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Monday', 1),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Tuesday', 2),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Wednesday', 3),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Thursday', 4),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Friday', 5),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Saturday', 6),
DECODE (
TRIM (TO_CHAR (SYSDATE + rown, 'Day')),
'Sunday', 7)) day_week,
(SELECT DISTINCT pop.project_id,
pop.project_number ProjectNumber,
details.measure,
days.start_time,
pot.task_number TaskNumber,
ta.attribute1,
ta.attribute2,
ta.attribute3
FROM hxc_time_attributes ta,
hxc_time_attribute_usages tau,
hxc_time_building_blocks days,
hxc_time_building_blocks details,
pa_online_projects_v pop,
pa_online_tasks_v pot,
pa_projects_all p,
pa_tasks t
WHERE details.resource_id = :1 --Resource_id(Person_id from per_all_people_f table)
-- AND ABS (days.start_time - TO_DATE (:2, 'YYYY/MM/DD')) <= 21
AND days.scope = 'DAY'
AND DAYS.PARENT_building_block_id =:2 --33983243 --Template_id from hxc_template_summary---37272687
AND days.date_to = hr_general.end_of_time
AND details.scope = 'DETAIL'
AND details.date_to = hr_general.end_of_time
AND details.parent_building_block_id =
days.time_building_block_id
AND details.parent_building_block_ovn =
days.object_version_number
AND tau.time_building_block_id =
details.time_building_block_id
AND tau.time_building_block_ovn =
details.object_version_number
AND tau.time_attribute_id =
ta.time_attribute_id
AND ta.attribute_category = 'PROJECTS'
AND TO_NUMBER (ta.attribute1) = pop.project_id
AND TO_NUMBER (ta.attribute2) = pot.task_id
AND pop.project_id = p.project_id
AND pot.task_id = t.task_id) QRSLT
WHERE TRIM (TO_CHAR (QRSLT.start_time(+), 'Day')) =
day_week.day_of_week)
ORDER BY projectnumber, start_time)
GROUP BY ProjectNumber,
TaskNumber,
attribute1,
attribute2,
attribute3
Tuesday, January 31, 2012
OTL submit and Save time card through API's
The timecards are first saved using p_mode = 'SAVE' (hxc_timestore_deposit.execute_deposit_process) and when the user is ready he submits his timecard using p_mode = 'SUBMIT'.
Sample code for submit and save the time cards.
Sample code for submit and save the time cards.
DECLARE
v_tbl_timecard_info hxc_self_service_time_deposit.timecard_info;
v_tbl_attributes_info hxc_self_service_time_deposit.app_attributes_info;
v_tbv_messages hxc_self_service_time_deposit.message_table;
v_new_timecard_id NUMBER;
v_new_timecard_ovn NUMBER;
i PLS_INTEGER;
v_message fnd_new_messages.message_text%TYPE;
BEGIN
FND_GLOBAL.APPS_INITIALIZE( user_id => 75375
,resp_id => 65477
,resp_appl_id => 809 );
hxc_timestore_deposit.update_building_block(p_building_block_id => 23717233,
p_app_blocks => v_tbl_timecard_info,
p_app_attributes => v_tbl_attributes_info);
hxc_timestore_deposit.execute_deposit_process (
p_validate => FALSE,
p_app_blocks => v_tbl_timecard_info,
p_app_attributes => v_tbl_attributes_info,
p_messages => v_tbv_messages,
p_mode => 'SUBMIT',
p_deposit_process => 'OTL Deposit Process',
p_timecard_id => v_new_timecard_id,
p_timecard_ovn => v_new_timecard_ovn);
-- messages have been returned
IF v_tbv_messages.COUNT != 0 THEN
i := v_tbv_messages.FIRST;
LOOP
EXIT WHEN (NOT v_tbv_messages.EXISTS (i));
-- First translate the message as the messagetable returned does not give the actual
-- message, only the message_name which doesn't mean anything to the user.
v_message := fnd_message.get_string (appin => v_tbv_messages (i).application_short_name,
namein => v_tbv_messages (i).message_name);
-- returns 4: 4
dbms_output.put_line(v_tbv_messages(i).message_name||': '||v_message);
i := v_tbv_messages.NEXT (i);
END LOOP;
END IF;
END;
Subscribe to:
Posts (Atom)