SAP ABAP中的单记录缓冲

SAP ABAP中的单记录缓冲,abap,Abap,我的桌子是stud +-----+------+-------+ | no | name | grade | +-----+------+-------+ | 101 | naga | A | | 102 | raj | A | | 103 | john | A | +-----+------+-------+ 我使用的查询是: SELECT * FROM stud WHERE no = 101 AND grade = 'A'. 如果am使用单记录缓冲,缓冲区

我的桌子是
stud

+-----+------+-------+
| no  | name | grade |
+-----+------+-------+
| 101 | naga | A     | 
| 102 | raj  | A     |
| 103 | john | A     |
+-----+------+-------+ 
我使用的查询是:

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

如果am使用单记录缓冲,缓冲区中存储了多少数据?

这来自SE38中的ABAP关键字文档:

SAP缓冲区-单记录缓冲

仅缓冲表中实际访问的行。 这需要的缓冲区空间比使用“通用”或“完全”时少 缓冲。另一方面,还需要更多的行政工作 更直接的数据库访问

因此,由于查询返回单个记录(基于显示的数据),因此它应该只获得一行并保存在缓冲区中


我建议查看SAP帮助和谷歌-还可以查看选择的单个键和未完全指定的键-在某些情况下缓冲区被绕过会出现问题-进行读取以供参考。

此查询没有任何作用。没有“进入”条款。这意味着它不会存储任何选定的内容

你可能正在考虑做这样的事情

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'.

建议使用
into
-子句,但不是必需的。如果使用
tables stud.
定义表,则可以省略into子句。啊,是的。在这种情况下,他只需要endselect语句。>…或
select single…