Column ID is not really a special field in ALV. It is always filled automatically by ALV and your manual entries are overwritten and set to the same value as COL_POS (Column position).
I’ve prepared a demo program (ZDEMO_AIN_CL46) to show you, how the COL_ID is changing on a base of COL_POS. On the selection screen you can find two radio-buttons.
Figure 120 ZDEMO_AIN_CL46 Selection screen
When you select the first option - “COL_ID filled”, the FCAT will be created with manual COL_ID.
Figure 121 ZDEMO_AIN_CL46 FCAT with manual COL_ID
As you will notice on the screen, or while debugging the code, after the method SET_TABLE_FOR_THE_FIRST_DISPLAY is called, the FCAT is changed and so are the COL_ID entries. Now it is equal to COL_POS, which was in this case also set manually on a base of columns order in the FCAT table.
Figure 122 ZDEMO_AIN_CL46 FCAT of the first selection option after displaying ALV
Using the option “COL_ID & COL_POS filled” on the selection screen, the following FCAT will be build. You ca notice that the COL_ID is different than COL_POS. Additionally after the creation of FCAT, I’ve sorted it by FIELDNAME, just to show you, that in this case the sequence of the field doesn’t matter.
Figure 123 ZDEMO_AIN_CL46 FCAT with COL_ID and COL_POS filled
As you will notice on the screen, now field position is set according COL_POS column. Additionally COL_ID is set exactly to the same value.
Figure 124 ZDEMO_AIN_CL46 FCAT after displaying ALV
While there is no effect of this field, simply forget about it.