I see in many existing ABAP programs that standard internal tables are declared without key fields, for instance:
TYPES type_itab TYPE STANDARD TABLE OF sflight WITH DEFAULT KEY.
DATA itab_0 TYPE type_itab.
DATA itab_1 TYPE TABLE OF sflight.
DATA itab_2 TYPE STANDARD TABLE OF sflight.
DATA itab_3 TYPE STANDARD TABLE OF sflight WITH DEFAULT KEY.
DATA itab_4 TYPE STANDARD TABLE OF sflight WITH EMPTY KEY.
etc.
And one line is usually read this way (with x being the number of any of the internal tables above):
SORT itab_x BY carrid.
READ TABLE itab_x WITH KEY carrid = 'MH' BINARY SEARCH...
So far, so good.
Now, it's theoretically possible to declare some fields explicitly in the key, for standard internal tables (usually, the key fields are declared only for sorted and hashed tables):
DATA itab_5 TYPE STANDARD TABLE OF sflight WITH KEY carrid.
Reading the line with the above code is still possible, and it's the same performance.
So, what is the interest of declaring key fields explicitly in STANDARD internal tables?