*

ALV * “SIN LAYOUT” *

1.- Hacer un REPORT, en el que añado un selection-screen identificando un nuevo número de pantalla,
p.e. 101.
SELECTION-SCREEN BEGIN OF SCREEN 101.
SELECT-OPTIONS:
p_fecha FOR SBOOK-FLDATE,
p_reserv FOR SBOOK-BOOKID.
SELECTION-SCREEN END OF SCREEN 101.

Y al principio de mi report pongo esta: TABLES

SBOOK.

2.- Añado una nueva DynPro (Pantalla), de tipo “Normal”, p.e. con código 300. Abrimos el
ScreenPainter (pulsando “Layout”) y añadimos un “CustomControl” grande de toda la pantalla, le
asignamos el nombre: “CC_SCR300” (en el “ScreenPainter” y en el report debemos darle el mismo nombre,
con las mismas Mayúsculas y minúsculas)
Al final de mi report, añado las líneas:
START-OF-SELECTION.
END-OF-SELECTION.
SET

SCREEN

300.

3.- Click en pantalla 300 y meto código PBO:
SELECT * INTO CORRESPONDING FIELDS
FROM SBOOK
WHERE FLDATE IN p_fecha AND
BOOKID IN p_reserv.

OF

TABLE


CREATE OBJECT obj_cont
EXPORTING
container_name =

cont.

CREATE OBJECT obj_grid
EXPORTING
i_parent = obj_cont.
*

PARA

TODA

LA

TABLA

SBOOK

CALL METHOD obj_grid->set_table_for_first_display
EXPORTING i_structure_name = 'SBOOK'
CHANGING it_outtab = it_sbook.

it_sbook

'CC_SCR300'. WHEN 'SALIR'. custom VALUE TO control.e. en el REPORT: DATA: obj_cont TYPE REF TO "cont”. LEAVE PROGRAM. Seleccionamos la pantalla 300.** MEJORA ** AÑADIR MENU EN PANTALLA RESULTADO (Screen 300). El texto que pongamos será el que se asigne a la variable que se defina del tipo de la variable de sistema SYUCOMM. Creamos la Tx del Tipo “Program and selection screen (report transaction)” en Español “Programa e imagen de selección (transacción de report)“ . Hacemos doble click en “Module User_Command_0300” (modulo PAI) y añadimos el código: CASE okcode.e. "obj_grid”. Eso hará que se activen dichos iconos y se muestren en “su barra” de menú. "Te devuelve LEAVE TO a la "Salir del sel-screen CURRENT programa 101. Seleccionamos la pantalla 300. Por nomenclatura standard la llamaremos “okcode” u ok_code”. p.PREVIAMENTE.. ENDCASE. Añadimos la variable creada en el ”Element List” de la pantalla. cl_gui_alv_grid. P. p. 4. Haciendo doble click. Hacer doble click en “Module Status_0300” (modulo PBO). DATA it_sbook TYPE TABLE OF SBOOK. WHEN 'ATRAS'. desplegando el menú “Teclas de Función” en los iconos que queramos. declaramos en el Report: DATA: okcode TYPE sy-ucomm. seleccionamos “Normal Screen” y nos aparece tres desplegables. ponemos “IF300”. Podemos poner un texto. Descomentar la línea “SET PF-STATUS” y añadir un literal que identificará la barra de menús. ponemos “ATRAS” en el icono “ “ (flecha blanca en circulo verde) y “SALIR” en el icono “ ” (equis blanca sobre círculo rojo). pantalla asociada a la Transacción. variable para el ALV. SE DEBEN CREAR LAS TRANSACCIONES Y PONER DE PANTALLA DE INICIO LA 101 QUE ES LA “SELECTION-SCREEN” DONDE PEDIMOS LOS PARAMETROS. añado la definición de variables para el control de la/s pantallas. TRANSACTION. mismas MAYs o MINs que el nombre asignado en el “LayOut”.e. variable para el cont TYPE obj_grid scrfname TYPE REF cl_gui_custom_container.

