본문 바로가기

ABAP 프로그래밍 개념/Modulazation Technique

2-4. Modularization Techniques - Program Structure : Procedure

Procedure는 특별한 모듈 유닛(Special Modularization Unit)으로 ABAP 구문을 통해 호출되고, 재사용 가능한 소프트웨어 블록을 제공합니다. Procedure는 ABAP 프로그램으로부터 호출되어 실행되는 구문의 집합을 포함하고 있습니다.

위 그림을 보면, ABAP 프로그램은 ABAP 구문을 통해 Procedure을 호출합니다. Procedure이 호출되면, Procedure 안에 있는 코드가 실행됩니다.

Procedure는 ABAP 프로그램 안에 정의되고, 프로그램을 활성화하면 독립된 모듈로 남습니다. 이전에 말했다싶이, Procedures는 정의된 해당 프로그램에서 호출될 수 있고, 외부 프로그램에서 호출될 수 있습니다. 예를 들어, 같은 프로그램에서는 Subroutine을 아래와 같이 PERFORM 구문을 서서 호출할 수 있습니다.

PERFORM prepare_data.

Subroutine이 만약 다른 프로그램에서 선언되었다고 해도, 외부 프로그램에서 호출할 수 있는데, 선언된 프로그램을 언급하면서 사용할 수 있습니다. 아래 구문은 외부 프로그램의 Subroutine을 호출하는 방법입니다.(다만 SAP는 외부에서 Subroutine을 호출하는 것을 권장하지 않는데, 외부 호출은 Function Module과 ABAP Class를 사용하는 것이 좋습니다)

PERFORM prepare_data IN PROGRAM ZCA_EXAMPLE.

Procedure이 외부에서 호출되었을 때, Procedure이 존재하는 전체 프로그램이 메모리에 올라가게 되지만, 그러나 Procedure안의 코드만이 실행됩니다. Procedure는 Parameter Interface를 지원하기 때문에, Procedure에 Input 데이터를 전달하고 Result 결과를 서로간에 교환할 수 있습니다.

Procedure은 Local Data Area(지역 데이터 선언 영역)을 지원하기 때문에, 해당 선언된 데이터를 Procedure 내부에서만 제한할 수 있습니다. 해당 영역에 선언된 Data Object는 Procedure가 호출될 때만 만들어지며 Procedure의 실행이 완료된 다음에는 사라집니다.

예를 들어, 아래코드에서, Data Object인 f1은 Subroutine인 OUTPUT안에서 정의되었습니다. Data Object인 f1은 Subroutine이 호출될 때 만들어지고 f1이 만들어진 Subroutine 내에서만 ABAP 구문을 통해 접근이 가능합니다. Subroutine 실행이 완료(ENDFORM이 실행되었을 때)된 후, f1이라는 Data Ojbect는 더이상 프로그램 메모리에서 사용할 수 없고, ABAP 구문을 통해 접근할 수 없습니다.

FORM output.
DATA f1 TYPE C.
ENDFORM.

Local Data(지역 변수)안에 저장된 어떠한 데이터도 Procedure가 끝나면서 Clear 됩니다. Local Data Object는 메인 프로그램에서 불필요하게 데이터 처리의 목적이 완료되어 그 이외에 데이터 영역을 점유하는 것을 원하지 않을 때 유용합니다.

예를 들어, 두 개의 서로 다른 데이터베이스 테이블에서 데이터를 선택하고, 두 개의 Internal Table에 복사한 다음 데이터를 최종적으로 하나의 Internal Table로 통합하는 코드를 작성하고 있다고 가정해보겠습니다. 이 두 개의 내부 테이블에서 가져온 데이터가 최종 테이블로 병합된 후, 원래의 Internal Table에서 데이터가 더 이상 필요하지 않게 됩니다.

만약 이러한 테이블을 전역 선언 영역에서 정의했다면, 해당 프로그램이 실행되는 동안 메모리를 계속 점유하게 됩니다. 단, 이러한 테이블을 수동으로 초기화(clear)하지 않는 한 계속해서 메모리를 차지합니다. 그러나, Internal Table이 Procedure에 지역적으로 선언되었다면, 그것은 Program이 Procedure을 끝낸 후에는 자동으로 데이터를 클리어합니다.

ABAP은 아래와 같은 Procedure을 제시합니다.

1. Subroutine
-> 서브루틴(Subroutine)은 주로 지역적인 모듈화를 위해 사용됩니다. 서브루틴(Subroutine)이 외부의 ABAP 프로그램에서 호출 될 수 있음에도 불구하고, 그것들은 일반적으로 정의된 해당 프로그램에서 지역적으로 호출됩니다. 서브루틴(Subroutine)은 프로그램 안에서 재사용에 유용하고, ABAP의 어떠한 프로그램에서도 정의될 수 있습니다.

2023.04.12 - [ABAP 프로그래밍 개념/Modulazation Technique] - 2-4 추가. Modularization Techniques - Program Structure : Procedure : Subroutine

 

2-4 추가. Modularization Techniques - Program Structure : Procedure : Subroutine

Subroutine은 FORM ~ ENDFORM 사이의 구문에서 유지되며, PERFROM 구문을 통해 호출됩니다. FORM subroutine. ... ENDFORM. USING과 CHAINGING이라는 addition을 Subroutine을 위한 Parameter Interface로 정의할 수 있씁니다. Parame

abapta0903.tistory.com

2. Function Modules
Function Modules은 시스템에 글로벌하게 정의되고 글로벌한 모듈화(전역적인 모듈화)를 위해 사용됩니다. Function Modules은 전형적으로 다양한 프로그램에 사용되는 재사용성을 위한 것이고 항상 다른 프로그램들로부터 호출됩니다. Function Modules은 Function Group 유형의 프로그램에서 정의되고 어떠한 종류의 ABAP Program에서부터 호출될 수 있습니다. Function Modules은 또한 RFC 인터페이스 시스템을 지원하고 외부 시스템들에서 실행될 수 있습니다.

2022.12.20 - [SAP ABAP 개발 및 설명/SAP Function Module] - Function Module 개요

 

Function Module 개요

Function Module(함수) 개요 Function Module은 ABAP 프로그래밍 개념 중 Processing Block(특정 기능을 묶어 모듈화 하는 것을 총칭) 중 Procedure의 종류이다. Procedure은 SQL에서 나오는 개념의 Procedure과는 차이가

abapta0903.tistory.com

3. Methods
메소드(Method)는 ABAP 객체(Object)에서 클래스(Class)와 그 인스턴스의 함수를 포함하며, OOP(Object Oriented Programming) 개념을 지원합니다. 메소드는 클래스 내에서 정의되며, 프로그램에서 지역적으로 유지 관리되거나 시스템 전역적으로 유지 관리될 수 있습니다.

2023.01.04 - [ABAP 프로그래밍 개념/Object-Oriented ABAP] - Principles of OOP Part3 : Methods

 

Principles of OOP Part3 : Methods

Methods는 객체(object)의 행동을 결정하고 클래스의 내부 절차(internal procedures)로서 역할을 합니다. Methods는 methods라는 키워드( static의 경우 class-methods)를 사용하여 클래스의 definition part에 정의되고,

abapta0903.tistory.com

 

반응형