[ABAP] 인터널 테이블 5 READ

펭귄안녕·2025년 2월 7일

abap

목록 보기
6/14

1. 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' COMPARING field INTO result.

IF sy-subrc = 0.
  WRITE: 'Found:', result.
ENDIF.

다른 필드들은 무시하고, field만 비교할 때 COMPARING을 사용합니다.

2. TRANSPORTING

찾은 값을 어떤 필드에 복사할지 지정하는 옵션 / 검색한 값 중에서 필요한 값만 특정 필드에 복사 가능

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

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가 됩니다.

0개의 댓글