2009 Mar 05 8:25 AM
Hi Frnds,
I have a program.
in that requirement is like first fetch kdgrp from kotg908 table then..using KDGRP,......fetch knumh from a910 table..
then using knumh fetch kbetr from konp table..
Ihave written coding for the above requirement as below..
SELECT * FROM kotg908 INTO CORRESPONDING FIELDS OF TABLE i_extract_kotg
WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
zzkonda IN s_cpg AND
kondm IN s_mpg AND
datbi GE sy-datum AND
datab LE sy-datum.
IF sy-subrc = 0.
LOOP AT i_extract_kotg WHERE zzkonda IN s_cpg.
SELECT knumh FROM a910 INTO TABLE i_extract_910
WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
kdgrp EQ i_extract_kotg AND
datbi GT sy-datum AND
datab LE sy-datum.
IF sy-subrc = 0.
LOOP AT i_extract_910.
SELECT SINGLE kbetr FROM konp INTO i_extract_910-kbetr
WHERE knumh EQ i_extract_910-knumh.
can u suggest a better way as per performance? Plaese..
2009 Mar 05 8:28 AM
1.> If you just want kdgrp , then just select that field instead of select *
2.>LOOP AT i_extract_kotg WHERE zzkonda IN s_cpg.
instead of the above statemnet you can use
loop at i_extract_kotg assigining <fs> (field symbol)
3. I dont knw abt your logic that why u are using select in loop but that can also be avoided
Regards
Bhanu
2009 Mar 05 8:30 AM
Hi Dude,
Please avoid the select statement inside the loop instead of Write the Read statement in the loop,
it will give good performence
Regards
Ramakrishna Pathi
2009 Mar 05 8:39 AM
hey how can i write a read statement for the above selction?
can u suggest..?
2009 Mar 05 8:47 AM
Hi Shruthi,
This a sample code try to use the same logic in your program.Performancewise also it will give you better results.
SELECT vbeln
audat
erzet
kunnr
ernam
netwr
knumv
angdt
INTO TABLE it_vbak
FROM vbak
WHERE vbeln IN s_vbeln
AND kunnr IN s_kunnr
AND ernam IN s_ernam.
IF NOT it_vbak IS INITIAL.
SELECT vbeln
posnr
matnr
arktx
matkl
meins
kwmeng
mwsbp
FROM vbap
INTO TABLE it_vbap
FOR ALL ENTRIES IN it_vbak
WHERE vbeln = it_vbak-vbeln.
endif.
Loop at it_vbak into wa_vbak.
Read table it_vbap into wa_vbap with key vbeln = it_vbak-vbeln.
then write the fields what ever you want
endloop.
Thanks,
Sathish
2009 Mar 05 8:42 AM
Hi,
define internal table it_extract_kotg with selective fields def.
like data: begin of it_extract_kotg occurs 0,
field1 like table-field1,
;
;
end of it_extract_kotg.
2. Remove * in loop and remove into corresponding fields of by giving fields in sequence as define in internal table.
like select field1 field2 ..........from kotg908 into table it_extract_kotg where
..............................
3. dont use second loop. use select stmt jus like first one but dont forget to give the ref of first internal table by giving for all entries stmt.
like this
select field1 field2...... from a910 into table itab for all entries in it_extract_kotg where
give ref of key fields of first internal table in where condition.
4. now make a final internal table of required fields.
take a loop on first internal table
and read second internal table inside that.
and pass the variable to final table.
enjoy.
regards
vijay
for any further clarification you most welcome.
2009 Mar 05 8:51 AM
Hi,
Use for all entries for 2nd and 3rd select query.
SELECT * FROM kotg908 INTO CORRESPONDING FIELDS OF TABLE i_extract_kotg
WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
zzkonda IN s_cpg AND
kondm IN s_mpg AND
datbi GE sy-datum AND
datab LE sy-datum.
IF sy-subrc = 0.
SELECT knumh FROM a910 INTO TABLE i_extract_910
FOR ALL ENTRIES IN i_extract_kotg WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
kdgrp EQ i_extract_kotg-kdgrp AND
datbi GT sy-datum AND
datab LE sy-datum.
IF sy-subrc = 0.
SELECT kbetr FROM konp INTO i_extract_910_new
FOR ALL ENTRIES IN i_extract_910
WHERE knumh EQ i_extract_910-knumh.
ENDIF.
ENDIF.
ENDIF.
after this selection use loop and read to read the internal table.
If u do like this performance will be improved...Don't write select queries inside the loop.
2009 Mar 05 9:04 AM
Is there any speficic condition that i should use for
FOR ALL ENTRIES..?
2009 Mar 05 9:12 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:12 AM
hi,
well for all entries is very usefull for fetching multitable data. this stmt gives a high performance where
tables are not well connected through key fields.
so if u wanna high performance in your case, use for all entries.
cheers.....
regards
vijay
2009 Mar 05 9:14 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:14 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:14 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:16 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:16 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:16 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:18 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:18 AM
Hi,
If u use select query inside the loop, for every record , select query will go and hit database, so performance will be low.
Alternate for the above scenario is, For all entries, it'll hit database only once. so performance will be high.
2009 Mar 05 9:36 AM
Hi,
Sorry, some problem in net. so it was posted multiple times.
2009 Mar 05 9:29 AM
Hi,
Try the below code instead of writing the select inside the loop.
SELECT * FROM kotg908 INTO CORRESPONDING FIELDS OF TABLE i_extract_kotg
WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
zzkonda IN s_cpg AND
kondm IN s_mpg AND
datbi GE sy-datum AND
datab LE sy-datum.
*if not i_extract_kotg[] is intial.*
SELECT knumh FROM a910 INTO TABLE i_extract_910 for all entries in i_extract_kotg
WHERE kdgrp = i_extract_kotg-kdgrp
kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
datbi GT sy-datum AND
datab LE sy-datum.
endif.
2009 Mar 05 9:37 AM
Hi,
Use the below code instead of writing select inside the LOOP.
SELECT * FROM kotg908 INTO CORRESPONDING FIELDS OF TABLE i_extract_kotg
WHERE kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
zzkonda IN s_cpg AND
kondm IN s_mpg AND
datbi GE sy-datum AND
datab LE sy-datum.
if not i_extract_kotg[] is intial.
SELECT knumh FROM a910 INTO TABLE i_extract_910 for all entries in i_extract_kotg
WHERE kdgrp = i_extract_kotg-kdgrp
kappl EQ c_sales AND
kschl EQ c_cond_type AND
vkorg EQ p_sorg AND
vtweg EQ p_dich AND
spart EQ p_div AND
datbi GT sy-datum AND
datab LE sy-datum.
endif.
2009 Mar 05 9:58 AM
Hi,
If u post a question.. give a message if any answers helps u or solves the problem..
Thanks.