Send mail : simple code to help how to send mail

Well i going to cover all senario below topic
Reports     : Alv Reports, Classical Report And interactive Reports
Forms       : Scripts and Smart Forms Adove Forms
Interface   : RFC BAPI ALE/IDCS
Converstion : BDC LSMW BAPI

Enhancement : User-EXITS BADI, Customer Exit

when you working reports and smartforms then many time requirments to send mail suppose you have working alv reports then you get requiremnts to send  your reports to mail attachments to then
sime code going to help out how to send mail as pdf and execel attachments lets play this code and
send your mail anywhere in sap abap programming langauge
****Objects to send mail.
  DATA: lt_tline   TYPE TABLE OF tline WITH HEADER LINE,
        lt_record  LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        lt_objpack LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
        lt_objtxt  LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        lt_objbin  LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        lt_reclist LIKE somlreci1 OCCURS 0 WITH HEADER LINE.

****Work Area declarations
  DATA : ls_objhead  TYPE soli_tab,
         ls_doc_chng TYPE sodocchgi1,
         ls_buffer   TYPE string.

  DATA: v_lines_txt TYPE i,
        v_lines_bin TYPE i.
  DATA docs LIKE docs OCCURS 0 WITH HEADER LINE.
  DATA excelsize TYPE i.
  DATA excel LIKE solisti1   OCCURS 0 WITH HEADER LINE.
  DATA doc LIKE sodocchgi1.
  DATA excelln TYPE i.
  DATA int_objpack LIKE sopcklsti1 OCCURS 2 WITH HEADER LINE.
  DATA int_objhead LIKE solisti1   OCCURS 2 WITH HEADER LINE.
  DATA int_objtext LIKE solisti1   OCCURS 0 WITH HEADER LINE.
  DATA int_reclist LIKE somlreci1  OCCURS 1 WITH HEADER LINE.
  DATA bodyln LIKE sy-tabix.
  DATA output_data TYPE ssfcrescl.

  LOOP AT lt_tline.
    TRANSLATE lt_tline USING '~'.
    CONCATENATE ls_buffer lt_tline INTO ls_buffer.
  ENDLOOP.
  TRANSLATE ls_buffer USING '~'.
  DO.
    lt_record = ls_buffer.
    APPEND lt_record.
    SHIFT ls_buffer LEFT BY 255 PLACES.
    IF ls_buffer IS INITIAL.
      EXIT.
    ENDIF.
  ENDDO.

  excel[] = wa_data[].
**  excel table sizes
  DESCRIBE TABLE excel LINES excelln.

**  body email
  int_objtext-line = 'Test Body'.
  APPEND int_objtext.

  DESCRIBE TABLE int_objtext LINES bodyln.

  READ TABLE int_objtext INDEX bodyln.

*  CLEAR doc.
*  doc-doc_size   = ( bodyln - 1 ) * 255 + strlen( int_objtext ).
*  doc-obj_name   = ' '.
*  doc-sensitivty = 'P'.
*  doc-proc_syst  = sy-sysid.
*  doc-proc_clint = sy-mandt.

*  CLEAR: int_objpack, int_objpack[].
*  int_objpack-transf_bin = ' '.
*  int_objpack-head_start = 1.
*  int_objpack-head_num   = 0.
*  int_objpack-body_start = 1.
*  int_objpack-body_num   = bodyln.
*  int_objpack-doc_type   = 'RAW'.
*  int_objpack-obj_descr  = 'Test'.
*  APPEND int_objpack.

  CLEAR: int_objhead, int_objhead[].
  int_objhead            = 'Attachment'.
  APPEND int_objhead.

***Attachment
  REFRESH:  lt_reclist,
            lt_objtxt,
            lt_objbin,
            lt_objpack.
  CLEAR ls_objhead.
  lt_objbin[] = lt_record[].

****Create Message Body Title and Description
  lt_objtxt-line = 'Dear Sir/Madam,'.
  APPEND lt_objtxt.
  CLEAR lt_objtxt.

  lt_objtxt-line = space.
  APPEND lt_objtxt.
  CLEAR lt_objtxt.

  lt_objtxt-line = 'Hello.....'.
  APPEND lt_objtxt.
  CLEAR  lt_objtxt.

  lt_objtxt-line = space.
  APPEND lt_objtxt.
  CLEAR lt_objtxt.
  lt_objtxt = 'Regards,'.
  APPEND lt_objtxt.
  lt_objtxt = ''.
  APPEND lt_objtxt.
  lt_objtxt = 'Nirav Mandaliya.'.
  APPEND lt_objtxt.
  DESCRIBE TABLE lt_objtxt LINES v_lines_txt.
  READ TABLE lt_objtxt INDEX v_lines_txt.
  ls_doc_chng-obj_name   = 'PO'.
  ls_doc_chng-expiry_dat = sy-datum + 10.
  ls_doc_chng-obj_descr  = 'Nirav Test '.
  ls_doc_chng-sensitivty = 'F'.
  ls_doc_chng-doc_size   = v_lines_txt * 255.
****Main Text
  CLEAR lt_objpack-transf_bin.
  lt_objpack-head_start = 1.
  lt_objpack-head_num   = 0.
  lt_objpack-body_start = 1.
  lt_objpack-body_num   = v_lines_txt.
  lt_objpack-doc_type   = 'RAW'.
  APPEND lt_objpack.

****Attachment (pdf-Attachment)
  lt_objpack-transf_bin = 'X'.
  lt_objpack-head_start = 1.
  lt_objpack-head_num = 0.
  lt_objpack-body_start = 1.
  DESCRIBE TABLE lt_objbin LINES v_lines_bin.
  READ TABLE lt_objbin INDEX v_lines_bin.
  lt_objpack-doc_size = excelsize.
  lt_objpack-body_num = excelln.
  lt_objpack-doc_type = 'XLS'.
  lt_objpack-obj_name = 'excel'..
  lt_objpack-obj_langu = 'E'.
  lt_objpack-obj_descr = 'Report in Excel'.
  APPEND lt_objpack.

****E-mail receivers.
  lt_reclist-receiver = 'nirav.mandaliya@squirrelsoftech.in'."gs_final-ven_mail_id.   "---------->email id
  lt_reclist-express  = 'X'.
  lt_reclist-rec_type = 'U'.
  APPEND lt_reclist.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
    EXPORTING
      document_data              = ls_doc_chng
      put_in_outbox              = 'X'
*     sender_address             = mail_add
*     sender_address_type        = c_type
      commit_work                = 'X'
    TABLES
      packing_list               = lt_objpack
      object_header              = ls_objhead
      contents_bin               = lt_objbin
      contents_txt               = lt_objtxt
      receivers                  = lt_reclist
    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.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    MESSAGE 'Mail has been Successfully sent.' TYPE 'S'.
  ENDIF.

Comments

Popular posts from this blog

all user exit mv45afzz (implicit user exit )

MB_MIGO_BADI THIS BADI USED TO POSTING DATA IN MIGO

Long Text in input and output field in module pool