Home » Oracle » Oracle Ebuisness Suite » How to submit a concurrent program from the backend

How to submit a concurrent program from the backend

Concurrent Programs can be submitted from the backend ie. database using fnd_request.submit_request.We will check in this post the various code on How to submit a concurrent program from the backend

The snippet of the API

FUNCTION fnd_request.submit_request 
(
application      IN             VARCHAR2 DEFAULT NULL,
program          IN             VARCHAR2 DEFAULT NULL,
description      IN             VARCHAR2 DEFAULT NULL,
start_time       IN             VARCHAR2 DEFAULT NULL,
sub_request      IN              BOOLEAN DEFAULT FALSE 
argument1,
argument2,
…,
argument99,
argument100)
RETURN NUMBER;

We need to initialize the FND Session using fnd_global.apps_initialize before calling this API

Here

How to submit a concurrent program from the backend

Let’s check an example now

DECLARE

l_user_name VARCHAR2(240) := 'SYSADMIN';
l_resp_name VARCHAR2(240) := 'System Administrator';

l_user_id       NUMBER;
l_resp_id       NUMBER;
l_resp_appl_id  NUMBER;

l_request_id NUMBER;

BEGIN
-- Apps Initialization
   SELECT    user_id
    INTO l_user_id
   FROM fnd_user
   WHERE user_name =l_user_name;

   SELECT  b.RESPONSIBILITY_ID,b.APPLICATION_ID 
    FROM fnd_responsibility_tl tl, fnd_responsibility b
    WHERE tl.responsibility_name = l_resp_name
      AND LANGUAGE=UserEnv('LANG')
      AND tl.RESPONSIBILITY_ID=b.RESPONSIBILITY_ID;

  fnd_global.apps_initialize
    ( user_id => l_user_id
     ,resp_id => l_resp_id
     ,resp_appl_id => l_resp_appl_id
    );
--
l_request_id := FND_request.submit_request
              (application => 'XXTEST',  -- Custom Application Short Name
               program     => 'TESTPROG',   -- Concurrent Short Name
               description =>  NULL,
               start_time  =>  sysdate,
               sub_request =>  FALSE,
                argument1  =>  null, 
                           );

 COMMIT;
 
   IF l_request_id = 0 THEN
      DBMS_OUTPUT.put_line('Request not submitted: '|| fnd_message.get);
   ELSE
      DBMS_OUTPUT.put_line('Request submitted successfully. Request id: ' || l_request_id);
   END IF;
 
EXCEPTION
   WHEN OTHERS THEN
     DBMS_OUTPUT.put_line('Exception: ' || SQLERRM);   
END;
/

We have submitted to start the concurrent Program immediately by specifying the sysdate. If you want to specify the date, you can use it in the below manner

DECLARE

l_user_name VARCHAR2(240) := 'SYSADMIN';
l_resp_name VARCHAR2(240) := 'System Administrator';

l_user_id NUMBER;
l_resp_id NUMBER;
l_resp_appl_id NUMBER;

l_request_id NUMBER;

BEGIN
-- Apps Initialization
SELECT user_id
INTO l_user_id
FROM fnd_user
WHERE user_name =l_user_name;

SELECT b.RESPONSIBILITY_ID,b.APPLICATION_ID
FROM fnd_responsibility_tl tl, fnd_responsibility b
WHERE tl.responsibility_name = l_resp_name
AND LANGUAGE=UserEnv('LANG')
AND tl.RESPONSIBILITY_ID=b.RESPONSIBILITY_ID;

fnd_global.apps_initialize
( user_id => l_user_id
,resp_id => l_resp_id
,resp_appl_id => l_resp_appl_id
);

l_request_id := FND_request.submit_request
(application => 'FND',
program => 'TESTPROG',
description => NULL,
start_time => to_char('11-JAN-2022 18::24:23','DD-MON-YYYY HH24:MI:SS'),
sub_request => FALSE,
argument1 => null,
);

COMMIT;

IF l_request_id = 0 THEN
DBMS_OUTPUT.put_line('Request not submitted: '|| fnd_message.get);
ELSE
DBMS_OUTPUT.put_line('Request submitted successfully. Request id: ' || l_request_id);
END IF;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Exception: ' || SQLERRM);
END;
/

Submit Concurrent Program from the backend with a periodic schedule

Now if you want to submit a recurring Concurrent request, then you have to use the API fnd_request.set_repeat_options before submitting the concurrent program

See also  How to Get environment variables of running process in Linux

Here is the sample code

DECLARE
v_request_id NUMBER;
v_status BOOLEAN;

BEGIN
--Initialize the session with appropriate values
fnd_global.apps_initialize (user_id=>0
,resp_id=>20420
,resp_appl_id=>1);

--Set the Repeat Options 
v_status := fnd_request.set_repeat_options ( repeat_interval => 1 , repeat_unit => 'DAYS' , repeat_type => 'START'); 

--Submit the Request 
v_request_id := FND_request.submit_request 
(application => 'XXTEST', 
program =>     'XXFBG',  
description => NULL, 
start_time => '2022/01/17 09:40:00', 
sub_request => FALSE, 
argument1 => 'AD' ); 
COMMIT;

IF v_request_id = 0 THEN
    DBMS_OUTPUT.put_line('Request not submitted: '|| fnd_message.get);
ELSE
    DBMS_OUTPUT.put_line('Request submitted successfully. Request id: ' || v_request_id);
END IF;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line('Exception: ' || SQLERRM);
END;
/

I hope you find this information on How to submit a concurrent program from the backend in Oracle EBS useful. Please do provide feedback

Related Articles 

Oracle Concurrent Manager: How an E-Business Suite Concurrent Manager Process Works, Oracle Concurrent Manager, What is internal monitor, What are the service manager and troubleshooting
Concurrent Request Phase and Status: All information about Concurrent Request Phase and Status. The meaning is derived for each combination.
Core files in Oracle Concurrent Manager: This page contains a description of the core file for Oracle Concurrent Manager. Core files can be used to debug various issues in CM
Priority for concurrent Program: This post has a detailed description of changing Priority for Concurrent Program or user or request to solve user critical report running issues
Concurrent Manager Interview questions: Check out 24 Concurrent Manager Interview questions to help you in the EBS interview. This consists of all sorts of questions on the standard manager, service manager
Parallel Concurrent Processing: What is PCP, How to set it up, how to define an internal monitor
ORA-01427:Check out this for the solution on ORA-01427: single-row subquery returns more than one-row error, how to resolve it when it happens with Concurrent Manager

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top