Hi,
I have written a SQL query, but i found that the performance is not good:
SELECT A1~VBELN WADAT_IST BOLNR C1~LIFNR B1~MATNR LFIMG BTGEW B1~CHARG INTO CORRESPONDING FIELDS OF TABLE TMP_REPORT FROM LIKP AS A1 JOIN LIPS AS B1 ON A1~VBELN = B1~VBELN JOIN MCHA AS C1 ON B1~MATNR = C1~MATNR AND B1~WERKS = C1~WERKS AND B1~CHARG = C1~CHARG WHERE LFART = 'EL' AND WADAT_IST IN S_WADAT AND B1~CHARG NE ''
Any idea??
Regards,
Kit
Hi,
Avoid join and Use FOR ALL ENTRIES
Refer this code
&----
*& Form SUB_READ_VBRK
&----
text
----
FORM sub_read_vbrk.
SELECT vbeln
rplnr
bukrs
FROM vbrk
INTO TABLE it_vbrk
WHERE vbeln IN s_vbeln
AND rplnr NE ' '.
IF sy-subrc EQ 0.
SORT it_vbrk BY rplnr.
ENDIF.
ENDFORM. " SUB_READ_VBRK
&----
*& Form SUB_READ_FPLTC
&----
text
----
FORM sub_read_fpltc.
IF NOT it_vbrk[] IS INITIAL.
SELECT fplnr
fpltr
ccnum
FROM fpltc
INTO TABLE it_fpltc
FOR ALL ENTRIES IN it_vbrk
WHERE fplnr EQ it_vbrk-rplnr
AND ccins EQ 'GIFC'.
IF sy-subrc EQ 0.
SORT it_fpltc BY fplnr.
ENDIF.
ENDIF.
ENDFORM. " SUB_READ_FPLTC
Regards,
Prashant
Hi Kit,
Declare internal tables seperately and do as below
SELECT VBELN WADAT_IST BOLNR LFIMG BTGEW FROM LIKP INTO TABLE IT_LIKP WHERE WADAT_IST IN S_WADAT AND LFART = 'EL'. IF SY-SUBRC = 0. SELECT VBELN MATNR WERKS CHARG FROM LIPS INTO TABLE IT_LIPS FOR ALL ENTRIES IN IT_LIKP WHERE VBELN = IT_LIKP-VBELN. IF SY-SUBRC = 0. SELECT LIFNR WERKS CHARG FROM MCHA INTO TABLE IT_MCHA FOR ALL ENTRIES IN IT_LIPS WHERE WERKS = IT_LIPS-WERKS AND CHARG = IT_CHARG. ENDIF. ENDIF. DELETE IT_LIPS WHERE CHARG = ' '. LOOP AT IT_LIKP INTO WA_LIKP. MOVE DATA TO FINAL ITAB FROM WA_LIKP. READ TABLE IT_LIPS INTO WA_LIPS WITH KEY VBELN = WA_LIKP-VBELN. IF SY-SUBRC = 0. MOVE DATA TO FINAL ITAB FROM WA_LIPS. ENDIF. READ TABLE IT_MCHA INTO WA_MCHA WITH KEY WERKS = WA_LIPS-WERKS CHARG = WA_LIPS-CHARG. IF SY-SUBRC = 0. MOVE DATA TO FINAL ITAB FROM WA_MCHA. ENDIF. ENDLOOP.
Regards,
Satish
Add a comment