Skip to Content

(Update April 2014:  Added example implementation for getting messages for context details when using web-based solutions)

Hello Friends,

you might find that the generic messages of BI-IP that are created when you execute planning functions and sequences are to substantial and not understandable for the end user. Therefore you require some functionality to filter or modify the messages that are presented to the planning users. For example you want to differentiate between an unsuccesful validation function and a “real error”.

Standard Solution

Currently there is no standard functionality available to address this issue.

Custom Solution

The suggested solution works very similar to the one described in my blog on suppressing messages in BI queries which you can find How To Suppress Messages Generated by BW Queries.

The BI-IP messages are read by the front-end using function module RSPLFR_SERVICE_LOG_READ. To filter or modify these messages you can implement you own logic in the implicit enhancement spot at the end of this function module.

FUNCTION rsplfr_service_log_read.
...
     APPEND ls_log TO e_t_log.
  ENDLOOP.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""$"$
*$*$-Start: (2 )--------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  Z_ENHANCE_MESSAGE_FILTER.    "active version
* You can filter the messages here. For example:
  delete e_t_log where id = 'RSPLF' and number = '113'.

ENDENHANCEMENT.
*$*$-End:   (2 )--------------------------------------------------------------------------------$*$*
ENDFUNCTION.

Enhancements are modification free. 🙂 If you want to know more about enhancement options and how to implement them, please check the online documentation at http://help.sap.com/saphelp_nw70/helpdata/EN/a0/47e94086087e7fe10000000a1550b0/frameset.htm.

