PDA

Ver la Versión Completa : Excepción: DYNP_TOO_MANY_CALL_SCREENS


cramr
27/07/10, 13:01:41
Buenas,

Tengo un modulpool con más de 20 dynpros...y se navega entre ellas mucho, de forma que a veces me da un dump, por la excepción: "DYNP_TOO_MANY_CALL_SCREENS"

Al parecer no se puede navegar entre dynpros más de 50 veces.

Como puedo enfrentarme a esto? Que puedo hacer para que no me de dicho fallo?


Muchas gracias

Jonathan Barrio
27/07/10, 13:13:16
Hay ciertas sentencias que liberan la pantalla en vez de dejarla en memoria.
Prueba a salir de las pantallas con LEAVE SCREEN.

Me parece que estás haciendo llamadas recurrente. No sé si se podría usar también algún free memory.

Esto es como el ALV, le llamas, pero luego vuelves hacía atras, haces un Back. Si no lo haces así, estas creando una pantalla encima de otra, una ALV, y otro, y otro, en vez de modificar simplemente la tabla internar y refrescar el contenido de la tabla del ALV.

Espero que te sirva.
Saludos.

DavidXD_XD
27/07/10, 17:07:01
Hola, como dice Jonathan no pueden quedar en memoria una secuencia de dynpros, el maximo que permite SAP es de 50 dynpros anidados, para liberar un dynpro usa la sentencia

LEAVE TO SCREEN (dynpro).

Yo siempre despues de procesar un dynpro uso LEAVE TO SCREEN 0, esa sentencia realiza la finalizacion de la pantalla y regresa al punto de codigo donde llamaste a la pantalla, ejm:

....
....
CALL SCREEN 200.
PERFORM valida_datos.
....
....

En ese codigo ira a la pantalla 200, dentro de ella procesara el PAI, y si nunca usas una sentencia de salida procesara PBO y luego PAI de manera indefinida, dentro de ellas si colocas un LEAVE TO SCREEN 0, saldra de la pantalla y regresara al codigo anterior (el de arriba) y continuara con la siguiente linea (en ese caso entrara el PERFORM valida_datos), espero te pueda ayudar ... :D