send mail with attached report layout

10
م ي ح ر ل ا ن م ح ر ل له ا م الس ب ل م ع ه ي ف ي ك ح ي ض و ت ب وم ق ن وف س ي ت, الآ ف ل م ل ا ي فSend Mail With Attached Report layout 4 ات ان ي: لب ا اعدة ق ن م ها د ي ف يC ب ب ج ي وات ط خ-: ي ت, لآ كً ولآO ا-: ال ل م ع ب ج يDIRECTORY ي عل ه ي ب, الآDatabase و ه ا هد ن ع ولO ت س م لر وا ير ق ي ل ا4 ل ي ع ق ن ن م ها ج را خ م ا ي ب ي لت ا ات ف ل م ل ه ا ود ب ج و م لر ا سا م ل ه ا ب ون ك ن و ه وDBA ---------------------------------------------------------------------- CREATE OR REPLACE DIRECTORY REQ_OUT AS '/oracle/PROD/inst/apps/MBCC_htest/logs/appl/conc/out' ; ---------------------------------------------------------------------- دول ل ج م ع-: ً ا ي ب اj ن---------------------------------------------------------------------- CREATE TABLE APPS . MAIL_BLOB ( M_ID NUMBER , BLOB BLOB ) ; ------------------------------------------------------------------------ -: ً اj ي ل اj ن--------------------------------------------------------------------------------------------------- ----- CREATE OR REPLACE PROCEDURE APPS . MBCC_send_mail_attch ( p_sender IN VARCHAR2 , p_recipicent IN VARCHAR2 , p_subject IN VARCHAR2 , p_message IN VARCHAR2 , p_filename IN VARCHAR2 , p_blob BLOB , P_VALUE_SET_ID IN NUMBER ) IS l_mailhost VARCHAR2 ( 64 ) := '192.168.1.4' ; --' رسالl ا ن ع ولO ت س م لدم ا ا خ ل ا وان ت ع ب س ح ر يq ي غ ي ل م ا ي ب لآت ي م ل ا'; c UTL_SMTP . connection ;

Upload: ahmed-elshayeb

Post on 14-Jun-2015

192 views

Category:

Business


1 download

DESCRIPTION

Send Mail With Attached Report Layout

TRANSCRIPT

Page 1: Send mail with attached report layout

الرحيم الرحمن الله بسم

عمل كيفية بتوضيح نقوم سوف اآلتي الملف Send Mail With Attached Report layoutفي

البيانات قاعدة من تنفيذها يجب خطوات

كآلتي :-

+ ال :-أوًال عمل علي DIRECTORYيجب Databaseاآلتية

هو هذا عن والمسئول التقرير تفعيل من اخراجها يتم التي الملفات به الموجود المسار به يكون DBAوهو

----------------------------------------------------------------------CREATE OR REPLACE DIRECTORY REQ_OUT AS '/oracle/PROD/inst/apps/MBCC_htest/logs/appl/conc/out';----------------------------------------------------------------------

جدول:- عمل ثًانيًا�

----------------------------------------------------------------------CREATE TABLE APPS.MAIL_BLOB(M_ID NUMBER,BLOB BLOB) ;------------------------------------------------------------------------

-:+ ثالثا

--------------------------------------------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE APPS.MBCC_send_mail_attch (p_sender IN VARCHAR2, p_recipicent IN VARCHAR2, p_subject IN VARCHAR2, p_message IN VARCHAR2, p_filename IN VARCHAR2, p_blob BLOB, P_VALUE_SET_ID IN NUMBER)IS l_mailhost VARCHAR2 (64) := '192.168.1.4'; --' الميلات إرسال عن المسئول الخادم عنوان حسب التغيير ;'يتم c UTL_SMTP.connection; v_raw RAW (57); v_length INTEGER := 0; v_buffer_size INTEGER := 57; v_offset INTEGER := 1; l_boundary VARCHAR2 (32) := SYS_GUID ();BEGIN c := UTL_SMTP.open_connection (l_mailhost, 25); UTL_SMTP.helo (c, l_mailhost); UTL_SMTP.mail (c, p_sender); ------------------------------------------------ --UTL_SMTP.rcpt (c, p_recipicent); --------------------------------------------- FOR I IN (SELECT FV.flex_value mail -- FVT.description FROM FND_FLEX_VALUES FV WHERE (FV.FLEX_VALUE_SET_ID=P_VALUE_SET_ID) AND NVL (FV.ENABLED_FLAG, 'Y') = 'Y' )loop UTL_SMTP.rcpt (c, i.mail ); end loop; ------------------------------------------------- UTL_SMTP.open_data (c); -- Header UTL_SMTP.write_data (c, 'From: ' || p_sender || UTL_TCP.crlf); ------------------------------------------------------------------------------- UTL_SMTP.write_data (c, 'To: ' || p_recipicent || UTL_TCP.crlf);

