无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
**点击蓝字** 关注我们
一
前言
项目中总会有人提出发邮件通知的需求
• 订单创建后,请发邮件通知领导审批
• 数据维护了一部分内容,请发邮件通知其它部门完成另一部分内容
• 系统报错了,请发邮件通知管理员及时处理
• 孩子要出生了, 请发邮件通知孩他爹来医院
• ……
这么多的通知需求,能不能在一个统一的程序(平台)中通过配置实现呢?
**本文主要介绍一个集中的邮件通知程序(平台)的原理及配置过程**
二
集中监控
之前简单介绍过一个集中监控程序,发邮件通知只是这个集中监控程序的一个功能.
但因为发邮件的需求及意义已经大于了集中监控,所以把这个部分整理出来,喧宾夺主一下.
> 详见链接 无峰,公众号:ABAP开发技巧 [ SAP开发框架系列之 集中监控
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247484840&idx=1&sn=8ea5b14cc88df2d3dae0202414dfdb9a&chksm=cf5dd89ef82a51884ad890907419c5ac7acbc22c8be64829fd676c9559bdce7041572862131a&token=656574815&lang=zh_CN#rd)
三
设计原理
通过一个集中配置表配置下面思维导图中提到的要点,用一个程序读取配置表中的配置,生成SQL语句访问特定的表,把访问结果集中呈现出来
访问结果表达为
• 总行数
• 成功的行数
• 失败的行数
• 未处理的行数
• 前台执行,就是集中监控平台,
• 后台执行,发邮件通知,就是邮件通知平台
同时也支持短信(需要短信服务),企业微信通知
四
配置表详情
通知平台使用了两个配置表
• ZTBC_MONI_CONFG 监控配置表
• ZTDEV_USER 开发清单的用户信息
_**01** _
**监控配置表**
表名:ZTBC_MONI_CONFG 监控配置表
ZMONT_ID 监控ID
ZMONT_NM 监控名称
ZMONT_NM_EN 英文监控名称
ZMONT_TABLE 监控表名
ZMONT_FD 监控字段
ZMONT_VL 监控字段值(允许多值,通过逗号分隔)
ZWIN_VL 成功标识值: 允许多值,通过逗号分隔,单独的逗号表示空白
ZFAIL_VL 失败标识值: 允许多值,通过逗号分隔,单独的逗号表示空白
ORDER_KEY_FD单据号的字段名
DATEFED 日期字段
TIMEFED 时间字段名
ZSUPC_FD1 补充条件字段1
ZSUPC_VL1 补充条件值1 允许多值,通过逗号分隔,空白直接输入逗号)
ZSUPC_FD2 补充条件字段2
ZSUPC_VL2 补充条件值2
SQL_CONDI 附加SQL条件
LINK_TCODE 跳转的TCODE
LINK_TCODE_STATUS 跳转到目标程序的状态选择条件名
LINK_TCODE_DATUM 跳转到目标程序的日期选择条件名
LINK_TCODE_PID 链接TCODE 的参数ID
LINK_TCODE_SEL 补充的跳转传递的选择条件
LINK_COMP_SEL 调整监控与跳转的公司代码/地点选择
RFCDEST目标 监控其它系统的内容
TZUSER 监控通知人员
TZCOND 通知的阀值
GET_BUKRS 获取公司代码方式
GET_WERKS 获取地点信息
USR_ASSIGN 用户分配
ADDITION_MESSAGE 附加的邮件正文信息
ADDITION_MESSAGE_E 附加信息(英文)
ZTDEV_USER 开发清单的用户信息
这个用户表本意是为开发清单管理使用的, 后来扩展到相关程序共用.
_**02** _
**用户通知方式**
表名: DUSER开发清单用到的用户
ZSYS 项目
ZMOD 模块
BNAME 用户
MOBILE 手机号
WEAPP 微信应用ID
WECHATUID 企业微信用户ID
SMTP_ADDR 电子邮件地址
ROLE_1 关键用户
ROLE_2 顾问
ROLE_3 单元测试人员
ROLE_4 开发人员
ROLE_5 业务测试人员
ROLE_6 接口开发人员
ROLE_7 PI配置人员
ROLE_8 监控人员
MSG_1 短信通知(未支持)
MSG_2 企业微信通知
MSG_3 SAP系统弹窗通知
MSG_4 系统邮件通知
MSG_5 外部邮件通知(需配置企业邮件服务器)
五
邮件通知的配置示例
洋洋洒洒列了这么多字段,其实只是为了做个记录,在邮件通知配置时,很多和单据跳转相关的字段是用不着的.
下面从一个具体的示例来看邮件通知都需要做些什么.
单据由两部分字段,A部门人员维护了其中一部分字段后,需要发邮件通知B部门维护另外一部分字段.
首先 分析两个部门需要维护数据的表 ZTPP1001_H
其次 分析B 部门需要维护的重要字段 CERTIFICATE
当该字段为空时, 需要发出通知,把为空的信息维护到失败标识值中
维护内容如下图即可
六
测试
执行程序 ZBC_MONITOR, 输入监控ID,放大期间(后台执行时,指定当前日期或昨天即可)
前台执行,进入监控显示界面
点击失败记录数 跳转到处理程序
后台执行
收到通知邮件,通知方式在ZTDEV_USER中配置. 可以配置成外部邮件通知(需要在S4应用服务器上配置邮件系统).
定义后台作业每天执行该程序就可以实现定时发送邮件了.
也可配置短信通知(需要短信网关) 或企业微信
如果想更及时的获取邮件通知, 可以同时添加日期/时间配置,后台作业定义每小时一次,获取当前日期,指定时间段的数据即可.
下面的描述不足以明确提醒用户维护数据, 可以在监控配置表中补充一段文字,用于说明被通知人员要处理的事项,
比如: 存在N行没有维护认证信息(N=报错数) . 请尽快登录系统维护(维护程序ZPP1001).
七
邮件系统配置
TCODE : SCOT
详细配置过程就不再赘述了. 感兴趣的可以自行CHATGPT一下
八
集中监控预配置
ZBC_MONITOR_PREPARE 监控数据准备
通过预配置程序,可以把一些常用的监控条目添加到监控配置表中
比如
• ST22监控
• SXI_MONITOR的监控
• 队列处理监控
• 自动单据监控体系
• ……
九
总结
邮件发送功能是相对简单的基础功能, 如果不整合在一起, 就需要每个特定的程序中取完成这个部分, 不利于统一的维护及调整.
通过邮件通知平台整合后, 特殊的个性化的需求可能无法实现. 但是可以通过配置实现通知功能.方便后续添加各种各样的通知.
邮件信息还有个改进点, 可以把NWBC或WEBGUI访问TCODE的地址附加在邮件中, 这样用户点击链接,就能通过浏览器进入数据处理程序,执行相关处理.
** THE **
** END **
**约定**
如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.
( **如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程.
越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.** )
syjf1976
sharry_xlp
Yannick_Duan
申请进入公众号讨论群提问或者参与话题讨论