Generalmente cuando realizamos reportes en abap, obtenemos información en formato de listado, en plano, muchas veces sin ninguna funcionalidad aparte que la simple visualización de los datos.
En sap existe algo llamado ALV (Abap List Viewer) que es el encargado de presentar nuestros reportes de una manera mas práctica y funcional, su interfaz es mas elegante y nos permite realizar mas funcionalidades que un reporte normal.
CARACTERISTICAS DE ALV´s:
- Crear variantes de visualización: Se puede modificarse el formato de la lista. Se puede seleccionar los campos que desea visualizar, modificar la secuencia de campos y cambiar el ancho de las columnas para adecuarlo a sus necesidades.
- Clasificar: Las líneas pueden clasificarse en orden ascendente o descendente según el valor de columna.
- Fijar filtro: Es posible visualizar sólo aquellas líneas que cumplen determinados criterios.
- Valores totales y subtotales : En una lista pueden calcularse los totales y subtotales de una o más columnas seleccionadas.
- Exportar la información a un archivo de excel o word
Un ejemplo simple de un reporte en formato ALV es el siguiente:
*&———————————————————————*
*& Report Z_ALV
*&
*&———————————————————————*
*&
*&
*&———————————————————————*REPORT Z_ALV.
TABLES sflight.
type-pools: slis.
“************ DECLARACIÓN DE ESTRUCTURAS ************”
“************ ************”
TYPES: BEGIN OF st_sflight,
carrid like sflight-carrid,
connid like sflight-connid,
fldate like sflight-fldate,
price like sflight-price,
end of st_sflight.“************ DECLARACIÓN DE DATOS ************”
“************ TABLAS INTERNAS Y WORK AREAS ************”
DATA:
ti_sflight type table of st_sflight,
wa_sflight type st_sflight,layout_alv type slis_layout_alv,
ti_fieldcat_alv type slis_t_fieldcat_alv,
wa_fieldcat_alv type slis_fieldcat_alv.“************ EVENTO START-OF-SELECTION ************”
“************ ************”
start-of-selection.
perform obten_datos.
perform inicializa_layout.
perform arma_fieldcatalog.
perform muestra_alv.“************ DECLARACIÓN DE SUBRUTINAS ************”
“************ ************”form obten_datos. “”" Obtiene datos de la tabla de sistema
select carrid connid fldate price
from sflight
into TABLE ti_sflight
up to 22 ROWS.
endform.form inicializa_layout.
layout_alv-colwidth_optimize = ‘X’.
layout_alv-zebra = ‘X’.
layout_alv-window_titlebar = ‘Reporte en formato ALV’. “”"Título de la ventana
endform.form arma_fieldcatalog.
wa_fieldcat_alv-col_pos = ’1′. “” Posición en que la columna será mostrada
wa_fieldcat_alv-fieldname = ‘CARRID’. “” Nombre del Campo de la tabla
wa_fieldcat_alv-just = ‘L’. “” Justificación
wa_fieldcat_alv-reptext_ddic = ‘Airline Code’. “” Título de la Columna
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.wa_fieldcat_alv-col_pos = ’2′. “” Posición en que la columna será mostrada
wa_fieldcat_alv-fieldname = ‘CONNID’. “” Nombre del Campo de la tabla
wa_fieldcat_alv-just = ‘L’. “” Justificación
wa_fieldcat_alv-reptext_ddic = ‘Flight Connection Number’. “” Título de la Columna
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.wa_fieldcat_alv-col_pos = ’3′. “” Posición en que la columna será mostrada
wa_fieldcat_alv-fieldname = ‘FLDATE’. “” Nombre del Campo de la tabla
wa_fieldcat_alv-just = ‘L’. “” Justificación
wa_fieldcat_alv-reptext_ddic = ‘Flight date’. “” Título de la Columna
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.wa_fieldcat_alv-col_pos = ’4′. “” Posición en que la columna será mostrada
wa_fieldcat_alv-fieldname = ‘PRICE’. “” Nombre del Campo de la tabla
wa_fieldcat_alv-just = ‘L’. “” Justificación
wa_fieldcat_alv-reptext_ddic = ‘Airfare’. “” Título de la Columna
APPEND wa_fieldcat_alv TO ti_fieldcat_alv.endform.
form muestra_alv.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
I_CALLBACK_PROGRAM = sy-repid
I_CALLBACK_TOP_OF_PAGE = ‘ARMA_TOPOFPAGE’
IS_LAYOUT = layout_alv “ Variable de Layout
IT_FIELDCAT = ti_fieldcat_alv “ Variable de Field Catalog
TABLES
T_OUTTAB = ti_sflight
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.endform.
form ARMA_TOPOFPAGE. “Realiza el encabezado de la página
DATA:
ti_event type slis_t_listheader, “”" Declaración de TI para eventos
st_event type slis_listheader. “”" Estructura para eventosst_event-typ = ‘S’.
CONCATENATE ‘Fecha: ’ sy-datlo+6(2) ‘/’ sy-datlo+4(2) ‘/’ sy-datlo+0(4)
into st_event-info separated by space.
APPEND st_event TO ti_event.st_event-typ = ‘A’.
st_event-info = ‘PichuS’.
append st_event to ti_event.st_event-typ = ‘H’.
CONCATENATE ‘Hora–> ’ sy-timlo+0(2) ‘:’ sy-timlo+2(2) ‘:’ sy-timlo+4(2)
into st_event-info.
append st_event to ti_event.CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
IT_LIST_COMMENTARY = ti_event.
.
endform.
Esto es algo básico en formato ALV, existen muchas otras funcionalidades.
Al momento de ejecutar el programa obtenemos algo asi:
Se puede observar un reporte mas elegante, tipo excel, junto con una barra de botones muy útiles como es el caso de realizar subtotales a cualquier columna que contenga números, encontramos tambien filtros, formas de ordenación, exportar información a documentos, etc.
Etiquetas: abap, alv, programación, sap

