‎2013 Jan 17 7:02 AM
Hi,
When i execute the program it will take minimum 30 minutes to get the output for the program.
Friends please guide me to optimize the code. Here with i have attached the getting data part of code.
Thanks in advance.
Shavisan.
‎2013 Jan 17 7:15 AM
Hi,
From that report are you getting proper output?
Better you use inner join.
Avoid select statement as much as possible.
Regards,
vijay
‎2013 Jan 17 7:32 AM
Hi,
Create one structure, place all your fields.
Create internal table and work area.
One request from my side is dont use select statement instead you use select single like that.
Regards,
vijay
‎2013 Jan 17 8:01 AM
hi ,
Please see the link and see all the points are satisfactory?
http://wiki.sdn.sap.com/wiki/display/ABAP/ABAP+Performance+and+Tuning
hope it helps,
Vinoth
‎2013 Jan 17 8:11 AM
‎2013 Jan 17 9:19 AM
Hi,
Analyse your code and using SE30 and SQL trace (ST05) find out the select queries that are consuming time.
Try adding where conditions and provide key fields for the table during selection.
Thanks,
Tooshar Bendale
‎2013 Jan 17 9:44 AM
Hi Friends,
Please check my code if anything i did wrong in performance side?
FORM get_data .
SELECT SINGLE zchar FROM zpp_alias
INTO g_char
WHERE zelement = c_mold_line.
IF sy-subrc = 0.
SELECT SINGLE atinn FROM cabn
INTO g_atinn
WHERE atnam = g_char.
IF sy-subrc = 0.
SELECT objek "#EC CI_NOFIRST
atinn
atwrt FROM ausp
INTO TABLE git_ausp
WHERE atinn = g_atinn.
ENDIF.
ENDIF.
SELECT vbrk~vbeln
vbrp~posnr
vbrp~fkimg
vbrp~ntgew
vbrp~gewei
vbrp~kursk
vbrp~vgbel
vbrp~vgpos
vbrp~vgtyp
vbrp~aubel
vbrp~aupos
vbrp~matnr
vbrp~arktx
vbrp~spart
vbrp~werks
vbrk~waerk
vbrk~vkorg
vbrk~vtweg
vbrk~knumv
vbrk~fkdat
vbrk~kurrf
vbrk~kunag
mara~mtart
mara~bismt
mara~wrkst
mara~ntgew
mara~gewei
FROM vbrk
INNER JOIN vbrp ON vbrk~vbeln = vbrp~vbeln
INNER JOIN mara ON mara~matnr = vbrp~matnr
INTO TABLE git_vbrk
WHERE vbrk~vbeln IN s_vbeln
AND vbrk~vbtyp NE 'N'
AND vbrk~vkorg IN s_vkorg
AND vbrk~fkdat IN s_fkdat
AND vbrk~kunag IN s_kunnr
AND vbrk~fksto NE 'X'
AND vbrp~werks IN s_werks.
IF git_vbrk IS NOT INITIAL.
DELETE git_vbrk WHERE fkimg IS INITIAL.
SORT git_vbrk BY aupos aubel.
DELETE ADJACENT DUPLICATES FROM git_vbrk COMPARING aupos aubel.
SELECT vbeln
posnr
etenr
edatu
wmeng
bmeng
etene
FROM vbep
INTO TABLE git_vbep_new
FOR ALL ENTRIES IN git_vbrk
WHERE vbeln EQ git_vbrk-aubel
AND posnr EQ git_vbrk-aupos.
SELECT trntyp
docno
exnum
rdoc1
ritem1
FROM j_1iexcdtl
INTO TABLE git_j_1iexcdtl
FOR ALL ENTRIES IN git_vbrk
WHERE rdoc1 = git_vbrk-vgbel
AND ritem1 = git_vbrk-vgpos
AND trntyp = 'ARE1'
AND status NOT IN ('R' , 'D' , 'B').
SELECT trntyp
exnum
exbed
rdoc
FROM j_1iexchdr
INTO TABLE git_j_1iexchdr
FOR ALL ENTRIES IN git_vbrk
WHERE rdoc = git_vbrk-vbeln
AND trntyp = 'DLFC'
AND status NOT IN ('R' , 'D' , 'B').
SELECT knumv
kposn
stunr
zaehk
kwert
kschl FROM konv
INTO TABLE git_konv1
FOR ALL ENTRIES IN git_vbrk
WHERE knumv = git_vbrk-knumv
AND kposn = git_vbrk-posnr
AND kschl = c_jexp.
*--> Fetching Customer Name
SELECT kunnr
name1
bran1 FROM kna1
INTO TABLE git_kna1
FOR ALL ENTRIES IN git_vbrk
WHERE kunnr = git_vbrk-kunag.
*--> Fetching Super Customer
IF git_kna1 IS NOT INITIAL.
SELECT kunnr
name1 FROM kna1
INTO TABLE git_bran
FOR ALL ENTRIES IN git_kna1
WHERE kunnr = git_kna1-bran1.
ENDIF.
IF s_auart IS NOT INITIAL.
SELECT vbak~vbeln
vbap~posnr
vbap~matnr
vbak~audat
vbak~auart
vbak~gwldt
vbak~submi
vbap~posex
vbap~kdmat
vbap~kwmeng
vbap~zalg
vbap~zcpn
vbap~zcsc FROM vbak
INNER JOIN vbap ON vbak~vbeln = vbap~vbeln
INTO TABLE git_vbak
FOR ALL ENTRIES IN git_vbrk
WHERE vbak~vbeln = git_vbrk-aubel
AND vbap~posnr = git_vbrk-aupos
AND vbak~auart IN s_auart
AND vbak~augru NE 'Z22'.
* AND vbap~abgru NE '94'.
*
* git_vbak_tmp = git_vbak.
* SORT git_vbak_tmp BY vbeln posnr. "aubel aupos.
SORT git_vbak BY vbeln posnr.
DELETE ADJACENT DUPLICATES FROM git_vbak COMPARING vbeln posnr." matnr. "vbeln posnr.
ELSE.
SELECT vbak~vbeln
vbap~posnr
vbap~matnr
vbak~audat
vbak~auart
vbak~gwldt
vbak~submi
vbap~posex
vbap~kdmat
vbap~kwmeng
vbap~zalg
vbap~zcpn
vbap~zcsc FROM vbak
INNER JOIN vbap ON vbak~vbeln = vbap~vbeln
INTO TABLE git_vbak
FOR ALL ENTRIES IN git_vbrk
WHERE vbak~vbeln = git_vbrk-aubel
AND vbap~posnr = git_vbrk-aupos
AND vbak~auart IN (c_zasy, c_zfrp, c_zmis, c_zprd, c_zsam, c_zsca, c_zsrv, c_ztol)
AND vbak~augru NE 'Z22'.
* AND vbap~abgru NE '94'.
ENDIF.
IF sy-subrc NE 0.
MESSAGE s002 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
IF git_vbak IS NOT INITIAL.
SELECT vbkd~vbeln
vbkd~posnr
vbkd~bstkd
vbkd~ihrez
vbkd~inco1
vbkd~inco2
vbkd~vsart
t173t~bezei
t173t~spras FROM vbkd
INNER JOIN t173t ON t173t~vsart = vbkd~vsart "#EC CI_BUFFJOIN
INTO TABLE git_vbkd
FOR ALL ENTRIES IN git_vbak
WHERE vbkd~vbeln = git_vbak-vbeln
AND vbkd~posnr = git_vbak-posnr.
* AND t173t~spras = sy-langu.
"IF lwa_mara-mtart = c_zfmc or lwa_mara-mtart = c_zfsf.
* " Fetch BOM Material .
SELECT matnr
werks
stlnr FROM mast
INTO TABLE git_mast
FOR ALL ENTRIES IN git_vbak
WHERE matnr = git_vbak-matnr.
IF sy-subrc = 0.
SELECT stlnr
idnrk FROM stpo
INTO TABLE git_stpo
FOR ALL ENTRIES IN git_mast
*Begin of add 0113
* WHERE stlnr = git_mast-stlnr.
WHERE stlty IN ('D', 'E', 'K', 'M', 'S', 'T', 'P') AND
stlnr = git_mast-stlnr.
*End of add 0113
* IF sy-subrc = 0.
* READ TABLE git_stpo INTO lwa_stpo INDEX 1.
* IF sy-subrc = 0.
* l_matnr = lwa_stpo-idnrk.
* ENDIF.
* ENDIF.
* ENDIF.
*
* clear : lwa_mara .
* " Fetch BOM Material net weight
SELECT matnr
mtart
wrkst
gewei
ntgew
FROM mara
INTO TABLE git_mara
FOR ALL ENTRIES IN git_stpo
WHERE matnr = git_stpo-idnrk.
ENDIF.
* IF sy-subrc EQ 0.
** " Fetch BOM Material Plant
* SELECT SINGLE matnr
* werks FROM marc
* INTO (lwa_marc-matnr,lwa_marc-werks)
* WHERE matnr = l_matnr.
ENDIF.
IF git_vbkd IS NOT INITIAL.
DELETE git_vbkd WHERE ( spras NE space AND spras NE sy-langu ).
ENDIF.
SELECT likp~vbeln
lips~posnr
likp~kunnr
likp~wadat_ist
likp~erdat
likp~vsart
lips~werks "added on 04.01.2012 by Shahanaz
lips~vgbel
lips~vgpos
lips~charg
lips~sernr
lips~zsernr
lips~zfiarno
FROM likp
INNER JOIN lips ON likp~vbeln = lips~vbeln
INTO TABLE git_likp
FOR ALL ENTRIES IN git_vbrk
WHERE likp~vbeln = git_vbrk-vgbel
AND lips~posnr = git_vbrk-vgpos.
FIELD-SYMBOLS: <fs_likp> TYPE gt_likp.
LOOP AT git_likp ASSIGNING <fs_likp>.
<fs_likp>-sernr = <fs_likp>-zsernr.
CLEAR : <fs_likp>-zsernr.
ENDLOOP.
SELECT * FROM t173t
INTO TABLE git_vsart
WHERE spras = sy-langu.
DELETE git_likp WHERE wadat_ist IS INITIAL.
IF s_werks IS NOT INITIAL.
SELECT matnr "#EC CI_NOFIRST
werks
charg
vbeln
posnr FROM mska
INTO TABLE git_mska
WHERE werks = s_werks.
ELSE.
SELECT matnr "#EC CI_NOFIRST
werks
charg
vbeln
posnr FROM mska
INTO TABLE git_mska
WHERE werks IN (c_8110,c_8120,c_8130).
ENDIF.
SELECT z_int_no "#EC CI_NOFIRST
zcharg
zsernr
zvbeln
zvbelp
zmatnr
zbatch
FROM zqm_cmtr_item
INTO TABLE git_cmtr_item
FOR ALL ENTRIES IN git_mska
WHERE zcharg = git_mska-charg.
** IF sy-subrc eq 0.
** delete git_cmtr_item where zsernr is initial.
** ENDIF.
IF git_likp IS NOT INITIAL.
SELECT kunnr
name1
FROM kna1
INTO TABLE git_kna1_new
FOR ALL ENTRIES IN git_likp
WHERE kunnr = git_likp-kunnr
AND spras = 'EN'.
SELECT zfiarno "#EC CI_NOFIELD
delivery_no
FROM zpp_fiar
INTO TABLE git_zppfiar
FOR ALL ENTRIES IN git_likp
WHERE delivery_no = git_likp-vbeln.
SELECT zfiarno "#EC CI_NOFIELD
delivery_no
FROM zpp_fiar_asy
INTO TABLE git_zppfiar
FOR ALL ENTRIES IN git_likp
WHERE delivery_no = git_likp-vbeln.
IF git_zppfiar IS NOT INITIAL.
SORT git_zppfiar BY zfiarno DESCENDING delivery_no.
ENDIF.
IF git_zppfiarasy IS NOT INITIAL.
SORT git_zppfiar BY zfiarno DESCENDING delivery_no.
ENDIF.
SELECT z_cert_no "#EC CI_NOFIRST
prueflos
zcharge
zsernr
zserial
zwerks FROM zqm_rgt_header
INTO TABLE git_rgt_header
FOR ALL ENTRIES IN git_likp
WHERE zcharge = git_likp-charg.
IF sy-subrc EQ 0.
DELETE git_rgt_header WHERE zsernr IS INITIAL.
ENDIF.
SELECT z_mt_int "#EC CI_NOFIRST
charg
ztester
werks
zmpino FROM zqm_mt_cert
INTO TABLE git_mt_cert
FOR ALL ENTRIES IN git_likp
WHERE charg = git_likp-charg.
SELECT charg
werks
sernr
vbeln
posnr
ebeln
ebelp
FROM zpp_pegg_n
INTO TABLE git_pegg_n
FOR ALL ENTRIES IN git_likp
WHERE charg = git_likp-charg
AND sernr = git_likp-zsernr.
IF sy-subrc EQ 0.
SELECT ebeln
ebelp
vbeln
vbelp
FROM ekkn
INTO TABLE git_ekkn
FOR ALL ENTRIES IN git_pegg_n
WHERE ebeln = git_pegg_n-ebeln
AND ebelp = git_pegg_n-ebelp.
ENDIF.
ENDIF.
SELECT knumv
kposn
stunr
zaehk
kwert
kschl FROM konv
INTO TABLE git_konv
FOR ALL ENTRIES IN git_vbrk
WHERE knumv = git_vbrk-knumv
AND kposn = git_vbrk-posnr
AND kschl IN (c_znsr , c_zr00 , c_zr01 , c_za03 , c_za04 , c_za05 , c_za06 , c_za10 , c_zscg , c_zstc , c_zrtc ,
c_zptc , c_kf00 , c_zpac , c_z0cd , c_jass ,
"c_zocd , "Commented by Shahanaz on 29.11.2011 requested by Sujay for updating Discount.
c_z007 , c_zoth , c_zwhc ,
"c_zwhs , "Commented by Shahanaz on 29.11.2011 requested by Sujay for updating Ware house charges.
c_zk01 , c_zk02).
ELSE.
MESSAGE s002 DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
DELETE git_cmtr_item WHERE zvbeln EQ ' '.
SORT git_kna1 BY kunnr ASCENDING.
SORT git_bran BY kunnr ASCENDING.
SORT git_ausp BY objek atinn ASCENDING.
SORT git_vbrk BY vbeln posnr ASCENDING.
SORT git_vbak BY vbeln posnr ASCENDING.
SORT git_vbkd BY vbeln posnr ASCENDING.
SORT git_likp BY vbeln posnr ASCENDING.
SORT git_mt_cert BY charg ASCENDING.
SORT git_konv BY knumv kposn kschl ASCENDING.
SORT git_rgt_header BY zcharge zsernr ASCENDING.
SORT git_cmtr_item BY zcharg zsernr ASCENDING.
DELETE ADJACENT DUPLICATES FROM git_ausp COMPARING objek atinn. " Added 0113
DELETE ADJACENT DUPLICATES FROM git_konv COMPARING knumv kposn kschl. " Added 0113
DELETE ADJACENT DUPLICATES FROM git_cmtr_item COMPARING zcharg zsernr. " Added 0113
SORT git_mt_cert BY charg ASCENDING.
SORT git_pegg_n BY charg werks sernr vbeln posnr ASCENDING.
SORT git_ekkn BY ebeln ebelp ASCENDING.
DELETE ADJACENT DUPLICATES FROM git_pegg_n COMPARING charg werks sernr vbeln posnr.
DELETE ADJACENT DUPLICATES FROM git_vbrk COMPARING vbeln posnr.
ENDFORM. " GET_DATA
‎2013 Jan 17 9:48 AM
Hi Vijay,
Try to modularize code to maximum extent..use for all entries and create function modules and declare global data objecs in the top include of the function group. Also, u can use object oriented concept like creating methods, class etc according to ur requirement..
‎2013 Jan 17 9:56 AM
hi vijay ,
run se30 , check for yourself , where you need the code to be optimized , moreover create secondary index for table