Function이랑 Method 헷갈려서 물어본 질문 ..ㅎㅎ 머쓱
ABAP 초보로서 FUNCTION을 만들다가 문득 궁금한 게 생겼다.
"Function에서 return 파라미터는 exporting, importing이랑 뭐가 다른 거지?
정의하는 탭도 없고 뭔가 이상해..."
직접 찾아보면서 느꼈던 몰랐던 포인트들과,
EXPORTING, IMPORTING, RETURNING 파라미터의 차이를 간단하게 정리해본다.
RETURNING은 Function Module(SE37)에서는 못 본다?맞다.
RETURNING은 Function Module에서는 쓸 수 없다.
반드시 클래스의 Method(메서드) 안에서만 사용할 수 있다.
Function Module에서는
EXPORTING,IMPORTING,CHANGING,TABLES파라미터만 사용 가능하다.
EXPORTING, IMPORTING, RETURNING 차이점 비교| 항목 | IMPORTING | EXPORTING | RETURNING (⚠️ 메서드 전용) |
|---|---|---|---|
| 사용 위치 | Function, Method | Function, Method | Method에서만 사용 가능 |
| 역할 | 외부에서 값을 받아옴 | 외부로 값을 전달함 | 하나의 결과값을 반환함 |
| 개수 제한 | 여러 개 가능 | 여러 개 가능 | 1개만 가능 |
| 정의 방식 | 인터페이스 탭에서 정의함 (SE37) | 인터페이스 탭에서 정의함 | 메서드 시그니처에서 직접 작성 |
| 호출 시 전달 방식 | CALL FUNCTION ... IMPORTING iv_input = val | EXPORTING ev_result = val | rv_result = method_name( iv_input = val ) |
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.
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) 구조에서, 단일 결과값을 간결하게 반환할 때 유용함 |
EXPORTING으로 결과값 돌려준다. (RETURNING 없음!)RETURNING으로 간단하게 리턴 가능 (단, 1개만 가능)RETURNING을 쓰면 호출 코드가 간결해져서 가독성 좋아짐나처럼 Function이랑 Method 헷갈리는 초보라면,
이 차이를 처음부터 정확히 알고 시작하는 게 진짜 중요하다!