REPORT z02_05_26.
DATA : BEGIN OF gs_line,
carrid TYPE sflight-carrid,
carrname TYPE scarr-carrname,
fldate TYPE sflight-fldate,
END OF gs_line.
DATA gt_itab LIKE TABLE OF gs_line.
SELECT carrid connid INTO CORRESPONDING FIELDS OF TABLE gt_itab FROM sflight.
LOOP AT gt_itab INTO gs_line.
AT NEW carrid.
SELECT SINGLE carrname INTO gs_line-carrname
FROM scarr
WHERE carrid = gs_line-carrid.
MODIFY gt_itab
FROM gs_line TRANSPORTING carrname
WHERE carrid = gs_line-carrid.
ENDAT.
WRITE : / gs_line-carrid, gs_line-carrname.
ENDLOOP.
SELECT carrid connid INTO CORRESPONDING FIELDS OF TABLE gt_itab FROM sflight. 구문에서
connid 를 입력을 하나 안하나 결과 값은 똑같은데,
CORRESPONDING FIELDS OF TABLE을 이용하여,
sflight 테이블의 carrid 과 connid 컬럼을 gt_itab에 동일한 필드명에 값을 할당하는 것으로 알고 있습니다만,
이것이 맞는 건지와 connid 는 소스 전체를 data 를 선언할 때 추가를 해주지 않았는데
오류가 안나는게 궁금합니다^^;;
초보라서 질문에 설명이 많이 부족합니다.(_ _)
댓글 3
-
sapjoy
2014.01.23 17:55
-
sapjoy
2014.01.24 02:25
이해하신것 같은데요.
악보만 본다고 피아노를 칠수 없듯이, 프로그램은 직접 실습해보면서 익히는 습관이 제일 중요합니다.
-
JinSAP
2014.01.23 23:29
아하 그럼 carrid 컬럼 하나라도 인터널 테이블에 INTO CORRESPONDING FIELDS OF TABLE 구문으로 동일하게 추가가 되어있으니 굳이 connid 를 써도 덤프 에러가 발생하지 않는 다는 말씀이시군요?^^;그리고 만약 INTO CORRESPONDING FIELDS OF TABLE 이 아닌 INTO TABLE을 사용할 시에는 인터널테이블에 추가가 되지 않는 컬럼은 덤프에러가 발생하다는 말씀이겠죠?ㅎ;
제가 잘이해한건지 모르겠네여..;;;;ㅠ
connid 컬럼이 인터널 테이블에 존재하지 않으므로,
INTO CORRESPONDING FIELDS OF TABLE 구문에서 해당 컬럼은 인터널 테이블에 값이 전달되지 않습니다.
이미 언급하셨듯이 이 구문은 동일한 컬럼명이 있을 경우에만 값이 전달됩니다.
만약 INTO TABLE을 사용하게 되면 인터널 테이블에 CONNID 컬럼이 없는 경우는 덤프에러가 발생합니다.