Select 选择所有条目

Select 选择所有条目,select,abap,opensql,Select,Abap,Opensql,我试图对select语句-abap中的所有条目执行select。我不清楚select for entries的作用。有人知道吗 请查看以下声明: 一, 二, 请让我知道两种说法的区别 湿婆有一些明显的区别: 不同的桌子 不同的目标场 第二次选择有一个语法问题:您使用的是表单,而我用编辑更正了它 其他差异: 选择1。在where子句中使用。因此,它使用选择选项或范围对象 对于it_bkpf中的所有条目,意味着it_bkpf内部表包含您要选择的元素列表。或者换句话说:选择bseg中的所有条目,其中归

我试图对select语句-abap中的所有条目执行select。我不清楚select for entries的作用。有人知道吗

请查看以下声明:

一,

二,

请让我知道两种说法的区别


湿婆有一些明显的区别:

不同的桌子 不同的目标场 第二次选择有一个语法问题:您使用的是表单,而我用编辑更正了它 其他差异:

选择1。在where子句中使用。因此,它使用选择选项或范围对象


对于it_bkpf中的所有条目,意味着it_bkpf内部表包含您要选择的元素列表。或者换句话说:选择bseg中的所有条目,其中归档的belnr是内部表bseg的一个元素。

您将通过ST05事务得到明确的答案

您可以执行st05事务,选择跟踪SQL并激活 查出 然后运行代码。 再次输入st05选择停用跟踪,然后查看跟踪结果。 在这里,您可以看到转发到数据库服务器的确切SQL代码。由于BSEG是集群表,您不能使用直观的标题项联接来检索所需的财务变动信息。这只是因为包括BSEG在内的多个表存储在单个数据库表中,所以数据库服务器在技术上无法分离BSEG行并找到BSEG特定的字段以进行适当的联接


所以,您可以在应用服务器上进行类似连接的构造。首先,从标题表BKPF检索所有与标题相关的列。下一步当选择。。。对于。。。is executed application server将获取一小部分标题行(通常为5),并构造SQL查询以检索与该部分对应的项目包。接下来,所有这些部分将合并到一个内部表中。因此,如果您可以执行正常连接,那么只会有所需文档的项目。

以下是我理解的情况。这两个语句可能是一个接一个地执行的:

第一条语句从bkpf表中选择几个条目。这些条目存储在内部表it_bkpf say belnr 1、2、3中

然后,这些条目中的每个条目都将用作select 2的一部分。for all条目将表bseg中的belnr与第一条语句中的内部表it_bkpf中的belnr相匹配。然后将匹配项放入内部表it_bseg中

在您给出的示例中,如果SQL 2中的where子句是s_belnr中的where belnr,而不是所有条目的整体,则情况几乎相同。只有当您出于其他目的需要它的内容时,这才有意义。另一种典型情况是,如果您使用一些程序逻辑来确定for all entries子句中使用的内部表的内容,而不是直接从数据库中读取它


所有条目一目了然:确保for all entries中的内部表不为空-然后将选择from子句中的整个表。

27个问题,仅接受2个?请注意这一点。不同之处在于,这些语句有完全不同的列列表,但由于没有关于表布局的信息,因此在这方面我无法提供太多帮助。花更多的时间解释这种情况会有所帮助。@damir:列名来自标准SAP表,因此除非您想使用别名,否则这些名称在德语中没有意义-
select bukrs belnr xblnr budat 
    from bkpf 
    into table it_bkpf 
    where belnr in s_belnr
 select bukrs belnr buzei gsber zuonr wrbtr kunnr 
    from bseg 
    into table it_bseg  
    for all entries in it_bkpf 
    where belnr = it_bkpf-belnr.