FOR
반복표현식, REDUCE, NEW, VALUE와 함께 사용
ABAP New syntax인 FOR는 다른 개발언어의 for와 마찬가지로 반복적인 처리를 할수 있습니다.
REDUCE의 사용방법은 아래 링크를 참고하면 되며,
2023.07.12 - [ABAP/Syntax] - [Syntax] REDUCE - 축소 연산자
NEW와 VALUE를 사용하여 Internal Table로 데이터를 받을 수 있습니다.
# Syntax
REDUCE|NEW|VALUE type( ... FOR ... UNTIL|WHILE ...|... IN ... ... ) ...
# 사용예시
VALUE FOR의 사용예시입니다.
Internal Table 유형에 따른 성능은 : Sorted Table > Standard Table > Secondary Key
DATA: LT_BSEG TYPE STANDARD TABLE OF BSEG WITH NON-UNIQUE SORTED KEY KEY1 COMPONENTS BUKRS GJAHR,
LT_BSEG_SORT TYPE SORTED TABLE OF BSEG WITH NON-UNIQUE KEY BUKRS GJAHR.
TYPES: BEGIN OF T_FILTER,
BUKRS TYPE BSEG-BUKRS,
GJAHR TYPE BSEG-GJAHR,
END OF T_FILTER,
TT_FILTER TYPE STANDARD TABLE OF T_FILTER WITH EMPTY KEY.
DATA LT_TMP TYPE TT_FILTER.
DO 100000 TIMES.
LT_BSEG = VALUE #( BASE LT_BSEG
( BUKRS = '1000' GJAHR = '2023' BELNR = '11111' BUZEI = '001' )
( BUKRS = '1000' GJAHR = '2022' BELNR = '11111' BUZEI = '002' )
( BUKRS = '1000' GJAHR = '2022' BELNR = '11111' BUZEI = '003' )
( BUKRS = '1000' GJAHR = '2023' BELNR = '11122' BUZEI = '001' )
( BUKRS = '1100' GJAHR = '2023' BELNR = '11022' BUZEI = '001' )
( BUKRS = '1100' GJAHR = '2023' BELNR = '11022' BUZEI = '002' )
( BUKRS = '1100' GJAHR = '2023' BELNR = '11022' BUZEI = '003' )
).
ENDDO.
LT_BSEG_SORT = CORRESPONDING #( LT_BSEG ).
"Standard Table을 조건으로 FOR IN
LT_TMP = VALUE #( FOR LS IN LT_BSEG
WHERE ( BUKRS EQ '1000' AND GJAHR EQ '2023' )
( BUKRS = LS-BUKRS
GJAHR = LS-GJAHR ) ).
"Standard Table의 Secondary Key로 FOR IN
LT_TMP = VALUE #( FOR LS IN LT_BSEG USING KEY KEY1
WHERE ( BUKRS EQ '1000' AND GJAHR EQ '2023' )
( BUKRS = LS-BUKRS
GJAHR = LS-GJAHR ) ).
"Sorted Table의 Primary key로 FOR IN
LT_TMP = VALUE #( FOR LS IN LT_BSEG_SORT
WHERE ( BUKRS EQ '1000' AND GJAHR EQ '2023' )
( BUKRS = LS-BUKRS
GJAHR = LS-GJAHR ) ).
# 사용예시 - Internal Table의 내용을 Range로 복사
"Internal Table의 내용을 Range로 간단하게 복사
RANGES LR_PRCTR FOR CEPC-PRCTR.
LR_PRCTR[] = VALUE #( FOR LS IN LT_HIERARCHYVALUES
( LOW = LS-VALFROM
HIGH = LS-VALTO
SIGN = 'I'
OPTION = 'BT' ) ).
'ABAP > Syntax' 카테고리의 다른 글
[Syntax] String Expressions & Functions (0) | 2023.11.09 |
---|---|
[Syntax] NEW - Instance Operator (0) | 2023.10.19 |
[Syntax] LOOP AT itab - GROUP BY (0) | 2023.10.16 |
[OpenSQL] WITH - CTE 서브쿼리 (0) | 2023.07.21 |
[Syntax] FILTER - Internal table 데이터 필터링 (0) | 2023.07.20 |
댓글