PO 系列配置消息报错自动发送邮件

作者:ABAP技巧与实战 约 10 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:工具, 技术

原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)

前言

PO(/PI)是SAP公司的一个中间件产品,用来辅助连接SAP系统与外围系统. (当然外围系统之间也可以使用PO).

企业通过PO提供统一的中间件服务平台,所有系统都调用PO的服务或者发布服务让PO调用.

如果PO处理消息时出现报错信息,可以通过PO的消息监控器查看报错的消息.这种方式依赖于人员主动的执行消息监控器,无法及时有效的获取PO系统的异常.

**本文主要介绍PO的邮箱报警机制.把报错的消息信息发送到指定用户的邮箱**

本文涉及的操作主要来自于如下链接,做了些翻译及细化的处理.

链 接

> https://blogs.sap.com/2012/03/25/michals-pi-tips-component-based-message-

> alerting/

本文涉及内容的SAP 标准帮助(千万别看, 会晕的)

> 链接

>

> https://help.sap.com/viewer/bdfc9b7d99b544d8bbda40546b70967a/7.4.23/en-

> US/2cf0a3d4540c4c9a9af65139801ef826.html

PO的消息监控器

• 消息监控器可以概览查看所有接口的成功/失败信息, 图一

• 并且可以通过点击成功/失败的次数,链接到详细的消息信息中查看具体的报错日志. 图二

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

图一

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

图二

示意图

报警处理逻辑示意图来自标准的ONLINE HELP 文档.可以直观的理解PO的消息报警机制.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

配置邮箱报警

基于组件的消息报警配置方式如下

Component-Based Message Alerting (CBMA) is the new way of sending alerts on

SAP PI (either single or double stack) without the use of any additional

components.

_**01** _

**创建报警规则**

进入 Integration Builder 创建报警规则( ALERT RULE)

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

**basic** 标签页选择需要报警的组件. (图三)

报警对象可以按照多种类型选择, 推荐把相应的对象到放到 configuration scenario 中,在报警规则中使用 configuration

scenario 来包含这些对象.最终根据包含的对象生成过滤消息的规则,详见图五

也可以维护一个空的PARTY 这样所有没有进入PARTY 的对象都会包含进去

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

**extended** 标签页中选择组件,错误类型, consumers (图四)

• components 报警的组件,包含了Central Adaper Engine 和相应的ABAP proxy对象(ABAP 也有消息监控器, 所以这里对ABAP proxy 对象的监控是可选项)

• error sources 报错消息来源, 大致区分了PO处理的不同环节,不同的通道适配器.建议全选

• consumers 中只有一个选项 ALERT-TO-MAIL ,代表报警信息发送到邮件中. 可以自定义consumer .

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

图三

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

图四

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

图五

_**02** _

**配置邮件客户端**

类似于其它的邮件客户端配置,比如FOXMAIL

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

因为PO只需要发送邮件. 所以只需要配置如下几个参数

– mail.from 邮件发送者. 需要为PO申请一个企业邮箱账号

– mail.smtp.host SMTP发送邮箱地址 一般情况下把邮箱的浏览器地址mail替换成smtp即可 smtp.qq.com

(mail.qq.com) (如果PO服务器能够连接公网,应该也可以使用公网邮箱)

– mail.smtp.password 用户密码

– mail.smtp.user 用户名 同 mail.from 参数值,登录邮件服务器发送邮件的用户(完整的用户邮件地址)

维护参数的位置

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

_**03** _

**配置后台作业**

一般情况下,报错消息信息记录在PO的表中. 必须用定时执行的后台作业推送把报错的消息信息推送给用户.

后台作业维护路径如图

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

有三种和报警相关的任务名称

AlertConsumerJob 简单的单一消息(测试时使用了这个任务)

AlertConsumerJobV2 带模板单一消息

AlertStuckMessagesJob 集中报警

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

设置任务名称及任务的保留期(超过保留期的任务可以被删除作业自动删除),任务的删除作业应该不能等同于消息的删除作业

