Application Development 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: 

Sending Mail to SAP User with attachment

Former Member
0 Kudos

Hi all,

I want to send an email to the SAP User in the SAP Inbox with attachment. I have my data in the internal table and I have to send that data as Text file attachment to the SAP Inbox of the specified SAP User ID.

Thanks.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Ravi,

Go through the below post

<b>Reward for helpful answers</b>

Satish

5 REPLIES 5

Former Member
0 Kudos

Hi Ravi,

Go through the below post

<b>Reward for helpful answers</b>

Satish

Former Member
0 Kudos

hi,

check this Example:

----


  • INCLUDE Z_SENDMAIL *

----


************************************************************************

  • *

  • TITLE : Common Include for send mail with Excel Attachment *

  • AUTHOR : Naresh Kumar Amaragani *

  • DATE : 12/05/06 *

  • APPLICATION : GENERIC *

  • PROGRAM Type: Report *

  • *

  • DESCRIPTION : Common Include for Sending mail option *

  • ... *

  • ... *

                                                  • Input/Output Details *************************

  • Inputs : Nil *

  • Outputs : Nil *

                                                      • BDC Group Details **************************

  • BDC GROUP: None *

***********************************************************************

----


  • T A B L E S

----


TABLES: SOMLRECI1.

----


  • V A R I A B L E S

----


DATA: TAB_LINES LIKE SY-TABIX,

V_MAIL_TITLE(100) TYPE C,

V_MESSAGE(200) TYPE C,

V_MAIL_TYP TYPE C.

----


  • C O N S T A N T S

----


CONSTANTS : C_HEX TYPE X VALUE '09',

K_0D TYPE X VALUE '0D',

K_0A TYPE X VALUE '0A',

C_B TYPE C VALUE 'B',

C_U TYPE C VALUE 'U',

C_EN(2) TYPE C VALUE 'EN',

C_RAW(3) TYPE C VALUE 'RAW',

C_XLS(3) TYPE C VALUE 'XLS',

C_INT(3) TYPE C VALUE 'INT'.

----


  • I N T E R N A L T A B L E S & S T R U C T U R E S

----


*-- Holds all user ids entered on the selection screen

DATA: BEGIN OF IT_USER_ID OCCURS 0,

USER TYPE USR02-BNAME,

END OF IT_USER_ID.

*-- Holds all mail addresses entered on the selection screen

DATA: BEGIN OF IT_MAIL_ADDR OCCURS 0,

MAILID TYPE SOMLRECI1-RECEIVER,

END OF IT_MAIL_ADDR.

*-- Holds Tab delimeted data

DATA:BEGIN OF IT_BODY OCCURS 0,

LINE(1000) TYPE C,

END OF IT_BODY.

DATA:BEGIN OF IT_HEADING OCCURS 0,

LINE(1000) TYPE C,

END OF IT_HEADING.

*-- Internal tables for send mail functionality

DATA: OBJBIN TYPE SOLISTI1 OCCURS 0 WITH HEADER LINE,

OBJTXT TYPE SOLISTI1 OCCURS 0 WITH HEADER LINE,

OBJPACK TYPE SOPCKLSTI1 OCCURS 0 WITH HEADER LINE,

RECLIST TYPE SOMLRECI1 OCCURS 0 WITH HEADER LINE.

*-- Structure for send mail functionality

DATA: DOC_CHNG LIKE SODOCCHGI1.

----


  • I N T E R N A L T A B L E S & S T R U C T U R E S

----


*SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-013.

  • PARAMETERS: P_SAPIN RADIOBUTTON GROUP R1 DEFAULT 'X', "SAP Office

*mail

  • P_EMAIL RADIOBUTTON GROUP R1. "Email

*

  • SELECT-OPTIONS:

  • s_mailid FOR SOMLRECI1-RECEIVER OBLIGATORY NO INTERVALS

  • default sy-uname.

*SELECTION-SCREEN END OF BLOCK b2.

&----


*& Form send_mail_with_attch

&----


  • text

----


FORM SEND_MAIL_WITH_ATTCH TABLES P_IT_HEADING STRUCTURE IT_HEADING

P_IT_BODY STRUCTURE IT_BODY

P_IT_MAIL_ID STRUCTURE IT_MAIL_ADDR

