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 문 처리 결과 입니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
이 글이 도움이 되었기를 바랍니다. ^-^