본문 바로가기
ABAP

[New syntax] 정리

by clode 2023. 3. 2.
728x90
반응형

Value

WA - 기존값 초기화후 넣어줌

WA1 = VALUE #(
IFRESULT = ES_RETURN-IFRESULT
IFMESSAGE = ES_RETURN-IFMESSAGE ).

WA - 기존값 유지한채로 새로운값 넣어줌

WA1 = VALUE #( BASE WA1
IFRESULT = ES_RETURN-IFRESULT
IFMESSAGE = ES_RETURN-IFMESSAGE ).

INT - VALUE # BASE

IT_RESULT[] = VALUE #( BASE IT_RESULT[]
( IFRESULT = LS_RETURN-TYPE
IFMESSAGE = LS_RETURN-MESSAGE ) ).
    lt_orders = VALUE #( ( order_number = ls_0100-aufnr ) ).

Corresponding

corresponding + append

TAB1 = VALUE #( BASE TAB1 ( CORRESPONDING #( WA1 ) ) ).

TAB2 = CORRESPONDING #( BASE ( TAB2 ) TAB1 ).

corresponding + field

WA2 = VALUE #( BASE CORRESPONDING #( WA1 )
FILED1 = VALUE ).

For in

LOOP 구문과 동일
이때 For 뒤에오는 work area는 선언된적 없는 구조체여야 한다.

MOVE-CORRESPONDING TAB1[] TO TAB2[].

LOOP AT ITAB INTO DATA(WA).
LS_TAB2-DATE = SY-DATUM.
LS_TAB2-TIME = SY-UZEIT.
MODIFY ITAB FROM WA.
CLEAR WA.
ENDLOOP.

=>

TAB2 = VALUE #( FOR WA IN ITAB
 WHERE ( CHECK EQ GC_X ) "만약 조건걸면 이렇게 
( VALUE #( BASE CORRESPONDING #( WA )
DATE = SY-DATUM
TIME = SY-UZEIT ) ) ).

Lines

조건에 맞는 라인 존재하는지 체크

LINE_EXISTS( TAB1[ FIELD1 = Value ] ).

라인수 체크

IF lines( TAB1 ) = 0.

Get table index

DATA(lv_tabix) = line_index( lt_tab[ FILED1 = value ] ).

Reduce

인터널테이블에서 특정조건을 만족하는 라인의 갯수 세기

DATA( LV_LINES ) = REDUCE I( INIT X = 0 FOR WA IN ITAB
WHERE ( FIELD1 = WA-FIELD1 ) NEXT x = x + 1 ).
DATA(LV_TEXT) = REDUCE string( INIT x TYPE string FOR wa IN itab
                NEXT x = x && wa-text ) ).

COND, SWITCH (CASE)

두 구문의 기능은 동일하다.

  lv_data = COND #( WHEN FIELD1 IS INITIAL THEN data1  
                    ELSE data2 ).

 data(lv_num) = COND i( WHEN lv_data = 'A' THEN 1
                         WHEN lv_data = 'B' THEN 2 ). 
DATA(lv_num) = SWITCH #( lv_data WHEN 'A' THEN 1
                                 WHEN 'B' THEN 2 ).

Filter

조건에 맞는 데이터만 뽑아서 MOVE 시킬수 있는 구문.
인터널테이블은 Sorted Table 이어야 사용가능하다.

DATA: lt_item TYPE TABLE OF table1 WITH NON-UNIQUE SORTED KEY key1 COMPONENTS key1.

lt_itab1 = FILTER #( lt_item USING KEY key1
WHERE key1 = ls_head-key1 ).
728x90
반응형

'ABAP' 카테고리의 다른 글

[ABAP] 자주 까먹는 구문  (0) 2024.11.27
[Field symbol] 가로데이터->세로로  (0) 2023.03.10
[New Syntax] COLLECT  (0) 2023.03.02
문자열 자릿수만큼 split  (0) 2023.03.02
영문 포함하는 변수인지 확인하는법  (0) 2023.03.02

댓글