Clean ABAP ⑦ 메서드 파라미터 설계: RETURNING, OPTIONAL, 불리언
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
아직 댓글이 없어요.
로그인하고 댓글 쓰기