科莱特教育

 找回密码
 立即注册
查看: 2610|回复: 0

SAP_BW_邮件发送监控策略

[复制链接]

177

主题

181

帖子

951

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
951
发表于 2020-12-31 02:40:05 | 显示全部楼层 |阅读模式
以往的情況是邮件一提交到BW的邮件队列我们就认为自己工作做完了。事实上却没有,并且我们一直被困惑着,因为邮件会错、会拖、会等、会卡,所有小孩子会犯的错,它都会,而我们却不知道为什么。
我们的规划是能够把邮件的发送纳入到可控范围,可以知道有没有错误,有没有发送,有没有等待。
我们在规划时,分了几个步骤去实现:
1.     可以监控邮件系统是否存在等待状况
2.     如果存在等待状况,能够自动触发邮件发送动作
3.     可以监控邮件系统是否存在异常邮件
4.     如果存在异常邮件,能够自动触发重发邮件动作
通过对邮件系统的数据日志分析,我们找到了其中的对应关系。邮件系统会把目前处于等待状态的邮件暂时性的存储到SOST这个表中,在联合SOOD这个存储邮件基本信息的表,我们很快就是实现了第一步。建立如下试图:
Tables:
   SOOD
   SOSC
Join conditions:
   SOOD MANDT       =      SOSC     MANDT
   SOOD OBJTP          =      SOSC     OBJTP
   SOOD OBJYR         =      SOSC     OBJYR
   SOOD OBJNO         =      SOSC     OBJNO
View Fields:
  SOOD OBJNO
  SOOD OBJNAM
  SOOD OBJDES
  SOOD CRDAT
  SOOD CRTIM
SOOD OBJSND
SOOD SDDAT
  SOOD SDTIM
SOSC  ENTRY_DATE
SOSC  ENTRY_TIME
SOSC  SNDPRI
SOSC  STATUS
SOSC  NEW_STATUS
  那么我們可以通過查询试图获得目前邮件等待情况。
  我们知道可以手动去发送等待状态的邮件,但是我们的目的是能够让系统自动做,所以我们找到了相应的ReportRSCONN01(至于如何找到程序,通过SDNDebug就八九不离十了)。一定发现有等待的邮件,且邮件是我们需要监控的,那么就让程序去触发邮件发送动作。这样我们又解决了第二个问题。
    第三步比较简单,因为判断是否错误无非是判断Log的状态信息,但是问题是我们获得的状态编号是否就涵盖了所有情况,也没有这样的文档说明。所以我们罗列的历史以来日志出现的状态编号,比较笨,但是不得不说我们做到了。
    第四步的实现也是通过Debug程序找到的,FunctionSO_SEND_PROCESS_REQUEUE 这里有心的可能会发出这样的疑问,为什么不用第二步的程序。原因是,第二步的程序只会把目前处于等待状态的邮件重发,而邮件一旦异常,那么邮件系统就会把这些邮件踢到非等待状态,所以第二步出现的程序根本就碰不到这个异常邮件,所以也谈不上用它来发送了。这个Function会通过一个table存储需要重发的邮件,所以我们要做的就是把邮件信息重新放进去。
内表的格式如下:[加粗的是必填]
OBJTP
OBJYR
OBJNO
FORTP
FORYR
FORNO
RECTP
ADR
RECYR
RECNO
MSGTP
REPEAT_CNT
WAIT_DATE
WAIT_TIME
NEW_STATUS
SNDREQ
IMMEDIATLY
你可以通过SOODSOOS2个表把所有信息都填入到内表中,那么就完成了重入队列的动作,当然只是完成了重入队列的动作,所以你还是需要执行第二步的动作(是否把IMMEDIATLY设为X,就可以立即发送还要测试,不过小fang一再告我不要把所有兔子都打光,谨记)
    通过以上的介绍,估计BW的邮件监控会是在你的掌控
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则


QQ|科莱特教育

GMT, 2024-11-21 17:40 , Processed in 0.047369 second(s), 24 queries .

福州科莱特教育科技有限公司 版权所有 闽ICP备2021003729号-2

Copyright C 2018-2022 All Rights Reserved

快速回复 返回顶部 返回列表