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 ...
随机推荐
- java 偏向锁,轻量锁,重量级锁
synchronized的执行过程: 1. 检测Mark Word里面是不是当前线程的ID,如果是,表示当前线程处于偏向锁 2. 如果不是,则使用CAS将当前线程的ID替换Mard Word,如果成功 ...
- python学习之re库
正则表达式库re是非常重要的一个库. 首先正则表达式有两种表示类型,一种是raw string类型(原生字符串类型),也就是我们经常看到的r' '的写法,另一种是不带r的写法,称为string类型. ...
- 蚂蚁金服首席数据科学家漆远:AI技术开放,与业界融合共创
小蚂蚁说: 11月8日,在第五届世界互联网大会-<人工智能:融合发展新机遇>论坛上,蚂蚁金服副总裁.首席数据科学家漆远认为AI具有控制风险.降本增效和提升用户体验三大作用. 11月8日,第 ...
- 在JAVA中返回类型使用泛型T和Object有什么区别?
最近在读jackson源码的时候发现有段代码返回类型写的是<T> T,而我自己一般写的是Object.上网搜了下这个语法糖,在stackoverflow上找到一个比较简单易懂的解释,搬运过 ...
- Mybatis中sql语句中的in查询,判断null和size为0的情况
不严谨的写法,可能会报错:in (),这种情况不符合SQL的语法,导致程序报错. 如果简单只做非空判断,这样也有可能会有问题:本来in一个空列表,应该是没有数据才对,却变成了获取全部数据! 所以一个比 ...
- 解决UnicodeEncodeError: 'gbk' codec can't encode character u'\u25aa' in position 344 : illegal multiby
Python拿来做爬虫的确很不错,但是字符串的编码的确是稍不留神就是一个坑,GBK编码和Unicode编码的转化出现问题也是很多的,今天在解析网页数据的时候出现上述错误,解决方案如下: one_str ...
- python redis 操作
1.String 操作 redis中的String在在内存中按照一个name对应一个value来存储 set() #在Redis中设置值,默认不存在则创建,存在则修改 r.set('name', 'z ...
- SHA-256 加密原理
网络中传输敏感信息的时候通常会对字符串做加密解密处理 SHA-256 加密原理
- oracle中sql优化
问题描述:刚开始做项目的时候没啥感觉,只用能出来结果,sql随便写,但是后来用户的数据量达到几万条是,在访问系统,发现很多功能加载都很慢,有的页面一个简单的关联 查询居然要花费30多秒,实在是不能忍, ...
- tomcat热部署.class
本人是在维护公司系统时遇到的问题,由于公司的系统是部署到客户服务器上,而系统中存在的问题又比较多,需要经常维护.如果每次修改完class文件后都需要去重启服务器, 那会给用户的使用造成不便,所以需要使 ...