Query - customer exit help

I asked this question previously, but did not clear answers. Just for clarification - in my DSO there is just one date field (0calday), one characteristic (ZTYPE) and one key figure (ZRATE)
User will enter one date : September 03, 2008 , the query must display all values till the beginning of the month
September 03, 2008 --- Type 1 - 1.5
September 02, 2008 --- Type 1 - 2.0
September 01, 2008 --- Type 1 - 3.0
September 03, 2008 --- Type 2 - 6.0
September 02, 2008 --- Type 2 - 3.6
September 01, 2008 --- Type 2 - 2.8
Solution : This is how I'm planning to do it:
Create one variable based on 0calday for user input (Zuserdate). Create another variable (Zdatrange) on 0calday for processing by customer exit. The "to date" is same as the user-entered date and the "from date" DD is hardcoded to "01" and MM/YYYY is derived from user entered date? Is this the approach? I'm not very well aware of ABAP coding so would appreciate your help.
Thanks.
Anita. K.S.
Edited by: Anita Savant on Apr 12, 2009 10:14 PM

Dear Anita,
Your approach right. Try the following code in the customer exit.
CASE I_STEP.
   WHEN '2'.
     CASE  I_VNAM.  " Name of your customer exit variable
        WHEN 'ZDATRANGE'
        READ TABLE I_T_VAR_RANGE INTO LOC_VAR_RANGE WITH KEY
                                                                VNAM = 'ZUSERDATE'
                                                              IOBJNM = u20180CALDAYu2019.  " Get user input date
        IF SY-SUBRC = 0.
          L_S_RANGE-HIGH = LOC_VAR_RANGE-LOW.      " high value = input
          L_S_RANGE-LOW = LOC_VAR_RANGE-LOW(6).  " low value, e.g.200701
          L_S_RANGE-LOW+6(2) = '01'.                               " for 1st day
          L_S_RANGE-SIGN = 'I'.
          L_S_RANGE-OPT = 'BT'.
          APPEND L_S_RANGE TO E_T_RANGE.
        ENDIF.
     ENDCASE.
ENDCASE.
B.R
Charlie
Edited by: Charlie on Apr 13, 2009 3:33 AM
Edited by: Charlie on Apr 13, 2009 3:34 AM

