Está en la página 1de 28

Programacin de dilogo Parte I

Workshop Abap Febrero 2011

Copyright 2010. All rights reserved.

Sumrio
Object Navigator
Creando un programa de dialogo
Creando una pantalla
Procesando la informacin
Ejecutando el programa
Atributos de campos modificables
La barra de mens
Radiobuttons y Checkboxes
Verificacin manual en Module Pool
Ejecucin condicionada de Mdulos
Mdulos PAI para tipos de funciones E

Creando un programa de dialogo

Creando un programa de dialogo

Creando un programa de dialogo

El programa creado deber estar formado por cuatro includes:


TOP, para declaracin de tablas, tipos, rangos, variables globales, etc.
I01, para contener los mdulos AFTER INPUT.
O01, para contener los mdulos BEFORE OUTPUT.
F01, para contener los FORMS utilizados por el programa.

Creando una pantalla

Creando una pantalla

El flujo lgico de pantalla est dividido en dos eventos para cada pantalla:
El evento "Process Before Output" (PBO) es ejecutado antes de que la pantalla sea
desplegada
El evento Process After Input (PAI) es ejecutado despus de que el usuario realiza
alguna accin en la pantalla.

Creando una pantalla


El modulo STATUS_XXX se utilizar para setear el status_GUI de la pantalla
y la barra de ttulos

Haciendo doble click sobre el nombre de la title bar procedemos a crearla:

Haciendo doble click sobre el nombre del status_GUI procedemos a crear el


mismo:

Creando una pantalla

Creando una pantalla


Para empezar a diagramar la pantalla ser necesario acceder al Screen
Painter, para lo cual utilizaremos el push button:

Creando una pantalla

Elementos
Campos de Texto
Input/output field
CheckBoxes
Radio Buttons
PushButtons
Box
SubScreens
Table Control
TabStrip
CustomControl
Status Icons

Creando una pantalla

Para este ejemplo, crearemos en la pantalla dos campos de texto, dos


campos de entrada y un push button:

Creando una pantalla

Nombraremos a los campos de entrada, L_EBELN y L_EBELP.


Ser necesario declarar dos variables de igual nombre en el include TOP.
Dichas variables adoptaran el valor ingresado por el usuario en estos
campos.
Al push button, le asignaremos el cdigo de funcin (OK-Code) VIS, para
su posterior tratamiento.

Procesando la informacin
Crearemos una segunda pantalla, similar a la anterior, para mostrar
informacin de la posicin del documento de compras ingresado por el
usuario en la pantalla 0100:

En los atributos de ambos campos se


marco el flag solo campo de salida

Procesando la informacin
Al Status_GUI de la pantalla 0200 le agregaremos, adems de los botones
de Back, Leave y Cancel, un botn para habilitar y deshabilitar la edicin de
los campos mostrados.

Haciendo doble click sobre la palabra Editar, pasaremos a los atributos de


la tecla de funcin:

Procesando la informacin

Finalmente lo agregamos a la barra de pulsadores:

Procesando la informacin
Solo nos resta agregarle la lgica de procesamiento al programa.
Empezaremos con la dinpro 0100, que ser el punto de entrada a nuestro
programa:

Previo a visualizar la pantalla solo necesitaremos mostrar el status gui. Si adems,


precisramos lectura de datos, o algn otro proceso previo, lo haramos en el evento
PBO.
Ante cualquier evento del usuario en la pantalla, que genere un ok code (en nuestro
caso:VISU, BACK_100, LEAVE_100, CNCEL_100), el control lo tendr el evento
PAI, que en este ejemplo llamar al modulo USER_COMMAND_0100

Procesando la informacin
Para la dinpro 0200 tendremos:

En el modulo PBO CHECK_EDIT_MODE realizaremos el checkeo


de la habilitacin o inhabilitacin de los campos de entrada.

Ejecutando el programa
Para poder ejecutar un programa de dialogo, es indispensable la creacin de
una transaccin asociada al mismo:

Atributos de campos modificables


Los campos de pantalla y sus atributos modificables son automticamente almacenados
en la tabla interna SCREEN.
La tabla SCREEN es inicializada con los campos definidos en el Screen Painter y con sus
atributos cada vez que el mdulo PBO es ejecutado.
SCREEN-NAME

Field name

SCREEN-GROUP1
SCREEN-GROUP2
SCREEN-GROUP3
SCREEN-REQUIRED
SCREEN-GROUP4

Modification group1
Modification group2
Modification group3
Required
fieldgroup4
Modification

SCREEN-INPUT

Input field

SCREEN-OUTPUT

Output field

SCREEN-INTENSIFIED

Highlighted field

SCREEN-INVISIBLE

Invisible field

SCREEN-LENGTH

Field length

SCREEN-ACTIVE

Active field

SCREEN-DISPLAY_3D

3-dimensional field

SCREEN-VALUE_HELP

Field with value help

SCREEN-REQUEST

Input exist (PAI only)

Para determinar los campos para los cuales se puede cambiar uno ms
atributos, se lee el campo SCREEN-NAME y del campo SCREEN-GROUP1 al
campo SCREEN-GROUP4 en la tabla SCREEN.
El campo SCREEN-REQUEST est reservado para uso interno del sistema.

