본문 바로가기

SAP ABAP 개발 및 설명/SAP Function Module

Function Module(함수) 생성 및 Tab 설명


Function Module(함수) 생성


Function Group을 생성했다면 SE80과 SE37 두 곳에서 Function Module을 생성할 수 있다.

SE80에서 Function Module 생성
SE37에서 Function Module 생성
Function Module 생성시 Group 및 Des 입력

Function Module 명 + Funciton Group 명 + 단문(Description)을 입력하면 Function Module 생성이 완료된다.
완료되면 Function Module Editor 화면이 나타난다.


Funciotn Module Editor


Function Module Editor 화면

Funciton Module Editor에는 7개의 tab이 존재한다.

1. Attribute
2. Import
3. Export
4. Changing
5. Tables
6. Exceptions
7. Source Code

각 Tab에 대해서 설명을 하자면 다음과 같다.


1. Attribute - 속성


Attribute에서 가장 중요한 세팅은 Processing Type을 설정하는 것이다. 이곳에서 내가 만들 Function Module을 Normal Function Module, Remoted-Enabled Module, Update Module 중 어떤 것으로 만들지를 설정할 수 있다. 디폴트로는 Normal Function Module로 설정되어 있다,

Normal Function Module은 SAP 시스템 안의 어떠한 ABAP 프로그램에서 호출이 가능하다. Remote-enabled Function Module은 내부 뿐만 아니라 외부(remote system)에서도 호출 가능하다. 이러한 종류의 함수 유형은 SAP 시스템 간의 상호작용 혹은 SAP 시스템과 외부 시스템과의 상호작용에 도움을 준다. Update Modules는 updating 동안 사용한다.(이 것은 추후 LUW를 다루면서 다시 설명하겠다)

가장 많이 사용하는 것이 Normal Function Module, Remote-enabled Function Module 이며 두 가지의 차이점은 외부에서 호출되어 사용될 수있냐의 유무 일 것이다. 개발자적인 관점에서 호출뿐만 아니라 두 유형의 차이점에는 Pass Value를 파라미터 설정 단계에서 클릭해줘야하는지의 차이도 있다.(이것은 Parameter Interface에서 다시 설명하도록 하겠다)

또한 우측 General Data는 따로 설정해주어야하는 것은 없지만, 실제 이 Function Module에 대한 정보를 가지고 있다.
생성자와 변경자, 생성일자, 생성된 클래스, 그리고 어떠한 프로그램(Function Group)에서 어떠한 Include 문으로 존재하는 지 확인 할 수 있다. 이 내용에 대해서 궁금하다면 하기 링크를 찾아보면 된다.

Attirbutes 탭


2. Import 


Import Tab에서는 프로그램에서 호출 될 때에 입력될 모든 파라미터(parameter)들을 선언하는 곳이다.
Import 파라미터는 Function Module안에서 바뀔 수 없다. 아래 예시를 보면 매개변수이름(Parameter Name) 컬럼은, 개발자가 사용할 입력될 파라미터들의 이름을 정하는 곳이다. Typing 탭에선, Type 혹은 Type Ref To를 사용하여 사용할 매개변수(Parameter)의 유형, 형식을 설정하는 곳이다. 세 번째 컬럼인 참조유형(Associated Type)에선, ABAP Data Dictionary(SE11에서 확인 가능한 아밥 오브젝트)에서 정의된 Data Type을 참조로 사용할 수 있다. 기본 값(Default Value) 컬럼에서는, 어떠한 프로그램에서 Function Module이 호출 될 때, 따로 값을 입력하지 않는다면 자동적으로 어떤 값을 사용할지 설정할  수 있는 곳이다. 선택(Optional) 칼럼은 체크박스로서 체크표시가 되면, 해당 파라미터(Parameter)의 값을 필수가 아닌 옵션값으로 설정할 수 있다. Pass Value(Pass by Value) 컬럼에서는 체크가 된다면 파라미터의 값을 value로서 전달하겠다는 의미이다.(체크를 안한다면 Pass by Reference로 전달하겠다는 의미). Short Text(단문)과 Long Text 컬럼을 통해 해당 파라미터들을 다른 개발자들에게 설명할 수 있다. 

IMPORT 탭


3. Export


당신은 모든 Export 탭에서 호출되는 프로그램에 내보내질 모든 파라미터(Parameters)을 정의할 수 있다. Default Value와 Optional 컬럼을 제외하면 Import 탭과 동일하다. 이러한 파라미터(Parameter)들은 Funciton Module안에서 채워지고(Source Code를 통해), 호출한 프로그램으로 전달한다. 프로그램은 Export Parameter를 통해 값을 전달받는 것이지, 어떠한 값들도 Export Parameter를 통해 프로그램으로 전달 할 수는 없다.

