Profitability planning in COPA
We are in the process of entering product plan data in COPA. I suppose, we have to include as much as parameters (profitability segments) that are required such as country, state, sales area, customer, sales value, quantity, etc. so as to analyse the plan profitability in different segments for comparing it with actual data. Am I correct ?
Hi Niki
Yes, you are right...
However, once you enter CUSTOMER, all related chars like Cust group, Country etc get derived automatically
In your Plan Version 0 (OKEQ) > Settings for op concern > you can tick "Check Derivation" and enter a date (01.01.2011)
While you plan, system would ensure the derivation of required chars
br, Ajay M
Similar Messages
-
Integrated Planning in COPA using KEPM and loading of quantity to SOP
Hi,
We are in process of testing integrated planning in COPA using KEPM and loading of quantity to SOP (MC87) or Transfer Qty to SOP - KE1E. I created a planning level with basic information to plan quantity on product with Period/Year, Version, Plant, Product, Record Type (F), Unit Sales Qty.
Also created Planning Package & Planning Parameter with Planning layout and entered quantity for a material which creates a profitability segment with quantity update. The problem occurs when transferring to SOP the sales quantity either using MC87 or KE1E, it goes into a loop and times out. We tried using different parameters, but ended up with same result.
Are we missing some Config/steps here, any thoughts will help.
SatishHi,
You need to transfer COPA plan to inactive version of SOP through KE1E. Thereafter, in PP, the same is transfered to active version through MC78. Thereafter it is transferred to Demand Management through MC74.
Please check with your PP consultant.
Trust this helps. Please assign pts if useful -
Hello Everyone,
I would like to know, for what purpose we use planning in COPA? We have separate planning for CCA, PCA and PC.
Thanks
SnehaHI Sneha,
COPA Planning is Defferent from cca, pca et. In COPA Planning we will plan the forecast sales quantity and forecast revenue,etc information given by the HO, From the COPA Planning PP will import the plan data into Production module. Based on the stock avaible in the storage location, rest will create a demand management,and it wil start procurement process and create the planned order etc. Plaease go throgh following steps
1 Sales plan KEPM
2 production paln MC88
3 Transfer to demant management MC74
4 convert tproduction paln into active rversrsion In demand managament MD62
5 mrp run MD02
6 stock/requirement list ND04
7 Generate pr from mrp run MD04
8 release pr ME55/54N
9 create po from pr ME51N
10 relese po ME28/29N
11 goods receipt MIGO
12 quality check QA32
13 Logistic invoice verification MIRO
14 convert planned porder to process order and release COR1 BACK FLUSH
15 confirm process order COR6N
16 calculate variance KKS5
17 settment KK87
18 quality check QA32
19 stock overview MMBE
20 crate sales order VA01
21 create deliver VL01N
22 billing document VF01
23 release to accounting VF02
24 receipt customer payment F-28
25 Profitability report Plan/Acutal KE30
26 Acutal Line items KE24
Kishore Cheeda -
Getting error while doing sales planning in COPA
Hello Friends,
While i m doing the sales planning in COPA via KEPM, I am getting the dump for ABAP Feilds regarding Volume and Weight.
Error has been stated below.
Runtime Errors CONVT_OVERFLOW
Except. CX_SY_CONVERSION_OVERFLOW
Date and Time 19.03.2008 16:16:40
Short dump has not been completely stored (too big)
Short Text
Overflow when converting from "1.12036e+12"
What Happned?
Error in the ABAP Application Program
The current ABAP program "SAPLKEAB" had to be terminated because it has come across a statement that unfortunately cannot be executed.
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_CONVERSION_OVERFLOW', was not caught in
procedure "GET_WEIGHT_AND_VOLUME" "(FORM)", nor was it propagated by a RAISING clause.
Since the caller of the procedure could not have anticipated that the exception would occur, the current program is terminated.
The reason for the exception is:
When attempting to convert the value "1.12036e+12", an overflow occurred.
As i m getting the ABAP Error while making the sales planning for Finished ProductMy guess - because I don't know your system - is the system is looking for one particular type of value, but is being fed a different one. While trying to convert, the value foes into data overflow.
Check:
1. If the planning is in Alternative Units of measure and this alternative is well defined in the material master.
2. If a standard conversion routine has been assigned to any of the values and the conversion routine is not consistent with the data type / data element.
3. Check your upload file / data. Is there a column defined there that should contain data of a specific type (decimals, or number formats, etc.) but is not the case.
4. If all else fails, you need an ABAPer to decode the error for you.
Cheers. -
Hi,
What is the use of Planning under COPA? Please provide detailed answers as we are thinking of configuring the same.
Regards
Milind NairHi Milind
Check the following link to have more indepth on COPA Planning.
http://help.sap.com/erp2005_ehp_02/helpdata/en/7a/4c48c64a0111d1894c0000e829fbbd/frameset.htm
Regards,
Suraj -
Plant wise profitability report in COPA.
Dear Friends,
I am creating a plant-wise profitability COPA report. Rows in the report contains sales, expenses and profit and the columns are the plants. The report is created with form.
Our company has more than 20 plants and they want all the plants to appear in single report. At present I am only able to add maximum 13 columns in the report (12 columns for plants and 13th column for total) in the form as I am unable to add further columns for plants.
Could anyone guide me as to how can I have all the 20- 25 columns in the Form. Is there any way to change the form-size to accomodate all the plants.
Further, All plants do not have data every month, so is it possible to hide the plant columns which does not have any data for the month.
Thanks you for your help!
Regards
Umesh GothankarThanks Both of you for your reply!
Harish I am ok with other columns printing in next page. but could you let me know the process.
I am not sure as to how to add the additional columns on the form.
Thanks
Umesh -
Is it possible to make several copy actions to a plan in COPA?
Hi Experts,
In COPA, we would like to copy actual data from last year to the planning we made for reference use. The user should then adjust these actual figures to plan data.
Since we would like to copy contract data and invoice data (which was sent to COPA via SD) to the plan we need to have two copy actions:
1. copy actuals with record type A (contract data)
2. copy actuals with record type F (billing data)
The problem is now that the data from the second copy action overwrites the data from the first copy action.
Is there a way to have copy different data to the plan without the data being overwritten?
And, is it possible to copy data to the plan for only 2 months instead of for the whole year? Now the system says that the period to be copied should be equal to the period from the planning package.
Best regards,
StephanNever ever presume that your web page must take up my entire screen. That's considered rude. My browser settings and preferences are my choice; not yours.
If you want to design web pages that fill the end-user's available viewport without scrollbars, use a liquid or semi-liquid layout in percentages.
http://alt-web.com/TEMPLATES/3-col-semi-liq-layout.shtml
Alternatively, you can use multiple style sheets & progressive enhancement techniques (media queries) to target specific devices by their width. This is how modern developers are able to support different layouts for smartphones, tablets and desktops.
http://www.adobe.com/devnet/dreamweaver/articles/introducing-media-queries.html
Nancy O.
Alt-Web Design & Publishing
Web | Graphics | Print | Media Specialists
http://alt-web.com/
http://twitter.com/altweb -
Revenue Planning in COPA from SOP
Hi,
If SD team is implementing SOP, can anybody guide me whether they will only be doing quantity planning. If yes then how should I valaute my Revenue "Value Field" in COPA. What should be the appraoch as I have never worked with SOP.
ThanksHi
You have 2 choices
1. You can transfer qty from SOP and You can enter your revenue manually in KEPM (Copa planning)
OR
2. You can transfer qty from SOP and then run a COPA valuation in KEPM.
For this, In the IMG step "Define Valuation Strategy", assign a SD Pricing Procedure for Valuation Strategy 002, Application Type "V" and check Qty Field ABSMG.... This Pricing procedure can have a condition type named ZPLN which contains planned sale price or you can use the normal condition type that you use for billing
Regards
Ajay M -
Hello all,
Can any copa expert suggest me on the following problems.
1. There is a difference between FI sales value and COPA sales value, it has been reported that one document was not considered in COPA. what should I do to include this document.
2. Sales order was posted wrongly to other revenue account instead of sales account.
Thank you,
Best regards
SrinivasHi Srinivas,
1. You need to include the Billing Document Type in the "Form" of that report.
2. I don't feel, revenue account will be selected manually at the time of posting...need to look into assignements. If it was an FI entry, try to pass a JV.
Srikanth Munnaluri -
Hi,
May I know if I am correct for the below where
1)
KE26 or KE21N is meant for correction of actual data in copa and
KE13N or KEPM is to load copa planning to copa
2) we have many planning tcode like kpf6, kp06, kp26.
what is the difference between them and ke13n/kepm?
thanksKE13N is for mass upload of Plan data into COPA, COPA planning os for operating margin planning this is different from cost planning in controlling
KEPM is for input of planning data by the users in the system
Thanks
Naveen -
COPA Profitability Report Format
Dear All,
Can anyone send me profitability report format for Branch wise profitability analysis through COPA. What are the month end activities for derive the actual values in the reporting structure.
Personal Mail ID : [email protected]
Regards
VasanthaDear Sridhar,
I believe in the above format the COGS is updated from the standard cost estimate. In our scenario there is no standard cost estimate for some of the unit. And also there are branches where the goods will be moved at moving average and hence we are not executing the standard cost estimate run at the branches also. and also how to capture the admin and manpower cost which is not actual captured through the activity rates in the standard cost..
Regards
Vasantha -
COPA planning - no plan data visible in KE30
Hi all ,
I have a issue with the planning in COPA.
I did the planning and upload from excel , but I'm not able to see what I planned in the KE30 report / plan column.
in the planning package the selection is :
- controlling area : "X"
- company code : "X"
- period / year : from 001.2006 to 012.2006
- posting type : F
- version : 0
in the KE30 report form / plan column the selection is :
- plan/act indic. : 1
- version : 0
- fiscal year : variable (same as in actual column where the data exist)
- period : variable (same as in actual column where the data exist)
The issue is that even I planned and I can see the plan document in the line Items , it is not visible in the KE30 report.
thx,
Mihaela KHi Mihaela
If you are sure that Plan Line Items are posted, then there is an issue with your report definition...
First, check CE2XXXX table or KE25 report.. If you see line items there, then check the steps below
1. Go to KE35 and check your form
2. Check what is the Plan/Actual Indicator that you selected... for Plan you should select "1".
Regards
Ajay M -
Executing the planning function while opening the web interface
hello all,
I have created a planning area based on multiprovider.This multiprovider is based on two transactional cube ie,COPA cube and Cost Center cube.
This planning area is meant for enabling integrated planning.One plans in COPA cube and other plans in Cost Center cube the income statement gets planned based on this two.
I selected planning items in multiprovider layout to display the income statement.The layout is as follows:
<b>PlanningItem</b> <b>Amount</b>
Net Sales<b>:</b> 9.000,00 INR (This comes from COPA)
Sales Overheads<b>:</b> 200,00 INR (This comes from Cost Center)
Depreciation<b>:</b> 200,00 INR (This comes from Cost Center)
Other Expenses<b>:</b> 300,00 INR (This comes from Cost Center)
EBIT<b>:</b> 0,00 INR
Interest Income<b>:</b> 0,00 INR
Interest Expense<b>:</b> 0,00 INR
Operating Income<b>:</b> 0,00 INR
Taxes<b>:</b> 0,00 INR
Now EBIT planning item is to be calculated from the planning items as follows:
EBIT = Net Sales-Sales Overheads-Depriciation-Other Expenses
For this i have created a planning function which calculates EBIT.This function works properly,there are no issues in it.
My problem is that i want this function to be executed as soon as i open the web interface for my planning application and the result should be as follows:
<b>PlanningItem</b> <b>Amount</b>
Net Sales<b>:</b> 9.000,00 INR (This comes from COPA)
Sales Overheads<b>:</b> 200,00 INR (This comes from Cost Center)
Depreciation<b>:</b> 200,00 INR (This comes from Cost Center)
Other Expenses<b>:</b> 300,00 INR (This comes from Cost Center)
EBIT<b>:</b> 8.300,00 INR
Interest Income<b>:</b> 0,00 INR
Interest Expense<b>:</b> 0,00 INR
Operating Income<b>:</b> 0,00 INR
Taxes<b>:</b> 0,00 INR
Can anybody suggest how to go about this problem?
Thanks in advance.
regards,
YogeshHi Yogesh,
as far as i know, there is no standard functionality for that purpose, but there are workaround for it.
1. Modify the BSP Application.
Go to SE80 --> Repository Browser --> BSP Application --> your WI name --> page with flow logic --> double click on page1.htm --> Event handler tabstrip --> on the drop down selection press F1 --> add a function module that call you BPS function in specific event (e.g: OnInitialization).
2. Use WI-Exit Class / WI-Extention (ABAP OO).
Here you need to create sub class from Class: CL_UPWB_BSP_APPL, and assign the class to your WI. You can then add a function module that call you BPS function in method:
2.1. Load --> performed only once on intial execution of WI.
2.2. Initialisation --> called once for each server response.
2.3. Dispatch --> called at each action and also for each WI component.
You can see further information in SAP how to paper:
How to Validate manual input in WEB planning application, New BPS-Features delivered with SAP BW 3.5, etc.
You can call your BPS function with BPS API FM (See F.Group: UPC_API)
But there is also more easier way to realize your ebit calculation. If you define your EBIT calc. manually in layout (define with manually defined Lead column). With this way, You will always get your EBIT analog with inputed values.
Then you add your EBIT calc.function to Layout Component in WI in property: 'Function After Data Change'.
Best Regards,
Suan Liono -
COPA and FI reconciliation report
Hi All,
We are implementing costing based COPA for Product wise profitability report and revenues will be uploaded directly to COPA through external data transfer. The revenue g/l are made on the nature of services provided by the company and not to products offered by the client.
My queries are:
1. Is there any possibility to provide FI &COPA reconciliation report within COPA.
2. Is there any possibility to provide reconciliation report to check variance between FI vs System (Auto feed) data before uploading to CO-PA.(As the data which is to be posted to COPA will also be provided in Ztable in SAP).
3.Is there any possibility to give selection parameter ( Region hierarchy/ Product hierarchy wise) along with date parameter in a Profitability report in COPA.
Regards
NitishaHi NItu
1. No, there is no such report possible
2. Same as above.
3. Yes, its possible.,. You need to have those chars in COPA
For 1 and 2 - To minimise the cases of reco, post to COPA through FI i.e. when you post to FI, choose PSG as the CO object
Br. Ajay M -
The below same query runs fast at PL/SQL , while the same query run from front end (EBS R 12.0.4) using concurrent request runs verl slow , both has diffrent plan , please share some thought.
Below query when i run from backend (PL/SQL Developer) it returns row within a second
SELECT /*+ gather_plan_statistics product_item_2.txt */ OH.ORG_ID,BUNIT.BU_ID,OL.INVENTORY_ITEM_ID,CUST.account_number,CUST.ACCOUNT_NAME,CUST.CUSTOMER_CLASS_CODE,
NVL(SUM(OL.FULFILLED_QUANTITY),0) as sale_qty
FROM
OE_ORDER_HEADERS_ALL OH,OE_ORDER_LINES_ALL OL,
HZ_CUST_ACCOUNTS CUST,mtl_categories_vl CAT,
mtl_item_categories IC,(select FLEX_VALUE BU_ID,DESCRIPTION B_NAME from fnd_flex_values_vl t
where t.FLEX_VALUE_SET_ID ='1012990') BUNIT
WHERE OH.HEADER_ID = OL.HEADER_ID
AND CUST.CUST_ACCOUNT_ID =
(SELECT DISTINCT ACCT.CUST_ACCOUNT_ID
FROM HZ_CUST_ACCOUNTS ACCT,HZ_CUST_ACCT_SITES_ALL ACCT_SITE,
HZ_LOCATIONS LOC,HZ_PARTY_SITES PARTY_SITE,
HZ_CUST_SITE_USES_ALL SUSE,HZ_PARTIES P
WHERE ACCT.PARTY_ID = PARTY_SITE.PARTY_ID
AND ACCT.CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID
AND SUSE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
AND ACCT_SITE.PARTY_SITE_ID = PARTY_SITE.PARTY_SITE_ID
AND LOC.LOCATION_ID = PARTY_SITE.LOCATION_ID
AND SUSE.SITE_USE_ID = OL.SHIP_TO_ORG_ID
AND P.PARTY_ID = ACCT.PARTY_ID
AND P.PARTY_ID = PARTY_SITE.PARTY_ID
AND SUSE.SITE_USE_CODE = 'SHIP_TO'
AND ACCT_SITE.ORG_ID = &P_ORG_ID
AND OH.ORG_ID = &P_ORG_ID
AND OL.ACTUAL_SHIPMENT_DATE BETWEEN &P_FROM_DATE AND &P_TO_DATE
AND OL.UNIT_SELLING_PRICE != 0
AND OL.LINE_CATEGORY_CODE = 'ORDER'
AND OL.ORDERED_ITEM = NVL(&ITEM_HIGH, OL.ORDERED_ITEM)
AND BUNIT.BU_ID = nvl(&p_business_unit,bunit.bu_id)
AND CAT.CATEGORY_ID = IC.CATEGORY_ID
AND CAT.STRUCTURE_ID = 50289
AND IC.INVENTORY_ITEM_ID = OL.INVENTORY_ITEM_ID
AND IC.ORGANIZATION_ID = OH.SHIP_FROM_ORG_ID
and cat.SEGMENT3 = BUNIT.BU_ID
GROUP BY
OH.ORG_ID,BUNIT.BU_ID,OL.INVENTORY_ITEM_ID,CUST.account_number,CUST.ACCOUNT_NAME,CUST.CUSTOMER_CLASS_CODE
ORDER BY 1Plan for above query is as follows
SQL> set pagesize 1000
SQL> /
PLAN_TABLE_OUTPUT
SQL_ID 5g71mvqaat8x3, child number 0
Plan hash value: 610424373
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
| 1 | HASH GROUP BY | | 1 | 1 | 2 |00:00:00.64 | 144K| | | |
| 2 | NESTED LOOPS | | 1 | 1 | 71 |00:00:00.30 | 144K| | | |
| 3 | NESTED LOOPS | | 1 | 1 | 1704 |00:00:00.26 | 138K| | | |
|* 4 | HASH JOIN | | 1 | 1 | 3312 |00:00:00.05 | 132K| 887K| 887K| 1236K (0)|
| 5 | TABLE ACCESS BY INDEX ROWID | MTL_ITEM_CATEGORIES | 1 | 506 | 1075 |00:00:00.02 | 361 | | | |
| 6 | NESTED LOOPS | | 1 | 1 | 1077 |00:00:00.04 | 24 | | | |
| 7 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 19 | | | |
| 8 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 18 | | | |
| 9 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 15 | | | |
|* 10 | TABLE ACCESS BY INDEX ROWID | FND_FLEX_VALUES | 1 | 1 | 1 |00:00:00.01 | 13 | | | |
|* 11 | INDEX RANGE SCAN | IDX$$_65860003 | 1 | 22 | 52 |00:00:00.01 | 2 | | | |
|* 12 | INDEX UNIQUE SCAN | FND_FLEX_VALUES_TL_U1 | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
|* 13 | TABLE ACCESS BY INDEX ROWID | MTL_CATEGORIES_B | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
|* 14 | INDEX RANGE SCAN | IDX$$_79530001 | 1 | 1 | 2 |00:00:00.01 | 1 | | | |
|* 15 | INDEX UNIQUE SCAN | MTL_CATEGORIES_TL_U1 | 1 | 1 | 1 |00:00:00.01 | 1 | | | |
|* 16 | INDEX RANGE SCAN | IDX$$_78250002 | 1 | 1528 | 1075 |00:00:00.01 | 5 | | | |
|* 17 | TABLE ACCESS BY INDEX ROWID | OE_ORDER_LINES_ALL | 1 | 51 | 138 |00:00:00.01 | 132K| | | |
|* 18 | INDEX SKIP SCAN | OE_ORDER_LINES_N26 | 1 | 14977 | 113K|00:00:00.57 | 1208 | | | |
| 19 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 3312 | 1 | 1704 |00:00:00.09 | 5188 | | | |
|* 20 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 3312 | 1 | 1704 |00:00:00.04 | 3484 | | | |
| 21 | NESTED LOOPS | | 8 | 1 | 2 |00:00:00.01 | 76 | | | |
| 22 | NESTED LOOPS | | 8 | 1 | 2 |00:00:00.01 | 72 | | | |
| 23 | NESTED LOOPS | | 8 | 1 | 2 |00:00:00.01 | 66 | | | |
| 24 | NESTED LOOPS | | 8 | 1 | 2 |00:00:00.01 | 62 | | | |
| 25 | NESTED LOOPS | | 8 | 1 | 2 |00:00:00.01 | 56 | | | |
|* 26 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_SITE_USES_ALL | 8 | 1 | 8 |00:00:00.01 | 32 | | | |
|* 27 | INDEX UNIQUE SCAN | HZ_CUST_SITE_USES_U1 | 8 | 1 | 8 |00:00:00.01 | 24 | | | |
|* 28 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_ACCT_SITES_ALL | 8 | 25087 | 2 |00:00:00.01 | 24 | | | |
|* 29 | INDEX UNIQUE SCAN | HZ_CUST_ACCT_SITES_U1 | 8 | 1 | 8 |00:00:00.01 | 16 | | | |
| 30 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 2 | 176K| 2 |00:00:00.01 | 6 | | | |
|* 31 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 32 | INDEX UNIQUE SCAN | HZ_PARTIES_U1 | 2 | 176K| 2 |00:00:00.01 | 4 | | | |
|* 33 | TABLE ACCESS BY INDEX ROWID | HZ_PARTY_SITES | 2 | 188K| 2 |00:00:00.01 | 6 | | | |
|* 34 | INDEX UNIQUE SCAN | HZ_PARTY_SITES_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 35 | INDEX UNIQUE SCAN | HZ_LOCATIONS_U1 | 2 | 174K| 2 |00:00:00.01 | 4 | | | |
|* 36 | TABLE ACCESS BY INDEX ROWID | OE_ORDER_HEADERS_ALL | 1704 | 1 | 71 |00:00:00.05 | 6816 | | | |
|* 37 | INDEX UNIQUE SCAN | OE_ORDER_HEADERS_U1 | 1704 | 1 | 1704 |00:00:00.03 | 5112 | | | |
Predicate Information (identified by operation id):
4 - access("IC"."INVENTORY_ITEM_ID"="OL"."INVENTORY_ITEM_ID")
10 - filter("B"."FLEX_VALUE"=NVL('02',"B"."FLEX_VALUE"))
11 - access("B"."FLEX_VALUE_SET_ID"=1012990)
12 - access("B"."FLEX_VALUE_ID"="T"."FLEX_VALUE_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
13 - filter("B"."STRUCTURE_ID"=50289)
14 - access("B"."SEGMENT3"="B"."FLEX_VALUE")
filter("B"."SEGMENT3" IS NOT NULL)
15 - access("B"."CATEGORY_ID"="T"."CATEGORY_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
16 - access("B"."CATEGORY_ID"="IC"."CATEGORY_ID")
17 - filter(("OL"."ORDERED_ITEM"=NVL('101468',"OL"."ORDERED_ITEM") AND "OL"."UNIT_SELLING_PRICE"<>0))
18 - access("OL"."LINE_CATEGORY_CODE"='ORDER' AND "OL"."ACTUAL_SHIPMENT_DATE">=TO_DATE('2012-02-20 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND
"OL"."ACTUAL_SHIPMENT_DATE"<=TO_DATE('2012-02-23 00:00:00', 'yyyy-mm-dd hh24:mi:ss'))
filter(("OL"."ACTUAL_SHIPMENT_DATE">=TO_DATE('2012-02-20 00:00:00', 'yyyy-mm-dd hh24:mi:ss') AND "OL"."LINE_CATEGORY_CODE"='ORDER'
AND "OL"."ACTUAL_SHIPMENT_DATE"<=TO_DATE('2012-02-23 00:00:00', 'yyyy-mm-dd hh24:mi:ss')))
20 - access("CUST"."CUST_ACCOUNT_ID"=)
26 - filter("SUSE"."SITE_USE_CODE"='SHIP_TO')
27 - access("SUSE"."SITE_USE_ID"=:B1)
28 - filter("ACCT_SITE"."ORG_ID"=142)
29 - access("SUSE"."CUST_ACCT_SITE_ID"="ACCT_SITE"."CUST_ACCT_SITE_ID")
31 - access("ACCT"."CUST_ACCOUNT_ID"="ACCT_SITE"."CUST_ACCOUNT_ID")
32 - access("P"."PARTY_ID"="ACCT"."PARTY_ID")
33 - filter(("ACCT"."PARTY_ID"="PARTY_SITE"."PARTY_ID" AND "P"."PARTY_ID"="PARTY_SITE"."PARTY_ID"))
34 - access("ACCT_SITE"."PARTY_SITE_ID"="PARTY_SITE"."PARTY_SITE_ID")
35 - access("LOC"."LOCATION_ID"="PARTY_SITE"."LOCATION_ID")
36 - filter(("OH"."ORG_ID"=142 AND "IC"."ORGANIZATION_ID"="OH"."SHIP_FROM_ORG_ID"))
37 - access("OH"."HEADER_ID"="OL"."HEADER_ID")
85 rows selected.Below plan for the above same query when i run from front end concurrent request it completed within an hour.
SQL> select * from table(dbms_xplan.display_cursor('1gnb26b0q2vxx',NULL,'ALLSTATS LAST'))
2 /
PLAN_TABLE_OUTPUT
SQL_ID 1gnb26b0q2vxx, child number 0
Plan hash value: 408306916
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
| 1 | HASH GROUP BY | | 1 | 1 | 2 |00:36:41.83 | 379M| | | |
| 2 | CONCATENATION | | 1 | | 71 |00:09:30.14 | 379M| | | |
|* 3 | FILTER | | 1 | | 0 |00:00:00.01 | 0 | | | |
| 4 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
| 5 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 6 | HASH JOIN | | 0 | 4 | 0 |00:00:00.01 | 0 | 715K| 715K| |
| 7 | TABLE ACCESS BY INDEX ROWID | MTL_ITEM_CATEGORIES | 0 | 506 | 0 |00:00:00.01 | 0 | | | |
| 8 | NESTED LOOPS | | 0 | 26 | 0 |00:00:00.01 | 0 | | | |
| 9 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
| 10 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
| 11 | NESTED LOOPS | | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 12 | TABLE ACCESS BY INDEX ROWID| FND_FLEX_VALUES | 0 | 22 | 0 |00:00:00.01 | 0 | | | |
|* 13 | INDEX RANGE SCAN | IDX$$_65860003 | 0 | 22 | 0 |00:00:00.01 | 0 | | | |
|* 14 | TABLE ACCESS BY INDEX ROWID| MTL_CATEGORIES_B | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 15 | INDEX RANGE SCAN | MTL_CATEGORIES_B_N3 | 0 | 2 | 0 |00:00:00.01 | 0 | | | |
|* 16 | INDEX UNIQUE SCAN | FND_FLEX_VALUES_TL_U1 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 17 | INDEX UNIQUE SCAN | MTL_CATEGORIES_TL_U1 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 18 | INDEX RANGE SCAN | IDX$$_78250002 | 0 | 1528 | 0 |00:00:00.01 | 0 | | | |
|* 19 | TABLE ACCESS FULL | OE_ORDER_LINES_ALL | 0 | 97 | 0 |00:00:00.01 | 0 | | | |
|* 20 | TABLE ACCESS BY INDEX ROWID | OE_ORDER_HEADERS_ALL | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 21 | INDEX UNIQUE SCAN | OE_ORDER_HEADERS_U1 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
| 22 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
|* 23 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 0 | 1 | 0 |00:00:00.01 | 0 | | | |
| 24 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 34 | | | |
| 25 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 30 | | | |
| 26 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 24 | | | |
| 27 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 20 | | | |
| 28 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 14 | | | |
|* 29 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_SITE_USES_ALL | 2 | 1 | 2 |00:00:00.01 | 8 | | | |
|* 30 | INDEX UNIQUE SCAN | HZ_CUST_SITE_USES_U1 | 2 | 1 | 2 |00:00:00.01 | 6 | | | |
|* 31 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_ACCT_SITES_ALL | 2 | 9420 | 2 |00:00:00.01 | 6 | | | |
|* 32 | INDEX UNIQUE SCAN | HZ_CUST_ACCT_SITES_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
| 33 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 2 | 176K| 2 |00:00:00.01 | 6 | | | |
|* 34 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 35 | INDEX UNIQUE SCAN | HZ_PARTIES_U1 | 2 | 176K| 2 |00:00:00.01 | 4 | | | |
|* 36 | TABLE ACCESS BY INDEX ROWID | HZ_PARTY_SITES | 2 | 188K| 2 |00:00:00.01 | 6 | | | |
|* 37 | INDEX UNIQUE SCAN | HZ_PARTY_SITES_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 38 | INDEX UNIQUE SCAN | HZ_LOCATIONS_U1 | 2 | 174K| 2 |00:00:00.01 | 4 | | | |
|* 39 | FILTER | | 1 | | 71 |00:09:30.14 | 379M| | | |
| 40 | NESTED LOOPS | | 1 | 1 | 71 |00:09:30.14 | 379M| | | |
| 41 | NESTED LOOPS | | 1 | 1 | 71 |00:09:30.11 | 379M| | | |
| 42 | NESTED LOOPS | | 1 | 18 | 16M|00:03:49.48 | 34M| | | |
| 43 | NESTED LOOPS | | 1 | 1 | 1075 |00:00:00.03 | 351 | | | |
| 44 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 9 | | | |
| 45 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 8 | | | |
| 46 | NESTED LOOPS | | 1 | 1 | 1 |00:00:00.01 | 6 | | | |
| 47 | TABLE ACCESS BY INDEX ROWID | FND_FLEX_VALUES | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
|* 48 | INDEX RANGE SCAN | FND_FLEX_VALUES_N4 | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
|* 49 | TABLE ACCESS BY INDEX ROWID | MTL_CATEGORIES_B | 1 | 1 | 1 |00:00:00.01 | 3 | | | |
|* 50 | INDEX RANGE SCAN | IDX$$_79530001 | 1 | 1 | 2 |00:00:00.01 | 1 | | | |
|* 51 | INDEX UNIQUE SCAN | FND_FLEX_VALUES_TL_U1 | 1 | 1 | 1 |00:00:00.01 | 2 | | | |
|* 52 | INDEX UNIQUE SCAN | MTL_CATEGORIES_TL_U1 | 1 | 1 | 1 |00:00:00.01 | 1 | | | |
| 53 | TABLE ACCESS BY INDEX ROWID | MTL_ITEM_CATEGORIES | 1 | 506 | 1075 |00:00:00.02 | 342 | | | |
|* 54 | INDEX RANGE SCAN | IDX$$_78250002 | 1 | 1528 | 1075 |00:00:00.01 | 5 | | | |
|* 55 | TABLE ACCESS BY INDEX ROWID | OE_ORDER_HEADERS_ALL | 1075 | 6485 | 16M|00:12:38.97 | 34M| | | |
|* 56 | INDEX RANGE SCAN | OE_ORDER_HEADER_ALL_ORG_ID_NDX | 1075 | 141K| 394M|00:19:52.50 | 2141K| | | |
|* 57 | TABLE ACCESS BY INDEX ROWID | OE_ORDER_LINES_ALL | 16M| 1 | 71 |00:23:47.72 | 345M| | | |
|* 58 | INDEX RANGE SCAN | OE_ORDER_LINES_N21 | 16M| 6 | 108M|00:08:35.98 | 32M| | | |
| 59 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 71 | 1 | 71 |00:00:00.01 | 247 | | | |
|* 60 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 71 | 1 | 71 |00:00:00.01 | 176 | | | |
| 61 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 34 | | | |
| 62 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 30 | | | |
| 63 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 24 | | | |
| 64 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 20 | | | |
| 65 | NESTED LOOPS | | 2 | 1 | 2 |00:00:00.01 | 14 | | | |
|* 66 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_SITE_USES_ALL | 2 | 1 | 2 |00:00:00.01 | 8 | | | |
|* 67 | INDEX UNIQUE SCAN | HZ_CUST_SITE_USES_U1 | 2 | 1 | 2 |00:00:00.01 | 6 | | | |
|* 68 | TABLE ACCESS BY INDEX ROWID| HZ_CUST_ACCT_SITES_ALL | 2 | 9420 | 2 |00:00:00.01 | 6 | | | |
|* 69 | INDEX UNIQUE SCAN | HZ_CUST_ACCT_SITES_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
| 70 | TABLE ACCESS BY INDEX ROWID | HZ_CUST_ACCOUNTS | 2 | 176K| 2 |00:00:00.01 | 6 | | | |
|* 71 | INDEX UNIQUE SCAN | HZ_CUST_ACCOUNTS_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 72 | INDEX UNIQUE SCAN | HZ_PARTIES_U1 | 2 | 176K| 2 |00:00:00.01 | 4 | | | |
|* 73 | TABLE ACCESS BY INDEX ROWID | HZ_PARTY_SITES | 2 | 188K| 2 |00:00:00.01 | 6 | | | |
|* 74 | INDEX UNIQUE SCAN | HZ_PARTY_SITES_U1 | 2 | 1 | 2 |00:00:00.01 | 4 | | | |
|* 75 | INDEX UNIQUE SCAN | HZ_LOCATIONS_U1 | 2 | 174K| 2 |00:00:00.01 | 4 | | | |
Predicate Information (identified by operation id):
3 - filter((:P_FROM_DATE<=:P_TO_DATE AND :P_BUSINESS_UNIT IS NULL))
6 - access("IC"."INVENTORY_ITEM_ID"="OL"."INVENTORY_ITEM_ID")
12 - filter("B"."FLEX_VALUE" IS NOT NULL)
13 - access("B"."FLEX_VALUE_SET_ID"=1012990)
14 - filter("B"."STRUCTURE_ID"=50289)
15 - access("B"."SEGMENT3"="B"."FLEX_VALUE")
filter("B"."SEGMENT3" IS NOT NULL)
16 - access("B"."FLEX_VALUE_ID"="T"."FLEX_VALUE_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
17 - access("B"."CATEGORY_ID"="T"."CATEGORY_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
18 - access("B"."CATEGORY_ID"="IC"."CATEGORY_ID")
19 - filter(("OL"."ACTUAL_SHIPMENT_DATE">=:P_FROM_DATE AND "OL"."ACTUAL_SHIPMENT_DATE"<=:P_TO_DATE AND
"OL"."ORDERED_ITEM"=NVL(:ITEM_HIGH,"OL"."ORDERED_ITEM") AND "OL"."LINE_CATEGORY_CODE"='ORDER' AND "OL"."UNIT_SELLING_PRICE"<>0))
20 - filter(("OH"."ORG_ID"=:P_ORG_ID AND "IC"."ORGANIZATION_ID"="OH"."SHIP_FROM_ORG_ID"))
21 - access("OH"."HEADER_ID"="OL"."HEADER_ID")
23 - access("CUST"."CUST_ACCOUNT_ID"=)
29 - filter("SUSE"."SITE_USE_CODE"='SHIP_TO')
30 - access("SUSE"."SITE_USE_ID"=:B1)
31 - filter("ACCT_SITE"."ORG_ID"=:P_ORG_ID)
32 - access("SUSE"."CUST_ACCT_SITE_ID"="ACCT_SITE"."CUST_ACCT_SITE_ID")
34 - access("ACCT"."CUST_ACCOUNT_ID"="ACCT_SITE"."CUST_ACCOUNT_ID")
35 - access("P"."PARTY_ID"="ACCT"."PARTY_ID")
36 - filter(("ACCT"."PARTY_ID"="PARTY_SITE"."PARTY_ID" AND "P"."PARTY_ID"="PARTY_SITE"."PARTY_ID"))
37 - access("ACCT_SITE"."PARTY_SITE_ID"="PARTY_SITE"."PARTY_SITE_ID")
38 - access("LOC"."LOCATION_ID"="PARTY_SITE"."LOCATION_ID")
39 - filter((:P_FROM_DATE<=:P_TO_DATE AND :P_BUSINESS_UNIT IS NOT NULL))
48 - access("B"."FLEX_VALUE"=:P_BUSINESS_UNIT AND "B"."FLEX_VALUE_SET_ID"=1012990)
49 - filter("B"."STRUCTURE_ID"=50289)
50 - access("B"."SEGMENT3"="B"."FLEX_VALUE")
filter("B"."SEGMENT3" IS NOT NULL)
51 - access("B"."FLEX_VALUE_ID"="T"."FLEX_VALUE_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
52 - access("B"."CATEGORY_ID"="T"."CATEGORY_ID" AND "T"."LANGUAGE"=USERENV('LANG'))
54 - access("B"."CATEGORY_ID"="IC"."CATEGORY_ID")
55 - filter("IC"."ORGANIZATION_ID"="OH"."SHIP_FROM_ORG_ID")
56 - access("OH"."ORG_ID"=:P_ORG_ID)
57 - filter(("OL"."ACTUAL_SHIPMENT_DATE">=:P_FROM_DATE AND "OL"."ACTUAL_SHIPMENT_DATE"<=:P_TO_DATE AND
"OL"."ORDERED_ITEM"=NVL(:ITEM_HIGH,"OL"."ORDERED_ITEM") AND "OL"."LINE_CATEGORY_CODE"='ORDER' AND "OL"."UNIT_SELLING_PRICE"<>0 AND
"IC"."INVENTORY_ITEM_ID"="OL"."INVENTORY_ITEM_ID"))
58 - access("OH"."HEADER_ID"="OL"."HEADER_ID")
60 - access("CUST"."CUST_ACCOUNT_ID"=)
66 - filter("SUSE"."SITE_USE_CODE"='SHIP_TO')
67 - access("SUSE"."SITE_USE_ID"=:B1)
68 - filter("ACCT_SITE"."ORG_ID"=:P_ORG_ID)
69 - access("SUSE"."CUST_ACCT_SITE_ID"="ACCT_SITE"."CUST_ACCT_SITE_ID")
71 - access("ACCT"."CUST_ACCOUNT_ID"="ACCT_SITE"."CUST_ACCOUNT_ID")
72 - access("P"."PARTY_ID"="ACCT"."PARTY_ID")
73 - filter(("ACCT"."PARTY_ID"="PARTY_SITE"."PARTY_ID" AND "P"."PARTY_ID"="PARTY_SITE"."PARTY_ID"))
74 - access("ACCT_SITE"."PARTY_SITE_ID"="PARTY_SITE"."PARTY_SITE_ID")
75 - access("LOC"."LOCATION_ID"="PARTY_SITE"."LOCATION_ID")
145 rows selected.one thing looking strange at predicate section at line 23 and 60 access("CUST"."CUST_ACCOUNT_ID"=),Plan is also differing why?Just look at filter predicates 3 and 39 which I highlighted previously.
With a query using bind variable, p_business_unit might be supplied with a null value and therefore two possible paths exist in the CONCATENTATION plan to cope with those possibilities (and the possibility that P_FROM_DATE is not <= P_TO_DATE).
If instead of using bind variable you supply a literal - i.e. '101468' - then the optimizer doesn't not have to worry about the fact that '101468' might be null. As far as this piece of SQL is concerned, it's a constant.
Therefore you shouldn't compare SQL that runs with binds with SQl that runs with literals, particularly where the sql involves conditional predicates.
To use a simplification, consider the difference here:
SQL> explain plan for
2 select 1 from dual where 1 = nvl(1,1);
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 1388734953
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
8 rows selected.
SQL> explain plan for
2 select 1 from dual where 1 = nvl(:1,1);
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 4034615273
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
|* 1 | FILTER | | | | |
| 2 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
Predicate Information (identified by operation id):
1 - filter(NVL(:1,1)=1)
14 rows selected.Furthermore, to emphasis my point about substition variables (&variable_name) consider this:
SQL> explain plan for
2 select 1 from dual where 1 = nvl(&1,1);
Enter value for 1: 1
Explained.
SQL> select * from table(dbms_xplan.display);
PLAN_TABLE_OUTPUT
Plan hash value: 1388734953
| Id | Operation | Name | Rows | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 1 | 2 (0)| 00:00:01 |
| 1 | FAST DUAL | | 1 | 2 (0)| 00:00:01 |
8 rows selected.
SQL> Does the substitution variable behave like a bind variable or like a literal?
A literal, because that's what it is. Substituted in before the statement is sent to the database and parsed.
Maybe you are looking for
-
How Can I Burn a Disk with PE11? Or do I use Media Player?
Any help would be appreciated!
-
Error message when saving an Interaction Record: Document distributed
Hello experts, We are currently getting error message: "Document is being distributed - changes are not possible" when saving an Interaction Record in Web IC (We use CRM 6 - 2007). We've noticed that saving an interaction record triggers an outbound
-
I've just had a new hard drive in my MacBook, luckily I had backed up everything on my external hard drive. I've just got home and my MacBook set up as a new one and asked me if I wanted to transfer my old data from an external device. I clicked this
-
Last upgrade on G4 MDD ?
Hi all i have FCP 4.5 on G4 MDD and OSX 10.5.8: wich is the last upgrade that can run on my old gear? Roberto
-
How to bring in source file into OEPE
Hi, I used import to bring up an older version project, but it has a lot extras. The only thing I need is a plain java project. So I create a new empty java project and copy the source code to this project's src directory in the file system. I expect