1. بسم ا ل ا لرحمن ا لرحيم
Send Mail With Attached Report layout في الملف التيي سوف نقوم بتوضيح كيفية عمل
خطوات يجب تينفيذها من قاعدة البيانات
كلتيي :-
Database التيية علي DIRECTORY أولاً:-:- يجب عمل ال
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
3. لكل تقرير حيث أن الخطوات السابفة كلها خطوات عامة PROCEDURE رابعاً::-- ومن هنا يتم النففصال بعمل
والمثال التي هو تقرير به حدود إستعلم واحدة وهي رقم امر البيع
-------------------------------------------------------------------------------------------------------------
CREATE OR REPLACE PROCEDURE MBCC_SO_PRINT_COUPONS(Errbuf OUT VARCHAR2,
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_REQUESTS
WHERE 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 := 'IT-Misr@mbcc.local' ;
5. كما هو موضح PDF الخاص بالتقرير إذا كان أكسيل أو Layout كلتيي والتي سوف يتم ربطها بأنواع ال LOV خامساً::-- يتم عمل ال
ويتم إضافة البيانات التيية:-- بنفس البيانات
EXCEL
PDF
6. أخري وسوف نستخمها لوضع البريد اللكتروني الذي سوف يتم إرسال البريد لهم ونقدر من هنا نشيل ناس ونضيف ناس زي منتا LOV ويتم عمل
عاوز وبسهولة من غير ما تيرجع للكود تياني
للبريد المراد الرسال اليه Enable ويتم إضافة البيانات كلتيي:- - وعمل
7. LOV للتقرير ثم سحب الملف الخارج منة وإرسالة إلي البريد اللكتروني الموجود في ال Run الذي سوف يقوم بعمل Request نقوم الن بعمل ال
السابقة
8. المستخدمة في التقرير LOV الموجودة في التقرير المراد إرسالة ويمكن ايضا استخدام نفس Parameter يتم زيادتها حسب ال Parameter بالنسبة لل
أهم حاجه الترتيب الموجود في البروسديور
وال المستعان
أحب اتوجه بالشكر لكل من م/ عبدالعليم زعزوع والدكتور عمرو سامي علشان هما الي عملوا الشغل انا بس رتبتوا وكتب الورقتين دول يعني معملتش
حاجه وربنا ينفعنا بعلمهم
في مشكلة ل سة فاضلة ا لي ربن ا يكرمو ا ويعرف يحلها ا و يكون عندو ا مقتراحات يبعته ا تاني ل و سمحتم