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. Docker 开发概述

    This page lists resources for application developers using Docker. Develop new apps on Docker If you ...

  2. 浅谈循环中setTimeout执行顺序问题

    浅谈循环中setTimeout执行顺序问题 (下面有见解一二) 期望:开始输出一个0,然后每隔一秒依次输出1,2,3,4. for (var i = 0; i < 5; i++) { setTi ...

  3. 95% CI, 置信区间 Confidence Interval

    什么是置信区间 置信区间又称估计区间,是用来估计参数的取值范围的.常见的52%-64%,或8-12,就是置信区间(估计区间).   置信区间的概述 1.对于具有特定的发生概率的随机变量,其特定的价值区 ...

  4. 【Python】【有趣的模块】【Requests】无状态 & 无连接

    无状态:原来的Web是静态,后来换成动态的就需要保存一些上下文信息,session和cookie应运而生 无连接:原来为了请求结束后赶紧把资源让出去,后来发现每次请求中有相同的小请求时候再重复执行(而 ...

  5. RN 使用第三方组件之react-native-image-picker(拍照/从相册获取图片)

    首先给个github地址:https://github.com/react-community/react-native-image-picker  英文不行的看下面这个笔记 该插件可以同时给iOS和 ...

  6. Cross-site request forgery 跨站请求伪造

    Cross-site request forgery 跨站请求伪造 简称为CSRF或者XSRF,通过伪装来自受信任用户的请求来利用受信任的网站 攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来 ...

  7. in_array的三个参数

    needle 待搜索的值. haystack 待搜索的数组. strict 如果第三个参数 strict 的值为 TRUE 则 in_array() 函数还会检查 needle 的类型是否和 hays ...

  8. java之双缓冲的代码粘贴

    private Image offScreenImage = null; public void update(Graphics g) { if(offScreenImage == null) off ...

  9. JDBC的通用查询的方法

    PreparedStatement 1.Why 1):使用Statement需要进行拼写SQL语句,很辛苦,而且容易出错. 2):使用Statement可以发生SQL注入. SQl注入: SQL注入是 ...

  10. Golang的session管理器

    对于一些需要对用户进行管理(比如验证操作的权限等)的站点来说,session管理器是必不可少的.下面实现了一个线程安全的简单session管理类.生产环境:golang1.4.2+win7x64gol ...