Virtual Key Figures in RSR_OLAP_BADI not re-calculated correctly

Hello BW/BI Experts!
    Please clarify why is the COMPUTE METHOD of RSR_OLAP_BADI not triggered or executed
if you remove a drilldown to a certain characteristic.
    For instance, my query is drilled down by customer and material by default. Upon
opening the query and after entering the appropriate selections, the virtual key figures
that I have used in the query are correct .
    However, if you remove the drilldown by customer(for example), the virtual key figure
is not re-computed. I was able to verify this by setting break-point in the COMPUTE
method. However, if you drilldown by customer again, the re-calculation for the virtual
key figure is correct likewise, if you refresh query, the results will be correct.
     Is this really the normal behavior of the said BADI? Why is it unstable? If I will
use RSR00002(the user exit version), will I not have the same issue?
Thanks in Advance!

If I will use RSR00002(the user exit version), will I not have the same issue?
I dont see any reason why this wouldnt behave the same way.
I assume from ur post that you need to read ur customer and material to derive ur virtual KF in the BAdi. When you remove the drilldown the customer value is no more available for the exit to calculate  the KF, thats when it throws out a wrong number. I havent seen a work around for this. Please update the form if you find a solution to get the customer values into the exit even after removing the drill down.

Similar Messages

  • Virtual Key Figures in RSR_OLAP_BADI COMPUTE Method not recalculated

    Hi,
    Please clarify why is the COMPUTE METHOD of RSR_OLAP_BADI not always 
    triggered or executed.
    For instance, my query is drilled down by customer and
    material by default. Upon opening the query and after entering
    the appropriate selections, the virtual key figures that I have
    used in the query are correct .
    However, if i make any change to the query and run it in RSRT, the BADi method COMPUTE is not executed.
    Is this really the normal behavior of the said BADI? Why is
    it unstable?

    Hi Rohit,
    I have a similar problem the compute method is not trigerring and i am trying to debug it but it is not breaking at all, although when i generate from rsrt it breaks at a breakpoint of define method however i have defined another break at compute method but not breaking.
    I am using the infoobject inside the query but and tried to hard code it  for testing in the compute method but doesnt seem to be getting executed.
    Please help.
    Cheers,
    Jad

  • Virtual Key Figures using RSR_OLAP_BADI

    Hi gurus,
    We have been using the RSR_OLAP_BADI to generate some virtual key figures for our queries, now we have a problem creating a virtual key figure...
    We have got 4 key figures in the query, 1 is a normal KF and the last 3 are virtuals, one of the virtuals uses the normal KF and splits it between the total of the same KF. The point here is that the calculations are not coming ok because the COMPUTE method does not bring the information summarized as the KF is defined, because in the same structure of the query ther are some formulas that have the same KF restricted to another level of information.
    If we remove from the query this formulas, the virtual KF works perfect because the normal KF is delivering the information summarized.
    The question is... is it normal that this happened or there may be something wrong in our definition?
    Thanks and best regards to all!!!

    Hi,
    You can get number of threads in SDN search.
    Check in the following blog
    IF_EX_RSR_OLAP_BADI~DEFINE
    https://forums.sdn.sap.com/click.jspa?searchID=23657256&messageID=6776739
    https://forums.sdn.sap.com/click.jspa?searchID=23657256&messageID=6788064
    http://sapbikk.blogspot.com/2008/05/writing-virtual-characteristics-or-key.html
    Thanks
    Reddy
    Edited by: Surendra Reddy on Mar 18, 2009 4:29 AM

  • Virtual key figure BADI - does not change value

    I wrote a badi for virtual key figure according to guidelines from an SDN doc on how to create virtual chars and kf's.
    However, the value of the key figure is not changed at all. Below is my code. Please see what I'm doing wrong
    method IF_EX_RSR_OLAP_BADI~DEFINE.
       APPEND 'ZRANKS' TO c_t_kyfnm.
    endmethod.
    method IF_EX_RSR_OLAP_BADI~COMPUTE.
      if P_KYF_ZRANKS > 0.
        assign component p_kyf_zranks of structure c_s_data
        to <fs_ranks>.
        <fs_ranks> = '1.0'.
      endif.
    endmethod.

    There is something you need to do which I have not seen described in any of the documention here.
    You need to copy the source code for the INITIALIZE method directly from the code given in the example class CL_EXM_IM_RSR_OLAP_BAPI. That is where the P_KYF<object> and P_CHA<object> attributes are assigned their values. If you do not copy this code into your own implementation, these attributes have no value in the COMPUTE method and your code will probably not work.
    Bryan

  • Virtual Key Figure on Multicube (RSR_OLAP_BADI)

    I've created a virtual key figure (using RSR_OLAP_BADI) for number of days in month [zdays_month].  Everything works perfectly when it's used in a query on a cube cube.  BUT, when I try to use it in  aquery on a multi-cube, it doesn't.  The multi-cube query returns a number = the number of days in the month * the number transactions in that month. 
    Anyone know how I can force the VKF to execute after the data is returned?  I would prefer to not mess with exception aggregation, or key figure properties.  I need to keep this VERY SIMPLE for my query developers.
    Your assistance is greatly appreciated,
    Kenneth

    hi,
    first try to check whether the query access virtual kf or not, use transaction rsrt, type in the query name, and click technical info or properties, there will some line 'virtual char/kf'.
    i think the query may never access the code in BadI because in the code it's set with condition infoprovider technical name, it will cover only the infoprovider, when we access query from multiprovider, which join from one of the infoprovider, it's not automatically have the virtual kf/char, we have to specified the multiprovider name in the BadI, you may change the code as following :
    hope this helps.
    CASE i_s_rkb1d-infocube.
        WHEN '[your infocube name]'.
    ENDCASE.
    to
    IF i_s_rkb1d-infocube = [your infocube name] or
       i_s_rkb1d-infocube = [your multiprovider name].
    ENDIF.
    for other infoproviders
    CASE i_s_rkb1d-infocube.
        WHEN '[other cube name]'
    ENDCASE.

  • Creating BADI for Virtual Key fig: Error: RSR_OLAP_BADI does not exist

    Hi,
    I am following some instructions to test the implementation of virtual key figure and came to the point to create the BADI.
    Intructions on page 5:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/e051fda8-71a9-2a10-ac9e-8d17414a8c8c
    SE19
    Create Implementation; New BADI; Enhancement Spot:    RSR_OLAP_BADI
    At this point I get an error that RSR_OLAP_BADI does not exist.
    I then chose at random APB_LAUNCHPAD but this works in the sense that it took me to the next screen
    1. What does it mean by RSR_OLAP_BADI not existing?
    2. I know the instructions points to choose RSR_OLAP_BADI, but why that particular program and how does one gets to know that it is the one to use for virtual key figure/char implementation?
    3. When I tested with APB_LAUNCHPAD, I did not get the same screen on page 5 of the link, is it different for BI 7? Or, am I missing a point?
    Thanks

    Hi,
    thanks for the guidance.
    Yes, I tried to implement exactly as in the article.
    Yes, I defined the filter for the Infoprovider, as ZV*
    Are you suggesting that at this point, if in the method  if_ex_rsr_olap_badi~define, I change the value of
    "ZV_ZIPER" to my DSO or Cube, I should now see the virtual key figure in my query?
    Based on this understanding, I modified the method as follows, (my cube name is 2LIS_11_VASCL):
    method IF_EX_RSR_OLAP_BADI~DEFINE.
      DATA: l_s_chanm TYPE rrke_s_chanm,
      l_kyfnm TYPE rsd_kyfnm.
      FIELD-SYMBOLS:
      <l_s_chanm> TYPE rrke_s_chanm.
    Insert Code
      CASE i_s_rkb1d-infocube.
    CASE i_s_rkb1d-2LIS_11_VASCL.
          WHEN '2LIS_11_VASCL'.
          l_s_chanm-chanm = 'ZVAR_SHPR'.
          l_s_chanm-mode = rrke_c_mode-read.
          APPEND l_s_chanm TO c_t_chanm.
          l_s_chanm-chanm = 'ZVARDT'.
          l_s_chanm-mode = rrke_c_mode-read.
          APPEND l_s_chanm TO c_t_chanm.
          APPEND 'ZV_20DV' TO c_t_kyfnm.
      ENDCASE.
    endmethod. "if_ex_rsr_olap_badi~define
    After activation, I checked the query and still I am not seeing the virtual key figure in the query for selection.
    Any more ideas?
    Thanks
    Edited by: Amanda Baah on May 24, 2009 8:01 AM

  • Virtual Key figure not getting populated

    Hi All,
    I have included a virtual key figure in a multiprovider  on which the query is created and its underlying ODS.
    This issue is the virtual key figure is not getting populated . I am not sure what I am missing
    I did the following :
    1) Tried Debugging - Put a break point and execute the query in RSRT.It  did not go to the Exit. I also tried  generating the query from RSRT.
    I am using the BADI (RSR_OLAP_BADI) to populate the Vir Key Fig.
    Please guide me.
    Thanks,
    HM

    Hi All,
    Now that I am able to get the logic to come up in debug. I am faced with another issue.
    I am implementing  avery simple logic . I added a integer type key figure to the ODS and I am tryin to assign value 1 to the the key figure in the code (I am assigning 1 just ot check if the value is passed to query or not. I do have acomplex logic tha i need to implement).
    Here I am able ot see the value in the debug but in the qury the value is not populated.
    N ot sure what might be going wrong.
    code is
    l_z_avg = 1.
    <fs_zavglate> = l_z_avg .
    Appreciate help.
    Thanks,
    HM

  • Virtual Key Figures-  RSRT says Key Figures are not valid

    Hi,
    Getting the following mssg when I try to generate a query in RSRT for the first time after I have coded Virtual Key Figures.
    For the characteristic that I am pulling the user entered data from:
    /BIC/ZNEWEST is not a valid characteristic for InfoProvider 0QM_C08
    Message no. BRAIN122
    Diagnosis
    "Customer enhancement RSR00002 or the implementation of BAdI RSR_OLAB_BADI delivers /BIC/ZNEWEST as the characteristic to be calculated. 1. is however not a valid key figure for Infoprovider 0QM_C08.
    System response
    /BIC/ZNEWEST is ignored.
    Procedure
    Check the exit."
    From the key figure I am using this info to populate value:
    "/BIC/ZKF3 is not a valid key figures for InfoProvider 0QM_C08
    Message no. BRAIN121
    Diagnosis
    Customer enhancement RSR00002 or the implementation of BAdI RSR_OLAB_BADI delivers /BIC/ZKF3 as the key figure to be calculated. 1. is however not a valid key figure for Infoprovider 0QM_C08 or /BIC/ZKF3 references the key figure . In this case, the basic key figure l  is enough to calculate in the exit.
    System response
    /BIC/ZKF3 is ignored.
    Procedure
    Check the exit."
    Any help would be appreciated.
    This is my first time using Virtual KF's.
    Thanks,
    Brandon

    Hi Ajay,
    Here is my code:
          FORM user_0QM_C08                                            *
    -->  L_S_RKB1D                                                      *
    -->  C_S_DATA                                                       *
    FORM user_0QM_C08 USING l_s_rkb1d   TYPE rsr_s_rkb1d
                         CHANGING c_s_data TYPE any.
    *-- Local data
      DATA: l_n TYPE n,
            FIN1 like /bic/azqm_O5000-/BIC/ZPFINNT,
           FIN2 like /bic/azqm_O5000-/BIC/ZPFINNT,
           STAR1 like /bic/azqm_O5000-/BIC/ZPFINNT,
            STAR2 like /bic/azqm_O5000-/BIC/ZPFINNT,
            TASK type STRING.
    *-- Field Symbols
      FIELD-SYMBOLS <ZNEWEST>.
      FIELD-SYMBOLS <ZOLDEST>.
      FIELD-SYMBOLS <ZPSTARNT>.
      FIELD-SYMBOLS <ZPFINNT>.
      FIELD-SYMBOLS <ZKF3>.
      FIELD-SYMBOLS <ZKF4>.
      FIELD-SYMBOLS <0NOTIFICATN>.
    *->>> Initial checks
      SELECT SINGLE * FROM  zvir_reports
             WHERE  infocube  = l_s_rkb1d-infocube
             AND    compid    = l_s_rkb1d-compid.
      CHECK sy-subrc IS INITIAL.
    *->>> Prepare the structure
      ASSIGN COMPONENT g_pos_0QM_C08_ZNEWEST
        OF STRUCTURE c_s_data TO <ZNEWEST>.
      ASSIGN COMPONENT g_pos_0QM_C08_ZOLDEST
        OF STRUCTURE c_s_data TO <ZOLDEST>.
      ASSIGN COMPONENT g_pos_0QM_C08_ZPSTARNT
        OF STRUCTURE c_s_data TO <ZPSTARNT>.
      ASSIGN COMPONENT g_pos_0QM_C08_ZPFINNT
        OF STRUCTURE c_s_data TO <ZPFINNT>.
      ASSIGN COMPONENT g_pos_0QM_C08_0NOTIFICATN
        OF STRUCTURE c_s_data TO <0NOTIFICATN>.
    *~~~>Changeable
      ASSIGN COMPONENT g_pos_0QM_C08_zKF3
        OF STRUCTURE c_s_data TO <ZKF3>.
      ASSIGN COMPONENT g_pos_0QM_C08_zKF4
        OF STRUCTURE c_s_data TO <ZKF4>.
    *do not go thru code if user fields are blank.
      IF <znewest> IS INITIAL OR <zoldest> IS INITIAL.
      Exit.
      Endif.
    *-->>> Read general data
      CLEAR: /BIC/AZQM_O5000, FIN1, FIN2, STAR1, STAR2, TASK.
      TASK = 'SCM'.
    get Start1 time
      SELECT /BIC/ZPSTARNT   FROM  /bic/azqm_O5000 INTO STAR1
             WHERE  notificatn        EQ <0NOTIFICATN>
             AND    /bic/ZNEWEST      EQ <ZNEWEST>.
      ENDSELECT.
    Get Finish1 time
      SELECT /BIC/ZPFINNT   FROM  /bic/azqm_O5000 INTO FIN1
             WHERE  notificatn        EQ <0NOTIFICATN>
             AND    /bic/ZNEWEST      EQ TASK.
      ENDSELECT.
    Get Finish2 time & Start2 time
      SELECT /BIC/ZPFINNT /BIC/ZPSTARNT FROM  /bic/azqm_O5000 INTO (FIN2 ,
    STAR2)
             WHERE  notificatn        EQ <0NOTIFICATN>
             AND    /bic/ZOLDEST      EQ <ZOLDEST>.
      ENDSELECT.
    *- Update key figures
      <zKF3>  = abs( FIN1 - STAR2 ).
      <zKF4>  = abs( STAR1 - FIN2 ).
    ENDFORM.                    "user_0QM_C08
    Thx

  • Use of Key Date in Virtual Key Figure Calculation

    I have a virtual key figure whose value depends in part on the key date entered by the user.  I have the VKF set up with a dummy calculation, and it is working OK.
    How do I refer to the value of the key date in the code that assigns the VKF value?
    Thanks,
    DP

    Found the answer, thanks to another thread:
    Function RRS_VAR_VALUE_FROM_MEMORY_GET with I_VNAM equal to the key date variable returns the value of the key date.
    DP

  • Virtual Key Figures its not populated when execute query

    Hi All
    I did a BADI for populate a Virtual Key Figure, I follow the instructions of link
    Link:[http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/60e34f63-f44c-2c10-488e-c89b04e0ca7c?quicklink=index&overridelayout=true]
    In addition I add the code section of data declarated on example of: CL_EXM_IM_RSR_OLAP_BADI section define: IF_EX_RSR_OLAP_BADI~DEFINE, only information that said:
      DATA: l_s_chanm   TYPE rrke_s_chanm,
            l_kyfnm     TYPE rsd_kyfnm.
      FIELD-SYMBOLS:
            <l_s_chanm> TYPE rrke_s_chanm.
    I test the query on RSRT and the virtual Key Figure is "0.00" this look like if the virtual key figure is not populated.
    I did other things like:
    Set a Break Point on COMPUTE section of my BADI, I saw that the value is assigned, but I don't know how I can continue reviewing the pass of this value to result of query.
    I generate again the query on RSRT.
    My code is:
    IF_EX_RSR_OLAP_BADI~DEFINE
    method IF_EX_RSR_OLAP_BADI~DEFINE.
      data: L_S_CHANM   type RRKE_S_CHANM,
            L_KYFNM     type RSD_KYFNM.
      field-symbols:
            <L_S_CHANM> type RRKE_S_CHANM.
      case I_S_RKB1D-INFOCUBE.
        when 'ZGTO_OB2'.
          append 'ZVIRTKF' to C_T_KYFNM.
      endcase.
    endmethod. 
    IF_EX_RSR_OLAP_BADI~COMPUTE
    method IF_EX_RSR_OLAP_BADI~COMPUTE.
      field-symbols <FS_ZVIRTKF> type any.
      P_KYF_ZVIRTKF = 16.
      assign component P_KYF_ZVIRTKF of structure C_S_DATA
      to <FS_ZVIRTKF>.
      <FS_ZVIRTKF> = 10 .
    endmethod.
    I will appreciate your recommendations, Thanks in advanced.
    Al

    Thank you very much Sanganya
    I saw this:
    I put a break point on P_KYF_ZVIRTKF = 16., then I saw that P_KYF_ZVIRTKF obtain value 16.
    Then on sentence: assign component P_KYF_ZVIRTKF of structure C_S_DATA
    to <FS_ZVIRTKF> , when the system pass this line, I review the sy-subrc and is equal 4, as I understood the ASSIGN sentence did not be complete, the value shoul be 0.
    Then when the system try to run the sentence: <FS_ZVIRTKF> = 10  the system send an Execution error that say:  GETWA_NOT_ASSIGNED...
      Error analysis
        You attempted to access an unassigned field symbol
        (data segment 32780).
        This error may occur if
        - You address a typed field symbol before it has been set with
          ASSIGN
        - You address a field symbol that pointed to the line of an
          internal table that was deleted
        - You address a field symbol that was previously reset using
          UNASSIGN or that pointed to a local field that no
          longer exists
        - You address a global function interface, although the
          respective function module is not active - that is, is
          not in the list of active calls. The list of active calls
          can be taken from this short dump.
    Exactly the line selected with error is:
    >>>>    <fs_zvirtkf> = '10.0'.
    I will appreciate your help
    Thank you
    Al

  • Calculating count of orders using virtual key figures

    Hi All,
    In my report, i need a counter for the number of distinct orders.
    1ROWCOUNT didnt work for me as i want the count of distinct orders alone.
    I am planning to use virtual key figure for this..
    However, i donno how to code this in ZXRSRU02 and ZXRSRZZZ.
    Any help on this would be great!!
    Thanks!
    - Arun KK

    Shana,
    I dont understand your question.
    I'll give an eg.
    this is how the cube is.
    Order | Desc | Location
    101  |   'X'  | loc01
    101  |   'X'  | loc02
    102  |   'Y'  | loc01
    103  |   'Z'  | loc01
    102  |   'Y'  | loc02
    in the report, i need the o/p to  be.
    Order | Desc | count
    101  |   'X'  | 1
    102  |   'Y'  | 1
    103  |   'Z'  | 1
    i cant use 1rowcount as that counts each row and not the service orders.
    Hope this answers your question.
    Please let me know if there is a solution for this.
    Thanks!
    ~ Arun KK

  • Virtual Key Figure - Cumulation

    Hi all,
    I am trying to cumulate a virtual key figure for all fiscal periods one by one but I want to sort the Fiscal periods in the badi RSR_OLAP_BADI as if the fiscal periods are not sorted then the cumulation does not happen correctly.Could anybody please guide how to access the entire data set of the query in the badi COMPUTE method...What I am getting is only a record by record access in the method.
    Rgds
    Amit

    While Generating the Query it goes to the Break Point , but not where key figure is getting calculated.
    But after that if i execute Query still its teh same

  • Virtual Key Figure

    Hi all,
    Before implementing a virtual key figure, I'd like to make sure this will answer my need. I work for a brewery, and I am looking at our customer taps activity.
    Records in the cube:
    Trading Region A, Brand X, Customer 001, Action "Install": 1 "Tap action"
    Trading Region A, Brand X, Customer 002, Action "Install": 2 "Tap action" (<i>new taps</i>)
    Trading Region A, Brand X, Customer 002, Action "Removal": 1 "Tap action" (<i>old tap</i>)
    So what I want to have in my report is :
    Trading Region A Brand X: 2 "customer activity"
    I am thinking I could use a virtual key figure that will look in the cube and check if there was any activity for a customer on that brand and trading region, and then will allow me to aggregate the result in the query.
    But I am not sure because it seems to me that Virtual Key Figure are calculated at record level...
    Could any of you clarify this for me ?
    Many thanks for your help,
    Nicolas

    Thanks a lot !
    I don't know why I tried such a complicated solution...
    Tried to assign points and close the issue, let me know if it didn't work as this is my first post...

  • Using Virtual Key Figures/ Characteristics is possible to use in InfoSets

    Hi All,
    Is it possible Using Virtual Key Figures/ Characteristics is possible to use in InfoSets?
    I have tried all the possibilities using the BADI implementation RSR_OLAP_BADI without success.
    The VKF / Characteristics works fine when it is being used with a query based on the ODS however it is not populated when i am using the infoset. Moreover i have used the code for InfoSet as well it is not working.
    I would appreciate any help in this regard.
    Regards
    Noor

    Hi PV,
    r u sure about that, as i have tried all sort of permutation and combinations for using the same in RSR_OLAP_BADI without any luck.
    I have the got felling about the same however if you look into the following SAP note it puts me into doubt.
    Note 657690 - Virtual characteristics and key figures in InfoSets
    Note 618738 - Virtual characteristics or key figures and InfoSets.
    It describe about using the RSR00002.
    Many thanks for the information.
    Kind Regards
    Noor

  • Virual Key figure exit does not work

    Hi,
    Detail - We are trying to build a logic for a virtual key figure.
    We have created a VKF (Virtual key figure) and added that in cube and respective multi-provider.
    We also added that VKF into the query .
    Now we are using following approach and it doesnot work -
    Approach 1 -
    We created BADi called ZBIVAR_IMP based on RSR_OLAP_BADI using SE19 transaction. In this definition , we included our class - ZCL_IM_BIVAR_IMP
    We activated this BADi definition and then in our Z Class - we have 3 methods, define, initialize and compute. We activated break-point .
    We wrote a code there and followed sample code of CL_EXM_IM_RSR_OLAP_BADI class.
    Now when we try to excute our query from RSRT, system doesnot stop at our break-point. In another words, this BADi is not getting called.
    We also observed following settings if that matters --
    1) When we go to RSRT for the query name and click on option, "No paraller processing" is on.
    2) When we go to RSRT and click on technical info, we see "Virtual key Figure" property is set to NO. If this needs to be changed then how do we do that?
    3) We activated BADi definition but not sure if we need to activate BADi implementation , if yes then how?
    Approach 2 -
    We develop code in one of the BEx user exit called EXIT_SAPMRSRU_001
    In this exit , we have include called INCLUDE ZXRSRU02 .
    We donot have any other includes such as ZXRSRZZZ or ZXRSRTOP. To be frank , we donot know how to use these includes and where are those available to be used?
    Problem of this approach is we cannot use C_S_DATA that gets final logic of key figure to be used in BEx report.
    Both of these approaches doesnot work..
    Your help in this regard will be highly appreciated.
    Thanks,
    Raj.

    Hi BI technical folks..
    I also have simillar issue at my place. Can someone help?
    Thanks
    A

Maybe you are looking for