PDA

Ver la Versión Completa : At Seleccion-screen Zw_xxxx


mendocar
13/01/10, 15:14:28
Estimados, un help, no conozco mucho de ABAP, pero estoy trasladando un prog. de la version 3.1 a la 6.0 y copiando un prog. Este me emite un error como se indica a continuacion.

SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S52 {color: #0000FF;}AT SELECTION-SCREEN ON ZW_LAUFI.
PERFORM TRAE_CAMPOS_PANTALLA.
PERFORM VALIDA.

El error es variable ZW_LAUFI is neither a selection criterion nor a parameter.

Además cambié la línea de error colocándo lo siguiente:
SPAN {font-family: "Courier New";font-size: 10pt;color: #000000;background: #FFFFFF;}.L1S31 {font-style: italic;color: #808080;}.L1S52 {color: #0000FF;}AT SELECTION-SCREEN ON VALUE-REQUEST FOR ZW_LAUFI.
PERFORM TRAE_CAMPOS_PANTALLA.
PERFORM VALIDA.
Y me sale el siguiente error
ON VALUE-REQUEST FOR should be followed by <parameter> of <select-option>-LOW/<select-option>-HIGH


Si navego en la variable ZW_LAUFI llego al siguiente código en el prog. DBPYFSEL

parameters: zw_laufd like reguh-laufd for table reguh value-request.
parameters: zw_laufi like reguh-laufi for table reguh value-request.
parameters: zw_xvorl like reguh-xvorl for table reguh.
parameters: zw_edisl like reguh-edibn for table reguh no-display.
selection-screen skip for table reguh.
selection-screen begin of block 0 with frame title text-900.
select-options: zw_zbukr for reguh-zbukr,
zw_absbu for reguh-absbu.
selection-screen end of block 0.

Estimados, a ver un ayudín.
Gracias.

mystic_soul
13/01/10, 17:09:04
probaste con poner lo siguiente?..

parameters: zw_laufi type bwks-laufi

(o cualquier tabla que haga referencia a ese campo, no?)

Saludos!

VLozano
14/01/10, 07:59:18
Si usas el botón de código (imagen # tag [ CODE]), podremos leer tu mensaje sin dejarnos los ojos. Además, ese "span" tipo html no se lee bien, y aún molesta más :(

AT SELECTION-SCREEN

Es un evento que se dispara cuando el usuario valida un campo de pantalla (pulsando "enter", lanzando la ejecución...).

AT SELECTION-SCREEN ON nombre_campo
Es el mismo evento, PERO sólo cuando se valida el campo nombre_campo. Es decir, en tu caso (inicial) cuando el foco está en la casilla de texto correspondiente a zw_laufi, y se pulsa "enter", se ejecuta esa parte de código.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR nombre_campo
Es un evento que se dispara cuando el usuario intenta ver una lista de valores posibles para el campo (pulsando F4, pojemplo).

Cambiar ON por ON VALUE-REQUEST no tiene ningún sentido, por lo tanto, nos podemos centrar en el primer mensaje de error. Éste nos dice que la variable ZW_LAUFI que intentas usar en el AT SELECTION-SCREEN ON no existe. O que no la puede encontrar, que para el caso sería lo mismo.

Posibilidades que se me ocurren:
- la variable ha sido declarada como PARAMETER en un include al que no se llega (asegúrate que hay una línea "INCLUDE DBPYFSEL.")
- la variable ha sido declarada como PARAMETER, pero el programa (o include) donde se ha declarado no se ha activado o tiene un error.

A mí me huele al segundo punto. Ese tipo de declaración no me suena, así que hace falta asegurarse de que realmente funciona.

* Navega de nuevo hasta esa declaración de zw_laufi.
* Mira si el programa está activado (parte superior de la pantalla, al lado del nombre del programa/include, valores posibles "Inactivo", "Activo", "Revisado", o algo así).
* Si no está activo, actívalo (botón de la cerilla, o Ctrl+F3)
** Si se activa, vuelve al programa inicial y prueba de nuevo
** Si no se activa, arregla esa parte, y prueba de nuevo (probablemente funcione lo propuesto por mystic_soul)
* Si está activo... tenemos un problema :(

Pero no vale la pena seguir elucubrando hasta no estar seguros de que esa declaración de zw_laufi es correcta, así que me espero a después de los anuncios ;)


Nota para mystic_soul: aunque creo que tu solución será la refinitiva, a veces es mejor explicar el por qué de las cosas además de dar la solución al problema. Así nos aseguramos de que la próxima vez que aparece el problema, quien se enfrenta a él tiene argumentos para no tener que preguntar de nuevo. "Enseñar a pescar", lo llamamos por aquí (en mi curro) ;)

mystic_soul
14/01/10, 16:13:04
Totalmente de acuerdo VLozano, lo ideal sería explicar el por qué de la solución..

Saludos!