A, B라는 internal table에 select문을 이용하여 데이터를 받은 후,
loop at itab_a.
read table itab_b key name = itab_a-name.
if sy-subrc = 0.
itab_c-id = itab_b-id.
append itab_c.
endif.
endloop.
다음처럼 read해서 데이터를 처리하려 하는데... itab_b를 읽지를 못하네요.
조건에 맞는 데이터가 존재하는것은 확인했습니다.
뭐가 문제일까요? 초보라서 머리 아프네요 ㅠ
댓글 10
-
맹꽁이
2010.10.14 22:48
-
sub
2010.10.14 23:00
실제 코드가 아니고 옮겨적다보니 with가 빠졌네요.
itab_b-name = itab_a-name 두 필드는 필드값이 같은 레코드가 있는 경우도, 없는 경우도 있습니다.
-
아바압
2010.10.14 23:17
로직을 살펴보면 select 해서 데이터를 가지는 internal table이 itab_b랑 itab_b 이렇게 두개고
itab_a를 loop돌면서 name이라는 필드값이 itab_b와 같은 데이터가 있으면 itab_c-id 필드에 itab_b-id를 저장하는 듯 한데...
read table itab_b (with) key name = itab_a-name. -> 이 부분은 글 올리실 때 실수인 듯 ㅎ;
itab_a와 같은 name 필드값이 itab_b에 있으면 정상적으로 append 될 듯 한대요??
뭐가 문제인지 ... 모르겠네요 ㅎ
-
sub
2010.10.14 23:20
아바압님 말씀이 맞습니다. 왜 그럴까요...
확인하다 보니 read table itab_b with key name = itab_a-name.
여기서 itab_a-name 대신에 상수를 줬더니 read가 되네요...-_- 뭐가 문제일까요?
디버깅해서 itab_a의 헤더에 name값이 있는것은 확인했습니다.
-
야생이
2010.10.15 01:06
음...Loop 돌리기 전에 sorting 을 하고 해도 안나오나요?
sort itab_a by name.
sort itab_b by name.
loop at itab_a .... 이렇게요.
-
초보아밥퍼
2010.10.15 01:09
필드의 선언이나 공백을 확인해 보시길.. -
ASDF
2010.10.15 02:01
binary search가 아니라서 sort는 상관이 없는듯 한데.. 이상하네여
table선언 쪽으로 가셔서 필드 길이나 타입 맞는지 체크해 보세여~
-
맑은하늘
2010.10.15 02:50
로직이 이상이 없다면 아마도 데이터에 문제가 있지 않을까 생각되는데요.
가끔 conversion 문제로 read가 안될 경우가 있을 수 있습니다.
이 부분 확인해 보세요. itab_a-name = '00001234', itab_b-name = '1234'. 같은 경우일 수도 있을 것 같습니다.
read 할 때 키값을 한번 잘 살펴보세요. 다른부분이 있을 것 같네요.
-
Happy~
2010.10.15 19:15
data의 conversion(alpha conversion) 문제인것 같군요.위에 맑은하늘님 경우일것 같습니다.
-
문바이
2010.10.18 17:38
loop at itab_a.
loop at itab_b where name = itab_a-name.
if sy-subrc = 0.
itab_c-id = itab_b-id.
append itab_c.
endif.
endloop.
이런방법은 어떨까요?
먼저...
loop at itab_a.
read table itab_b key name = itab_a-name.
이 로직 오류 없었어용? with 는 어데루 갔을까나요?
다음..
itab_b-name = itab_a-name
두 필드값이 다른것은 아닌가요??