인터널테이블
의 특정 레코드(열) 1개 가져오기. READ TABLE <ITAB> INTO <WQ(스트럭처etc...)> INDEX <인덱스번호>
SELECT
, 한 개 데이터 SELECT SINGLE
LOOP
, 한 개 데이터 READ TABLE
READ TABLE <ITAB> INTO <WQ(스트럭처etc...)> WITH KEY <조건>
AND
조건만 사용 가능하며, AND
수식은 생략 가능.STANDARD TABLE
에 사용HASHED TABLE
,SORTED TABLE
에서는 WITH TABLE KEY
를 사용한다.DO <횟수> TIMES.
<실행문>
ENDDO.
무관
하게 반복하고 싶을때 사용한다.초기값
설정 참고 : http://sapjoy.co.kr/index.php?mid=abapqna&document_srl=8912&m=0
SY-TABIX
: 인터널 테이블의 라인 번호 - 현재라인SY-INDEX
: 현 루프 구문의 횟수DESCRIBE TABLE <ITAB> LINES <WQ(변수, 스트럭처etc...)>.
*1)
DATA : BEGIN OF gs_fli,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
countryfr TYPE spfli-countryfr,
cityfrom TYPE spfli-cityfrom,
airpto TYPE spfli-airpto,
cityto TYPE spfli-cityto,
END OF gs_fli,
*2)
gt_fli LIKE TABLE OF gs_fli.
CLEAR : gs_fli.
REFRESH : gt_fli.
*3)
SELECT a~carrid a~carrname
b~connid b~countryfr b~cityfrom b~airpto
INTO CORRESPONDING FIELDS OF TABLE gt_fli
FROM scarr AS a
INNER
JOIN spfli AS b
ON a~carrid = b~carrid
WHERE a~carrid IN ('AA','AZ','DL').
*4)
LOOP AT gt_fli INTO gs_fli.
IF gs_fli-cityfrom EQ 'ROME'.
gs_fli-cityfrom = 'SEOUL'.
ENDIF.
*5)
IF gs_fli-cityto = 'FRANKFURT'.
gs_fli-airpto = 'INCHEON'.
ENDIF.
ENDLOOP.
*6)
DO 5 TIMES.
READ TABLE gt_fli INTO gs_fli INDEX sy-index.
WRITE : gs_fli-carrid, gs_fli-carrname, gs_fli-connid,/.
ENDDO.
1번 풀이 코드를 바탕으로, 인터널테이블 레코드 수 만큼 루프문 돌리기
DATA : gv_cnt TYPE p VALUE 0.
LOOP AT gt_fli INTO gs_fli.
gv_cnt = sy-tabix. " ---->동일하다 gv_cnt = gv_cnt + 1.
ENDLOOP.
WRITE : gv_cnt.
DO gv_cnt TIMES.
READ TABLE gt_fli INTO gs_fli INDEX sy-index.
WRITE : gs_fli-carrid, gs_fli-carrname, gs_fli-connid,/.
ENDDO.