2014-07-24 12 views
6

Ich habe einen Zweifel. Kann ich wissen, was der Unterschied zwischen LIKE und LIKE LINE OF in ABAP ist? Ich habe irgendwo gesehen, dass während der Deklaration der Arbeitsbereich erklärt wird.Was ist der Unterschied zwischen Gleichen und Gleichen in ABAP?

wa LIKE it_one 
wa LIKE LINE OF it_one 
+0

Ich frage mich, wenn Sie einen Blick auf die Online-Dokumentation zu http://help.sap.com/saphelp_nw04/helpdata/en/9b/239fa610de11d295390000e8353423 genommen haben /content.htm – vwegert

Antwort

4

LIKE LINE OF bedeutet, dass die Variable der Tabelle Zeilentyp sein.

LIKE bedeutet, dass die Variable als eine genau der gleichen Art sein wird, nach diesem Schlüsselwort sitzt.

Beispiel

TYPES: BEGIN OF t_my_example_structure, 
    my_example_field1 TYPE i, 
    my_example_field2 TYPE n, 
    END OF t_my_example_structure. 

TYPES tt_my_example_structure TYPE STANDARD TABLE OF t_my_example_structure. 

DATA: l_tab_my_example TYPE tt_my_example_structure. 

* has structure of row of l_tab_my_example so in this case t_my_example_structure. 
DATA: l_str_my_example LIKE LINE OF l_tab_my_example. 

* is exactly the same table type as l_tab_my_example so in this case tt_my_example_structure. 
DATA: l_tab_like_my_example LIKE l_tab_my_example. 

* I use it often for LOOP AT <tab> ASSIGNING <fs>. 
FIELD-SYMBOLS: <fs_str_my_example> LIKE LINE OF l_tab_my_example. 
+0

Nur um das zu verfeinern - 'table_line' ist technisch kein Datentyp. Was Sie wahrscheinlich meinen, ist eine unstrukturierte interne Tabelle. Auf jeden Fall - nicht nur für strukturierte Tabellen! - 'LIKE LINE OF' bezieht sich auf den Linientyp (nennen Sie es Datensatztyp, wenn Sie möchten) der Tabelle. – vwegert

+0

Danke für den Hinweis. Ich werde die Antwort umformulieren. – Jagger

1

Nun, das ist der Unterschied, wenn Sie Tabelle in Unterprogramm mit weiter verwenden oder TABLES übergeben.

Im ersten Fall erhalten Sie eine Tabelle ohne Headerzeile, also WA_LIKE wird auch eine Tabelle sein.

Im zweiten Fall IT_DATA wird eine Tabelle mit Header sein: dies verursacht IT_DATA bedeutet eigentlich IT_DATA als Struktur oder IT_DATA[] als Tabelle, je nach Kontext. Insbesondere bezieht sich DATA ... LIKE IT_DATA auf die Kopfzeile und nicht auf die gesamte interne Tabelle.

Sie können diese mit einem Debugger überprüfen:

DATA T_DATA TYPE STRING_TABLE. 

PERFORM TEST_01 USING T_DATA. 
PERFORM TEST_02 TABLES T_DATA. 

FORM TEST_01 USING IT_DATA TYPE STRING_TABLE. 
    DATA : WA_LIKE LIKE   IT_DATA "This is a Table 
     , WA_LINE LIKE LINE OF IT_DATA. 
    BREAK-POINT. 
ENDFORM. 

FORM TEST_02 TABLES IT_DATA TYPE STRING_TABLE. 
    DATA : WA_LIKE LIKE   IT_DATA "This is a String 
     , WA_LINE LIKE LINE OF IT_DATA. 
    BREAK-POINT. 
ENDFORM. 
Verwandte Themen