`
lzkyo
  • 浏览: 456182 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SAP BW 邮件发送监控策略

阅读更多

SAP BW 邮件发送监控策略                       

以往的情況是邮件一提交到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

  那么我們可以通過查询试图获得目前邮件等待情况。

  我们知道可以手动去发送等待状态的邮件,但是我们的目的是能够让系统自动做,所以我们找到了相应的Report:RSCONN01(至于如何找到程序,通过SDN和Debug就八九不离十了)。一定发现有等待的邮件,且邮件是我们需要监控的,那么就让程序去触发邮件发送动作。这样我们又解决了第二个问题。

    第三步比较简单,因为判断是否错误无非是判断Log的状态信息,但是问题是我们获得的状态编号是否就涵盖了所有情况,也没有这样的文档说明。所以我们罗列的历史以来日志出现的状态编号,比较笨,但是不得不说我们做到了。

    第四步的实现也是通过Debug程序找到的,Function:SO_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 

你可以通过SOOD和SOOS这2个表把所有信息都填入到内表中,那么就完成了重入队列的动作,当然只是完成了重入队列的动作,所以你还是需要执行第二步的动作(是否把IMMEDIATLY设为X,就可以立即发送还要测试,不过小fang一再告我不要把所有兔子都打光,谨记)。

    通过以上的介绍,估计BW的邮件监控会是在你的掌控之中了。

<script type="text/javascript"></script>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics