Function과 Subroutine의 차이
- Subroutine이 Local Modularization이라고 한다면 Function은 Global Mudularization이라고 할 수 있다.
- 차이점 3가지
1. Function Module은 Function Group이라고 불리는 POOL에 속해있어야 한다.
2. Function Module은 예외 처리 기능을 제공하여 에러가 발생하면 예외 상황을 호출한 프로그램에 전달할 수 있다.
3. Function Module은 호출 프로그램에 관계없이 Stand-alone 모드에서 테스트할 수 있다.
Function Module
- Function Module은 중앙 라이브러리(R/3 Repository)에 저장되는 특별한 Global 서브루틴이다. R/3 시스템에는 기본적으로 많은 Function이 미리 만들어져 제공되고 있다.
- Function Module 인터페이스 요소
- Import Parameters : Function Module에전달하는 값이며 선택 사항이다.
- Export Parameters : Function Module로부터 ABAP 프로그램에 전달받는 값이며 선택 사항이다.
- Changing Parameters : Function Module에 값을 넘기고, 그 값을 바꿀 수 있다.(객체 자체를 넘긴다)
- Tables : 인터널 테이블을 Function Module에 전달하고 받을 수 있다.
- Exceptions : 에러에 대한 정보를 제공한다.
Function Group
- 여러 Function Module을 모아 놓은 Container.
- Function 호출 시, 시스템은 호출한 프로그램의 Internal 세션 안으로 Function Group 전체를 Load한다. 즉, Function Group 내에서 데이터를 공유하고 스크린을 생성해서 호출하고 PERFORM 서브루틴 등을 공유할 수 있도록 한다. 주의해야 할 점은 Function 하나에 에러가 발생하면 동일 Group 내의 모든 Function이 실행되지 않는다는 것이다.
Function Group 생성
- 생성하면 L[이름]TOP, L[이름]UXX 2개의 Include를 포함하는 Main프로그램이 자동으로 생성된다.
Function Module
Attributes
- Processsing Type
1. Normal Function Module : 일반적으로 사용되는 Function Module 형태이다.
2. Remote-enbled module : 동일 시스템에서 비동기적으로 호출되거나 다른 시스템(레거시 등)으로부터 호출될 때 사용. 이 설정으로 된 함수는 RFC라고 불린다.
3. 일괄적으로 데이터베이스를 변경하기 위하여 추가적인 Function을 포함하는 형태이다. SAP Bundling 기술 중 하나.
- General Data
1. Edit Lock : 다른 개발자의 변경을 막기 위함
2. Global : 체크 시 Function Module 내의 변수를 Function Group의 Global 데이터로 선언하게 된다.
Import
1. Type : 파라미터 타입 유형 지정, TYPE, LIKE, TYPE REF TO
2. Associated Type : 데이터 타입이나 참조할 특정 테이블의 필드를 지정
3. Default Value : 파라미터의 초깃값을 설정
4. Optional : 파라미터를 선택 사항으로 설정
5. Passing Value : 파라미터를 전달받을 때 새로운 메모리에 값을 복사하여 작업한다.
Export
- 호출한 프로그램으로 값을 전달하는 목적
Changing
- 호출한 ABAP 프로그램과 Parameter를 동시에 주고받을 수 있다.
Tables
- 인터널 테이블의 내용을 주고 받을 수 있다.
※위 파라미터들은 서브루틴과 같은 논리를 가지므로 자세히 설명 X
Exceptions
- Function Module이 실행되는 동안 발생하는 예외사항을 처리할 수 있다.
Function 모듈 작성과 사용
- 패턴 버턴을 클릭하여 소스코드 양식을 생성할 수 있다.
- RAISE DIV_ZERO 구문과 EXIT 명령어로 예외처리를 하고 있다.
RFC(Remote Function Call)
- SAP 밖의 시스템(레거시 시스템)에서 SAP으로, 혹은 그 반대로 데이터를 주고 받아야 한다면 SAP RFC를 이용해서 통신하는 것도 한 방법이다. 다양한 언어로 개발된 레거시 시스템과 SAP를 인터페이스하려면 RFC만으로는 구현하기가 힘들어 WEBMETHODS를 이용한다.
- Webmethods는 인터페이스 중계 서버 같은 걸 생각하면 된다.
- 내가 일하는 회사 시스템은 자바로 백엔드를 구현한 웹사이트가 SAP ECC 6.0 버전의 시스템을 마치 데이터베이스처럼 사용하고 있다. WAS에서 JCO를 이용해 RFC를 호출한다. 단점이라고 하면 비즈니스 로직을 자바 백엔드에서도 구현할 수 있고 SAP에서도 구현할 수 있기 때문에 명확한 가이드라인이 없으면 개발자 본인이 익숙한 곳에서 비즈니스 로직을 만들어 버리는 경우가 있어 유지보수가 어려워진다는 점이다. 사내 다른 서버(메일 서버, 파일 서버 등)과 통신할 때는 SAP에서 구현하는 것보다 자바에서 구현하는 편하기 때문에 JAVA에서 타 서비스를 호출하는 경우가 잦다.
- SAP을 공부하다보면 Web Service, SOA, Webmothods, WSDL, Solman, ADS 등 보편적으로 쓰이는 용어를 SAP에 특화된 서비스를 칭하는 데 쓰거나 아예 SAP에서만 쓰이는 용어를 쓰는 경우가 종종 보인다. 특히 외부와 통신하는 다양한 개념들에 대해서 그런 경우가 많은데 인터넷에 자세한 문서가 없어 용어에 대한 개념이 잡히지 않아 공부하기가 어렵다. 그리고 이 개념들이 HANA 버전에서도 유효한 것인지 직접 보지 않고는 알 수 없을 것 같다. - 잠깐 푸념..
'SAP&ABAP' 카테고리의 다른 글
EASY ABAP - 8-2. Internal Table(2) (1) | 2024.04.09 |
---|---|
EASY ABAP - 8-1. Internal Table(1) (0) | 2024.04.08 |
EASY ABAP - 6. Subroutine (0) | 2024.04.08 |
EASY ABAP - 5. SQL (1) | 2024.04.05 |
EASY ABAP - 4-2. Data Type(2) (0) | 2024.04.04 |