[SAP] SUBROUTINE_PARAMETER

이안·2024년 2월 19일

SAP

목록 보기
19/30
post-thumbnail

PERFORM

ABAP프로그램의 SUBROUTINE : PERFORM, FUNCTION MODULE

PERFORM은 FORM ~ ENDFORM으로 스크립트의 모듈화, 재사용, 구조화를 주 목적으로 함.

PERFORM [FORM_NAME]. "Perform구문을 통해 Subroutine 호출 시
FORM [FORM_NAEM]. "Form구문 수행
***
ENDFORM.

1. PARAMETER

Subroutine을 호출하는 구문과 호출받는 구문 사이에 주고받는 값

1) Actual Parameter (넘겨주는 변수) : Subroutine을 호출할 때 사용되는 ‘파라미터’
2) Formal Parameter (받는는 변수) : Subroutine에서 사용되는 ‘파라미터’

1) FORM [FORM_NAME] USING P1 TYPE ‘TYPE’.

PERFORM GET_DATA USING GV_ZCODE GV_ZKNAME. "ACTUAL PARAMETER

FORM GET_DATA USING P_ZCODE P_ZKNAME. "FORMAL PARAMETER
***
ENDFORM.

2) FORM [FORM_NAME] USING VALUE(P2) TYPE ‘TYPE’.

PERFORM GET_DATA USING GV_ZCODE GV_ZKNAME.

FORM GET_DATA USING VALUE(P_ZCODE) P_ZKNAME. "VALUE()값은 전달하지 않음
***
ENDFORM.

3) FORM [FORM_NAME] CHANGING P3 TYPE ‘TYPE’.

PERFORM GET_DATA USING GV_ZCODE "USING : 데이터를 전달
				 CHANGING GV_ZKNAME. "CHANGING : 데이터를 전달하고 변경

FORM GET_DATA USING P_ZCODE 
			  CHANGING P_ZKNAME. 
***
ENDFORM.

FORM구문에서 VALUE를 사용하지 않으면 USING과 CHANGING의 기능은 같지만 가독성 차원으로 사용/변경이라는 것을 명시적으로 표현하기 위해 구분하여 사용

4) FORM [FORM_NAME] CHANGING VALUE(P4) TYPE ‘TYPE’.

PERFORM GET_DATA USING GV_ZCODE "USING : 데이터를 전달
				 CHANGING GV_ZKNAME. "CHANGING : 데이터를 전달하고 변경

FORM GET_DATA USING P_ZCODE 
			  CHANGING VALUE(P_ZKNAME). 
***
ENDFORM.

2. PARAMETER TYPE 정의

  • FORM구문 내의 Formal Parameter는 TYPE과 LIKE구문을 이용해 모든 ABAP데이터 타입을 사용
  • 명시적으로 지정하지 않으면 Generic TYPE으로 정의되고 Actual Parameter의 기술적 속성을 상속받음
PERFORM GET_DATA USING GV_ZCODE 
				 CHANGING GV_ZKNAME. 

* 1번 방법
FORM GET_DATA USING P_ZCODE TYPE C
			  CHANGING P_ZKNAME TYPE C. 
* 2번 방법
FORM GET_DATA USING P_ZCODE LIKE GV_ZCODE
			  CHANGING P_ZKNAME LIKE GV_ZKNAME.
ENDFORM.

3. PARAMETER 구조체

  • FORM구문 내의 Formal Parameter는 ABAP DICTIONARY내, STRUCTURE구문을 이용해 구조체 타입 정의
  • 구조체 타입의 ‘파라미터’로 전달 시, 타입을 명시하지 않으면 ERROR 발생
PERFORM GET_DATA USING GS_STUDENT.

FORM GET_DATA USING PS_STUDENT STRUCTURE GS_STUDENT. "반드시 명시 필요

ENDFORM.

4. PARAMETER 인터널테이블

  • FORM구문 내의 Formal Parameter는 ABAP DICTIONARY내, 인터널 테이블을 이용해 타입 정의
  • 인터널테이블 타입의 ‘파라미터’로 전달 시, 타입을 명시하지 않으면 ERROR 발생
PERFORM GET_DATA USING GS_STUDENT
					   GT_STUDENT.

* 1번 방법
FORM GET_DATA USING PS_STUDENT LIKE GS_STUDENT
					PT_STUDENT LIKE GT_STUDNET. "반드시 명시 필요

* 2번 방법
FORM GET_DATA USING PS_STUDENT LIKE GS_STUDENT
					PT_STUDENT TYPE STANDARD TABLE. "권장방법

ENDFORM.

0개의 댓글