Clean ABAP ④ 문자열, 불리언, 조건문, IF/CASE 정리
3줄 요약
문자열 리터럴은 백틱(`
`), 조립은|{ }|문자열 템플릿, 불리언은abap_bool과abap_true/false, 불리언 대입은xsdbool` 이에요.조건은 긍정형으로,
IS NOT을NOT IS보다 먼저, 복잡하면 변수나 메서드로 쪼개요.IF가 깊어지면CASE와 하위 메서드로 풀고, 정규식은 더 단순한 방법이 없을 때만 써요.
어떤 상황에서 쓰나요
작은 문법 선택이 모여 코드의 인상을 만들어요. 'X' 와 space 가 섞인 불리언, 세 겹으로 중첩된 IF, 정규식 한 줄로 해결한 이름 검증 같은 코드를 리뷰할 때 근거로 삼을 수 있는 규칙들이에요. 연재 4회는 Clean ABAP 의 짧은 장 다섯 개를 한꺼번에 정리해요.
핵심 내용
문자열
고정 문자열은 백틱으로 써요.
DATA(some_string) =ABC.는 곧바로string이 돼요. 작은따옴표는 불필요한 타입 변환을 하고CHAR인지STRING인지 헷갈리게 해요.|ABC|는CONSTANTS에 쓸 수 없고 고정값에는 쓸데없는 부담이에요.조립은 문자열 템플릿으로 해요. 어느 부분이 리터럴이고 어느 부분이 변수인지 잘 보여서,
&&로 이어 붙이는 것보다 읽기 쉬워요.
DATA(message) = |Received HTTP code { status_code } with message { text }|.불리언
불리언은 신중하게 써요. 처음엔
is_archived가 자연스러워 보여도, 곧 "보관 중" 같은 상태가 생겨 열거형이 필요해지는 경우가 많아요. 종류를 구분하는 용도로는 불리언이 대개 나쁜 선택이에요.타입은
abap_bool, 비교는abap_true/abap_false로 해요.char1,'X',space,IS INITIAL비교는 불리언임이 안 보이거나,abap_bool의 기본값이abap_false임을 독자가 떠올려야 해서 피해요. 다이내프로 필드처럼 DDIC 요소가 필요하면abap_boolean을 써요. 이 규칙은 ABAP 프로그래밍 지침에 근거해요.대입은
xsdbool이에요.IF ... ELSE4줄이 한 줄이 되고,boolc/boolx보다 타입 변환이 한 번 덜해요. 이름이 어색하다는 것은 가이드도 인정해요. 대안으로COND abap_bool( WHEN ... THEN abap_true )도 있지만 더 길어요.
DATA(has_entries) = xsdbool( line IS NOT INITIAL ).조건
긍정형으로 써요.
has_entries = abap_true가has_no_entries = abap_false보다 낫지만, 이를 위해 빈IF분기를 만들 정도로 밀어붙이지는 말아요.IF variable IS NOT INITIAL.,NP,<>처럼IS NOT형태를NOT IS보다 먼저 써요. 논리적으로 같아도 머릿속에서 뒤집는 수고가 들어서예요.불리언 메서드는
IF is_empty( table ).처럼 호출만으로 조건을 만들 수 있어요(서술형 메서드 호출). 이 줄임은 "비어 있지 않음 = 참, 비어 있음 = 거짓"인 반환 타입에만 쓸 수 있다는 점은 기억해요.복잡한 조건은
xsdbool로 의미 있는 이름의 변수(example_provided,one_example_fits)에 나눠 담거나, 아예 메서드(is_provided)로 빼요. ADT 의 퀵 픽스로 조건을 변수로 추출할 수 있다고 해요.
IF / CASE
빈
IF분기를 두지 말고 조건을 뒤집어요.대안이 여러 개면
ELSEIF사슬보다CASE가 좋아요. 서로 배타적인 대안이라는 점이 드러나고, 새 경우를 추가하기 쉬우며, 중첩 실수도 막아 줘요. 마지막WHEN OTHERS.에서 예외를 던지면 안전해요.중첩은 얕게 유지해요. 깊은
IF는 테스트 케이스가 기하급수적으로 늘어요. 하위 메서드와 불리언 도우미 변수로 풀거나,IF <this> AND <that>.처럼 합쳐요.
정규식
단순한 방법이 있으면 정규식을 쓰지 않아요.
matches( val = input regex = '.+' )대신input IS NOT INITIAL,contains( ... regex = 'abc' )대신sub = 'abc'예요. 정규식은 파싱과 컴파일 때문에 메모리와 시간도 더 써요.이미 있는 기반 검사를 다시 만들지 않아요. 클래스 이름 검증이라면 정규식 대신
SEO_CLIF_CHECK_NAME함수 모듈이에요.복잡한 정규식은 조각 상수로 조립하면 어떻게 만들어졌는지 보여 줄 수 있어요.
주의할 점
이 장의 규칙은 7.40 이상 문법(
xsdbool, 문자열 템플릿, 인라인 선언)을 전제로 해요. 더 낮은 릴리스에서는 쓸 수 있는 형태가 달라요. 쓰기 전에 대상 시스템에서 문법 검사를 해 보세요. (7.40 기준은 원문에 적힌 것이 아니라 일반적으로 알려진 정보예요.)xsdbool은 가이드의 선택일 뿐 유일한 답이 아니에요. 팀 표준이COND라면 그쪽이 나을 수도 있어요.정규식 장은 "쓰지 마라"가 아니라 "더 단순한 방법이 있으면 그걸 먼저"예요. 원문도 복잡한 경우를 위한 조립 요령을 따로 소개해요.
이 글은 원문을 읽고 정리한 것이고, 예제를 직접 실행해 보지는 못했어요.
원문은 2019년에 처음 공개되어 2025년 3월에 마지막으로 고쳐진 문서예요(제가 읽은 판은 2026년 10월 기준). 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.
원문 주소: https://github.com/SAP/styleguides/blob/main/clean-abap/CleanABAP.md#strings
출처와 이용 안내
원문: Clean ABAP - Strings, Booleans, Conditions, Ifs, Regular expressions · 작성자 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
아직 댓글이 없어요.
로그인하고 댓글 쓰기