09-11-2008 8:47 AM
hi abapers
can u plz tell me how to find the next bigger no from the given list if some input is given
the list is 1,2,3,4,8,9
the input given to the list is 5 and the output should come 8
i used select endselect but the output is coming 9 i want it 8
how to do it?
09-11-2008 8:59 AM
Hi
Do like this.
REPORT ztest.
DATA: BEGIN OF itab OCCURS 10,
number TYPE i,
END OF itab.
DATA: gv_max TYPE i.
PARAMETERS: num TYPE i.
itab-number = 1. APPEND itab.
itab-number = 2. APPEND itab.
itab-number = 5. APPEND itab.
itab-number = 6. APPEND itab.
itab-number = 35. APPEND itab.
itab-number = 50. APPEND itab.
SORT itab BY number.
LOOP AT itab.
IF itab-number GT num.
EXIT.
ENDIF.
ENDLOOP.
gv_max = itab-number.
WRITE:/ gv_max.
09-11-2008 9:32 AM
Try this way
****************************************************************
PARAMETERS : p_num TYPE i.
TYPES : BEGIN OF ty_itab,
num TYPE i,
END OF ty_itab.
DATA : it_itab TYPE TABLE OF ty_itab,
wa_itab TYPE ty_itab.
DATA : a TYPE i.
wa_itab-num = '1'.
APPEND wa_itab TO it_itab.
wa_itab-num = '2'.
APPEND wa_itab TO it_itab.
wa_itab-num = '3'.
APPEND wa_itab TO it_itab.
wa_itab-num = '4'.
APPEND wa_itab TO it_itab.
wa_itab-num = '8'.
APPEND wa_itab TO it_itab.
wa_itab-num = '9'.
APPEND wa_itab TO it_itab.
SORT it_itab ASCENDING BY num.
LOOP AT it_itab INTO wa_itab.
IF wa_itab-num GT p_num.
a = wa_itab-num.
EXIT.
ENDIF.
ENDLOOP.
WRITE : / a.