
클래스의 정의 부분에서는 METHODS 를 사용하여 인스턴스 메소드를 정의하고 CLASS-METHODS 를 사용하여 정적 메소드를 정의합니다. 메소드의 이름 뒤에 메소드의 서명이 옵니다. 즉, 메소드가 호출자와 교환하는 값 세트와 메소드 중에 발생할 수 있는 예외입니다.
메소드의 서명은 매개변수와 예외로 구성됩니다. 각 매개변수에는 이름과 유형이 있습니다.
ABAP에는 다음과 같은 종류의 매개변수가 있습니다.
- 임포트 매개변수
임포트 매개변수는 메소드에서 호출자로부터 수신하는 값입니다. 메소드에는 임포트 매개변수를 원하는 수만큼 지정할 수 있습니다.
기본적으로 임포트 매개변수는 필수이지만 다음 두 가지 방법으로 이를 선택사항으로 만들 수 있습니다.
- OPTIONAL 추가 요소 사용. 매개변수가 선택사항이고 기본값은 매개변수 유형에 적합한 초기 값임
- DEFAULT <val> 추가 요소 사용. 매개변수가 선택사항이고 기본값은 <val>로 지정한 값임
메소드 내에서 임포트 매개변수를 변경할 수 없습니다. 이를 시도할 경우 구문 오류가 발생합니다.
- 엑스포트 매개변수
엑스포트 매개변수는 메소드에서 리턴되는 결과입니다. 메소드에는 엑스포트 매개변수를 원하는 수만큼 지정할 수 있습니다. 모든 엑스포트 매개변수는 선택사항입니다. 호출 프로그램은 실제로 필요한 값만 사용합니다.
- 변경 매개변수
변경 매개변수는 메소드가 호출자로부터 수신하는 값입니다. 임포트 매개변수와 달리 메소드로 이러한 매개변수 값을 변경할 수 있습니다. 그런 다음 해당 값이 동일한 이름의 호출자에게 리턴됩니다. 메소드에는 변경 매개변수를 원하는 수만큼 지정할 수 있습니다. 변경 매개변수는 기본적으로 필수지만 임포트 매개변수와 같은 방법으로 이를 선택사항으로 만들 수 있습니다.
- 반환 매개변수
리턴 매개변수는 표현식에서 직접 사용할 수 있는 메소드 결과입니다. 메소드에는 하나의 리턴 매개변수만 포함될 수 있습니다. 반환 매개변수는 값별(pass-by-value)이라고 하는 특별한 형태의 매개변수 전달을 사용해야 합니다. 이 형태의 매개변수 전달은 괄호 안의 매개변수 이름을 둘러싸서 정의됩니다(공백 없음). 키워드 VALUE로 그 앞에 옵니다.
키워드 RAISING은 오류 상황을 나타내기 위해 메소드에서 발생할 수 있는 예외를 나열하는 데 사용됩니다. 그러면 호출 프로그램이 오류에 반응할 수 있습니다.

예를 들어, lcl_connection 클래스에 두 개의 메소드를 추가합니다.
특성 connection_id 및 carrier_id 값을 설정하는 set_attributes( ) 메소드와 이러한 특성의 값을 리턴하는 get_attributes( ) 메소드. set_attributes( ) 에는 각 특성에 대해 하나씩 두 개의 임포트 매개변수가 필요합니다. get_attributes( ) 메소드에는 두 개의 엑스포트 매개변수가 필요합니다.
정의하는 모든 메소드에 대해 클래스의 구현 부분에서 구현도 생성해야 합니다. 그러기 전까지는 클래스에 구문 오류가 표시됩니다. 구문 점검을 통해 메소드 구현이 누락되었음을 알 수 있습니다.
힌트
- 오류가 있는 METHODS 문에 커서를 놓고 Ctrl + 1 을 누릅니다.
- 가능한 Quick Fix의 리스트에서 Add implementation for … 를 선택하고 Enter를 누릅니다. 여러 메소드에 대한 구현이 누락된 경우 Quick Fix 제목은 추가 … 구현되지 않은 메소드라고 합니다.







