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