Inventory Ageing query performance

Hi All,
   I have created inventory ageing query on our custom cube which is replica of 0IC_C03. We have data from 2003 onwards. the performance of the query is very poor the system almost hangs. I tried to create aggregates to improve performance but its failed. What i should do to improve the performance and why the aggregate filling is failed. Cube have compressed data. Pls guide.
Regards:
Jitendra

Inaddition to the above posts
Check the below points ... and take action accordingly to increase the query performance.
mainly check --Is the Cube data Compressed. it will increase the performance of the query..
1)If exclusions exist, make sure they exist in the global filter area. Try to remove exclusions by subtracting out inclusions.
2)Check code for all exit variables used in a report.
3)Check the read mode for the query. recommended is H.
4)If Alternative UOM solution is used, turn off query cache.
5)Use Constant Selection instead of SUMCT and SUMGT within formulas.
6)Check aggregation and exception aggregation on calculated key figures. Before aggregation is generally slower and should not be used unless explicitly needed.
7)Check if large hierarchies are used and the entry hierarchy level is as deep as possible. This limits the levels of the hierarchy that must be processed.
Use SE16 on the inclusion tables and use the List of Value feature on the column successor and predecessor to see which entry level of the hierarchy is used.
8)Within the free characteristics, filter on the least granular objects first and make sure those come first in the order.
9)If hierarchies are used, minimize the number of nodes to include in the query results. Including all nodes in the query results (even the ones that are not needed or blank) slows down the query processing.
10)Check the user exits usage involved in OLAP run time?
11)Use Constant Selection instead of SUMCT and SUMGT within formulas.
12)
Turn on the BW Statistics: RSA1, choose Tools -> BW statistics for InfoCubes(Choose OLAP and WHM for your relevant Cubes)
To check the Query Performance problem
Use ST03N -> BW System load values to recognize the problem. Use the number given in table 'Reporting - InfoCubes:Share of total time (s)' to check if one of the columns %OLAP, %DB, %Frontend shows a high number in all InfoCubes.
You need to run ST03N in expert mode to get these values
based on the analysis and the values taken from the above  - Check if an aggregate is suitable or setting OLAP etc.
Edited by: prashanthk on Nov 26, 2010 9:17 AM

