2014-07-24 10 views
6

Ho un dubbio. Posso sapere qual è la differenza tra LIKE e LIKE LINE OF in ABAP? Ho visto da qualche parte che mentre dichiaro l'area di lavoro che stanno dichiarando.Qual è la differenza tra la riga "Mi piace" e "Mi piace" in ABAP?

wa LIKE it_one 
wa LIKE LINE OF it_one 
+0

Mi chiedo se avete preso uno sguardo alla documentazione in linea a http://help.sap.com/saphelp_nw04/helpdata/en/9b/239fa610de11d295390000e8353423 /content.htm – vwegert

risposta

4

LIKE LINE OF significa che la variabile sarà del tipo di riga della tabella.

LIKE significa che la variabile sarà esattamente dello stesso tipo di quella che si trova dopo questa parola chiave.

Esempio

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

Solo per affinare questo - 'table_line' non è tecnicamente un tipo di dati. Quello che probabilmente intendi è un tavolo interno non strutturato. In ogni caso - non solo per i tavoli strutturati! - 'LIKE LINE OF' fa riferimento al tipo di linea (chiamalo tipo di record se lo desideri) della tabella. – vwegert

+0

Grazie per il suggerimento. Riformulerò la risposta – Jagger

1

Beh, la differenza è quando si passa tabella in subroutine con l'utilizzo o tabelle.

In 1 caso si otterrà un tavolo senza riga di intestazione, quindi WA_LIKE sarà anche un tavolo.

Nel secondo caso IT_DATA sarà un tavolo con headerline: questo provoca IT_DATA realtà significa IT_DATA come struttura o IT_DATA[] come tavolo, a seconda del contesto. In particolare, DATA ... LIKE IT_DATA farà riferimento a intestazione e non a tutta la tabella interna.

Si può controllare questo utilizzando un debugger:

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. 
Problemi correlati