본문 바로가기
ABAP/Syntax

[OpenSQL] Internal Table을 이용한 JOIN (FOR ALL ENTRIES 대체)

by name_text 2023. 7. 18.

OpenSQL에서 Internal Table을 이용한 JOIN 사용

FOR ALL ENTRIES 대체 (단, 대량의 데이터는 성능 이슈 존재)

 

ABAP New syntax 의 Open SQL에서 For all entries를 대신해서 Internal Table을 쿼리문에 직접 Join 할 수 있습니다

 

Inner join, outer join 모두 사용 가능하며 이로 인해 좀더 간단하게 쿼리문 작성이 가능해 졌습니다.

 

# 사용예시

DATA LT_BSEG TYPE STANDARD TABLE OF BSEG.

SELECT
  BUKRS,
  BELNR,
  GJAHR
FROM BKPF
WHERE GJAHR EQ '2022'
INTO TABLE @DATA(LT_BKPF)
  UP TO 10 ROWS.
IF SY-SUBRC NE 0.
  EXIT.
ENDIF.

* FOR ALL ENTRIES --------------------------------------
SELECT
  BUKRS, BELNR, GJAHR, BUZEI
FROM BSEG
  FOR ALL ENTRIES IN @LT_BKPF
WHERE BUKRS EQ @LT_BKPF-BUKRS
  AND BELNR EQ @LT_BKPF-BELNR
  AND GJAHR EQ @LT_BKPF-GJAHR
INTO CORRESPONDING FIELDS OF TABLE @LT_BSEG.


* Internal Table Join ----------------------------------
SELECT
  A~BUKRS, A~BELNR, A~GJAHR, A~BUZEI
FROM BSEG AS A
  INNER JOIN @LT_BKPF AS B ON A~BUKRS EQ B~BUKRS
                          AND A~BELNR EQ B~BELNR
                          AND A~GJAHR EQ B~GJAHR
INTO CORRESPONDING FIELDS OF TABLE @LT_BSEG.

ZCL_SALV_TEST=>DISPLAY( LT_BSEG ).

 

댓글