‎2009 Oct 22 10:03 AM
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.
‎2009 Oct 22 10:13 AM
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.
‎2009 Oct 22 10:06 AM
hai,
you can go with case condition, you can optimize your code and also increase your performence.
‎2009 Oct 22 10:10 AM
‎2009 Oct 22 10:12 AM
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..
‎2009 Oct 22 10:13 AM
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.
‎2009 Oct 22 10:15 AM
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
‎2009 Oct 22 10:26 AM
Hi Friend
Go to SE30 Tcode :ABAP Runtime Analysis
Regards
Surender
‎2009 Oct 27 2:35 AM