在 SAP 中发邮件的方法 2 (带 EXCEL 附件).
(2012-12-28 19:17:20)
标签:
abap发邮件 |
分类: ABAP |
如果用方法一发送带EXCEL的附件会有些问题,
"ASCII contents of object and attachments
i_contents_hex LIKE solix OCCURS 0 WITH HEADER LINE,
"Binary contents of object and attachments
i_contents_bin LIKE solisti1 OCCURS 0 WITH HEADER LINE,
i_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE, "attachments name
w_doc_data LIKE sodocchgi1. "邮件标题及优先级
DATA:c_mimetype TYPE char64 VALUE 'APPLICATION/MSEXCEL;charset=utf-16le'.
DATA:v_xattach TYPE xstring.
DATA:lv_string TYPE string.
DATA: tab_lines LIKE sy-tabix,
w_sent_all(1) TYPE c,
w_error TYPE sy-subrc.
DATA:i_spfli LIKE STANDARD TABLE OF spfli WITH HEADER LINE.
***********************************************************************
START-OF-SELECTION.
PERFORM get_spfli_data.
***定义邮件主体内容及标题*****
PERFORM define_mail_header.
***定义附件*******************
PERFORM define_mail_attachment.
***定义收件人*****************
PERFORM get_receivers.
*Sendemail message, although is not sent from SAP until mail send
*programhas been executed(rsconn01)
PERFORM send_email_message.
*&---------------------------------------------------------------------*
*& Form GET_SPFLI_DATA
*&---------------------------------------------------------------------*
FORMget_spfli_data .
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE i_spfli.
ENDFORM. " GET_SPFLI_DATA
*&---------------------------------------------------------------------*
*& Form DEFINE_MAIL_HEADER
*&---------------------------------------------------------------------*
FORMdefine_mail_header .
DATA: tmp_date LIKE sy-datum.
DATA: tmp_char(30).
tmp_date = sy-datum.
CONCATENATE 'Overdue Batch ' sy-datum INTO tmp_char.
********definesubject and priority************
w_doc_data-obj_descr = 'Hello'. "Email Subject.
w_doc_data-priority = 1. "邮件优先级 1~9 , 1为最高优先级
w_doc_data-obj_langu = sy-langu.
w_doc_data-obj_name = 'OFFER'. "Name of document..
w_doc_data-sensitivty = 'O'. "Document sensitivity.
********定义邮件主体内容***********************
i_contents_txt = 'Dear Mr and Miss:' .
APPEND i_contents_txt.
i_contents_txt = ' ' .
APPEND i_contents_txt.
i_contents_txt = ' Please check
attachment in time!' .
APPEND i_contents_txt.
i_contents_txt = ' This Email is sent by systme, Do not Return the Email.' .
APPEND i_contents_txt.
i_contents_txt =' If you have any problem, please contact
例如会把邮件中的内容也放到EXCEL 表格中,而且 body_num
数要多加上邮件中的行数才能显示完整.
目前不知道什么原因, 研究中.
所以要用下面的方法,也就是把 contents_bin
换成 contents_hex.
但这种方式发送的附件每行长度也不能超过255,输出长度510.
代码如下:
*&---------------------------------------------------------------------*
*&Report ZSENDEMAIL07
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zsendemail07.
TABLES:zszmail.
"Email 地址
Table
*PARAMETERS:psubject(40) TYPE c DEFAULT 'Hello',
CONSTANTS:
gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab, "CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf. "CL_ABAP_CHAR_UTILITIES=>CR_LF
DATA: i_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,
i_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE, "receivers
i_contents_txt LIKE solisti1 OCCURS 0 WITH HEADER LINE,
*&
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT
TABLES:
*PARAMETERS:
CONSTANTS:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
***********************************************************************
START-OF-SELECTION.
***定义邮件主体内容及标题*****
***定义附件*******************
***定义收件人*****************
*Send
*program
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
FORM
ENDFORM.
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
FORM
********define
********定义邮件主体内容***********************