Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Sending emails from ABAP program

Former Member
0 Likes
4,632

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,929

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

8 REPLIES 8
Read only

Former Member
0 Likes
1,930

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

Read only

Former Member
0 Likes
1,929

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

Read only

Former Member
0 Likes
1,929

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

Read only

Former Member
0 Likes
1,929

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

  • http://www.sap-img.com

*

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.

Read only

Former Member
0 Likes
1,929

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.

Read only

Former Member
0 Likes
1,929

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

Read only

Former Member
0 Likes
1,929

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.

Read only

0 Likes
1,929

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