New syntax

니언·2022년 8월 26일
0

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 ).
profile
쭈니어 개발자

1개의 댓글

comment-user-thumbnail
2022년 9월 16일

서브루틴 파라미터 사용시 중첩구조안의 필드 사용하는법
PERFORM fill_cellcol USING ls_0100-cellcol: gc_diff_qty 6.

답글 달기