2014-07-24 16 views

Odpowiedz

4

LIKE LINE OF oznacza, że ​​zmienna będzie typu linii tabeli.

LIKE oznacza, że ​​zmienna będzie dokładnie tego samego typu, co ta, która siedzi po tym słowie kluczowym.

Przykład

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

Aby to sprecyzować, 'table_line' nie jest technicznie typem danych. Najprawdopodobniej oznacza to niestrukturalny wewnętrzny stół. W każdym razie - nie tylko w przypadku tabel strukturalnych! - "LIKE LINIA OF" odnosi się do typu linii (nazwij go, jeśli chcesz, jeśli chcesz) tabeli. – vwegert

+0

Dzięki za podpowiedź. Przeformułuję odpowiedź. – Jagger

1

Cóż, różnica jest kiedy przechodzą stół do podprogramu z użyciem lub stołach.

W pierwszym przypadku otrzymasz tabelę bez nagłówka, dzięki czemu WA_LIKE będzie również tabelą.

2. W przypadku IT_DATA będzie tabela z headerline: powoduje IT_DATA faktycznie oznacza IT_DATA jako struktury lub IT_DATA[] w tabeli, w zależności od kontekstu. W szczególności, DATA ... LIKE IT_DATA będzie odnosić się do nagłówka, a nie do całej wewnętrznej tabeli.

Możesz sprawdzić to za pomocą debuggera:

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. 
Powiązane problemy