ABAP BOX

[입문자를 위한 ABAP SQL]

@BoxLogoDev 2025. 5. 31. 15:57

🍇 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