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 + append
TAB1 = VALUE #( BASE TAB1 ( CORRESPONDING #( WA1 ) ) ).
TAB2 = CORRESPONDING #( BASE ( TAB2 ) TAB1 ).
corresponding + field
WA2 = VALUE #( BASE CORRESPONDING #( WA1 )
FILED1 = VALUE ).
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 ) ) ).
조건에 맞는 라인 존재하는지 체크
LINE_EXISTS( TAB1[ FIELD1 = Value ] ).
라인수 체크
IF lines( TAB1 ) = 0.
Get table index
DATA(lv_tabix) = line_index( lt_tab[ FILED1 = value ] ).
인터널테이블에서 특정조건을 만족하는 라인의 갯수 세기
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 ) ).
두 구문의 기능은 동일하다.
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 ).
조건에 맞는 데이터만 뽑아서 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 ).
서브루틴 파라미터 사용시 중첩구조안의 필드 사용하는법
PERFORM fill_cellcol USING ls_0100-cellcol: gc_diff_qty 6.