‎2009 Feb 05 1:25 AM
Hi guys,
This piece of coding is taking ages to execute, any idea how can i fine tune it?
SELECT vbeln vbtyp_n vbtyp_v vbelv
INTO TABLE lt_vbfa1 FROM vbfa
FOR ALL ENTRIES IN lt_vbrp
WHERE vbeln = lt_vbrp-vbeln
AND vbtyp_n IN ('N','S')
AND vbtyp_v IN ('M','P','O').
Thanks in advance!
‎2009 Feb 05 6:06 AM
Table VBFA (sales document flow) is to be used to find preceding documents, like cancelation invoices for an invoice.
Here original documents are to be found for a preceding document. Then it's better not to use table VBFA because its key is original document number. Then try to use VBRP-VGBEL (preceding document) or VBRP-AUBEL (preceding sales order). Here something like:
SELECT vbrk~vbeln vbrk~vbtyp vbrp~vgtyp vbrp~vgbel
INTO TABLE lt_vbfa1
FROM vbrk INNER JOIN vbrp ON vbrk~vbeln EQ vbrp~vbeln
FOR ALL ENTRIES IN lt_vbrp
WHERE vbrk~vbeln = lt_vbrp-vbeln
AND vbrp~posnr = lt_vbrp-posnr
AND vbrk~vbtyp IN ('N','S')
AND vbrp~vgtyp IN ('M','P','O').Regards Jack
‎2009 Feb 05 4:37 AM
GOOD MORNING BRO...
try out this one and check performance..
SELECT vbelv vbeln vbtyp_n vbtyp_v
INTO TABLE lt_vbfa1 FROM vbfa
FOR ALL ENTRIES IN lt_vbrp
WHERE vbeln = lt_vbrp-vbeln
AND vbtyp_n IN ('N','S')
AND vbtyp_v IN ('M','P','O').
‎2009 Feb 05 5:28 AM
Hi,
Fetch data from the Database table without the where condition.
I.E.
SELECT vbeln vbtyp_n vbtyp_v vbelv
INTO TABLE lt_vbfa1 FROM vbfa
FOR ALL ENTRIES IN lt_vbrp
WHERE vbeln = lt_vbrp-vbeln.
Once that data is fetch use IF condition in loop.
LOOP at <ITAB>.
IF <ITAB>-vbtyp_n IN ('N','S')
AND <ITAB>-vbtyp_v IN ('M','P','O').
ENDIF.
ENDLOOP.
With above code Search in the database will be reduced...
This will solve the performance isse...
Thanks.
‎2009 Feb 05 6:06 AM
Table VBFA (sales document flow) is to be used to find preceding documents, like cancelation invoices for an invoice.
Here original documents are to be found for a preceding document. Then it's better not to use table VBFA because its key is original document number. Then try to use VBRP-VGBEL (preceding document) or VBRP-AUBEL (preceding sales order). Here something like:
SELECT vbrk~vbeln vbrk~vbtyp vbrp~vgtyp vbrp~vgbel
INTO TABLE lt_vbfa1
FROM vbrk INNER JOIN vbrp ON vbrk~vbeln EQ vbrp~vbeln
FOR ALL ENTRIES IN lt_vbrp
WHERE vbrk~vbeln = lt_vbrp-vbeln
AND vbrp~posnr = lt_vbrp-posnr
AND vbrk~vbtyp IN ('N','S')
AND vbrp~vgtyp IN ('M','P','O').Regards Jack