SlideShare a Scribd company logo
2
Most read
5
Most read
بسم ا ل ا لرحمن ا لرحيم 
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
UTL_SMTP.write_data (c, 'From: ' || p_sender || UTL_TCP.crlf); 
----------------------------------------------------------------------------- 
-- UTL_SMTP.write_data (c, 'To: ' || p_recipicent || UTL_TCP.crlf); 
--------------------------------------------------------------------------- 
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, 
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' ;
MBCC_send_mail_attch (P_sender => 'Oracle_Application@mbcc.local', 
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, 
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; 
/ 
----------------------------------------------------------------------------------------
كما هو موضح PDF الخاص بالتقرير إذا كان أكسيل أو Layout كلتيي والتي سوف يتم ربطها بأنواع ال LOV خامساً::-- يتم عمل ال 
ويتم إضافة البيانات التيية:-- بنفس البيانات 
EXCEL 
PDF
أخري وسوف نستخمها لوضع البريد اللكتروني الذي سوف يتم إرسال البريد لهم ونقدر من هنا نشيل ناس ونضيف ناس زي منتا LOV ويتم عمل 
عاوز وبسهولة من غير ما تيرجع للكود تياني 
للبريد المراد الرسال اليه Enable ويتم إضافة البيانات كلتيي:- - وعمل
LOV للتقرير ثم سحب الملف الخارج منة وإرسالة إلي البريد اللكتروني الموجود في ال Run الذي سوف يقوم بعمل Request نقوم الن  بعمل ال 
السابقة
المستخدمة في التقرير LOV الموجودة في التقرير المراد إرسالة ويمكن ايضا استخدام نفس Parameter يتم زيادتها حسب ال Parameter بالنسبة لل 
أهم حاجه الترتيب الموجود في البروسديور 
وال المستعان  
أحب اتوجه بالشكر لكل من م/ عبدالعليم زعزوع والدكتور عمرو سامي علشان  هما الي عملوا الشغل انا بس رتبتوا وكتب الورقتين دول يعني معملتش 
حاجه وربنا ينفعنا بعلمهم 
في مشكلة ل سة فاضلة ا لي ربن ا يكرمو ا ويعرف يحلها ا و يكون عندو ا مقتراحات يبعته ا تاني ل و سمحتم

More Related Content

What's hot (20)

PDF
Oracle Inventory – Inventory Controls
Boopathy CS
 
DOCX
Elshayeb Oracle R12 Order Management
Ahmed Elshayeb
 
PPT
Oracle R12 Financials New Features Overview
iWare Logic Technologies Pvt. Ltd.
 
DOCX
Personalization to restrict subinventory lov in miscellaneous transaction to ...
Ahmed Elshayeb
 
PPT
Summary Account R12 General Ledger
iWare Logic Technologies Pvt. Ltd.
 
PDF
Oracle Apps Technical – Short notes on RICE Components.
Boopathy CS
 
PDF
Oracle Order Management & Shipping Execution – Sales Order Line Status Flow &...
Boopathy CS
 
DOCX
Alerts in r12
Ramesh Yakkala
 
DOCX
Accounting for transactions in oracle e_business sute r12
حسين عبدالرحمن
 
DOCX
Base tables for order to cash
pranav kumar verma
 
PPT
Oracle fixed assets
Suresh Mishra
 
DOC
R12 subinventory transfer and inter org transfers
shravan kumar chelika
 
PDF
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Boopathy CS
 
DOCX
Elshayeb Expense Subinventory And Items Scenario
Ahmed Elshayeb
 
DOCX
Oracle Ebs Enterprise Asset Management.docx
Mina Lotfy
 
PDF
Oracle SCM Functional Interview Questions & Answers - Inventory Module - Part...
Boopathy CS
 
DOCX
PO Position Hierarchy in R12
parinay jain
 
PPTX
Webcast: BUDGETING - R12.1.3 ORACLE GENERAL LEDGER
iWare Logic Technologies Pvt. Ltd.
 
DOCX
Validate maximum expiration date for items lots
Ahmed Elshayeb
 
Oracle Inventory – Inventory Controls
Boopathy CS
 
Elshayeb Oracle R12 Order Management
Ahmed Elshayeb
 
Oracle R12 Financials New Features Overview
iWare Logic Technologies Pvt. Ltd.
 
Personalization to restrict subinventory lov in miscellaneous transaction to ...
Ahmed Elshayeb
 
Summary Account R12 General Ledger
iWare Logic Technologies Pvt. Ltd.
 
Oracle Apps Technical – Short notes on RICE Components.
Boopathy CS
 
Oracle Order Management & Shipping Execution – Sales Order Line Status Flow &...
Boopathy CS
 
Alerts in r12
Ramesh Yakkala
 
Accounting for transactions in oracle e_business sute r12
حسين عبدالرحمن
 
Base tables for order to cash
pranav kumar verma
 
Oracle fixed assets
Suresh Mishra
 
R12 subinventory transfer and inter org transfers
shravan kumar chelika
 
Oracle R12 Apps – SCM Functional Interview Questions & Answers – Purchasing M...
Boopathy CS
 
Elshayeb Expense Subinventory And Items Scenario
Ahmed Elshayeb
 
Oracle Ebs Enterprise Asset Management.docx
Mina Lotfy
 
Oracle SCM Functional Interview Questions & Answers - Inventory Module - Part...
Boopathy CS
 
PO Position Hierarchy in R12
parinay jain
 
Webcast: BUDGETING - R12.1.3 ORACLE GENERAL LEDGER
iWare Logic Technologies Pvt. Ltd.
 
Validate maximum expiration date for items lots
Ahmed Elshayeb
 

More from Ahmed Elshayeb (20)

DOCX
Personalization who i can restrict subinventory locator to store one item only
Ahmed Elshayeb
 
DOCX
Oracle Purchasing Internal Requisition
Ahmed Elshayeb
 
DOC
Personalization select all record from menu for manage buyer work load
Ahmed Elshayeb
 
DOCX
Sales Order needs to be automatically reserved, shipped & invoiced without an...
Ahmed Elshayeb
 
DOCX
Customized security roles
Ahmed Elshayeb
 
DOCX
Cascading dependencies
Ahmed Elshayeb
 
DOCX
Select all record from menu for matching item type in ap invoice personalization
Ahmed Elshayeb
 
DOCX
Oracle Personalization Restrict Subinventory And Lot Number LOV Dependent On...
Ahmed Elshayeb
 
DOCX
How to configure LCM After receiving
Ahmed Elshayeb
 
DOCX
Select All Record From Tools Menu On Find Receipts For Matching Form
Ahmed Elshayeb
 
DOCX
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Ahmed Elshayeb
 
DOCX
How to install a font using xml publisher administrator
Ahmed Elshayeb
 
DOCX
Oracle Order Management (Assign freight cost on shipping transaction)
Ahmed Elshayeb
 
DOCX
Personalization to restrict subinventory lov in interorganization transfer كي...
Ahmed Elshayeb
 
DOC
Personalizations for control deliver to organizations in Purchase Requisition...
Ahmed Elshayeb
 
DOC
Items Subinventory Assignment كيفية ربط مخزن معين بعدة أصناف بإستخدام API
Ahmed Elshayeb
 
DOCX
Assign Freight Cost On Shipping Transaction
Ahmed Elshayeb
 
DOCX
Procedure To Store Database Object Size And Number Of Rows In Custom Table
Ahmed Elshayeb
 
DOCX
Personalization to restrict values in customer name and number lov in sales o...
Ahmed Elshayeb
 
DOCX
How to remove disable and cancel shipment functionality in enter purchase or...
Ahmed Elshayeb
 
Personalization who i can restrict subinventory locator to store one item only
Ahmed Elshayeb
 
Oracle Purchasing Internal Requisition
Ahmed Elshayeb
 
Personalization select all record from menu for manage buyer work load
Ahmed Elshayeb
 
Sales Order needs to be automatically reserved, shipped & invoiced without an...
Ahmed Elshayeb
 
Customized security roles
Ahmed Elshayeb
 
Cascading dependencies
Ahmed Elshayeb
 
Select all record from menu for matching item type in ap invoice personalization
Ahmed Elshayeb
 
Oracle Personalization Restrict Subinventory And Lot Number LOV Dependent On...
Ahmed Elshayeb
 
How to configure LCM After receiving
Ahmed Elshayeb
 
Select All Record From Tools Menu On Find Receipts For Matching Form
Ahmed Elshayeb
 
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Ahmed Elshayeb
 
How to install a font using xml publisher administrator
Ahmed Elshayeb
 
Oracle Order Management (Assign freight cost on shipping transaction)
Ahmed Elshayeb
 
Personalization to restrict subinventory lov in interorganization transfer كي...
Ahmed Elshayeb
 
Personalizations for control deliver to organizations in Purchase Requisition...
Ahmed Elshayeb
 
Items Subinventory Assignment كيفية ربط مخزن معين بعدة أصناف بإستخدام API
Ahmed Elshayeb
 
Assign Freight Cost On Shipping Transaction
Ahmed Elshayeb
 
Procedure To Store Database Object Size And Number Of Rows In Custom Table
Ahmed Elshayeb
 
Personalization to restrict values in customer name and number lov in sales o...
Ahmed Elshayeb
 
How to remove disable and cancel shipment functionality in enter purchase or...
Ahmed Elshayeb
 
Ad

Send mail with attached report layout

  • 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
  • 2. UTL_SMTP.write_data (c, 'From: ' || p_sender || UTL_TCP.crlf); ----------------------------------------------------------------------------- -- UTL_SMTP.write_data (c, 'To: ' || p_recipicent || UTL_TCP.crlf); --------------------------------------------------------------------------- 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; / --------------------------------------------------------
  • 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 := '[email protected]' ;
  • 4. 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, 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; / ----------------------------------------------------------------------------------------
  • 5. كما هو موضح PDF الخاص بالتقرير إذا كان أكسيل أو Layout كلتيي والتي سوف يتم ربطها بأنواع ال LOV خامساً::-- يتم عمل ال ويتم إضافة البيانات التيية:-- بنفس البيانات EXCEL PDF
  • 6. أخري وسوف نستخمها لوضع البريد اللكتروني الذي سوف يتم إرسال البريد لهم ونقدر من هنا نشيل ناس ونضيف ناس زي منتا LOV ويتم عمل عاوز وبسهولة من غير ما تيرجع للكود تياني للبريد المراد الرسال اليه Enable ويتم إضافة البيانات كلتيي:- - وعمل
  • 7. LOV للتقرير ثم سحب الملف الخارج منة وإرسالة إلي البريد اللكتروني الموجود في ال Run الذي سوف يقوم بعمل Request نقوم الن بعمل ال السابقة
  • 8. المستخدمة في التقرير LOV الموجودة في التقرير المراد إرسالة ويمكن ايضا استخدام نفس Parameter يتم زيادتها حسب ال Parameter بالنسبة لل أهم حاجه الترتيب الموجود في البروسديور وال المستعان أحب اتوجه بالشكر لكل من م/ عبدالعليم زعزوع والدكتور عمرو سامي علشان هما الي عملوا الشغل انا بس رتبتوا وكتب الورقتين دول يعني معملتش حاجه وربنا ينفعنا بعلمهم في مشكلة ل سة فاضلة ا لي ربن ا يكرمو ا ويعرف يحلها ا و يكون عندو ا مقتراحات يبعته ا تاني ل و سمحتم