✒️ABAP La pantalla de selección
ABAP La pantalla de selección
Pantalla de selección
1 Parámetros de selección
Si queremos introducir algunas delimitaciones a nuestro programa de modo que nuestro reporte solo ejecute para ciertos datos que el usuario deberá introducir en la pantalla entonces deberemos crear una pantalla de selección.
Una Pantalla de Selección es un área dentro de los reportes en donde se especifican los parámetros de selección por los cuales se va a ejecutar el programa.
Se utiliza para restriguir el procesamiento y la salida de datos. Por lo general se coloca después de la declaración de datos.
Dentro de una pantalla de selección se pueden declarar dos tipos de objetos: PARAMETERS en los cuales el usuario podrá ingresar valores individuales y SELECT-OPTIONS en donde el usuario podrá ingresar rangos de valores. En el siguiente ejemplo se declararn los parámetros P_FECHA y P_NOMBRE.
Audio: Si deseamos en la pantalla de selección un solo parámetro, entonces utilizaremos la palabra reservada PARAMETER. Si deseamos declarar en la pantalla de selección más de un parametro, entonces utilizaremos la palabra reservada PARAMETERS, seguido de dos puntos. Tengamos en cuenta que podemos también usar PARAMETERS y declarar un solo parámetro. El programa compilará igualmente. O también declarar varios parámetros en la pantalla de selección y para cada uno de ellos escribir en la parte izquierda la palabra reservada PARAMETER.
La longitud máxima que puede tener el nombre de un parámetro es de 8 posiciones.
Añadir a PARAMETER la cláusula OBLIGATORY, hace que el parámetro sea obligatorio.
Añadir a PARAMETER la cláusula DEFAULT asigna un valor por defecto al parámetro. Si ejecutamos el ejemplo anterior veremos lo siguiente:
<< imagen 1.2 >>
Lo que vemos es que al ejecutar nuestro reporte nos aparece la pantalla de selección que acabamos de crear. Vemos que al aderecha de la fecha aparece el icono de matchcode. Si presionamos sobre dicho icono o pulsamos F4 dentro del campo de fecha se abrirá la ventana del calendario.
<< imagen 1.3 >>
Esta ventana es la ayuda de búsqueda al campo SY-DATUM, que es el tipo del parámetro que hemos definido.
Ahora vamos a cambiar las descripciones de los parámetros que aparecen en pantalla. Para esto accedemos desde la transacción SE38 al menú: Pasar a >> Elementos de texto >> Textos de selección
<< imagen 1.4 >>
E ingresamos las descripciones que mejor se adapten a nuestro propósito.
<< imagen 1.5 >>
Audio: Es importante tener en cuenta que para poder introducir los correspondientes textos de selección, el programa en cuestión debe activarse previamente, de lo contrario la columna "texto" correspondiente a la solapa "textos de selección", aparecerá grisada.
También se pueden crear parámetros tipo CHECKBOX en donde el usuario puede marcar las opciones que prefiera, o tipo RADIOBUTTON donde el usuario selecciona una de las opciones entre todas las existentes.
<< imagen 1.6 >>
Los cuáles se visualizarán de la siguiente forma en pantalla:
<< imagen 1.7 >>
Para saber qué campo se seleccionó en el RADIOBUTTON podemos utilizar la siguiente estructura de código, preguntando por cuál fue marcado:
IF check_1 EQ 'X'.
ELSEIF check_2 EQ 'X'.
ELSEIF check_3 EQ 'X'.
.......................
ENDIF.
Los SELECT-OPTIONS son iguales a los PARAMETER salvo que en ellos se puede ingresar rangos de valores, es decir un desde y un valor hasta a parte de valores individuales.
En el siguiente ejemplo se declara el SELECT-OPTIONS denominado s_clavep.
<< imagen 1.8 >>
El tipo utilizado land1_gp es un tipo de la tabla KNA1, por lo que si presionamos en el matchcode veremos la ayuda correspondiente a dicho tipo.
La tabla base datos estándar KNA1 se corresponde al Maestro de Clientes. De cada cliente se guarda en SAP información tal como el número de cliente, el país, el nombre, el código postal, etc.
Podemos crear un marco que encuadre a los parámetros de la pantalla de selección. Para ello debemos colocar la declaración de los parámetros dentro de las sentencias:
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
.....
SELECTION-SCREEN END OF BLOCK b1
Donde b1 es el nombre del marco y text-001 es el título que se visualizará en el extremo superior izquierdo del marco.
2 Clases de Mensajes
Una vez que ingresamos todos los parámetros de nuestro reporte y ejecutamos el programa, lo que vamos a querer es que dependiendo de los parámetros introducidos se produzan determinadas acciones.
Para analizar el contenido de los parámetros existe el evento AT SELECTION-SCREEN. En este evento es donde se validan los valores ingresados en la pantalla de selección.
Supongamos que queremos que la fecha ingresada por pantalla sea mayor o igual a la fecha actual y que si no es así se emita un mensaje en la pantalla advirtiendo que el valor introducido es incorrecto. Para esto, vamos a tener que crear una Clase de Mensaje a través de la transacción SE91, tal y como podemos ver en:
<< imagen 2.1 >>
La transacción estándar SE91 se utiliza para la creación, modificación y visualización de las clases de mensajes en SAP, las cuales nos permiten agrupar los mensajes que utilizaremos en una aplicación.
Se le asigna una descripción y grabamos:
<< imagen 2.2 >>
Y creamos nuestro primer mensaje:
<< imagen 2.3 >>
Luego en nuestro programa, escriberemos el código correspondiente al evento AT SELECTION-SCREEN para hacer cumplir con esta validación:
<< imagen 2.4 >>
Vemos como se especifica la clase de mensajes, el número del mensaje, y la letra para expresar el tipo de mensaje que es, que en este caso es "e" de error.
Por último ejecutamos nuestro reporte con una fecha de la pantalla de selección anterior a la fecha actual y vemos el siguiente mensaje en el extremo inferior izquierdo de la pantalla.
<< imagen 2.5 >>
Audio: Dentro de los mensajes que emitimos por pantalla podemos mostrar el contenido de variables. Para ello utilizamos el símbolo ampersand: &. Supongamos que tomamos el mensaje 000 de la clase Z_PRUEBA que utilizamos anteriormente, el cual dice: "La fecha debe ser mayor o igual a la fecha actual" y queremos que al final del mensaje se visualice la fecha del día actual. Entonces, al final de ese mensaje añadimos un espacio y el símbolo &. Luego tendremos que modificar la declaración del mensaje en el programa, agregando a continuación de la clase de mensaje la cláusula WITH seguida de la variable del sistema SY-DATUM que contiene la fecha. Es importante tener en cuenta que cada ampersand puede albergar hasta 50 caracteres, y que como máximo cada mensaje puede contener hasta 4 variables identificadas con ampersand. Si en un mensaje se desea que aparezca el caracter & como texto y no se desea utilizarlo como variable, debemos repetirlo, es decir escribirlo 2 veces juntas.
El mensaje que mostramos es un mensaje de error. Esto está determinado por la letra "e" que antecede al número del mensaje y la clase de mensajes entre paréntesis.
Los tipos de mensajes existentes son:
S: Status.
I: Información.
W: Warning.
E: Error.
A: Terminación.
X: Dump
<< imagen 2.1 >>
Consultas:
El evento AT SELECTION-SCREEN OUTPUT se ejecuta dentro de un programa antes que se muestre la pantalla de selección del mismo, por lo que es el momento que nos proporciona SAP para evaluar si queremos modificar alguna de las propiedades de los parámetros de selección de la pantalla.
En las pantallas de los programas existe una estructura estándar del sistema que almacena cada campo de la pantalla de selección y particularmente de ellos sus propiedades, una de las propiedades de los parámetros de la pantalla de selección es la "Visualización".
La lógica ABAP sería la siguiente:
LOOP AT SCREEN.
CASE screen-name.
WHEN 'CAMPO1'.
SCREEN-INVISIBLE = 1. "Campo Invisible"
SCREEN-INPUT = 1. "Permite entrada de datos"
ENDCASE.
ENDLOOP.
------------------------------
Si debagueando un programa realizas doble clic encima del select options vas a ver que los select options tienen una estructura determinada de campos, es decir son tablas internas, concepto que veremos en detalle en la próxima unidad.
Su estructura de campos es :
SIGN (char de 1 posición)
OPTION (char de 2 posiciones)
LOW (valor individual del tipo de datos del select options)
HIGH (valor individual del tipo de datos del select options)
Ahora bien si en la pantalla de selección ingresamos un rango desde hasta para el select options S_CONNID, por ejemplo AAAA y BBBB entonces los campos contendrán:
SIGN = I
OPTION = BT (Significa between, que quiere decir "entre")
LOW = 'AAAA'
HIGH = 'BBBB'
------------------------------------------------------
Una clase de mensaje puede almacenar hasta 999 mensajes ya que utiliza tres dígitos para identificar cada mensaje.
Los mensajes de la clase de mensajes son textos que son almacenados en la clase. Luego el tipo del mensaje solo dependerá de la letra que anteceda a la clase y número en la sentencia MESSAGE osea si puedes combinar mensaje de cualquier tipo en una misma clase.
 
 
 
Agradecimiento:
Ha agradecido este aporte: Lorena Amoretti
Favorito:
Está publicación ha sido agregada a sus favoritos por: Lorena Amoretti
Sobre el autor
Publicación académica de Jos? Antonio Saavedra Rodr?guez, en su ámbito de estudios para la Carrera Consultor ABAP.
Jos? Antonio Saavedra Rodr?guez
El Salvador - Legajo: SX28V
✒️Autor de: 166 Publicaciones Académicas
🎓Egresado de los módulos:
- Carrera Consultor ABAP Nivel Inicial
- Carrera Consultor en SAP SD Nivel Avanzado
- Carrera Consultor en SAP SD Nivel Inicial