FUNCTION zcrm_send_email.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" VALUE(IV_SUBJECT) TYPE SO_OBJ_DES OPTIONAL
*" VALUE(IV_SENDER_EMAL) TYPE ADR6-SMTP_ADDR OPTIONAL
*" VALUE(IV_SENDER_NAME) TYPE ADR6-SMTP_ADDR OPTIONAL
*" VALUE(IV_COMMON_BODY1) TYPE FLAG DEFAULT ABAP_TRUE
*" VALUE(IV_COMMON_BODY2) TYPE FLAG DEFAULT ABAP_TRUE
*" VALUE(IV_EXCEL_AS_BODY) TYPE FLAG OPTIONAL
*" VALUE(IV_EXCEL) TYPE FLAG OPTIONAL
*" VALUE(IV_PDF) TYPE FLAG OPTIONAL
*" VALUE(IT_TABLE) TYPE ANY TABLE OPTIONAL
*" TABLES
*" IT_BODYS STRUCTURE SOLISTI1 OPTIONAL
*" IT_RECIPIENTS_EMAIL STRUCTURE BAPIADSMTP OPTIONAL
*" IT_CC_RECIPIENTS_EMAIL STRUCTURE BAPIADSMTP OPTIONAL
*"----------------------------------------------------------------------
FIELD-SYMBOLS:
<fs_comp> TYPE abap_compdescr,
<fs_value> TYPE any,
<fs_line> TYPE any,
<fs_col> TYPE any.
DATA:
gs_bapiadsmtp TYPE bapiadsmtp,
gr_cx_send_req_bcs TYPE REF TO cx_send_req_bcs,
gv_os_boolean TYPE os_boolean,
gr_send_request TYPE REF TO cl_bcs,
gr_document TYPE REF TO cl_document_bcs,
gr_recipient TYPE REF TO if_recipient_bcs,
gr_bcs_exception TYPE REF TO cx_bcs,
gr_sender TYPE REF TO if_sender_bcs. TRY.
* create persistent send request ------------------------
FREE gr_send_request.
gr_send_request = cl_bcs=>create_persistent( ).
* Start program frm_set_mail_document-Begin
REFRESH:gt_solisti1.
*IV_COMMON_BODY1-Begin
IF iv_common_body1 = abap_true.
gs_solisti1 = '<html><body>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
*IV_COMMON_BODY1-End *IT_BODYS
IF it_bodys[] IS NOT INITIAL.
APPEND LINES OF it_bodys TO gt_solisti1.
ENDIF.
*IT_TABLE 如果非空的话获取共用抬头数据
REFRESH:gt_ddfields.
IF it_table IS NOT INITIAL.
LOOP AT it_table ASSIGNING <gs_line> .
IF gt_ddfields[] IS INITIAL.
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.
ENDIF.
ENDLOOP.
ENDIF.
*IV_EXCEL_AS_BODY
IF iv_excel_as_body = abap_true.
IF it_table IS NOT INITIAL.
gs_solisti1 = '<table border="1">'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<tr>'.
APPEND gs_solisti1 TO gt_solisti1.
* Excel抬头
CLEAR:gs_solisti1.
LOOP AT gt_ddfields INTO gs_ddfields.
CLEAR:gs_solisti1.
* 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.
CONCATENATE '<td>' gs_ddfields-fieldtext '</td>' INTO gs_solisti1.
APPEND gs_solisti1 TO gt_solisti1.
ENDLOOP.
* Excel 数据
LOOP AT it_table ASSIGNING <gs_line>.
*表内容
gs_solisti1 = '<tr>'.
APPEND gs_solisti1 TO gt_solisti1.
LOOP AT gr_cl_abap_structdescr->components ASSIGNING <fs_comp>.
CLEAR:gs_solisti1.
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 '<td >' gv_field '</td> ' INTO gs_solisti1.
APPEND gs_solisti1 TO gt_solisti1.
ENDLOOP.
gs_solisti1 = '</tr>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDLOOP.
gs_solisti1 = '</table>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
ENDIF.
*IV_COMMON_BODY2-Begin
IF iv_common_body2 = abap_true.
gs_solisti1 = '<br>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<br>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = 'Hisense Service'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<br>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '0860 447 3673'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '<br>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = 'service@hisense.co.za'.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF.
*IV_COMMON_BODY2-End
IF iv_common_body1 = abap_true.
gs_solisti1 = '<br>'.
APPEND gs_solisti1 TO gt_solisti1.
gs_solisti1 = '</body></html>'.
APPEND gs_solisti1 TO gt_solisti1.
ENDIF. gr_document = cl_document_bcs=>create_document(
i_type = 'HTM'
i_text = gt_solisti1
i_subject = iv_subject ). * Start program frm_set_mail_document-End * Define Attachment frm_set_mail_attachment-Begin
IF iv_excel = abap_true.
****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. *Create attachment notification
gr_document->add_attachment(
i_attachment_type = 'XLS'""XXL XLS
i_attachment_subject = iv_subject
i_att_content_hex = gt_solix ).
ENDIF. *add document object to send request
TRY.
gr_send_request->set_document( gr_document ).
CATCH cx_send_req_bcs INTO gr_cx_send_req_bcs.
* MESSAGE i605(sbcoms) .
* pv_subrc = 4.
ENDTRY.
* Define Attachment frm_set_mail_attachment-End * Sender addess frm_set_sender-Begin
IF iv_sender_emal IS INITIAL.
iv_sender_emal = iv_sender_name = 'service@hisense.co.za'.
ENDIF.
CALL METHOD cl_cam_address_bcs=>create_internet_address
EXPORTING
i_address_string = iv_sender_emal "'europe@hisense.com'
i_address_name = iv_sender_name "'europe@hisense.com'
RECEIVING
result = gr_sender.
CALL METHOD gr_send_request->set_sender
EXPORTING
i_sender = gr_sender. * Sender addess frm_set_sender-End
* create receiver list frm_set_receiver_list-Begin
***收件人处理
LOOP AT it_recipients_email INTO gs_bapiadsmtp.
IF sy-uname = zcl_crm_attributes=>gc_chenguoguang.
gs_bapiadsmtp-e_mail = 'airwolf_chen@163.com'.
ENDIF.
FREE gr_recipient.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gs_bapiadsmtp-e_mail ).
gr_send_request->add_recipient( gr_recipient ).
ENDLOOP.
***抄送人处理
LOOP AT it_cc_recipients_email INTO gs_bapiadsmtp.
IF sy-uname = zcl_crm_attributes=>gc_chenguoguang.
gs_bapiadsmtp-e_mail = '744793323@qq.com'.
ENDIF.
FREE gr_recipient.
gr_recipient = cl_cam_address_bcs=>create_internet_address( gs_bapiadsmtp-e_mail ).
gr_send_request->add_recipient( EXPORTING i_copy = 'X' i_recipient = gr_recipient ).
ENDLOOP.
* create receiver list frm_set_receiver_list-End
* send mail
gr_send_request->set_send_immediately( 'X' ).
gv_os_boolean = gr_send_request->send( i_with_error_screen = '' ).
COMMIT WORK AND WAIT.
CATCH cx_bcs INTO gr_bcs_exception.
* MESSAGE i865(so) WITH lo_bcs_exception->error_type.
ENDTRY. ENDFUNCTION.

