본문 바로가기

ABAP 프로그래밍 개념/ABAP 기초 개념

ABAP Program Type 1 : ABAP 프로그램 종류

프로그램을 생성할 때, Program Attributes 창의 프로그램 유형 속성은 다양한 옵션을 가진 드롭다운 목록으로 하기 캡쳐와 같이 확인할 수 있습니다.

Program Attributes 창은 ABAP Editor 화면에서 Goto • Attributes를 선택하여 호출할 수 있습니다. 선택 가능한 프로그램 유형에는 executable programs, module pools, function groups, class pools, interface pools, subroutine pools, type groups, include program이 포함됩니다.

ABAP 프로그램을 실행할 때는 특정한 순서로 Processing Block을 호출합니다. 프로그램 유형 속성(Attribute Type)은 프로그램을 생성하는 동안 설정해야 합니다. 프로그램 유형은 프로그램이 어떤 Processing Block을 포함할 수 있는 지, ABAP 런타임 환경에서 어떻게 프로그램이 실행되고 처리되는 지, 그리고 프로그램이 자체적으로 스크린을 정의할 수 있는지 여부를 결정합니다.


Executable Programs


전통적으로, Executable Program은 프로그램의 실행 순서(sequence of execution) 때문에 보통 Report 개발에 사용됩니다. 이것이 왜 Executable Programs의 코드에서 REPORT 구문으로 도입되는지 이유입니다.. 예를 들어, ZEXAMPLE_PROGRAM이라는 이름으로 실행 가능한 프로그램을 생성하면 ABAP Editor에 삽입된 첫 번째 문장은 REPORT ZEXAMPLE_PROGRAM입니다.

Executable Program은 Function Module을 제외한 모든 ABAP Processing Block을 포함할 수 있습니다. 또한 어떠한 수의 로컬 클래스를 포함할 수도 있습니다. Executable Program은 스크린(Screen)을 지원하지만, 프로그램을 실행하기 위해 반드시 스크린을 정의할 필요는 없습니다. Executable Program를 사용하기 위해 수동으로 스크린을 디자인할 필요는 없으며, Selection Screen과 List Screen도 사용할 수 있습니다. Selection Screen은 PARAMETERS나 SELECT-OPTIONS와 같은 문장으로 생성되고, List Screen은 WRITE 문으로 생성됩니다.

Selection Screen은 사용자가 선택 기준을 지정할 수 있도록 합니다. 이 선택 기준에 따라 데이터베이스의 데이터를 처리하고 List Screen에 출력할 수 있습니다. 이러한 프로세스 흐름으로 인해 Selection Screen은 보고서 개발에 적합합니다.

Executable Program은 SUBMIT 문을 사용하여 실행됩니다. 사용자는 Transaction SA38에서 프로그램 이름을 입력하거나 System • Services • Reporting을 선택하여 직접 프로그램을 실행할 수 있습니다. 실제로 트랜잭션이나 메뉴 경로를 사용하더라도 시스템은 내부적으로 SUBMIT 문을 사용하여 프로그램을 실행합니다.

Executable Program은 ABAP Editor (Transaction SE38)에서도 직접 실행할 수 있습니다. 그러나 엔드 유저는 ABAP Editor는 개발 권한이 필요한 ABAP Workbench 도구이기 때문에 프로그램을 실행하기 위해 ABAP Editor를 열 수 있는 필요한 권한을 가지고 있지 않을 수 있습니다.

Transaction SA38는 아래 표시된 것과 같이 프로그램 이름을 입력하여 모든 Executable Program을 간단하게 실행하는 인터페이스를 제공합니다. 선택적으로 Executable Program에 트랜잭션 코드를 할당하여 트랜잭션 코드를 사용하여 프로그램을 직접 실행할 수도 있습니다. 이러한 트랜잭션을 리포트 트랜잭션(Report Transaction)이라고 합니다.

Executable Program은 백그라운드 처리에 사용할 수 있는 유일한 프로그램입니다. 실행 가능한 프로그램은 ABAP 편집기(ABAP Editor)나 Object Navigator(Transaction SE80)를 사용하여 생성할 수 있습니다.


Module Pool Program


모듈 풀 프로그램(Module Pool Program)은 많은 수의 화면을 포함하는 dialog-oriented applications(대화 지향 애플리케이션)에 사용됩니다. 이러한 프로그램은ABAP 편집기(ABAP Editor)나 Object Navigator(Transaction SE80)를 사용하여 생성되며 PROGRAM 구문으로 소개됩니다.

모듈 풀 프로그램은 ABAP에서 가능한 모든 Processing Block을 포함할 수 있지만, Function Module 및 reporting event(INITIALIZATION, START-OF-SELECTION, GET, END-OF-SELECTION)는 포함할 수 없습니다. 모듈 풀 프로그램에는 필요한 만큼 많은 로컬 클래스를 포함할 수 있습니다.

Executable Program과 달리 모듈 풀 프로그램은 프로그램 이름을 사용하여 직접 실행할 수 없습니다. 대신 트랜잭션 코드를 사용하여 실행됩니다. 모듈 풀 프로그램은 적어도 하나의 화면이 정의되어 있어야 합니다. 즉, 프로그램에 정의된 화면 없이는 어떠한 모듈 풀 프로그램 실행할 수 없습니다.(Executable Program과의 차이점에 대해서 알고 있어야 합니다)

