ABAP Send Mail with Attachment&find a sap bug out

Steps :

1.      Add Recipients

2.      Put in the mail content

3.      Create the attachment

4.      Pack the mail contents and attachment

5.      Send the mail out

 

Source Code :

 

REPORT  zkaka_MailSendTemplete.

 

“Step 1. Variant declaration

DATA      lt_mailrecipients     TYPE STANDARD TABLE OF somlreci1 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.

 

“Step 2. Add Recients

lt_mailrecipients-rec_type  = 'U'.                                           “U = Internet address
lt_mailrecipients-com_type  = 'INT'.
lt_mailrecipients-express = 
'X'.                                              “Mail to
lt_mailrecipients-receiver  = ‘to@kaka.com'.        
APPEND lt_mailrecipients .
CLEAR lt_mailrecipients .
lt_mailrecipients-rec_type  = 
'U'.
lt_mailrecipients-com_type  = 
'INT'.
lt_mailrecipients-
copy = 'X'.                                                   “Mail copy to
lt_mailrecipients-receiver  = 'copyto@kaka.com'.
APPEND lt_mailrecipients .
CLEAR lt_mailrecipients .
lt_mailrecipients-rec_type  = 
'U'.
lt_mailrecipients-com_type  = 
'INT'.
lt_mailrecipients-blind_copy = 
'X' .                                        “Mail blind copy to
lt_mailrecipients-receiver  = 'blindcopyto@kaka.com'.
APPEND lt_mailrecipients .
CLEAR lt_mailrecipients .

 

“Step 3. Put in the mail contents

lt_mailtxt = 'Hi,How are you'.      

APPEND lt_mailtxt. 

CLEAR lt_mailtxt.
lt_mailtxt = 
'It’s a test mail'

APPEND lt_mailtxt. 

CLEAR lt_mailtxt.
lt_mailtxt = 
'Thanks'.  

APPEND lt_mailtxt. 

CLEAR lt_mailtxt.

 

“Step 4. Create the attachment

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

SELECT ebeln ebelp INTO TABLE lt_po_data_cons UP TO 10 ROWS FROM ekpo.

CLASS cl_abap_char_utilities DEFINITION LOAD.                                                                  “Adding excel column header
CONCATENATE 'PO' 'PO Line' INTO lt_attachment SEPARATED BY cl_abap_char_utilities=>horizontal_tab.
APPEND lt_attachment. 

CLEAR lt_attachment.

LOOP AT lt_po_data_cons.                                                                                             “Adding excel content from internal table by single line
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.        “_inserta newline
APPEND lt_attachment. 

CLEAR lt_attachment.
ENDLOOP.

 

 

“Step 5. Pack mail contents and attachment
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    = 
LINES( lt_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    = 
1.
lt_packing_list-body_start  = 
1.
lt_packing_list-body_num    = 
LINES( lt_attachment ).
lt_packing_list-doc_type    = 
'XLS'.                                                                         " You can give RAW incase if you want just a txt file.
lt_packing_list-obj_name    = 'data.xls'.                                                                 " attachment name.
lt_packing_list-obj_descr   = 'data.xls'.
lt_packing_list-doc_size    = lt_packing_list-body_num * 
255.
APPEND lt_packing_list. 

CLEAR lt_packing_list.

lt_mailsubject-obj_name     = 
'MAILATTCH'.
lt_mailsubject-obj_langu    = sy-langu.
lt_mailsubject-obj_descr    = 
'You have got mail'.                                                 " Mail subject
lt_mailsubject-sensitivty   = 'F'.
gv_cnt = 
LINES( lt_attachment ).
lt_mailsubject-doc_size     = ( gv_cnt - 
1 ) * 255 + STRLEN(lt_attachment ).

 

“Step 6. Send the mail

CALL FUNCTION 'SO_NEW_DOCUMENT_ATT_SEND_API1'
  EXPORTING
    document_data                           = lt_mailsubject                                              " Mail subject
    put_in_outbox                             'X'                                                                 Save a copy in SAP outbox
  TABLES
    packing_list                                 = lt_packing_list                                              Packing list
    contents_bin                               = lt_attachment                                              Attachment
    contents_txt                                = lt_mailtxt                                                     " Content of mail body
    receivers                                     = lt_mailrecipients                                          " Mail recipients
  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.
  
COMMIT WORK.
  
SUBMIT rsconn01 WITH mode = 'INT' AND RETURN.
ENDIF.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampaignWolf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值