CREATE OBJECT vs NEW, 뭐가 다를까 #shorts #SAP #ABAP
Moderator
· 조회 2
CREATE OBJECT vs NEW — 무엇이 다른가
ABAP 7.40부터 NEW 키워드로 객체를 한 줄에 생성할 수 있습니다. 기존 CREATE OBJECT와 비교하면 코드가 확연히 간결해집니다.
기존 방식 — CREATE OBJECT
DATA: lo_flight TYPE REF TO lcl_flight.
CREATE OBJECT lo_flight
EXPORTING
iv_carrid = 'LH'
iv_connid = '0400'.
변수를 먼저 선언하고, CREATE OBJECT로 인스턴스를 생성합니다. 타입을 두 번 작성해야 하고 코드가 길어집니다.
현대 방식 — NEW
DATA(lo_flight) = NEW lcl_flight(
iv_carrid = 'LH'
iv_connid = '0400'
).
DATA(...) 인라인 선언과 NEW를 결합해 한 번에 처리합니다. 타입은 한 번만 쓰고, 코드 라인도 줄어듭니다.
메서드 체이닝 활용
" 임시 객체를 변수 없이 직접 사용
DATA(lv_name) = NEW lcl_flight( 'LH' )->get_name( ).
" 인터페이스 타입 변수에 할당
DATA lo_animal TYPE REF TO lif_animal.
lo_animal = NEW lcl_dog( ).
메서드 결과만 필요하거나 인터페이스에 할당할 때 NEW가 특히 유용합니다. 불필요한 중간 변수가 사라집니다.
단위 테스트에서의 활용
cut = NEW lcl_validator(
db = NEW lcl_mock_db( )
auth = NEW lcl_mock_auth( )
).
테스트 코드에서 목(Mock) 객체를 생성자에 바로 주입할 때 NEW 중첩 생성이 강력합니다. 코드가 훨씬 읽기 쉬워집니다.
CONSTRUCTOR EXPRESSION 확장
" 배열에 바로 추가
APPEND NEW lcl_order( iv_id = 1 ) TO lt_orders.
" 메서드 파라미터로 직접 전달
lo_processor->run( NEW lcl_config( iv_debug = abap_true ) ).
핵심 한 줄
CREATE OBJECT는 구식, NEW + 인라인 선언은 현대 ABAP 표준 — 신규 코드에서는 무조건 NEW를 사용하세요.