What is the difference between like and like line of in ABAP?

14,895

Solution 1

LIKE LINE OF means that the variable will be of the table line type.

LIKE means that the variable will be exactly of the same type as the one sitting after this key word.

Example

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.

Solution 2

Well, the difference is when you pass table into subroutine with USING or TABLES.

In 1st case you will get a table without headerline, thus WA_LIKE will be a table too.

In 2nd case IT_DATA will be a table with headerline: this causes IT_DATA actually means IT_DATA as structure or IT_DATA[] as table, depending on context. Particulary, DATA ... LIKE IT_DATA will refer to headerline, and not entire internal table.

You may check this using a 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.
Share:
14,895
Srinivas Rachumallu
Author by

Srinivas Rachumallu

Updated on June 23, 2022

Comments

  • Srinivas Rachumallu
    Srinivas Rachumallu almost 2 years

    I have one doubt. May I know what the difference between LIKE and LIKE LINE OF in ABAP is? I have seen somewhere that while declaring the work area they are declaring.

    wa LIKE it_one
    wa LIKE LINE OF it_one
    
  • vwegert
    vwegert almost 10 years
    Just to refine this - table_line is technically not a data type. What you most probably mean is an unstructured internal table. In any case - not just for structured tables! - LIKE LINE OF refers to the line type (call it record type if you like) of the table.
  • Jagger
    Jagger almost 10 years
    Thanks for the hint. I will rephrase the answer.