REM RMINC_rpthis.sql
REM Concurrent Program History Report
REM Copyright 2003, Reed-Matthews, Inc.
REM For 11i
REM barb@oncalldba.com
REM
REM User has to enter a report name.  Can enter a username.  Must
REM enter a date from which to start reporting the history.
REM This report tells us the concurrent manager history of a given
REM report, including who ran it, how long it ran, and the parameters
REM that were selected. 
set timing off
set verify off
set show off
set echo off
set pagesize 66 
set linesize 180
set feedback off
set newpage 0
set heading off
column today new_value _date noprint
select to_char(SYSDATE,'DD-MON-RR') today from dual;
column Name new_value report_name format a50
break on Name skip page
column Name new_value report_name noprint
column ProgID new_value prog_id noprint
column user_name format a10 heading 'User'
set heading on
/*
ttitle CENTER 'Request History for Concurrent Program: ' report_name -
RIGHT _date ' Page:' FORMAT 999 sql.pno SKIP 2 -
'This report shows the report history for a given report.  By looking at the ' -
'parameters that have been passed by other users and the time ' -
'that it took to run the program' SKIP 1 - 
'with those parameters, you may be able to gauge ' -
'how long a report COULD run.  Try to avoid running ' -
'programs that have taken more than 10 minutes that have similar parameters' SKIP 1 -
'to the ones that you plan to select during peak business ' -
'hours (8am-6pm).  We only hound the people whose jobs take more than 10 ' - 
'minutes during those hours.' SKIP 2 -
'For STATUS, the following codes apply:' SKIP 1 - 
'E = Error, C = Completed Normal, X = Terminated, W = Warning' SKIP 2 -
'It is a little difficult to match the parameters that were passed for some ' -
'reports with the fields that you entered.  Generally they are in the same ' -
'order that you entered them. ' SKIP 1 -
'If you go to the screen where you enter reports you can compare what you ' -
'were asked for ' -
'with the translated parameters that were passed and generally get an ' -
'idea of what is' SKIP 1 -
'going on.' SKIP 2 -
'If you run this report and notice a pattern emerging - for example, if ' - 
'every time you ran it a certain way, say for one month of data, it took ' -
'longer each time, then call it in' SKIP 1 -
'to IS - it may be that as we add more and ' -
'more data, we need to add an index to improve your performance.  Without ' -
'the index, the report SHOULD take longer each time' SKIP 2
*/
ttitle CENTER 'Report History for Concurrent Request: ' report_name -
RIGHT _date ' Page:' FORMAT 999 sql.pno SKIP 2 -
'For STATUS, the following codes apply:  E = Error, C = Completed Normal, X = Terminated, W = Warning' SKIP 2

column STARTED format a18 heading 'Started'
column FINISHED format a18 heading 'Finished'
column RUNTIME format 999999.99 heading 'Minutes'
column status format a6 heading 'Status'
column argument_text format a100 heading 'Parameters Passed'
column request format 99999999 heading 'Request'

spool &&7

select
to_char(req.actual_start_date,'DD-MON-RR HH24:MI:SS') STARTED,
to_char(req.actual_completion_date,'DD-MON-RR HH24:MI:SS') FINISHED,
req.request_id Request,
prg.user_concurrent_program_name Name,
prg.concurrent_program_id ProgID,
usr.user_name,
argument_text,
status_code status,
round((req.actual_completion_date-req.actual_start_date)*(60*24),6)
RUNTIME
from fnd_user usr,
     fnd_concurrent_programs_vl prg,
     fnd_concurrent_requests req
where
     req.concurrent_program_id = prg.concurrent_program_id
     and req.program_application_id = prg.application_id
     and req.requested_by = usr.user_id
     and req.phase_code = 'C'
     and upper(prg.user_concurrent_program_name) like upper('&&1%')
     and upper(usr.user_name) like upper('&&2%')
     and req.actual_start_date >= '&&3'
     and trunc(req.actual_completion_date) <= '&&4'
union
select
    to_char(req.actual_start_date,'DD-MON-RR HH24:MI:SS') STARTED,
    to_char(req.actual_completion_date,'DD-MON-RR HH24:MI:SS') FINISHED,
    req.request_id Request,
    prg.user_concurrent_program_name Name,
    prg.concurrent_program_id ProgID,
    usr.user_name,
    argument_text,
    status_code status,
    round((req.actual_completion_date-req.actual_start_date)*(60*24),6) RUNTIME
from fnd_user usr,
     fnd_concurrent_programs_vl prg,
     fnd_concurrent_requests req
where
    req.concurrent_program_id = prg.concurrent_program_id
    and req.program_application_id = prg.application_id
    and req.requested_by = usr.user_id
    and req.phase_code = 'C'
    and upper(prg.user_concurrent_program_name) like upper('&&1%')
    and upper(usr.user_name) like upper('&&2%')
    and req.actual_start_date >= '&&3'
    and trunc(req.actual_completion_date) <= '&&4'
order by 5 desc, &&6 &&5;
