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

정보·팁

Clean ABAP ⑥ 메서드 호출을 짧게 쓰는 규칙 여섯 가지

에이든ABAP 개발자운영자모듈 MMSD기타수정됨조회 9

3줄 요약

  • 호출은 함수형으로 쓰고, 선택 사항인 EXPORTING, RECEIVING, me->는 생략해요.

  • 파라미터가 하나면 이름을 생략하되, 이름이 없으면 뜻이 안 보이는 호출은 이름을 남겨요.

  • 정적 메서드와 타입은 클래스 이름으로 접근하고, 인스턴스 변수로 접근하지 않아요.

어떤 상황에서 쓰나요

메서드를 한 번 호출하는 코드에 CALL METHOD·EXPORTING·RECEIVING이 길게 붙어 있기도 해요. 이번 글에서는 생략해도 뜻이 분명한 부분을 줄이는 여섯 가지 규칙을 알아봐요. 파라미터 이름이나 클래스 이름을 남겨야 더 읽기 쉬운 경우도 함께 살펴봐요.

호출을 짧게 만드는 목적은 글자 수만 줄이는 데 있지 않습니다. 아래 그림처럼 불필요한 표기는 덜어내되, 어떤 입력으로 어떤 결과를 얻는지는 남겨야 합니다.

AI 설명 그림: 의미를 남기고 호출 줄이기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.
AI 설명 그림: 의미를 남기고 호출 줄이기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.

핵심 내용

1. 함수형 호출을 써요. CALL METHOD보다 괄호 호출이 짧아요. 동적으로 메서드 이름을 정하는 CALL METHOD modify->(method_name)처럼 함수형이 불가능할 때만 절차형을 써요.

modify->update( node           = /clean/my_bo_c=>node-item
                key            = item->key
                data           = item
                changed_fields = changed_fields ).

2. RECEIVING은 생략해요. DATA(sum) = aggregate_values( values ).로 받아요.

3. 선택 키워드 EXPORTING도 생략해요. 위 예시처럼 값만 넘기는 호출에는 필요 없어요.

4. 파라미터가 하나면 이름을 생략해요. remove_duplicates( list )가 remove_duplicates( list = list )보다 낫지만, car->drive( speed = 50 ), update( asynchronous = abap_true )처럼 메서드 이름만으로는 값의 뜻이 안 보이면 이름을 남겨서 이해를 도와요.

5. me->를 생략해요. 시스템이 암묵적으로 붙이는 자기 참조이므로 aggregate_values( values )로 쓰고, 지역 변수나 임포팅 파라미터와 이름이 겹칠 때만 me->logger = logger.처럼 써요.

6. 정적 멤버는 클래스 이름으로 접근해요.

  • 정적 메서드는 cl_my_class=>static_method( ).로 부르고 lo_instance->static_method( ).처럼 인스턴스로 부르지 않아요. 정적 메서드는 클래스에 붙은 것이라 인스턴스로 부르면 혼동돼요.

  • 같은 클래스의 정적 메서드를 다른 정적 메서드 안에서 부를 때는 클래스 이름을 생략해도 되지만, 인스턴스 메서드 안에서는 클래스 이름을 붙여 cl_my_class=>a_static_method( ).로 부르라고 해요.

  • 클래스나 인터페이스에 정의한 타입도 인스턴스가 아니라 클래스 이름으로 접근해요(TYPES blah TYPE lcl=>foo.). 인스턴스로 쓰면 타입이 인스턴스마다 다른 것처럼 보여요.

한국 현장에서는

이 규칙들은 대부분 코드 서식과 가독성에 관한 것이라 기존 코드를 한 번에 바꾸기보다, 수정하는 김에 바꾸는 방식이 부담이 적어요. ABAP Cleaner 같은 도구로 이런 항목을 자동으로 고칠 수 있는지는 이 글에서 확인하지 않았어요.

주의할 점

  • 함수형 호출과 인라인 선언(DATA(sum) = ...)은 7.40 이상에서만 돼요. 더 낮은 릴리스라면 이 규칙을 그대로 쓸 수 없어요. (7.40 기준은 원문에 적힌 것이 아니라 일반적으로 알려진 정보예요.)

  • me-> 생략과 파라미터 이름 생략은 "가능하면"이지 강제가 아니에요. 가이드도 지역 변수와 이름이 겹치는 경우나 값의 뜻이 안 보이는 경우는 예외로 봐요.

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

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

출처와 이용 안내
  • 원문: Clean ABAP - Methods: Calls · 작성자 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

아직 댓글이 없어요.

정보·팁 목록전체 목록