Wednesday, 7 August 2013

Query to find the Concurrent Request Scheduling Details

SELECT   r.request_id,
            p.user_concurrent_program_name
         || CASE
               WHEN p.user_concurrent_program_name = 'Report Set'
                  THEN (SELECT ' - ' || s.user_request_set_name
                          FROM fnd_request_sets_tl s
                         WHERE s.application_id = r.argument1
                           AND s.request_set_id = r.argument2
                           AND LANGUAGE = 'US')
               WHEN p.user_concurrent_program_name = 'Check Periodic Alert'
                  THEN (SELECT ' - ' || a.alert_name
                          FROM alr_alerts a
                         WHERE a.application_id = r.argument1
                           AND a.alert_id = r.argument2
                           AND LANGUAGE = 'US')
            END concurrent_program_name,
         CASE
            WHEN p.user_concurrent_program_name != 'Report Set'
            AND p.user_concurrent_program_name != 'Check Periodic Alert'
               THEN r.argument_text
         END argument_text,
         r.requested_start_date next_run, r.hold_flag on_hold,
         DECODE (c.class_type,
                 'P', 'Periodic',
                 'S', 'On Specific Days',
                 'X', 'Advanced',
                 c.class_type
                ) schedule_type,
         CASE
            WHEN c.class_type = 'P'
               THEN    'Repeat every '
                    || SUBSTR (c.class_info, 1, INSTR (c.class_info, ':') - 1)
                    || DECODE (SUBSTR (c.class_info,
                                       INSTR (c.class_info, ':', 1, 1) + 1,
                                       1
                                      ),
                               'N', ' minutes',
                               'M', ' months',
                               'H', ' hours',
                               'D', ' days'
                              )
                    || DECODE (SUBSTR (c.class_info,
                                       INSTR (c.class_info, ':', 1, 2) + 1,
                                       1
                                      ),
                               'S', ' from the start of the prior run',
                               'C', ' from the completion of the prior run'
                              )
            WHEN c.class_type = 'S'
               THEN    NVL2 (dates.dates,
                             'Dates: ' || dates.dates || '. ',
                             NULL
                            )
                    || DECODE (SUBSTR (c.class_info, 32, 1),
                               '1', 'Last day of month '
                              )
                    || DECODE (SIGN (TO_NUMBER (SUBSTR (c.class_info, 33))),
                               '1', 'Days of week: '
                                || DECODE (SUBSTR (c.class_info, 33, 1),
                                           '1', 'Su '
                                          )
                                || DECODE (SUBSTR (c.class_info, 34, 1),
                                           '1', 'Mo '
                                          )
                                || DECODE (SUBSTR (c.class_info, 35, 1),
                                           '1', 'Tu '
                                          )
                                || DECODE (SUBSTR (c.class_info, 36, 1),
                                           '1', 'We '
                                          )
                                || DECODE (SUBSTR (c.class_info, 37, 1),
                                           '1', 'Th '
                                          )
                                || DECODE (SUBSTR (c.class_info, 38, 1),
                                           '1', 'Fr '
                                          )
                                || DECODE (SUBSTR (c.class_info, 39, 1),
                                           '1', 'Sa '
                                          )
                              )
         END schedule,
         c.date1 start_date, c.date2 end_date, c.class_info
    FROM fnd_concurrent_requests r,
         fnd_conc_release_classes c,
         fnd_concurrent_programs_tl p,
         (SELECT     release_class_id,
                     SUBSTR (MAX (SYS_CONNECT_BY_PATH (s, ' ')), 2) dates
                FROM (SELECT release_class_id,
                             RANK () OVER (PARTITION BY release_class_id ORDER BY s)
                                                                            a,
                             s
                        FROM (SELECT c.class_info, l, c.release_class_id,
                                     DECODE (SUBSTR (c.class_info, l, 1),
                                             '1', TO_CHAR (l)
                                            ) s
                                FROM (SELECT     LEVEL l
                                            FROM DUAL
                                      CONNECT BY LEVEL <= 31),
                                     fnd_conc_release_classes c
                               WHERE c.class_type = 'S')
                       WHERE s IS NOT NULL)
          CONNECT BY PRIOR (a || release_class_id) =
                                                   (a - 1) || release_class_id
          START WITH a = 1
            GROUP BY release_class_id) dates
   WHERE r.phase_code = 'P'
     AND c.application_id = r.release_class_app_id
     AND c.release_class_id = r.release_class_id
     AND NVL (c.date2, SYSDATE + 1) > SYSDATE
     AND c.class_type IS NOT NULL
     AND p.concurrent_program_id = r.concurrent_program_id
     AND p.application_id = r.program_application_id
     AND p.LANGUAGE = 'US'
     AND dates.release_class_id(+) = r.release_class_id
ORDER BY on_hold, next_run;

No comments:

Post a Comment