Make your own free website on Tripod.com
SAP ABAP Programming, Functional and Basis Components Books


SAP Sending External Mail via ABAP

Very often, users would like to have the ability to send their SAP reports via the company email system.  This abap send mail program will help you to achieve this.  Whether you can send an external mail via SAP will depends whether your SAP system have been configured and link to the external mail server like MS Exchange or Lotus notes.

REPORT ZSENDEXTERNAL.

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 = 'youremail@sap.com'.
RECLIST-REC_TYPE = 'U'.
APPEND RECLIST.

*RECLIST-RECEIVER = 'SAPUSERNAME'.
*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'
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.

Back to Previous

Return to SAP Hints and Tips on Configuration and ABAP/4 Programming