F.19 GR/IR split - logic
Hello!
Is there someone who can help us to explain the system logic behind the split made if the open items on the GR/IR account in transaction F.19? We use the transaction monthly to split the open items between two other accounts. One account for items where goods receipt has been posted but invoice has not arrived yet and another account for items where the invoice has been posted but the goods receipt has not.
Evaluating the result of the run I can see that in our case a summarization is made per profit center but that sometimes we will have more than one posting for the same profit center to the same account. Looking at the open items on the original GR/IR account we have tried to understand which logic the system uses to summarize the postings and decide to which account it should be posted but have so far failed in finding it. We thought for a while that it was profit center and document type but have seen that the logic is probably more sophisticated than that.
Is there someone who has looked at this before and can help us with an explanation?
Best regards,
Marie-Louise
Hello Marie
Let me explain you use of F.19 and what logic system uses to split open items in GR-IR account.
1. GR/IR Account is used in two scenarios as u have explained below.
a. Goods received but invoiced not received fro vendor
b. Invoice received but good not yet delivered by vendor.
Typically at the month end there are scenarios for above mentioned a or b which cause GR/IR not to be zero. Hence it contains line items. During month end / year end closing process you will have to transfer the values in this to B/S to reflect the correct values.
Scenario a. In this case you have book your Assets ( inventory /stock DR) but you have parked your liability (CR vendor ) to GR/IR account.
Scenario b. In this case you have book your liability (Cr Vendor) but parked you asset ( dr stock /iventory) to GR/IR account.
In customizing there are two additional account defined for GR/IR accounts.
1. Adjustement Account - used in aceanrio a
2. Target Account - used in scenario b
T-code F.19 analyzes the Gr/IR clearing account and posts adjustment entries for outstanding amounts to respective accounts.
Hope this helps. Please let me know if you need more information
Thanks
Sanjeev
Similar Messages
-
Hi Experts,
I need to a code snippet or a sample program which has the split logic functionality.
I know that in HR ABAP we have a standard functionality using PROVIDE and ENDPROVIDE which performs the split based on the records in the specific period from the infotypes.
Need the same functionality but I don't want to use PROVIDE and ENDPROVIDE.
Kindly help me in this requirement or share me your knowledge if have gone through this requirement.
Regards,
Thirumoorthy RHi,
the major advantage of PROVIDE - ENDPROVIDE ist it's greatest disadvantage as well.
The fields fencing the validity (usually BEGDA and ENDDA) for each involved table, will be set according to each resulting split-interval.
If this is, what you're trying to avoid, you'll have to do a nested loop.
Assuming you have two internal table A and B, both having BEGDA and ENDDA.
You then could do something like:
LOOP AT A into wa_a.
LOOP AT B into wa_b where begda LE wa_a-endda and endda ge wa_a-begda.
* Do something clever here
ENDLOOP.
ENDLOOP.
Note, how the intervals are built by comparing the fields overcross, thus giving you in the inner loop, all entries that are at least one day valid within the interval set by the outer loop.
Hope it helps.
Best regards - Jörg -
Hi gurus,
could anyone plz tell me the load logic and the splitting logic for the following scenario:
Conversion of General Ledger Balances from the various legacy systems into SAP. The balances will be loaded month for the current year only.
SAP has a Limitation of 999 line items per Document. If the conversion of the general ledger balance exceeds the 999 document line item limit, the record being loaded will need to be split into multiple documents to comply with size limitations.
The purpose of this document is to define General Ledger header and line item fields that will need to be populated.
could anyone plz tell me how 999 documents can be splitup from n number of records using LSMW.Hi Karthik,
For handling this situtation:
1. First declare variable in global declaration wity type P
data: ws_numrec type p.
2. In the BEGIN_OF_RECORD of LSMW put this piece of code:
ws_numrec = ws_numrec + 1.
if ws_numrec GT 999.
transfer_transaction
endif.
Hope this will help you.
Regards
Krishnendu -
Hi
I am required to add batch splitting logic in below code.
Any one tell me how to do this
PERFORM get_invoice_data.
PERFORM filter_invoice_data.
FORM get_invoice_data.
SELECT k~vkorg k~vbeln k~fkart k~vtweg k~fkdat "CHOYT CHG#1589121
k~waerk k~bzirk k~regio
k~BSTNK_VF "Mod-010++
p~posnr p~vkgrp p~vkbur p~mvgr5 p~matnr
p~arktx p~fkimg p~vrkme p~netwr p~mwsbp
p~aubel p~vgbel p~vgtyp
p~charg p~werks k~fkart
k~xblnr
INTO CORRESPONDING FIELDS OF TABLE t_vbrp
FROM vbrk AS k INNER JOIN vbrp AS p
ON k~vbeln = p~vbeln
WHERE k~vkorg IN s_vkorg "<< MOD CHOYT CHG#1589121
AND k~fkdat IN s_fkdat
AND k~vtweg IN s_vtweg
AND k~rfbsk = 'C' " Accounting document has been created
AND vkgrp IN s_vkgrp
AND vkbur IN s_vkbur.
ENDFORM. " get_invoice_data
FORM filter_invoice_data.
DATA lt_vbpa LIKE t_vbpa OCCURS 0 WITH HEADER LINE.
If not t_vbrp[] is initial. "Mod-004++
REFRESH lt_vbpa.
SELECT vbeln parvw kunnr
FROM vbpa
INTO CORRESPONDING FIELDS OF TABLE lt_vbpa
FOR ALL ENTRIES IN t_vbrp
WHERE vbeln = t_vbrp-vbeln
AND posnr = '000000'. " Header partner
SELECT vbeln parvw kunnr
FROM vbpa
APPENDING CORRESPONDING FIELDS OF TABLE lt_vbpa
FOR ALL ENTRIES IN t_vbrp
WHERE vbeln = t_vbrp-vbeln
AND parvw = 'WE'. " Header partner
Endif. "Mod-004++
SORT lt_vbpa BY vbeln.
t_vbpa[] = lt_vbpa[].
LOOP AT lt_vbpa WHERE vbeln = t_vbrp-vbeln
AND parvw IN s_parvw
AND kunnr IN s_kunnr.
EXIT.
ENDLOOP.
IF sy-subrc <> 0.
DELETE t_vbrp.
ENDIF.
ENDLOOP.
IF c_prf = 'X'. "KA01
SORT t_vbrp DESCENDING BY posnr vbeln fkart. "KA01
SORT t_vbrp DESCENDING BY vgbel fkart.
LOOP AT t_vbrp WHERE rfbsk NE 'C'.
t_vbrp_c = t_vbrp.
APPEND t_vbrp_c.
DELETE t_vbrp.
ENDLOOP.
SORT t_vbrp_c DESCENDING BY vgbel vgpos vbeln.
DELETE ADJACENT DUPLICATES FROM t_vbrp_c
COMPARING vgbel vgpos fkart.
LOOP AT t_vbrp_c.
t_vbrp = t_vbrp_c.
APPEND t_vbrp.
ENDLOOP.
SORT t_vbrp.
ENDIF. "KA01
ENDFORM. " filter_invoice_dataHi Kumar,
You should format your code before posting... I have done it and put it just below :
PERFORM get_invoice_data.
PERFORM filter_invoice_data.
FORM get_invoice_data.
SELECT k~vkorg k~vbeln k~fkart k~vtweg k~fkdat "CHOYT CHG#1589121
k~waerk k~bzirk k~regio k~BSTNK_VF "Mod-010++
p~posnr p~vkgrp p~vkbur p~mvgr5 p~matnr
p~arktx p~fkimg p~vrkme p~netwr p~mwsbp
p~aubel p~vgbel p~vgtyp p~charg p~werks k~fkart k~xblnr
INTO CORRESPONDING FIELDS OF TABLE t_vbrp
FROM vbrk AS k
INNER JOIN vbrp AS p
ON k~vbeln = p~vbeln
WHERE k~vkorg IN s_vkorg "<< MOD CHOYT CHG#1589121
AND k~fkdat IN s_fkdat AND k~vtweg IN s_vtweg
AND k~rfbsk = 'C' " Accounting document has been created
AND vkgrp IN s_vkgrp AND vkbur IN s_vkbur.
ENDFORM. " get_invoice_data
FORM filter_invoice_data.
DATA lt_vbpa LIKE t_vbpa OCCURS 0 WITH HEADER LINE.
IF NOT t_vbrp[] IS INITIAL. "Mod-004++
REFRESH lt_vbpa.
SELECT vbeln parvw kunnr FROM vbpa
INTO CORRESPONDING FIELDS OF TABLE lt_vbpa
FOR ALL ENTRIES IN t_vbrp
WHERE vbeln = t_vbrp-vbeln
AND posnr = '000000'. " Header partner
SELECT vbeln parvw kunnr FROM vbpa
APPENDING CORRESPONDING FIELDS OF TABLE lt_vbpa
FOR ALL ENTRIES IN t_vbrp
WHERE vbeln = t_vbrp-vbeln AND parvw = 'WE'. " Header partner
ENDIF. "Mod-004++
SORT lt_vbpa BY vbeln.
t_vbpa[] = lt_vbpa[].
" I believe that you have forget the following line, isn't it?
LOOP AT t_vbrp.
" ^^^^^^^^^^^^^^
LOOP AT lt_vbpa WHERE vbeln = t_vbrp-vbeln
AND parvw IN s_parvw
AND kunnr IN s_kunnr.
EXIT.
ENDLOOP.
IF sy-subrc 0.
DELETE t_vbrp.
ENDIF.
ENDLOOP.
IF c_prf = 'X'. "KA01
" Are you sure you want to sort your internal table twice ???
SORT t_vbrp DESCENDING BY posnr vbeln fkart. "KA01
SORT t_vbrp DESCENDING BY vgbel fkart.
" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
" I don't understand why you delete some lines in T_VBRP
" that you after insert again in T_VBRP
" (a sort change nothing to the content)???
LOOP AT t_vbrp WHERE rfbsk NE 'C'.
... " here I have skipped some lines
ENDLOOP.
" ^^^^^^^^^^^^^^^^^^^
SORT t_vbrp.
ENDIF. "KA01
ENDFORM. " filter_invoice_data
I have insert some remarks about your code : some lines seems strange! But for your question, what do you mean by batch splitting logic? Could you explicit? Thanks!
Samuel -
Hi Guys Business requirement is have the fiscal year split logic
1. Fiscal year 2007 (T009b) or ODD fiscal years and not calendar 2007
2. Fiscal Yeat 2008 or Even Fiscal Year and Not Calendar 2008
I want the simple abap logic that with generate a success message in process chain for Even year and Else return Odd to go other path in process chain
Thanks
Sincerely
Soniya KapoorHi Sonia,
U can get the fiscal year by using FM:
FTI_FISCAL_YEAR_MONTH_GET or any other FM.
Then , if the fiscal year is divisible by 2, it is a even year else, odd year.give messages accordingly.
Hope it solves ur query. -
Hi,
I have an image element in the source schema and the value which i will be getting in that field will look this
; NS2151--C1819ISPT-20.jpg; NS2151--C1819ISPT-20-1.jpg; NS2151--C1819ISPT-20-2.jpg; NS2151--C1819ISPT-20-3.jpg
Now i need to split the string and create fields in the destination
The incoming field can have 1 to 4 .jpg image names separated by semi colon. if i have one .jpg i have create one custom attribute in the destination and if have 2 image names i have to create 2 custom attributes in the destination and so on.
Is there any way that i can handle this logic in the map
Thanks
sreeHi Sree,
I would advise you to use recursive XSLT Template for this.
Links below will help you achieve this.
http://social.technet.microsoft.com/wiki/contents/articles/23662.biztalk-create-repeating-records-from-comma-separated-values.aspx
http://kentweare.blogspot.in/2008/08/biztalk-mapper-transforming-comma.html
Rachit -
I am having a string, for example : (1) 6V_EGD, i need 6 out of this
(2) 107V_EGDH, i need 107 out of this.
Plz send me the logic for this.hi,
try this one......
data : st_1 type string value '6sahg'.
data : ch_1 type c.
ch_1 = st_1.
write : ch_1.
o/p : 6
data : st_1 type string value '623sahg'.
data : ch_1(3) type c.
ch_1 = st_1.
write : ch_1.
o/p : 623
Mark the post answered once ur problem is solved .... -
Two DPM 2012 R2 Servers - one tape library split logically
Hi
We’re looking to purchase a new tape library with two LTO6 drives.
We wanted to share the library between the two DPM servers using the tape library sharing option, but to do this we’d need to attach the library via ISCSI as we don’t have a fibre channel SAN. Unfortunately the one I could find only has a 1 GB ISCSI
Bridge which really isn’t enough to drive the two LTO6 drives that are inside it.
So, I’m looking into the idea of SAS attaching the library directly to both DPM servers then partitioning the library into two logical libraries so that each DPM server see’s the library independently.
Although the library supports this option, is this supported by DPM and has anyone got their library configured this way?
We’re looking at the HP MSL4048 range.
Many thanks.Hi,
Yes, I can confirm that DPM can work with hardware partitioned libraries. The only problem I see is that each library will only have a single drive, so that means you can only have a single long term recovery goal.
DPM does tape copies of daily tapes to make the weekly tape, and copies of the weekly tape to make the monthly tapes etc. You should see a warning when you go throught the PG Wizard if you only have a single tape drive.
When you go throught the PG Wizard for a PG that has two or more long-term recovery goals specified, and you only have a single tape drive, on the "Specifylibrary and tape details" page, you should see a yellow ! with "Please ensure that there are a minimum
of two tape drives or two tape libraries for copy backups to succeed.
Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread. Regards, Mike J. [MSFT]
This posting is provided "AS IS" with no warranties, and confers no rights. -
GraphicalMapping: Split logic using user defined function
Hi all
I am doing a mapping in which the request xml comes this way
<header> ----- occurance 1
</header>
<detail> ------- occurance 0 to unbounded
<F123ABC>1000</F123ABC> ------- occurance 0 to 1
<F456PQR>2000</F456PQR> ------- occurance 0 to 1
<G200XYZ></G200XYZ> ------- occurance 0 to 1
<G500PPP>12</G500PPP> ------- occurance 0 to 1
</detail>
<trailer>
</trailer>
Now my target structure is like this
<zheader> ----- occurance 1
</zheader>
<zdetail> ------- occurance 0 to unbounded
<record type>...............</<record type>
<Format>F</Format> ---if the tag <F123ABC> is not NULL then the data of format sortation and machine will be F,123 and ABC respectively and then whatever the between the TAG <F123ABC></F123ABC> will be fed in the *<quantity>*
<sortation>123<sortation>
<machine>ABC<machine>
<quantity>1000</quantity>
</zdetail>
<zdetail> ------- occurance 0 to unbounded
<record type>...............</<record type>
<Format>F</Format> ---if the tag <F456PQR> is not NULL then the data of format, sortation, and machine will be F,456 and PQR respectively and then whatever the between the TAG <F456PQR>2000</F456PQR> will be fed in the *<quantity>*
<sortation>456<sortation>
<machine>PQR<machine>
<quantity>2000</quantity>
</zdetail>
<ztrailer>
</ztrailer>
I tried this code in the UDF but it did not work
public void ud_splitDetail(String[] F123ABC,String[] F456PQR,String[] G200XYZ,String[] G500PPP,Detail,ResultList result,Container
//write your code here
int lenDetail=Detail.length;
for(int i=0;i<lenDetail;i++)
//int len1=A.length;
if(F123ABC<i>!=""){
result.addValue("F");
result.addContextChange();}
if(F456PQR<i>!=""){
result.addValue("F");
result.addContextChange();
if(G200XYZ<i>!=""){
result.addValue("F");
result.addContextChange();
if(G500PPP<i>!=""){
result.addValue("F");
result.addContextChange();
else
result.addValue("");
result.addContextChange();
The above code is to take F for format and the same way it is for sortation, machine and quantity
But this code is not working properly, it gives a lots of F and other values. Could anyone give me some idea of how to code for the desired output
Your help is really appreciable
Thanks
NainaSarvesh
There is one more issue....the source and target structure is like this
SOURCE
<detail> ------- occurance 0 to unbounded
<countryName>India</countryName>
<F123ABC>1000</F123ABC> ------- occurance 0 to 1
<F456PQR></F456PQR> ------- occurance 0 to 1
<G200XYZ> </G200XYZ> ------- occurance 0 to 1
<G500PPP>12</G500PPP> ------- occurance 0 to 1
</detail>
<detail> ------- occurance 0 to unbounded
<countryName>China</countryName>
<F123ABC></F123ABC> ------- occurance 0 to 1
<F456PQR>2000</F456PQR> ------- occurance 0 to 1
<G200XYZ>1</G200XYZ> ------- occurance 0 to 1
<G500PPP></G500PPP> ------- occurance 0 to 1
</detail>
TARGET
<zdetail>
<countryName>India</countryName>
<format>F</format>
<sortation>123</sortation>
</zdetail>
<zdetail>
<countryName>India</countryName>
<format>G</format>
<sortation>500</sortation>
</zdetail>
<zdetail>
<countryName>China</countryName>
<format>F</format>
<sortation>456<sortation>
</zdetail>
<zdetail>
<countryName>China</countryName>
<format>G</format>
<sortation>200</sortation>
</zdetail>
So my question is how to make multiple entries of node <countryName> because for first occurance of <detail> it will be INDIA and it will remain india till we are duplicating the first occurance of <detail>. Then it will be China for next occurance of detail till it is duplicated.
Please reply at earliest...i have to finish it today only
Thanks
Naina -
Substitution for logical OR usage in control file of sql loader
Hi,
can anyone suggest me a substituion method to use the functionality of logical OR in control file developed for sql loader.
Ex:
load data
append
into table ABC
when (1:2) = 'AD'
--AND ((27:28)= '01' OR (27:28)= '02')
AND (1222:1222) = '1'
trailing nullcols
Note: condition commented in the above example need to be replaced.
one way of doing it can be splitting blocks for each condition.
Then it will look like:
load data
append
into table ABC
when (1:2) = 'AD'
AND (27:28)= '01'
AND (1222:1222) = '1'
trailing nullcols
into table ABC
when (1:2) = 'AD'
AND (27:28)= '02'
AND (1222:1222) = '1'
trailing nullcols
So, i'm looking for a better way than this, as i cannot work with the above
splitting logic because i'm dealing with lot many conditions.
Thanx inadvance
KishoreHi,
can anyone suggest me a substituion method to use the functionality of logical OR in control file developed for sql loader.
Ex:
load data
append
into table ABC
when (1:2) = 'AD'
--AND ((27:28)= '01' OR (27:28)= '02')
AND (1222:1222) = '1'
trailing nullcols
Note: condition commented in the above example need to be replaced.
one way of doing it can be splitting blocks for each condition.
Then it will look like:
load data
append
into table ABC
when (1:2) = 'AD'
AND (27:28)= '01'
AND (1222:1222) = '1'
trailing nullcols
into table ABC
when (1:2) = 'AD'
AND (27:28)= '02'
AND (1222:1222) = '1'
trailing nullcols
So, i'm looking for a better way than this, as i cannot work with the above
splitting logic because i'm dealing with lot many conditions.
Thanx inadvance
Kishore -
Invoice split due to Header data.
Hi Friends,
I have a requirement that invoice are spliting into two...and i have to stop that spliting and all items should be in one invoice...
I have two routines 601 and 602.
In routine 601 --one of the item is storing and creating the new invoice.
Billing type -F2
Delivery type -LF
item category - ZICV
In routine 602-all the remaining items are stored.
Billing type -F2
Delivery type -LF
item category - ZTH1...
Can some help me regarding this;;
Edited by: vansri$99 on Oct 5, 2011 10:33 PM1.I am unable to debug the routines 601 and 602.I have set the break point in the routines and staRted executing the VL03 but the routine is not triggeing in debuging mode...Am i doing the beduging correct?
Those routine are triggered while creating bill, so transaction vf01 or vf04.
2.The routine 601 has the Dien material item and routine 602 has the reamining items..so I am trying to add the logic in the routine 602..
In routine 602 they have passed the spart,vtweg,vgbel to the structure ZUK3 and then passed to VBAK-ZURKI.
So do i need to add the logic in the routine 602?
I suppose you mean VBRK-ZUKRI, not VBAK-ZUKRI.
That mean it's created a bill for only one delivery (VGBEL):
It depends on how the routines are called, if those routines are always called, it's better to manage the split logic in a routine only, because it's a header data, so it's better to manage it centrally.
If it's called 602 or 603, you need to repeat that logic in both routine,
So it's depends on if the bill can alwyas have at least one item of category ZTH1
3.The Dien material has a Different Iten category ZTH1 and all remaining items has ZCV1.Does the Dien materials has the same Item Caterory.If yes, Can i add the
CASE KNA1-KATR10,
WHEN 'ZZ2'
ZUk3-PSTYV= VBRP-PSYV,
VBAK-ZURKI = ZUK3.
END CASE.
That mean if a delivery has item of category ZTH1 and ZCV1, and KNA1-KATR10 is equalt to ZZZ you'll create 2 bills:
one for items ZTH1
one for items ZCV1
If you need to do it, yes you can do it, but in this case you need to place the logic above in both routines: they are assigned in copy routines to item category, so I suppose ZCV1 triggers 602 and ZTH1 triigers 603 (see VOFM transacation)
Max -
Invoice Split for same customer but for different output types
Hi Gurus,
I have a requirement from the customers. A new output type has to be created with reference to the old type and for this output type a new driver program and SAP script was created with reference to the old one.They wants invoice split to be happened based on item level PO number. That was done successfully.
This invoice split logic was written in the billing routine RV60C901(Customized).
But now they came back with a issue that the invoice split should be done only if they use the new output type but not for the old one. That means for the same customer for one output type invoice split should be done based on item level po number and for one output type it should not. How can this be controlled for a particular
output type?
This output types will not be used in the billing routine as the split happens at the sales order level. Is there any configuration that allows split for a particular output type.
Please suggest me how to proceed???Hi,
In the invoice split routine check if it is possible to find the output type making use of field symbols.
Just check in debug if the variable for output type is available as follows:-
(Program Name)variable name.
Regads,
Ankur Parab -
Will it improve performance if PACKAGE SIZE added to a select query?
Hi Gurus
While doing the performance optimization I could see that in the code it is splitting the BKPF entries selected to a package of 500 and selecting from BSEG cluster table. In effect the remaining tables are also getting hit based on the no. of entries(packets) in the selected BKPF internal table.
Cant we use the package size 500 in the select statement instead of this spliting and hiting the tables in a do loop.
eg:-
SELECT x v z
FROM bseg
APPENDING TABLE lt_bseg
PACKAGE SIZE 500
FOR ALL ENTRIES IN lt_coep
WHERE bukrs = lt_coep-bukrs
AND belnr = lt_coep-belnr_fi
AND gjahr = lt_coep-gjahr.
When I read the keyword documentation I saw a note in that as " If the addition PACKAGE SIZE is specified together with FOR ALL ENTRIES, it is not passed to the database system, but is applied to the result set on the application server, after all selected rows have been read" I did not understand the meaning of this.
So I am confused whether I can go ahead with this approach or will go along with the already used BKPF split logic and selct from BSEG and other tables in DO loop.
Can you please help me << removed >>.
Thanks & Regards,
Shinimol.
Edited by: Rob Burbank on Sep 23, 2010 9:09 AMHi,
regarding your second doubt:
> Second doubt is on the note I saw in key word documentation. " If the addition PACKAGE SIZE is specified together with FOR ALL ENTRIES, it is not passed to the database system, but is applied to the result set on the application server, after all selected rows have been read. " I couldn't understnd this. When I debugged the select with F5 it was selecting 500 each till it reaches th end.
> So what does it mean, we can use this option or we should not use?
the FAE does your select in pieces and collects the result in the database interface in an inermediate buffer and
eliminates the duplicates there. AFTER this it gives you the number of rows back to your ABAP program that are specified with package size. It simply means that the package size addition has no effect on the memory consumptionfor the intermediate
buffer in the database interface.
Kind regards,
Hermann -
Hi,
I got good info on Profit center and Doc splitting from the forum archives.
I have a doubt : If doc splitting with Zero balancing is activated the system takes care to get the BS and PL at profit center.
1. Is it necessary to clear the balances in Clearing account posted by system to balance the Dr and Cr to 0?
2. How to ensure that all my transactions are getting the profit center a) Automatic postings like PO,SD B) manual Posting
3. I think 3KEH is no more useful to map all Balance sheet accounts to Profirt center.
Assure to assign points
Thanks, Chitras.Hello,
regarding your third question please have a close look on SAP note 826357, especially part "1. Set the proposal profit center for additional balance sheet and P&L accounts."
There is the new transaction FAGL3KEH which had to be developed because SAP needed to get the former 3KEH logic being processed at an earlier stage in the CO-Interface before the Document Split logic is being processed.
Transaction 3KEH is still necessary but ONLy controls/decides if an account should be posted in PCA. Then the decision WHICH profitcenter is being set as default profitcenter will be processed in FAGL3KEH.
Regards, Andreas -
Question about composite index and index skip scan
Hi,
I have a confusion.
I have read Burleson's post on composite index column ordering (http://www.dba-oracle.com/t_composite_index_multi_column_ordering.htm) where he writes that
"......for composite indexes the most restrictive column value(the column with the highest unique values) should be put first to trim down the result set..."
But 10g performance tuning book tells this about INDEX SKIP SCAN ::
"... Index Skip scanning lets a composite index be split logically into smaller subindexes. In skip
scanning, the initial column of the composite index is not specified in the query. In other words, it is skipped.
The number of logical subindexes is determined by the number of distinct values in the initial column.
Skip scanning is advantageous if there are few distinct values in the leading column of the composite index and many distinct values in the non-leading key of the index......."
So if we design Composite indexes acc. to what Burleson said then how can we take advantage of index skip scanning. These two staements oppose each other,don't they ?
Can anybody explain this ?Dear,
For the moment forget the distinct values and the compressibility. I've tried to reproduce your case here below (using jonathan lewis table script)
create table t1
as
with generator as (
select --+ materialize
rownum id
from dual
connect by
rownum <= 10000
select
rownum c1,
mod(rownum,1000) c2,
mod(rownum,5000) c3,
mod(rownum,10000) c4,
lpad(rownum,10,'0') c5,
rpad('x',5) c6
from
generator v1,
generator v2
where
rownum <= 1000
alter table t1 add constraint t1_pk primary key (c3,c4,c5,C6);
create index idx_1 on t1 (c1,c2);
begin
dbms_stats.gather_table_stats(
ownname => user,
tabname =>'T1',
estimate_percent => 100,
method_opt => 'for all columns size 1'
end;
/and here are what I got with your two selects
mho.sql>> SELECT c1,c2
2 FROM t1
3 WHERE c2 = 3;
C1 C2
3 3
Elapsed: 00:00:00.00
mho.sql>> start dispcursor
PLAN_TABLE_OUTPUT
SQL_ID 4dbgq3m2utd9f, child number 0
SELECT c1,c2 FROM t1 WHERE c2 = 3
Plan hash value: 3723378319
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
|* 1 | INDEX FAST FULL SCAN| IDX_1 | 1 | 1 | 1 |00:00:00.01 | 7 |
Predicate Information (identified by operation id):
1 - filter("C2"=3)
17 rows selected.
Elapsed: 00:00:00.34
mho.sql>> SELECT c3,c4,c5,c6
2 FROM t1
3 WHERE c4 = 3
4 AND c5 = '0000000003'
5 AND c6 = 'x ';
C3 C4 C5 C6
3 3 0000000003 x
Elapsed: 00:00:00.00
mho.sql>> @dispcursor
PLAN_TABLE_OUTPUT
SQL_ID fv62c9uqtktw9, child number 0
SELECT c3,c4,c5,c6 FROM t1 WHERE c4 = 3 AND c5 = '0000000003' AND c6 = 'x '
Plan hash value: 2969533764
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers |
|* 1 | INDEX FAST FULL SCAN| T1_PK | 1 | 1 | 1 |00:00:00.01 | 9 |
Predicate Information (identified by operation id):
1 - filter(("C4"=3 AND "C5"='0000000003' AND "C6"='x '))
17 rows selected.I didn't succeed to reproduce your index skip scan situation.
Best Regards
Mohamed Houri
Maybe you are looking for
-
Strange distorted colours on my ibook screen, blacks turn to reds, help!
Hello! I am posting my display problem here so that i don't have to spend unnecessary money on it. So the problem began 3 days ago when i started my ibook, the apple logo that usually is the center of a blue screen, was a bit grey with some red highl
-
My ipod wont work with this other computer
my computer that had my ipod music and information on it crshed so i went to go use my ipod on my moms computer. she also has an ipod but doesnt use it much so i uninstalled itunes the re-insatlled it under my information. but every time i plug it in
-
Why do non-admin Wndows 7 users need admin password to use firefox?
I had to reinstall Firefox and now as non-admin user, I have to use admin password to sign, plus, lost my user bookmarks? Only one personna appears for all users.
-
Issue with Siteground "Website Wizard" estore & PayPal Screen
We currently run a non-proft musical group (community orchestra) website on Siteground. We use the "Website Wizard" function, which lets you create and edit a website easily with canned pages using any web browser. No need to use Joomla, etc. As an o
-
Browsing difference from IE to Mozilla.
I made a website but I noticed a problem on Firefox. On Internet Explorer, the webpages are displayed perfectly. Exactly I see in my Dreamweaver but when I open the same page on Mozilla Firefox, my background images are significantly smaller. Its lik