‎2007 Feb 02 2:57 PM
Hi,
I need to send error emails from ABAP program.
I have to pass error internal table as text (not as attachment) in the email.
Can anybody supply any sample code?
Thanks in advance.
Regards,
Arun Mohan
‎2007 Feb 02 3:06 PM
HI,
See if this code helps:
***Sending mail to the receipients
if not it_final[] is initial.
Populate table with detaisl to be entered into .xls file
PERFORM BUILD_XLS_DATA_TABLE.
PERFORM POPULATE_EMAIL_MESSAGE_BODY.
Send file by email as .xls speadsheet
PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
TABLES IT_MESSAGE
IT_ATTACH
USING P_EMAIL
'Sales Register Report - Set Top Box / Accessories'
'XLS'
'SSTB'
' '
' '
' '
CHANGING GD_ERROR
GD_RECIEVER.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
endif.
&----
*& Form BUILD_XLS_DATA_TABLE
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_XLS_DATA_TABLE .
data: wa_itab like it_final.
CONSTANTS:
CON_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
CONCATENATE 'Business Place' 'Region Code' 'Region' 'Branch Code'
'Branch' 'Material Desc' 'Area off Code'
'Area Name' 'Zone code' 'Zone Name' 'Cust No' 'Cust Name'
'Bill Doc No' 'Bill Date' 'Base Val' 'Total Val' 'Quantity'
INTO IT_ATTACH SEPARATED BY CON_TAB.
CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
LOOP AT IT_FINAL INTO WA_ITAB.
CONCATENATE WA_ITAB-BUSINESS_PLACE
WA_ITAB-KVGR1
WA_ITAB-REGION
WA_ITAB-VKBUR
WA_ITAB-SALES_OFF
WA_ITAB-ARKTX
WA_ITAB-vkgrp
WA_ITAB-sales_grp
WA_ITAB-bzirk
WA_ITAB-zone
WA_ITAB-kunnr
WA_ITAB-name
WA_ITAB-vbeln
WA_ITAB-fkdat
WA_ITAB-base_value
WA_ITAB-total_value
WA_ITAB-fkimg
INTO IT_ATTACH SEPARATED BY CON_TAB.
CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
&----
*& Form POPULATE_EMAIL_MESSAGE_BODY
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPULATE_EMAIL_MESSAGE_BODY .
REFRESH IT_MESSAGE.
CONCATENATE SY-DATUM6(2) '/' SY-DATUM4(2) '/' SY-DATUM+0(4) INTO G_DATE.
IT_MESSAGE = 'Please find attached excel sheet.'.
APPEND IT_MESSAGE.
IT_MESSAGE = 'Sales Register Report - Set Top Box / Accessories'.
APPEND IT_MESSAGE.
Concatenate 'Report generated date' ':' G_Date '.' into IT_MESSAGE.
APPEND IT_MESSAGE.
clear it_message.
append it_message.
IT_MESSAGE = 'This is an autogenerated mail, please do not reply'.
APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY
&----
*& 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.
T_PACKING_LIST-OBJ_NAME = 'stb'.
DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND T_PACKING_LIST.
Create attachment notification
T_PACKING_LIST-TRANSF_BIN = 'X'.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 1.
T_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = LD_FORMAT.
T_PACKING_LIST-DOC_TYPE = 'XLS'.
T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION.
T_PACKING_LIST-OBJ_DESCR = 'Sales_STB'.
T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME.
T_PACKING_LIST-OBJ_NAME = 'stb'.
T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.
APPEND T_PACKING_LIST.
Add the recipients email address
CLEAR T_RECEIVERS.
REFRESH T_RECEIVERS.
LOOP AT IT_RECV.
T_RECEIVERS-RECEIVER = IT_RECV-EMAIL.
T_RECEIVERS-REC_TYPE = 'U'.
T_RECEIVERS-COM_TYPE = 'INT'.
T_RECEIVERS-COPY = 'X'.
T_RECEIVERS-NOTIF_DEL = 'X'.
T_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND T_RECEIVERS.
ENDLOOP.
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
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
&----
text
----
--> p1 text
<-- p2 text
----
FORM INITIATE_MAIL_EXECUTE_PROGRAM .
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ''
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
Regards
Subramanian
‎2007 Feb 02 3:06 PM
HI,
See if this code helps:
***Sending mail to the receipients
if not it_final[] is initial.
Populate table with detaisl to be entered into .xls file
PERFORM BUILD_XLS_DATA_TABLE.
PERFORM POPULATE_EMAIL_MESSAGE_BODY.
Send file by email as .xls speadsheet
PERFORM SEND_FILE_AS_EMAIL_ATTACHMENT
TABLES IT_MESSAGE
IT_ATTACH
USING P_EMAIL
'Sales Register Report - Set Top Box / Accessories'
'XLS'
'SSTB'
' '
' '
' '
CHANGING GD_ERROR
GD_RECIEVER.
Instructs mail send program for SAPCONNECT to send email(rsconn01)
PERFORM INITIATE_MAIL_EXECUTE_PROGRAM.
endif.
&----
*& Form BUILD_XLS_DATA_TABLE
&----
text
----
--> p1 text
<-- p2 text
----
FORM BUILD_XLS_DATA_TABLE .
data: wa_itab like it_final.
CONSTANTS:
CON_TAB TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB,
CON_CRET TYPE C VALUE CL_ABAP_CHAR_UTILITIES=>CR_LF.
CONCATENATE 'Business Place' 'Region Code' 'Region' 'Branch Code'
'Branch' 'Material Desc' 'Area off Code'
'Area Name' 'Zone code' 'Zone Name' 'Cust No' 'Cust Name'
'Bill Doc No' 'Bill Date' 'Base Val' 'Total Val' 'Quantity'
INTO IT_ATTACH SEPARATED BY CON_TAB.
CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
LOOP AT IT_FINAL INTO WA_ITAB.
CONCATENATE WA_ITAB-BUSINESS_PLACE
WA_ITAB-KVGR1
WA_ITAB-REGION
WA_ITAB-VKBUR
WA_ITAB-SALES_OFF
WA_ITAB-ARKTX
WA_ITAB-vkgrp
WA_ITAB-sales_grp
WA_ITAB-bzirk
WA_ITAB-zone
WA_ITAB-kunnr
WA_ITAB-name
WA_ITAB-vbeln
WA_ITAB-fkdat
WA_ITAB-base_value
WA_ITAB-total_value
WA_ITAB-fkimg
INTO IT_ATTACH SEPARATED BY CON_TAB.
CONCATENATE CON_CRET IT_ATTACH INTO IT_ATTACH.
APPEND IT_ATTACH.
ENDLOOP.
ENDFORM. " BUILD_XLS_DATA_TABLE
&----
*& Form POPULATE_EMAIL_MESSAGE_BODY
&----
text
----
--> p1 text
<-- p2 text
----
FORM POPULATE_EMAIL_MESSAGE_BODY .
REFRESH IT_MESSAGE.
CONCATENATE SY-DATUM6(2) '/' SY-DATUM4(2) '/' SY-DATUM+0(4) INTO G_DATE.
IT_MESSAGE = 'Please find attached excel sheet.'.
APPEND IT_MESSAGE.
IT_MESSAGE = 'Sales Register Report - Set Top Box / Accessories'.
APPEND IT_MESSAGE.
Concatenate 'Report generated date' ':' G_Date '.' into IT_MESSAGE.
APPEND IT_MESSAGE.
clear it_message.
append it_message.
IT_MESSAGE = 'This is an autogenerated mail, please do not reply'.
APPEND IT_MESSAGE.
ENDFORM. " POPULATE_EMAIL_MESSAGE_BODY
&----
*& 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.
T_PACKING_LIST-OBJ_NAME = 'stb'.
DESCRIBE TABLE IT_MESSAGE LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = 'RAW'.
APPEND T_PACKING_LIST.
Create attachment notification
T_PACKING_LIST-TRANSF_BIN = 'X'.
T_PACKING_LIST-HEAD_START = 1.
T_PACKING_LIST-HEAD_NUM = 1.
T_PACKING_LIST-BODY_START = 1.
DESCRIBE TABLE T_ATTACHMENT LINES T_PACKING_LIST-BODY_NUM.
T_PACKING_LIST-DOC_TYPE = LD_FORMAT.
T_PACKING_LIST-DOC_TYPE = 'XLS'.
T_PACKING_LIST-OBJ_DESCR = LD_ATTDESCRIPTION.
T_PACKING_LIST-OBJ_DESCR = 'Sales_STB'.
T_PACKING_LIST-OBJ_NAME = LD_ATTFILENAME.
T_PACKING_LIST-OBJ_NAME = 'stb'.
T_PACKING_LIST-DOC_SIZE = T_PACKING_LIST-BODY_NUM * 255.
APPEND T_PACKING_LIST.
Add the recipients email address
CLEAR T_RECEIVERS.
REFRESH T_RECEIVERS.
LOOP AT IT_RECV.
T_RECEIVERS-RECEIVER = IT_RECV-EMAIL.
T_RECEIVERS-REC_TYPE = 'U'.
T_RECEIVERS-COM_TYPE = 'INT'.
T_RECEIVERS-COPY = 'X'.
T_RECEIVERS-NOTIF_DEL = 'X'.
T_RECEIVERS-NOTIF_NDEL = 'X'.
APPEND T_RECEIVERS.
ENDLOOP.
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
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
&----
text
----
--> p1 text
<-- p2 text
----
FORM INITIATE_MAIL_EXECUTE_PROGRAM .
WAIT UP TO 2 SECONDS.
SUBMIT RSCONN01 WITH MODE = 'INT'
WITH OUTPUT = ''
AND RETURN.
ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM
Regards
Subramanian
‎2007 Feb 03 5:55 AM
Hi,
The code below demonstrates how to send an email to an external email address
&----
*& Report ZSENDEMAIL *
*& *
&----
*& Example of sending external email via SAPCONNECT *
*& *
&----
REPORT zsendemail .
PARAMETERS: psubject(40) type c default 'Hello',
p_email(40) type c default 'test@sapdev.co.uk' .
data: it_packing_list like sopcklsti1 occurs 0 with header line,
it_contents like solisti1 occurs 0 with header line,
it_receivers like somlreci1 occurs 0 with header line,
it_attachment like solisti1 occurs 0 with header line,
gd_cnt type i,
gd_sent_all(1) type c,
gd_doc_data like sodocchgi1,
gd_error type sy-subrc.
data: it_message type standard table of SOLISTI1 initial size 0
with header line.
***********************************************************************
*START-OF-SELECTION.
START-OF-SELECTION.
Perform populate_message_table.
*Send email message, although is not sent from SAP until mail send
*program has been executed(rsconn01)
PERFORM send_email_message.
*Instructs mail send program for SAPCONNECT to send email(rsconn01)
perform initiate_mail_execute_program.
&----
*& Form POPULATE_MESSAGE_TABLE
&----
Adds text to email text table
----
form populate_message_table.
Append 'Email line 1' to it_message.
Append 'Email line 2' to it_message.
Append 'Email line 3' to it_message.
Append 'Email line 4' to it_message.
endform. " POPULATE_MESSAGE_TABLE
&----
*& Form SEND_EMAIL_MESSAGE
&----
Send email message
----
form send_email_message.
Fill the document data.
gd_doc_data-doc_size = 1.
Populate the subject/generic message attributes
gd_doc_data-obj_langu = sy-langu.
gd_doc_data-obj_name = 'SAPRPT'.
gd_doc_data-obj_descr = psubject.
gd_doc_data-sensitivty = 'F'.
Describe the body of the message
clear it_packing_list.
refresh it_packing_list.
it_packing_list-transf_bin = space.
it_packing_list-head_start = 1.
it_packing_list-head_num = 0.
it_packing_list-body_start = 1.
describe table it_message lines it_packing_list-body_num.
it_packing_list-doc_type = 'RAW'.
append it_packing_list.
Add the recipients email address
clear it_receivers.
refresh it_receivers.
it_receivers-receiver = p_email.
it_receivers-rec_type = 'U'.
it_receivers-com_type = 'INT'.
it_receivers-notif_del = 'X'.
it_receivers-notif_ndel = 'X'.
append it_receivers.
Call the FM to post the message to SAPMAIL
call function 'SO_NEW_DOCUMENT_ATT_SEND_API1'
exporting
document_data = gd_doc_data
put_in_outbox = 'X'
importing
sent_to_all = gd_sent_all
tables
packing_list = it_packing_list
contents_txt = it_message
receivers = it_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.
Store function module return code
gd_error = sy-subrc.
Get it_receivers return code
loop at it_receivers.
endloop.
endform. " SEND_EMAIL_MESSAGE
&----
*& 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
Hope this helps.
Reward if helpful.
Regards,
Sipra
‎2007 Feb 03 6:06 AM
Hi,
Check this example
Declarations.
PARAMETERS: p_email(50) LOWER CASE.
DATA: document_data LIKE sodocchgi1.
DATA: t_content LIKE STANDARD TABLE OF solisti1.
DATA: s_content LIKE solisti1.
DATA: t_receivers LIKE STANDARD TABLE OF somlreci1.
DATA: s_receivers LIKE somlreci1.
START-OF-SELECTION.
Receivers.
s_receivers-receiver = p_email.
s_receivers-rec_type = 'U'.
s_receivers-express = 'X'.
APPEND s_receivers TO t_receivers.
Subject
document_data-obj_descr = 'New mail from Sap'.
Body
s_content = 'Hi,'.
APPEND s_content TO t_content.
CLEAR: s_content.
APPEND s_content TO t_content.
s_content = 'Test email from sap, please don''t reply to this email'.
APPEND s_content TO t_content.
CLEAR: s_content.
APPEND s_content TO t_content.
s_content = 'Thanks,'.
APPEND s_content TO t_content.
s_content = 'Naren.'.
APPEND s_content TO t_content.
Send the email.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = document_data
TABLES
object_content = t_content
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.
IF sy-subrc <> 0.
MESSAGE e208(00) WITH 'Error in sending email :-(('.
ELSE.
MESSAGE s208(00) WITH 'Email sent )'.
ENDIF.
SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
Thanks,
Naren
‎2007 Feb 05 5:15 AM
Hi Arun,
see below code,
zreport
This program will allowed you to send email with attachment.
First, specify the attachment file from your local hardisk and execute.
Next, specify the sender email address and click the send button.
Written by : SAP Basis, ABAP Programming and Other IMG Stuff
*
DATA METHOD1 LIKE SY-UCOMM.
DATA G_USER LIKE SOUDNAMEI1.
DATA G_USER_DATA LIKE SOUDATAI1.
DATA G_OWNER LIKE SOUD-USRNAM.
DATA G_RECEIPIENTS LIKE SOOS1 OCCURS 0 WITH HEADER LINE.
DATA G_DOCUMENT LIKE SOOD4 .
DATA G_HEADER LIKE SOOD2.
DATA G_FOLMAM LIKE SOFM2.
DATA G_OBJCNT LIKE SOLI OCCURS 0 WITH HEADER LINE.
DATA G_OBJHEAD LIKE SOLI OCCURS 0 WITH HEADER LINE.
DATA G_OBJPARA LIKE SELC OCCURS 0 WITH HEADER LINE.
DATA G_OBJPARB LIKE SOOP1 OCCURS 0 WITH HEADER LINE.
DATA G_ATTACHMENTS LIKE SOOD5 OCCURS 0 WITH HEADER LINE.
DATA G_REFERENCES LIKE SOXRL OCCURS 0 WITH HEADER LINE.
DATA G_AUTHORITY LIKE SOFA-USRACC.
DATA G_REF_DOCUMENT LIKE SOOD4.
DATA G_NEW_PARENT LIKE SOODK.
DATA: BEGIN OF G_FILES OCCURS 10 ,
TEXT(4096) TYPE C,
END OF G_FILES.
DATA : FOLD_NUMBER(12) TYPE C,
FOLD_YR(2) TYPE C,
FOLD_TYPE(3) TYPE C.
PARAMETERS WS_FILE(4096) TYPE C DEFAULT 'c:\debugger.txt'.
Can me any file fromyour pc ....either xls or word or ppt etc ...
G_USER-SAPNAME = SY-UNAME.
CALL FUNCTION 'SO_USER_READ_API1'
EXPORTING
USER = G_USER
PREPARE_FOR_FOLDER_ACCESS = ' '
IMPORTING
USER_DATA = G_USER_DATA
EXCEPTIONS
USER_NOT_EXIST = 1
PARAMETER_ERROR = 2
X_ERROR = 3
OTHERS = 4
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
FOLD_TYPE = G_USER_DATA-OUTBOXFOL+0(3).
FOLD_YR = G_USER_DATA-OUTBOXFOL+3(2).
FOLD_NUMBER = G_USER_DATA-OUTBOXFOL+5(12).
CLEAR G_FILES.
REFRESH : G_OBJCNT,
G_OBJHEAD,
G_OBJPARA,
G_OBJPARB,
G_RECEIPIENTS,
G_ATTACHMENTS,
G_REFERENCES,
G_FILES.
METHOD1 = 'SAVE'.
G_DOCUMENT-FOLTP = FOLD_TYPE.
G_DOCUMENT-FOLYR = FOLD_YR.
G_DOCUMENT-FOLNO = FOLD_NUMBER.
G_DOCUMENT-OBJTP = G_USER_DATA-OBJECT_TYP.
*g_document-OBJYR = '27'.
*g_document-OBJNO = '000000002365'.
*g_document-OBJNAM = 'MESSAGE'.
G_DOCUMENT-OBJDES = 'sap-img.com testing by program'.
G_DOCUMENT-FOLRG = 'O'.
*g_document-okcode = 'CHNG'.
G_DOCUMENT-OBJLEN = '0'.
G_DOCUMENT-FILE_EXT = 'TXT'.
G_HEADER-OBJDES = 'sap-img.com testing by program'.
G_HEADER-FILE_EXT = 'TXT'.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
METHOD = METHOD1
OFFICE_USER = SY-UNAME
REF_DOCUMENT = G_REF_DOCUMENT
NEW_PARENT = G_NEW_PARENT
IMPORTING
AUTHORITY = G_AUTHORITY
TABLES
OBJCONT = G_OBJCNT
OBJHEAD = G_OBJHEAD
OBJPARA = G_OBJPARA
OBJPARB = G_OBJPARB
RECIPIENTS = G_RECEIPIENTS
ATTACHMENTS = G_ATTACHMENTS
REFERENCES = G_REFERENCES
FILES = G_FILES
CHANGING
DOCUMENT = G_DOCUMENT
HEADER_DATA = G_HEADER
FOLMEM_DATA =
RECEIVE_DATA =
.
File from the pc to send...
METHOD1 = 'ATTCREATEFROMPC'.
G_FILES-TEXT = WS_FILE.
APPEND G_FILES.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
METHOD = METHOD1
OFFICE_USER = G_OWNER
REF_DOCUMENT = G_REF_DOCUMENT
NEW_PARENT = G_NEW_PARENT
IMPORTING
AUTHORITY = G_AUTHORITY
TABLES
OBJCONT = G_OBJCNT
OBJHEAD = G_OBJHEAD
OBJPARA = G_OBJPARA
OBJPARB = G_OBJPARB
RECIPIENTS = G_RECEIPIENTS
ATTACHMENTS = G_ATTACHMENTS
REFERENCES = G_REFERENCES
FILES = G_FILES
CHANGING
DOCUMENT = G_DOCUMENT
HEADER_DATA = G_HEADER
.
METHOD1 = 'SEND'.
G_RECEIPIENTS-RECNAM = 'MK085'.
G_RECEIPIENTS-RECESC = 'B'.
G_RECEIPIENTS-SNDEX = 'X'.
APPEND G_RECEIPIENTS.
CALL FUNCTION 'SO_DOCUMENT_REPOSITORY_MANAGER'
EXPORTING
METHOD = METHOD1
OFFICE_USER = G_OWNER
REF_DOCUMENT = G_REF_DOCUMENT
NEW_PARENT = G_NEW_PARENT
IMPORTING
AUTHORITY = G_AUTHORITY
TABLES
OBJCONT = G_OBJCNT
OBJHEAD = G_OBJHEAD
OBJPARA = G_OBJPARA
OBJPARB = G_OBJPARB
RECIPIENTS = G_RECEIPIENTS
ATTACHMENTS = G_ATTACHMENTS
REFERENCES = G_REFERENCES
FILES = G_FILES
CHANGING
DOCUMENT = G_DOCUMENT
HEADER_DATA = G_HEADER.
*-- End of Program
reward if useful.
‎2007 Feb 05 5:25 AM
HI Arun,
Try this code,
DATA: lv_doc_data LIKE sodocchgi1,
lv_obj_cont LIKE TABLE OF solisti1 WITH HEADER LINE,
lv_rec_list LIKE TABLE OF somlreci1 WITH HEADER LINE,
lwa_git_return LIKE LINE OF p_git_return.
DATA: lv_concat_subject(255),
lv_concat_content(255),
lv_distribution LIKE soid-objnam.
DATA: lc_objnam TYPE soid-objnam,
lc_dli TYPE soid-dlitp VALUE 'DLI',
lv_entries LIKE sy-tabix.
Subject for Mail.
lv_concat_subject = p_gv_mailcont(25).
*Content for the Mail.
lv_concat_content = 'Error Message'.
lv_doc_data-obj_name = 'Push Deliveries'.
lv_doc_data-obj_descr = lv_concat_subject.
lv_obj_cont = lv_concat_content.
APPEND lv_obj_cont.
CLEAR lv_obj_cont.
LOOP AT p_git_return INTO lwa_git_return WHERE type = 'E'.
(or you can use your internal table name here).
lv_obj_cont = lwa_git_return-message.
APPEND lv_obj_cont.
CLEAR lv_obj_cont.
ENDLOOP.
lv_doc_data-doc_size = ( lv_entries - 1 ) * 255 + STRLEN( lv_obj_cont ).
Determine the Distribution List.
CONCATENATE i_qals-werk '_ILOTPRD' INTO gv_distribution.
lv_rec_list-receiver = 'receiver@yahoo.com'.
lv_rec_list-rec_type = 'B'.
APPEND lv_rec_list.
CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'
EXPORTING
document_data = lv_doc_data
document_type = 'RAW'
put_in_outbox = 'X'
commit_work = 'X'
TABLES
object_content = lv_obj_cont
receivers = lv_rec_list
EXCEPTIONS
too_many_receivers = 1
document_not_sent = 2
document_type_not_exist = 3
operation_no_authorization = 4.
CASE sy-subrc.
WHEN '0'.
LEAVE TO CURRENT TRANSACTION.
WHEN '1'.
message i001(as) with 'TOO MANY RECEIVERS'.
EXIT.
WHEN '2'.
message i001(as) with 'DOCUMENT NOT SENT'.
EXIT.
WHEN '3'.
message i001(as) with 'DOCUMENT TYPE DOES NOT EXIST'.
EXIT.
WHEN '4'.
message i001(as) with 'OPERATION NO AUTHORIZATION'.
EXIT.
ENDCASE.
‎2007 Feb 05 5:29 AM
Arun,
REPORT zmbundal_email_out .
DATA BEGIN OF object_hd_change. "SAPoffice: object definition,
INCLUDE STRUCTURE sood1. "change attributes
DATA END OF object_hd_change.
DATA BEGIN OF object_content OCCURS 5. "SAPoffice: Single List with
INCLUDE STRUCTURE solisti1. "Column Length 255
DATA END OF object_content.
DATA BEGIN OF rec_table OCCURS 1. "SAPoffice: recipient with
INCLUDE STRUCTURE soos1. "attributes
DATA END OF rec_table.
Build email recipient table...........................................
CLEAR rec_table.
rec_table-sel = 'X'.
rec_table-recesc = 'B'.
rec_table-recesc = 'U'.
rec_table-recnam = 'U-'.
rec_table-recextnam = 'destination@yahoo.com'.
rec_table-adr_name = 'destination@yahoo.com'.
rec_table-sndex = 'X'.
rec_table-sndpri = '1'.
rec_table-mailstatus = 'E'.
rec_table-SNDSPO = 442355.
rec_table-SNDCP = 'X'.
COLLECT rec_table.
*.Email.content.........................................................
object_content = 'dannyboy baboy'. APPEND object_content.
object_content = 'dannyboy pogi'. APPEND object_content.
object_content = 'dannyboy fagg*t'. APPEND object_content.
*...Subject.Line........................................................
object_hd_change-objnam = 'Test email'.
object_hd_change-objdes = ' Email for Baboy'.
Send Email............................................................
CALL FUNCTION 'SO_OBJECT_SEND'
EXPORTING
object_hd_change = object_hd_change
object_type = 'RAW'
outbox_flag = 'X'
TABLES
objcont = object_content
receivers = rec_table
EXCEPTIONS
active_user_not_exist = 1
communication_failure = 2
component_not_available = 3
folder_not_exist = 4
folder_no_authorization = 5
forwarder_not_exist = 6
note_not_exist = 7
object_not_exist = 8
object_not_sent = 9
object_no_authorization = 10
object_type_not_exist = 11
operation_no_authorization = 12
owner_not_exist = 13
parameter_error = 14
substitute_not_active = 15
substitute_not_defined = 16
system_failure = 17
too_much_receivers = 18
user_not_exist = 19
originator_not_exist = 20
x_error = 21
OTHERS = 22.
*...SAPconnect..........................................................
SUBMIT rsconn01 "SAPconnect Start Send Process
WITH mode EQ '*'
WITH output EQ ''
TO SAP-SPOOL
DESTINATION 'LOCAL'
IMMEDIATELY ' '
KEEP IN SPOOL 'X'
WITHOUT SPOOL DYNPRO
AND RETURN.
_________________
Pls. Mark if useful
‎2007 Feb 05 5:57 AM
Hi arun,
1. I have to pass error internal table as text
Internal table----
Text
2. This is very tricky,
3. Bcos, each row of internal table should be shown in the next line..
and alignment has to be done.
4. We have to apply some home-grown logic,
for getting EACH Fields content,
and putting in objbin.
Then for each new row, we have to
insert Line feed character.
regards,
amit m.
‎2007 Feb 22 12:05 PM
Thanks everybody,
I was able to send internal table as text from the ABAP program.
But the 'FROM' email address is taken from my profile. Is there a way to give any other 'FROM' email address?
Thanks
Arun Mohan