[ABAP] CALL FUNCTION vs METHOD CALL

몰라·2025년 4월 5일

ABAP

목록 보기
5/13

function과 method의 차이점을 생각하다가 여기까지 왔다..


ABAP에서 CALL FUNCTION vs METHOD CALL 차이 정리

ABAP을 배우다 보면 Function Module을 CALL FUNCTION으로 호출하고,
클래스 메서드를 ->로 호출하는 걸 보게 된다.

근데 둘 다 "기능을 실행"하는데 왜 방식이 다르고, 언제 뭘 써야 할까?

이번 포스팅에선 CALL FUNCTIONMETHOD CALL의 개념과 차이를 명확히 비교하고,
어떤 상황에서 어떤 걸 써야 하는지 팁까지 정리해본다.


✅ 기본 개념 비교

항목CALL FUNCTIONMethod Call (->method( ))
구조절차지향(Procedural)객체지향(Object-Oriented)
재사용 방식Function Group에 포함된 전역 함수클래스의 인스턴스 또는 정적 메서드
상태 보존전역적 (전역 변수 사용 가능)인스턴스 단위 (내부 상태 유지 가능)
인터페이스IMPORTING, EXPORTING, CHANGING, TABLESIMPORTING, EXPORTING, CHANGING, RETURNING
예외 처리EXCEPTIONS 구문 사용TRY...CATCH 블록 사용 가능

🧪 호출 예시

📌 Function Module 호출

CALL FUNCTION 'Z_CALCULATE_TAX'
  EXPORTING
    iv_amount = 1000
  IMPORTING
    ev_tax = lv_tax
  EXCEPTIONS
    OTHERS = 1.

📌 Method 호출

DATA(lo_util) = NEW zcl_fi_util( ).

DATA(lv_tax) = lo_util->calculate_tax( iv_amount = 1000 ).

✅ 차이 요약

구분Function (CALL FUNCTION)Method (->method( ))
호출 방식절차형 호출객체지향 호출
위치Function Group 내Class 내
결과값 처리 방식EXPORTING, CHANGING 등 사용RETURNING 으로 함수처럼 받을 수 있음
호출 문법CALL FUNCTION ...lo_object->method( )
예외 처리 방식EXCEPTIONSTRY...CATCH 가능

✅ 언제 어떤 걸 써야 할까?

상황추천 방식이유
레거시 코드, 표준 FM 재활용CALL FUNCTION이미 존재하는 기능 재활용 가능
객체 단위로 상태를 갖고 동작해야 함Method Call객체 중심 구조로 더 유연하게 구성 가능
단순한 계산/조회Method Call (RETURNING)호출이 간결하고 가독성 높음
RFC / 시스템 간 호출 필요CALL FUNCTIONRFC 전용 Function은 따로 생성됨

💡 기억 팁

  • 절차지향 → Function, 객체지향 → Method
  • RETURNINGMethod에서만 사용 가능
  • 신규 개발은 가급적 클래스 기반(Method) 개발을 선호
  • Function Module은 SE37, 클래스는 SE24에서 관리

✨ 마무리

  • 둘 다 기능 실행 도구지만,
    시대 흐름은 객체지향(Method Call) 중심으로 이동 중

  • 단, SAP 표준에는 여전히 많은 Function Module이 존재하기 때문에
    둘 다 제대로 이해하고 있어야 실무에 강해진다!


다음 포스팅에서는 실제 업무 예시로
CALL FUNCTIONMethod로 리팩토링하는 흐름을 소개할 예정입니다.

profile
일주일 동안 헤맨 흔적을 정리하러 왔습니다

0개의 댓글