1,获取操作员姓名

SELECT SINGLE ADRP~NAME_TEXT
INTO GS_OUTPUT-UNAMT
FROM ADRP
INNER JOIN USR21
ON ADRP~PERSNUMBER = USR21~PERSNUMBER
WHERE USR21~BNAME = GS_OUTPUT-UNAME.

2,获取操作员邮箱地址

SELECT SINGLE ADR6~SMTP_ADDR
INTO GS_OUTPUT-EMAIL
FROM ADR6
INNER JOIN USR21
ON ADR6~PERSNUMBER = USR21~PERSNUMBER
WHERE USR21~BNAME = GS_OUTPUT-UNAME.

3,创建邮件FORM

FORM FRM_MAIL_BUILD .

  DATA: LV_EMAIL        TYPE AD_SMTPADR,
LV_UNAMT TYPE AD_NAMTEXT,
LV_SUBJECT TYPE SO_OBJ_DES,
LV_BODY_LIN TYPE W3HTML,
LV_BODY_TEXT TYPE TABLE OF W3HTML. LV_SUBJECT = '邮件主题'. LOOP AT GT_OUTPUT INTO GS_OUTPUT.
CLEAR: LV_EMAIL, LV_UNAMT.
LV_EMAIL = GS_OUTPUT-EMAIL.
LV_UNAMT = GS_OUTPUT-UNAMT.
AT NEW UNAME.
CLEAR LV_BODY_LIN.
REFRESH LV_BODY_TEXT.
CONCATENATE LV_BODY_LIN
'<html><body><table width=100% border=1 cellpadding=0
cellspacing=0>'
INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT. CLEAR LV_BODY_LIN.
CONCATENATE LV_BODY_LIN '<tr>DEAR:' LV_UNAMT '</tr><br>'
INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT. CLEAR LV_BODY_LIN.
CONCATENATE LV_BODY_LIN
'<tr>请注意如下人员:' '</tr>'
INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT. CLEAR LV_BODY_LIN.
CONCATENATE '<tr><td align=center height=10>' '人员编号'
'</td><td align=center height=10>' '姓名'
'</td><td align=center height=10>' '合同号'
'</td><td align=center height=10>' '单位名称'
'</td><td align=center height=10>' '操作人'
'</td></tr>'
INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT.
ENDAT.
CLEAR LV_BODY_LIN.
CONCATENATE '<tr><td align=center height=10>' GS_OUTPUT-PERNR
'</td><td align=center height=10>' GS_OUTPUT-ZNAME
'</td><td align=center height=10>' GS_OUTPUT-ZOBJID
'</td><td align=center height=10>' GS_OUTPUT-ZSTEXT
'</td><td align=center height=10>' GS_OUTPUT-UNAMT
'</td></tr>'
INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT.
AT END OF UNAME.
CLEAR LV_BODY_LIN.
CONCATENATE LV_BODY_LIN '</table></body></html>' INTO LV_BODY_LIN.
APPEND LV_BODY_LIN TO LV_BODY_TEXT.
* 调用发送邮件FORM
PERFORM FRM_MAIL_SENT USING LV_EMAIL LV_SUBJECT LV_BODY_TEXT.
ENDAT.
ENDLOOP.
ENDFORM.

4,发送邮件FORM

FORM FRM_MAIL_SENT USING P_EMAIL P_SUBJECT P_BODY_TEXT.
DATA: LV_EMAIL TYPE AD_SMTPADR,
LV_DOCUMENT TYPE REF TO CL_DOCUMENT_BCS,
LV_SEND_REQUEST TYPE REF TO CL_BCS,
LV_CL_REQ_BCS TYPE REF TO CL_SEND_REQUEST_BCS,
LV_RECIPIENT TYPE REF TO IF_RECIPIENT_BCS,
BCS_EXCEPTION TYPE REF TO CX_BCS. TRY.
*创建发送请求
LV_SEND_REQUEST = CL_BCS=>CREATE_PERSISTENT( ).
*创建发送内容
LV_DOCUMENT = CL_DOCUMENT_BCS=>CREATE_DOCUMENT(
I_TYPE = 'HTM'
I_TEXT = P_BODY_TEXT
I_SUBJECT = P_SUBJECT ).
*添加发送内容到发送请求
LV_SEND_REQUEST->SET_DOCUMENT( LV_DOCUMENT ).
*邮件地址
*1、清空
CALL METHOD CL_SEND_REQUEST_BCS=>CREATE
RECEIVING
RESULT = LV_CL_REQ_BCS.
CALL METHOD LV_CL_REQ_BCS->REMOVE_RECIPIENTS.
*2、转换
TRANSLATE P_EMAIL TO LOWER CASE.
LV_EMAIL = P_EMAIL.
LV_RECIPIENT = CL_CAM_ADDRESS_BCS=>CREATE_INTERNET_ADDRESS(
LV_EMAIL ).
*3、添加
CALL METHOD LV_SEND_REQUEST->ADD_RECIPIENT
EXPORTING
I_RECIPIENT = LV_RECIPIENT
I_EXPRESS = 'X'.
* 设置立即发送标志
CALL METHOD LV_SEND_REQUEST->SET_STATUS_ATTRIBUTES
EXPORTING
I_REQUESTED_STATUS = 'E'
I_STATUS_MAIL = 'E'.
LV_SEND_REQUEST->SET_SEND_IMMEDIATELY( 'X' ).
* 发送
CALL METHOD LV_SEND_REQUEST->SEND.
COMMIT WORK AND WAIT .
SUBMIT RSCONN01 WITH MODE = 'INT' AND RETURN. * CATCH CX_SEND_REQ_BCS .
CATCH CX_BCS INTO BCS_EXCEPTION.
MESSAGE S865(SO) DISPLAY LIKE 'E' WITH BCS_EXCEPTION->ERROR_TYPE .
ENDTRY.
ENDFORM.

