[SAP ABAP] Subroutine (서브루틴)

🌼JOYGARDEN·2025년 1월 19일
0

SAP ABAP

목록 보기
10/19

Subroutine ❓
: FORM으로 시작하여 END FORM으로 종료되는 구문을 의미하며, 스크립트의 모듈화, 재사용, 구조화를 주목적으로 한다.

PERFORM sb_ex.

FORM sb_ex . 
	WRITE 'Test'.
ENDFORM.

이렇게 서브루틴을 생성할 수 있다.

Subroutine Parameter

Parameter(파라미터)는 Subroutine을 호출하는 구문과 호출받는 구문 사이에 주고받는 값을 의미한다.
Subroutine 내에서 파라미터는 DATA 구문으로 정의하는 일반적인 Local 변수와 같다.

PERFORM의 USING, CHANGING 구문을 사용하여 파라미터를 선언하며 Subroutine과 그 순서를 같게 지정해야 한다.

PERFORM subr
	USING
      p1
    CHANGING
      p2
      p3
      

FORM subr 
	USING 
      value(p1)   "Call by Value
    CHANGING
      value(p2)   "Call by Value and Result
            p3    "Call by Reference
ENDFORM.

Subroutine은 USING과 CHANGING 구분으로 파라미터를 주고받게 되는데,
3가지 유형으로 분류된다.

  • Call by Value :
    넘겨주는 변수와 받는 변수가 물리적으로 다른 메모리 영역을 가지고 있다.
    -> 결과를 돌려주지 않는 단방향
  • Call by Value and Result :
    변수의 값을 넘겨주고 받는 구문에서 작업을 성공적으로 수행하였을 경우 변경된 값을 되돌려 준다. 물리적으로는 다른 영역을 사용한다.
    -> Call by Value와 같지만 결과는 돌려줌
  • Call by Reference :
    물리적으로 같은 메모리 영역을 공유하고 넘겨주며 값은 주소이다.
    -> 같은 변수를 서브루틴 안에서 다른 이름으로 불러서 두 변수가 같다. (변수의 이름이 늘어나는 방식)

 

Call by Value

Call by Value는 USING 키워드 다음에 파라미터를 사용하고, value 구문으로 완성한다.
value 구문에서 Formal Parameter는 자신의 메모리를 가진다. 서브루틴을 호출할 때 Actual Parameter의 값은 Formal Parameter에 복사된다. 하지만 Formal Parameter의 값이 변경되더라도 Actual Parameter에는 영향을 미치지 않는다.

Call by Value and Result

CHANGING 키워드 다음에 파라미터를 사용하고, value 구문으로 완성한다.
서브루틴이 정상적으로 종료될 경우 Actual Parameter 값이 변경된다.

Call by Reference

CHANGING 키워드 다음에 파라미터를 사용하면, Subroutine에 전달된 파라미터 값이 변경된다.
Subroutine의 Formal Parameter는 자신의 메모리를 가지지 않는다.
Subroutine이 호출되는 동안 Actual Parameter의 주솟값을 가지고 있을 뿐이다.
즉 Subroutine을 호출한 프로그램의 메모리에서 작업하게 된다.

profile
블로그 내용은 Easy ABAP과 SAP에서 교육용으로 제공하는 자료를 참고하였습니다.

0개의 댓글