728x90
반응형
안녕하세요 오늘은 READ TABLE 구문에 대해 한번 알아보겠습니다.
READ TABLE은 인터널 테이블에 존재하는 데이터 중 조건에 맞는 1개 ROW를 읽어오기 위한 구문입니다.
(테이블 관계)
첫번째로 오늘 READ TABLE 실습에 앞서 2개의 테이블에서 데이터를 가져오는데요 간단히 테이블 관계를
살펴보겠습니다.
SFLIGHT 테이블과 SPFLI테이블은 서로 CARRID컬럼과 CONNID컬럼이 공통으로 존재합니다.
따라서 READ TABLE 실습을 할 때도 CARRID컬럼과 CONNID컬럼으로 인터널 테이블을 READ 할 예정입니다.
(코드 예제)
(로직 해석)
1. 위 로직에서 주석 4-1번 - READ TABLE 구문(하드코딩)을 보겠습니다.
[구문해석] 1. LT_SFLIGHT라는 인터널 테이블을 읽겠다. 2. CARRID 컬럼의 값이 'AZ'이면서 CONNID 컬럼 값이 '0555'이면서 FLDATE 컬럼 값이 '220407'인 것 라인 하나를 읽겠다. 3. 읽은 하나의 라인을 LS_SFLIGHT라는 스트럭처에 담아주겠다. 4. { SY-SUBRC EQ 0 } 즉, 위 조건에 해당되는 값이 있다면 내가 원하는 조치를 하겠다. |
이해 되시나요??
SY-SUBRC라는 것은 READ TABLE구문을 사용할 때 꼭 필수적으로 적어줘야 합니다.
만약 SY-SUBRC가 0이 떨어지지 않는다면 TABLE을 READ하는데 실패하였으므로 그냥 건너 뛰어야 합니다.
2. 위 로직에서 주석 4-2번 - READ TABLE 구문(변수 활용하기)을 보겠습니다.
[구문해석] 1. LT_SPFLI에 존재하는 데이터 중 첫번째 인덱스(ROW)를 읽어 LS_SPFLI 스트럭처에 넣어주겠다. (아래 캡처화면 참조) 2. LS_SPFLI에 들어있는 CARRID컬럼의 값과 CONNID 컬럼의 값으로 LT_SFLIGHT 테이블 값을 읽고 LS_SFLIGHT 스트럭처에 넣어주겠다. |
3. 위 로직에서 주석 4-3번 - READ TABLE 구문(변수 활용하기)을 보겠습니다.
[구문해석] 1. lt_sflight 인터널 테이블에 있는 데이터의 row(행)수 만큼 loop를 수행한다. 2. loop는 라인 한줄한줄 읽는 구문이며, 한줄 읽을 때마다 lt_sflight와 동일한 타입을 참조하는 스트럭처 ls_sflight에 한 줄 담아준다. 3. 라인 한줄이 ls_sflight에 담기면, ls_sflight의 carrid, connid 값과 일치하는 데이터 1개 행을 lt_spfli에서 읽고 ls_spfli 스트럭처에 담아준다. 4. ls_spfli에 값이 담기면. 즉, 원하는 값을 읽어왔다면 sy-subrc가 0이 될 것이고 이후 원하는 로직을 처리하면 된다. (read table 구문에서 값 읽기를 실패했다면 sy-subrc가 4가 떨어진다.) |
(결론)
READ TABLE은 말그대로 인터널 테이블에 존재하는 값중 내가 원하는 조건의 값을 읽어 스트럭처에 넣어주는
과정입니다.
감사합니다.
728x90
반응형
'- SAP ABAP 기초부터 시작하기' 카테고리의 다른 글
SAP ABAP 기초 4-4) MOVE-CORRESPONDING 이해하기 (0) | 2022.12.09 |
---|---|
SAP ABAP 기초 4-3 ) 데이터 가공 3 - FOR ALL ENTRIES IN (0) | 2022.12.05 |
SAP ABAP 기초 4-1 ) 데이터 가공 1 - LOOP에 대한 이해 (0) | 2022.11.30 |
SAP ABAP 기초 3-6 ) 조인(JOIN) - LEFT OUTER JOIN (0) | 2022.11.24 |
SAP ABAP 기초 3-5 ) 조인(JOIN) - INNER JOIN (0) | 2022.11.21 |