비교할 필드를 선택 / 지정한 필드만 비교 가능
DATA: itab TYPE TABLE OF string,
result TYPE string.
APPEND 'Item 1' TO itab.
APPEND 'Item 2' TO itab.
APPEND 'Item 3' TO itab.
READ TABLE itab WITH KEY field = 'Item 1' COMPARING field INTO result.
IF sy-subrc = 0.
WRITE: 'Found:', result.
ENDIF.
다른 필드들은 무시하고, field만 비교할 때 COMPARING을 사용합니다.
찾은 값을 어떤 필드에 복사할지 지정하는 옵션 / 검색한 값 중에서 필요한 값만 특정 필드에 복사 가능
DATA: itab TYPE TABLE OF string,
result TYPE string.
APPEND 'Item 1' TO itab.
APPEND 'Item 2' TO itab.
APPEND 'Item 3' TO itab.
READ TABLE itab WITH KEY field = 'Item 1' TRANSPORTING field INTO result.
IF sy-subrc = 0.
WRITE: 'Found:', result.
ENDIF.
검색된 결과에서 특정 필드만 가져오고 싶을 때 사용합니다. 필요한 필드만을 결과로 복사합니다.
반복적으로 데이터를 절반씩 나누어가며 검색하는 방법
데이터가 정렬되어 있어야 함
DATA: lt_table TYPE TABLE OF string,
lv_value TYPE string.
APPEND 'Apple' TO lt_table.
APPEND 'Banana' TO lt_table.
APPEND 'Grape' TO lt_table.
SORT lt_table. " 테이블을 정렬
READ TABLE lt_table WITH KEY table_line = 'Banana' BINARY SEARCH.
IF sy-subrc = 0.
WRITE: 'Found: ', lt_table[ sy-tabix ]. " 찾은 값 출력
ELSE.
WRITE: 'Not Found'.
ENDIF.
SY-SUBRC는 ABAP에서 시스템 필드(System Field)
0: 명령어가 성공적으로 실행되었을 때
4: 명령어가 실패했을 때 (예: 레코드를 찾지 못했을 때)
8: 특정 오류 상황이 발생했을 때
그 외에도 다양한 값이 있을 수 있으며, 명령어 종류에 따라 다릅니다.
DATA: lt_table TYPE TABLE OF string,
lv_result TYPE string.
APPEND 'Item 1' TO lt_table.
APPEND 'Item 2' TO lt_table.
READ TABLE lt_table WITH KEY field = 'Item 1' INTO lv_result.
IF sy-subrc = 0.
WRITE: 'Found:', lv_result. " Item 1이 존재하면 출력
ELSE.
WRITE: 'Not found'. " Item 1이 없으면 출력
ENDIF.
READ TABLE 명령어가 성공하면 SY-SUBRC 값은 0이 되고, 실패하면 4가 됩니다.