USING P_MAIL_TITLE

P_MESSAGE

P_MAIL_TYP.

  • Creation of the document to be sent

DOC_CHNG-OBJ_NAME = P_MAIL_TITLE.

DOC_CHNG-OBJ_DESCR = P_MAIL_TITLE.

  • Creation of body

PERFORM CREATE_BODY USING P_MAIL_TITLE.

  • Body of email.

OBJTXT-LINE = P_MESSAGE.

APPEND OBJTXT.

  • Defining the attachment

PERFORM DEFINE_ATTACHMENT TABLES P_IT_BODY

USING P_MAIL_TITLE.

  • Recipitent details

PERFORM POPULATE_RECEIVER_INFO TABLES P_IT_MAIL_ID

USING P_MAIL_TYP.

  • Populate data

PERFORM MOVE_DATA TABLES P_IT_HEADING

P_IT_BODY.

    • Document size

  • clear tab_lines.

  • DESCRIBE TABLE objbin LINES tab_lines.

  • READ TABLE objbin INDEX tab_lines.

  • doc_chng-doc_size = ( tab_lines - 1 ) * 255 + STRLEN( objbin ).

  • Sending the document

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'

EXPORTING

DOCUMENT_DATA = DOC_CHNG

PUT_IN_OUTBOX = 'X'

TABLES

PACKING_LIST = OBJPACK

CONTENTS_BIN = OBJBIN

CONTENTS_TXT = OBJTXT

RECEIVERS = RECLIST

EXCEPTIONS

TOO_MANY_RECEIVERS = 1

DOCUMENT_NOT_SENT = 2

OPERATION_NO_AUTHORIZATION = 4

OTHERS = 99.

CHECK SY-SUBRC = 0.

SUBMIT RSCONN01 WITH MODE = C_INT AND RETURN.

ENDFORM. " send_mail_with_attch

&----


*& Form create_body

&----


FORM CREATE_BODY USING P_TITLE.

  • create body

CLEAR OBJPACK-TRANSF_BIN.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = 1.

OBJPACK-DOC_TYPE = C_RAW.

  • objpack-obj_name = 'ORDERS'.

OBJPACK-DOC_SIZE = 1 * 400.

OBJPACK-OBJ_LANGU = C_EN.

APPEND OBJPACK.

CLEAR OBJPACK.

ENDFORM. " create_body

&----


*& Form define_attachment

&----


  • text

----


FORM DEFINE_ATTACHMENT TABLES T_BODY

USING P_TITLE.

  • No of lines

DESCRIBE TABLE T_BODY LINES TAB_LINES.

TAB_LINES = TAB_LINES + 1.

  • Defining the attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 0.

OBJPACK-HEAD_NUM = 0.

OBJPACK-BODY_START = 1.

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = C_XLS.

  • objpack-obj_name = 'SALES'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

OBJPACK-OBJ_LANGU = C_EN.

APPEND OBJPACK.

CLEAR OBJPACK.

ENDFORM. " define_attachment

&----


*& Form move_data

&----


  • text

----


FORM MOVE_DATA TABLES T_HEADING STRUCTURE IT_HEADING

T_BODY STRUCTURE IT_BODY.

  • Move heading

LOOP AT T_HEADING.

OBJBIN-LINE = T_HEADING-LINE.

APPEND OBJBIN.

CLEAR OBJBIN.

ENDLOOP.

  • Move detail info

LOOP AT T_BODY.

OBJBIN-LINE = T_BODY-LINE.

APPEND OBJBIN.

CLEAR OBJBIN.

ENDLOOP.

ENDFORM. " move_data

&----


*& Form populate_receiver_info

&----


  • text

----


FORM POPULATE_RECEIVER_INFO TABLES T_MAIL_ID STRUCTURE IT_MAIL_ADDR

USING P_TYP LIKE V_MAIL_TYP.

LOOP AT T_MAIL_ID.

RECLIST-RECEIVER = T_MAIL_ID-MAILID.

RECLIST-REC_TYPE = P_TYP.

APPEND RECLIST.

ENDLOOP.

ENDFORM. " populate_receiver_info

Former Member
0 Kudos

