2012-08-08 40 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