Thursday, 2 May 2013

Procedure : Waiting for child concurrent program to complete



PROCEDURE wait_for_program_completion (p_req_id IN OUT NUMBER) IS
  l_success             BOOLEAN;
  l_phase               VARCHAR2 (80); -- phase displyed on screen
  l_status              VARCHAR2 (80); -- status displayed on screen
  l_dev_phase           VARCHAR2 (80); -- phase available for developer
  l_dev_status          VARCHAR2 (80); -- status available for developer
  l_err_msg             VARCHAR2 (255);
  l_req_submitted       BOOLEAN;
BEGIN
  IF p_req_id <> 0 THEN
    l_req_submitted    :=
      fnd_concurrent.get_request_status 
             (p_req_id -- Request ID
            , NULL
            , NULL
            , l_phase--Phase displyed on screen
            , l_status--Status displayed on screen
            , l_dev_phase--Phase for developer
            , l_dev_status--Status for developer
            , l_err_msg
             ); -- Execution Message

    -- note check Request Status --
    WHILE (l_dev_phase != 'COMPLETE') LOOP
      l_success          :=
        fnd_concurrent.wait_for_request 
          (p_req_id -- Request ID
         , 20 --0.5 Mins   -- Time Interval
         , 1800 --30 Mins   -- Total Time to wait
         , l_phase -- Phase displyed on screen
         , l_status -- Status displayed on screen
         , l_dev_phase -- Phase for developer
         , l_dev_status -- Status for developer
         , l_err_msg
          ); -- Execution Message
      EXIT WHEN (l_dev_status = 'COMPLETE' OR l_success = FALSE);
    END LOOP;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    NULL;
END wait_for_program_completion;

Thursday, 14 March 2013

Query : Concurrent Program Request Status - For Specific Time Duration


  SELECT main_prog.description Module
       , fcr.hold_flag hold
       , fcr.phase_code phase
       , fcr.status_code status
       , fcr.request_id
       , fcr.parent_request_id parent_req_id
       , TRUNC( ( NVL( fcr.actual_completion_date, SYSDATE ) - fcr.actual_start_date ) * 24 * 60, 2 ) time_in_mins
       , fu.user_name
       , fcpl.user_concurrent_program_name conc_program_name
       , frl.responsibility_name
       , fcr.requested_start_date req_start_date
       , TO_CHAR( fcr.actual_start_date, 'DD-MON-YYYY HH:MI AM' ) start_date
       , TO_CHAR( fcr.actual_completion_date, 'DD-MON-YYYY HH:MI AM' ) completion_date
       , TRUNC( fcr.actual_start_date - fcr.requested_start_date, 2 ) kick_off_time
       , fcrs.completion_text
       , fcr.argument_text
       , fcr.printer
       , fcp.concurrent_program_id||'-'||fcp.concurrent_program_name conc_prog_id_code
       , fcp.executable_id ||'-' ||fe.execution_method_code||'-'||fe.executable_name ID_CODE_NAME
       , fe.execution_file_name
       , fl.meaning execution_type
       , fe.execution_file_path
       , fcr.has_sub_request
       , fcr.resubmitted
       , fcr.resubmit_interval
       , fu.description user_full_name      
       , fcr.outfile_name
       , fcr.logfile_name
    FROM apps.fnd_executables fe
       , apps.fnd_concurrent_programs fcp
       , apps.fnd_concurrent_programs_tl fcpl
       , apps.fnd_concurrent_requests fcr
       , apps.fnd_lookups fl
       , apps.fnd_responsibility_tl frl
       , apps.fnd_user fu
       , apps.fnd_conc_req_summary_v fcrs
       , apps.fnd_lookups main_prog
   WHERE     fe.executable_id = fcp.executable_id
         AND fcp.execution_method_code = fe.execution_method_code
         AND fcr.responsibility_application_id = frl.application_id
         AND fcp.concurrent_program_id = fcr.concurrent_program_id
         AND fcpl.concurrent_program_id = fcp.concurrent_program_id                                                          
         AND frl.responsibility_id = fcr.responsibility_id
         AND fu.user_id = fcr.requested_by
         AND fl.lookup_code = fe.execution_method_code
         AND fcrs.concurrent_program_id = fcr.concurrent_program_id
         AND fcrs.request_id = fcr.request_id
         AND fl.lookup_type = 'CP_EXECUTION_METHOD_CODE'
         AND frl.language = 'US'
         AND fcpl.language = 'US'
         AND fcp.concurrent_program_name = main_prog.meaning(+)        
         AND main_prog.lookup_type(+) like 'REPORTERR'                
         --and fu.user_name = 'USER-IF-REQUIRED'        
         --and fcr.argument_text like '%Argument Content%'
         --AND fcpl.user_concurrent_program_name like '%Any Program Name if Any%'
