Unidad-2-Lección-2: Diseño de las Pantallas
1) Creación de dynpros o pantallas.
Para crear una dynpro o pantalla utilizamos el Screen Painter mediante la transacción SE51, o a través de la SE80 directamente, como lo haremos de ahora en adelante.
Una vez creado nuestro programa de diálogo o Module Pool, hacemos click derecho sobre el nombre del programa y seleccionamos la opción Crear >> Dynpro:
Seguidamente aparece una ventana de diálogo donde aparece el nombre del programa de diálogo en el cual estamos trabajando, y le asignamos un número a la dynpro por crear
Una dynpro se identifica dentro de un programa ABAP por un número de 4 dígitos.
Luego veremos la pantalla donde configuraremos las opciones de la dynpro:
Como podemos observar, esta pantalla tiene tres tabs:
%u2981 Atributos: Aquí podemos llenar la siguiente información:
%u2981 Descripción breve
%u2981 Tipo de dynpro.
%u2981 Una dynpro de tipo Normal ocupa toda la pantalla
%u2981 Una Subscreen es una dynpro que puede mostrar en un área de cualquier pantalla dentro del Module Pool.
%u2981 Una dynpro tipo Ventana diálogo modal ocupa parte de una pantalla
%u2981 Dynpro siguiente: Aquí introducimos el número de la próxima dynpro que se mostrará
%u2981 Posición del cursor: El elemento de la pantalla donde quedará posicionado el cursor cuando se visualice el dynpro
%u2981 Grupo de dynpros: Es un número de 4 dígitos con el cual podemos agrupar varios dynpros para poder modificarlos de manera uniforme.
%u2981 Lista de Elementos: Aquí vemos la lista de elementos que componen a la dynpro. Por defecto siempre aparecerá el elemento OK que existe en cada dynpro que creamos. En este campo asignaremos un nombre de variable la cual, al momento de ejecutarse la dynpro, contendrá el código de función correspondiente al botón presionado o acción realizada en la pantalla. Tradicionalmente a este campo se le denomina OK_CODE. Toda dynpro que creemos en un programa de diálogo debe tener asignado su OK_CODE. Este código es parte de la lógica de procesamiento PAI, en particular dentro de un MODULE_USER_COMMAND.
Aquí también podemos ver que hay otros tabs como Textos y máscaras de entrada/salida, Atributos .especiales y otros en los cuales podemos configurar ciertos aspectos de los elementos que componen una dynpro.
%u2981 Lógica proceso: Aquí es donde especificaremos la lógica de procesamiento de la dynpro. En un principio, mientras no se tenga una lógica definida, visualizaremos la siguiente pantalla, con la declaración de los eventos PBO y PAI.
Al igual que con los programas, las dynpro deben activarse para poder ser ejecutados. Para dynpros nuevas, una carpeta Dynpros, dentro de la cual veremos el número de la dynpro que acabamos de crear.
Ahora podemos ir al Screen Painter para empezar a agregar componentes a la dynpro. Para esto hacemos click en el botón Layout ( )
Al hacer click en el botón Visualizar <-> Modificar ( ), podemos visualizar o modificar la dynpro. A la izquierda de la pantalla se encuentra una barra de iconos que representan a los elementos que podemos incorporar a una dynpro. Para agregar uno de estos elementos a la dynpro, se hace click en el elemento deseado y luego click en la pantalla.
Campo entrada/salida
Campo Texto
Entre estos elementos tenemos:
%u2981 Campos de Texto (Text Fields): Utilizados para mostrar textos fijos en la pantalla. Si hacemos doble click en cualquiera de los elementos, la siguiente ventana Screen Painter: Atributos aparece, en la cual podemos configurar ciertos atributos del tipo de elemento seleccionado. Esta misma ventana se usa para configurar atributos de otros elementos.
Aquí vemos que podemos configurar los siguientes atributos:
%u2981 Nombre: nombre del elemento
%u2981 Texto: el texto que se desplegará en la pantalla
%u2981 Nombre icono: podemos agregar un icono al texto que se visualiza, al hacer click en el botón .
%u2981 Quick info: texto que se visualiza cuando se posiciona el mouse encima del elemento.
%u2981 Longitud visualización: para seleccionar la cantidad de caracteres que se visualizaran del texto.
Más abajo en esta ventana vemos el marco Atributos, dentro del cual se encuentran tres tabs:
%u2981 Dict: aquí podemos especificar si el campo hace referencia a un campo declarado en el diccionario de datos, haciendo click en el checkbox Del Dict. . El valor en el atributo Nombre del elemento debe existir en el diccionario de datos, o se emitirá un mensaje de error. Si el campo existe en el diccionario de datos, el elemento asumirá los atributos del campo.
Si el campo no hace referencia un campo del diccionario de datos, podemos especificar una rutina de conversión, ayuda de búsqueda, etc.
%u2981 Programa: aquí especificamos si el campo es de entrada, salida o entrada/salida. Si este es un campo texto, estos atributos son inhabilitados. Para campos usados como salida podemos configurar ciertos parámetros, como la justificación (izquierda, centro, derecha), ceros.
%u2981 Visualización: aquí configuramos especificaciones de visibilidad (visible, invisible, brillo, etc.
%u2981 Campo de entrada/salida (input/output field): Campos de entrada, salida o entrada/salida que se utilizan para introducir, modificar o visualizar datos.
Muchos de los atributos de este elemento son los mismos que describimos para los campos de texto. Los que son propios de los campos de entrada/salida son:
%u2981 Dropdown: para configurar el campo como si fuera una lista desplegable de valores.
%u2981 Scrollable: con esta opción, configuramos la posibilidad de desplazarnos a lo largo del valor dentro del campo.
En el tab Dict podemos configurar el formato del campo en la opción Formato.
En el tab Programa determinamos si el campo es de entrada, salida o entrada/salida. Si el campo es de entrada podemos seleccionar que el campo sea obligatorio, recomendado, posible o no posible.
%u2981 Checkbox:
El atributo para este elemento es Código de función, y aquí especificamos el código de función para el checkbox. La variable del sistema %u2981 SY-UCOMM proporcionará este código cuando se ejecute la dynpro y se seleccione el checkbox.
Nota: el SY-UCOMM es la variable del sistema que contiene el código de función correspondiente al botón seleccionado o presionado por el usuario. Es una variable muy importante para la programación de diálogos, especialmente cuando se trata de un programa o transacción que consiste en una serie de dynpros que se ejecutan una detrás de la otra. En cada dynpro se almacena el valor del SY-UCOMM en la variable OK_CODE , de modo de no perder su valor al cambiar de pantalla.
Si en determinado momento deseamos saber el valor que tendrá SY-COMM, tenemos que hacerle debug al programa o transacción.
%u2981 Radio Button:
Nota: La diferencia entre los radio buttons y los checkboxes es que en un grupo de checkboxes, se pueden seleccionar uno o más de los valores que representan los checkboxes. En cambio, en un grupo de radio buttons, solo es posible seleccionar uno de los valores que representan los radio buttons.
Los atributos propios de los radio buttons son los mismos de los checkboxes. Además de estos atributos, podemos agrupar varios radio buttons de manera que solo se pueda seleccionar uno solo. Esto lo hacemos de la manera siguiente, en la opción Grupos:
1) Seleccionar el primer radio button
2) Poner un valor identificativo en la primera casilla de la opción Grupos
3) Repetir 1) y 2) con el resto de los radio buttons a agrupar
4) Seleccionar todos los radio buttons a agrupar en el Screen Painter
5) Vamos a la opción de menú Tratar >> Agrupación >> Grupo de botones de selección >> Definir
%u2981 Pushbutton: para crear botones, los cuales definen una acción, como “OK”, “Cancelar”, “Continuar”, etc.
El atributo más importante a tener en cuenta para push buttons es Código de función, el cual tomará el valor de la variable %u2981 SY-UCOMM cuando hacemos click en el botón
%u2981 Tabstrip Control y Tabstrip Control con asistente (with wizzard) : Un tabstrip es un control que tiene una colección de una o más pestañas o tabs. Cada objeto Tab de un Tabstrip es un objeto separado que los usuarios pueden seleccionar. En una dynpro, podemos crear un Tabstrip. Existen dos formas de hacerlo: manualmente o utilizando el Wizzard o asistente.
Haciendo click en el botón y haciendo click de nuevo en el área en el Screen Painter, aparece la siguiente pantalla:
Al presionar Continuar aparece una pantalla donde podemos asignar un nombre al Tabstrip.
En la pantalla siguiente asignamos los nombres a cada objeto Tab.
En las siguiente pantalla, automáticamente se le asigna un número a cada Subscreen o “sub-pantalla” (cada objeto Tab se puede tratar como si fuera una sub-dynpro). Cada Subscreen tiene asociado un código de función, el cual es asignado automáticamente.
Seguidamente podemos crear includes de subrutinas (objetos ABAP en el cual se agrupan las declaraciones de subrutinas que se utilizan en un programa o grupo de programas). Los valores que aparecen en pantalla son asignados por defecto.
Y finalmente, hacemos click en el botón Finalizar. El sistema nos informa que se van a crear las Subscreen 0101, 0102, 0103
Y a continuación veremos el elemento Tabstrip en la dynpro:
Si hacemos dobleclick encima del Tabstrip, podremos hacer cambios a todos sus atributos, como lo hemos hecho con otros elementos.
%u2981 Box: utilizado para organizar los elementos de la dynpro.
%u2981 Subscreen área: Botón . Esta es un área dentro de una dynpro en la cual podemos colocar otra dynpro. Esta Subscreen debe existir como dynpro en otro programa. En el programa de nuestra dynpro 0100, se agregarían las líneas de código:
… donde SUBSCREEN1 es el nombre del área del Subscreen en el Screen Painter, Z_PROGRAMA_DYNPRO_1500 es el programa principal que controla la Subscreen y 1500 es el número de la Subscreen.
%u2981 Tabla de Control y Tabla de Control con asistente (with Wizard): Los Table Control son controles que permiten la visualización y modificación de los datos de una tabla. Este control presenta cierta dificultad y es de gran importancia, por lo cual es cubierto en otras lecciones.
%u2981 Custom Control: es un contenedor de una dynpro en donde podemos mostrar otro elemento de pantalla
%u2981 Icono de estado (Status Icon): se utiliza para mostrar elementos indicando el Status GUI del programa.
Nota: Al momento de crear campos en una pantalla o dynpro de un programa tenemos dos posibilidades; una posibilidad es utilizar campos que están guardados en el diccionario de datos ABAP y la otra posibilidad es declarar los campos que vamos a utilizar en el programa de diálogo.
Si definimos los campos que vamos a utilizar en la pantalla dentro del programa de diálogo lo más conveniente será declarar dentro del include donde colocamos las declaraciones de datos una estructura diferente para cada dynpro del programa. Por ejemplo, si tenemos las dynpros 0100, 0200 y 0300 dentro de nuestro programa entonces declararemos las estructuras wa_screen0100, wa_screen0200 y wa_screen0300 dichas estructuras contendrán los campos de cada pantalla, lo único que debemos tener en cuenta es: que los campos deben usar nombres idénticos en las pantallas y en el programa de diálogo.
La otra posibilidad es definir campos en las pantallas provenientes del diccionario de datos ABAP de esta forma los campos de la pantalla llevaran el nombre exacto del campo definido en el diccionario de datos. Para configurar esta definición de los campos de la pantalla deberemos tildar en cada campo de la pantalla la opción. Campo diccionario programa.