SAP ABAP ( 변수 )

misohb·2025년 9월 12일

ABAP

목록 보기
1/3

이번 글에서는 SAP ABAP 변수 선언 방법을 정리해보려고 합니다.

변수 선언

DATA : gv_num1 TYPE C LENGTH 10,
       lv_num1(10),
       gv_mat LIKE mara-matnr.

ABAP에서 변수는 DATA 구문으로 선언합니다.
DATA 뒤에 변수명 → 타입(TYPE 또는 LIKE) → 길이(LENGTH) 를 지정하면 됩니다.

여기서 TYPE과 LIKE의 차이를 이해하는 것이 중요합니다.

  • TYPE: 데이터 타입 자체를 기준으로 선언합니다.
    예: gv_num1 TYPE C LENGTH 10 → 문자형 10자리
  • LIKE: 다른 변수나 ABAP Dictionary 필드의 속성을 그대로 참조합니다.
    예: gv_mat LIKE mara-matnr → MARA-MATNR 필드와 동일한 속성

즉, TYPE은 독립적이고, LIKE는 참조 대상에 종속적이라는 차이가 있습니다.
참조 대상이 변경되면 LIKE로 선언한 변수도 함께 영향을 받는다는 점을 기억해야 합니다.

또한 lv_num1(10)처럼 TYPE을 생략할 수도 있습니다. 이 경우 기본 TYPE은 C(문자형), 기본 길이는 10입니다.

왜 TYPE / LIKE 형태가 중요한가?

TYPE이 다르면 이후 FUNCTION이나 METHOD 호출 시 오류가 발생할 수 있습니다.
ABAP은 자동 형 변환을 지원하지만, 이 과정에서 원하지 않는 값 손실이 일어날 수 있기 때문입니다.

예를 들어:

DATA : gv_n1 TYPE I,
       gv_n2 TYPE C LENGTH 5.

gv_n1 = 1234567890.
gv_n2 = gv_n1.

gv_n1의 값은 1234567890입니다.
하지만 gv_n2는 길이가 5이므로 12345까지만 저장됩니다.

ERP 시스템에서는 이런 작은 오류도 치명적일 수 있습니다.
예를 들어, 50,000,000이라는 값이 자동 변환되어 50,000으로 잘려 저장된다면 시스템 데이터가 왜곡될 수 있습니다.

Structure 변수

ABAP에서는 구조체(Structure) 형태로 변수를 선언할 수 있습니다.

DATA : gs_n1 TYPE scarr.

DATA : BEGIN OF gs_n2,
         carrid   TYPE scarr-carrid,
         carrname TYPE scarr-carrname,
       END OF gs_n2.

첫 번째 방법: Dictionary(SE11)에 정의된 구조(SCARR)를 그대로 사용

두 번째 방법: 로컬에서 직접 구조체를 정의

Dictionary 기반 선언은 편리하지만, Dictionary 구조가 변경되면 프로그램도 함께 영향을 받습니다.
따라서 많은 개발자들은 독립성을 위해 로컬 구조 선언을 선호합니다.

Internal Table 변수

ABAP에서 가장 중요한 개념 중 하나가 바로 Internal Table입니다.
구조체(Structure)는 단일 행(Row)만 담을 수 있지만, Internal Table은 여러 행을 담을 수 있도록 설계된 컬렉션입니다.

DATA : gt_n1 TYPE TABLE OF scarr.

DATA : BEGIN OF gs_n2,
         carrid   TYPE scarr-carrid,
         carrname TYPE scarr-carrname,
       END OF gs_n2,
       gt_n2 LIKE TABLE OF gs_n2.

TABLE OF 구문을 통해 구조체 기반의 테이블 변수를 만들 수 있습니다.

즉, gs_n2라는 구조체를 만들고,
이를 기반으로 여러 건을 담는 Internal Table(gt_n2)을 선언할 수 있습니다.
이 Internal Table을 활용하면 한 번에 여러 데이터를 효율적으로 다룰 수 있고, SAP 프로그램에서 데이터를 처리하는 핵심 도구가 됩니다.

마무리

오늘은 ABAP의 기본인 변수 선언, TYPE과 LIKE의 차이, Structure, Internal Table에 대해 정리했습니다.

  • 변수 선언은 TYPE과 LIKE의 차이를 이해하는 것이 핵심
  • Dictionary 기반 선언은 편리하지만, 변경에 취약
  • Internal Table은 ABAP 프로그래밍의 필수 개념
profile
ABAP 개발자

0개의 댓글