*主要用到了SAP的CL_BCS,CL_DOCUMENT_BCS这两个类实现
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" REFERENCE(IN_MAILS) TYPE STRING
*" TABLES
*" IT_HEAD STRUCTURE ZSEND_DN_HEAD
*" IT_ITEM STRUCTURE ZSEND_DN_ITEM
*"----------------------------------------------------------------------
DATA:
EMAIL TYPE STRING ,收件邮箱
LT_MAILS TYPE TABLE OF STRING WITH HEADER LINE.多个接收邮箱
DATA: FILENAME TYPE STRING ,文件路径
LV_PDF_CONTENT TYPE SOLIX_TAB,存文件
LV_CONLENGTHS TYPE SO_OBJ_LEN,文件长度
LEN TYPE I,
LV_TITLE TYPE SO_OBJ_DES,
SEND_REQUEST TYPE REF TO CL_BCS,
DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
CONLENGTHS TYPE SO_OBJ_LEN,
HTML TYPE STANDARD TABLE OF W3HTML,
WA_HTML TYPE W3HTML,
SENDER_ID TYPE REF TO IF_SENDER_BCS,
RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
SENT_TO_ALL TYPE OS_BOOLEAN,
BCS_EXCEPTION TYPE REF TO CX_BCS,
BCS_MESSAGE TYPE STRING,
LO_SENDER TYPE REF TO CL_SAPUSER_BCS, "发送人
LV_TO TYPE ADR6-SMTP_ADDR, "接收人
LO_BCS_TO TYPE REF TO IF_RECIPIENT_BCS, "接收人
LV_CC TYPE ADR6-SMTP_ADDR, "抄送人
LO_BCS_CC TYPE REF TO IF_RECIPIENT_BCS, "抄送人
LV_RESULT TYPE OS_BOOLEAN, "发送结果
LO_FAIL TYPE REF TO CX_BCS. "异常信息
设置文本内容
READ TABLE IT_HEAD INDEX 1 .
WA_HTML-LINE = '<html><head><meta charset="utf-8" /><title></title><style>table {text-align: center;}</style></head><body>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<h3>各位好!</h3>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<h3>' && SY-DATUM+0(4) && '年' && SY-DATUM+4(2) && '月' && SY-DATUM+6(2) && '日' && 'XX事业部出货明细如下:</h3>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<div style="margin-left: 20px;"><h4>' && '客户编号:'&& IT_HEAD-BU_SORT2 &&'</h4></div>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<div style="margin-left: 20px;"><h4>' && '交易条款:'&& IT_HEAD-INCO1 &&'/' && IT_HEAD-INCO2 &&'</h4></div>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<div style="margin-left: 20px;"><h4>' && '快递方式:'&& IT_HEAD-NAME_T &&'/' && IT_HEAD-ZSER_TYPE_T &&'</h4></div>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<div style="margin-left: 20px;"><h4>' && '备注:' && IT_HEAD-ZB && '</h4></div>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<table border="1" width="550px" height="150px" cellspacing="0" align="center">'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<thead><tr>'&&'<th>出库单/项目</th>'&&'<th>机种</th>'&&'<th>客户订单号</th>'&&'<th>客户料号</th>'&&'<th>SAP料号</th>'&&'<th>数量</th>'&&'</thead>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '<tbody><tr>'.
APPEND WA_HTML TO HTML.
LOOP AT IT_ITEM .
WA_HTML-LINE = '<td>'&& IT_ITEM-VBELN &&'/'&& IT_ITEM-POSNR &&'</td>'&&'<td>'&& IT_ITEM-ZJZ &&'</td>'&& '<td>'&& IT_ITEM-BSTKD &&'</td>'.
WA_HTML-LINE = WA_HTML-LINE &&'<td>'&& IT_ITEM-KDMAT &&'</td>'&&'<td>'&& IT_ITEM-MATNR &&'</td>'&&'<td>'&& IT_ITEM-ZS &&'</td></tr>' .
APPEND WA_HTML TO HTML.
LV_TITLE = LV_TITLE && IT_ITEM-ZJZ .
ENDLOOP .
IF IT_HEAD-JC_T = '出口'.
LV_TITLE = SY-DATUM &&'-'&& IT_HEAD-BU_SORT2 &&'-'&& LV_TITLE &&'-'&&'报关出货联络'.
ELSE.
LV_TITLE = SY-DATUM &&'-'&& IT_HEAD-BU_SORT2 &&'-'&& LV_TITLE &&'-'&&'出货联络'.
ENDIF.
* APPEND wa_html TO html.
WA_HTML-LINE = '</tr></tbody>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = ' </table>'.
APPEND WA_HTML TO HTML.
WA_HTML-LINE = '</body></html>'.
APPEND WA_HTML TO HTML.
TRY.
CLEAR SEND_REQUEST.
SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
CLEAR DOCUMENT .
DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'HTM'
I_TEXT = HTML
I_LENGTH = CONLENGTHS
I_SUBJECT = LV_TITLE ).
* Add document to send request
CALL METHOD SEND_REQUEST->SET_DOCUMENT( DOCUMENT ).
LO_SENDER = CL_SAPUSER_BCS=>CREATE( SY-UNAME ).
SEND_REQUEST->SET_SENDER( LO_SENDER ).
*邮箱拆分
SPLIT IN_MAILS AT '|' INTO TABLE LT_MAILS.
LOOP AT LT_MAILS INTO EMAIL .
IF EMAIL IS INITIAL .
CONTINUE.
ENDIF.
* 收件人
LV_TO = EMAIL. "邮箱地址 例163@qq.com
LO_BCS_TO = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS( LV_TO ).
CALL METHOD SEND_REQUEST->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = LO_BCS_TO.
IF SY-SUBRC = 0 .
CALL METHOD SEND_REQUEST->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = LO_BCS_TO.
ENDIF.
ENDLOOP .
*读取PDF内容
FILENAME = IT_HEAD-PATH ."路径
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = FILENAME
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = LEN
TABLES
DATA_TAB = LV_PDF_CONTENT
EXCEPTIONS
OTHERS = 1.
* 添加PDF附件
LV_CONLENGTHS = LEN .
DOCUMENT->ADD_ATTACHMENT(
I_ATTACHMENT_TYPE = 'BIN'
I_ATTACHMENT_SIZE = LV_CONLENGTHS
I_ATTACHMENT_SUBJECT = '附件.PDF'
I_ATT_CONTENT_HEX = LV_PDF_CONTENT
).
"设置立即发送
SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
"与outbox关联
SEND_REQUEST->SEND_REQUEST->SET_LINK_TO_OUTBOX( 'X' ).
"发送邮件
CALL METHOD SEND_REQUEST->SEND(
EXPORTING
I_WITH_ERROR_SCREEN = 'X'
RECEIVING
RESULT = LV_RESULT ).
CATCH CX_BCS INTO BCS_EXCEPTION.
BCS_MESSAGE = BCS_EXCEPTION->GET_TEXT( ).
MESSAGE BCS_EXCEPTION TYPE 'E'.
EXIT.
ENDTRY.