2012-08-08 34 views
1

我是ABAP的新手,请耐心等待。没有标题的表格

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

我试过使用“进入相应的领域”,并没有工作。

我提供我的代码在这里:http://pastebin.com/y64T2nah

回答

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帮助文档。

感谢

Dhivya

+1

SAP建议不要使用标题行。答案的循环部分可以工作,但不是建议标题行,对于所有条目选择会更有意义。 – 2012-08-09 10:38:15

+0

谢谢大家! – Richard 2012-08-09 14:12:04

4

您也可以使用加法“对于所有条目”的声明“选择”:“有标题行”或额外的工作区

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上下文中使用“with header line”是不可能的。

+0

值得一提的是,对于x中的所有入口而言,这是一个不太酷的加法,只有当x是一个相当小的itab(关于行数)时才应该使用它。当然,你提到它是很好的。 – 2012-08-18 06:30:08

+0

我会将第一个选择更改为: 'SELECT ebeln netwr werks INTO TABLE it_combine FROM ekpo WHERE netwr IN s_netwr。 SORT it_combine。 从it_combine中删除相邻的重复项比较所有的域。' 要将重复项移除到ABAP,而不是数据库引擎。 – bariz 2012-09-03 17:31:32