EXPORT 탭


4. Changing


Chaning Parameter(매개변수)는 Importing Parameter과 Exporting Parameter 둘 다 사용 가능하다. 즉, 이 파라미터를 통하여 값을 입력하고 내보낼 수 있는 모든 역할 을 할 수 있다. 그렇기 때문에 Pass Value에 값을 찍었더라도, 값이 안바뀌는 Import Parameter와 달리, Chainging Parameter는 입력값을 후 처리하여 다른 값을 내보낼 수 있다. Changing Parameter의 탭의 모든 컬럼은 Import Tab과 동일하다.

CHANIGING 탭


5. Tables


Tables 탭은 Internal Table(인터널 테이블)을 정의하는데 사용한다. 그러나, 이 Tables를 정의하는 것은 다소 구식(obsolete)이기 때문에 Internal Table의 정의를 Import, Export, Changing 탭에서 정의하는 것을 추천한다. Tables 탭에서는 구조나 DB 테이블을 Like를 써서 정의해야 한다. 이렇게 생성된 Internal Table은 Souce Code에서 Header Line(헤더라인)이 있는 형식으로 만들어진다. 그러나, Import, Export, Changing 탭에서 인터널 테이블을 정의하기 위해선, 파라미터에 Table Type을 사용하여 Type로 써서 구체화해야한다.


6. Exceptions


Exception Tab에서는, Function Module에서 발생하는 Exceptions들을 유지보수 할 수 있다. 소위, 에러라고 불리우는 것들을 Exception이라고 생각하면 된다. Exception이 발생한다면, Function Module은 이후에 소스코드를 진행하지 않고 그 순간 종료된다. 이러한 관점에서, 통제(Control)은 Function Module에서 호출한 프로그램으로 돌아오고, 시스템 필드 SY-SUBRC는 Function Module에서 설정한 Exception Number로 설정할 것이다. SY-SUBRC 의 값은 호출한 프로그램에서 에러 에러 핸들링(Error Handling)을 적합하게 하기 위해 이용되기도 한다. 개발자는 Source Code에서 RAISE라는 키워드를 통해 Exception을 발생시킬 수 있다. Exception을 유지보수하기 위해선, Exception 탭에서 Exception 칼럼에서 이름을 정하고, Short Text(단문)와 Long Text 칼럼을 통해 추가적인 정보를 입력할 수 있다.

Exception 탭
파일업로드시 많이 사용하는 GUI_UPLOAD의 Exception 예시

 


7. Source Code


Source Code 탭에서는, FUNCTION ~ ENDFUNCITON이라는 블럭안에서 Function Module을 위한 ABAP Code를 작성할 수 있다.  아래 예시를 보면, Importing Parameter인 IV_MATNR(자재코드), IV_SPRAS(언어)를 사용해서, EV_MAKTX(자재명)을 가져오는 OPEN SQL문이 Source Code에 작성되어있다. 그리고 해당 SQL문이 정상적으로 수행되지 않았다면(결과가 나타나지 않았다면) RAISE로 Exception까지 처리하도록 구현하였다.

소스코드를 다 작성하였다면, 반드시 활성화를 시켜야한다. 활성화(Active)동안 시스템은 즉시, 부정확한 오브젝트들이 있다면 알려줄 것이다. 그리고 이 함수 실행에 에러가 발생한다면, 우리가 처음으로 만들었던 Function Group은 정상적으로 불리되어서 활성화되지않는다.

소스코드 예시


정리(Summary)


이번 글을 통해 Function Module을 생성하는 방법과, Function Module을 Editor에서 7개의 탭을 통해 어떻게 수정할 수 있는지를 알 수 있었다. 다음글을 통해서는 실제 Function Module을 테스트하는 방법과 프로그램에서 호출하는 방법에 대해서 작성해보도록 하겠다.

궁금하신 사항은 댓글, 쪽지를 통해 질문주시면 답변드리도록 하겠습니다.
해당 글이 도움이 되었스면 좋겠습니다.

반응형

'SAP ABAP 개발 및 설명 > SAP Function Module' 카테고리의 다른 글

Function Module 호출 및 예시  (0) 2022.12.29
Function Group 생성 및 기본 구조  (0) 2022.12.23
Function Module 개요  (0) 2022.12.20
Function Builder 개요  (0) 2022.10.03