Anda di halaman 1dari 3

CREATE OR REPLACE PROCEDURE apps.

erp_send_email
(P_Request_id number)
IS
/*Variable declaration*/
fhandle UTL_FILE.file_type;
vtextout VARCHAR2 (32000);
text VARCHAR2 (32000);
v_request_id NUMBER := NULL;
v_request_status BOOLEAN;
v_phase VARCHAR2 (2000);
v_wait_status VARCHAR2 (2000);
v_dev_phase VARCHAR2 (2000);
v_dev_status VARCHAR2 (2000);
v_message VARCHAR2 (2000);
v_application_id NUMBER;
v_concurrent_program_id NUMBER;
v_conc_prog_short_name VARCHAR2 (100);
v_conc_prog_appl_short_name VARCHAR2 (100);
v_output_file_path VARCHAR2 (200);
v_log_file VARCHAR2(255);
v_output_file VARCHAR2(255);
v_concurrent_program_name VARCHAR2(255);
BEGIN
fnd_file.put_line (fnd_file.output,
' '
);
fnd_file.put_line (fnd_file.output,
'Conc Prog: ' || v_concurrent_program_name
);
fnd_file.put_line (fnd_file.output, 'Request:' ||
P_Request_id
);

/* Get Concurrent_program_id of the desired program


and application_id */
BEGIN
SELECT distinct t.user_concurrent_program_name,
r.REQUEST_ID,
r.logfile_name ,
r.outfile_name
into v_concurrent_program_name ,v_request_id,
v_log_file,
v_output_file
FROM
apps.fnd_concurrent_requests r ,
apps.fnd_concurrent_programs p ,
apps.fnd_concurrent_programs_tl t,
apps.fnd_user u, apps.fnd_conc_req_summary_v v
WHERE
r.CONCURRENT_PROGRAM_ID = p.CONCURRENT_PROGRAM_ID
AND r.actual_start_date between TRUNC(SYSDATE) and SYSDATE
--AND r.requested_by=22378
AND r.PROGRAM_APPLICATION_ID = p.APPLICATION_ID
AND t.concurrent_program_id=r.concurrent_program_id
AND r.REQUESTED_BY=u.user_id
AND v.request_id=r.request_id
--and t.user_concurrent_program_name like '%Engineering% Change Order Implementa
tion %'
and t.concurrent_program_id='50582'
and r.STATUS_CODE in ('E','G')
and r.REQUEST_ID not in (select request_id from XX_SEND_EMAIL)
and r.REQUEST_ID =P_Request_id
order by to_char(r.ACTUAL_COMPLETION_DATE,'dd-mm-yy hh24:mi:ss');
fnd_file.put_line (fnd_file.LOG,'Conc Prog ID:' ||
v_concurrent_program_id
);
fnd_file.put_line (fnd_file.LOG, 'Application ID: ' ||
v_application_id
);

/* Getting the path where output file of the program is


created */
SELECT outfile_name
INTO v_output_file_path
FROM fnd_concurrent_requests
WHERE request_id = v_request_id;
/* Open the output file in Read mode */
fhandle := UTL_FILE.FOPEN('/u01/ebsprd/apps/fs_ne/inst/GOLD_advebsapp201/logs/ap
pl/conc/out/','o' || v_request_id || '.out', 'r');
IF UTL_FILE.is_open (fhandle)
THEN
DBMS_OUTPUT.put_line ('File read open');
ELSE
DBMS_OUTPUT.put_line ('File read not open');
END IF;
/* Get the contents of the file into variable text */
LOOP
BEGIN
UTL_FILE.get_line (fhandle, vtextout);
text := text || vtextout || UTL_TCP.crlf;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
EXIT;
END;
END LOOP;
UTL_FILE.fclose (fhandle);
/*Calling UTL_MAIL.send_attach_varchar2 to send the output as
Email attachment */
begin
sys.UTL_MAIL.send_attach_varchar2
(
sender => 'vamsij205@altadevices.com',
recipients => 'vamsij205@altadevices.com',
subject => 'Testmail',
MESSAGE => 'Hell0',
attachment => text,
att_inline => FALSE
);
insert into XX_SEND_EMAIL values (v_request_id);
commit;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line ('Mail failed:'||SQLERRM);
end;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.put_line ('Main Program Error:'||SQLERRM);
end;
end;

Anda mungkin juga menyukai