쌓고 쌓다
[ABAP] Function Module 생성 및 호출, Function Group 본문
Function Group
Function Module을 만들때
Function Group이 필요하다.
Function Group은 Function Module들을 모아두는 곳이다.
특정 Function Module을 호출할때
해당 Function Module이 포함된 Function Group의 모듈들이 모두 올라온다.
Function Group에 너무 많은 Function Module을 넣지 않도록 하자.
또한 실행하는 모듈의 코드에 문제가 없어도
다른 모듈의 에러로인해 고생할 수도 있다고 한다..
Function Group 생성
방법 1
T-code : SE37인 Function Builder에서 Function Group을 생성할 수 있다.
방법 2
T-code : SE80인 Object Navigator에서 Function Group을 생성할 수 있다.
패키지 우클릭 - Create - Function Group
ZFUNC_GROUP_F18_EX 이름으로 펑션 그룹 생성
패키지에 Function Groups가 생긴다.
펑션 그룹이 Inactive 상태이므로 Active 해주자.
펑션 그룹이 Inactive 상태이면
펑션 그룹 내 펑션 모듈도 Active가 안된다.
우클릭하여 Activate를 할 수 있다.
Includes에 TOP과 UXX가 있다.
TOP에 선언된 변수나 상수는 글로벌 변수가 된다.
UXX에는 펑션 모듈들이 들어간다.
펑션 이름은 Z나 Y로 시작해야한다.
Function Module 생성
2개의 정수의 합을 반환하는 Function Module을 구현해보자.
만약 결과가 100을 넘어간다면 예외도 반환하는 Exception도 작성해보자.
T-code : se37 에서 Function Builder를 통해 Function Moudle 을 생성할 수 있다.
"Z_ADD_NUMBER_F18"을 Create
생성한 Function Module을 넣을 Function Group을 작성한다.
Import
Import 탭에서 입력 받을 파라미터를 매개변수를 설정한다.
함수 내부에서만 사용되며, 값이 변경되지 않는다.
Call By Value 방식으로 전달된다.
Export
Export 탭에서 결과 값을 반환하는 매개변수를 설정한다.
Call By Value 방식으로 전달된다.
Changing
Changing 파라미터도 예제로 사용해보기 위해서 CV_TEXT를 넣었다.
Function Module로 넘어온 STRING 타입에 값을 변경해보자.
Tables
Changing도 여러개의 결과 값을 반환해야하는 경우 Internal table을 받아 변경할 수 있다.
Tables도 Call By Reference 방식이므로 Tables와 Changing의 기능 차이는 없다.
Exceptions
Function Module에서 Exception을 반환할 수 있다.
결과값이 100을 넘어섰을때 발생할 Exception인 RESULT_EXCEED를 작성해봤다.
Source Code
Source Code내에 변수 선언 또한 가능하다.
입력으로 받은 두개의 값을 결과값으로 반환하며
결과값이 100 이상인 경우 Exception을 발생시켰다.
CHANGING을 확인하기 위해 CV_TEXT에 'CHANGING' 값을 넣는 코드를 작성했다.
해당 아이콘을 눌러 생성한 Function Module을 테스트 실행해볼 수 도 있다.
Function Moudule 호출
방법 1 - 드래그 앤 드롭
Function Group에 Module을 소스 코드에 드래그 앤 드롭으로 가져와서 호출할 수 있다.
예시로 10과 20의 값 결과와 CHANGING 파라미터로 넘긴 변수의 값 변화를 보자.
10과 20을 더한 결과 30.
CHANGING 파라미터로 넘긴 변수에 값이 변경된 상태를 확인할 수 있다.
방법 2 - Pattern
메뉴바에 Pattern 버튼을 이용해 호출 할 수 있다.
Function Module명을 작성해주자.
결과값이 100을 넘게 매개변수 두개를 넘겨줘보자.
Exception 발생으로
IF SY-SUBRC = 0.
~
ELSE.
WRITE: 'Exception 발생'
ENDIF.
에서
ELSE 구문이 실행됨을 볼 수 있다.
'SAP > ABAP' 카테고리의 다른 글
[ABAP] Fixed Value 생성 및 값 가져오기 (0) | 2025.02.15 |
---|---|
[ABAP] Instance Constructor (클래스 생성자) (0) | 2025.02.11 |
[ABAP] Functional Method (0) | 2025.02.10 |
[ABAP] COLLECT 사용법 (0) | 2025.02.10 |
[ABAP] Database View (0) | 2025.02.08 |