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 ).
# 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 > Syntax' 카테고리의 다른 글
[Syntax] LOOP AT itab - GROUP BY (0) | 2023.10.16 |
---|---|
[OpenSQL] WITH - CTE 서브쿼리 (0) | 2023.07.21 |
[Syntax] CORRESPONDING - Structure 및 Internal Table 값 복사 (0) | 2023.07.20 |
[Syntax] CONV - 형 변환 (0) | 2023.07.19 |
[OpenSQL] OpenSQL Expressions (0) | 2023.07.19 |
댓글