2016-12-05 51 views
-2

我的表格是studSAP ABAP中的單記錄緩衝

+-----+------+-------+ 
| no | name | grade | 
+-----+------+-------+ 
| 101 | naga | A  | 
| 102 | raj | A  | 
| 103 | john | A  | 
+-----+------+-------+ 

我使用的查詢是:

SELECT * FROM stud WHERE no = 101 AND grade = 'A'. 

如果使用單記錄緩衝是,有多少數據被存儲在緩衝區?

回答

1

這是ABAP關鍵字文檔中SE38:

SAP緩衝區 - 單記錄緩衝

只有在表中的行緩衝被實際訪問。 與使用通用緩衝區或全緩衝區相比,這需要較少的緩衝區空間。另一方面,需要更多的管理工作,並且數據庫訪問更直接。

因此,由於您的查詢返回單個記錄(基於您顯示的數據),它應該只獲得一行並保存在緩衝區中。

我會建議看看SAP的幫助和谷歌 - 也看看SELECT SINGLE和不完整指定的鍵 - 在某些情況下緩衝區被繞過的問題 - 有一個讀取參考。

1

此查詢不會執行任何操作。沒有「進入」條款。這意味着它不會存儲任何選中的內容

你可能希望做這樣的事情....

SELECT * FROM stud into wa_stud WHERE no = 101 AND grade = 'A'. 
    "processing of each single row is performed here 
endselect. 

或者可能是這樣的,其中只有1行(第一行按主鍵排序)被選中...

select single * from stud into wa_stud where no = 101 and grade = 'A' . 

或者您可能希望將所有東西都放入表中,這意味着數字和等級不包括完整的主鍵。

select * from stud into table it_stud where no = 101 and grade = 'A'. 
+1

建議使用'into'-從句,但不是必需的。如果使用'stud stud.'定義表格,則可以省略into-clause。 – knut

+1

啊是的。在那種情況下,他只需要endselect語句。 –

+1

> ...或「選擇單個...」 – knut