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
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
| User | Count |
|---|---|
| 6 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |