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. asp.net 网站访问变慢

    资料一 单个网站解决方法:   把应用程序池回收时间缩短到300-600分钟,其间回收过程中,需要占用一点CPU资源,没办法,为了稳定性,再把回收时间设为凌晨5点. 多网站解决方法: 视服务器网站的多 ...

  2. SQL Server 2012 创建数据库快照

    不是所有的MSSQL数据库版本都支持数据库快照,只有Enterprise版本的才支持. 在其他版本上,以Business Intelligence Edition版本为例,创建快照时,会报如下错误 消 ...

  3. 【巩固】CSS3的3D动画 ——3D旋转(1)

    最近学了妙味的css3的动画,2D,3D的都有,先写一个最简单的3d翻转效果,鼠标移入div,正反面翻转效果. 注意点有: 要给正反面外面加个父级: transform-style: preserve ...

  4. git branch几个简单操作

    1.git branch  该命令会列出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支.参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支. 2.git branch deve ...

  5. Linux批量更改文件后缀名

    一.rename解决 1.  Ubuntu系统下 rename 's/\.c/\.h/'  ./* 把当前目录下的后缀名为.c的文件更改为.h的文件 2.  CentOS5.5系统下 rename . ...

  6. osmdroid启程

    osmdroid一个牛逼的开源地图引擎,从今天开始好好研究一下~

  7. visudo 使用摘记

    1. sudo <command> 免输入密码.root 运行 visudo. 添加命令行:<username>    <hostname>=NOPASSWD: & ...

  8. outlook找不到文件Outlook.pst 如何启动

    首先注明:这种情况在控制面板-邮件  无法打开的情况下可以使用以下命令打开设置界面 解决方法: 1. 开始 –> 运行 –> cmd 2. 在DOS下,用CD 切换到 Outlook.ex ...

  9. 调用jar程序,读取与jar同级的配置文件。

    System.getProperty("user.dir") + "\\Mysettings.properties";//该方法在Alimonitor里取不到绝 ...

  10. python函数递归和生成器

    一.什么是递归 如果函数包含了对其自身的调用,该函数就是递归的.递归做为一种算法在程序设计语言中广泛应用,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的 ...