ABAP프로그램의 SUBROUTINE : PERFORM, FUNCTION MODULE
PERFORM은 FORM ~ ENDFORM으로 스크립트의 모듈화, 재사용, 구조화를 주 목적으로 함.
PERFORM [FORM_NAME]. "Perform구문을 통해 Subroutine 호출 시
FORM [FORM_NAEM]. "Form구문 수행
***
ENDFORM.
Subroutine을 호출하는 구문과 호출받는 구문 사이에 주고받는 값
1) Actual Parameter (넘겨주는 변수) : Subroutine을 호출할 때 사용되는 ‘파라미터’
2) Formal Parameter (받는는 변수) : Subroutine에서 사용되는 ‘파라미터’
PERFORM GET_DATA USING GV_ZCODE GV_ZKNAME. "ACTUAL PARAMETER
FORM GET_DATA USING P_ZCODE P_ZKNAME. "FORMAL PARAMETER
***
ENDFORM.
PERFORM GET_DATA USING GV_ZCODE GV_ZKNAME.
FORM GET_DATA USING VALUE(P_ZCODE) P_ZKNAME. "VALUE()값은 전달하지 않음
***
ENDFORM.
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의 기능은 같지만 가독성 차원으로 사용/변경이라는 것을 명시적으로 표현하기 위해 구분하여 사용
PERFORM GET_DATA USING GV_ZCODE "USING : 데이터를 전달
CHANGING GV_ZKNAME. "CHANGING : 데이터를 전달하고 변경
FORM GET_DATA USING P_ZCODE
CHANGING VALUE(P_ZKNAME).
***
ENDFORM.
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.
PERFORM GET_DATA USING GS_STUDENT.
FORM GET_DATA USING PS_STUDENT STRUCTURE GS_STUDENT. "반드시 명시 필요
ENDFORM.
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.