휴.. 단어만 놓고봤을때 어디서 어떻게 쓰이는건지
확 구별이 안되서 정리
ABAP에서 결과값을 돌려주는 방식은 여러 가지가 있지만,
처음 ABAP을 배우는 사람은 특히 CHANGING과 RETURNING의 차이를 헷갈리기 쉽다.
이번 포스팅에서는 두 파라미터의 개념과 쓰임을 비교하고,
언제 어떤 상황에서 쓰면 좋은지 실제 코드와 함께 설명한다.
| 항목 | CHANGING | RETURNING |
|---|---|---|
| 사용 가능 위치 | Function Module, Method | Method에서만 사용 가능 |
| 목적 | 입력도 받고, 변경 후 결과도 돌려줌 | 결과 1개를 함수처럼 반환 |
| 개수 | 여러 개 가능 | 1개만 가능 |
| 호출 방식 | 변수 주소를 넘김 → 변경사항이 원본에 반영됨 | 리턴값을 함수처럼 받을 수 있음 |
| 선언 위치 | 인터페이스(탭) 또는 시그니처에서 정의 | 메서드 시그니처에서 RETURNING VALUE(...) 사용 |
METHOD double_value.
CHANGING cv_number TYPE i.
cv_number = cv_number * 2.
ENDMETHOD.
DATA(lv_num) = 10.
lo_object->double_value( CHANGING cv_number = lv_num ).
WRITE: / lv_num. " 결과: 20
METHOD double_value.
RETURNING VALUE(rv_result) TYPE i.
rv_result = iv_number * 2.
ENDMETHOD.
DATA(lv_result) = lo_object->double_value( iv_number = 10 ).
WRITE: / lv_result. " 결과: 20
함수처럼 결과값을 받아올 수 있고, 원본은 안 바뀜
| 상황 | 추천 구문 | 이유 |
|---|---|---|
| 여러 결과값을 동시에 다뤄야 함 | CHANGING | 여러 개를 넘겨서 직접 수정 가능 |
| 단일 계산 결과만 리턴하면 됨 | RETURNING | 함수처럼 간결하게 사용 가능 |
| 원본 값 자체를 바꾸고 싶음 | CHANGING | 포인터처럼 직접 반영됨 |
| 결과값만 따로 받고 싶음 | RETURNING | 호출 코드가 간결해짐 |
CHANGING은 “양방향” 개념 (입력 + 변경)RETURNING은 “일방향” 개념 (결과 1개 반환)IMPORTING, CHANGING, RETURNING)