SAP ABAP에서 Field Symbol(필드심볼)을 사용 하는 방법


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 문 처리 결과 입니다.
SAP ABAP에서 Field Symbol(필드심볼)을 사용 하는 방법





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기