Check this code:

  DATA: maildata TYPE sodocchgi1.
  DATA: BEGIN OF mailpack OCCURS 0.
          INCLUDE STRUCTURE sopcklsti1.
  DATA: END OF mailpack.
  DATA: BEGIN OF mailhead OCCURS 0.
          INCLUDE STRUCTURE solisti1.
  DATA: END OF mailhead.
  DATA: BEGIN OF mailbin OCCURS 0.
          INCLUDE STRUCTURE solisti1.
  DATA: END OF mailbin.
  DATA: BEGIN OF mailtext OCCURS 0.
          INCLUDE STRUCTURE solisti1.
  DATA: END OF mailtext.
  DATA: BEGIN OF mailrec OCCURS 0.
          INCLUDE STRUCTURE somlreci1.
  DATA: END OF mailrec.

  CLEAR:  i_bultos_error_conta.

* Rellenamos el campo fecha.

  LOOP AT i_bultos_error_conta.
    READ TABLE i_bultos WITH KEY cod_bulto = i_bultos_error_conta-cod_bulto.
    i_bultos_error_conta-fecha = i_bultos-fecha.
    MODIFY i_bultos_error_conta.

    CONCATENATE i_bultos_error_conta-cod_bulto i_bultos_error_conta-fecha INTO mailbin-line.
    mailbin+253(2) = cl_abap_char_utilities=>cr_lf.
    APPEND mailbin. CLEAR mailbin.
  ENDLOOP.

* datos de "cabecera del correo

  READ TABLE mailbin INDEX maildata-doc_size.
  maildata-doc_size = ( maildata-doc_size - 1 ) * 255 + STRLEN( mailbin ). "255
  maildata-obj_langu = sy-langu.
  maildata-obj_name = 'CORREO'.
  CONCATENATE 'SHIPPING_OUT: BULTOS CON ERROR EN LA CONTABILIZACION' hub
  INTO maildata-obj_descr SEPARATED BY space..
  CLEAR mailpack.
  REFRESH mailpack.

* TEXTO DEL CORREO

  CONCATENATE 'Códigos de bulto con error en la contabilización de'
  'la entrega para el HUB' hub 'ejecutado el' sy-datum '.'
  INTO  mailtext-line SEPARATED BY space.

*   mailtext-line = 'Fichero con el log de la ejecucion del SHIPPING_OUT'.
  APPEND mailtext.

* DESCRIPCIÓN DEL TEXTO DEL MENSAJE

  mailpack-transf_bin = ' '.
  mailpack-head_start = 1.
  mailpack-head_num = 0.
  mailpack-body_start = 1.
  DESCRIBE TABLE mailtext LINES mailpack-body_num.
  mailpack-doc_type = 'RAW'.
  APPEND mailpack.

* CREACIÓN DE ARCHIVOS ADJUNTOS

  mailpack-transf_bin = 'X'.
  mailpack-head_start = 1.
  mailpack-head_num = 0.
  mailpack-body_start = 1.
  DESCRIBE TABLE mailbin LINES mailpack-body_num.
  mailpack-doc_type = 'txt'.
  mailpack-obj_descr = 'BULTOS_ERROR_CONTABILIZACION'.
  mailpack-obj_name = 'Texto'.
  mailpack-doc_size = mailpack-body_num * 255.
  APPEND mailpack.

* DESTINATARIOS

    mailrec-receiver = mail-reciber.
    mailrec-rec_type = 'U'.
    APPEND mailrec.


  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data                    = maildata
      put_in_outbox                    = 'X'
      commit_work                      = 'X'
*  IMPORTING
*    SENT_TO_ALL                      =
*    NEW_OBJECT_ID                    =
    TABLES
      packing_list                     = mailpack
*    OBJECT_HEADER                    = MAILHEAD
      contents_bin                     = mailbin
      contents_txt                     = mailtext
*    CONTENTS_HEX                     =
*    OBJECT_PARA                      =
*    OBJECT_PARB                      =
      receivers                        = mailrec
      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.

Regards.

Former Member
0 Kudos

hi

good

check this link which ll give you idea about the sending mail with excel attachment.

http://www.sapdevelopment.co.uk/reporting/email/attach_xls.htm

reward point if helpful.

thanks

mrutyun^

raviahuja
Contributor
0 Kudos

Problem solved