
- SAP ABAP 教程
- SAP ABAP - 首頁
- SAP ABAP - 概述
- SAP ABAP - 環境
- SAP ABAP - 螢幕導航
- SAP ABAP - 基本語法
- SAP ABAP - 資料型別
- SAP ABAP - 變數
- SAP ABAP - 常量和字面量
- SAP ABAP - 運算子
- SAP ABAP - 迴圈控制
- SAP ABAP - 決策
- SAP ABAP - 字串
- SAP ABAP - 日期和時間
- SAP ABAP - 資料格式化
- SAP ABAP - 異常處理
- SAP ABAP - 字典
- SAP ABAP - 資料域
- SAP ABAP - 資料元素
- SAP ABAP - 表格
- SAP ABAP - 結構
- SAP ABAP - 檢視
- SAP ABAP - 搜尋幫助
- SAP ABAP - 鎖定物件
- SAP ABAP - 模組化
- SAP ABAP - 子程式
- SAP ABAP - 宏
- SAP ABAP - 函式模組
- SAP ABAP - 包含程式
- SAP ABAP - Open SQL 概述
- SAP ABAP - Native SQL 概述
- SAP ABAP - 內部表
- SAP ABAP - 建立內部表
- ABAP - 填充內部表
- SAP ABAP - 複製內部表
- SAP ABAP - 讀取內部表
- SAP ABAP - 刪除內部表
- SAP ABAP - 面向物件
- SAP ABAP - 物件
- SAP ABAP - 類
- SAP ABAP - 繼承
- SAP ABAP - 多型
- SAP ABAP - 封裝
- SAP ABAP - 介面
- SAP ABAP - 物件事件
- SAP ABAP - 報表程式設計
- SAP ABAP - 對話程式設計
- SAP ABAP - 智慧表單
- SAP ABAP - SAPscript
- SAP ABAP - 客戶出口
- SAP ABAP - 使用者出口
- SAP ABAP - 業務附加功能
- SAP ABAP - Web Dynpro
- SAP ABAP 有用資源
- SAP ABAP - 問答
- SAP ABAP - 快速指南
- SAP ABAP - 有用資源
- SAP ABAP - 討論
SAP ABAP - 讀取內部表
我們可以使用以下 READ TABLE 語句的語法讀取表的行:
READ TABLE <internal_table> FROM <work_area_itab>.
在此語法中,<work_area_itab> 表示式表示一個與<internal_table> 表的行型別相容的工作區。我們可以使用 WITH KEY 子句在 READ 語句中指定搜尋鍵,但不能指定表鍵,如下面的語法所示:
READ TABLE <internal_table> WITH KEY = <internal_tab_field>.
這裡,內部表的整行用作搜尋鍵。表的整行的內容與<internal_tab_field> 欄位的內容進行比較。如果<internal_tab_field> 欄位的值與表的行型別不相容,則會根據表的行型別轉換這些值。搜尋鍵允許您查詢內部表中沒有結構化行型別的條目,即行是單個欄位或內部表型別的情況。
以下 READ 語句的語法用於使用 COMPARING 子句指定工作區或欄位符號:
READ TABLE <internal_table> <key> INTO <work_area_itab> [COMPARING <F1> <F2>...<Fn>].
使用 COMPARING 子句時,指定的結構化行型別的表字段<F1>、<F2>…<Fn>會在傳輸之前與工作區的相應欄位進行比較。如果指定了 ALL FIELDS 子句,則 SAP 系統會比較所有元件。當 SAP 系統根據鍵找到條目時,SY-SUBRC 變數的值將設定為 0。此外,如果比較欄位的內容不相同或 SAP 系統找不到條目,則 SY-SUBRC 變數的值將設定為 2 或 4。但是,無論比較結果如何,只要 SAP 系統找到條目,就會將條目複製到目標工作區。
示例
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.
以上程式碼產生以下輸出:
SY-SUBRC = 2 4 9
在上面的示例中,mytable 是散列表型別的內部表,Record1 作為工作區,ColP 作為唯一鍵。最初,mytable 填充了六行,其中 ColP 欄位包含 SY-INDEX 變數的值,ColQ 欄位包含 (SY-INDEX + 5) 值。
Record1 工作區分別填充了 ColP 和 ColQ 欄位的值 4 和 12。READ 語句透過使用 COMPARING 子句將 ColP 鍵欄位的值與 Record1 工作區中的值進行比較後讀取表的行,然後將讀取的行內容複製到工作區中。SY-SUBRC 變數的值顯示為 2,因為當 ColP 欄位中的值為 4 時,ColQ 中的值不是 12,而是 9。