본문 바로가기

SAP ABAP 개발 및 설명/SAP Function Module

Function Group 생성 및 기본 구조


Function Group 생성 및 기본 구조


1. Function Group 생성


Function Group 및 Function Module을 만드는 방법은 두 가지가 있다.

1) SE80을 이용하는 방법
2) SE37을 이용하는 방법

1) SE80을 이용하는 방법

SE80에서 해당 Function Group을 만들 개발 클래스를 선택 후 우클릭 후 Function Group을 선택한다.

SE80에서 Function Group 생성
Function Group 명과 Description 입력
생성된 Fucntion Group

 

1) SE37을 이용하는 방법

SE37에서 Goto -> Function Group  선택 후 Create Group을 선택 후 개발클래스 및 CTS를 입력한다.

SE37에서 Funciton Group 만들기


2. Function Group 구조


Function Group 생성 후 SE80 화면

SE80에서 Function Group을 더블클릭 한 후 화살표(선택 : F2)를 클릭하면 하기 화면을 확인할 수 있다.

생성한 Function Group 풀

기본적으로 Function Group을 만들면 SAPZL가 접두사로 입력되어 Function Pool이 생성된다.

Function Group 네이밍룰 : SAPZL + Function Group명

이 SAPZLEX_FUNTION_GP라는 메인 프로그램은 아무것도 포함하지 않고 오로지 다음과 같은 INCLUDE을 포함한다.

1) L + Function Group명 +TOP
-> 하기 사진과 같이 FUNCTION-POOL이라는 구문을 포함하고 전체 Function Group에 사용가는 한 전역 데이터 선언된 것을 포함한다. (하기 사진의 GV_BUKRS는 Function Group안의 어떠한 Function Module에서도 사용 가능하다)

Function Group의 TOP 문 예시

2) L + Function Group명 + UXX
-> UXX에서는 L + Function Group 명 + U01 순서로 생기는 인클루드 문을 포함한다. 이 인클루드 문은 각 Function Module을 포함하는 것이며, 첫번째 생성한 Function Module은 U01, 두번째는 U02 순서대로 만들어진다.
(단, 3개의 Function Module을 만들어 U01, U02, U03 이 생성되었을 때, U02를 삭제하고 네 번째 신규 Function Module을만들지어도, 빈 숫자인 U02로 만들어진다.)

Function Group의 UXX 문 예시

3) L + Function Group명 + FXX
-> Function Module에서 사용한 Subroutine(서브루틴)을 담는 Include문으로, 개발자의 의도에 따라 F01~FXX 등 원하는 번호에 채번이 가능하다. 이 Subroutine은 FXX문에 선언되어 있으면, 다른 Function Module 어디서도 PERFORM문을 통해 호출하여 사용할 수 있다.( 단, 공통 기능을 하는 Subroutine은 한 곳에 모아두고 유지보수 하기 편하게 사용하고, 단지 구문 정리, 로직 정리를 위해 사용한 Subroutine들은 유지보수가 용이하게 각 Function Module 당 하나의 FXX Include 문을 선언하는 것이 좋다고 생각한다)

Function Group의 FXX 문 예시

모든 Function Group안의 Function Module은 Function Group의 전역 데이터 영역에서 선언된 데이터 선언부에 접근이 가능하다(TOP문에서 선언된). 이러한 이유로, 같은 데이터를 사용하는 모든 Function Module을 하나의 Function Group에 위취시키는 것이 각 Function Module을 위한 Function Group을 만드는 것 보다 좋다. 예를 들어, 만약 너가 개발하는 Function Module 몇 개가 모두 하나의 같은 인터널 테이블을 사용한다면, 너는 Function Module 모두를 하나의 Function Group에 넣고 인터널 테이블을 전역 데이터로 선언하면 된다.

Function Group은 Executable Program과 Module Pool과 같이, 스크린을 가질 수 있다. 스크린의 유형에 따라, Function Group의 메인프로그램 안에서 Dialog Module과 Event Block을 통해서 사용자가 값을 입력할 수 있도록 할 수 있다.
(예시로, L사의 그룹 사중 한 곳에서 Function Group에서 화면을 만들어, SAP GUI 로그인시 SAP ID, PW입력하는 것뿐만 아니라 화면을 구현한 경험이 있음)

데이터 선언은 FUNCTION ~ ENDFUNCTION 구문 사이로 구성된 영역(하나의 Function Module) 에서 이루어 졌다면 그 해당 Function Module에서 사용하는 로컬(Local) 변수를 선언한 것이다. 이러한 데이터 선언은 오직 그 데이터가 선언된 해당 Function Module에서 접근가능하고 유효하다.

반응형