OpenSQL WITH
CTE(Common Table Expression)
ABAP New syntax인 WITH 문은 Open SQL에서 서브쿼리에 별칭(CTE)을 붙여서 쿼리내에서 재사용을 간편하게 할수 있도록 합니다.
복잡한 쿼리문 같은 경우 WITH로 서브쿼리화 하여 쿼리문을 작성하면 시인성도 좋아지며 동일 쿼리내에서 재사용하기도 수월합니다.
각각의 CTE는 쉼표(,)로 구분되며 이름 앞에 + 기호를 붙여야 합니다.
# 사용예시
TABLES MARC.
PARAMETERS: P_WERKS TYPE T001W-WERKS MEMORY ID WRK OBLIGATORY.
SELECT-OPTIONS: S_MATNR FOR MARC-MATNR.
START-OF-SELECTION.
WITH +T001W AS ( SELECT WERKS,
EKORG,
NAME1
FROM T001W ),
+MARC AS ( SELECT MATNR,
WERKS,
CASE WHEN SOBSL EQ '30' THEN '3'
ELSE '0' END AS ESOKZ
FROM MARC ),
+EINE AS ( SELECT A~MATNR,
A~LIFNR,
B~WERKS,
B~ESOKZ
FROM EINA AS A
INNER JOIN EINE AS B ON A~INFNR EQ B~INFNR
WHERE A~LOEKZ EQ @SPACE
AND B~LOEKZ EQ @SPACE ),
+A017 AS ( SELECT A~KNUMH,
A~LIFNR,
A~MATNR,
A~ESOKZ,
B~WERKS,
B~NAME1 AS WERKS_TXT,
C~NAME1,
A~DATAB,
A~DATBI
FROM A017 AS A
INNER JOIN +T001W AS B ON A~EKORG EQ B~EKORG AND A~WERKS EQ B~WERKS
INNER JOIN LFA1 AS C ON A~LIFNR EQ C~LIFNR
WHERE A~KAPPL EQ 'M'
AND A~KSCHL EQ 'PB00'
AND A~DATAB LE @SY-DATUM
AND A~DATBI GE @SY-DATUM )
SELECT A~KPEIN,
A~KMEIN,
A~KONWA,
A~KBETR,
B~MATNR,
B~WERKS,
B~LIFNR,
B~WERKS_TXT,
B~NAME1,
B~DATAB,
B~DATBI
FROM KONP AS A
INNER JOIN +A017 AS B ON B~KNUMH EQ A~KNUMH
INNER JOIN +EINE AS C ON C~MATNR EQ B~MATNR
AND C~LIFNR EQ B~LIFNR
AND C~WERKS EQ B~WERKS
AND C~ESOKZ EQ B~ESOKZ
INNER JOIN +MARC AS D ON D~MATNR EQ B~MATNR
AND D~WERKS EQ B~WERKS
AND D~ESOKZ EQ B~ESOKZ
WHERE A~LOEVM_KO EQ @SPACE
AND B~WERKS EQ @P_WERKS
AND B~MATNR IN @S_MATNR
INTO TABLE @DATA(LT_TMP).
ZCL_SALV_TEST=>DISPLAY( LT_TMP ).
'ABAP > Syntax' 카테고리의 다른 글
[Syntax] FOR - 반복 표현식 (1) | 2023.10.17 |
---|---|
[Syntax] LOOP AT itab - GROUP BY (0) | 2023.10.16 |
[Syntax] FILTER - Internal table 데이터 필터링 (0) | 2023.07.20 |
[Syntax] CORRESPONDING - Structure 및 Internal Table 값 복사 (0) | 2023.07.20 |
[Syntax] CONV - 형 변환 (0) | 2023.07.19 |
댓글