function zint_send_email.
*"----------------------------------------------------------------------
*"*"區域介面:
*" IMPORTING
*" VALUE(KTYPE) TYPE SO_OBJ_TP DEFAULT 'RAW'
*" VALUE(SUBJECT) TYPE SO_OBJ_DES
*" VALUE(TEXT) TYPE SOLI_TAB
*" VALUE(SENDER_ADDRESS) TYPE AD_SMTPADR
*" VALUE(SENDER_NAME) TYPE AD_SMTPADR OPTIONAL
*" VALUE(ATTACHMENTS) TYPE RMPS_T_POST_CONTENT OPTIONAL
*" VALUE(IMMEDIATELY) TYPE BOOLEAN OPTIONAL
*" EXPORTING
*" VALUE(E_RESULT) TYPE BOOLEAN
*" TABLES
*" T_RECIPIENT STRUCTURE UPS_YS_HR_CPERSON
*" RETURN STRUCTURE BAPIRET2
*"----------------------------------------------------------------------

data:send_request type ref to cl_bcs,
document type ref to cl_document_bcs,
sender_id type ref to if_sender_bcs,
fail type ref to cx_bcs,
recipient type ref to if_recipient_bcs.

data:w_return like bapiret2,
w_rename type ad_smtpadr,
w_attachment like line of attachments,
w_attachment_subject type sood-objdes.

*BREAK CP900.
refresh return.
clear e_result.
e_result = 'X'.
if ktype is initial.
w_return-type = 'E'.
w_return-message = '未指定文件類別代碼'.
w_return-parameter = 'KTYPE'.
append w_return to return.
clear e_result.
endif.

if subject is initial.
w_return-type = 'E'.
w_return-message = '未指定郵件主題'.
w_return-parameter = 'SUBJECT'.
append w_return to return.
clear e_result.
endif.

if text[] is initial.
w_return-type = 'E'.
w_return-message = '未指定郵件內容'.
w_return-parameter = 'TEXT'.
append w_return to return.
clear e_result.
endif.

if sender_address is initial.
w_return-type = 'E'.
w_return-message = '未指定發送人郵件地址'.
w_return-parameter = 'SENDER_ADDRESS'.
append w_return to return.
clear e_result.
endif.
if t_recipient[] is initial.
w_return-type = 'E'.
w_return-message = '未指定接收人郵件地址'.
w_return-parameter = 'RECIPIENT'.
append w_return to return.
clear e_result.
endif.

clear w_return.

check e_result is not initial.

try.
* 第一步: 创建发送请求
send_request = cl_bcs=>create_persistent( ).

* 第二步: 创建整理发送内容
document = cl_document_bcs=>create_document(
i_type = ktype
i_text = text
i_subject = subject ).
* 增加附件內容
loop at attachments into w_attachment.
w_attachment_subject = w_attachment-subject.
document->add_attachment(
exporting
i_attachment_type = w_attachment-objtp
i_attachment_subject = w_attachment_subject
i_att_content_hex = w_attachment-cont_hex ).
endloop.
* 第三步: 添加邮件内容到发送请求
send_request->set_document( document ).

* 第四步:設置發送人出件地址
sender_id = cl_cam_address_bcs=>create_internet_address(
i_address_string = sender_address
i_address_name = sender_name ).
send_request->set_sender( sender_id ).

* 第五步: 接收者邮件地址转换
loop at t_recipient where cperson ne '99999999'.
w_rename = t_recipient-emnam.
recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = t_recipient-e_mail
i_address_name = w_rename ).
send_request->add_recipient( recipient ).
endloop.

loop at t_recipient where cperson eq '99999999'.
w_rename = t_recipient-emnam.
recipient = cl_cam_address_bcs=>create_internet_address(
i_address_string = t_recipient-e_mail
i_address_name = w_rename ).
* SEND_REQUEST->ADD_RECIPIENT( RECIPIENT ).
call method send_request->add_recipient
exporting
i_recipient = recipient
i_copy = 'X'.
endloop.

* 第六步,設置狀態屬性
send_request->set_status_attributes(
i_requested_status = 'E'
i_status_mail = 'E' ).
send_request->set_send_immediately( immediately ).

