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를 사용하세요.