SELECT
: ABAP 에서 DB 테이블을 조회할 때 쓰는 구문
- 기본구조
SELECT 필드들
FROM 테이블
INTO 대상
WHERE 조건.
- 기본예제
SELECT *
FROM MARA
WHERE MTART = 'FERT'
ORDER BY MATNR
INTO TABLE @DATA(LT_MARA).
- SELECT * : 모든 컬럼, 특정필드 만 조회 시 컬럼 나열 (MATNR, MATKL…)
- FROM mara : 자재 마스터 기본 테이블
- INTO TABLE : 내부 테이블로 받음
- @DATA(...) : inline 선언 (7.40+)
- INNER JOIN : 양쪽 다 있는 데이터
- LEFT JOIN : 왼쪽 기준
- a~, b~ : 테이블 별칭
- ORDER BY: 지정 컬럼 순 정렬
- 집계합수 (COUNT, SUM 등) / FOR ALL ENTRIES 등 다양하게 사용 가능
SELECT 시, 꿀팁이라 자주 같이 쓰는 구문
ABAP SELECT 안의 CASE
: DB 에서 바로 조건 분기해서 값 만들어오는 용도
- CASE … WHEN … THEN … ELSE … END
SELECT MATNR, MTART,
CASE
WHEN MTART = 'FERT' THEN '완제품'
WHEN MTART = 'HALB' THEN '반제품'
ELSE '기타'
END AS MTRAT_TEXT
FROM MARA
INTO TABLE @DATA(LT_MARA).
필드 값 할당
: SELECT 구문에서 특정 컬럼에 지정된 값 할당
DATA: BEGIN OF LS_RESULT,
MATNR TYPE MARA-MATNR,
MTART TYPE MARA-MTART,
ICON TYPE ICON-ID,
END OF LS_RESULT,
LT_RESULT LIKE TABLE OF LS_RESULT.
SELECT MATNR, MTART,
CASE
WHEN MTART = 'FERT' THEN '@5B@' " 녹색
WHEN MTART = 'HALB' THEN '@5C@' " 빨강
ELSE '@5D@' " 노랑
END AS ICON
FROM MARA
INTO CORRESPONDING FIELDS OF TABLE @LT_RESULT.

WITH 구문
: 임시 결과 집합 정의
- 공통 테이블 표현식 ( CTE, Common Table Expression ) 으로 해당 문 내에서 반복하여 참조 가능한 임시 결과 집합
- 가독성 높이며, 복잡한 쿼리 단순화
- 사용 CASE: 특정 조건에 SUM, AVG 하는 컬럼의 GROUP BY 기준이 다름. MAIN 은 하나로 두고 SUM 과 AVG 추출 로직을 따로 씀. MAIN 에 JOIN 하여 SUM, AVG 값 할당
- 예시
" 도착 배정이 안되어 있는 곳을 제외한 데이터
WITH +MAIN_SPFLI AS ( SELECT CARRID
,CONNID
,COUNTRYFR
,CITYFROM
,AIRPFROM
,COUNTRYTO
,CITYTO
,AIRPTO
,FLTIME
,DEPTIME
,ARRTIME
,DISTANCE
,DISTID
,FLTYPE
,PERIOD
FROM SPFLI
WHERE AIRPFROM NE @SPACE ),
" 항공사/출발나라/단위가 같은 항목끼리 GROUP BY 하여 운항 총거리 데이터
+SUM AS ( SELECT CARRID,
COUNTRYFR,
DISTID,
SUM( DISTANCE ) AS TOT_DIST
FROM SPFLI
GROUP BY CARRID, COUNTRYFR, DISTID ),
" 항공사/단위가 같은 항목끼리 GROUP BY 하여 운항 거리 평균 데이터
+AVG AS ( SELECT CARRID,
DISTID,
AVG( DISTANCE ) AS AVG_DIST
FROM SPFLI
GROUP BY CARRID, DISTID )
" 항공사 데이터
SELECT A~CARRID , A~CONNID , A~COUNTRYFR,
A~CITYFROM , A~AIRPFROM ,
A~COUNTRYTO, A~CITYTO ,
A~AIRPTO , A~FLTIME ,
A~DEPTIME , A~ARRTIME ,
A~DISTANCE , A~DISTID ,
A~FLTYPE , A~PERIOD ,
B~TOT_DIST,
C~AVG_DIST
FROM +MAIN_SPFLI AS A
INNER JOIN +SUM AS B
ON A~CARRID EQ B~CARRID
AND A~DISTID EQ B~DISTID
INNER JOIN +AVG AS C
ON A~CARRID EQ C~CARRID
AND A~DISTID EQ C~DISTID
INTO TABLE @DATA(GT_TEST).
SORT GT_TEST BY CARRID CITYFROM DISTID.
→ 항공사 데이터 중 TOT_DIST 는 동일 항공사/출발나라/단위 총 거리, AVG_DIST 는 동일 항공사/단위의 평균 거리를 의미

'SAP' 카테고리의 다른 글
| MM_HISTORY_POPUP_SHOW 구매오더 이력 팝업 (0) | 2026.02.05 |
|---|---|
| SAP ABAP - OFFSET 문자열 특정 문자 추출, 바꾸기 (0) | 2026.01.28 |
| SAP Text Table 내역 가져오기 (0) | 2026.01.21 |
| SAP Domain Fixed Value 도메인 값, 내역 가져오기 [GET_DOMAIN_VALUES 사용 X] (0) | 2026.01.20 |
| 조회조건 텍스트(내역) 색상 - Selection Screen Color (Intensified) (0) | 2026.01.19 |