ALV Object Model (cl_salv_table)

En esta oportunidad vamos a ver como hacer nuestro ALV con el nuevo modelo que nos proporciona SAP para hacerlo mas rápido y sencillo utilizando clases estandar.

ALV Object Model:
El nuevo Modelo de Objetos de Lista (SAP List Viewer) es un objeto orientado a la encapsulación de la herramienta ALV que ya existe:

  • ALV Simple, 2 Dimensiones
  • ALV Jerarquico
  • ALV Tree.

Para cada tipo de ALV se trabaja con una clase diferente: CL_SALV_TABLE, CL_SALV_HIERSEQ_TABLE, CL_SALV_TREE. mas detalles

En el ejemplo utilizaremos la tabla SPFLI (Itinerarios de vuelos) para luego mostrarlo en un ALV GRID utilizando la clase CL_SALV_TABLE.

Creamos una estructura ZES_SPFLI:



El codigo del programa queda de la siguiente manera:

REPORT zalv_om01.

DATA: t_spfli TYPE TABLE OF zes_spfli,
t_table TYPE REF TO cl_salv_table,
g_sort TYPE REF TO cl_salv_sorts,
g_functions TYPE REF TO cl_salv_functions,
g_dsp TYPE REF TO cl_salv_display_settings,
g_columns TYPE REF TO cl_salv_columns_table,
g_column TYPE REF TO cl_salv_column_table,
g_color TYPE lvc_s_colo,
g_agg TYPE REF TO cl_salv_aggregations.

START-OF-SELECTION.
PERFORM cargar_data.
PERFORM llamar_alv.

*&---------------------------------------*
*& Form cargar_data
*&---------------------------------------*
* text
*----------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------*
FORM cargar_data .

SELECT
carrid
connid
countryfr
cityfrom
airpfrom
countryto
cityto
airpto
distance
INTO TABLE t_spfli
FROM spfli.

ENDFORM. " cargar_data

*&---------------------------------------*
*& Form llamar_alv
*&---------------------------------------*
* text
*----------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------*
FORM llamar_alv .

cl_salv_table=>factory(
IMPORTING
r_salv_table = t_table
CHANGING
t_table = t_spfli
).

"Para los botones en el status
g_functions = t_table->get_functions( ).
g_functions->set_all( abap_true ).

"Para mostar el titulo del alv
g_dsp = t_table->get_display_settings( ).
g_dsp->set_list_header( 'ALV OBJECT MODEL' ).

"Para poner color a una columna
g_columns = t_table->get_columns( ).
g_column ?= g_columns->get_column( 'CONNID' ).
g_color-col = '6'.
g_color-int = '1'.
g_color-inv = '0'.
g_column->set_color( g_color ).

"Para ordernar por el campo CARRID y indicar un subtotal
g_sort = t_table->get_sorts( ).
g_sort->add_sort( columnname = 'CARRID' subtotal = abap_true ).

"Para que funcione el subtotal y las sumatorias
g_agg = t_table->get_aggregations( ).
g_agg->add_aggregation( 'DISTANCE' ).

"Para mostrar el alv
t_table->display( ).

ENDFORM. " llamar_alv


Ejecutamos...



Esta nueva forma de hacer nuestros ALVs nos ayuda en reducir el código de nuestro programa, minimizar el tiempo de estar escribiendo nuestros layout, fliedcat, etc.....

Comentarios

  1. Hola...
    muy buen ejemplo, me gustaria saber si puedo hacer un substr de un campo. En el ejemplo que muestras por ejemplo del primer campo se muestre solo la ultima letra del codigo de compania.

    ResponderEliminar
  2. Gracias...respecto a tu pregunta eso tendrias que hacerlo en un LOOP donde manipules los datos de la tabla interna y despues pasarlo al ALV...Salu2s

    ResponderEliminar
  3. Saludos.
    Estoy explorando el AVL para aunos reportes y tengo una duda como hago para mostrar en el toolbar el boton de imprimir.

    ResponderEliminar
  4. Está bueno el ejemplo. De todas maneras esta clase tiene demasiadas restricciones a mi gusto. Por ejemplo no se pueden usar estilos o hacer un ALV editable. No sé por qué SAP ofrece herramientas nuevas que tienen menos funcionalidad que las anteriores. Saludos.

    ResponderEliminar
  5. Muy buen ejemplo muchisimas gracias

    ResponderEliminar
  6. aver si alguien mi puede ayudar con esto:Al hacer doble click sobre la conexión en el listado ALV OBJECT MODEL se tiene que mostrar una SALV con todos los vuelos que contengan ese código de conexión

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Ejemplo Aplicacion Web con BSP en SAP

Conectar Java con SAP JCO Connector