Most of the times while submitting concurrent request one has to wait for its completion to perform sequence of steps. This can be achieved through fnd_concurrent.wait_for_request in oracle apps. It returns the status of the previously submitted concurrent program upon interval set.
This is a conjunction to the SUBMIT_REQUEST. Follow ARTICLE on submitting concurrent program and use below call upon completed. There are some parameter that has to be declared.
lb_complete BOOLEAN;
lc_phase VARCHAR2 (100);
lc_status VARCHAR2 (100);
lc_dev_phase VARCHAR2 (100);
lc_dev_status VARCHAR2 (100);
lc_message VARCHAR2 (100);
lc_phase VARCHAR2 (100);
lc_status VARCHAR2 (100);
lc_dev_phase VARCHAR2 (100);
lc_dev_status VARCHAR2 (100);
lc_message VARCHAR2 (100);
ln_request_id is return variable for concurrent_request_id from above article. If ln_request_id > 0 (means request submitted successfully) then wait_for_request.
Arguments (input)
request_id - Request ID to wait on
interval - time b/w checks. Number of seconds to sleep (default 60 seconds)
max_wait - Max amount of time to wait (in seconds) for request's completion
Arguments (output)
User version of phase and status
Developer version of phase and status
Completion text if any
phase - Request phase ( from meaning in fnd_lookups )
status - Request status( for display purposes )
dev_phase - Request phase as a constant string so that it can be used for comparisons
dev_status - Request status as a constatnt string
message - Completion message if request has completed
request_id - Request ID to wait on
interval - time b/w checks. Number of seconds to sleep (default 60 seconds)
max_wait - Max amount of time to wait (in seconds) for request's completion
Arguments (output)
User version of phase and status
Developer version of phase and status
Completion text if any
phase - Request phase ( from meaning in fnd_lookups )
status - Request status( for display purposes )
dev_phase - Request phase as a constant string so that it can be used for comparisons
dev_status - Request status as a constatnt string
message - Completion message if request has completed
IF ln_request_id > 0
THEN
lb_complete :=
fnd_concurrent.wait_for_request (request_id => ln_request_id
,interval => 2
,max_wait => 60
THEN
lb_complete :=
fnd_concurrent.wait_for_request (request_id => ln_request_id
,interval => 2
,max_wait => 60
-- out arguments
,phase => lc_phase
,status => lc_status
,dev_phase => lc_dev_phase
,dev_status => lc_dev_status
,message => lc_message
);
COMMIT;
IF UPPER (lc_dev_phase) IN ('COMPLETE')
THEN
dbms_output.put_line('Concurrent request completed successfully');
END IF;
END IF;
,phase => lc_phase
,status => lc_status
,dev_phase => lc_dev_phase
,dev_status => lc_dev_status
,message => lc_message
);
COMMIT;
IF UPPER (lc_dev_phase) IN ('COMPLETE')
THEN
dbms_output.put_line('Concurrent request completed successfully');
END IF;
END IF;
You need to switch the values for max_wait and interval. Max_wait should be 0 and the interval between checks can vary if it is a long running program. The default is 60 seconds.
ReplyDelete