Sending an Excel Attachment through mail

 

 

*&---------------------------------------------------------------------*
*& Report ZVB_EMAIL_WITH_ATTACHMENT
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zvb_email_with_attachment.

*Data declarations
DATAlt_mailrecipients TYPE STANDARD TABLE OF somlrec90 WITH HEADER LINE,
      lt_mailtxt        TYPE STANDARD TABLE OF soli WITH HEADER LINE,
      lt_attachment     TYPE STANDARD TABLE OF solisti1 WITH HEADER LINE,
      lt_mailsubject    TYPE sodocchgi1,
      lt_packing_list   TYPE STANDARD TABLE OF sopcklsti1 WITH HEADER LINE,
      gv_cnt            TYPE i.


DATABEGIN OF lt_po_data_cons OCCURS 0,
        ebeln LIKE ekpo-ebeln,
        ebelp LIKE ekpo-ebelp,
      END OF lt_po_data_cons.

START-OF-SELECTION.

  SELECT ebeln ebelp INTO TABLE lt_po_data_cons UP TO 10 ROWS FROM ekpo.
*create the attachment
  CLEAR lt_attachment.
  CLASS cl_abap_char_utilities DEFINITION LOAD.
  CONCATENATE 'PO' 'PO Item'
  INTO lt_attachment SEPARATED BY
  cl_abap_char_utilities=>horizontal_tab.
  APPEND lt_attachment.
  CLEAR lt_attachment.

  LOOP AT lt_po_data_cons.
    CONCATENATE lt_po_data_cons-ebeln lt_po_data_cons-ebelp
    INTO lt_attachment SEPARATED BY
    cl_abap_char_utilities=>horizontal_tab.
    CONCATENATE cl_abap_char_utilities=>newline lt_attachment
    INTO lt_attachment.
    APPEND lt_attachment.
    CLEAR lt_attachment.
  ENDLOOP.

*put in the mail contents
  lt_mailtxt 'Hi,'.
  APPEND lt_mailtxt.
  CLEAR lt_mailtxt.

  lt_mailtxt 'Find the PO details in attached excel'.
  APPEND lt_mailtxt.
  CLEAR lt_mailtxt.

*pack the mail contents and attachments
  lt_packing_list-transf_bin space.
  lt_packing_list-head_start 1.
  lt_packing_list-head_num 0.
  lt_packing_list-body_start 1.
  lt_packing_list-body_num lineslt_mailtxt ).
  lt_packing_list-doc_type 'RAW'.
  APPEND lt_packing_list.
  CLEAR lt_packing_list.

  lt_packing_list-transf_bin 'X'.
  lt_packing_list-head_start 1.
  lt_packing_list-head_num 0.
  lt_packing_list-body_start 1.
  lt_packing_list-body_num lineslt_attachment ).
  lt_packing_list-doc_type 'XLS'"RAW if we want just a txt file
  lt_packing_list-obj_name 'File'.
  lt_packing_list-obj_descr 'Excel File'.
  APPEND lt_packing_list.
  CLEAR lt_packing_list.

  lt_mailsubject-obj_name 'MAILATTCH'.
  lt_mailsubject-obj_langu sy-langu.
  lt_mailsubject-obj_descr 'PO Details'.
  lt_mailsubject-sensitivty 'F'.
  gv_cnt lineslt_attachment ).
  lt_mailsubject-doc_size gv_cnt 255 strlenlt_attachment ).

*add recipients
  lt_mailrecipients-rec_type 'U'.
  lt_mailrecipients-com_type 'INT'.
  lt_mailrecipients-receiver 'abc@gmail.com'.
  APPEND lt_mailrecipients.
  CLEAR lt_mailrecipients.

*send the mail out
  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data lt_mailsubject
*     PUT_IN_OUTBOX = 'X'
      commit_work   'X'
    TABLES
      packing_list  lt_packing_list
      contents_bin  lt_attachment
      contents_txt  lt_mailtxt
      receivers     lt_mailrecipients.
  IF sy-subrc 0.
    WRITE 'Mail sent successfully'.
  ENDIF.

Output: Go to T-CODE 'SOST'. select the mail and click on 'Display Document' icon'.

 

click on excel. The file automatically downloaded into Documents folder.

 

Comments

Popular posts from this blog

CDS Views: Table Functions with Example

Passing Dynamic Variables to SO10 TEXT

Adobe Form/PDF Form Introduction