💡 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 |
'SAP' 카테고리의 다른 글
SAP ABAP Programming for Beginners - 23 Split (0) | 2025.04.02 |
---|---|
SAP ABAP Programming for Beginners - 22 Shift (0) | 2025.04.02 |
SAP ABAP Programming for Beginners - 20 replace (0) | 2025.04.02 |
SAP ABAP Programming for Beginners - 19 strlen 문자열 길이 구하기 (0) | 2025.04.02 |
SAP ABAP Programming for Beginners - 18 condense 공백정리 (0) | 2025.04.02 |