안녕하세요.
오늘은 QUERY에 대해서 알아보겠습니다.
일단 쿼리는 아래 캡처 화면과 같이 로직을 씁니다.
코딩할 때 쿼리는 저 순서로 코딩하기로 약속이 되어있습니다.
위에 체크된 것을 해석해보겠습니다.
1. FROM절 - SFLIGHT라는 테이블에서 데이터를 가져온다.
현재 SFLIGHT 테이블에는 데이터가 357개가 존재합니다.
또한 (MANDT ~ SEATSOCC_F)까지 범위를 우리는 컬럼명이라고 합니다.
즉, 각각의 컬럼별로 담길 수 있는 데이터 타입을 선언( 문자형, 숫자형, 금액 등등) 하고 데이터를 넣어줍니다.
따라서 그대로 해석해보자면
1. SFLIGHT테이블에는 현재 357개의 데이터가 있고
2. MANDT 컬럼에는 200이라는 데이터만 존재하고,
3. CARRID라는 필드에는 AA, AZ의 데이터가 존재하며
4. CONNID라는 컬럼에는 0017, 0064, 0555.. 라는 값이 들어있는 것을 볼 수 있습니다.
2. SELECT * - SFLIGHT라는 테이블의 357개 데이터와 모든 컬럼을 가져오겠다.
SELECT는 말그대로 선택입니다.
[ SELECT * ]라는 구문은 SFLIGHT테이블에서 가져온 모든 데이터를 전부 SELECT 하겠다라는 뜻입니다.
*는 별표시 이지만 여기선 아스타라고 부릅니다.
이 구문이 있으면 모든 컬럼( MANDT ~SEATSOCC_F )까지 모든 컬럼을 다 가져오겠다는 뜻입니다.
즉, 위에서 봤던 357개의 모든 컬럼과 그 컬럼의 값을 전부 다 가져왔습니다.
3. INTO CORRESPONDING FIELDS OF TABLE lt_sflight
이제 우리는 SFLIGHT에서 가져온 데이터를 어딘가에 담아놓고 우리가 그걸 활용할 수 있어야 합니다.
그래서 위 구문을 사용한 것 입니다.
LT_SFLIGHT에 어떻게 값이 담길 수 있을까요??? 어떻게 알 수 있을까요??
위에 선언한 것을 보시면 아시겠지만 인터널 테이블입니다.
즉, 뒤에 참조하는 타입이 [TYPE TABLE OF] 이기 때문입니다.
SFLIGHT 테이블을 참조한, 아무런 데이터가 없는 빈 깡통 테이블을 만들어 준 것입니다.
이제 쿼리를 통해 SFLIGHT에서 가져온 데이터를 빈 깡통 테이블에 그대로 넣어주려고 합니다.
그럴 때 쓰는게 [ CORRESPONDING FIELDS OF TABLE ] 구문 입니다.
말그대로 CORRESPONDING은 "일치하는, 상응하는 이라는 뜻입니다."
즉, 일치하는 컬럼명 끼리 데이터를 그대로 복사해서 넣어준다는 뜻입니다.
하나 예를 들어보겠습니다.
만약 A라는 테이블에는 '취미'라는 컬럼과 '혈액형'이라는 컬럼이 있다고 가정해보겠습니다.
[테이블 A]
취미 | 혈액형 |
스키 | A형 |
또한 B라는 테이블에는 '취미'라는 컬럼과 '성별'이라는 컬럼이 있다고 가정해보겠습니다.
[테이블 B]
취미 | 성별 |
스키 | 여성 |
이렇게 되면 취미라는 컬럼은 테이블 A, B 둘다 존재하여 일치하기 때문에 CORRESPONDING 구문을 쓰면 데이터가 이동하게 됩니다.
그러나 테이블 A에만 존재하는 [혈액형] 컬럼이라든지 테이블 B에만 존재하는 [성별] 컬럼은 A와 B가 서로 상응하지 않기에 CORRESPONDING 구문으로 서로 데이터를 주고받는다고 해도 값이 이동되지 않습니다.
이렇게하고 값이 잘 들어오는지 확인해보겠습니다.
결과
→ LT_SFLIGHT라는 빈 깡통에 SFLIGHT에서 값이 복사해 온 것을 알 수 있습니다.
이렇게 해서 간단한 쿼리를 공부하였습니다.
다음 시간에는 원하는 조건을 가져올 수 있는 쿼리를 짜보도록 하겠습니다.
감사합니다.
'- SAP ABAP 기초부터 시작하기' 카테고리의 다른 글
SAP ABAP 기초 3-3 ) 쿼리 3 - WHERE절 2 (0) | 2022.11.17 |
---|---|
SAP ABAP 기초 3-2 ) 쿼리 2 - WHERE절 추가하기 (0) | 2022.11.17 |
SAP ABAP 기초 2-7 ) TYPE과 LIKE의 차이점 (0) | 2022.11.17 |
SAP ABAP 기초 2-6 ) 변수 선언 시 TYPES를 활용하기 (0) | 2022.11.13 |
SAP ABAP 기초 2-5 ) 날짜 계산하기 (1) | 2022.11.10 |