학교 다닐 때 C 언어를 배운적이 있다. IT 를 배웠다 하는 사람들에게 기본이라고 가르치는 C 언어는 고비가 2번 오는데 포인터가 나오면 포기하는 사람이 1/3 이고 C++ 에서 클래스 개념이 나오면 1/3 이 포기한다고 우스갯소리를 한다. 그래서 자바가 좋니 어쩌니 한다. 하지만 어떤 프로그래밍 언어든 고비는 있는 듯 하다.
ABAP 에도 포인터와 비슷한 개념을 가지 Field Symbol 이 있다. Field Symbol 을 잘 이용하면 반복되는 필드들을 짧은 코드로 처리 할 수 도 있고, 루프의 속도도 개선 할 수 있으며, Internal Table 을 Dynamic 하게 만들 수도 있다. ( 이전에 Dynamic Internal Table 을 만드는 방법을 포스팅 한 적이 있다. 동적 인터널 테이블을 만들때 deep structure 로 생성하기 ) Field Symbol 은 사용자에 따라서 다양하게 사용될 수 있다. 하지만 무분별한 사용은 유지보수를 하는 사람에게 고통을 줄 수 있으니 개발 할 때 꼭 필요하거나 성능개선이 꼭 필요한 부분에 대해서만 쓰도록 해야겠다.
필드 심볼을 나름의 정의를 내리자면 "어딘가를 가르치고 있다." 라고 할 수 있다. 이 부분은 포인터와도 비슷한다. 필드 심볼은 테이블을 한 row 를 가르치거나 변수를 가르친다. 그래서 그 곳에 데이터를 넣으면 그 가르치는 곳으로 바로 데이터가 들어간다. 그래서 Internal Table 의 경우 루프를 돌면서 데이터를 변경한 경우 Modify 를 할 필요가 없어진다.
참고 : SAP 공식 홈페이지
DATA: BEGIN OF LINE,
COL1 TYPE I,
COL2 TYPE I,
END OF LINE.
DATA ITAB LIKE SORTED TABLE OF LINE WITH UNIQUE KEY COL1.
FIELD-SYMBOLS <FS> LIKE LINE OF ITAB.
DO 4 TIMES.
LINE-COL1 = SY-INDEX.
LINE-COL2 = SY-INDEX ** 2.
APPEND LINE TO ITAB.
ENDDO.
READ TABLE ITAB WITH TABLE KEY COL1 = 2 ASSIGNING <FS>.
<FS>-COL2 = 100.
READ TABLE ITAB WITH TABLE KEY COL1 = 3 ASSIGNING <FS>.
DELETE ITAB INDEX 3.
IF <FS> IS ASSIGNED.
WRITE '<FS> is assigned!'.
ENDIF.
LOOP AT ITAB ASSIGNING <FS>.
WRITE: / <FS>-COL1, <FS>-COL2.
ENDLOOP.
* Output
* 1 1
* 2 100
* 4 16
'SAP > ABAP' 카테고리의 다른 글
| ABAP Class ALV Cell 별 색상 넣기 (0) | 2014.12.10 |
|---|---|
| ABAP 파일 업로드, 다운로드시 파일 선택 팝업 생성 (0) | 2014.11.18 |
| ABAP Report 프로그램 실행시 Tcode 체크 (0) | 2014.11.17 |
| ABAP Parameters 에 소숫점 및 마이너스 금액 입력 (0) | 2014.10.21 |
| ABAP RANGE 변수를 PERFORM 문의 파라메터로 사용하기 (0) | 2014.09.04 |
| ABAP Collect 의 사용 가이드 (0) | 2014.09.01 |
| ABAP 금액 변환 방법 및 함수 (0) | 2014.08.22 |
| ABAP 문자열 대문자, 소문자로 변환하는 방법 Translate (0) | 2014.08.07 |
| CR 이 Lock 걸렸을 때 푸는 방법 ( SE09 사용 ) (0) | 2014.08.06 |
| Short Dump AC_SYSTEM_FLUSH 에 대처하는 우리의 자세 (0) | 2014.08.01 |