‎2008 Jan 11 7:13 AM
Hi All ,
Could you please give me some idea how to remove this nested select , because this performance is not good. What would be logic for this code
DATA : BEGIN OF ITAB OCCURS 0,
QMNUM LIKE QMEL-QMNUM,
FENUM LIKE QMFE-FENUM,
MANUM LIKE QMSM-MANUM,
QMART LIKE QMEL-QMART,
MAWERK LIKE QMEL-MAWERK,
IDNLF LIKE QMEL-IDNLF,
DEVICEID LIKE QMEL-DEVICEID,
LICHN LIKE QMEL-LICHN,
KURZTEXT1 LIKE QPCT-KURZTEXT,
KURZTEXT2 LIKE QPCT-KURZTEXT,
VBELN LIKE QMEL-VBELN,
ERNAM LIKE QMEL-ERNAM,
QMTXT LIKE QMEL-QMTXT,
QMCOD LIKE QMEL-QMCOD,
OTEIL LIKE QMFE-OTEIL,
FECOD LIKE QMFE-FECOD,
FETXT LIKE QMFE-FETXT,
MNCOD LIKE QMSM-MNCOD,
PARNR LIKE IHPA-PARNR,
PARNR1 LIKE QMSM-PARNR,
MATXT LIKE QMSM-MATXT,
PSTER LIKE QMSM-PSTER,
INDTX1 LIKE QMEL-INDTX,
INDTX2 LIKE QMEL-INDTX,
INDTX3 LIKE QMEL-INDTX,
NAME1 LIKE ADRC-NAME1,
PETER LIKE QMSM-PETER.
DATA : END OF ITAB.
DATA : BEGIN OF LINE1 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA : END OF LINE1.
DATA : BEGIN OF LINE2 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA : END OF LINE2.
DATA : BEGIN OF LINE3 OCCURS 0.
INCLUDE STRUCTURE TLINE.
DATA : END OF LINE3.
DATA: W_ORDER(16) TYPE C,
W_KURZTEXT1 LIKE QPCT-KURZTEXT,
W_KURZTEXT2 LIKE QPCT-KURZTEXT,
W_LINE LIKE SY-TABIX,
W_NAME1 LIKE ADRC-NAME1
START-OF-SELECTION.
SELECT * FROM QMEL
WHERE QMNUM = S_QMNUM.
SELECT * FROM QMFE
WHERE QMNUM = QMEL-QMNUM
AND FENUM IN S_FENUM.
SELECT SINGLE * FROM IHPA
WHERE OBJNR = QMEL-OBJNR
AND PARVW = 'KU'.
SELECT SINGLE * FROM QPCT
WHERE CODEGRUPPE = QMFE-OTGRP
AND CODE = QMFE-OTEIL.
IF SY-SUBRC = 0.
W_KURZTEXT1 = QPCT-KURZTEXT.
ENDIF.
SELECT SINGLE * FROM QPCT
WHERE CODEGRUPPE = QMFE-FEGRP
AND CODE = QMFE-FECOD.
IF SY-SUBRC = 0.
W_KURZTEXT2 = QPCT-KURZTEXT.
ENDIF.
SELECT SINGLE * FROM ADRC
WHERE ADDRNUMBER = QMEL-ADRNR.
W_NAME1 = ADRC-NAME1.
SELECT * FROM QMSM
WHERE QMNUM = QMEL-QMNUM
AND MANUM IN S_MANUM.
ITAB-QMNUM = QMEL-QMNUM.
ITAB-FENUM = QMFE-FENUM.
ITAB-MANUM = QMSM-MANUM.
ITAB-QMART = QMEL-QMART.
ITAB-MAWERK = QMEL-MAWERK.
ITAB-IDNLF = QMEL-IDNLF.
ITAB-DEVICEID = QMEL-DEVICEID.
ITAB-LICHN = QMEL-LICHN.
ITAB-VBELN = QMEL-VBELN.
ITAB-ERNAM = QMEL-ERNAM.
ITAB-QMTXT = QMEL-QMTXT.
ITAB-QMCOD = QMEL-QMCOD.
ITAB-OTEIL = QMFE-OTEIL.
ITAB-FECOD = QMFE-FECOD.
ITAB-FETXT = QMFE-FETXT.
ITAB-MNCOD = QMSM-MNCOD.
ITAB-MATXT = QMSM-MATXT.
ITAB-PSTER = QMSM-PSTER.
ITAB-PETER = QMSM-PETER.
ITAB-INDTX1 = QMEL-INDTX.
ITAB-INDTX2 = QMFE-INDTX.
ITAB-INDTX3 = QMSM-INDTX.
ITAB-KURZTEXT1 = W_KURZTEXT1.
ITAB-KURZTEXT2 = W_KURZTEXT2.
ITAB-NAME1 = W_NAME1.
ITAB-PARNR = IHPA-PARNR.
ITAB-PARNR1 = QMSM-PARNR.
APPEND ITAB.
ENDSELECT.
ENDSELECT.
ENDSELECT.
Please help me on this. will be award for correct logic.
Thanks
‎2008 Jan 11 7:20 AM
u can write inner join between qmel and qmfe tables based S_qmel
using for all entries u can the infomration from QMSM and the rest of the tables
Madhavi
‎2008 Jan 11 7:37 AM
Also try to prevent using TABLES.
From OO-context seen, better use SELECT * FROM 'tablename' INTO TABLE.
Next, state which fields you would like to select from the database table, this will decrease the duration of your select statement.
e.g.:
SELECT qmnum fenum etc....
FROM qmel
INTO CORRESPONDING FIELDS OF TABLE ....
Also make sure that, if you use FOR ALL ENTRIES IN, to check if the table you are referring to has at least one entry.
This to prevent that you select the entire table!!
Good luck!