and fcr.actual_start_date <= to_date('08-Mar-2013 09:40:00','DD-MON-YYYY HH24:MI:SS')--To Time
and nvl(fcr.actual_completion_date,sysdate) >= to_date('08-Mar-2013 09:30:00','DD-MON-YYYY HH24:MI:SS') --From Time
ORDER BY fcr.actual_start_date desc,request_id desc

Tuesday, 1 January 2013

Query : GL, AP, AR, FA and PO Period Statuses

--*************************************************************************
--Query for getting GL, AP, AR, FA and PO Period Statuses
 --Pass Period or Ledger ID for selected data; otherwise all statuses will appear as per setup.
--*************************************************************************
  SELECT ( SELECT sob.name
             FROM apps.gl_sets_of_books sob
            WHERE sob.set_of_books_id = a.set_of_books_id )
            "SOB_Name"
       , a.set_of_books_id ledger_id
       , a.period_name "Period_Name"
       , a.period_num "Period_Num"
       , a.gl_status "GL_Status"
       , b.po_status "PO_Status"
       , c.ap_status "AP_Status"
       , d.ar_status "AR_Status"
       , e.fa_status "FA_Status"
       --, f.inv_status "INV_Status"
    FROM (SELECT period_name
               , period_num
               , DECODE( closing_status,  'O', 'Open',  'C', 'Closed',  'F', 'Future',  'N', 'Never',  closing_status ) gl_status
               , set_of_books_id
            FROM gl.gl_period_statuses
           WHERE application_id = 101)a-- AND UPPER( period_name ) = UPPER( :period_name ) )a
       , (SELECT period_name
               , DECODE( closing_status,  'O', 'Open',  'C', 'Closed',  'F', 'Future',  'N', 'Never',  closing_status ) po_status
               , set_of_books_id
            FROM gl.gl_period_statuses
           WHERE application_id = 201)b-- AND UPPER( period_name ) = UPPER( :period_name ))b
       , (SELECT period_name
               , DECODE( closing_status,  'O', 'Open',  'C', 'Closed',  'F', 'Future',  'N', 'Never',  closing_status ) ap_status
               , set_of_books_id
            FROM gl.gl_period_statuses
           WHERE application_id = 200)c-- AND UPPER( period_name ) = UPPER( :period_name ))c
       , (SELECT period_name
               , DECODE( closing_status,  'O', 'Open',  'C', 'Closed',  'F', 'Future',  'N', 'Never',  closing_status ) ar_status
               , set_of_books_id
            FROM gl.gl_period_statuses
           WHERE application_id = 222)d-- AND UPPER( period_name ) = UPPER(:period_name ) )d
       , (SELECT fdp.period_name, DECODE( fdp.period_close_date, NULL, 'Open', 'Closed' ) fa_status, fbc.set_of_books_id
            FROM fa.fa_book_controls fbc, fa.fa_deprn_periods fdp
           WHERE     fbc.book_type_code = fdp.book_type_code
                 --AND UPPER( fdp.period_name ) = UPPER( nvl(:period_name,fdp.period_name) )
                 ) e
       , (SELECT period_name
               , DECODE( closing_status,  'O', 'Open',  'C', 'Closed',  'F', 'Future',  'N', 'Never',  closing_status ) inv_status
               , set_of_books_id
            FROM gl.gl_period_statuses
           WHERE application_id = 401)f-- AND UPPER( period_name ) = UPPER(:period_name ) )d
   WHERE     a.period_name = b.period_name(+)
         AND a.period_name = c.period_name(+)
         AND a.period_name = d.period_name(+)
         AND a.period_name = e.period_name(+)
         AND a.period_name = f.period_name(+)
         AND a.set_of_books_id = b.set_of_books_id(+)
         AND a.set_of_books_id = c.set_of_books_id(+)
         AND a.set_of_books_id = d.set_of_books_id(+)
         AND a.set_of_books_id = e.set_of_books_id(+)
         AND a.set_of_books_id = f.set_of_books_id(+)
         AND a.set_of_books_id = nvl(:p_ledger_id,a.set_of_books_id)
         AND a.period_name = upper(nvl(:period_name,a.period_name))
         AND substr(a.period_name,1,1)||substr(a.period_name,5,2)||substr(a.period_name,2,2) >= 'P01-12'
ORDER BY 1,2, substr(a.period_name,1,1)||substr(a.period_name,5,2)||substr(a.period_name,2,2)