ABAP의 모듈화: 매크로, 서브루틴 및 기능 모듈
소스 코드를 모듈화할 때 일련의 ABAP 문을 모듈에 배치합니다. 그런 다음 기본 프로그램에 모든 명령문을 배치하는 대신 모듈을 호출하기만 하면 됩니다. 프로그램이 생성되면 모듈화 단위의 소스 코드가 실제로 기본 프로그램에 물리적으로 존재하는 것처럼 처리됩니다.
모듈화의 필요성
- 프로그램의 구조를 개선합니다.
- 코드를 읽기 쉽다
- 코드 유지 관리가 용이함
- 중복을 피하고 코드 재사용을 촉진합니다.
다양한 모듈화 기술
- 매크로 사용
- 포함 파일 사용
- 서브루틴
- 기능 모듈
각각을 자세히 살펴보겠습니다.
SAP- ABAP 매크로
프로그램에서 동일한 명령문 세트를 두 번 이상 재사용하려는 경우 해당 명령문을 매크로에 포함시킬 수 있습니다.
매크로는 정의된 프로그램 내에서만 사용할 수 있으며, 정의된 부분 다음에 나오는 프로그램 줄에서만 호출할 수 있습니다.
매크로는 긴 계산이나 복잡한 WRITE 문에 유용할 수 있습니다.
통사론
DEFINE <macro_name> 'Macro Statements END-OF-DEFINITION
매크로는 매개변수를 사용할 수 있습니다. &N 여기서 N = 1,2,3…
예:-
DATA: number1 TYPE I VALUE 1. DEFINE increment. ADD 1 to &1. WRITE &1. END-OF-DEFINITION. Increment number1. WRITE number1.
출력 : 2
프로그램 포함
포함 프로그램은 소스 코드를 모듈화하는 데만 사용되며 매개변수 인터페이스가 없습니다.
포함 프로그램을 사용하면 다른 프로그램에서 동일한 소스 코드를 사용할 수 있습니다. 다른 프로그램에서 사용하려는 긴 데이터 선언이 있는 경우 유용할 수 있습니다.
통사론
Include <include program Name>
참고 사항
- 포함 프로그램은 자신을 호출할 수 없습니다.
- 포함 프로그램에는 완전한 문이 포함되어야 합니다.
예:
INCLUDE ZILX0004. WRITE: / 'User', SY-UNAME,/ 'Date', SY-DATUM. ================================ PROGRAM ZRPM0001. INCLUDE ZILX0004.
서브루틴
서브루틴은 임의의 위치에서 정의할 수 있는 프로시저입니다. ABAP 프로그램 그리고 모든 프로그램에서 호출합니다. 서브루틴은 일반적으로 내부적으로 호출됩니다. 즉, 로컬에서 자주 사용되는 코드나 알고리즘 섹션을 포함합니다. 함수를 시스템 전체에서 재사용할 수 있게 하려면 함수 모듈을 사용합니다.
통사론-
FORM <Subroutine> [<pass>]. <Statement block>. ENDFORM.
= 서브루틴 이름
= 전달되는 매개변수
서브루틴의 종류
- 내부의
- 동일한 프로그램에 정의된 서브루틴이 호출됩니다.
- 기본 ABAP/4 프로그램에 선언된 모든 데이터 개체에 액세스할 수 있습니다.
- 외부
- 호출되는 프로그램 외부에 정의된 서브루틴입니다.
- 다음을 사용해야 합니다. 옵션을 선택하거나 메모리의 공통 부분에 데이터 개체를 선언합니다.
서브루틴 호출
내부 서브루틴
PERFORM <subroutine> [<pass>]
= 서브루틴 이름
= 전달되는 매개변수
메인 프로그램에 선언된 데이터는 자동으로 사용 가능합니다.
외부 서브루틴
PERFORM <subroutine>(<Program>) [<pass>]. PERFORM <subroutine> (<Program>) [<pass>] [IF FOUND]. PERFORM (<subroutine>) IN PROGRAM (<Program>) [<pass>] [IF FOUND]. PERFORM <index> OF <subroutine1> <subroutine2> <subroutine3> [<pass>].
참고 사항
- 하위 루틴에서는 중첩된 호출이 허용됩니다(예: FORM … ENDFORM 내의 PERFORM).
- 재귀 호출도 가능합니다.
- 로컬 데이터를 정의하려면 FORM 뒤에 DATA 문을 사용하세요. 서브루틴을 입력할 때마다 데이터가 (초기값으로) 다시 생성되고 마지막에(스택에서) 해제됩니다.
- 서브루틴 내에서 사용되는 전역 데이터를 정의하려면 FORM 다음에 LOCAL 문을 사용하십시오. 값은 서브루틴에 들어갈 때 저장되고 마지막에(스택에서) 해제됩니다.
기능 모듈
기능 모듈은 누구나 사용할 수 있는 범용 ABAP/4 루틴입니다. 실제로 사용할 수 있는 표준 기능 모듈이 많이 있습니다.
기능 모듈은 기능 그룹(논리적으로 관련된 기능의 모음)으로 구성됩니다. 함수 모듈은 항상 함수 그룹에 속합니다.
통사론-
FUNCTION <function module> <Statements> ENDFUNCTION.
기능 모듈과 관련된 중요 정보
- 행정실
- 매개변수 가져오기/변경/내보내기.
- 테이블 매개변수/예외.
- 문서
- 소스코드 – L U01 . 기능 그룹입니다
- 글로벌 데이터 – L TOP .기능 그룹에 대한 글로벌 데이터 - 기능 그룹의 기능 모듈 전반에 걸쳐 액세스 가능합니다.
- 주요 프로그램 – SAP엘 . 해당 기능 그룹에 대한 모든 포함 파일 목록을 포함합니다.
함수 모듈 호출
함수 모듈을 호출하려면 CALL FUNCTION 문을 사용하십시오.
CALL FUNCTION <module> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [ERROR_MESSAGE = r E] [OTHERS = ro]].
기능 그룹
기능 그룹은 기능 모듈의 컨테이너입니다. 실제로 표준 기능 그룹이 많이 있습니다.
기능 그룹의 모든 기능 모듈은 그룹의 글로벌 데이터에 액세스할 수 있습니다.
실행 가능한 프로그램(유형 1)과 유사하며 모듈 풀 (M 유형), 기능 그룹에는 화면, 선택 화면 및 목록이 포함될 수 있습니다.
참고 사항
- 기능 그룹은 실행할 수 없습니다.
- 기능 그룹의 이름은 최대 26자까지 가능합니다.
- 기능 그룹이나 기능 모듈을 생성하면 메인 프로그램과 포함 프로그램이 자동으로 생성됩니다.
- 기능 그룹은 데이터를 캡슐화합니다.
기능 그룹을 만드는 방법
- 트랜잭션 SE80으로 이동합니다.
- 드롭다운에서 프로그램을 선택합니다.
- 생성하고자 하는 Function Group의 이름을 적어주세요. 일반적으로 사용자가 만든 기능 그룹은 “Z”로 시작합니다. 예 – . Enter 키를 누르세요.
- 사용자가 TOP 포함 생성 옵션을 선택한 경우 기본적으로 TOP 포함이 생성됩니다.
기능 모듈을 생성하는 방법
- 기능 그룹(예: "ZCAL")을 만듭니다.
- 기능 모듈을 생성하고 (기능 그룹, 애플리케이션, 짧은 텍스트 및 프로세스 유형) 및 저장과 같은 속성을 설정합니다.
- 포함 파일 “LZCALU01”에는 첫 번째 기능 모듈의 소스 코드가 있습니다.
- 포함 파일 "LZCALTOP"에는 전역 데이터가 있습니다.
- 주요 프로그램 “SAPLZCAL”에는 다음이 포함됩니다.
- 글로벌 데이터에는 "LZCALTOP" 파일이 포함됩니다.
- 기능 모듈에는 "LZCALUXX" 파일이 포함됩니다.
- 사용자 정의 포함 파일 "LZCALF..", "LZCALO.." 및 "LZCALI.."
- 인터페이스 매개변수 및 예외 정의
- 소스 코드 작성
- 기능 모듈 활성화
- 기능 모듈 테스트 - 단일 테스트 및 디버깅
- 기능 모듈 문서화 및 릴리스
이것이 ABAP의 모듈화에 대한 전부입니다.