Similar Messages

  • Query:  Customer Exit variable not getting populated

    Hello Experts,  I created a Customer Exit variable (ZPREV_MTH_OPS) in the query designer (7.0).  I also put the necessary code in the function module "Z_BWFI_QUERY_CELL_MANIPULTN", but the query variable is not getting populated when I run the query using RSRT.  The boxes for "Variable is ready for input" and "variable is without context" boxes when defining the variable.
    This is my code in the exit:
    case i_vnam.
        when 'ZPREV_MTH_OPS'.
         break-point.
          if i_step = 2.
            clear l_s_range.
            if sy-datum+4(2) = '01'.
              wa_prev_month = '12'.
              wa_prev_year = sy-datum+0(4).
              wa_prev_year = wa_prev_year - 1.
            else.
              wa_prev_month = sy-datum+4(2) - 1.
              wa_prev_year = sy-datum+0(4).
            endif.
            concatenate wa_prev_year wa_prev_month '01' into wa_datum.
            call function 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
              exporting
                day_in            = wa_datum
              importing
                last_day_of_month = wa_datum2.
            concatenate wa_prev_year wa_prev_month '01' into wa_datum.
    *        l_s_range-low = wa_datum.
    *        l_s_range-sign = 'I'.
    *        l_s_range-opt = 'BT'.
    *        l_s_range-high = wa_datum2.
    *        l_s_range-sign = 'I'.
    *        append l_s_range to e_t_range.
            l_s_range-low = '20080901'.
            l_s_range-sign = 'I'.
            l_s_range-opt = 'BT'.
            l_s_range-high = '20080930'.
            l_s_range-sign = 'I'.
            append l_s_range to e_t_range.
          endif.
      endcase.
    I also put a break point the exit, but it's not coming to the breakpoint. 
    Any suggestions?
    Thanks.

    Josh,  the link you provided reminded me to include the code in the include ZXRSRU01 also, instead of just changing the function module.  Thanks for your help and all those who tried to help me.
    case i_vnam.
       when 'ZREL12MTH' or 'ZPREV_MTH_OPS'.
         call function 'Z_BWFI_QUERY_CELL_MANIPULTN'
           EXPORTING
             i_vnam        = i_vnam
             i_vartyp      = i_vartyp
             i_iobjnm      = i_iobjnm
             i_s_cob_pro   = i_s_cob_pro
             i_s_rkb1d     = i_s_rkb1d
             i_periv       = i_periv
             i_t_var_range = i_t_var_range
             i_step        = i_step
           IMPORTING
             e_t_range     = e_t_range
             e_meeht       = e_meeht
             e_mefac       = e_mefac
             e_waers       = e_waers
             e_whfac       = e_whfac
           CHANGING
             c_s_customer  = c_s_customer.
    endcase.

  • Query Customer Exit - Multi Single Values

    Hi SDN,
    Is it possible to return multi-single values in a customer exit for a query variable or only a range?
    I have 2 characteristics (NUMC), an item ZITEM and a group ZGROUP.  An item can belong to many groups.
    ZITEM           ZGROUP
    1                     1
    1                     2
    2                     3
    4                     1
    I would like to create a variable in Query Designer for ZITEM that returns a list of single values for ZITEM (not a range).  For example, Group 1 should return items 1, 4.
    The relationship between ZITEM and ZGROUP is not defined in master data (compounding).  Currently, I have a DSO which has ZITEM and ZGROUP defined as a key.  I would like my query variable-customer exit to read the DSO and return a list of single values of ZITEM.
    I'm assuming making ZGROUP a compounding infoobject of ZITEM would solve the issue in query designer because I could restrict on ZGROUP.  I have not used this approach because it would require modifying standard extractors.
    Another option I explored was to create an Infoset between my InfoCube and the DSO which has ZITEM & ZGROUP.  Unfortunately my InfoCube has NonCulm. Key Figures and therefore cannot be used in an infoset.
    Does anyone know how to create a multi-single value customer exit or have any ideas on how to solve this problem?
    Thanks!

    I was able to create a customer exit which performed multi-single values.
    Psuedocode:
    1) Create Internal Table and populate it with DSO data for Group and Item
    2) In Customer Exit, loop through internal table for the group you want
    3) In loop, append l_s_range to e_t_range (this will add multi-single values)
    WHEN 'ZCX_FLWGRP60'.
        IF I_STEP = 2.
          l_s_range-sign = 'I'.
          l_s_range-opt = 'EQ'.
          "get multi single values for flow types
          LOOP AT l_t_flwgrp INTO l_s_flwgrp
            WHERE /BIC/ZFLW_TP_G = '60'.
            l_s_range-low = l_s_flwgrp-FS_FLW_TP.
            append l_s_range TO e_t_range.
          ENDLOOP.
        ENDIF.

  • Custom Exit  help needed

    HI ,
    I have developed a custom exit , to restrict based on USER who logs in and gets detais for him from my two ODS in the report
    the code is some thing like this
    FOR I_STEP = 2 .
    select zempno from /bic/azhrpe00100 into table itab1 where /bic/zspnm = sy-uname.
    select zempno from /bic/azhrpe00100 into table itab2 where /bic/zspnm = sy-uname.
    CLEAR L_S_RANGE.
    loop at itab1 into temp_zempno1.
    L_S_RANGE-LOW = temp_zempno1.
    L_S_RANGE-SIGN = 'I'.
    L_S_RANGE-OPT = 'EQ'.
    APPEND L_S_RANGE TO E_T_RANGE.
    EXIT.
    ENDLOOP.
    CLEAR L_S_RANGE.
    loop at itab2 into temp_zempno2.
    L_S_RANGE-LOW = temp_zempno2.
    L_S_RANGE-SIGN = 'I'.
    L_S_RANGE-OPT = 'EQ'.
    APPEND L_S_RANGE TO E_T_RANGE.
    EXIT.
    ENDLOOP.
    SORT E_T_RANGE.
    DELETE ADJACENT DUPLICATES FROM E_T_RANGE.
    ENDIF.
    this is my code , when i debug i can see E_T_RANGE getting the values , for the STEP 2 , but i am getting this error
    <b>Error: Error for variable in customer enhancement ZEMPLO</b>

    Hi,
    For what variable? (Remember => NOT ready for Input! and mandatory input)
    a.) encapsulate it by
    FOR I_STEP = 2.
    CASE I_VNAM.
    WHEN <Your Variable>.
    Your Coding
    endcase.
    b.) also assign a high value.
    L_S_RANGE-LOW = temp_zempno1.
    L_S_RANGE-HIGH = temp_zempno1. "as well as for zempno2.
    L_S_RANGE-SIGN = 'I'.
    hth
    cheers
    sven

  • How to select data from an aggregate in a customer exit for a query?

    Hi,
    I have written a virtual key figure customer exit for a query. Earlier the selection was from the cube, where there was severe performance issue. So I have created an aggregate, activated and have loaded the data.
    Now when I select that data I find that the Key table is different in development and production. How do I resolve this.
    My code is attached below. The table in developemnt is KEY_100027 and in production is KEY_100004. This code is activated and running in BW development server.
    SELECT
        F~KEY_1000041 AS K____035
         F~KEY_1000271 AS K____035
         F~QUANT_B AS K____051
         F~VALUE_LC AS K____052
    INTO (xdoc_date, xval1, xqty1)
    UP TO 1 ROWS
    FROM
    FROM
    */BIC/E100004 AS F JOIN
    /BIC/E100027 AS F JOIN
    /BIC/DZMM_CGRNU AS DU
    ON FKEY_ZMM_CGRNU = DUDIMID
    JOIN /BI0/SUNIT AS S1
    ON  DUSID_0BASE_UOM = S1SID
    JOIN /BI0/SCURRENCY AS S2
    ON DUSID_0LOC_CURRCY = S2SID
    JOIN /BI0/SMATERIAL AS S3
    *ON FKEY_1000042 = S3SID
    ON FKEY_1000272 = S3SID
    JOIN /BI0/SMOVETYPE AS S4
    *ON FKEY_1000043 = S4SID
    ON FKEY_1000273 = S4SID
    JOIN /BI0/SPLANT AS S5
    *ON FKEY_1000044 = S5SID
    ON FKEY_1000274 = S5SID
    JOIN /BIC/D100004P AS DP
    *ON FKEY_100004P = DPDIMID
    ON FKEY_100027P = DPDIMID
    WHERE
    WHERE
    ( ( ( ( F~KEY_1000041 BETWEEN 20051230 AND 20060630  ) ) AND  ( (
    ( ( ( ( F~KEY_1000271 BETWEEN 20051230 AND 20060630  ) ) AND  ( (
             S3~MATERIAL = <l_0material> ) ) AND  ( (
                s2~movetype BETWEEN '101' AND '102' OR
             s4~movetype BETWEEN '921' AND '922' OR
             s4~movetype BETWEEN '105' AND '106' OR
             s4~movetype BETWEEN '701' AND '701' OR
             s4~movetype BETWEEN '632' AND '632' ) ) AND  ( (
             S5~PLANT = <l_0plant> ) ) AND  ( (
             DP~SID_0RECORDTP = 0  ) ) ) )
    GROUP BY
        ORDER BY F~KEY_1000271 DESCENDING.
          IF sy-subrc NE 0.
            EXIT.
          ENDIF.
        ENDSELECT.
    How do I transport the code and make it work?
    Whats the reason that the two key fields are different.
    I had transported the aggregate from development to production. Activated it and filled the data.
    What is the way out? Please help.
    Regards,
    Annie.

    Hi Sonu,
    The main task is to move the contents of the one internal table to another with some condition.
    First sort and delete the duplicate entries from the First Internal table like below : 
    sort it_tab by material ascending date_modified descending.
    delete adjacent duplicates from it_tab.
    Then move that Internal table contents to another internal table.
    Define another internal table with the same structure as you have first internal table and then
    Second Step :
    it_itab1 = it_itab.
    If you are using seperate Header line and Body then you can do like below :
           it_itab1[] = it_itab[].
    This will fix the issue.
    Please let me know if you need any further explonation.
    Regards,
    Kittu
    Edited by: Kittu on Apr 24, 2009 12:21 PM

  • Customer Exit Variable and Condition in a Query (Sequence of Execution)

    Hi,
      For a query i defined a Customer exit variable and a condition....
    Which will first execute...wether it is a  Variable and then Condition or vise versa
    Is there any way we can control sequence of execution
    My requirment is first to execute the condition and the variable how can i control this
    Thanks

    Hi
    In your customer exit you will be having a field by name I_STEP which will help you to handle the time of execution of the variable.
    Assign points if helpful
    Prathish

  • Error creating Customer Exit variable, please help

    Hi Experts,
    This is the scenario, I need to obtain the convertion rate from the table TCURR in order to convert several currencies to USD, so I created a Customer Exit variable that gets the Period and based on that obtains the conversion rate for the last day of the given month from TCURR, the problem is when I created the Formula Variable to get the value from the Customer exit variable I got the following error:
    'ZVARREGEXIT' ALREADY EXISTS; SELECT A DIFFERENT NAME.
    But in not using that name anywhere on my variables creation, Im doing something wrong? How can I check wheres is that variable being used.
    Ideas, comments are always welcome and appreciated.
    Regards.

    Hi Ed,
    Open Admin Workbench (RSA1) and choose Transport Connection --> Object Types --> Query Elements --> Variable --> Select Objects. Find the variable of interest and transfer it back to the main screen, then right-click and choose 'Display Description'. That will show you a "where used" list of queries, workbooks, etc.
    Next, you can use the previous technique to open one of the queries, find the variable in the query, and determine which InfoObject it is associated with.
    Hope this helps!
    Regards,
    Saurabh

  • Help needed in writting Customer exit - ABAP Code

    Hi Friends,
    I have a scenario in one of the query and need to write a customer exit for the same. Here is the scenario:
    I am using one input variable XXX to get input from user which feeds value to one of the charateristic  lets say "CHAR1" in query. I have one more characteristic "CHAR2" which has to get the value from the same variable XXX. This is not allowed in BI7.0 as the variable is Hierarchy Node type. It gives error that "Variable XXX is used for two different characteristics."
    So i need to create one more vaiable YYY which will get the value from XXX and then YYY will feed value to CHAR2.  I would appreciate if some one could tell me step by step how to write customer exit and give me the piece of ABAP code i need to write in my case.
    Your help will be appreciated in terms of points.
    Thanks,
    manmit

    Hi Arun,
    1. What should CHAR2 take - Hierarchy node variable or something else ?
    --> CHAR2 is a simple charateristic
    2. In your scenario - why have CHAR1 and CHAR2 ? why not have the user enter values against CHAR2 ??
    --> We dont want user to enter two input as the input values for both Chars are same.
    3. Did you try using a replacement path variable with the CHAR2 variable taking values from Variable on CHAR1 ?
    --> In BI7.0 replacement path variable only take values from Query results. So not able to do the same.
    Thanks

  • Problem with customer exit variable in BeX Query

    Hi All,
    We have created a customer exit variable in a query and populated with few patterns in customer exit.
    My query has to bring all the records where the address line is containg the patterns passed through customer exit. Here the query is not working as expected.
    It is bringing the values where the address line is exactly same as the pattern and not bringing the records where the pattern is part of the address line.
    For example: Pattern passed in customer exit = 'HOSPITAL'
    The record where address line = 'HOSPITAL' is shown in the rpeort, where the record with address line = 'HOSPITAL ROAD' is not shown in the report.
    I would appreciate your help on this.
    Regards,
    Rakesh

    Hi Diogo,
    Below is the code I am using in the customer exit.
    SELECT * FROM zae_tt_pbuild INTO TABLE gt_pbuild.
          IF sy-subrc = 0.
            LOOP AT gt_pbuild INTO gs_pbuild.
              CONCATENATE '*' gs_pbuild-pbuild '*' into lv_pattern.
              ls_range-low = lv_pattern.
              ls_range-sign = lc_sign_i.
              ls_range-opt = 'CP'.
              APPEND ls_range TO e_t_range.
              CLEAR: ls_range,
                     lv_pattern.
            ENDLOOP.
          ENDIF.
         ENDIF.
    I have tried using '%' instead of '*' aswell but the result is same.
    Thanks,
    Rakesh

  • BW Authorizations - Query variable with processing mode as "customer exit"

    Hi,
    Iam new to BW authorizations and have not yet worked on customer exit before. I was going through the documentation at various sites but I could not get the end to end description on how the query process( when using a variable for an InfoObject) works in case of customer exit.
    Let's assume that I am using  a query variable with processing mode as "customer exit" and at the exit I  write some code to extract user's authorizations from a z table. if this is the case, then when an end user runs a query,how will the the system know what value needs to be filled in the variable for the requesting user. Are the user details  also sent to the code along with the query variable? If so how. If I mis-understood the process then forgive me and let me know the correct process.

    Hi!
    welcome to SDN!
    customer exit variables need programing by user. so if you create a customer exit variable, you got to right a program which extracts values into this variable. we can do what ever we want in program, SAP will not deal anything ´with customer exits.
    with regards
    ashwin
    PS n:  Assigning point to the helpful answers is the way of saying thanks in SDN.  you can assign points by clicking on the appropriate radio button displayed next to the answers for your question. yellow for 2, green for 6 points(2)and blue for 10 points and to close the question and marked as problem solved. closing the threads which has a solution will help the members to deal with open issues with out wasting time on problems which has a solution and also to the people who encounter the same porblem in future. This is just to give you information as you are a new user.

  • Customer Exit not called upon in the Query...

    Dear Guys,
    I am working on the "Slow Moving Item(MC46)" report in BW.We need "No.of Days Not consumed" in the Input selection screen in the BW Query.We tried creating a Formula variable upon "Calday" with Data type "Numeric" and then a Customer Exit is called to the Subtract the "No. of days not consumed" from "Today's date(System Date)" and gives the result as "Earlier date" .
    (Eg: Today's Date : 04-04-08
           No. of Days Consumed : 30
           ZSlow_Mov_Date          : 03-03-08).
    But for some reason the Customer exit is not called upon when we execute the Query (RSRT-->Execute + Debug option)..Can someone take time to throw some light on this,plz?
    Manythanks
    Arun

    Hello Arun,  
    In the User Exit Code, please check at what I_STEP value the variable exit is called.
    See this link for more info about I_STEP
    [Dependencies for Variables of Type Customer Exit |http://help.sap.com/saphelp_nw04/helpdata/en/1d/ca10d858c2e949ba4a152c44f8128a/frameset.htm]
    Thanks
    [Chandran|http://chandranonline.blogspot.com/]

  • How to identify what customer exit variables are used in which query?

    Hi all,
    When i happened to check the CMOD transaction code i can find a list of customer exits are used. But i want to know what are those customer exist are used in which query? can anyone let me know the procedure of identifying it.
    Thanks a lot
    Pooja

    hii pooja
    check the foll links
    Very Urgent: Customer Exit Variable
    customer exit variable
    MIssing Authorisation for customer exit variable query
    Authorization variable or customer exit variables
    if it is helpful assign points
    thanks.

  • How to find out query name in customer exit for variables

    We use the same customer exit variable in different queries. In the customer exit we want to find out, which query has called the customer exit. With the technical query name we want to read a master data table entry.
    e.g. If we come from query ZG1_TEST1 we want to use selection sel1
    Query name  |  selection
    ZG1_TEST1   |  sel1
    ZG1_TEST2   |  sel2  
    How can we find out the query name in the customer exit for variables?
    Thanks for your help,
    Evi

    Hi Evi,
    check out the structure I_S_RKB1D in your exit. It contains the query.
    Siggi

  • Problem in the variable customer exit in the query jump target

    Hi developers,
    we have problem because we have created a variable time on 0CALDAY who is mapped in the cube of the stock with posting date.We launch the query for example with range 01/8/2005 31/8/2005 and the resul is OK.
    Then we jump on the other query where the users wish see the result of the posting date for the period 01/8/2005 31/8/2005 For resolved this problem we have created a variable customer exit for the characteristic 0Postingdate and have inserted the code in user exit variable:
    WHEN 'ZV_CEREG'.
        IF i_step = 2.
          LOOP AT i_t_var_range INTO loc_var_range
                 WHERE vnam = 'Z_DAT_AN'.
            CLEAR l_s_range.
            CLEAR datastock.
            l_s_range-low  = loc_var_range-low.
            l_s_range-high = loc_var_range-high.
            l_s_range-sign = loc_var_range-sign.
            l_s_range-opt  = loc_var_range-opt.
            APPEND l_s_range TO e_t_range.
            EXIT.
          ENDLOOP.
        ENDIF.
    When we effectued the jump the our objective is transfer the date inserted by user in the variable  of the query sender 'Z_DAT_AN' to the variable of the query receveir 'ZV_CEREG'.
    This step it does not work correctly, this why are different query?
    You can help me for resolved this problem!!
    Thanks Domenico

    Hi,
    I think, this approach does not work. Because customer exit will be finished before displaying the result set of 1st report. So the assignment to VAR2 from VAR1 does not execute then after.
    I hope, In RSBBS,after assigning receiver, in the assignment details,select 'Variable' for 'Type' of 'infoobject' 0calday.And select '0Postingdate' for 'fieldname' and select 'selection options' for selection type.
    Take help.sap.com help for further information.
    With rgds,
    Anil Kumar Sharma. P
    Message was edited by: Anil Kumar Sharma

  • Query row structure to restrict on multiple ranges of Calendar Year /Month using Custom exit

    Hi All,
    I have written 2 queries in Bex 7.x which have similar requirement. One uses 0CALMONTH and other 0FISCPER. I will describe scenario with Calendar Year month query.
    Query to have user entry screen for 0CALMONTH. Added 0CALMONTH in Filters section and restricted on mandatory user entry variable.
    Key figures restricted in four ways by creating a row structure with four selections
    Current Month User entered value on selection screen (Restricted on User entry variable)
    Previous Month / Period (Above value offset -1)
    YTD value Range from Previous July / 07.YYYY to current user entered month value (Custom exit)
    LYTD value - Above value for previous year (Above value offset -12)
    For YTD value wrote a custom exit code which uses the user entry variable on 0CALMONTH to retrieve the current month value and then give output range value for YTD.
    The custom exit code when debugged seems to calculate the correct range. However the query output is not working and gives out the same data for Current month and YTD range. Also LYTD value and Previous month value don't show up with any data at all.
    Any tips on where we are going wrong would be helpful.
    Thanks!
    Custom Exit code:
    WHEN 'ZGB_FP_AYTD_PTNR'.
         IF i_step EQ '2'.
           READ TABLE i_t_var_range INTO loc_var_range WITH KEY vnam = 'ZFP_AYTD_PRTNR'
                                                                iobjnm = '0CALMONTH'.
           IF sy-subrc EQ 0.
             CLEAR: l_month_curr, l_month_low, l_year_curr, l_year_low,
                    l_calmonth_low, l_calmonth_high.
             l_month_curr = loc_var_range-low+4(3).
             l_year_curr = loc_var_range-low+0(4).
             l_month_low = 001.
             l_year_low  = l_year_curr.
             CONCATENATE l_year_low l_month_low INTO l_calmonth_low.
             CONCATENATE l_year_curr l_month_curr INTO l_calmonth_high.
             l_s_range-low = l_calmonth_low.
             l_s_range-high = l_calmonth_high.
             l_s_range-sign = 'I'.
             l_s_range-opt = 'BT'.
             APPEND l_s_range TO e_t_range.
           ENDIF.
         ENDIF.

    Hi
    try this code
    WHEN '0CALMONTH'.
    CLEAR: l_month_curr, l_month_low, l_year_curr, l_year_low,
                    l_calmonth_low, l_calmonth_high.
         IF i_step EQ '2'.
      loop at i_t_var_range INTO loc_var_range where vnam = 'ZFP_AYTD_PRTNR'.
             l_month_curr = loc_var_range-low+4(2).
             l_year_curr = loc_var_range-low+0(4).
             concatinate '0' l_month_curr into l_month_low.
             CONCATENATE l_year_low '001' INTO l_calmonth_low.
             CONCATENATE l_year_curr l_month_low INTO l_calmonth_high.
             l_s_range-low = l_calmonth_low.
             l_s_range-high = l_calmonth_high.
             l_s_range-sign = 'I'.
             l_s_range-opt = 'BT'.
             APPEND l_s_range TO e_t_range.
           endloop.
         ENDIF.
    This code used for calculate fiscal period interval from your input month.
    For Ex
    user input is 05.2014
    customer exit result as 001.2014 - 005.2014.
    Note: Fiscal year period is Jan - Dec otherwise need to convert the input month details.
    Regards
    Sureshkumar

Maybe you are looking for