ABAP 根据操作员分组发送邮件的更多相关文章

  1. 2019.12.05【ABAP随笔】 分组循环(LOOP AT Group) / REDUCE

    ABAP 7.40新语法 LOOP AT Group 和 REDUCE *LOOP AT itab result [cond] GROUP BY key ( key1 = dobj1 key2 = d ...

  2. [SAP ABAP开发技术总结]将文件存储到数据库表中,并可发送邮件

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

  3. ABAP技术总结

      SAP ——ABAP/4 技术总结 V3.0 2014-10-14 --江正军 1. 1.1. 1.1.1. 1.2. 1.3. 1.4. 1.5. 1.6. 1.7. 1.7.1. 1.7.2. ...

  4. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  5. ABAP单元测试最佳实践

    本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...

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

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

  7. SQL Server代理(3/12):代理警报和操作员

    SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 如我们在这个系列的文章里所见,SQL Se ...

  8. 《BI那点儿事》数据流转换——模糊分组转换

    在模糊查找中我们提到脏数据是怎样进入到表中的事情,主要还是由于一些“Lazy-add”造成的.这种情况我们的肉眼很容易被欺骗,看上去是同一个单词,其实就差那么一个字母,变成了两个不同的单词.一个简单的 ...

  9. SQL Server 2012 使用警报调度数据库作业通知操作员

    如果想让数据库满足某种条件时,触动警报,然后执行一系列作业,并通知管理员,则需要配置警报 比如,当数据库日志达到一定大小如10M时触动警报,执行以下3个作业步骤:备份日志.收缩日志文件到2M.完备数据 ...

随机推荐

  1. Silverlight管理系统源代码(SilverlightOAFlame开发框架主要提供二次开发)

    Silverlight OA系统简介 系统功能简介 l 程序界面介绍: 左侧为主菜单,主菜单可以展开和收起,主菜单下面的所有模块都可以在数据库中扩展增加,模块的权限和用户角色挂钩,可以在数据库中创建多 ...

  2. linux 下的clock_gettime() 获取精确时间函数

    #include <time.h> int clock_gettime(clockid_t clk_id, struct timespec* tp); clock_gettime() 函数 ...

  3. Quartus II中FPGA的管脚分配保存方法

    一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择“Assignments ->Pin”标签(或者点击按 ...

  4. pH 值与曝气对硝化细菌硝化作用的影响

    http://wenku.baidu.com/view/c2723434eefdc8d376ee325d.html 摘要: 目的 探讨硝化细菌最佳工作条件,为应用和生产提供依据. 方法 通过人工调节液 ...

  5. RabbitMQ(三)

    官方的使用教程(测试运行) 1."Hello World!" -- 发送接收 We're about to tell the server to deliver us the me ...

  6. 使用eclipse搭建hadoop开发环境

    下载一个 hadoop-eclipse-plugin-*.jar的eclipse插件,并放在plugins目录下 重启eclipse   打开视象,找“大象” 连接HDFS   success 编程准 ...

  7. ASP.NET Page对象各事件执行顺序(转)

    很久没写 asp.net 的东西了,search 了一下 page 的事件执行顺序,找到如下的东西,仅仅做记录用 Page.PreInit 在页初始化开始时发生 Page.Init 当服务器控件初始化 ...

  8. Java运算符的优先级(从高到低)

    运算符的优先级(从高到低) 优先级 描述 运算符 1 括号 ().[] 2 正负号 +.- 3 自增自减,非 ++.--.! 4 乘除,取余 *./.% 5 加减 +.- 6 移位运算 << ...

  9. a标签鼠标经过,字颜色和下划线的颜色都变红

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. css3颜色

    镂空字的2种做法