*

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

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

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

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

. para ello nuestro programas DEBE ser un report (tipo “1”. por lo que mostrará la pantalla de selección. al terminar su ejecución. 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). que es el identificador que hemos dado a nuestra “Selection-Screen”. ya que llamamos a la Tx creada que tiene como inicio la pantalla “101”. Pondremos como “Selection-Screen” “101”. EJEMPLO DE EJECUCIÓ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)” ).