La barra de mens
Para definir un men, se le pone el nombre en espacio disponible. Se pueden incluir ha
sta 6 mens en la barra de mens. Adems de los mens del usuario, el sistema
aadir automticamente System y Help.
Cada men puede tener hasta 15 entradas. Cada una de las cuales puede ser otro
men en cascada o una funcin.

La barra de mens

Para abrir un men o submen, hacer un Doble click sobre el nombre. Cada entrada
estar compuesta de un cdigo de funcin y un texto de funcin o un texto de men. Con
F4 podemos ver una lista de las funciones que podemos utilizar.
Se pueden anidar hasta 4 niveles de submens. En el caso de las funciones bastar con
indicar el cdigo de la funcin para que el texto de esta aparezca automticamente, si
esta ya existe previamente. Podemos definir los atributos de una funcin nueva con doble
click sobre la nueva funcin definida.

Radiobuttons y Checkbox
Para crear Radiobuttons y checkbox ser necesario crear una variable de tipo cadena de
longitud uno, que ser la que tomar los valores, que irn adoptando estos campos.
En el caso de los radiobuttons, ser necesario asociarlos a un mismo grupo. Para esto
seleccionamos los radiobuttons que formarn un grupo, presionamos el botn derecho
del mouse, y en grupo de botones de seleccin, marcamos Definir.

Verificacin manual en Module Pool


Adems del chequeo automtico es posible realizar una validacin ms extensa de
los valores de entrada con las instrucciones FIELD y CHAIN de la lgica de
proceso del Screen Painter.
Con FIELD podemos validar individualmente cada campo de forma que en caso de
error, la siguiente entrada de datos slo permitir introducir el campo errneo sobre
el que estamos utilizando la instruccin FIELD.
Para chequear un campo contra la base de datos utilizamos:

Si no se encuentran registros en el Diccionario de Datos el sistema emite un


mensaje de error estndar.

Verificacin manual en Module Pool


Existe una versin ampliada de la instruccin anterior que permite enviar mensajes o
warnings en caso de que encuentre o no registros:
FIELD <campo_pantalla> SELECT * FROM <tabla>
WHERE <condicin>
WHENEVER (NOT) FOUND SEND
ERRORMESSAGE / WARNING <nmero>
WITH <campo-texto>.
Para chequear un campo respecto a una lista de valores utilizamos:
FIELD <campo_pantalla> VALUES (<lista_valores>).
Donde <lista_valores> puede ser:
(<valor>)
(not<valor>)
(<valor 1>,<valor 2>,NOT<valor n>)
(BETWEEN <valor 1> AND <valor 2>)
(NOT BETWEEN <valor 1> AND <valor 2>)
Si el valor entrado por el usuario no corresponde a ningn valor de la lista el sistema
emite un mensaje de error.
Para chequear un campo en un mdulo de ABAP/4 utilizamos:
FIELD <campo_pantalla> MODULE <mdulo_ABAP/4>.

Verificacin manual en Module Pool


La instruccin CHAINENDCHAIN encierra un conjunto de instrucciones FIELD, en caso de
error en la entrada de alguno de ellos, todos los campos del CHAIN se podrn modificar,
mientras que los que no pertenezcan al CHAIN estarn bloqueados para la entrada de datos.

CHAIN.
FIELD <campo 1>, <campo 2>, <campo 3>.
MODULE <mod1>.
MODULE <mod2>.
ENDCHAIN.
CHAIN.
FIELD <campo 1>,<campo 2>.
MODULE <mod1>.
FIELD <campo 3> MODULE <mod2> ON CHAIN INPUT.
ENDCHAIN.

Ejecucin condicionada de mdulos

Si se especifica la adicin ON INPUT despus de MODULE en una instruccin FIELD,


el mdulo es ejecutado solamente si el campo relevante contiene un valor diferente al
valor inicial.

PROCESS AFTER INPUT.


FIELD <campo de pantalla>.
MODULE <mdulo> ON INPUT.

En un estatuto CHAIN se debe usar la instruccin ON CHAIN-INPUT. Entonces, el


mdulo concerniente es procesado solamente si al menos uno de los campos de
pantalla del estatuto CHAIN contiene un valor diferente al valor inicial.
.

PROCESS AFTER INPUT.


CHAIN.
FIELD <campo de pantalla>,
<campo de pantalla>,
.
.
<Campo de pantalla>.
MODULE <mdulo> ON CHAIN-INPUT.
ENDCHAIN.

Mdulos PAI para tipos de funciones E


Es posible que en alguna ocasin el usuario quiera salir de la pantalla sin necesidad de pasar las
validaciones automticas (Por ejemplo utilizando las funciones estndares BACK, EXIT o
CANCEL). En este caso utilizaremos la clusula AT EXIT COMMAND de la instruccin MODULE.
MODULE <mdulo_ABAP> AT EXIT-COMMAND.

Para poder utilizar un AT EXIT COMMAND en un botn de campo, ser necesario asignar
el valor E en el atributo de campo FctType del editor de pantallas o en las funciones del
Men Painter.

También podría gustarte