lunes, 13 de septiembre de 2010

ZCL_SALV_TABLE_2

*&---------------------------------------------------------------------*
*& Report  ZCL_SALV_TABLE_2
*&
*&---------------------------------------------------------------------*
*&Manejo de ALV con la clase cl_salv_table
*&Mas Funciones de la clase para editar y colorear celdas
*&---------------------------------------------------------------------*

REPORT  ZCL_SALV_TABLE_2.

DATA: alv_table type REF TO cl_salv_table, "referencia a la clase table del alv
      it_sflight TYPE TABLE OF sflight, "Tabla Interna para el query
      g_color TYPE lvc_s_colo.  "Estructura para agregar color a las columnas


SELECT * INTO CORRESPONDING FIELDS OF TABLE it_sflight
                FROM sflight WHERE carrid = 'AA'.

*TRY.
CALL METHOD CL_SALV_TABLE=>FACTORY
EXPORTING
  LIST_DISPLAY   = abap_true "Modo Lista
*    R_CONTAINER    =
*    CONTAINER_NAME =
  IMPORTING
    R_SALV_TABLE   = alv_table "importo el alv creado por la clase
  CHANGING
    T_TABLE        = it_sflight. "tabla interna de datos
.
* CATCH CX_SALV_MSG .
*ENDTRY.

DATA: lr_columns TYPE REF TO cl_salv_columns_table,
      lr_column  TYPE REF TO cl_salv_column_table. "Referencia para editar columnas

* edit ALV columns
lr_columns = alv_table->get_columns( ).
*----------------------------------------------------------------------*
*  Doy datos a la cabecera de las columnas
*----------------------------------------------------------------------*
TRY.
    lr_column ?= lr_columns->get_column( 'CARRID' ).
    lr_column->set_long_text( 'Vuelos' ).
    lr_column->set_medium_text( 'Vuelos' ).
    lr_column->set_short_text( 'Vuelos' ).
    lr_column ?= lr_columns->get_column( 'MANDT' ).
    lr_column->set_long_text( 'Cliente' ).
    lr_column->set_medium_text( 'Cliente' ).
    lr_column->set_short_text( 'Cliente' ).

    "Para poner color a una columna
    lr_column ?= lr_columns->get_column( 'CONNID' ).
    g_color-col = '6'.
    g_color-int = '1'.
    g_color-inv = '0'.
    lr_column->set_color( g_color ).
  CATCH cx_salv_not_found.
  CATCH cx_salv_existing.
  CATCH cx_salv_data_error.
ENDTRY.

* optimize output
lr_columns->set_optimize( 'X' ). "quito espacios en las celdas q muestran los datos

*----------------------------------------------------------------------*
* Establezco los botones default de un alv standart
*----------------------------------------------------------------------*
data: gr_functions type ref to cl_salv_functions_list.
gr_functions = alv_table->get_functions( ).
gr_functions->set_default( ).
* gr_functions->set_all( ).

CALL METHOD alv_table->DISPLAY( ). "Muestro ALV




No hay comentarios:

Publicar un comentario