SAP

SAP ABAP - OFFSET 문자열 특정 문자 추출, 바꾸기

selectall 2026. 1. 28. 13:58

OFFSET

: 필드(주로 문자열)에서 몇 번째 자리부터 볼 건지 지정하는 위치 값


예시

ABC 일때, A의 위치는 0번째

글자 A B C
위치 0 1 2

사용법
field+offset(length)   " offset(시작위치)로부터 length(길이) 자리를 가져옴
요소  의미
field 대상 문자열
offset 시작 위치
length 가져올 길이

실무에서 많이 쓰는 용도

1. 코드에서 자리수 의미가 있을 때 - 사업자번호, 자재코드 앞자리 구분

2. 숫자 앞 0 제거 - 000123' → '123'

3. 문자열 중 특정 플래그 체크 - 3번째 자리가 'A'인지 


로직 예시

 

  • 특정 글자 추출 
DATA LV_OFFSET TYPE SY-DATUM. 

LV_OFFSET = SY-DATUM.    "20260128

WRITE: LV_OFFSET+4(2),    "결과값 01 - 4번째에서 2글자 추출
       LV_OFFSET+4.       "결과값 0128

결과

→ 오늘 날짜인 '20260128'에서 4번째 위치(0번째가 A)로부터 2글자 추출 

→ LEN은 생략시, 문자열의 마지막까지를 의미함

 

  • 문자열 일부 잘라오기 (SUBSTRING 역할)
DATA: LV_TEXT TYPE STRING VALUE 'ABCDE',
      LV_PART TYPE STRING.

LV_PART = LV_TEXT+2(2).
WRITE LV_PART.

결과

→  ABCDE 중 2번째 위치(0번째가 A)로부터 2글자 추출 

 

  • 특정 위치 문자 바꾸기
DATA LV_TEXT TYPE CHAR05 VALUE 'ABCDE'.

LV_TEXT+1(1) = 'Z'.
WRITE LV_TEXT.

결과

→ 'ABCDE'중 1번째 위치(0번째가 A)로부터 1글자를 'Z'로 변경

 

  • FIELD-SYMBOL 필드심볼 이용
DATA LV_OFFSET TYPE SY-DATUM.

LV_OFFSET = SY-DATUM.     " 20260128

FIELD-SYMBOLS <FS_OFFSET>.
ASSIGN LV_OFFSET+4(*) TO <FS_OFFSET>.

WRITE <FS_OFFSET>.        "결과값 0128

결과

→ 필드심볼이용하여 사용 가능

→ 오늘 날짜인 '20260128'에서 4번째 위치(0번째가 A)로부터 문자열 마지막까지 추출

→ 필드심볼에서는 LENGHT 누락이 안되기에 마지막까지 추출 시 (*) 사용