Page 2: Send mail with attached report layout

--------------------------------------------------------------------------- FOR I IN (SELECT FV.flex_value mail -- FVT.description FROM FND_FLEX_VALUES FV WHERE (FV.FLEX_VALUE_SET_ID=P_VALUE_SET_ID) AND NVL (FV.ENABLED_FLAG, 'Y') = 'Y' )loop UTL_SMTP.write_data (c, 'To: ' || i.mail || UTL_TCP.crlf); end loop; ------------------------------------------------------------------------ UTL_SMTP.write_data (c, 'Subject: ' || UTL_ENCODE.MIMEHEADER_ENCODE(p_subject) || UTL_TCP.crlf); UTL_SMTP.write_data (c, 'MIME-Version: 1.0' || UTL_TCP.crlf); UTL_SMTP.write_data (c, 'Content-Type: multipart/mixed; ' || UTL_TCP.crlf); UTL_SMTP.write_data (c, ' boundary= "' || l_boundary || '"' || UTL_TCP.crlf); UTL_SMTP.write_data (c, UTL_TCP.crlf); -- Body UTL_SMTP.write_data (c, '--' || 'Content-Type: text/html;charset=1256' || UTL_TCP.crlf); UTL_SMTP.write_data (c, 'Content-Transfer-Encoding: 8bit' || UTL_TCP.crlf); UTL_SMTP.write_data (c, UTL_TCP.crlf); UTL_SMTP.write_data (c, utl_raw.cast_to_raw(p_message) || UTL_TCP.crlf); UTL_SMTP.write_data (c, UTL_TCP.crlf); --================================================================== -- Attachment UTL_SMTP.write_data (c, '--' || l_boundary || UTL_TCP.crlf); UTL_SMTP.write_data ( c, 'Content-Type: application/octet-stream' || UTL_TCP.crlf); UTL_SMTP.write_data ( c, 'Content-Disposition: attachment; filename="' || p_filename || '"' || UTL_TCP.crlf); UTL_SMTP.write_data (c, 'Content-Transfer-Encoding: base64' || UTL_TCP.crlf); UTL_SMTP.write_data (c, UTL_TCP.crlf); v_length := DBMS_LOB.getlength (p_blob); -- <<while_loop>> WHILE v_offset < v_length LOOP DBMS_LOB.read (p_blob, v_buffer_size, v_offset, v_raw); UTL_SMTP.write_raw_data (c, UTL_ENCODE.base64_encode (v_raw)); UTL_SMTP.write_data (c, UTL_TCP.crlf); v_offset := v_offset + v_buffer_size; END LOOP while_loop; UTL_SMTP.write_data (c, '--' || l_boundary || '--' || UTL_TCP.crlf); UTL_SMTP.write_data (c, UTL_TCP.crlf); UTL_SMTP.close_data (c); UTL_SMTP.quit (c);EXCEPTION WHEN UTL_SMTP.transient_error OR UTL_SMTP.permanent_error THEN UTL_SMTP.quit (c); RAISE; WHEN OTHERS THEN RAISE;END MBCC_send_mail_attch;/

--------------------------------------------------------

بعمل:- اإلنفصال يتم هنا ومن + عامة PROCEDUREرابعا خطوات كلها السابفة الخطوات أن حيث تقرير لكل

البيع امر رقم وهي واحدة إستعالم حدود به تقرير هو اآلتي والمثال

-------------------------------------------------------------------------------------------------------------CREATE OR REPLACE PROCEDURE MBCC_SO_PRINT_COUPONS(Errbuf OUT VARCHAR2,

Page 3: Send mail with attached report layout

Retcode OUT NUMBER, P_SO IN VARCHAR2, P_Layout_Type IN VARCHAR2 )IS v_req_id NUMBER; v_phase VARCHAR2(240); v_status VARCHAR2(240); v_request_phase VARCHAR2(240); v_request_status VARCHAR2(240); v_finished BOOLEAN; v_message VARCHAR2(240); f_nam VARCHAR2(100); attach BLOB; mail_bf BFILE; v_recp VARCHAR2(100) ; v_set_layout_option boolean; BEGIN UPDATE MAIL_BLOB SET m_blob = EMPTY_BLOB(); --Fnd_global.Apps_initialize(6222, 20560,706); v_set_layout_option := fnd_request.add_layout('ONT','XXCBS_SCM_PRINT_COUPONS1','EN','US',P_Layout_Type); v_req_id := FND_REQUEST.SUBMIT_REQUEST ('ONT', 'XXCBS_SCM_PRINT_COUPONS1', NULL ,SYSDATE,FALSE, P_SO ); COMMIT; -- INSERT INTO wip_log VALUES (p_job_id,v_wo, v_req_id,'report submitted'); IF v_req_id = 0 THEN errbuf := 'Report Not Submited ... ' || fnd_message.get ; retcode := 2; RETURN; END IF;

