SEND EMAIL SO_DOCUMENT_SEND_API1
FUNCTION zcrm_send_email_and_attach .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_TITLE) TYPE STRING OPTIONAL
*" VALUE(IV_HEADER) TYPE STRING OPTIONAL
*" VALUE(IV_BODY) TYPE STRING OPTIONAL
*" VALUE(IT_TABLE) TYPE ANY TABLE OPTIONAL
*" EXPORTING
*" VALUE(ES_ZCRMS_MESSAGE) TYPE ZCRMS_MESSAGE
*" TABLES
*" IT_RECLIST STRUCTURE SOMLRECI1 OPTIONAL
*"----------------------------------------------------------------------
***数据定义
FIELD-SYMBOLS:
<fs_comp> TYPE abap_compdescr,
<fs_value> TYPE any,
<fs_line> TYPE any,
<fs_col> TYPE any.
***fill_text
CLEAR:gs_solisti1.
REFRESH:gt_solisti1.
gs_solisti1 = '<head>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '</head>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<body>'.
APPEND gs_solisti1 TO gt_solisti1.
IF iv_header IS NOT INITIAL.
CONCATENATE '<h3>' iv_header '</h3>' INTO gs_solisti1.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
gs_solisti1 = '<table border="0">'.
APPEND gs_solisti1 TO gt_solisti1.
IF iv_body IS NOT INITIAL.
gs_solisti1 = '<tr>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = iv_body.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '</tr>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
gs_solisti1 = '<table border="1">'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<tr>'.
APPEND gs_solisti1 TO gt_solisti1. REFRESH:gt_dd03t,gt_ddfields.
CLEAR:gv_tablesize,gv_check.
IF it_table IS NOT INITIAL.
LOOP AT it_table ASSIGNING <gs_line>.
gr_cl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data( <gs_line> ).
*表头
IF gt_ddfields[] IS INITIAL.
CALL METHOD gr_cl_abap_structdescr->get_ddic_field_list
EXPORTING
p_langu = sy-langu
RECEIVING
p_field_list = gt_ddfields
EXCEPTIONS
not_found =
no_ddic_type =
OTHERS = .
IF sy-subrc <> .
* Implement suitable error handling here
ENDIF.
ENDIF.
IF gv_check = abap_false.
CLEAR:gs_solisti1.
LOOP AT gt_ddfields INTO gs_ddfields.
IF gs_solisti1 IS INITIAL.
CONCATENATE '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1.
ELSE.
CONCATENATE gs_solisti1 '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1.
ENDIF.
gv_check = abap_true.
gv_tablesize = gv_tablesize + gs_ddfields-leng.
ENDLOOP.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
*表内容
gs_solisti1 = '<tr>'.
LOOP AT gr_cl_abap_structdescr->components ASSIGNING <fs_comp>.
ASSIGN <fs_comp>-name TO <fs_col>.
ASSIGN COMPONENT <fs_col> OF STRUCTURE <gs_line> TO <gs_field>.
WRITE <gs_field> TO gv_field.
CONCATENATE gs_solisti1 '<td >' gv_field '</td> ' INTO gs_solisti1.
ENDLOOP.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '</tr>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDLOOP.
ENDIF.
gs_solisti1 = '</table>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '</table>'.
APPEND gs_solisti1 TO gt_solisti1.
***fill_object_details
CLEAR:gv_strlen.
DESCRIBE TABLE gt_solisti1 LINES gv_strlen.
READ TABLE gt_solisti1 INTO gs_solisti1 INDEX gv_strlen.
CLEAR:gs_sodocchgi1.
REFRESH:gt_sopcklsti1.
gs_sodocchgi1-obj_name = 'SAPCRM'.
gs_sodocchgi1-obj_descr = iv_title.
gs_sodocchgi1-sensitivty = 'F'.
gs_sodocchgi1-obj_langu = sy-langu.
gs_sodocchgi1-doc_size = ( gv_strlen - ) * + strlen( gs_solisti1 ).
CLEAR gs_sopcklsti1-transf_bin.
gs_sopcklsti1-head_start = .
gs_sopcklsti1-head_num = .
gs_sopcklsti1-body_start = .
gs_sopcklsti1-body_num = gv_strlen.
gs_sopcklsti1-doc_type = 'HTM'.
APPEND gs_sopcklsti1 TO gt_sopcklsti1.
****Define Attachment
****EXCEL附加抬头
CLEAR:gv_string,gv_lines,gv_number.
DESCRIBE TABLE gt_ddfields LINES gv_lines.
LOOP AT gt_ddfields INTO gs_ddfields.
gv_number = gv_number + .
IF gv_lines = gv_number.
CONCATENATE gv_string gs_ddfields-fieldtext gc_crlf INTO gv_string.
ELSE.
IF gv_string IS INITIAL.
CONCATENATE gs_ddfields-fieldtext gc_tab INTO gv_string.
ELSE.
CONCATENATE gv_string gs_ddfields-fieldtext gc_tab INTO gv_string.
ENDIF.
ENDIF.
ENDLOOP.
****EXCEL附加内容
LOOP AT it_table ASSIGNING <gs_line>.
gr_cl_abap_structdescr ?= cl_abap_typedescr=>describe_by_data( <gs_line> ).
CLEAR:gv_number.
LOOP AT gr_cl_abap_structdescr->components ASSIGNING <fs_comp>.
gv_number = gv_number + .
ASSIGN <fs_comp>-name TO <fs_col>.
ASSIGN COMPONENT <fs_col> OF STRUCTURE <gs_line> TO <gs_field>.
WRITE <gs_field> TO gv_field.
IF gv_lines = gv_number.
CONCATENATE gv_string gv_field gc_crlf INTO gv_string.
ELSE.
CONCATENATE gv_string gv_field gc_tab INTO gv_string.
ENDIF.
ENDLOOP.
ENDLOOP.
* Convert string to xstring type
* 'APPLICATION/MSEXCEL;charset=utf-16le'
CLEAR:gv_xstring.
CALL FUNCTION 'SCMS_STRING_TO_XSTRING'
EXPORTING
text = gv_string
mimetype = gc_mimetype
IMPORTING
buffer = gv_xstring
EXCEPTIONS
failed =
OTHERS = .
* Add the file header for utf-16le. .
IF sy-subrc = .
CONCATENATE cl_abap_char_utilities=>byte_order_mark_little
gv_xstring INTO gv_xstring IN BYTE MODE.
ENDIF. CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = gv_xstring
TABLES
binary_tab = gt_solix. ***计算附件大小分配空间*******************
DESCRIBE TABLE it_table LINES gv_lines.
gv_lines = gv_lines * .
gs_sopcklsti1-transf_bin = 'X'.
gs_sopcklsti1-head_start = .
gs_sopcklsti1-head_num = .
gs_sopcklsti1-body_start = .
gs_sopcklsti1-body_num = gv_lines + .
gs_sopcklsti1-doc_type = 'xls'.
gs_sopcklsti1-obj_name = 'ATTACHMENT'.
gs_sopcklsti1-obj_descr = iv_title.
gs_sopcklsti1-doc_size = gs_sopcklsti1-body_num * gv_tablesize * gv_lines .
*gv_tablesize
APPEND gs_sopcklsti1 TO gt_sopcklsti1. ***SO_DOCUMENT_SEND_API1邮件函数
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = gs_sodocchgi1
put_in_outbox = ''
commit_work = 'X'
TABLES
packing_list = gt_sopcklsti1
* OBJECT_HEADER =
* CONTENTS_BIN =
contents_txt = gt_solisti1
contents_hex = gt_solix
* OBJECT_PARA =
* OBJECT_PARB =
receivers = it_reclist
* ET_VSI_ERROR =
EXCEPTIONS
too_many_receivers =
document_not_sent =
document_type_not_exist =
operation_no_authorization =
parameter_error =
x_error =
enqueue_error =
OTHERS = .
IF sy-subrc = .
es_zcrms_message-type = gc_s.
es_zcrms_message-message = text-."'Message sent successfully!'.
* Implement suitable error handling here
"立即发送
SUBMIT rsconn01 WITH mode = 'INT'
* with output = 'X'
AND RETURN.
* MESSAGE s001(00) WITH 'Message sent successfully!'.
ELSE.
es_zcrms_message-type = gc_e.
es_zcrms_message-message = text-."'Message sent failure!'.
ENDIF.
ENDFUNCTION.
SEND EMAIL SO_DOCUMENT_SEND_API1的更多相关文章
- Try to write a script to send e-mail but failed
#-*-coding: utf-8 -*- '''使用Python去发送邮件但是不成功,运行后,等待一段时间, 返回[Errno 10060] A connection attempt failed ...
- python auto send email
/*************************************************************************** * python auto send emai ...
- Check SMTP Server Availability for ORA-29278 or ORA-29279 errors using UTL_SMTP to Send Email
Check SMTP Server Availability for ORA-29278 or ORA-29279 errors using UTL_SMTP to Send Email. (文档 I ...
- Send Email in Robot Framework Python Using Gmail
转载自:http://seleniummaster.com/sitecontent/index.php/selenium-robot-framework-menu/selenium-robot-fra ...
- 5 Ways to Send Email From Linux Command Line
https://tecadmin.net/ways-to-send-email-from-linux-command-line/ We all know the importance of email ...
- [476] Database Mail is not enabled for agent notifications. Cannot send e-mail to
配置完DB Mail后JOB的的通知邮件不能发送,日志报错476] Database Mail is not enabled for agent notifications. Cannot send ...
- Send email alert from Performance Monitor using PowerShell script (检测windows服务器的cpu 硬盘 服务等性能,发email的方法) -摘自网络
I have created an alert in Performance Monitor (Windows Server 2008 R2) that should be triggered whe ...
- Send Email
private string SendEmail(string mailTo, string body, ref int sendresult) { string errorEmailAddress ...
- .Net Core Send Email
1.安装Nuget包MailKit,引用命名空间. using MailKit.Net.Smtp; using MimeKit; 注意:引用MailKit对应最新版本 2.定义收发地址和标题 Mime ...
随机推荐
- 【Python】【有趣的模块】【requests】【一】HTTP头信息总结
[HTTP请求 == 请求行 + 消息报头 + 请求正文 ] 请求行:Method Request-URL HTTP-Version CRLF HTTP协议定义了许多与服务器交互的方法 ① PUT:请 ...
- mysql索引使用
原文:http://www.jianshu.com/p/2b541c028157 索引是快速搜索的关键.MySQL索引的建立对于MySQL的高效运行是很重要的.下面介绍几种常见的MySQL索引类型.在 ...
- 实现一个键对应多个值的字典(multidict)
一个字典就是一个键对应一个单值的映射.如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中, 比如列表或者集合里面.比如,你可以像下面这样构造这样的字典: d = { , , ], , ...
- Centos7下安装memcached
1. which memcached //如果已经安装,会有“/usr/bin/memcached”类似的输出 memcached -h //memcache帮助列表 php -m | grep me ...
- 远程连接MySQL MySQL的远程连接
在笔记本上安装了mysql, 想测试一下连接池对性能的影响,用了另一台PC来测试一段sql,出现以下错误: jdbc:mysql://10.201.11.128:3306/test Cannot cr ...
- Selenium IDE使用
基于版本Selenium IDE 3.2.2(注:该工具不常用,可以使用定位元素是否存在) Selenium IDE可以录制也很方便,当然录下来的经常回放不成功,需要自己调试就是了.它是只针对Web页 ...
- NYOJ 1277Decimal integer conversion (第九届河南省省赛)
XiaoMing likes mathematics, and heis just learning how to convert numbers between different bases , ...
- 《剑指offer》第四十七题(礼物的最大价值)
// 面试题47:礼物的最大价值 // 题目:在一个m×n的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值 // (价值大于0).你可以从棋盘的左上角开始拿格子里的礼物,并每次向左或 // 者向下 ...
- 第 8 章 容器网络 - 056 - macvlan 网络结构分析
macvlan 网络结构分析 macvlan 不依赖 Linux bridge,brctl show 可以确认没有创建新的 bridge. 查看一下容器 bbox1 的网络设备: 除了 lo,容器只有 ...
- 第 5 章 网络 - 032 - 学容器必须懂 bridge 网络
bridge 网络 Docker 安装时会创建一个 命名为 docker0 的 linux bridge.如果不指定--network,创建的容器默认都会挂到 docker0 上. 创建一个容器 一个 ...