💡 Search함수 : 문자열 필드 안에서 특정 문자열 검색하는 방법 


SEARCH <field> FOR <string>.
SEARCH surname2 FOR 'Joe'.

 

- Search 문은 결과를 변수에 저장하지 않음

- 결과는 ABAP 시스템 필드를 통해 확인함

  • sy-subrc: 검색 성공 여부
  • sy-fdpos: 문자열이 시작되는 위치(인덱스)

필드명 의미

sy-subrc 0: 검색 성공 / 4: 검색 실패
sy-fdpos 검색된 문자열의 오프셋(시작 위치) 값 (0부터 시작)

예: sy-fdpos = 3이면, 해당 단어는 4번째 글자부터 시작됨 (인덱스 0 기준)

 

예제1 기본검색(공백무시)

surname2 = 'Mr. Joe Smith'.
SEARCH surname2 FOR 'Joe'.
This should be successful. sy-subrc = 0, and sy-fdpos = 3.
'Joe'는 존재하므로 성공,
Mr. 다음에 있는 'J'는 4번째 문자이므로 오프셋 3

 

예제2 공백포함검색

SEARCH surname2 FOR 'Joe    '.  " 공백 포함
실제 문자열에는 'Joe '만 있고 공백이 부족하므로 검색 실패
sy-subrc = 4 (실패)
sy-fdpos = 0

 

예제3 와일드카드 검색: *ith

SEARCH surname2 FOR '*ith'.  " ith로 끝나는 단어
‘Smith’가 ith로 끝나므로 검색 성공
sy-subrc = 0, sy-fdpos = 7 (공백 다음 단어 시작)

 

예제4 와일드카드 검색: smi*

SEARCH surname2 FOR 'Smi*'.  " Smi로 시작하는 단어
Smith에서 일치
sy-subrc = 0, sy-fdpos = 7

 

 

📌 오프셋 위치 해석

surname2 = 'Mr. Joe Smith'

→ 인덱스 기준:

0 1 2 3 4 5 6 7 8 9 ...
M r .   J o e   S m ...
  • Joe는 인덱스 3부터 시작
  • Smith는 인덱스 7부터 시작
  • (Joe 뒤 공백이 인덱스 6 → 그 다음인 7에서 시작)

구문 예시 /설명 /결과

smi*가 아니라 joe다!

SEARCH field FOR 'Joe'. 단어 ‘Joe’ 검색 sy-subrc = 0, sy-fdpos = 3
SEARCH field FOR 'Joe    '. 공백 포함 → 실패 sy-subrc = 4, sy-fdpos = 0
SEARCH field FOR '*ith'. ith로 끝나는 단어 sy-subrc = 0, sy-fdpos = 7
SEARCH field FOR 'Smi*'. Smi로 시작하는 단어 sy-subrc = 0, sy-fdpos = 7

+ Recent posts