[ABAP] ABAP FUNCTION에서 RETURN 파라미터는 EXPORTING이랑 뭐가 다를까?

몰라·2025년 4월 5일

ABAP

목록 보기
3/13

Function이랑 Method 헷갈려서 물어본 질문 ..ㅎㅎ 머쓱


ABAP 초보로서 FUNCTION을 만들다가 문득 궁금한 게 생겼다.

"Function에서 return 파라미터는 exporting, importing이랑 뭐가 다른 거지?
정의하는 탭도 없고 뭔가 이상해..."

직접 찾아보면서 느꼈던 몰랐던 포인트들과,
EXPORTING, IMPORTING, RETURNING 파라미터의 차이를 간단하게 정리해본다.


✅ 몰랐던 포인트

RETURNING은 Function Module(SE37)에서는 못 본다?

맞다.
RETURNINGFunction Module에서는 쓸 수 없다.
반드시 클래스의 Method(메서드) 안에서만 사용할 수 있다.

Function Module에서는 EXPORTING, IMPORTING, CHANGING, TABLES 파라미터만 사용 가능하다.


EXPORTING, IMPORTING, RETURNING 차이점 비교

항목IMPORTINGEXPORTINGRETURNING (⚠️ 메서드 전용)
사용 위치Function, MethodFunction, MethodMethod에서만 사용 가능
역할외부에서 값을 받아옴외부로 값을 전달함하나의 결과값을 반환
개수 제한여러 개 가능여러 개 가능1개만 가능
정의 방식인터페이스 탭에서 정의함 (SE37)인터페이스 탭에서 정의함메서드 시그니처에서 직접 작성
호출 시 전달 방식CALL FUNCTION ... IMPORTING iv_input = valEXPORTING ev_result = valrv_result = method_name( iv_input = val )

🧪 예제로 비교해보기

📌 Function Module 예시 (SE37 기반)

FUNCTION z_calculate_tax.
  IMPORTING
    VALUE(iv_amount) TYPE i
  EXPORTING
    VALUE(ev_tax)    TYPE i.
  
  ev_tax = iv_amount * 10 / 100.
ENDFUNCTION.

호출 시:

DATA: lv_tax TYPE i.

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

📌 클래스 메서드 예시 (RETURNING 사용)

METHOD calculate_tax.
  " RETURNING VALUE(rv_tax) TYPE i
  rv_tax = iv_amount * 10 / 100.
ENDMETHOD.

호출 시:

DATA(lv_result) = lo_calc->calculate_tax( iv_amount = 1000 ).

~~CALL METHOD class=>method       <- 이 방식은 Retruning 파라미터에 대해서는 쓸수없다. 
  EXPORTING ...
  IMPORTING ... ~~

✅ 마무리 요약

질문정답 요약
Function에서 return 파라미터는 exporting이랑 달라?완전히 다름. RETURNING메서드 전용이고, Function에서는 사용 불가
왜 인터페이스 탭에 RETURNING이 없지?당연함. Function Module(SE37)에는 RETURNING 개념 자체가 없음
언제 RETURNING을 써야 할까?객체지향 프로그래밍(OOP) 구조에서, 단일 결과값을 간결하게 반환할 때 유용함

💡 기억 꿀팁

  • Function Module에서는 EXPORTING으로 결과값 돌려준다. (RETURNING 없음!)
  • Class의 Method에서는 RETURNING으로 간단하게 리턴 가능 (단, 1개만 가능)
  • RETURNING을 쓰면 호출 코드가 간결해져서 가독성 좋아짐

나처럼 Function이랑 Method 헷갈리는 초보라면,
이 차이를 처음부터 정확히 알고 시작하는 게 진짜 중요하다!

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

0개의 댓글