본문 바로가기
ABAP/Syntax

[Syntax] FILTER - Internal table 데이터 필터링

by name_text 2023. 7. 20.

FILTER

Internal table 데이터 필터링

 

ABAP New syntax 인 FILTER 구문을 이용하여, Internal table에 조건을 주어 데이터를 필터링하여 다른 Internal table에 데이터를 복사 할 수 있습니다.

 

Internal table을 필터링 하기위해서는 원본 Internal table이 Sorted Table로 선언 되거나, Secondary key가 있어야 합니다.

 

# Standard Table에 Secondary key 설정하여 FILTER

DATA: LT_T001 TYPE STANDARD TABLE OF T001
              WITH NON-UNIQUE SORTED KEY FILTER_KEY COMPONENTS BUKRS,    "FILTER를 위한 Secondary key 설정
      LT_TMP  TYPE STANDARD TABLE OF T001.

DATA LT_FILTER TYPE SORTED TABLE OF T001-BUKRS WITH UNIQUE KEY TABLE_LINE.

SELECT
  *
FROM T001
INTO CORRESPONDING FIELDS OF TABLE @LT_T001.

* Internal Table의 Secondary key로 필터링
LT_TMP = FILTER #( LT_T001 USING KEY FILTER_KEY          "Secondary key 지정
                           WHERE BUKRS = 'AU01' ).

ZCL_SALV_TEST=>DISPLAY( LT_TMP ).

* 필터링할 조건이 담긴 Internal Table로 필터링
LT_FILTER = VALUE #( ( 'AU01' )
                     ( 'CN01' )
                     ( 'FR01' ) ).

LT_TMP = FILTER #( LT_T001 IN LT_FILTER
                           WHERE BUKRS = TABLE_LINE ).

ZCL_SALV_TEST=>DISPLAY( LT_TMP ).
ABAP

 

# Sorted table을 FILTER

DATA: LT_T001 TYPE SORTED TABLE OF T001 WITH NON-UNIQUE KEY BUKRS,    "SORTED TABLE로 설정
      LT_TMP  TYPE STANDARD TABLE OF T001.

DATA LT_FILTER TYPE SORTED TABLE OF T001-BUKRS WITH UNIQUE KEY TABLE_LINE.

SELECT
  *
FROM T001
INTO CORRESPONDING FIELDS OF TABLE @LT_T001.

* Internal Table의 Primary key로 필터링
LT_TMP = FILTER #( LT_T001 WHERE BUKRS = 'AU01' ).

ZCL_SALV_TEST=>DISPLAY( LT_TMP ).

* 필터링할 조건이 담긴 Internal Table로 필터링
LT_FILTER = VALUE #( ( 'AU01' )
                     ( 'CN01' )
                     ( 'FR01' ) ).

LT_TMP = FILTER #( LT_T001 IN LT_FILTER
                           WHERE BUKRS = TABLE_LINE ).

ZCL_SALV_TEST=>DISPLAY( LT_TMP ).
ABAP

 

댓글