|
Send an EMail in your ABAP |
|
|
|
|
Written by Kevin Wilson
|
|
Saturday, 20 January 2007 |
Pre-RequisitesSAP 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.
* 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 ‘
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
,
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
’. * 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.
|