BLOQUE PARA VERSION CON MENOS CAMPOS.1. la líneas: wa_fieldcat-fieldname = 'CARRID'. tenemos que realizar varios cambios. 5. para crear la nueva tabla interna. pondremos: . que es donde accedemos a BD). 5. en vez de crear el contenedor y el grid cada vez que se visualice una nueva búsqueda. en nuestro caso identificada como “300”. “Nombre que se mostrará en el report (15-20 caract.. añadimos el catalogo de campos y le ponemos como nombre de estructura nuestra tabla interna: CALL METHOD obj_grid->set_table_for_first_display EXPORTING i_structure_name = 'it_SBOOK' CHANGING it_outtab = it_sbook it_fieldcatalog = it_fieldcat. connid LIKE sbook-connid...Modificamos la asignación al “grid” de visualización de datos de la siguiente manera. wa_fieldcat TYPE lvc_s_fcat. Empieza por 1 APPEND wa_fieldcat TO it_fieldcat. CLEAR wa_fieldcat. Para ello modificamos el “REPORT” y el “PBO” de la pantalla que muestra los resultados de búsqueda. Donde pone “SELECT *” pondremos: “SELECT carrid connid fldate” Después de la “select” tenemos que crear el catalogo de campos a mostrar añadiremos por campo que queramos mostrar.. “Nombre del campo de la tabla wa_fieldcat-reptext = 'CARRID'. Después de hacer la query. marca la posición en el grid. DATA: it_sbook wa_sbook TYPE like STANDARD line of TABLE OF it_sbook. * * DATA: Tipos para el catalogo de campos PARA UNA TABLA INTERNA AÑADIR EL it_fieldcat TYPE lvc_t_fcat. De esta forma se refrescarán los datos. 5.Añadimos en el “report” las siguientes líneas de código para poder crear el catalogo de campos. Además cambiaremos parámetros en la asignación de la tabla resultado al grid..** MEJORA ** FILTRAR CAMPOS EN EL GRID Para no sacar todos los campos de la tabla.Cambiamos la variable it_sbook y la creamos con solo los campos de la tabla que queremos visualizar dando EL MISMO NOMBRE de los campos de columna de tabla a los del tipo que crearemos.5.2.Cambiamos en el PBO de la pantalla resultado (en nuestro caso de la pantalla 300. END OF it_tt_sbook. “Texto para “mouseover” en el campo-cabecera de la tabla wa_fieldcat-col_pos = 1. 5.-4. it_tt_sbook. “Es un numero. fldate LIKE sbook-fldate. carrid LIKE sbook-carrid.3. + o -) wa_fieldcat-seltext = 'CARRID'. En el “report” cambiamos/añadimos: TYPES: BEGIN OF it_tt_sbook.

ENDIF. 3. 'CÍA'. . 'FECHA'. = 'Identificador de Conexión de Vuelo'. … Añadir campos al catalogo… … create CONTENEDOR … … create GRID … Llamada: CALL METHOD obj_grid->set_table_for_first_display … ELSE. Si p. = 'Fecha del Vuelo'. nombre y fecha en mi tabla de resultado (pantalla 300). wa_fieldcat-fieldname wa_fieldcat-reptext = wa_fieldcat-seltext wa_fieldcat-col_pos = APPEND wa_fieldcat TO = 'FLDATE'. = 'Código de Compañía'. 2. “obj_cont objeto de la clase “cl_gui_custom_container”. 'CONEXIÓN'.e. debería construir el catálogo de la siguiente manera: wa_fieldcat-fieldname wa_fieldcat-reptext = wa_fieldcat-seltext wa_fieldcat-col_pos = APPEND wa_fieldcat TO CLEAR wa_fieldcat. = 'CARRID'. quisiera que sólo se mostraran: código de compañía. it_fieldcat. CALL METHOD obj_grid->refresh_table_display .IF obj_cont IS INITIAL. 1. it_fieldcat. it_fieldcat. = 'CONNID'. wa_fieldcat-fieldname wa_fieldcat-reptext = wa_fieldcat-seltext wa_fieldcat-col_pos = APPEND wa_fieldcat TO CLEAR wa_fieldcat.

ya que llamamos a la Tx creada que tiene como inicio la pantalla “101”. En el PAI de la 300 tenemos el código asociado para que salga del programa cuando se pulse “SALIR” o vuelva a la pantalla “101” cuando se pulse “ATRÁS”. Ejecutable). EJEMPLO DE EJECUCIÓN . que es el identificador que hemos dado a nuestra “Selection-Screen”. por lo que mostrará la pantalla de selección. saltará a la “300” porque tenemos en “END OF SELECTION” el salto. Creamos una Tx del tipo “Programa y selection screen (report transaction)” (en Español: “Programa e imagen de selección (transacción de report)” ). al terminar su ejecución. . Pondremos como “Selection-Screen” “101”.. para ello nuestro programas DEBE ser un report (tipo “1”.