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

SELECT, NOT IN ?

Former Member
0 Likes
2,472

Hi,

is it OK to use NOT IN within SELECT statement?


data: lt_mara type STANDARD TABLE OF mara,
      wa_mara type mara.

select * from mara INTO TABLE lt_mara
         where matnr NOT IN ('F000018000', 'F000018100')
          AND mtart = 'FOLD'.

  loop AT lt_mara into wa_mara.
    write:/ wa_mara-matnr.
  endloop.

tnx, Adibo.

1 ACCEPTED SOLUTION
Read only

ThomasZloch
Active Contributor
0 Likes
2,190

syntactically OK, but this will be a slow select since all records must be scanned to get the result.

Thomas

Hi,

is it OK to use NOT IN within SELECT statement?


data: lt_mara type STANDARD TABLE OF mara,
      wa_mara type mara.

select * from mara INTO TABLE lt_mara
         where matnr NOT IN ('F000018000', 'F000018100')
          AND mtart = 'FOLD'.

  loop AT lt_mara into wa_mara.
    write:/ wa_mara-matnr.
  endloop.

tnx, Adibo.

6 REPLIES 6
Read only

ThomasZloch
Active Contributor
0 Likes
2,191

syntactically OK, but this will be a slow select since all records must be scanned to get the result.

Thomas

Read only

Former Member
0 Likes
2,190

U can use .. better if U put them in a range with sign = 'E'.

and use IN ...

select * from mara INTO TABLE lt_mara

where matnr IN r_matnr

AND mtart = 'FOLD'.

Read only

Former Member
0 Likes
2,190

HI,

Don't use negetive where class in select statements, instead delete those particular records after fetching the data from table using select.

Rgds,

Bujji

Read only

Former Member
0 Likes
2,190

data: lt_mara type STANDARD TABLE OF mara,

wa_mara type mara.

select-options:s_matnr for mara-matnr.

ranges : r_ranges for mara-matnr .

r_matnr-low = 'F000018000'.

r_matnr-sign = 'E'.

r_matnr-options = EQ'.

append r_matnr.

r_matnr-low = 'F000018100'.

r_matnr-sign = 'E'.

r_matnr-options = EQ'.

append r_matnr.

loop at s_matnr.

r_matnr-low = s_matnr-low.

r_matnr-sign = 'E'.

r_matnr-options = EQ'.

append r_matnr.

endloop.

select * from mara INTO TABLE lt_mara

where matnr in r_matnr

AND mtart = 'FOLD'.

loop AT lt_mara into wa_mara.

write:/ wa_mara-matnr.

endloop.

Read only

Former Member
0 Likes
2,190

Hi, tnx

So it's better to use range with sign E and IN.

Read only

0 Likes
2,190

Hi,

Would be good if reward points are given to the helpful answers.

This would encourage ppl to answer more proactively!!

Regards,

Lalit