바로투입이력카드
SAP 게시판

정보·팁

Clean ABAP ⑦ 메서드 파라미터 설계: RETURNING, OPTIONAL, 불리언

에이든ABAP 개발자운영자모듈 MMSD기타조회 1

3줄 요약

  • IMPORTING 은 세 개 미만이 이상적이고, OPTIONAL 이 필요해지면 메서드를 쪼개요.

  • 출력은 RETURNING 하나로, 여러 값이 한 덩어리라면 구조체나 객체로 돌려줘요.

  • 불리언 입력 파라미터와 RETURNING/EXPORTING/CHANGING 섞어 쓰기는 "메서드가 두 가지 일을 한다"는 신호예요.

어떤 상황에서 쓰나요

파라미터가 열 개짜리 메서드는 호출하는 사람도, 테스트하는 사람도 힘들어요. 가이드는 SEO_CLASS_COPY 함수를 예로 들어요. 필수 입력 몇 개에 불리언 DEFAULT 와 OPTIONAL 이 줄줄이 붙은 모습이에요. 이번 회는 그런 메서드를 피하는 설계 규칙을 모았어요.

핵심 내용

파라미터 개수

  • IMPORTING 은 되도록 세 개 미만이에요. 입력이 많으면 조합이 기하급수적으로 늘고, 메서드가 한 가지 이상의 일을 한다는 신호이기도 해요. 의미 있는 묶음으로 구조체나 객체로 합쳐서 줄여요.

  • OPTIONAL 로 두 가지 용도를 하나에 합치지 말고(do_one_or_the_other), do_one_thing, do_another_thing 으로 나눠요. 호출하는 쪽이 어느 파라미터가 필수인지, 어떤 조합이 유효한지, 서로 배타적인지 헷갈리지 않아요.

  • PREFERRED PARAMETER 는 어느 파라미터가 실제로 들어왔는지 안 보이게 해서 아껴 써요. 파라미터를 줄이면 필요가 저절로 줄어요.

출력은 하나만

  • 출력 파라미터가 논리적으로 한 덩어리가 아니면 메서드를 쪼개야 해요. 한 덩어리라면 구조체로 묶어서 RETURNING 해요.

METHODS check_business_partners
  IMPORTING business_partners TYPE business_partners
  RETURNING VALUE(result) TYPE check_result.

이렇게 하면 함수형 호출이 가능하고, IS SUPPLIED 를 고민할 필요도 없고, 중요한 오류 여부를 받는 걸 깜빡하는 일도 막아요. 선택 출력이 많다면 check 와 check_and_report 처럼 쓰임새별로 쪼개는 것도 방법이에요.

파라미터 종류

  • EXPORTING 보다 RETURNING. 호출이 짧고 메서드 체이닝이 되며, 입력과 출력이 같은 변수일 때 생기는 오류도 막아요.

  • 큰 테이블도 보통은 RETURNING 으로 돌려줘도 돼요. 이 부분은 ABAP 프로그래밍 지침과 코드 인스펙터가 "큰 테이블은 참조로 EXPORTING" 하라고 한 것과 달라요. 가이드 저자들은 성능·메모리 문제를 재현하지 못했고 커널 최적화 소식도 들었다고 설명하며, 측정으로 문제가 확인될 때만 EXPORTING 으로 가라고 해요.

  • RETURNING, EXPORTING, CHANGING 을 섞어 쓰지 않아요. 종류가 섞이면 메서드가 여러 일을 한다는 신호이고, 호출이 복잡해져요. 예외로 입력을 소비하며 출력을 만드는 빌더(build_tree)는 입력을 객체로 만들면 더 명확해져요.

  • CHANGING 은 이미 채워진 지역 변수를 일부만 고칠 때만 써요. 호출하는 쪽에 불필요한 지역 변수를 강요하거나, 빈 변수를 처음 채우는 데 쓰지 않아요.

  • 불리언 입력 파라미터는 메서드를 둘로 나누라는 신호예요. update( abap_true ) 의 true 가 동기인지 시뮬레이션인지 커밋인지 알 수 없지만, update_without_saving( ), update_and_save( ) 는 의도가 보여요. 불리언 setter(set_is_deleted)는 괜찮다고 봐요.

이름과 초기화

  • RETURNING 파라미터 이름은 메서드 이름을 되풀이하게 되기 쉬워서 result 로 통일할 수 있어요. 체이닝용으로 me 를 돌려주거나 생성한 엔티티의 키만 돌려주는 등 뜻이 분명하지 않을 때만 이름을 붙여요.

  • EXPORTING 참조 파라미터는 이미 채워져 있을 수 있으니 CLEAR 하거나 덮어써서 믿을 수 있는 값을 줘요. 다만 입력과 출력이 같은 변수가 될 수 있으면 맨 처음 CLEAR 가 입력값을 지워 버리니, RETURNING 으로 바꾸거나 한 문장으로 덮어쓰거나 늦게 CLEAR 해요. VALUE 파라미터(RETURNING 은 항상 VALUE)는 이미 비어 있으니 CLEAR 하지 않아요.

주의할 점

  • "큰 테이블도 RETURNING" 은 ABAP 프로그래밍 지침과 반대되는 의견이에요. 원문도 이 점을 밝히고 있어요. 성능에 민감한 곳이라면 측정한 뒤에 정하세요.

  • IMPORTING 이 세 개 미만이어야 한다는 것은 이상적인 목표예요. 기존 BAPI 나 표준 인터페이스를 감싸는 코드까지 이 기준을 맞추라는 뜻은 아니라고 읽었어요(이 부분은 원문에 명시된 것이 아니라 제 해석이에요).

  • 원문은 2019년 첫 공개, 2025년 3월 마지막 수정본이에요. 이 글은 읽고 정리한 것이고 코드를 직접 돌려 보지 않았어요.

원문 주소: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#parameter-number

출처와 이용 안내
  • 원문: Clean ABAP - Methods: Parameter Number, Types, Names, Initialization · 작성자 SAP SE and contributors SAP/styleguides · 작성일 2019-05-01 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25

  • 이 글은 위 원문을 읽고 한국어로 요약·재구성한 글이며 번역본이 아니에요. 원문의 저작권은 작성자와 SAP에 있어요.

  • 원문은 CC BY 3.0 라이선스(https://creativecommons.org/licenses/by/3.0/)로 공개된 자료예요. 이 글은 내용을 한국어로 줄이고 순서를 바꾼 변경본이며, 원저작자가 이 글을 보증하지 않아요.

  • 설정과 화면은 릴리스마다 달라요. 적용하기 전에 원문과 SAP Help Portal, 관련 SAP Note에서 최신 내용을 확인해 주세요.

  • SAP와 SAP 제품명은 SAP SE의 상표예요. 바로투입은 SAP와 관련이 없어요.

댓글 0

아직 댓글이 없어요.

정보·팁 목록전체 목록