Update: For BW release 7.30 or higher, please implement SAP Note 1983009 (http://service.sap.com/sap/support/notes/1983009) and apply your filter logic to both E_T_MSG and E_T_LOG (which one is used depends on the type of user interface).

Update: When using web-based user interfaces, the context information for planning functions is not shown, for example when reference data is missing. You can use the following enhancement code to display these messages.

*$*$-Start: (1)---------------------------------------------------------------------------------$*$*
ENHANCEMENT 1  Z_ENHANCE_MESSAGE_CONTEXT    "active version

  IF e_t_msg IS REQUESTED.
    CLEAR e_t_msg.

    LOOP AT lt_msg_handle INTO ls_msg_handle.
      CLEAR ls_log.
      CALL FUNCTION 'BAL_LOG_MSG_READ'
        EXPORTING
          i_s_msg_handle = ls_msg_handle
        IMPORTING
          e_s_msg        = ls_msg
        EXCEPTIONS
          OTHERS         = 0.

      IF lines( ls_msg-params-t_par ) > 0.
        READ TABLE ls_msg-params-t_par INTO ls_par WITH KEY parname = 'FUNCNR'.
        l_funcnr = ls_par-parvalue.
        IF sy-subrc = 0 AND ls_logdetail-funcnr <> l_funcnr.
          CLEAR ls_msg.
          MESSAGE i301(rsplf) INTO ls_log2-message.
          ls_msg-msgty = sy-msgty.
          ls_msg-msgid = sy-msgid.
          ls_msg-msgno = sy-msgno.
          ls_msg-msgv1 = sy-msgv1.
          ls_msg-msgv2 = sy-msgv2.
          ls_msg-msgv3 = sy-msgv3.
          ls_msg-msgv4 = sy-msgv4.
          APPEND ls_msg TO e_t_msg.

          READ TABLE gts_logdetail INTO ls_logdetail WITH KEY funcnr = l_funcnr.
          IF sy-subrc = 0.
            PERFORM convert_charsel USING ls_logdetail-t_charsel CHANGING lt_showsel.
            LOOP AT lt_showsel INTO ls_showsel.
              CLEAR ls_msg.
              IF ls_showsel-high IS INITIAL.
                MESSAGE i302(rsplf) WITH ls_showsel-txtsh ls_showsel-low INTO ls_log2-message.
              ELSE.
                MESSAGE i303(rsplf) WITH ls_showsel-txtsh ls_showsel-low ls_showsel-high INTO ls_log2-message.
              ENDIF.
              ls_msg-msgty = sy-msgty.
              ls_msg-msgid = sy-msgid.
              ls_msg-msgno = sy-msgno.
              ls_msg-msgv1 = sy-msgv1.
              ls_msg-msgv2 = sy-msgv2.
              ls_msg-msgv3 = sy-msgv3.
              ls_msg-msgv4 = sy-msgv4.
              APPEND ls_msg TO e_t_msg.
            ENDLOOP.
          ENDIF.
        ENDIF.
      ENDIF.
      APPEND ls_msg TO e_t_msg.
    ENDLOOP.
   
ENDENHANCEMENT.
*$*$-End:   (1)---------------------------------------------------------------------------------$*$*
ENDFUNCTION.

Kind regards

Marc

To report this post you need to login first.

27 Comments

You must be Logged on to comment or reply to a post.

  1. Salah GUERMOUCHE
    Hello Marc,

    Thank you for this blog.

    Could you explain me where to setup “i_with_Context_info” to not display context messages i301, i302 and i303 in function rsplfr_service_log_read ? In SPRO maybe?

    Regards
    Salah

    (0) 
  2. Markus Hofmann
    Hello Marc

    Thank you for this blog. That’s nearly exacly what I searched. But what about all the other messages the Integrated Planning throws.

    I’m getting RSPLF messages like 113 or 019 but my planning scenario throws also BRAIN messages like 485 or RSPLS_CR messages like 021 or 026.

    Is there a possibility to filter these messages too? The RSPLFR_SERVICE_LOG_READ fuba ignores them.

    Best Regards
    Markus

    (0) 
    1. Marc Bernard Post author
      Hello Markus,

      the solution above only works for message raised by the planning function. The others you mention come from the planning framework or the OLAP engine. You can add an enhancement to function module RRMS_MESSAGE_HANDLING to filter these.

      Regards
      Marc

      (0) 
  3. Leonardo Terribile
    Hi Marc, thanks for this great idea!

    I have a doubt, is it possible to apply this kind of filter but for an individual planning function and/or WAD?

    As far as I understand this filter would affect all projects in the server? am I right?

    Regards,

    (0) 
    1. Marc Bernard Post author
      Hello Leonardo,

      in general it works system wide. However, at least in some cases you can find out which planning function/sequence is being executed by checking the contents of the tables that contains the messages (since it includes typically a message like “Planning function xyz executed successfully”).

      Regards
      Marc

      (0) 
      1. Leonardo Terribile
        Hi Marc, thanks for your quick anwser.

        We might have found a work around to avoid having to check the content of the message.

        We are making an export to a certain Memory ID from a routine called from the planning function and that memory id value is checked in the enhancement to know if it should affect those messages or not.

        Regards
        Leonardo

        (0) 
  4. Cornelia Lezoch

    Hi Marc,

    could you please add a short list of the values for the new parameter RS_DEBUGLEVEL to be set in BI 7.3 and tell, which mesages can be seen depending on the parameter value.

    Thanks

    Cornelia

    (0) 
    1. Marc Bernard Post author

      Hello Cornelia,

      there are 5 different problem/message classes: very high (1), high (2), medium (3), low (4), and none (space or 5). As a default only very high and high are displayed. If you set RS_DEBUGLEVEL higher, you will see the corresponding message classes as well.

      Regards,
      Marc
      SAP Customer Solution Adoption (CSA)

      (0) 
  5. Caroline Keil

    Hello  Marc,

    after the update to 7.3 SP 10 we have a problem with the funtion module (fuba) RSPLFR_SERVICE_LOG_READ:

    in line 35 – 48 a new paragraph is added, an IF-loop beginning with:

    “IF e_t_msg IS REQUESTED.”

    This IF-loop contains a RETURN-Command. Thus, the fuba is left after
    executing the IF-loop and the coding afterwards, especially our customer-owned coding
    below is not proceeded anymore.

    Can you help us?

    Best regards

    Caroline

    (0) 
    1. Marc Bernard Post author

      Hello Caroline,

      that’s an unfortunate change. However, you can easily put the same logic into function module BAL_GLB_SEARCH_MSG instead and filter e_t_msg_handle.

      Regards,
      Marc

      SAP Customer Solution Adoption (CSA)

      (0) 
  6. Caroline Keil

    Hello Marc,

    you are right: the RETURN-Command is really unfortunate, as a simple IF-ELSE-ENDIF would have done the same job while leaving the ENHANCEMENT in action.

    Using the Function module BAL_GLB_SEARCH_MSG is not so easy, as you have to use BAL_LOG_MSG_READ to get the messages before you can change them. As RSPLFR_SERVICE_LOG_READ is using it also,  BAL_LOG_MSG_READ would then be called twice for the same Data. Thus, we have do do a lot of extra programming that would not be necessary if we can use the same function module as before.

    We have openend SMP-Message 120160 / 2014 for this problem at 2014/02/07 around 9 am, but did not receive any answer yet.

    Best regards

    Caroline

    (0) 
      1. Sergey Slavin

        Hello, Marc.

        We are on BW 7.31

        I execute planning sequence from Bex and try, as you said, “apply your filter logic to E_T_LOG”.

        But e_t_log is empty because “IF e_t_log IS REQUESTED” is false. Is it right to apply my own logic to e_t_msg?

        (0) 
        1. Marc Bernard Post author

          Hello Sergey,

          you have to apply note 1983009 first. Then it depends on the front-end. In some cases E_T_MSG is used, in some cases E_T_LOG (the logic changed with note 1653610, 730 SP 7, 731 SP 3).

          It’s best to filter both tables the same way so all front-ends show the same messages.

          Regards,
          Marc

          SAP Strategic Customer Engagements (SCE)

          (0) 
  7. Gilbert Seidel

    Hello Marc,

    i followed this discussion and everything
    is clear. But i have another interesting but uncomfortable hint.

    When i execute a Distribution function in
    GUI, the System gives context Information if
    distribution failed caused by missing reference data. In web these
    informations are not visible, so the enduser dont know for which combination
    distribution function failed. It has no effect if you press the longtext Information..

    Is there a simple solution to make this informations visible?

    Kind regards

    Gilbert

    (0) 
      1. Gilbert Seidel

        Hello Marc,

        thank you  very much for your quick Response! Unfortunately that is not what i mean.

        I attached an Image to describe the issue. In web i am not able to view the details of each warning message like in GUI.

        Messages.png

        best wishes and thanks in advance!!!

        Gilbert

        (0) 
        1. S G

          Hi Gilbert,

          I see in your post, after eecuting plannning funcation it shows the number of records read and number of records generated and numbe of records changed ……did you do any specific settings to display like this in Bex analyzer i can see this detail log in RSPLan (SAP GUI) in the backend but in the Bex analyzer i am not able to see the details log.

          Can you please help me what are the sepefic settings are required to dipaly details log in the Bex anyalyzer

          (0) 
            1. S G

              Hi Marc,

              Thanks for your quick reply i already added Message design item in the Bex analayzer it shows only “Planning Sequence name( SalaryXXXXXXXXX) Eexecuted without errors”

              but it is not showing each planning function name with XXXX reacods read XXX records cahnged XXXX records generated. If we execute same planning sequence in the RSPLAN it shows details level with each step and XXXX reacord read, XXXX records changed, XXXX records generated. I am looking same type of messages to diplay in the Bex anyalzer message item when i execute button(Planning sequence). Do i need to add any additioanl stepts.

              Thanks .

              Best regards

              Shekar

              (0) 
              1. Marc Bernard Post author

                Shekar,

                please see note 1653610 which explains why info and warning messages are not shown anymore and how to display them again (via note 1244421).

                Regards,
                Marc
                Product Management SAP EDW (BW/HANA)

                (0) 
                1. S G

                  Hi Mark,

                  Thanks for your info. I tried to add paramater RS_DEBUGLEVL as per note 1244421 but it didn’t helped me. we are on BW 7.30. I am execting planning sequence it show messages only  XXXXXx(Planninf sequences name) executed withour errors but it is not displaying all the funcationns with details log XXX read XXX generated XXX deleted XXX changed. Dow e have this feature for BEX analyzer.? Any thoughts.

                  Thanks

                  Shekar

                  (0) 
                  1. Marc Bernard Post author

                    Hi Shekar,

                    I just tested it with BW 7.30 SP 11, and BI Add-on 7.x SP 6. If I set RS_DEBUGLEVEL to 4 then BEx Analyzer shows the message. If you can’t get it to work, please create an incident report so SAP support can help you.

                    Regards,
                    Marc
                    Product Management SAP EDW (BW/HANA)

                    (0) 

Leave a Reply