생성자 표현식 ① VALUE, CORRESPONDING, CONV, NEW 한 번에 이해하기
3줄 요약
생성자 표현식은
연산자 타입( ... )형태이고, 타입을 문맥에서 알 수 있으면#으로 줄여 써요.VALUE는 구조체와 내부 테이블을 그 자리에서 만들고,CORRESPONDING은 이름이 같은 필드끼리 옮기고,CONV는 타입 변환 결과를 만들어요.인라인 선언
DATA(...)와 같이 쓰면 보조 변수와APPEND,CLEAR문장이 크게 줄어요.
어떤 상황에서 쓰나요
코드에서 DATA ls_x TYPE ..., ls_x-a = 1., ls_x-b = 'aaa'., APPEND ls_x TO lt_x. 가 길게 이어진다면 같은 일을 몇 줄로 줄여 주는 문법이에요. 이 연재는 SAP 가 공개한 ABAP 치트시트를 주제별로 정리해요. 첫 회와 둘째 회는 *Constructor Expressions* 편을 반씩 나눠요.
핵심 내용
기본 형태. 생성자 표현식은 VALUE some_type( ... ) 처럼 연산자와 타입, 괄호 안의 인수로 이뤄져요. 타입이 문맥에서 정해지면 VALUE #( ... ) 로 써요. 타입을 알 수 없는 자리(예: 인라인 선언)에서는 DATA(struc2) = VALUE struc_type( a = 4 b = 'ddd' ). 처럼 타입을 써야 해요. 치트시트는 이 문법이 같은 일을 하는 구문보다 줄 수를 줄이지만, 가독성과 유지보수, 디버깅 용이성을 같이 따져 보라고 당부해요.
`VALUE`
구조체:
struc = VALUE #( a = 1 b = 'aaa' ).개별 컴포넌트에 대입하던 여러 줄이 한 문장이 돼요.내부 테이블: 줄마다 안쪽 괄호 한 쌍을 써요.
itab = VALUE #( ( a = 5 b = 'eee' ) ( a = 6 b = 'fff' ) ).기본으로 대상은 초기화되고, 기존 줄을 남기려면BASE를 써요(VALUE #( BASE itab ( ... ) )).요소 하나짜리 타입은 컴포넌트 이름 없이
VALUE string_table( (Hello) (world) ).인수를 비워
VALUE #( )로 쓰면 타입의 초기값이에요.FOR로 다른 테이블을 반복하며 줄을 만들 수 있어요(다음 회).중첩 구조체나 깊은 테이블도 그 자리에서 만들 수 있어요.
`CORRESPONDING` — 이름이 같은 컴포넌트를 옮겨요. 이름이 같지만 타입이 다르면(예: c 와 string) 변환 규칙의 영향을 받으니 주의하라고 해요.
BASE: 기존 값을 유지해요(괄호가 필요해요:CORRESPONDING #( BASE ( x ) z )).MAPPING a = b: 이름이 다른 컴포넌트를 연결해요.EXCEPT b: 옮기지 않을 컴포넌트를 지정해요. 이름이 같아도 변환이 불가능한 컴포넌트를 빼서 오류를 피할 때 써요.DISCARDING DUPLICATES: 유일 키가 있는 테이블에서 중복 줄이 있어도 예외가 나지 않게 해요.DEEP,APPENDING,FROM tab USING: 깊은 구조의 중첩 테이블을 줄 단위로 옮기거나, 조회 테이블과 합쳐서 새 테이블을 만들 때 써요.
`CONV` — 타입을 바꾼 결과를 만들어요. 보조 변수 선언을 피할 수 있어요.
DATA(conv_res) = CONV decfloat34( 1 / 5 ). " 0.2
DATA(res) = 1 / 5. " 0, 타입은 i내부 테이블끼리 타입(테이블 종류나 키)이 달라 대입이 안 될 때도 CONV 대상_테이블_타입( itab ) 으로 바꿔 쓸 수 있어요.
`NEW` — 객체나 익명 데이터 객체를 만들어요(NEW #( ... )). Clean ABAP 연재 5회에서 CREATE OBJECT 대신 NEW 를 쓰라고 한 이유와 이어져요.
주의할 점
치트시트는
FINAL(var)이라는 불변 인라인 선언도 소개하지만, 이 문법이 모든 릴리스에서 되는 것은 아니에요. 릴리스 의존적인 구문은 내 시스템에서 문법 검사를 해 보세요.CORRESPONDING은 이름만 보고 옮겨요. 의미가 다른 같은 이름의 필드가 있으면 조용히 잘못 옮길 수 있어서, 필요하면EXCEPT로 막아요. 이 문장은 원문에 있는 경고를 바탕으로 한 제 정리예요.치트시트는 계속 갱신되는 문서예요. 첫 공개는 2022년이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/05_Constructor_Expressions.md
출처와 이용 안내
원문: ABAP Cheat Sheets - Constructor Expressions VALUE, CORRESPONDING, CONV · 작성자 SAP SE and contributors SAP-samples · 작성일 2022-12-05 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25
이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.
원문은 Apache-2.0 라이선스(https://www.apache.org/licenses/LICENSE-2.0)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.
설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.
SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.
댓글 0
아직 댓글이 없어요.
로그인하고 댓글 쓰기