Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

performanance issue

Former Member
0 Likes
348

Can any body tell me how to increse the performance of following code

only coz of this code my program running very slowly

Helpful answer will definatly rewarded

see the part of the code below

loop at it_zsdtcustser.

select single vkbur into knvv-vkbur

from knvv where kunnr =

it_zsdtcustser-kunnr.

select single name1 into kna1-name1

from kna1 where kunnr =

it_zsdtcustser-kunnr.

if knvv-vkbur1(3) = it_zsdtcustser-werks1(3).

select single rpmkr into kna1-rpmkr

from kna1 where kunnr =

it_zsdtcustser-kunnr.

if kna1-rpmkr+0(1) = 'L'.

w_rmpkr = '0011'.

elseif kna1-rpmkr+0(1) = 'U'.

w_rmpkr = '0010'.

endif.

else.

w_rmpkr = '0012'.

endif.

it_zsdtcustser-custname = kna1-name1.

it_zsdtcustser-u_l_ind = w_rmpkr.

modify it_zsdtcustser transporting u_l_ind custname.

clear w_rmpkr.

CALL FUNCTION 'LAST_DAY_OF_MONTHS' EXPORTING

day_in = it_zsdtcustser-order_date

IMPORTING

LAST_DAY_OF_MONTH = last_date

EXCEPTIONS

DAY_IN_NO_DATE = 1

OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF. on 26/02/2008

new_date = it_zsdtcustser-order_date + 1.

last_date1 = it_zsdtcustser-order_date + 5.

read table it_zsdtcustser index sy-tabix.

at new werks.

count1 = 0.

count2 = 0.

count3 = 0.

endat.

if ( it_zsdtcustser-order_date = '00000000'

or it_zsdtcustser-order_date = ''

or it_zsdtcustser-odder_time = '000000'

or it_zsdtcustser-odder_time = '' )

or ( it_zsdtcustser-disp_date = '00000000'

or it_zsdtcustser-disp_date = ''

or it_zsdtcustser-disp_time = '000000'

or it_zsdtcustser-disp_time = '' ).

move '0' to it_zsdtcustser-field3.

if sy-subrc = 0.

count3 = count3 + 1.

endif.

elseif

it_zsdtcustser-u_l_ind = '0011'.

if

  • it_zsdtcustser-order_date LE it_zsdtcustser-disp_date

( it_zsdtcustser-order_date eq it_zsdtcustser-disp_date

and it_zsdtcustser-odder_time le '113000' and it_zsdtcustser-disp_time le '120000' )

or

  • it_zsdtcustser-order_date LE it_zsdtcustser-disp_date

( it_zsdtcustser-order_date eq it_zsdtcustser-disp_date

and it_zsdtcustser-odder_time between '113000' and '143000' and it_zsdtcustser-disp_time le '153000' )

or

( it_zsdtcustser-order_date eq it_zsdtcustser-disp_date

and it_zsdtcustser-odder_time between '143100' and '150000' and it_zsdtcustser-disp_time le '173000' )

or

( ( it_zsdtcustser-order_date le it_zsdtcustser-disp_date

and it_zsdtcustser-odder_time between '153100' and '240000' )

and ( it_zsdtcustser-disp_date eq it_zsdtcustser-order_date

and it_zsdtcustser-disp_time le '240000' )

or ( it_zsdtcustser-disp_date eq new_date

and it_zsdtcustser-disp_time le '120000' ) )

or ( it_zsdtcustser-order_date eq last_date and it_zsdtcustser-disp_date le last_date1 ).

move '1' to it_zsdtcustser-field3.

if sy-subrc = 0.

count1 = count1 + 1.

endif.

else.

move '2' to it_zsdtcustser-field3.

if sy-subrc = 0.

count2 = count2 + 1.

endif.

endif.

elseif it_zsdtcustser-u_l_ind = '0010' or it_zsdtcustser-u_l_ind = '0012'. " Modified on 26/02/2008.

if ( it_zsdtcustser-order_date eq it_zsdtcustser-disp_date

and it_zsdtcustser-odder_time le '170000' and it_zsdtcustser-disp_time le '240000' )

or

( it_zsdtcustser-order_date le it_zsdtcustser-disp_date and it_zsdtcustser-odder_time ge '170000' )

and ( it_zsdtcustser-disp_date le new_date

and it_zsdtcustser-disp_time le '240000' )

or ( it_zsdtcustser-order_date eq last_date and it_zsdtcustser-disp_date le last_date1 ).

move '1' to it_zsdtcustser-field3.

if sy-subrc = 0.

count1 = count1 + 1.

endif.

else.

move '2' to it_zsdtcustser-field3.

if sy-subrc = 0.

count2 = count2 + 1.

endif.

endif.

endif.

modify it_zsdtcustser transporting field3.

modify zsdtcustser from table it_zsdtcustser.

at new werks.

format color 1 inverse on.

write:/ 'PLANT:', it_zsdtcustser-werks.

endat.

format color 5 inverse on.

write: 20 'WITHIN CSI BENCHMARK:', count1.

format color 6.

write: 55 'BEYOND CSI BENCHMARK:', count2.

format color 7.

write: 85 'NOT ENTERED:', count3.

endloop.

loop at it_zsdtcustser.

clear : x_datediff,x_datetime,x_earliest,gv_final,

w_datediff,w_datetime,w_earliest.

if it_zsdtcustser-cust_rec_time = '000000'.

  • message 'Enter Customer Receipt Time' type 'I'.

else.

call function 'SD_DATETIME_DIFFERENCE'

exporting

date1 = it_zsdtcustser-cust_rec_date

time1 = it_zsdtcustser-cust_rec_time

date2 = it_zsdtcustser-order_date

time2 = it_zsdtcustser-odder_time

importing

datediff = w_datediff

timediff = w_datetime

earliest = w_earliest

.

if sy-subrc <> 0.

endif.

endif.

x_datediff = w_datediff.

x_datediff = x_datediff * 24.

x_datetime = w_datetime.

x_earliest = w_earliest.

gv_final = x_datediff + x_datetime.

it_zsdtcustser-actual_time_tkn = gv_final.

modify it_zsdtcustser transporting actual_time_tkn.

clear : x_datediff,x_datetime,x_earliest,gv_final.

endloop.

Regards

Shashikant

1 REPLY 1
Read only

Former Member
0 Likes
323

Hi,

remove all select statments form loop.

Use for all entries.

IF NOT it_zsdtcustser[] IS INITIAL.

select kunnr vkbur into TABLE itab1

from knvv

FOR ALL ENTRIES IN it_zsdtcustser

where kunnr = it_zsdtcustser-kunnr.

select kunnr name1 into

TABLE itab2

FOR ALL ENTRIES IN it_zsdtcustser

from kna1 where kunnr = it_zsdtcustser-kunnr.

ENDIF.

SORT : ITAB1 BY kunnr,ITAB2 by kunnr.

loop at it_zsdtcustser.

READ TABLE itab1 with key kunnr = it_zsdtcustser-kunnr

BINARY SEARCH.

IF sy-subrc EQ 0.

ENDIF.

READ TABLE itab2 with key kunnr = it_zsdtcustser-kunnr

BINARY SEARCH.

IF sy-subrc EQ 0.

ENDIF.