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;

No comments:

Post a Comment