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

Read Statement with key

Former Member
0 Likes
1,130

Hi,

How can I modify this Read statement as Read with same

keys is not allowed.

DATA: BEGIN OF itab OCCURS 0,

matnr LIKE marc-matnr,

werks LIKE marc-werks,

steuc LIKE marc-steuc,

END OF itab.

wgc_werk = 'BR10',

wgc_werk1 ='BR20'.

READ TABLE itab WITH KEY matnr = it_mvke-matnr

werks = wgc_werk

werks = wgc_werks1

BINARY SEARCH.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
858

try like this



DATA: BEGIN OF itab OCCURS 0,
matnr LIKE marc-matnr,
werks LIKE marc-werks,
werks1 like marc-werks,
steuc LIKE marc-steuc,
END OF itab.
wgc_werk = 'BR10',
wgc_werk1 ='BR20'.
READ TABLE itab WITH KEY matnr = it_mvke-matnr
werks = wgc_werk
werks1 = wgc_werks1
BINARY SEARCH.

6 REPLIES 6
Read only

Former Member
0 Likes
859

try like this



DATA: BEGIN OF itab OCCURS 0,
matnr LIKE marc-matnr,
werks LIKE marc-werks,
werks1 like marc-werks,
steuc LIKE marc-steuc,
END OF itab.
wgc_werk = 'BR10',
wgc_werk1 ='BR20'.
READ TABLE itab WITH KEY matnr = it_mvke-matnr
werks = wgc_werk
werks1 = wgc_werks1
BINARY SEARCH.

Read only

0 Likes
858

Hi KPN,

Should I move werks value to werks1. likethis below

loop at itab.

move itab-werks to itab-werks1.

read statement.

endloop.

How does the Read statement the different werks vaues.

Read only

Sm1tje
Active Contributor
0 Likes
858

In these cases I prefer the LOOP statement and declaring the internal table like this:

itab type sorted table of .... with non-unique key MATNR WERKS.

LOOP AT itab INTO wa WHERE matnr = it_mvke-matnr

and werks = ... or werks = ....

Read only

Former Member
0 Likes
858

Hi,

You are trying to use read statement inorder to fetch a single record isn't it? if you are trying to search for a record having either

WERKS = 'BR10' or WERKS = 'BR20' then you need to modify your code.

i.e. as below


DATA: BEGIN OF itab OCCURS 0,
matnr LIKE marc-matnr,
werks LIKE marc-werks,
steuc LIKE marc-steuc,
END OF itab.
wgc_werk = 'BR10'.
wgc_werk1 ='BR20'.
READ TABLE itab WITH KEY matnr = it_mvke-matnr
werks = wgc_werk.
if sy-subrc ne 0.
   READ TABLE itab WITH KEY matnr = it_mvke-matnr
                                               werks = wgc_werk1.
   if sy-subrc eq 0.
      "your post reading process here
   endif.
endif.
BINARY SEARCH.

Reward points if this helps,

Kiran

Read only

Former Member
0 Likes
858

Hi,

You need to read two times as shown below.

READ TABLE itab WITH KEY matnr = it_mvke-matnr

werks = wgc_werk BINARY SEARCH.

READ TABLE itab WITH KEY matnr = it_mvke-matnr

werks = wgc_werk1 BINARY SEARCH.

or else

loop at itab where matnr = it_mvke-matnr and ( werks = wgc_werk or werks = wgc_werk1 ).

  • do what ever you want

endloop.

Read only

jayanthi_jayaraman
Active Contributor
0 Likes
858

Hi,

sort itab by werks.

READ TABLE itab WITH KEY matnr = it_mvke-matnr

werks = wgc_werk by BINARY SEARCH.

if sy-subrc ne 0.

READ TABLE itab WITH KEY matnr = it_mvke-matnr

werks = wgc_werks1 by BINARY SEARCH.

if sy-subrc eq 0.

...for value in wgc_werks1

endif.

elseif sy-subrc eq 0.

.....for value in wgc_werks

endif.