Similar Messages

  • Inventory Ageing report required

    Hi SAP Experts
    I want to create an inventory ageing report which is based on FIFO valuation method and will be at company level.
    It should display time intervals like 0-30, 30-60, 60-90 etc but these intervals can be dynamic means we can change these time intervals as per our convenience. I am working on SAP 2007B PL22.
    Waiting for your valuable inputs.
    Regards
    Ashish

    Hi,
    There are loads of threads talking about the same issue. You have to dig in and find the correct query yourself which suits your requirement.
    Check following threads :
    inventory aging report
    Inventory Aging
    Query for Inventory Report
    Kind Regards,
    Jitin
    SAP Business One Forum Team

  • Query performance on Inventory Cube

    Hi All,
            I have a query on Inventory Cube with non cumulative key figures, when I ran a query with them its taking 60 to 70 minutes. When I ran the same query by removing non cumulatives its displaing results in 25 seconds. Is there any way we can improve query performance which is effected  by non cumulative keyfigures.
        I have checked the performance related tools like RSRV on cube and master data no errors, in RSRT> execute debug the more time query consumes in data manager, ST03> DB and data manager time and also unassigned time is more.
        I know that query consumes time because of non cumulative keyfigures as it need to perform calculations on fly but its taking lot more than that. I apprecate your inputs to this query in advance.
      I will reward points.
    Regards
    Satish Reddy

    Hi Anil,
        Its nice to see you. We have compressed the cube with marker update and we are using only two infosources to the cube(BF and UM). As there are 150 queries on that cube I don't want to build aggregate especially for that query. I also treid DB stats refresh, there is a process chain to delete and recreate indexes, analysed cube and master data in RSRV etc. it didn't really helped me. Would you please suggest any good solution for this. I apprecaite it in advance.
    When i check in Application log in Cube Manage it is displayed that Mass Upsert of Markers update so I assumed that markers are updated.
    Regards
    Satish Arra.

  • Can anyone share the query for inventory aging report

    Is there any standard reports for inventory aging in oracle ebs 12.1.3 ....... If not can anyone share the query for inventory aging report

    Hi,
    It may not be so simple as you are trying to reproduce the historical value.  I believe you have to create a temporary table first.  Or you may use Command feather to get the required data in advance.
    Thanks,
    Gordon

  • Inventory Aging Report

    Hi Experts,
    I have a requirement to implement Inventory Aging report . The report should show total qty of inventory on hand in buckets of
    (0-30 days), (31-60 days) and so on upto a year for given plant and material .
    I also need to show value of inventory on hand in similiar buckets .
    Is it possible to fullfill this requirement using 2LIS_03_BX extractor ?
    I am assuming the distribution in buckets would need to be done at run time .  If so how to design the buckets in the query ?
    Thanks in advance
    Arun

    You can create this report using IC_C03 not just BX extractor. You need to do the ageing with reference to the materials and then sum to get the value at plant level. 
    For this report to work, its assumed that inventory is managed in FIFO method. The formula is derived with based ONLY on the receipt value. First you need to get the receipt values with reference to the time buckets (0 - 30, 31 - 60, 61 - 90 etc). So restrict the relevent movement types for the std KF - 0RECVS_VAL. Then do the offset in the Calendar day.
    Once you have all the receipt bucket values, then you can create the ageing formula using the if else condition in the query which goes like
    Ageing 0 - 30 ->    ((Receipt value 0 - 30 <= Closing Stock value ) * Receipt Value 0 - 30)+ ((Receipt value 0 - 30 > Closing Stock value ) * Closing Stock value))
    Ageing 31 - 60 ->    ((Receipt value 31 - 60 <= Closing Stock value + Ageing 0 - 30) * Receipt Value 31 -60 )+ ((Receipt value 31 - 60 + Ageing 0 - 30 > Closing Stock value ) * Closing Stock value- Ageing 0 - 30))
    The same formula can be extended up any time bucket you require (Eg Ageing 1Yr - 3 Yr, Ageing 3Yr - 5Yr, Ageing > 5 Yr  etc). provided you make the receipt buckets properly.
    The ageing formula is calculated during the run time, so the query performance can be slightly bad. However there is no standard R/ 3 report equvalent to this. Unless you make a abap report.
    Cheers
    Deepesh

  • Inventory aging report,  plz help me its very urgent

    Hi experts,
    i have a problem in reporting, yesterday i got requirement form uesrs for Inventory Aging report,
    the report fields Contains
    1) Plant
    2) Meterial
    3) Stock as on date( closing stock) with both  fields Quantity & value fields
    4) Average Useage in 6 months  with both fields Quantity & Value
    5) Month on Hand in units
    6)Inventory Aging  30 days with Units and quantity
                               60 days with Units and quantity
                               90 days with Units and Quantity
                               120 days
                                150days
                                 180 days
                                  270 days
                                   365 + days
    we are using bw 3.5 version
    note:  we are u using standard Business Content Cube ( 0IC_C03)  with is coming fron standard Business content DataSources 2Lis_03_BX, 2Lis_03_BF, 2Lis_03_UM
    please suggest me to make this report, please send process in clearly.
    i will assign full points
    Advance thanks,
    Sudheer

    hello Sudheer,
    I remember once creating an Inventory aging document whcih had somwhat the same requirment of going back 6weeks and the other was like 18 weeks from the current week.Do you have cubes regarding the diffrent types of orders, like Planned order, Purchase order, production order and purchase requistion or a multi on top of it.If so then create  query on top of this multiprovider like Inventory aging 30days, inventory aging 60days etc.then  in that query create a variable on calweek (Single value,mandatory and customer exit), this variable should be able to get the current week (depending on when your table was loaded in R3 and if you can get that info thru rfc in BI), this is so that you can determine current week and then specify variable off set in diffrent queries with diffrent requirements of going back, ex: -4 (for 4 weeks ie 1 month) etc, or just create your variable on calmonth and then you need to set an offset just one month back ex -1.
    Create APDs and then load the data in transactional DSOs.Excecute the APD one at a time into the diffrent cubes .Create a multiprovider if you want on top of it.
    Hope this can get you started....
    Krrish

  • Inventory Aging Data, Duplication in SAP B1 8.81

    Hello Everyone,
    I have been working on Inventory Aging Report creation and has been facing with a problem. The data seems to get duplicated when i execute the
    report. I have attached the screen shot below for your reference.
    I have taken the following tables OPDN, PDN1, OITM and OITW for my report, and below is the query.
    SELECT T0.[DocNum], T0.[DocDate], T1.[ItemCode], T1.[Dscription], T1.[WhsCode], T3.[OnHand] FROM OPDN T0  INNER JOIN PDN1 T1 ON T0.DocEntry = T1.DocEntry INNER JOIN OITM T2 ON T1.ItemCode = T2.ItemCode INNER JOIN OITW T3 ON T2.ItemCode = T3.ItemCode WHERE T3.[OnHand]  > 0
    Please help me.. Thank You.

    Hi Nagarajan,
    Thank You for your reply..
    But I am still facing the duplication, before it was duplicating three times, now two times it is getting replicated.
    Attached the new screenshot for your reference..
    Kindly view the total stock values in report and SAP....Appreciate your help..
    Thank you.

  • Query Performance - Query very slow to run

    I have built a query to show payroll costings per month per employee by cost centres for the current fiscal year. The cost centres are selected with a hierarchy variable - it's quite a latrge hierarchy. The problem is the query takes ages to run - nearly ten minutes. It's built on a DSO so I cant aggregate it. Is there anything I can do to improve performance.

    Hi Joel,
    Walkthrough Checklist for Query Performance:
    1. If exclusions exist, make sure they exist in the global filter area. Try to remove exclusions by subtracting out inclusions.
    2. Use Constant Selection to ignore filters in order to move more filters to the global filter area. (Use ABAPer to test and validate that this ensures better code)
    3. Within structures, make sure the filter order exists with the highest level filter first.
    4. Check code for all exit variables used in a report.
    5. Move Time restrictions to a global filter whenever possible.
    6. Within structures, use user exit variables to calculate things like QTD, YTD. This should generate better code than using overlapping restrictions to achieve the same thing. (Use ABAPer to test and validate that this ensures better code).
    7. When queries are written on multiproviders, restrict to InfoProvider in global filter whenever possible. MultiProvider (MultiCube) queries require additional database table joins to read data compared to those queries against standard InfoCubes (InfoProviders), and you should therefore hardcode the infoprovider in the global filter whenever possible to eliminate this problem.
    8. Move all global calculated and restricted key figures to local as to analyze any filters that can be removed and moved to the global definition in a query. Then you can change the calculated key figure and go back to utilizing the global calculated key figure if desired
    9. If Alternative UOM solution is used, turn off query cache.
    10. Set read mode of query based on static or dynamic. Reading data during navigation minimizes the impact on the R/3 database and application server resources because only data that the user requires will be retrieved. For queries involving large hierarchies with many nodes, it would be wise to select Read data during navigation and when expanding the hierarchy option to avoid reading data for the hierarchy nodes that are not expanded. Reserve the Read all data mode for special queriesu2014for instance, when a majority of the users need a given query to slice and dice against all dimensions, or when the data is needed for data mining. This mode places heavy demand on database and memory resources and might impact other SAP BW processes and tasks.
    11. Turn off formatting and results rows to minimize Frontend time whenever possible.
    12. Check for nested hierarchies. Always a bad idea.
    13. If "Display as hierarchy" is being used, look for other options to remove it to increase performance.
    14. Use Constant Selection instead of SUMCT and SUMGT within formulas.
    15. Do review of order of restrictions in formulas. Do as many restrictions as you can before calculations. Try to avoid calculations before restrictions.
    16. Check Sequential vs Parallel read on Multiproviders.
    17. Turn off warning messages on queries.
    18. Check to see if performance improves by removing text display (Use ABAPer to test and validate that this ensures better code).
    19. Check to see where currency conversions are happening if they are used.
    20. Check aggregation and exception aggregation on calculated key figures. Before aggregation is generally slower and should not be used unless explicitly needed.
    21. Avoid Cell Editor use if at all possible.
    22. Make sure queries are regenerated in production using RSRT after changes to statistics, consistency changes, or aggregates.
    23. Within the free characteristics, filter on the least granular objects first and make sure those come first in the order.
    24. Leverage characteristics or navigational attributes rather than hierarchies. Using a hierarchy requires reading temporary hierarchy tables and creates additional overhead compared to characteristics and navigational attributes. Therefore, characteristics or navigational attributes result in significantly better query performance than hierarchies, especially as the size of the hierarchy (e.g., the number of nodes and levels) and the complexity of the selection criteria increase.
    25. If hierarchies are used, minimize the number of nodes to include in the query results. Including all nodes in the query results (even the ones that are not needed or blank) slows down the query processing. The u201Cnot assignedu201D nodes in the hierarchy should be filtered out, and you should use a variable to reduce the number of hierarchy nodes selected.
    Regards
    Vivek Tripathi

  • Inventory Age Structure Analysis

    Hi,
    I am using PowerPivot of Excel 2013 and trying to accomplish an inventory age structure analysis.
    I have got a snapshot table "stock_table" with daily updates for products on stock and a custom date table. The columns of the stock table are as follows:
    date
    product_key
    units
    I'd like to show a summary of products which are let's say <=30, >30 and <=90 days on stock. Products which are at query date not any more on stock should be excluded from the summary.
    Example:
    stock_table:
    columns: date, product_key, units
    01/31/2014, 4711, 200
    02/28/2014, 4711, 200
    03/31/2014, 4711, 100 (last entry, no units left at 04/03/2014)
    01/31/2014, 4712, 100
    02/28/2014, 4712, 100
    03/31/2014, 4712, 100
    04/03/2014, 4712, 100
    03/31/2014, 4713, 300
    04/03/2014, 4713, 300
    Age analysis as per 04/03/2014 should show:
    stock age <=30 days: 4713, 300 units
    stock age >30 days and <=90 days: 4712, 100 units
    4711 should not show up because it has zero units as per 04/03/2014
    Can anyone give me a hint how to accomplish this analysis via dax?
    Thanx
    Chiemo

    Hi Gerhard,
    thank you very much for your excellent solution. Based on your file it was easy to adapt your solution to my real data.
    One tiny and really minor point for other users of Gerhard's solution from my side to one formula where I got with my real data an error message: please replace in the formula of the calculated column "StockAge" in the table "Inventory"
    the "<=" sign in the fourth row by a "<" sign. The formula that worked for me is
    StockAge=CALCULATE(VALUES(StockAge[Stockage]);
    FILTER(
        'StockAge';
        StockAge[StockMin] < [StockAgeDays]
        && [StockAgeDays] <= StockAge[StockMax]))
    Thank you again, Gerhard!
    Best regards
    Chiemo

  • What is aging report or aging query

    hi
      i am suresh,
            what is aging report or aging query.
            can any one tell.

    Hello Suresh,
    Based on the business requirements you design the inventory aging report. Here are few scenarios:
    1) Technical Name: 0IC_C03_Q0021
    Use
    This query displays the inventory aging for selected materials per week and calendar year, and is used in the KPI monitor.
    2) Technical Name: 0IC_C01_Q0009
    Use
    The percentage of total gross inventory (based on value) covered by expected demand within a specific time bucket.
    3)
    With this picking strategy the system proposes the oldest quant in the storage type as the quant that should be transferred.
    The system generally calculates the "age" (length of time in storage) of a quant on the basis of the goods receipt posting date from the Inventory Management (IM) application component. The system automatically sets the goods receipt date in the quant and in the transfer requirement for every goods receipt posting in IM. When the transfer order is created, this date is copied over to the quant record of the destination storage bin.
    You can accept the goods receipt date that the system sets or you can enter a different date. Regardless of whether the system proposes the goods receipt date or you enter a different date, the date is used to calculate the age of the quant. This date influences the sorting sequence for each material.
    Prerequisites
    When you define the storage type record to use this strategy, enter f in the Picking strategy field.
    you can find more details in Help.sap.com which fields needs to used etc.
    Hope this helps,
    Bye,
    Naga.
    Message was edited by: Naga Timmaraju

  • Inventory Ageing Totals

    Hi Experts,
    I have written a query to get an Inventory Ageing reports by 0-30days, 31-60days, 61-90days, 91-120days and 121+.
    The query shows Quantity and the Value (QTY * Average Price) by Age 0-30days, 31-60days, 61-90days etc.
    SELECT T0.ITEMCODE , T0.ONHAND as 'Total Qty',
    CASE WHEN Datediff(day, T1.LASTPURDAT,GETDATE())<30 THEN T0.ONHAND END '<30 Days(Qty)',
    CASE WHEN Datediff(day, T1.LASTPURDAT,GETDATE())<30 THEN T0.ONHAND*T0.AVGPRICE END '<30 Days(Value)',
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 31 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 60 THEN T0.ONHAND END '31 to 60 Days(Qty)' ,
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 31 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 61 THEN T0.ONHAND*T0.AVGPRICE END '31 to 60 Days(Value)',
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 61 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 90 THEN T0.ONHAND END '61 to 90 Days(Qty)' ,
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 61 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 90 THEN T0.ONHAND*T0.AVGPRICE END '61 to 90 Days(Value)',
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 91 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 120 THEN T0.ONHAND END '91 to 120 Days(Qty)' ,
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 91 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) < 120 THEN T0.ONHAND*T0.AVGPRICE END '91 to 120 Days(Value)',
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 121 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) > 121 THEN T0.ONHAND END '121+ Days(Qty)' ,
    CASE WHEN DateDiff(day, T1.LASTPURDAT,GETDATE()) >= 121 AND DateDiff(day, T1.LASTPURDAT,GETDATE()) > 121 THEN T0.ONHAND*T0.AVGPRICE END '121+ Days(Value)'
    FROM OITW T0 INNER JOIN OITM T1 ON T0.ITEMCODE = T1.ITEMCODE
    INNER JOIN OITB T2 ON T1.ITMSGRPCOD=T2.ITMSGRPCOD
    WHERE
    T0.ONHAND>0
    I want to know how i can get the Final Totals of all Values by 0-30days, 31-60days, 61-90days etc.

    On the Screen, you could get at by pressing CTRL+left mouse click on the column header.  If you want it in your print then you would need to use a formula on the Query PLD..Report Footer area.
    Suda

  • Inventory Aging

    Hi,
    Working on EBS Version: 11.5.10.2
    I need to create a new inventory aging report based on these below transactions types name and consider only positive quantity.
    Transactions Types Names :
    RMA Receipt
    Miscellaneous receipt
    WIP Assy Completion
    PO Receipt
    WIP Component Return
    Cycle Count Adjust
    PO Rcpt Adjust
    Account receipt
    WIP Assembly Return
    WIP Neg Comp Issue
    As of aging till current date < 31 days
    31-60 days
    61-90 days
    91- 180 days
    181 - 365 days
    366 - 730 days
    730 daysIf anybody has already developed this report, please let me have the query same or need help on this issue.
    Thanks and Regards

    but how will i show for number of days like ...pretty much the same way Frank did in the link provided. (did you take a look ?)
    Frank seems to be present on the forum right now and he did a very similar thing yesterday.
    Be patient.
    Regards
    Etbin
    Edited by: Etbin on 25.9.2011 11:47
    you could do something about providing test data together with the expected results and maybe a more detailed explanation about what are you trying to achieve
    Edited by: Etbin on 25.9.2011 12:14
    something to play with
    select transaction_date,
           case when transaction_date between sysdate - 30 and sysdate
                then '30 days or less'
                when transaction_date between sysdate - 60 and sysdate - 30
                then '30 - 60 days'
                when transaction_date between sysdate - 90 and sysdate - 60
                then '60 - 90 days'
                when transaction_date < sysdate - 90
                then 'over 90 days'
           end period,
           sysdate - transaction_date days_ago
      from mtl_material_transactionsthe interval boundaries have yet to be adjusted in order not to overlap or having gaps
    Edited by: Etbin on 25.9.2011 13:05
    days_ago column added

  • Inventory Ageing for Batch item

    Hi,
      Please let me know if any one has query for inventory ageing for Batch management item.
    regards
    Suresh S

    Use following query:
    SELECT T0.WhsCode, T0.ItemCode, T0.ItemName, T0.BatchNum, T0.CreateDate,
    DateDiff(dd, T0.CreateDate, GetDate()) As Days, T0.Quantity,
    case when (datediff(dd, createdate, getdate())<=30) then 'Upto 30 Days'
         when (datediff(dd, createdate, getdate())>30 and datediff(dd, createdate, getdate())<=60) then '31 to 60 Days'
         when (datediff(dd, createdate, getdate())>60 and datediff(dd, createdate, getdate())<=90) then '61 to 90 Days'
         else 'More than 90 Days'
         end as days
    FROM OIBT T0
    WHERE T0.Quantity > 0
    ORDER BY T0.WhsCode, T0.ItemCode, T0.CreateDate
    Edited by: Rahul Jain on Jan 30, 2009 10:28 AM

  • Query performance.

    Hi
    I have created a procedure that accepts two bind variables from a report. The user will select one or the other, both or neither of the variables. To return the appropriate results i have created a view with the entire result set and in the procedure are a number of if statements that determine what to place in the where clause selecting from the view, depending on what variables populated.
    My concern is that the query that generates the view includes several joins and in total outputs around 150,000 records and seems to be rather slow to run.
    Would you recommend another solution such as placing the query in the procedure itself repeated for every if statement?
    Or should I work on the query performance?
    What would be the most efficient solution for my problem?
    Any advice would be greatly appreciated.
    Thanks

    [url http://forums.oracle.com/forums/thread.jspa?threadID=501834&tstart=0]When your query takes too long

  • Inventory aging report for vehicle parts

    Hello Guys,
    I need to prepare an inventory aging report for Vehicle parts.
    We already have new vehice ad used vehicle's inventory aging reports created by somebody else.
    I am very new to sap-bi.
    I am very confused about designing same cz i checked with the fields ad they are a ittle different from the fields which are there in above two reports.
    I have downloaded 0ic_c03 from business content but do not know how to prepare its datasource......
    Please tell me how should i go about it.
    Thanks & Regards,
    Dolly

    Hi Dolly,
    What is your question? It's almost impossible to provide an answer without any information.
    Perhaps you should try to ask in your company for some help.
    Cheers

Maybe you are looking for

  • At the end of my patience with BT

    Two weeks ago, a rushed delivery driver rounding the tight corner in the dark outside of my house crashed into my telegraph pole (actually on the roadside). It made a very loud noise, I rushed outside but he had driven away leaving part of the vans t

  • Why does an InDesign document exported to PDF using data merge result in very different sized PDFs?

    I've got a small sheet that I update on occasion and use data-merge to add people's names to the sheet. It's very much like an invitation where every invite has a different name on it. I use the data merge feature to select a list of names and then t

  • TS1424 Whenever I try get into iTunes, it kicks me out with the message "cannot connect to iTunes"

    Hi there - whenever I go into iTunes store it automatically kickes me out with a message that reads "cannot connect to iTunes store". I don't know why it always does that - I've actually never got into the iTunes store before - Could someone help ?

  • Regaring Freight Charges Tables

    Hi All, My client is using Z Transaction ZSD54 for pending sales order report and now he wants Freight charges field to be added to this report can any one suggest me the process.............Thanks in advance

  • Exchange VSS writer is missing

    Hello  I am running Exchange 2013 sp1 on windows 2008 R2 sp1, in a two node DAG. When i run vssadmin list writers on node1 i can see "Exchange writer" when i run the same command on node2 i do not see the Exchange writer. I have even tried restarting