Virtual Key Figures - Field Symbol

Dear guru's,
   We had obtained an ABAP error in the execution of a query when obtaining a virtual key figure. We analyzed the problem and identified the error. We fixed it in our dev system and tested ok.We then transported the includes ZXRSRU02, ZXRSRTOP, ZXRSRZZZ to our quality system and the problem persisted. The error occurs because the structure c_s_data has not updated to include the added object and therefore assigns the structure to the field symbol and not its value.
   I have checked the versions of these includes and they are identical. What could be the possible causes for this problem and solutions?
Thanks and Kind Regards,
Alex

We transfered many times the corrected code and still the probem persisted. If my understanding is correct the structure c_s_data is created by BW according to the appends you make in the code (...RU02).
The problem was resolved when we regenrated the queries. If anyone can explain why this is so, please let me know so that I may have a better understanding of this process.
Thanks and Kind Regards,
Alex

Similar Messages

  • BADI for populating virtual Key Figure : Exception Occurs

    Hello,
    I am using BADI for populating virtual Key Figure.
    Since my info provider in a Cube , query is built on it with addition to Virtual Key figure.
    I have used select statement for retrieving data from cube as input for the variables in BADI.
    But after debugging it , it stop or exception occurs at the select statement.
    Need help for the same.
    My code :  Cube name : ZGMR_C01
    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.
    Insert Code
      CASE i_s_rkb1d-infocube.
        WHEN 'ZGMR_C01'.
          l_s_chanm-chanm = 'ZEC_PLOAD'.
          l_s_chanm-mode = rrke_c_mode-read.
          APPEND l_s_chanm TO c_t_chanm.
          l_s_chanm-chanm = 'ZCOM_BLM'.
          l_s_chanm-mode = rrke_c_mode-read.
          APPEND l_s_chanm TO c_t_chanm.
          APPEND 'ZVKF_TTBL' TO c_t_kyfnm.
      ENDCASE.
    endmethod.
    DEFINE ******
    COMPUTE *****
    method IF_EX_RSR_OLAP_BADI~COMPUTE.
    FIELD-SYMBOLS <fs_ZVKF_TTBL> TYPE ANY.   -
    Virtual Key Figure
    FIELD-SYMBOLS <fs_ZEC_PLOAD> TYPE ANY.  -
    Variable 1
    FIELD-SYMBOLS <fs_ZCOM_BLM> TYPE ANY.   -
    Variable 2
    DATA: l_ZVKF_TTBL TYPE /BIC/OIZVKF_TTBL.
    TYPES : BEGIN OF TY_ITAB,
    PLOAD TYPE /BIC/OIZEC_PLOAD,
    BLMONTH TYPE /BIC/OIZCOM_BLM,
    TOTBL TYPE /BIC/OIZKF_TOTBL,
    END OF TY_ITAB.
    data: IT_ITAB TYPE STANDARD TABLE OF TY_ITAB,
          WA_ITAB type TY_ITAB.
    data: IT_ITAB1 TYPE STANDARD TABLE OF TY_ITAB,
          WA_ITAB1 type TY_ITAB.
    ASSIGN COMPONENT P_KYF_ZVIR_TOT OF STRUCTURE c_s_data
    TO <fs_ZVKF_TTBL>.
    ASSIGN COMPONENT P_CHA_ZVIR_POL OF STRUCTURE c_s_data
    TO <fs_ZEC_PLOAD>.
    ASSIGN COMPONENT P_CHA_ZVIR_MON OF STRUCTURE c_s_data
    TO <fs_ZCOM_BLM>.
    break-point id z_routines.
    SELECT  /BIC/DZGMR_C011SID_ZEC_PLOAD  /BIC/DZGMR_C01TSID_0CALMONTH /BIC/VZGMR_C01F~/BIC/ZKF_TOTBL
    FROM /BIC/VZGMR_C01F
    INNER JOIN /BIC/DZGMR_C011 ON /BIC/VZGMR_C01FKEY_ZGMR_C011 = /BIC/DZGMR_C011DIMID
    INNER JOIN /BIC/DZGMR_C01T ON /BIC/VZGMR_C01FKEY_ZGMR_C01T = /BIC/DZGMR_C01TDIMID
    INTO TABLE IT_ITAB
    WHERE /BIC/DZGMR_C011~SID_ZEC_PLOAD = <fs_ZEC_PLOAD>
    AND /BIC/DZGMR_C01T~SID_0CALMONTH = <fs_ZCOM_BLM>.
    break-point id z_routines.
    LOOP AT IT_ITAB INTO WA_ITAB.
    WA_ITAB1-PLOAD = WA_ITAB-PLOAD.
    WA_ITAB1-BLMONTH = WA_ITAB-BLMONTH.
    WA_ITAB1-TOTBL = WA_ITAB-TOTBL.
    COLLECT WA_ITAB1 INTO IT_ITAB1.
    CLEAR : WA_ITAB1 , WA_ITAB.
    ENDLOOP.
    break-point id z_routines.
    IF sy-subrc EQ 0.
    <fs_ZVKF_TTBL> = WA_ITAB1-TOTBL.
    endif.
    endmethod.
    COMPUTE *****

    Exception :
    Exception CX_SY_NO_HANDLER triggered
    An exception with the type CX_SY_OPEN_SQL_DB occured, but was not handled
    This comes when i debug the BADI.

  • Problems with creating badi implementation for virtual key figures

    Hi,
    I'm running BI 7.0 (unicode).
    I have been trying to follow this blog to calculate the virtual keyfigure in my infoset - Using Virtual Key Figure and Characteris in an InfoSet
    My infoset includes 1 infocube, and 3 master data infoobjects. I have created everything the blog was referring to, and activated fine. However, it seems that when the field symbols are assigned from the c_s_data structure, they do not get referenced correctly, so that no correct memory area is assigned and instead the whole c_s_data structure is assigned to the field symbol, which prevents me from referencing the right mem area correctly.
    For example, in this statement
    ASSIGN COMPONENT P_CHA_ZMYINFOSET___F120 OF STRUCTURE c_s_data
                                                                           TO  <fs_ZMYINFOSET___F120>.
    the component p_cha_zmyinfoset___F120 of c_s_data supposed to be assigned to the field symbol (point to the correct place in structure c_s_data). In other words when this statement is executed, the program looks at structure c_s_data, finds the component zmyinfoset___F120 in it, and assignes the position of that component in the structure to the field symbol, so that it could be referenced in the code. However, the correct assignment does not happen.
    When I debug the code and view the structure c_s_data, I can never find any component with any of the names I can find in my BEX query like ZMYINFOSET___F120. All I see are the components that are named like these: Z____5179 (C_S_DATA-Z____5179), C_S_DATA-S____5150, etc. I see the correct values, but components all have weired names like that. I thought in Infosets the components are named in the following fashion: INFOSETNAME___FXXX which you can see from your BEX query designer. Why is this happening? Why don't I see the correct names in the c_s_data structure? If instead I try to assign those components with their weired names directly, I still get incorrect assignment.
    what am I doing wrong?
    I was reading abap help on this statement:  assign COMPONENT comp OF STRUCTURE struc
    and the following I found:
    With this expression for mem_area, the memory area of a component comp of a structure struc is assigned to the field symbol. While the structure struc is specified directly, a data object must be specified for comp. The evaluation depends on the data type of comp:
    If the field comp has a non-text, elementary type, the content is converted to the type i and interpreted as a position of the component in the structure. if the value for comp is 0, the storage area of the entire structure is assigned to the field symbol.
    From what it says above, my value for comp is always 0, so that the entire structure is always assigned to my field symbol instead of a specific position in that structure.
    please let me know what is wrong here.
    thanks.
    Edited by: AG on Oct 11, 2008 10:41 AM
    Edited by: AG on Oct 11, 2008 10:42 AM

    Hi,
    I am facing the similar issue. Can you please tell me how you solved this problem in more details?
    which sample code and how u can find that in SE24 and where to copy that code.
    Thanks in advance..
    vamsi.

  • Problems using virtual key figures

    Hi experts,
    I have got 2 questions regarding virtual key figures, by using the OLAP BADI
    1. Is there a chance to get the variable values out of the variable selection screen in the BADI implemtentation? If so, how?.
    2. In the compute method the assign does not work because the Attributes (p_kyf_ZIMCREDAY, p_cha_0material,p_cha_0calday)  are 0 all the time.
        How does the attribute get a correct assignment to a component name? See my coding of the define and compute method below.
    Thanks and Regards, Mario
    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 'ZD_IMC001'.
    l_s_chanm-chanm = '0MATERIAL'.
    l_s_chanm-mode = rrke_c_mode-read.
    APPEND l_s_chanm TO c_t_chanm.
    l_s_chanm-chanm = '0CALDAY'.
    l_s_chanm-mode = rrke_c_mode-read.
    APPEND l_s_chanm TO c_t_chanm.
    APPEND 'ZIMCREDAY' TO c_t_kyfnm.
    ENDCASE.
    IF_EX_RSR_OLAP_BADI~COMPUTE
    FIELD-SYMBOLS <fs_ZIMCREDAY> TYPE ANY.
    FIELD-SYMBOLS <fs_material> TYPE ANY.
    FIELD-SYMBOLS : <fs_calday> TYPE ANY.
    ASSIGN COMPONENT p_kyf_ZIMCREDAY OF STRUCTURE c_s_data
    TO <fs_ZIMCREDAY>.
    ASSIGN COMPONENT p_cha_0material OF STRUCTURE c_s_data "p_cha_0material
    TO <fs_material>.
    ASSIGN COMPONENT p_cha_0calday OF STRUCTURE c_s_data "p_cha_0calday
    TO <fs_calday>.

    Regarding 1.
    I checked in debugging the variable I_TH_SFC in the initialize method, but there is no information regarding the selections in the variable popup.
    Can you please explain in detail how to access the variable values.
    Regarding 2.
    I changed l_s_chanm-mode to rrke_c_mode-no_selection according to your recommendation.
    Unfortunately it´s still the same. The attributes still does have the value 0. Therefore the assign does not work correct.
    The attributes are defined with type i. But the component names are like 'K____132'. Is this the cause of the problem?
    Thanks, Mario

  • BEX - Virtual key-figure

    Hi gentlemen,
    I am facing a problem with a BADI that I created for populating a virtual key figure.
    I simply want to read a masterdata table and populate a key figure. When executing the query, a dump occurs with a very explicit explanation. Unfortunately, I don't know how to solve it.
    Dump:
    You attempted to assign a field to a typed field symbol,
    but the field does not have the required type.      
    Attributes in the BADI:
    P_CHA_0PLANT     Instance Attribute     Private     Type     I     Plant
    P_KYF_ZSHPQTEUT     Instance Attribute     Private     Type     I     Shipment quantity EUT
    See below.
    Define:
    method IF_EX_RSR_OLAP_BADI~DEFINE.
    DATA: l_s_chanm like line of c_t_chanm.
    DATA: l_kyfnm TYPE rsd_kyfnm.
    CASE i_s_rkb1d-infocube.
        WHEN 'ZFM_M01'.
          l_s_chanm-chanm = '0PLANT'.
          l_s_chanm-mode  = rrke_c_mode-read.
          APPEND l_s_chanm TO c_t_chanm.
    l_kyfnm = 'ZSHPQTEUT'.
    APPEND l_kyfnm TO c_t_kyfnm.
    endcase.
    ENDMETHOD. "if_ex_rsr_olap_badi~define   "
    Compute:
    METHOD if_ex_rsr_olap_badi~compute .
      FIELD-SYMBOLS: <fs_ZSHPQTEUT> TYPE /BIC/OIZSHPQTEUT.
      FIELD-SYMBOLS: <fs_0PLANT> TYPE /BI0/OIPLANT.
      ASSIGN COMPONENT P_CHA_0PLANT OF STRUCTURE c_s_data
      TO <fs_0PLANT>.
      ASSIGN COMPONENT P_KYF_ZSHPQTEUT OF STRUCTURE c_s_data
      TO <fs_ZSHPQTEUT>.
      SELECT /BIC/ZSHPQTEUT
      INTO <fs_ZSHPQTEUT>
      UP TO 1 ROWS
      FROM /BI0/PPLANT
      WHERE PLANT = <fs_0PLANT>.
      ENDSELECT.
    ENDMETHOD.
    Thank you in advance.
    Jacques

    Hi Jacques,
    Please include 2 changes:
    1. As suggested by Jen, declare Field Symbols with type ANY.
    2. Instead of directly using Field symbol values in the select query, create 2 temporary variables of type string and use them.
    After changes the method COMPUTE would look like below:
    METHOD if_ex_rsr_olap_badi~compute.
    FIELD-SYMBOLS: <fs_ZSHPQTEUT> TYPE ANY.
    FIELD-SYMBOLS: <fs_0PLANT> TYPE ANY.
    ASSIGN COMPONENT P_CHA_0PLANT OF STRUCTURE c_s_data
    TO <fs_0PLANT>.
    ASSIGN COMPONENT P_KYF_ZSHPQTEUT OF STRUCTURE c_s_data
    TO <fs_ZSHPQTEUT>.
    DATA tp_shpqty type string.
    DATA tp_plnt  type string.
    IF <fs_0PLANT> is ASSIGNED.
    tp_plnt = <fs_0PLANT>.
    ENDIF.
    SELECT SINGLE  /BIC/ZSHPQTEUT
    INTO tp_shpqty
    FROM /BI0/PPLANT
    WHERE PLANT = tp_plnt.
    IF <fs_ZSHPQTEUT> is ASSIGNED.
    <fs_ZSHPQTEUT> = tp_shpqty.
    ENDIF.
    ENDMETHOD.
    Regards,
    Hemant Khemani

  • Issue with Virtual Key Figures Using BADI

    Hi,
    We are populating values for a few virtual key figures in a query over a multiprovider through a BADI implementation(RSR_OLAP_BADI). On execution the VKF fields appear blank in the report.
    We tried debugging the methods of BADI by adding Break-Points in specific points. On doing so, we found that the values are properly updated in the 'Field-Symbols' used in the Compute method, but the same values do not appear in the report result and the fields are blank.
    Kindly provide any pointers or suggestions.
    Thanks.

    First check in <b>Technical Information</b> in <b>RSRT</b> , whether the
    <b>Virtual Char/Key</b> Fig is<b> Y</b> or <b>N</b>.

  • Virtual Key Figure ( Currency Problem)

    Hi All,
    I am facing one problem in virtual key figure using BADI. Need your help...
    Scenario: I have a DSO with all many fields. Requirement is to add one more VKF in DSO to get specific period balance of a GL from 0FIGL_O10 DSO and then display it as a column in Bex report. Added VKF is of type amount and unit/currency 0CURRENCY.
    Required Report Format:
    Material --- Col1 u2013 Col2 u2013 Col3(VKF)
    M1--$4, 00-$140, 00u2014<Balance form 0FIGL_O10 for a period>
    Work done so far:
    I have added a virtual key figure ZVKF_BAL in my ZSD_O06 of type amount unit/currency as 0CURRENCY. In RSR_OLAP_BADI I have added a new implementation ZVAR_IMPL.
    In class ZCL_IM_VAR_IMPL there are total three attributes.
    P_KYF_ZVKF_GL u2013 Virtual key figure
    P_CHA_0FISCPER u2013 Period is from ZSD_O06 for which we have to get the balance of a fixed GL account from 0FIGL_O10.
    Given is the code added in define method:
    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 'ZSD_O06'.
        l_s_chanm-chanm = '0FISCPER'.
        l_s_chanm-mode = rrke_c_mode-read.
        APPEND l_s_chanm TO c_t_chanm.
        APPEND 'ZVKF_GL' TO c_t_kyfnm.
      ENDCASE.
    No code added in initialize method
    Given is the code added in compute method:
    FIELD-SYMBOLS <fs_ZVKF_GL> TYPE ANY.
    FIELD-SYMBOLS <fs_0FISCPER> TYPE ANY.
    DATA :LV_FS_ZVKF_GL TYPE /BI0/OIBALANCE,  
    p_cha_0FISCPER = 8.  "ASSINGING POSITIONS TO THE FIELD AS THEY ARE NOT GETTING IT
    p_kyf_ZVKF_GL = 16.
    ASSIGN COMPONENT p_kyf_ZVKF_GL OF STRUCTURE c_s_data
                TO <fs_ZVKF_GL> .
    ASSIGN COMPONENT p_cha_0FISCPER OF STRUCTURE c_s_data
                TO <fs_0FISCPER>.
    Customized function module which will calculate the GL Balance.
      CALL FUNCTION 'ZGLBALANCE'
        EXPORTING
         FISCPER_I    = <fs_0FISCPER>
         GL_ACCOUNT_I = '0000476000'
        IMPORTING
          BALANCE_O    = LV_FS_ZVKF_GL.
    <fs_ZVKF_GL> = LV_FS_ZVKF_GL.
    Code of ZGLBALANCE:
    DATA: lv0_fiscal type /BI0/OIFISCPER.
    DATA :  X TYPE I VALUE 0,
    types: BEGIN OF ty_/BI0/AFIGL_O1000,
           FISCPER type /BI0/OIFISCPER,
           GL_ACCOUNT type /BI0/OIGL_ACCOUNT,
           BALANCE type /BI0/OIBALANCE,
           CURRENCY TYPE /BI0/OICURRENCY,
            END OF ty_/BI0/AFIGL_O1000.
    data: it_/BI0/AFIGL_O1000 type TABLE OF ty_/BI0/AFIGL_O1000, " Internal table
          wa_/BI0/AFIGL_O1000 type ty_/BI0/AFIGL_O1000.          " Work area
    select single FISCPER GL_ACCOUNT BALANCE CURRENCY from /BI0/AFIGL_O1000 into CORRESPONDING FIELDS OF TABLE it_/BI0/AFIGL_O1000 where GL_ACCOUNT eq GL_ACCOUNT_I and FISCPER eq FISCPER_I and CURRENCY = 'USD'.
    BALANCE_O = X .
    Problem:
    We are getting the balance values but it is coming with numeral with postfix ERROR.
    M1--$4, 00-$140, 00u201412,00 ERROR
    M2--$24, 00-$130, 00u201414,00 ERROR
    Is it something to do with currency? Please let us know what is worng in code?
    If yes please let me know how to get the currency along with the numeric values there in the report.
    Thanks & Regards,
    Mayank

    Hello mayankmishra135,
    Were you able to find a solution for this? I am facing the same issue (with the ERROR in the currency field), wuold appreciate your help.
    Best regards,
    Aleksander Dyl

  • 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

  • Help needed for Virtual Key Figure BADI

    I am trying to implement Virtual Key Figures via BADI.
    Here is what I have done
    Define Method
    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.
    WHEN 'ZMCOPA_02'.
      l_s_chanm-chanm = '0CUSTOMER'.
      l_s_chanm-mode = rrke_c_mode-read.
      APPEND l_s_chanm TO c_t_chanm.
      APPEND 'ZCPRC_FLG' TO c_t_kyfnm.
      APPEND 'ZRTNS_PRC' TO c_t_kyfnm.
    ENDCASE.
    ENDMETHOD. "if_ex_rsr_olap_badi~define
    Compute Method
    method IF_EX_RSR_OLAP_BADI~COMPUTE.
    FIELD-SYMBOLS <fs_ZRTNS_PRC> TYPE ANY.
    FIELD-SYMBOLS <fs_ZCPRC_FLG> TYPE ANY.
    FIELD-SYMBOLS <fs_0customer> TYPE ANY.
    DATA: l_zv_20dv TYPE curr09.
    ASSIGN COMPONENT p_kyf_ZRTNS_PRC OF STRUCTURE c_s_data
    TO <fs_ZCPRC_FLG>.
    ASSIGN COMPONENT p_kyf_ZCPRC_FLG OF STRUCTURE c_s_data
    TO <fs_ZCPRC_FLG>.
    ASSIGN COMPONENT p_cha_0customer OF STRUCTURE c_s_data
    TO <fs_0customer>.
      DATA: l_zrtns_prc TYPE /bic/pzcust_prc-/BIC/ZRTNS_PRC.
      DATA: lt_zcust_prc TYPE TABLE OF /bic/pzcust_prc.
      DATA: ls_zcust_prc TYPE /bic/pzcust_prc.
      IF NOT p_cha_0customer IS INITIAL.
      <fs_0customer> =
      ENDIF.
    SELECT SINGLE *
      INTO ls_zcust_prc
      FROM /bic/pzcust_prc
      WHERE /bic/zcust_prc = <fs_0customer>.
    IF sy-subrc = 0.
      <fs_ZCPRC_FLG> = 1.
      <fs_ZRTNS_PRC> = ls_zcust_prc-/BIC/ZRTNS_PRC.
    ELSE.
      <fs_ZCPRC_FLG> = 0.
      <fs_ZRTNS_PRC> = 0.
    ENDIF.
    endmethod.
    I have commented out line in the Compute method because I was getting an error on my SELECT statement.  I think the error is due to the fact that <fs_0customer> is not being populated.
    In debug mode, p_kyf_ZRTNS_PRC, p_kyf_ZCPRC_FLG and p_cha_0customer all return 0.  Shouldn't they have a different value.  I have to admit that I don't really understand how ASSIGN COMPONENT works.
    I have defined p_kyf_ZRTNS_PRC, p_kyf_ZCPRC_FLG and p_cha_0customer in the Attribute tab.
    Any help would be appreciated.  I have spent several hours trying to figure out how this works.
    Thanks.
    Ryan

    Check this if it helps:
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/e051fda8-71a9-2a10-ac9e-8d17414a8c8c

  • 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

  • Virtual Key Figures - How are they triggered?

    HI,
    I am trying to implement the Virtual Key Figure user-exit. I have created all the necessary coding and activated the user-exit.
    My cube contains data but the VKF in question has not been populated with any data because I have set the update rules to "NO UPDATE", so the VKF is completly empty.
    I've defined my query to use the VKF, but when I execute it, the user-exit is not triggered.
    <b>How does BW determine if a query should call the user-exit?</b> I though it was to do with creating the variables in ZXRSTOP in line with the cube/kf name as I have done (<b>DATA: g_pos_0IC_C03_zfcstwk   TYPE i.</b>).
    I'm using BW 3.5 by the way if this makes any difference.
    Here is the code I have created in the various includes:
    <u><b>ZXRSTOP</b></u>:
    *   INCLUDE ZXRSRTOP                                                   *
    DATA  g_pos_0ic_c03_fcstwk.
    **Global fields for virtual characteristics -                          *
    DATA: g_pos_0IC_C03_0plant   TYPE i.
    DATA: g_pos_0IC_C03_0material   TYPE i.
    DATA: g_pos_0IC_C03_0calday   TYPE i.
    DATA: g_pos_0IC_C03_zfcstwk   TYPE i.
    * End Program ZXRSRTOP                                                 *
    <u><b>ZXRSRZZZ</b></u>:
    * Includes for specific subroutines for each avriable
    Include: zxrsrf01,     "Common Subroutines
               zxrsrf02,     "Fiscal Period / Year Variables
               " zxrsrf05,     "Fill selections from Variable value table
               zxrsrf04.     "Fill virtual chars + KF
    FORM USER_0IC_C03 USING i_s_rkb1d TYPE rsr_s_rkb1d
      CHANGING c_s_data TYPE any.
      DATA: lsgid LIKE i_s_rkb1d-genuniid. "query ID
    * Define ODS temp table
      DATA: l_zic_forc_itab LIKE STANDARD TABLE OF /bic/azic_forc00.
    * Define cooresponding work area
      DATA: l_zic_forc_wa LIKE /bic/azic_forc00.
    * field symbols definitions
      FIELD-SYMBOLS <l_plant>.
      FIELD-SYMBOLS <l_material>.
      FIELD-SYMBOLS <l_calday>.
      FIELD-SYMBOLS <l_zfcstwk>.
      CASE i_s_rkb1d-infocube.
        WHEN '0IC_C03'.
    *      Which Query are we deriving for ?.
          CASE i_s_rkb1d-compid.
            WHEN 'Z0IC_STKVAL'  OR
                 'Z0I_EXP_DAT' OR
               'Z0IC_PCM_STKVAL'.
    *          Assign object values to field symbols
              ASSIGN COMPONENT g_pos_0ic_c03_0plant
                OF STRUCTURE c_s_data TO <l_plant>.
              ASSIGN COMPONENT g_pos_0ic_c03_0material
                OF STRUCTURE c_s_data TO <l_material>.
              ASSIGN COMPONENT g_pos_0ic_c03_0calday
                OF STRUCTURE c_s_data TO <L_CALDAY>.
              ASSIGN COMPONENT g_pos_0ic_c03_zfcstwk
                OF STRUCTURE c_s_data TO <l_zfcstwk>.
              SELECT * INTO TABLE l_zic_forc_itab
                 FROM /bic/azic_forc00
                 WHERE material = <l_material>
                   AND plant = <l_plant>.
              IF sy-subrc NE 0.
    *             no sort required
              ELSE.
    * Fill the VKF by reading the itab and locating the first record that exists >= 0calday
                SORT l_zic_forc_itab BY calday ASCENDING.
                LOOP AT l_zic_forc_itab INTO l_zic_forc_wa
                        WHERE calday <= <l_calday>.
                  IF sy-subrc EQ 0.
                    <l_zfcstwk>  = ''.
                  ELSE.
                    <l_zfcstwk>  = l_zic_forc_wa-/bic/zfcstwk.
                    EXIT.
                  ENDIF.
                ENDLOOP.
              ENDIF.
          ENDCASE.
      ENDCASE.
    ENDFORM.                    "user_0IC_C03
    * End Program ZXRSRZZZ                                                 *
    <u><b>ZXRSRU02</b></u>:
    * ZXRSRU02    Exits for Virtual chars and Key Figs                    *
    DATA: l_s_chanm TYPE rrke_s_chanm.
    DATA: l_s_kyfnm TYPE rsd_kyfnm.
    *   Which cube are we deriving for ?.
    DATA: l_stop(1) TYPE c VALUE 'Y'.
    WHILE l_stop = 'Y'.
    ENDWHILE.
    CASE i_s_rkb1d-infocube.
      WHEN '0IC_C03'.
    *        Which Query are we deriving for ?.
        CASE i_s_rkb1d-compid.
          WHEN 'Z0IC_STKVAL'  OR
               'Z0I_EXP_DAT' OR
               'Z0IC_PCM_STKVAL'.
    *             set up the chars to be used or abused. (based on mode)
            l_s_chanm-chanm = '0MATERIAL'.
            l_s_chanm-mode  = rrke_c_mode-read.
            APPEND l_s_chanm TO e_t_chanm.
            l_s_chanm-chanm = '0PLANT'.
            l_s_chanm-mode  = rrke_c_mode-read.
            APPEND l_s_chanm TO e_t_chanm.
            l_s_chanm-chanm = '0CALDAY'.
            l_s_chanm-mode  = rrke_c_mode-read.
            APPEND l_s_chanm TO e_t_chanm.
            l_s_kyfnm = 'ZFCSTWK'.
            APPEND l_s_kyfnm TO e_t_kyfnm.
        ENDCASE.
    ENDCASE.
    * End Program ZXRSRU02                                                 *

    hi Peter,
    try to check with RSRT, put in your query technical name,
    and click 'technical information', check info on 'virtual char/keyfigures', it should have 'Y' and a list of virtual char/kf. and also check 'execute+debug', mark checkbox 'display sql', after that check the sql statement if your virtual kf is in select statement.
    try in RSRT menu 'environment'->delete old abaps.
    if you want the virtual kf only run for certain query,
    you can restrict in ZXRSRZZZ, using
    if I_S_RKB1D-compid = 'your query technical name'.
    ... your logic for virtual kf ...
    endif.
    hope this helps.

  • BW : Virtual key figures

    Hii  experts  ,
    What are virtual key figures .
    Plz explain .
    Thanks & regards ,
    Madhavi S Bichakal

    Dear Madhavi,
    Virtual Key figure
    virtual key figures are key figures within an InfoProvider that are not filled with data. Instead the key figure value is determined at runtime of the query using custom ABAP coding .
    this keyfigure is not populated with the data by using update rules. but this virtual keyfigures will detemine the value only at the runtime of the query.
    nomally when we store the key figure value in the cube as we do it for a normnal keyfigure it gives us the fact(Fixed truth ) information but by using virtual keyfigures we can show the present truth in the report.
    for example :- let say we have a transaction on 01/01/2007 for material M100 @ price of 100 and on 02/01/2007 the price of material M100 has changed to 200.
    when we store price as a normal keyfigure in the cube it will give fact i.e, 100
    but if we design the price as a virtual keyfigure it will give out present truth as 200.
    Virtual characteristics and Key figures are useful if you want to dynamically pouplate data from the fact table to the field which doesn't have any data in the fact table and also used to build an internal security model before the data gets passed to DATA_PROVIDER.
    You can get more information if you review the documentation for enhancement RSR00002.Go to SMOD type in RSR00002 and select the documentation radiobutton..
    Some ABAB coding samples:
    Virtual Characterstics & Key Figures
    Virtual Characteristic problem
    how to read characteristic variable value into virtual characteristic
    How to implement Virtual Characteristics or Virtual key figures
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/59069d90-0201-0010-fd81-d5e11994d8b5#search=%22SAP%20Customer%20Exit%20virtual%20key%20figure%22
    For more info
    You can go through the following links.
    Virtual Key Figures
    sampel code for virtual key figures
    Virtual Key Figure - ZXRSRU02
    Virtual Keyfigures and Characterisitics
    How to implement Virtual Characteristics or Virtual key figures
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/biw/g-i/how%20to%20use%20variable%20time%20references%20in%20currency%20conversion
    Search for the keyword virtual keyfigure in the following link :
    https://www.sdn.sap.com/sdn/developerareas/bi.sdn?page=BW_How_To.htm
    Creating Virtual keyfigures
    you create virtual keyfigure just like create normal keyfigure (RSD2),
    populate not via transformation/transfer/update rules, but when query execution via user exit, take a look
    Virtual Characteristic problem
    virtual key figure
    http://www.bwexpertonline.com/downloads/Nissen.doc
    Also
    How to implement Virtual Characteristics or Virtual key figures
    Check post by Sree Rama Tata 
    Hope it helps
    Regards
    Bala

  • Virtual Key figures and Chars

    Can someone explain me what are virtual key figures and how to populate data for them.
    Regards
    Kunal

    AHP,
    Thanks for the help, one last question, i posted same on sdn week back, there was no proper response. I have standard LO datasource and enhanced with around 25 fields, the major problem is none of these fields are delta capable and they are coming from 13 diff tables, with great difficulty i could tie the relation between them. Most of the fields change and none them are picked,
    is there anyway i can write a program for all this fields for delta enabling. The last option which iam left is to load the data every week as full load though data volume is less, which is not practiced.
    Regards
    Kunal

  • Type conflict with ASSIGN in BADI for Virtual Key Figures

    We get the below error dump in ST22 when executing BEx queries that contain virtual key figures.
    error message - 'Type conflict with ASSIGN in
    program "ZCL_IM_THR_RSR_OLAP_BADI======CP".'
    We have a BADI implementation that calculates few virtual key figures included in some infocubes & multiproviders. The error would arise if we execute two queries (containing common Virtual Key figures) one after the other without closing the first query.
    We found a note "Note 1237689 - Virtual chars. and key figures in input-ready querys" that could be relevant to our issue and wanted to apply this note but unfortunately the note is only applicable to SAPKW70016 to SAPKW70018 and we are support pack 15.
    Can you please advise what the problem could be/suggest corrections for the same.

    Hi Kulmohan,
    Did you fix your issue? We are facing the same issue. Could you please let me know if you have any solution for this issue,
    Thank you,
    Mike

  • 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...

