SAP工具箱 邮件通知平台优化

前言

项目中总会有人提出发邮件通知的需求

订单创建后,请发邮件通知领导审批

数据维护了一半,请发邮件通知其它部门完成另一半

系统报错了,请发邮件通知管理员及时处理

孩子要出生了, 请发邮件通知孩他爹来医院

……

这么多的通知需求,能不能用一个统一的程序(平台)通过配置实现呢?

本文基于前文

前文链接

无峰,公众号:ABAP 技巧与实战SAP工具箱 邮件通知平台

主要介绍针对邮件通知平台的部分优化功能

改进邮件调用方式

封装的邮件发送函数 ZBC_EMAIL_001 调用通过

函数 SO_NEW_DOCUMENT_ATT_SEND_API1 发送邮件.

改进的邮件发送函数 ZBC_EMAIL_NEW 通过调用 CL_BCS类的方法,发送邮件.

CL_BCS的使用可以参考系统标准的示例程序 BCS_EXAMPLE*

需要注意的是, 发送后需要 执行commit work 语句提交, 否则邮件无法发送出去.

发送后,可以调用程序 RSCONN01 立即发送(否则系统会基于后台任务,该后台任务也是调度这个程序)

SAPCONNECT ALL 调度邮件的实际发送,

发送的邮件, 可以通过TCODE: SCOT或SOST 查看系统的邮件发送状态

5341fcff916ccb3a8e74467d0bdf42ec.png

没有提交的邮件,SCOT 中出站发送请求中将显示状态 队列中仍无条目

3d20fddc96968040549074566427ea94.png

这两个方法还有一个差异

函数SO_NEW_DOCUMENT_ATT_SEND_API1 发送的邮件,在邮件发送监控中可以看到绿色图标,表示成功,

但是通过类CL_BCS发送的邮件, 则会显示 接收者 <邮箱地址> 无效。已尝试发送 . 但实际邮箱中已收到该邮件.

这个问题产生的原因不明, 如果你知道解决办法, 不吝赐教.(已解决)

发布文章之前特意又跟踪了一下

函数SO_NEW_DOCUMENT_ATT_SEND_API1. 发现该函数底层也是调用CL_BCS发送 同时在底层函数 SBCOMS_SEND_REQUEST_CREATE 中设置了一个状态

8c6693a26c6d455ccf8d3e58fe258260.png

参考该段逻辑优化了 函数 ZBC_EMAIL_NEW, 添加了设置状态部分代码.

db35473aaaf68a71f3927b614f06092a.png

实测可以解决SOST发送监控中的指示灯问题

5934827cb05f45544195d6ed2fc01ea0.png

优化邮件内容显示

优化邮件的正文,采用HTM 呈现内容. 相比 RAW 呈现, HTM 需要传递HTML 内容. 可以更加美观的呈现出邮件正文

通过下方二者呈现方式的对比, 可以看到HTM方式中可以通过表格,链接,字体 等美化正文内容的呈现

d794a4608c068300bb9966cdb319cb13.png

6237a176df6c0d23fdc73334c45de410.png

HTM呈现

0f49b7e4d29ecf64b0ddb631dcc5aee3.png

RAW呈现

封装内表转换HTML表格

内表的内容, 转换成HTML表格, 这部分逻辑比较通用, 封装到类方法中.

ZCL_REP_COMM_SALES_MAIL=> GET_HTML_FROM_ITAB. 代码逻辑比较简单, 需要的可以通过下图参考一下.

d215a437a89bf6bc0c2874892c2cb9a3.png

1206a4a7ff36079a4172a24309c61610.png

添加附件功能

监控配置表 ZTBC_MONI_CONFG 补充了几个字段

01

ADD_ATTACHMENT添加附件,

添加附件(附件信息来自于监控的表的明细内容)

远程系统的表内容无法简单的动态读取. 目前不支持读取远程系统的明细

如果明细方式设置为

X ,则自动生成明细的电子表格作为附件

H ,则自动生成正文的表格(需要注意的是,字段过多时,正文表格会显示不完整)

A .同时生成正文的表格及EXCEL附件

a2780b73e3e01d9dc0b2ef31387727f6.png

02

ADD_TABLE_LINES明细内容作为正文表格的最大显示行

如果通过 ADD_ATTACHMENT = ‘X’ OR ‘A’ 允许正文中显示明细, 为了避免由于明细过多导正文内容太大,通过这个字段限制正文表格的最大显示行数.

03

ATTACH_FIELDS字段清单

通过字段清单的配置, 控制ZMONT_TABLE 中维护的监控表中的哪些字段参与明细的输出(正文或邮件的附件)

4360c8e8aa039f19dd5ff0378c03c70b.png

WEBGUI链接

WEBGUI_ADDRESS附加WEBGUI地址

添加一个链接,通过WEBGUI调用指定的事务代码.

用户点击链接后可以直接跳转网页显示指定程序

程序中需动态生成该链接, 对于域名,端口,集团 等参数需要通过系统变量读取

域名,端口 可以通过

函数 TH_GET_VIRT_HOST_DATA 获取

示例:

http://bfdaeccdev.bfda.cn:8000/sap/bc/gui/sap/its/webgui?sap-client=300&sap-theme=SAP_SIGNATURE&sap-user=test_user&sap-password=Aa12345678&&~transaction=*ZBC_MONITOR%20S_MONTID-LOW=IDOC_MONI;S_ERDAT-LOW=20220830;p_nozero=

WEBGUI 可以通过上述方式直接显示指定的事务代码, 并且可以传递选择屏幕的选择条件 可以传递用户,密码跳过登录界面

  • ?sap-client 集团

  • &sap-theme 主题

  • &sap-user 用户

  • &sap-password 密码

  • ~transaction=*<事务代码>(两种调用方式: 事务代码前面添加 * 系统会跳过事务代码的选择屏幕 如果不添加* 系统会停留在选择屏幕)

  • %20S_MONTID 传递的选择平参数S_MONTID, 多个参数通过;分割

47f403a1c7e5e99277253f35fe2c08ca.png

总结

邮件通知平台在项目中具体应用时,在采纳用户提出的意见的基础上,添加一些个人的归纳总结,争取把该平台做的更加完善,好用.

THE

END

约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)

请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

申请进入公众号讨论群提问或者参与话题讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值