🍇 ABAP SQL 완전 기초 – 냉장고에서 과일 꺼내기 (feat. 인터널 테이블)
SAP ABAP을 처음 회사에서 배우거나, 국비지원에서 배울 경우 솔직한 이야기로 가장 어려운 점은 SQL이다.
선배들이 항상 이야기 했던건 쿼리만 잘쳐도 ABAP은 80퍼센트 끝난다는 이야기를 귀에 피가 나도록 들었던 것 같아요.
저처럼 비전공자들에게 저도 이해하게 된 SQL 기본 지식에 대해서 포스팅 해보려고 합니다.
SAP ABAP을 처음 배우는 분들,
SQL 문법이 어렵고 복잡하게 느껴지셨나요?
그럼 이렇게 상상해보세요.
우리 집 냉장고에 과일이 들어 있고, 그걸 꺼내어 그릇에 담는 일이 바로 SQL입니다.
✅ SQL은 무엇인가요?
SQL은 “Structured Query Language”의 줄임말로,
데이터를 저장해 둔 '냉장고(테이블)'에서 원하는 '과일(데이터)'만 골라서 '그릇(변수)'에 담는 방법이에요.
🍇 예제 1 – 청포도 꺼내오기
SELECT 포도
FROM 냉장고
INTO 나무그릇
WHERE 색상 = '청색'.
🧠 이걸 이렇게 이해하면 쉬워요:
- 냉장고 → 데이터가 가득 들어 있는 SAP 테이블
- 포도 → 내가 꺼내고 싶은 정보
- 나무그릇 → 꺼낸 데이터를 담을 그릇, 즉 변수 또는 인터널 테이블
- 색상 = '청색' → 청포도만 고르기!
🍽️ 그런데 ‘나무그릇’이 뭔가요? 인터널 테이블!
SAP에서는 이렇게 데이터를 한 줄씩 또는 여러 줄 꺼내 담을 때,
**'인터널 테이블(Internal Table)'**이라는 그릇을 사용해요.
🍱 인터널 테이블이란?
- 마치 반찬통 같아요.
- 여러 줄의 데이터를 한 번에 담을 수 있어요.
- 종류가 다양하고, 내부에 구조(structure)를 정의할 수 있어요.
🧺 인터널 테이블 예시 – 바구니 만들기
TYPES: BEGIN OF ty_fruit,
과일 TYPE char20,
색상 TYPE char10,
END OF ty_fruit.
DATA: 바구니 TYPE TABLE OF ty_fruit .
이건 이렇게 이해하면 쉬워요:
- ty_fruit → 과일 하나에 대한 설계도
- 바구니 → 이 과일들을 여러 개 담을 수 있는 인터널 테이블
🍎 예제 2 – 사과를 바구니에 가득 담기
SELECT 과일 색상
FROM 냉장고
INTO TABLE 바구니
WHERE 과일 = '사과'.
- 조건에 맞는 사과들을 한 번에 꺼내어 바구니에 담는 SQL입니다.
- 이건 마치 마트에서 “사과 주세요!” 했더니 바구니에 10개 담아준 것과 같아요.
🛠 인터널 테이블의 3요소 기억하기
요소 설명 비유
행(Row) | 데이터 한 줄 | 사과 하나 |
열(Column) | 데이터 속성 | 사과의 색, 크기, 맛 |
테이블 | 전체 그릇 | 사과 여러 개가 담긴 바구니 |
🎯 정리하면…
- SAP의 DB 테이블 = 냉장고
- SQL SELECT = 꺼내는 동작
- 인터널 테이블 = 그릇
- 여러 개의 데이터를 담는 데 쓰이며,
- 꺼낸 데이터를 가공하거나 출력할 때 필수적입니다.
📘 초심자를 위한 실습 팁 – 항공편 테이블로 인터널 테이블 연습하기
🔎 사용할 테이블 요약
테이블명 설명
SCARR | 항공사 정보 (Lufthansa, Delta 등) |
SPFLI | 항공편 기본 정보 (출발/도착 도시 등) |
SFLIGHT | 항공편 상세 정보 (좌석 수, 금액 등) |
🧪 실습 목표
특정 항공사의 항공편 정보만 인터널 테이블에 담고, 화면에 출력하기
예: 'LH'(Lufthansa) 항공사 항공편만 조회하고 출력하기
✅ 실습 코드
아래 코드를 SE38이나 SE80에 넣고 실행해보세요
REPORT zflight_demo.
TYPES: BEGIN OF ty_flight,
carrid TYPE sflight-carrid, "항공사 코드
connid TYPE sflight-connid, "항공편 번호
fldate TYPE sflight-fldate, "출발일
price TYPE sflight-price, "항공권 가격
currency TYPE sflight-currency, "통화
END OF ty_flight.
DATA: it_flights TYPE STANDARD TABLE OF ty_flight WITH EMPTY KEY,
wa_flight TYPE ty_flight.
" 항공편 데이터 조회
SELECT carrid connid fldate price currency
FROM sflight
INTO TABLE it_flights
WHERE carrid = 'LH'. " Lufthansa만 조회
" 결과 출력
LOOP AT it_flights INTO wa_flight.
WRITE: / '항공사:', wa_flight-carrid,
'편명:', wa_flight-connid,
'출발일:', wa_flight-fldate,
'가격:', wa_flight-price,
'통화:', wa_flight-currency.
ENDLOOP.
🔄 다른 항공사도 실습해보자!
LH | Lufthansa |
SQ | Singapore Airlines |
UA | United Airlines |
WHERE carrid = 'SQ'. " Singapore Airlines로 바꿔서 연습
📝 마무리 정리
개념 의미 예시
테이블 | 냉장고 | 냉장고 |
행(Row) | 과일 하나 | 포도 |
SELECT | 꺼내기 | SELECT 포도 |
INTO | 담기 | INTO 나무그릇 |
인터널 테이블 | 그릇 | 나무그릇, 바구니 |
SQL은 결국 **“무엇을 꺼낼 것인가, 어디에 담을 것인가”**의 언어입니다.
'ABAP BOX' 카테고리의 다른 글
Chat GPT ABAP Helper 소개 (0) | 2025.06.08 |
---|