본문 바로가기

어쩌다 SAP/어쩌다 ABAP

7일차) Overview: Function, GROUDP 생성 MODULE~ 인터널 테이블과 헤더라인

ⅷ. Overview -Function(함수)

- Subr이 Local Modularization이라 하면, Fucntion Module은 Global Modularization이라 한다.

<Subroutine과 Function의 차이점>
- Function Module은 Function Group이라 불리는 POOL에 소속되어야 함.
- Function Module은 예외 처리 기능을 제공하여 에러가 발생하면 예외 사항을 호출한 프로그램에 전달 가능.
- Function Module은 호출 프로그램에 상관없이 Stand-alone 모드에서 테스트할 수 있다.

 

1. Function Module
<Function Module의 인터페이스>
- Import Parameters - Function Module에 전달하는 값
- Export Parameters - Function Module로부터 ABAP 프로그램에 전달받는 값
- Changing Parameters - Function Module에 값을 넘기고, 그 값을 바꿀 수 있다.
- Tables - 인터널 테이블을 Function Module에 전달하고 받을 수 있다.
- Exceptions - 에러에 대한 정보를 제공

 

2. Function Grouop

-

Function Module을 모아 놓은 Container- Function Group을 실행하면 자동으로 Main Program과 Include Program을 생성- Main Program의 이름은 'SAPL'이 Function Group 앞에 붙어 구성. ex)SAPLFGRP

 

ⅸ. Function Group 생성

- Function Group은 T-CODE: SE37(Function Builder) 또는 T-CODE: SE80에서 생성 가능

 

ⅹ. Function Module

1. Function Module 리스트 검색

- T-CODE: SE37에서 Function Module 검색 가능

 

2. Function Module 세부 내용

1) Attributes

- Function Module이 소속된 Group, 생성인, 생성일, 패키지 등의 일반적인 관리 정보와 Processing type 정보 조회 가능

2) Import 파라미터

3) Export 파라미터

4) Changing 파라미터

5) Tables 파라미터

6) Exceptions

 

11. RFC

- 레거시와 R/3 시스템의 데이터를 인터페이스 하기 위해 함수가 RFC함수로 정의되어야 한다.

 

Q) RFC는 어떻게 활용되는지 사례를 물어볼 필요가 있음.


 

1. Overview

1. Internal Table의 정의

- Internal Table은 프로그램 내에서 정의하여 사용할 수 있는 Local Table이다.

 

3. Structure 배열과 Internal Table
<ABAP에서의 인터널 테이블 선언>

TYPES: BEGIN OF s_type,
    no(6)    TYPE c,
    name(10)  TYPE c,
    part(16)  TYPE c,
END OF s_type.
TYPES t_type TYPE STANDARD
    TABLE OF s_type INITIAL SIZE 100.
DATA sawon TYPE t_type.

- Internal Table은 동적인 구조체 배열(Dynamic Data Object)이다.

- INITIAL SIZE 구문은 실제로 메모리 공간을 할당하지 않고 예약(RESERVE)을 한다.

- sawon-name = 'Kimhyunchan'을 선언했다면 APPEND를 해주어야 인터널 테이블에 값이 생긴다(?)

 

4. Internal Table 생성

1) Local Table Type을 이용한 인터널 테이블 생성

TYPES : BEGIN OF t_str,
            ~~~~~
          END OF t_str                    <- 구조체 타입 선언

TYPES t_itab TYPE STANDARD TABLE OF t_str
   WITH {UNIQUE | NON-UNIQUE} KEY <keys>]
   INITIAIL SIZE 100.                                       <- 구조체 타입을 참고하는 인터널 테이블 타입 선언

DATA: gt_itab TYPE t_itab                    <- 타입 참고하여 인터널 테이블 설정

Q) TABLE에서 SIZE는 의미하는 바가 뭐야?

<예제 5-1> - Internal Table 생성

*TYPES: BEGIN OF s_type,
*         no(6)    TYPE c,
*         name(10) TYPE c,
*         part(16) TYPE c,
*       END OF s_type.
*
*DATA gt_itab TYPE STANDARD TABLE OF s_type WITH NON-UNIQUE KEY no WITH HEADER LINE.
*
*gt_itab-no = '0001'.
*gt_itab-name = 'Easy ABAP'.
*gt_itab-part = 'SAP Team'.
*APPEND gt_itab.
*
*LOOP AT gt_itab.
*  WRITE : gt_itab-no, gt_itab-name, gt_itab-part.              "0001 Easy ABAP SAP Team
*ENDLOOP.

 

