ABAP에서 변수명이 순차적인 이름으로 되어 있을 때 Field Symbol을 사용하면 프로그램 소스 코딩을 짧고 쉽게 처리할 수 있습니다.
예를 들어 변수 이름이 day01, day02, day03, day04… 또는 month01, month02, month03… 형식으로 되어 있을 경우 IF 조건문으로 비교하지 않아도 필드 심볼을 사용해서 간단하게 변수에 값을 입력하거나 읽어오기를 처리할 수 있습니다.
Field Symbol은 메모리 공간을 갖고 있지 않으며 ASSIGN을 통해 실제 Data Object에 연결 됩니다.
이번 글에서는 SAP ABAP에서 Field Symbol(필드심볼)을 사용 하는 방법에 대해 알아보겠습니다.
ABAP Field Symbol ASSIGN 형식
▶ ABAP에서 필드 심볼을 사용하기 위해서는 ASSIGN 과정이 필요합니다.
아래와 같이 다양한 ASSIGN 형식으로 지정이 가능합니다.
1. ASSIGN f TO <fs>.
단순히 field f의 값을 <fs>가 가리키도록 합니다.
2. ASSIGN (f) TO <fs>.
동적 field를 이용한 것인데 field f안의 값을 또 field명으로 보고 그 field의 값을 <fs>가 가리키도록 합니다.
3. ASSIGN TABLE FIELD (f) TO <fs>.
2와 같은 경우이나 f 의 값이 table의 field명 일때 그 table field의 값을 <fs>가 가리키도록 합니다.
4. ASSIGN LOCAL COPY OF MAIN TABLE FIELD (f) TO <fs>.
3와 같은 경우이나 tables로 선언된 main program의 table field값을 <fs>가 가리키는 것이 아니라
값만 복사 하여 사용하기 때문에 변경할 수 없습니다.
5. ASSIGN COMPONENT idx OF STRUCTURE rec TO <fs>.
structure의 구성 요소 순서를 idx에서 읽어 그 순서에 위치한 구성 요소의 값을 <fs>에 할당 합니다.
6. ASSIGN COMPONENT name OF STRUCTURE rec TO <fs>.
structure의 구성 요소명(field명)을 name에서 읽어 그 구성 요소의 값을 <fs>에 할당 합니다.
ABAP에서 Field Symbol을 사용한 프로그램 예제
▶ 인터널테이블 itab에 field1, field2, field3 세 개의 필드를 FIELD-SYMBOLS로 처리하는 로직과 hsl01, hsl02, hsl03, hsl04, hsl05 다섯 개의 데이터 변수에 FIELD-SYMBOLS를 사용하여 값을 입력하고 연산하는 로직에 대한 ABAP 프로그램 예제 입니다.
REPORT ymm0001 . DATA: index TYPE c, fname(11) TYPE c. *– 인터널 테이블 필드 사용 예 DATA: BEGIN OF itab OCCURS 0, field1(3) TYPE c, field2(3) TYPE c, field3(3) TYPE c, END OF itab. FIELD-SYMBOLS: <fs>. DO 3 TIMES. index = sy-index. CONCATENATE ‘ITAB-FIELD’ index INTO fname. ASSIGN (fname) TO <fs>. * 위의 Assign과 동일한 기능 * CONCATENATE ‘FIELD’ index INTO fname. * ASSIGN COMPONENT fname OF STRUCTURE itab TO <fs>. <fs> = ‘ABC’. APPEND itab. CLEAR itab. ENDDO. WRITE: /(10) ‘field1’, (10) ‘field2’, (10) ‘field3’. LOOP AT itab. WRITE: /(10) itab-field1, (10) itab-field2, (10) itab-field3. ENDLOOP. SKIP 2. ” 2라인 띄움 *– 일반적인 변수 사용 예 DATA: index2(2) TYPE n. DATA: hsl01(1) TYPE n VALUE 1, hsl02(1) TYPE n VALUE 2, hsl03(1) TYPE n VALUE 3, hsl04(1) TYPE n VALUE 4, hsl05(1) TYPE n VALUE 5, sum(2) TYPE n. DO 5 TIMES. index2 = sy-index. CONCATENATE ‘HSL’ index2 INTO fname. ASSIGN (fname) TO <fs>. sum = sum + <fs>. ENDDO. WRITE: / hsl01, ‘+’, hsl02, ‘+’, hsl03, ‘+’, hsl04, ‘+’, hsl05, ‘=’, sum. |
ABAP에서 Field Symbol을 사용한 프로그램 실행 결과 화면
▼ 앞 단락의 ABAP 프로그램을 실행했을 때의 결과 화면입니다.
- 인터널 테이블에 대한 WRITE 문과 데이터 변수에 대한 WRITE 문 처리 결과 입니다.

※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^