쌓고 쌓다

[ABAP] Subroutines 본문

SAP/ABAP

[ABAP] Subroutines

승민아 2025. 1. 31. 20:26

Subroutines

서브루틴은 프로그램내에 중복된 코드들을 줄일 수 있으며 유지보수에 용이하다.

단, 서브루틴은 프로그램내에 선언되며

다른 프로그램에서 호출하여 사용할 수 없다.  

 

프로그램을 우클릭하여 서브루틴을 생성할 수 있다.

 

서브 루틴 선언

FORM subroutine_name 
     USING 
     ...
     CHANGING
     ...
ENDFORM.

FORM <name> USING ... CHANGING ... ENDFORM 형태로 선언한다.

 

서브 루틴 호출

PERFORM subroutine_name
        USING
        ...
        CHANGING
        ...
.

PERFROM <name> USING ... CHANGING ... 형태로 호출한다.

 

Actual Parameter, Formal Parameter

메인에서 PERFORM 키워드 이후 넘겨주는 값들을 Actual Parameter

서브루틴 호출부에서 받는 값들을 Formal Parameter라고 한다.

 

USING과 CHANGING

서브 루틴 호출 부분에서 아래와 같이 USING, CHANGING으로 호출을 할 수 있다.

PERFROM <name>
    USING
      A
    CHANGING
      B
      C

위의 USING과 CHANGING은 선언부분에 맞춰 USING, CHANGING 작성하여 넘겨주면 된다.

 

 

서브 루틴의 선언 부분에서도 USING과 CHANGING 키워드를 사용한다.

 

USING VALUE : Call By Value

CHANGING VALUE : Call By Value And Result

CHANGING : Call By Reference

 

Call By Value : 변수에 들어있는 값만 넘긴다.

Call By Value And Result : Formal Parameter에서의 값 변경이 메인 프로그램에서도 이뤄진다.

Call By Reference : 서브루틴으로 변수에 들어 있는 값이 넘어오는게 아니고

변수를 가리키는 포인터를 넘긴다.

 

Call By Value And Result와 Call By Reference 차이

Call by Value and Result는 서브루틴이 종료가 되어져야지 결과값이 리턴된다.

그러나 Call by Reference는 Formal Parameter의 값이 변경되는 순간

actual parameter 값도 바로 변경이 되어진다.

 

No Parameter Subroutines

서브 루틴에서 TOP에 선언된 Global Variable를 이용할 수 도 있다.

 

Paramter Subroutines

 

어떤 이름을 비교하여 파라미터 값을 매칭하고 할당하는 것이 아닌

넘기고 받는 파라미터 순서에 의해 파라미터가 매칭이 된다.

 

Generic Typing

TYPE ANY는 어떠한 타입이 올 수 있는지 명확히 명시하지 않기에

런타임시에 에러가 발생할 수 있다.

 

Exact Typing

TYPE I와 같이 타입을 명시하여 타입이 맞지 않으면

Syntax Error를 발생하여 런타임 에러를 예방할 수 있다.

'SAP > ABAP' 카테고리의 다른 글

[ABAP] Secondary INDEX  (1) 2025.02.03
[ABAP] Foreign Key, Value Table  (0) 2025.02.02
[ABAP] Layout Structure  (0) 2025.01.30
[ABAP] ALV Variant  (0) 2025.01.24
[ABAP] ALV 생성 (Container Control, ALV Grid Control)  (2) 2025.01.22
Comments