‎2009 Oct 21 9:23 AM
Hi all,
My select query is going to dump due to huge no of records. I have around 600000 records.
What is the best method we can use to avoid dump. How can we use package.
regards,
Mani
‎2009 Oct 21 10:05 AM
v_size = 20000.
SELECT mandt bukrs belnr gjahr blart bldat
budat monat tcode xblnr dbblg
bktxt waers kursf bstat FROM bkpf INTO TABLE it_bkpf PACKAGE SIZE v_size
WHERE gjahr IN s_ryear
AND bukrs IN s_bukrs
AND bstat IN (' ','A','B').
SELECT mandt bukrs belnr gjahr buzei bschl koart
shkzg mwskz gsber dmbtr wrbtr mwart
sgtxt bewar vorgn kostl vbeln vbel2
saknr hkont kunnr lifnr matnr ebeln
anln1 anln2 anbwa bzdat FROM bseg INTO TABLE it_bseg FOR ALL ENTRIES IN it_bkpf
WHERE bukrs IN s_bukrs
AND belnr = it_bkpf-belnr
AND gjahr IN s_ryear.
IF sy-subrc = 0.
your code
ENDIF.
ENDSELECT.
‎2009 Oct 21 10:04 AM
use
OPEN CURSOR WITH HOLD C FOR SELECT * FROM table
while <condition>
fetch next cursor C into table itab package size PACK_SIZE
....
endwhile.
challenge is PACK_SIZE
‎2009 Oct 21 10:05 AM
v_size = 20000.
SELECT mandt bukrs belnr gjahr blart bldat
budat monat tcode xblnr dbblg
bktxt waers kursf bstat FROM bkpf INTO TABLE it_bkpf PACKAGE SIZE v_size
WHERE gjahr IN s_ryear
AND bukrs IN s_bukrs
AND bstat IN (' ','A','B').
SELECT mandt bukrs belnr gjahr buzei bschl koart
shkzg mwskz gsber dmbtr wrbtr mwart
sgtxt bewar vorgn kostl vbeln vbel2
saknr hkont kunnr lifnr matnr ebeln
anln1 anln2 anbwa bzdat FROM bseg INTO TABLE it_bseg FOR ALL ENTRIES IN it_bkpf
WHERE bukrs IN s_bukrs
AND belnr = it_bkpf-belnr
AND gjahr IN s_ryear.
IF sy-subrc = 0.
your code
ENDIF.
ENDSELECT.
‎2009 Oct 21 10:06 AM
SELECT vbeln erdat FROM vbak INTO TABLE lt_vbak PACKAGE SIZE 50. "here it fetches 50 records for a hit
if lt_vbak[] is not initial.
SELECT posnr matnr meins FROM vbap INTO TABLE lt_vbap
FOR ALL ENTRIES IN lt_vbak
WHERE vbeln = lt_vbak-vbeln.
IF sy-subrc = 0.
* Now you have the two internal tables lt_vbak and lt_vbap filled with data.
* Do something with the data - remember to reinitialize internal tables
ENDIF.
clear lt_vbak[].
ENDSELECT.