안녕하세요.
인터널테이블 선언 차이로 SELECT 시 필드가 누락되는 현상이 있는데 이유를 몰라서 문의드립니다
저는 보통
DATA : IT_TAB LIKE MARA OCCURS 0 WITH HEADER LINE. 이나 BEGIN OF ~END OF 로 선언해서 사용중입니다
그런데 다른분이 개발해놓은 프로그램에서 'TYPE TALBE OF' 로 인터널 테이블을 선언해두어서 규칙을 꺠지 않으려 이렇게 선언하고 사용했습니다.
문제는 TYPE TABLE OF 로 선언한 인터널테이블에
SELECT FIELD1 FIELD2 FIELD3 FIELD77
INTO CORRESPONDING FIELDS OF TABLE IT_TAB
FROM [TABLE]
WHERE ~~~~~
이렇게 SELECT를 하면 실제 [TABLE]의 순서대로 FIELD 1, 2, 3까지는 데이터가 들어오나 중간에 건너띈 FIELD77에는 데이터가 들어오지 않았습니다.
그래서 원래 사용하던데로 인터널테이블 선언을 LIKE로 해주니 정상적으로 들어옵니다..
TYPE TABLE OF 로 선언했을경우와 LIKE로 선언했을 경우 차이가 어떤건가요..??
(이 프로그램에서는 TYPE TABLE OF 로 선언한 다른 인터널테이블을 사용하는 경우 SELECT * 로 전체 데이터를 가져오고 있긴합니다 !)
두개의 차이와 발생하는 이유가 궁금합니다 ~!
댓글 3
-
sapabap
2020.09.08 04:13
-
아좀더
2020.09.10 01:20
답변감사합니다 !
소스는 아래와 같습니다.
FORM 문 안에 선언한 로컬 인터널테이블이며 테이블명은 임의로 작성한 것 이해해주시기 바랍니다.1. 선언
1) DATA : LT_ZPPT0000 TYPE TABLE OF ZPPT0000 WITH HEADER LINE.or
2) DATA : LT_ZPPT0000 LIKE ZPPT0000 OCCURS 0 WITH HEADER LINE.2. 변수 초기화
CLEAR : LT_ZPPT0000, LT_ZPPT0000[]3. SELECT 문
SELECT FIELD01 FIELD02 FIELD03 FIELD04 FIELD07
INTO CORRESPONDING FIELDS OF TABLE LT_ZPPT0000
FROM ZPPT0000
FOR ALL ENTRIES IN LT_ZMMT0000
WHERE FIELD01= LT_ZMMT0000-FIELD01.
위와 같이 선언 후 동일한 SELECT문으로 조회시1)의 경우 FIELD01, 02, 03, 04까지는 LT_ZPPT0000에 값이 들어오나 FIELD07에는 값이 들어오지 않음
(테이블 ZPPT0000에 순서대로 선언되어 있다고 가정)2)의 경우 FIELD01, 02, 03, 04, 07에 모두 값이 들어옴
위와 같은 현상이 발생하여 현재는 2)로 선언하고 사용하였습니다 ! 두개의 차이가 궁금합니다 ㅠ
-
sapabap
2020.09.12 03:24
제가 다른 테이블로 테스트 해보니, 둘다 동일하게 값을 가져오는데요.
이상하네요..
그런 경우를 경험한 적이 없는데요.
소스 선언한 부분 2가지를 올려주시겠습니까?