*

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

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

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

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

saltará a la “300” porque tenemos en “END OF SELECTION” el salto. EJEMPLO DE EJECUCIÓN . . ya que llamamos a la Tx creada que tiene como inicio la pantalla “101”. al terminar su ejecución. que es el identificador que hemos dado a nuestra “Selection-Screen”. Creamos una Tx del tipo “Programa y selection screen (report transaction)” (en Español: “Programa e imagen de selección (transacción de report)” ). Pondremos como “Selection-Screen” “101”. Ejecutable). por lo que mostrará la pantalla de selección. para ello nuestro programas DEBE ser un report (tipo “1”.. 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”.

Sign up to vote on this title
UsefulNot useful