상세 컨텐츠

본문 제목

[ABAP] Offline-Study 2 - 2013.12.07

Work/Study

by 물빛미르 2013. 12. 7. 10:08

본문

728x90

1. 복습 프로젝트

- SPFLI 테이블에서 carrid와 connid에 해당하는 데이터를 조회해 오는 프로그램을 작성해볼것.

- Parameter 로 carrid 와 connid 를 입력받는 변수 생성

- Data 로 DB로 부터 해당 id에 맞는 데이터를 담을 스트럭쳐 생성

- Select 쿼리로 조건에 맞는 데이터를 스트럭쳐로 가져오기

- Write 문으로 조회된 데이터를 출력.

 

- IF sy-subrc = 0.

sy-subrc 값을 확인하는 조건문 구문 내에서 데이터를 출력한다. 데이터가 성공적으로 조회된 경우 sy-subrc는 0값을 가지고 데이터가 없는 경우에는 4 값을 가진다.

 

2. Modularization

- 가독성 향상, 코딩 효율 향상, 코드 재사용성 향상

- Perform, Function, Class 의 method 를 사용하여 구현

- Perform (Subroutines) 은 해당 소스 내에서만 재사용 가능하므로 대부분 Class, Function 을 사용하여 작업한다.

- Global 클래스 생성 : se24

 

2-1. PERFORM (Subroutine)

- FORM, ENDFORM 구문으로 작성하며 호출할때 PERFORM 을 사용한다.

- 작성 예

FORM write_list.

WRITE 'aa'.

WRITE / 'bb'.

ENDFORM.

- 호출

PERFORM write_list.

 

- 서브루틴 작성시 파라메터 선언은 USING 문을 사용하여 선언하고 호출 시에도 USING 문을 사용하여 값을 넘긴다.

- 작성 예

FORM write_list USING pa_id

WRITE 'aa'.

WRITE / 'bb'.

NEW-LINE.

WRITE pa_id.

ENDFORM.

- 호출

PERFORM write_list USING ca_id

 

- 파라메터는 call by value, call by value and result, call by reference 가 있으며 call by value and result 의 경우 서브루틴이 모두 성공한 경우에만 결과값을 리턴해준다.

- 작성 예

FORM write_list

USING

value(f1)  "<- call by value

CHANGING

value(f2)  "<- call by value and result

f3.           "<- call by reference

WRITE f1.

WRITE / f2.

NEW-LINE.

WRITE f3.

ENDFORM.

- 호출

PERFORM write_list

USING

a

CHANGING

b

c.

- 파라메터 선언 시 TYPE을 명시해 주는데 TYPE ANY 의 경우 모든 타입을 다 받겠다는 뜻으로 어떤 형태의 값이든 다 받을 수 있긴 하지만, 시스템 성능 저하의 원인이 된다.

- 작성 예

FORM write_list

USING

value(f1)  TYPE ANY

CHANGING

value(f2)  TYPE i

f3          TYPE scarr.

 

2-2. Function Group

- 연관되어있는 Function을 묶어 Function Group으로 관리한다.

- Function Interface

- Exporting Param : 값을 내보내는 파라메터

- Importing Param : 값을 입력하는 파라메터

- Changing Param : 입력한 변수에 결과값을 받아오기 위한 파라메터

- Tables

- Exceptions : sy-subrc. 0 이 아닌경우 실패다.

- Function Group 내에서는 Screen, Data Obj, Sub-Program 등을 모두 공유하여 사용 할 수 있다.

- Function 검색 : Function Builder에서 와일드카드*를 이용해서 검색을 해 볼 수 있다.

- Function 호출문 삽입

- 작업창 상단에 pattern을 눌러서 작성된 함수 선택

- 동일 프로젝트 내 인 경우 Object 브라우저에서 function을 드래그 드롭으로 삽입

- 직접 Call Function 문을 타이핑 (오타 및 필수 파라메터 누락 가능성이 크므로 권장하지 않음)

- Function 생성

- 우측버튼 > create > Function Group

- se37 코드 입력 > Function 생성

- Function Group 을 생성하면 Includes 라는 폴더에 TOP으로 끝나는 목록이 생성된걸 확인 할 수 있다.

 

3. Internal Table

- Standard, Sorted, Hashed 형이 있으며 일반적으로 Standard를 쓴다. Hashed가 가장 빠르지만 인덱스형 접근이 안되는 등의 제약사항이 있어서 일반적으로 잘 사용하지 않는다.

- Append : 데이터를 테이블의 가장 아래쪽에 데이터를 추가해준다.

APPEND gs TO gt_itab.

APPEND LINES OF gt_it1 Where ... INTO gt_it2

- Insert : 뒤에 조건절이 있어서 조건에 맞는 위치에 데이터를 삽입한다.

INSERT gs INTO TABLE gt_itab where ...

INSERT LINES OF gt_it1 Where ... INTO gt_it2 Where ...

- Read : 데이터를 한줄만 읽는다.

READ TABLE gt_itab INTO gs where ...

- Modify : 데이터를 수정한다.

MODIFY TABLE gt_itab FROM gs where ...

- Delete : 데이터를 삭제한다.

DELETE gt_itab where ...

- SORT : Standard 테이블을 Sort를 하면 Sorted 테이블이 된다. Sorted 테이블로 선언한 테이블에는 사용할 수 없다.

SORT gt_flightinfo BY carrid

SORT gt_flightinfo BY percentage DESCENDING

- REFRESH : internal table 의 데이터를 모두 지우고 빈 테이블을 만들어준다.

- FREE : internal table의 메모리를 해제한다. (REFRESH 구문 사용 후에 사용한다.)

REFRESH gt_flightinfo

FREE gt_flightinfo

- CLEAR : 데이터도 지우고 메모리도 모두 해제한다. 헤더라인 테이블을 사용하는 경우에는 아래와 같이 클리어 처리를 해준다. (헤더라인 테이블은 사용 지양)

CLEAR lt_scarr, lt_scarr[].

- SELECT ... ENDSELECT : 루프를 돌면서 DB를 계속 접근해서 데이터를 가져와 loop 형태로 처리된다. DB 커넥션이 계속 발생하므로 권장하지 않는다.

- CLIENT SPECIFIED : 특정 클라이언트에 해당하는 데이터를 가져와야 하는 경우 사용한다.

- JOIN 구문 (테이블명과 필드 사이를 물결로 연결한다.)

SELECT ... FROM spfli INNER JOIN scarr ON spfli~carrid = scarr~carrid WHERE ...

 

 

테이블 생성 시 MANDT 라는 필드는 필수로 항상 생성하여야 한다.

* Package 에 $TMP는 로컬을 의미함.

728x90

'Work > Study' 카테고리의 다른 글

[ABAP] Offline-Study 4 - 2013.12.21  (0) 2013.12.21
[ABAP] Offline-Study 3 - 2013.12.14  (0) 2013.12.14
[ABAP] Offline-Study 1 - 2013.11.30  (0) 2013.11.30
정규표현식 정리  (0) 2013.09.12
vhd(VirtualPC) 파일 vdi (VirtualBox)로 변환하기!  (0) 2013.05.23

관련글 더보기