*

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

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

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

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)” ). saltará a la “300” porque tenemos en “END OF SELECTION” el salto. que es el identificador que hemos dado a nuestra “Selection-Screen”. EJEMPLO DE 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”. para ello nuestro programas DEBE ser un report (tipo “1”. al terminar su ejecución. Pondremos como “Selection-Screen” “101”. Ejecutable). . ya que llamamos a la Tx creada que tiene como inicio la pantalla “101”..

Sign up to vote on this title
UsefulNot useful