본문 바로가기

SAP ABAP 개발 및 설명/SAP Function Module

Function Module 개요


Function Module(함수) 개요


Function Module은 ABAP 프로그래밍 개념 중 Processing Block(특정 기능을 묶어 모듈화 하는 것을 총칭) 중 Procedure의 종류이다.

Procedure은 SQL에서 나오는 개념의 Procedure과는 차이가 있으며, 이름 그대로 절차, 순서와 같이 프로그램 내부에서 호출되어 기능을 하는 Processing Block을 의미한다.

Procedure의 종류로는 크게 세 가지가 있는데, Subroutine, Function Module, Method가 그것들이다.

그 중 Function Module에 대해서 설명하고자 한다.


Function Module 이란?


Function Module은 Function Group안에 정의되며, ABAP 프로그램으로부터 호출된다.
Function Groups는 Function Module을 담는 컨테이너(container)로서 역할을 하며 이 Function Module은 논리적으로는 Function Group안에 함께 속해있다고 보면 된다.(이렇게 때문에, Function Group의 한 Function Module에서 CTS에서 문제가 발생하였을 때 Group 전체의 Function Module이 에러가 나는 경우가 있다)

앞선 글에서 설명했다싶이, Function Group과 Function Module에 대한 생성은 Function Builder Tool(SE37)을 사용하여 ABAP Workbench에서 가능하다.

Function Modules는 비유하자면, 중앙 함수 도서관(central function library)에서 관리되며, 시스템 상에 존재하는 Function Modules를 찾는데 용이하다. SAP 시스템은 어떠한 ABAP 프로그램에서 호출가능한 Standard Function Module(스탠다드 함수) 을 제공한다. Function Module은 또한 RFC를 지원할 뿐만 아니라, RFC를 통해 외부 시스템에서도 호출될 수 있다.

Function Module의 하나의 종류로서, Update Module은 DATABASE 업데이트에 유용하다. Update Module은 개발자에게 하나의 dialog step에서부터 여러 단계의 dialog step을 가능케하는 LUW(logical Unit of Work)의 관점을 가능하게 해 준다.
LUW란 일종의 작업단위를 실행시키는 SAP 개념으로서 추후에 설명하도록 하겠다.

■Function Module의 예외(에러)처리
Subroutines과 달리, Function Module은 ABAP 프로그램의 소스코드로 정의되지 않는다. 대신에, Function Module은 Function Builder로 정의된다. Function Module은 항상 외부에서 호출되고 특유의 기능을 하기 때문에, 에러 상황을 다루기 위해 Message를 띄우는 것은 말이 안 된다(doesn't make sense). 만약 에러가 발생하였다면, Function Module은 Function Module이 실행되는 중에 발생하는 특정 에러를 캐치하기 위한 exception(예외) 처리를 지원한다.

■Function Module의 변경
Function Module은 많은 프로그램에서 호출된다. 존재하는 Function Module을 변경하는 것은 이 Function Module을 호출하는 모든 프로그램에 영향을 준다. 만약 Parameter Interface(파라미터 인터페이스 : Function Module와 같이 Import, Export 등과 같은 파라미터로 로직을 진행하는 방식)가 변화하였다면, Function Module을 호출하는 모든 프로그램들은 새 인터페이스(바뀐 파라미터들)를 적용하는 것이 좋다. 만약 Function Module가 변화하지 않았다면, 프로그램은 런타임 에러를 발생시킬 것이다.

이것을 방지하기 위해, Function Builder는 Function Module을 위해 release process(릴리즈 프로세스)를 가지고 있다. Function Module을 릴리징함으로서, 특히 인터페이스와 같은 경우(파라미터) Function Module에 적합하지 않은 변화에 대해서 가능하지 않도록 보장한다. 만약, Function Module이 변화했다더라도, 릴리즈된 함수를 사용하는 프로그램들의 사용이 중지되지는 않는다.

■Function Module의 유지보수
Function Module은 Function Module을 담는 컨테이너와 같은 역할을 하는 Function Group 안에 만들어진다. Function Group은 단일로는 직접 실행되지 않는다. 오히려 Function Group안의 Function Module이 호출된다면, 메모리에 로드(올라간다는 의미)되지는 한다. Function Group에 속해있는 모든 Function Module은 하나의 Function Module이 호출된다 하더라고 그룹전체가 메모리에 올라간다는 의미이다. 이러한 이유로, Function Group안에 여러개의 Function Module을 정의하더라도, 같은 그룹안에는 연관된 함수를 유지, 보수하는 것을 권유한다.

다음 장에서는 Function Module을 생성하는 것부터 차근차근 설명해보도록 하겠다.

반응형