En el anterior post mostramos como generar un ALV utilizando solo la clase CL_SALV_TABLE. A continuación vamos a explicar como se modifican los atributos de las columnas del ALV cuando lo generamos utilizando la clase CL_SALV_TABLE.
A diferencia de los ALV generados con la bapi REUSE_ALV_GRID_DISPLAY o con la clase CL_GUI_ALV_GRID la clase CL_SALV_TABLE no utiliza un catalogo de campos o fieldcat para determinar las características de las columnas del listado ALV. Cada columna del ALV debe ser tratada como un objeto individual con métodos que nos permitirán modificar sus atributos y características como su descripción, longitud, ocultar la columna, etc...
A diferencia de los ALV generados con la bapi REUSE_ALV_GRID_DISPLAY o con la clase CL_GUI_ALV_GRID la clase CL_SALV_TABLE no utiliza un catalogo de campos o fieldcat para determinar las características de las columnas del listado ALV. Cada columna del ALV debe ser tratada como un objeto individual con métodos que nos permitirán modificar sus atributos y características como su descripción, longitud, ocultar la columna, etc...
Necesitamos instanciar dos clases:
- CL_SALV_COLUMNS_TABLE : Gestionar las columnas que componen el ALV
- CL_SALV_COLUMN : Gestionar los atributos de una columna del ALV
La primera clase CL_SALV_COLUMNS_TABLE nos permitirá gestionar atributos y características de las columnas del ALV. Para mas información podéis acceder a los métodos y atributos de la clase CL_SALV_COLUMNS_TABLE desde la transacción SE24 -> Pasar a -> Documentación -> Clase.
Para modificar las características y atributos propios de cada columna del ALV instanciaremos un objeto CL_SALV_COLUMN_TABLE utilizando el metodo GET_COLUMN de la clase CL_SALV_COLUMNS_TABLE. Este método recibe como parámetro de entrada el nombre de una columna del ALV y retorna un objeto de la clase CL_SALV_COLUMN_TABLE que nos permite con sus métodos cambiar las características y atributos de la columna.
![]() |
| Transacción SE24 -> Clase CL_SALV_COLUMN_TABLE |
Desde la transacción SE24 -> Pasar a -> Documentación -> Clase podéis ver todos los métodos de la clase CL_SALV_COLUMN y que atributos nos permiten modificar. Los métodos que mas se suelen utiliza son:
- SET_LONG_TEXT: Descripción larga de la columna
- SET_MEDIUM_TEXT:Descripción media de la columna
- SET_SHORT_TEXT: Descripción corta de la columna
- SET_VISIBLE: Oculta o muestra la columna ( 'X' muestra , ' ' oculta la columna )
- SET_OUTPUT_LENGTH: Especifica el ancho de la columna
- SET_OPTIMIZED: Optimiza el ancho de la columna automáticamente
- SET_CELL_TYPE: formato de la celda ( ej: campo, checkbox, etc.. )
A continuación, ampliamos el código del anterior post para modificar las características de algunas columnas.
*&---------------------------------------------------------------------*
*& Report: ZZCL_SALV_TABLE_FULL_SCREEN
*& Fecha : 29.07.2015
*& Autor : David Rueda Barrón
*&---------------------------------------------------------------------*
*& Creacion de ALV a pantalla completa con la clase CL_SALV_TABLE
*& Modificacion de los atributos de la columnas con las clases:
*& - CL_SALV_COLUMNS_TABLE
*& - CL_SALV_COLUMN_TABLE
*&---------------------------------------------------------------------*
report zzcl_salv_table_full_screen.
types: begin of type_matnr,
matnr type mara-matnr,
maktx type makt-maktx,
mtart type mara-mtart,
matkl type mara-matkl,
meins type mara-meins,
box type c,
end of type_matnr.
data: ti_mara type standard table of type_matnr.
data gr_table type ref to cl_salv_table. "Instancia de la clase
data gr_columns type ref to cl_salv_columns_table. "Para gestionar las columnas
data gr_column type ref to cl_salv_column_table. "Para gestionar atrb. de una columna
data cx_salv type ref to cx_salv_msg.
data cx_not_found TYPE ref to cx_salv_not_found.
data gr_msg type string.
*&---------------------------------------------------------------------*
*& START-OF-SELECTION
*&---------------------------------------------------------------------*
start-of-selection.
select m~matnr t~maktx m~mtart m~matkl m~meins
into corresponding fields of table ti_mara
from mara as m
inner join makt as t
on m~matnr eq t~matnr
and t~spras eq sy-langu.
try.
cl_salv_table=>factory(
importing
r_salv_table = gr_table
changing
t_table = ti_mara ).
catch cx_salv_msg into cx_salv.
* Gestionamos las excepciones que puedan suceder
gr_msg = cx_salv->get_text( ).
message gr_msg type 'E'.
endtry.
try.
gr_columns ?= gr_table->get_columns( ).
* gr_columns->set_optimize( 'X' ). "Optimizar automa. abcho de TODAS las columnas
* Cambiamos la descripción de la columna MATNR - MATERIAL
gr_column ?= gr_columns->get_column( 'MATNR' ).
gr_column->set_short_text( 'Cod.Mat.' ).
gr_column->set_medium_text( 'Cod. Material' ).
gr_column->set_long_text( 'Código Material SAP' ).
* Ocultamos la columna MTART - Tipo de material
gr_column ?= gr_columns->get_column( 'MTART' ).
gr_column->set_visible( value = if_salv_c_bool_sap=>false ).
* Cambiamos la longitud de la columnas:
* MAKTX descripción del material
* MATKL Grupo de articulos
gr_column ?= gr_columns->get_column( 'MAKTX' ).
gr_column->set_output_length( 30 ).
gr_column ?= gr_columns->get_column( 'MATKL' ).
gr_column->set_output_length( 20 ).
* Cambiamos la descripcion y formato de la columna box
gr_column ?= gr_columns->get_column( 'BOX' ).
gr_column->set_short_text( 'box' ).
gr_column->set_medium_text( 'Checkbox' ).
gr_column->set_long_text( 'Checkbox' ).
gr_column->set_cell_type( if_salv_c_cell_type=>checkbox ).
catch cx_salv_msg into cx_salv.
gr_msg = cx_salv->get_text( ).
message gr_msg type 'E'.
catch cx_salv_not_found into cx_not_found.
gr_msg = cx_not_found->get_text( ).
message gr_msg type 'E'.
endtry.
gr_table->display( ).
![]() |
| CL_SALV_TABLE con los atributos de las comunas modificados |
Entradas anteriores:
Clase CL_SALV_TABLE: Introducción


