2008 May 01 4:36 PM
Hello to all
Here in my requirement i did one select query logic
bt performance wise it is not working proper way
if u find any changes relevant to below select statement plz reply me
here is my Select Query
*
Extract all the data from the database tables .
-----------------------------------------------
*
*
Retrieving data from table MARA .
-----------------------------------------------
SELECT * FROM mara
INTO CORRESPONDING FIELDS OF TABLE it_mara
WHERE matnr IN s_matnr AND mtart IN s_mtart AND ernam IN s_ernam.
sort it_mara by matnr.
DELETE ADJACENT DUPLICATES FROM it_mara comparing all fields.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data of Product Group Level3 on the condition that ZZPARENT should not be empty .
---------------------------------------------------------------------------------------------
*
IF wa_mara-zzparent NE ' '.
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_mara-matnr.
MOVE wa_mara-zzparent TO wa_final-prodh3.
ENDIF.
SELECT matnr werks mtvfp mfrgr ladgr prctr sernp stawn ekgrp dismm lgfsb insmk
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks IN s_werks .
sort it_marc by matnr werks.
DELETE ADJACENT DUPLICATES FROM it_marc.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data from table MVKE .
---------------------------------
*
SELECT matnr vkorg vtweg dwerk kondm ktgrm mtpos mvgr1 mvgr2 mvgr3 mvgr4 mvgr5
FROM mvke
INTO CORRESPONDING FIELDS OF TABLE it_mvke
FOR ALL ENTRIES IN IT_MARA
where matnr = it_mara-matnr and
vkorg IN s_vkorg.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data from table MARM, satisfying the condition for Case Pack Factor as CS .
--------------------------------------------------------------------------------------
*
SELECT MATNR meinh umrez laeng breit hoehe meabm volum voleh brgew
FROM marm
INTO CORRESPONDING FIELDS OF TABLE it_marm
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR = IT_MARA-MATNR
AND meinh = 'CS'.
*
Retrieving data from table MAKT .
---------------------------------
*
SELECT matnr maktx
FROM makt
INTO CORRESPONDING FIELDS OF TABLE it_makt
WHERE matnr IN s_matnr .
*
Retrieving data from table AMPL and fetching data for field GPCCODE .
----------------------------------------------------------------------
*
SELECT bmatn ematn
FROM ampl
INTO CORRESPONDING FIELDS OF TABLE it_ampl
FOR ALL ENTRIES IN it_mara
WHERE bmatn = it_mara-matnr
AND datuv LE sy-datum
AND datub GE sy-datum.
****
IF NOT wa_ampl IS INITIAL.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_mara-matnr.
MOVE wa_ampl-ematn TO wa_final-gpccode.
ELSE.
SELECT bmatn ematn
FROM ampl
INTO CORRESPONDING FIELDS OF TABLE it_ampl
FOR ALL ENTRIES IN it_mara
WHERE bmatn = it_mara-matnr.
****
IF NOT wa_ampl IS INITIAL.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_ampl-bmatn.
MOVE wa_mara-mfrpn TO wa_final-gpccode.
ELSE.
wa_final-gpccode = ' '.
ENDIF.
ENDIF.
*
Moving Relevant data to IT_FINAL (Final Internal Table ) .
-------------------------------------------------------------
*
LOOP AT it_mara INTO wa_mara .
MOVE-CORRESPONDING wa_mara TO wa_final.
MOVE : wa_mara-zzparent TO wa_final-prodh3.
READ TABLE it_mvke INTO wa_MVKE with key vkorg = wa_mvke-vkorg.
MOVE : wa_mvke-vkorg TO wa_final-vkorg,
wa_mvke-vtweg TO wa_final-vtweg,
wa_mvke-dwerk TO wa_final-dwerk,
wa_mvke-kondm TO wa_final-kondm,
wa_mvke-ktgrm TO wa_final-ktgrm,
wa_mvke-mtpos TO wa_final-mtpos,
wa_mvke-mvgr1 TO wa_final-mvgr1,
wa_mvke-mvgr2 TO wa_final-mvgr2,
wa_mvke-mvgr3 TO wa_final-mvgr3,
wa_mvke-mvgr4 TO wa_final-mvgr4,
wa_mvke-mvgr5 TO wa_final-mvgr5.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_marc-matnr .
MOVE : wa_marc-mtvfp TO wa_final-mtvfp,
wa_marc-mfrgr TO wa_final-mfrgr,
wa_marc-ladgr TO wa_final-ladgr,
wa_marc-prctr TO wa_final-prctr,
wa_marc-sernp TO wa_final-sernp,
wa_marc-stawn TO wa_final-stawn,
wa_marc-ekgrp TO wa_final-ekgrp,
wa_marc-dismm TO wa_final-dismm,
wa_marc-lgfsb TO wa_final-lgfsb,
wa_marc-insmk TO wa_final-insmk.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_mara-matnr BINARY SEARCH.
MOVE : wa_ampl-bmatn TO wa_final-bmatn.
READ TABLE it_marm INTO wa_marm WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
MOVE: wa_marm-meinh TO wa_final-meinh,
wa_marm-umrez TO wa_final-umrez,
wa_marm-laeng TO wa_final-laeng,
wa_marm-breit TO wa_final-breit,
wa_marm-hoehe TO wa_final-hoehe,
wa_marm-meabm TO wa_final-meabm,
wa_marm-volum TO wa_final-volum,
wa_marm-brgew TO wa_final-brgew.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr.
MOVE wa_makt-maktx TO wa_final-maktx.
*******************************FOR SALE ORGANIZATION CHECK BOX***************
IF c_sodata = 'X'.
SELECT matnr vkorg lvorm
FROM mvke
INTO CORRESPONDING FIELDS OF TABLE it_checkselected
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND vkorg IN s_vkorg
AND vkorg NE 'YMUS'
AND lvorm EQ ' '.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
STOP.
ENDIF.
LOOP AT it_checkselected INTO wa_checkselected.
READ TABLE it_checkselected INDEX sy-index INTO wa_checkselected .
MOVE : wa_checkselected-vkorg TO wa_final-vkorg,
wa_checkselected-lvorm TO wa_final-lvorm.
ENDLOOP.
ENDIF.
***************************FOR PLANT CHECK BOX*****************************
*
Retrieving data if check box for Plantdata is Enabled .
--------------------------------------------------------
*
IF c_pdata = 'X'.
SELECT matnr werks mtvfp mfrgr ladgr prctr sernp stawn ekgrp dismm lgfsb insmk
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks IN s_werks .
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_marc-matnr BINARY SEARCH.
MOVE : wa_marc-werks TO wa_final-werks,
wa_marc-mtvfp TO wa_final-mtvfp,
wa_marc-mfrgr TO wa_final-mfrgr,
wa_marc-ladgr TO wa_final-ladgr,
wa_marc-prctr TO wa_final-prctr,
wa_marc-sernp TO wa_final-sernp,
wa_marc-stawn TO wa_final-stawn,
wa_marc-ekgrp TO wa_final-ekgrp,
wa_marc-dismm TO wa_final-dismm,
wa_marc-lgfsb TO wa_final-lgfsb,
wa_marc-insmk TO wa_final-insmk.
SELECT werks lgnum
FROM t320
INTO CORRESPONDING FIELDS OF TABLE it_t320
FOR ALL ENTRIES IN it_marc
WHERE werks = it_marc-werks
AND werks IN s_werks.
SELECT matnr lgnum ltkza ltkze lgbkz block lhmg1 lhme1 lety1 zzcase_orient
FROM mlgn
INTO CORRESPONDING FIELDS OF TABLE it_mlgn
FOR ALL ENTRIES IN it_t320
WHERE lgnum = it_t320-lgnum
AND matnr IN s_matnr.
READ TABLE it_mlgn INTO wa_mlgn WITH KEY lgnum = wa_t320-lgnum BINARY SEARCH.
MOVE: wa_mlgn-lgnum TO wa_final-lgnum,
wa_mlgn-ltkza TO wa_final-ltkza,
wa_mlgn-ltkze TO wa_final-ltkze,
wa_mlgn-lgbkz TO wa_final-lgbkz,
wa_mlgn-block TO wa_final-block,
wa_mlgn-lhmg1 TO wa_final-lhmg1,
wa_mlgn-lhme1 TO wa_final-lhme1,
wa_mlgn-lety1 TO wa_final-lety1,
wa_mlgn-zzcase_orient TO wa_final-zzcase_orient.
SELECT matnr bklas
FROM mbew
INTO TABLE it_mbew
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
READ TABLE it_mbew INTO wa_mbew WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
MOVE wa_mbew-bklas TO wa_final-bklas.
ENDIF.
APPEND wa_final TO it_final .
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM it_final comparing all fields.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
STOP.
CLEAR sy-subrc.
ENDIF.
REFRESH: it_mara,it_marc,it_mvke,it_mlgn,it_ampl,it_t320,
it_checkselected.
plese help me its an urgent requirement
Points will be rewarded fro satisfying answer
Regards
ASLAM
2008 May 01 4:48 PM
select only those fields which u want in ur program, in the first select statement u are selecting all fields, u can avoiid that.
secondly u are using into corresponding fields of table, try to avoid that also
define the IT with fields which u r retrieving from the select statement and use into table, its more efficient that into corresponding fields
try to avoid select inside loop statement.
bye
Hello to all
Here in my requirement i did one select query logic
bt performance wise it is not working proper way
if u find any changes relevant to below select statement plz reply me
here is my Select Query
*
Extract all the data from the database tables .
-----------------------------------------------
*
*
Retrieving data from table MARA .
-----------------------------------------------
SELECT * FROM mara
INTO CORRESPONDING FIELDS OF TABLE it_mara
WHERE matnr IN s_matnr AND mtart IN s_mtart AND ernam IN s_ernam.
sort it_mara by matnr.
DELETE ADJACENT DUPLICATES FROM it_mara comparing all fields.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data of Product Group Level3 on the condition that ZZPARENT should not be empty .
---------------------------------------------------------------------------------------------
*
IF wa_mara-zzparent NE ' '.
READ TABLE it_mara INTO wa_mara WITH KEY matnr = wa_mara-matnr.
MOVE wa_mara-zzparent TO wa_final-prodh3.
ENDIF.
SELECT matnr werks mtvfp mfrgr ladgr prctr sernp stawn ekgrp dismm lgfsb insmk
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks IN s_werks .
sort it_marc by matnr werks.
DELETE ADJACENT DUPLICATES FROM it_marc.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data from table MVKE .
---------------------------------
*
SELECT matnr vkorg vtweg dwerk kondm ktgrm mtpos mvgr1 mvgr2 mvgr3 mvgr4 mvgr5
FROM mvke
INTO CORRESPONDING FIELDS OF TABLE it_mvke
FOR ALL ENTRIES IN IT_MARA
where matnr = it_mara-matnr and
vkorg IN s_vkorg.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
REFRESH: it_marc.
STOP.
ENDIF.
*
Retrieving data from table MARM, satisfying the condition for Case Pack Factor as CS .
--------------------------------------------------------------------------------------
*
SELECT MATNR meinh umrez laeng breit hoehe meabm volum voleh brgew
FROM marm
INTO CORRESPONDING FIELDS OF TABLE it_marm
FOR ALL ENTRIES IN IT_MARA
WHERE MATNR = IT_MARA-MATNR
AND meinh = 'CS'.
*
Retrieving data from table MAKT .
---------------------------------
*
SELECT matnr maktx
FROM makt
INTO CORRESPONDING FIELDS OF TABLE it_makt
WHERE matnr IN s_matnr .
*
Retrieving data from table AMPL and fetching data for field GPCCODE .
----------------------------------------------------------------------
*
SELECT bmatn ematn
FROM ampl
INTO CORRESPONDING FIELDS OF TABLE it_ampl
FOR ALL ENTRIES IN it_mara
WHERE bmatn = it_mara-matnr
AND datuv LE sy-datum
AND datub GE sy-datum.
****
IF NOT wa_ampl IS INITIAL.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_mara-matnr.
MOVE wa_ampl-ematn TO wa_final-gpccode.
ELSE.
SELECT bmatn ematn
FROM ampl
INTO CORRESPONDING FIELDS OF TABLE it_ampl
FOR ALL ENTRIES IN it_mara
WHERE bmatn = it_mara-matnr.
****
IF NOT wa_ampl IS INITIAL.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_ampl-bmatn.
MOVE wa_mara-mfrpn TO wa_final-gpccode.
ELSE.
wa_final-gpccode = ' '.
ENDIF.
ENDIF.
*
Moving Relevant data to IT_FINAL (Final Internal Table ) .
-------------------------------------------------------------
*
LOOP AT it_mara INTO wa_mara .
MOVE-CORRESPONDING wa_mara TO wa_final.
MOVE : wa_mara-zzparent TO wa_final-prodh3.
READ TABLE it_mvke INTO wa_MVKE with key vkorg = wa_mvke-vkorg.
MOVE : wa_mvke-vkorg TO wa_final-vkorg,
wa_mvke-vtweg TO wa_final-vtweg,
wa_mvke-dwerk TO wa_final-dwerk,
wa_mvke-kondm TO wa_final-kondm,
wa_mvke-ktgrm TO wa_final-ktgrm,
wa_mvke-mtpos TO wa_final-mtpos,
wa_mvke-mvgr1 TO wa_final-mvgr1,
wa_mvke-mvgr2 TO wa_final-mvgr2,
wa_mvke-mvgr3 TO wa_final-mvgr3,
wa_mvke-mvgr4 TO wa_final-mvgr4,
wa_mvke-mvgr5 TO wa_final-mvgr5.
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_marc-matnr .
MOVE : wa_marc-mtvfp TO wa_final-mtvfp,
wa_marc-mfrgr TO wa_final-mfrgr,
wa_marc-ladgr TO wa_final-ladgr,
wa_marc-prctr TO wa_final-prctr,
wa_marc-sernp TO wa_final-sernp,
wa_marc-stawn TO wa_final-stawn,
wa_marc-ekgrp TO wa_final-ekgrp,
wa_marc-dismm TO wa_final-dismm,
wa_marc-lgfsb TO wa_final-lgfsb,
wa_marc-insmk TO wa_final-insmk.
READ TABLE it_ampl INTO wa_ampl WITH KEY bmatn = wa_mara-matnr BINARY SEARCH.
MOVE : wa_ampl-bmatn TO wa_final-bmatn.
READ TABLE it_marm INTO wa_marm WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
MOVE: wa_marm-meinh TO wa_final-meinh,
wa_marm-umrez TO wa_final-umrez,
wa_marm-laeng TO wa_final-laeng,
wa_marm-breit TO wa_final-breit,
wa_marm-hoehe TO wa_final-hoehe,
wa_marm-meabm TO wa_final-meabm,
wa_marm-volum TO wa_final-volum,
wa_marm-brgew TO wa_final-brgew.
READ TABLE it_makt INTO wa_makt WITH KEY matnr = wa_mara-matnr.
MOVE wa_makt-maktx TO wa_final-maktx.
*******************************FOR SALE ORGANIZATION CHECK BOX***************
IF c_sodata = 'X'.
SELECT matnr vkorg lvorm
FROM mvke
INTO CORRESPONDING FIELDS OF TABLE it_checkselected
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND vkorg IN s_vkorg
AND vkorg NE 'YMUS'
AND lvorm EQ ' '.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
STOP.
ENDIF.
LOOP AT it_checkselected INTO wa_checkselected.
READ TABLE it_checkselected INDEX sy-index INTO wa_checkselected .
MOVE : wa_checkselected-vkorg TO wa_final-vkorg,
wa_checkselected-lvorm TO wa_final-lvorm.
ENDLOOP.
ENDIF.
***************************FOR PLANT CHECK BOX*****************************
*
Retrieving data if check box for Plantdata is Enabled .
--------------------------------------------------------
*
IF c_pdata = 'X'.
SELECT matnr werks mtvfp mfrgr ladgr prctr sernp stawn ekgrp dismm lgfsb insmk
FROM marc
INTO CORRESPONDING FIELDS OF TABLE it_marc
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr
AND werks IN s_werks .
READ TABLE it_marc INTO wa_marc WITH KEY matnr = wa_marc-matnr BINARY SEARCH.
MOVE : wa_marc-werks TO wa_final-werks,
wa_marc-mtvfp TO wa_final-mtvfp,
wa_marc-mfrgr TO wa_final-mfrgr,
wa_marc-ladgr TO wa_final-ladgr,
wa_marc-prctr TO wa_final-prctr,
wa_marc-sernp TO wa_final-sernp,
wa_marc-stawn TO wa_final-stawn,
wa_marc-ekgrp TO wa_final-ekgrp,
wa_marc-dismm TO wa_final-dismm,
wa_marc-lgfsb TO wa_final-lgfsb,
wa_marc-insmk TO wa_final-insmk.
SELECT werks lgnum
FROM t320
INTO CORRESPONDING FIELDS OF TABLE it_t320
FOR ALL ENTRIES IN it_marc
WHERE werks = it_marc-werks
AND werks IN s_werks.
SELECT matnr lgnum ltkza ltkze lgbkz block lhmg1 lhme1 lety1 zzcase_orient
FROM mlgn
INTO CORRESPONDING FIELDS OF TABLE it_mlgn
FOR ALL ENTRIES IN it_t320
WHERE lgnum = it_t320-lgnum
AND matnr IN s_matnr.
READ TABLE it_mlgn INTO wa_mlgn WITH KEY lgnum = wa_t320-lgnum BINARY SEARCH.
MOVE: wa_mlgn-lgnum TO wa_final-lgnum,
wa_mlgn-ltkza TO wa_final-ltkza,
wa_mlgn-ltkze TO wa_final-ltkze,
wa_mlgn-lgbkz TO wa_final-lgbkz,
wa_mlgn-block TO wa_final-block,
wa_mlgn-lhmg1 TO wa_final-lhmg1,
wa_mlgn-lhme1 TO wa_final-lhme1,
wa_mlgn-lety1 TO wa_final-lety1,
wa_mlgn-zzcase_orient TO wa_final-zzcase_orient.
SELECT matnr bklas
FROM mbew
INTO TABLE it_mbew
FOR ALL ENTRIES IN it_mara
WHERE matnr = it_mara-matnr.
READ TABLE it_mbew INTO wa_mbew WITH KEY matnr = wa_mara-matnr BINARY SEARCH.
MOVE wa_mbew-bklas TO wa_final-bklas.
ENDIF.
APPEND wa_final TO it_final .
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM it_final comparing all fields.
IF sy-subrc NE 0.
MESSAGE s005(zmm).
STOP.
CLEAR sy-subrc.
ENDIF.
REFRESH: it_mara,it_marc,it_mvke,it_mlgn,it_ampl,it_t320,
it_checkselected.
plese help me its an urgent requirement
Points will be rewarded fro satisfying answer
Regards
ASLAM
2008 May 01 4:48 PM
select only those fields which u want in ur program, in the first select statement u are selecting all fields, u can avoiid that.
secondly u are using into corresponding fields of table, try to avoid that also
define the IT with fields which u r retrieving from the select statement and use into table, its more efficient that into corresponding fields
try to avoid select inside loop statement.
bye
2008 May 01 5:15 PM
Hi,
Get the field that you need from the database table. Please sort the table before deleting adjacent duplicates.
sort itab by fieldname. " If u want to sort based on fieldname otherwise u can just use sort itab.
delete adjacent duplicates from itab comparing fieldname.
Award me points if it helps....
Thanks,
Sheel
2008 May 01 5:25 PM
After each select statement check the sy-subrc then delete the duplicates with comparing key fields.
Remove into corresponding fields...
Select only the required fields instead of giving select *.
Try to use all the primary key fields in the where clause.
Thanks,
Srinivas