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 ...
随机推荐
- PTA 输出全排列(20 分)
7-2 输出全排列(20 分) 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出正整数n(<10). ...
- HDU 5441 Travel(并查集+统计节点个数)
http://acm.hdu.edu.cn/showproblem.php?pid=5441 题意:给出一个图,每条边有一个距离,现在有多个询问,每个询问有一个距离值d,对于每一个询问,计算出有多少点 ...
- python3 session cookie
session是保存在服务器中的,而cookies是保存在客户端中的.服务器通过session id来跟踪客户,而对于客户端而言,session id是保存在cookies中的,所以只要把cookie ...
- 给 layui upload 带每个文件的进度条, .net 后台代码
1.upload.js 扩展 功能利用ajax的xhr属性实现该功能修改过modules中的upload.js文件功能具体实现:在js文件中添加监听函数 //创建监听函数 var xhrOnProgr ...
- _itemmod_currency_like
设置物品掉落模式为货币类型功能:掉落的时候 所有人都可以拿,就像公正徽章,每个人都会获得一个.小技巧:配合DBC使用,可以将该道具其显示在角色栏的货币中.1.转存item_template,在item ...
- Ubuntu18.04的网络配置
网卡与DNS配置 1)打开命令窗口(右键单机桌面选择Open Terminal或者用快捷键Ctrl+Alt+T打开终端),输入ip a查看自己的网卡编号 2)输入命令sudo vim /etc/net ...
- Eclipse调试DEBUG时快速查看某个变量的值的快捷键、快速跳转到某行的快捷键
Eclipse调试DEBUG时快速查看某个变量的值的快捷键 Ctrl + Shift + i
- SpringBoot整合Servlet的两种方式
SpringBoot整合Servlet有两种方式: 1.通过注解扫描完成Servlet组件的注册: 2.通过方法完成Servlet组件的注册: 现在简单记录一下两种方式的实现 1.通过注解扫描完成Se ...
- MySQL学习(十六)
MySQL高级部分 触发器 触发器是一类特殊的事务,可以监视某种数据操作(insert/update/delete),并触发相关的操作(insert/update/delete) 触发器创建语法之4要 ...
- 解决ios下的微信页面背景音乐无法自动播放问题
在做各种html5场景页面的时候,插入背景音乐是一个很普遍的需求,我们都知道,ios下的safari是无法自动播放音乐的,以至于现在行程一种认知,ios是没有办法自动播放媒体资源的,这个认知其实是错误 ...