학교 다닐 때 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 |