How to send mail with excel attachment in sap abap?

Hi, im gonna show you how to send mail with excel attachment in sap abap.

Main code

REPORT zcrm_test_33.

PERFORM get_data.

PERFORM send_excel TABLES lt_order USING 'Mail Subject'.


Definitions

TYPES : BEGIN OF ty_order,

          object_id	   TYPE crmt_object_id_db,
          process_type TYPE	crmt_process_type_db,
          posting_date TYPE crmt_posting_date,

        END OF ty_order,
        t_body_msg TYPE solisti1.

DATA: w_body_msg TYPE t_body_msg.

DATA : w_cnt TYPE i.
DATA: i_body_msj TYPE STANDARD TABLE OF t_body_msg.
DATA: lt_order   TYPE TABLE OF ty_order,
      ls_order   TYPE ty_order,
      lv_subject TYPE so_obj_des.

Get data from crmd_orderadm_h

FORM get_data.

  SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_order FROM crmd_orderadm_h.

ENDFORM.

Send excel

FORM send_excel TABLES orders USING text.

  DATA: mail_data       LIKE sodocchgi1,
        note_object     LIKE thead-tdobject,
        node_it         LIKE thead-tdid,
        send_mail_ok(1),
        mail_note(1000) TYPE c,
        flag            LIKE sonv-flag,
        ls_table        TYPE ty_order,
        receivers       LIKE somlreci1 OCCURS 0 WITH HEADER LINE,
        it_attach       TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0 WITH HEADER LINE,
        attachment      LIKE solisti1 OCCURS 0 WITH HEADER LINE,
        packing_list    LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
        message         TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0 WITH HEADER LINE,
        mail_content    LIKE solisti1 OCCURS 0 WITH HEADER LINE.

  DATA: ld_format         TYPE so_obj_tp,
        ld_attfilename    TYPE so_obj_des,
        ld_attdescription TYPE so_obj_nam.

  CONSTANTS: con_tab  TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
             con_cret TYPE c VALUE cl_abap_char_utilities=>cr_lf.



  "body of mail

  PERFORM build_body_of_mail USING: 'Hi Dear,','You can find xls file in attachment.','Good luck!'.

  data:
    l_obj(11),
    l_type(5),
    l_date(15).

  CONCATENATE 'ORDER ID' 'TYPE' 'DATE' INTO it_attach SEPARATED BY con_tab.
  CONCATENATE con_cret it_attach INTO it_attach.
  APPEND it_attach.


  LOOP AT orders INTO ls_order .

    l_obj  = ls_order-object_id.
    l_type = ls_order-process_type.
    l_date = ls_order-posting_date.

    CONCATENATE l_obj l_type l_date INTO it_attach SEPARATED BY con_tab.
    CONCATENATE con_cret it_attach INTO it_attach.

    " turkish character problems
*    replace all OCCURRENCES OF 'Ş' in it_attach WITH 'S'.

    APPEND it_attach.

  ENDLOOP.

  CLEAR: mail_data, mail_content, receivers.
  REFRESH: mail_content.


  READ TABLE it_attach INDEX w_cnt.

  mail_data-doc_size = ( w_cnt - 1 ) * 255 + strlen( attachment ) .
  mail_data-obj_name = 'SARPT'.
  mail_data-obj_descr = text.
  mail_data-obj_langu = sy-langu.
  mail_data-sensitivty = 'F'.

  REFRESH attachment.

  attachment[] = it_attach[].

  CLEAR : packing_list.
  REFRESH packing_list.
  "Describe the body of the message.
  packing_list-transf_bin = space.
  packing_list-head_start = 1.
  packing_list-head_num = 0.
  packing_list-body_start = 1.
  DESCRIBE TABLE i_body_msj LINES packing_list-body_num.
  packing_list-doc_type = 'RAW'.
  APPEND packing_list.
  CLEAR : packing_list.

  "Create attachment notification
  packing_list-transf_bin = 'X'.
  packing_list-head_start = 1.
  packing_list-head_num = 1.
  packing_list-body_start = 1.

  DESCRIBE TABLE attachment LINES packing_list-body_num.

  ld_format = 'XLS'.
  ld_attfilename = text.
  ld_attdescription = 'DOSYA'.

  packing_list-doc_type = ld_format.
  packing_list-obj_descr = ld_attfilename.
  packing_list-obj_name = ld_attfilename.
  packing_list-doc_size = packing_list-body_num * 255.
  packing_list-obj_langu = sy-langu.
  APPEND packing_list.

  " Receivers.
  receivers-rec_type = 'U'.
  receivers-com_type = 'INT'.
  receivers-notif_read = ' '.
  receivers-notif_del =  ' '.
  receivers-receiver = 'emreaydin1129@gmail.com'.
  APPEND receivers.
  CLEAR receivers.


  CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
    EXPORTING
      document_data              = mail_data
*     PUT_IN_OUTBOX              = ' '
      commit_work                = 'X'
    IMPORTING
      sent_to_all                = flag
*     NEW_OBJECT_ID              =
    TABLES
      packing_list               = packing_list
*     OBJECT_HEADER              =
      contents_bin               = attachment
      contents_txt               = i_body_msj
*     CONTENTS_HEX               =
*     OBJECT_PARA                =
*     OBJECT_PARB                =
      receivers                  = receivers
    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.
* Implement suitable error handling here
  ENDIF.


ENDFORM.

FORM build_body_of_mail USING l_message.

  w_body_msg = l_message.
  APPEND w_body_msg TO i_body_msj.
  CLEAR w_body_msg.

ENDFORM.

Result.

Yorum bırakın

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.

WordPress.com'da bir web sitesi veya blog oluşturun

Yukarı ↑