Tutorial ABAP básico (III): pantallas de selección

lunes, 17 de diciembre de 2012

Screen printing

Depués de aprender a crear un programa ABAP y a declarar variables en ABAP vamos a ver cómo definir pantallas de selección. Una pantalla de selección es aquella pantalla que se define al inicio de un programa, la primera que el usuario va a ver cuando ejecute el programa. Sirve a la introducción de datos iniciales por parte del usuario que nosotros utilizaremos como criterio para los cálculos, búsquedas… de nuestro programa Es algo así como pintar una pantalla en blanco con sentencias ABAP. En este artículo vamos a ver dos eventos asociados a pantallas de selección, el evento selection-screen y el evento at selection-screen.

Selection-screen

Este evento define la pantalla de selección propiamente dicha. Las sentencias más importantes de este evento son:
  • Parameters: recoge una variable única en la pantalla de selección. Se declara como si fuese una variable global. Al fin y al cabo, no es más que una variable que va a contener un valor único, el valor que le dé el usuario. La forma en que lo haríamos podría ser, por ejemplo, una de las tres siguientes.
PARAMETERS p_campo TYPE tipo. PARAMETERS p_campo TYPE elemento_de_datos. PARAMETERS p_campo LIKE tabla-campo. 
Aunque, para mí, la tercera siempre es la mejor ya que lo hacemos en referencia a una tabla y recoge el matchcode directamente del dato del diccionario. 
  • Select-options: mediante esta sentencia podemos declarar un rango de valores. Es un criterio de selección complejo que puede contener más de un dato a la vez. Internamente, mediante esta sentencia ABAP lo que está creando es una tabla intena con cuatro campos diferentes, cada uno de ellos contendrá datos diferentes.

    • Sign: define si lo que el usuario ha escrito en el criterio de selección es un dato que debe estar en el rango de datos o se debe excluir del rango de datos a considerar. ABAP asigna el valor ‘I’ si es un dato inclusivo (pestañas ‘Seleccionar valores individuales’ y ‘Seleccionar intervalos’ ) y el valor ‘E’' si es un dato que se ha de excluir (pestañas ‘Excluir valores individuales’ y ‘Excluir intervalos’).
    • Option: los valores que se introducen en el rango de selección pueden ser un conjunto individual de valores o un rango del tipo desde…hasta. Si nos encontramos en el primer caso, el campo option de la tabla tendrá el valor ‘EQ’ (equal); pero si el segundo caso tendrá el valor ‘BT’ (between).
    • Low: este campo contiene el valor inicial del rango de valores.
    • High: contiene el valor final del rango de valores.
¿Cómo declaramos la sentencia select-options? Para mí la mejor manera para declarar esta sentencia es 
SELECT-OPTIONS s_variable FOR tabla-campo.
  • Selection-screen begin of block nombre_bloqueselection-screen end of block nombre_bloque: con estas dos sentencias estamos definiendo un bloque de la pantalla de seleccción. Le decimos a SAP que todas las sentencias que se encierren (parameters y select-options) entre estas dos sentencias forman parte de un mismo grupo.
Por ejemplo, declaremos una pantalla de selección para obtener un rango de compañías aéreas y un parámetro con el número de vuelo.

************************************************************************ *SELECTION-SCREEN ************************************************************************ SELECTION-SCREEN BEGIN OF BLOCK b1.   SELECT-OPTIONS s_carrid FOR sflight-carrid.   PARAMETERS p_connid LIKE sflight-connid. SELECTION-SCREEN END OF BLOCK b1.

El resultado de esta pantalla en SAP sería algo así:

Ejemplo de pantalla de selección


Pero esto no es muy informativo para el usuario. Así, no sabría qué significa cada campo. La solución es utilizar los textos de selección del menú Pasar a / Elementos de texto / Textos de selección. Introducimos los textos para los campos correspondientes y activamos.

Textos de selección para la pantalla de selección

Al ejecutar de nuevo el programa el resultado será mucho más explicativo para el usuario:

Pantalla de selección después de escribir los textos de selección


Podéis encontrar más información sobre la definición de pantallas de selección en el apartado Definición de pantallas de selección de la help de SAP.

At selection-screen

El evento at selection-screen permite definir varias situaciones que sucederán durante (antes o después de) la ejecución de la pantalla de selección. Se utiliza la sentencia at-selection screen seguida de alguna de sus cláusulas. En este ejemplo sólo voy a mostrar la setencia at selection-screen sin cláusulas que nos permite validar los datos de la pantalla de selección una vez el usuario ha entrado algún dato.

************************************************************************
*AT SELECTION SCREEN
************************************************************************
AT SELECTION-SCREEN.
  IF p_connid = '0017'.
    MESSAGE 'Vuelo no permitido' TYPE 'E'.
  ENDIF.

En este caso, si el usuario introdujese el vuelo ‘0017’ en el parámetro de vuelo p_connid al intentar ejecutar el programa SAP enviaría un mensaje de error y no dejaría continuar.

Mensaje de error "Vuelo no permitido"


Nos vemos en el siguiente post de la serie: recuperar y almacenar información de la base datos.

Imagen inicial | softicons y ollanani.


Si crees que este artículo es útil ayúdame a compartirlo a través de alguno de los botones sociales :-)

1 comentario:

  1. Hola amigos, tengo 2 campos para filtrar un alv, Sociedad y Cuentas Contables, pero me gustaria que al seleccionar una Sociedad ya en el Matchcode de las cuentas contables me aparezcan sólo las cuentas pertenecientes a la Sociedad que elegí, adjunté un print para que vean que es lo que quiero hacer.

    ResponderEliminar