DATA: alv_table TYPE REF TO cl_salv_table, alv_ds TYPE REF TO cl_salv_display_settings, alv_cols TYPE REF TO cl_salv_columns, alv_col TYPE REF TO cl_salv_column, alv_func TYPE REF TO cl_salv_functions_list, alv_ddic TYPE salv_s_ddic_reference. *... Create Instance CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = alv_table CHANGING t_table = ptab_out. * add grid lines and background colors alv_table->get_display_settings( RECEIVING value = alv_ds ). alv_ds->set_vertical_lines( EXPORTING value = 'X' ). alv_ds->set_horizontal_lines( EXPORTING value = ' ' ). alv_ds->set_striped_pattern( EXPORTING value = 'X' ). alv_ds->set_list_header( value = 'Jubiläumsliste' ). * enable default ALV functions alv_table->get_functions( RECEIVING value = alv_func ). alv_func->set_all( EXPORTING value = 'X' ). * set headings (set field references) alv_table->get_columns( RECEIVING value = alv_cols ). * fir column size to match values width alv_cols->SET_OPTIMIZE( EXPORTING value = 'X' ). "Eintrittsdatum IT 0000 PERFORM setheadertext USING 'EINDAT_IT00' 'EintrIT00' 'Eintr IT00' 'Eintritt IT0000'. "Austrittsdatum IT 0000 PERFORM setheadertext USING 'AUSDAT_IT00' 'AustrIT00' 'Austr IT00' 'Austritt IT0000'. "Eintrittsdatum IT 0001 PERFORM setheadertext USING 'EINDAT_IT01' 'EintrIT01' 'Eintr IT01' 'Eintritt IT0001'. "Eintrittsdatum IT 0016 PERFORM setheadertext USING 'EINDAT_ERST_IT16' 'ErstE.IT16' 'ErstEintr IT16' 'Ersteintritt IT0016'. PERFORM setheadertext USING 'EINDAT_KONZ_IT16' 'KonzE.IT16' 'KonzEintr IT16' 'Konzerneintritt IT0016'. "PERFORM setheaderfieldreference USING 'EINDAT_ERST_IT16' 'P0016' 'EINDT'. "PERFORM setheaderfieldreference USING 'EINDAT_KONZ_IT16' 'P0016' 'KONDT'. PERFORM setheadertext USING 'EINDAT_IT41' 'EintrIT41' 'Eintr IT41' 'Eintritt IT0041'. "Theoretischer Eintritt PERFORM setheadertext USING 'EINDAT_RECHN' 'Rechn.Ein' 'Rechn.Eintritt' 'Rechnerischer Eintritt'. PERFORM setheadertext USING 'ALTER' 'Alter' 'Alter' 'Alter'. PERFORM setheadertext USING 'DIEJA' 'DienstJ.' 'Dienstjahre' 'Dienstjahre'. PERFORM setheaderfieldreference USING 'SACHN' 'P0001' 'SACHP'. PERFORM setheadertext USING 'KTEXT' 'KstBez' 'Kost.Bez.' 'Kostenstellenbezeichnung'. PERFORM setheaderfieldreference USING 'ADRS_LINE1' 'P0006' 'STRAS'. PERFORM setheaderfieldreference USING 'ADRS_LINE2' 'P0006' 'ORT01'. * make columns fit to size alv_cols->set_optimize( ). IF it16 IS INITIAL. alv_cols->get_column( EXPORTING columnname = 'EINDAT_IT41' RECEIVING value = alv_col ). alv_col->set_visible( EXPORTING value = ' ' ). ENDIF. IF it41 IS INITIAL. alv_cols->get_column( EXPORTING columnname = 'EINDAT_ERST_IT16' RECEIVING value = alv_col ). alv_col->set_visible( EXPORTING value = ' ' ). alv_cols->get_column( EXPORTING columnname = 'EINDAT_KONZ_IT16' RECEIVING value = alv_col ). alv_col->set_visible( EXPORTING value = ' ' ). ENDIF. *... Display Table alv_table->display( ). *------------------------------------------ * Change reference field for column header *------------------------------------------ FORM setheaderfieldreference USING value(out_field) value(ddic_table) value(ddic_field). TRY. alv_cols->get_column( EXPORTING columnname = out_field RECEIVING value = alv_col ). CATCH cx_salv_not_found. WRITE: / 'ERROR: Spalte ', out_field, ' nicht gefunden.'. ENDTRY. alv_ddic-table = ddic_table. alv_ddic-field = ddic_field. alv_col->set_ddic_reference( value = alv_ddic ). ENDFORM. "setHeaderFieldReference *------------------------------------------ * Set short, middle and long title for column *------------------------------------------ FORM setheadertext USING value(out_field) value(title_short) value(title_med) value(title_long). DATA: ts(10) TYPE c, tm(20) TYPE c, tl(40) TYPE c. TRY. alv_cols->get_column( EXPORTING columnname = out_field RECEIVING value = alv_col ). CATCH cx_salv_not_found. WRITE: / 'ERROR: Spalte ', out_field, ' nicht gefunden.'. ENDTRY. IF STRLEN( title_short ) GT 10. ts = title_short(10). ELSE. ts = title_short. ENDIF. IF STRLEN( title_med ) GT 20. tm = title_med(20). ELSE. tm = title_med. ENDIF. IF STRLEN( title_long ) GT 40. tl = title_long(40). ELSE. tl = title_long. ENDIF. alv_col->set_short_text( value = ts ). alv_col->set_medium_text( value = tm ). alv_col->set_long_text( value = tl ). ENDFORM. "setHeaderFieldReference method get_column . data: ls_column type salv_s_column_ref. read table me->t_columns into ls_column with key columnname = columnname. if sy-subrc ne 0. raise_column_not_found( method = 'GET_COLUMN' columnname = columnname ). endif. value = ls_column-r_column. endmethod. "get_column
Following snippets enable you to manipulate most ALV functionalities: