본문 바로가기

SAP SCRIPT,SKILL

Modularization(서브 루틴 펑션)

Subroutine

- Form으로 시작하여 END FORM으로 종료되는 구문 스크립트의 모듈화 재사용 구조화르 주목적으로 한다.

ABAP 프로그램에서는 Perform 구문을 이용한 서브루튼으로 유사한 기능을 제공 



Perform 구문으로 서브루틴을 호출


Perform Naming Rule 동사 + 목적어 형태로 설정


Subroutine 파라미터 


- 파라미터 서브루틴을 호출하는 구문과 호출받는 구문사이에 주고 받는 값을 의미 

using과 changing 구문으로 파라미터를 주고 받게된다.


Call by value 

넘겨주는 변수와 받는 변수가 물리적으로 다른 메모리영역 

Call by Reference

물리적으로 같은 메모리 여역을 공유하여 넘겨주며 값은 주소 

Call by Value and Result

 변수의 값을 넘겨주고 받는 구문에서 작업을 성공적으로 수행시 변경된 값을 되돌려준다.




Call by Value 


- 예시

DATA : GV_VAL TYPE C LENGTH 20 VALUE 'TEST'.


Perform call USING GV_VAL.


FORM CALL USING P_VAL

   WRITE P_VAL.

ENDFORM.



새로운 메모리에 값을 복사하여 값을 전달받느다.



Call by Reference


- Changing 키워드 사용시 서브루틴에서 전달된 값이 변경이된다.


DATA : gv_val TYPE c LENGTH 30 VALUE ’ Call by reference Test ’ .

WRITE / gv_val.   =>  Call by reference Test

PERFORM call_byvref CHANGING gv_val.

WRITE / gv_val.  =>  Value is changed

FORM call_byvref CHANGING p_val.

p_val = ’ Value is changed ’ .

ENDFORM.



Call by Value and Result


- Changing


DATA : gv_val1 TYPE i VALUE 2.

DATA : gv_va12 TYPE i VALUE 3.

DATA : gv_sum TYPE i.


PERFORM sum_data USING gv_val1 gv_va12

CHANGING gv_sum.

WRITE : / ’ Result is : ’ , GV_SUM.


FORM sum data USING value(p_val1)

  value(p_va12)

CHANGING value(p_sum) .

p_sum = p_val1 + p_val2.


ENDFORM.



파라미터와 구조체


DATA : BEGIN OF GS_STR,

           COL1 VALUE 'A',

           COL2 VALUE 'B',

END OF gs_str.

PERFORM write_data USING gs_str.


FORM write_data USING ps_str STRUCTURE gs_str.

WRITE: ps_str-coll , ps_str-co12.

ENDFORM.



- 구조체를 파라미터로 전달 시 타입을 명시적으로 지정 안할 시 에러 발생


- 필드 심볼로도 가능