‎2007 Oct 03 6:19 AM
hi....can anybody tell me the difference between TYPE and LIKE .....in the declaration of table or wa.
‎2007 Oct 03 6:29 AM
Hi Reshma,
TYPE:
With TYPE addition, you can refer either to local data types of the same ABAP program or on global data types of the Dictionaries. Local types mask global types that have the same names. When typing the interface parameters or field symbols, a reference is also possible to generic types ANY, ANY TABLE, INDEX TABLE, TABLE or STANDARD TABLE, SORTED TABLE and HASHED TABLE.
LIKE:
With the LIKE addition, you can refer to all visible data objects at the ABAP program's positon in question. Only the declaration of the data object must be known. In this case it is totally irrelevant whether the data object already exists physically in memory during the LIKE reference. Local data objects mask global data objects that have the same name.
**Reward if useful
‎2007 Oct 03 6:25 AM
Hi,
type -- refer to data type(may be user defined using types)
like -- refer to database fields.
For all practical purposes there are the same. The only additional advantage with types is that you can define your own types(including complex ones) in the data dictionary and reuse them accross various programs.
But within a program if two variables are defined one using LIKE and another using TYPE, both referring to the same field, then there is no difference.
If I include a type pool within a program, then I can define my variables only using TYPE to refer to any type defined in that pool. I cannot use LIKE in this scenario. Also, if I want to use native types like C, N, etc, I cannot use LIKE there either. I can use LIKE ABC only if ABC is in the database or if ABC is defined previously in the same program.
I can use TYPE ABC, if ABC is defined in database as a TYPE and included in the program with the statement TYPE-POOLS. I can use it, if it is the native types. I can use it, if it is already defined in the dictionary as a structure/table or structure/table field, or even if it is defined as a data element or a domain. So I can declare a variable V_BUKRS TYPE BUKRS, but I cannot define a variable V_BUKRS LIKE BUKRS.
But if I intend to use V_BUKRS to store company code, I will prefer to declare it as V_BUKRS LIKE T001-BUKRS, only because if tomorrow for some reason, the definition of T001-BUKRS changes to a data element for example, BUKRS_N(say DEC 4) instead of the data element BUKRS(CHAR 4) that it refers to now, I don't have to change my programs because I am referring to the table field and inhereting its properties. Whereas, had I declared my V_BUKRS TYPE BUKRS and the table now changed to BUKRS_N, I will be forced to change my program as there will be a type incompatability.
Also,
When you take reference of objects that occupies memory ( data elements,variables decalared with DATA) then use LIKE and when you are taking ref. to a elementry data types(C,I,D,T...) or to a variables decalared with TYPES statement then we use TYPE
Reward points if useful
‎2007 Oct 03 6:29 AM
Hi Reshma,
TYPE:
With TYPE addition, you can refer either to local data types of the same ABAP program or on global data types of the Dictionaries. Local types mask global types that have the same names. When typing the interface parameters or field symbols, a reference is also possible to generic types ANY, ANY TABLE, INDEX TABLE, TABLE or STANDARD TABLE, SORTED TABLE and HASHED TABLE.
LIKE:
With the LIKE addition, you can refer to all visible data objects at the ABAP program's positon in question. Only the declaration of the data object must be known. In this case it is totally irrelevant whether the data object already exists physically in memory during the LIKE reference. Local data objects mask global data objects that have the same name.
**Reward if useful