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. DownAlbum:Chrome的pinterest批量下载插件

    一.DownAlbum安装 二.DownAlbum使用 点击DownAlbum图标. 选择Normal. 会出现一个加载的弹窗,等待片刻会打开一个新的窗口. 按Ctrl+S,即可保存相册所有图片. 图 ...

  2. 【C#】非常重要的泛型

    泛型 为什么要有泛型, 在没有泛型之前, 什么东西充当了泛型的作用? 在泛型出现之前, 代码中会有很多需要强制转换的地方. 比如 int a = (int) object, 对于这样类似的代码, 编译 ...

  3. Linux 下终端 C 语言控制光标的技巧

    // 清除屏幕 #define CLEAR() printf("\033[2J") // 上移光标 #define MOVEUP(x) printf("\033[%dA& ...

  4. Ubuntu16.04更新记

    大概一周前因为不可抗因素,我再次安装了Ubuntu16.04LTS 对于之前发誓不想再用Ubuntu的我,我只想说一句:真香 写一点我现在Ubuntu的配置,方面自己以后查看,也方便如果有相同需求的人 ...

  5. MInio python

    # Install Minio library. # $ pip install minio # # Import Minio library. from minio import Minio # I ...

  6. Codeforces Round #420 (Div. 2) E. Okabe and El Psy Kongroo 矩阵快速幂优化dp

    E. Okabe and El Psy Kongroo time limit per test 2 seconds memory limit per test 256 megabytes input ...

  7. JAVA9新特性——JShell使用笔记

    前言:JShell是java 9的新特性之一,由于在之前学校java8的lambda表达式的时候,就希望有这么一个可以交互的界面来快速响应编写的代码.刚好java9出来了,就对它把玩起来了... 内容 ...

  8. selenium 指定滚动到某个元素

    from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from se ...

  9. Python day3_string的常见方法2_笔记

    1.分割字符串的4个方法partition,rpartition,split,rsplit(区别,partition是仅分割一个,split分割全部,r是从右边开始分割,split可以传参数,自定义分 ...

  10. python web.py操作mysql数据库,实现对数据库的增删改查操作

    使用web.py框架,实现对mysql数据库的增删改查操作: 该示例代码中连接的是本地数据库testdb,user表,表结构比较简单,只有两个字段:mobile和passwd,类型均为字符型 实际应用 ...