LinkedIn
RSS

Send Email SAP Function to External address or distribution list

When you need to trigger email from user exit or from your own program you can use this function.

You can send it to single email destination or to a distribution list ( SBWP Transaction ).

This will only work if SCOT transaction is correctly configured, and this must be made by a System Administrator.

Here goes the code:

*&———————————————————————*

*& Report ZEMAIL

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

REPORT ZEMAIL.

DATA: OBJPACK LIKE SOPCKLSTI1 OCCURS 2 WITH HEADER LINE.

DATA: OBJHEAD LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE.

DATA: OBJBIN LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: OBJTXT LIKE SOLISTI1 OCCURS 10 WITH HEADER LINE.

DATA: RECLIST LIKE SOMLRECI1 OCCURS 5 WITH HEADER LINE.

DATA: DOC_CHNG LIKE SODOCCHGI1.

DATA: TAB_LINES LIKE SY-TABIX.

* Creation of the document to be sent

* File Name

DOC_CHNG-OBJ_NAME = ‘SENDFILE’.

* Mail Subject

DOC_CHNG-OBJ_DESCR = ‘Send External Mail’.

* Mail Contents

OBJTXT = ‘Minimum bid : 250000 €’.

APPEND OBJTXT.

OBJTXT = ‘A representation of the pictures up for auction’.

APPEND OBJTXT.

OBJTXT = ‘was included as attachment.’.

APPEND OBJTXT.

DESCRIBE TABLE OBJTXT LINES TAB_LINES.

READ TABLE OBJTXT INDEX TAB_LINES.

DOC_CHNG-DOC_SIZE = ( TAB_LINES – 1 ) * 255 + STRLEN( OBJTXT ).

* Creation of the entry for the compressed document

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = ‘RAW’.

APPEND OBJPACK.

* Creation of the document attachment

* (Assume that the data in OBJBIN is in BMP format)

*OBJBIN = ‘ \O/ ‘. APPEND OBJBIN.

*OBJBIN = ‘ | ‘. APPEND OBJBIN.

*OBJBIN = ‘ / \ ‘. APPEND OBJBIN.

*DESCRIBE TABLE OBJBIN LINES TAB_LINES.

*OBJHEAD = ‘PICTURE.BMP’.

*APPEND OBJHEAD.

*

** Creation of the entry for the compressed attachment

*OBJPACK-TRANSF_BIN = ‘X’.

*OBJPACK-HEAD_START = 1.

*OBJPACK-HEAD_NUM = 1.

*OBJPACK-BODY_START = 1.

*OBJPACK-BODY_NUM = TAB_LINES.

*OBJPACK-DOC_TYPE = ‘BMP’.

*OBJPACK-OBJ_NAME = ‘PICTURE’.

*OBJPACK-OBJ_DESCR = ‘Representation of object 138′.

*OBJPACK-DOC_SIZE = TAB_LINES * 255.

*APPEND OBJPACK.

* Completing the recipient list

RECLIST-RECEIVER = ‘email@mail.com’.

RECLIST-REC_TYPE = ‘U’.

RECLIST-COM_TYPE = ‘INT’.

RECLIST-NOTIF_DEL = ‘X’.

RECLIST-NOTIF_NDEL = ‘X’.

APPEND RECLIST.

*RECLIST-RECEIVER = sy-uname.

*RECLIST-REC_TYPE = ‘P’.

*APPEND RECLIST.

* Sending the document

CALL FUNCTION ‘SO_NEW_DOCUMENT_ATT_SEND_API1′

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = ‘X’

COMMIT_WORK = ‘X’

TABLES

PACKING_LIST = OBJPACK

OBJECT_HEADER = OBJHEAD

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CASE SY-SUBRC.

WHEN 0.

WRITE: / ‘Result of the send process:’.

LOOP AT RECLIST.

WRITE: / RECLIST-RECEIVER(48), ‘:’.

IF RECLIST-RETRN_CODE = 0.

WRITE ‘The document was sent’.

ELSE.

WRITE ‘The document could not be sent’.

ENDIF.

ENDLOOP.

WHEN 1.

WRITE: / ‘No authorization for sending to the specified number’,

‘of recipients’.

WHEN 2.

WRITE: / ‘Document could not be sent to any recipient’.

WHEN 4.

WRITE: / ‘No send authorization’.

WHEN OTHERS.

WRITE: / ‘Error occurred while sending’.

ENDCASE.

 

If you want to send it to a distribution list, please change these variables:

RECLIST-RECEIVER = ‘ZDistributionList’.

RECLIST-REC_TYPE = ‘C’.

Any questions?

Just Comment


Leave a Reply