‎2008 Dec 16 8:59 AM
hello all,
i have a field MATNR in SELECT-OPTIONS but without passing it in query i selected the data in itab.
after getting data in itab now i want if user put the value in selection-screen then it must show only those selected values in output, so i did coding like..
code:
LOOP AT ITAB.
IF MATNR-LOW NE ''.
IF ITAB-MATNR NE MATNR-LOW.
DELETE ITAB.
CLEAR ITAB.
CONTINUE.
ENDIF.
ENDIF.
endloop.
it is working for single value, but when i give 15 or 20 values then again its showing for single value.
can anyone please help me?
regards saurabh.
‎2008 Dec 16 9:17 AM
Hi Saurab,
Check the below code.
TABLES : MARA.
DATA : BEGIN OF T_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
NAME(5),
END OF T_MARA.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
SELECT MATNR
MTART FROM MARA INTO TABLE T_MARA
UP TO 200 ROWS.
IF NOT S_MATNR[] IS INITIAL.
LOOP AT T_MARA.
IF T_MARA-MATNR IN S_MATNR[].
DELETE T_MARA INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDIF.
‎2008 Dec 16 9:02 AM
u can pass the directly in select query like where matnr = MATNR-LOW . if you want any internal calulations you need to use seperate internal table and query with full data.
‎2008 Dec 16 9:06 AM
Hi,
when ever you use select option, you have to use IN operator for that it will work like bwlow code, i hope you requirement will meet.
LOOP AT ITAB.
IF ITAB-MATNR IN MATNR.
DELETE ITAB.
CLEAR ITAB.
CONTINUE.
ENDIF.
endloop.
‎2008 Dec 16 9:09 AM
‎2008 Dec 16 9:08 AM
Hello,
Plz change ur code as follows:
LOOP AT ITAB.
* IF MATNR-LOW NE ''.
* IF ITAB-MATNR NE MATNR-LOW.
IF MATNR IS NOT INITIAL.
IF ITAB-MATNR NOT IN MATNR.
DELETE ITAB.
CLEAR ITAB.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.
Hope this is clear.
BR,
Suhas
Edited by: Suhas Saha on Dec 16, 2008 10:09 AM
Edited by: Suhas Saha on Dec 16, 2008 10:10 AM
‎2008 Dec 16 9:17 AM
Hi Saurab,
Check the below code.
TABLES : MARA.
DATA : BEGIN OF T_MARA OCCURS 0,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
NAME(5),
END OF T_MARA.
SELECT-OPTIONS : S_MATNR FOR MARA-MATNR.
SELECT MATNR
MTART FROM MARA INTO TABLE T_MARA
UP TO 200 ROWS.
IF NOT S_MATNR[] IS INITIAL.
LOOP AT T_MARA.
IF T_MARA-MATNR IN S_MATNR[].
DELETE T_MARA INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDIF.
‎2008 Dec 16 9:21 AM
Hi,
You can use IN and NOT IN statement instead of NE.
Try it.
Regards,
Chris Gu
‎2008 Dec 16 9:24 AM
Hi Saurabh,
You can directly code as below:
Delete ITAB where matnr not in MATNR.
Regards,
Zafar Ali