We can use the same fnd_request.submit_request API which we use to submit a program for scheduling a program too. The only difference is the value passed to the parameter “start_time“.
Usually while submitting a concurrent program form backend we pass ‘sysdate’ as value to the parameter “start_time” but to schedule a program we just need to pass a future date and time to this parameter.
For example:- If you would like to schedule a program to run after 30 minutes from now, you need to pass “to_char(sysdate + 30/1440,’DD-MON-YYYY HH24:MI:SS’)” as a value to parameter “start_time“.
Note: 1440 is the number of minutes in a day.
Below is the example to schedule a concurrent program to run after 30 minutes:
/*********************************************************
*PURPOSE: To Submit a Concurrent Request from backend *
*AUTHOR: Shailender Thallam *
**********************************************************/
--
DECLARE
l_responsibility_id NUMBER;
l_application_id NUMBER;
l_user_id NUMBER;
l_request_id NUMBER;
BEGIN
--
SELECT DISTINCT fr.responsibility_id,
frx.application_id
INTO l_responsibility_id,
l_application_id
FROM apps.fnd_responsibility frx,
apps.fnd_responsibility_tl fr
WHERE fr.responsibility_id = frx.responsibility_id
AND LOWER (fr.responsibility_name) LIKE LOWER('XXTest Resp');
--
SELECT user_id INTO l_user_id FROM fnd_user WHERE user_name = 'STHALLAM';
--
--To set environment context.
--
apps.fnd_global.apps_initialize (l_user_id,l_responsibility_id,l_application_id);
--
--Submitting Concurrent Request
--
l_request_id := fnd_request.submit_request (
application => 'XXCUST',
program => 'XXEMP',
description => 'XXTest Employee Details',
start_time => to_char(sysdate + 30/1440,'DD-MON-YYYY HH24:MI:SS'),
sub_request => FALSE,
argument1 => 'Smith'
);
--
COMMIT;
--
IF l_request_id = 0
THEN
dbms_output.put_line ('Concurrent request failed to submit');
ELSE
dbms_output.put_line('Successfully Submitted the Concurrent Request');
END IF;
--
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error While Submitting Concurrent Request '||TO_CHAR(SQLCODE)||'-'||sqlerrm);
END;
/