* 第七步: 正式发送并提交作业
send_request->send( i_with_error_screen = 'X' ).
commit work and wait.
catch cx_bcs into fail.
e_result = ''.
w_return-type = 'E'.
w_return-message = fail->get_text( ).
append w_return to return.
clear w_return.
endtry.

endfunction.

ABAP 邮件的更多相关文章

  1. ABAP发邮件函数

    步骤: 一.检查输入参数, (1)未指定文件類別代碼,(2)未指定郵件主題, (3)未指定郵件內容, (4)未指定發送人郵件地址, (5)未指定接收人郵件地址, 二.调用发送功能, (1)创建发送请求 ...

  2. ABAP 发邮件(三)

    [转自http://blog.sina.com.cn/s/blog_7c7b16000101bnxk.html]SAP ABAP 发邮件方法三(OO) *&------------------ ...

  3. 【ABAP系列】SAP 如何用ABAP实现自动发送外部邮件

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 如何用ABAP实现自动发 ...

  4. 【ABAP系列】SAP ABAP实现发送外部邮件(添加附件)功能

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP实现发送外部邮件(添 ...

  5. 【ABAP系列】SAP ABAP模块-任意report作为附件以邮件形式发送

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-任意rep ...

  6. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. ABAP常用函数集锦

    函数名 描述 SD_VBAP_READ_WITH_VBELN 根据销售订单读取表vbap中的信息EDIT_LINES 把READ_TEXT返回的LINES中的行按照TDFORMAT=“*”重新组织VI ...

  8. ABAP 常用FUNCTION集锦(转)

    此文章从网上抄摘,目的用于自己记录 DYNP_VALUES_READ – 读取SCREEN字段的值,也可以用来读取报表SELECTION SCREEN. DYNP_VALUES_UPDATE – 更新 ...

  9. abap 常用 function

    ABAP常用函数总结  alv .smartform. excel .text.邮件 .远程访问,FTP服务器...  **********常用功能function REUSE_ALV_GRID_DI ...

随机推荐

  1. java基础之switch

    switch 语句由一个控制表达式和多个case标签组成. switch 控制表达式支持的类型有byte.short.char.int.enum(Java 5).String(Java 7). swi ...

  2. JavaScript中离线应用和客户端存储(cookies、sessionStorage、localStorage)

    一.离线应用 所谓离线web应用,就是在设备不能上网的情况下仍然可以运行的应用. 开发离线web应用需要几个步骤:首先,确保应用知道设备是否能上网,以便下一步执行正确的操作:然后,应用还必须能访问一定 ...

  3. sql 四舍五入保留两位小数

    select convert(decimal(18, 2), 362315 * 1.0 / 10000) 1. ROUND(该函数,只是负责四舍五入到两位小数,但是不负责截断 只留两位小数,例如下例: ...

  4. Flask设计带认证token的RESTful API接口[翻译]

    上一篇文章, 使用python的Flask实现一个RESTful API服务器端  简单地演示了Flask实的现的api服务器,里面提到了因为无状态的原则,没有session cookies,如果访问 ...

  5. js清除非数字输入

    function clearNoNum(obj) { obj.value = obj.value.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符 ...

  6. irules事件和命令

  7. hdu 3879 最大权闭合图(裸题)

    /* 裸的最大权闭合图 解:参见胡波涛的<最小割模型在信息学竞赛中的应用 #include<stdio.h> #include<string.h> #include< ...

  8. vue验证码点击更新

    vue验证码点击更新 不说啥,直接贴代码 html: <img class="captcha" @click="editCaptcha" :src=&qu ...

  9. 【BZOJ3295】动态逆序对(BIT套动态加点线段树)

    题意:对于序列A,它的逆序对数定义为满足i<j,且Ai>Aj的数对(i,j)的个数. 给1到n的一个排列,按照某种顺序依次删除m个元素,你的任务是在每次删除一个元素之前统计整个序列的逆序对 ...

  10. usort 使用(转载)

    private function arrCmp($a,$b){ if($a['day_time'] == $b['day_time']){  return 0; } return($a['day_ti ...