DBMS_LOCK.SLEEP (10); v_finished := Fnd_Concurrent.Wait_For_Request (request_id => v_req_id, interval => 10, max_wait => 0, phase => v_phase, status => v_status, dev_phase => v_request_phase, dev_status => v_request_status, message => v_message); -- v_sub_status := (UPPER(v_request_status) = 'NORMAL') ;

DBMS_LOCK.SLEEP (3);

SELECT 'XXCBS_SCM_PRINT_COUPONS1_'||v_req_id||'_1.'||P_Layout_Type --REGEXP_SUBSTR (outfile_name, '[^/\]*$') INTO f_nam FROM FND_CONCURRENT_REQUESTSWHERE request_id = v_req_id ; mail_bf := BFILENAME ('REQ_OUT', f_nam); DBMS_LOB.OPEN ( mail_bf, DBMS_LOB.LOB_READONLY ); SELECT m_blob INTO attach FROM MAIL_BLOB WHERE m_id = 1 FOR UPDATE; DBMS_LOB.LOADFROMFILE (dest_lob => attach, src_lob => mail_bf, amount => DBMS_LOB.getLength (mail_bf)); COMMIT; v_recp := 1015493 ;--- لهم البريد إرسال المراد الخاصباألفراد البريد وضع تم التي الخاصبالقائمة الكود أخذ ----- يتم-- v_recp := '[email protected]' ; MBCC_send_mail_attch (P_sender => '[email protected]', P_recipicent => v_recp ,-- P_subject => P_So || ' Printed', P_subject => P_So || ' الشايب', P_message => 'Order Number : ' || P_So || ' لللل الشايب ',-- P_message => 'Order Number : ' || P_So || ' Printed', P_filename => P_So ||'.'|| CASE WHEN P_Layout_Type='EXCEL' THEN 'xls' ELSE P_Layout_Type end, P_blob => attach,

Page 4: Send mail with attached report layout

P_VALUE_SET_ID=>v_recp ); DBMS_LOB.FILECLOSE (mail_bf); Errbuf := 'COMPLETED All '; Retcode := 0;EXCEPTION WHEN OTHERS THEN Errbuf := SQLERRM ; --'NOT COMPLETED (Last )'; Retcode := 2;END MBCC_SO_PRINT_COUPONS;/----------------------------------------------------------------------------------------

-:+ ال خامسا عمل ربطها LOVيتم يتم سوف والتي ال كآلتي أو Layoutبأنواع أكسيل كان إذا بالتقرير كما PDFالخاصموضح هو

Page 5: Send mail with attached report layout

: اآلتية البيانات إضافة البيانات -ويتم بنفسEXCEL

PDF

عمل نشيل LOVويتم هنا من ونقدر لهم البريد إرسال يتم سوف الذي اإللكتروني البريد لوضع نستخمها وسوف أخريتاني للكود ترجع ما غير من وبسهولة عاوز منتا ناسزي ناسونضيف

Page 6: Send mail with attached report layout

- : وعمل كآلتي البيانات إضافة اليه Enableويتم اإلرسال المراد للبريد

Page 7: Send mail with attached report layout

ال بعمل اآلن بعمل Requestنقوم يقوم سوف البريد Runالذي إلي وإرسالة منة الخارج الملف سحب ثم للتقريرال في الموجود السابقة LOVاإللكتروني

Page 8: Send mail with attached report layout

لل ال Parameterبالنسبة حسب زيادتها نفس Parameterيتم استخدام ايضا ويمكن إرسالة المراد التقرير في الموجودةLOV البروسديور في الموجود الترتيب حاجه أهم التقرير في المستخدمة

المستعان والله

/ بسرتبتوا انا الشغل عملوا الي هما علشان سامي عمرو والدكتور زعزوع عبدالعليم م من لكل بالشكر اتوجه أحببعلمهم ينفعنا وربنا معملتشحاجه يعني دول الورقتين وكتب

عندوا يكون او يحلهًا ويعرف يكرموا ربنًا الي فًاضلة لسة فيمشكلةسمحتم لو تًاني يبعتهًا مقتراحًات