2016-03-29 166 views
2

我一直在研究這個book並從中報價:什麼是用於ABAP的WITH HEADER LINE?

DATA: BEGIN OF CUSTOMER_TAB OCCURS 5, 
     KUNNR TYPE KNA1-KUNNR, 
     NAME1 TYPE KNA1-NAME1, 
     END OF CUSTOMER_TAB. 

This declaration creates an internal table and a structure using the same name: CUSTOMER_TAB. 

然後在以下網頁:

Declaring Both an Internal Table and a Structure by Referring to a Structured 
Local/Global TYPE or Local/Global Structure 

DATA <internal table name> {TYPE|LIKE} <structure name> OCCURS <number> WITH HEADER LINE. 

WITH HEADER LINE is a reserved key phrase. The addition of this phrase creates a structure. 

我在這一刻感到困惑。第一個例子是隻聲明一個內部表還是一個內部表和一個同名的結構?

回答

4

問題應該是「在ABAP中使用的HEADER LINE是什麼」。你只能在舊代碼中看到它們。他們在面向對象方面是被禁止的。

回答你的問題。它是兩個。它聲明瞭內部表customer_tab[]和結構customer_tab

然後,你可以做這樣的「驚人」的事情。

LOOP AT customer_tab. "loops at tab CUSTOMER_TAB and stores current record in header line structure CUSTOMER_TAB. :] 
    "do something with header line 
END LOOP. 

APPEND customer_tab. 

正如你看到它是短,相當吸引人用於它的簡潔。雖然它很難閱讀和混淆,因此被標記爲過時。

Oooops和更多一點!你也應該學會

CLEAR customer_tab. 

REFRESH customer_tab. 
+0

但是第一個例子沒有「WITH HEADER LINE」,結構是如何創建的? –

+1

在這種情況下,我猜是多餘的。如果您查看'BEGIN OF OCCURS'關鍵字的[documentation](http://help.sap.com/abapdocu_702/en/abapdata_begin_of_occurs.htm),您將看到以下引語「使用DATA引入了該語句列表的這種變體BEGIN OF(禁止在類中)聲明一個內部表itab作爲具有結構化行類型和標題行的標準表。「 – Jagger

+0

如果你想明確地聲明標題行,你可以像這樣使用它:'DATA:l_t_table TYPE STANDARD TABLE OF T000 WITH HEADER LINE.'然後'WITH HEADER LINE'加法不是多餘的。但請不要在現實生活中這樣做。 :) – Jagger

3

你是顯示聲明的兩個之間的區別,創建一個表頭行。第一個聲明沒有具體說明'WITH HEADER LINE',但它確實創建了一個工作區和一個表,就像您使用'WITH HEADER LINE'語句一樣。有關標題行的信息,請參閱此SAP Help。您引用的文檔是過時的語法。你會看到它由於遺留代碼,所以你需要了解它,但避免使用這種語法。

+0

創建沒有標題行的表的語法是什麼? –

+2

例如'DATA:l_t_table TYPE STANDARD TABLE OF t000'。這將創建一個沒有標題行的標準表,因此例如要循環訪問它,您需要使用字段符號。 – Jagger

0
types: 
    begin of typ_functions, 
    funcname type rs38l_fnam, 
    pname type pname, 
    fmode type fmode, 
    stext type rs38l_ftxt, 
    end of typ_functions, 
    typ_functions_t type standard table of typ_functions initial size 0. 

    data: 
      "Global Structure using structure type 
      gs_function type typ_functions, 
      "Global Table using table type typ_functions_t 
      gt_functions type typ_functions_t, 
      "Global Table using data dictionary structure 
      gt_exp  type standard table of rsdsexpr initial size 0. 

我個人的偏好是使用如上所示的語法,在TYPES中,我創建了結構類型和表類型。然後在DATA中,我將創建實際的表格和結構。在這個例子中,我聲明瞭一個全局結構和表格。對於從數據字典引用中聲明一個表,我使用GT_EXP顯示的聲明。內嵌評論僅用於本次討論,我不在程序本身中使用此格式。