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

Optimize if statements

Former Member
0 Likes
962

Hi experts,

Can I use case statements instead of elseif in the code below.

if not how can i simplify my conditions.

thank you in advance.


  LOOP AT it_sumry ASSIGNING <wa_sumry>.

    <wa_sumry>-total = 0.

    <wa_sumry>-age = p_budat - <wa_sumry>-budat.

    IF  <wa_sumry>-age GE 1
      AND <wa_sumry>-age LE 60
      AND '001' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age1.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 61
      AND <wa_sumry>-age LE 90
      AND '002' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age61.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 91
      AND <wa_sumry>-age LE 120
      AND '003' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age91.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 121
      AND <wa_sumry>-age LE 180
      AND '004' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age121.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 181
      AND <wa_sumry>-age LE 240
      AND '005' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 241
      AND <wa_sumry>-age LE 300
      AND '006' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ELSEIF  <wa_sumry>-age GE 301
      AND '007' IN p_age.
      MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age301.
      ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

    ENDIF.

    IF <wa_sumry>-blart = 'DZ' OR
       <wa_sumry>-blart = 'DA'.
      MOVE '' TO  <wa_sumry>-age .
    ENDIF.

    MODIFY it_sumry FROM <wa_sumry>.

  ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
926

HI,

you can combine the following two if s into one.

ELSEIF <wa_sumry>-age GE 181

AND <wa_sumry>-age LE 240

AND '005' IN p_age.

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

ELSEIF <wa_sumry>-age GE 241

AND <wa_sumry>-age LE 300

AND '006' IN p_age.

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

as

ELSEIF ( <wa_sumry>-age GE 181

AND <wa_sumry>-age LE 240

AND '005' IN p_age ) or

(<wa_sumry>-age GE 241

AND <wa_sumry>-age LE 300

AND '006' IN p_age ).

and more over y do u need a modify statement if you are using field-symbols.

Regards,

Venkatesh

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

7 REPLIES 7
Read only

Former Member
0 Likes
926

hai,

you can go with case condition, you can optimize your code and also increase your performence.

Read only

0 Likes
926

pls show me how to do. thanks

Read only

Former Member
0 Likes
926

i dont think you can use CASE..

case compares a equality of one particular value...

go with the ifs.

and the comparison option in CASE also wont help much will make more complex..

Read only

Former Member
0 Likes
927

HI,

you can combine the following two if s into one.

ELSEIF <wa_sumry>-age GE 181

AND <wa_sumry>-age LE 240

AND '005' IN p_age.

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

ELSEIF <wa_sumry>-age GE 241

AND <wa_sumry>-age LE 300

AND '006' IN p_age.

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

as

ELSEIF ( <wa_sumry>-age GE 181

AND <wa_sumry>-age LE 240

AND '005' IN p_age ) or

(<wa_sumry>-age GE 241

AND <wa_sumry>-age LE 300

AND '006' IN p_age ).

and more over y do u need a modify statement if you are using field-symbols.

Regards,

Venkatesh

MOVE <wa_sumry>-wrbtr TO <wa_sumry>-age241.

ADD <wa_sumry>-wrbtr TO <wa_sumry>-total.

Read only

Former Member
0 Likes
926

There is no significant performance difference in using CASE statements instead of IF. If you are facing performance related issues i dont think it has anything to do with the if statements you have used.

Vikranth

Read only

Former Member
0 Likes
926

Hi Friend

Go to SE30 Tcode :ABAP Runtime Analysis

Regards

Surender

Read only

0 Likes
926

thank you guys!