Z05_35 예제질문드려도 될까요? 실행해보니 책은 CARRID, CARRNAME 2개다 조회되는데요
저는 실행하면 CARRID 만 나옵니다.
REPORT Z05_35.
DATA: BEGIN OF gs_line,
carrid TYPE sflight-carrid,
carrname TYPE scarr-carrname,
END OF gs_line.
DATA gt_itab LIKE TABLE OF gs_line.
DATA gt_scarr LIKE TABLE OF scarr WITH HEADER LINE.
SELECT carrid connid INTO CORRESPONDING FIELDS OF TABLE gt_itab
FROM sflight.
SELECT carrid carrname INTO CORRESPONDING FIELDS OF TABLE
gt_scarr
FROM scarr .
LOOP AT gt_itab INTO gs_line.
READ TABLE gt_scarr WITH KEY carrid = gs_line-carrid BINARY SEARCH.
gs_line-carrname = gt_scarr-carrname.
MODIFY gt_itab FROM gs_line.
WRITE : / gs_line-carrid, gs_line-carrname.
ENDLOOP.
어디가 잘못된걸까요?
댓글 4
-
리얼오버
2022.01.08 00:11
-
갈비찜
2022.01.08 00:13
BINARY SEARCH를 사용하실 때는 먼저 테이블을 키 값으로 SORT 하신 다음에 사용하셔야합니다.
본문 로직에서 LOOP문 전에 ' SORT GT_SCARR BY CARRID.' 를 넣으시면 CARRNAMER까지 조회 하실 수 있을거에요!
-
갈비찜
2022.01.08 00:33
덧글로 주신 로직은 모든 CARRNAMER가 'Air Berlin'으로 조회되고 있을거에요.
'READ TABLE gt_scarr WITH KEY carrid = gs_line-carrid BINARY SEARCH.'
은 CAIRRID값 별로 gt_scarr 값을 조회하라고 조건을 주신겁니다.
(즉, gt_scarr-carrid = gs_line-carrid 일 때 gt_scarr값을 가져오게요.)
'READ TABLE gt_scarr.'
은 조건없이 gt_scarr을 읽어오라고 주신겁니다.
이렇게 조건 없이주신다면 무조건 gt_scarr의 첫번째 라인만 읽어오게 됩니다.
-
리얼오버
2022.01.08 01:47
답변 감사합니다.
그런데 f4누르면 튕김현상이 있는데 어떻게 해야할까요? sap 재설치가 답인가요?
READ TABLE gt_scarr WITH KEY carrid = gs_line-carrid BINARY SEARCH.
을
READ TABLE gt_scarr.
으로 수정하니까
AA Air Berlin
으로 조회됩니다.
with key carrid 를 해서 carrid 만 나오는것 같습니다.
위와 같이 수정해도 될까요? with key 사용 안해도 될까요?