모듈 풀 프로그램을 실행하려면 프로그램에 대한 트랜잭션 코드를 생성해야 합니다. 이 트랜잭션 코드는 트랜잭션이 실행될 때 프로그램의 초기 화면(Initial Screen)과 연결됩니다. 이 초기 화면 흐름 로직(initial screen flow logic)에서 대화 모듈(Dialog Module)이 호출됩니다. 모듈 풀 프로그램의 실행은 화면 흐름 로직(Screen Flow Logic)에 의해 제어됩니다. 모듈 풀 프로그램의 화면은 Screen Painter 도구를 사용하여 생성됩니다. 모듈 풀 프로그램의 흐름에 대해 더 자세히 알아볼 것입니다.(추후 다른 글을 통해 자세히 다루겠습니다)


Function Group


함수 그룹(Function Group)은 FUNCTION-POOL 구문을 사용하여 소개되며 Function Module을 포함할 수 있는 SAP 시스템 상 유일한 프로그램 유형입니다. 함수 그룹은 ABAP의 모든 Processing Block을 사용할 수 있지만 Report Event는 사용할 수 없습니다. 또한 로컬 클래스를 포함할 수도 있습니다.

함수 그룹은 Funtion Builder Tool(Transaction SE37) 또는 Object Navigator(Transaction SE80)를 사용하여 생성됩니다. 함수 그룹은 트랜잭션 코드를 통해 실행될 수 있지만 일반적으로 함수 그룹의 Function Module을 호출하여 로드됩니다. Function Module이 호출되면 모든 Function Module을 포함한 함수 그룹 전체가 프로그램 메모리에 로드됩니다. 이러한 이유로 관련된 함수 모듈만 함수 그룹에 유지하는 것이 중요합니다.(이러한 이유로 하나의 Function Module에 오류가 있어서 덤프가 생긴다면 같은 그룹안의 모든 Function Module에서도 덤프가 발생합니다)

Executable Program과 모듈 풀과 마찬가지로 함수 그룹은 selection screens과 list screen(선택 화면 및 목록 화면)을 포함한 자체 화면을 정의할 수 있습니다. 함수 그룹의 화면은 그룹에 속하는 Funciton Module에서 호출됩니다.


Class Pool


클래스 풀(Class Pool)은 Class Builder Tool(Transaction SE24)에서 생성되며 CLASS-POOL 문으로 소개됩니다. 클래스 풀은 정확히 하나의 글로벌 클래스와 필요한 만큼의 로컬 클래스를 보유하는 컨테이너 역할을 합니다. Method를 제외한 다른 Processing Block을 가질 수 없습니다. 클래스 풀에는 화면이 정의될 수 없습니다

클래스 풀은 글로벌 클래스가 프로그램에서 호출될 때 로드됩니다. 글로벌 클래스의 해당 Method가 사용될 때 클래스의 객체가 암시적으로 생성하기 위하여 글로벌 클래스의 Method에 대해 트랜잭션 코드를 생성할 수 있습니다.


Interface Pool


인터페이스 풀(Interface Pool)은 클래스 빌더에서 생성되며 INTERFACE-POOL 문으로 소개됩니다. 인터페이스 풀은 글로벌 또는 로컬 클래스에서 구현할 수 있는 글로벌 인터페이스의 컨테이너 역할을 합니다. 인터페이스 풀은 화면을 포함할 수 없으며, 인터페이스가 클래스에서 사용될 때 로드됩니다.


Subroutine Pool


서브루틴 풀(Subroutine Pool)은 서브루틴(Subroutine)을 유지하기 위해 사용됩니다. 서브루틴(Subroutine) 이외에는 LOAD-OF-PROGRAM 이벤트만 포함할 수 있습니다. 서브루틴 풀은 ABAP 편집기(ABAP Editor)에서 생성되며 PROGRAM 구문으로 소개됩니다. 화면을 포함할 수 없으며, 서브루틴이 외부 프로그램에서 호출될 때 로드됩니다.


Type Pool


Type Pool(타입 풀 또는 타입 그룹)은 ABAP Data Dictionary(Transaction SE11)에서 생성되며 TYPE-POOL 구문으로 소개됩니다. Type Pool은 시스템 전역적으로 사용되는 데이터 타입을 정의하는 데 사용됩니다.

타입 풀은 ABAP Data Dictionary의 general type definition(일반적인 타입 정의)의 이전 버전입니다. 타입 풀은 오래된 개념이며, 더 이상 시스템 전역 데이터 타입을 정의하는 데에는 사용되지 않습니다.

Type Group의 단점 중 하나는 의미론적인 속성이 부족하다는 것입니다. 다른 말로 하면, Type Group에서 정의된 데이터 타입이나 상수에 대한 의미론적인 속성은 코드의 주석을 제외하고는 유지할 수 없습니다. 이는 Data Element와 같은 다른 ABAP Data Dictionary의 객체와는 달리 적용됩니다.

오래된 시스템에서는 Type Group의 선언을 다른 프로그램에서 TYPE-POOLS 구문을 사용하여 볼 수 있도록 만들 수 있습니다.


Include Program


인클루드 프로그램(Include Program)은 INCLUDE 구문을 사용하여 다른 프로그램에 유지되는 소스 코드를 삽입함될 수 있는 라이브러리 함수를 제공합니다. 인클루드 프로그램은 독립적인 프로그램이 아니며 독립적으로 실행될 수 없습니다. 이들은 프로그램 소스 코드를 작은 편집 가능한 단위로 구성하는 데 사용됩니다. 인클루드 프로그램은 자체의 메모리를 가진 독립적인 컴파일 단위를 나타내지 않기 때문에 introductory statement이 없습니다(REPORT나 PROGRAM 구문 같은).

반응형

'ABAP 프로그래밍 개념 > ABAP 기초 개념' 카테고리의 다른 글

Memory Organization  (0) 2023.06.24
ABAP Program Type 2 : ABAP 프로그램 실행  (0) 2023.06.24
ABAP Language Overview  (0) 2022.12.31