Hi,
You can also use RTTC .
Note the use LVC_T_SCOL , The same idea can be used for lvc_t_styl .
Code:
*----------------------------------------------------------------------*
FORM test_07 .
* Create a table with LVC_T_SCOL for ALV .
DATA: it_component TYPE cl_abap_structdescr=>component_table .
DATA: st_component LIKE LINE OF it_component .
DATA: ob_abap_structdescr TYPE REF TO cl_abap_structdescr,
ob_abap_tabledescr TYPE REF TO cl_abap_tabledescr,
r_data_tab TYPE REF TO data,
r_data_str TYPE REF TO data.
st_component-name = 'IT_SCOL'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'LVC_T_SCOL' ).
APPEND st_component TO it_component .
st_component-name = 'CARRID'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'S_CARR_ID' ).
APPEND st_component TO it_component .
st_component-name = 'CONNID'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'S_CONN_ID' ).
APPEND st_component TO it_component .
st_component-name = 'FLDATE'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'S_DATE' ).
APPEND st_component TO it_component .
st_component-name = 'SEATSMAX_B'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'S_SMAX_B' ).
APPEND st_component TO it_component .
st_component-name = 'SEATSOCC_B'.
st_component-type ?= cl_abap_elemdescr=>describe_by_name( 'S_SOCC_B' ).
APPEND st_component TO it_component .
TRY.
ob_abap_structdescr = cl_abap_structdescr=>create( it_component ).
CATCH cx_sy_struct_creation .
ENDTRY.
TRY.
ob_abap_tabledescr = cl_abap_tabledescr=>create( ob_abap_structdescr ).
CATCH cx_sy_table_creation .
ENDTRY.
CREATE DATA: r_data_tab TYPE HANDLE ob_abap_tabledescr ,
r_data_str TYPE HANDLE ob_abap_structdescr .
FIELD-SYMBOLS: <it_data> TYPE INDEX TABLE,
<st_data> TYPE ANY.
ASSIGN: r_data_tab->* TO <it_data> ,
r_data_str->* TO <st_data> .
SELECT * INTO CORRESPONDING FIELDS OF TABLE <it_data>
FROM sflight UP TO 20 ROWS .
FIELD-SYMBOLS: <it_scol> TYPE lvc_t_scol .
DATA: st_scol LIKE LINE OF <it_scol> .
DATA: ob_abap_random_2 TYPE REF TO cl_abap_random_int .
ob_abap_random_2 = cl_abap_random_int=>create( min = 1 max = 7 ) .
LOOP AT <it_data> ASSIGNING <st_data> .
ASSIGN COMPONENT 'IT_SCOL' OF STRUCTURE <st_data> TO <it_scol>.
CLEAR <it_scol> .
* Some complex :-) logic to decide the color used .
st_scol-color-col = ob_abap_random_2->get_next( ) .
st_scol-color-int = 0.
st_scol-color-inv = 0.
st_scol-fname = 'SEATSOCC_B' .
INSERT st_scol INTO TABLE <it_scol> .
ENDLOOP.
ENDFORM . "test_07
*----------------------------------------------------------------------*