*

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

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

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

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

que es el identificador que hemos dado a nuestra “Selection-Screen”. Ejecutable). para ello nuestro programas DEBE ser un report (tipo “1”. saltará a la “300” porque tenemos en “END OF SELECTION” el salto. al terminar su ejecución. EJEMPLO DE EJECUCIÓN . por lo que mostrará la pantalla de selección. 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”. .. 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”.

Sign up to vote on this title
UsefulNot useful