Automatically send mail from ALV reports
hi experts,
I have created an ALV report for overtime calculation.The report will be generated on weekly basis in the background and will display calculated overtime worked by employees in the previous week. I want the Report to run background and send the report in the HR dept concened officer in excel format automatically on weekly basis for his approval.
how do i go about.
regards,
aero
hi,
<b>1</b>. u can prepare the output in an internal table ITAB.
<b>2</b>. and then u can fill mail content with the help of ITAB data
<b>3</b>. and then call function <b>'SO_NEW_DOCUMENT_SEND_API1'</b> if u have no attachement to be sent, but only normal mail with content in it.
The sample code is below.
FORM header_of_mail.
CLEAR g_s_object_content.
REFRESH g_t_object_content.
Get an empty line
MOVE space TO g_s_object_content+0(81).
APPEND g_s_object_content TO g_t_object_content.
Print partner number and description
CLEAR g_s_object_content.
MOVE text-t13 TO g_s_object_content. " WMS
MOVE sy-uline TO g_s_object_content+15(1).
MOVE g_f_wms_descr TO g_s_object_content+30.
APPEND g_s_object_content TO g_t_object_content.
Print Division for which the mail is meant for
CLEAR g_s_object_content.
MOVE text-t14 TO g_s_object_content. " Material with division
MOVE sy-uline TO g_s_object_content+25(1).
MOVE g_t_y16m_rcp_par-spart TO g_s_object_content+30.
APPEND g_s_object_content TO g_t_object_content.
Get an empty line
CLEAR g_s_object_content.
MOVE space TO g_s_object_content+0(81).
APPEND g_s_object_content TO g_t_object_content.
Get a dotted line.
CLEAR g_s_object_content.
MOVE sy-uline TO g_s_object_content+0(120).
APPEND g_s_object_content TO g_t_object_content.
Print column headings
CLEAR g_s_object_content.
MOVE text-t04 TO g_s_object_content+3(16). " IDoc number
MOVE text-t05 TO g_s_object_content+27(18). " Material number
MOVE text-t07 TO g_s_object_content+63(6). " Length
MOVE text-t08 TO g_s_object_content+81(5). " Width
MOVE text-t09 TO g_s_object_content+97(6). " Height
MOVE text-t10 TO g_s_object_content+109(11). " Brut Weight
APPEND g_s_object_content TO g_t_object_content.
Get a dotted line.
CLEAR g_s_object_content.
MOVE sy-uline TO g_s_object_content+0(120).
APPEND g_s_object_content TO g_t_object_content.
ENDFORM. " HEADER_OF_MAIL
FORM body_of_mail.
Print contents such as IDoc number, material no. and measures
LOOP AT g_t_mail_for_division.
CLEAR g_s_object_content.
MOVE g_t_mail_for_division-docnum TO g_s_object_content+3(16).
MOVE g_t_mail_for_division-matnr TO g_s_object_content+27(18).
MOVE text-t11 TO g_s_object_content+49(4).
MOVE g_t_mail_for_division-laeng_from_sap TO
g_s_object_content+57(13).
MOVE g_t_mail_for_division-breit_from_sap TO
g_s_object_content+74(13).
MOVE g_t_mail_for_division-hoehe_from_sap TO
g_s_object_content+91(13).
MOVE g_t_mail_for_division-brgew_from_sap TO
g_s_object_content+108(13).
APPEND g_s_object_content TO g_t_object_content.
CLEAR g_s_object_content.
MOVE text-t12 TO g_s_object_content+49(4).
MOVE g_t_mail_for_division-laeng_from_idoc TO
g_s_object_content+57(13).
MOVE g_t_mail_for_division-breit_from_idoc TO
g_s_object_content+74(13).
MOVE g_t_mail_for_division-hoehe_from_idoc TO
g_s_object_content+91(13).
MOVE g_t_mail_for_division-brgew_from_idoc TO
g_s_object_content+108(13).
APPEND g_s_object_content TO g_t_object_content.
ENDLOOP.
ENDFORM. " BODY_OF_MAIL
FORM send_mail USING p_y16m_rcp_par STRUCTURE y16m_rcp_par.
Have a subject for the mail
g_s_document_data-obj_name = text-t02.
g_s_document_data-obj_descr = text-t03.
Fill receiver information
CLEAR g_s_receivers.
REFRESH g_t_receivers.
g_s_receivers-rec_type = p_y16m_rcp_par-rec_type.
g_s_receivers-receiver = p_y16m_rcp_par-rec_id.
g_s_receivers-express = 'X'.
APPEND g_s_receivers TO g_t_receivers.
Call function to send mail
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = g_s_document_data
document_type = 'RAW'
PUT_IN_OUTBOX = ' '
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
TABLES
OBJECT_HEADER =
object_content = g_t_object_content
CONTENTS_HEX =
OBJECT_PARA =
OBJECT_PARB =
receivers = g_t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " SEND_MAIL
hope this helps.
pls reward if useful...
Message was edited by:
pawan ambadas
Similar Messages
-
Problem to send text file to mail from ALV report
Hi Friends,
I have a problem in my ALV report with text file. As per the requirment, when we execute the program then text attachment should go to the particual email.
When i am using file type as XLS i am getting attachment with all 4 recoreds( input for 4 records) in mail. But all 4 records are coming in SAME ROW. It should come 4 records in 4 rows. when I use file type as TXT and separated by pipe symble in code, it is showing only one recored for same above input.
When i use file type as XLS and click the attachment in email, it will triggire one popul with three options like SAVE, OPEN, CANCEL.
But when i click on text file attachment, it is directly showing ony one recored.
Please correct me on this.
my code is
PERFORM send_file_as_email_attachment
tables i_message
i_attach
using v_email
'User last log on details'
'XLS'
'User log on list'
changing v_error
v_reciever.
FORM send_file_as_email_attachment tables pi_message
pi_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
DATA: l_error TYPE sy-subrc,
l_reciever TYPE sy-subrc,
l_mtitle LIKE sodocchgi1-obj_descr,
l_email LIKE somlreci1-receiver,
l_format TYPE so_obj_tp ,
l_attdescription TYPE so_obj_nam ,
l_attfilename TYPE so_obj_des ,
l_sender_address LIKE soextreci1-receiver,
l_sender_address_type LIKE soextreci1-adr_typ,
l_receiver LIKE sy-subrc.
l_email = p_email.
l_mtitle = p_mtitle.
l_format = p_format.
l_attdescription = p_attdescription.
l_attfilename = p_filename.
l_sender_address = p_sender_address.
l_sender_address_type = p_sender_addres_type.
Fill the document data.
v_doc_data-doc_size = 1.
Populate the subject/generic message attributes
v_doc_data-obj_langu = sy-langu.
v_doc_data-obj_name = 'SAPRPT'.
v_doc_data-obj_descr = l_mtitle .
v_doc_data-sensitivty = 'F'.
Fill the document data and get size of attachment
CLEAR v_doc_data.
READ TABLE i_attach INDEX v_cnt.
v_doc_data-doc_size =
( v_cnt - 1 ) * 255 + STRLEN( i_attach ).
v_doc_data-obj_langu = sy-langu.
v_doc_data-obj_name = 'SAPRPT'.
v_doc_data-obj_descr = l_mtitle.
v_doc_data-sensitivty = 'F'.
CLEAR i_attachment.
REFRESH i_attachment.
i_attachment[] = pi_attach[].
Describe the body of the message
CLEAR i_packing_list.
REFRESH i_packing_list.
i_packing_list-transf_bin = space.
i_packing_list-head_start = 1.
i_packing_list-head_num = 0.
i_packing_list-body_start = 1.
DESCRIBE TABLE i_message LINES i_packing_list-body_num.
i_packing_list-doc_type = 'RAW'.
APPEND i_packing_list.
Create attachment notification
i_packing_list-transf_bin = 'X'.
i_packing_list-head_start = 1.
i_packing_list-head_num = 1.
i_packing_list-body_start = 1.
DESCRIBE TABLE i_attachment LINES i_packing_list-body_num.
i_packing_list-doc_type = l_format.
i_packing_list-obj_descr = l_attdescription.
i_packing_list-obj_name = l_attfilename.
i_packing_list-doc_size = i_packing_list-body_num * 255.
APPEND i_packing_list.
Add the recipients email address
CLEAR i_receivers.
REFRESH i_receivers.
i_receivers-receiver = l_email.
i_receivers-rec_type = 'U'.
i_receivers-com_type = 'INT'.
i_receivers-notif_del = 'X'.
i_receivers-notif_ndel = 'X'.
APPEND i_receivers.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = v_doc_data
put_in_outbox = 'X'
sender_address = l_sender_address
sender_address_type = l_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = v_sent_all
TABLES
packing_list = i_packing_list
contents_bin = i_attachment[]
contents_txt = i_message
receivers = i_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
Populate zerror return code
l_error = sy-subrc.Hi,
declare the following constant in u r program and concatenate at the end of each and every record in your internal table.
CONSTANTS : LV_CRLF TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
for eg.
if u internal table has values like
row1
row2
row3
concatenate the 1st record lv_crlf into first record.
conactenate second record lv_crlf into second record.
concatenate third record lv_crlf into third record.
now attach the internal table to the FM which u use for sending email. Each and every row will come in new line. The LV_CRLF will hold nothing but a line feed character (#).
Hope it will solve u r problem
Regards,
Rose. -
Sending mail of ALV Report automatically
Hi All,
Don't we have one funtional module to send the report output automatically when it is executed.
I want to give userID only for input.
Please tel me as soon as possible.
Regards,
RohitHi,
Try this
SELECT U~BNAME
A~SMTP_ADDR
INTO TABLE T_MAILID
FROM USR21 AS U INNER JOIN
ADR6 AS A
ON APERSNUMBER = UPERSNUMBER AND
AADDRNUMBER = UADDRNUMBER
WHERE U~BNAME IN S_UNAME.
from this you can get the Mail id :
then you use the function module SO_NEW_DOCUMENT_SEND_API1. -
Send mail from report with DESNAME and DESFORMAT
j have tried to send a mail from a report to "outlook express" passing as parameters the email of the user to send the mail.
i have passed as parameter list :
DESCNAME = [email protected]
DESFORMAT = mail
but aoutlook express don't start.
It start only if i press the icon "mail" on report, and don't put the email adress in the "send to" field....
There is a reason or there is an error or it is impossible ????
Than'k from "il vampiro italiano"Hello Mike,
In order to mail a report from Reports Builder 6i using the system's default MAPI client, you would need to set DESTYPE=MAIL, DESNAME=<email address of recipient> and DESFORMAT=<format of report output>.
Thanks,
The Oracle Reports Team. -
Sending Mail from Oracle forms or reports
Hi
I have to send mail from forms or reports . Is there any way or builtin to do this.
If anybody have experience in this please give the
detailed example on this.
Regards
ArunLook at http://www.oracle.com/technology/sample_code/tech/pl_sql/htdocs/maildemo_sql.txt
It creates a package in the database for sending mail.
If you want to send mail from the local machine using Outlook, you'll have to use OLE, but it's not something I've tried. -
Jump from alv report to cor2 screen
Hi experts,
I develop one alv report ..i want to jump from alv report to COR2 screen when click on order number(field name is AUFNR).
i wrote code in this way.
FORM USER_COMMAND USING UCOMM LIKE SY-UCOMM SELFIELD TYPE SLIS_SELFIELD
CASE SELFIELD-FIELDNAME.
WHEN 'AUFNR'.
READ TABLE T_FINAL INDEX SELFIELD-TABINDEX.
SET PARAMETER ID 'AUF' FIELD T_FINAL-AUFNR.
CALL TRANSACTION 'COR2' AND SKIP FIRST SCREEN.
ENDCASE.
ENDFORM.
but it is not working properly,when u click on any order number it is going only the same order number(in cor2 screen).
what is the problem? set par id (AUF) EXIST IN TPARA table compulsalory or it is created automatically?
pls help me in this . If possible pls send the code.Hi,
I have already mentioned both ways, but ok, once again.
A. how I found parameter ID ANR:
1.) run transaction COR2
2.) set cursor to field "Process order"
3.) press F1 button
4.) performance assistant displays
5.) press "Technical Information"
6.) technical information displays
7.) in field "Parameter ID" you can see parameter ID assigned to a screen field
B. how I found parameter ID BR1:
1.) switch on debugger
2.) run transaction COR2
3.) put a breakpoint on "GET PARAMETER" statement
4.) debugger stops on every GET PARAMETER statement in PBO of COR2
5.) there you can see that BR1 is used for field AUFNR
Basically first mentioned way is sufficient, because system gets parameter value from parameter ID assigned to a screen element automatically. But in this case a value is overwritten by coding in PBO of COR2.
Hope it helps.
Regrds,
Adrian -
I cannot send mails from my ipad, I have checked settings with my mail server and they tell me that everything is OK, they don't know what may be causing the problem, any ideas?
TBS2.
There is no way for anyone to know if your problem is identical to the problem reported by maria_diaz. She didn't mention anything about getting the "relaying" message. I suggest you start a new question that gives a good title to a specific problem. Then in the body of the thread describe the problem in detail, tell us what steps you have tried so far to correct the problem, what happened, and what error messages you received. -
Error: Not able to send mail from OWA 2010. When I send mail, the mails go to Drafts Folder. I have installed everything correctly but when I tried to open the OWA and trying to send mail from OWA. The mails do not deliver and mails become saved in Drafts folder. I tried to re-send messaged from Draft also but not able to send.
Screen Shot: http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/Error%20-%20Not%20Able%20to%20Send%20Mail%20from%20OWA%202010.docx
Scenario: I have below configuration of exchange 2010 server Setup:
1. Windows Domain Controller with Global Catalog on Windows Server 2008 which only for Windows 2008 Server Native.
Server Name: WDC2010
Domain: Blazex.Com
2. Hub/Client Access Server: It is installed on Windows Server 2008. As per Microsoft recommendation, I have just installed Windows Server 2008 and then join this computer to Blazex.com.
After that installed the Hub/Client Access Exchange role servers.
Server Name: HC2010.blazex.com (This is not a Addition Member server or ADC)
Role: Hub and Client Access Server.
3. Mailbox Server: It is installed on Windows Server 2008. As per Microsoft recommendation, I have just installed Windows Server 2008 and then join this computer to Blazex.com.
After that installed the Mailbox Exchange role servers.
Server Name: MBX2010.blazex.com (This is not a Addition Member server or ADC)
Role: Mailbox Server.
4. 2nd Mailbox Server: It is installed on Windows Server 2008. As per Microsoft recommendation, I have just installed Windows Server 2008 and then join this computer to Blazex.com.
After that installed the Mailbox Exchange role servers.
Server Name: 2MBX2010.blazex.com (This is not a Addition Member server or ADC)
Role: Mailbox Server.
5. Client Windows 7: It is installed on Windows 7 Ultimate Workstation. As per Microsoft recommendation, I have just installed Windows 7 and then join this computer to Blazex.com.
Workstation Name: WIN7.blazex.com
Role: Workstation
Error Description: I have installed everything correctly but when I tried to open the OWA and trying to send mail from OWA. The mails do not deliver and mails become saved in Drafts folder. I tried to re-send messaged from Draft also but not able to send.
Screen Shot (Same As Above): http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/Error%20-%20Not%20Able%20to%20Send%20Mail%20from%20OWA%202010.docx
I don't know what I am missing but I think there is some configuration I need to do on Hub/Client Access Server (HC2010). I tried to access the mailbox on XP Client system through OWA. I get the same problem as Win7.
Can someone please help me on this?
Thanks and Regards
ShambhuHi Subhash,
I have done the troubleshooting but I didn't find any problem at server side. I will send you mail also with all EXBPA report and as well DC, HC and Mailbox servers' Application Log and System Log.
Below are the questions's answers which was asked by you:
1. Please check whether you can send email via Outlook.
I am not able to open the MS Outlook. Please check all details in this thread : http://social.technet.microsoft.com/Forums/en-US/exchange2010/thread/c491c5c7-7d6f-48ff-97fa-6bf83d94e53c
2. Please run EXBPA to have a health scan.
I have run the EXBPA and didn't see any critical Problem. I have took the screen shot and report. Please have a look in below screen shot link:
a. http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/EXBPA.docx - Final Report
b. http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/ExBPA.BaseLine.200906270226501077.data.xml - Baseline Health Check
c. http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/ExBPA.Connectivity%20Test.200906270223318201.data.xml - Connectivity Check
d. http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/ExBPA.Health%20Check.200906270125477730.data.xml - Health Check with 2 Hr. Baseline option
e. http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/ExBPA.Permission%20Check.200906270224343377.data.xml - Permission Report
The error which I received in EXBPA, that allready ignored by you and told that it is bug in EXBPA. Have a look here: http://social.technet.microsoft.com/Forums/en-US/exchange2010/thread/d4bb03bb-db84-4a8b-83ba-19937d7dcacf
3. Please check application log, whether any error event logged there. They could come from ADAccess related error or etc.
I didn't see any ADAccess event on the server. For this I have left my lab PC open and I will check again.
4. We find that if mail .que gets corrupt, then this issue will occur, please try to move the affected user to another store and then test the issue.
I am facing this problem with all users (7 users). Anyway I moved one user from one server Mailbox Database (2mbx2010) to Other Server Mailbox Database (mbx2010). After that
a) Rebooted the Workstation
b) Login successfully with same user.
c) Delete the Old MS Outlook Profile
d) Create New profile for same user without any problem.
e) Tried to login in MS Outlook and got the same error. : http://social.technet.microsoft.com/Forums/en-US/exchange2010/thread/c491c5c7-7d6f-48ff-97fa-6bf83d94e53c
f) Open the OWA successfully for Same user.
g) Tried to send mail but again mail went to Drafts Folder.
5. I noticed that you test the issue after you close outlook. I recommend you to reboot your pc and then access
mailbox via OWA to test the issue.
I tried you suggested option, but sorry it also couldn't help.
6. You also check your disk space.
All Servers have Enough Disk Space. Check the EXBPA Report.
7. You may run EXTRA to get log information for further troubleshooting.
Need more time for this.
8. Please save application log, system log as *.evt file, then send them with EXTRA,EXBPA report to [email protected] .
I have sent it as your mentioned mail address OR, you can get the mentioned log from below link also:
a) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/WDC2010%7C_APPLICATION.evtx - DC/GC Application Log
b) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/WDC2010%7C_SYSTEMEVENT.evtx - DC/GC System Log
c) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/HC2010%7C_APPLICATION.evtx - Hub/Client Application Log
d) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/HC2010%7C_SYSTEM.evtx - Hub/Client System Log
e) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/MBX2010%7C_Application.evtx - Mailbox Application Log
f) http://cid-31ba948d0da4d57e.skydrive.live.com/self.aspx/.Public/MBX2010%7C_System.evtx - Mailbox System Log
There will be some error log you will be that the system is not able to communicate with DC/DC, MBX or HC at everyday around 3 AM or some time 6 PM Evening also. These error came because I have installed VM on Windows 7 Workstation and after 45 min or one hrs. if I don't work on PC, then pc goes to sleep. so you may ignore these alerts.
I hope my answer will give you some clue and I expect more help from your side.
With Best Regards
Shambhu Sharma -
Hi Gurus,
is der any way to download data from ALV report to excel sheet depending on layout set dyanmically.
I mean to say that if I choose a layout then data has to transfer to excel sheet according to layout fields automaticaly.I think this can be done by oops ALV , are u using reusealv F.M to call output in ALV ?
Try the below kind of ALV
IN PBO -
>
SET PF-STATUS 'PROJREP'.
SET TITLEBAR text-046.
DATA: g_container TYPE scrfname VALUE 'ALV',
g_grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container. (Name of the container )
CREATE OBJECT g_grid1
EXPORTING i_parent = g_custom_container.
PERFORM create_field_catalog_ce
CALL METHOD g_grid1->set_frontend_fieldcatalog
EXPORTING
it_fieldcatalog = t_fcat_ce.
ALL METHOD g_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'ST_DISPLAY'
CHANGING
it_outtab = t_display_io
it_fieldcatalog = t_fcat_ce.
->Create Object to receive events and link them to handler methods.
When the ALV Control raises the event for the specified instance
the corresponding method is automatically called.
CREATE OBJECT g_event_receiver.
SET HANDLER g_event_receiver->handle_double_click FOR g_grid1.
ENDIF.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_grid1.
IN PAI -->
CALL METHOD cl_gui_cfw=>dispatch. -
Hi All,
Some Users on randomly basis are unable to send e-mails from 2003 exchange to 2007 Exchange users Internally.
They are sending mails from outlook and users from 2007 dont have any issues.
But sometime mails from 2003 to 2007 goes without any issue.
The NDR reported is as below.
From: System Administrator
Sent: 22 February 2014 15:59
To: XYZ
Subject: Undeliverable: Regarding Test Message
Your message did not reach some or all of the intended recipients.
Subject: Regarding Test Message
Sent: 22/02/2014 15:59
The following recipient(s) could not be reached:
XXX,XYZ on 22/02/2014 15:59
The message contains a content type that is not supported
<HubServer.Domain.UK #5.6.0 smtp;554 5.6.0 STOREDRV.Deliver.Exception:PropertyValidationException; Failed to process message due to a permanent exception>Hi,
According to the NDR, I found this point "The message contains a content type that is not supported".
Please verify whether the un-delivered messages contain some Sensitive
Information, signatures or attachments that cannot pass the Exchange 2007 Edge server. Please also check the content type of the un-delivered messages.
Found a useful KB for your reference:
Frequently asked questions about MIME and content conversion in Exchange 2000 Server and in Exchange Server 2003
http://support.microsoft.com/kb/836555/en-us
Hope it is helpful
Thanks
Mavis
Mavis Huang
TechNet Community Support -
Function module to send mail from SAP
Can any one please tell the Function module to send mail from SAP. The scenario is like this,I have a file in local system that i have to send to a particular mail address like [email protected] through a report program.
Hi shafiq,
1. There is some trick involved
in the binary files.
2. I have made a program (and it works fantastic)
ONLY 6 LINES FOR EMAILING
BELIEVE ME
ITS A FANTASTIC PROGRAM.
IT WILL WORK LIKE OUTLOOK EXPRESS !
3. The user is provided with
a) file name
b) email address to send mail
and it sends ANY FILE (.xls,.pdf .xyz..)
Instantaneously !
4. Make two things first :
1. Include with the name : ZAMI_INCLFOR_MAIL
2. Report with the name : ZAM_TEMP147 (any name will do)
3. Activate both and execute (2)
4. After providing filename, email adress
5. Code for Include :
10.08.2005 Amit M - Created
Include For Mail (First Req F16)
Modification Log
Data
DATA: docdata LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objhex LIKE solix OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA: tab_lines TYPE i,
doc_size TYPE i,
att_type LIKE soodk-objtp.
DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.
FORM
FORM ml_customize USING objname objdesc.
Clear Variables
CLEAR docdata.
REFRESH objpack.
CLEAR objpack.
REFRESH objhead.
REFRESH objtxt.
CLEAR objtxt.
REFRESH objbin.
CLEAR objbin.
REFRESH objhex.
CLEAR objhex.
REFRESH reclist.
CLEAR reclist.
REFRESH listobject.
CLEAR listobject.
CLEAR tab_lines.
CLEAR doc_size.
CLEAR att_type.
Set Variables
docdata-obj_name = objname.
docdata-obj_descr = objdesc.
ENDFORM. "ml_customize
FORM
FORM ml_addrecp USING preceiver prec_type.
CLEAR reclist.
reclist-receiver = preceiver.
reclist-rec_type = prec_type.
APPEND reclist.
ENDFORM. "ml_customize
FORM
FORM ml_addtxt USING ptxt.
CLEAR objtxt.
objtxt = ptxt.
APPEND objtxt.
ENDFORM. "ml_customize
FORM
FORM ml_prepare USING bypassmemory whatatt_type whatname.
IF bypassmemory = ''.
Fetch List From Memory
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = listobject
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'LIST_FROM_MEMORY'.
ENDIF.
CALL FUNCTION 'TABLE_COMPRESS'
IMPORTING
COMPRESSED_SIZE =
TABLES
in = listobject
out = objbin
EXCEPTIONS
OTHERS = 1
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'TABLE_COMPRESS'.
ENDIF.
ENDIF.
Header Data
Already Done Thru FM
Main Text
Already Done Thru FM
Packing Info For Text Data
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'TXT'.
APPEND objpack.
Packing Info Attachment
att_type = whatatt_type..
DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.
objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = att_type.
objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = whatname.
APPEND objpack.
Receiver List
Already done thru fm
ENDFORM. "ml_prepare
FORM
FORM ml_dosend.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
IMPORTING
SENT_TO_ALL =
NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
CONTENTS_HEX = objhex
OBJECT_PARA =
object_parb =
receivers = reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc <> 0.
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH docdata-obj_name.
ENDIF.
ENDFORM. "ml_customize
FORM
FORM ml_spooltopdf USING whatspoolid.
DATA : pdf LIKE tline OCCURS 0 WITH HEADER LINE.
Call Function
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = whatspoolid
TABLES
pdf = pdf
EXCEPTIONS
err_no_otf_spooljob = 1
OTHERS = 12.
Convert
PERFORM doconv TABLES pdf objbin.
ENDFORM. "ml_spooltopdf
FORM
FORM doconv TABLES
mypdf STRUCTURE tline
outbin STRUCTURE solisti1.
Data
DATA : pos TYPE i.
DATA : len TYPE i.
Loop And Put Data
LOOP AT mypdf.
pos = 255 - len.
IF pos > 134. "length of pdf_table
pos = 134.
ENDIF.
outbin+len = mypdf(pos).
len = len + pos.
IF len = 255. "length of out (contents_bin)
APPEND outbin.
CLEAR: outbin, len.
IF pos < 134.
outbin = mypdf+pos.
len = 134 - pos.
ENDIF.
ENDIF.
ENDLOOP.
IF len > 0.
APPEND outbin.
ENDIF.
ENDFORM. "doconv
CODE FOR PROGRAM
5.
REPORT zam_temp147 .
INCLUDE zami_inclfor_mail.
DATA
DATA : itab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA : file_name TYPE string.
data : path like PCFILE-PATH.
data : extension(5) type c.
data : name(100) type c.
SELECTION SCREEN
PARAMETERS : receiver TYPE somlreci1-receiver lower case.
PARAMETERS : p_file LIKE rlgrap-filename
OBLIGATORY.
AT SELECTION SCREEN
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CLEAR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
START-OF-SELECTION
START-OF-SELECTION.
PERFORM ml_customize USING 'Tst' 'Testing'.
PERFORM ml_addrecp USING receiver 'U'.
PERFORM upl.
PERFORM doconv TABLES itab objbin.
PERFORM ml_prepare USING 'X' extension name.
PERFORM ml_dosend.
SUBMIT rsconn01
WITH mode EQ 'INT'
AND RETURN.
FORM
FORM upl.
file_name = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file_name
filetype = 'BIN'
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
path = file_name.
CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
EXPORTING
complete_filename = path
CHECK_DOS_FORMAT =
IMPORTING
DRIVE =
EXTENSION = extension
NAME = name
NAME_WITH_EXT =
PATH =
EXCEPTIONS
INVALID_DRIVE = 1
INVALID_EXTENSION = 2
INVALID_NAME = 3
INVALID_PATH = 4
OTHERS = 5
ENDFORM. "upl
regards,
amit m. -
Sending mail from using utl_smtp error......
Hi
When i try to send mail like as follows
DECLARE
v_connection UTL_SMTP.CONNECTION;
BEGIN
v_connection := UTL_SMTP.OPEN_CONNECTION('xxx.xxx.xxx.xxx',25);
UTL_SMTP.HELO(v_connection,'xxx.xxx.xxx.xxx');
UTL_SMTP.MAIL(v_connection,'[email protected]');
UTL_SMTP.RCPT(v_connection,'[email protected]');
UTL_SMTP.DATA(v_connection,'Sent From PL/SQL');
UTL_SMTP.QUIT(v_connection);
END;
I get the following error..
ERROR at line 1:
ORA-29278: SMTP transient error: 421 Service not available
ORA-06512: at "SYS.UTL_SMTP", line 17
ORA-06512: at "SYS.UTL_SMTP", line 96
ORA-06512: at "SYS.UTL_SMTP", line 138
ORA-06512: at line 4
if i send mail from outlook it goes...the configuration is like this
in mail properties general tab
email address : [email protected]
and i have to tick mark the "include this account when receiving mail or synchro" option
in servers tab
POP3 : xxx.xxx.xxx.xxx
smtp : xxx.xxx.xxx.xxx
and i have to tick the "My server requires authentication" option
and have to give the setting for that also
ie. log on using account : [email protected]
password: xxxxxx
How to Correct it ?
Krisi am on the same platform and in same account..... and PL/SQL UTL_SMTP gets a connection plus SMTP error, while telnet cannot even get a connection. A very weird one. Not sure what the problem can be.
Worse case, forget telnet and do all your troubleshooting using UTL_SMTP.. with liberal usage of DBMS_OUTPUT. :-)
regd. the connection from my xp client it is
connecting to the telnet server on server, but when i
tri to connect to the ISP's smtp address it throws
the errorNot that strange. You're likely going through a proxy of sorts of to reach the ISP mail server. Besides, to send mail you should be able to use your company's SMTP server as it should route Internet e-mail out to the net automatically.
In fact, many SMTP servers will not allow you to relay via them. E.g. if you connect from domain 1 to SMTP server on domain 2, and you submit an e-mail to be delivered to domain 3, the domain 2 server will tell you to take a hike. It will only accept mail that is destined for its own domain or originating from its own domain.
Reason for this is spam. Open relays are one of the prime reasons for having billions of spam mails being transmitted.
The correct method will be for you on domain 1 to connect to domain 1's SMTP server and submit an e-mail to be delivered to domain 3. That will be accepted and delivered. Using domain 2 as an intermediate agent to act as a relay, is/should not be accepted by all SMTP servers. (your SMTP server should get blacklisted/blackholed if it has an open relay) -
Sending mail from apex appliocation
Dear friends
Can anyone please tell me how to send mail from apex application to outside mail like gmail or yahoo
i have one report created which i want to send it to my mail from apex
Please hepl me....If it is an interactive report that you are try it on, you could probably use subscriptions to get the report to your email.
Thanks -
Garbage in mail body when sending mail from abap code
Hi abapers,
i am sending mail from my program and when the data reaches in mailbox it is as follows.
佐呓义⁇䅄䕔䌉乏啓䕍⁒低䌉乏啓䕍⁒䅎䕍䤉⁃䥔䭃⁔低म䍉吠䍉䕋⁔䕄䍓䤉⁃䥔䭃呅匠䅔啔॓
which is not proper.
I'm attaching the following part of code which i have used.Please let me know if i've made any mistake over here.
DOCDATA-OBJ_LANGU = SY-LANGU.
DOCDATA-OBJ_NAME = 'Mail_Excel_File'.
DOCDATA-OBJ_DESCR = 'Closed Customer Complaints'.
DOCDATA-SENSITIVTY = 'F'.
OBJTXT =
'Attached compensation request is pending for your approval as on '.
APPEND OBJTXT. CLEAR OBJTXT.
OBJTXT =
'today. Please find the attached Field Investigation Report.'.
APPEND OBJTXT. CLEAR OBJTXT.
OBJTXT =
'This is auto generated mail.Please do not reply to this mail.'.
APPEND OBJTXT. CLEAR OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOCDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
APPEND OBJPACK.
DESCRIBE TABLE I_CONTENTS_HEX LINES TAB_LINES.
* OBJPACK-DOC_SIZE = TAB_LINES * 255 + STRLEN( OBJTXT ).
OBJPACK-DOC_SIZE = TAB_LINES * 255 .
OBJPACK-TRANSF_BIN = 'X'.
* OBJPACK-TRANSF_BIN = SPACE.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'XLS'.
* DOCDATA-OBJ_NAME = 'Excel_File_Attachment1'.
* OBJPACK-OBJ_DESCR = FILE_NAME.
OBJPACK-OBJ_DESCR = P_FILE.
APPEND OBJPACK.
RECLIST-RECEIVER = RECIEVER.
RECLIST-REC_TYPE = 'U'.
RECLIST-EXPRESS = 'X'.
APPEND RECLIST.
* FM called for sending the mail to the intended recipients
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCDATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJPACK
CONTENTS_HEX = I_CONTENTS_HEX
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8.
what will be the problem..
please help out.
Regards,
Navin
Edited by: navin.c on Jul 10, 2009 8:08 AMHi Krishna,
I have attachment properly coming the problem is body of mail its is coming in some unknown language
佐呓义⁇䅄䕔䌉乏啓䕍⁒低䌉乏啓䕍⁒䅎䕍䤉⁃䥔䭃⁔低म䍉吠䍉䕋⁔䕄䍓䤉⁃䥔䭃呅匠䅔啔॓剐䑏䌠䵏⁐低म剐䌠䵏⁐呓呁单䌉䵏⹐删充低म䅌呓䌠䅈䝎䑅䄠॔剐䑏䍕⁔䕄䅔䱉॓䡓䑁⁅䅎䕍匉䅈䕄䌠䑏ॅ䅂䕓丠䵁ॅ䅂䕓䌠䑏ॅ䅂䍔⁈啎䉍剅䴉乁䙕䝃䐠呁ॅ䅓偍䕌䄠䅖䱉䉁䱉呉ख़䉏䕓噒
what may be the problem?
I have used the same logic . im attaching my part of code for your reference .
DOCDATA-OBJ_LANGU = SY-LANGU.
DOCDATA-OBJ_NAME = 'Mail_Excel_File'.
DOCDATA-OBJ_DESCR = 'Closed Customer Complaints'. "nsc070709+
DOCDATA-SENSITIVTY = 'F'.
* Describe the body of the message
*********new additon of mail content
* CONCATENATE 'Dear' L_FIRSTNAME ','
* INTO OBJTXT SEPARATED BY SPACE.
* APPEND OBJTXT. CLEAR OBJTXT.
OBJTXT =
'Attached compensation request is pending for your approval as on '.
APPEND OBJTXT. CLEAR OBJTXT.
OBJTXT =
'today. Please find the attached Field Investigation Report.'.
APPEND OBJTXT. CLEAR OBJTXT.
OBJTXT =
'This is auto generated mail.Please do not reply to this mail.'.
APPEND OBJTXT. CLEAR OBJTXT.
DESCRIBE TABLE OBJTXT LINES TAB_LINES.
READ TABLE OBJTXT INDEX TAB_LINES.
DOCDATA-DOC_SIZE = ( TAB_LINES - 1 ) * 255 + STRLEN( OBJTXT ).
* OBJTXT = 'Attached is the FIR PENDING CASES'.
* APPEND OBJTXT.
* DESCRIBE TABLE OBJTXT LINES TAB_LINES.
CLEAR OBJPACK-TRANSF_BIN.
OBJPACK-TRANSF_BIN = 'X'.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 0.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'RAW'.
APPEND OBJPACK.
DESCRIBE TABLE I_CONTENTS_HEX LINES TAB_LINES.
* OBJPACK-DOC_SIZE = TAB_LINES * 255 + STRLEN( OBJTXT ).
OBJPACK-DOC_SIZE = TAB_LINES * 255 .
OBJPACK-TRANSF_BIN = 'X'.
* OBJPACK-TRANSF_BIN = SPACE.
OBJPACK-HEAD_START = 1.
OBJPACK-HEAD_NUM = 1.
OBJPACK-BODY_START = 1.
OBJPACK-BODY_NUM = TAB_LINES.
OBJPACK-DOC_TYPE = 'XLS'.
* DOCDATA-OBJ_NAME = 'Excel_File_Attachment1'.
* OBJPACK-OBJ_DESCR = FILE_NAME.
OBJPACK-OBJ_DESCR = P_FILE.
APPEND OBJPACK.
RECLIST-RECEIVER = RECIEVER.
RECLIST-REC_TYPE = 'U'.
RECLIST-EXPRESS = 'X'.
APPEND RECLIST.
* FM called for sending the mail to the intended recipients
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
DOCUMENT_DATA = DOCDATA
PUT_IN_OUTBOX = 'X'
COMMIT_WORK = 'X'
TABLES
PACKING_LIST = OBJPACK
CONTENTS_HEX = I_CONTENTS_HEX
CONTENTS_TXT = OBJTXT
RECEIVERS = RECLIST
EXCEPTIONS
TOO_MANY_RECEIVERS = 1
DOCUMENT_NOT_SENT = 2
DOCUMENT_TYPE_NOT_EXIST = 3
OPERATION_NO_AUTHORIZATION = 4
PARAMETER_ERROR = 5
X_ERROR = 6
ENQUEUE_ERROR = 7
OTHERS = 8.
COMMIT WORK.
Can anybody help me out on this issue.
Its somewhat on priority.
Edited by: navin.c on Jul 10, 2009 12:58 PM -
Send mail from SAP system to another SAP system
Hello Xperts
I need to send a mail from one SAP box (ECC) to another SAP box (SRM,CRM, EP etc). I know how to send mail from SAP to external address but unable to find the parameters in this case. Kindly help.
thkx
Prabhu
PS: Kindly DONOT post on "How to send mail from SAP" as my questions is all abt how to send mail from one sap system to another sap systemHi
To send mail Internally check this sample code it works fine this code was developed by me
*& Report ZMATURITYREPORT *
*& Title - Maturity report *
*& ABAP/4 Consultant *
*& Name- Pavan Praveen Valluri Created on 26/07/2007 *
*& Module - FI *
REPORT ZMATURITYREPORT.
tables: bseg.
* SELECTION SCREEN--------------------------------------------------- *
parameters: p_email type somlreci1-receiver default
'@gujaratpetro.com'.
* Data: p_email(25) type c value '[email protected]'.
* END OF SELECTION SCREEN ------------------------------------------- *
*----------DATA DECLARATION--------------------------------------------*
data: it_message type standard table of solisti1 initial size 0
with header line.
data: it_message1 type standard table of solisti1 initial size 0
with header line.
data: it_message2(10) type N.
data: it_message3 type standard table of solisti1 initial size 0
with header line.
data: it_message4 type standard table of solisti1 initial size 0
with header line.
data: it_attach type standard table of solisti1 initial size 0
with header line.
data: text(150).
data: t_packing_list like sopcklsti1 occurs 0 with header line,
t_contents like solisti1 occurs 0 with header line,
t_receivers like somlreci1 occurs 0 with header line,
t_attachment like solisti1 occurs 0 with header line,
t_object_header like solisti1 occurs 0 with header line,
w_cnt type i,
w_sent_all(1) type c,
w_doc_data like sodocchgi1,
gd_error type sy-subrc,
gd_reciever type sy-subrc.
start-of-selection.
data: lv_date type sy-datum.
data: lv_date1 type sy-datum.
data: lv_formatdate(10) type c.
data: lv_formatdate1(10) type c.
data: var1(4) type c,
var2(2) type c,
var3(2) type c.
data: begin of int_bseg occurs 0,
BELNR LIKE BSEG-BELNR,
ZUONR LIKE BSEG-ZUONR,
GJAHR LIKE BSEG-GJAHR,
DMBTR LIKE BSEG-DMBTR,
HKONT LIKE BSEG-HKONT,
end of int_bseg.
data: begin of int_SKAT occurs 0,
TXT50 LIKE SKAT-TXT50,
SAKNR LIKE SKAT-SAKNR,
KTOPL LIKE SKAT-KTOPL,
end of int_SKAT.
data: begin of int_bkpf occurs 0,
BELNR LIKE BKPF-BELNR,
BUKRS LIKE BKPF-BUKRS,
GJAHR LIKE BKPF-GJAHR,
BUDAT LIKE BKPF-BUDAT,
end of int_BKPF.
data: 2days_out type sy-datum.
2days_out = sy-datum + 2.
data: var4(4) type c,
var5(2) type c,
var6(2) type c.
*-------- END OF DATA DECLARATION--------------------------------------*
*--- CONCATENATING AND ARRANGING DATE ---------------------------------*
lv_date = 2days_out.
var1 = lv_date+(4).
var2 = lv_date+4(2).
var3 = lv_date+6(2).
concatenate var3 var2 var1 into lv_formatdate separated by '.'.
*--- END OF CONCATENATING AND ARRANGING DATE -------------------------*
*-------------------------SELECTION FOR BSEG---------------------------*
select zuonr belnr bukrs GJAHR DMBTR HKONT from bseg into
corresponding fields of table int_bseg
where bukrs = 'company name' and
ZUONR = lv_formatdate.
*--------------END OF SSELECTION FOR BSEG--------------------------- *
*-------------------------SELECTION FOR BKPF---------------------------*
select BUDAT BUKRS BELNR GJAHR from BKPF into
corresponding fields of table int_BKPF
where bukrs = 'company name'.
append int_BKPF.
*------------------END OF SELECTION FOR BKPF---------------------------*
*-------------------------SELECTION FOR SKAT---------------------------*
select SAKNR TXT50 from SKAT into
corresponding fields of table int_SKAT
where KTOPL = 'company name'.
*and SAKNR = INT_BSEG-HKONT.
APPEND INT_SKAT.
*--------------END OF SSELECTION FOR SKAT--------------------------- *
*-----------------POPULATING EMAIL SUBJECT ----------------------------*
perform populate_email_message_body.
perform send_file_as_email_attachment
tables it_message
it_attach
using p_email
'Maturity after 2 days'
'XLS'
'filename'
changing gd_error
gd_reciever.
* Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.
*endif.
end-of-selection.
*------------END OF POPULATING EMAIL SUBJECT --------------------------*
*& Form SEND_FILE_AS_EMAIL_ATTACHMENT
* Send email
form send_file_as_email_attachment tables pit_message
pit_attach
using p_email
p_mtitle
p_format
p_filename
p_attdescription
p_sender_address
p_sender_addres_type
changing p_error
p_reciever.
data: ld_error type sy-subrc,
ld_reciever type sy-subrc,
ld_mtitle like sodocchgi1-obj_descr,
ld_email like somlreci1-receiver,
ld_format type so_obj_tp ,
ld_attdescription type so_obj_nam ,
ld_attfilename type so_obj_des ,
ld_sender_address like soextreci1-receiver,
ld_sender_address_type like soextreci1-adr_typ,
ld_receiver like sy-subrc.
ld_email = p_email.
ld_mtitle = p_mtitle.
ld_format = p_format.
ld_attdescription = p_attdescription.
ld_attfilename = p_filename.
ld_sender_address = p_sender_address.
ld_sender_address_type = p_sender_addres_type.
* Fill the document data.
w_doc_data-doc_size = 1.
* Populate the subject/generic message attributes
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle .
w_doc_data-sensitivty = 'F'.
** Fill the document data and get size of attachment
clear w_doc_data.
read table it_attach index w_cnt.
w_doc_data-doc_size =
( w_cnt - 1 ) * 255 + strlen( it_attach ).
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'SAPRPT'.
w_doc_data-obj_descr = ld_mtitle.
w_doc_data-sensitivty = 'F'.
clear t_attachment.
refresh t_attachment.
t_attachment[] = pit_attach[].
* Describe the body of the message
clear t_packing_list.
refresh t_packing_list.
t_packing_list-transf_bin = space.
t_packing_list-head_start = 1.
t_packing_list-head_num = 0.
t_packing_list-body_start = 1.
describe table it_message lines t_packing_list-body_num.
t_packing_list-doc_type = 'RAW'.
append t_packing_list.
* Add the recipients email address
clear t_receivers.
refresh t_receivers.
t_receivers-receiver = ld_email.
t_receivers-rec_type = 'U'.
t_receivers-com_type = 'INT'.
t_receivers-notif_del = 'X'.
t_receivers-notif_ndel = 'X'.
append t_receivers.
call function 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = w_doc_data
put_in_outbox = 'X'
sender_address = ld_sender_address
sender_address_type = ld_sender_address_type
commit_work = 'X'
IMPORTING
sent_to_all = w_sent_all
TABLES
object_header = t_object_header
packing_list = t_packing_list
contents_bin = t_attachment
contents_txt = it_message
receivers = t_receivers
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
others = 8.
* Populate zerror return code
ld_error = sy-subrc.
* Populate zreceiver return code
loop at t_receivers.
ld_receiver = t_receivers-retrn_code.
endloop.
endform. "send_file_as_email_attachment
*& Form INITIATE_MAIL_EXECUTE_PROGRAM
* Instructs mail send program for SAPCONNECT to send email.
form initiate_mail_execute_program.
wait up to 2 seconds.
if gd_error eq 0.
submit rsconn01 with mode = 'INT'
with output = 'X'
and return.
endif.
endform. " INITIATE_MAIL_EXECUTE_PROGRAM
*& Form POPULATE_EMAIL_MESSAGE_BODY
* Populate message body text
form populate_email_message_body.
refresh it_message.
refresh it_message1.
refresh it_message3.
refresh it_message4.
*--------------- LOOP FOR BSEG -----------------------------------------
loop at int_BSEG.
read table int_bKPF WITH KEY BELNR = INT_BSEG-BELNR
GJAHR = INT_BSEG-GJAHR.
read table int_SKAT WITH KEY SAKNR = INT_BSEG-HKONT.
*---CHANGING DATE FORMAT FOR BKPF---------------------------------------
lv_date1 = int_bkpf-budat.
var4 = lv_date1+(4).
var5 = lv_date1+4(2).
var6 = lv_date1+6(2).
concatenate var6 var5 var4 into lv_formatdate1 separated by '.'.
*---END OF CHANGING DATE FORMAT FOR BKPF-------------------------
it_message = int_bseg-belnr.
it_message1 = lv_formatdate1.
it_message2 = int_bseg-dmbtr.
it_message3 = int_bseg-hkont.
IT_MESSAGE4 = INT_SKAT-TXT50.
SHIFT IT_MESSAGE2 LEFT DELETING LEADING '0'.
*-------------POPULATING EMAIL BODY WITH DATA -------------------------
concatenate 'Maturity After 2Days' 'for' 'G/L account-' it_message3
'--' IT_MESSAGE4 ',' 'Amount-' it_message2
into it_message separated by space.
append it_message.
append it_message1.
append it_message3.
clear it_message.
clear it_message1.
clear it_message2.
clear it_message3.
endloop.
*------------END OF LOOP FOR BSEG --------------------------------------
endform. " POPULATE_EMAIL_MESSAGE_BODY
<b><i>
To send an mail with external attachment check this one
</b></i>
<i>first create a Include report with the following coding</i>
*& Include ZPA1_INCLFOR_MAIL *
* Data
DATA: docdata LIKE sodocchgi1,
objpack LIKE sopcklsti1 OCCURS 1 WITH HEADER LINE,
objhead LIKE solisti1 OCCURS 1 WITH HEADER LINE,
objtxt LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objbin LIKE solisti1 OCCURS 10 WITH HEADER LINE,
objhex LIKE solix OCCURS 10 WITH HEADER LINE,
reclist LIKE somlreci1 OCCURS 1 WITH HEADER LINE.
DATA: tab_lines TYPE i,
doc_size TYPE i,
att_type LIKE soodk-objtp.
DATA: listobject LIKE abaplist OCCURS 1 WITH HEADER LINE.
* FORM
FORM ml_customize USING objname objdesc.
*----------- Clear Variables
CLEAR docdata.
REFRESH objpack.
CLEAR objpack.
REFRESH objhead.
REFRESH objtxt.
CLEAR objtxt.
REFRESH objbin.
CLEAR objbin.
REFRESH objhex.
CLEAR objhex.
REFRESH reclist.
CLEAR reclist.
REFRESH listobject.
CLEAR listobject.
CLEAR tab_lines.
CLEAR doc_size.
CLEAR att_type.
*--------- Set Variables
docdata-obj_name = objname.
docdata-obj_descr = objdesc.
ENDFORM. "ml_customize
* FORM
FORM ml_addrecp USING preceiver prec_type.
CLEAR reclist.
reclist-receiver = preceiver.
reclist-rec_type = prec_type.
APPEND reclist.
ENDFORM. "ml_customize
* FORM
FORM ml_addtxt USING ptxt.
CLEAR objtxt.
objtxt = ptxt.
APPEND objtxt.
ENDFORM. "ml_customize
* FORM
FORM ml_prepare USING bypassmemory whatatt_type whatname.
IF bypassmemory = ''.
*--------- Fetch List From Memory
CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
listobject = listobject
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'LIST_FROM_MEMORY'.
ENDIF.
CALL FUNCTION 'TABLE_COMPRESS'
* IMPORTING
* COMPRESSED_SIZE =
TABLES
in = listobject
out = objbin
EXCEPTIONS
OTHERS = 1
IF sy-subrc <> 0.
MESSAGE ID '61' TYPE 'E' NUMBER '731'
WITH 'TABLE_COMPRESS'.
ENDIF.
ENDIF.
* Header Data
* Already Done Thru FM
* Main Text
* Already Done Thru FM
* Packing Info For Text Data
DESCRIBE TABLE objtxt LINES tab_lines.
READ TABLE objtxt INDEX tab_lines.
docdata-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objtxt ).
CLEAR objpack-transf_bin.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = 'TXT'.
APPEND objpack.
* Packing Info Attachment
att_type = whatatt_type..
DESCRIBE TABLE objbin LINES tab_lines.
READ TABLE objbin INDEX tab_lines.
objpack-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).
objpack-transf_bin = 'X'.
objpack-head_start = 1.
objpack-head_num = 0.
objpack-body_start = 1.
objpack-body_num = tab_lines.
objpack-doc_type = att_type.
objpack-obj_name = 'ATTACHMENT'.
objpack-obj_descr = whatname.
APPEND objpack.
* Receiver List
* Already done thru fm
ENDFORM. "ml_prepare
* FORM
FORM ml_dosend.
CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
EXPORTING
document_data = docdata
put_in_outbox = 'X'
commit_work = 'X' "used from rel. 6.10
* IMPORTING
* SENT_TO_ALL =
* NEW_OBJECT_ID =
TABLES
packing_list = objpack
object_header = objhead
contents_bin = objbin
contents_txt = objtxt
* CONTENTS_HEX = objhex
* OBJECT_PARA =
* object_parb =
receivers = reclist
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4
parameter_error = 5
x_error = 6
enqueue_error = 7
OTHERS = 8
IF sy-subrc <> 0.
MESSAGE ID 'SO' TYPE 'S' NUMBER '023'
WITH docdata-obj_name.
ENDIF.
ENDFORM. "ml_customize
* FORM
FORM ml_spooltopdf USING whatspoolid.
DATA : pdf LIKE tline OCCURS 0 WITH HEADER LINE.
*-------------- Call Function
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
EXPORTING
src_spoolid = whatspoolid
TABLES
pdf = pdf
EXCEPTIONS
err_no_otf_spooljob = 1
OTHERS = 12.
*------------- Convert
PERFORM doconv TABLES pdf objbin.
ENDFORM. "ml_spooltopdf
* FORM
FORM doconv TABLES
mypdf STRUCTURE tline
outbin STRUCTURE solisti1.
*-------- Data
DATA : pos TYPE i.
DATA : len TYPE i.
*------------ Loop And Put Data
LOOP AT mypdf.
pos = 255 - len.
IF pos > 134. "length of pdf_table
pos = 134.
ENDIF.
outbin+len = mypdf(pos).
len = len + pos.
IF len = 255. "length of out (contents_bin)
APPEND outbin.
CLEAR: outbin, len.
IF pos < 134.
outbin = mypdf+pos.
len = 134 - pos.
ENDIF.
ENDIF.
ENDLOOP.
IF len > 0.
APPEND outbin.
ENDIF.
ENDFORM. "doconv
<b>
Then include that report in the following report and copy the same code and paste it there
</b>
*& Report ZPA_TEMP147 *
REPORT ZPA_TEMP147 .
INCLUDE zpa1_inclfor_mail.
* DATA
DATA : itab LIKE tline OCCURS 0 WITH HEADER LINE.
DATA : file_name TYPE string.
data : path like PCFILE-PATH.
data : extension(5) type c.
data : name(100) type c.
* SELECTION SCREEN
PARAMETERS : receiver TYPE somlreci1-receiver lower case.
PARAMETERS : p_file LIKE rlgrap-filename
OBLIGATORY.
* AT SELECTION SCREEN
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
CLEAR p_file.
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
* START-OF-SELECTION
START-OF-SELECTION.
PERFORM ml_customize USING 'Tst' 'Testing'.
PERFORM ml_addrecp USING receiver 'U'.
PERFORM upl.
PERFORM doconv TABLES itab objbin.
PERFORM ml_prepare USING 'X' extension name.
PERFORM ml_dosend.
SUBMIT rsconn01
WITH mode EQ 'INT'
AND RETURN.
* FORM
FORM upl.
file_name = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file_name
filetype = 'BIN'
TABLES
data_tab = itab
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17.
path = file_name.
CALL FUNCTION 'PC_SPLIT_COMPLETE_FILENAME'
EXPORTING
complete_filename = path
* CHECK_DOS_FORMAT =
IMPORTING
* DRIVE =
EXTENSION = extension
NAME = name
* NAME_WITH_EXT =
* PATH =
EXCEPTIONS
INVALID_DRIVE = 1
INVALID_EXTENSION = 2
INVALID_NAME = 3
INVALID_PATH = 4
OTHERS = 5
ENDFORM. "upl
<b>These are the FM for sending external email :-</b>
SO_DOCUMENT_SEND_API1
SAPoffice: Send new document with attachments via RFC
SO_NEW_DOCUMENT_ATT_SEND_API1
(In 4.6C only, You can go to SE37 and click the documentation on how to use it. A sample program is provided there.)
SAPoffice: Send new document with attachments via RFC
Note : If you are using FM SO_NEW_DOCUMENT_ATT_SEND_API1 then Export Parameter DOCUMENT_DATA-OBJ_DESCR contains the Subject.
SO_NEW_DOCUMENT_SEND_API1
SAPoffice: Send new document
<b>Check this sample report</b>
DATA : BEGIN OF ITAB OCCURS 0,
PERNR LIKE PA0001-PERNR,
ENAME LIKE PA0001-ENAME,
END OF ITAB.
DATA: message_content LIKE soli OCCURS 10 WITH HEADER LINE,
receiver_list LIKE soos1 OCCURS 5 WITH HEADER LINE,
packing_list LIKE soxpl OCCURS 2 WITH HEADER LINE,
listobject LIKE abaplist OCCURS 10,
compressed_attachment LIKE soli OCCURS 100 WITH HEADER LINE,
w_object_hd_change LIKE sood1,
compressed_size LIKE sy-index.
START-OF-SELECTION.
SELECT PERNR ENAME
INTO CORRESPONDING FIELDS OF TABLE ITAB
FROM PA0001
WHERE PERNR < 50.
LOOP AT ITAB.
WRITE :/02 SY-VLINE , ITAB-PERNR, 15 SY-VLINE , ITAB-ENAME, 50
SY-VLINE.
ENDLOOP.
* Receivers
receiver_list-recextnam = '[email protected]'. "-->
* EMAIL ADDRESS
RECEIVER_list-RECESC = 'E'. "<-
RECEIVER_list-SNDART = 'INT'."<-
RECEIVER_list-SNDPRI = '1'."<-
APPEND receiver_list.
* General data
w_object_hd_change-objla = sy-langu.
w_object_hd_change-objnam = 'Object name'.
w_object_hd_change-objsns = 'P'.
* Mail subject
w_object_hd_change-objdes = 'Message subject'.
* Mail body
APPEND 'Message content' TO message_content.
* Attachment
CALL FUNCTION 'SAVE_LIST'
EXPORTING
list_index = '0'
TABLES
listobject = listobject.
CALL FUNCTION 'TABLE_COMPRESS'
IMPORTING
compressed_size = compressed_size
TABLES
in = listobject
out = compressed_attachment.
DESCRIBE TABLE compressed_attachment.
CLEAR packing_list.
packing_list-transf_bin = 'X'.
packing_list-head_start = 0.
packing_list-head_num = 0.
packing_list-body_start = 1.
packing_list-body_num = sy-tfill.
packing_list-objtp = 'ALI'.
packing_list-objnam = 'Object name'.
packing_list-objdes = 'Attachment description'.
packing_list-objlen = compressed_size.
APPEND packing_list.
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
object_hd_change = w_object_hd_change
object_type = 'RAW'
owner = sy-uname
TABLES
objcont = message_content
receivers = receiver_list
packing_list = packing_list
att_cont = compressed_attachment.
<b>Settings for sending mail</b>
Configuring SAP 4.6x Internet mail Gateway
SAP can be configured to send and receive emails from different sources.This section explains how to integrate SAPOffice with an external emailsystem. Your Internet email must be configured and running prior to this.Email from SAP is forwarded to the users external email system..
You can configure inbound and outbound forwarding. Outbound flow forwardsa SAP message (eg: update termination) via UNIX sendmail to the intended recepient. Inbound accepts a message from sendmail and places it in the users SAPOffice inbox. Many companies prefer to configure outbound only.
Configuring outbound forwarding
SAP configuration
1. Create your RFC destination for outbound email using transaction SM59
RFC Destination : SAP_INTERNET_GATEWAY
Connection Type : T
Description : SAP internet mail gateway
Click on 'Explicit Host' if you wanton demand gateway dameon invocation.
Program : /sapmnt/SID/exe/mlunxsnd
Target Host : Enter hostname that runs your central instance.
Click 'Test Connection' and you should seea successfull message.
2. Shared Office Settings transaction SO16-> Send -> Settings or
directly via transaction SCOT- SAPconnect Administation
Nodes - Create
Node : IMAIL
Description : SAP internet mail gateway
RFC Destination : SAP_INTERNET_GATEWAY
Tick : Internet
Address Area : *
Tick : All formats
Dev. type : Choose an approciate Printer Device
Set further addresstype : N
Maximum waiting timefor repeat send attempt procedure : Blank or decide for yourself
Tick : Node is ready for use
Setting
- DefaultDomain : <your company domain>.com
- Conversionrule : require if your communication device only support one format.
e.g. if you email system only support the format RAW (ASCII text format)
Format To Format Ranking Function module
ALI RAW 1 SX_OBJECT_CONVERT_ALI_RAW (convert APAP List)
Referto note 171698 - SAPconnect: Formats, conversion, device type
UNIX configuration
1 .. cd /sapmnt/SID/exe
2 ..csh
..mlsomadm mailgw.ini
System Name [C11] :
Client [000] :
Username : MAILADM
Password : MAILADM
Language : E
Load Balancing :
Hostname : <hostname>
System number : <instance_number>
Gateway hostname: <central_instance_hostname>
Gateway Service : <instance number>
Use SAP Router :
Trace level :
Sendmail Command [/usr/lib/sendmail -i -f<SENDER_ADDRESS>]:
Codepage [ISO-8859-1] :
Trace Level (Outbound) [0] :
Update file sapmailsid.cfg? [Y]
Testing whether your configuration is successful
1. Logon to SAP
2. Execute transaction SO01
3. Write a message and send it to <your_internet_email_address>
4. If you don't see the mail in your internet mailbox, go back and review steps 1-12
Schedule the SAP Internet Mail Gateway Jobs to start every 5 minutes
1. Create
2. Position your cursor at INT
3. Click Schedule and supply the date and time
4. Click Schedule periodically and tick Minutes and type in 5
5. Click Create and you are done
6. Click Show Scheduling to check
Problems that you might encounter :-
If you have set up a node in SCOT and it tests out well but recieve the reply.
"Cannot process message in node, parameterscannot be converted".
Make sure the RFC connection is working, and that SapConnect has been installed on the Unix Server or the Microsoft Exchange Server. Originally, I had the same error, and found that nothing had been installed on Unixor Exchange, to support SapConnect.
In SCOT (View -> System Status), your mail remains at the Intransit column.
Check you sendmail.cf files (e.g.Sun Solaris /etc/mail/sendmail.cf). Try using the sendmail command to send a test file at the Unix level. You must be able to send mail at theUnix level before you can send mail at the SAP level.
http://help.sap.com/saphelp_nw04/helpdata/en/cf/700b405bacdd5fe10000000a155106/content.htm
http://www.tamboly.com/SAPEmailConfiguration.html
Check my previous links
Mail Send
sending mails from abap program
Mail Sending to external email id's
settings needed for sending emails
Regards
Pavan
Maybe you are looking for
-
New to this how do I convert a PDF to word
I am new to this and I am trying to convert PDF to word. I have looked around and it keeps taking me to purchase which I have done.
-
Dear all, I am working on asset tracking process for telecommunication sector. here they are maintaining rt now all there equipment data in some CRAMER system basically oracle based system but they are not having any asset tracking syste
-
Since Pantone has started changing color values and adding new swatch books to expand their products (and add additional revenue streams), I’m finding that it’s rather difficult to update our libraries in Adobe Creative Suite applications. This all s
-
Hello I have a JLabel2 which shows the spanish map. The thing is I do wanna draw lines on my spanish map and save it to as an image file in my desktop . I'm able to draw lines and save my JLabel2(spanish map) as an image in my Desktop. The problem is
-
Logic has record 2 x every note!!!!!
Howdy. I didn't realise... the 'LAYER' button was turned on my keyboard and Logic has recorded 2 x every note!!! Is there anyway of deleting the notes in one fell swoop? I need import these as midi files into Sibelius for an orchestration.. sending m