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

정보·팁

ABAP 문자열 처리 정리: string과 c, 문자열 템플릿, SPLIT, 부분 문자열

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

3줄 요약

  • string은 길이가 변하는 문자열(끝 공백 보존), c는 고정 길이 텍스트 필드예요. 길이를 제한할 이유가 없으면 string을 권해요.

  • 문자열 조립은 |...{ 식 }...| 문자열 템플릿이 편하지만, 문자만 있는 템플릿은 실행 중에 식으로 계산되므로 고정 문자열에는 백틱 리터럴을 써요.

  • 자르기, 합치기, 바꾸기는 SPLIT, condense( ), substring( ), find( ), replace( ) 같은 문장과 내장 함수로 해요.

어떤 상황에서 쓰나요

외부 파일을 읽거나 메시지를 만들 때는 문자열을 나누고, 합치고, 공백을 정리하는 작업이 필요해요. 이번 글에서는 string과 c의 차이를 먼저 알아보고, 문자열 템플릿·SPLIT·부분 문자열·검색과 치환을 용도별로 살펴봐요.

문자열 처리는 나누기, 공백 정리, 값 조합처럼 작은 작업으로 나눠 볼 수 있습니다. 아래 그림에서 원본의 어느 부분이 남고 어떤 부분이 새로 조합되는지 따라가 보세요.

AI 설명 그림: 문자열을 나누고 다시 조립하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.
AI 설명 그림: 문자열을 나누고 다시 조립하기. 개념을 돕기 위한 이미지이며 실제 SAP 화면이 아닙니다.

핵심 내용

string과 c

  • string은 가변 길이이고 초기값이 빈 문자열이며, 모든 연산에서 끝 공백이 보존돼요. 이론상 2GB까지 쓸 수 있어요.

  • c는 길이를 선언 때 정하는 고정 길이이고, 초기값은 공백이에요. 최대 262143자이고, 대부분의 연산 위치에서 끝 공백이 잘려요.

  • 국가 코드처럼 최대 길이가 정해진 값이나 길이가 제한된 폼 입력에는 c가 어울리고, 그렇지 않으면 string이 유연하다고 해요. 대신 string의 부분 문자열에 접근할 때는 문자열이 충분히 긴지 직접 확인해야 해요.

문자열 템플릿 (|...|)

  • 중괄호 안에 변수, 함수 호출, 내장 함수를 넣을 수 있어요(|User: { sy-uname }, 길이 { strlen( s ) }|). 문자열로 변환 가능해야 해요. 이스케이프는 \|, \{, \}, \\ 예요.

  • 템플릿은 실행 중에 계산되는 문자열 식이라, 글자만 있는 템플릿은 불필요한 부담이에요. 고정 텍스트는 백틱 리터럴(` text `)을 사용하도록 권해요.

  • 제어 문자는 \n(줄바꿈), \t(탭), \r\n 이고, cl_abap_char_utilities의 속성과 같아요.

  • 서식 옵션이 많아요. 날짜 DATE = ISO|USER|RAW|ENVIRONMENT, 시간 TIME = ..., 타임스탬프 TIMESTAMP = ..., 시간대 TIMEZONE = 'CET' COUNTRY = 'DE ', 대소문자 CASE = LOWER|UPPER, 너비와 정렬과 채움 WIDTH = 10 ALIGN = RIGHT PAD = '.', 소수 자릿수 DECIMALS = 3, 부호 SIGN 등이에요. 사용자 설정에 따라 출력이 달라지는 옵션(USER, ENVIRONMENT)과 고정 형식(ISO, RAW)을 구분해서 쓰세요.

나누기 (SPLIT)

  • 대상 변수가 조각보다 적으면 마지막 변수가 나머지를 통째로 받고, 많으면 남는 변수는 초기화돼요. 조각 수를 모를 때는 INTO TABLE itab으로 나눠요.

  • 특정 위치의 조각만 필요하면 segment( val = s1 index = 2 sep = , ).

DATA(s1) = `Hallo,world,123`.
SPLIT s1 AT `,` INTO DATA(a) DATA(b) DATA(c).
DATA(second) = segment( val = s1 index = 2 sep = `,` ).  " world

고치기

  • 공백 정리: CONDENSE s.(앞뒤 공백 제거, 연속 공백을 하나로), CONDENSE s NO-GAPS.(모든 공백 제거). 내장 함수 condense( )는 공백이 아닌 문자도 지정할 수 있다는 점이 장점이에요(del = '#').

  • 대소문자 변환은 to_upper( ), to_lower( ), 문자 이동·뒤집기·삽입·덮어쓰기(OVERLAY) 등이 있어요.

부분 문자열 접근

  • substring( val = s off = 6 len = 5 ). len을 안 쓰면 나머지 전부예요. 범위를 넘으면 CX_SY_RANGE_OUT_OF_BOUNDS가 발생해요.

  • 변수 뒤에 오프셋과 길이로 접근할 수 있어요: txt(5), txt+6(5), txt+12(*). 고정 길이 텍스트 필드에는 쓰기 접근도 돼요(txt(5) = 'Hallo'). 이 문법은 동적 프로그래밍의 토큰 표기와 혼동될 수 있다고 해요.

  • substring_after, substring_before, substring_from, substring_to는 PCRE 정규식도 지원해요.

찾기와 바꾸기

  • find( val = str sub = ca )는 찾은 위치(오프셋)를 돌려주고 못 찾으면 -1 이에요. sub가 비어 있으면 CX_SY_STRG_PAR_VAL 예외예요. occ로 몇 번째 일치인지(음수는 오른쪽부터), off/len으로 범위를 정하고, 기본적으로 대소문자를 구분해요.

  • FIND / REPLACE 문장은 테이블 안의 검색 같은 추가 기능이 더 있어요. replace( ) 함수에서는 occ = 0이 "모두 바꾸기"예요(find에서 0은 예외).

주의할 점

  • DATE = USER 같은 옵션은 사용자 설정에 따라 결과가 달라서, 인터페이스 파일처럼 고정 형식이 필요한 곳에는 ISO 나 RAW를 쓰는 것이 안전해요. 이 문장은 옵션 설명을 바탕으로 한 제 정리예요.

  • 치트시트의 오프셋 표기(txt+6(5))는 클라우드용 ABAP 에서는 제한이 있을 수 있어요. 어느 환경에서 되는지는 확인하지 못했으니 내 환경에서 문법 검사를 해 보세요.

  • 치트시트는 계속 갱신되는 문서예요. 첫 공개는 2022년이고, 제가 읽은 판은 2026년 10월 기준이에요. 이 글은 읽고 정리한 것이고 예제를 직접 실행해 보지는 않았어요.

원문 주소: https://github.com/SAP-samples/abap-cheat-sheets/blob/main/07_String_Processing.md

출처와 이용 안내
  • 원문: ABAP Cheat Sheets - String Processing · 작성자 SAP SE and contributors SAP-samples · 작성일 2022-12-05 · 기준 릴리스에 따라 다름 원문은 최신 ABAP 기준 · 확인일 2026-10-25

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

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

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

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

댓글 0

아직 댓글이 없어요.

정보·팁 목록전체 목록