3

我收到语法错误:

“IT_COMBINE”是一个没有标题行的表,因此没有名为“EBELN”的组件。

我尝试过使用“进入相应的字段”,但这不起作用。

我的代码:

  19   Data it_combine type standard table of ty_combine.
  ...
  32    select ebeln lifnr ekorg bsart ekgrp
  33      into table it_po
  34       from ekko
  35         where ebeln = it_combine-ebeln. " <=== SYNTAX ERROR
  ...   
4

2 回答 2

4

如果您没有使用标题行声明内部表,则不能直接使用内部表中的字段。

有 2 种可能性可以更改您的代码。

  1. 你在第 35 行调用了字段 ebeln。由于你没有在第 19 行声明 it_combine 和标题行,你不能像这样使用 it_combine-ebeln。相反,您必须声明工作区

    Data wa_combine type ty_combine. 
    

并使用第 35 行中的工作区作为

Loop at it_combine into wa_combine .
 select ebeln lifnr ekorg bsart ekgrp
   into table it_po
    from ekko
      where ebeln = wa_combine-ebeln.
End Loop.

2 你必须用标题行声明你的内部表

 Data it_combine type standard table of ty_combine with header line.

有关标题行和工作区的简要说明,请参阅 Sap 帮助文档。

于 2012-08-09T04:56:32.687 回答
4

您还可以对语句“SELECT”使用附加的“FOR ALL ENTRIES IN”:

SELECT DISTINCT ebeln netwr werks INTO TABLE it_combine
  FROM ekpo
  WHERE netwr IN s_netwr. "in is only for select options

  CHECK it_combine[] IS NOT INITIAL. " not empty, obligatory

 SELECT ebeln lifnr ekorg bsart ekgrp
  INTO TABLE it_po  
  FROM ekko FOR ALL ENTRIES IN it_combine
  WHERE ebeln = it_combine-ebeln.

“带标题行”或附加工作区 - 不需要

此外,在 OOP 上下文中使用“带标题行”是不可能的。

于 2012-08-09T19:57:33.920 回答