Emailing concurrent request output is a common requirement in any business. You can email a concurrent request output in Oracle Apps using Delivery Options while submitting the requestor using API FND_REQUEST.ADD_DELIVERY_OPTION or FND_DELIVERY.
You should use this API when you are submitting a concurrent request from the backend using PL/SQL. I will explain how to use the fnd_request.add_delivery_option and fnd_delivery options, before that, I recommend reading the below articles.
FND_REQUEST.ADD_DELIVERY_OPTION
We use fnd_request.submit_request API to submit concurrent program. We can set delivery option before submitting concurrent program using fnd_request.add_delivery_option.
fnd_request.add_delivery_option syntax
Below is the signature of add_delivery_option function in fnd_request package.
FUNCTION add_delivery_option( type IN VARCHAR2, p_argument1 IN VARCHAR2 DEFAULT NULL, p_argument2 IN VARCHAR2 DEFAULT NULL, p_argument3 IN VARCHAR2 DEFAULT NULL, p_argument4 IN VARCHAR2 DEFAULT NULL, p_argument5 IN VARCHAR2 DEFAULT NULL, p_argument6 IN VARCHAR2 DEFAULT NULL, p_argument7 IN VARCHAR2 DEFAULT NULL, p_argument8 IN VARCHAR2 DEFAULT NULL, p_argument9 IN VARCHAR2 DEFAULT NULL, nls_language IN VARCHAR2 DEFAULT NULL) RETURN BOOLEAN; Arguments Type - Delivery type Email, Printer, Fax etc. p_argument1 - p_argument9 - Options specific to the delivery type nls_language - Add only for this language
Either hard-code type value or use built-in constants defined in the FND_DELIVERY package. Type parameter has below values,
-
- Email – ‘E’ or FND_DELIVERY.TYPE_EMAIL
-
- IPP printer – ‘P’ or FND_DELIVERY.TYPE_IPP_PRINTER
- FAX – ‘F’ or FND_DELIVERY.TYPE_IPP_FAX
- FTP – ‘T’ or FND_DELIVERY.TYPE_FTP
-
- SFTP – ‘S’ or FND_DELIVERY.TYPE_SFTP
- HTTP – ‘H’ or FND_DELIVERY.TYPE_HTTP
- WebDav – ‘W’ or FND_DELIVERY.TYPE_WEBDAV
- Custom – ‘C’ or FND_DELIVERY.TYPE_CUSTOM
- Burst – ‘B’ or FND_DELIVERY.TYPE_BURST
Example 1 – set delivery option email using fnd_request.add_delivery_option
DECLARE l_request_id NUMBER; l_bol_delivery BOOLEAN; BEGIN fnd_global.apps_initialize (user_id=>1121 ,resp_id=>20419 ,resp_appl_id=>0); l_bol_delivery := fnd_request.add_delivery_option (TYPE => 'E', – EMAIL p_argument1 => 'Concurrent Program Output', – Email Subject p_argument2 => '[email protected]', – From Address p_argument3 => '[email protected]', – To Address p_argument4 => '[email protected]' – CC ); l_request_id := fnd_request.submit_request ( application => 'FND' , program => 'FNDCPPGD' , description => 'Report of Concurrent Program details' , start_time => sysdate , sub_request => FALSE , argument1 => 'MSC' , argument2 => 'MSCHUBA' ); COMMIT; IF l_request_id = 0 THEN dbms_output.put_line('Request not submitted error '|| 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('Unexpected error ' || SQLERRM); END;
FND_DELIVERY.ADD_EMAIL
fnd_delivery API is a wrapper created on fnd_request.add_delivery_option package. It simplifies setting of different delivery options. Below is the list of available functions to set different delivery option.
-
- add_email
-
- add_ipp_printer
- add_fax
- add_ftp
- add_webdav
- add_http
Let’s see how to use the add_email function to set the email as a delivery option.
fnd_delivery.add_email Syntax
function add_email (subject in varchar2, from_address in varchar2, to_address in varchar2, cc in varchar2 default null, lang in varchar2 default null) return boolean;
Example 2 – set delivery option email using fnd_delivery.add_email
DECLARE l_request_id NUMBER; l_bol_delivery BOOLEAN; BEGIN fnd_global.apps_initialize (user_id=>1121 ,resp_id=>20419 ,resp_appl_id=>0); l_bol_delivery := fnd_delivery.add_email (subject => 'Concurrent Program Output', – Email Subject from_address => '[email protected]', – From Address to_address => '[email protected]', – To Address cc => '[email protected]' – CC ); l_request_id := fnd_request.submit_request ( application => 'FND' , program => 'FNDCPPGD' , description => 'Report of Concurrent Program details' , start_time => sysdate , sub_request => FALSE , argument1 => 'MSC' , argument2 => 'MSCHUBA' ); COMMIT; IF l_request_id = 0 THEN dbms_output.put_line('Request not submitted error '|| 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('Unexpected error ' || SQLERRM); END;
This submits a concurrent program. Navigate to request window -> View Details -> Delivery Opts. You can clearly see the value set by API is visible here.
fnd_request.add_delivery_option or fnd_delivery is very useful API to set delivery method for ouput of concurrent program.
I hope you find this useful. Do let me know in the comments section below.