Maybe you are looking for

  • Web Service and security....

    Hi everyone, I wanted to know if someone suceeded to call a web service via a Java standalone class using a Deployable Proxy ? If yes, can someone gives me all the steps ? Thanks a lot for your help. NB : I succeeded calling a web service via Standal

  • WRT350N partially loses Internet connection

    Sometime (quiet random) after sometime the router loses partially ita surfing abilities which means, I am able to use Skype, messenger, torrent client etc. BUT not able to read neither web pages nor emails (using Outlook). Seems that the router for s

  • OSB Patch TYBN and U37G - ws-security interoperability

    Hi All, I am using weblogic 9.x style security with OSB 11g which will be communicating with OWSM enabled weblogic server on the server side. According to the below URL http://docs.oracle.com/cd/E17904_01/web.1111/e16098/interop_osb.htm +"Note:+ +Ens

  • DB connection options on Three tier architecture - Please help

    Hi There, I have the following scenario to connect to Oracle 12c database on EPIC 1. The Client Desktop: It has a Windows 7 as OS and should Connect to database via SQL Developer, MS Access. 2. The Web Tier: It has Windows 2012 R2 with IIS 8.5 as OS

  • Change Myself system in RSA1 trx after client copy

    Hi, I have installed SCM 2007 system. As post-processing step i have configured myself system in RSA1 trx in the 001 client. Now, i want to perform client copy and use that new client 100 as Prod client. What are the steps required to change myself s