- FUNCTION GROUP은 FUNCTION MODULE들을 담고 있는 하나의 컨테이너이다.
- FUNCTION MODULES는 SUB-PROGRAM 즉, 메인 프로그램 내에서 불러서 사용할 수 있는 GLOBAL한 모듈이라고 생각하면 될 것 같다. FUNCTION MODULE을 사용하는 이유는 주로 어떤 특정 LOGIC이 자주 재 사용될 때, 그것들을 모듈화 시켜 필요할 때 마다 어느 프로그램에서든 꺼내 쓸 수 있는 편의성을 제공한다.
- FUNCTION MODULE을 이해하기 쉽도록, 아주 기본적인 FUNCTION MODULE을 만들어보자.
예제1) 덧셈 FUNCTION.
1. FUNCTION MODULE은 SE37이나 본인이 할당하고 싶은 PACKAGE내에서 생성할 수 있다. SE37에서 한번 만들어보자.
우선 FUNCTION GROUP을 만들자. FUNCTION GROUP을 만들고 싶은 패키지를 마우스 오른쪽 클릭 후 FUNCTION GROUP을 만든다.
적당한 이름과 설명을 적고 생성
SE37로 이동. (사실 만들어진 FUNCTION GROUPS을 오른쪽 클릭 후 CREATE 해서 만드는게 편하다) FUNCTION MODULE의 이름을 정하고 CREATE 버튼을 누른다. 위에서 만든 FUNCTION GROUP에 할당 시키고 SHORT TEXT를 작성.
자 지금부터 시작! 이 프로그램은 INTEGER TYPE인 변수 I_NUM1과 I_NUM2을 메인 프로그램으로 부터 받는다. (IMPORT)
이 FUNCTION MODULE에서 모든 작업이 끝나면 O_RESULT를 메인 프로그램으로 보낸다. (EXPORT)
SOURCE CODE 탭으로 이동해서 O_RESULT에 I_NUM1과 I_NUM2의 더한 값을 넣어주도록 하자.
그럼 FUNCTION MODULE 안에서 우리가 할 일은 다 끝났다 (ACTIVE는 필수). 정리하자면, IMPORT에 선언 된 변수들은 메인 프로그램으로부터 받을 것, EXPORT에 선언 된 변수들은 메인 프로그램으로 보낼 것이다. SOURCE CODE에는 LOGIC을 작성하면 되고, SOURCE CODE에서 작성 된 코드들이 다 실행 된 후 FUNCTION은 EXPORT에 선언 된 변수들을 메인 프로그램에 리턴한다.
이제 방금 만든 ZBD212_FUNCT002_SUM을 메인 프로그램에서 불러 사용해보자. 프로그램을 하나 만들고 PATTERN 버튼을 클릭 후, 방금 만든 FUNCTION MODULE이름을 넣고 확인.
이렇게 PATTERN이 제공 되는데 EXPORTING에는 메인 프로그램에서 FUNCTION MODULE로 보낼 변수를 넣어 주고, IMPORTING 에는 우리가 FUNCTION MODULE로부터 리턴 받을 변수를 넣어 주어야 한다. 수정해보자.
* FUNCTION MODULE을 부를 때, 위와 같이 FUNCTION MODULE안에서 선언 된 변수들도 같이 선언하기 위한 셋팅
NUM1, NUM2, RESULT를 변수로 선언하고 ( I_NUM1, I_NUM2, O_RESULT와 각각 타입이 같아야 한다!) 다음과 같이 수정 후, 결과 값을 보자.
NUM1을 1로, NUM2를 2로 지정해서 FUNCTION MODULE로 EXPORTING 했고, FUNCTION MODULE내에서는 NUM1과 NUM2를 각 각 I_NUM1과 I_NUM2로 받아서 더한 후, O_RESULT에 저장했다. 메인 프로그램에서는 IMPORTING에서 O_RESULT에 저장 된 NUM1과 NUM2를 더한 값을 RESULT로 다시 받아서 WRITE명령어로 보여준 결과 1+2=3의 결과를 보여준다.
실제로 이렇게 FUNCTION MODULE을 사용할 일은 없겠지만, FUNCTION MODULE을 만들고 쉽게 이해하기 위해 작성하였다.