发邮件小程序

*-----------------------------------------------------------------*
*& Report  ZMMR001_TEST
*&
*-----------------------------------------------------------------*
*&
*&
*-----------------------------------------------------------------*

REPORT  ZMMR001_TEST .
                 .
TABLESekko.

PARAMETERSp_email   TYPE somlreci1-receiver
                                  DEFAULT '491683184@qq.com'.

TYPESBEGIN OF t_ekpo,
  ebeln TYPE ekpo-ebeln,
  ebelp TYPE ekpo-ebelp,
  aedat TYPE ekpo-aedat,
  matnr TYPE ekpo-matnr,
END OF t_ekpo.
DATAit_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,
      wa_ekpo TYPE t_ekpo.

TYPESBEGIN OF t_charekpo,
  ebeln(10TYPE c,
  ebelp(5)  TYPE c,
  aedat(8)  TYPE c,
  matnr(18TYPE c,
END OF t_charekpo.
DATAwa_charekpo TYPE t_charekpo.

DATA:   it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                WITH HEADER LINE.
DATA:   it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0
                WITH HEADER LINE.

DATA:   t_packing_list LIKE sopcklsti1 OCCURS WITH HEADER LINE,
        t_contents LIKE solisti1 OCCURS WITH HEADER LINE,
        t_receivers LIKE somlreci1 OCCURS WITH HEADER LINE,
        t_attachment LIKE solisti1 OCCURS WITH HEADER LINE,
        t_object_header LIKE solisti1 OCCURS WITH HEADER LINE,
        w_cnt TYPE i,
        w_sent_all(1TYPE c,
        w_doc_data LIKE sodocchgi1,
        gd_error    TYPE sy-subrc,
        gd_reciever TYPE sy-subrc.


************************************************************************
*START_OF_SELECTION
START-OF-SELECTION.
 " Retrieve sample data from table ekpo.
  PERFORM data_retrieval.

 " Populate table with detaisl to be entered into .xls file
  PERFORM build_xls_data_table.


************************************************************************
*END-OF-SELECTION
END-OF-SELECTION.
"Populate message body text
  perform populate_email_message_body.

"Send file by email as .xls speadsheet
  PERFORM send_file_as_email_attachment
                               tables it_message
                                      it_attach
                                using p_email
                                      'Example .xls documnet attachment'
                                      'XLS'
                                      'filename'
                                      ' '
                                      ' '
                                      ' '
                             changing gd_error
                                      gd_reciever.

  "Instructs mail send program for SAPCONNECT to send email(rsconn01)
  PERFORM initiate_mail_execute_program.



*&      Form  DATA_RETRIEVAL

      "Retrieve data form EKPO table and populate itab it_ekko
"----
FORM data_retrieval.
  SELECT ebeln ebelp aedat matnr
   UP TO 10 ROWS
    FROM ekpo
    INTO TABLE it_ekpo.
ENDFORM.                    " DATA_RETRIEVAL



*&      Form  BUILD_XLS_DATA_TABLE

      "Build data table for .xls document
"----
FORM build_xls_data_table.
*  CONSTANTS: con_cret TYPE x VALUE '0D',  "OK for non Unicode
*             con_tab TYPE x VALUE '09'.   "OK for non Unicode

*If you have Unicode check active in program attributes thnen you will
*need to declare constants as follows
*class cl_abap_char_utilities definition load.
constants:
   con_tab  type value cl_abap_char_utilities=>HORIZONTAL_TAB,
   con_cret type value cl_abap_char_utilities=>CR_LF.


  CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'
         INTO it_attach SEPARATED BY con_tab.
  CONCATENATE con_cret it_attach  INTO it_attach.
  APPEND  it_attach.

  LOOP AT it_ekpo INTO wa_charekpo.
    CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp
                wa_charekpo-aedat wa_charekpo-matnr
           INTO it_attach SEPARATED BY con_tab.
    CONCATENATE con_cret it_attach  INTO it_attach.
    APPEND  it_attach.
  ENDLOOP.
ENDFORM.                    " BUILD_XLS_DATA_TABLE



*&      Form  SEND_FILE_AS_EMAIL_ATTACHMENT

      "Send email
"----
FORM send_file_as_email_attachment tables pit_message
                                          pit_attach
                                    using p_email
                                          p_mtitle
                                          p_format
                                          p_filename
                                          p_attdescription
                                          p_sender_address
                                          p_sender_addres_type
                                 changing p_error
                                          p_reciever.


  DATAld_error    TYPE sy-subrc,
        ld_reciever TYPE sy-subrc,
        ld_mtitle LIKE sodocchgi1-obj_descr,
        ld_email LIKE  somlreci1-receiver,
        ld_format TYPE  so_obj_tp ,
        ld_attdescription TYPE  so_obj_nam ,
        ld_attfilename TYPE  so_obj_des ,
        ld_sender_address LIKE  soextreci1-receiver,
        ld_sender_address_type LIKE  soextreci1-adr_typ,
        ld_receiver LIKE  sy-subrc.

  ld_email   p_email.
  ld_mtitle p_mtitle.
  ld_format              p_format.
  ld_attdescription      p_attdescription.
  ld_attfilename         p_filename.
  ld_sender_address      p_sender_address.
  ld_sender_address_type p_sender_addres_type.


"Fill the document data.
  w_doc_data-doc_size 1.

"Populate the subject/generic message attributes
  w_doc_data-obj_langu sy-langu.
  w_doc_data-obj_name  'SAPRPT'.
  w_doc_data-obj_descr ld_mtitle .
  w_doc_data-sensitivty 'F'.

"Fill the document data and get size of attachment
  CLEAR w_doc_data.
  READ TABLE it_attach INDEX w_cnt.
  w_doc_data-doc_size =
     w_cnt 255 STRLENit_attach ).
  w_doc_data-obj_langu  sy-langu.
  w_doc_data-obj_name   'SAPRPT'.
  w_doc_data-obj_descr  ld_mtitle.
  w_doc_data-sensitivty 'F'.
  CLEAR t_attachment.
  REFRESH t_attachment.
  t_attachment[] pit_attach[].

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

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

  DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.
  t_packing_list-doc_type   =  ld_format.
  t_packing_list-obj_descr  =  ld_attdescription.
  t_packing_list-obj_name   =  ld_attfilename.
  t_packing_list-doc_size   =  t_packing_list-body_num * 255.
  APPEND t_packing_list.

"Add the recipients email address
  CLEAR t_receivers.
  REFRESH t_receivers.
  t_receivers-receiver ld_email.
  t_receivers-rec_type 'U'.
  t_receivers-com_type 'INT'.
  t_receivers-notif_del 'X'.
  t_receivers-notif_ndel 'X'.
  APPEND t_receivers.

  CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
       EXPORTING
            document_data              w_doc_data
            put_in_outbox              'X'
            sender_address             ld_sender_address
            sender_address_type        ld_sender_address_type
            commit_work                'X'
       IMPORTING
            sent_to_all                w_sent_all
       TABLES
            packing_list               t_packing_list
            contents_bin               t_attachment
            contents_txt               it_message
            receivers                  t_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.

"Populate zerror return code
  ld_error sy-subrc.

"Populate zreceiver return code
  LOOP AT t_receivers.
    ld_receiver t_receivers-retrn_code.
  ENDLOOP.
ENDFORM.



*&      Form  INITIATE_MAIL_EXECUTE_PROGRAM

      "Instructs mail send program for SAPCONNECT to send email.

FORM initiate_mail_execute_program.
  WAIT UP TO SECONDS.
  SUBMIT rsconn01 WITH mode 'INT'
                WITH output 'X'
                AND RETURN.
ENDFORM.                    " INITIATE_MAIL_EXECUTE_PROGRAM



*&      Form  POPULATE_EMAIL_MESSAGE_BODY

       "Populate message body text
"----
form populate_email_message_body.
  REFRESH it_message.
  it_message 'Please find attached a list test ekpo records'.
  APPEND it_message.
endform.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值