Application Development and Automation 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: 
Read only

Mailing with Attachment by ABAP Coding

Former Member
0 Likes
609

Hi All,

I have to send a mail to my customer with attachment through SAP coding.

I can able to do this option with ALV report directly.

But I want to send through program with Attachment.

Can u help me how to do in coding with attachment.

Kindly help me,, This is high priority.

By

Deekshitha.

Hi All,

I have to send a mail to my customer with attachment through SAP coding.

I can able to do this option with ALV report directly.

But I want to send through program with Attachment.

Can u help me how to do in coding with attachment.

Kindly help me,, This is high priority.

By

Deekshitha.

4 REPLIES 4
Read only

Former Member
0 Likes
548

Refer this link:

Read only

Former Member
0 Likes
548
FORM send_list_to_basis .

  DATA: w_path      LIKE rlgrap OCCURS 0 WITH HEADER LINE,
        lt_index    TYPE sy-tabix,
        doc_type(3) TYPE c,
        descr       LIKE it_objpack_basis-obj_descr,
        temp_data   LIKE w_path,
        temp1       TYPE string,
        tab_lines   TYPE i,
        langu(15)   TYPE c,
        expirydate  TYPE so_obj_edt,
        L_FILE1(100).

  CONCATENATE 'C:' sy-repid '_' sy-datum '.XLS' INTO L_FILE1.
  W_PATH-FILENAME = L_FILE1.
  APPEND w_path.
  CLEAR w_path.

  wa_doc_chng-obj_descr  = 'User List not logged on for 180 days'.
  wa_doc_chng-obj_langu  = 'E'.
  wa_doc_chng-obj_expdat = sy-datum.

  CLEAR w_subject.
  CONCATENATE 'Please find attached document with list of users'
              'not logged on for 180 days for client' sy-mandt
              INTO w_subject SEPARATED BY space.

  it_objtxt_basis-line = w_subject.
  APPEND it_objtxt_basis.
  CLEAR it_objtxt_basis.
  it_objtxt_basis-line = text-004.
  APPEND it_objtxt_basis.
  CLEAR it_objtxt_basis.

  CLEAR w_tab_line.
  DESCRIBE TABLE it_objtxt_basis LINES w_tab_line.

  READ TABLE it_objtxt_basis INDEX w_tab_line  INTO l_cline.

  wa_doc_chng-doc_size =
   ( w_tab_line - 1 ) * 255 + STRLEN( l_cline ).

  CLEAR it_objpack_basis-transf_bin.
  it_objpack_basis-head_start = 1.
  it_objpack_basis-head_num   = 0.
  it_objpack_basis-body_start = 1.
  it_objpack_basis-body_num   = w_tab_line.
  it_objpack_basis-doc_type   = 'RAW'.
  APPEND it_objpack_basis.
  CLEAR it_objpack_basis.

  LOOP AT w_path.
    temp1 = w_path.
    descr = w_path.
    CALL FUNCTION 'STRING_REVERSE'
      EXPORTING
        string  = descr
        lang    = 'E'
      IMPORTING
        rstring = descr.
    CALL FUNCTION 'STRING_SPLIT'
      EXPORTING
        delimiter = ''
        string    = descr
      IMPORTING
        head      = descr
        tail      = temp_data.

    CALL FUNCTION 'STRING_REVERSE'
      EXPORTING
        string  = descr
        lang    = 'E'
      IMPORTING
        rstring = descr.


    CALL FUNCTION 'STRING_SPLIT'
      EXPORTING
        delimiter = '.'
        string    = descr
      IMPORTING
        head      = temp_data
        tail      = doc_type.


    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename      = temp1
        filetype      = 'BIN'
        header_length = 0
        read_by_line  = 'X'
        replacement   = '#'
      TABLES
        data_tab      = it_upload.


    DESCRIBE TABLE it_upload LINES tab_lines.
    DESCRIBE TABLE it_objbin_basis LINES lt_index.
    lt_index = lt_index + 1.

    LOOP AT it_upload.
      wa_objbin_basis-line = it_upload-line.
      APPEND wa_objbin_basis TO it_objbin_basis.
      CLEAR wa_objbin_basis.
    ENDLOOP.

    it_objpack_basis-transf_bin = 'X'.
    it_objpack_basis-head_start = 0.
    it_objpack_basis-head_num   = 0.
    it_objpack_basis-body_start = lt_index.
    it_objpack_basis-body_num   = tab_lines.
    it_objpack_basis-doc_type   = doc_type.
    it_objpack_basis-obj_descr  = descr.
    it_objpack_basis-doc_size   = tab_lines * 255.
    APPEND it_objpack_basis.
    CLEAR it_objpack_basis.

  ENDLOOP.

  it_reclist_basis-receiver = '[email protected]'.
  it_reclist_basis-rec_type = 'U'.
  APPEND it_reclist_basis.
  CLEAR it_reclist_basis.

  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = wa_doc_chng
      put_in_outbox              = 'X'
      commit_work                = 'X'
    TABLES
      packing_list               = it_objpack_basis
      contents_txt               = it_objtxt_basis
      contents_bin               = it_objbin_basis
      receivers                  = it_reclist_basis
    EXCEPTIONS
      too_many_receivers         = 1
      document_not_sent          = 2
      operation_no_authorization = 4
      OTHERS                     = 99.
  IF sy-subrc EQ 0.
    SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
  ENDIF.

