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;