2) Global ABAP Dictionary Type을 이용한 인터널 테이블 생성

<예제 5-2>

*DATA gt_itab TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid.
*DATA gs_str LIKE LINE OF gt_itab.
*
*SELECT * INTO TABLE gt_itab
*  FROM scarr.
*
*LOOP AT gt_itab INTO gs_str.
*  WRITE :/ gs_str-carrid, gs_str-carrname.
*ENDLOOP.

 

2. 인터널 테이블과 헤더라인

- 인터널 테이블 선언 시 WITH HEADER LINE 구문을 추가하면 헤더라인이 생성된다.

- 인터널 테이블 사용 시 어떤 정보가 헤더 라인에 있는지 주의해서 사용해야한다.

DATA itab TYPE Type | LIKE obj [WITH HEADER LINE].
<헤더라인이 있는 경우와 없는 경우의 차이>

1) 헤더라인이 없으면 Work Area를 선언하고 값을 복사한 다음 사용해야 한다.

LOOP AT itab INTO work_area.
    WRITE work_area-carrid.
ENDLOOP.

2) 헤더라인이 있으면 인터널 테이블 이름이 ABAP 프로그램 내에서 헤더라인을 의미하게 된다.

LOOP AT itab.
    WRITE : itab-rcepno.
ENDLOOP.
<헤더라인 유/무에 따른 MODIFY 사용 시 구문 비교>

1) 헤더라인 없는 경우

MODIFY TABLE itab FROM wa.

2) 헤더라인 있는 경우

MODIFY TABLE itab.
(=MODIFY TABLE itab FROM 헤더라인.)
(=MODIFY TABLE itab FORM itab.)

음...

<헤더라인 사용에 따른 비교>

헤더라인 없는 경우 명령어 헤더라인 있는 경우 명령어
모든 인터널 테이블(Standard, Sorted, Hashed Type)
INSERT wa INTO TABLE itab. INSERT TABLE itab.
COLLECT w INTO itab. COLLECT itab.
READ TABLE itab... INTO wa. READ TABLE itab...
MODIFY TABLE itab FROM wa... MODIFY TABLE itab...
MODIFY itab FROM wa... WHERE... MODIFY itab... WHERE...
DELETE TABLE itab FROM wa. DELETE TABLE itab.
LOOP AT ITAB INTO wa... LOOP AT itab...
Index 테이블(Standard, Sorted Type)
APPEND wa TO itab. APPEND itab.
INSERT wa INTO itab... INSERT itab....
MODIFY itab FROM wa... MODIFY itab...
<예제 5-3> - 헤더라인 있는 테이블 사용

*TYPES: BEGIN OF t_str,
*         col1 TYPE i,
*         col2 TYPE i,
*       END OF t_str.
*
*DATA gt_itab TYPE TABLE OF t_str WITH HEADER LINE.
*
*DO  3 TIMES.
*  gt_itab-col1 = sy-index.
*  gt_itab-col2 = sy-index ** 2.
*  APPEND gt_itab.
*ENDDO.
*
*LOOP AT gt_itab.
*  WRITE : / gt_itab-col1, gt_itab-col2. *ENDLOOP.
<예제 5-4> - 헤더라인 없는 테이블 사용

*TYPES: BEGIN OF t_str,
*         col1 TYPE i,
*         col2 TYPE i,
*       END OF t_str.
*
*DATA gt_itab TYPE TABLE OF t_str.
*DATA gs_str LIKE LINE OF gt_itab.                "Work Area 선언하여 데이터 읽거나 변경"
*
*DO 3 TIMES.
*  gs_str-col1 = sy-index.
*  gs_str-col2 = sy-index * 2.
*  APPEND gs_str TO gt_itab.
*ENDDO.
*
*LOOP AT gt_itab INTO gs_str.
*  WRITE : / gs_str-col1, gs_str-col2.
*ENDLOOP.

 

 

출처: https://www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9788965400288

 

Easy ABAP 2.0 - 교보문고

기본 이론과 실무 예제로 새롭게 꾸민『Easy ABAP 2.0』. 기본 이론과 예제 프로그램의 실습으로 단계적으로 ABAP 프로그램을 완성해갈 수 있도록 구성된 교재이다. 이론 부분은 1장 ~ 11장으로 구성��

www.kyobobook.co.kr