Close

febrero 20, 2014

Dynpros: Trabajando con subscreens

Un subscreen es una ventana que se carga dentro de otra ventana en un area que se ha determinado previamente en la ventana “padre”. Como vimos antes el control tabstrip utilizar subscreen para mostrar el contenido de acuerdo a la pestaña en la que se hace clic, otro uso de los subscreen es reutilizar una pantalla en más de un dynpro, por ejemplo podemos tener un subscreen para mostrar datos de un cliente y mostrarlo en diferentes dynpros.

Para aprender a utilizar subscreen haremos un ejemplo en el que se mostrará una vista básica y al presionar un botón se mostrará una vista avanzada con más información. Comencemos creando dos dynrpros uno para la vista básica en la que añadiremos algunos cuantos objetos y otro dynpro con más objetos para la vista avanzada, ambos de tipo subscreen.

crear-subscreen

Ahora creemos un dynpro de tipo Normal e ingresamos en el layout para agregar un control de tipo Area subscreen, para este ejemplo lo vamos a nombrar VISTA y también agregamos un botón con el codigo de función CAMBIAR.

crear-area-subscreen

Para mostrar subscreen en un dynpro debemos agregar dos sentencias CALL SUBSCREEN en la pestaña Log.proceso del dynpro, como se muestra a continuación:

En la primera sentencia se configura un programa (sy-repid) y un dynpro de tipo subscreen (variable mi_subscreen de tipo dynnr) para cargar en un control (para nuestro ejemplo anteriormente creamos un objeto llamado VISTA en un dynpro de tipo normal). En la segunda sentencia call subcreen se hace la llamada del subscreen.

Ahora debemos inicializar la variable mi_subscreen, para ello creemos un modulo llamado inicia_1002 en el evento process before output y agregamos este código:

Luego creemos un modulo para procesar las entradas y agregamos el siguiente código, cambiando los números de dynpro 1000 y 1001 por los que correspondan a nuestra vista basica y vista avanzada respectivamente.

Ahora cuando ejecutamos nuestro programa al presionar el botón se alternará entre las vistas básica y avanzada. Debido que en el evento process before output configuramos el dynpro a cargar de forma dinámica (utilizando una variable), al modificar el valor de esta variable cambiamos el dynpro (subscreen) que se despliega como salida.