2016-03-29 3 views
2

Ich habe dieses book studiert und zitiert daraus:Wofür wird WITH HEADER LINE in ABAP verwendet?

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. 

Und dann auf den folgenden Seiten:

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. 

Ich bin in diesem Augenblick verwirrt. Gibt das erste Beispiel nur eine interne Tabelle oder eine interne Tabelle und eine Struktur mit demselben Namen an?

Antwort

4

Die Frage sollte lauten "Was war WITH HEADER LINE in ABAP verwendet". Sie sollten sie nur in altem Code sehen. Sie sind im OO-Kontext verboten.

Beantworten Sie Ihre Frage. Es ist beides. Es deklariert eine interne Tabelle customer_tab[] und eine Struktur customer_tab.

Sie könnten dann solche "erstaunliche" Dinge wie tun.

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. 

oder

APPEND customer_tab. 

Wie Sie sehen es kürzer und recht ansprechend ist für seine Kürze verwendet werden. Obwohl es kaum lesbar und verwirrend ist, wird es daher als veraltet markiert.

Oooops und ein Punkt mehr! Sie sollten auch den Unterschied zwischen

CLEAR customer_tab. 

und

REFRESH customer_tab. 
+0

Aber das erste Beispiel hat keine "WITH HEADER LINE", wie wird eine Struktur erstellt? –

+1

In diesem Fall ist es überflüssig, denke ich. Wenn Sie sich die [Dokumentation] (http://help.sap.com/abapdocu_702/en/abapdata_begin_of_occurs.htm) des Schlüsselwortes 'BEGIN OF OCCURS' ansehen, sehen Sie das folgende Zitat "Diese Variante der Anweisungsliste, die mit DATA eingeführt wurde BEGIN OF (was in Klassen verboten ist) deklariert eine interne Tabelle itab als eine Standardtabelle mit einem strukturierten Zeilentyp und einer Kopfzeile. ". – Jagger

+0

Wenn Sie die Kopfzeile explizit deklarieren möchten, können Sie sie wie folgt verwenden: 'DATA: l_t_table TYPE STANDARD TABELLE VON t000 MIT HEADER LINE' Dann ist der Zusatz' WITH HEADER LINE' nicht redundant. Aber bitte tu es nicht im wirklichen Leben. :) – Jagger

3

Beide der Erklärungen erfahren Sie zeigen, eine Tabelle mit Kopfzeile erstellen. In der ersten Deklaration wird nicht explizit "WITH HEADER LINE" angegeben, es werden jedoch ein Arbeitsbereich und eine Tabelle erstellt, als ob Sie auch die Anweisung "WITH HEADER LINE" verwendet hätten. Informationen zu Kopfzeilen finden Sie unter SAP Help. Die Dokumentation, auf die Sie verweisen, ist veraltete Syntax. Sie werden es aufgrund von Legacy-Code sehen, also müssen Sie es verstehen, aber vermeiden Sie diese Syntax.

+0

Wie lautet die Syntax zum Erstellen einer Tabelle OHNE Kopfzeile? –

+2

Zum Beispiel 'DATA: l_t_table TYPE STANDARD TABELLE von t000'. Dadurch wird eine Standardtabelle ohne Kopfzeile erstellt, sodass Sie zum Beispiel zum Durchlaufen eines Feldsymbols verwenden müssen. – 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. 

Meine persönliche Präferenz ist Syntax zu verwenden, wie oben gezeigt, in TYPEN, ich habe den Strukturtyp und Tabellentyp erstellt. Dann werde ich in DATA die tatsächliche Tabelle und Struktur erstellen. Im Beispiel deklariere ich eine globale Struktur und Tabelle. Um nur eine Tabelle aus einer Datenwörterbuchreferenz zu deklarieren, verwende ich die Deklaration, die als GT_EXP angezeigt wird. Die Inline-Kommentare sind nur für diese Diskussion, ich verwende dieses Format nicht in einem Programm an sich.