ENDFORM.                    " send_list_to_basis
Read only

Former Member
0 Likes
548

hi

sample prog:

&----


*& Report ZTEST_MAIL1 *

*& *

&----


*& Mail Program with attachment *

*& *

&----


REPORT ZTEST_MAIL1.

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,

TAB_LINES1 LIKE SY-TABIX.

  • Creation of the document to be sent

DOC_CHNG-OBJ_NAME = 'MADHU'.

  • description appears in the mail

DOC_CHNG-OBJ_DESCR = 'Program with attachment'.

OBJTXT = 'Contents of the mail body'.

APPEND OBJTXT.

OBJTXT = '1. this is the first line'.

APPEND OBJTXT.

OBJTXT = '2. this is the second line'.

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 first attachment

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

OBJBIN-LINE = ' ABC '. APPEND OBJBIN.

OBJBIN-LINE = ' DEF '. APPEND OBJBIN.

OBJBIN-LINE = ' GHI '. APPEND OBJBIN.

DESCRIBE TABLE OBJBIN LINES TAB_LINES.

OBJHEAD = 'Attach1.htm'. APPEND OBJHEAD.

  • Creation of the entry for the compressed attachment

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

  • Attachment1 has to start from the first entry

OBJPACK-BODY_START = 1.

  • It has to end at the end of 3rd entry

OBJPACK-BODY_NUM = TAB_LINES.

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-OBJ_NAME = 'Attachment'.

OBJPACK-OBJ_DESCR = 'Attach1'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK.

  • Creation of the second attachment

  • Creation of the entry for the compressed document

OBJBIN-LINE = ' 1. Hi '. APPEND OBJBIN.

OBJBIN-LINE = ' 2. Hi '. APPEND OBJBIN.

OBJBIN-LINE = ' 3. HI '. APPEND OBJBIN.

DESCRIBE TABLE OBJBIN LINES TAB_LINES1.

OBJHEAD = 'Attach2.htm'. APPEND OBJHEAD.

OBJPACK-TRANSF_BIN = 'X'.

OBJPACK-HEAD_START = 1.

OBJPACK-HEAD_NUM = 1.

  • Specify the record from where the second attachment has to start

OBJPACK-BODY_START = ( TAB_LINES + 1 ).

OBJPACK-BODY_NUM = TAB_LINES1.

OBJPACK-DOC_TYPE = 'RAW'.

OBJPACK-OBJ_NAME = 'Attachment'.

OBJPACK-OBJ_DESCR = 'Attach2'.

OBJPACK-DOC_SIZE = TAB_LINES * 255.

APPEND OBJPACK.

  • Completing the recipient list

RECLIST-RECEIVER = 'DEV02'.

RECLIST-REC_TYPE = 'B'.

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.

IF SY-SUBRC = 0.

WRITE 😕 'MAIL WITH ATTACHMENT HAS BEEN SENT'.

ENDIF.

    • reward if helpful

regards,

madhu

Read only

amit_khare
Active Contributor
0 Likes
548

Hi,

Check Amit's reply in this link, the program is perfect.

Regards,

Amit