SAP ABAP 讀取內(nèi)部表

2018-01-01 12:56 更新

我們可以使用READ TABLE語句的以下語法讀取表的行:

READ TABLE <internal_table> FROM <work_area_itab>.

在此語法中,< work_area_itab> 表達式表示與< internal_table>的線類型兼容的工作區(qū)域。 表。 我們可以通過使用WITH KEY子句在READ語句中指定搜索鍵,而不是表鍵,如下面的語法所示:

READ TABLE <internal_table> WITH KEY = <internal_tab_field>.

這里,內(nèi)部表的整行用作搜索鍵 將表的整行的內(nèi)容與< internal_tab_field>的內(nèi)容進行比較。 領(lǐng)域。 如果< internal_tab_field> 字段與表的行類型不兼容,則這些值將根據(jù)表的行類型進行轉(zhuǎn)換。 搜索鍵允許在內(nèi)部表中查找沒有結(jié)構(gòu)化行類型的條目,即行是單個字段還是內(nèi)部表類型。

READ語句的以下語法用于通過使用COMPARING子句指定工作區(qū)或字段符號:

READ TABLE <internal_table> <key> INTO <work_area_itab>
   [COMPARING <F1> <F2>...<Fn>].

當(dāng)使用COMPARING子句時,結(jié)構(gòu)化行類型的指定表字段<F1>,<F2> ... <Fn>與傳輸之前的工作區(qū)域的相應(yīng)字段進行比較。 如果指定了ALL FIELDS子句,SAP系統(tǒng)將比較所有組件。 當(dāng)SAP系統(tǒng)根據(jù)密鑰找到條目時,SY-SUBRC變量的值設(shè)置為0.此外,如果比較的內(nèi)容為SY-SUBRC變量的值,則將SY-SUBRC變量的值設(shè)置為2或4 字段不同或SAP系統(tǒng)找不到條目。 但是,無論查找結(jié)果如何,SAP系統(tǒng)都會將條目復(fù)制到目標(biāo)工作區(qū)中。

實例

REPORT  ZREAD_DEMO. 
*/Creating an internal table 
DATA: BEGIN OF Record1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Record1. 

DATA mytable LIKE HASHED TABLE OF Record1 WITH UNIQUE KEY ColP. 
DO 6 Times.
Record1-ColP = SY-INDEX. 
Record1-ColQ = SY-INDEX + 5. 
INSERT Record1 INTO TABLE mytable. 
ENDDO. 

Record1-ColP = 4. 
Record1-ColQ = 12. 
READ TABLE mytable FROM Record1 INTO Record1 COMPARING ColQ. 

WRITE: 'SY-SUBRC =', SY-SUBRC. 
SKIP. 
WRITE: / Record1-ColP, Record1-ColQ.

上面的代碼產(chǎn)生以下輸出:

SY-SUBRC =    2 

4         9

在上面的示例中,mytable是散列表類型的內(nèi)部表,其中Record1作為工作區(qū),ColP作為唯一鍵。 最初,mytable填充了六行,其中ColP字段包含SY-INDEX變量的值,ColQ字段包含(SY-INDEX + 5)值。

Record1工作區(qū)分別填充4和12作為ColP和ColQ字段的值。 在使用COMPARING子句將ColP鍵字段的值與Record1工作區(qū)中的值進行比較之后,READ語句讀取表的行,然后復(fù)制工作區(qū)中讀取行的內(nèi)容。 SY-SUBRC變量的值顯示為2,因為當(dāng)ColP字段中的值為4時,ColQ中的值不是12,而是9。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號