
REPORTE INTERACTIVO: ejecutado solo de forma online
listado x pantalla
doble click
otro listado x pantalla
y así sucesivamente
con pocas lineas de código se pueden crear estos reportes
se recuperan datos, desde un listado puedes entrar a otros reportes
Doble click, se ejecuta AT LINE-SELECTION
Variables:
SY-LSIND es el índice del listado (1=1er listado), (2=2do listado), etc
SY-LISEL almacena contenido de la línea seleccionada arriba
SY-LILLI número de la línea seleccionada
SY-CUROW posicion del cursor vertical
Usar eventos para imprimir pantalla de informacion:
TOPE OF PAGE (imprime cabeceras)
TOPE OF PAGE DURING LINE-SELECTION (imprime detalle)
Programas STD para practicar
DEMO_LIST_INTERACTIVE_1
DEMO_LIST_INTERACTIVE_2
DEMO_LIST_INTERACTIVE_3
DEMO_LIST_INTERACTIVE_4
¿Como seria el código para este reporte interactivo?
DATA: escribimos las tablas internas y esctructuras en donde vamos a buscar la informacion
ti_usuarios TYPE STANDARD TABLE OF ztabla_usuarios,
wa_usuarios LIKE LINE OF ti_usuarios
v_dni TYPE z_dni.
START OF SELECTION
PERFORM Subrutina Buscar la informacion
PERFORM Subrutina Imprimir los datos
dentro de la 1ra subrutina:
FORM (Subrutina buscar la informacion)
REFRESH (tabla interna)
SELECT
FROM ztabla_usuarios
INTO TABLE (tabla interna).
ENDFORM.
dentro de la 2da subrutina:
FORM
LOOP AT (tabla interna) INTO (estructura)
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE:/ wa_usuarios-dni,
wa_usuarios-nombre_ape.
ENDLOOP.
ENDFORM.
Luego,para generar el reporte nivel 2
Evento
AT LINE-SELECTION.
CLEAR v_dni.
v_dni = sy-lisel(10).
PERFORM (subrutina para generar reporte)
dentro de la subrutina para generar reporte:
FORM
READ TABLE ti_usuarios INTO wa_usuarios WITH KEY dni=v_dni.
IF sy-subrc EQ 0.
Write:/ (escribir las lineas, luego el texto de detalle)
luego para la cabecera:
TOP-OF-PAGE DURING LINE-SELECTION
WRITE:/ text-011.
Sentencia WINDOWS STARTING AT muestra una ventana de reporte como si fuera una ventana de dialogo
se pueden crear hasta 20 niveles de listados secundarios