Application Development 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: 

Performance improvement

Former Member
0 Kudos

Hi,

Kindly suggest the performance imp for this code..

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES "1

VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02."1

  • Entry found matching selection screen "1

IF p8wage-lga IN wagetype AND "1

NOT p8wage-lga IS INITIAL. "1

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet. "1

wa_wage-bsgrd = wa_p0008-bsgrd. "1

save_flag = 'X'.

ENDIF. "1

ENDDO. "1

ENDLOOP.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Check for p8wage-lga if it is INITIAL .. If LGA is initial

then there is no need to check further ... as the record will

not have any values ...

Also ..

Put an exit if U want to exit from do .. enddo at the first

instance of finding the value in the record ..

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES "1

VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02."1

If p8wage-lga IS INITIAL. <-- add these lines ..

EXIT.

ENDIF.

Entry found matching selection screen "1

IF p8wage-lga IN wagetype.

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet. "1

wa_wage-bsgrd = wa_p0008-bsgrd. "1

save_flag = 'X'.

EXIT. <-- Exit ...

ENDIF. "1

ENDDO. "1

ENDLOOP.

3 REPLIES 3

Former Member
0 Kudos

Check for p8wage-lga if it is INITIAL .. If LGA is initial

then there is no need to check further ... as the record will

not have any values ...

Also ..

Put an exit if U want to exit from do .. enddo at the first

instance of finding the value in the record ..

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES "1

VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02."1

If p8wage-lga IS INITIAL. <-- add these lines ..

EXIT.

ENDIF.

Entry found matching selection screen "1

IF p8wage-lga IN wagetype.

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet. "1

wa_wage-bsgrd = wa_p0008-bsgrd. "1

save_flag = 'X'.

EXIT. <-- Exit ...

ENDIF. "1

ENDDO. "1

ENDLOOP.

0 Kudos

Hi Srinivas,

Actually the code it like this..

FORM wage_type.

CLEAR: wa_wage, save_flag.

  • entry selected on selection screen check for mathing entry "1

IF NOT wagetype IS INITIAL. "1

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES "1

VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02."1

  • Entry found matching selection screen "1

IF p8wage-lga IN wagetype AND "1

NOT p8wage-lga IS INITIAL. "1

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet. "1

wa_wage-bsgrd = wa_p0008-bsgrd. "1

save_flag = 'X'.

ENDIF. "1

ENDDO. "1

ENDLOOP. "1

ELSE. "1

  • No entry selected on selection screen "1

  • read all entry even entry missing in infotype 0008 "1

save_flag = 'X'.

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda. "1

DO 20 TIMES "1

VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02."1

IF NOT p8wage-lga IS INITIAL. "1

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet. "1

wa_wage-bsgrd = wa_p0008-bsgrd. "1

ENDIF. "1

ENDDO. "1

ENDLOOP. "1

ENDIF. "1

  • end wage type

ENDFORM. " WAGE_TYPE

0 Kudos

What ever might be the case ...

U will not find an entry in the record if any one is initial ..

I mean .. If PA0008-LGA01 is initial then there is no need

for U to check for PA0008-LGA02 .. so U need to exit ..

IF NOT wagetype IS INITIAL.

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02.

If p8wage-lga IS INITIAL. <-- add these lines ..

EXIT.

ENDIF.

IF p8wage-lga IN wagetype.

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet.

wa_wage-bsgrd = wa_p0008-bsgrd.

save_flag = 'X'.

ENDIF.

ENDDO. "1

ENDLOOP.

ELSE. "1

save_flag = 'X'.

LOOP AT it_p0008 INTO wa_p0008

WHERE pernr EQ pernr-pernr

AND begda LE pn-endda

AND endda GE pn-begda.

DO 20 TIMES VARYING p8wage FROM wa_p0008-lga01 NEXT wa_p0008-lga02.

If p8wage-lga IS INITIAL. <-- add these lines ..

EXIT.

ENDIF.

Entry found matching selection screen

CLEAR wa_wage.

wa_wage-betrg = p8wage-bet.

wa_wage-bsgrd = wa_p0008-bsgrd.

save_flag = 'X'.

ENDDO. "1

ENDLOOP.

ENDIF. "1