NEW - Instance Operator
ABAP New syntax인 NEW는 Object(Data 또는 Class) 생성하는 생성 연산자입니다.
CRETE 구문대신 NEW 를 사용하여 inline으로 코딩이 가능하여, 좀더 간결하고 간편하게 개발이 가능합니다.
# 사용예시
REPORT YSANB_BOX.
CLASS LCL_TEST DEFINITION.
PUBLIC SECTION.
DATA INIT_VALUE TYPE C.
METHODS: CONSTRUCTOR IMPORTING I_INIT_VALUE TYPE CHAR1 OPTIONAL.
METHODS: TEXT_OUTPUT.
ENDCLASS.
CLASS LCL_TEST IMPLEMENTATION.
METHOD CONSTRUCTOR.
INIT_VALUE = I_INIT_VALUE.
ENDMETHOD.
METHOD TEXT_OUTPUT.
WRITE:/ INIT_VALUE.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* Create object - Class
* 기존
DATA LO_CLASS TYPE REF TO LCL_TEST.
CREATE OBJECT LO_CLASS
EXPORTING I_INIT_VALUE = '0'.
LO_CLASS->TEXT_OUTPUT( ).
* NEW - #1
DATA LO_CLASS1 TYPE REF TO LCL_TEST.
LO_CLASS1 = NEW #( I_INIT_VALUE = '1' ).
LO_CLASS1->TEXT_OUTPUT( ).
* NEW - #2
DATA(LO_CLASS2) = NEW LCL_TEST( I_INIT_VALUE = '1' ).
LO_CLASS2->TEXT_OUTPUT( ).
* NEW - #3 ( Class-Method 처럼 )
NEW LCL_TEST( I_INIT_VALUE = '3' )->TEXT_OUTPUT( ).
* Create object - Data
* 기존
DATA LD_DATA TYPE REF TO DATA.
CREATE DATA LD_DATA TYPE I.
ASSIGN LD_DATA->* TO FIELD-SYMBOL(<LFV>).
<LFV> = 1234.
WRITE :/ <LFV>.
* NEW - #1
DATA(LD_DATA1) = NEW I( 1234 ).
ASSIGN LD_DATA1->* TO FIELD-SYMBOL(<LFV1>).
WRITE :/ <LFV1>.
# 사용예시 - Instance parent
"오브젝트 생성시 PARENT 동적 생성
CREATE OBJECT GO_GUI_SIMPLE_TREE
EXPORTING
* PARENT = NEW CL_GUI_SPLITTER_CONTAINER( PARENT = CL_GUI_CONTAINER=>SCREEN0
* ROWS = 1
* COLUMNS = 1 )->GET_CONTAINER( ROW = 1 COLUMN = 1 )
PARENT = NEW CL_GUI_DOCKING_CONTAINER( SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_TOP EXTENSION = 2048 ).
"간단하게 오브젝트를 생성해서 바로 표시할때
"#Case1. Tree Object 생성
DATA(LO_SIMPLE_TREE) = NEW CL_GUI_SIMPLE_TREE( PARENT = NEW CL_GUI_DOCKING_CONTAINER( SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT EXTENSION = 300 )
NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE ).
"Tree에 노드 추가
LO_SIMPLE_TREE->ADD_NODES( TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = GT_NODES ).
"#Case2. Tree Object 생성 및 노드 추가
NEW CL_GUI_SIMPLE_TREE( PARENT = NEW CL_GUI_DOCKING_CONTAINER( SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT EXTENSION = 300 )
NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE
)->ADD_NODES( TABLE_STRUCTURE_NAME = 'MTREESNODE'
NODE_TABLE = GT_NODES ).
'ABAP > Syntax' 카테고리의 다른 글
[Syntax] String Expressions & Functions (0) | 2023.11.09 |
---|---|
[Syntax] FOR - 반복 표현식 (1) | 2023.10.17 |
[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 |
댓글