#1
|
|||
|
|||
Problema de navegacion entre Dynpros
Tengo serios problemas en la navegación entre pantallas de un programa que abre una pantala de seleccion, de ahí despliega un ALV y a partir de ahi se selecciona un articulo y se despliega su detalle en una pantalla nueva.
En si la problematica esta así, el usuario quiere que al regresar con la tecla Back (flecha verde), se vea el ALV, si se vuelve a presionar la misma tecla entonces lo que debe desplegar es la pantalla de selcción pero se deben conservar los criterios de busqueda introducidos con anterioridad. He logrado regresar a esta pantalla utilizando las instrucciones CALL SCREEN y CALL TRANSACTION, pero en estos casos aunque aparece la pantalla de selección inicial esta en blanco, no conserva los criterios de busqueda. La otra forma que he intentado es mediante la instrucción leave to screen 0. Pero en este caso en lugar de mandarme a la pantalla de selección lo que hace es regresarme al detalle del artículo. Una prueba más la hice utilizando la instrucción CALL SELECTION-SCREEN 1000, en este caso me regresa a la pantalla de selección y conserva sus valores, pero al volver a presionar a tecla 'F8', en lugar de iniciar correctamente y abrir el ALV, me manda hasta la pantalla de detalle del artículo que consulté. Ya no se que más hacer pido ayuda a los expertos, cualquier sugerencia sera bien recibida. Gracias |
#2
|
||||
|
||||
El problema puede que este al realizar el CALL TRANSACTION para regresar a tu pantalla anterior, es como si la volvieras a llamar desde cero, como estas trabajando tu ALV???, con objetos o con el REUSE_ALV_...??? si trabajas con objetos quiere decir q es un container, ahi seria darle la funcion al BACK
LEAVE TO SCREEN 0. Si usas la funcion REUSE_ALV_... el boton BACK es estandar y no hay necesidad de programar nada
__________________
David Carballido Córdova |
#3
|
|||
|
|||
disculpa el circuito es :
Parametros de selección -> ALV -> dympro??? Saludos. Javier.
__________________
Lo importante no es saber sino saber quien es el que sabe |
#4
|
|||
|
|||
En caso que ese sea el circuito no veo la necesidad de el call transaction / call screen para volver(esto depende si es ALV orientado a objetos).
Saludos. Javier.
__________________
Lo importante no es saber sino saber quien es el que sabe |
#5
|
|||
|
|||
hola, de atemano agradezco su ayuda, probablemente no me explique muy bien, la tercer pantalla con el detallle de articulos tambien es un ALV , el circuito es:
Parametros de selección->ALV1->ALV2 Donde: ALV1 es una lista de articulos que se puede seleccionar y ALV2 es la lista de los detalles del articulo seleccionado. en ambos casos los ALV son de objetos, nunca se utiliza el REUSE ALV. Se que en teoría debería poder regresar utilizando el LEAVE TO SCREEN 0. Pero cuando pongo esta instrucción en lugar de regresarme a los parametros de selección, lo que hace es mandarme al ALV2. en otras palabras (lo ideal) el circuito de regreso debería ser ALV2->ALV1->Parametros de selección Pero lo que esta ocurriendo cuando pongo Leave to screen 0. es ALV2-> ALV1-> ALV2 (los parametros de selección nunca regresan). Habia logrado regresar con LEAVE TO CURRENT TRANSACTION pero en este caso la pantalla de Parametros de selección esta vacia. y el usuario insiste que quiere que se conserven los datos que el había metido originalmente. |
#6
|
||||
|
||||
Puedes colocar el codigo al momento de pasar de tu pantalla de seleccion al ALV1, de igual manera la llamada al ALV2, con eso descartamos varias cosas
__________________
David Carballido Córdova |
#7
|
|||
|
|||
en el evento start of selection esta la llamada a la pantalla 200 que es el contenedor del ALV1
start-of-selection. clear: opc1, opc2. IF lifnr IS INITIAL. MESSAGE i007 WITH 'Introducir Proveedor'. else. IF p_man EQ 'X'. if s_matkl[] IS INITIAL. MESSAGE i007 WITH 'Introducir Grupo de Articulos'. else. opc1 = 'X'. perform llena_parametros. perform carga_tablas. perform it_llena_ti_data. CALL SCREEN 200. Luego dentro del modulo MODULE user_command_0200 INPUT. esta la llamada a la pantalla 300 que es el ALV2 CALL SCREEN 300. ahi mismo tengo mas abajo el siguiete código CASE sy-ucomm. WHEN 'EXIT' OR 'CANCEL'." OR 'BACK'. PERFORM f_destruir_objetos. leave to current transaction. WHEN 'BACK'. PERFORM f_destruir_objetos. LEAVE to current transaction. ** WHEN others. WHEN others. este es quien me regresa a la pantalla de Parametros de seleccion con el problema de que la pantalla esta en blanco al llamarla asi. |
#8
|
||||
|
||||
Hola, en vez del CALL SCREEN 300. prueba con SET SCREEN 300, me comentas tus resultados
__________________
David Carballido Córdova |
#9
|
|||
|
|||
Gracias pero sigue el mismo problema supongo que despues de cambiar el CALL SCREEN 300 POR SET SCREEN 300 en la opcion BACK debo colocar el famoso LEAVE TO SCREEN 0, no?.
ya hice eso pero por alguna razon sigue igual cuando doy el back me regresa al ALV2 ya tambien cambie la llamada CALL SCREEN 200 por un SET SCREEN 200 y con todo y eso de todos modos no presenta la pantalla inicial sino que se va siempre al ALV2 (screen 300) |
#10
|
||||
|
||||
Le quitaste la sentencia "leave to current transaction", yo siempre uso LEAVE TO SCREEN 0 para regresar a mi pantalla anterior, como ultima opcion podrias colocar dentro del MODULE de la pantalla 300.
* Pimer caso CASE sy-ucomm. when 'BACK' or 'EXIT'. LEAVE TO SCREEN 0. ENDCASE. * Si no funciona, forzar a regresar a la pantalla 200. CASE sy-ucomm. when 'BACK' or 'EXIT'. SET SCREEN 200. ENDCASE.
__________________
David Carballido Córdova |
Herramientas | Buscar en Tema |
Desplegado | |
|
|