BCS SET EMAIL的更多相关文章

  1. 如何在网页中提取Email地址

    开博好久了,今天第一次发表技术文档,之前总是将一些好的事例保存在电脑,时间久了找起来也很麻烦,所以还是放在博客里进行归类比较方便,这样也能将自己在学习过程中的一些心得体会分享给大家,也能给需要的人一点 ...

  2. 系统中没有邮件客户端设置autoLink=email会挂掉的问题

    TextView的autoLink属性为我们提供了很大的便利性,当文本中有网址,邮箱或电话的时候可以让我们方便地执行打电话发邮件等动作,不过也有一些问题,比如说设置autoLink包含email属性, ...

  3. Email系列(QQ邮箱 + 含附件的邮箱案例 + 项目实战)

    平台之大势何人能挡? 带着你的Net飞奔吧! http://www.cnblogs.com/dunitian/p/4822808.html 邮箱系列:https://github.com/duniti ...

  4. 应用层之E-mail服务及javaMail邮件发送的知识总结

    关于Email服务你需要知道的知识点: 概述: 今天来介绍一下应用层的电子邮件服务,我们每天几乎都在用,电子邮件(email)服务也是一种基于C/S模式的服务,它采用的是一种"存储-转发&q ...

  5. 2.C#WinForm基础Email分析器

    功能:输入Email地址,输出用户名和域名 string[] String.split(params char[] separator)(+5重载)) 返回的字符串数组包含此实例的字符串(由指定Uni ...

  6. BCS datetime 时间区间问题

    BCS 整合sql表时发现以下问题: datetime字段在列表中带了时区,比如插入12-6号的数据,在sql中显示的是12-5 date类型字段无法正确识别,插入成功但报错 LobSystem (外 ...

  7. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  8. java发送 email

    public class EmailUtils implements IAction { private static Logger logger = Logger.getLogger(EmailUt ...

  9. 使用QQ邮箱发送email(Python)

    实际开发过程中使用到邮箱的概率很高,那么如何借助python使用qq邮箱发送邮件呢? 代码很简单,短短几行代码就可以实现这个功能. 使用到的模块有smtplib和email这个两个模块,关于这两个模块 ...

随机推荐

  1. js精度误差

    之前虽然有看到过 js 精度相关的文章.但也都没有“印象深刻” ,但是今天"有幸"遇到了. 做一个项目,进行页面调试的时候, 当数量增加到3时总价格变得好长好长 立马在控制台验证了 ...

  2. 软件开发架构、网络基础知识、osi七层模型

    一.软件开发的架构 涉及到两个程序之间通讯的应用大致可以分为两种: 第一种是应用类:qq.微信.网盘.优酷这一类是属于需要安装的桌面应用 第二种是web类:比如百度.知乎.博客园等使用浏览器访问就可以 ...

  3. HDU 4318 Power transmission(最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=4318 题意: 给出运输路线,每条路线运输时都会损失一定百分比的量,给定起点.终点和初始运输量,问最后到达终点时最 ...

  4. OpenLayers中的球面墨卡托投影

    最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...

  5. mybatis(错误一) 项目启动时报“Result Maps collection already contains value forxxx”的解决方案

    Result Maps collection already contains value for xyx.dsw.dao.mapper.admin.quotationwish.TempTestTab ...

  6. progressBar显示百分比

    this.lab_AllFiles.Text = progressBarAllFile.Value * 100 / progressBarAllFile.Maximum + "%" ...

  7. 转 代码修改buildoption

    using System;using System.IO;using UnityEditor;using UnityEngine; public class BuildPlayer : Scripta ...

  8. python字符串用法

    一,数据类型的转换 1常用的数据类型有int,str,bool三种; int是整型:一般的操作是查找数据的二进制长度bit_length() 一般数据有: 1)二进制:逢二进一 2)十进制,(0-9) ...

  9. Oracel中的NVL函数

    Oracle中函数以前介绍的字符串处理,日期函数,数学函数,以及转换函数等等,还有一类函数是通用函数.主要有:NVL,NVL2,NULLIF,COALESCE,这几个函数用在各个类型上都可以. 下面简 ...

  10. 1.1.1 vue-cli脚手架工具

    参考文档: windows下npm安装vue(以下教程大部分都是参考这篇博客的,按照着这篇博客自己实现了一遍) npm安装vue-cli脚手架 一.前言 npm:nodejs下的包管理器,安装好nod ...