READ tabe 是用來遍歷內表,取第一條符合條件的記錄。
READ TABLE <itab> [INTO <wa>] WITH KEY <key> [BINARY SEARCH].
add-20200427
WITH KEY 中的檢索條件比較符不能使用‘<>’(不等於)。
如果只想取得內部表中不等於某條件的一條記錄,那么請使用下面變通方法。
LOOP AT itab WHERE KEY <> ‘XX’.
此處取得第一條記錄。
EXIT.
ENDLOOP.
如果在運行時 <KEY> 值為空,則 統忽略該關鍵字段。另外可對關鍵字段指定偏移量和長度。
用 INTO 選項可以指定目標區域 。如果表格有表頭行,則可以忽略 INTO 選項。這樣,表格工作區域就成了目標區域。
系統讀取 <itab> 中匹配 <key> 中所定義的關鍵字的第一個條目。
如果使用二分法搜索法的話,需要先對內表進行相關條件的排序。
如果找到有適當關鍵字的條目,則將系統字段 SY-SUBRC設置為0,並且SY-TABIX包含該行的索引。否則,將 SY-SUBRC設置為非0值 。
例子如下:
DATA:IT_TAB1 TYPE STANDARD TABLE OF EKPO WITH HEADER LINE,
IT_TAB2 TYPE STANDARD TABLE OF EKPO,
IT_TAB3 TYPE STANDARD TABLE OF EKPO,
WA_TAB1 TYPE EKPO,
WA_TAB2 TYPE EKPO,
WA_TAB3 TYPE EKPO.
SELECT * FROM EKPO INTO TABLE IT_TAB1 UP TO 10 ROWS.
SELECT * FROM EKPO INTO TABLE IT_TAB2 UP TO 10 ROWS.
SELECT * FROM EKPO INTO TABLE IT_TAB3 UP TO 10 ROWS.
SORT IT_TAB1.
SORT IT_TAB2.
SORT IT_TAB3.
READ TABLE IT_TAB1 WITH KEY MATNR = 'QQQ'.
WRITE:/ SY-SUBRC,SY-TABIX.
READ TABLE IT_TAB2 INTO WA_TAB2 WITH KEY MATNR = 'M06A-CAA42' TXZ01 = '芯片M06A-CAA42'.“這個是多個KEY的
WRITE:/ SY-SUBRC,SY-TABIX.
READ TABLE IT_TAB3 INTO WA_TAB3 WITH KEY MATNR = 'M06A-CAA42' TXZ01 = '三氧化二鋁'.
WRITE:/ SY-SUBRC,SY-TABIX.
READ TABLE IT_TAB1 WITH KEY '4500000002'.
WRITE:/ SY-SUBRC,SY-TABIX.