[ABAP] CHANGING vs RETURNING

몰라·2025년 4월 5일

ABAP

목록 보기
4/13

휴.. 단어만 놓고봤을때 어디서 어떻게 쓰이는건지
확 구별이 안되서 정리


ABAP에서 CHANGING vs RETURNING 차이 완전 정리

ABAP에서 결과값을 돌려주는 방식은 여러 가지가 있지만,
처음 ABAP을 배우는 사람은 특히 CHANGINGRETURNING의 차이를 헷갈리기 쉽다.

이번 포스팅에서는 두 파라미터의 개념과 쓰임을 비교하고,
언제 어떤 상황에서 쓰면 좋은지 실제 코드와 함께 설명한다.


✅ 개념 비교

항목CHANGINGRETURNING
사용 가능 위치Function Module, MethodMethod에서만 사용 가능
목적입력도 받고, 변경 후 결과도 돌려줌결과 1개를 함수처럼 반환
개수여러 개 가능1개만 가능
호출 방식변수 주소를 넘김 → 변경사항이 원본에 반영됨리턴값을 함수처럼 받을 수 있음
선언 위치인터페이스(탭) 또는 시그니처에서 정의메서드 시그니처에서 RETURNING VALUE(...) 사용

🧪 코드 비교 예시

📌 CHANGING 예시

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

📌 RETURNING 예시

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개 반환)
  • Method에서는 상황에 맞게 조합해서 쓸 수도 있음 -> Returning 까지 쓸수 있으니깐!
    → (IMPORTING, CHANGING, RETURNING)
profile
일주일 동안 헤맨 흔적을 정리하러 왔습니다

0개의 댓글