> 详见链接 无峰,公众号:ABAP 技巧与实战 [ PO系列之 过期消息的删除

> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247485488&idx=1&sn=86c3bc906d1f0c657d2eedff4c49d632&chksm=cf5dd506f82a5c1023fb99806748cc2866b3e820e0494870d308aa42804a66320d1e4660aba6&token=1910988871&lang=zh_CN#rd)

暂时不太清楚怎么设置任务的删除作业.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

设置任务参数

MailTo 邮件收件方,不确定是否可以通过分号分隔维护多个收件方(待测试验证,及时不行,应该也可以通过邮件系统的分组解决发送多人的问题)

MailFrom 邮件发送方

AlertsToMailLimit 含义不明,估计代表了邮件中包含警报的个数,暂时设置为1

Consumer ALERT-TO-MAIL 固定内容,与Alert rule 关联起来了.

SupressAlerts 必选项 抑制报警数? 纠结,必选还需要放出来选择

AggregateAlerts 必选项 聚合警报?

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

设置作业有效期间及间隔时间,如图,设置了2年的有效期, 有效期内,每5分钟执行一次.设置后,记得添加到重复时间表中

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

设置后,可以看到作业的条目

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

可以看到作业的每次执行情况.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

可以通过 暂停/发布按钮控制 任务的执行

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

_**04** _

**测试结果**

修改接口配置,强制产生一个错误后, 邮箱会收到消息的报错信息, 点击连接会跳转到消息监控器.

测试通过.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

_**05** _

**监控主页**

配置好的消息报警可以在监控主页中看到

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

可以看到对象的消息头规则,来自于场景 CS_P10002_OFF_ICM 中的对象的所有可能的组合.

这意味着并非该场景中的特定接口才会进入报警,而是该场景中所有涉及到的对象都会生成一个规则,组合起来.按组合规则筛选消息.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

疑问

PO的消息报错通过邮箱报警的配置过程还是比较简单的. 但是配置完成后,仔细理解了一下整个过程. 发现在任务中并没有指定报警规则, 这样就会带来一个疑问

报警规则可以组合接口对象.

配置了多个报警规则(每个报警规则包含不同的对象), 那么怎么让不同的人接收不同的报警规则中对象的报警呢?

因为所有的报警规则目前都只能使用一个consumer ALERT-TO-MAIL 后台作业似乎也是关联这个consumer 的.

怎么去创建不同的consumer ?

通过示意图也能看到 Consumer是联系报警规则和作业的关键点

创建消费者(CONSUMER)

网上查找了关于创建消费者(CONSUMER)的文章. 在所使用的PO系统中均无法重现. 原因未知.

按照链接无法找到如图的入口 web serivce navigator

https://sapintegrationhub.com/pi-po/alerts/register-alert-consumer-sap-pi-po/

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

可能是版本差异, 没有找到创建消费者的入口(下图中PO系统的主页少了 web services navigator )

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

找到了另外一个创建consumer的链接,但是似乎也无法参照维护

https://blogs.sap.com/2015/07/17/alert-specific-to-interfaces-in-po-using-

cbma/

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

服务注册表为空.

看起来是所使用的PO系统有什么限制,无法修改已经注册的服务.原因未知.

PO 系列配置消息报错自动发送邮 - 封面图
PO 系列配置消息报错自动发送邮 - 封面图

总结

PO消息报警通过配置

• 报警规则组合对象

• 消费者(CONSUMER)组合多个报警规则

• 基于消费者(CONSUMER)配置后台作业指定邮件接收者

因为未知的原因(PO的版本原因?),使用的PO系统中无法配置消费者(CONSUMER).

这就导致了所有的报错信息只能通知同一个(组)人员.

这两个链接介绍了怎么创建consumer . 后续有机会测试一下自定义的consumer.

https://blogs.sap.com/2012/05/05/michals-pi-tips-component-based-message-

alerting-api/

https://sapintegrationhub.com/pi-po/alerts/register-alert-consumer-sap-pi-po/

这个链接介绍了怎么创建一个发送短信的报警.后续有机会测试一下.

https://blogs.sap.com/2016/03/13/message-alerting-in-sap-pipo-sending-alerts-

as-push-notifications-to-mobile-device/

ABAP技巧与实战

关于作者:ABAP技巧与实战

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「PO系列配置消息报错自动发送邮件.md」整理生成,仅用于内部技术分享与学习交流。