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 ...
随机推荐
- 【AI】微软人工智能学习笔记(三)
微软R服务 01|开源的R R实际上是统计学的编程语言,主要作用是对数据挖掘,统计,分析,可视化,机器学习等. 02|微软R 03| HDInsight R Spark集群存储在azure blob ...
- Android四种布局方式
线性布局 <LinearLayout android:layout_width="match_parent" android:layout_height="wrap ...
- module.exports 与 exports
module.exports 与 exports 注意:1 对于要导出的属性,可以简单直接挂到 exports 对象上2 对于类,为了直接使导出的内容作为类的构造器可以让调用者使用 new 操作符创建 ...
- javascript知识体系
JAVASCRIPT 篇 0.基础语法 javascript基础语法包括:变量定义.数据类型.循环.选择.内置对象等. 数据类型有string,number,boolean,null,undefine ...
- 接口自动化python
!/usr/bin/env python coding=utf-8 Todo:接口自动化测试 Author:归根落叶 Blog:http://this.ispenn.com import json i ...
- centos7 下载安装tomcat9
需要Java环境 https://www.cnblogs.com/sea-stream/p/10404360.html 官网下载安装包 wget http://archive.apache.org/d ...
- Mongodb 创建管理员帐号与普通帐号
数据库操作权限 readAnyDatabase 任何数据库的只读权限 userAdminAnyDatabase 任何数据库的读写权限 userAdminAnyDatabase 任何数据库用户的管理权限 ...
- Qt5文件操作_保存成"UTF-8"格式
1. bool TdrawSvg::Save2File(char* _pcFullFileName) { // http://blog.csdn.net/u011314012/article/deta ...
- 从flask视角学习angular(一)整体对比
写在前面 前端框架完全不懂. 看着angular中文官网的英雄编辑器教程和核心知识,用偷懒的类比法,从flask django的角度 记录一下自己对angular的理解. 作为工科的武曲,自己的体会是 ...
- 加速cin的技巧
ios::sync_with_stdio(false); cin.tie(0); 把cin变得和scanf一样快.