2015 May 14 9:40 AM
Perfprmance of below query is very poor ..
I have already implemented for all entries logic, but it gives incorrect output which is not useful.
Please suggest any other solution.
SELECT vbak~vbeln vbak~qmnum aufk~aufnr aufk~objnr aufk~waers
FROM ( vbak INNER JOIN aufk ON
( vbak~vbeln = aufk~kdauf ) )
INTO CORRESPONDING FIELDS OF TABLE gt_order
FOR ALL ENTRIES IN gt_qmel_qmih
WHERE qmnum = gt_qmel_qmih-qmnum.
previous logic:-
SELECT vbeln aufnr qmnum
FROM vbak
INTO TABLE gt_vbak
FOR ALL ENTRIES IN gt_qmel_qmih
WHERE qmnum = gt_qmel_qmih-qmnum AND
vbeln = gt_qmel_qmih-vbeln.
IF sy-subrc EQ 0.
SORT gt_vbak BY qmnum.
ENDIF.
IF NOT gt_vbak[] IS INITIAL.
SELECT aufnr objnr waers
FROM aufk
INTO TABLE gt_aufk1
FOR ALL ENTRIES IN gt_vbak
WHERE kdauf EQ gt_vbak-vbeln AND
aufnr EQ gt_vbak-aufnr.
IF sy-subrc EQ 0.
ENDIF.
endif.
2015 May 14 4:32 PM
Is there an index on QMNUM field in VBAK? Is there an index on KDAUF field in AUFK?. If there no indexes on those fields, your query will definitely be slower irrespective of whether you use for all entries or not. Do a sql trace using ST05 and check what index is being used.