Enterprise Resource Planning PortalERPGenie.COM Enterprise Resource Planning Portal

   Advertise | Founder BLOG

Web ERPGenie.COM  Other Search Options

Home | Vote for us |

ERPGenie.COM -> SAP Technical -> ABAP -> Example code -> Send an EMail in your ABAP

Programming Email functionality in ABAP

By Kevin Wilson

Pre-Requisites

SAP Exchange Connector needs to be configured or another email service.

See http://groups.yahoo.com/group/erpgenie/files/EMailing%20with%20SAP/ for a document describing this installation procedure.

ABAP CODE

* Email ITAB structure

DATA: BEGIN OF EMAIL_ITAB OCCURS 10.

        INCLUDE STRUCTURE SOLI.

DATA: END OF EMAIL_ITAB.

 

DATA: T_EMAIL LIKE SOOS1-RECEXTNAM.  "EMail distribution list

CONSTANTS: C_EMAIL_DISTRIBUTION LIKE SOOS1-RECEXTNAM VALUE

           ‘abc@here.com,abc@there.com’.

 

* Initialization

REFRESH EMAIL_ITAB.

 

* Populate data

EMAIL_ITAB-LINE = ‘Email body text 1’.

APPEND EMAIL_ITAB.

EMAIL_ITAB-LINE = ‘Email body text 2’.

APPEND EMAIL_ITAB.

 

T_EMAIL = C_EMAIL_DISTRIBUTION.

 

* --- EMAIL FUNCTION ---------------------------------------------------

* REQUIRMENTS:

* 1) The user running the program needs a valid email address in their

*    address portion of tx SU01 under external comms -> SMTP -> internet

*    address.

* 2) A job called SAP_EMAIL is running with the following parameters:

*    Program: RSCONN01  Variant: INT   User: XXX

*    This program moves mail from the outbox to the mail server using

*    RFC destination: SAP_INTERNET_GATEWAY_SERVER

* INTERFACE:

* 1) APPLICATION: Anything

* 2) EMAILTITLE:  EMail subject

* 3) RECEXTNAM:   EMail distribution lists separated by commas

* 4) TEXTTAB:     Internal table for lines of the email message

* EXCEPTIONS:

* Send OK = 0 otherwise there was a problem with the send.

* ----------------------------------------------------------------------

    CALL FUNCTION 'Z_SEND_EMAIL_ITAB'

         EXPORTING

              APPLICATION = 'EMAIL'

              EMAILTITLE  = 'Email Subject'

              RECEXTNAM   = T_EMAIL

         TABLES

              TEXTTAB     = EMAIL_ITAB

         EXCEPTIONS

              OTHERS      = 1.

Function Z_SEND_EMAIL_ITAB

*"*"Local interface:

*"       IMPORTING

*"             VALUE(APPLICATION) LIKE  SOOD1-OBJNAM

*"             VALUE(EMAILTITLE) LIKE  SOOD1-OBJDES

*"             VALUE(RECEXTNAM) LIKE  SOOS1-RECEXTNAM

*"       TABLES

*"              TEXTTAB STRUCTURE  SOLI

*"------------------------------------------------------------------

 

*- local data declaration

  DATA: OHD    LIKE SOOD1,

        OID    LIKE SOODK,

        TO_ALL LIKE SONV-FLAG,

        OKEY   LIKE SWOTOBJID-OBJKEY.

  DATA: BEGIN OF RECEIVERS OCCURS 0.

          INCLUDE STRUCTURE SOOS1.

  DATA: END OF RECEIVERS.

 

*- fill odh

  CLEAR OHD.

  OHD-OBJLA    = SY-LANGU.

  OHD-OBJNAM   = APPLICATION.

  OHD-OBJDES   = EMAILTITLE.

  OHD-OBJPRI   = 3.

  OHD-OBJSNS   = 'F'.

  OHD-OWNNAM   = SY-UNAME.

 

*- send Email

  CONDENSE RECEXTNAM NO-GAPS.

  CHECK RECEXTNAM <> SPACE AND RECEXTNAM CS '@'.

 

*- for every individual recipient send an Email

* (see OSS message 0120050409/0000362105/1999)

  WHILE RECEXTNAM CS ','.

    PERFORM INIT_REC TABLES RECEIVERS.

    READ TABLE RECEIVERS INDEX 1.

    RECEIVERS-RECEXTNAM = RECEXTNAM+0(SY-FDPOS).

    ADD 1 TO SY-FDPOS.

    SHIFT RECEXTNAM LEFT BY SY-FDPOS PLACES.

    MODIFY RECEIVERS INDEX 1.

    PERFORM SO_OBJECT_SEND_REC

     TABLES TEXTTAB RECEIVERS

      USING OHD.

  ENDWHILE.

 

*- check last recipient in recipient list

  IF RECEXTNAM <> SPACE.

    PERFORM INIT_REC TABLES RECEIVERS.

    READ TABLE RECEIVERS INDEX 1.

    RECEIVERS-RECEXTNAM = RECEXTNAM.

    MODIFY RECEIVERS INDEX 1.

    PERFORM SO_OBJECT_SEND_REC

     TABLES TEXTTAB RECEIVERS

      USING OHD.

  ENDIF.

 

ENDFUNCTION.

 

*---------------------------------------------------------------------*

*       FORM SO_OBJECT_SEND_REC                                       *

*---------------------------------------------------------------------*

FORM  SO_OBJECT_SEND_REC

TABLES  OBJCONT      STRUCTURE SOLI

        RECEIVERS    STRUCTURE SOOS1

USING   OBJECT_HD    STRUCTURE SOOD1.

 

  DATA:   OID     LIKE SOODK,

          TO_ALL  LIKE SONV-FLAG,

          OKEY    LIKE SWOTOBJID-OBJKEY.

 

  CALL FUNCTION 'SO_OBJECT_SEND'

       EXPORTING

            EXTERN_ADDRESS             = 'X'

            OBJECT_HD_CHANGE           = OBJECT_HD

            OBJECT_TYPE                = 'RAW'

            OUTBOX_FLAG                = 'X'

            SENDER                     = SY-UNAME

       IMPORTING

            OBJECT_ID_NEW              = OID

            SENT_TO_ALL                = TO_ALL

            OFFICE_OBJECT_KEY          = OKEY

       TABLES

            OBJCONT                    = OBJCONT

            RECEIVERS                  = RECEIVERS

       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

            X_ERROR                    = 20

            OTHERS                     = 21.

  IF SY-SUBRC <> 0.

    RAISE OTHERS.

  ENDIF.

ENDFORM.

 

*---------------------------------------------------------------------*

*       FORM INIT_REC                                                 *

*---------------------------------------------------------------------*

FORM INIT_REC TABLES RECEIVERS STRUCTURE SOOS1.

  CLEAR RECEIVERS.

  REFRESH RECEIVERS.

  MOVE SY-DATUM  TO RECEIVERS-RCDAT .

  MOVE SY-UZEIT  TO RECEIVERS-RCTIM.

  MOVE '1'       TO RECEIVERS-SNDPRI.

  MOVE 'X'       TO RECEIVERS-SNDEX.

  MOVE 'U-'      TO RECEIVERS-RECNAM.

  MOVE 'U'       TO RECEIVERS-RECESC.

  MOVE 'INT'     TO RECEIVERS-SNDART.

  MOVE '5'       TO RECEIVERS-SORTCLASS.

  APPEND RECEIVERS.

ENDFORM.

Contact Us | Polls | Add URL | Contribute | About | Privacy | Terms | Feedback | Help!

Message Board | Discussion Forum | BLOG | Consultants: Post your resume | Companies: Advertise on ERPGenie.COM | Post Job
Genie Press | ERPTopSites | Financials Consultant | Consultant Review | Gallia Consulting | Supply Chain Project | SAP Financials Forum