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的更多相关文章

  1. Try to write a script to send e-mail but failed

    #-*-coding: utf-8 -*- '''使用Python去发送邮件但是不成功,运行后,等待一段时间, 返回[Errno 10060] A connection attempt failed ...

  2. python auto send email

    /*************************************************************************** * python auto send emai ...

  3. 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 ...

  4. Send Email in Robot Framework Python Using Gmail

    转载自:http://seleniummaster.com/sitecontent/index.php/selenium-robot-framework-menu/selenium-robot-fra ...

  5. 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 ...

  6. [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 ...

  7. 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 ...

  8. Send Email

    private string SendEmail(string mailTo, string body, ref int sendresult) { string errorEmailAddress ...

  9. .Net Core Send Email

    1.安装Nuget包MailKit,引用命名空间. using MailKit.Net.Smtp; using MimeKit; 注意:引用MailKit对应最新版本 2.定义收发地址和标题 Mime ...

随机推荐

  1. Introducing GitFlow

    Introducing GitFlow What Is GitFlow? GitFlow is a branching model for Git, created by Vincent Driess ...

  2. PowerDesigner使用方法入门学习

    [转载:https://www.cnblogs.com/biehongli/p/6025954.html] 1:入门级使用PowerDesigner软件创建数据库(直接上图怎么创建,其他的概念知识可自 ...

  3. 并发编程之IO模型

    一.阻塞IO(blocking IO) from concurrent.futures import ThreadPoolExecutor import socket server = socket. ...

  4. HTML的Doctype

    1. <!DOCTYPE> 声明位于文档中的最前面,处于 <html> 标签之前.告知浏览器的解析器,用什么文档类型 规范来解析这个文档. 2. 严格模式的排版和 JS 运作模 ...

  5. "ProgrammerHome"项目笔记

    系统目的: 1.技术练习:把平时不用的,重要技术栈,在此项目中打磨(java.python.算法.系统构架) 2.新技术(工具)应用:有些平时想做,想实现的技术,可以在这里实现.而且以微服务的方式,轻 ...

  6. jvm到底是什么?有什么作用?工作机制如何?

    1.jvm定义 JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能.JVM有自己完善的硬件结构,例如处理器.堆栈和寄存器等,还具有相应的指令系统. 2.jvm作 ...

  7. 三: 爬虫之selenium模块

    一 selenium模块 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. selenium最初是一个自动化测试工具, ...

  8. centos7安装tomcat8 新手入门 图文教程

    系统环境 操作系统:64位CentOS Linux release 7.2.1511 (Core) JDK版本:1.8.0_121 下载tomcat8压缩包 访问官网:http://tomcat.ap ...

  9. Java SE 枚举的基本用法

    出于对自己基础的稳打,期末考试后依旧对SE部分进行复习 枚举的基本用法 public enum Season { SPRING,SUMMER,AUTUMN,WINTER } public class ...

  10. 将本地项目上传到gitlab下

    转载自: https://blog.csdn.net/litianxiang_kaola/article/details/74075151 1.安装git    https://git-scm.com ...