You are on page 1of 509

TAW10

Programacin ABAP - Introduccin


- Parte 2

.
.
MANUAL DEL PARTICIPANTE
FORMACIN CON INSTRUCTOR
.
Versin del curso: 10
Duracin del curso: 5 Das
Nmero de material: 50117658
Copyright y marcas registradas de
SAP

2014 SAP AG. Reservados todos los derechos.

Queda prohibida la reproduccin o difusin de parte o la totalidad de este programa sin el


permiso expreso de SAP AG. La informacin aqu contenida puede modificarse sin previo
aviso.
Algunos productos de software comercializados por SAP AG y sus distribuidores contienen
componentes de software propiedad de otros proveedores de software.

Microsoft, Windows, Excel, Outlook y PowerPoint son marcas registradas de Microsoft


Corporation.

IBM, DB2, DB2 Universal Database, System i, System i5, System p, System p5, System
x, System z, System z10, System z9, z10, z9, iSeries, pSeries, xSeries, zSeries, eServer,
z/VM, z/OS, i5/OS, S/390, OS/390, OS/400, AS/400, S/390 Parallel Enterprise
Server, PowerVM, Power Architecture, POWER6+, POWER6, POWER5+, POWER5,
POWER, OpenPower, PowerPC, BatchPipes, BladeCenter, System Storage, GPFS,
HACMP, RETAIN, DB2 Connect, RACF, Redbooks, OS/2, Parallel Sysplex, MVS/ESA,
AIX, Intelligent Miner, WebSphere, Netfinity, Tivoli y Informix son marcas comerciales o
marcas registradas de IBM Corporation.

Linux es la marca registrada de Linus Torvalds en EE. UU. y en otros pases.

Adobe, el logotipo de Adobe, Acrobat, PostScript y Reader son marcas comerciales o


marcas registradas de Adobe Systems Incorporated en EE. UU. y/o en otros pases.

Oracle es una marca registrada de Oracle Corporation.

UNIX, X/Open, OSF/1 y Motif son marcas registradas de Open Group.

Citrix, ICA, Program Neighborhood, MetaFrame, WinFrame, VideoFrame, y MultiWin


son marcas o marcas registradas de Citrix Systems, Inc.

HTML, XML, XHTML y W3C son marcas o marcas registradas de W3C, World Wide
Web Consortium, Massachusetts Institute of Technology.

Java es una marca registrada de Sun Microsystems, Inc.

JavaScript es una marca registrada de Sun Microsystems, Inc., utilizada bajo licencia
para la tecnologa inventada e implementada por Netscape.

SAP, R/3, SAP NetWeaver, Duet, PartnerEdge, ByDesign, SAP BusinessObjects


Explorer, StreamWork y otros productos y servicios de SAP aqu mencionados, as
como sus respectivos logotipos, son marcas comerciales o marcas registradas de SAP
AG en Alemania y en otros pases.

Business Objects y el logotipo de Business Objects, BusinessObjects, Crystal Reports,


Crystal Decisions, Web Intelligence, Xcelsius y otros productos y servicios de Business
Objects aqu mencionados, as como sus respectivos logotipos, son marcas
comerciales o marcas registradas de Business Objects Software Ltd. Business Objects
es una empresa de SAP.

Sybase y Adaptive Server, iAnywhere, Sybase 365, SQL Anywhere, y otros productos y
servicios Sybase aqu mencionados, as como sus respectivos logotipos son marcas
comerciales o marcas registradas de Sybase Inc. Sybase es una empresa de SAP.
El resto de nombres de productos y servicios mencionados son marcas de sus respectivas
empresas. Los datos contenidos en este documento son nicamente informativos. Las
especificaciones nacionales del producto pueden variar.
Este material est sujeto a cambios sin previo aviso. Este material est provisto por SAP AG y
sus empresas afiliadas ("Grupo SAP") nicamente para fines informativos, sin representar
garanta alguna; el Grupo SAP no ser responsable de los errores u omisiones referentes a los
materiales. Las nicas garantas para los productos y servicios del Grupo SAP son las
especificadas explcitamente en las declaraciones de garantas que acompaan a los productos
y servicios, si los hubiera. Nada de lo escrito en la presente debe tomarse como una
constitucin de garanta adicional.

Copyright . Reservados todos los derechos. iii


iv Copyright . Reservados todos los derechos.
Convenciones Tipogrficas

En este manual se usa el espaol de Espaa como estndar.


Tambin se usan las siguientes convenciones tipogrficas.

Esta informacin se visualiza en la presentacin del instructor.

Demostracin

Procedimiento

Advertencia o aviso

Consejo

Informacin relacionada o adicional

Discusin con moderador

Control de interfaz de usuario Texto ejemplo

Ttulo de ventana Texto ejemplo

Copyright . Reservados todos los derechos. v


vi Copyright . Reservados todos los derechos.
Contenido

xi Resumen del curso

1 Captulo 1: Introduccin al Dictionary

2 Leccin: Descripcin del Dictionary ABAP

9 Captulo 2: Tipos de datos en el Dictionary ABAP

10 Leccin: Trabajar con dominios y elementos de datos


17 Ejercicio 1: Crear tipos de datos bsicos
23 Leccin: Trabajar con estructuras planas
27 Ejercicio 2: Crear estructuras simples y anidadas
31 Leccin: Trabajar con tipos de tablas y estructuras profundas
33 Ejercicio 3: Crear tipos de tablas
37 Ejercicio 4: Crear estructuras profundas

49 Captulo 3: Tablas de base de datos

50 Leccin: Trabajar con tablas transparentes


61 Ejercicio 5: Crear tablas en el Dictionary ABAP
71 Leccin: Trabajar con tablas cluster y tablas pool

79 Captulo 4: Rendimiento durante el acceso a una tabla

80 Leccin: Uso de los ndices de la tabla de base de datos


83 Ejercicio 6: Uso de ndices de tabla
87 Leccin: Uso de tabla en la memoria intermedia
101 Ejercicio 7: Tabla en memoria intermedia

113 Captulo 5: Verificaciones de entrada

114 Leccin: Trabajar con valores fijos


117 Ejercicio 8: Crear valores fijos
120 Leccin: Definir claves externas
129 Ejercicio 9: Asegurar la consistencia de datos por medio de
verificaciones de entrada
139 Leccin: Trabajar con tablas de texto
141 Ejercicio 10: Crear una tabla de texto

151 Captulo 6: Dependencias de objetos de Dictionary

152 Leccin: Diferenciar entre objetos activos e inactivos del diccionario


155 Ejercicio 11: Diferenciar entre objetos activos e inactivos del
diccionario
158 Leccin: Gestionar la referencia de utilizacin
161 Ejercicio 12: Explorar las dependencias de los objetos de Dictionary
ABAP

Copyright . Reservados todos los derechos. vii


169 Captulo 7: Modificaciones de tablas

170 Leccin: Conversin de tabla


177 Ejercicio 13: Realizar una conversin de tablas
182 Leccin: Ampliar tablas mediante estructuras append
189 Ejercicio 14: Ampliar una tabla mediante una estructura append

197 Captulo 8: Vistas y vistas de actualizacin

198 Leccin: Definir vistas


209 Ejercicio 15: Crear una vista de base de datos
214 Leccin: Definir vistas de actualizacin
221 Ejercicio 16: Crear una vista de actualizacin
226 Leccin: Definir clusters de vistas
229 Ejercicio 17: Crear un cluster de vistas

237 Captulo 9: Ayudas para bsqueda

238 Leccin: Definir ayudas para bsqueda


251 Ejercicio 18: Crear ayudas para bsqueda
255 Leccin: Aplicacin de tcnicas de ayuda para bsqueda avanzada
259 Ejercicio 19: Crear ayudas para bsquedas compuestas
263 Ejercicio 20: Ampliar Ayudas para bsqueda mediante Ayudas para
bsqueda append

273 Captulo Pantalla de seleccin


10:

274 Leccin: Implementacin de una pantalla de seleccin


285 Ejercicio 21: Crear una pantalla de seleccin
291 Leccin: Implementacin de pantallas de seleccin mltiple
297 Ejercicio 22: Definir etiquetas en pantallas de seleccin
303 Leccin: Administracin de las verificaciones de entrada y variantes
309 Ejercicio 23: Implementar verificaciones de entradas y crear
variantes

317 Captulo 11: Introduccin a la programacin de pantallas

318 Leccin: Descripcin de aspectos generales de transacciones


325 Ejercicio 24: Creacin de un programa de dilogo
328 Leccin: Presentacin de programacin de pantallas
333 Leccin: Creacin de pantallas y de elementos de pantalla
341 Ejercicio 25: Crear una pantalla
347 Leccin: Modificacin de pantallas en el tiempo de ejecucin
352 Leccin: Definicin de secuencia de pantallas
357 Leccin: Llamada dinmica de una ventana de dilogo
359 Ejercicio 26: Cree una ventana de dilogo

viii Copyright . Reservados todos los derechos.


367 Captulo 12:La interfaz del programa

368 Leccin: Resumen: Interfaz


374 Leccin: Configuracin de un ttulo GUI y un status GUI
383 Ejercicio 27: Crear un status GUI

393 Captulo 13:Elementos simples de la pantalla

394 Leccin: Definicin de elementos de pantalla para salida


401 Leccin: Definicin de campos de entrada/salida
406 Leccin: Definicin de casillas de seleccin y de grupos de botones
de seleccin
411 Ejercicio 28: Crear un grupo de botones de seleccin
416 Leccin: Definicin de botones

427 Captulo Gestin de pantallas de error


14:

428 Leccin: Tratamiento de errores usando mensajes de dilogo y


verificaciones de entrada de campos
438 Leccin: Tratamiento de errores usando navegacin y ayuda para
entradas
443 Ejercicio 29: Verificacin de valores de entrada

455 Captulo 15:Subscreens

456 Leccin: Definicin de Subscreens


465 Ejercicio 30: Incrustar subscreens

477 Captulo 16:Controles de fichas

478 Leccin: Definicin de controles de ficha


484 Leccin: Modificacin de controles de ficha
489 Ejercicio 31: Crear controles de fichas

Copyright . Reservados todos los derechos. ix


x Copyright . Reservados todos los derechos.
Resumen del curso

PBLICO OBJETIVO
Este curso est dirigido al siguiente pblico objetivo:
Consultor de aplicaciones
Consultor de datos
Consultor de desarrollo
Consultor analista de negocios o industria
Consultor de soporte
Consultor de tecnologa
Gestor de datos
Programador
Administrador de sistema

Copyright . Reservados todos los derechos. xi


xii Copyright . Reservados todos los derechos.
CAPTULO 1 Introduccin al Dictionary

Leccin 1
Descripcin del Dictionary ABAP 2

OBJETIVOS DEL CAPTULO

Describir las funciones del Dictionary ABAP

Copyright . Reservados todos los derechos. 1


Captulo 1
Leccin 1
Descripcin del Dictionary ABAP

RESUMEN DE LA LECCIN
Esta leccin proporciona un resumen del alcance funcional del Dictionary ABAP.

Ejemplo empresarial
Como desarrollador, debe explicar a un colega las principales capacidades de Dictionary
ABAP. Por este motivo, se requieren los siguientes conocimientos:
Conocer las funciones del Dictionary ABAP en el sistema SAP
Comprender las diferentes maneras de definir objetos de datos y tipos de datos
Comprender los servicios proporcionados por el Dictionary ABAP
Comprender la relacin entre el Dictionary ABAP y las herramientas proporcionadas por el
entorno de desarrollo y de tiempo de ejecucin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir las funciones del Dictionary ABAP

Resumen de las funciones de Dictionary ABAP

Figura 1: Funcin del Dictionary ABAP

2 Copyright . Reservados todos los derechos.


Leccin: Descripcin del Dictionary ABAP

El Dictionary ABAP posibilita la gestin centralizada de todas las definiciones de tipos


utilizadas en el sistema SAP.

En el Dictionary ABAP, se puede:


Crear tipos definidos por el usuario, como elementos de datos, estructuras y tipos de
tablas, para utilizarlos en los programas ABAP o en interfaces de mdulos de funciones,
mtodos de objetos y dems.
Crear objetos de base de datos como tablas, ndices y vistas en el Dictionary ABAP.
Proporcionar una variedad de servicios que ayudan al desarrollo del programa. Por
ejemplo, el Dictionary ABAP ayuda a activar y desactivar bloqueos, a definir una ayuda
para entradas y a aadir una ayuda para bsqueda a un campo de dynpro.

Objetos de base de datos en el Dictionary ABAP

Figura 2: Objetos de base de datos en el Dictionary ABAP

En el Dictionary ABAP, se puede:


Definir las tablas y las vistas de la base de datos. El sistema crea estas tablas y vistas en la
base de datos subyacente con la definicin en Dictionary ABAP. Las modificaciones en la
definicin de una tabla o una vista de base de datos se efectan automticamente en la
base de datos.
Definir ndices en el Dictionary ABAP para acelerar el acceso a los datos en una tabla. El
sistema tambin crea estos ndices en la base de datos cuando se activa la tabla.

Copyright . Reservados todos los derechos. 3


Captulo 1: Introduccin al Dictionary

Definiciones de tipos en el Dictionary ABAP

Figura 3: Definiciones de tipos en el Dictionary ABAP

Las diferentes categoras de tipos del Dictionary ABAP son:


Elementos de datos
Los elementos de datos describen un tipo de datos elemental mediante la definicin de un
tipo de datos, la longitud y los caracteres decimales.
Estructuras
Estn formadas por componentes que pueden ser de cualquier tipo.
Tipos de tabla
Describen la estructura de una tabla interna.

Cualquier tipo complejo definido por el usuario se puede crear a partir de estos tipos bsicos.
Por ejemplo, los datos de un empleado se almacenan en una estructura llamada empleado
con nombre, direccin y telfono como sus componentes. El componente "nombre"
tambin es una estructura con los componentes nombre de pila y apellido. Los
componentes nombre de pila y apellido son elementales, ya que el tipo es definido por un
elemento de datos. El tipo de componente "direccin" es una estructura cuyos componentes
son otras estructuras. Un tipo de tabla se usa para definir el componente "telfono", porque
un empleado puede tener ms de un nmero de telfono.
Los tipos se usan por ejemplo en programas ABAP para definir los tipos de parmetros de
interfaz de los mdulos de funciones.

4 Copyright . Reservados todos los derechos.


Leccin: Descripcin del Dictionary ABAP

Servicios del Dictionary ABAP

Figura 4: Servicios del Dictionary ABAP

Los siguientes servicios del Dictionary ABAP ayudan al desarrollo del programa:
Ayudas para entradas para campos de pantalla
Las ayudas para entradas se pueden definir con ayudas para bsquedas.
Ayuda de campo para campos de pantalla
A los campos de pantalla se les puede asignar una Ayuda de campo (F1) mediante la
creacin de documentacin para los elementos de datos.
Verificaciones de entrada
Una verificacin de entrada asegura que los valores introducidos son consistentes y
pueden ser fcilmente definidos para los campos de pantalla usando claves externas..
Activar y desactivar bloqueos
El Dictionary ABAP ofrece soporte para activar y desactivar bloqueos. Para activar y
desactivar bloqueos, debe crear objetos de bloqueo en el Dictionary ABAP. A partir de
estos objetos de bloqueo se generan automticamente mdulos de funciones para activar
y desactivar bloqueos; luego se pueden enlazar en el programa de aplicacin.
Grabacin de datos en el memoria intermedia
A acceder a los datos de la base de datos, puede mejorar el rendimiento de los objetos de
la base de datos (tablas, vistas, etc) por medio de la grabacin de datos en la memoria
interna.
Grabacin en log
Registrar un log le permite asentar modificaciones automticas de las entradas de una
tabla.

Copyright . Reservados todos los derechos. 5


Captulo 1: Introduccin al Dictionary

Enlace con el entorno de desarrollo y de tiempo de ejecucin

Figura 5: Enlace con el entorno de desarrollo y de tiempo de ejecucin

El Dictionary ABAP se integra activamente en los entornos de desarrollo y de tiempo de


ejecucin. Cada modificacin se refleja de inmediato en las pantallas y programas ABAP
relevantes.

Los siguientes ejemplos explican la relacin entre el Dictionary ABAP y las herramientas
proporcionadas por el entorno de desarrollo y de tiempo de ejecucin:
Cuando se ejecuta un programa o una dynpro, el intrprete de ABAP y el de dynpro
acceden a las definiciones de tipo almacenadas en el Dictionary ABAP.
Las herramientas ABAP y Screen Painter usan la informacin almacenada en el Dictionary
ABAP como soporte durante el desarrollo de programas. Un ejemplo de ello es la funcin
Get from Dictionary en el Screen Painter, con la que se pueden aadir campos de una tabla
o de una estructura definidas en el Dictionary ABAP en una dynpro.
La interfaz de base de datos usa la informacin sobre las tablas o las vistas de base de
datos almacenada en el Dictionary ABAP para acceder a los datos de estos objetos.

RESUMEN DE LA LECCIN
Ahora podr:
Describir las funciones del Dictionary ABAP

6 Copyright . Reservados todos los derechos.


Captulo 1

Evaluacin de la formacin

1. A los campos de dynpro se les puede asignar una Ayuda de campo (F1) mediante la
creacin de documentacin para los elementos de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cules de los siguientes tipos definidos por el usuario se pueden crear en el Dictionary
ABAP?
Seleccione las respuestas correctas.

X A Elementos de datos

X B Estructuras

X C ndices

3. Al crear la interfaz del usuario en _________________, los campos de estructuras o tablas


definidas en el Dictionary se pueden aadir a la pantalla por medio de la funcin 'Get from
Dictionary'.
Seleccione la respuesta correcta.

X A ndices

X B Intrprete ABAP

X C Screen Painter

Copyright . Reservados todos los derechos. 7


Captulo 1

Respuestas a la Evaluacin de la formacin

1. A los campos de dynpro se les puede asignar una Ayuda de campo (F1) mediante la
creacin de documentacin para los elementos de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cules de los siguientes tipos definidos por el usuario se pueden crear en el Dictionary
ABAP?
Seleccione las respuestas correctas.

X A Elementos de datos

X B Estructuras

X C ndices

3. Al crear la interfaz del usuario en _________________, los campos de estructuras o tablas


definidas en el Dictionary se pueden aadir a la pantalla por medio de la funcin 'Get from
Dictionary'.
Seleccione la respuesta correcta.

X A ndices

X B Intrprete ABAP

X C Screen Painter

8 Copyright . Reservados todos los derechos.


CAPTULO 2 Tipos de datos en el Dictionary
ABAP

Leccin 1
Trabajar con dominios y elementos de datos 10
Ejercicio 1: Crear tipos de datos bsicos 17

Leccin 2
Trabajar con estructuras planas 23
Ejercicio 2: Crear estructuras simples y anidadas 27

Leccin 3
Trabajar con tipos de tablas y estructuras profundas 31
Ejercicio 3: Crear tipos de tablas 33
Ejercicio 4: Crear estructuras profundas 37

OBJETIVOS DEL CAPTULO

Definir dominios para elementos de datos


Definir elementos de datos
Definir estructuras simples en el Dictionary ABAP
Definir tipos de tablas en el Dictionary ABAP
Definir estructuras profundas en el Dictionary ABAP
Definir constantes globales por medio de grupos de tipos

Copyright . Reservados todos los derechos. 9


Captulo 2
Leccin 1
Trabajar con dominios y elementos de datos

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear dominios y usarlos en elementos de datos. Tambin explica
cmo usar los elementos de datos como la base para definir objetos de datos en programas
ABAP.

Ejemplo empresarial
Debe definir tipos de datos simples y complejos en Dictionary ABAP, y ser capaz de usarlos
en un programa ABAP. Por este motivo, se requieren los siguientes conocimientos:
Comprender los tipos de datos
Comprender los elementos de datos
Comprender los dominios

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir dominios para elementos de datos
Definir elementos de datos

10 Copyright . Reservados todos los derechos.


Leccin: Trabajar con dominios y elementos de datos

Resumen de tipos de datos

Figura 6: Pantalla inicial del Dictionary ABAP (cdigo de transaccin SE11)

En el Dictionary ABAP se pueden definir tipos de datos vlidos para todos los programas
(conocidos en general). Puede remitirse a estos tipos de datos en cada programa ABAP en el
sistema SAP agregando TYPE a las sentencias ABAP correspondientes.

En el Dictionary ABAP: En el campo Tipo de datos en la pantalla inicial puede encontrar


los siguientes tipos bsicos:
Elemento de datos
Estructura
Tipo de tabla

Copyright . Reservados todos los derechos. 11


Captulo 2: Tipos de datos en el Dictionary ABAP

Tipos de datos en el Dictionary ABAP

Figura 7: Tipos de datos en el Dictionary ABAP

Para definir objetos de datos en los programas ABAP, puede usar las definiciones de tipo que
aparecen en la figura (excepto el dominio). Las flechas le indican cmo se pueden combinar
entre s.
Los elementos de datos usan dominios o tipos integrados para definir sus propiedades
tcnicas. Sin embargo, un programa ABAP no puede acceder a los dominios para definir
objetos de datos.

Dominios
Los dominios administran centralmente las propiedades tcnicas de los elementos de datos.
Los dominios no pueden usarse directamente en programas, tablas y dems.

Un dominio incluye las siguientes opciones:


Formato
En las especificaciones de formato encontrar el Tipo de dato y el Nmero de caracteres
que se pueden introducir en un objeto de datos dependiente. Si el formato es numrico,
tambin podr especificar el nmero de lugares decimales.
El tipo de datos debe seleccionarse de una lista integrada de tipos de datos.
Los siguientes son los tipos de datos ms utilizados:
- CHAR (Cadena de caracteres)
Los campos de este tipo pueden tener en las tablas una longitud mxima de 225
caracteres. Si desea utilizar cadenas de caracteres ms largas, elija el tipo de datos
LCHR . En estructuras, no hay restricciones de longitud para estos campos.

12 Copyright . Reservados todos los derechos.


Leccin: Trabajar con dominios y elementos de datos

- DATS (Fecha)
La longitud de este tipo de datos es de ocho caracteres. Puede definir el modelo de
salida mediante el perfil de usuario.
- DEC (Decimal)
Un campo DEC puede tener 31 caracteres como mximo. Este campo es el campo de
clculo o cantidad con punto decimal, signo +/- y separadores decimales.
- NUMC (Numrico)
La longitud del campo NUMC est limitada a un mximo de 255 caracteres. Esta
cadena de caracteres slo puede contener nmeros.
Caractersticas de salida
La longitud mxima del campo, incluidas comas o puntos decimales, se especifica para la
entrada y salida de valores.
Este valor generalmente se calcula automticamente una vez que se asigna el nmero de
caracteres en Formato. Sin embargo, puede sobrescribirlo. El formato de salida afecta la
forma en que se visualizan las pantallas e pantallas de seleccin. Las especificaciones de
este rea se utilizan cuando un campo se integra a una pantalla. Sin embargo, se pueden
modificar en el Screen Painter.
Tambin puede definir una rutina de conversin. Esta rutina de conversin cambia el
formato de visualizacin (por ejemplo, coloca ceros no significativos antes de un nmero)
cuando el contenido de un campo de dynpro se convierte del formato de visualizacin al
formato interno de SAP y viceversa. El sistema ejecuta las mismas rutinas de conversin
cuando se utiliza la sentencia WRITE de ABAP. Del mismo modo, se puede usar esta rutina
de conversin para anular las conversiones estndar inadecuadas.
En el caso de algunos tipos de datos como DEC, FLTP, QUAN y CURR la casilla de
verificacin Signo +/- est lista para realizar entradas. Si est activada, el primer carcter
del campo de dynpro estar reservado para el signo +/-. Del mismo modo, el sistema
aumenta la longitud de salida en 1.
En el caso de los tipos de datos basados en caracteres, debera determinar tambin si se
permiten minsculas. Si no se ha activado este indicador, se podrn introducir minsculas
en los campos de entrada correspondientes, pero se transformarn en maysculas en
cuanto el usuario confirme la entrada (p. ej., tecla INTRO).
Adems, puede definir rangos de valores vlidos para utilizarlos en verificaciones de
entrada.

Copyright . Reservados todos los derechos. 13


Captulo 2: Tipos de datos en el Dictionary ABAP

Elementos de datos

Figura 8: Elemento de datos

Los elementos de datos definen tipos de datos que se pueden usar en pantallas, ayudas para
bsquedas, programas ABAP y tipos de datos complejos.
Los elementos de datos permiten actualizar los denominadores de campos. Estos
denominadores de campo (breve, medio y largo) se pueden visualizar en pantallas o pantallas
de seleccin para explicar el contenido de campo.
Adems se debe especificar la longitud mxima para el denominador de campo en cuestin.
Si trabaja para una empresa multinacional, puede traducir los denominadores de campo a
otros idiomas. (En Dictionary ABAP, seleccione Pasar a-> Traduccin o ejecute el cdigo de
transaccin SE63.) Cuando especifique la longitud mxima, recuerde que en otro idioma el
mismo trmino del denominador de campo puede ser ms largo.
Se puede aadir una Ayuda para bsqueda (tecla F4 o Ayuda para entradas) a un elemento
de datos. Ms adelante en el curso, se trata con mayor profundidad el tema Ayudas para
bsqueda. Las ayudas para bsqueda se pueden integrar en distintos niveles.

Parmetro SET/GET
En aplicaciones distintas, puede que deba introducir un valor concreto en varias pantallas.
Asignar un parmetro SET/GET al elemento de datos evita que el usuario deba introducir
varias veces el mismo valor. Cuando sale de la pantalla, el sistema transfiere el valor a este
parmetro. Si en una pantalla posterior hay un campo de entrada que se basa en el mismo
elemento de datos, el sistema lee el valor desde el parmetro y lo introduce en el campo de la
pantalla. Los parmetros SET/GET conservan el valor en cada sesin. Estos valores no se
conservan despus de que el usuario cierra sesin.
Los parmetros SET/GET no tienen nada que ver con el historial de SAP GUI (datos locales).
Tambin puede asignar un nombre predeterminado al elemento de datos. Sin embargo, esto

14 Copyright . Reservados todos los derechos.


Leccin: Trabajar con dominios y elementos de datos

es vlido si usa el elemento de datos como un componente de Business Application


Programming Interface (BAPI).

Las propiedades tcnicas del elemento de datos se conservan en la etiqueta Tipo de datos. Se
recomienda utilizar dominios para especificar el tipo tcnico de un elemento de datos. No
obstante, tambin puede definir el elemento de datos mediante los mismos tipos integrados
que se usan para definir los dominios. Como caso especial, puede crear tambin un elemento
de datos como tipo de referencia. El tipo referido puede ser cualquier tipo definido en el
diccionario o una referencia genrica a los tipos ANY, OBJECT y DATA. Una referencia al tipo
ANY puede sealar tanto a objetos como a datos. La definicin como referencia equivale a la
declaracin de tipo en un programa ABAP TYPES tr_dt TYPE REF TO data.

Copyright . Reservados todos los derechos. 15


Captulo 2: Tipos de datos en el Dictionary ABAP

16 Copyright . Reservados todos los derechos.


Captulo 2
Ejercicio 1
Crear tipos de datos bsicos

Ejemplo empresarial
Como parte del proyecto de desarrollo, debe crear varios tipos de datos globales a los que
puedan acceder otros miembros del proyecto.
Use el sistema SAP para crear dominios y varios elementos de datos. Despues cree un
programa ejecutable que use los elementos de datos cuyas propiedades tcnicas estn
definidas por dominios.
Tarea 1
Cree dos dominios de modo que pueda usarlos ms adelante en elementos de datos.

1. Ejecute la transaccin SE11.

2. Cree un dominio con el nombre ZDO_10NUM_## en la pantalla de inicio de Dictionary


ABAP. Fije las propiedades del dominio de modo que contenga nmeros decimales de 10
dgitos y permita valores negativos. De estos 10 dgitos, 2 deberan estar reservados para
decimales.

3. Grabe el dominio como un objeto local y actvelo.

4. En la pantalla inicial del Dictionary ABAP, cree un dominio llamado ZDO_30CHAR_##. El


dominio puede tener un mximo de 30 caracteres de texto y los campos de entrada deben
admitir minsculas.

5. Grabe el dominio como un objeto local y actvelo.

Tarea 2
Cree varios elementos de datos y use los dominios ya definidos para las propiedades
tcnicas.

1. Inicie la transaccin SE11.

2. Introduzca un elemento de datos (ZLASTNAME##) como apellido de una persona y use un


dominio adecuado. El elemento de datos puede tener un mximo de 30 caracteres.

3. Introduzca un elemento de datos (ZFIRSTNAME##) como nombre de pila de una persona y


use un dominio adecuado.

4. Cree un elemento de datos (ZASSETS##) para activos y use un dominio adecuado.

5. Cree un elemento de datos (ZLIABILITIES##) para pasivos y use un dominio adecuado.

Tarea 3
Cree un programa ejecutable que use los elementos de datos ya definidos.

Copyright . Reservados todos los derechos. 17


Captulo 2: Tipos de datos en el Dictionary ABAP

1. Cree el programa ejecutable ZBC430_##_DATA_ELEMENTS sin un Include TOP.

2. Cree los campos de entrada siguientes en el programa con el comando PARAMETERS de


ABAP.
Parmetro Tipo de datos
pa_fname ZFIRSTNAME##

pa_fname ZLASTNAME##

pa_activ ZASSETS##

pa_liabs ZLIABILITIES##

Reste el pasivo al activo y d salida a todos los parmetros y a los resultados del clculo
en una lista.

3. Ejecute el programa. En la pantalla de seleccin, introduzca los diferentes valores a los


que dar salida en una lista.

18 Copyright . Reservados todos los derechos.


Captulo 2
Solucin 1
Crear tipos de datos bsicos

Ejemplo empresarial
Como parte del proyecto de desarrollo, debe crear varios tipos de datos globales a los que
puedan acceder otros miembros del proyecto.
Use el sistema SAP para crear dominios y varios elementos de datos. Despues cree un
programa ejecutable que use los elementos de datos cuyas propiedades tcnicas estn
definidas por dominios.
Tarea 1
Cree dos dominios de modo que pueda usarlos ms adelante en elementos de datos.

1. Ejecute la transaccin SE11.

2. Cree un dominio con el nombre ZDO_10NUM_## en la pantalla de inicio de Dictionary


ABAP. Fije las propiedades del dominio de modo que contenga nmeros decimales de 10
dgitos y permita valores negativos. De estos 10 dgitos, 2 deberan estar reservados para
decimales.
a) En Dictionary ABAP: Pantalla inicial, seleccione el botn de seleccin Dominio.

b) Introduzca el nombre del dominio en el campo de entrada.

c) Seleccione el pulsador Crear.

d) Introduzca una descripcin significativa para el dominio en el campo Descripcin


breve.

e) Introduzca el valor DEC en el campo TIPO DE DATOS .

f) Introduzca el valor 10 en el campo Nro. de caracteres .

g) Introduzca el valor 2 en el campo Decimales .

h) Seleccione la casilla de seleccin Signo.

3. Grabe el dominio como un objeto local y actvelo.


a) Seleccione Grabar.

4. En la pantalla inicial del Dictionary ABAP, cree un dominio llamado ZDO_30CHAR_##. El


dominio puede tener un mximo de 30 caracteres de texto y los campos de entrada deben
admitir minsculas.
a) Siga los pasos anteriores y defina las propiedades correspondientes en la etiqueta
Definicin.

5. Grabe el dominio como un objeto local y actvelo.


a) Seleccione Grabar.

Copyright . Reservados todos los derechos. 19


Captulo 2: Tipos de datos en el Dictionary ABAP

Tarea 2
Cree varios elementos de datos y use los dominios ya definidos para las propiedades
tcnicas.

1. Inicie la transaccin SE11.

2. Introduzca un elemento de datos (ZLASTNAME##) como apellido de una persona y use un


dominio adecuado. El elemento de datos puede tener un mximo de 30 caracteres.
a) En Dictionary ABAP: Pantalla inicial, seleccione el botn de seleccin Tipo de dominio.

b) Introduzca el nombre del tipo de datos en el campo de entrada.

c) Seleccione el pulsador Crear.

d) En la ventana de dilogo, seleccione el botn de seleccin Elemento de datos y


confirme la entrada.

e) Introduzca una descripcin significativa para el elemento de datos en el campo


Descripcin breve.

f) En la etiqueta Tipo de datos, bajo Tipo elemental, introduzca el dominio relevante


creado anteriormente en el ejercicio.

g) En la etiqueta Denominador de campo deber introducir nombres adecuados para el


elemento de datos. Estos nombres aparecern en pantallas e pantallas de seleccin
(versin larga), por ejemplo, como explicacin de los campos.

3. Introduzca un elemento de datos (ZFIRSTNAME##) como nombre de pila de una persona y


use un dominio adecuado.
a) Siga los pasos del ejercicio anterior.

4. Cree un elemento de datos (ZASSETS##) para activos y use un dominio adecuado.


a) Siga los pasos del ejercicio anterior.

5. Cree un elemento de datos (ZLIABILITIES##) para pasivos y use un dominio adecuado.


a) Siga los pasos del ejercicio anterior.

Tarea 3
Cree un programa ejecutable que use los elementos de datos ya definidos.

1. Cree el programa ejecutable ZBC430_##_DATA_ELEMENTS sin un Include TOP.


a) Para ello, use la transaccin SE80 o SE38.

2. Cree los campos de entrada siguientes en el programa con el comando PARAMETERS de


ABAP.
Parmetro Tipo de datos
pa_fname ZFIRSTNAME##

pa_fname ZLASTNAME##

pa_activ ZASSETS##

20 Copyright . Reservados todos los derechos.


Leccin: Trabajar con dominios y elementos de datos

Parmetro Tipo de datos


pa_liabs ZLIABILITIES##

Reste el pasivo al activo y d salida a todos los parmetros y a los resultados del clculo
en una lista.
a) Consulte el cdigo fuente de la solucin modelo.

3. Ejecute el programa. En la pantalla de seleccin, introduzca los diferentes valores a los


que dar salida en una lista.
a) Asegrese de que se puedan utilizar maysculas y minsculas para los nombres, de
acuerdo con las definiciones en los dominios. En los dos campos numricos, se deben
poder introducir decimales y un signo menos.

Extracto de cdigo fuente: SAPBC430S_DATA_ELEMENTS


REPORT sapbc430s_data_elements .

*Replace ## by Your Group- Screennumber and uncomment


*the ABAP-coding

DATA: result TYPE zassets##.

PARAMETERS: pa_fname TYPE zfirstname##,


pa_lname TYPE zlastname##,
pa_activ TYPE zassets##,
pa_liabs TYPE zliabilities##.

START-OF-SELECTION.

NEW-LINE.
WRITE: 'Client:', pa_fname, pa_lname.

result = pa_activ - pa_liabs.

NEW-LINE.
WRITE: 'Finance:', pa_activ, pa_liabs, result.

Copyright . Reservados todos los derechos. 21


Captulo 2: Tipos de datos en el Dictionary ABAP

RESUMEN DE LA LECCIN
Ahora podr:
Definir dominios para elementos de datos
Definir elementos de datos

22 Copyright . Reservados todos los derechos.


Captulo 2
Leccin 2
Trabajar con estructuras planas

RESUMEN DE LA LECCIN
Esta leccin explica qu son las estructuras simples y anidadas as como las constantes
globales mediante grupos de tipos.

Ejemplo empresarial
Debe definir estructuras simples y anidadas en Dictionary ABAP. Tambin debe definir
constantes globales mediante un grupo de tipos. Por este motivo, se requieren los siguientes
conocimientos:
Comprender cmo definir estructuras complejas (anidadas o profundas)
Comprender cmo definir constantes globales con ayuda de un pool de tipos y usarlas en
programas ABAP

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir estructuras simples en el Dictionary ABAP

Estructuras simples y anidadas

Figura 9: Estructuras

Una estructura consiste en componentes de las siguientes clases:


Elementos de datos

Copyright . Reservados todos los derechos. 23


Captulo 2: Tipos de datos en el Dictionary ABAP

Tipos integrados
Tipos de tabla
Definicin de tablas de base de datos y vistas de base de datos
otros tipos de estructura

Cuando se integran tambin los campos de un objeto bidimensional real en una estructura
mediante la inclusin de una vista o tablas de BD, el objeto de datos que se puede generar a
partir de esta estructura es plano y unidimensional.
Una estructura profunda se crea siempre que se utiliza un tipo de tabla para definir un
componente. Si bien este componente es bidimensional, los otros componentes de la
estructura siguen siendo planos (unidimensionales).

Uso de estructuras simples en ABAP

Figura 10: Uso de estructuras simples en ABAP

La forma ms simple de una estructura es una lista de campos con elementos de datos. Esta
forma de estructura se llama estructura plana. Un objeto de datos basado en este tipo de
estructura es siempre unidimensional (a diferencia de los objetos de datos bidimensionales,
parecidos a tablas). A los elementos individuales (componentes) de la estructura se les
designa con el nombre de la estructura, un guin y el nombre de los componentes.

24 Copyright . Reservados todos los derechos.


Leccin: Trabajar con estructuras planas

Estructura anidada

Figura 11: Estructura anidada

Puede incluir otro objeto estructurado en la estructura y asignarlo a un componente. Ese


componente hace referencia al objeto estructurado y el nuevo objeto de datos se describe
como estructura anidada.

Copyright . Reservados todos los derechos. 25


Captulo 2: Tipos de datos en el Dictionary ABAP

26 Copyright . Reservados todos los derechos.


Captulo 2
Ejercicio 2
Crear estructuras simples y anidadas

Ejemplo empresarial
A fin de disear estructuras de datos complejas, deber crear una estructura compleja para
su proyecto en el Dictionary ABAP.
TAREA 1
Crear estructuras simples en el Dictionary ABAP y usarlas en programas.

1. En el Dictionary ABAP, cree una estructura ZNAME## e incluya los dos componentes
siguientes en la estructura. Utilice los elementos de datos que cre en el ejercicio Crear
Tipos de Datos Bsicos para introducir los tipos.
Informacin Tipo de componente Descripcin
FIRSTNAME propio Nombre de pila
LASTNAME propio Apellido

2. Cree una estructura ZADRESS## e introduzca los siguientes componentes:

Informacin Tipo de componente Descripcin


STREET S_STREET Calle
NR S_NO Nmero
ZIP POSTCODE Cdigo postal
CITY S_CITY Poblacin

TAREA 2
Crear estructuras anidadas en el Dictionary ABAP y usarlas en programas.

1. Cree una estructura ZPERSON## en el Dictionary ABAP.

2. Aada la estructura ZADDRESS## como estructura Include en la estructura


ZPERSON## . Adems incluya la estructura ZNAME## en la estructura ZPERSON##
como estructura anidada con el nombre de componente NOMBRE.

3. Cree un programa ABAP ZBC430_##_STRUCT_NESTED. Cree un objeto de datos


estructurado (wa_person) en este programa del tipo ZPERSON##. Complete los
componentes de este objeto de datos con datos personales y d salida a estos datos en
una lista.

Copyright . Reservados todos los derechos. 27


Captulo 2
Solucin 2
Crear estructuras simples y anidadas

Ejemplo empresarial
A fin de disear estructuras de datos complejas, deber crear una estructura compleja para
su proyecto en el Dictionary ABAP.
TAREA 1
Crear estructuras simples en el Dictionary ABAP y usarlas en programas.

1. En el Dictionary ABAP, cree una estructura ZNAME## e incluya los dos componentes
siguientes en la estructura. Utilice los elementos de datos que cre en el ejercicio Crear
Tipos de Datos Bsicos para introducir los tipos.
Informacin Tipo de componente Descripcin
FIRSTNAME propio Nombre de pila
LASTNAME propio Apellido

a) Inicie la transaccin SE11.

b) Introduzca el nombre de la estructura en el campo de entrada Tipo de datos .

c) Seleccione Crear y despus Estructura en la ventana de dilogo modal.

d) Indique una descripcin breve e introduzca los componentes especificados. Active la


estructura para que se conozca de manera general.

2. Cree una estructura ZADRESS## e introduzca los siguientes componentes:

Informacin Tipo de componente Descripcin


STREET S_STREET Calle
NR S_NO Nmero
ZIP POSTCODE Cdigo postal
CITY S_CITY Poblacin

a) Proceda como en el ejercicio anterior.

TAREA 2
Crear estructuras anidadas en el Dictionary ABAP y usarlas en programas.

1. Cree una estructura ZPERSON## en el Dictionary ABAP.


a) Proceda como en la tarea 1.

28 Copyright . Reservados todos los derechos.


Leccin: Trabajar con estructuras planas

2. Aada la estructura ZADDRESS## como estructura Include en la estructura


ZPERSON## . Adems incluya la estructura ZNAME## en la estructura ZPERSON##
como estructura anidada con el nombre de componente NOMBRE.
a) Para incluir la direccin, seleccione Editar Incluir Introducir o introduzca la
palabra clave .INCLUDE en la columna Componente.

Atencin:
El punto que antecede a la palabra clave es importante.

Introduzca un nombre para el componente (por ejemplo, Nombre) para la segunda


estructura que desea definir como estructura profunda.
Informacin Tipo de componente Descripcin
.include ZADDRESS## Estructura de
direccin
NOMBRE ZNAME## Hace referencia a la
estructura del
nombre

3. Cree un programa ABAP ZBC430_##_STRUCT_NESTED. Cree un objeto de datos


estructurado (wa_person) en este programa del tipo ZPERSON##. Complete los
componentes de este objeto de datos con datos personales y d salida a estos datos en
una lista.
a) Consulte el extracto del cdigo fuente de la solucin modelo.

Extracto del cdigo fuente: SAPBC430S_STRUCT_NESTED


REPORT sapbc430s_struct_nested.

*Replace ## by Your group- or screen number and


*uncomment the ABAP-coding

DATA wa_person TYPE zperson##.

START-OF-SELECTION.

wa_person-name-firstname = 'Harry'.
wa_person-name-lastname = 'Potter'.

wa_person-street = 'Privet Drive'.


wa_person-nr = '3'.
wa_person-zip = 'GB-10889'.
wa_person-city = 'London'.

WRITE: / wa_person-name-firstname ,
wa_person-name-lastname ,
wa_person-street ,
wa_person-nr ,
wa_person-zip ,
wa_person-city .

Copyright . Reservados todos los derechos. 29


Captulo 2: Tipos de datos en el Dictionary ABAP

RESUMEN DE LA LECCIN
Ahora podr:
Definir estructuras simples en el Dictionary ABAP

30 Copyright . Reservados todos los derechos.


Captulo 2
Leccin 3
Trabajar con tipos de tablas y estructuras
profundas

RESUMEN DE LA LECCIN
Esta leccin describe los tipos de tablas del sistema SAP.

Ejemplo empresarial
Como desarrollador, debe crear tipos de tablas y estructuras profundas en el sistema SAP.
Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo definir tipos de datos en Dictionary ABAP
Comprender cmo definir estructuras planas y complejas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir tipos de tablas en el Dictionary ABAP
Definir estructuras profundas en el Dictionary ABAP
Definir constantes globales por medio de grupos de tipos

Tipos de tabla

Figura 12: Tablas internas definidas por un tipo de tabla

Copyright . Reservados todos los derechos. 31


Captulo 2: Tipos de datos en el Dictionary ABAP

La estructura del diccionario que contiene uno o ms campos que usa un tipo de tabla se
llama estructura profunda.
En ABAP, puede definir tipos de tablas usando un tipo de diccionario existente. Se pueden
usar como tipos de lnea: tablas de base de datos, definiciones de estructura, vistas,
elementos de datos, definiciones de tipo directas o tipos de tabla existentes.
Internamente, el sistema crea una matriz bidimensional en la memoria principal para cada
tabla interna.

32 Copyright . Reservados todos los derechos.


Captulo 2
Ejercicio 3
Crear tipos de tablas

Ejemplo empresarial
Necesita leer datos de la tabla SFLIGHT y llevar los datos a la pantalla. Para ello, cree un tipo
de tabla en el Dictionary que pueda usar para definir una tabla interna adecuada en su
programa ABAP.

1. Cree un tipo de tabla ZIT_SFLIGHT## en el Dictionary ABAP. El tipo de tabla debera


basarse en el tipo de lnea de la tabla de base de datos SFLIGHT y estar clasificado en
funcin de la fecha de vuelo (FLDATE)

2. Cree un programa ABAP ZBC430_##_ITAB_SORTED. En este programa, cree un objeto de


datos estructurado (wa_sflight) del tipo SFLIGHT como rea de trabajo y una tabla
interna basada en el tipo de tabla que acaba de definir. En la tabla SFLIGHT seleccione los
datos de una compaa area, por ejemplo, JL, en el rea de trabajo y d salida a los datos
en forma de lista no clasificada.

3. Ample el programa del modo siguiente. Introduzca una lnea (comando ULINE de ABAP)
en la lista. Recupere nuevamente los mismos datos pero esta vez use un array fetch en el
comando SELECT. Lea los datos de la base de datos en la tabla interna del tipo
ZIT_SFLIGHT## y d salida al contenido de la tabla por medio del comando LOOP en la
misma lista. Compare el orden de los datos en los dos extractos de lista.

Copyright . Reservados todos los derechos. 33


Captulo 2
Solucin 3
Crear tipos de tablas

Ejemplo empresarial
Necesita leer datos de la tabla SFLIGHT y llevar los datos a la pantalla. Para ello, cree un tipo
de tabla en el Dictionary que pueda usar para definir una tabla interna adecuada en su
programa ABAP.

1. Cree un tipo de tabla ZIT_SFLIGHT## en el Dictionary ABAP. El tipo de tabla debera


basarse en el tipo de lnea de la tabla de base de datos SFLIGHT y estar clasificado en
funcin de la fecha de vuelo (FLDATE)
a) Inicie la transaccin SE11.

b) Seleccione el tipo de datos requerido.

c) Introduzca el nombre de la tabla en el campo de entrada.

d) Seleccione Crear.

e) En la ventana de dilogo siguiente, marque Tipo de tabla.

f) Asigne una descripcin breve e introduzca el nombre de la tabla de base de datos en el


campo de tipo de lnea.

g) Cambie a la etiqueta Inicializacin y acceso y marque Tabla clasificada como tipo de


acceso.

h) Cambie a la etiqueta Clave primaria y seleccione No unvoco como tipo de clave.

i) En la etiqueta Clave primaria seleccione Componentes de clave de la Definicin de


clave. En Panel de componentes de clave, introduzca el componente de clave
requerido y seleccione Seleccionar componentes .

j) Active la tabla para que se conozca a nivel general.

2. Cree un programa ABAP ZBC430_##_ITAB_SORTED. En este programa, cree un objeto de


datos estructurado (wa_sflight) del tipo SFLIGHT como rea de trabajo y una tabla
interna basada en el tipo de tabla que acaba de definir. En la tabla SFLIGHT seleccione los
datos de una compaa area, por ejemplo, JL, en el rea de trabajo y d salida a los datos
en forma de lista no clasificada.
a) Consulte el extracto del cdigo fuente de la solucin modelo.

3. Ample el programa del modo siguiente. Introduzca una lnea (comando ULINE de ABAP)
en la lista. Recupere nuevamente los mismos datos pero esta vez use un array fetch en el
comando SELECT. Lea los datos de la base de datos en la tabla interna del tipo
ZIT_SFLIGHT## y d salida al contenido de la tabla por medio del comando LOOP en la
misma lista. Compare el orden de los datos en los dos extractos de lista.
a) Consulte el extracto del cdigo fuente de la solucin modelo.

34 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tipos de tablas y estructuras profundas

SAPBC430S_ITAB_SORTED

REPORT SAPBC430S_ITAB_SORTED.

**Replace ## by Your group- or screennumber and


**uncomment the ABAP-coding

DATA it_flight TYPE zit_sflight##.


DATA wa_sflight TYPE sflight.

WRITE / 'Printout in tableorder of Database:'.

SELECT * FROM sflight


INTO wa_sflight
WHERE carrid = 'JL'.

WRITE: / wa_sflight-carrid,
wa_sflight-connid,
wa_sflight-fldate,
wa_sflight-price,
wa_sflight-currency,
wa_sflight-planetype.
ENDSELECT.

ULINE.

SELECT * FROM sflight


INTO TABLE it_flight
WHERE carrid = 'JL'.
WRITE / 'Printout in tableorder of sorted ITAB:'.

LOOP AT it_flight INTO wa_sflight.


WRITE: / wa_sflight-carrid,
wa_sflight-connid,
wa_sflight-fldate,
wa_sflight-price,
wa_sflight-currency,
wa_sflight-planetype.
ENDLOOP.

Copyright . Reservados todos los derechos. 35


Captulo 2: Tipos de datos en el Dictionary ABAP

Estructuras profundas

Figura 13: Estructuras profundas en el programa ABAP

Una estructura profunda contiene como mnimo un campo con un tipo de tabla. El
componente de esta tabla tiene su propio nombre, con el que se puede designar como
cualquier tabla interna normal (LOOP AT..., INSERT... INTO TABLE, ...).
Una tabla interna puede, a su vez, tener una estructura profunda como tipo de lnea. As,
puede crear tipos de datos multidimensionales, ya que las tablas y las estructuras internas se
pueden interanidar varias veces.

Atencin:
Las tablas de base de datos slo incluyen estructuras planas.

36 Copyright . Reservados todos los derechos.


Captulo 2
Ejercicio 4
Crear estructuras profundas

Ejemplo empresarial
Ample la estructura de los datos personales del equipo de proyecto de modo que pueda
agregar una lista de telfonos tan larga como desee para cada empleado.
Cree una estructura profunda aadiendo un campo de tipo de tabla. sela en un programa
ABAP.

1. Cree un tipo de tabla para una tabla estndar ZIT_PHONE_NUMBER## en el Dictionary. El


tipo de tabla se debera basar en la estructura existente STR_PHONE.

2. Ample la estructura ZPERSON## existente en el Dictionary. El nuevo componente


debera llamarse PHONE y debera estar basado en el tipo de tabla
ZIT_PHONE_NUMBER##.

3. Cree un programa ABAP ZBC430_##_STRUCT_DEEP. Para ello, copie la solucin para el


programa ZBC430_##_STRUCT_NESTED o la plantilla modelo
SAPBC430S_STRUCT_NESTED. Ample este programa con un rea de trabajo para un
objeto de datos estructurado (wa_phone) del tipo STR_PHONE.

4. Ample el programa del modo siguiente:


Inserte tres nmeros de telfono en el objeto de datos estructurado wa_person y d salida
a estos datos en la misma lista mediante el comando LOOP.

Copyright . Reservados todos los derechos. 37


Captulo 2
Solucin 4
Crear estructuras profundas

Ejemplo empresarial
Ample la estructura de los datos personales del equipo de proyecto de modo que pueda
agregar una lista de telfonos tan larga como desee para cada empleado.
Cree una estructura profunda aadiendo un campo de tipo de tabla. sela en un programa
ABAP.

1. Cree un tipo de tabla para una tabla estndar ZIT_PHONE_NUMBER## en el Dictionary. El


tipo de tabla se debera basar en la estructura existente STR_PHONE.
a) Inicie la transaccin SE11.

b) Seleccione el tipo de datos requerido.

c) Introduzca el nombre de la tabla en el campo de entrada.

d) Seleccione Crear.

e) En la ventana de dilogo siguiente, marque Tipo de tabla.

f) Proporcione una descripcin breve e introduzca el nombre de la estructura en el


campo de tipo de lnea.

g) Cambie a la etiqueta Inicializacin y acceso y marque Tabla estndar como tipo de


acceso.

h) Cambie a la etiqueta Clave primaria y marque No unvoco como tipo de clave.

i) Seleccione Clave estndar como Definicin de clave.

2. Ample la estructura ZPERSON## existente en el Dictionary. El nuevo componente


debera llamarse PHONE y debera estar basado en el tipo de tabla
ZIT_PHONE_NUMBER##.
a) Introduzca un nuevo componente llamado Telfono en la estructura y especifique el
tipo de tabla que acaba de crear como tipo de componente.
Informacin Tipo de componente Descripcin
.include ZADDRESS## Estructura de
direccin
NOMBRE ZNAME## Hace referencia a la
estructura del
nombre
PHONE ZIT_PHONE_NUMBER## Hace referencia a la
tabla de telfonos

38 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tipos de tablas y estructuras profundas

3. Cree un programa ABAP ZBC430_##_STRUCT_DEEP. Para ello, copie la solucin para el


programa ZBC430_##_STRUCT_NESTED o la plantilla modelo
SAPBC430S_STRUCT_NESTED. Ample este programa con un rea de trabajo para un
objeto de datos estructurado (wa_phone) del tipo STR_PHONE.
a) Consulte el extracto del cdigo fuente de la solucin modelo.

4. Ample el programa del modo siguiente:


Inserte tres nmeros de telfono en el objeto de datos estructurado wa_person y d salida
a estos datos en la misma lista mediante el comando LOOP.
a) Consulte el extracto del cdigo fuente de la solucin modelo.

SAPBC430S_STRUCT_DEEP

REPORT sapbc430s_struct_deep.

**1. Replace the ## with your group or screen number .


**2. Activate the given code.

DATA wa_person TYPE zperson##.


DATA wa_phone TYPE str_phone.

START-OF-SELECTION.

*Fill deep structure with data


wa_person-name-firstname = 'Harry'.
wa_person-name-lastname = 'Potter'.

wa_person-street = 'Privet Drive'.


wa_person-nr = '3'.
wa_person-zip = 'GB-10889'.
wa_person-city = 'London'.

wa_phone-p_type = 'P'.
wa_phone-p_number = '+31-10-9938990'.
INSERT wa_phone INTO TABLE wa_person-phone.

wa_phone-p_type = 'F'.
wa_phone-p_number = '+31-10-9938991'.
INSERT wa_phone INTO TABLE wa_person-phone.

wa_phone-p_type = 'M'.
wa_phone-p_number = '+31-79-12211433'.
INSERT wa_phone INTO TABLE wa_person-phone.

*Write on List
WRITE: / wa_person-name-firstname ,
wa_person-name-lastname ,
wa_person-street ,
wa_person-nr ,
wa_person-zip ,
wa_person-city .

WRITE: / 'Phone-Numbers:'.

LOOP AT wa_person-phone INTO wa_phone.


WRITE: AT 20 wa_phone-p_type,
wa_phone-p_number.
NEW-LINE.
ENDLOOP.

Copyright . Reservados todos los derechos. 39


Captulo 2: Tipos de datos en el Dictionary ABAP

Grupos de tipos

Figura 14: Grupo de tipos

Los grupos de tipos se pueden utilizar para definir sus propios tipos de datos globales y
complejos as como constantes globales.
Desde Release 4.5a los grupos de tipos son obsoletos y ya no se recomienda el uso de grupos
de tipos. En lugar de usar grupos de tipos, puede usar las opciones que proporcionan las
estructuras de Dictionary para definir sus propios tipos de datos complejos globales. Adems
puede usar atributos de clase constantes proporcionados por los objetos ABAP para definir
constantes globales.
El nombre del grupo de tipos puede contener cinco caracteres como mximo. En el grupo de
tipos puede definir constantes mediante la sentencia CONSTANTS. En este caso puede usar
los tipos ABAP predefinidos o los tipos globales de Dictionary.
Para poder utilizar los tipos de un grupo de tipos en un programa, declare el grupo de tipos
mediante la sentencia TYPE POOL. A partir de estas lneas, podr utilizar todas las constantes
del grupo de tipos.
La definicin de un grupo de tipos es un fragmento de cdigo ABAP que se actualiza en el
Dictionary ABAP (SE11) o en el Editor ABAP (SE38).
La primera sentencia en un grupo de tipos siempre es TYPE POOL <nombre>. sta va seguida
de la definicin del tipo de datos con la sentencia TYPES, como se describe en los tipos de
datos de programa local. Adems, puede declarar constantes vlidas para todos los
programas mediante la sentencia CONSTANTS. Todos los nombres de estos tipos de datos y
constantes deben empezar con el nombre del grupo de tipos, seguido de un guion bajo, por
ejemplo, zmytp_:
En versiones previas a NW AS 7.02, tiene que declarar explcitamente en su programa el uso
de un grupo de tipos. La sentencia ABAP es TYPE-POOLS zmytp. Esta sentencia le permite

40 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tipos de tablas y estructuras profundas

usar todos los tipos y constantes definidos en aquel grupo de tipos. Puede usar varios grupos
de tipos en el mismo programa.

Copyright . Reservados todos los derechos. 41


Captulo 2: Tipos de datos en el Dictionary ABAP

RESUMEN DE LA LECCIN
Ahora podr:
Definir tipos de tablas en el Dictionary ABAP
Definir estructuras profundas en el Dictionary ABAP
Definir constantes globales por medio de grupos de tipos

42 Copyright . Reservados todos los derechos.


Captulo 2

Evaluacin de la formacin

1. Los objetos ABAP admiten el uso de constantes globales en forma de atributos de clase
constantes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Entre lo siguiente, qu puede utilizar para escribir los componentes de una estructura?
Seleccione las respuestas correctas.

X A Campos elementales

X B Dominios

X C Tipos de tabla

X D Estructuras

3. Los elementos de datos se basan en dominios o tipos integrados.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Los denominadores de campo contienen palabras clave de diferentes extensiones (breve,


media y larga) que se pueden asignar a campos de dynpro que hacen referencia a
definiciones en el Dictionary ABAP. Cules de las siguientes definiciones del diccionario
se pueden usar para actualizar estos denominadores de campo?
Seleccione la respuesta correcta.

X A Tipo integrado

X B Elemento de datos

X C Dominio

X D Type pool

Copyright . Reservados todos los derechos. 43


Captulo 2: Evaluacin de la formacin

5. Una estructura puede consistir en componentes de los siguientes tipos: elementos de


datos, tipos integrados, tipos de tablas, tablas de base de datos, vistas u otras estructuras
existentes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. La forma ms simple de una estructura es una lista de campos con elementos de datos.
Esto siempre resulta en una estructura _________ .
Seleccione la respuesta correcta.

X A profunda

X B plana

X C anidada

7. Cules de las siguientes definiciones de diccionario se pueden usar como tipo de lnea
para un tipo de tabla?
Seleccione las respuestas correctas.

X A Tabla de base de datos

X B Estructura

X C Dominio

X D Elemento de datos

X E Campo elemental

8. Puede crear una matriz bidimensional en la memoria principal declarando una tabla
interna en un programa ABAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

9. Una estructura profunda contiene como mnimo una tabla.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

44 Copyright . Reservados todos los derechos.


Captulo 2: Evaluacin de la formacin

10. El nombre del grupo de tipos puede contener un mximo de _____________ caracteres.
Seleccione la respuesta correcta.

X A diez

X B tres

X C cinco

11. Puede incluir otro objeto estructurado en la estructura y asignarlo a un componente. Ese
componente hace referencia al objeto estructurado y el nuevo objeto de datos se describe
como estructura anidada.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 45


Captulo 2

Respuestas a la Evaluacin de la formacin

1. Los objetos ABAP admiten el uso de constantes globales en forma de atributos de clase
constantes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Entre lo siguiente, qu puede utilizar para escribir los componentes de una estructura?
Seleccione las respuestas correctas.

X A Campos elementales

X B Dominios

X C Tipos de tabla

X D Estructuras

3. Los elementos de datos se basan en dominios o tipos integrados.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

46 Copyright . Reservados todos los derechos.


Captulo 2: Respuestas a la Evaluacin de la formacin

4. Los denominadores de campo contienen palabras clave de diferentes extensiones (breve,


media y larga) que se pueden asignar a campos de dynpro que hacen referencia a
definiciones en el Dictionary ABAP. Cules de las siguientes definiciones del diccionario
se pueden usar para actualizar estos denominadores de campo?
Seleccione la respuesta correcta.

X A Tipo integrado

X B Elemento de datos

X C Dominio

X D Type pool

5. Una estructura puede consistir en componentes de los siguientes tipos: elementos de


datos, tipos integrados, tipos de tablas, tablas de base de datos, vistas u otras estructuras
existentes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. La forma ms simple de una estructura es una lista de campos con elementos de datos.
Esto siempre resulta en una estructura _________ .
Seleccione la respuesta correcta.

X A profunda

X B plana

X C anidada

7. Cules de las siguientes definiciones de diccionario se pueden usar como tipo de lnea
para un tipo de tabla?
Seleccione las respuestas correctas.

X A Tabla de base de datos

X B Estructura

X C Dominio

X D Elemento de datos

X E Campo elemental

Copyright . Reservados todos los derechos. 47


Captulo 2: Respuestas a la Evaluacin de la formacin

8. Puede crear una matriz bidimensional en la memoria principal declarando una tabla
interna en un programa ABAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

9. Una estructura profunda contiene como mnimo una tabla.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

10. El nombre del grupo de tipos puede contener un mximo de _____________ caracteres.
Seleccione la respuesta correcta.

X A diez

X B tres

X C cinco

11. Puede incluir otro objeto estructurado en la estructura y asignarlo a un componente. Ese
componente hace referencia al objeto estructurado y el nuevo objeto de datos se describe
como estructura anidada.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

48 Copyright . Reservados todos los derechos.


CAPTULO 3 Tablas de base de datos

Leccin 1
Trabajar con tablas transparentes 50
Ejercicio 5: Crear tablas en el Dictionary ABAP 61

Leccin 2
Trabajar con tablas cluster y tablas pool 71

OBJETIVOS DEL CAPTULO

Definir tablas transparentes


Definir estructuras INCLUDE
Definir opciones tcnicas para tablas transparentes
Describir tablas cluster y tablas pool

Copyright . Reservados todos los derechos. 49


Captulo 3
Leccin 1
Trabajar con tablas transparentes

RESUMEN DE LA LECCIN
Esta leccin describe las tablas transparentes y las estructuras INCLUDE. Tambin explica
cmo definir las opciones tcnicas de las tablas transparentes.

Ejemplo empresarial
Como desarrollador, debe asignar las unidades de informacin, llamadas entidades, en la
base de datos de su compaa. Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo crear tablas
Comprender cmo usar el concepto de dominio de dos niveles
Comprender cmo definir las opciones tcnicas de una tabla
Comprender cmo crear y usar estructuras INCLUDE

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir tablas transparentes
Definir estructuras INCLUDE
Definir opciones tcnicas para tablas transparentes

50 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

Tablas transparentes

Figura 15: Tablas y campos

La estructura de los objetos usados en el desarrollo de aplicacin se asigna a tablas en el


sistema de base de datos. Los atributos de estos objetos corresponden a campos de la tabla.
Una tabla est formada por columnas (campos) y filas (entradas). Tiene un nombre y
distintos atributos generales, como clase de entrega y autorizacin para mantenimiento.
Un campo tiene un nombre unvoco y atributos; por ejemplo, un campo clave.
Una tabla tiene uno o ms campos clave. Los valores de estos campos clave identifican de
forma unvoca una entrada de tabla. Colectivamente, estos campos clave son llamados como
una clave primaria.
Debe especificar una tabla de referencia para campos de moneda (tipo de datos CURR) o
cantidad (tipo de datos QUAN). Una tabla de referencia debe contener un campo (campo de
referencia) con el formato para claves de moneda (tipo de datos CUKY) o el formato para
unidades (tipo de datos UNIT). El campo slo se asigna al campo de referencia durante la
ejecucin del programa.

Copyright . Reservados todos los derechos. 51


Captulo 3: Tablas de base de datos

Objetos bsicos del Dictionary ABAP

Figura 16: Objetos bsicos del Dictionary ABAP

Los objetos bsicos para definir datos en el Dictionary ABAP son:


Tablas
Las tablas se usan para definir tablas transparentes en el sistema de base de datos. Puede
almacenar datos empresariales en las tablas de base de datos.
Dominios
Un dominio se utiliza para la definicin tcnica (por ej., tipo, longitud de campo) de un
campo de tabla. Tambin describe el rango de valores de un campo en funcin del tipo y la
longitud de los datos. El rango de valores se puede limitar especificando valores fijos.
Elemento de datos
El elemento de datos se utiliza para la definicin semntica; por ejemplo, una breve
descripcin de un campo de tabla. Un elemento de datos tambin describe el significado
de un dominio en un determinado contexto empresarial. El elemento de datos contiene
sobre todo la Ayuda de campo (documentacin F1) y los denominadores de campo en la
pantalla.
Un campo no es un objeto independiente. Depende de una tabla. El campo slo se puede
actualizar dentro de una tabla. Puede introducir el tipo de datos y el nmero de posiciones
para un campo directamente. En este caso no hace falta ningn elemento de datos. En
cambio, puede elegir un tipo predefinido para especificar el tipo de datos y el nmero de
posiciones.
Puede especificar los atributos tcnicos de un elemento de datos incluso sin usar un
dominio. Para hacerlo, introduzca directamente el tipo de datos integrados y el nmero de
lugares.

52 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

Ejemplo del concepto de dominio de dos niveles

Figura 17: Ejemplo del concepto de dominio de dos niveles

La tabla SPFLI almacena el horario de vuelos.


Los campos de tabla AIRPFROM (aeropuerto de salida) y AIRPTO (aeropuerto de destino)
tienen el mismo dominio S_AIRPID. Debido a que ambos campos utilizan el mismo dominio y
contienen el ID de un aeropuerto, ambos tienen los mismos atributos tcnicos. Ambos
campos de tabla tienen un significado semntico diferente y utilizan elementos de datos
diferentes. El campo AIRPFROM utiliza el elemento de datos S_FROMAIRP y el campo
AIRPTO , el elemento de datos S_TOAIRP.

Tablas transparentes y estructuras

Figura 18: Tablas transparentes y estructuras

Cuando se activa una tabla transparente en el Dictionary ABAP, automticamente se crea una
tabla en la base de datos.

Copyright . Reservados todos los derechos. 53


Captulo 3: Tablas de base de datos

En ese momento, en el Dictionary ABAP se traduce la descripcin de la tabla de la base de


datos independiente al idioma usado en el sistema de base de datos.
La tabla de base de datos se llama igual que la tabla en el Dictionary ABAP. Los campos
tambin se llaman igual en la base de datos y en el Dictionary ABAP. El sistema convierte los
tipos de datos del Dictionary ABAP en los correspondientes tipos de datos del sistema de
base de datos.
El orden de los campos en el Dictionary ABAP puede ser distinto del orden de los campos en
la base de datos. Esto permite introducir nuevos campos sin tener que convertir la tabla.
Cuando aade un nuevo campo, el sistema ajusta la lista de campos modificando el catlogo
de la base de datos. Este mecanismo se denomina ALTER TABLE.

Las maneras en que los programas ABAP pueden utilizar una tabla transparente son:
Una forma de acceder a los datos incluidos en la tabla es mediante OPEN SQL (o SQL
nativo).
Puede utilizar una tabla transparente como tipo de estructura al definir variables (o tipos
de datos ms complejos).

Tambin puede crear un tipo estructurado en el Dictionary ABAP para el que no exista un
objeto correspondiente en la base de datos. Estos tipos se denominan estructuras. Las
estructuras tambin pueden definir los tipos de variables.

Estructuras INCLUDE

Figura 19: Estructuras INCLUDE

El mecanismo Include existe para evitar definiciones de estructuras redundantes. Puede


volver a usar las estructuras si las incluye en otras estructuras o tablas.
Una tabla no se puede incluir en otra tabla.
Los Includes podran contener otros Includes.
Las claves externas definidas en la estructura INCLUDE se pasan a la tabla en la que se realiza
la inclusin.

54 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

Opciones tcnicas para tablas transparentes

Figura 20: Opciones tcnicas

Las opciones tcnicas optimizan los requisitos de almacenamiento y el comportamiento de


acceso de las tablas de base de datos. Cuando activa la tabla en el Dictionary ABAP, el
sistema automticamente crea la tabla en el sistema de base de datos. Las opciones tcnicas
definen la forma en que se maneja la tabla al ser creada en el sistema de base de datos. Las
opciones para la clase de datos y la categora de tamao determinan el rea de
almacenamiento a seleccionar (tablespace), as como el tamao de tabla previsto. Las
opciones de la memoria intermedia definen si se debe guardar la tabla en la memoria
intermedia y cmo. Puede definir si se deben registrar en log las modificaciones en las
entradas de tabla.

Copyright . Reservados todos los derechos. 55


Captulo 3: Tablas de base de datos

Fragmentacin de tablas en la base de datos

Figura 21: Fragmentacin de tablas en la base de datos

Concretamente, las tablas que incluyen datos de transaccin pueden tener vacos grandes en
el espacio de memoria asignado debido al rpido crecimiento o a la modificacin frecuente de
los sets de datos, as como la insercin y el borrado de registros de datos. Esta fragmentacin
de datos en el disco duro del servidor de la base de datos siempre lleva a que los problemas
de rendimiento se repitan. Medidas simples, como crear un ndice, no pueden rectificar esos
problemas. Es necesario distinguir entre ndices fragmentados y tablas fragmentadas.

ndices fragmentados
Los ndices fragmentados se pueden desfragmentar con slo borrarlos y volverlos a
introducir. La base de datos calcula de nuevo el contenido y la estructura del ndice y crea el
espacio de memoria necesario compacto en el soporte de almacenamiento. Mientras el
sistema de base de datos vuelve a crear el ndice, los programas ABAP an pueden acceder al
contenido de la tabla.

Atencin:
Si el ndice pertenece a una tabla grande (> 100.000 registros de datos), el
proceso de nueva creacin de ndices puede tomar varios minutos o incluso
horas. En el momento en que se est volviendo a crear un ndice, no se lo puede
usar para acceder a la base de datos, lo que puede provocar un mayor tiempo de
respuesta cuando se leen datos de la tabla (debido al escaneo completo de la
tabla).

Tablas fragmentadas
Para reducir la fragmentacin de las tablas de la base de datos, convierta las tablas. Durante
la conversin de tablas, el sistema SAP crea una nueva tabla a la que transfiere los datos. A
continuacin, el sistema borra la tabla fragmentada anterior y la reemplaza con la nueva.

56 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

En caso de que la tabla haya crecido inesperadamente, controle y ajuste la categora de


tamao en las opciones tcnicas antes de convertir la tabla.

Atencin:
No se puede leer o cambiar el contenido de la tabla durante el proceso de
conversin. De acuerdo con el tamao de la tabla, el proceso de conversin
puede llevar varios minutos u horas. En un entorno productivo, por lo tanto, debe
tener cuidado al ejecutar la conversin. La conversin debe llevarse a cabo
cuando la carga del sistema es mnima; por ejemplo, por la noche.

Para evitar dichas fragmentaciones, elija en las opciones tcnicas de la tabla, la clase de datos
y la categora de tamao correctas.

Clase de datos

Figura 22: Clase de datos

El sistema de base de datos tiene diferentes reas de almacenamiento fsico, conocidas como
tablespaces. La clase de datos define qu tablespace se usa para una tabla especfica dentro
del sistema de base de datos.

Las clases de datos ms importantes son:


Datos maestros
Los datos maestros son datos que rara vez se modifican. Un ejemplo de datos maestros
son los datos de un fichero de direccin, nombre, direccin y nmero de telfono.
Datos transaccionales
Los datos de movimiento son datos que se modifican a menudo. Un ejemplo es el stock de
material de un almacn, que puede cambiar despus de cada pedido.
Datos organizativos
Los datos organizativos son aquellos que se pueden definir al personalizar e instalar el
sistema y que rara vez se modifican con posterioridad. Las claves de pas son un ejemplo.

Copyright . Reservados todos los derechos. 57


Captulo 3: Tablas de base de datos

Datos del sistema


Los datos del sistema son datos que el sistema SAP necesita. Las fuentes de programa
son un ejemplo.

Categora de tamao

Figura 23: Categora de tamao

La categora de tamao describe las necesidades de almacenamiento previstas para la tabla


en la base de datos. Cuando el sistema crea una tabla en la base de datos, reserva una
extensin inicial. El tamao de la extensin inicial es idntico para todas las categoras de
tamao. Si ms adelante la tabla necesita ms espacio para datos, se agregan extensiones.
Estas extensiones adicionales tienen un tamao fijo determinado por la categora de tamao
especificada en el Dictionary ABAP.
Puede elegir una categora de tamao de 0 a 4. De acuerdo con el sistema de base de datos,
cada categora de tamao tiene un tamao de extensin fijo.
La correcta asignacin de una categora de tamao garantiza que no se crearn una gran
cantidad de extensiones pequeas que puedan aumentar la fragmentacin de la tabla. Al
mismo tiempo, no elija una categora de tamao demasiado grande y que desperdicie espacio
de almacenamiento.

58 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

Registrar modificaciones de datos

Figura 24: Registrar modificaciones de datos

Puede utilizar la grabacin en log para registrar y almacenar las modificaciones en las
entradas de una tabla. Para activar la grabacin, seleccione la casilla de seleccin Registrar
modificaciones de datos en las opciones tcnicas. No basta con marcar el indicador en el
Dictionary ABAP para iniciar la grabacin en log. La grabacin solo se realiza si est habilitado
en el parmetro rec/client del perfil del sistema.

El parmetro rec/client puede tener las siguientes opciones:

Opciones Descripcin
rec/client =ALL Registrar todos los clientes
rec/client = 000[...] Solo clientes especificados en el log
rec/client = OFF La grabacin en log est desactivada en este
sistema.

Las modificaciones de datos se graban en log con independencia de la actualizacin. Puede


visualizar los logs con la transaccin Historial de tabla (SCU3).

Atencin:
La grabacin en log reduce el rendimiento general del sistema. La grabacin en
log de tablas conlleva un acceso adicional de escritura en la base de datos. A la
tabla de grabacin en log acceden diferentes usuarios, lo cual puede ocasionar
bloqueos y disminuir la velocidad del rendimiento del sistema.

Copyright . Reservados todos los derechos. 59


Captulo 3: Tablas de base de datos

60 Copyright . Reservados todos los derechos.


Captulo 3
Ejercicio 5
Crear tablas en el Dictionary ABAP

Ejemplo empresarial
Como desarrollador, necesita mejorar las tablas del modelo de vuelo con la administracin de
recursos humanos. Esta gestin de empleados permite a las compaas areas introducir y
evaluar datos sobre sus empleados (por ejemplo, nombre, nmero de personal, salario,
departamento, etc.) y sobre las asignaciones dentro de la organizacin (departamentos de la
compaa area).
Debe crear tablas para los datos de los empleados y los departamentos de la compaa area.
La tabla ZEMPLOY## (donde ## es su nmero de grupo) almacena datos de los empleados,
como nombre, direccin y salario. La tabla ZDEPMENT## contiene los departamentos de la
compaa area. Cada departamento tiene un nmero de telfono y de fax.
Tarea 1
Cree dos tablas transparentes ZEMPLOY## y ZDEPMENT## y defina sus campos de clave. Se
actualizan los datos de tres compaas areas. Una compaa area tiene 20.000 empleados
y entre 10 y 30 departamentos. No guarde los datos en la memoria intermedia ni en un log.

Cree las dos tablas transparentes ZEMPLOY## y ZDEPMENT##. Defina sus campos clave.

Nota:
Defina las opciones tcnicas antes de activar las tablas.

1. Cree la tabla ZEMPLOY##.

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
CLIENT S_MANDT MANDT Mandante
CARRIER S_CARR_ID S_CARR_ID Compaa
area
EMP_NUM Propio Propio NUMC 10 Nmero de
personal
FIRST_NAME S_FNAME S_FNAME Nombre de
pila
LAST_NAME S_LNAME S_LNAME Apellido
DEPARTMENT Propio Propio CHAR 4 Cdigo de
departament
o
AREA Propio Propio CHAR 1 rea

Copyright . Reservados todos los derechos. 61


Captulo 3: Tablas de base de datos

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
SALARY Propio Propio CURR 10 Sueldo
decimal 2
CURRENCY S_CURRCODE S_CURR Moneda

2. Cree la tabla ZDEPMENT##.

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
CLIENT S_MANDT MANDT Mandante
CARRIER S_CARR_ID S_CARR_ID Ca.area
DEPARTMENT Propio Propio CHAR 4 Cdigo de
departament
o
TELNR Propio S_PHONE CHAR 30 Telfono
FAXNR Propio S_PHONE CHAR 30 Fax

3. Documente los campos N personal y Cdigo de departamento.

4. Actualice las opciones tcnicas y despus active la tabla. Si defini un campo de cantidad
en la tabla, debe asignar el campo de moneda correspondiente.

Tarea 2

Compruebe que los mismos campos estn disponibles en las dos tablas para registrar las
modificaciones; para ello, aada estos campos a ambas tablas con una subestructura
ZCHANGE##.

Nota:
Las modificaciones en las tablas ZEMPLOY## y ZDEPMENT## son cruciales y,
por lo tanto, se deben registrar. El programa ABAP que actualiza los datos debe
grabar automticamente la informacin acerca del ltimo usuario que modific
los datos de la tabla. Para ello se pueden anexar campos para el nmero de
personal de la ltima persona que modific la entrada y la fecha de la ltima
entrada en las tablas ZEMPLOY## y ZDEPMENT##.
En una aplicacin real, esta ampliacin provocara siempre que se desactivara la
actualizacin de la tabla estndar para las dos tablas. En cambio se crearan
transacciones de actualizacin propias para la tabla en las que el programa
completara internamente los campos para modificar la grabacin en log en lugar
del usuario.
La creacin de estas transacciones no se discute en este curso. Por lo tanto, en
este curso supondremos que todos los usuarios completan (correctamente)
estos campos en la rutina de actualizacin de la tabla estndar.

62 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

1. Cree la estructura ZCHANGE##. Cree un elemento de datos nuevo para el campo ltima
modificacin mediante el dominio usado para el nmero de personal. Use S_CHDATE
como elemento de datos para la fecha de la ltima modificacin.

2. Introduzca ZCHANGE## como un Include en las tablas ZEMPLOY## y ZDEPMENT##.

3. Averige qu acciones se han realizado en la base de datos.

4. Inicie el programa BC430_CHECK en la transaccin SE38.

Nota:
El programa BC430_CHECK verifica si las soluciones son correctas y completa
las nuevas tablas ZEMPLOY## y ZDEPMENT## con los datos de muestra
necesarios para ejercicios posteriores.

Copyright . Reservados todos los derechos. 63


Captulo 3
Solucin 5
Crear tablas en el Dictionary ABAP

Ejemplo empresarial
Como desarrollador, necesita mejorar las tablas del modelo de vuelo con la administracin de
recursos humanos. Esta gestin de empleados permite a las compaas areas introducir y
evaluar datos sobre sus empleados (por ejemplo, nombre, nmero de personal, salario,
departamento, etc.) y sobre las asignaciones dentro de la organizacin (departamentos de la
compaa area).
Debe crear tablas para los datos de los empleados y los departamentos de la compaa area.
La tabla ZEMPLOY## (donde ## es su nmero de grupo) almacena datos de los empleados,
como nombre, direccin y salario. La tabla ZDEPMENT## contiene los departamentos de la
compaa area. Cada departamento tiene un nmero de telfono y de fax.
Tarea 1
Cree dos tablas transparentes ZEMPLOY## y ZDEPMENT## y defina sus campos de clave. Se
actualizan los datos de tres compaas areas. Una compaa area tiene 20.000 empleados
y entre 10 y 30 departamentos. No guarde los datos en la memoria intermedia ni en un log.

Cree las dos tablas transparentes ZEMPLOY## y ZDEPMENT##. Defina sus campos clave.

Nota:
Defina las opciones tcnicas antes de activar las tablas.

1. Cree la tabla ZEMPLOY##.

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
CLIENT S_MANDT MANDT Mandante
CARRIER S_CARR_ID S_CARR_ID Compaa
area
EMP_NUM Propio Propio NUMC 10 Nmero de
personal
FIRST_NAME S_FNAME S_FNAME Nombre de
pila
LAST_NAME S_LNAME S_LNAME Apellido
DEPARTMENT Propio Propio CHAR 4 Cdigo de
departament
o
AREA Propio Propio CHAR 1 rea

64 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
SALARY Propio Propio CURR 10 Sueldo
decimal 2
CURRENCY S_CURRCODE S_CURR Moneda

a) Seleccione Tabla de base de datos e introduzca el nombre de tabla ZEMPLOY## en el


campo de entrada correspondiente. Seleccione el pulsador Crear. Introduzca un breve
texto en la pantalla de actualizacin para la tabla.

b) Introduzca A como la clase de entrega y admita Actualizacin de vista de tabla.

c) Ahora seleccione la etiqueta Campos para ir a la pantalla de actualizacin de las


definiciones de campo. Introduzca los nombres de campo (no hace falta que estn en
el rea de nombres de cliente).

d) Para los campos Mandante, Compaa area, Nombre, Apellido y Moneda, introduzca
el nombre del elemento de datos como se indica en la columna Elemento de datos.
Grabe las entradas.

e) Cree sus propios elementos de datos para los campos N personal, Cdigo de
departamento, rea y Sueldo. En la columna Tipo de campo, introduzca un nombre
(Z<object>##) para el elemento de datos. Marque el nombre del elemento de datos.
Se muestra la definicin del elemento de datos.

f) Introduzca un texto breve (componente de la ayuda F1). En la etiqueta Denominador


de campo, almacene los textos para los denominadores de campo.

g) Tambin debe asignar una descripcin tcnica al elemento de datos (dominio). En la


etiqueta Definicin seleccione Dominio e introduzca un nombre (Z<object>##) para
el dominio. Si el dominio se ha predefinido, active el elemento de datos y vuelva a la
pantalla de actualizacin de los campos de tabla (con F3). Si no es as, seleccione el
nombre del dominio. Se muestra la definicin del dominio.

h) Introduzca la informacin en los campos respectivos como Breve descripcin, Tipo de


datos y Longitud. Active el dominio.

i) Regrese a la definicin del elemento de datos y active su elemento de datos.

j) Regrese a la definicin de campo. Retome desde el paso e) hasta haber definido todos
los campos de tabla. Grabe la tabla.

k) Defina Tabla de referencia y Campo de referencia para el campo Salario . Marque el


nombre de campo e introduzca lo siguiente en la ventana de dilogo siguiente:
Campo Valor
Tabla de referencia ZEMPLOY##

Campo de referencia Moneda

l) En la columna Clave seleccione las casillas de verificacin para definir los campos
clave para la tabla ZEMPLOY##. Los campos Mandante, Compaa area y N personal

Copyright . Reservados todos los derechos. 65


Captulo 3: Tablas de base de datos

identifican una entrada de forma unvoca. En consecuencia, se deben marcar como


campos clave.

Nota:
Los campos clave Mandante, Compaa area y N personal deben
aparecer en este orden al principio de la lista de campos.

m) Active la tabla ZEMPLOY## . La pantalla de actualizacin de las opciones tcnicas


aparece automticamente.

Nota:
Debido a que los contenidos de la tabla ZEMPLOY## no se modifican
frecuentemente, introduzca APPLO (datos maestros) como la Clase
de datos. Debido a que el nmero previsto de registros en la tabla
ZEMPLOY## es 60.000, seleccione Categora de tamao 2. La tabla no se
debe grabar en log ni guardar en memoria intermedia.

La siguiente tabla muestra las opciones tcnicas que debe seleccionar:

Campo Valor
Clase de datos APPL0 (datos maestros)

Categora de tamao 2

Grabacin en memoria No se permite


intermedia
Grabacin en log Sin grabacin en log

Grabe las opciones tcnicas. Regrese a la pantalla de actualizacin de la tabla por


medio de F3. La tabla est activada.

2. Cree la tabla ZDEPMENT##.

Campo Elemento de Dominio Tipo de Longitud Descripcin


datos datos
CLIENT S_MANDT MANDT Mandante
CARRIER S_CARR_ID S_CARR_ID Ca.area
DEPARTMENT Propio Propio CHAR 4 Cdigo de
departament
o
TELNR Propio S_PHONE CHAR 30 Telfono
FAXNR Propio S_PHONE CHAR 30 Fax

a) Seleccione Tabla de base de datos e introduzca el nombre de tabla ZDEPMENT## en el


campo de entrada correspondiente. Seleccione el pulsador Crear. Introduzca un breve
texto en la pantalla de actualizacin para la tabla.

66 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

b) Introduzca A como la clase de entrega y admita Actualizacin de vista de tabla.

c) Seleccione la etiqueta Campos para ir a la pantalla de actualizacin de las definiciones


de campo. Introduzca los nombres de campo (no hace falta que estn en el rea de
nombres de cliente).

d) Para los campos Cliente y Ca. area introduzca el nombre del elemento de datos
como muestra la columna Elemento de datos . Grabe las entradas.

e) Para los campos Cdigo de departamento, Nmero de telfono y Nmero de fax


debera crear sus propios elementos de datos. En la columna Tipo de campo,
introduzca un nombre (Z<object>##) para el elemento de datos. Marque el nombre
del elemento de datos. Se muestra la definicin del elemento de datos.

f) Introduzca un texto breve (componente de la ayuda F1). En la etiqueta Denominador


de campo, almacene los textos para los denominadores de campo.

g) Tambin debe asignar una descripcin tcnica al elemento de datos (dominio). En la


etiqueta Definicin seleccione Dominio e introduzca un nombre (Z<object>##) para
el dominio. Si no es as, seleccione el nombre del dominio. Se muestra la definicin del
dominio.

Nota:
Si el dominio se ha predefinido, active el elemento de datos y vuelva a la
pantalla de actualizacin de los campos de tabla (con F3).

h) Defina Breve descripcin, Tipo de datos (CHAR) y Longitud de campo (30). Active el
dominio.

i) Retroceda una pantalla (con F3) hasta la definicin del elemento de datos y active el
elemento de datos.

j) Grabe la tabla.

k) En la columna Clave seleccione las casillas de verificacin para definir los campos
clave para la tabla ZDEPMENT##. Los campos Mandante, Compaa area y Cdigo de
departamento identifican una entrada de forma unvoca. En consecuencia, se deben
marcar como campos clave.

l) Active la tabla y defina las opciones tcnicas. Debido a que los contenidos de la tabla
ZDEPMENT## no se modifican frecuentemente, introduzca APPLO (datos
maestros) como la Clase de datos. Debido a que el nmero previsto de registros en
la tabla ZDEPMENT## es 90, seleccione Categora de tamao 0. La tabla no se debe
grabar en log ni guardar en memoria intermedia.

La siguiente tabla muestra las opciones tcnicas que debe seleccionar:

Campo Valor
Clase de datos APPL0 (datos maestros)

Categora de tamao 0

Grabacin en memoria No se permite


intermedia

Copyright . Reservados todos los derechos. 67


Captulo 3: Tablas de base de datos

Campo Valor
Grabacin en log Sin grabacin en log

3. Documente los campos N personal y Cdigo de departamento.


a) Haga doble clic en el elemento de datos para ir a su definicin. Cambie a Modo de
modificacin seleccionando Visualizar Modificacin. Seleccione Pasar
a Documentacin.

b) Introduzca un texto para los campos y grabe las entradas.

4. Actualice las opciones tcnicas y despus active la tabla. Si defini un campo de cantidad
en la tabla, debe asignar el campo de moneda correspondiente.
a) Seleccione Opciones tcnicas.

b) Ahora introduzca la Clase de datos y la Categora de tamao correspondientes.

c) Grabe las modificaciones y vuelva a la vista de campos de la tabla.

d) An tiene que asignar campos de moneda para los campos de cantidad como Salario.
Para ello, seleccione la etiqueta Campos de moneda/cantidad .

e) Introduzca el nombre de la tabla actual en el campo Tabla de referencia .

f) En el Campo Referencia, introduzca el nombre del campo que us para la moneda.

Tarea 2

Compruebe que los mismos campos estn disponibles en las dos tablas para registrar las
modificaciones; para ello, aada estos campos a ambas tablas con una subestructura
ZCHANGE##.

Nota:
Las modificaciones en las tablas ZEMPLOY## y ZDEPMENT## son cruciales y,
por lo tanto, se deben registrar. El programa ABAP que actualiza los datos debe
grabar automticamente la informacin acerca del ltimo usuario que modific
los datos de la tabla. Para ello se pueden anexar campos para el nmero de
personal de la ltima persona que modific la entrada y la fecha de la ltima
entrada en las tablas ZEMPLOY## y ZDEPMENT##.
En una aplicacin real, esta ampliacin provocara siempre que se desactivara la
actualizacin de la tabla estndar para las dos tablas. En cambio se crearan
transacciones de actualizacin propias para la tabla en las que el programa
completara internamente los campos para modificar la grabacin en log en lugar
del usuario.
La creacin de estas transacciones no se discute en este curso. Por lo tanto, en
este curso supondremos que todos los usuarios completan (correctamente)
estos campos en la rutina de actualizacin de la tabla estndar.

1. Cree la estructura ZCHANGE##. Cree un elemento de datos nuevo para el campo ltima
modificacin mediante el dominio usado para el nmero de personal. Use S_CHDATE
como elemento de datos para la fecha de la ltima modificacin.

68 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas transparentes

a) En la pantalla inicial del Dictionary ABAP, seleccione Tipo de datos e introduzca


ZCHANGE## en el campo correspondiente. Seleccione el pulsador Crear.

b) Seleccione Estructura en la siguiente ventana de dilogo.

c) Introduzca los nombres de campo en la columna Componente y los elementos de


datos correspondientes en la columna Tipo de componente. Cree su propio elemento
de datos para el primer campo. Use el dominio que ha creado para el nmero de
personal en la tabla ZEMPLOY## .

d) Cree un campo para el nmero de personal y otro para la fecha de modificacin. Use el
elemento de datos S_CHDATE para el segundo campo.

e) Active la estructura ZCHANGE##.

2. Introduzca ZCHANGE## como un Include en las tablas ZEMPLOY## y ZDEPMENT##.


a) Regrese a la pantalla de actualizacin de la tabla ZEMPLOY##.

b) Seleccione Filas nuevas y site el cursor en el primer campo nuevo.

c) Seleccione Tratar Include Introducir.

d) En la siguiente ventana de dilogo, introduzca el nombre ZCHANGE## y seleccione


Continuar.

e) Active la tabla ZEMPLOY## . Realice las mismas entradas para poder insertar la
subestructura ZCHANGE## en la tabla ZDEPMENT## .

3. Averige qu acciones se han realizado en la base de datos.


a) Puede visualizar las acciones realizadas en la base de datos con Utilidades Log de
activacin.

4. Inicie el programa BC430_CHECK en la transaccin SE38.

Nota:
El programa BC430_CHECK verifica si las soluciones son correctas y completa
las nuevas tablas ZEMPLOY## y ZDEPMENT## con los datos de muestra
necesarios para ejercicios posteriores.

a) Inicie la transaccin SE38 y ejecute el programa BC430_CHECK.

Copyright . Reservados todos los derechos. 69


Captulo 3: Tablas de base de datos

RESUMEN DE LA LECCIN
Ahora podr:
Definir tablas transparentes
Definir estructuras INCLUDE
Definir opciones tcnicas para tablas transparentes

70 Copyright . Reservados todos los derechos.


Captulo 3
Leccin 2
Trabajar con tablas cluster y tablas pool

RESUMEN DE LA LECCIN
Esta leccin explica las tablas pool y las tablas cluster.

Ejemplo empresarial
En las verificaciones de rendimiento de algunas aplicaciones se encuentra con sentencias
SELECT que acceden a otras tablas en la base de datos distintas a las tablas a las que se hace
referencia en el cdigo fuente ABAP correspondiente. En el cdigo fuente ABAP, el
desarrollador us tablas pool y cluster. Por este motivo, se requieren los siguientes
conocimientos:
Comprender las tablas pool
Comprender las tablas cluster

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir tablas cluster y tablas pool

Describir tablas cluster y tablas pool

Figura 25: Resumen de los tipos de tabla de BD

Copyright . Reservados todos los derechos. 71


Captulo 3: Tablas de base de datos

Adems de las tablas transparentes, en las que la definicin en el Dictionary ABAP es idntica
a la de la base de datos, en el sistema SAP existen tablas pool y tablas cluster. Las tablas pool
y las tablas cluster se caracterizan por el hecho de que varias tablas definidas lgicamente en
el Dictionary ABAP se combinan en una tabla de base de datos fsica (pool o cluster de
tablas).

Tablas cluster

Figura 26: Tablas cluster

En las tablas cluster se guardan datos dependientes de la funcin, divididos en diferentes


tablas, en una tabla de base de datos. En consecuencia, la interseccin de los campos clave
de las tablas cluster forma la clave del cluster de tablas (clave de cluster).
Los datos dependientes de una clave de cluster se guardan en el campo VARDATA del cluster
de tablas. Si el campo VARDATA no puede asumir todos los datos dependientes, la interfaz de
base de datos crea un registro de desbordamiento. El campo PAGNO garantiza la singularidad
dentro del cluster de tablas.
La interfaz de la base de datos comprime el contenido del campo VARDATA . En
consecuencia, el campo VARDATA contiene una descripcin sobre cmo se deben
descomprimir sus datos. Los campos TIMESTAMP y PAGELG contienen informacin de
administracin.

72 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas cluster y tablas pool

Tablas pool

Figura 27: Tablas pool

Una tabla pool, a diferencia de la tabla cluster, guarda registros de datos procedentes de las
tablas definidas en el Dictionary ABAP y no dependen los unos de los otros. Se podran
combinar tablas de SAP pequeas en una tabla de base de datos.
En el ejemplo de la figura puede ver que la interseccin de los campos clave de TABA y TABB
est vaca. No obstante, el pool de tablas TABAB guarda los registros de datos de TABA y
TABB.
La clave para un registro de datos del pool de tablas TABAB consiste en los campos
TABNAME y VARKEY . El campo TABNAME contiene el nombre de la tabla pool. El campo
VARKEY est formado por la concatenacin de los campos clave de la tabla pool. Debido a
esto, los campos clave de una tabla pool deben ser tipo C.
La interfaz de la base de datos almacena los campos que no son clave de las tablas pool de
manera desestructurada en el campo VARDATA . El campo DATALN contiene la longitud del
campo VARDATA .

Copyright . Reservados todos los derechos. 73


Captulo 3: Tablas de base de datos

Ventajas y desventajas de tablas cluster y tablas pool

Figura 28: Ventajas y desventajas de tablas cluster y tablas pool

La ventaja principal de las tablas pool y las tablas cluster consiste en que los datos se pueden
guardar en la base de datos en formato comprimido. De este modo, se reduce el espacio
necesario en la memoria y la carga de la red.
Combinar tablas en tablas pool o cluster da como resultado menos tablas y campos de tablas
(debido a compresin de datos). El resultado es que se necesitan ejecutar menos sentencias
SQL distintas.
Debido a que las tablas pool y cluster no se guardan como tablas independientes en la base
de datos, administrarlas es ms simple. En el caso de las tablas cluster, los datos
dependientes de la funcin se leen juntos, con lo que se accede menos veces a la base de
datos. La principal desventaja es que se limita la funcionalidad de la base de datos. Con los
campos que no son clave no se puede crear un ndice. No existen ndices primarios ni ndices
en un subconjunto de los campos clave. El uso de las vistas de base de datos o de ABAP
JOINs tambin queda descartado, al igual que el uso de appends de tabla. Puede acceder a
los datos en tablas pool o tablas cluster solamente con OPEN SQL (no Native SQL).
La interfaz de base de datos de SAP divide la clusula WHERE de una sentencia SQL. Solo la
condicin WHERE para campos clave se transfiere al sistema de base de datos.
Las clusulas ORDER BY (o GROUP BY) no se transfieren en el caso de los campos que no
son clave.
Necesita claves ms largas de lo que es necesario semnticamente para las tablas pool.

RESUMEN DE LA LECCIN
Ahora podr:
Describir tablas cluster y tablas pool

74 Copyright . Reservados todos los derechos.


Captulo 3

Evaluacin de la formacin

1. No puede acceder a los datos incluidos en una tabla mediante OPEN SQL (o SQL nativo).
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cules son los objetos bsicos en el Dictionary ABAP que almacenan datos?
Seleccione las respuestas correctas.

X A Tablas

X B Estructura

X C Elemento de datos

X D Dominios

3. La clave______________ es una combinacin de columnas que de manera nica identifica


un registro de datos.
Seleccione la respuesta correcta.

X A secundaria

X B primaria

X C dominio

X D data

4. La(s) ________________ optimiza(n) los requisitos de almacenamiento y el


comportamiento de acceso de las tablas de base de datos.
Seleccione la respuesta correcta.

X A Fragmentacin de tablas

X B Opciones tcnicas

X C Claves externas

Copyright . Reservados todos los derechos. 75


Captulo 3: Evaluacin de la formacin

5. Los datos maestros son datos que rara vez se modifican. Por ejemplo, los datos de un
fichero de direccin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. En las tablas cluster se almacenan datos que dependen de la funcin y provienen de


diferentes tablas. Los datos dependientes de una clave de cluster se guardan en el campo
_____________________ del cluster de tablas.
Seleccione la respuesta correcta.

X A datos de cluster

X B vardata

X C datos de tabla

7. Un pool de tablas, a diferencia de un cluster de tablas, guarda registros de datos


procedentes de tablas independientes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. La ventaja principal de las tablas pool y las tablas cluster consiste en que los datos se
pueden guardar en la base de datos en formato comprimido. De este modo, se reduce el
espacio necesario en la memoria y la carga de la red.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

76 Copyright . Reservados todos los derechos.


Captulo 3

Respuestas a la Evaluacin de la formacin

1. No puede acceder a los datos incluidos en una tabla mediante OPEN SQL (o SQL nativo).
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cules son los objetos bsicos en el Dictionary ABAP que almacenan datos?
Seleccione las respuestas correctas.

X A Tablas

X B Estructura

X C Elemento de datos

X D Dominios

3. La clave______________ es una combinacin de columnas que de manera nica identifica


un registro de datos.
Seleccione la respuesta correcta.

X A secundaria

X B primaria

X C dominio

X D data

Copyright . Reservados todos los derechos. 77


Captulo 3: Respuestas a la Evaluacin de la formacin

4. La(s) ________________ optimiza(n) los requisitos de almacenamiento y el


comportamiento de acceso de las tablas de base de datos.
Seleccione la respuesta correcta.

X A Fragmentacin de tablas

X B Opciones tcnicas

X C Claves externas

5. Los datos maestros son datos que rara vez se modifican. Por ejemplo, los datos de un
fichero de direccin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. En las tablas cluster se almacenan datos que dependen de la funcin y provienen de


diferentes tablas. Los datos dependientes de una clave de cluster se guardan en el campo
_____________________ del cluster de tablas.
Seleccione la respuesta correcta.

X A datos de cluster

X B vardata

X C datos de tabla

7. Un pool de tablas, a diferencia de un cluster de tablas, guarda registros de datos


procedentes de tablas independientes.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. La ventaja principal de las tablas pool y las tablas cluster consiste en que los datos se
pueden guardar en la base de datos en formato comprimido. De este modo, se reduce el
espacio necesario en la memoria y la carga de la red.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

78 Copyright . Reservados todos los derechos.


CAPTULO 4 Rendimiento durante el acceso
a una tabla

Leccin 1
Uso de los ndices de la tabla de base de datos 80
Ejercicio 6: Uso de ndices de tabla 83

Leccin 2
Uso de tabla en la memoria intermedia 87
Ejercicio 7: Tabla en memoria intermedia 101

OBJETIVOS DEL CAPTULO

Describir cmo se usan los ndices de base de datos


Definir ndices de base de datos en el Dictionary ABAP
Describir cmo se utilizan las memorias intermedias
Describir tipos de grabacin en memoria intermedia
Valorar el beneficio de usar memorias intermedias

Copyright . Reservados todos los derechos. 79


Captulo 4
Leccin 1
Uso de los ndices de la tabla de base de datos

RESUMEN DE LA LECCIN
Esta leccin explica la estructura y el uso de los ndices de bases de datos.

Ejemplo empresarial
Algunas transacciones contienen sentencias select en sus aplicaciones, y esto hace que los
tiempos de ejecucin sean muy largos. Debe mejorar el rendimiento sin modificar el
programa. Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo crear ndices
Comprender cmo usar ndices

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir cmo se usan los ndices de base de datos
Definir ndices de base de datos en el Dictionary ABAP

Acceso a base de datos por medio de ndices

Figura 29: Estructura de un ndice

Se puede crear un ndice para acelerar la seleccin de registros de datos en una tabla.

80 Copyright . Reservados todos los derechos.


Leccin: Uso de los ndices de la tabla de base de datos

Un ndice se puede interpretar como una copia de una tabla de base de datos reducida a
ciertos campos. Esta copia almacena los datos de manera clasificada. Clasificar los datos
permite acceder rpidamente a los registros de la tabla (por ejemplo, por medio de una
bsqueda binaria). Un ndice contiene los campos de la tabla de base de datos que son
relevantes para las consultas de la base de datos. El ndice contiene tambin un puntero que
seala desde la entrada de ndice a la entrada correspondiente de la tabla para que todo el
contenido del campo se pueda leer.

Los siguientes puntos son importantes cuando se crean los ndices:


Un ndice debe ser lo ms pequeo posible. Use solo los campos que se usan con
frecuencia en la clusula WHERE de las sentencias SELECT.

Nota:
Tenga en cuenta el orden del campo del ndice. Los campos seleccionados con
ms frecuencia deben estar primeros en el ndice. Tenga en cuenta el orden de
los campos en la clusula WHERE de las sentencias SELECT. El orden de los
campos debe coincidir con el orden de los campos del ndice. Esto garantiza
que el sistema de base de datos utilice el ndice correctamente.

Un ndice debe contener solo campos importantes. Un campo es importante si contiene


mucho contenido de datos que puedan ayudar a identificar la lnea de una tabla.
Cuando agrega, actualiza o elimina contenido de la base de datos, el sistema debe volver a
clasificar todos los ndices asignados. Esto lleva mucho tiempo. Las tablas cuyo contenido
se modifica con frecuencia no debe tener demasiados ndices.
Los ndices de una tabla son lo ms disyuntivos posible.

Definicin de un ndice

Figura 30: Acceso mediante ndices

Copyright . Reservados todos los derechos. 81


Captulo 4: Rendimiento durante el acceso a una tabla

El optimizador de base de datos decide qu ndice de la tabla se debera usar en la base de


datos para acceder a los registros de datos.

Cada tabla de base de datos tiene un ndice primario y una cantidad arbitraria de ndices
secundarios. Las diferencias entre el ndice primario y los ndices secundarios son las
siguientes:
ndice primario
El ndice primario contiene los campos clave de la tabla. El ndice primario siempre es
unvoco. Cuando un desarrollador activa una tabla, el sistema automticamente crea el
ndice primario.
ndice secundario
Los ndices secundarios son tiles si una tabla grande es accedida frecuentemente con
una seleccin en campos distintos a los campos clave de la tabla. La mayota de los ndices
secundarios no son unvocos, pero los ndices secundarios unvocos tambin son posibles.

Los ndices de tablas tienen un ID de tres caracteres. El 0 se reserva para el ndice primario.
Los clientes pueden crear sus propios ndices en las tablas SAP. Los ID de los ndices de
cliente deben comenzar con Y o Z.

Los usos del ndice nico son:


Los campos de un ndice nico identifican de manera nica cada registro en la tabla.
Al introducir datos en la tabla o actualizarlos, el sistema se asegura de que en la base de
datos no haya entradas duplicadas.

Las mejoras en el rendimiento ocasionadas por los ndices en gran medida dependen del
sistema de base de datos subyacente. Para ello, especifique los sistemas de base de datos
sobre los que se crea un ndice.

82 Copyright . Reservados todos los derechos.


Captulo 4
Ejercicio 6
Uso de ndices de tabla

Ejemplo empresarial
Durante su actividad diaria, los empleados de la compaa area necesitan poder acceder con
rapidez a los datos de las tablas de administracin de empleados. En este ejercicio, acelerar
el acceso a los datos en esta tablas.
La combinacin de nombre de pila y apellido se utiliza a menudo para acceder a los datos de
HR de un empleado. El apellido se usa con ms frecuencia (se especifica en el acceso) que el
nombre de pila. Para ello se debe crear un ndice.

Tarea 1
Cree un ndice que permita acceder a la combinacin de nombre de pila y apellido. Asegrese
de crear el ndice en la base de datos.

1. Cree un ndice para la tabla ZEMPLOY## . Debe contener los campos Mandante, Apellido
y Nombre de pila. Ordene los campos en este orden.

Nota:
El ndice no es unvoco, ya que puede haber empleados que se llamen igual.
Por ello, no hay motivo para crear el ndice slo en determinados sistemas de
base de datos.

Tarea 2
Cree un ndice para la tabla de empleados que admita selecciones a travs del rea
empresarial. Asegrese de que este ndice slo se cree en los sistemas de base de datos
MAXDB y SQL Server .

Nota:
El hecho de usar un ndice para las reas podra mejorar el rendimiento cuando se
accede a los datos de empleados, por ejemplo, cuando se seleccionan
frecuentemente todos los pilotos de una compaa area. Cuando se midi el
rendimiento en diferentes sistemas de base de datos, las mejoras se registraron
solo con los sistemas de base de datos MAXDB y SQL Server .

1. Visualice el ndice que ha creado.

2. Cree el nuevo ndice slo en los sistemas de base de datos MAXDB y SQL Server .

Copyright . Reservados todos los derechos. 83


Captulo 4
Solucin 6
Uso de ndices de tabla

Ejemplo empresarial
Durante su actividad diaria, los empleados de la compaa area necesitan poder acceder con
rapidez a los datos de las tablas de administracin de empleados. En este ejercicio, acelerar
el acceso a los datos en esta tablas.
La combinacin de nombre de pila y apellido se utiliza a menudo para acceder a los datos de
HR de un empleado. El apellido se usa con ms frecuencia (se especifica en el acceso) que el
nombre de pila. Para ello se debe crear un ndice.

Tarea 1
Cree un ndice que permita acceder a la combinacin de nombre de pila y apellido. Asegrese
de crear el ndice en la base de datos.

1. Cree un ndice para la tabla ZEMPLOY## . Debe contener los campos Mandante, Apellido
y Nombre de pila. Ordene los campos en este orden.

Nota:
El ndice no es unvoco, ya que puede haber empleados que se llamen igual.
Por ello, no hay motivo para crear el ndice slo en determinados sistemas de
base de datos.

a) En el modo de visualizacin, vaya a la pantalla de actualizacin para la tabla


ZEMPLOY## y seleccione ndices.

b) En la siguiente ventana de dilogo, confirme que desea crear un ndice.

c) En la siguiente ventana de dilogo, introduzca un ID de ndice de tres caracteres y


seleccione Continuar.

d) Introduzca un texto breve en la pantalla de actualizacin del ndice.

e) Seleccione Campos de tabla. Aparece una lista de todos los campos en la tabla.

f) Seleccione los campos Mandante, Apellido y Nombre de pila y seleccione Copiar. Los
campos se copian desde la ventana de dilogo al ndice respetando este orden.

Nota:
Si el campo Nombre de pila est antes del campo Apellido, cambie el orden
de los campos. Para ello, site el cursor en la lnea del campo Nombre de
pila y seleccione Cortar. Ahora site el cursor en la primera lnea libre
despus del campo Apellido y seleccione Pegar.

84 Copyright . Reservados todos los derechos.


Leccin: Uso de los ndices de la tabla de base de datos

g) Por lo tanto, debera dejar las opciones tcnicas ndice no unvoco e ndice en todos
los sistemas de base de datos.

h) Active el ndice. El ndice se crea automticamente en la base de datos.

Tarea 2
Cree un ndice para la tabla de empleados que admita selecciones a travs del rea
empresarial. Asegrese de que este ndice slo se cree en los sistemas de base de datos
MAXDB y SQL Server .

Nota:
El hecho de usar un ndice para las reas podra mejorar el rendimiento cuando se
accede a los datos de empleados, por ejemplo, cuando se seleccionan
frecuentemente todos los pilotos de una compaa area. Cuando se midi el
rendimiento en diferentes sistemas de base de datos, las mejoras se registraron
solo con los sistemas de base de datos MAXDB y SQL Server .

1. Visualice el ndice que ha creado.


a) En la ventana de dilogo, seleccione Crear. Incluya en el ndice los campos Mandante,
Ca. Area y rea .

Nota:
Este ndice tampoco es unvoco. El ndice slo se crea en la base de datos si
el sistema de formacin se est ejecutando en uno de los sistemas de base
de datos seleccionados.

2. Cree el nuevo ndice slo en los sistemas de base de datos MAXDB y SQL Server .
a) Seleccione Para sistemas de base de datos seleccionados .

b) Luego seleccione el smbolo de flecha en esta lnea. Seleccione Lista de seleccin.


Seleccione de la lista los identificadores de los sistemas de base de datos ADA para
Adabas y MSS para SQL Server.

c) Seleccione Continuar.

d) Active el ndice.

Consejo:
No ejecute ahora BC430_CHECK. Ms tarde, realizar una verificacin de
este ejercicio al final de la unidad, junto con otros ejercicios.

Copyright . Reservados todos los derechos. 85


Captulo 4: Rendimiento durante el acceso a una tabla

RESUMEN DE LA LECCIN
Ahora podr:
Describir cmo se usan los ndices de base de datos
Definir ndices de base de datos en el Dictionary ABAP

86 Copyright . Reservados todos los derechos.


Captulo 4
Leccin 2
Uso de tabla en la memoria intermedia

RESUMEN DE LA LECCIN
Esta leccin explica cmo mejorar el rendimiento de la base de datos mediante la utilizacin
de tablas en la memoria intermedia.

Ejemplo empresarial
Debe considerar los beneficios del uso de una memoria intermedia. Por este motivo, se
requieren los siguientes conocimientos:
Comprender la sincronizacin en memoria intermedia
Comprender el uso de tablas en la memoria intermedia

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir cmo se utilizan las memorias intermedias
Describir tipos de grabacin en memoria intermedia
Valorar el beneficio de usar memorias intermedias

Tabla en memoria intermedia

Figura 31: Acceso a los datos mediante la memoria intermedia

Copyright . Reservados todos los derechos. 87


Captulo 4: Rendimiento durante el acceso a una tabla

Almacenar una tabla en la memoria intermedia mejora el rendimiento cuando se leen los
registros de la tabla.
Los registros de una tabla grabada en la memoria intermedia se leen directamente desde la
memoria intermedia local del servidor de aplicacin en el que se est ejecutando la
transaccin de acceso cuando se accede a la tabla. De este modo se eliminan los accesos a la
base de datos que consumen mucho tiempo. El rendimiento del acceso de la tabla mejora
entre el 10 y el 100%. La mejora de la velocidad depende de la estructura de la tabla y de la
configuracin exacta del sistema. En consecuencia, la grabacin en la memoria intermedia
puede mejorar en gran medida el rendimiento del sistema.
Los registros de tablas grabadas en memoria intermedia se almacenan en la memoria
principal del servidor de aplicacin. Si la memoria est llena, el sistema descarta el registro de
la tabla al que se accedi por ltimo.
Cuando se introduce /$TAB en el campoComando el sistema reinicia las memorias
intermedias de tablas en el servidor de aplicacin correspondiente. Utilice este comando slo
si detecta inconsistencias en la memoria intermedia. En los sistemas grandes, se puede
tardar varias horas en llenar las memorias intermedias. Durante este tiempo el rendimiento
se reduce.

Tipos de grabacin en memoria intermedia


Cuando se accede a un registro de la tabla, el tipo de grabacin en memoria intermedia
determina qu registros de la tabla se cargan en la memoria intermedia del servidor de
aplicacin.

Los tipos de grabacin en memoria intermedia son:


Grabacin completa en memoria intermedia
Cuando se accede a un registro de la tabla, todos los registros de la tabla se cargan en la
memoria intermedia.
Grabacin genrica en memoria intermedia
Cuando se accede a un registro de la tabla, todos los registros en los que coincide la parte
izquierda de la clave se cargan en la memoria intermedia.
Grabacin de registro individual en memoria intermedia
Solo se carga en la memoria intermedia el registro al que se ha accedido.

88 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

Grabacin completa en memoria intermedia

Figura 32: Grabacin completa en memoria intermedia

Cuando se graba completamente en memoria intermedia, la tabla est completa en la


memoria intermedia o no est en absoluto. Cuando se accede a un registro de la tabla, todos
los registros de la tabla se cargan en la memoria intermedia.
Cuando se decide si una tabla se debe grabar completamente en la memoria intermedia, hay
que tener en cuenta el tamao de tabla, el nmero de accesos de lectura y el nmero de
accesos de escritura. Cuanto ms pequea sea la tabla, mayor ser la frecuencia de lectura,
menor ser la frecuencia de escritura y ms recomendable ser grabar la tabla por completo
en la memoria intermedia.
Tambin se recomienda grabar por completo en la memoria intermedia las tablas que
acceden a menudo a registros que no existen. La grabacin en memoria intermedia puede
verificar rpidamente la existencia de un registro, ya que todos los registros de la tabla
residen en la memoria intermedia.
Los registros de datos se almacenan en la memoria intermedia clasificados por clave primaria
de tabla. Cuando se accede a los datos con SELECT, solo se pueden usar para el acceso los
campos hasta la ltima clave especificada. Para tales accesos debe especificar una parte de
la clave justificada a la izquierda tan grande como sea posible. Por ejemplo, si no se ha
definido el primer campo clave, toda la tabla se escanear en la memoria intermedia. En estas
circunstancias, un acceso directo a la base de datos podra ser ms eficaz si existe un ndice
secundario adecuado.

Copyright . Reservados todos los derechos. 89


Captulo 4: Rendimiento durante el acceso a una tabla

Grabacin genrica en memoria intermedia

Figura 33: Grabacin genrica en memoria intermedia

Cuando se accede a un registro de la tabla, todos los registros cuyos campos clave genricos
coincidan con este registro se cargarn en la memoria intermedia. La clave genrica es la
parte izquierda de la clave primaria de la tabla. La clave genrica se debe seleccionar de modo
que las reas genricas no sean demasiado pequeas, lo que ocasionara demasiadas reas
genricas. Se prefiere la grabacin completa en memoria intermedia para la tabla que tiene
pocos registros para cada rea genrica. Si selecciona una clave genrica grande, se anularn
demasiados datos en caso de que se modifiquen las entradas de tabla, lo que podra
repercutir negativamente en el rendimiento.
Una tabla se puede grabar genricamente en la memoria intermedia solo si determinadas
reas genricas de la tabla son necesarias habitualmente para el tratamiento.
Las tablas grabadas totalmente en la memoria intermedia que dependen del mandante se
graban automticamente de forma genrica. El campo del mandante es la clave genrica.
Esto se basa en la suposicin de que no todos los mandantes se utilizan efectivamente en un
servidor de aplicacin. Las tablas dependientes del idioma son un ejemplo de grabacin
genrica en la memoria intermedia. La clave genrica incluye todos los campos clave hasta el
campo de idioma, incluido.
Las reas genricas se gestionan en la memoria intermedia como objetos independientes.
Las reas genricas se administran del mismo modo que las tablas grabadas completamente
en memoria intermedia.

90 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

Grabar un registro individual en la memoria intermedia

Figura 34: Grabar un registro individual en la memoria intermedia

En la grabacin de registro individual en memoria intermedia, los registros a los que se


accede por medio de SELECT SINGLE se cargan en la memoria intermedia.
La grabacin de un registro individual se recomienda, sobre todo, en el caso de tablas
grandes en las que solo se accede reiteradamente a algunos registros mediante SELECT
SINGLE. Todos los accesos a la tabla que no usen SELECT SINGLE pasarn por alto la
memoria intermedia y accedern directamente a la base de datos.
Si accede a un registro mediante SELECT SINGLE y ste an no est en la memoria
intermedia, se acceder a la base de datos para cargar el registro. Si la tabla no contiene
ningn registro con la clave especificada, el registro se grabar en la memoria intermedia
como inexistente. De este modo se evita que se vuelva a acceder a la base de datos mediante
la misma clave.

Diferencias entre grabacin de registro individual en memoria intermedia y otros tipos de


grabacin:
La grabacin de registro individual en memoria intermedia ahorra espacio de
almacenamiento en comparacin con la grabacin completa o la genrica.
Los gastos generales de la administracin de la memoria intermedia son mayores que en
el caso de la grabacin genrica o la completa.
Se debe acceder muchas ms veces a la base de datos para cargar los registros que con
las otras formas de grabacin en la memoria intermedia. Solo hace falta un acceso a la
base de datos para cargar una tabla con grabacin completa en la memoria intermedia,
pero en cambio hay que acceder varias veces a la base de datos en el caso de la grabacin
de registro individual. Por lo tanto, la grabacin completa en memoria intermedia suele ser
preferible en el caso de las tablas pequeas a las que se accede con frecuencia.

Copyright . Reservados todos los derechos. 91


Captulo 4: Rendimiento durante el acceso a una tabla

Sincronizacin de memorias intermedias

Figura 35: Tabla en memoria intermedia

El Sistema SAP gestiona y sincroniza las memorias intermedias en los servidores de


aplicacin individuales. Si un programa de aplicacin accede a los datos de una tabla, las
interfaces de base de datos determinan si estos datos se encuentran en la memoria
intermedia del servidor de aplicacin. En caso afirmativo, los datos se leen directamente de la
memoria intermedia. Si los datos no estn en la memoria intermedia del servidor de
aplicacin, se leern directamente de la base de datos y se cargarn en la memoria
intermedia.

92 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

Sincronizacin de la memoria intermedia 1

Figura 36: Sincronizacin de la memoria intermedia 1

Puesto que las memorias intermedias se encuentran en los servidores de aplicacin locales,
se deben sincronizar despus de modificar datos en una tabla almacenada en la memoria
intermedia. La sincronizacin se realiza a intervalos fijados que se pueden definir en el perfil
del sistema. El parmetro correspondiente es rdisp/buffertime y define la longitud del
intervalo en segundos. El valor debe estar comprendido entre 60 y 3600. Se recomienda un
valor de entre 60 y 240.
Supongamos un sistema con dos aplicaciones.

El ejemplo siguiente muestra cmo se sincronizan las memorias intermedias locales del
sistema:
Situacin de partida
Ninguno de los servidores ha accedido an a los registros de la tabla SCARR para
grabarlos completamente en la memoria intermedia. Por ello, la tabla no se encuentra an
en las memorias intermedias locales de los dos servidores.
Fecha y hora 1
Un programa que se ejecuta en el servidor 1 lee registros de la tabla SCARR en la base de
datos.
Fecha y hora 2
La tabla SCARR se carga por completo en la memoria intermedia local del servidor 1. La
memoria intermedia local de este servidor ahora se usa para acceder desde el servidor 1 a
los datos de la tabla SCARR.

Copyright . Reservados todos los derechos. 93


Captulo 4: Rendimiento durante el acceso a una tabla

Sincronizacin de la memoria intermedia 2

Figura 37: Sincronizacin de la memoria intermedia 2

Las siguientes dos fechas y horas del proceso de sincronizacin de las memorias
intermedias son:
Fecha y hora 3
Un programa en el servidor 2 accede a los registros de la tabla. Puesto que la tabla no se
encuentra an en la memoria intermedia local del servidor 2, los registros se leen
directamente desde la base de datos.
Fecha y hora 4
La tabla SCARR se carga en la memoria intermedia local del servidor 2. En consecuencia,
el servidor 2 tambin usa su memoria intermedia local para acceder a los datos la prxima
vez que lee la tabla SCARR.

94 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

Sincronizacin de la memoria intermedia 3

Figura 38: Sincronizacin de la memoria intermedia 3

Las siguientes tres fechas y horas del proceso de sincronizacin de las memorias
intermedias son:
Fecha y hora 5
Un programa en el servidor 1 borra registros de la tabla SCARR y actualiza la base de
datos.
Fecha y hora 6
El servidor 1 realiza una entrada en la tabla de sincronizacin.
Fecha y hora 7
El servidor 1 actualiza la memoria intermedia local.

Copyright . Reservados todos los derechos. 95


Captulo 4: Rendimiento durante el acceso a una tabla

Sincronizacin de la memoria intermedia 4

Figura 39: Sincronizacin de la memoria intermedia 4

La siguiente fecha y hora del proceso de sincronizacin de memorias intermedias es:


Fecha y hora 8

Un programa en el servidor 2 accede a los registros borrados. Puesto que la tabla SCARR se
encuentra en la memoria intermedia local, para el acceso se utilizar esta memoria
intermedia local. El servidor 2 encuentra los registros, aunque ya no se encuentren en la tabla
de base de datos. Si se hiciera el mismo acceso al servidor 1 desde un programa de
aplicacin, el programa reconocera que los registros ya no existen. En este momento el
comportamiento de un programa de aplicacin depende del servidor en el que se est
ejecutando.

96 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

Sincronizacin de la memoria intermedia 5

Figura 40: Sincronizacin de la memoria intermedia 5

Las siguientes dos fechas y horas del proceso de sincronizacin de las memorias
intermedias son:
Fecha y hora 9
El intervalo de actualizacin de la sincronizacin de las memorias intermedias (como lo
define el perfil del sistema) ya pas. Los dos servidores consultan la tabla de
sincronizacin para ver si, mientras, otro servidor ha modificado una de las tablas en su
memoria temporal local.
Fecha y hora 10
El servidor 2 detecta que la tabla SCARR ha sido modificada por el servidor 1. Por lo tanto,
el servidor 2 anula la tabla en su memoria intermedia local. El siguiente acceso a los datos
de la tabla SCARR desde el servidor 2 usa la base de datos. El servidor 1 no debe anular la
tabla en su memoria intermedia, ya que es el nico que ha modificado la tabla SCARR. Por
ello, el servidor 1 usa de nuevo la memoria intermedia local la prxima vez que accede a los
registros de la tabla SCARR.

Copyright . Reservados todos los derechos. 97


Captulo 4: Rendimiento durante el acceso a una tabla

Sincronizacin de la memoria intermedia 6

Figura 41: Sincronizacin de la memoria intermedia 6

Las ltimas dos fechas y horas del proceso de sincronizacin de las memorias
intermedias son:
Fecha y hora 11
El servidor 2 vuelve a acceder a los registros de la tabla SCARR. Puesto que la tabla
SCARR est anulada en la memoria intermedia local del servidor 2, para el acceso se utiliza
la base de datos.
Fecha y hora 12
La tabla se vuelve a cargar en la memoria intermedia local del servidor 2. La informacin
de la tabla SCARR no coincide en los servidores y en la base de datos.

Grabar tabla en memoria intermedia Ventajas e inconvenientes


Las ventajas y los inconvenientes de la sincronizacin de memorias intermedias son:
Ventaja:
La carga en la red se mantiene reducida al mnimo. Si hubiera que sincronizar las
memorias intermedias de inmediato despus de cada modificacin, cada servidor debera
informar a todos los dems servidores de cada modificacin en una tabla almacenada en
la memoria intermedia a travs de la red. Esto repercutira negativamente en el
rendimiento.
Inconveniente:
Las memorias intermedias locales de los servidores de aplicacin pueden contener datos
obsoletos entre sincronizaciones.

98 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

rbol de decisin para grabacin en memoria intermedia

Figura 42: rbol de decisin para grabacin en memoria intermedia

Use el rbol de toma de decisiones para la grabacin de tablas en memorias intermedias para
que lo ayuden en el sistema de desarrollo.

Copyright . Reservados todos los derechos. 99


Captulo 4: Rendimiento durante el acceso a una tabla

100 Copyright . Reservados todos los derechos.


Captulo 4
Ejercicio 7
Tabla en memoria intermedia

Ejemplo empresarial
Durante su actividad diaria, los empleados de la compaa area necesitan poder acceder con
rapidez a los datos de las tablas de administracin de empleados. Por eso, se debera acelerar
el acceso a los datos de estas tablas.
Para planificar una tripulacin de vuelo, se deben asignar empleados (pilotos y auxiliares de
vuelo) a los vuelos. Hay que crear una tabla en la que se puedan introducir los empleados
implicados y sus cargos para cada vuelo.
TAREA 1
Copie la tabla SFLCREW en la tabla ZFLCREW##. Luego active la tabla ZFLCREW##.

1. Copie la tabla SFLCREW en la tabla ZFLCREW##. Sustituya el elemento de datos existente


para el nmero de empleado por su propio elemento de datos.

TAREA 2
Actualice las opciones para grabar en memoria intermedia las tablas ZDEPMENT## y
ZFLCREW##. A las tablas ZDEPMENT## y ZFLCREW## se accede con mucha frecuencia.
Los registros de datos se leen reiteradamente desde estas tablas.

1. Actualice las opciones para grabar en memoria intermedia las tablas ZDEPMENT## en
Opciones tcnicas.

Nota:
Puesto que el contenido de la tabla ZDEPMENT## no suele variar, pero s
leerse con frecuencia, es aconsejable guardar la tabla en la memoria
intermedia.

2. Actualice las opciones para grabar en memoria intermedia las tablas ZFLCREW## en
Opciones tcnicas.

Nota:
Los datos de la tabla ZFLCREW## a menudo se leen reiteradamente. En
cambio, raramente se accede a la tabla para modificar el contenido. En
consecuencia, debera grabar la tabla en la memoria intermedia.
Normalmente en un servidor de aplicacin slo hacen falta los datos de una
compaa area. Por ello, grabe la tabla genricamente en la memoria
intermedia con la clave genrica Mandante y Ca. area.

Copyright . Reservados todos los derechos. 101


Captulo 4: Rendimiento durante el acceso a una tabla

3. Ejecute el programa BC430_CHECK en la transaccin SE38. BC430_CHECK verifica si las


soluciones son correctas y completa la nueva tabla ZFLCREW## con los datos de
muestra necesarios para ejercicios posteriores.

102 Copyright . Reservados todos los derechos.


Captulo 4
Solucin 7
Tabla en memoria intermedia

Ejemplo empresarial
Durante su actividad diaria, los empleados de la compaa area necesitan poder acceder con
rapidez a los datos de las tablas de administracin de empleados. Por eso, se debera acelerar
el acceso a los datos de estas tablas.
Para planificar una tripulacin de vuelo, se deben asignar empleados (pilotos y auxiliares de
vuelo) a los vuelos. Hay que crear una tabla en la que se puedan introducir los empleados
implicados y sus cargos para cada vuelo.
TAREA 1
Copie la tabla SFLCREW en la tabla ZFLCREW##. Luego active la tabla ZFLCREW##.

1. Copie la tabla SFLCREW en la tabla ZFLCREW##. Sustituya el elemento de datos existente


para el nmero de empleado por su propio elemento de datos.
a) En la pantalla inicial del Dictionary ABAP, introduzca SFLCREW en el campo Tabla de
base de datos .

b) Seleccione Copiar.

c) En la siguiente ventana de dilogo, introduzca el nombre ZFLCREW## en el campo tabla


y seleccione Continuar.

d) En Modo de modificacin, vaya a la pantalla de actualizacin de tabla y sustituya el


elemento de datos SEMP_NUM con el elemento de datos que cre para el nmero de
empleado.

e) Active la tabla.

TAREA 2
Actualice las opciones para grabar en memoria intermedia las tablas ZDEPMENT## y
ZFLCREW##. A las tablas ZDEPMENT## y ZFLCREW## se accede con mucha frecuencia.
Los registros de datos se leen reiteradamente desde estas tablas.

1. Actualice las opciones para grabar en memoria intermedia las tablas ZDEPMENT## en
Opciones tcnicas.

Nota:
Puesto que el contenido de la tabla ZDEPMENT## no suele variar, pero s
leerse con frecuencia, es aconsejable guardar la tabla en la memoria
intermedia.

Copyright . Reservados todos los derechos. 103


Captulo 4: Rendimiento durante el acceso a una tabla

a) Abra la tabla ZDEPMENT## en modo de visualizacin y seleccione Opciones tcnicas.


Aparece la pantalla de actualizacin deseada, donde puede cambiar al Modo de
modificacin .

b) Marque el botn de seleccin Grabacin activa en memoria intermedia . Puesto que no


existen restricciones en lo que respecta al acceso y la tabla es pequea, seleccione
Grabar completamente en memoria intermedia.

c) Active las opciones tcnicas para la tabla ZDEPMENT##.

2. Actualice las opciones para grabar en memoria intermedia las tablas ZFLCREW## en
Opciones tcnicas.

Nota:
Los datos de la tabla ZFLCREW## a menudo se leen reiteradamente. En
cambio, raramente se accede a la tabla para modificar el contenido. En
consecuencia, debera grabar la tabla en la memoria intermedia.
Normalmente en un servidor de aplicacin slo hacen falta los datos de una
compaa area. Por ello, grabe la tabla genricamente en la memoria
intermedia con la clave genrica Mandante y Ca. area.

a) Abra la tabla ZFLCREW## en modo de visualizacin y seleccione Opciones tcnicas.


Aparece la pantalla de actualizacin deseada, donde puede cambiar el modo de
modificacin.

b) Marque el botn de seleccin Grabacin activa en memoria intermedia . Seleccione


Grabar en memoria intermedia genrica y seleccione 2 como el nmero de campos
clave genricos.

c) Active las opciones tcnicas para la tabla ZFLCREW##.

3. Ejecute el programa BC430_CHECK en la transaccin SE38. BC430_CHECK verifica si las


soluciones son correctas y completa la nueva tabla ZFLCREW## con los datos de
muestra necesarios para ejercicios posteriores.

104 Copyright . Reservados todos los derechos.


Leccin: Uso de tabla en la memoria intermedia

RESUMEN DE LA LECCIN
Ahora podr:
Describir cmo se utilizan las memorias intermedias
Describir tipos de grabacin en memoria intermedia
Valorar el beneficio de usar memorias intermedias

Copyright . Reservados todos los derechos. 105


Captulo 4: Rendimiento durante el acceso a una tabla

106 Copyright . Reservados todos los derechos.


Captulo 4

Evaluacin de la formacin

1. Un ndice se puede interpretar como una copia de una tabla de base de datos reducida a
ciertos campos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Qu ndice identifica de manera nica a cada registro de la tabla?


Seleccione las respuestas correctas.

X A ndice secundario nico

X B ndice primario

X C ndice secundario no nico

3. Si se accede con frecuencia a una tabla grande, hasta el punto de que no se puede usar el
ndice primario, cree ndices secundarios para la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. El _____________ decide qu ndice de tabla utiliza el sistema de base de datos para


acceder a los registros de datos.
Seleccione la respuesta correcta.

X A optimizador de base de datos

X B tabla de base de datos

X C tablas en memorias intermedias

Copyright . Reservados todos los derechos. 107


Captulo 4: Evaluacin de la formacin

5. Almacenar una tabla en la memoria intermedia mejora el rendimiento cuando se leen los
registros de la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. La grabacin genrica en memoria intermedia se recomienda especialmente en el caso de


tablas grandes en las que solo se accede reiteradamente a algunos pocos registros
mediante SELECT SINGLE.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. En la grabacin genrica en memoria intermedia, la clave genrica es la parte izquierda de


la clave primaria de la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Se recomienda la grabacin _____________ en memoria intermedia para las tablas que


acceden a menudo a registros que no existen.
Seleccione la respuesta correcta.

X A Completa

X B Genrica

X C De registro individual

9. Si hubiera que sincronizar las memorias intermedias de inmediato despus de cada


modificacin, cada servidor debera informar a todos los dems servidores de cada
modificacin en una tabla almacenada en la memoria intermedia a travs de la red. Esto
repercutira negativamente en el rendimiento.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

108 Copyright . Reservados todos los derechos.


Captulo 4: Evaluacin de la formacin

10. Qu mtodo puede acelerar el acceso de lectura a una tabla de base de datos?
Seleccione la respuesta correcta.

X A Tablas en memorias intermedias

X B ndices de tabla

X C Breves intervalos de sincronizacin

Copyright . Reservados todos los derechos. 109


Captulo 4

Respuestas a la Evaluacin de la formacin

1. Un ndice se puede interpretar como una copia de una tabla de base de datos reducida a
ciertos campos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Qu ndice identifica de manera nica a cada registro de la tabla?


Seleccione las respuestas correctas.

X A ndice secundario nico

X B ndice primario

X C ndice secundario no nico

3. Si se accede con frecuencia a una tabla grande, hasta el punto de que no se puede usar el
ndice primario, cree ndices secundarios para la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. El _____________ decide qu ndice de tabla utiliza el sistema de base de datos para


acceder a los registros de datos.
Seleccione la respuesta correcta.

X A optimizador de base de datos

X B tabla de base de datos

X C tablas en memorias intermedias

110 Copyright . Reservados todos los derechos.


Captulo 4: Respuestas a la Evaluacin de la formacin

5. Almacenar una tabla en la memoria intermedia mejora el rendimiento cuando se leen los
registros de la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. La grabacin genrica en memoria intermedia se recomienda especialmente en el caso de


tablas grandes en las que solo se accede reiteradamente a algunos pocos registros
mediante SELECT SINGLE.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. En la grabacin genrica en memoria intermedia, la clave genrica es la parte izquierda de


la clave primaria de la tabla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Se recomienda la grabacin _____________ en memoria intermedia para las tablas que


acceden a menudo a registros que no existen.
Seleccione la respuesta correcta.

X A Completa

X B Genrica

X C De registro individual

9. Si hubiera que sincronizar las memorias intermedias de inmediato despus de cada


modificacin, cada servidor debera informar a todos los dems servidores de cada
modificacin en una tabla almacenada en la memoria intermedia a travs de la red. Esto
repercutira negativamente en el rendimiento.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 111


Captulo 4: Respuestas a la Evaluacin de la formacin

10. Qu mtodo puede acelerar el acceso de lectura a una tabla de base de datos?
Seleccione la respuesta correcta.

X A Tablas en memorias intermedias

X B ndices de tabla

X C Breves intervalos de sincronizacin

112 Copyright . Reservados todos los derechos.


CAPTULO 5 Verificaciones de entrada

Leccin 1
Trabajar con valores fijos 114
Ejercicio 8: Crear valores fijos 117

Leccin 2
Definir claves externas 120
Ejercicio 9: Asegurar la consistencia de datos por medio de verificaciones de entrada 129

Leccin 3
Trabajar con tablas de texto 139
Ejercicio 10: Crear una tabla de texto 141

OBJETIVOS DEL CAPTULO

Crear valores fijos para un dominio


Asegurar la consistencia de datos por medio de claves externas
Trabajar con tablas de texto

Copyright . Reservados todos los derechos. 113


Captulo 5
Leccin 1
Trabajar con valores fijos

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear y trabajar con valores fijos.

Ejemplo empresarial
Cuando se introducen valores en la aplicacin, se deberan realizar verificaciones adicionales
en las pantallas sin necesidad de cdigos ABAP adicionales. Por este motivo, se requieren los
siguientes conocimientos:
Comprender cmo crear y usar valores fijos
Comprender cmo usar las claves externas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Crear valores fijos para un dominio

Valores fijos

Figura 43: Valores fijos

Un dominio describe el rango de valores de un campo especificando el tipo de datos y la


longitud de los campos. Si slo se permite un conjunto limitado de valores, se pueden definir
como valores fijos.

114 Copyright . Reservados todos los derechos.


Leccin: Trabajar con valores fijos

Puede definir el rango de valores del dominio especificando valores fijos. Los valores fijos se
usan como ayuda sobre valores (F4) y validacin de entradas para los campos en la pantalla.
Los valores fijos se pueden mostrar en una lista por separado o se pueden definir como
intervalo.

Copyright . Reservados todos los derechos. 115


Captulo 5: Verificaciones de entrada

116 Copyright . Reservados todos los derechos.


Captulo 5
Ejercicio 8
Crear valores fijos

Ejemplo empresarial
Cuando ingresa o cambia los datos maestros del empleado, solo se deben permitir las reas
vlidas.
Los empleados de las compaas areas se dividen en personal de administracin (A),
personal de vuelo (F) y personal de servicio (S). En consecuencia, estn asignados a las reas
de actividad A, F o S.
Es necesario ingresar los valores fijos para el personal de administracin, personal de vuelo y
personal de servicio y activar su dominio.

1. Actualice valores fijos en el dominio para el campo REA en ZEMPLOY##.

Consejo:
No ejecute ahora BC430_CHECK. Ms tarde, realizar una verificacin de este
ejercicio al final de la unidad, junto con otros ejercicios.

Copyright . Reservados todos los derechos. 117


Captulo 5
Solucin 8
Crear valores fijos

Ejemplo empresarial
Cuando ingresa o cambia los datos maestros del empleado, solo se deben permitir las reas
vlidas.
Los empleados de las compaas areas se dividen en personal de administracin (A),
personal de vuelo (F) y personal de servicio (S). En consecuencia, estn asignados a las reas
de actividad A, F o S.
Es necesario ingresar los valores fijos para el personal de administracin, personal de vuelo y
personal de servicio y activar su dominio.

1. Actualice valores fijos en el dominio para el campo REA en ZEMPLOY##.


a) Vaya desde la pantalla de Actualizacin de tablas al elemento de datos
correspondiente, y de all al dominio.

b) Seleccione la etiqueta Rango de valores e introduzca los valores fijos siguientes:


Valor fijo Descripcin breve
A Personal de administracin
F Personal de vuelo
S Personal de servicio

c) Active su dominio.

Consejo:
No ejecute ahora BC430_CHECK. Ms tarde, realizar una verificacin de este
ejercicio al final de la unidad, junto con otros ejercicios.

118 Copyright . Reservados todos los derechos.


Leccin: Trabajar con valores fijos

RESUMEN DE LA LECCIN
Ahora podr:
Crear valores fijos para un dominio

Copyright . Reservados todos los derechos. 119


Captulo 5
Leccin 2
Definir claves externas

RESUMEN DE LA LECCIN
Esta leccin explica cmo definir y usar claves externas. Esta leccin tambin demuestra
cmo las claves externas aseguran la consistencia de los datos por medio de verificaciones
de entradas.

Ejemplo empresarial
Debe asegurar la consistencia por medio de verificaciones de entradas. Por este motivo, se
requieren los siguientes conocimientos:
Comprender cmo definir y usar una clave externa

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Asegurar la consistencia de datos por medio de claves externas

Definicin de claves externas

Figura 44: Insercin de un registro de datos

Un cliente necesita reservar un vuelo con American Airlines. Este vuelo tiene el nmero 0017 y
se realizar el 22 de noviembre de 1997. La reserva se debera realizar en el mostrador 8. La
tabla SBOOK contiene todas las reservas de vuelos de las aerolneas. La tabla SCOUNTER
contiene todos los mostradores vlidos de las compaas areas. Si se realiza una entrada en

120 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

el campo COUNTER de la tabla SBOOK, el programa debe asegurarse de introducir solo


mostradores vlidos.

Violacin de la verificacin de clave externa

Figura 45: Violacin de la verificacin de clave externa

El vuelo no se puede reservar debido a que American Airlines (AA) no tiene un mostrador 8.
En el ejemplo no se ha seleccionado un registro de datos en la tabla SCOUNTER de las
entradas. La entrada de la tabla SBOOK es invlida.
En el Dictionary ABAP, estas relaciones entre dos tablas se denominan claves externas y se
deben definir explcitamente para los campos.
Las claves externas se utilizan para asegurar la consistencia de los datos. Los datos
introducidos se comparan con datos existentes para asegurar que son consistentes.

Copyright . Reservados todos los derechos. 121


Captulo 5: Verificaciones de entrada

Campos de claves externas y campos de verificacin

Figura 46: Campos de claves externas y campos de verificacin

Por ejemplo, la tabla de clave externa es la tabla SBOOK, y la tabla de verificacin es la tabla
SCOUNTER. La clave externa garantiza que a las reservas solo se asignen mostradores
vlidos de compaas areas.
Cada mostrador se identifica con los siguientes campos clave en la tabla SCOUNTER:
MANDT
CARRID
COUNTNUM

A fin de definir la clave externa, estos campos se asignan a los campos de la tabla de claves
externas (campos de clave externa) con que se introduce la entrada que se debe verificar en
la pantalla. MANDT, CARRID y COUNTER son los campos de la tabla SBOOK. El sistema
acepta las entradas si los campos clave representan un mostrador vlido.
La clave externa se define para el campo SBOOK-COUNTER. Por lo tanto, el campo COUNTER
se denomina campo de verificacin de la clave externa.
Se ha definido una clave externa para el campo COUNTER, tabla SBOOK, que da lugar a la
siguiente asignacin de campos:

Tabla de verificacin Tabla de claves externas


SCOUNTER-CLIENT SBOOK-MANDT
SCOUNTER-CARRID SBOOK-CARRID
SCOUNTER-COUNTNUM SBOOK-COUNTER

122 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

Usar claves externas

Figura 47: Consistencia de datos mediante claves externas

Una combinacin de campos de una tabla se denomina clave externa si esta combinacin de
campos es la clave primaria de otra tabla.
Una clave externa enlaza dos tablas.
La tabla de verificacin es la tabla cuyos campos clave se verifican. Esta tabla se conoce
tambin como tabla de referencia.
El campo de la tabla de claves externas que se debe verificar se conoce como campo de
verificacin.
El sistema verifica las claves externas solo durante la ayuda para entradas de pantalla y la
ayuda para valores de pantalla. A diferencia de ello, los programas ABAP pueden modificar el
contenido de la tabla de base de datos ignorando las claves externas. Por ejemplo, se debe
realizar una nueva entrada en la tabla SPFLI (horario de vuelos). Se verifica si la compaa
area introducida est almacenada en la tabla SCARR (compaa area) para el campo SPFLI-
CARRID. El registro solo se copia en la tabla SPFLI (tabla de claves externas) en caso
afirmativo. Por ejemplo, se ha definido una clave externa para el campo SPFLI-CARRID
(campo de verificacin), lo que significa que se verifica este campo. La tabla de verificacin
correspondiente es la tabla SCARR con los campos clave primarios CLIENT y CARRID.

Copyright . Reservados todos los derechos. 123


Captulo 5: Verificaciones de entrada

Definiciones y dominios de clave externa

Figura 48: Definiciones y dominios de clave externa

En el Dictionary ABAP, se necesita el mismo dominio para el campo de verificacin y el campo


clave de referencia de la tabla de verificacin, a fin de no comparar campos con tipos de datos
o longitudes de campo distintos. Es esencial que el dominio sea el mismo. Se pueden usar
elementos de datos distintos, pero deben hacer referencia al mismo dominio. El requisito de
que el dominio sea el mismo solo es vlido para el campo de verificacin. Para los dems
campos de clave externa, basta si el tipo de datos y la longitud de campo son iguales. No
obstante, debera intentar que el dominio fuera el mismo. En este caso, la clave externa se
mantendr consistente si se modifica la longitud del campo, porque se modificarn los dos
campos correspondientes. Si los dominios son distintos, la clave externa sera inconsistente
si, por ejemplo, se modificara la longitud de campo.

124 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

Tabla de valores

Figura 49: Tabla de valores

Si el dominio del campo de verificacin tiene una tabla de valores, puede hacer que el sistema
haga una propuesta con la tabla de valores como tabla de verificacin. En este caso, se crea
una propuesta para la asignacin de campo en la clave externa.
Especificar una tabla de valores no genera automticamente la ayuda para valores y la
validacin para entradas. Para que la ayuda para valores y la validacin para entradas estn
disponibles, tambin se debe definir una clave externa adecuada. El sistema utiliza la tabla de
valores del dominio para crear propuestas automticas que puedan definir claves externas.

Copyright . Reservados todos los derechos. 125


Captulo 5: Verificaciones de entrada

La relacin entre la tabla de verificacin y la tabla de valores

Figura 50: La relacin entre la tabla de verificacin y la tabla de valores

Si la reutilizacin de los dominios se inserta en puntos inadecuados, la propuesta podra ser


inapropiada para la tabla de verificacin. En el ejemplo anterior, existe un campo clave
primario en varias tablas que se basa en el mismo dominio que el campo de verificacin. La
propuesta del sistema ser la tabla de valores del dominio.

En el ejemplo de la definicin de claves externas para el campo SBOOK-AGENCYNUM, la


propuesta del sistema se basa en la tabla de valores SBUSPART en la definicin del
dominio:

Asignacin de campo
Tabla de verificacin Tabla de claves externas
SBUSPART-CLIENT SBOOK-MANDT
SBUSPART-BUSPARTNUM SBOOK-AGENCYNUM

La tabla SBUSPART contiene todos los interlocutores comerciales de las compaas areas.
Sin embargo, solo para las agencias es necesario el campo SBOOK-AGENCYNUM. Por lo
tanto, la propuesta del sistema es incorrecta. La tabla de verificacin correcta es la tabla
STRAVELAG. La tabla STRAVELAG es un subconjunto de la tabla SBUSPART segn su
definicin de clave externa del campo AGENCYNUM.
Sobrescriba la propuesta del sistema con la tabla STRAVELAG. Si no sabe cul es la tabla de
verificacin correcta, el sistema puede ayudarle con una lista de todas las tablas en cuestin.
Esto incluye todas las tablas con un campo clave cuyo dominio es S_ BUSPARNUM.

126 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

Atributos semnticos

Figura 51: Atributos semnticos

La cardinalidad describe la relacin de la clave externa con la cantidad de registros de la tabla


de verificacin asignados a registros de la tabla de claves externas. La cardinalidad se define
siempre desde la perspectiva de la tabla de verificacin.

Tipos de campos de clave externa


El tipo de campo de clave externa define si el campo identifica o no una entrada de tabla. Por
eso, puede que los campos de clave externa se definan como campos clave. Estos campos de
clave externa se pueden definir como campos clave de una tabla de texto.

Las siguientes opciones existen para el tipo de campos de clave externa:


Sin especificar
No se puede dar informacin sobre los tipos de campo de clave externa.
No campos clave/candidatos
Los campos de clave externa no son campos clave primarios de la tabla de claves externas
ni identifican de forma unvoca un registro de la tabla de claves externas (candidatos
clave). Por lo tanto, los campos de clave externa no identifican (o lo hacen parcialmente) la
tabla de claves externas.
Campos clave/candidatos
Los campos de clave externa son campos clave primarios de la tabla de claves externas o
identifican de forma unvoca un registro de la tabla de claves externas (candidatos clave).
Por lo tanto, los campos de clave externa identifican (o lo hacen parcialmente) la tabla de
claves externas.
Campos clave de una tabla de texto

Copyright . Reservados todos los derechos. 127


Captulo 5: Verificaciones de entrada

La tabla de claves externas es una tabla de texto en la tabla de verificacin. La clave de la


tabla de claves externas es idntica a la clave de la tabla de texto pero tiene un campo
adicional de clave de idioma. Se trata de un caso especial de la categora Campos clave/
candidatos.

128 Copyright . Reservados todos los derechos.


Captulo 5
Ejercicio 9
Asegurar la consistencia de datos por medio
de verificaciones de entrada

Ejemplo empresarial
Defina claves externas para las tablas ZEMPLOY## y ZDEPMENT## y ZFLCREW##. Use las
tablas del modelo de vuelo y sus propias tablas para definir estas claves externas.
Tarea 1
Defina claves externas adecuadas para las tablas ZEMPLOY##, ZDEPMENT## y
ZFLCREW##. Use las tablas del modelo de vuelo, las tablas T000 (mandante) y SCURX
(cdigo de moneda), as como sus tablas para definir las claves externas. Para actualizar las
claves externas individuales, abra la tabla correspondiente en modo de actualizacin.

1. Cree una clave externa para el campo ZEMPLOY##-CLIENT.

2. Cree una clave externa para el campo ZEMPLOY##-CARRIER.

Nota:
Puesto que usa el dominio S_CARR_ID para el campo Compaa area en
ZEMPLOY##, puede usar la tabla de valores SCARR para la definicin de clave
externa.

3. Cree una clave externa para el campo ZEMPLOY##-DEPARTMENT de la siguiente


manera:
Introduzca la tabla de valores ZDEPMENT## en el dominio para el campo DEPARTMENT y
active el dominio.

Nota:
Para obtener una propuesta para la definicin de clave externa, modifique el
dominio del campo DEPARTMENT en ZEMPLOY##. Esto no es imprescindible
para definiciones de claves externas posteriores, pero facilita la definicin.

4. Cree una clave externa para el campo ZEMPLOY##-CURRENCY.

Nota:
Puesto que usa el dominio S_CURR para el campo ZEMPLOY##-CURRENCY,
puede usar la tabla de valores SCURX para la definicin de clave externa.

5. Cree una clave externa para el campo ZDEPMENT##-CLIENT.

6. Cree la clave externa para el campo ZDEPMENT##-CARRIER.

Copyright . Reservados todos los derechos. 129


Captulo 5: Verificaciones de entrada

7. Cree una clave externa para el campo ZFLCREW##-EMP_NUM.

8. Actualice algunos datos para la tabla ZEMPLOY## y pruebe el efecto de las relaciones de
su clave externa.

Tarea 2
Algunos empleados de las compaas areas trabajan en agencias de viajes donde venden los
vuelos de sus compaas. Ample la tabla ZEMPLOY## con un campo que documente la
agencia de viajes en la que trabaja cada empleado. Ample la tabla ZEMPLOY## como
corresponda y defina la relacin de la clave externa.

Consejo:
La tabla con todas las agencias de viajes se llama STRAVELAG.

1. Cree un nuevo campo AGENCY en la tabla ZEMPLOY##.

2. Defina una clave externa apropiada para el nuevo campo.

Tarea 3
Ample la tabla ZDEPMENT## con otro campo. Cada departamento de una compaa area
tiene un jefe de departamento. La asignacin entre el departamento y el jefe del
departamento se debera establecer en el modelo de vuelo.

1. Ample la tabla ZDEPMENT## para incluir el campo DEPHEAD .

Nota:
En nuestro modelo, el nmero de personal identifica a la persona. En
consecuencia, el nuevo campo que se debe aadir a la tabla ZDEPMENT##
debe contener nmeros de personal. El campo debera hacer referencia
tambin al dominio para nmeros de personal.
Puesto que la persona que se debe gestionar en este caso desempea un rol
especial, debera crear un nuevo elemento de datos y no utilizar el que ya haba
creado para el nmero de personal.

Nota:
Use el concepto de domino de dos niveles.

2. Defina una clave externa adecuada para este campo.

Consejo:
No ejecute ahora BC430_CHECK. Ms tarde, realizar una verificacin de este
ejercicio al final de la unidad, junto con otros ejercicios.

130 Copyright . Reservados todos los derechos.


Captulo 5
Solucin 9
Asegurar la consistencia de datos por medio
de verificaciones de entrada

Ejemplo empresarial
Defina claves externas para las tablas ZEMPLOY## y ZDEPMENT## y ZFLCREW##. Use las
tablas del modelo de vuelo y sus propias tablas para definir estas claves externas.
Tarea 1
Defina claves externas adecuadas para las tablas ZEMPLOY##, ZDEPMENT## y
ZFLCREW##. Use las tablas del modelo de vuelo, las tablas T000 (mandante) y SCURX
(cdigo de moneda), as como sus tablas para definir las claves externas. Para actualizar las
claves externas individuales, abra la tabla correspondiente en modo de actualizacin.

1. Cree una clave externa para el campo ZEMPLOY##-CLIENT.


a) Site el cursor en el campo CLIENT en ZEMPLOY##. Seleccione el pulsador Claves
externas .
Puesto que usa el dominio CLIENT para el campo CLIENT en ZEMPLOY##, el sistema
propone la tabla de valores T000 como tabla de verificacin.

b) Permita al sistema proponer una definicin de clave externa. Verifique la propuesta.


Los siguientes campos de la tabla de verificacin T000 deben reasignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
CLIENTE ZEMPLOY## CLIENTE

c) Introduzca un texto breve y defina los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de Campos clave/candidatos
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

2. Cree una clave externa para el campo ZEMPLOY##-CARRIER.

Nota:
Puesto que usa el dominio S_CARR_ID para el campo Compaa area en
ZEMPLOY##, puede usar la tabla de valores SCARR para la definicin de clave
externa.

Copyright . Reservados todos los derechos. 131


Captulo 5: Verificaciones de entrada

a) Site el cursor en el campo CARRIER. Seleccione el pulsador Claves externas .

b) Permita al sistema proponer una definicin de clave externa. Verifique la propuesta.


Los siguientes campos de la tabla de verificacin SCARR deben reasignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
MANDT ZEMPLOY## CLIENT
CARRID ZEMPLOY## CARRIER

c) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de Campos clave/candidatos
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

3. Cree una clave externa para el campo ZEMPLOY##-DEPARTMENT de la siguiente


manera:
Introduzca la tabla de valores ZDEPMENT## en el dominio para el campo DEPARTMENT y
active el dominio.

Nota:
Para obtener una propuesta para la definicin de clave externa, modifique el
dominio del campo DEPARTMENT en ZEMPLOY##. Esto no es imprescindible
para definiciones de claves externas posteriores, pero facilita la definicin.

a) Site el cursor en el campo DEPARTMENT en ZEMPLOY##. Seleccione el pulsador


Claves externas.

Nota:
Puesto que usa el dominio del campo ZDEPMENT##-DEPARTMENT para el
campo ZEMPLOY##-DEPARTMENT, puede usar la tabla de valores
ZDEPMENT## para la definicin de la clave externa.

b) Haga que el sistema proponga la definicin de clave externa. Verifique la propuesta. En


la tabla de verificacin ZDEPMENT##, se deben asignar los siguientes campos:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
MANDT ZEMPLOY## CLIENT
CARRID ZEMPLOY## CARRIER
DEPARTMENT ZEMPLOY## DEPARTMENT

132 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

c) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de No campos clave/candidatos
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

4. Cree una clave externa para el campo ZEMPLOY##-CURRENCY.

Nota:
Puesto que usa el dominio S_CURR para el campo ZEMPLOY##-CURRENCY,
puede usar la tabla de valores SCURX para la definicin de clave externa.

a) Site el cursor en el campo ZEMPLOY##-CURRENCY . Seleccione el pulsador Claves


externas .

b) El sistema propone una definicin de clave externa. Verifique la propuesta. Los


siguientes campos de la tabla de verificacin SCURX deben reasignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
CURRKEY ZEMPLOY## CURRENCY

c) Introduzca un texto breve y defina los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de No campos clave/candidatos
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

5. Cree una clave externa para el campo ZDEPMENT##-CLIENT.


a) Cree la clave externa para el campo ZEMPLOY00-CLIENT.

6. Cree la clave externa para el campo ZDEPMENT##-CARRIER.


a) Observe la clave externa para el campo ZEMPLOY##-CARRIER.

7. Cree una clave externa para el campo ZFLCREW##-EMP_NUM.


a) Site el cursor en el campo EMP_NUM en ZFLCREW##. Seleccione el pulsador Claves
externas .

Copyright . Reservados todos los derechos. 133


Captulo 5: Verificaciones de entrada

Nota:
La tabla de verificacin es la tabla ZEMPLOY## . Si la ha almacenado como
tabla de valores en el dominio para el nmero de empleado, se crear la
propuesta correspondiente. En caso contrario, deber introducirla
personalmente.

b) Copie la propuesta del sistema para la asignacin de campo.

c) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de Campos clave/candidatos
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

8. Actualice algunos datos para la tabla ZEMPLOY## y pruebe el efecto de las relaciones de
su clave externa.
a) Abra la tabla ZEMPLOY## en modo de actualizacin y seleccione
Utilidades Contenido de tabla Crear entradas.

b) Introduzca los datos y verifique que las funciones de la clave externa funcionen
correctamente.

Tarea 2
Algunos empleados de las compaas areas trabajan en agencias de viajes donde venden los
vuelos de sus compaas. Ample la tabla ZEMPLOY## con un campo que documente la
agencia de viajes en la que trabaja cada empleado. Ample la tabla ZEMPLOY## como
corresponda y defina la relacin de la clave externa.

Consejo:
La tabla con todas las agencias de viajes se llama STRAVELAG.

1. Cree un nuevo campo AGENCY en la tabla ZEMPLOY##.


a) Abra la tabla ZEMPLOY## en modo de actualizacin. Introduzca un nuevo campo
AGENCY en la lista de campos (seleccione Nuevas filas).

Nota:
En la definicin de la tabla STRAVELAG puede ver que un elemento de
datos adecuado se llama S_AGNCYNUM.

b) Asigne el elemento de datos S_AGNCYNUM a su nuevo campo ZEMPLOY##-AGENCY.

2. Defina una clave externa apropiada para el nuevo campo.

134 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

a) Site el cursor en el campo AGENCY y haga que el sistema proponga la definicin de la


clave externa.

b) Verifique la propuesta. La tabla de verificacin es SBUSPART. Esta tabla de


verificacin no es correcta, porque contiene todos los interlocutores comerciales de
las compaas areas, no solo las agencias.

c) La tabla de verificacin correcta es STRAVELAG. STRAVELAG contiene las agencias.


Abra la definicin de tabla de la tabla STRAVELAG en otra ventana y compare la
definicin de tabla con la de clave externa.

d) En la definicin de la clave externa para ZEMPLOY##-AGENCY, sobrescriba la entrada


SBUSBART en el campo de entrada y verifique la tabla con STRAVELAG.

e) Seleccione Copiar. El sistema reconoce la modificacin en la tabla de verificacin y


propone crear una propuesta. Seleccione la propuesta. Los siguientes campos de la
tabla de verificacin STRAVELAG deben reasignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
MANDT ZEMPLOY## CLIENT
AGENCYNUM ZEMPLOY## AGENCY

f) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de No campos clave/candidatos
clave externa
Cardinalidad 1:CN

g) Grabe su clave externa.

h) Ahora active la tabla.

i) Abra la tabla ZEMPLOYEE y seleccione Utilidades Contenido de tabla Crear


entradas. Verifique su clave externa.

Tarea 3
Ample la tabla ZDEPMENT## con otro campo. Cada departamento de una compaa area
tiene un jefe de departamento. La asignacin entre el departamento y el jefe del
departamento se debera establecer en el modelo de vuelo.

1. Ample la tabla ZDEPMENT## para incluir el campo DEPHEAD .

Copyright . Reservados todos los derechos. 135


Captulo 5: Verificaciones de entrada

Nota:
En nuestro modelo, el nmero de personal identifica a la persona. En
consecuencia, el nuevo campo que se debe aadir a la tabla ZDEPMENT##
debe contener nmeros de personal. El campo debera hacer referencia
tambin al dominio para nmeros de personal.
Puesto que la persona que se debe gestionar en este caso desempea un rol
especial, debera crear un nuevo elemento de datos y no utilizar el que ya haba
creado para el nmero de personal.

Nota:
Use el concepto de domino de dos niveles.

a) Abra la tabla ZDEPMENT## en modo de actualizacin. Seleccione la etiqueta Campos.

b) Seleccione filas nuevas.

c) Introduzca el nuevo campo DEPHEAD directamente despus de los campos existentes


introduciendo un nombre de campo adecuado en la primera columna e introduciendo
un nombre para el elemento de datos que se va a crear en la columna Tipo de campo.

d) Grabe la definicin de tabla.

e) Haga doble clic en el nombre del nuevo elemento de datos que se debe crear.
Confirme que desea crear un elemento de datos.

f) Introduzca un texto breve para el elemento de datos. Introduzca el nombre de dominio


que ya ha creado para el nmero de personal en el campo Dominio.

g) En la etiqueta Denominador de campo introduzca algunos textos de etiqueta.

h) Active el elemento de datos. Regrese a la pantalla de actualizacin de la tabla


ZDEPMENT##.

i) Cree la clave externa para el nuevo campo de la manera habitual. La tabla de


verificacin es la tabla ZEMPLOY##.

Nota:
Si ha almacenado esta tabla como tabla de valores para el dominio para el
nmero de personal, el sistema propone la tabla automticamente. Si no la
guard como tabla de valores para el dominio, introduzca la tabla
manualmente.

j) Acepte la propuesta del sistema.

k) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de No campos clave/candidatos
clave externa

136 Copyright . Reservados todos los derechos.


Leccin: Definir claves externas

Nombre del campo Valor


Cardinalidad 1:CN

l) Ahora active la tabla.

2. Defina una clave externa adecuada para este campo.


a) Site el cursor en el campo DEPHEAD y haga que el sistema proponga la definicin de
la clave externa.

Consejo:
Si no introducido una tabla de valor en su dominio para nmeros de
personal, debe introducir la tabla de verificacin manualmente.

b) Verifique la propuesta. Asegrese de que la tabla de verificacin es la tabla


ZEMPLOY##. Los siguientes campos de la tabla de verificacin deben asignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
CLIENTE ZDEPMENT## CLIENTE

CARRIED ZDEPMENT## CARRIED


EMPNUM ZDEPMENT## DEPHEAD

c) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor

Tipo de campo de No campos clave/


clave externa candidatos
Cardinalidad 1:CN

d) Active la tabla.

e) Abra la tabla ZDEPMENT## y seleccione Utilidades -> Contenido de tabla -> Crear
entradas. Verifique su clave externa.

Consejo:
No ejecute ahora BC430_CHECK. Ms tarde, realizar una verificacin de este
ejercicio al final de la unidad, junto con otros ejercicios.

Copyright . Reservados todos los derechos. 137


Captulo 5: Verificaciones de entrada

RESUMEN DE LA LECCIN
Ahora podr:
Asegurar la consistencia de datos por medio de claves externas

138 Copyright . Reservados todos los derechos.


Captulo 5
Leccin 3
Trabajar con tablas de texto

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear y trabajar con tablas de texto.

Ejemplo empresarial
Debe trabajar con tablas de texto. Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo crear una tabla de texto
Comprender cmo definir una clave externa de texto

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Trabajar con tablas de texto

Tabla de texto

Figura 52: Tabla de texto

La tabla SMEAL contiene las comidas servidas a los pasajeros durante un vuelo. La tabla
SMEALT actualiza las descripciones de las comidas.
La tabla SMEALT es la tabla de texto de la tabla SMEAL. La clave para SMEALT consiste en la
clave de SMEAL y un campo de clave de idioma adicional (campo con tipo de datos LANG).

Copyright . Reservados todos los derechos. 139


Captulo 5: Verificaciones de entrada

La tabla SMEALT puede contener texto explicativo en varios idiomas para cada entrada de
clave de SMEAL.
Para vincular las entradas de clave con el texto, la tabla de texto SMEALT debe estar
vinculada a la tabla SMEAL por medio de una clave externa. Esto se realiza seleccionando la
opcin Campos clave de una tabla de texto para el tipo de los campos de clave externa.
La relacin de clave externa se define de SMEALT a SMEAL.
Para cada tabla, puede definir una clave externa del tipo solo "tabla de texto". Esto quiere
decir que cada tabla puede tener asignada solo una tabla de texto.

140 Copyright . Reservados todos los derechos.


Captulo 5
Ejercicio 10
Crear una tabla de texto

Ejemplo empresarial
Necesita crear una tabla de texto.
TAREA 1
Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##.

1. Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##, copie los campos
clave de la tabla ZDEPMENT## y aada dos nuevos campos para la clave de idioma y el
texto de descripcin (nombres sugeridos: LANGUAGE y DESCR).

Nota:
Esto permite a los empleados entender el ID de departamento de la compaa
area en todos los pases.
Para la definicin de campo, use los elementos de datos SPRAS (tipo de datos
LANG) y S_TEXT (tipo de datos CHAR, 40).

2. Defina una clave externa para el campo DEPARTMENT en la tabla ZDEPMENTT##.

Nota:
Las claves externas para los campos CLIENT y CARRIER de la tabla
ZDEPMENTT## ya se han definido correctamente porque se los copi.

3. Defina una clave externa para el campo LANGUAGE en la tabla ZDEPMENTT##.

Nota:
Puesto que usa el dominio SPRAS para el campo ZDEPMENTT##-Language,
puede usar la tabla de valores T002 para definir la clave externa.

4. Ejecute el programa B430_CHECK en la transaccin SE38 para probar los tres ejercicios
de la unidad.

Copyright . Reservados todos los derechos. 141


Captulo 5
Solucin 10
Crear una tabla de texto

Ejemplo empresarial
Necesita crear una tabla de texto.
TAREA 1
Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##.

1. Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##, copie los campos
clave de la tabla ZDEPMENT## y aada dos nuevos campos para la clave de idioma y el
texto de descripcin (nombres sugeridos: LANGUAGE y DESCR).

Nota:
Esto permite a los empleados entender el ID de departamento de la compaa
area en todos los pases.
Para la definicin de campo, use los elementos de datos SPRAS (tipo de datos
LANG) y S_TEXT (tipo de datos CHAR, 40).

a) Copie la tabla ZDEPMENT## en la tabla ZDEPMENTT##.

b) Vaya a la actualizacin de campo para la tabla ZDEPMENTT##.


Borre todos los campos que no son campos clave. Cree los nuevos campos siguientes:
Campo Elemento de Tipo de datos Longitud Descripcin
datos breve
LANGUAGE SPRAS LANG Idioma
DESCR S_TEXT CHAR 40 Descripcin

Nota:
El campo ZDEPMENTT##-LANGUAGE debe ser un campo clave.

2. Defina una clave externa para el campo DEPARTMENT en la tabla ZDEPMENTT##.

Nota:
Las claves externas para los campos CLIENT y CARRIER de la tabla
ZDEPMENTT## ya se han definido correctamente porque se los copi.

142 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas de texto

a) Site el cursor en el campo DEPARTMENT en la tabla ZDEPMENTT##. Seleccione el


pulsador Claves externas.

Nota:
Puesto que usa el dominio del campo ZDEPMENT##-DEPARTMENT para el
campo ZDEPMENTT##-DEPARTMENT, puede usar la tabla de valores
ZDEPMENT## para definir la clave externa.

b) Haga que el sistema proponga la definicin de clave externa. Verifique la propuesta.


Los siguientes campos de la tabla de verificacin ZDEPMENT## deben asignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
CLIENT ZDEPMENT## CLIENT
CARRID ZDEPMENT## CARRID
DEPARTMENT ZDEPMENT## DEPARTMENT

c) Introduzca un texto breve y determine los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de Campos clave de una tabla de texto
clave externa
Cardinalidad 1:CN

d) Grabe su clave externa.

3. Defina una clave externa para el campo LANGUAGE en la tabla ZDEPMENTT##.

Nota:
Puesto que usa el dominio SPRAS para el campo ZDEPMENTT##-Language,
puede usar la tabla de valores T002 para definir la clave externa.

a) Site el cursor en el campo ZDEPMENTT##-Language. Seleccione el pulsador Claves


externas.

b) Haga que el sistema proponga una definicin de clave externa. Verifique la propuesta.
Los siguientes campos de la tabla de verificacin T002 deben asignarse:
Campo de tabla de Tabla de claves externas Campo de
verificacin clave externa
SPRAS ZDEPMENTT## LANGUAGE

c) Introduzca un texto breve y defina los atributos semnticos del modo siguiente:
Nombre del campo Valor
Tipo de campo de Campos clave/candidatos
clave externa

Copyright . Reservados todos los derechos. 143


Captulo 5: Verificaciones de entrada

Nombre del campo Valor


Cardinalidad 1:CN

d) Grabe su clave externa.

e) Ahora active la tabla.

4. Ejecute el programa B430_CHECK en la transaccin SE38 para probar los tres ejercicios
de la unidad.

144 Copyright . Reservados todos los derechos.


Leccin: Trabajar con tablas de texto

RESUMEN DE LA LECCIN
Ahora podr:
Trabajar con tablas de texto

Copyright . Reservados todos los derechos. 145


Captulo 5: Verificaciones de entrada

146 Copyright . Reservados todos los derechos.


Captulo 5

Evaluacin de la formacin

1. La validacin de los campos en pantalla no ocurre sino hasta que se define una clave
externa o se proporcionan valores fijos en la definicin del dominio.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Si hace referencia a un dominio con una tabla de valores en un campo y define una clave
externa en el nivel de campo, no habr verificacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Un dominio describe el rango general de valores de un campo especificando su


___________ y la longitud de los campos.
Seleccione la respuesta correcta.

X A valor fijo

X B tipo de datos

X C rango de valores del campo

4. Las ________________ se utilizan para asegurar la consistencia de los datos en las


diferentes tablas.
Seleccione la respuesta correcta.

X A Claves primarias

X B Claves externas

X C Claves secundarias

Copyright . Reservados todos los derechos. 147


Captulo 5: Evaluacin de la formacin

5. El campo de la tabla de claves externas que se debe verificar se conoce como


________________.
Seleccione la respuesta correcta.

X A campo de verificacin

X B campo de referencia

X C clave externa

6. El usuario introduce datos en un campo de dynpro con clave externa asignada. Esta
entrada debe ser coherente con los campos clave de la tabla de verificacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Una tabla de texto tiene todos los campos clave de la tabla normal junto con una clave
extra, que es el campo para la clave de idioma.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Slo se puede vincular una tabla de texto a una tabla.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

148 Copyright . Reservados todos los derechos.


Captulo 5

Respuestas a la Evaluacin de la formacin

1. La validacin de los campos en pantalla no ocurre sino hasta que se define una clave
externa o se proporcionan valores fijos en la definicin del dominio.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Es correcto. Siempre ocurre una validacin tcnica (por ejemplo, fecha vlida, nmero
vlido, etc.). Adems, siempre es posible implementar una verificacin manual.

2. Si hace referencia a un dominio con una tabla de valores en un campo y define una clave
externa en el nivel de campo, no habr verificacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Es correcto. Si hace referencia a un dominio con una tabla de valores en un campo y


define una clave externa en el nivel de campo, habr una verificacin.

3. Un dominio describe el rango general de valores de un campo especificando su


___________ y la longitud de los campos.
Seleccione la respuesta correcta.

X A valor fijo

X B tipo de datos

X C rango de valores del campo

Copyright . Reservados todos los derechos. 149


Captulo 5: Respuestas a la Evaluacin de la formacin

4. Las ________________ se utilizan para asegurar la consistencia de los datos en las


diferentes tablas.
Seleccione la respuesta correcta.

X A Claves primarias

X B Claves externas

X C Claves secundarias

5. El campo de la tabla de claves externas que se debe verificar se conoce como


________________.
Seleccione la respuesta correcta.

X A campo de verificacin

X B campo de referencia

X C clave externa

6. El usuario introduce datos en un campo de dynpro con clave externa asignada. Esta
entrada debe ser coherente con los campos clave de la tabla de verificacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Una tabla de texto tiene todos los campos clave de la tabla normal junto con una clave
extra, que es el campo para la clave de idioma.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Slo se puede vincular una tabla de texto a una tabla.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

150 Copyright . Reservados todos los derechos.


CAPTULO 6 Dependencias de objetos de
Dictionary

Leccin 1
Diferenciar entre objetos activos e inactivos del diccionario 152
Ejercicio 11: Diferenciar entre objetos activos e inactivos del diccionario 155

Leccin 2
Gestionar la referencia de utilizacin 158
Ejercicio 12: Explorar las dependencias de los objetos de Dictionary ABAP 161

OBJETIVOS DEL CAPTULO

Diferenciar entre objetos activos e inactivos del diccionario


Gestionar referencia de utilizacin

Copyright . Reservados todos los derechos. 151


Captulo 6
Leccin 1
Diferenciar entre objetos activos e inactivos
del diccionario

RESUMEN DE LA LECCIN
Esta leccin permite distinguir entre objetos activos e inactivos de Dictionary.

Ejemplo empresarial
Determinadas dependencias entre los objetos de Dictionary se hacen efectivas cuando se
modifican los objetos. Por ejemplo, si modifica un dominio tcnico, puede que haya que
convertir una o varias tablas de base de datos (esto puede llevar mucho tiempo). Por este
motivo, se requieren los siguientes conocimientos:
Comprender la versin activa y la inactiva
Comprender los objetos en tiempo de ejecucin
Comprender la referencia de utilizacin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Diferenciar entre objetos activos e inactivos del diccionario

152 Copyright . Reservados todos los derechos.


Leccin: Diferenciar entre objetos activos e inactivos del diccionario

Objetos activos e inactivos del diccionario

Figura 53: Versiones activa e inactiva

Durante el desarrollo, a veces es necesario cambiar un objeto (activo) que ya se encuentra en


uso en el sistema. Dichos cambios se realizan en el Dictionary ABAP al separarse las
versiones activa e inactiva.

Las diferencias bsicas entre la versin activa y la inactiva son:


Versin activa
La versin activa de un objeto de Dictionary ABAP es la versin a la que acceden los
componentes del entorno en tiempo de ejecucin (por ejemplo, procesador ABAP, interfaz
de base de datos). Esta versin no se modifica inicialmente.
Versin inactiva
Cuando se cambia un objeto activo, el sistema crea una versin inactiva que se puede
grabar sin verificar. No afecta al sistema en tiempo de ejecucin.

Al final del proceso de desarrollo, la versin inactiva puede pasar a ser la versin activa. Esto
se realiza por activacin. Primero se verifica la consistencia de la versin inactiva del objeto.
Si es consistente, la versin inactiva sustituye a la activa. A partir de ahora, el sistema en
tiempo de ejecucin utiliza la nueva versin activa.
El siguiente ejemplo muestra el proceso de activacin. Una estructura activa contiene tres
campos. Se aade un campo a esta estructura en el Dictionary ABAP. Despus de esta
accin, existe una versin activa con tres campos y una versin inactiva con cuatro campos.
Durante la activacin, la versin activa se sobrescribe con la versin inactiva. En
consecuencia, la versin inactiva se convierte en activa. Despus de la activacin, la versin
activa tiene cuatro campos.

Copyright . Reservados todos los derechos. 153


Captulo 6: Dependencias de objetos de Dictionary

Objetos en tiempo de ejecucin

Figura 54: Objetos en tiempo de ejecucin

La informacin sobre una estructura (o tabla) se distribuye en el Dictionary ABAP en


dominios, elementos de datos y la definicin de la estructura. El objeto en tiempo de
ejecucin combina esta informacin en una estructura con forma optimizada para acceder
desde programas ABAP. El objeto en tiempo de ejecucin se genera automticamente al
activar una estructura.
Los objetos en tiempo de ejecucin de las estructuras se graban en la memoria intermedia, de
modo que el sistema ABAP en tiempo de ejecucin puede acceder a esta informacin con
rapidez.

Los objetos en tiempo de ejecucin contienen la siguiente informacin:


Informacin sobre la estructura general, por ejemplo, cantidad de campos.
Informacin sobre campos de estructura individuales, tales como nombre de campo,
posicin del campo en la estructura, tipo de datos, longitud, cantidad de decimales, campo
de referencia, tabla de referencia, tabla de verificacin, rutina de conversin, etc.
Informacin que la interfaz de la base datos requiere para acceder a los datos de la tabla,
como dependencia de mandante, grabacin en memoria intermedia, campos clave, etc.

Los objetos en tiempo de ejecucin se crean para todos los objetos de Dictionary ABAP que
se pueden usar como tipos en programas ABAP. Estos objetos en tiempo de ejecucin son
elementos de datos, tipos de tablas, vistas, estructuras y tablas.

154 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 11
Diferenciar entre objetos activos e inactivos
del diccionario

Ejemplo empresarial
El log de modificaciones debera ser ms detallado. El log de modificaciones para las tablas
ZEMPLOY## y ZDEPMENT## no es bastante preciso. Adems de la persona que hizo la
ltima modificacin y la fecha de dicha modificacin, desea registrar la hora de la ltima
modificacin.
Ampliar las tablas ZEMPLOY## y ZDEPMENT## para incluir un campo ms.

1. Asegrese de insertar, con el menor esfuerzo, un campo adecuado para el log de


modificaciones en las tablas ZEMPLOY## y ZDEPMENT## . Use el nombre CHANGED_AT
para este nuevo campo y escrbalo con el elemento de datos S_TIME.

Nota:
Los campos del log de modificaciones se pueden encontrar en la estructura
Include, ZCHANGE##. Por lo tanto, el nuevo campo se debera insertar en esta
estructura. El campo se inserta automticamente en las tablas ZEMPLOY## y
ZDEPMENT## por medio del mecanismo Include.

2. Asegrese de que el campo est incluido en las tablas ZEMPLOY## y ZDEPMENT##.


Verifique el log de activacin de las tablas y las estructuras implicadas.

3. Ejecute el programa ZB430_CHECK para probar el ejercicio.

Copyright . Reservados todos los derechos. 155


Captulo 6
Solucin 11
Diferenciar entre objetos activos e inactivos
del diccionario

Ejemplo empresarial
El log de modificaciones debera ser ms detallado. El log de modificaciones para las tablas
ZEMPLOY## y ZDEPMENT## no es bastante preciso. Adems de la persona que hizo la
ltima modificacin y la fecha de dicha modificacin, desea registrar la hora de la ltima
modificacin.
Ampliar las tablas ZEMPLOY## y ZDEPMENT## para incluir un campo ms.

1. Asegrese de insertar, con el menor esfuerzo, un campo adecuado para el log de


modificaciones en las tablas ZEMPLOY## y ZDEPMENT## . Use el nombre CHANGED_AT
para este nuevo campo y escrbalo con el elemento de datos S_TIME.

Nota:
Los campos del log de modificaciones se pueden encontrar en la estructura
Include, ZCHANGE##. Por lo tanto, el nuevo campo se debera insertar en esta
estructura. El campo se inserta automticamente en las tablas ZEMPLOY## y
ZDEPMENT## por medio del mecanismo Include.

a) En la pantalla inicial del Dictionary ABAP, seleccione Tipo de datos e introduzca


ZCHANGE## en el campo correspondiente. Seleccione el pulsador Cambiar.

b) Marque la etiqueta Componentes. En la columna Componente introduzca el nombre


CHANGED_AT para el nuevo campo, y en la columna Tipo de componente, el elemento
de datos S_TIME .

c) Active la estructura.

2. Asegrese de que el campo est incluido en las tablas ZEMPLOY## y ZDEPMENT##.


Verifique el log de activacin de las tablas y las estructuras implicadas.
a) Seleccione Utilidades Log de activacin para buscar el log de activacin de la
estructura. En el log de activacin puede ver que las tablas ZEMPLOY## y
ZDEPMENT## estn activadas como objetos dependientes y se las ampli para incluir
el nuevo campo.

b) Abra la definicin de la tabla ZEMPLOY## o de la tabla ZDEPMENT## en modo de


visualizacin.

c) Seleccione Utilidades Contenido de tabla Crear entradas. Aqu puede ver que la
tabla se ha ampliado para incluir el campo correspondiente.

3. Ejecute el programa ZB430_CHECK para probar el ejercicio.

156 Copyright . Reservados todos los derechos.


Leccin: Diferenciar entre objetos activos e inactivos del diccionario

RESUMEN DE LA LECCIN
Ahora podr:
Diferenciar entre objetos activos e inactivos del diccionario

Copyright . Reservados todos los derechos. 157


Captulo 6
Leccin 2
Gestionar la referencia de utilizacin

RESUMEN DE LA LECCIN
Esta leccin describe el mecanismo para gestionar los objetos dependientes en Dictionary
ABAP. Tambin explica el sistema de informacin Repository y la referencia de utilizacin
para objetos de Dictionary ABAP.

Ejemplo empresarial
Debe averiguar qu objetos se relacionan con su objeto, tales como elementos de datos,
componentes de estructura y campos de tabla. Por este motivo, se requieren los siguientes
conocimientos:
Comprender cmo usar la referencia de actualizacin para los objetos de Dictionary
ABAP.
Comprender cmo usar el sistema de informacin Repository para los objetos de
Dictionary ABAP.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Gestionar referencia de utilizacin

La referencia de utilizacin

Figura 55: Referencia de utilizacin

158 Copyright . Reservados todos los derechos.


Leccin: Gestionar la referencia de utilizacin

Si se modifica un objeto ya activo, la modificacin puede repercutir en otros objetos que lo


usen directa o indirectamente. Los objetos que usan otro objeto directa o indirectamente se
llaman objetos dependientes. Algunos cambios pueden requerir que ajuste los objetos en
tiempo de ejecucin de estos objetos dependientes. Otros, puede que lo hagan inconsistente.
Cuando se activa un objeto, se determinan y activan (si es necesario) los objetos
dependientes. En este caso las versiones activas de los objetos dependientes se vuelven a
activar. Concretamente, no se modifican las versiones nuevas e inactivas de objetos que usan
el objeto modificado.
Cuando cambia el tipo de datos de un dominio y activa el dominio, por ejemplo, todos los
elementos de datos, las estructuras y las tablas relacionados a este dominio tambin se
activan automticamente.
De este modo se garantiza que todos los objetos en tiempo de ejecucin afectados se ajusten
a la informacin de tipo modificado.
Si un objeto de Dictionary ABAP tiene una tabla de base de datos como objeto dependiente, el
objeto de base de datos y el objeto en tiempo de ejecucin de la tabla puede que se deban
ajustar cuando se activa el objeto de Dictionary ABAP.
La modificacin de un objeto de Dictionary ABAP tambin podra afectar a sus objetos
dependientes. Antes de realizar una modificacin crtica (como modificar el tipo de datos o
borrar un campo), defina el conjunto de objetos afectado para calcular las implicaciones de la
accin planificada.
Para cada objeto de Dictionary ABAP existe una referencia de utilizacin que se puede utilizar
para encontrar todos los objetos que se refieren a este objeto. Puede llamar la referencia de
utilizacin desde la transaccin de actualizacin del objeto.
Puede encontrar usos directos e indirectos de un objeto de Dictionary ABAP con la referencia
de utilizacin. Tiene que definir entonces qu tipos de objetos de uso se deberan incluir en la
bsqueda (por ejemplo, todas las estructuras y tablas mediante un elemento de datos).
Tambin puede buscar usos que no sean objetos de Dictionary ABAP, por ejemplo, todos los
programas que usan una tabla determinada. La bsqueda tambin se puede limitar por
paquete o rea de nombres de usuario.
Si es probable que un objeto sea usado por varios objetos, realice la bsqueda en proceso de
fondo.

Copyright . Reservados todos los derechos. 159


Captulo 6: Dependencias de objetos de Dictionary

El sistema de informacin Repository del Dictionary ABAP

Figura 56: El sistema de informacin Repository del Dictionary ABAP

El Diccionario ABAP del sistema de informacin de Repositorio forma parte del sistema de
informacin de Repositorio general. Ayuda a buscar objetos de Dictionary ABAP y sus
usuarios.
La referencia de utilizacin para objetos de Repository se puede llamar desde el sistema de
informacin. El sistema de informacin tambin permite buscar objetos por atributos.
Adems de los criterios de bsqueda especficos del objeto (p. ej., tipo de grabacin en
memoria intermedia para tablas), puede buscar todos los objetos por paquete, descripcin
breve o autor y fecha de la ltima modificacin.
Las listas de objetos creadas por el sistema de informacin Repository estn totalmente
integradas en el Workbench ABAP. Permiten ir directamente a las transacciones de
actualizacin de los objetos encontrados.

160 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 12
Explorar las dependencias de los objetos de
Dictionary ABAP

Ejemplo empresarial
Para explorar las dependencias de los objetos de Dictionary ABAP, necesita utilizar el sistema
de informacin Repository.

1. Cree las siguientes listas de objetos de Dictionary ABAP: Todos los dominios con valores
fijos cuyos nombres comienzan con Z, todos los campos de tabla que utilizan el elemento
de datos S_FNAME y todas las tablas del modelo de vuelo (paquete SAPBC_DATAMODEL)
con clase de entrega A.

2. Determine todos los programas que utilizan la tabla SFLIGHT.

3. Determine los nombres de los elementos de datos que crearon sus compaeros.

Consejo:
Puede determinar los elementos de datos de sus compaeros mediante una
bsqueda de cadena utilizando el nombre (si los compaeros han respetado
las convenciones para fijar nombres) o ltima modificacin.

Copyright . Reservados todos los derechos. 161


Captulo 6
Solucin 12
Explorar las dependencias de los objetos de
Dictionary ABAP

Ejemplo empresarial
Para explorar las dependencias de los objetos de Dictionary ABAP, necesita utilizar el sistema
de informacin Repository.

1. Cree las siguientes listas de objetos de Dictionary ABAP: Todos los dominios con valores
fijos cuyos nombres comienzan con Z, todos los campos de tabla que utilizan el elemento
de datos S_FNAME y todas las tablas del modelo de vuelo (paquete SAPBC_DATAMODEL)
con clase de entrega A.
a) En la pantalla inicial de Dictionary ABAP, seleccione Entorno Sistema de informacin
Repository. Despliegue el nodo Dictionary ABAP.

b) Seleccione Dictionary ABAP Dominios en el sistema de informacin Repository.

c) En la pantalla de seleccin, introduzca Z* en el primer campo. Seleccione


Tratar Todas las selecciones. En la pantalla de seleccin ampliada, seleccione Solo
dominios con valores fijos. Seleccione Ejecutar para generar la lista solicitada.

d) Regrese a la pantalla inicial del sistema de informacin Repository. Ample el nodo


Campos. Marque Campos de tabla. Seleccione Tratar Todas las selecciones e
ingrese S_FNAME en el campo Elemento de datos . Seleccione Ejecutar para generar la
lista solicitada.

e) Regrese a la pantalla inicial del sistema de informacin Repository. El nodo Dictionary


ABAP sigue desplegado. Marque Tablas de base de datos.

f) Introduzca el paquete SAPBC_DATAMODEL en la pantalla Seleccin . Seleccione


Tratar Todas las selecciones e introduzca la clase de entrega A. Seleccione Ejecutar
para generar la lista solicitada.

2. Determine todos los programas que utilizan la tabla SFLIGHT.


a) Vaya a la pantalla inicial del Dictionary ABAP. Seleccione Tablas de base de datos e
introduzca SFLIGHT en el campo correspondiente. Seleccione Referencia de
utilizacin.

b) El uso en programas ya aparece marcado en la siguiente ventana de dilogo.


Seleccione Ejecutar para generar la lista solicitada.

3. Determine los nombres de los elementos de datos que crearon sus compaeros.

162 Copyright . Reservados todos los derechos.


Leccin: Gestionar la referencia de utilizacin

Consejo:
Puede determinar los elementos de datos de sus compaeros mediante una
bsqueda de cadena utilizando el nombre (si los compaeros han respetado
las convenciones para fijar nombres) o ltima modificacin.

a) Puede generar la lista necesaria de nuevo en el sistema de informacin Repository del


Dictionary ABAP. Despliegue el nodo Dictionary ABAP y marque Elementos de datos.
Puede ser til limitar la seleccin segn la ltima fecha de modificacin (la ltima
modificacin no debera ser anterior al comienzo del curso), como mnimo en el primer
caso (convencin para fijar nombres).

b) Seleccione Tratar Todas las selecciones y busque mediante ltima modificacin.

Nota:
Si tiene dos grupos de compaeros, use Seleccin mltiple.

Copyright . Reservados todos los derechos. 163


Captulo 6: Dependencias de objetos de Dictionary

RESUMEN DE LA LECCIN
Ahora podr:
Gestionar referencia de utilizacin

164 Copyright . Reservados todos los derechos.


Captulo 6

Evaluacin de la formacin

1. La versin ______________ de un objeto de Dictionary ABAP es la versin a la que acceden


los componentes del entorno en tiempo de ejecucin (por ejemplo, procesador ABAP,
interfaz de base de datos).
Seleccione la respuesta correcta.

X A pasivo

X B activa

X C inactiva

2. El objeto en tiempo de ejecucin de una tabla contiene ms informacin que la interfaz de


la base de datos necesita para acceder a los datos de tabla como dependencia de
mandante, grabacin en memoria intermedia, campos clave, etc.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. La ______________ para objetos de Repository se puede llamar desde el sistema de


informacin.
Seleccione la respuesta correcta.

X A elementos de datos

X B referencia de utilizacin

X C tipo de grabacin en memoria intermedia para tablas

4. Si se modifica un objeto ya activo, la modificacin puede repercutir en otros objetos que lo


usen directa o indirectamente. Los objetos afectados se llaman ______________.
Seleccione la respuesta correcta.

X A objetos dependientes

X B objetos de base de datos

X C Objetos de repository

Copyright . Reservados todos los derechos. 165


Captulo 6

Respuestas a la Evaluacin de la formacin

1. La versin ______________ de un objeto de Dictionary ABAP es la versin a la que acceden


los componentes del entorno en tiempo de ejecucin (por ejemplo, procesador ABAP,
interfaz de base de datos).
Seleccione la respuesta correcta.

X A pasivo

X B activa

X C inactiva

2. El objeto en tiempo de ejecucin de una tabla contiene ms informacin que la interfaz de


la base de datos necesita para acceder a los datos de tabla como dependencia de
mandante, grabacin en memoria intermedia, campos clave, etc.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. La ______________ para objetos de Repository se puede llamar desde el sistema de


informacin.
Seleccione la respuesta correcta.

X A elementos de datos

X B referencia de utilizacin

X C tipo de grabacin en memoria intermedia para tablas

166 Copyright . Reservados todos los derechos.


Captulo 6: Respuestas a la Evaluacin de la formacin

4. Si se modifica un objeto ya activo, la modificacin puede repercutir en otros objetos que lo


usen directa o indirectamente. Los objetos afectados se llaman ______________.
Seleccione la respuesta correcta.

X A objetos dependientes

X B objetos de base de datos

X C Objetos de repository

Copyright . Reservados todos los derechos. 167


Captulo 6: Respuestas a la Evaluacin de la formacin

168 Copyright . Reservados todos los derechos.


CAPTULO 7 Modificaciones de tablas

Leccin 1
Conversin de tabla 170
Ejercicio 13: Realizar una conversin de tablas 177

Leccin 2
Ampliar tablas mediante estructuras append 182
Ejercicio 14: Ampliar una tabla mediante una estructura append 189

OBJETIVOS DEL CAPTULO

Calcular el efecto de las modificaciones de una tabla


Convertir tablas transparentes
Gestionar errores de conversin
Ampliar tablas mediante estructuras append

Copyright . Reservados todos los derechos. 169


Captulo 7
Leccin 1
Conversin de tabla

RESUMEN DE LA LECCIN
Esta leccin explica la conversin de tablas y cmo gestionar los errores de conversin.

Ejemplo empresarial
Las estructuras de datos de una aplicacin se deben ajustar de acuerdo con las nuevas
necesidades de la empresa. Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo modificar las tablas de base de datos existentes

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Calcular el efecto de las modificaciones de una tabla
Convertir tablas transparentes
Gestionar errores de conversin

Modificaciones de tablas de base de datos

Figura 57: Modificaciones de tablas

170 Copyright . Reservados todos los derechos.


Leccin: Conversin de tabla

Los programas ABAP slo pueden acceder correctamente a una tabla de base de datos si el
objeto en tiempo de ejecucin de la tabla es consistente con la estructura de la tabla en la
base de datos. Cada vez que la tabla es modificada en el Dictionary ABAP, el sistema verifica
durante la activacin (cuando el objeto de tiempo de ejecucin es actualizado) si tiene que
ajustar el objeto de base de datos a la definicin de Dictionary ABAP modificada de la tabla.
No hace falta modificar la estructura de base de datos cuando se producen algunas
modificaciones en el Dictionary ABAP. Por ejemplo, no hace falta modificar la estructura de
base de datos cuando se modifica el orden de los campos en el Dictionary ABAP (salvo en el
caso de los campos clave). En este caso, la estructura modificada se activa en el Dictionary
ABAP, mientras que la estructura de base de datos no se modifica.

Ajustar la estructura en Dictionary ABAP

Figura 58: Ajustar la estructura en Dictionary ABAP

La tabla de base de datos se puede ajustar segn la definicin modificada en el Dictionary


ABAP de las siguientes maneras:
Borrando la tabla de base de datos y crendola de nuevo. La tabla en la base de datos se
borra, la tabla inactiva se activa en el Dictionary ABAP, y la tabla se vuelve a crear en la
base de datos. Se pierden los datos en la tabla.
Modificando el catlogo de base de datos ALTER TABLE. Simplemente se modifica la
definicin de la tabla en la base de datos. Los datos existentes se conservan. No obstante,
puede que haya que volver a crear los ndices de la tabla.
Conversin de la tabla. Esta es la forma ms lenta de ajustar una tabla de base de datos.

Si la tabla no contiene datos, se borra de la base de datos y se crea de nuevo con la estructura
nueva. Si existen datos en la tabla, el sistema intenta ajustar la estructura con ALTER TABLE.
Si el sistema de base de datos usado no puede hacerlo, se convertir la tabla para ajustar la
estructura.

Copyright . Reservados todos los derechos. 171


Captulo 7: Modificaciones de tablas

El proceso de conversin de tablas

Figura 59: Proceso de conversin 1

El siguiente ejemplo ilustra los pasos que da el sistema durante una conversin:
Situacin de partida
La tabla TAB se ha modificado en el Dictionary ABAP. La longitud del campo 3 se ha
reducido de 60 a 30 posiciones.
El Dictionary ABAP tiene, por lo tanto, una versin activa de la tabla (el campo 3 tiene una
longitud de 60 posiciones) y otra inactiva (el campo 3 tiene una longitud de 30
posiciones).
La tabla en la base de datos se corresponde con la versin activa en el Dictionary ABAP, lo
que significa que el campo 3 tiene actualmente 60 posiciones en la base de datos. Para la
tabla en el Dictionary ABAP se ha definido un ndice secundario con el ID A11, creado
tambin en la base de datos.
La tabla ya contiene datos.

172 Copyright . Reservados todos los derechos.


Leccin: Conversin de tabla

Proceso de conversin 2

Figura 60: Proceso de conversin 2

Los siguientes pasos estn ilustrados en la figura Proceso de conversin 2:


Paso 1
La tabla est bloqueada para evitar ms modificaciones de la estructura. Si la conversin
se cancela por un error, la tabla permanecer bloqueada. Antes de que la conversin se
complete correctamente, este mecanismo de bloqueo evita que se produzcan ms
modificaciones de la estructura las cuales puedan ocasionar la prdida de datos. Adems,
todas las vistas dependientes de la tabla estn desactivadas y, por lo tanto, bloqueadas.
Paso 2
El nuevo nombre de la tabla de base de datos TAB es QCMTAB. El nuevo nombre de la
tabla lo define el prefijo QCM y el nombre original de la tabla, TAB. Durante el
renombramiento, todos los ndices secundarios de la tabla son eliminados.

Copyright . Reservados todos los derechos. 173


Captulo 7: Modificaciones de tablas

Proceso de conversin 3

Figura 61: Proceso de conversin 3

Los siguientes pasos estn ilustrados en la figura Proceso de conversin 3:


Paso 3
La versin inactiva de la tabla TAB est activada en el Dictionary ABAP. La tabla se crea en
la base de datos como tabla QCM8TAB con una nueva estructura y un ndice primario.
Despus de este paso, la base de datos contiene las siguientes tablas:
- Tabla QCMTAB con la estructura anterior. Esta tabla contiene los datos empresariales.
- Tabla QCM8TAB con la estructura nueva. Esta tabla est vaca.

Atencin:
La tabla no existe en la base de datos bajo su nombre original durante la
conversin. Como los programas que acceden a esta tabla no se pueden
ejecutar, asegrese de que durante la conversin ninguna aplicacin acceda a la
tabla por convertir.

174 Copyright . Reservados todos los derechos.


Leccin: Conversin de tabla

Proceso de conversin 4

Figura 62: Proceso de conversin 4

Los siguientes pasos estn ilustrados en la figura Proceso de conversin 4:


Paso 4
Los datos se cargan de nuevo desde la tabla QCMTAB en la tabla QCM8TAB. La conversin
se realiza utilizando la sentencia MOVE-CORRESPONDING.
Despus de este paso ambas tablas contienen los datos. Cuando se reduce el tamao de
los campos, por ejemplo, las posiciones adicionales se truncan cuando se vuelven a cargar
los datos.
Puesto que los datos se encuentran en ambas tablas, QCM8TAB y QCMTAB , durante la
conversin los requisitos de almacenamiento son mayores. Por ello, antes de convertir
tablas grandes verifique si hay suficiente espacio disponible en el tablespace
correspondiente.
Se produce un commit en base de datos a partir de los 16 MB cuando se copian los datos
de la tabla QCMTAB en la tabla QCM8TAB. As pues, para el proceso de conversin se
necesitan 16 MB de recursos en el segmento de rollback. El bloqueo de la base de datos
existente se desactiva con el commit y se vuelve a solicitar antes de editar la siguiente rea
de datos que se debe convertir.
Si reduce el tamao de las claves, slo se podr volver a cargar un registro si existen varios
registros cuya clave no se puede diferenciar. No se puede saber cul ser el registro en
cuestin. En tal caso, limpie los datos de la tabla antes de la conversin.

Copyright . Reservados todos los derechos. 175


Captulo 7: Modificaciones de tablas

Proceso de conversin 5

Figura 63: Proceso de conversin 5

Los siguientes pasos estn ilustrados en la figura Proceso de conversin 5:


Paso 5
Se borra la tabla QCMTAB .
Paso 6
La tabla QCM8TAB se renombra TAB. Se vuelven a crear los ndices secundarios definidos
en Dictionary ABAP para la tabla. Las vistas de la tabla desactivadas en el primer paso de
la conversin se vuelven a activar en la base de datos.
Paso 7
Se elimina el bloqueo activado al principio de la conversin.

176 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 13
Realizar una conversin de tablas

Ejemplo empresarial
Despus de algunos cambios organizativos en las compaas areas, el diseo original de la
gestin de empleados ya no es adecuado. El diseo de la tabla ZFLCREW## ya no es
correcto. El campo para el rol del empleado durante el vuelo es demasiado largo.
Es necesario acortar un campo en la tabla ZFLCREW## ; para ello, cree un nuevo elemento de
datos ZROLE## y reemplcelo por el existente.

1. Reduzca la longitud del campo ROLE a 15 caracteres.

Nota:
Cree un nuevo elemento de datos ZROLE## y reemplcelo por el existente.
Cuando defina el elemento de datos ZROLE##, no use ningn dominio. En
cambio, introduzca el tipo de datos y la longitud directamente en la definicin
del elemento de datos. Ahora active la tabla.

2. Visualice el log de activacin. El sistema le recuerda que al acortar el campo es necesario


convertir la tabla ZFLCREW##. Realice la conversin con la utilidad de base de datos.

Copyright . Reservados todos los derechos. 177


Captulo 7
Solucin 13
Realizar una conversin de tablas

Ejemplo empresarial
Despus de algunos cambios organizativos en las compaas areas, el diseo original de la
gestin de empleados ya no es adecuado. El diseo de la tabla ZFLCREW## ya no es
correcto. El campo para el rol del empleado durante el vuelo es demasiado largo.
Es necesario acortar un campo en la tabla ZFLCREW## ; para ello, cree un nuevo elemento de
datos ZROLE## y reemplcelo por el existente.

1. Reduzca la longitud del campo ROLE a 15 caracteres.

Nota:
Cree un nuevo elemento de datos ZROLE## y reemplcelo por el existente.
Cuando defina el elemento de datos ZROLE##, no use ningn dominio. En
cambio, introduzca el tipo de datos y la longitud directamente en la definicin
del elemento de datos. Ahora active la tabla.

a) En la pantalla Actualizacin de la tabla ZFLCREW##, cambie al modo de modificacin.


Sobrescriba el elemento de datos SEMP_ROLE en la columna Tipo de campo con el
nombre de su elemento de datos ZROLE##. Grabe las modificaciones.

b) Haga doble clic en el elemento de datos ZROLE##. En la ventana de dilogo siguiente,


seleccione Crear.

c) En la pantalla de actualizacin del elemento de datos, introduzca una descripcin


breve.

d) Marque la etiqueta Tipo de datos. Marque el botn de seleccin Tipo predefinido.


Introduzca CHAR en el campo Tipo de datos, 15 en el campo Longitud y 0 en el campo
Decimales. En la etiqueta Denominador de campo, introduzca algunos textos para el
elemento de datos.

e) Active el elemento de datos.

2. Visualice el log de activacin. El sistema le recuerda que al acortar el campo es necesario


convertir la tabla ZFLCREW##. Realice la conversin con la utilidad de base de datos.
a) Vuelva a la pantalla de actualizacin para la tabla ZFLCREW##.

b) Seleccione Utilidades Objeto de base de datos Utilidad de base de datos para


navegar hasta la utilidad de base de datos.

c) Seleccione el pulsador Activar y ajustar base de datos. En la ventana de dilogo


Informacin, seleccione el pulsador S.

178 Copyright . Reservados todos los derechos.


Leccin: Conversin de tabla

Errores de conversin

Figura 64: Posibles problemas durante las conversiones

Puesto que durante la conversin los datos se encuentran tanto en la tabla original como en la
temporal, los requisitos de almacenamiento son mayores. Si el tablespace se desborda
cuando se vuelven a cargar los datos desde la tabla temporal, la conversin se cancela. En tal
caso, ample el tablespace y vuelva a iniciar la conversin en la utilidad de base de datos.
Si acorta la clave de una tabla (por ejemplo, cuando elimina un campo clave o acorta la
longitud de los campos clave), puede que los registros con la misma clave se dupliquen.
Cuando vuelva a cargar los datos desde la tabla temporal, slo podr volver a cargar uno de
estos registros en la tabla. No es posible predecir qu registro se vuelve a cargar en la tabla.
Si desea copiar determinados registros, deber depurar la tabla antes de la conversin.
Durante una conversin, los datos se vuelven a copiar en la tabla de base de datos desde la
tabla temporal mediante la sentencia ABAP MOVE-CORRESPONDING. Esto quiere decir que
slo se permiten las modificaciones de tipo que se pueden ejecutar con MOVE-
CORRESPONDING. Todas las dems modificaciones de tipo hacen que se cancele la
conversin cuando se vuelven a cargar los datos en la tabla original. En este caso, hay que
restablecer el estado anterior a la conversin. Mediante las herramientas de base de datos,
borre la tabla, cambie el nombre QCM por el nombre anterior de la tabla, reconstruya el
objeto en tiempo de ejecucin (en la utilidad de base de datos), restablezca el estado anterior
de la estructura de la tabla en el Dictionary, y por ltimo active la tabla.

Copyright . Reservados todos los derechos. 179


Captulo 7: Modificaciones de tablas

Reanudacin de conversiones canceladas

Figura 65: Reanudacin de conversiones canceladas

Si se cancela una conversin, se conservar la entrada de bloqueo fijada para la tabla en el


primer paso del proceso de conversin. La tabla ya no se podr editar con las herramientas
de actualizacin de Dictionary ABAP (Transaccin SE11).
Una conversin cancelada se puede analizar con la utilidad de base de datos (Transaccin
SE14) y luego reanudarla. La utilidad de base de datos proporciona una herramienta de
anlisis con la que se pueden averiguar la causa del error y el estado actual de todas las tablas
implicadas en la conversin.
Normalmente el motivo exacto de la cancelacin figura en el log de objeto. Si el log de objeto
no proporciona informacin acerca de la causa del error, analice el log del sistema
(transaccin SM21) o realice el anlisis del dump (transaccin ST22).

Si se cancela una conversin, en la utilidad de base de datos se visualizarn las siguientes


opciones:
Reanudar ajuste
Despus de corregir el error, puede reanudar la conversin en el punto en que se cancel
mediante la opcin Reanudar ajuste.
Desbloquear tabla
La opcin Desbloquear tabla elimina solo la entrada de bloqueo existente de la tabla.
Nunca seleccione Desbloquear tabla para una conversin cancelada si los datos slo
existen en la tabla temporal, por ejemplo, si la conversin se cancel en el paso 3 o 4.

180 Copyright . Reservados todos los derechos.


Leccin: Conversin de tabla

RESUMEN DE LA LECCIN
Ahora podr:
Calcular el efecto de las modificaciones de una tabla
Convertir tablas transparentes
Gestionar errores de conversin

Copyright . Reservados todos los derechos. 181


Captulo 7
Leccin 2
Ampliar tablas mediante estructuras append

RESUMEN DE LA LECCIN
Esta leccin describe una tabla mediante estructuras append.

Ejemplo empresarial
Debe aadir campos de cliente a tablas estndar SAP por medio de estructuras append sin
modificaciones Por este motivo, se requieren los siguientes conocimientos:
Comprender cmo ampliar tablas mediante estructuras append

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Ampliar tablas mediante estructuras append

Ampliacin de las tablas estndar de SAP

Figura 66: Estructuras append 1

Las estructuras Append permiten aadir campos a las tablas y estructuras estndar de SAP
sin modificar la definicin de la tabla.
Una estructura append es una estructura que est asignada exactamente a una tabla. Puede
haber varias estructuras append para una tabla.

182 Copyright . Reservados todos los derechos.


Leccin: Ampliar tablas mediante estructuras append

Cuando se activa una tabla, se buscan todas las estructuras append activas para la tabla y se
aaden sus campos a la tabla. Si se crea o modifica una estructura append, la tabla a la que se
asigna tambin se activa.
Al igual que todas las estructuras, una estructura append define un tipo que se puede usar en
programas ABAP.
Con el release 4.6C puede definir, mediante una estructura append, claves externas para
campos que ya existen en la tabla. Tambin se pueden aadir ayudas para la bsqueda a
campos que ya existan en la tabla.

Consejo:
Si copia una tabla transparente en el Dictionary ABAP a la cual se ha aadido una
estructura append, los campos de la estructura append se convierten en campos
de tabla normales.

Estructuras append 2

Figura 67: Estructuras append 2

Los clientes crean estructuras append en su rea de nombres. Las estructuras append
quedan as protegidas contra sobrescritura durante los upgrades.
Las nuevas versiones de las tablas estndar se importan durante el upgrade. Cuando se
activan las tablas estndar, los campos contenidos en las estructuras append activas se
aaden a las nuevas tablas estndar. Cuando se aaden estructuras append a una tabla, no
hace falta ajustar manualmente las modificaciones de cliente a la nueva versin de la tabla de
SAP (transaccin SPDD) durante el upgrade.
Puesto que el orden de los campos en el Dictionary ABAP puede ser diferente del orden en la
base de datos, no hace falta realizar ninguna conversin cuando se aade una estructura
append o se insertan campos en una estructura append existente. La estructura se ajusta
cuando se ajusta el catlogo de la base de datos (ALTER TABLE). Cuando se activa una

Copyright . Reservados todos los derechos. 183


Captulo 7: Modificaciones de tablas

estructura en el Dictionary ABAP, la definicin de la tabla se modifica, y el nuevo campo se


aade a la tabla de base de datos.

Estructuras append 3

Figura 68: Estructuras append 3

La nueva versin de la tabla estndar de SAP se activa, y el nuevo campo se aade a la tabla
de base de datos.

Atencin:
Observe las siguientes restricciones sobre las estructuras append:
No se pueden crear estructuras append para tablas pool ni tablas cluster.
Las tablas que contienen un campo largo (tipo de datos LCHR o LRAW) no se
pueden ampliar con estructuras append.
Esta ampliacin no es posible porque los campos largos deben ser los ltimos
campos de la tabla.
Los campos en la estructura append deben estar en el rea para nombres de
cliente y empezar con YY o ZZ. Usar el rea para nombres de cliente evita
conflictos con otros nombres en futuros campos de la tabla proporcionados
por SAP.
Si, como interlocutor, tiene su propia rea de nombres reservada, se
recomienda que elija los nombres para sus estructuras append desde el rea
de nombres.

184 Copyright . Reservados todos los derechos.


Leccin: Ampliar tablas mediante estructuras append

Ampliacin de tablas

Figura 69: Ampliacin de tablas

El cliente puede ampliar de los siguientes modos las estructuras y las tablas definidas por
SAP en el Dictionary ABAP:
Por medio de Includes de Customizing
Por medio de esta variante, determinados espacios dentro de la estructura estndar o
tabla estn reservados por SAP para las ampliaciones de cliente. El entorno de
Customizing admite clientes que utilizan Includes de Customizing.
Por medio de appends
Con esta variante, los campos sin reserva previa se aaden al final de las estructuras o las
tablas.

Copyright . Reservados todos los derechos. 185


Captulo 7: Modificaciones de tablas

Atencin:

Las ampliaciones mediante estructuras append pueden ocasionar los


siguientes problemas:
La ampliacin de estructuras afecta no solo a la estructura misma sino a
todas aquellas que la utilizan como include o subestructura.
Sin embargo, cuando la estructura ampliada se incluye en una estructura
dependiente, puede que los campos de esta ltima se desplacen. Este es el
caso, por ejemplo, cuando el Include aparece en medio de la estructura
dependiente. El desplazamiento de campo puede evitar que los programas
ABAP lean correctamente la estructura.
En programas con verificaciones Unicode desactivadas, las amplicaciones de
estructura pueden provocar errores de sintaxis y de ejecucin.
Estos errores generalmente suceden en verificaciones de tipos y en relacin
con estructuras profundas.
En progrmas con verificaciones Unicode activadas, las amplicaciones de
estructura afectan adicionalmente las asignaciones de valor, las
verificaciones de operandos y los accesos con offset y longitud. Por ejemplo,
los componentes numricos o profundos se insertan en una estructura
meramente alfanumrica. Las ampliaciones tambin pueden ocasionar
algunos problemas debido a que la vista fragmentada se modifica y esto
influye en las verificaciones de asignaciones y comparaciones que se basan
en ella.

Categoras de ampliaciones

Las estructuras y tablas en el Dictionary ABAP se clasifican en Extras -> Categoras de


ampliacin. La siguiente tabla muestra las diferentes categoras de ampliacin:

Nivel Categora Significado


1 Sin clasificar La estructura no tiene
categora de ampliacin
2 No ampliable No se puede ampliar la
estructura
3 Ampliable y alfanumrico Todos los componentes de la
estructura y sus
ampliaciones deben ser
alfanumricos
4 Ampliable y alfanumrico o La estructura y sus
numrico ampliaciones no pueden
contener tipos de datos
profundos

186 Copyright . Reservados todos los derechos.


Leccin: Ampliar tablas mediante estructuras append

Nivel Categora Significado


5 Ampliable libremente La estructura y sus
ampliaciones pueden
contener componentes con
un tipo de datos opcional

Los tipos elementales C, D, N y T se describen como alfanumricos, mientras que los tipos
elementales F, I, y P como numricos, y el tipo elemental X como hexadecimal. Los tipos
profundos STRING y XSTRING no se soportan.
En el caso de las estructuras y las tablas con includes o subestructuras, las categoras de
ampliacin de los includes y las subestructuras no pueden ser mayores que las de la
estructura inicial. Por ejemplo, si la estructura inicial contiene un include del nivel 4, los
niveles 2 y 3 no se permitirn para la estructura inicial.
Las ampliaciones de estructura en el Dictionary puede afectar tambin a las estructuras
internas de programas ABAP si las estructuras del Dictionary en el cdigo fuente se usan
como tipo, include o subestructura. Estas dependencias se contemplan implcitamente en la
verificacin del programa ABAP. Estas dependencias tambin se relacionan con estructuras
no clasificadas que contienen includes o subestructuras ampliables.

Copyright . Reservados todos los derechos. 187


Captulo 7: Modificaciones de tablas

188 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 14
Ampliar una tabla mediante una estructura
append

Ejemplo empresarial
Los empleados con funciones de gestin o actualizacin tienen su propio lugar de trabajo en
un aeropuerto. A estos empleados se les asigna un nmero de telfono y una ubicacin.
Registre esta informacin en la tabla de base de datos ZEMPLOY##.
Necesita crear una estructura append para la tabla ZEMPLOY##. La tabla ZEMPLOY## se
ajusta automticamente cuando se activa la estructura append. Los nuevos campos se
aaden a los campos existentes en la base de datos.

1. Cree una estructura append para la tabla ZEMPLOY## que contenga la informacin
siguiente:
Campo Elemento de datos
ZZAIRPORT S_AIRPORT
ZZBUREAUNO S_BUREAUNO
ZZTELNO S_TELNO

Nota:
Los nombres de campo en una estructura append deben estar dentro del rea
de campos para nombres del cliente. Esto quiere decir que los nombres de los
campos deben comenzar con ZZ o YY.

2. Ejecute el programa B430_CHECK para probar su ejercicio.

Copyright . Reservados todos los derechos. 189


Captulo 7
Solucin 14
Ampliar una tabla mediante una estructura
append

Ejemplo empresarial
Los empleados con funciones de gestin o actualizacin tienen su propio lugar de trabajo en
un aeropuerto. A estos empleados se les asigna un nmero de telfono y una ubicacin.
Registre esta informacin en la tabla de base de datos ZEMPLOY##.
Necesita crear una estructura append para la tabla ZEMPLOY##. La tabla ZEMPLOY## se
ajusta automticamente cuando se activa la estructura append. Los nuevos campos se
aaden a los campos existentes en la base de datos.

1. Cree una estructura append para la tabla ZEMPLOY## que contenga la informacin
siguiente:
Campo Elemento de datos
ZZAIRPORT S_AIRPORT
ZZBUREAUNO S_BUREAUNO
ZZTELNO S_TELNO

Nota:
Los nombres de campo en una estructura append deben estar dentro del rea
de campos para nombres del cliente. Esto quiere decir que los nombres de los
campos deben comenzar con ZZ o YY.

a) Abra la tabla ZEMPLOY## en modo de modificacin.

b) Seleccione Pasar a Estructura Append.

c) En la siguiente ventana de dilogo, introduzca el nombre necesario para la estructura


append. Debe cumplir las convenciones habituales para fijar nombres. Seleccione el
pulsador Continuar.

d) El sistema visualiza la pantalla de actualizacin para la estructura append. La


estructura append se actualiza del mismo modo que se actualizara una estructura.

e) Introduzca un texto breve e inserte los campos ZZAIRPORT, ZZBUREAUNO, ZZTELNO


con los elementos de datos especificados.

f) Active la estructura append. Seleccione Pasar a Log de activacin para visualizar el


log de activacin.

g) La tabla ZEMPLOY## se ajusta automticamente cuando se activa la estructura


append. Los nuevos campos se aaden a los campos existentes en la base de datos.

190 Copyright . Reservados todos los derechos.


Leccin: Ampliar tablas mediante estructuras append

2. Ejecute el programa B430_CHECK para probar su ejercicio.

Copyright . Reservados todos los derechos. 191


Captulo 7: Modificaciones de tablas

RESUMEN DE LA LECCIN
Ahora podr:
Ampliar tablas mediante estructuras append

192 Copyright . Reservados todos los derechos.


Captulo 7

Evaluacin de la formacin

1. Los programas ABAP no pueden acceder correctamente a una tabla de base de datos si el
objeto en tiempo de ejecucin de la tabla no es consistente con la estructura de la tabla en
la base de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Durante el proceso de conversin, los datos se vuelven a cargar de la tabla QCMTAB a la


tabla QCM8TAB con ______________.
Seleccione la respuesta correcta.

X A ALTER TABLE

X B MOVE-CORRESPONDING

X C SELECT

3. Si se cancela una conversin, en la utilidad de base de datos se visualizarn las siguientes


opciones:
Seleccione las respuestas correctas.

X A Reanudar ajuste

X B Desbloquear tabla

X C Descartar ajuste

X D Reiniciar tabla

4. Identifique las formas en que los clientes pueden ampliar las estructuras y tablas que SAP
defini en el Dictionary ABAP.
Seleccione las respuestas correctas.

X A Por medio de Includes de Customizing

X B Por medio de estructuras append

X C Uso de tablas internas

Copyright . Reservados todos los derechos. 193


Captulo 7

Respuestas a la Evaluacin de la formacin

1. Los programas ABAP no pueden acceder correctamente a una tabla de base de datos si el
objeto en tiempo de ejecucin de la tabla no es consistente con la estructura de la tabla en
la base de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Durante el proceso de conversin, los datos se vuelven a cargar de la tabla QCMTAB a la


tabla QCM8TAB con ______________.
Seleccione la respuesta correcta.

X A ALTER TABLE

X B MOVE-CORRESPONDING

X C SELECT

3. Si se cancela una conversin, en la utilidad de base de datos se visualizarn las siguientes


opciones:
Seleccione las respuestas correctas.

X A Reanudar ajuste

X B Desbloquear tabla

X C Descartar ajuste

X D Reiniciar tabla

194 Copyright . Reservados todos los derechos.


Captulo 7: Respuestas a la Evaluacin de la formacin

4. Identifique las formas en que los clientes pueden ampliar las estructuras y tablas que SAP
defini en el Dictionary ABAP.
Seleccione las respuestas correctas.

X A Por medio de Includes de Customizing

X B Por medio de estructuras append

X C Uso de tablas internas

Copyright . Reservados todos los derechos. 195


Captulo 7: Respuestas a la Evaluacin de la formacin

196 Copyright . Reservados todos los derechos.


CAPTULO 8 Vistas y vistas de actualizacin

Leccin 1
Definir vistas 198
Ejercicio 15: Crear una vista de base de datos 209

Leccin 2
Definir vistas de actualizacin 214
Ejercicio 16: Crear una vista de actualizacin 221

Leccin 3
Definir clusters de vistas 226
Ejercicio 17: Crear un cluster de vistas 229

OBJETIVOS DEL CAPTULO

Describir vistas
Definir vistas de base de datos
Describir vistas de actualizacin
Definir vistas de actualizacin
Valorar cundo se deben usar vistas de actualizacin
Definir dilogos de actualizacin complejos

Copyright . Reservados todos los derechos. 197


Captulo 8
Leccin 1
Definir vistas

RESUMEN DE LA LECCIN
Esta leccin explica cmo definir y crear vistas de base de datos.

Ejemplo empresarial
Para simplificar la codificacin ABAP en sus aplicaciones, debera crear vistas de base de
datos como resumen o como combinacin de tablas. Por este motivo, se requieren los
siguientes conocimientos:
Comprender cmo definir vistas de base de datos
Comprender cmo crear una conexin de base de datos
Comprender cmo reconocer la diferencia entre INNER JOIN y OUTER JOIN
Comprender cmo crear vistas de actualizacin simples y complejas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir vistas
Definir vistas de base de datos

Vistas de base de datos

Figura 70: Vistas de base de datos

A menudo los datos para un objeto de aplicacin estn distribuidos entre varias tablas de
base de datos. Los sistemas de base de datos ofrecen un modo de definir vistas especficas
de la aplicacin de los datos en mltiples tablas. Esto es lo que se conoce como vistas.

198 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

Los datos procedentes de varias tablas se pueden combinar mediante una vista (JOIN) de
forma lgica.
Tambin se puede ocultar informacin que no es importante (proyeccin) o visualizar slo los
registros de datos que cumplen determinadas condiciones (seleccin).
Los datos de una vista se pueden visualizar igual que los datos de una tabla en la actualizacin
ampliada de tabla.

Estructura de una vista Producto cruzado como situacin de partida

Figura 71: Estructura de una vista Producto cruzado como situacin de partida

Explicaremos la estructura de una vista y la seleccin de los datos mediante dicha vista con
un ejemplo.
Las dos tablas utilizadas con SCARR y SFLIGHT. La tabla SCARR contiene dos entradas y la
tabla SFLIGHT, cuatro.
Las tablas se aaden entre s. Como consecuencia, se obtiene un producto cruzado formado
por ambas tablas en el que cada registro de la tabla SCARR se combina con un registro de la
tabla SFLIGHT .

Copyright . Reservados todos los derechos. 199


Captulo 8: Vistas y vistas de actualizacin

Estructura de una vista: condicin de conexin

Figura 72: Estructura de una vista: condicin de conexin

Por lo general, todo el producto cruzado no es una buena seleccin. Por lo tanto, con
frecuencia es necesario limitar el producto cruzado con una condicin de conexin. La
condicin de conexin describe la relacin entre los registros de las dos tablas.
En el ejemplo de la figura, el campo CARRID de SCARR se compara con el campo CARRID de
SFLIGHT. La condicin de conexin que se utiliza para limitar el producto cruzado es SCARR-
CARRID = SFLIGHT-CARRID.
Con esta condicin de conexin, todos los registros cuya entrada en el campo 1 (T1 CARRID)
no coincida con la entrada en el campo 3 (T2 CARRID) se eliminarn del producto cruzado. En
consecuencia, no es necesaria la columna del Campo 3 (T2 CARRID) en la vista.

Estructura de una vista: seleccin de campo (proyeccin)

Figura 73: Estructura de una vista: seleccin de campo (proyeccin)

200 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

A menudo, algunos campos de las tablas incluidos en una vista no tienen inters alguno. Se
puede definir explcitamente un conjunto de campos para incluirlo en la vista (proyeccin).
En el ejemplo de la figura, el campo PLANETYPE no es importante, y por lo tanto se lo puede
ocultar.

Estructura de una vista: condicin de seleccin

Figura 74: Estructura de una vista: condicin de seleccin

El conjunto de registros que se puede visualizar en la vista se puede limitar ms mediante una
condicin de seleccin.
En el ejemplo de la figura, solo los registros que tienen el valor DL en el campo CARRID se
pueden ver en la vista.
Por lo tanto, se puede formular una condicin de seleccin con campos incluidos en la vista y
campos que no estn incluidos en ella.

Copyright . Reservados todos los derechos. 201


Captulo 8: Vistas y vistas de actualizacin

Definicin de vista de base de datos

Figura 75: Ejemplo de tablas de una definicin de vista de base de datos

Para explicar cmo las tablas se relacionan con las vistas, la figura muestra un ejemplo. A
veces las agencias de viajes tienen que verificar qu vuelos ha reservado un cliente. Los datos
correspondientes estn distribuidos en varias tablas.

Las siguientes tablas se usan como ejemplo de una definicin de vista de base de datos:

Tabla Descripcin
SCUSTOM Los datos de cliente, como el nmero de
cliente, el nombre y la direccin
SBOOK Los datos de reservas, como la compaa
area, el nmero de vuelo y el pasajero
(nmero de cliente)
SPFLI Los datos del vuelo, como la poblacin de
salida y la de destino

Para obtener los datos de la reserva se debe crear una vista con las tablas SCUSTOM, SBOOK
y SPFLI .

En este ejemplo, las condiciones de conexin son:


SBOOK-CLIENT = SCUSTOM-CLIENT
SBOOK-CUSTOMID = SCUSTOM-ID
SPFLI-CLIENT = SBOOK-CLIENT
SPFLI-CARRID = SBOOK-CARRID
SPFLI-CONNID = SBOOK-CONNID

202 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

Estructura de la vista

Figura 76: Estructura de la vista

Puede ver las reservas de un cliente especfico si selecciona los registros correspondientes de
las claves MANDT y CUSTOMID en la tabla SBOOK.
Para cada reserva de la tabla SBOOK, puede obtener ms datos del vuelo si usa la tabla SPFLI.
Para obtener los datos del vuelo, seleccione el registro correspondiente por medio de las
clavesMANDT, CARRID y CONNID de la tabla SPFLI.
Puede visualizar solo las reservas del cliente que no se hayan cancelado mediante la vista con
la condicin de seleccin SBOOK-CANCELED <> X.
Las condiciones de conexin se pueden derivar tambin de las relaciones existentes de claves
externas. En la transaccin de actualizacin se pueden copiar las condiciones de conexin de
claves externas existentes.
Los nombres de campo de los campos de tabla subyacentes se usan como nombres de
campo en la vista. Sin embargo, tambin puede elegir un nombre de campo distinto. Debe
elegir otro nombre diferente para el campo si se desean copiar dos campos con el mismo
nombre en la vista de diferentes tablas. En este caso, debe seleccionar un nombre distinto
para uno de los dos campos en la vista.

Copyright . Reservados todos los derechos. 203


Captulo 8: Vistas y vistas de actualizacin

Seleccin de datos con vistas

Figura 77: Seleccin de datos con vistas

Tambin puede formular la condicin de conexin directamente en OPEN SQL. Se obtiene el


mismo resultado que si se usa una conexin interna.

SELECT C~CARRID C~CARRNAME P~CONNID P~CITYFROM P~CITYTO


F~FLDATE F~SEATSMAX F~SEATSOCC
INTO TABLE ITAB_FLIGHTS
FROM ( SCARR AS C INNER JOIN SPFLI AS P
ON C~CARRID = P~CARRID )
INNER JOIN SFLIGHT AS F
ON F~CARRID = P~CARRID
AND F~CONNID = P~CONNID
WHERE CITYFROM IN SO_CITYF
AND CITYTO IN SO_CITYT
AND SEATSOCC < F~SEATSMAX
ORDER BY C~CARRID P~CONNID F~FLDATE.

Observe que el rendimiento de la sentencia JOIN de OPEN SQL no es tan buena como el de
las vistas de base de datos definidas estticamente.
Una vista definida en el Dictionary ABAP es un tipo de datos que se puede usar en programas
ABAP, del mismo modo que otros tipos de datos de Dictionary ABAP.

204 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

Conexin interna y externa

Figura 78: Conexin interna y externa

El conjunto de datos que se puede seleccionar con una vista depende de si en la vista se
implementa una conexin interna (INNER JOIN) o una conexin externa (OUTER JOIN). Si usa
INNER JOIN, solo obtendr los registros que tengan una entrada en todas las tablas incluidas
en la vista. Si usa OUTER JOIN se seleccionarn tambin los registros que no tengan una
entrada correspondiente en algunas de las tablas incluidas en la vista.
Por lo tanto, el conjunto resultado de una conexin interna puede ser un subconjunto del
conjunto resultado de una conexin externa.
En las vistas de base de datos se implementa una conexin interna. Solo obtendr los
registros que tengan una entrada en todas las tablas incluidas en la vista.
En las vistas de actualizacin se implementa una conexin externa.

Copyright . Reservados todos los derechos. 205


Captulo 8: Vistas y vistas de actualizacin

Vistas de base de datos

Figura 79: Vistas de base de datos

Una vista de base de datos se define en el Dictionary ABAP y se crea automticamente en la


base de datos durante la activacin. Los accesos a una vista de base de datos se transfieren
directamente a la base de datos desde la interfaz de base de datos. El software de la base de
datos selecciona los datos.
Si se modifica la definicin de una vista de base de datos en el Dictionary ABAP, la vista
creada en la base de datos se deber ajustar conforme a dicha modificacin. Puesto que una
vista no contiene datos, este ajuste se realiza borrando la antigua definicin de vista y
creando la vista de nuevo en el Dictionary ABAP con su nueva definicin.
El status de actualizacin define si la vista permite solo leer o tambin escribir. Si se ha
definido una vista de base de datos con ms de una tabla, con esta vista solo podr leer.
Los datos que se leen con una vista de base de datos se pueden grabar en la memoria
intermedia. Los datos de la vista se graban en la memoria intermedia del mismo modo que las
tablas. Las opciones tcnicas de una vista de base de datos controlan si los datos de la vista
se pueden grabar en la memoria intermedia y cmo. Aqu se pueden usar las mismas
opciones (formas de grabar en la memoria intermedia) que para grabar tablas en la memoria
intermedia. Los datos de vista grabados en la memoria intermedia se anulan cuando se
modifican los datos de una de las tablas de Base de la vista.

206 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

Incorporacin dinmica de campos de tabla en vistas de base de datos

Figura 80: Incorporacin dinmica de campos de tabla en vistas de base de datos

Puede incluir tablas enteras en vistas de base de datos. En tal caso, todos los campos de la
tabla incluida pasan a ser campos de la vista (se pueden excluir explcitamente determinados
campos). Si se incluyen campos nuevos en la tabla o se borran campos existentes, la vista se
ajustar automticamente segn esta modificacin. Por lo tanto, un campo nuevo o borrado
se incluye en la vista o se borra de ella automticamente.
Si se aade una estructura append a una tabla incluida en una vista, los campos aadidos con
la estructura append se incluirn automticamente en la vista.
Para incluir una tabla en una vista, introduzca el carcter * en el campo Campo de vista en
la vista de actualizacin, el nombre de la tabla que se desea incluir en el campo Tabla y
nuevamente el carcter * en el campo Nombre de campo.
Si no desea insertar un campo de la tabla incluida en la vista, introduzca un - en el campo
Vista, el nombre de la tabla incluida en el campo Tabla y el nombre del campo que se desea
excluir en el campo Nombre de campo.
Al usar una vista append, puede incluir campos de las tablas de base de una vista de base de
datos en la vista sin modificaciones. Usar una vista append es similar a ampliar una tabla con
una estructura append. Una vista append se asigna a una vista de base de datos. Se puede
crear ms de una vista append para una vista de base de datos.

Copyright . Reservados todos los derechos. 207


Captulo 8: Vistas y vistas de actualizacin

208 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 15
Crear una vista de base de datos

Ejemplo empresarial
Los datos para un empleado estn distribuidos entre varias tablas (de acuerdo con el modelo
de datos relacionales). Para algunas tareas, sin embargo, se necesita una vista completa de
estos datos. En este ejercicio, las vistas correspondientes se implementan mediante la
creacin de vistas de base de datos.
El personal de vuelo (todos los pilotos y los auxiliares) se deben seleccionar cuando se define
la tripulacin de un vuelo. No todos los datos en la tabla ZEMPLOY## se pueden visualizar
cuando se accede a los datos; por ejemplo, el empleado que forma los equipos no podr ver el
salario de los miembros de la tripulacin. El nmero de telfono del departamento del
empleado debera mostrarse por si hubiera preguntas.
Es necesario crear vistas, definir condiciones de conexin y almacenar las vistas de base de
datos en la memoria intermedia.

1. Cree una vista de base de datos adecuada llamada ZEMPFLY## que cumpla los requisitos.
Se debera visualizar la informacin siguiente sobre un empleado:
Mandante
Ca.area
Nmero de personal
Nombre de pila
Apellido
Nmero de telfono del departamento
Cdigo de departamento

Nota:
La vista debera permitir ver los datos en las tablas ZEMPLOY## y
ZDEPMENT##. En la vista se deberan visualizar datos de los empleados (de la
tablas ZEMPLOY##) y departamentos (de la tabla ZDEPMENT##)

2. Copie los campos de las tablas a la vista.

3. Asegrese de que solo se pueda seleccionar el personal de vuelo con la vista. Defina esta
restriccin en la etiqueta Condiciones de seleccin.

4. Grabe la vista en la memoria intermedia.


Probablemente tendr que acceder (con frecuencia) a los datos mediante esta vista. Por
lo tanto, para maximizar el rendimiento los datos seleccionados se deben almacenar en la

Copyright . Reservados todos los derechos. 209


Captulo 8: Vistas y vistas de actualizacin

memoria intermedia. En la pantalla de opciones tcnicas, seleccione la casilla de seleccin


Grabar completamente en memoria intermedia .

210 Copyright . Reservados todos los derechos.


Captulo 8
Solucin 15
Crear una vista de base de datos

Ejemplo empresarial
Los datos para un empleado estn distribuidos entre varias tablas (de acuerdo con el modelo
de datos relacionales). Para algunas tareas, sin embargo, se necesita una vista completa de
estos datos. En este ejercicio, las vistas correspondientes se implementan mediante la
creacin de vistas de base de datos.
El personal de vuelo (todos los pilotos y los auxiliares) se deben seleccionar cuando se define
la tripulacin de un vuelo. No todos los datos en la tabla ZEMPLOY## se pueden visualizar
cuando se accede a los datos; por ejemplo, el empleado que forma los equipos no podr ver el
salario de los miembros de la tripulacin. El nmero de telfono del departamento del
empleado debera mostrarse por si hubiera preguntas.
Es necesario crear vistas, definir condiciones de conexin y almacenar las vistas de base de
datos en la memoria intermedia.

1. Cree una vista de base de datos adecuada llamada ZEMPFLY## que cumpla los requisitos.
Se debera visualizar la informacin siguiente sobre un empleado:
Mandante
Ca.area
Nmero de personal
Nombre de pila
Apellido
Nmero de telfono del departamento
Cdigo de departamento

Nota:
La vista debera permitir ver los datos en las tablas ZEMPLOY## y
ZDEPMENT##. En la vista se deberan visualizar datos de los empleados (de la
tablas ZEMPLOY##) y departamentos (de la tabla ZDEPMENT##)

a) En la pantalla inicial del Dictionary ABAP, marque el tipo de objeto Vista, introduzca el
nombre de objeto ZEMPFLY## y seleccione Crear.

b) En la ventana de dilogo Seleccionar tipo de vista seleccione el pulsador Vista de base


de datos .

c) Seleccione el pulsador Copiar.

Copyright . Reservados todos los derechos. 211


Captulo 8: Vistas y vistas de actualizacin

d) Introduzca un texto breve en el campo Descripcin breve e introduzca la tabla


ZEMPLOY## en el campo Tablas .

e) Seleccione el pulsador Relaciones. Se detallan en una lista todas las relaciones de


claves externas entre la tabla ZEMPLOY## y otras tablas. Marque la relacin con la
tabla ZDEPMENT## y seleccione el pulsador Copiar. Las condiciones de conexin se
copian de la clave externa.

f) En una segunda ventana de SAP GUI, visualice la clave externa entre las dos tablas y
observe la relacin entre la clave externa y las condiciones de conexin.

2. Copie los campos de las tablas a la vista.


a) Seleccione la ficha Campos de vista.

b) Seleccione el pulsadorCampos de tabla. En la siguiente ventana de dilogo, marque la


tabla ZEMPLOY## y seleccione el pulsador Seleccionar.

c) Se mostrarn en una lista todos los campos de la tabla ZEMPLOY## . Marque los
campos Mandante, Ca. area, N de personal, Nombre de pila y Apellido. Seleccione el
pulsador Copiar.
Los campos se insertan en la vista.

d) Seleccione nuevamente el pulsadorCampos de tabla. En la ventana de dilogo,


seleccione la tabla ZDEPMENT## e inserte los campos Telfono de departamento y
Cdigo de departamento en la vista como se describi anteriormente.

e) Seleccione la ficha Condiciones de seleccin.

3. Asegrese de que solo se pueda seleccionar el personal de vuelo con la vista. Defina esta
restriccin en la etiqueta Condiciones de seleccin.
a) La restriccin sobre si un empleado pertenece al personal de un vuelo o no se
encuentra en el campo rea en la tabla ZEMPLOY## . Introduzca los nombres y los
campos de la tabla en las columnas Tabla y Nombre de campo.

b) Debido a que el personal de vuelo se identifica con el valor F en el campo REA ,


introduzca EQ en la columna Operador y F en la columna Compar. Valor.

4. Grabe la vista en la memoria intermedia.


Probablemente tendr que acceder (con frecuencia) a los datos mediante esta vista. Por
lo tanto, para maximizar el rendimiento los datos seleccionados se deben almacenar en la
memoria intermedia. En la pantalla de opciones tcnicas, seleccione la casilla de seleccin
Grabar completamente en memoria intermedia .
a) Seleccione Pasar a Opciones tcnicas. Se muestra la pantalla de actualizacin de las
opciones tcnicas de la vista. A excepcin de algunos atributos que son irrelevantes
para las vistas y que, por lo tanto, no se visualizan, la pantalla es similar a la pantalla de
actualizacin de tablas correspondiente.

b) Marque el botn de seleccin Grabacin activa en memoria intermedia .

c) Marque la casilla de seleccin Grabar completamente en memoria intermedia.

d) Grabe las opciones tcnicas y regrese a la pantalla Actualizacin de vista .

e) Active la vista.

212 Copyright . Reservados todos los derechos.


Leccin: Definir vistas

RESUMEN DE LA LECCIN
Ahora podr:
Describir vistas
Definir vistas de base de datos

Copyright . Reservados todos los derechos. 213


Captulo 8
Leccin 2
Definir vistas de actualizacin

RESUMEN DE LA LECCIN
Esta leccin describe las vistas de actualizacin y explica cundo usarlas.

Ejemplo empresarial
Debe definir vistas de actualizacin. Por este motivo, se requieren los siguientes
conocimientos:
Comprender cmo crear vistas de actualizacin
Comprender cmo usar vistas de actualizacin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir vistas de actualizacin
Definir vistas de actualizacin
Valorar cundo se deben usar vistas de actualizacin

Vistas de actualizacin

Figura 81: Recopilacin de datos mediante las mscaras de actualizacin generadas

214 Copyright . Reservados todos los derechos.


Leccin: Definir vistas de actualizacin

Los datos distribuidos en ms de una tabla forman una unidad lgica llamada objeto de
aplicacin. La implementacin tcnica del objeto de aplicacin, como la distribucin de los
datos entre varias tablas, no interesa al usuario final.
Puede actualizar fcilmente objetos de aplicacin por medio de una vista de actualizacin.
Los datos se distribuyen automticamente en las tablas de base de datos subyacentes.
Todas las tablas que se utilizan en una vista de actualizacin se deben vincular a una clave
externa. Esto significa que las condiciones de conexin se derivan siempre de la clave externa
en la vista de actualizacin. No se pueden introducir las condiciones de conexin
directamente como en la vista de base de datos.
Se debe generar una interfaz de actualizacin en la que se puedan visualizar, modificar y
crear los datos de la vista a partir de la definicin de una vista de actualizacin en el Dictionary
ABAP.
Una vez creada la interfaz de actualizacin, los mdulos de funciones que distribuyen los
datos actualizados con la vista en las tablas subyacentes se generan automticamente.
La interfaz de actualizacin se genera por medio de la transaccin Generar dilogo de
actualizacin de tablas (transaccin SE54) o desde el Dictionary ABAP si selecciona
Utilidades Generador de actualizacin de tabla.

Dilogo de actualizacin para una vista de actualizacin

Figura 82: Dilogo de actualizacin para una vista de actualizacin

En un dilogo de actualizacin en un paso, los datos de las filas de la tabla se representan


como un control de tabla. Los campos clave tienen el fondo gris y no son modificables. Los
campos de funciones tienen el fondo blanco y se pueden modificar.
En un dilogo de actualizacin en dos pasos, haga doble clic en una lnea de tabla para
presentar claramente el registro de los datos seleccionados.

Copyright . Reservados todos los derechos. 215


Captulo 8: Vistas y vistas de actualizacin

Definicin de una vista de actualizacin

Figura 83: Definicin de una vista de actualizacin 1

Al crear una vista de actualizacin, considere los siguientes puntos:


Seleccione Vista de actualizacin como el Tipo de vista.
Coloque todos los campos clave de la tabla primaria en Definicin de vista.
Incluya el campo del mandante para las tablas o vistas que dependen del mandante. Sin
embargo, este campo no aparece en la vista de actualizacin.

Nota:
No copie los campos de idioma de las tablas como tablas secundarias. Durante
la actualizacin, el idioma de inicio de sesin aparece automticamente en las
tablas de texto.

Primero defina los campos clave; despus, los campos de funciones. Los campos de
funciones y los campos clave no pueden mezclarse.

216 Copyright . Reservados todos los derechos.


Leccin: Definir vistas de actualizacin

Creacin de una vista de actualizacin

Figura 84: Definicin de una vista de actualizacin 2

Introduzca un texto breve explicativo en el campo de descripcin breve.

Pasos para crear una vista de actualizacin

Los siguientes pasos se utilizan para crear una vista de actualizacin:


Copia de tablas
Especifique la tabla primaria de la vista en la etiqueta Tablas o Condiciones de conexin en
Tablas. Solo se pueden incluir en la vista de actualizacin las vistas conectadas a la tabla
primaria (indirectamente) por medio de una clave externa.
En caso necesario, incluya otras tablas en la vista. Solo podr incluir tablas en una vista de
actualizacin si estn conectadas entre s por medio de claves externas. Site el cursor en
la tabla primaria y seleccione Relaciones. Se visualizarn todas las relaciones de claves
externas de la tabla primaria. Seleccione la clave externa deseada y seleccione Copiar. La
tabla secundaria involucrada en la clave externa se copia en la vista. Se visualizan las
condiciones de conexin (relacin de clave externa y condicin de conexin) derivadas de
las claves externas.
Tambin puede incluir tablas conectadas a una de las tablas secundarias copiadas
anteriormente mediante una clave externa. Site el cursor en la tabla secundaria y active
Relaciones. Las relaciones de claves externas para las que no sea adecuada una vista de
actualizacin se visualizarn al final de la lista, bajo el ttulo Relaciones con cardinalidad
inadecuada.
Copia de los campos de vista
En la etiqueta Campo de vista seleccione los campos que desea copiar en la vista.

Copyright . Reservados todos los derechos. 217


Captulo 8: Vistas y vistas de actualizacin

Active Campos de tabla. Todas las tablas contenidas en la vista se visualizan en una
ventana de dilogo. Al seleccionar una tabla, los campos de la tabla se visualizan en una
ventana de dilogo. Puede eliminar campos resaltndolos en la primera columna y
seleccionando Copiar.
Todos los campos clave de la tabla primaria deben estar incluidos en una vista de
actualizacin. Adems, todos los campos clave de tablas secundarias no relacionadas con
la clave externa (es decir, que no estn conectadas con un campo clave ya incluido en la
vista por medio de una condicin de conexin) se deben incluir en esta vista.
De este modo se garantiza que los registros insertados mediante la vista de actualizacin
se puedan registrar correctamente en las tablas incluidas en la vista.
Condiciones de seleccin
En la etiqueta Condiciones de seleccin formule restricciones (opcionales) a los registros
de datos que se puedan visualizar mediante la vista (vase Actualizacin de una condicin
de seleccin de la vista). Las condiciones de seleccin definen qu registros de datos se
pueden seleccionar mediante la vista.
Status de actualizacin
En la etiqueta Status de actualizacin, defina el status de actualizacin de la vista. El status
de actualizacin determina el modo de acceso a los datos de la vista a travs de la
actualizacin de vista estndar (SM30).

Activar
Durante la activacin se escribe un registro, que se puede mostrar en Utilidades Log de
activacin. Si aparecen avisos de error o advertencia durante la activacin de la vista, el log
de activacin se muestra automticamente.

Generar dilogo de actualizacin

Figura 85: Generar un dilogo de actualizacin

218 Copyright . Reservados todos los derechos.


Leccin: Definir vistas de actualizacin

Puede generar mdulos de actualizacin e interfaces de actualizacin a partir de la definicin


de vista para realizar la distribucin de los datos introducidos mediante la vista a las tablas de
base de la vista.

Se llega al entorno de generacin de vistas de actualizacin por medio de uno de los


siguientes mtodos:
En el Dictionary ABAP (cdigo de transaccin SE11), seleccione Utilidades Generador
de actualizacin de tablas.
En el Men de acceso rpido de SAP, seleccione Herramientas Workbench
ABAP Desarrollo Otras herramientas Generar dilogo de actualizacin de tablas.
Llame directamente la transaccin SE54 .

En la pantalla inicial de la transaccin Generacin de dilogo de actualizacin de tablas,


siga los siguientes pasos:
Introduzca el nombre de la tabla o la vista sobre la que se debe basar el dilogo de
actualizacin.
Seleccione Objetos generados.
Seleccione el pulsador Crear/Cambiar.

Parmetros especificados en la definicin del dilogo de actualizacin

En la definicin del dilogo de actualizacin, debe especificar los parmetros siguientes:


Grupo de funciones
Defina el grupo de funciones en el que se generan los componentes del dilogo de
actualizacin. En caso necesario, cree un nuevo grupo de funciones.
Grupo de autorizaciones
A travs del grupo de autorizaciones, especifique qu usuarios tienen autorizacin para
actualizar el contenido de la vista o de las tablas.
Clase de actualizacin
A travs de la clase de actualizacin, defina si el dilogo consta de uno o ms pasos. Las
ventanas de dilogo de un paso consisten solo en una pantalla de resumen que contiene
todos los campos. En las ventanas de dilogo de dos pasos, solo se visualizan en la
pantalla de resumen los campos clave y de texto que tengan una longitud de ms de 20
caracteres. La lista completa de campos aparece en la pantalla detallada.
Pantallas de actualizacin
Aqu se especifica el nmero interno de cada pantalla de actualizacin. Cuando selecciona
Buscar nmeros de pantalla el sistema procesa los nmeros de pantalla disponibles.
Rutina de grabacin
En la rutina de grabacin especifica si el contenido de la vista o de las tablas actualizado en
la ventana de dilogo se puede incluir en un transporte, y cmo.

Una vez que se introducen todos los valores comienza la generacin del dilogo de
actualizacin. Si el proceso se ejecuta sin errores, la ventana de dilogo se puede usar de
inmediato para actualizar el contenido de la vista o la tabla. Para ello, inicie la transaccin
SM30 e introduzca la tabla o la vista para la que haya generado la vista de actualizacin en el
campo Tabla/Vista. Active el pulsador Actualizacin .

Copyright . Reservados todos los derechos. 219


Captulo 8: Vistas y vistas de actualizacin

220 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 16
Crear una vista de actualizacin

Ejemplo empresarial
Cree un dilogo de actualizacin simple para sus tablas de base de datos con el fin de generar
datos de test rpidamente en su proyecto.
Cree una vista de actualizacin llamada ZPARTNER##, para poder actualizar fcilmente los
nuevos interlocutores comerciales.

Nota:
Los interlocutores comerciales se introducen en la tabla SBUSPART. Un
interlocutor comercial puede ser un cliente particular o una agencia de viajes. Si
se trata de una agencia de viajes, existir una entrada correspondiente en la tabla
STRAVELAG.
La vista debera permitirle actualizar simultneamente las tablas SBUSPART y
STRAVELAG. Incluya todos los campos necesarios de las tablas en la vista.
Desea actualizar juntos los datos de las tablas SBUSPART y STRAVELAG en la
vista de actualizacin. Si desea introducir un nuevo interlocutor directamente,
introdzcalo primero en la tabla SBUSPART. Solo as podr introducir los datos
correspondientes en la tabla STRAVELAG (debido a la verificacin existente de
clave externa entre SBUSPART y STRAVELAG).

1. Cree una vista de actualizacin.

2. Incluya los campos de ambas tablas en la vista.

3. Genere un dilogo de actualizacin para la vista. Utilice los siguientes parmetros:

Nombre del campo Valor


Grupo de funciones ZZBC430##

Grupo de autorizaciones SUNI

Clase de actualizacin De un paso

Pantalla de resumen 100

4. Introduzca los datos de una nueva agencia de viajes por medio de la actualizacin
ampliada de tabla.

Copyright . Reservados todos los derechos. 221


Captulo 8
Solucin 16
Crear una vista de actualizacin

Ejemplo empresarial
Cree un dilogo de actualizacin simple para sus tablas de base de datos con el fin de generar
datos de test rpidamente en su proyecto.
Cree una vista de actualizacin llamada ZPARTNER##, para poder actualizar fcilmente los
nuevos interlocutores comerciales.

Nota:
Los interlocutores comerciales se introducen en la tabla SBUSPART. Un
interlocutor comercial puede ser un cliente particular o una agencia de viajes. Si
se trata de una agencia de viajes, existir una entrada correspondiente en la tabla
STRAVELAG.
La vista debera permitirle actualizar simultneamente las tablas SBUSPART y
STRAVELAG. Incluya todos los campos necesarios de las tablas en la vista.
Desea actualizar juntos los datos de las tablas SBUSPART y STRAVELAG en la
vista de actualizacin. Si desea introducir un nuevo interlocutor directamente,
introdzcalo primero en la tabla SBUSPART. Solo as podr introducir los datos
correspondientes en la tabla STRAVELAG (debido a la verificacin existente de
clave externa entre SBUSPART y STRAVELAG).

1. Cree una vista de actualizacin.


a) En el Dictionary ABAP, cree la vista ZPARTNER##. Seleccione la vista de Actualizacin
como tipo de vista.

b) Introduzca la tabla SBUSPART en el campo Tablas. Los campos clave de esta tabla se
incluyen automticamente en la vista como campos.

c) Site el cursor en el campo Tablas, en la entrada SBUSPART. Seleccione el pulsador


Relaciones.

d) Aparece una ventana de dilogo en la que se muestra una lista de todas las relaciones
de claves externas existentes entre la tabla SBUSPART y otras tablas.

e) En la ventana de dilogo, seleccione la relacin de clave externa para la tabla


STRAVELAG y seleccione Copiar.

f) Las condiciones de conexin se crean a partir de la clave externa. Las condiciones de


conexin tienen la forma siguiente:
SBUSPART-MANDANT = STRAVELAG-MANDT
SBUSPART-BUSPARTNUM = STRAVELAG-AGENCYNUM

2. Incluya los campos de ambas tablas en la vista.

222 Copyright . Reservados todos los derechos.


Leccin: Definir vistas de actualizacin

a) En la etiqueta Campos de Vista elija Campos de tabla y seleccione la tabla SBUSPART .


Aparece una lista de todos los campos en la tabla. Seleccione Seleccionar todo y
despus Copiar .

b) Incluya del mismo modo todos los campos de la tabla STRAVELAG en la vista, salvo los
campos MANDT y AGENCYNUM. Estos campos estn vinculados a los campos
correspondientes de la tabla SBUSPART mediante las condiciones de conexin, y por
lo tanto no deberan aparecer en la vista.

c) Active la vista.

3. Genere un dilogo de actualizacin para la vista. Utilice los siguientes parmetros:

Nombre del campo Valor


Grupo de funciones ZZBC430##

Grupo de autorizaciones SUNI

Clase de actualizacin De un paso

Pantalla de resumen 100

a) Seleccione Utilidades Generador de actualizacin de tablas.

b) En la siguiente pantalla introduzca el Grupo de autorizaciones, el Grupo de funciones y


el Tipo de actualizacin como aparece en la tabla. Seleccione 0100 como el nmero de
pantalla de actualizacin de la pantalla de resumen.

c) Seleccione Crear. Cuando se le soliciten paquetes para el Grupo de funciones y los


objetos de actualizacin generados, seleccione Objeto local.

4. Introduzca los datos de una nueva agencia de viajes por medio de la actualizacin
ampliada de tabla.
a) Seleccione Sistema Servicios Actualizacin de tablas Actualizacin ampliada
de tabla->Introducir Nombre de Vista->Actualizar.

b) Introduzca los datos de una nueva agencia de viajes.

c) Con el Browser de datos (en el men Entorno de la pantalla inicial del Dictionary
ABAP), verifique que los datos de la nueva agencia de viajes se hayan registrado en las
tablas SBUSPART y STRAVELAG.

Copyright . Reservados todos los derechos. 223


Captulo 8: Vistas y vistas de actualizacin

Ventajas y desventajas de los dilogos de actualizacin

Figura 86: Ventajas y desventajas de los dilogos de actualizacin

Los dilogos de actualizacin generados no se deben usar con regularidad por numerosos
usuarios.
Estos dilogos son para que una pequea cantidad de usuarios puedan actualizar fcil y
rpidamente las tablas customizing y de cliente que contienen una pequea o mediana
cantidad de datos.

224 Copyright . Reservados todos los derechos.


Leccin: Definir vistas de actualizacin

RESUMEN DE LA LECCIN
Ahora podr:
Describir vistas de actualizacin
Definir vistas de actualizacin
Valorar cundo se deben usar vistas de actualizacin

Copyright . Reservados todos los derechos. 225


Captulo 8
Leccin 3
Definir clusters de vistas

RESUMEN DE LA LECCIN
Esta leccin describe cmo ver clusters de vistas de actualizacin.

Ejemplo empresarial
Debe definir dilogos de actualizacin complejos. Por este motivo, se requieren los siguientes
conocimientos:
Comprender cmo crear clusters de vistas
Comprender cmo definir dilogos de actualizacin complejos

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir dilogos de actualizacin complejos

Clusters de vistas

Figura 87: Clusters de vistas y vistas de actualizacin

Si ha generado mltiples ventanas de actualizacin para vistas, puede combinarlas en un


cluster de vistas.

226 Copyright . Reservados todos los derechos.


Leccin: Definir clusters de vistas

Un cluster de vistas es un grupo de dilogos de actualizacin combinados en una unidad de


actualizacin por motivos tcnicos o empresariales.
Mientras que las vistas de actualizacin se pueden utilizar para actualizar solo tablas de base
de datos que tienen una relacin 1:1 entre s (con excepcin de tablas de texto que dependen
del idioma), los clusters de vistas pueden actualizar tablas de base de datos con una relacin
N:M entre s. Adems, las vistas de actualizacin se pueden combinar en un cluster de vistas
sin dependencia de clave ni subclave.
La navegacin dentro de un cluster de vistas suele estar orientada a la jerarqua de las tablas
o vistas subyacentes a los dilogos individuales. Las relaciones maestro-detalles, incluso
entre varios niveles, son especialmente adecuadas para un cluster de vistas.
Un cluster de vistas consiste en uno o ms dilogos principales. En un cluster de vistas se
pueden combinar un mximo de 14 dilogos de actualizacin. Cada dilogo de actualizacin
puede ser un dilogo de un paso o de dos pasos.
Antes de crear un cluster de vistas, primero debe generar dilogos de actualizacin para cada
vista de actualizacin. Luego podr combinar estos dilogos en un cluster de vistas.
Por medio de la transaccin SM34 podr actualizar los datos en un cluster de vistas.

Ventajas

Las ventajas de un cluster de vistas son las siguientes:

Navegacin
En un cluster de vistas se puede navegar cmodamente por los dilogos de actualizacin
individuales. La fcil navegacin simplifica la actualizacin de los datos en un cluster de
vistas.
Consistencia
El cluster de vistas garantiza la consistencia de los datos cuando se borran, se copian, se
graban, se recuperan y se transportan manualmente los datos. De este modo, cuando se
borra una entrada de una vista de un nivel superior, se garantiza automticamente que se
borrarn tambin todas las entradas dependientes de las vistas de nivel inferior.

Copyright . Reservados todos los derechos. 227


Captulo 8: Vistas y vistas de actualizacin

228 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 17
Crear un cluster de vistas

Ejemplo empresarial
Desea agrupar dilogos de actualizacin en un cluster de vistas.
Tarea 1
Generar mltiples dilogos de actualizacin para tablas de base de datos dependientes.
Combinar estos dilogos de actualizacin en un cluster de vistas. En este ejercicio use de
nuevo la tabla del modelo de datos de vuelo. Copie estas tablas con todo su contenido en el
rea para nombres de cliente.

1. Copie las tablas SCARR, SPFLI y SFLIGHT en el rea para nombres del cliente con el
nmero de grupo ZCARR##, ZPFLI## y ZFLIGHT##. Actualice las claves externas
correctamente en las nuevas tablas.

2. Copie el contenido de las tablas originales en las tablas recin creadas mediante un
report.

3. Cree un dilogo de actualizacin de dos pasos (nmeros de pantalla, p. ej. 100 y 110) para
cada tabla copiada.

4. Cree un cluster de vistas llamado ZPC_FLIGHT##.

5. Introduzca una descripcin breve significativa en la cabecera.

6. Cambie a Estructura de objeto e introduzca las siguientes nuevas entradas:


Ver/Tabla Descripcin Predecesor Dep Pos
breve
ZCARR## Cas. areas ZCARR## R 1
ZPFLI## Conexiones ZCARR## S 2
de vuelo
ZFLIGHT## Vuelos de la ZPFLI## S 3
conexin

7. Genere las dependencias entre campos para cada entrada de la lista.

8. Active el cluster de vistas.

9. Cree una entrada para una nueva compaa area y configure dos conexiones de vuelo y
dos vuelos para cada conexin de vuelo.

Copyright . Reservados todos los derechos. 229


Captulo 8
Solucin 17
Crear un cluster de vistas

Ejemplo empresarial
Desea agrupar dilogos de actualizacin en un cluster de vistas.
Tarea 1
Generar mltiples dilogos de actualizacin para tablas de base de datos dependientes.
Combinar estos dilogos de actualizacin en un cluster de vistas. En este ejercicio use de
nuevo la tabla del modelo de datos de vuelo. Copie estas tablas con todo su contenido en el
rea para nombres de cliente.

1. Copie las tablas SCARR, SPFLI y SFLIGHT en el rea para nombres del cliente con el
nmero de grupo ZCARR##, ZPFLI## y ZFLIGHT##. Actualice las claves externas
correctamente en las nuevas tablas.
a) Copie y active las tablas por medio de SE11. Ajuste las relaciones de la clave externa
ZPFLI## (CARRID -> ZCARR##) y ZFLIGHT## (CARRID -> ZCARR##, CONNID ->
ZPFLI##).

2. Copie el contenido de las tablas originales en las tablas recin creadas mediante un
report.
a) Consulte el cdigo fuente de la solucin modelo. Tambin puede buscar el report
correspondiente y copiarlo en el sistema.
REPORT SAPBC430S_FILL_CLUSTER_TAB.

DATA wa_scarr TYPE scarr.


DATA wa_spfli TYPE spfli.
DATA wa_flight TYPE sflight.

DATA my_error TYPE i VALUE 0.

START-OF-SELECTION.

* Replace ## by Your user-number

DELETE FROM zcarr##.


DELETE FROM zpfli##.
DELETE FROM zflight##.

SELECT * FROM scarr INTO wa_scarr.


INSERT INTO zcarr## VALUES wa_scarr.
ENDSELECT.

IF sy-subrc = 0.
SELECT * FROM spfli INTO wa_spfli.
INSERT INTO zpfli## VALUES wa_spfli.
ENDSELECT.

230 Copyright . Reservados todos los derechos.


Leccin: Definir clusters de vistas

IF sy-subrc = 0.

SELECT * FROM sflight INTO wa_flight.


INSERT INTO zflight## VALUES wa_flight.
ENDSELECT.
IF sy-subrc <> 0.
my_error = 1.
ENDIF.
ELSE.
my_error = 2.
ENDIF.
ELSE.
my_error = 3.
ENDIF.

IF my_error = 0.
WRITE / 'Data transport successfully finished'.
ELSE.
WRITE: / 'ERROR:', my_error.
ENDIF.

3. Cree un dilogo de actualizacin de dos pasos (nmeros de pantalla, p. ej. 100 y 110) para
cada tabla copiada.
a) Existen dos formas de visualizar la pantalla relevante en la transaccin SE54:

En SE11, introduzca el nombre de la tabla y seleccione Utilidades Generador de


actualizacin de tabla para acceder al entorno de generacin de la tabla.
Ejecute la transaccin SE54 e introduzca la tabla correspondiente. Marque Objeto
generado y seleccione Crear o Cambiar .

b) En la pantalla Generador de actualizacin introduzca el grupo de autorizaciones SUNI y


especifique los nombres de tabla correspondientes con el prefijo ZFP_ como el grupo
de funcin.

c) Seleccione Dos pasos como el tipo de actualizacin. Marque los nmeros 0100 y 0110
como nmeros de la pantalla de actualizacin de la pantalla de resumen y de la
pantalla individual.

d) Seleccione el pulsador Crear. Se inician el paquete del grupo de funciones y los objetos
de actualizacin generados. En ambos casos, seleccione Objeto local.

e) Repita esto con todas las tablas copiadas.

4. Cree un cluster de vistas llamado ZPC_FLIGHT##.


a) Ejecute el cdigo de transaccin SE54. En la pantalla inicial, seleccione Tratar cluster
de vistas para acceder a la pantalla para editar o crear un cluster de vistas.

b) Introduzca el nombre del cluster en el campo Cluster de vistas.

c) Seleccione Crear o Cambiar .

d) Ignore el mensaje "No modificar (datos de SAP)". Mientras permanezca en el rea


para nombres de cliente (Z* o Y*), este mensaje es irrelevante.

5. Introduzca una descripcin breve significativa en la cabecera.

6. Cambie a Estructura de objeto e introduzca las siguientes nuevas entradas:

Copyright . Reservados todos los derechos. 231


Captulo 8: Vistas y vistas de actualizacin

Ver/Tabla Descripcin Predecesor Dep Pos


breve
ZCARR## Cas. areas ZCARR## R 1
ZPFLI## Conexiones ZCARR## S 2
de vuelo
ZFLIGHT## Vuelos de la ZPFLI## S 3
conexin

a) En la ventana de navegacin haga doble clic en Estructura de dilogo, en el nodo


Estructura de objeto.

b) Seleccione el pulsador Nuevas entradas.

c) Introduzca los valores correspondientes en la tabla.

d) Marque la tabla ZCARR## como objeto inicial en la columna START .

7. Genere las dependencias entre campos para cada entrada de la lista.


a) Marque cada lnea de la estructura de objetos y genere las dependencias entre
campos mediante el pulsador Dependencia entre campos.

8. Active el cluster de vistas.


a) Haga doble clic en la ventana de dilogo de la entrada de cabecera y seleccione
Activar .

9. Cree una entrada para una nueva compaa area y configure dos conexiones de vuelo y
dos vuelos para cada conexin de vuelo.
a) Ejecute el cdigo de transaccin SM34.

b) Introduzca el nombre de su cluster de vistas en el campo de entrada y active el


pulsador Actualizar.

c) Cree las nuevas entradas, empezando por ZCARR##.

Nota:
Puede desplazarse por ellas en el lado izquierdo de la pantalla e introducir
o modificar los datos en el lado derecho.

d) Complete los datos y active el pulsador Grabar .

e) Repita los mismos pasos para ZSPFLI## y ZSLIGHT## e introduzca los datos sobre el
vuelo y su conexin.

f) Para ver los nuevos datos, ejecute el cdigo de transaccin SM34.

232 Copyright . Reservados todos los derechos.


Leccin: Definir clusters de vistas

RESUMEN DE LA LECCIN
Ahora podr:
Definir dilogos de actualizacin complejos

Copyright . Reservados todos los derechos. 233


Captulo 8: Vistas y vistas de actualizacin

234 Copyright . Reservados todos los derechos.


Captulo 8

Evaluacin de la formacin

1. En una vista de base de datos, se puede formular una condicin de _____ con campos
incluidos en la vista y campos que no estn incluidos en ella.
Seleccione la respuesta correcta.

X A proyeccin

X B tabla

X C seleccin

2. Un(a) ____________ se define en el Dictionary ABAP y se crea automticamente en la base


de datos durante la activacin.
Seleccione la respuesta correcta.

X A cluster de vistas

X B vista de base de datos

X C nombre de campo

3. Al crear una vista de actualizacin, los campos clave se deben definir antes que los
campos de funciones.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Un cluster de vistas consiste en una o ms vistas _________________ .


Seleccione la respuesta correcta.

X A de base de datos

X B de actualizacin

X C de ayuda

Copyright . Reservados todos los derechos. 235


Captulo 8

Respuestas a la Evaluacin de la formacin

1. En una vista de base de datos, se puede formular una condicin de _____ con campos
incluidos en la vista y campos que no estn incluidos en ella.
Seleccione la respuesta correcta.

X A proyeccin

X B tabla

X C seleccin

2. Un(a) ____________ se define en el Dictionary ABAP y se crea automticamente en la base


de datos durante la activacin.
Seleccione la respuesta correcta.

X A cluster de vistas

X B vista de base de datos

X C nombre de campo

3. Al crear una vista de actualizacin, los campos clave se deben definir antes que los
campos de funciones.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Un cluster de vistas consiste en una o ms vistas _________________ .


Seleccione la respuesta correcta.

X A de base de datos

X B de actualizacin

X C de ayuda

236 Copyright . Reservados todos los derechos.


CAPTULO 9 Ayudas para bsqueda

Leccin 1
Definir ayudas para bsqueda 238
Ejercicio 18: Crear ayudas para bsqueda 251

Leccin 2
Aplicacin de tcnicas de ayuda para bsqueda avanzada 255
Ejercicio 19: Crear ayudas para bsquedas compuestas 259
Ejercicio 20: Ampliar Ayudas para bsqueda mediante Ayudas para bsqueda append 263

OBJETIVOS DEL CAPTULO

Describir el proceso de ayuda para entradas


Definir ayudas para bsqueda elementales
Definir ayudas para bsquedas compuestas
Ampliar Ayudas para bsqueda mediante Ayudas para bsqueda append
Implementar exits de ayuda para bsqueda

Copyright . Reservados todos los derechos. 237


Captulo 9
Leccin 1
Definir ayudas para bsqueda

RESUMEN DE LA LECCIN
Esta leccin describe el proceso de ayuda para entradas y las ayudas para bsqueda
elementales.

Ejemplo empresarial
Debe crear ventanas de dilogo que ofrezcan al usuario ayuda para entrada simple.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir el proceso de ayuda para entradas
Definir ayudas para bsqueda elementales

El proceso de ayuda para entradas

Figura 88: Funcin estndar de SAP Ayuda para entradas

La Ayuda para entradas (F4) es una funcin estndar del sistema SAP que permite al usuario
visualizar una lista con los valores posibles para un campo de dynpro. En los campos listos
para la entrada puede introducirse un valor directamente seleccionndolo en la lista.
Los campos con Ayuda para entradas se sealan en el sistema SAP con la clave de Ayuda
para entradas a la derecha del campo. Esta clave aparece en cuanto se sita el cursor en el
campo de dynpro correspondiente. La ayuda se puede iniciar seleccionando la tecla de ayuda
para entradas o mediante la tecla de funcin F4.

238 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Si el nmero de entradas posibles en un campo es muy grande, se puede limitar el conjunto


de valores visualizados mediante restricciones.
Las entradas posibles se visualizan con informacin til adicional acerca de los valores
expuestos. Esta caracterstica resulta especialmente til si se debe introducir en el campo
una clave formal.
Puesto que la ayuda para entradas es una funcin estndar, se representa y comporta del
mismo modo en todo el sistema SAP. Por este motivo, el entorno de desarrollo ofrece
herramientas para anexar a los campos de dynpro una Ayuda para entradas estandarizada.
La descripcin precisa de la Ayuda para entradas de un campo se suele definir
semnticamente. Por ello, la Ayuda para entradas de un campo se suele definir en el
Dictionary ABAP.

Requisitos de Ayuda para entradas

Figura 89: Requisitos de Ayuda para entradas

La ayuda para entradas de un campo de dynpro (campo de bsqueda) debe cumplir los
siguientes requisitos:
Se debe tener en cuenta la informacin (contextual) conocida por el sistema en la Ayuda
para entradas. Esto incluye entradas que el usuario haya hecho ya en la mscara de
entrada actual e informacin obtenida en las ventanas de dilogo anteriores.
Normalmente, la Ayuda para entradas usa el contexto para limitar el conjunto de valores
posibles.
La Ayuda para entradas debe determinar los valores que se pueden ofrecer al usuario para
que seleccione de entre ellos. Tambin se deben determinar los datos que se visualizarn
como informacin complementaria en la lista de valores posibles. Cuando se determinen
los valores posibles, debern tenerse en cuenta las restricciones derivadas del contexto y
de las dems condiciones de bsqueda especificadas por el usuario.

Copyright . Reservados todos los derechos. 239


Captulo 9: Ayudas para bsqueda

La Ayuda para entradas debe dialogar con el usuario. En el dilogo se presentan los
valores posibles (con informacin complementaria) en forma de lista y se ofrece la
posibilidad de marcar un valor de la lista. A veces tambin se necesita una plantilla de
bsqueda en la que el usuario pueda definir condiciones para los valores que se deben
visualizar.
Si el usuario marca un valor, la Ayuda para entradas devolver el valor en el campo de
bsqueda. La plantilla de entrada contiene a menudo ms campos (a menudo son campos
de visualizacin slo) que aportan ms informacin sobre el campo de bsqueda. La
Ayuda para entradas debera actualizar adems el contenido de estos campos si los hay.

Ayudas para bsqueda elementales

Figura 90: Objeto de Dictionary ABAP: Ayuda para bsqueda

El objeto de Dictionary ABAP Ayuda para bsqueda se usa para describir una Ayuda para
entradas. La definicin de una Ayuda para bsqueda contiene la informacin que el sistema
necesita para cumplir los requisitos descritos.
La interfaz de la Ayuda para entradas controla la transferencia de datos desde la mscara de
entrada hasta la Ayuda para entradas y a la inversa. La interfaz define los datos contextuales
que se utilizarn y los datos que se devolvern en la mscara de entrada cuando se seleccione
un valor.
El comportamiento interno de la Ayuda para bsqueda describe el proceso de ayuda de valor
propiamente dicho. Esto incluye el mtodo de seleccin con el que se determinan los valores
que se van a visualizar, as como el comportamiento del dilogo que describe la interaccin
con el usuario.
Al igual que ocurre con un mdulo de funciones, las Ayudas para bsqueda distinguen entre la
interfaz con la que intercambian datos con los dems componentes de software y el
comportamiento interno (en el caso de los mdulos de funciones, este ltimo punto se define
en el texto fuente).
Al igual que el editor de mdulos de funciones, el editor de Ayudas para bsqueda permite
probar un objeto. Puede probar el comportamiento de una Ayuda para bsqueda sin anexarla
a un campo de dynpro.

240 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Mtodo de seleccin de una Ayuda para bsqueda

Figura 91: Mtodo de seleccin de una Ayuda para bsqueda

Los valores posibles visualizados para un campo mediante la Ayuda para entradas se
determinan en tiempo de ejecucin mediante una seleccin de la base de datos. Cuando se
define una Ayuda para bsqueda, se debe definir el objeto de base de datos del que se
deberan seleccionar los datos especificando una tabla o una vista como mtodo de
seleccin.
Utilice una vista como mtodo de seleccin si los datos sobre los valores posibles relevantes
para la Ayuda para entradas estn distribuidos entre varias tablas. Si todos estos datos se
encuentran en la misma tabla o en la tabla de texto correspondiente, puede usar la tabla
como mtodo de seleccin. El sistema comprobar automticamente que el texto de la tabla
de texto se use en el idioma de inicio de sesin del usuario.
Si no hay disponible una vista que combina los datos relevantes para una Ayuda para
entradas, crela en el Dictionary ABAP.
Las vistas de actualizacin no se pueden utilizar como mtodo de seleccin para Ayudas para
bsqueda. Normalmente se usa una vista de base de datos. Sin embargo, tenga en cuenta
que las vistas de base de datos (en el sistema SAP) se crean siempre con una conexin
interna. En consecuencia, solo se ofrecern como Ayuda para entradas los valores que
tengan una entrada en cada una de las tablas implicadas. A veces los valores se deberan
determinar mediante una conexin externa. En tal caso, seleccione una vista para Ayuda
como mtodo de seleccin.
Si el mtodo de seleccin de una Ayuda para bsqueda depende del mandante, los valores
posibles solo se seleccionarn dentro del mandante en que el usuario haya iniciado la sesin.

Copyright . Reservados todos los derechos. 241


Captulo 9: Ayudas para bsqueda

Descripcin del comportamiento del dilogo

Figura 92: Descripcin del comportamiento del dilogo

Los valores posibles se presentan en una lista en la ventana de dilogo para que el usuario
pueda seleccionar en ella la entrada necesaria. Esta ventana se llama ventana de dilogo de
lista de aciertos. Si los valores posibles son claves formales, se deber visualizar ms
informacin.
Si la lista de aciertos es muy larga, el usuario puede definir ms restricciones para los
atributos de la entrada. Al restringir el conjunto de datos de este modo, mejora la claridad de
la lista y se reduce la carga del sistema. Se pueden introducir condiciones adicionales en otra
ventana de dilogo. Esta ventana se llama ventana de dilogo para restringir valores.
El tipo de dilogo de una Ayuda para bsqueda define si la ventana de dilogo para restringir
valores se visualiza antes de crear la lista de aciertos.
Defina las caractersticas que debern aparecer en cada una (o en ambas) ventanas de
dilogo como parmetros en la Ayuda para bsqueda. Puede usar como parmetros todos
los campos del mtodo de seleccin (salvo el campo de mandante) y los campos que no sean
clave de la tabla de texto.
Qu parmetros aparecen en cada ventana de dilogo (y en qu orden) se define
especificando las posiciones de los parmetros en las dos ventanas de dilogo. De este modo
se pueden usar distintos parmetros (u rdenes) en las dos ventanas de dilogo.
Los tipos de parmetros de ayuda para bsqueda tienen que definirse con elementos de
datos. De este modo se define la visualizacin en las dos ventanas de dilogo. Si no se define
nada ms, un parmetro usar el elemento de datos del campo correspondiente del mtodo
de seleccin.

242 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Interfaz de una Ayuda para bsqueda

Figura 93: Interfaz de una Ayuda para bsqueda

Cuando se define un parmetro de una Ayuda para bsqueda, se debe definir tambin si se lo
usar para copiar datos en la Ayuda para entradas (parmetro IMPORT), o si se deben
devolver datos con la Ayuda para entradas (parmetro EXPORT).
Los parmetros IMPORT y EXPORT de una Ayuda para bsqueda componen juntos la
interfaz. Los parmetros de una ayuda para bsqueda se pueden comparar con los de un
mdulo de funciones.
Tambin se pueden definir parmetros de interfaz que no aparecen ni en la ventana de
dilogo para visualizar la lista de aciertos ni en la ventana para restringir valores. Esto podra
resultar til, por ejemplo, si se deben actualizar campos de dynpro que no aparecen en
ninguna de las dos ventanas de dilogo cuando se selecciona un valor.
La ubicacin de los parmetros IMPORT de los que una Ayuda para bsqueda obtiene sus
valores y los campos de dynpro en los que se devuelve el contenido de los parmetros
EXPORT de la Ayuda para bsqueda se definen en la conexin a Ayuda para bsqueda.
El campo de bsqueda es un caso especial. Su contenido solo se usa en la Ayuda para
entradas si se trata de una cadena de bsqueda (es decir, si contiene los caracteres * o +) y el
parmetro vinculado al campo de bsqueda es un parmetro IMPORT.
Los parmetros que solo contengan informacin adicional sobre el campo de bsqueda no se
deberan definir como parmetros IMPORT, ya que de lo contrario el usuario deber vaciar los
campos de dynpro correspondientes cada vez que se defina un nuevo valor con la Ayuda para
entradas.

Copyright . Reservados todos los derechos. 243


Captulo 9: Ayudas para bsqueda

Uso de ayudas para bsqueda

Figura 94: Uso de ayudas para bsqueda

Una Ayuda para bsqueda describe el flujo de una Ayuda para entradas. La Ayuda para
bsqueda solo puede surtir efecto si se usa un mecanismo para anexar la Ayuda para
bsqueda a este campo. Este mecanismo se conoce como anexo de Ayuda para bsqueda
para el campo.
Cuando se anexa una Ayuda para bsqueda a un campo, repercute en el comportamiento del
campo. Por eso se considera que forma parte de la definicin del campo.
Los atributos semnticos y tcnicos de un campo de dynpro (tipo, longitud, ayuda para
campo, etc.) no se definen directamente cuando se define la mscara de entrada. Al
contrario, solo se especifica una referencia a un campo del Dictionary ABAP (normalmente
llamado igual) en el Screen Painter. El campo de dynpro toma los atributos de este campo del
Dictionary ABAP. El mismo principio se usa tambin para definir la Ayuda para entradas de un
campo de dynpro. La Ayuda para bsqueda se aade as al campo de bsqueda del Dictionary
ABAP y no al campo de dynpro.
En la conexin a Ayuda para bsqueda, los parmetros de la interfase de la Ayuda para
bsqueda y los campos de dynpro que facilitan datos para la Ayuda para entradas o que
obtienen datos de la Ayuda para entradas se asignan entre s. El campo de bsqueda se debe
asignar en este punto a un parmetro EXPORT de la Ayuda para bsqueda. Este parmetro
debera ser un parmetro IMPORT para que el usuario pueda beneficiarse de los strings de
bsqueda ya introducidos.
Los campos sin conexin a Ayuda para bsqueda pueden tener una Ayuda para entradas, ya
que tambin se usan otros mecanismos para la Ayuda para entradas (por ejemplo, valores
fijos de dominio).

244 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Conexin a Ayuda para bsqueda en el Dictionary ABAP

Figura 95: Conexin a Ayuda para bsqueda en el Dictionary ABAP

Se puede anexar una Ayuda para bsqueda a objetos del Dictionary ABAP de una de las
siguientes maneras:
Una Ayuda para bsqueda se puede anexar directamente a un campo de una estructura o
tabla. La asignacin se define igual que una clave externa. Deber definir una asignacin
(entre los parmetros de interfaz de la Ayuda para bsqueda y los campos de la
estructura) para la que el sistema realizar una propuesta.
Si un campo tiene una tabla de verificacin, su contenido se ofrecer automticamente
como valores posibles en la Ayuda para entradas. Se muestran los campos clave de la
tabla de verificacin. Si una tabla de verificacin incluye una tabla de texto, se visualizar
su primer campo de caracteres que no sea clave. Si no le satisface la visualizacin
estndar descrita de los datos de la tabla de verificacin, puede asignar una Ayuda para
bsqueda a la tabla de verificacin. Esta Ayuda para bsqueda se usa para todos los
campos que tienen esta tabla como tabla de verificacin. Deber definir una asignacin
entre la interfaz de la Ayuda para bsqueda y la clave de la tabla de verificacin.
La semntica de un campo y sus valores posibles se definen por medio de su elemento de
datos. Por lo tanto, puede asignar una ayuda para bsqueda a un elemento de datos. La
Ayuda para bsqueda estar luego disponible para todos los campos que hagan referencia
a este elemento de datos. En la asignacin debe definir un parmetro EXPORT de la Ayuda
para bsqueda para la transferencia de datos.

La conexin de una Ayuda para bsqueda a una tabla de verificacin (o a un elemento de


datos) puede dar lugar a un alto grado de posibilidad de reutilizacin. Sin embargo, existen
restricciones sobre la transferencia de ms valores a travs de la interfaz de la Ayuda para
bsqueda.

Copyright . Reservados todos los derechos. 245


Captulo 9: Ayudas para bsqueda

Resumen - Mecanismos para la Ayuda para entradas

Figura 96: Resumen - Mecanismos para la Ayuda para entradas

A fin de ofrecer una Ayuda para entradas lgica para tantos campos de dynpro como sea
posible, el sistema SAP usa varios mecanismos. Si hay ms de uno de estos mecanismos
disponible para un campo, se usar el que est ms a la izquierda o en la parte superior de la
jerarqua anterior.
Adems de las opciones descritas para definir la Ayuda para entradas de un campo en el
Dictionary ABAP, esta se puede definir tambin en el campo de dynpro. La desventaja en este
caso es que no se puede reutilizar automticamente.
Utilizando el evento de dynpro POV (PROCESS ON VALUE-REQUEST) puede programar
personalmente la Ayuda para entradas para un campo. Se puede ajustar el diseo de la ayuda
a la ayuda estndar mediante los mdulos de funciones F4IF_FIELD_VALUE_REQUEST o
F4IF_INT_TABLE_VALUE_REQUEST.
Sin embargo, compruebe si la parte de la Ayuda para entradas que ha programado
personalmente se debera implementar como exit de Ayuda para bsqueda.
Por lo tanto, se puede anexar una Ayuda para bsqueda a un campo de dynpro en el Screen
Painter. Existen ciertas restricciones de tipo funcional para esta clase de anexo en
comparacin con los anexos en el Dictionary.
No se deberan seguir usando las verificaciones de entrada definidas directamente en la
lgica de flujo del dynpro, del que se derivan tambin Ayudas para entrada.
La funcin Info tcnica se ofrece en el men contextual de la lista de aciertos. Se puede usar
para averiguar cul de los mecanismos especificados se est usando.

246 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Rendimiento de la Ayuda para entradas

Figura 97: Rendimiento de la Ayuda para entradas

A veces hay que buscar gran cantidad de datos en las selecciones de una Ayuda para
entradas. Esto significa que puede que el usuario tenga que esperar mucho tiempo antes de
que se visualicen las entradas posibles, y podra suponer adems un aumento considerable
de la carga en el sistema.
Cuando se define una Ayuda para bsqueda, se debe verificar si se pueden tomar medidas
para optimizar el comportamiento de acceso para el mtodo de seleccin. Esto es cierto
sobre todo si la seleccin usa una vista y, por lo tanto, ms de una tabla de base de datos.
Si el nmero posible de entradas en la lista de aciertos es muy extenso, puede limitar la lista
de aciertos por medio de condiciones. Limitar la lista de aciertos con condiciones tambin
aumenta la legibilidad de la lista de aciertos. Las condiciones adicionales se pueden derivar
directamente del contexto, o bien el usuario las puede introducir en la ventana de dilogo
para restringir valores. A menudo, el rendimiento de la Ayuda para entradas se puede mejorar
considerablemente mediante la creacin de un ndice en los campos usados para formular las
restricciones.
Si el nmero de entradas en el mtodo de seleccin es relativamente reducido, verifique si se
puede grabar el mtodo de seleccin en la memoria intermedia.

Copyright . Reservados todos los derechos. 247


Captulo 9: Ayudas para bsqueda

La vista como mtodo de seleccin de una Ayuda para bsqueda

Figura 98: La vista como mtodo de seleccin de una Ayuda para bsqueda

Si el mtodo de seleccin de una Ayuda para bsqueda es una vista de base de datos, en la
Ayuda para entradas slo se visualizarn los registros para los que existan entradas en todas
las tablas implicadas en la vista (conexin interna). El conjunto de entradas posibles se
describe a veces mediante las entradas en la tabla primaria para las se aade informacin
opcional adicional procedente de otras tablas secundarias. Esta vista de los datos se puede
implementar con una vista para Ayuda en el sistema SAP. Para las vistas de ayuda se usa la
misma lgica de conexin externa que para las vistas de actualizacin.
Una vista para Ayuda se define del mismo modo que una vista de actualizacin. Las vistas de
ayuda slo se pueden utilizar como mtodos de seleccin en Ayudas para bsqueda. Puesto
que el sistema SAP no puede transmitir directamente la seleccin en una vista para Ayuda a
la base de datos, debe generar sus propias rutinas de acceso. La vista de base de datos se
debera usar, pues, como mtodo de seleccin preferente antes que la vista para Ayuda.
La seleccin mediante una tabla y una tabla de texto equivale a la seleccin mediante una
vista para Ayuda virtual. Por eso no se debe crear una vista para Ayuda virtual extra en este
caso.
Existe una excepcin a esta regla, en la que la tabla contiene un campo con el mismo nombre
que un campo sin clave en la tabla de texto. Si se necesita este campo de la tabla de texto en
la Ayuda para bsqueda, deber crear una vista para Ayuda en las dos tablas, porque no se
puede acceder directamente al campo en la Ayuda para bsqueda.
Normalmente el nombre de las vistas de ayuda empieza por el prefijo H_. Las vistas que
empiezan con los prefijos H_Y o H_Z estn, pues, en el rea para nombres del cliente.

248 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

Visualizaciones alternativas de la Ayuda para entradas

Figura 99: Visualizaciones alternativas de la Ayuda para entradas

El sistema SAP ofrece tres formas de presentacin de la Ayuda para entradas:


Lista desplegable
Control (amodal)
Dilogo (modal)

La lista desplegable no ofrece ms condiciones de seleccin ni visualiza ms columnas en la


lista de aciertos. Sin embargo, la lista desplegable es la Ayuda para entradas ms fcil de
utilizar para los usuarios en el caso de las listas claras de una sola columna. El desarrollador
de la aplicacin decide si se debe ofrecer un campo como lista desplegable y guarda esta
informacin en el Screen Painter del campo correspondiente. Cuando el usuario llama la lista
desplegable, los datos que se deben visualizar se obtienen mediante el mecanismo de Ayuda
para entradas almacenado en el Dictionary ABAP o en el Screen Painter del campo.

Nota:
Para obtener ms informacin sobre la utilizacin de listas desplegables, consulte
el curso BC410 Programacin de dilogos de usuario.

Otra posibilidad es visualizar los campos que no se ofrecen en forma de lista desplegable
como control amodal o mediante un dilogo modal implementado con la tecnologa de dynpro
de SAP. Mediante Ayuda Opciones, cada usuario puede definir la variante que prefiera.
Esta forma de presentacin se usa luego para todas las Ayudas para entrada del usuario en
cuestin. El administrador del sistema puede definir el valor de propuesta.
El control resulta especialmente til si se debe completar ms de un campo secuencialmente
con la misma Ayuda para entradas (por ejemplo, en un control de tabla). La funcin Retener
lista inicia el control desde la ayuda modal.

Copyright . Reservados todos los derechos. 249


Captulo 9: Ayudas para bsqueda

250 Copyright . Reservados todos los derechos.


Captulo 9
Ejercicio 18
Crear ayudas para bsqueda

Ejemplo empresarial
Muchas tareas de administracin obligan a buscar datos de un empleado. Se deben
proporcionar las opciones de bsqueda adecuadas para estas tareas.
Debe crear una ayuda para bsqueda simple para un campo de entrada.

1. Abra la tabla ZDEOMENT## en modo de visualizacin. Seleccione Utilidades Contenido


de tabla Crear entradas.
Aparecer una mscara de entrada en la que puede crear nuevas entradas para la tabla
ZDEPMENT## (por ejemplo, nuevos departamentos). El jefe del nuevo departamento se
debe definir siempre aqu. Realice esta entrada en el campo DEPHEAD. La actualizacin
de este campo debera estar soportada por una Ayuda para entradas que visualice el
(nmero de personal del) empleado. Compruebe que haya una Ayuda para entradas en el
campo. Averige qu mecanismo de Ayuda para entradas se usa aqu. El objetivo es hacer
que la Ayuda para entradas para la tabla de verificacin ZEMPLOY## sea ms fcil de
usar. Ms adelante lo comprobar; para ello, deber llamar nuevamente la Ayuda para
entradas. Con este fin, cree una Ayuda para bsqueda elemental ZEMPLOY##_ESH1.
Los atributos siguientes deberan aparecer en el orden especificado en la lista de aciertos:
Ca.area
Nombre de pila
Apellido
Nmero de personal
Puesto que son muchos los empleados, debera ofrecer al usuario la posibilidad de limitar
los valores visualizados especificando el nombre y/o el apellido de la persona que busca
antes de visualizar la lista de aciertos. Tenga presente que el apellido se usa ms a
menudo que el nombre de pila como restriccin.
Si el usuario especific una compaa area antes de llamar la Ayuda para entradas, esta
ltima debe considerar la compaa area. La lista de aciertos de la Ayuda para entradas
debe mostrar solo los empleados de las compaas areas. De otro modo, el campo de
dynpro de la compaa area debera completarse automticamente cuando el usuario
seleccione al empleado en la Ayuda para entradas. Pruebe su Ayuda para bsqueda.

2. Anexe la ayuda para bsqueda ZEMPLOY##_ESH1 a la tabla ZEMPLOY## para permitir


buscar en el campo DEPHEAD. Vuelva a la mscara de entrada en la que puede crear
nuevas entradas para la tabla ZDEPMENT##. Abra la Ayuda para entradas para el campo
de jefe de departamento y verifique si sus esfuerzos han sido exitosos.

Copyright . Reservados todos los derechos. 251


Captulo 9
Solucin 18
Crear ayudas para bsqueda

Ejemplo empresarial
Muchas tareas de administracin obligan a buscar datos de un empleado. Se deben
proporcionar las opciones de bsqueda adecuadas para estas tareas.
Debe crear una ayuda para bsqueda simple para un campo de entrada.

1. Abra la tabla ZDEOMENT## en modo de visualizacin. Seleccione Utilidades Contenido


de tabla Crear entradas.
Aparecer una mscara de entrada en la que puede crear nuevas entradas para la tabla
ZDEPMENT## (por ejemplo, nuevos departamentos). El jefe del nuevo departamento se
debe definir siempre aqu. Realice esta entrada en el campo DEPHEAD. La actualizacin
de este campo debera estar soportada por una Ayuda para entradas que visualice el
(nmero de personal del) empleado. Compruebe que haya una Ayuda para entradas en el
campo. Averige qu mecanismo de Ayuda para entradas se usa aqu. El objetivo es hacer
que la Ayuda para entradas para la tabla de verificacin ZEMPLOY## sea ms fcil de
usar. Ms adelante lo comprobar; para ello, deber llamar nuevamente la Ayuda para
entradas. Con este fin, cree una Ayuda para bsqueda elemental ZEMPLOY##_ESH1.
Los atributos siguientes deberan aparecer en el orden especificado en la lista de aciertos:
Ca.area
Nombre de pila
Apellido
Nmero de personal
Puesto que son muchos los empleados, debera ofrecer al usuario la posibilidad de limitar
los valores visualizados especificando el nombre y/o el apellido de la persona que busca
antes de visualizar la lista de aciertos. Tenga presente que el apellido se usa ms a
menudo que el nombre de pila como restriccin.
Si el usuario especific una compaa area antes de llamar la Ayuda para entradas, esta
ltima debe considerar la compaa area. La lista de aciertos de la Ayuda para entradas
debe mostrar solo los empleados de las compaas areas. De otro modo, el campo de
dynpro de la compaa area debera completarse automticamente cuando el usuario
seleccione al empleado en la Ayuda para entradas. Pruebe su Ayuda para bsqueda.
a) Seleccione Ayuda para bsqueda en la pantalla inicial del Dictionary ABAP e
introduzca ZEMPLOY##_ESH1 en el campo correspondiente.

b) Seleccione Crear. En la siguiente ventana de dilogo, confirme que desea crear una
Ayuda para bsqueda elemental.

c) Introduzca un texto breve para la Ayuda para bsqueda.

d) La Ayuda para bsqueda debera ayudar a buscar empleados. Estos se gestionan en la


tabla ZEMPLOY##. En consecuencia, seleccione esta tabla (o una vista de la misma)

252 Copyright . Reservados todos los derechos.


Leccin: Definir ayudas para bsqueda

como mtodo de seleccin. Para este ejercicio basta con la tabla. Introdzcala en el
campo Mtodo de seleccin.

e) Para lograr el comportamiento necesario, seleccione el tipo de dilogo Dilogo con


restriccin de valores.

f) Seleccione los parmetros de la Ayuda para bsqueda mediante la Ayuda para


entradas. Conserve la lista de aciertos con los posibles parmetros de Ayuda para
bsqueda mediante Retener, ya que en este caso no tiene que volver a llamar la ayuda.
Seleccione los campos Ca. area, Nombre de pila, Apellido y N personal como
parmetros.

g) Marque todos los parmetros como parmetros EXPORT (columna EXP). Marque el
atributo que se debe buscar (por ejemplo, N personal) y la compaa area en la
posicin ms elevada de la jerarqua como parmetros IMPORT (columna IMP). De
este modo se garantiza que se tenga en cuenta la entrada correspondiente en la
mscara de entrada (como se ha descrito en el ejercicio).

h) Defina la lista de aciertos especificando los nmeros de posicin correspondientes


(por ejemplo, 1, 2, 3, 4, 5) en la columna LPos.

i) Defina la ventana de dilogo para restringir valores especificando los nmeros de


posicin en la columna SPos. Tendr que introducir nmeros positivos en estas
columnas para los parmetros Nombre de pila y Apellido, donde el valor del Apellido
debe ser menor que el del Nombre de pila.

j) Active su Ayuda para bsqueda. La Ayuda para bsqueda no est activa an para el
campo ZDEPMENT##-DEPHEAD. Sin embargo, puede probar la Ayuda para bsqueda
de inmediato con la funcin Test .

2. Anexe la ayuda para bsqueda ZEMPLOY##_ESH1 a la tabla ZEMPLOY## para permitir


buscar en el campo DEPHEAD. Vuelva a la mscara de entrada en la que puede crear
nuevas entradas para la tabla ZDEPMENT##. Abra la Ayuda para entradas para el campo
de jefe de departamento y verifique si sus esfuerzos han sido exitosos.
a) Vaya al modo de modificacin en la pantalla de actualizacin para la tabla. Seleccione
Extras Ayuda para bsqueda para tabla. En la siguiente ventana de dilogo,
introduzca el nombre de la Ayuda para bsqueda ZEMPLOY##_ESH1. Seleccione el
pulsador Continuar.

b) Probablemente la propuesta creada por el sistema para asignar los parmetros de


Ayuda para bsqueda a los campos clave de la tabla ser correcta. Comprubelo y
copie la definicin.

c) Active la tabla ZEMPLOY##.

d) Seleccione Utilidades >Contenido de tabla >Crear entradas para la tabla


ZDEPMENT## nuevamente. Ahora la Ayuda para entradas del campo DEPHEAD
debera funcionar segn se deseaba.

Copyright . Reservados todos los derechos. 253


Captulo 9: Ayudas para bsqueda

RESUMEN DE LA LECCIN
Ahora podr:
Describir el proceso de ayuda para entradas
Definir ayudas para bsqueda elementales

254 Copyright . Reservados todos los derechos.


Captulo 9
Leccin 2
Aplicacin de tcnicas de ayuda para
bsqueda avanzada

RESUMEN DE LA LECCIN
Esta leccin explica cmo aplicar tcnicas de ayuda para bsqueda avanzada.

Ejemplo empresarial
Debe ampliar una ayuda para bsqueda compuesta mediante una ayuda para bsqueda
append sin modificaciones. Tambin debe implementar exits de ayuda para bsqueda. Por
este motivo, se requieren los siguientes conocimientos:
Comprender las ayudas para bsqueda compuestas
Comprender las ayudas para bsqueda append
Comprender exits de ayuda para bsqueda

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir ayudas para bsquedas compuestas
Ampliar Ayudas para bsqueda mediante Ayudas para bsqueda append
Implementar exits de ayuda para bsqueda

Ayudas para bsqueda compuesta

Figura 100: Trayectorias de bsqueda alternativas

En el modelo de datos relacionales, normalmente las entidades se representan mediante


claves formales. En la vida real, en cambio, estas entidades se identifican a menudo por
medio de uno o varios de sus atributos. Por ejemplo, la clave de una persona es el nmero de

Copyright . Reservados todos los derechos. 255


Captulo 9: Ayudas para bsqueda

personal. Generalmente una persona describir a otra con su nombre y, posiblemente, con su
direccin.
Los atributos usados para identificar una entidad pueden variar de un usuario a otro y de un
caso a otro. Un usuario desea usar estos atributos en una Ayuda para entradas con el fin de
definir un valor para un campo que requiere la entrada de una clave formal.
Por lo tanto, necesita trayectorias de bsqueda que permitan acceder a los datos mediante
campos que no sean clave. Deberan ser posibles varias trayectorias distintas para un campo.
Se puede implementar una trayectoria de bsqueda para un campo usando una ayuda para
bsqueda. Para describir una ayuda para entradas con ms de una trayectoria de bsqueda
alternativa, un conjunto de ayudas para bsqueda se puede combinar en una ayuda para
bsqueda compuesta en el sistema SAP.
Ayudas para bsqueda compuesta

Figura 101: Ayudas para bsqueda compuestas y Ayudas para bsqueda elementales

A diferencia de las Ayudas para bsqueda elementales, las Ayudas para bsqueda que
combinan varias trayectorias de bsqueda se llaman Ayudas para bsqueda compuestas.
Las Ayudas para bsqueda compuestas se usan a veces para asignar la distribucin de las
entradas posibles en un campo entre varios conjuntos de datos (disyuntivos).
Al igual que la Ayuda para bsqueda elemental, la Ayuda para bsqueda compuesta tiene una
interfaz de parmetros IMPORT y EXPORT con la que se intercambian datos. Mediante esta
interfaz, la Ayuda para bsqueda compuesta se puede aadir a campos, tablas y elementos
de datos como una Ayuda para bsqueda elemental.
Solo se puede aadir una Ayuda para bsqueda a un campo, una tabla o un elemento de
datos. La asignacin de varias trayectorias de bsqueda es entonces realizada mediante la
asignacin de una Ayuda para bsqueda compuesta.
En una Ayuda para bsqueda compuesta, faltan los componentes para para describir el
comportamiento de dilogo y la seleccin de datos. En su lugar se enumeran las ayudas para
bsqueda incluidas. Para cada inclusin existe una asignacin de los parmetros de la Ayuda
para bsqueda compuesta a los parmetros de interfaz de la ayuda para bsqueda incluida.

256 Copyright . Reservados todos los derechos.


Leccin: Aplicacin de tcnicas de ayuda para bsqueda avanzada

Una Ayuda para bsqueda se puede incluir tambin en varias Ayudas para bsqueda
compuestas y, al mismo tiempo, estar anexada a campos, tablas y elementos de datos. Una
Ayuda para bsqueda compuesta se puede incluir tambin en otra Ayuda para bsqueda
compuesta.
Cuando se usa una Ayuda para bsqueda compuesta, las Ayudas para bsqueda elementales
incluidas en la Ayuda para bsqueda colectiva se ofrecen en etiquetas paralelas. Si usa
reiteradamente una Ayuda para bsqueda compuesta, la etiqueta usada por ltima vez
quedar activa automticamente. Esto se debe a que la mayora de los usuarios siempre usan
la misma trayectoria de bsqueda.

Copyright . Reservados todos los derechos. 257


Captulo 9: Ayudas para bsqueda

258 Copyright . Reservados todos los derechos.


Captulo 9
Ejercicio 19
Crear ayudas para bsquedas compuestas

Ejemplo empresarial
Necesita crear una ayuda para bsqueda compuesta para facilitar el acceso a los datos del
empleado desde sistemas de base de datos.

1. Desea crear una Ayuda para bsqueda compuesta, con varias trayectorias de bsqueda.
Primero, realice los siguientes preparativos:
Copie la Ayuda para bsqueda SAREA para su nueva Ayuda para bsqueda
ZEMPLOY##_AREA.
Modifique los parmetros, la tabla de mtodo de seleccin y los elementos de datos de
la copia, de modo que hagan referencia a los nombres usados en su tabla, no a los
usados en la tabla original.
Compruebe y active la Ayuda para bsqueda.
Copie la Ayuda para bsqueda SDEPT para su nueva Ayuda para bsqueda
ZEMPLOY##_DEPT. Cmbiela como corresponda y actvela (como antes).

Copie la Ayuda para bsqueda ZEMPLOY##_DEPT en ZEMPLOY##_CSH y convierta la


nueva copia en una Ayuda para bsqueda compuesta. Incluya las Ayudas para bsqueda
ZEMPLOY##_ESH1, ZEMPLOY##_AREA y ZEMPLOY##_DEPT como componentes de la
nueva Ayuda para bsqueda compuesta.
Reemplace la Ayuda para bsqueda elemental para la tabla de verificacin
ZEMPLOY## con su nueva Ayuda para bsqueda compuesta, y verifique si sus
intentos han tenido xito.

Copyright . Reservados todos los derechos. 259


Captulo 9
Solucin 19
Crear ayudas para bsquedas compuestas

Ejemplo empresarial
Necesita crear una ayuda para bsqueda compuesta para facilitar el acceso a los datos del
empleado desde sistemas de base de datos.

1. Desea crear una Ayuda para bsqueda compuesta, con varias trayectorias de bsqueda.
Primero, realice los siguientes preparativos:
Copie la Ayuda para bsqueda SAREA para su nueva Ayuda para bsqueda
ZEMPLOY##_AREA.
Modifique los parmetros, la tabla de mtodo de seleccin y los elementos de datos de
la copia, de modo que hagan referencia a los nombres usados en su tabla, no a los
usados en la tabla original.
Compruebe y active la Ayuda para bsqueda.
Copie la Ayuda para bsqueda SDEPT para su nueva Ayuda para bsqueda
ZEMPLOY##_DEPT. Cmbiela como corresponda y actvela (como antes).

Copie la Ayuda para bsqueda ZEMPLOY##_DEPT en ZEMPLOY##_CSH y convierta la


nueva copia en una Ayuda para bsqueda compuesta. Incluya las Ayudas para bsqueda
ZEMPLOY##_ESH1, ZEMPLOY##_AREA y ZEMPLOY##_DEPT como componentes de la
nueva Ayuda para bsqueda compuesta.
Reemplace la Ayuda para bsqueda elemental para la tabla de verificacin
ZEMPLOY## con su nueva Ayuda para bsqueda compuesta, y verifique si sus
intentos han tenido xito.

a) En la pantalla inicial del Dictionary ABAP, introduzca SAREA en el campo del Nombre
de la Ayuda para bsqueda y seleccione el pulsador de Copia . Modifique el nombre de
la Ayuda para bsqueda a ZEMPLOY##_AREA y seleccione Continuar . Seleccione
Modificar para la nueva Ayuda para bsqueda.

b) Modifique la tabla del mtodo de seleccin a ZEMPLOY##. Modifique los nombres de


parmetros para que coincidan con los campos de la tabla; para ello, seleccione el
parmetro con la Ayuda para entradas. De este modo se corregir tambin la
referencia al elemento de datos. Corrija otras especificaciones segn se necesite,
verifique la sintaxis de la definicin y active la Ayuda para bsqueda.

c) Repita los pasos a) y b) para crear la Ayuda para bsqueda ZEMPLOY##_DEPT


mediante el modelo SDEPT.

d) Copie la Ayuda para bsqueda ZEMPLOY##_DEPT en ZEMPLOY##_CSH. En la


pantalla Ayuda para bsqueda de actualizacin , seleccione Tratar > Modificar tipo de
ayuda bsqueda.

260 Copyright . Reservados todos los derechos.


Leccin: Aplicacin de tcnicas de ayuda para bsqueda avanzada

e) Modifique el Tipo de ayuda para bsqueda y confirme la modificacin.

f) Inserte un parmetro de importacin para el rea. Debe hacer referencia al elemento


de datos usado en ZEMPLOY##-AREA.

g) Seleccione la etiqueta Ayudas para bsqueda incluidas . Introduzca la ayuda para


bsqueda como ZEMPLOY##_ESH1.

h) Site el cursor en la Ayuda para bsqueda que acaba de introducir. Seleccione


Asignacin de parmetro. El sistema genera una propuesta para la asignacin.

i) Probablemente, la propuesta ser correcta. Para curarse en salud, compruebe la


propuesta y luego cpiela.

j) Incluya las ayudas para bsqueda ZEMPLOY##_AREA y ZEMPLOY##_DEPT.

k) Active la Ayuda para bsqueda ZEMPLOY##_CSH.

l) Abra la tabla ZEMPLOY## en modo de actualizacin para modificar la ayuda para


bsqueda de la tabla. En el men, seleccione Extras Ayuda para bsqueda para tabla
y modifique el nombre de la ayuda para bsqueda a ZEMPLOY##_CSH. El sistema
genera una propuesta, comprubela y cpiela. Active la tabla ZEMPLOY##.

m) Llamando la Ayuda para entradas para el campo ZDEPMENT##-DEPHEAD, podr ver


que la Ayuda para entradas sigue en funcionamiento y que ahora hay activa una Ayuda
para bsqueda compuesta.

Copyright . Reservados todos los derechos. 261


Captulo 9: Ayudas para bsqueda

Ayudas para bsqueda append

Figura 102: Ayudas para bsqueda append

El conjunto de trayectorias de bsqueda relevantes para un objeto depende en gran medida


de las circunstancias concretas del cliente SAP. A menudo los clientes desean poder ampliar
las Ayudas para bsqueda compuestas estndares de SAP con sus propias Ayudas para
bsqueda elementales. Release 4.6 proporciona una tcnica append que permite ampliar las
Ayudas para bsqueda compuestas sin modificarlas.
Una Ayuda para bsqueda append es una Ayuda para bsqueda compuesta asignada a otra
Ayuda para bsqueda compuesta (el objeto de appending) que la ampla mediante las Ayudas
para bsqueda que incluye.
La Ayuda para bsqueda append usa la interfaz de los objetos de appending. La Ayuda para
bsqueda append est dentro del rea para nombres del cliente. Normalmente, las Ayudas
para bsqueda incluidas en la Ayuda para bsqueda append han sido creadas tambin por el
cliente y se encuentran en el rea de nombres del cliente. No obstante, puede que SAP
proporcione ya la Ayuda para bsqueda elemental necesaria; en tal caso, el cliente slo
tendr que aadirla a su propia Ayuda para bsqueda append.
SAP usa las Ayudas para bsqueda append para mejorar la separacin de los componentes.
As pues, algunas Ayudas para bsqueda compuestas de SAP cuentan ya con una o varias
Ayudas para bsqueda append en la Ayuda para bsqueda estndar. Las ampliaciones de
cliente deberan consistir siempre en la creacin de una Ayuda para bsqueda append
separada.
Las Ayudas para bsqueda compuestas de SAP contienen a menudo Ayudas para bsqueda
elementales que no todos los clientes necesitan. Las Ayudas para bsqueda que no son
necesarias se pueden ocultar mediante una Ayuda para bsqueda append. Para ello, la Ayuda
para bsqueda correspondiente se debe incluir en la Ayuda para bsqueda append y se debe
fijar el flag Oculto.

262 Copyright . Reservados todos los derechos.


Captulo 9
Ejercicio 20
Ampliar Ayudas para bsqueda mediante
Ayudas para bsqueda append

Ejemplo empresarial
Las necesidades de su empresa han cambiado, y esto afecta el proceso de bsqueda de
empleados.
La trayectoria de bsqueda con la que se buscan los empleados por departamento ya no es
necesaria.
Necesita ampliar las Ayudas para bsqueda mediante las Ayudas para bsqueda append.
Necesita crear una ayuda para bsqueda append para ZEMPLOY##_CSH. Append debera
incluir la ayuda para bsqueda ZEMPLOY##_DEPT como una ayuda para bsqueda oculta.

1. Modifique la Ayuda para entradas que se usa para el campo ZDEPMENT##-


DEPARTMENT_HEAD como corresponda sin modificar la ayuda para bsqueda
ZEMPLOY##_CSH (ni la tabla implicada). Para ello, cree una ayuda para bsqueda
append ZEMPLOY##_CSH. Append debera incluir la ayuda para bsqueda
ZEMPLOY##_DEPT como una ayuda para bsqueda oculta. Verifique que todo sea
correcto.

Copyright . Reservados todos los derechos. 263


Captulo 9
Solucin 20
Ampliar Ayudas para bsqueda mediante
Ayudas para bsqueda append

Ejemplo empresarial
Las necesidades de su empresa han cambiado, y esto afecta el proceso de bsqueda de
empleados.
La trayectoria de bsqueda con la que se buscan los empleados por departamento ya no es
necesaria.
Necesita ampliar las Ayudas para bsqueda mediante las Ayudas para bsqueda append.
Necesita crear una ayuda para bsqueda append para ZEMPLOY##_CSH. Append debera
incluir la ayuda para bsqueda ZEMPLOY##_DEPT como una ayuda para bsqueda oculta.

1. Modifique la Ayuda para entradas que se usa para el campo ZDEPMENT##-


DEPARTMENT_HEAD como corresponda sin modificar la ayuda para bsqueda
ZEMPLOY##_CSH (ni la tabla implicada). Para ello, cree una ayuda para bsqueda
append ZEMPLOY##_CSH. Append debera incluir la ayuda para bsqueda
ZEMPLOY##_DEPT como una ayuda para bsqueda oculta. Verifique que todo sea
correcto.
a) Puesto que desea hacer los cambios sin modificar los objetos existentes, cree una
Ayuda para bsqueda append para la Ayuda para bsqueda compuesta
ZEMPLOY##_CSH.

b) Abra la ayuda para bsqueda ZEMPLOY##_CSH en modo de visualizacin. Seleccione


Pasar a Ayudas para bsqueda append.

c) En la siguiente ventana de dilogo se propone un nombre para la Ayuda para bsqueda


append. Puede copiar este nombre.

d) Introduzca una descripcin breve para la Ayuda para bsqueda append.

e) Seleccione la ficha Ayudas para bsqueda incluidas .

f) Introduzca ZEMPLOY##_DEPT en la lista de Ayudas para bsqueda incluidas.


Seleccione la casilla de verificacin en la columna Oculto de la entrada.

g) Site el cursor en el nombre de la Ayuda para bsqueda ZEMPLOY##_DEPT.


Seleccione Asignacin de parmetro. En la siguiente ventana de dilogo, confirme que
desea crear una propuesta para la asignacin de parmetros.

h) Es probable que la asignacin de parmetros propuesta por el sistema sea correcta.


Comprubelo y copie la asignacin.

i) Active su Ayuda para bsqueda append.

j) Puede comprobar si lo ha hecho bien llamando la Ayuda para entradas del campo
ZDEPMENT##-DEPHEAD.

264 Copyright . Reservados todos los derechos.


Leccin: Aplicacin de tcnicas de ayuda para bsqueda avanzada

Exits de ayuda para bsqueda

Figura 103: Desviacin del estndar Exit de ayuda para bsqueda

Una Ayuda para bsqueda es un objeto que describe una Ayuda para entradas dentro del
sistema estndar. En algunos casos, la semntica especial de un campo obliga a desviarse de
esta versin estndar en algunos detalles. Esta desviacin se puede implementar mediante
un exit de Ayuda para bsqueda.
Un exit de Ayuda para bsqueda es un mdulo de funciones con una interfaz estandarizada.
El mdulo de funciones F4IF_SHLP_EXIT_EXAMPLE se puede usar como modelo. Si una
Ayuda para bsqueda tiene un exit de Ayuda para bsqueda de este tipo, el exit se llamar
antes de cada paso individual del proceso. Los datos administrativos del procesador de la
ayuda se transfieren por medio de la interfaz. El exit de Ayuda para bsqueda permite
manipular estos datos.
Los datos administrativos tambin contienen informacin sobre el paso que se debe ejecutar
a continuacin. El exit de Ayuda para bsqueda puede ejecutar ahora acciones de
preparacin para este paso o ejecutar el paso en s (por ejemplo, una seleccin de datos que
no se puede implementar mediante SELECT en una tabla o vista). En el segundo caso, el exit
de Ayuda para bsqueda modifica tambin la informacin sobre el siguiente paso que se debe
ejecutar.
Se han definido ya algunos mdulos de funciones que se pueden usar como exits de Ayuda
para bsqueda o para manipular los datos administrativos en exits de Ayuda para bsqueda.
Tienen el prefijo F4UT_. Los exits de Ayuda para bsqueda slo se deberan usar en casos
excepcionales.
Mediante los exits de Ayuda para bsqueda, se fomentan las soluciones no estndar y se
dificulta la actualizacin de la Ayuda para entradas.

Copyright . Reservados todos los derechos. 265


Captulo 9: Ayudas para bsqueda

Ms opciones para Ayudas para bsqueda

Figura 104: Ms opciones para Ayudas para bsqueda

Se puede preasignar un valor a un parmetro mediante la asignacin de un valor


predeterminado. El parmetro tendr siempre este valor a no ser que se trate de un
parmetro IMPORT vinculado a un campo de la pantalla, su modulpool o un parmetro de la
Ayuda para bsqueda compuesta.

Los posibles valores predeterminados de los parmetros de ayuda para bsqueda son:
Literales
Campos de sistema
Parmetros GET

Se puede usar un valor de propuesta para formular una condicin de seleccin simple para un
campo del mtodo de seleccin.
Se puede asignar una letra o una cifra a una Ayuda para bsqueda elemental como tecla
sensible. Si esta Ayuda para bsqueda elemental se usa en un campo de dynpro para la
Ayuda para entradas y este campo tiene asignado el acceso rpido =<tecla
sensible>.<SEL1>.<SEL2>, cuando se llame la Ayuda para entradas, se procesar esta Ayuda
para bsqueda elemental. <SEL1>, <SEL2> representan el contenido de campo para la
ventana de dilogo de restriccin de valores (con * al final); la lista de aciertos se visualiza de
inmediato.
La Ayuda para bsqueda individual incluida se puede ocultar en una Ayuda para bsqueda
compuesta. De este modo se pueden desactivar trayectorias de bsqueda individuales si no
se desean en un sistema. Normalmente se ocultan en una Ayuda para bsqueda append, ya
que para ello no hace falta modificar nada.
Los parmetros de una Ayuda para bsqueda elemental se pueden marcar como campos de
slo visualizacin en la ventana de dilogo de restriccin de valores. En general, los
parmetros IMPORT asignados a campos de solo lectura de la pantalla se visualizan en la
ventana de dilogo como modificables.

266 Copyright . Reservados todos los derechos.


Leccin: Aplicacin de tcnicas de ayuda para bsqueda avanzada

Los mdulos de funciones existentes con el prefijo F4UT_ se pueden usar para implementar
exits de ayuda para bsqueda.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 267


Captulo 9: Ayudas para bsqueda

RESUMEN DE LA LECCIN
Ahora podr:
Definir ayudas para bsquedas compuestas
Ampliar Ayudas para bsqueda mediante Ayudas para bsqueda append
Implementar exits de ayuda para bsqueda

268 Copyright . Reservados todos los derechos.


Captulo 9

Evaluacin de la formacin

1. Cules son las diferentes maneras de obtener ayuda para entradas para un campo?
Seleccione las respuestas correctas.

X A Una Ayuda para bsqueda se puede aadir directamente a un campo de una


estructura o tabla.

X B Si un campo tiene una tabla de verificacin, su contenido se ofrecer


automticamente como valores posibles en la Ayuda para entradas.

X C Los valores de la base de datos se mostrarn de manera directa y automtica

X D Los posibles valores los define su elemento de datos

2. En cada ayuda para bsqueda se debe definir al menos un parmetro __________ para la
transferencia de datos.
Seleccione la respuesta correcta.

X A EXPORT

X B IMPORT

3. Las Ayudas para bsqueda que combinan varias trayectorias de bsqueda se llaman
_____________ .
Seleccione la respuesta correcta.

X A ayudas para bsqueda compuestas

X B ayudas para bsqueda ocultas

X C ayudas para bsqueda elementales

4. Las Ayudas para bsqueda compuestas de SAP contienen a menudo Ayudas para
bsqueda elementales que no todos los clientes necesitan. Las Ayudas para bsqueda
innecesarias se pueden ocultar mediante _____________ .
Seleccione la respuesta correcta.

X A Ayudas para bsqueda ocultas

X B Ayudas para bsqueda append

X C Ayudas para bsqueda compuestas

Copyright . Reservados todos los derechos. 269


Captulo 9: Evaluacin de la formacin

5. Los mdulos de funciones existentes con el prefijo F4UT_ se pueden usar para
implementar exits de ayuda para bsqueda.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

270 Copyright . Reservados todos los derechos.


Captulo 9

Respuestas a la Evaluacin de la formacin

1. Cules son las diferentes maneras de obtener ayuda para entradas para un campo?
Seleccione las respuestas correctas.

X A Una Ayuda para bsqueda se puede aadir directamente a un campo de una


estructura o tabla.

X B Si un campo tiene una tabla de verificacin, su contenido se ofrecer


automticamente como valores posibles en la Ayuda para entradas.

X C Los valores de la base de datos se mostrarn de manera directa y automtica

X D Los posibles valores los define su elemento de datos

2. En cada ayuda para bsqueda se debe definir al menos un parmetro __________ para la
transferencia de datos.
Seleccione la respuesta correcta.

X A EXPORT

X B IMPORT

3. Las Ayudas para bsqueda que combinan varias trayectorias de bsqueda se llaman
_____________ .
Seleccione la respuesta correcta.

X A ayudas para bsqueda compuestas

X B ayudas para bsqueda ocultas

X C ayudas para bsqueda elementales

Copyright . Reservados todos los derechos. 271


Captulo 9: Respuestas a la Evaluacin de la formacin

4. Las Ayudas para bsqueda compuestas de SAP contienen a menudo Ayudas para
bsqueda elementales que no todos los clientes necesitan. Las Ayudas para bsqueda
innecesarias se pueden ocultar mediante _____________ .
Seleccione la respuesta correcta.

X A Ayudas para bsqueda ocultas

X B Ayudas para bsqueda append

X C Ayudas para bsqueda compuestas

5. Los mdulos de funciones existentes con el prefijo F4UT_ se pueden usar para
implementar exits de ayuda para bsqueda.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

272 Copyright . Reservados todos los derechos.


CAPTULO 10 Pantalla de seleccin

Leccin 1
Implementacin de una pantalla de seleccin 274
Ejercicio 21: Crear una pantalla de seleccin 285

Leccin 2
Implementacin de pantallas de seleccin mltiple 291
Ejercicio 22: Definir etiquetas en pantallas de seleccin 297

Leccin 3
Administracin de las verificaciones de entrada y variantes 303
Ejercicio 23: Implementar verificaciones de entradas y crear variantes 309

OBJETIVOS DEL CAPTULO

Explicar la pantalla de seleccin


Crear parmetros en la pantalla de seleccin
Crear opciones de seleccin en la pantalla de seleccin
Inicializar la pantalla de seleccin
Disear la pantalla de seleccin
Crear pantallas de seleccin adicionales
Definir etiquetas en la pantalla de seleccin
Implementar verificaciones de entrada
Implementar ayuda para campos y valores
Crear variantes

Copyright . Reservados todos los derechos. 273


Captulo 10
Leccin 1
Implementacin de una pantalla de seleccin

RESUMEN DE LA LECCIN
Esta leccin explica las sentencias ABAP para generar una pantalla de seleccin.

Ejemplo empresarial
Como programador, necesita escribir un programa con una pantalla de seleccin fcil de usar
que visualice el plan de datos de vuelo para una compaa area. Por este motivo, se
requieren los siguientes conocimientos:
Una buena comprensin de una pantalla de seleccin
Una buena comprensin de cmo disear una pantalla de seleccin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar la pantalla de seleccin
Crear parmetros en la pantalla de seleccin
Crear opciones de seleccin en la pantalla de seleccin
Inicializar la pantalla de seleccin
Disear la pantalla de seleccin

Imgenes de seleccin

Figura 105: Pantalla de seleccin: visin general

274 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

Las pantallas de seleccin funcionan como una interfaz entre el programa y el usuario, y
permiten limitar la cantidad de datos que se leern desde la base de datos.
Puede usar las sentencias declarativas PARAMETERS y SELECT-OPTIONS para generar una
pantalla de seleccin estndar (pantalla 1000) con campos listos para la entrada.
Las bases de datos lgicas proporcionan pantallas de seleccin cuya apariencia concreta
depende de los nodos especificados (NODES <name>).

Las versiones de la pantalla de seleccin ofrecen un subconjunto de la pantalla de seleccin


estndar.
Adems de la pantalla de seleccin estndar, tambin puede usar SELECTION-SCREEN
BEGIN OF SCREEN... para generar una pantalla de seleccin adicional y usar CALL
SELECTION-SCREEN para llamarlas.
Puede crear variantes para grabar los valores de la pantalla de seleccin que usa con
frecuencia. Puede usar las variantes en cualquier momento. Si un informe se ejecuta con una
pantalla de seleccin en el proceso de fondo, siempre se requiere una variante.

Declaracin de campos con PARAMETERS

Figura 106: Declaracin de campos con PARAMETERS

La sentencia PARAMETERS es un elemento lingstico declarativo. As como en la sentencia


DATA, puede declarar los parmetros con los suplementos TYPE o LIKE. El sistema genera
campos listos para la entrada en la pantalla de seleccin.
Puede mantener textos de seleccin escogiendo Ir a Elementos de texto Textos de
seleccin.

Nota:
Los nombres de los campos PARAMETERS pueden tener un mximo de ocho
caracteres.

Copyright . Reservados todos los derechos. 275


Captulo 10: Pantalla de seleccin

Con el suplemento DEFAULT <value>, puede establecer un valor por defecto para una
sentencia PARAMETERS. Si asigna una MEMORY ID <pid>, el sistema recupera el valor actual
de la memoria SAP y lo muestra en la pantalla automticamente. La memoria SAP es un rea
de memoria especfica del usuario en donde se almacenan los valores de datos simples, por
ejemplo la clave para una compaa area, para los parmetros SET/GET. Los valores de
datos se almacenan mientras dura la sesin de un usuario. Los parmetros SET/GET se
identifican por nombre, que pueden tener una longitud mxima de 20 caracteres. Se puede
asignar un parmetro SET/GET a un elemento de datos. Los campos que se basan en estos
elementos de datos luego pueden usar el mecanismo de la memoria SAP.
Puede encontrar el nombre de un parmetro SET/GET requerido seleccionando Ayuda
(F1) Informacin tcnica, en un campo de salida para llamar a Informacin tcnica. En el
campo Parameter ID, encuentra el nombre del parmetro SET/GET.
Si declara campos obligatorios con el suplemento OBLIGATORY, los usuarios no pueden
abandonar la pantalla de seleccin sin introducir valores en estos campos.
La verificacin automtica realizada por el Dictionary ABAP se desactiva por defecto para las
pantallas de seleccin de informes. Sin embargo, si consulta un objeto de diccionario para el
cual se estableci una clave fornea, puede usar VALUE CHECK para desencadenar una
verificacin de validez de la entrada.
Tambin puede definir parmetros como casillas de seleccin. Con esta definicin, crea un
campo de caracteres nicos que contenga un espacio o X. Puede evaluar el contenido de las
casillas de seleccin en las estructuras IF/ENDIF.
Tambin puede crear un grupo de botones de seleccin para la pantalla de seleccin con la
ayuda del suplemento RADIOBUTTON GROUP <grp>. Solo puede estar activo un botn de
seleccin en un grupo. El botn de seleccin se puede evaluar en el procesamiento de
programas. Puede evaluar el contenido de los botones de seleccin mediante estructuras de
control CASE/ENDCASE. El botn de seleccin que selecciona tiene el valor X y todos los
otros tienen el valor espacio. Si no ha asignado un valor a ningn botn de seleccin, el
sistema automticamente seleccionar el primer botn de seleccin cuando muestre la
pantalla de seleccin.

Consejo:
El nombre <grp> de un grupo de botones de seleccin puede tener un mximo
de cuatro caracteres.

Puede utilizar el suplemento MODIF ID <mod> para simplificar las modificaciones dinmicas
en la pantalla de seleccin.

276 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

Declaracin de campos con SELECT-OPTIONS

Figura 107: Declaracin de campos con SELECT-OPTIONS

SELECT-OPTIONS es un elemento lingstico declarativo con la misma restriccin de nombre


con ocho caracteres como PARAMETERS. SELECT-OPTIONS permite el uso de rangos de
valores y selecciones complejas en lugar de un solo campo de entrada.
La palabra clave SELECT-OPTIONS genera una tabla interna <seltab> con una estructura
estndar y una lnea de cabecera.

La tabla interna tiene las siguientes columnas:


Sign (significado del indicador incluido o excluido)
Option (operador relacional)
Low (lmite inferior)
High (lmite superior)

Puede mantener el texto seleccin del mismo modo que con PARAMETERS seleccionando Ir
a Elementos de texto Textos de seleccin.
Use el suplemento FOR para especificar el tipo de campo. Use el nombre de una variable que
ya haya declarado en la sentencia DATA o NODES.
Cada lnea de la tabla de seleccin <seltab> formula una condicin usando uno de los
operadores relacionales.

Posibles valores para SIGN y OPTION

Los posibles valores para SIGN y OPTIONS son los siguientes:

Campo Valor Significado


SIGNO I Incluir
E Excluir

Copyright . Reservados todos los derechos. 277


Captulo 10: Pantalla de seleccin

Campo Valor Significado


OPCIN EQ Igual
NE No igual
LE Menos o igual
LT Menor que
GE Mayor o igual
GT Mayor que
BT Entre
NB No entre
CP Contiene patrn
NP No contiene patrn

Para calcular el set de selecciones S, el sistema forma la unin de todas las inclusiones (signo
= I) y la unin de todas las exclusiones (signo = E). El set de exclusiones luego se sustrae
del set de inclusiones. Si el objeto SELECT-OPTIONS no contiene valores, el sistema devuelve
todas las filas de la base de datos.

SELECT-OPTIONS con criterios de seleccin mltiple

Figura 108: SELECT-OPTIONS con criterios de seleccin mltiple

Si un usuario introduce datos en un objeto SELECT-OPTIONS, el sistema completa


automticamente la tabla interna.
Para cambiar los valores por defecto para los campos de tabla SIGN y OPTION, elija
Editar Opciones de seleccin.
El sistema ofrece opciones adecuadas para esta seleccin. El icono de seal de trfico verde
en la columna Sign indica I (inclusivo) y una luz roja indica E (exclusivo).

278 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

Para borra una tabla de entrada, elija Editar Borrar fila de seleccin.
Todos los criterios de seleccin pueden utilizarse para realizar selecciones mltiples, a menos
que se defina lo contrario. Si las selecciones mltiples estn presentes, el color de la flecha
cambia de gris a verde.

Sintaxis de la sentencia SELECT-OPTIONS

Figura 109: Sintaxis de la sentencia SELECT-OPTIONS

Los suplementos de la sentencia SELECT-OPTIONS son los siguientes:


DEFAULT
DEFAULT lo ayuda a establecer los valores por defecto para los parmetros inferiores o
superiores e inferiores. Puede utilizar OPTION y SIGN para determinar valores por defecto
para option y sign que difieren de los valores por defecto.
MEMORY ID <pid>
MEMORY ID <pid> lo ayuda a recuperar el valor actual de la memoria SAP y
automticamente lo muestra en la pantalla. MEMORY ID <pid> lo escribe nuevamente
cuando abandona la pantalla (incluido cualquier cambio que pueda haber hecho).
LOWER CASE
LOWER CASE suprime la conversin de la entrada a mayscula siempre que el dominio lo
permita o que la escritura se haya realizado por ABAP tipo C.
OBLIGATORY
OBLIGATORY genera un campo obligatorio. Aparece un signo de interrogacin en el
campo de entrada en la pantalla de seleccin y el usuario debe ingresar un valor.
NO-EXTENSION
NO-EXTENSION suprime las selecciones mltiples.
NO INTERVALS
NO INTERVALS suprime el lmite superior de intervalo (<seltab>-high) en la pantalla de
seleccin. Puede utilizar la pantalla adicional Seleccin mltiple para ingresar intervalos.

Copyright . Reservados todos los derechos. 279


Captulo 10: Pantalla de seleccin

Asignacin dinmica previa de la pantalla de seleccin

Figura 110: Asignacin dinmica previa de la pantalla de seleccin

Puede sobrescribir el valor por defecto de un campo PARAMETERS o un objeto de SELECT-


OPTIONS en el evento INITIALIZATION. Por este motivo, estos eventos son adecuados para
una asignacin dinmica previa de los campos de entrada que se visualizan en una pantalla de
seleccin.
AT SELECTION-SCREEN OUTPUT se procesa antes de que se visualice la pantalla de
seleccin y AT SELECTION-SCREEN se procesa luego de que se visualice la pantalla de
seleccin. Puede visualizar varias veces la pantalla de seleccin (por ejemplo, al presionar
INTRO) y, por consiguiente, el sistema tambin puede procesar esos bloques de eventos
muchas veces.

Inicializacin de la pantalla de seleccin

Figura 111: Inicializacin de la pantalla de seleccin

El sistema procesa el evento INITIALIZATION una vez en cada programa ejecutable. Puede
suministrar valores por defecto para los campos de la pantalla de seleccin de un registro o
una base de datos lgica durante este evento INITIALIZATION. Puede usar la Ayuda F1

280 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

(Ayuda tcnica) para determinar los nombres de los campos de seleccin si se conecta una
base de datos lgica con el programa.

Relleno de una tabla interna con una lnea de cabecera

Figura 112: Relleno de una tabla interna con una lnea de cabecera

La sentencia SELECT-OPTIONS <sel_opt> FOR <data_object> siempre genera una tabla


interna con una lnea de cabecera.

La sentencia crea los siguientes objetos de datos:


Cuerpo de la tabla denominado <sel_opt>
rea de trabajo (la lnea de cabecera) denominada <sel_opt>

Rellene el rea de trabajo <sel_opt> con los valores correctos y luego use el comando
APPEND <sel_opt> para agregarlo al cuerpo de la tabla como una lnea distinta.
Tambin puede proporcionar valores para la pantalla de seleccin en el evento AT
SELECTION-SCREEN OUTPUT. Este evento ocurre antes de que se visualice la pantalla de
seleccin. Sin embargo, este evento puede procesarse infinidad de veces, por ejemplo, si el
usuario selecciona Enter en la pantalla de seleccin. En este caso, los valores proporcionados
en el evento AT SELECTION-SCREEN OUTPUT sobrescriben la entrada del usuario.

Copyright . Reservados todos los derechos. 281


Captulo 10: Pantalla de seleccin

Diseo de bloques de pantallas de seleccin

Figura 113: Diseo de bloques de pantallas de seleccin

Puede usar la sentencia SELECTION-SCREEN para disear la estructura de la pantalla de


seleccin.
Puede usar el suplemento BEGIN OF BLOCK <block> para agrupar elementos de la pantalla
relacionados lgicamente y WITH FRAME con el objetivo de enmarcarlos. Puede anidar
marcos hasta en cinco niveles.
Asigne una cabecera al bloque para facilitar la accesibilidad. Puede escribir el ttulo como
text-<xxx> o como un nombre de campo de hasta ocho caracteres. Para escribir un texto
como un nombre de campo, debe determinar el texto en el tiempo de ejecucin en el evento
INITIALIZATION.
Antes de disear una pantalla de seleccin, familiarcese con las pautas para el diseo de
pantallas que se muestran en la transaccin BIBS .

282 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

Diseo de lneas de pantallas de seleccin

Figura 114: Diseo de lneas de pantallas de seleccin

Puede visualizar parmetros y comentarios mltiples en la misma lnea de salida


enmarcndolos entres SELECTION-SCREEN BEGIN OF LINE y SELECTION-SCREEN END OF
LINE.
El suplemento COMMENT le permite incluir textos en la lnea. Los textos comentarios
siempre deben tener un formato (posicin y longitud de salida). Puede definir la posicin
usando variables o literales de nmero entero. Pos_low y pos_high son las posiciones de los
lmites superior e inferior del campo SELECT-OPTIONS en la pantalla de seleccin. La
duracin de la salida siempre se define como un literal de nmero entero.
El suplemento COMMENT ... FOR FIELD <f> hace que el sistema automticamente muestre el
men ayuda del campo <f> para el texto comentario y el parmetro. Si oculta el parmetro
(variante de seleccin: atributo invisible), el texto de comentario tambin se oculta.
Puede usar POSITION <pos> para ubicar el cursor en una lnea para la prxima salida (solo en
BEGIN OF LINE ... END OF LINE), donde <pos> es un nmero entero.
Puede definir lneas vacas con la ayuda del suplemento SKIP <n>, donde <n> es un nmero
entero.

Copyright . Reservados todos los derechos. 283


Captulo 10: Pantalla de seleccin

284 Copyright . Reservados todos los derechos.


Captulo 10
Ejercicio 21
Crear una pantalla de seleccin

Ejemplo empresarial
Como programador de una compaa area, debe aadir campos a la pantalla de seleccin de
un informe existente y ajustar el proceso de retencin de datos de acuerdo a esto.
Ample el programa ZBC401_##_SOL o copie la solucin modelo BC405_INTRO_S1 del
ejercicio anterior.
Solucin modelo para la tarea: BC405_SCREEN_S1A
Cree una pantalla de seleccin.

1. Cree un criterio de seleccin para la compaa area. Tome el valor de intervalo ms bajo
de SAP Memory. Cree un SELECT-OPTION para el nmero de conexin de vuelos.
Cree un criterio de seleccin para la fecha de vuelo. Suprima la opcin de seleccin
mltiple para la fecha de vuelo.

2. Cree un grupo de botones de seleccin con las siguientes funcionalidades:


Botn Funcin
1 Consulte todos los vuelos.
2 Consulte solo los vuelos domsticos.
3 Consulte solo los vuelos internacionales.

Por defecto, se deben leer los vuelos internacionales. Cree un marco alrededor del grupo
de botones de seleccin.

3. Asegrese de que se consulten los registros de datos solicitados solo desde la base de
datos. Para leer los registros de datos, suplemente la clusula WHERE de la sentencia
SELECT con las condiciones que se obtienen de estas selecciones.

Consejo:
Necesita tres sentencias SELECT distintas con condiciones WHERE
diferentes. Puede asignar la condicin nacional o internacional directamente
en la base de datos:
countryto = dv_flights~countryfr or countryto <>
dv_flights~countryfr.
Se usa un guin ondulado (~) para dirigirse al campo de la base de datos.

4. Programe una asignacin previa compleja para la compaa area, como AA para QF, pero
no AZ.

5. Active y realice un test del programa.

Copyright . Reservados todos los derechos. 285


Captulo 10
Solucin 21
Crear una pantalla de seleccin

Ejemplo empresarial
Como programador de una compaa area, debe aadir campos a la pantalla de seleccin de
un informe existente y ajustar el proceso de retencin de datos de acuerdo a esto.
Ample el programa ZBC401_##_SOL o copie la solucin modelo BC405_INTRO_S1 del
ejercicio anterior.
Solucin modelo para la tarea: BC405_SCREEN_S1A
Cree una pantalla de seleccin.

1. Cree un criterio de seleccin para la compaa area. Tome el valor de intervalo ms bajo
de SAP Memory. Cree un SELECT-OPTION para el nmero de conexin de vuelos.
Cree un criterio de seleccin para la fecha de vuelo. Suprima la opcin de seleccin
mltiple para la fecha de vuelo.
a) Consulte la solucin modelo.

b) Para encontrar los parmetros SET/GET apropiados para la compaa area, haga
doble clic en la variable de referencia donde est declarado SELECT-OPTION.

c) Haga doble clic en el tipo (dv_flights).

d) Haga doble clic en el elemento de datos (S_CARR_ID) del campo CARRID.

e) Si se visualiza el elemento de datos, seleccione la pgina de etiqueta Ms


caractersticas.

2. Cree un grupo de botones de seleccin con las siguientes funcionalidades:


Botn Funcin
1 Consulte todos los vuelos.
2 Consulte solo los vuelos domsticos.
3 Consulte solo los vuelos internacionales.

Por defecto, se deben leer los vuelos internacionales. Cree un marco alrededor del grupo
de botones de seleccin.
a) Consulte la solucin modelo.

3. Asegrese de que se consulten los registros de datos solicitados solo desde la base de
datos. Para leer los registros de datos, suplemente la clusula WHERE de la sentencia
SELECT con las condiciones que se obtienen de estas selecciones.

286 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

Consejo:
Necesita tres sentencias SELECT distintas con condiciones WHERE
diferentes. Puede asignar la condicin nacional o internacional directamente
en la base de datos:
countryto = dv_flights~countryfr or countryto <>
dv_flights~countryfr.
Se usa un guin ondulado (~) para dirigirse al campo de la base de datos.

a) Consulte la solucin modelo.

4. Programe una asignacin previa compleja para la compaa area, como AA para QF, pero
no AZ.
a) Consulte la solucin modelo.

5. Active y realice un test del programa.


a) Pulse CTRL + F3 y luego pulse F8.
Programa principal
REPORT bc405_screen_s1b.

INCLUDE bc405_screen_s1b_top.
INCLUDE bc405_screen_s1b_e01.

Include TOP
* Workarea for data fetch
DATA: gs_flight type dv_flights.

* Constant for CASE statement


CONSTANTS gc_mark VALUE 'X'.

* Selections for connections


SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECT-OPTIONS: so_car FOR gs_flight-carrid MEMORY ID car,
so_con FOR gs_flight-connid.
SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights


SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECT-OPTIONS so_fdt FOR gs_flight-fldate NO-EXTENSION.
SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter
SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.
PARAMETERS: pa_all RADIOBUTTON GROUP rbg1,
pa_nat RADIOBUTTON GROUP rbg1,
pa_int RADIOBUTTON GROUP rbg1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK radio.
SELECTION-SCREEN END OF SCREEN 1300.

SELECTION-SCREEN BEGIN OF TABBED BLOCK airlines


FOR 5 LINES.
SELECTION-SCREEN TAB (20) tab1 USER-COMMAND conn
DEFAULT SCREEN 1100.
SELECTION-SCREEN TAB (20) tab2 USER-COMMAND date

Copyright . Reservados todos los derechos. 287


Captulo 10: Pantalla de seleccin

DEFAULT SCREEN 1200.


SELECTION-SCREEN TAB (20) tab3 USER-COMMAND type
DEFAULT SCREEN 1300.
SELECTION-SCREEN END OF BLOCK airlines .

Include E01
*&-----------------------------------------------------*
*& Event INITIALIZATION
*&-----------------------------------------------------*
INITIALIZATION.
* Initialize select-options for CARRID" OPTIONAL
MOVE: 'AA' TO so_car-low,
'QF' TO so_car-high,
'BT' TO so_car-option,
'I' TO so_car-sign.
APPEND so_car.

CLEAR so_car.
MOVE: 'AZ' TO so_car-low,
'EQ' TO so_car-option,
'E' TO so_car-sign.
APPEND so_car.

* Set texts for tabstrip pushbuttons


tab1 = 'Connections'(tl1).
tab2 = 'Date'(tl2).
tab3 = 'Type of flight'(tl3).

* Set second tab page as initial tab


airlines-activetab = 'DATE'.
airlines-dynnr = '1200'.

*&--------------------------------------------------------*
*& Event START-OF-SELECTION
*&--------------------------------------------------------*
START-OF-SELECTION.
* Checking the output parameters
CASE gc_mark.
WHEN pa_all.
* Radiobutton ALL is marked
SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,
gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

WHEN pa_nat.

* Radiobutton NATIONAL is marked

288 Copyright . Reservados todos los derechos.


Leccin: Implementacin de una pantalla de seleccin

SELECT * FROM dv_flights INTO gs_flight


WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt
AND countryto = dv_flights~countryfr.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,
gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

WHEN pa_int.
* Radiobutton INTERNATIONAL is marked
SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt
AND countryto <> dv_flights~countryfr.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,
gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

ENDCASE.

Copyright . Reservados todos los derechos. 289


Captulo 10: Pantalla de seleccin

RESUMEN DE LA LECCIN
Ahora podr:
Explicar la pantalla de seleccin
Crear parmetros en la pantalla de seleccin
Crear opciones de seleccin en la pantalla de seleccin
Inicializar la pantalla de seleccin
Disear la pantalla de seleccin

290 Copyright . Reservados todos los derechos.


Captulo 10
Leccin 2
Implementacin de pantallas de seleccin
mltiple

RESUMEN DE LA LECCIN
Esta leccin le muestra cmo crear y disear pantallas de seleccin adicionales.

Ejemplo empresarial
Como programador, debe escribir un programa para que lea los datos de vuelo para la
compaa area. Escribe este programa con una pantalla de seleccin de fcil uso que
contiene diferentes etiquetas con diferentes campos de entrada para los datos
seleccionados. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin del propsito de las pantallas de seleccin
Una buena comprensin de cmo disear una pantalla de seleccin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Crear pantallas de seleccin adicionales
Definir etiquetas en la pantalla de seleccin

Pantallas de seleccin adicionales

Figura 115: LLAMAR SELECCIN: PANTALLA

Copyright . Reservados todos los derechos. 291


Captulo 10: Pantalla de seleccin

Puede trabajar con varias pantallas de seleccin en un programa. La pantalla de seleccin


estndar siempre tiene el nmero 1000.
Puede definir otras pantallas de seleccin usando SELECTION-SCREEN BEGIN OF SCREEN
<nnnn> y SELECTION-SCREEN END OF SCREEN <nnnn>.
Debe usar SELECT-OPTIONS y PARAMETERS para definir las selecciones requeridas entre
las sentencias BEGIN OF y END OF. Use CALL SELECTION-SCREEN <nnnn> para llamar a
esta pantalla de seleccin. Una pantalla de seleccin debe tener un nmero de pantalla mayor
a 1000.
Si el usuario realiza cualquier accin en la llamada pantalla de seleccin, el evento AT
SELECTION-SCREEN se procesa. En este evento, el campo del sistema sy-dynnr contiene el
nmero de la llamada pantalla de seleccin. El programa contina con la sentencia que sigue
a la llamada. El campo de sistema sy-subrc contiene 0 si el usuario elige Ejecutar o si presiona
F8. Si el usuario elige Cancelar o Salir, sy-subrc contiene el valor 4.
Puede agregar valores por defecto en las pantallas de seleccin adicionales en
INITIALIZATION. Utilice el campo del sistema sy-dynnr en los eventos de la pantalla de
seleccin para determinar qu pantalla se est procesando.
Para llamar a una pantalla de seleccin como cuadro de dilogo modal, use la siguiente
sintaxis:
CALL SELECTION-SCREEN <nnn> STARTING AT
<left_col> <upper_row> ENDING AT <right_col>
<lower_row>.<left_col> y <upper_row> son las coordinadas de la esquina superior izquierda
de la pantalla; <right_col> y <lower_row> son las coordinadas de la esquina inferior derecha.

Etiquetas de la pantalla de seleccin

Figura 116: Fichas en la pantalla de seleccin

Las fichas permiten la agrupacin lgica mejorada de los campos y le proporcionan una
estructuracin ms clara de grandes pantallas de seleccin. Puede visualizar fichas en las
pantallas de seleccin.

Para una pantalla de seleccin con fichas, define los siguientes componentes:

292 Copyright . Reservados todos los derechos.


Leccin: Implementacin de pantallas de seleccin mltiple

rea de subscreen en la pantalla de seleccin para la ficha


Ttulos de etiquetas individuales
Pantallas de seleccin como subscreens para los ttulos de las etiquetas individuales

Pantallas de seleccin como Subscreens

Figura 117: Pantallas de seleccin como Subscreens

Puede definir pantallas de seleccin como subscreens. Puede incluir las pantallas de
seleccin en cualquier otra pantalla, especialmente como etiquetas. El sistema procesa los
eventos ABAP AT SELECTION-SCREEN OUTPUT y AT SELECTION-SCREEN para cada
subscreen y tambin para la pantalla de seleccin adyacente.
Trabaje con la variable sy-dynnr del sistema para determinar la pantalla de seleccin o
subscreen que actualmente est siendo procesada.
La definicin de una pantalla de seleccin como subscreen comienza con SELECTION-
SCREEN BEGIN OF SCREEN <dynnr> AS SUBSCREEN [NESTING LEVEL <m>] [NO
INTERVALS].
La misma definicin finaliza con SELECTION-SCREEN END OF SCREEN <dynnr>.

Suplementos opcionales

Los siguientes son los suplementos adicionales:


[NESTING LEVEL <m>]
NESTING LEVEL reduce el tamao de la subscreen. Si usa la subscreen en un control de
fichas en la pantalla de seleccin y la ficha ya tiene un marco, puede reducir el tamao de
la subscreen, para evitar que aparezcan las barras de desplazamiento. Si la ficha no tiene
un marco, use NESTING LEVEL0. Para cada marco que se encuentre alrededor del control
de fichas, aumente NESTING LEVEL en 1.
[NO INTERVALS]
La opcin [NO INTERVALS] oculta los campos HIGH para todos los criterios de seleccin
definidos con SELECT-OPTIONS en esta pantalla.

Copyright . Reservados todos los derechos. 293


Captulo 10: Pantalla de seleccin

Etiquetas de la pantalla de seleccin

Figura 118: Definicin de fichas en la pantalla de seleccin

La definicin de un rea de subscreen para una ficha en una pantalla de seleccin comienza
con SELECTION-SCREEN BEGIN OF TABBED BLOCK <blockname> FOR <n> LINES. La
misma definicin finaliza con SELECTION-SCREEN END OF BLOCK <blockname>. La altura
del rea subscreen en lneas se define con <n>.
Puede definir un solo ttulo de la pestaa como SELECTION-SCREEN TAB (max_length)
<name>USER-COMMAND <ucomm> [DEFAULT [PROGRAM <prog>] SCREEN <dynnr>].
TAB es la variable que contiene el texto que debe mostrarse. Esta variable es parte del control
de fichas, por lo que no necesita declararla.
Si el texto que desea visualizar en el ttulo de la pestaa es ms corto que lo especificado
mediante max_length, se optimiza el largo del ttulo de la pestaa. Sin embargo, si el texto
excede el largo mximo, se trunca.
Si especifica el suplemento DEFAULT, tambin deber especificar el suplemento SCREEN. El
suplemento PROGRAM es opcional y solo debe especificarlo si la pantalla es de otro
programa.
Puede posponer la especificacin de la conexin entre los ttulos de las etiquetas y las
pantallas de seleccin hasta el tiempo de ejecucin. Tambin puede modificar una asignacin
existente en tiempo de ejecucin. Para ello, rellene la estructura <blockname>. Se crea de
forma automtica para cada bloque de fichas. La estructura tiene el mismo nombre que el
bloque de fichas y contiene los campos prog, dynnr y activetab.
Para el evento AT SELECTION-SCREEN, la variable sy-ucomm del sistema contiene el
comando del usuario declarado en la pgina de la etiqueta seleccionada actualmente
(<ucomm>). La estructura <blockname> contiene informacin sobre la pantalla de seleccin
que se muestra actualmente. AT SELECTION-SCREEN se procesa dos veces, primero para la
pantalla de seleccin en la pgina de la etiqueta actualmente seleccionada y luego para la
pantalla de seleccin 1000.

294 Copyright . Reservados todos los derechos.


Leccin: Implementacin de pantallas de seleccin mltiple

Para el evento AT SELECTION-SCREEN OUTPUT, la estructura <blockname> contiene


informacin sobre la prxima pgina de la etiqueta activa y la pantalla de seleccin
relacionada con esta pgina.
AT SELECTION-SCREEN OUTPUT se procesa dos veces, primero para la pantalla de
seleccin 1000 y luego para la pantalla de seleccin en la prxima pgina de la etiqueta
visible.

Copyright . Reservados todos los derechos. 295


Captulo 10: Pantalla de seleccin

296 Copyright . Reservados todos los derechos.


Captulo 10
Ejercicio 22
Definir etiquetas en pantallas de seleccin

Ejemplo empresarial
Como programador, debe aadir campos a la pantalla de seleccin de un informe existente,
crear una ficha y ajustar el proceso de retencin de datos.
Integre las etiquetas.
Solucin modelo para la tarea: BC405_SCREEN_S1B

1. Cree la pantalla de seleccin 1100 como una subscreen y visualice los criterios de
seleccin de la compaa area y el nmero de conexin en esta pantalla.
Cree la pantalla de seleccin 1200 como una subscreen y visualice los criterios de
seleccin para la fecha de vuelo en esta pantalla.
Cree una pantalla de seleccin 1300 como una subscreen e integre los botones de
seleccin en esta pantalla.

2. Cree una ficha en la pantalla de seleccin.


Visualice cada subscreen en su propia pgina de etiqueta con los siguientes ttulos de
pestaas:
Ficha Ttulo de la pestaa Subscreen
1 Conexiones de vuelo 1100
2 Fecha de vuelo 1200
3 Tipo de vuelo 1300

3. Asegrese de que se visualice la etiqueta principal en el sistema la primera vez que


muestre la pgina de seleccin.

Copyright . Reservados todos los derechos. 297


Captulo 10
Solucin 22
Definir etiquetas en pantallas de seleccin

Ejemplo empresarial
Como programador, debe aadir campos a la pantalla de seleccin de un informe existente,
crear una ficha y ajustar el proceso de retencin de datos.
Integre las etiquetas.
Solucin modelo para la tarea: BC405_SCREEN_S1B

1. Cree la pantalla de seleccin 1100 como una subscreen y visualice los criterios de
seleccin de la compaa area y el nmero de conexin en esta pantalla.
Cree la pantalla de seleccin 1200 como una subscreen y visualice los criterios de
seleccin para la fecha de vuelo en esta pantalla.
Cree una pantalla de seleccin 1300 como una subscreen e integre los botones de
seleccin en esta pantalla.
a) Consulte la solucin modelo.

2. Cree una ficha en la pantalla de seleccin.


Visualice cada subscreen en su propia pgina de etiqueta con los siguientes ttulos de
pestaas:
Ficha Ttulo de la pestaa Subscreen
1 Conexiones de vuelo 1100
2 Fecha de vuelo 1200
3 Tipo de vuelo 1300

a) Revise la solucin al final del ejercicio.

3. Asegrese de que se visualice la etiqueta principal en el sistema la primera vez que


muestre la pgina de seleccin.
a) Consulte la solucin modelo.

Programa principal
REPORT bc405_screen_s1b.

INCLUDE bc405_screen_s1b_top.
INCLUDE bc405_screen_s1b_e01.

Include TOP
* Workarea for data fetch
DATA: gs_flight type dv_flights.

* Constant for CASE statement

298 Copyright . Reservados todos los derechos.


Leccin: Implementacin de pantallas de seleccin mltiple

CONSTANTS gc_mark VALUE 'X'.

* Selections for connections


SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECT-OPTIONS: so_car FOR gs_flight-carrid MEMORY ID car,
so_con FOR gs_flight-connid.
SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights


SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECT-OPTIONS so_fdt FOR gs_flight-fldate NO-EXTENSION.
SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter
SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.
PARAMETERS: pa_all RADIOBUTTON GROUP rbg1,
pa_nat RADIOBUTTON GROUP rbg1,
pa_int RADIOBUTTON GROUP rbg1 DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK radio.
SELECTION-SCREEN END OF SCREEN 1300.

SELECTION-SCREEN BEGIN OF TABBED BLOCK airlines


FOR 5 LINES.
SELECTION-SCREEN TAB (20) tab1 USER-COMMAND conn
DEFAULT SCREEN 1100.
SELECTION-SCREEN TAB (20) tab2 USER-COMMAND date
DEFAULT SCREEN 1200.
SELECTION-SCREEN TAB (20) tab3 USER-COMMAND type
DEFAULT SCREEN 1300.
SELECTION-SCREEN END OF BLOCK airlines .

Include E01
*&----------------------------------------------------*
*& Event INITIALIZATION
*&----------------------------------------------------*

INITIALIZATION.
* Initialize select-options for CARRID" OPTIONAL
MOVE: 'AA' TO so_car-low,
'QF' TO so_car-high,
'BT' TO so_car-option,
'I' TO so_car-sign.
APPEND so_car.

CLEAR so_car.
MOVE: 'AZ' TO so_car-low,
'EQ' TO so_car-option,
'E' TO so_car-sign.
APPEND so_car.

* Set texts for tabstrip pushbuttons


tab1 = 'Connections'(tl1).
tab2 = 'Date'(tl2).
tab3 = 'Type of flight'(tl3).

* Set second tab page as initial tab


airlines-activetab = 'DATE'.
airlines-dynnr = '1200'.

*&---------------------------------------------------*
*& Event START-OF-SELECTION

Copyright . Reservados todos los derechos. 299


Captulo 10: Pantalla de seleccin

*&---------------------------------------------------*

START-OF-SELECTION.
* Checking the output parameters
CASE gc_mark.
WHEN pa_all.
* Radiobutton ALL is marked
SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,
gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

WHEN pa_nat.
* Radiobutton NATIONAL is marked
SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt
AND countryto = dv_flights~countryfr.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,
gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

WHEN pa_int.
* Radiobutton INTERNATIONAL is marked
SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt
AND countryto <> dv_flights~countryfr.

WRITE: / gs_flight-carrid,
gs_flight-connid,
gs_flight-fldate,
gs_flight-countryfr,
gs_flight-cityfrom,
gs_flight-airpfrom,
gs_flight-countryto,
gs_flight-cityto,

300 Copyright . Reservados todos los derechos.


Leccin: Implementacin de pantallas de seleccin mltiple

gs_flight-airpto,
gs_flight-seatsmax,
gs_flight-seatsocc.
ENDSELECT.

ENDCASE.

Copyright . Reservados todos los derechos. 301


Captulo 10: Pantalla de seleccin

RESUMEN DE LA LECCIN
Ahora podr:
Crear pantallas de seleccin adicionales
Definir etiquetas en la pantalla de seleccin

302 Copyright . Reservados todos los derechos.


Captulo 10
Leccin 3
Administracin de las verificaciones de
entrada y variantes

RESUMEN DE LA LECCIN
Esta leccin explica cmo implementar verificaciones de entrada para la pantalla de
seleccin. Esta leccin tambin explica cmo usar variantes para volver a utilizar valores
ingresados una vez en la pantalla de seleccin.

Ejemplo empresarial
Como programador, necesita escribir un programa para una compaa area que recupere
informacin sobre vuelos a una ciudad particular. Si el usuario selecciona una ciudad para la
cual la compaa area no opera, la pantalla de seleccin debe mostrar un mensaje de error.
Debe escribir un programa utilizando una pantalla de seleccin fcil de usar que contenga una
verificacin de entrada correspondiente. Por este motivo, se requieren los siguientes
conocimientos:
Una buena comprensin de cmo implementar verificaciones de entrada para las
pantallas de seleccin
Una buena comprensin de cmo implementar la ayuda para campos y entradas
Una buena comprensin de cmo crear una variante para una pantalla de seleccin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar verificaciones de entrada
Implementar ayuda para campos y valores
Crear variantes

Copyright . Reservados todos los derechos. 303


Captulo 10: Pantalla de seleccin

Verificaciones de entrada

Figura 119: Verificaciones de entradas: AT SELECTION-SCREEN

Se evala la entrada de un usuario en la pantalla de seleccin en el evento AT SELECTION-


SCREEN. Si se muestra un mensaje de error o de advertencia durante este evento, la pantalla
de seleccin se vuelve a visualizar y el sistema prepara todos los campos de pantalla de
seleccin para la entrada.
Al utilizar el suplemento ON <f> o ON <seltab>, hace referencia a selecciones especficas. En
caso de errores, solo estas selecciones estarn listas para la entrada nuevamente.
Puede usar el evento AT SELECTION-SCREEN ON BLOCK <block> para verificar las
combinaciones de entrada de un grupo lgico. Los campos en este bloque se preparan para la
entrada cuando se emite un mensaje de error.
El evento AT SELECTION-SCREEN ON END OF <seltab> es para el procesamiento del
Proceso despus de la entrada (PAI) de la pantalla de seleccin para selecciones mltiples.
Puede realizar verificaciones de entrada para los criterios de seleccin de una base de datos
lgica que utilice y para sus propias selecciones especficas de programa.

304 Copyright . Reservados todos los derechos.


Leccin: Administracin de las verificaciones de entrada y variantes

Ayuda para campos y Ayuda para entradas

Figura 120: Ayuda para campos y Ayuda para entradas (F1 y F4)

Puede programar su propia Ayuda F1 (ayuda para campos) y Ayuda F4 (ayuda para entradas)
para los eventos AT SELECTION-SCREEN ON HELP-REQUEST y AT SELECTION-SCREEN ON
VALUE-REQUEST.
La ayuda F1 puede hacer referencia a los parmetros individuales o a una tabla de seleccin
(seltab). Si especifica el nombre de una tabla SELECT-OPTIONS, la ayuda est disponible
tanto para seltab-low como para seltab-high. Debe especificar el campo de intervalo inferior o
el superior como referencia para una ayuda F4 de una opcin de seleccin.
Cuando coloca el cursor y utiliza la tecla F1 o F4, el sistema desencadena el evento apropiado.
El suplemento ON VALUE-REQUEST visualiza el pulsador para la ayuda F4 en el campo
correspondiente.

Consejo:
Las ayudas F1 y F4 se almacenan en el Dictionary ABAP. La ventaja para los
programadores es que no necesitan recuperar datos para la ayuda F4 y la
transferencia del valor seleccionado al campo de entrada. Para el usuario, las
ayudas F1 y F4 de este tipo proporcionan un diseo uniforme y de intercambio de
programas.

Copyright . Reservados todos los derechos. 305


Captulo 10: Pantalla de seleccin

Pantalla de seleccin: variantes

Figura 121: Pantalla de seleccin: variantes

Un usuario puede crear un nmero de variantes de pantallas de seleccin para un programa.


El sistema asigna cada variante de manera nica al programa y no se comparte con otros
programas.
La creacin de variantes es til si se inicia frecuentemente un programa con el mismo
subconjunto de selecciones o se ejecuta un programa de fondo.
Si elije Comenzar a usar variante en los atributos del programa, debe especificar una variante
cuando ejecuta el programa.
Si el programa usa diversas pantallas de seleccin, puede elegir crear una variante para una
pantalla o para todas las pantallas de seleccin.

Las convenciones para fijar nombres para las variantes son las siguientes:
SAP&xxx se suministran con el sistema SAP.
CUS&xxx son creadas por el cliente.

Las variantes que siguen estas convenciones para fijar nombres son independientes del
mandante y se transportan automticamente con el informe. Si no sigue estas convenciones
para fijar nombres, pero aun desea transportar variantes, agrguelas manualmente a la lista
de objetos de la solicitud de transporte. Para agregar variantes en una solicitud, seleccione Ir
a Variantes en el Editor ABAP para cambiar el mantenimiento de variantes; luego
seleccione Utilidades Solicitud de transporte para introducir las variantes que desea
transportar all.

Pantalla de seleccin: descripcin de variantes

La descripcin de variantes y los atributos de campos son los siguientes:

306 Copyright . Reservados todos los derechos.


Leccin: Administracin de las verificaciones de entrada y variantes

Atributos Descripcin
Variantes Funcionar solo para el procesamiento de
fondo
Proteger variante
Mostrar slo en catlogo
Transportar automticamente la variante
del sistema

Atributos de campo Definir campo obligatorio


Desactivar los parmetros SET/GET
Grabar el campo sin valores
Variable de seleccin
Ocultar el campo "Para"
Ocultar campo
Proteger campo

Asigne un nombre y una descripcin a cada variante. Por defecto, las variantes estn
disponibles para el procesamiento de dilogos y de fondo. Tambin puede definir una variante
exclusivamente para el uso con el procesamiento back end.
Puede evitar que otros usuarios realicen cambios en su variante. Si selecciona Mostrar solo en
catlogo, esta variante se muestra solo en el catlogo, pero no en el valor general Ayuda (F4).
El catlogo de variantes es parte de ABAP Workbench y solo es accesible para los
programadores de ABAP. No est disponible para los usuarios comunes de un programa.
Para llamar al catlogo de variantes (una visin general de todas las variantes existentes),
desde el Editor ABAP, elija Ir a Variantes y luego Variantes Catlogo.
El tipo de una seleccin se define en su sentencia; por ejemplo, tipo S para SELECT-OPTIONS,
tipo P para PARAMETERS. Si elije Selecciones protegidas, no se pueden hacer entradas en los
campos. Se usa el atributo Ocultar para ocultar las selecciones que no se requieren, lo que
hace que la pantalla de seleccin sea ms clara.

Si usa variables de seleccin, puede suministrar valores a sus selecciones en el momento


de ejecucin de las siguientes maneras:
Tabla TVARVC (tipo T)
Puede definir permanentemente las variables con los valores de esta tabla; el sistema
utiliza los nombres de la variable para recuperar el valor en el tiempo de ejecucin.
Clculo de fecha dinmico (tipo D)
Puede usar esto para suministrar campos de fechas con valores, como la fecha o el mes
actual.
Variables especficas del usuario (tipo B)
Se declara la seleccin con el suplemento MEMORY ID <pid>.

Copyright . Reservados todos los derechos. 307


Captulo 10: Pantalla de seleccin

Para crear una variante con el clculo dinmico de fechas

Consejo:
Esto describe el procedimiento para SAP NetWeaver 7.0.
Aunque la idea del clculo de fecha dinmico era similar en versiones anteriores,
el procedimiento era algo distinto.

1. Cree una variante y cambie a los atributos de la variante.

2. Utilice el valor ayuda para definir la clase de variable de seleccin (atributo de Variable de
seleccin) para el clculo de fecha dinmico D.

3. Utilice el valor ayuda para definir el nombre de la variable (atributo Nombre de variable),
como Mes actual con el clculo de fecha dinmico para el intervalo de tiempo.

308 Copyright . Reservados todos los derechos.


Captulo 10
Ejercicio 23
Implementar verificaciones de entradas y crear
variantes

Ejemplo empresarial
Como programador, debe extender el registro de datos de vuelo. Si el usuario selecciona
Vuelos domsticos, especifique un pas para limitar la cantidad de vuelos y programe una
verificacin de entrada correspondiente para la pantalla de seleccin.
Ample el programa ZBC401_##_SOL o copie la solucin modelo BC405_SCREEN_S1B del
ejercicio anterior.
Solucin modelo para la tarea: BC405_SCREEN_S2
Aada un parmetro adicional y una verificacin de entrada a la pantalla de seleccin.

1. En la tercera etiqueta, cree un parmetro adicional del cdigo de pas al que hace
referencia gs_flight-countryfr y pida a los usuarios que registren un valor si
seleccionan vuelos domsticos. Para estos casos, ample la clusula DNDE del
SELECCIONAR relevante.

2. Muestre el mensaje de error 003 de la clase de mensaje BC405 si el usuario selecciona la


opcin Vuelos domsticos y el parmetro de entrada para el pas es inicial. Si se produce
un error, slo el grupo de botones de seleccin y el parmetro de pas deben estar listos
para la entrada.

3. Cree una variante V ##, donde ## es su nmero de grupo. Use el clculo dinmico de
fechas (variable de seleccin) cuando cree una variante y establezca la fecha del vuelo
usando el mes actual.

Copyright . Reservados todos los derechos. 309


Captulo 10
Solucin 23
Implementar verificaciones de entradas y crear
variantes

Ejemplo empresarial
Como programador, debe extender el registro de datos de vuelo. Si el usuario selecciona
Vuelos domsticos, especifique un pas para limitar la cantidad de vuelos y programe una
verificacin de entrada correspondiente para la pantalla de seleccin.
Ample el programa ZBC401_##_SOL o copie la solucin modelo BC405_SCREEN_S1B del
ejercicio anterior.
Solucin modelo para la tarea: BC405_SCREEN_S2
Aada un parmetro adicional y una verificacin de entrada a la pantalla de seleccin.

1. En la tercera etiqueta, cree un parmetro adicional del cdigo de pas al que hace
referencia gs_flight-countryfr y pida a los usuarios que registren un valor si
seleccionan vuelos domsticos. Para estos casos, ample la clusula DNDE del
SELECCIONAR relevante.
a) Consulte la solucin modelo.

2. Muestre el mensaje de error 003 de la clase de mensaje BC405 si el usuario selecciona la


opcin Vuelos domsticos y el parmetro de entrada para el pas es inicial. Si se produce
un error, slo el grupo de botones de seleccin y el parmetro de pas deben estar listos
para la entrada.
a) Consulte la solucin modelo.

3. Cree una variante V ##, donde ## es su nmero de grupo. Use el clculo dinmico de
fechas (variable de seleccin) cuando cree una variante y establezca la fecha del vuelo
usando el mes actual.
a) Para crear la variante V ##, desde la pantalla de seleccin, seleccione Grabar como
variante.

b) Seleccione el campo de entrada Fecha de vuelo de la pantalla de seleccin 1200.

c) Seleccione el valor D del atributo Variable de seleccin para el campo de entrada


seleccionado.

d) Seleccione el valor Mes actual para el atributo Nombre de variable para el campo de
entrada seleccionado.
Programa de framework
REPORT bc405_screen_s2.

310 Copyright . Reservados todos los derechos.


Leccin: Administracin de las verificaciones de entrada y variantes

INCLUDE bc405_screen_s2_top.
INCLUDE bc405_screen_s2_e01.
* Workarea for data fetch
DATA: gs_flight TYPE dv_flights.

* Constant for CASE statement


CONSTANTS gc_mark VALUE 'X'.

* Selections for connections


SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.
SELECT-OPTIONS: so_car FOR gs_flight-carrid,
so_con FOR gs_flight-connid.
SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights


SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.
SELECT-OPTIONS so_fdt FOR gs_flight-fldate NO-EXTENSION.
SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter
SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.

SELECTION-SCREEN BEGIN OF BLOCK param.

SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.


PARAMETERS: pa_all RADIOBUTTON GROUP rbg1,
pa_nat RADIOBUTTON GROUP rbg1,
pa_int RADIOBUTTON GROUP rbg1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK radio.


PARAMETERS: pa_ctry LIKE gs_flight-countryfr.
SELECTION-SCREEN END OF BLOCK param.
SELECTION-SCREEN END OF SCREEN 1300.

Include E01
AT SELECTION-SCREEN ON BLOCK param.

*check country for national flights is not empty


CHECK pa_nat = 'X' AND pa_ctry = space.
MESSAGE e003(bc405).

START-OF-SELECTION.
...

* Radiobutton NATIONAL is marked


SELECT * FROM dv_flights INTO gs_flight
WHERE carrid IN so_car
AND connid IN so_con
AND fldate IN so_fdt
AND countryto = dv_flights~countryfr
AND countryto = pa_ctry.

Copyright . Reservados todos los derechos. 311


Captulo 10: Pantalla de seleccin

RESUMEN DE LA LECCIN
Ahora podr:
Implementar verificaciones de entrada
Implementar ayuda para campos y valores
Crear variantes

312 Copyright . Reservados todos los derechos.


Captulo 10

Evaluacin de la formacin

1. Las pantallas de seleccin funcionan como una interfaz entre el programa y el usuario, y
permiten al usuario limitar la cantidad de datos que se leern desde la base de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cul de las siguientes son sentencias declarativas?


Seleccione las respuestas correctas.

X A DATA

X B PARAMETERS

X C SELECT

3. Puede suministrar valores por defecto para los campos de la pantalla de seleccin de un
registro o una base de datos lgica durante el evento __________.
Seleccione la respuesta correcta.

X A INITIALIZATION

X B AT SELECTION-SCREEN

X C START-OF-SELECTION

4. Si oculta un parmetro, tambin se oculta el texto de comentario.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 313


Captulo 10: Evaluacin de la formacin

5. Puede agregar valores por defecto en las pantallas de seleccin adicionales en


INITIALIZATION.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. Puede posponer el enlace del ttulo de una etiqueta a una imagen de seleccin hasta el
momento de ejecucin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Si se muestra un mensaje de error o de advertencia durante el evento AT SELECTION-


SCREEN, el sistema prepara todos los campos de pantalla de seleccin para la entrada.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Debe especificar el campo de intervalo inferior o el superior como referencia para una
ayuda F4 de una opcin de seleccin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

314 Copyright . Reservados todos los derechos.


Captulo 10

Respuestas a la Evaluacin de la formacin

1. Las pantallas de seleccin funcionan como una interfaz entre el programa y el usuario, y
permiten al usuario limitar la cantidad de datos que se leern desde la base de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cul de las siguientes son sentencias declarativas?


Seleccione las respuestas correctas.

X A DATA

X B PARAMETERS

X C SELECT

3. Puede suministrar valores por defecto para los campos de la pantalla de seleccin de un
registro o una base de datos lgica durante el evento __________.
Seleccione la respuesta correcta.

X A INITIALIZATION

X B AT SELECTION-SCREEN

X C START-OF-SELECTION

4. Si oculta un parmetro, tambin se oculta el texto de comentario.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 315


Captulo 10: Respuestas a la Evaluacin de la formacin

5. Puede agregar valores por defecto en las pantallas de seleccin adicionales en


INITIALIZATION.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. Puede posponer el enlace del ttulo de una etiqueta a una imagen de seleccin hasta el
momento de ejecucin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Si se muestra un mensaje de error o de advertencia durante el evento AT SELECTION-


SCREEN, el sistema prepara todos los campos de pantalla de seleccin para la entrada.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Debe especificar el campo de intervalo inferior o el superior como referencia para una
ayuda F4 de una opcin de seleccin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

316 Copyright . Reservados todos los derechos.


CAPTULO 11 Introduccin a la programacin
de pantallas

Leccin 1
Descripcin de aspectos generales de transacciones 318
Ejercicio 24: Creacin de un programa de dilogo 325

Leccin 2
Presentacin de programacin de pantallas 328

Leccin 3
Creacin de pantallas y de elementos de pantalla 333
Ejercicio 25: Crear una pantalla 341

Leccin 4
Modificacin de pantallas en el tiempo de ejecucin 347

Leccin 5
Definicin de secuencia de pantallas 352

Leccin 6
Llamada dinmica de una ventana de dilogo 357
Ejercicio 26: Cree una ventana de dilogo 359

OBJETIVOS DEL CAPTULO

Describir las transacciones generales de pantallas individuales


Describir tipos de programas ABAP
Describir los conceptos relacionados con la programacin de pantallas
Crear pantallas y elementos de pantalla
Modificar pantallas en el tiempo de ejecucin
Definir secuencias de pantallas
Llamar dinmicamente a ventanas de dilogo

Copyright . Reservados todos los derechos. 317


Captulo 11
Leccin 1
Descripcin de aspectos generales de
transacciones

RESUMEN DE LA LECCIN
Esta leccin describe diversos aspectos de transacciones de imgenes individuales. La
leccin tambin presenta los tipos de programas ABAP.

Ejemplo empresarial
Desea programar dilogos de usuarios usando diversos elementos de pantalla para SAP GUI
en el sistema SAP. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin del modelo de programacin de imgenes individuales
Cmo organizar el cdigo fuente de su programa con Includes

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir las transacciones generales de pantallas individuales
Describir tipos de programas ABAP

Modelo de transaccin individual

Figura 122: Modelo de implementacin de SAP

Cualquier forma de interaccin entre un usuario y un programa se refiere a una accin del
usuario, por ejemplo, ingresar datos, seleccionar un elemento del men, hacer clic en un
botn o hacer clic o doble clic en una entrada de lista.

318 Copyright . Reservados todos los derechos.


Leccin: Descripcin de aspectos generales de transacciones

El modelo de programacin SAP actual es de transacciones de imgenes individuales. El


objetivo del modelo de implementacin actual de SAP es sustituir secuencias largas y
anidadas de imgenes por transacciones de imagen nica. Las transacciones de imgenes
individuales son fciles de usar y mejoran la el uso de un sistema SAP.
Las imgenes de entrada y de datos se combinan en una sola ventana. Combinar las
imgenes ahorra al usuario una navegacin innecesaria y se asegura un contexto empresarial
correcto.
Las transacciones de imgenes individuales proporcionan sesiones de programas que mejor
se adaptan a las autorizaciones del usuario. Una transaccin de imgenes individuales le
permite al usuario acceder directamente a los objetos que deben editarse y limita el rea de
seleccin usando un filtro, una estructura de rbol o el ltimo objeto editado.
Luego de guardar los datos en la base de datos, el usuario puede volver a visualizar el objeto
tratado para verificar las modificaciones que le ha introducido.

Ejemplo de formato de pantalla

Figura 123: Ejemplo de formato de pantalla: transaccin FB60

La figura muestra un ejemplo de formato de pantalla de la transaccin FB60, que est


rediseada de acuerdo con el nuevo modelo de programacin.

La pantalla se divide en las siguientes secciones; cada una le permite realizar diferentes
funciones:
Seleccin de objetos: Puede seleccionar el objeto que desea tratar en una estructura de
rbol.
ID de objeto: Puede tratar los datos y atributos clave de todo el objeto.
Detalles del objeto: Puede seleccionar objetos parciales para tratarlos.
Funciones de aplicacin: Como resultado de las nuevas transacciones de imagen nica, en
la barra de pulsadores slo hay unas cuantas funciones disponibles. Entre ellas: funciones
de visualizacin, como mostrar y ocultar mbitos de imagen, crear objetos nuevos a partir
de modelos, o conmutar entre distintas sesiones de un programa.

Copyright . Reservados todos los derechos. 319


Captulo 11: Introduccin a la programacin de pantallas

Ejercicio: programacin de pantalla

Figura 124: Ejercicio: programacin de pantalla

El grfico describe los ejercicios de programacin de pantalla de esta clase.

Tipos de programas ABAP

Figura 125: Tipos de programas ABAP

Los tipos de programas ABAP pueden ser completos o incompletos. Los programas ABAP
que son completos se pueden ejecutar y son de los siguientes tipos:
Programa ejecutable (tipo 1)

320 Copyright . Reservados todos los derechos.


Leccin: Descripcin de aspectos generales de transacciones

Puede ejecutar programas ejecutables seleccionando Sistema Servicios Reporting o


directamente desde el editor ABAP. Siguiendo un orden predefinido, se implementan un
conjunto de bloques de procesamiento. Puede utilizar una imagen de seleccin estndar.
Por lo general, los programas de tipo 1 crean y visualizan listas. Una lista es un tipo de
formato de salida, como una lista normal y una lista interactiva, que se crea mediante el
uso de sentencias WRITE. En los informes modernos, las listas se definen usando SAP List
Viewer (ALV).
Modulpool (tipo M)
Para que un programa M sea ejecutable, debe crear al menos un cdigo de transaccin en
el que se especifique una imagen inicial. Puede controlar la secuencia de imgenes
posterior tanto de forma esttica en los atributos de imagen como dinmica en el cdigo
de programa.

Los programas ABAP que son incompletos no pueden ejecutarse directamente. Sirven de
contenedor para las unidades de modularizacin que se llaman desde otros programas. El
sistema carga su programa principal completo en la sesin interna del programa de llamada
cada vez que carga una unidad de modularizacin.

Los siguientes tipos de programas no se pueden ejecutar directamente:


Grupo de funciones (tipo F)
Un grupo de funciones (tipo F) puede contener mdulos de funciones, tipos de datos
locales, objetos de datos globales y pantallas.
Programa de Include (tipo I)
Un programa de Include (tipo I) puede contener cualquier sentencia ABAP.
Pool de interfaces (tipo J)
Un pool de interfaces (tipo J) contiene una interfaz global que a su vez puede contener
tipos de datos locales y constantes.
Pool de clases (tipo K)
Un pool de clase (tipo K) contiene una clase global que a su vez puede contener
constantes, tipos de datos locales, clases e interfaces locales.

Copyright . Reservados todos los derechos. 321


Captulo 11: Introduccin a la programacin de pantallas

Organizacin de programa

Figura 126: Organizacin de programa

En el ms sencillo de los casos, el programa consiste en una fuente nica que tiene todos los
bloques de procesamiento necesarios. Sin embargo, para que el cdigo de su programa sea
ms fcil de comprender y para que se puedan reutilizar sus partes en otros programas, por
ejemplo, para declaraciones de datos, use los programas include.
Cuando cree un programa desde el Object Navigator, el sistema el pide que lo cree usando la
opcin Con Include TOP. Seleccionando esta opcin, podr crear programas con una
estructura clara.
Cuando crea bloques de procesamiento, el sistema automticamente le pide el programa
include donde se debe insertar el cdigo fuente correspondiente.
Si se especifica un programa de Include que no existe, el sistema lo crea e inserta una
declaracin INCLUDE correspondiente en el programa principal.

322 Copyright . Reservados todos los derechos.


Leccin: Descripcin de aspectos generales de transacciones

Modelo de datos para BC410

Figura 127: Tablas del modelo de datos del vuelo (BC410)

La figura muestra las tablas del modelo de datos del vuelo que se usaron en este curso.

Modelo de datos para BC410: campos de tabla y sus significados

Los campos de tabla clave que se usaron en este curso son los siguientes:
SPFLI

Campo de tabla Significado


CARRID Ca.area
CONNID Cdigo de conexin
AIRPFROM, AIRPTO Aeropuerto de salida, aeropuerto de llegada
CITYTO, CITYFROM Ciudad de llegada, ciudad de salida

SFLIGHT

Campo de tabla Significado


CARRID, CONNID Vase SPFLI.
FLDATE Fecha de vuelo
SEATSMAX, SEATSOCC Capacidad mxima, asientos ocupados
(clase turista)
PRICE Precio del vuelo bsico
MONEDA Moneda

SBOOK

Campo de tabla Significado


CARRID, CONNID, FLDATE Vase SFLIGHT.

Copyright . Reservados todos los derechos. 323


Captulo 11: Introduccin a la programacin de pantallas

Campo de tabla Significado


BOOKID Nmero de reserva
CUSTOMID Nmero de cliente

SAPLANE

Campo de tabla Significado


PLANETYPE Tipo de avin
SEATSMAX Capacidad mxima

324 Copyright . Reservados todos los derechos.


Captulo 11
Ejercicio 24
Creacin de un programa de dilogo

Ejemplo empresarial
El cliente desea que cree un programa de dilogo.
Solucin: SAPMBC410ADIAS_INTRO

1. Cree el paquete ZBC410_## (donde ## es su nmero de grupo) y asgnelo a la solicitud


de transporte que le ha proporcionado el instructor.

2. En este paquete, cree el programa SAPMZ00BC410_SOLUTION con un Include TOP (tipo


de programa: module pool), donde ## es su nmero de grupo asignado por el instructor.

3. Acepte el nombre que propone el sistema para el Include TOP.

Copyright . Reservados todos los derechos. 325


Captulo 11
Solucin 24
Creacin de un programa de dilogo

Ejemplo empresarial
El cliente desea que cree un programa de dilogo.
Solucin: SAPMBC410ADIAS_INTRO

1. Cree el paquete ZBC410_## (donde ## es su nmero de grupo) y asgnelo a la solicitud


de transporte que le ha proporcionado el instructor.

2. En este paquete, cree el programa SAPMZ00BC410_SOLUTION con un Include TOP (tipo


de programa: module pool), donde ## es su nmero de grupo asignado por el instructor.

3. Acepte el nombre que propone el sistema para el Include TOP.


a) Consulte la solucin modelo.
Programa principal
INCLUDE MBC410ADIAS_INTROTOP.

Include TOP
PROGRAM sapmbc410adias_intro.

326 Copyright . Reservados todos los derechos.


Leccin: Descripcin de aspectos generales de transacciones

RESUMEN DE LA LECCIN
Ahora podr:
Describir las transacciones generales de pantallas individuales
Describir tipos de programas ABAP

Copyright . Reservados todos los derechos. 327


Captulo 11
Leccin 2
Presentacin de programacin de pantallas

RESUMEN DE LA LECCIN
En esta leccin se describen los conceptos y principios de la programacin de imgenes.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. Por este motivo, se requieren los
siguientes conocimientos:
Una buena comprensin de los principios de programacin de pantallas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir los conceptos relacionados con la programacin de pantallas

Pantallas

Figura 128: Pantallas

Las pantallas son objetos de libre definicin que se usan para visualizar o introducir
informacin a travs de unos campos de entrada y de salida, listas, etc.
Las pantallas son una forma de dilogo entre un usuario y el programa ABAP.

328 Copyright . Reservados todos los derechos.


Leccin: Presentacin de programacin de pantallas

Ventajas de las pantallas

Figura 129: Ventajas de las pantallas

Las pantallas permiten introducir y visualizar datos. Puede usar las pantallas en combinacin
con el Dictionary ABAP para verificar la coherencia de los datos que ingres el usuario y
tambin para brindar al usuario Ayuda para entradas y Ayuda semntica.
Las pantallas permiten crear dilogos de fcil manejo con botones, controles de ficha,
controles de tabla y otros elementos grficos. Las pantallas son contenedores para diversos
elementos de pantalla, como botones de seleccin, casillas de seleccin y campos de entrada
y de texto.

pantallas en programas de dilogo

Figura 130: pantallas en programas de dilogo

Copyright . Reservados todos los derechos. 329


Captulo 11: Introduccin a la programacin de pantallas

Considere el ejemplo de un programa de dilogo simple con una pantalla inicial y una pantalla
para visualizar informacin para un registro de datos seleccionado.
Cuando se inicia el programa, el sistema carga su contexto de programa y prepara espacio
para los objetos de datos del programa en la memoria. Luego, se muestra la pantalla inicial. El
usuario ingresa los datos en la pantalla inicial y realiza una accin.
Cualquier accin del usuario en la pantalla, como la eleccin de una opcin de men o la
seleccin de un botn, devuelve el control al sistema de tiempo de ejecucin. Los datos en los
campos de pantalla luego se transportan a la estructura que sirve como interfaz entre la
pantalla y el programa. El sistema de tiempo de ejecucin desencadena el bloque de
procesamiento que pertenece a la pantalla, que se denomina Proceso despus de la entrada
(PAI). Este bloque siempre se procesa despus de una interaccin con el usuario.
El programa solicita datos de la base de datos y los almacena en la estructura meta definida
en el Include TOP.
La lgica de procesamiento llama a la segunda pantalla y comienza su Proceso antes de la
salida (PBO). Los datos en la estructura meta se mueven a la estructura con nombres de
campo idnticos que los campos de pantalla. Esta estructura sirve como interfaz para la
pantalla.
Al final del PBO, los datos en los campos de esta estructura se transfieren a los campos con
nombres idnticos en la pantalla.

Atributos de los elementos de pantalla

Figura 131: Atributos de elementos de pantalla (clave)

Los elementos de pantalla incluyen campos de texto, campos de entrada/salida, iconos de


status, marcos de grupo, botones de seleccin, casillas de seleccin y pulsadores. Los
elementos de pantalla tienen atributos generales, del dictionary, de programacin y de
visualizacin.
Los elementos subscreen, control de fichas y control de tablas tienen atributos generales y
especiales relacionados con las clases correspondientes.

Los atributos de un elemento se pueden dividir en las siguientes categoras:


Atributos que se definen estticamente y no se pueden cambiar dinmicamente
Atributos que se definen estticamente y que se pueden cambiar dinmicamente

330 Copyright . Reservados todos los derechos.


Leccin: Presentacin de programacin de pantallas

Atributos que solo se definen dinmicamente

Para obtener una documentacin completa de los atributos de los elementos de pantalla,
consulte la documentacin en lnea (Biblioteca SAP -> Biblioteca SAP NetWeaver -> Biblioteca
SAP NetWeaver: Vista orientada hacia la funcin -> Servidor de aplicacin ABAP -> Desarrollo
de aplicacin en AS ABAP -> Herramientas de programacin ABAP -> Herramientas de
workbench ABAP -> Screen Painter -> Actualizacin de atributos para los elementos de
pantalla).

Atributos de pantalla

Figura 132: Atributos de pantalla

Cada pantalla tiene un conjunto de atributos de administracin que especifican el tipo, el


tamao y la pantalla posterior. La pantalla tambin tiene configuraciones que influencian
otras propiedades de la pantalla y sus componentes, como se muestra en la figura.
Los atributos de administracin Nmero de pantalla y Programa identifican la pantalla por su
nmero y el programa al que pertenecen.
Los nmeros de pantalla mayores que 9000 se reservan para los clientes del sistema SAP.
Los nmeros de pantalla del 1000 al 1010 se reservan para las pantallas de actualizacin de
las tablas de Dictionary ABAP y las pantallas de seleccin estndar de los programas
ejecutables.
El tipo de pantalla identifica la finalidad de una pantalla. Los atributos especiales de una
pantalla y sus componentes dependen del tipo de pantalla.
El atributo Dynpro siguiente permite especificar la pantalla que se debe procesar tras la actual
en una secuencia definida.
Para obtener una lista de los atributos de pantalla y sus significados, consulte la
documentacin en lnea (Biblioteca SAP -> Biblioteca SAP NetWeaver -> Biblioteca SAP
NetWeaver: Vista orientada hacia la funcin -> Servidor de aplicacin ABAP -> Desarrollo de
aplicacin en AS ABAP -> Herramientas de programacin ABAP -> Herramientas de
workbench ABAP -> Screen Painter -> Crear pantallas -> Actualizacin de atributos de
pantalla).

Copyright . Reservados todos los derechos. 331


Captulo 11: Introduccin a la programacin de pantallas

Componentes de la pantalla

Figura 133: Definir y administrar pantallas

Una pantalla se compone de una pantalla y de su lgica de proceso. La lgica de proceso es


un programa que controla cmo se procesa la pantalla.
Si desea informacin sobre la programacin de la lgica de proceso de pantallas, consulte la
Gua del usuario de ABAP.
Las pantallas tienen las mscaras, los atributos, los elementos y la lgica de proceso de la
pantalla.
La lgica de proceso contiene el cdigo de lgica de proceso, no las sentencias ABAP.

RESUMEN DE LA LECCIN
Ahora podr:
Describir los conceptos relacionados con la programacin de pantallas

332 Copyright . Reservados todos los derechos.


Captulo 11
Leccin 3
Creacin de pantallas y de elementos de
pantalla

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear pantallas y elementos de pantalla.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. Por este motivo, se requieren los
siguientes conocimientos:
Cmo crear pantallas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Crear pantallas y elementos de pantalla

Creacin de pantallas

Figura 134: Crear pantallas

Para crear una pantalla, lleve a cabo los siguientes pasos:


1. Fije los atributos generales de pantalla en la pantalla de atributos.

2. Disee el formato de pantalla en el editor de layout.

3. Fije los atributos de campo en la lista de campos.

4. Escriba la lgica de proceso en el editor de la lgica de proceso.

Copyright . Reservados todos los derechos. 333


Captulo 11: Introduccin a la programacin de pantallas

Creacin de atributos de pantalla

Figura 135: Crear atributos de pantalla

Para crear una pantalla desde la lista de objetos en Object Navigator, realice los
siguientes pasos:
1. Cree un nuevo objeto de desarrollo con el tipo Pantalla. Abra el men contextual para un
programa de dilogo y seleccione Crear->Pantalla. En la ventana de dilogo, escriba un
nmero entre el 1 y el 9000 en el campo Nmero de pantalla y presione Intro. El Object
Navigator abre el Screen Painter.

2. Introduzca los atributos de pantalla obligatorios, como texto breve y tipo de pantalla. A
menudo, se usa el tipo de pantalla Normal.

3. Especifique el nmero de la pantalla siguiente en el campo Pantalla siguiente. Si introduce


0 (o si no introduce ningn valor), el sistema reanuda el proceso desde el punto en donde
se llam la pantalla despus de la finalizacin del procesamiento de pantalla.

Tambin puede crear una pantalla escribiendo la instancia SET SCREEN nnnn o CALL
SCREEN nnnn (donde nnnn representa el nmero de pantalla) en el Editor ABAP y haciendo
doble clic en el nmero de pantalla.

334 Copyright . Reservados todos los derechos.


Leccin: Creacin de pantallas y de elementos de pantalla

Creacin de un formato de pantalla

Figura 136: Crear formatos de pantalla

Se recomienda que los campos de entrada/salida de la pantalla se definan haciendo


referencia a campos/componentes de las definiciones del Dictionary ABAP para las
estructuras o la tabla de la base de datos. Sin embargo, tambin puede referenciar los
campos definidos en el include TOP de su programa, pero los campos de pantalla perdern la
Ayuda para entradas y la Ayuda semntica definida en el Dictionary ABAP. Para poder usar
los campos definidos en el include TOP como referencia para los campos de pantalla, primero
debe activar el programa.
El editor de layout grfico proporciona una manera fcil de definir diversos elementos de la
pantalla, como los campos de entrada/salida, los campos de texto, los marcos de grupos, los
pulsadores, etc. Simplemente selecciona en la barra de herramientas el elemento que
necesita y lo posiciona en la pantalla con el ratn.
Para eliminar un elemento de pantalla, seleccinelo y marque el pulsador Borrar.
Puede mover elementos de la pantalla arrastrndolos con el ratn.

Copyright . Reservados todos los derechos. 335


Captulo 11: Introduccin a la programacin de pantallas

Listas de elementos para las pantallas

Figura 137: Creacin de listas de elementos para las pantallas

Para fijar los atributos de todos los elementos de pantalla, el Screen Painter proporciona una
lista de elementos con diversas vistas. Puede visualizar los atributos de un elemento de
cualquier lista. Puede actualizar los atributos de un elemento en el editor de layout usando la
funcin (F2) del icono Ventana de atributos.
En el Screen Painter, trabaja con tipos de datos del Dictionary ABAP (Clases de datos). Si el
campo de pantalla que cre har referencia a los campos del Dictionary ABAP, el sistema
visualiza el tipo de datos del Dictionary ABAP en el atributo Formato. En el caso de elementos
o modelos que no tengan una referencia al Dictionary ABAP, deber indicar el tipo de datos
del Dictionary ABAP.
Para identificar los tipos de datos correspondientes de Dictionary ABAP para un tipo de datos
ABAP predefinido, consulte la documentacin de palabras clave para la sentencia ABAP
SELECT, va SELECT-target->Reglas de asignacin para las columnas individuales.
Por ejemplo, la siguiente tabla detalla algunas de los tipos de datos ABAP predefinidos
correspondientes para los tipos de datos del Dictionary ABAP.

Por ejemplo, la siguiente tabla detalla los tipos de datos ABAP y los tipos de datos en el
Dictionary ABAP:

Tipo de datos del Dictionary ABAP Tipo de datos ABAP


CHAR C
NUMC N

336 Copyright . Reservados todos los derechos.


Leccin: Creacin de pantallas y de elementos de pantalla

Lgica de proceso de las pantallas

Figura 138: Crear pantallas: lgica de proceso

Las pantallas tienen su propio conjunto de palabras clave que se usan en los eventos de
Proceso antes de salida (PBO) y Proceso despus de salida (PAI) de la lgica de proceso. En
el Screen Painter, inicie la ayuda (CTRL+ F8) y despus seleccione Resumen de palabras
clave.
En la lgica de proceso, escriba las llamadas MODULE. Los mdulos son unidades de
modularizacin de un programa ABAP que contienen las sentencias ABAP que desea
ejecutar.
Se puede crear un mdulo ABAP haciendo doble clic sobre el nombre de este en el editor de
la lgica de proceso.
Puede llamar el mismo mdulo desde ms de una pantalla. Si el procesamiento depende del
nmero de pantalla, puede recuperar el nmero de la pantalla actual en el campo del sistema
SY-DYNNR.
Los mdulos que se llaman en el bloque de procesamiento PBO se deben definir con la
sentencia MODULE OUTPUT. Los mdulos que define usando la sentencia MODULE
INPUT solo se pueden llamar en el evento PAI.

Copyright . Reservados todos los derechos. 337


Captulo 11: Introduccin a la programacin de pantallas

Visibilidad de datos

Figura 139: Visibilidad de datos

Los siguientes procesadores de software estn involucrados en el procesamiento de


pantalla para un programa:
El procesador ABAP controla la ejecucin del programa en un mdulo.
El procesador DYNP controla la lgica de proceso y prepara los datos que se visualizarn
en la pantalla.

Durante el procesamiento de pantalla, se muestran dos conjuntos de datos. El usuario trabaja


con los campos globales de su programa dentro de un mdulo. Puede crear campos globales
en el include TOP usando sentencias declarativas, como TABLES o DATA.
Cuando se enva la pantalla al front end, los campos de entrada/salida de pantalla se
completan con datos de los campos globales con nombre idnticos definidos en el include
TOP. Un programa del sistema transfiere los datos al final del PBO. Ahora, el usuario puede
cambiar los datos y realiza una accin al presionar un botn. Habitualmente, los datos en los
campos de pantalla se transferirn a los campos globales con nombres idnticos en el include
TOP del programa al comienzo del PAI. Un programa del sistema ejecuta esta accin.

338 Copyright . Reservados todos los derechos.


Leccin: Creacin de pantallas y de elementos de pantalla

Intercambio de datos entre las pantallas y los programas ABAP

Figura 140: Intercambio de datos: Pantallas Programas ABAP

Despus de que un sistema haya procesado todos los mdulos del bloque de procesamiento
PBO, el sistema copia el contenido de los campos del rea de trabajo ABAP en sus campos
equivalentes del rea de trabajo de pantalla. La pantalla y su programa ABAP asociado se
comunican solo si los campos de la pantalla y los campos equivalentes en el programa tienen
nombres idnticos.
Antes de que el sistema procese el primer mdulo del bloque de procesamiento PAI, el
sistema copia el contenido de los campos del rea de trabajo de pantalla en sus campos
equivalentes del rea de trabajo ABAP.
Use sus propias estructuras, como SDYN_CONN, para transportar datos entre la pantalla y el
programa ABAP. Al usar sus propias estructuras garantiza que los datos que se transportan
de la pantalla al programa, y viceversa, sean exactamente los datos que desea el usuario.

Copyright . Reservados todos los derechos. 339


Captulo 11: Introduccin a la programacin de pantallas

340 Copyright . Reservados todos los derechos.


Captulo 11
Ejercicio 25
Crear una pantalla

Ejemplo empresarial
Desea crear una pantalla que contenga campos de entrada/salida y a continuacin desea
anexarla al programa de dilogo que lee datos de una tabla de base de datos. Tambin desea
crear un cdigo de transaccin adecuado para su programa.
Modelo: SAPMBC410ADIAS_INTRO.
Solucin: SAPMBC410ADIAS_DYNPRO.
Cree una pantalla y anxela al programa de dilogo.

1. Cree el objeto de programa siguiente:


Pantalla Descripcin Tipo Pantalla siguiente
0100 Pantalla de Normal 0100
actualizacin

2. Cree la transaccin Z##SOLUTION (transaccin de dilogo) para su programa y


verifquela.

Nota:
Verificar el programa generar temporalmente un loop sin fin, ya que
todava no ha programado ninguna navegacin. Deber reiniciar workbench
si el programa genera un loop sin fin.

3. Realice una referencia de los componentes de la estructura de Dictionary ABAP


SDYN_CONN para crear los siguientes campos de entrada/salida en la pantalla:
Campo de entrada/salida Atributos
SDYN_CONN Entrada: ON
CARRID Salida: ON

CONNID Entradas obligatorias: ON

FLDATE

Copyright . Reservados todos los derechos. 341


Captulo 11: Introduccin a la programacin de pantallas

Campo de entrada/salida Atributos


SDYN_CONN Entrada: OFF
PRICE Salida: ON

MONEDA
PLANETYPE
SEATSMAX
SEATSOCC
PAYMENTSUM

4. En el evento PAI para la pantalla 100, cree un mdulo CHECK_SFLIGHT. Use la navegacin
hacia adelante para crear el mdulo en un nuevo include. Acepte el nombre que
proporciona el sistema. Lea los campos de la tabla de base de datos SFLIGHT donde los
datos corresponden a la compaa area, el nmero de vuelo y la fecha de vuelo. Lea los
datos en una estructura de datos de un tipo adecuado (nombre sugerido: was_sflight).
Debido a que cre los campos de la pantalla con referencia a la estructura de Dictionary
ABAP, debe usar la sentencia TABLE para la misma estructura de Dictionary ABAP en el
include TOP de su programa de dilogo. De esta forma crear la estructura de interfaz
SDYN_CONN en el include TOP.
Para copiar los datos de wa_sflight a los campos correspondientes en SDYN_CONN,
necesita un nuevo mdulo PBO. La mejor forma de crear este mdulo es mediante la
navegacin hacia adelante.
Si no hay datos en la base de datos para las entradas clave de la pantalla, visualice el
mensaje 007 de la clase de mensajes BC410 como mensaje de informacin e inicialice los
campos de la pantalla.

5. Use su conocimiento existente para crear un modo simple de salir del programa.
Cree un campo de carcter nico en la pantalla, en donde X regrese al usuario al punto
desde donde se llam el programa.

Consejo:
La manera ms fcil es primero crear un campo de carcter nico en el
include TOP de su programa de dilogo y activarlo. Entonces podr incluir el
campo en la pantalla usando el botn de color naranja en Screen Painter.

Programe una consulta adecuada en un mdulo PAI nuevo, USER_COMMAND_0100.

342 Copyright . Reservados todos los derechos.


Captulo 11
Solucin 25
Crear una pantalla

Ejemplo empresarial
Desea crear una pantalla que contenga campos de entrada/salida y a continuacin desea
anexarla al programa de dilogo que lee datos de una tabla de base de datos. Tambin desea
crear un cdigo de transaccin adecuado para su programa.
Modelo: SAPMBC410ADIAS_INTRO.
Solucin: SAPMBC410ADIAS_DYNPRO.
Cree una pantalla y anxela al programa de dilogo.

1. Cree el objeto de programa siguiente:


Pantalla Descripcin Tipo Pantalla siguiente
0100 Pantalla de Normal 0100
actualizacin

a) Consulte la solucin modelo.

2. Cree la transaccin Z##SOLUTION (transaccin de dilogo) para su programa y


verifquela.

Nota:
Verificar el programa generar temporalmente un loop sin fin, ya que
todava no ha programado ninguna navegacin. Deber reiniciar workbench
si el programa genera un loop sin fin.

a) Consulte la solucin modelo.

3. Realice una referencia de los componentes de la estructura de Dictionary ABAP


SDYN_CONN para crear los siguientes campos de entrada/salida en la pantalla:
Campo de entrada/salida Atributos
SDYN_CONN Entrada: ON
CARRID Salida: ON

CONNID Entradas obligatorias: ON

FLDATE

Copyright . Reservados todos los derechos. 343


Captulo 11: Introduccin a la programacin de pantallas

Campo de entrada/salida Atributos


SDYN_CONN Entrada: OFF
PRICE Salida: ON

MONEDA
PLANETYPE
SEATSMAX
SEATSOCC
PAYMENTSUM

a) Consulte la solucin modelo.

4. En el evento PAI para la pantalla 100, cree un mdulo CHECK_SFLIGHT. Use la navegacin
hacia adelante para crear el mdulo en un nuevo include. Acepte el nombre que
proporciona el sistema. Lea los campos de la tabla de base de datos SFLIGHT donde los
datos corresponden a la compaa area, el nmero de vuelo y la fecha de vuelo. Lea los
datos en una estructura de datos de un tipo adecuado (nombre sugerido: was_sflight).
Debido a que cre los campos de la pantalla con referencia a la estructura de Dictionary
ABAP, debe usar la sentencia TABLE para la misma estructura de Dictionary ABAP en el
include TOP de su programa de dilogo. De esta forma crear la estructura de interfaz
SDYN_CONN en el include TOP.
Para copiar los datos de wa_sflight a los campos correspondientes en SDYN_CONN,
necesita un nuevo mdulo PBO. La mejor forma de crear este mdulo es mediante la
navegacin hacia adelante.
Si no hay datos en la base de datos para las entradas clave de la pantalla, visualice el
mensaje 007 de la clase de mensajes BC410 como mensaje de informacin e inicialice los
campos de la pantalla.
a) Consulte la solucin modelo.

5. Use su conocimiento existente para crear un modo simple de salir del programa.
Cree un campo de carcter nico en la pantalla, en donde X regrese al usuario al punto
desde donde se llam el programa.

Consejo:
La manera ms fcil es primero crear un campo de carcter nico en el
include TOP de su programa de dilogo y activarlo. Entonces podr incluir el
campo en la pantalla usando el botn de color naranja en Screen Painter.

Programe una consulta adecuada en un mdulo PAI nuevo, USER_COMMAND_0100.


a) Consulte la solucin modelo.
Solucin del modelo SAPMBC410ADIAS_DYNPRO
Programa principal
INCLUDE MBC410ADIAS_DYNPROTOP.
INCLUDE MBC410ADIAS_DYNPROI01.
INCLUDE MBC410ADIAS_DYNPROOI01.

344 Copyright . Reservados todos los derechos.


Leccin: Creacin de pantallas y de elementos de pantalla

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
MODULE move_to_dynp.

PROCESS AFTER INPUT.


MODULE user_command_0100.
MODULE check_sflight.

Include TOP
PROGRAM sapmbc410adias_dynpro.
TABLES: sdyn_conn.

DATA:
wa_sflight TYPE sflight,
io_command.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

Include de mdulo PAI


MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE i007(bc410).

ENDMODULE. " check_sflight INPUT

MODULE user_command_0100 INPUT.


CASE io_command.
WHEN 'X'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " user_command_0100 INPUT

Copyright . Reservados todos los derechos. 345


Captulo 11: Introduccin a la programacin de pantallas

RESUMEN DE LA LECCIN
Ahora podr:
Crear pantallas y elementos de pantalla

346 Copyright . Reservados todos los derechos.


Captulo 11
Leccin 4
Modificacin de pantallas en el tiempo de
ejecucin

RESUMEN DE LA LECCIN
Esta leccin explica cmo modificar atributos de pantalla dinmicamente.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. Estas pantallas le deberan permitir
modificar atributos de forma dinmica. Por este motivo, se requieren los siguientes
conocimientos:
Cmo modificar atributos de pantalla de forma dinmica

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Modificar pantallas en el tiempo de ejecucin

Modificaciones de pantallas dinmicas

Figura 141: Modificacin dinmica de atributos: ejemplo

Las modificaciones dinmicas de los atributos de elementos de pantalla son temporales.


Al usar la modificacin dinmica de imagen para modificar los atributos de un elemento de la
pantalla, puede reemplazar secuencias largas de pantallas separadas que tardaran ms
tiempo en programarse y ejecutarse. Por ejemplo, con la modificacin dinmica de imagen,
puede modificar el atributo de un elemento de pantalla para decidir si un campo de entrada o
salida est listo para la entrada.

Copyright . Reservados todos los derechos. 347


Captulo 11: Introduccin a la programacin de pantallas

Atributos estticos modificables dinmicamente

Figura 142: Atributos estticos modificables dinmicamente

Al comienzo del Proceso antes de la salida (PBO), el sistema del tiempo de ejecucin lee la
pantalla actual en una tabla del sistema con la clase de lnea SCREEN. Esta tabla del sistema
contiene los atributos creados estticamente y modificables dinmicamente de cada
elemento.
SCREEN-NAME es el identificador nico de un elemento en una pantalla. Sin embargo, se
puede llamar a un elemento de texto usando el mismo nombre del elemento de entrada que el
elemento describe.

La siguiente tabla detalla los valores que SCREEN-REQUIRED puede tomar:

Valor Descripcin
0 No se requiere la entrada del usuario.
1 Se requiere la entrada del usuario.
2 Se recomienda la entrada del usuario.

Si desea una definicin completa de la estructura SCREEN, consulte la documentacin en


LOOP AT SCREEN en el editor ABAP.
La figura muestra la asignacin de los campos en la tabla de sistema SCREEN a los nombres
de los atributos de creacin esttica de los elementos de pantalla.

348 Copyright . Reservados todos los derechos.


Leccin: Modificacin de pantallas en el tiempo de ejecucin

Tabla del sistema SCREEN

Figura 143: La tabla de sistema SCREEN

Una tabla del sistema SCREEN es una tabla del sistema con el tipo de lnea SCREEN.
Cuando se procesa una pantalla, la tabla de sistema SCREEN contiene una entrada para cada
uno de los elementos que se han creado en el Screen Painter para esa pantalla.

Inicializar la tabla de sistema SCREEN

Figura 144: Inicializar la tabla de sistema SCREEN

Un programa del sistema inicializa la tabla de sistema SCREEN al comienzo del evento PBO
de la pantalla actual. Para inicializar la tabla SCREEN, el programa copia los atributos
definidos estticamente de los elementos de la pantalla a la tabla.

Copyright . Reservados todos los derechos. 349


Captulo 11: Introduccin a la programacin de pantallas

Luego el usuario puede modificar los atributos que admiten modificaciones dinmicas de los
elementos en pantalla en un mdulo de PBO con las sentencias siguientes:
LOOP AT SCREEN.

...
MODIFY SCREEN.
ENDLOOP.

Para cambiar los atributos modificables dinmicamente, use la estructura SCREEN. El


sistema crea automticamente esta estructura y la completa con los valores de cada lnea de
la tabla del sistema en el bucle.
Los atributos definidos tienen el valor 1 y los atributos que no estn definidos tienen el valor 0.
Para modificar la tabla del sistema, use MODIFY SCREEN dentro del bucle.
Para encontrar el elemento cuyos atributos desea modificar, emplee un LOOP en la tabla
SCREEN y consulte uno de los campos siguientes: SCREEN-NAME o SCREEN-GROUP1 a
SCREEN-GROUP4.

Modificacin de un atributo de grupo

Figura 145: La modificacin de un atributo de grupo

Puede modificar simultneamente los atributos de diversos elementos de la pantalla en el


tiempo de ejecucin. Asigne todos los elementos que desea modificar en un nico paso de
procesamiento a un grupo en Screen Painter. Para asignar los elementos a un grupo, indique
un nombre de grupo para cada uno de los elementos relevantes en uno de los campos
GROUP1 a GROUP4.
Puede incluir cada elemento en un mximo de cuatro grupos de modificacin y elegir
cualquier secuencia de tres caracteres para el nombre del grupo. Tambin se pueden asignar
elementos a un grupo de modificacin tanto en la lista de elementos como en el editor de
layout en el Screen Painter.

350 Copyright . Reservados todos los derechos.


Leccin: Modificacin de pantallas en el tiempo de ejecucin

Modificacin dinmica de atributos: programacin

Figura 146: Modificacin dinmica de atributos: programacin

Programa las modificaciones de pantalla en un mdulo que se procese durante el bloque de


procesamiento PBO.
Con la tabla SCREEN se utiliza un loop para modificar los atributos de un elemento o de un
grupo de elementos. LOOP AT SCREEN WHERE . . . y READ TABLE SCREEN no se soportan.
Para activar y desactivar atributos, asigne el valor 1 (activo) o 0 (inactivo), y guarde los
cambios con la sentencia MODIFY SCREEN.
Tenga en cuenta que los elementos que ha definido de forma esttica como invisibles en el
Screen Painter no se pueden volver a activar usando la sentencia SCREEN-ACTIVE = 1. En
cambio, use la sentencia SCREEN-INVISIBLE = 0. Sin embargo, los elementos que se han
definido estticamente como visibles en el Screen Painter se pueden hacer invisibles de
forma dinmica usando la sentencia SCREEN-ACTIVE = 0. Esta sentencia tiene el mismo
resultado que las tres sentencias SCREEN-INVISIBLE = 1, SCREEN-INPUT = 0 y SCREEN-
OUTPUT = 0.

RESUMEN DE LA LECCIN
Ahora podr:
Modificar pantallas en el tiempo de ejecucin

Copyright . Reservados todos los derechos. 351


Captulo 11
Leccin 5
Definicin de secuencia de pantallas

RESUMEN DE LA LECCIN
Esta leccin explica cmo definir secuencias de pantallas para la navegacin entre pantallas.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. Estas pantallas deben permitirle
insertar secuencias de pantalla y realizar modificaciones de pantalla de forma dinmica. Por
este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de las secuencias de pantalla

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir secuencias de pantallas

Secuencia de pantallas

Figura 147: Determinar la pantalla siguiente

Para transacciones complejas, necesita usar pantallas mltiples. Debe determinar la pantalla
inicial mientras crea el cdigo de transaccin. Cada pantalla lleva a la siguiente en funcin de
las entradas del usuario.

352 Copyright . Reservados todos los derechos.


Leccin: Definicin de secuencia de pantallas

La pantalla siguiente se introduce de forma esttica en los atributos de pantalla. En el tiempo


de ejecucin, se puede sustituir de forma temporal la pantalla siguiente esttica con la
sentencia SET SCREEN.

Secuencias de pantallas estticas

Figura 148: Secuencias de pantallas estticas

Se puede definir una secuencia esttica de pantallas indicando un valor en el campo Pantalla
siguiente de los atributos de pantalla.
Si ingresa 0 o si no ingresa ningn valor en el campo, el sistema reanuda el proceso desde el
punto en donde se inici la pantalla luego de la finalizacin del procesamiento de pantalla.

Secuencia de pantalla dinmica

Figura 149: Configuracin dinmica de pantalla siguiente

La sentencia SET SCREEN temporalmente sobrescribe el valor asignado al atributo Pantalla


siguiente. La pantalla debe pertenecer al mismo programa.
La pantalla siguiente se procesa o bien cuando termina el procesamiento de pantallas en
curso o bien cuando se cancela mediante la sentencia LEAVE SCREEN.

Copyright . Reservados todos los derechos. 353


Captulo 11: Introduccin a la programacin de pantallas

Para especificar la pantalla siguiente y abandonar la pantalla actual en un paso, utilice la


sentencia LEAVE TO SCREEN.

Agregar secuencias de pantallas

Figura 150: Insercin de secuencias de pantallas

Se puede insertar una secuencia de pantallas en un programa. Al agregar una secuencia de


pantallas se aade una capa a una pila. Una secuencia de pantallas se inserta con la sentencia
CALL SCREEN.

Nota:
Las capas que se crean de esta forma deben eliminarse luego configurando la
pantalla siguiente de forma esttica o dinmica en el valor inicial (0) al final de la
secuencia de pantallas insertada.

Agregar secuencias de pantallas dinmicas

Figura 151: Insercin dinmica de una secuencia de pantallas

354 Copyright . Reservados todos los derechos.


Leccin: Definicin de secuencia de pantallas

Para interrumpir el procesamiento de la pantalla actual y pasar a una nueva pantalla o


secuencia de pantallas, utilice la sentencia CALL SCREEN. La pantalla debe pertenecer al
mismo programa.
El sistema construye una pila dentro del programa. Para volver a la sentencia que sigue a la
sentencia CALL SCREEN, puede utilizar la sentencia SET SCREEN 0 seguida por la sentencia
LEAVE SCREEN o la sentencia LEAVE TO SCREEN 0. Acto seguido, la pantalla que llamaba la
otra pantalla se sigue procesando.
Si utiliza estas sentencias fuera del marco de una cadena de llamadas, el programa se cancela
y el control vuelve al punto en el que la pantalla fue llamada. Un programa tambin se puede
cancelar con la sentencia ABAP LEAVE PROGRAM.

Posicin del cursor en las pantallas

Figura 152: Fijar dinmicamente la posicin del cursor

Cuando un sistema muestra una pantalla, sita el cursor en el primer campo de entrada
automticamente. Si, en cambio, desea que el cursor aparezca cada vez en un campo
distinto, puede introducir el nombre de elemento correspondiente en el campo Posicin del
cursor de los atributos de pantalla.
Tambin puede indicar el campo donde se debe colocar el cursor en el evento Proceso antes
de salida (PBO). Indicar el campo en el evento PBO hace que su aplicacin sea ms flexible.
Para definir el campo en que debera aparecer el cursor en el programa, use la siguiente
sentencia ABAP:
SET CURSOR FIELD <object_name> OFFSET <position>.
<object name> puede ser un nombre nico de un campo de entrada en mayscula dentro de
comillas simples o una variable que contenga el nombre del objeto. Para situar el cursor en
una posicin determinada dentro de un campo, emplee el parmetro OFFSET y especifique la
posicin requerida en <position>.
El sistema sita el cursor en la posicin inicial correspondiente empezando a contar al
comienzo del campo.

Copyright . Reservados todos los derechos. 355


Captulo 11: Introduccin a la programacin de pantallas

RESUMEN DE LA LECCIN
Ahora podr:
Definir secuencias de pantallas

356 Copyright . Reservados todos los derechos.


Captulo 11
Leccin 6
Llamada dinmica de una ventana de dilogo

RESUMEN DE LA LECCIN
Esta leccin explica cmo llamar cuadros de dilogo dinmicamente.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. Estas pantallas deben permitirle llamar
dinmicamente a cuadros de dilogo. Por este motivo, se requieren los siguientes
conocimientos:
Cmo llamar a un cuadro de dilogo durante el tiempo de ejecucin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Llamar dinmicamente a ventanas de dilogo

Ventanas de dilogo

Figura 153: Llamada dinmica de una ventana de dilogo

En la sentencia CALL SCREEN, se pueden utilizar los suplementos STARTING AT y ENDING


AT para especificar la posicin y el tamao de la pantalla que se est llamando. Debe definir la
pantalla en la sentencia CALL SCREEN como ventana de dilogo modal para cumplir con los
estndares ergonmicos de un sistema SAP.

Copyright . Reservados todos los derechos. 357


Captulo 11: Introduccin a la programacin de pantallas

Si omite el suplemento ENDING AT, el tamao que se usa en los atributos de pantalla
determina el tamao de la ventana de dilogo. El sistema determina el tamao de la ventana
de dilogo con el atributo de pantalla Tamao ocupado.
Si emplea el suplemento ENDING AT, el sistema muestra aquella parte de la ventana de
dilogo que cabr en el espacio de que se dispone en la pantalla. Si no hay suficiente espacio
como para ver toda la ventana de dilogo, aparecern unas barras de desplazamiento en la
ventana de dilogo.

Coordenadas de ventana

Figura 154: Coordenadas de ventana

La posicin inicial de cualquier ventana del sistema SAP es la esquina superior izquierda.

Use la siguiente sentencia para especificar las coordenadas de una ventana:


CALL SCREEN <nnnn>
STARTING AT left_col upper_row
ENDING AT right_col lower_row.

Los valores que se usan para las variables left_col, upper_row, right_col y lower_row estn
relacionados con la pantalla SAP desde la que visualiza la segunda pantalla usando la
sentencia CALL SCREEN. Por ejemplo, la figura muestra la posicin desde donde se muestra
la pantalla 101 en la pantalla 100.

358 Copyright . Reservados todos los derechos.


Captulo 11
Ejercicio 26
Cree una ventana de dilogo

Ejemplo empresarial
Desea visualizar la hora actual en el servidor de aplicacin en una ventana de dilogo modal.
Modelo: SAPMBC410ADIAS_ DYNPRO.
Solucin: SAPMBC410ADIAS_DIALOG.
Cree una pantalla del tipo Ventana de dilogo modal para mostrar la hora actual en el servidor
de aplicacin. Esta pantalla debe estar anexada a su programa de dilogo y debe llamarse en
el evento PAI de la pantalla 0100.

1. Cree una nueva pantalla y anxela a su programa de dilogo. Use los siguientes detalles:
Nombre Descripcin Tipo Pantalla siguiente
0150 Tiempo Ventana de dilogo 0
modal

2. La pantalla 0150 debe tener un campo de entrada/salida que haga referencia al campo
UZEIT de la estructura SYST de Dictionary ABAP.

3. Si el usuario ingresa T en el campo de carcter nico en la pantalla 0100, llame a la


ventana de dilogo modal en el mdulo PAI USER_COMMAND_0100 e inicialice el campo
de carcter nico.

Copyright . Reservados todos los derechos. 359


Captulo 11
Solucin 26
Cree una ventana de dilogo

Ejemplo empresarial
Desea visualizar la hora actual en el servidor de aplicacin en una ventana de dilogo modal.
Modelo: SAPMBC410ADIAS_ DYNPRO.
Solucin: SAPMBC410ADIAS_DIALOG.
Cree una pantalla del tipo Ventana de dilogo modal para mostrar la hora actual en el servidor
de aplicacin. Esta pantalla debe estar anexada a su programa de dilogo y debe llamarse en
el evento PAI de la pantalla 0100.

1. Cree una nueva pantalla y anxela a su programa de dilogo. Use los siguientes detalles:
Nombre Descripcin Tipo Pantalla siguiente
0150 Tiempo Ventana de dilogo 0
modal

2. La pantalla 0150 debe tener un campo de entrada/salida que haga referencia al campo
UZEIT de la estructura SYST de Dictionary ABAP.

3. Si el usuario ingresa T en el campo de carcter nico en la pantalla 0100, llame a la


ventana de dilogo modal en el mdulo PAI USER_COMMAND_0100 e inicialice el campo
de carcter nico.
a) Consulte la solucin modelo.
SOLUCIN MODELO SAPMBC410ADIAS_DIALOG
Programa principal
INCLUDE MBC410ADIAS_DIALOGTOP
INCLUDE MBC410ADIAS_DIALOGI01.
INCLUDE MBC410ADIAS_DIALOGO01.

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*
MODULE move_to_dynp.

PROCESS AFTER INPUT.


MODULE user_command_0100.
MODULE check_sflight.

Include TOP
PROGRAM sapmbc410adias_dynpro.
TABLES: sdyn_conn.

360 Copyright . Reservados todos los derechos.


Leccin: Llamada dinmica de una ventana de dilogo

DATA:
wa_sflight TYPE sflight,
io_command.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

Include de mdulo PAI


MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE i007(bc410).

ENDMODULE. " check_sflight INPUT


MODULE user_command_0100 INPUT.
CASE io_command.
WHEN 'X'.
LEAVE TO SCREEN 0.

WHEN 'T'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.
CLEAR io_command.

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

Copyright . Reservados todos los derechos. 361


Captulo 11: Introduccin a la programacin de pantallas

RESUMEN DE LA LECCIN
Ahora podr:
Llamar dinmicamente a ventanas de dilogo

362 Copyright . Reservados todos los derechos.


Captulo 11

Evaluacin de la formacin

1. En la seccin _______________, puede seleccionar los objetos parciales que desea editar
en una pantalla.
Seleccione la respuesta correcta.

X A Layout

X B ID de objeto

X C Funcin de aplicacin

X D Seleccin de objeto

2. Un pool de clases (tipo K) puede contener clases globales y tipos de datos locales.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. El Proceso despus de la entrada (PAI) se procesa despus de la interaccin de un usuario


en la pantalla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. La lgica de proceso de una pantalla contiene las sentencias ABAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 363


Captulo 11: Evaluacin de la formacin

5. El procesador _________ controla la lgica de proceso en una pantalla.


Seleccione la respuesta correcta.

X A ABAP

X B DYNP

6. Las modificaciones dinmicas de los atributos de elementos de pantalla son temporales.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Se inserta una secuencia de pantallas usando la sentencia __________.


Seleccione la respuesta correcta.

X A CALL SCREEN

X B SET SCREEN

X C NEXT SCREEN

8. Si se omite el suplemento ________ en una sentencia CALL SCREEN, el tamao de la


ventana de dilogo se determina con el tamao utilizado en sus atributos de pantalla.
Seleccione la respuesta correcta.

X A ENDING AT

X B STARTING AT

364 Copyright . Reservados todos los derechos.


Captulo 11

Respuestas a la Evaluacin de la formacin

1. En la seccin _______________, puede seleccionar los objetos parciales que desea editar
en una pantalla.
Seleccione la respuesta correcta.

X A Layout

X B ID de objeto

X C Funcin de aplicacin

X D Seleccin de objeto

En la seccin Detalles del objeto, puede seleccionar los objetos parciales que desea editar
en una pantalla.

2. Un pool de clases (tipo K) puede contener clases globales y tipos de datos locales.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Un pool de clases (tipo K) puede contener clases globales y declaraciones de datos


locales.

3. El Proceso despus de la entrada (PAI) se procesa despus de la interaccin de un usuario


en la pantalla.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. La lgica de proceso de una pantalla contiene las sentencias ABAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 365


Captulo 11: Respuestas a la Evaluacin de la formacin

5. El procesador _________ controla la lgica de proceso en una pantalla.


Seleccione la respuesta correcta.

X A ABAP

X B DYNP

El procesador DYNP controla la lgica de proceso y prepara los datos que se visualizarn
en la pantalla.

6. Las modificaciones dinmicas de los atributos de elementos de pantalla son temporales.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Las modificaciones dinmicas de los atributos de elementos de pantalla son temporales.

7. Se inserta una secuencia de pantallas usando la sentencia __________.


Seleccione la respuesta correcta.

X A CALL SCREEN

X B SET SCREEN

X C NEXT SCREEN

Una secuencia de pantallas se inserta con la sentencia CALL SCREEN.

8. Si se omite el suplemento ________ en una sentencia CALL SCREEN, el tamao de la


ventana de dilogo se determina con el tamao utilizado en sus atributos de pantalla.
Seleccione la respuesta correcta.

X A ENDING AT

X B STARTING AT

Si omite el suplemento ENDING AT, el tamao que se usa en los atributos de pantalla
determina el tamao de una ventana de dilogo.

366 Copyright . Reservados todos los derechos.


CAPTULO 12 La interfaz del programa

Leccin 1
Resumen: Interfaz 368

Leccin 2
Configuracin de un ttulo GUI y un status GUI 374
Ejercicio 27: Crear un status GUI 383

OBJETIVOS DEL CAPTULO

Explicar la interfaz de usuario


Explicar las funciones de interfaz de usuario
Definir un ttulo GUI
Crear un status GUI
Usar un status GUI

Copyright . Reservados todos los derechos. 367


Captulo 12
Leccin 1
Resumen: Interfaz

RESUMEN DE LA LECCIN
Esta leccin explica la interfaz del usuario de un programa con ttulos GUI y status GUI.

Ejemplo empresarial
Una agencia de viajes actualiza los datos de reserva de vuelos para sus clientes utilizando
diferentes pantallas en una aplicacin SAP. Debe crear una interfaz de usuario para estas
pantallas que incluya un ttulo GUI y un status GUI.
Por este motivo, se requieren los siguientes conocimientos:
Cmo creer un ttulo GUI
Cmo identificar teclas de funcin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar la interfaz de usuario
Explicar las funciones de interfaz de usuario

Visin general de la interfaz del usuario

Figura 155: Visin general: interfaz

Los ttulos GUI y los status GUI de un programa forman la interfaz de usuario del programa.
Cada vez que se aade un ttulo o status nuevo, se debe volver a generar la interfaz de
usuario.

368 Copyright . Reservados todos los derechos.


Leccin: Resumen: Interfaz

Puede agregar un estatus GUI o ms por pantalla. Por ejemplo, quizs deba agregar dos
status para un programa del editor: uno para el modo de visualizacin y otro para el modo de
modificacin.

Un status GUI est compuesto por los siguientes elementos:


Barra de mens
Los mens le permiten al usuario escoger funciones para que sean procesadas por un
programa de aplicacin. Los mens tambin pueden contener submens. Los mens
Sistema y Ayuda, que estn disponibles en cada pantalla del sistema SAP, contienen
conjuntos estandarizados de funciones que no se pueden modificar ni ocultar.
Barra de herramientas
La barra de herramientas, que es la misma en cada pantalla del sistema SAP, contiene un
conjunto de iconos. Cada icono se asigna a una tecla de funcin correspondiente. Si una
funcin de la barra de herramientas no se puede usar en la pantalla actual, el icono se
muestra en gris.
Barra de pulsadores
Una barra de pulsadores contiene iconos de las funciones de uso frecuente. Para
seleccionar una funcin, escoja el icono correspondiente en la barra de pulsadores.
Definiciones de teclas de funcin
Las configuraciones de las teclas de funcin se emplean para asignar funciones como
Buscar, Sustituir o Cortar a las teclas de funcin.

Status GUI: vista tcnica

Figura 156: Status GUI: vista tcnica

Desde un punto de vista tcnico, un status hace referencia a una barra de mens, a ciertas
definiciones de tecla y a una barra de pulsadores. Un componente nico, como puede ser una
barra de mens, puede ser utilizado por mltiples status GUI.
Los status GUI son objetos de programa ABAP que se pueden visualizar en pantallas y listas.
Defina un status GUI para cada una de las pantallas de su aplicacin.

Copyright . Reservados todos los derechos. 369


Captulo 12: La interfaz del programa

Status: vista tcnica detallada

Figura 157: Status: vista tcnica detallada

Una barra de mens est compuesta por mens individuales. Las definiciones de tecla y
barras de pulsadores son objetos inferiores de la configuracin de teclas de funcin.
Para crear un conjunto de barras de pulsadores para una sola configuracin de tecla,
seleccione Pasar a Objetos de interfaz; Configuracin de teclas de
funcin <name> Configuracin de pulsadores; Interfaz del usuario Objeto
inferior Crear en el Menu Painter.
Antes de que pueda asignar una funcin a un pulsador, debe asignar esa funcin a una tecla
de funciones.
Todos los mens de programa y definiciones de teclas hacen referencia a un conjunto de
funciones de interfaz (lista de funciones). Use la funcin de ayuda para llegar a estas
funciones de interfaz. La barra de pulsadores hace referencia a las funciones de forma
indirecta mediante las configuraciones estndar.
Una funcin puede estar tanto activa como inactiva dentro de un status.

370 Copyright . Reservados todos los derechos.


Leccin: Resumen: Interfaz

Visin general de las funciones

Figura 158: Funciones

Las funciones se identifican por sus cdigos de funcin.


El atributo Tipo de funcin determina la finalidad prevista de una funcin. Puede usar los tipos
de funcin (espacio), E y P. El sistema SAP se reserva los tipos de funcin S y H para uso
interno. El tipo de funcin T indica un cdigo de transaccin. Cuando se lanza una funcin del
tipo T, el sistema sale del programa de llamada y llama a un programa nuevo.
Puede crear funciones con texto esttico o dinmico.
Si una funcin tiene un texto esttico, le puede asignar un icono usando el atributo del
Nombre de icono. Si ya le asign un botn a una funcin, se mostrar un icono en el lugar del
texto esttico. El texto esttico se utiliza cuando se asigna una funcin a una entrada de
men. El texto de funcin se usa como texto quick info. Cuando el usuario selecciona la
funcin, el contenido del atributo Texto info. aparece en la barra de status de la pantalla. Para
visualizar un texto junto con el icono, ingrese el texto en el atributo Texto icono.
Use el atributo Acceso directo para asignar letras como acceso directo para seleccionar una
funcin desde la barra de mens sin tener que usar el ratn.
Una funcin se puede vincular a un flag. Si el flag est activado, se puede definir la reaccin.
Para obtener ms informacin sobre funciones, consulte Biblioteca SAP Biblioteca SAP
NetWeaver Biblioteca SAP NetWeaver: Vista orientada hacia la funcin Servidor de
aplicacin ABAP Desarrollo de aplicacin en AS ABAP Herramientas de programacin
ABAP Herramientas de workbench ABAP Menu Painter Conceptos bsicos
Funciones.
Para obtener ms informacin sobre flags, consulte Documentacin de palabras clave ABAP
ABAP Release-Modificaciones especficas Modificaciones para Release 7.0 Switch
Framework para Release 7.0.

Copyright . Reservados todos los derechos. 371


Captulo 12: La interfaz del programa

Definiciones de teclas de funcin

Figura 159: Definiciones de teclas de funcin

Puede asignar funciones a teclas de funcin individuales o a botones. Las configuraciones de


teclas de funcin consisten en una definicin de tecla y un botn dentro de una barra. La clase
de las configuraciones de tecla de funcin (pantalla o ventana de dilogo) determina la
finalidad tcnica de la configuracin de la tecla de funcin. Puede definir opciones para
implementar mens contextuales y la funcin de ayuda en las listas.
La definicin de teclas consiste en teclas de funcin reservadas, teclas de funcin
recomendadas y teclas de funcin de asignacin libre. Las teclas de funcin reservadas son
teclas de funcin cuyos valores asignados no se pueden modificar en el sistema SAP. Sus
funciones se pueden activar y desactivar, pero no se pueden modificar ni los iconos ni los
textos que tienen asignados. Las teclas de funcin reservadas aparecen en la barra de
herramientas en pantallas y listas. Las teclas de funcin recomendadas contienen propuestas
que cumplen con los estndares ergonmicos del sistema SAP.
Puede asignar funciones a pulsadores en la barra de pulsadores aun si ya estn asignadas a
teclas de funciones.
Una barra de pulsadores puede contener hasta 35 botones. Inserte separadores verticales en
la barra de pulsadores para agrupar botones visualmente. Para controlar si las funciones
inactivas se muestran en la barra de pulsadores, seleccione Pasar a Atributos Asignacin
de pulsadores .

372 Copyright . Reservados todos los derechos.


Leccin: Resumen: Interfaz

Mens y barras de mens

Figura 160: Mens y barras de mens

Un men puede contener hasta 15 entradas, que pueden ser funciones, separadores y mens
en cascada.
Los mens pueden tener hasta tres niveles. El tercer nivel solo contiene funciones y
separadores.
Se usan textos estticos o dinmicos para crear mens. Para utilizar un texto dinmico,
deber asignar un campo al men. El contenido de este campo aparece como texto del men.
La clase de Men Include... le permite situar mens en otros programas. Para situar mens,
especifique el nombre del programa y el status desde el que desea incluir el texto de men, al
lado del campo Documentacin breve. Use la barra de herramientas del men para acceder a
los mens Include.
Una barra de mens puede contener hasta ocho mens. Puede asignar libremente un
mximo de seis mens a una barra de mens. El sistema aade automticamente tanto el
men de Sistema como el men de Ayuda a todas las barras de men.

RESUMEN DE LA LECCIN
Ahora podr:
Explicar la interfaz de usuario
Explicar las funciones de interfaz de usuario

Copyright . Reservados todos los derechos. 373


Captulo 12
Leccin 2
Configuracin de un ttulo GUI y un status GUI

RESUMEN DE LA LECCIN
Esta leccin muestra cmo definir un status GUI.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando pantallas en una aplicacin SAP. Por consiguiente, debe crear un status GUI que
haga referencia a una barra de mens, a ciertas definiciones de tecla y a una barra de
pulsadores. Por este motivo, se requieren los siguientes conocimientos:
Cmo creer un status GUI
Cmo procesar el cdigo de funcin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir un ttulo GUI
Crear un status GUI
Usar un status GUI

Ttulo GUI

Figura 161: Ttulo GUI

374 Copyright . Reservados todos los derechos.


Leccin: Configuracin de un ttulo GUI y un status GUI

El ttulo GUI es una parte de la interfaz de usuario del programa.

Puede crear un ttulo GUI a travs de los siguientes mtodos:


La lista de objetos en el Object Navigator
El Menu Painter
Navegacin hacia adelante en el editor ABAP

Defina un ttulo GUI adecuado para cada una de las pantallas de su aplicacin.
Para visualizar valores dinmicamente en la barra de ttulos, puede emplear variables en los
ttulos que se configuran de forma dinmica en tiempo de ejecucin insertando el signo &
como reserva-espacio.
En el tiempo de ejecucin, el signo & se sustituye por el valor que especifique en el programa.
Puede usar hasta nueve reserva-espacio.
Para definir un ttulo que contenga variables, utilice la sentencia:
SET TITLEBAR WITH <&1> ... <&9>.
Una barra de ttulo permanece en su sitio hasta que se configura otra. En tiempo de ejecucin,
la variable de sistema SY-TITLE contiene el ttulo actual.

Para definir el ttulo GUI

1. Haga doble clic en el nombre de ttulo proporcionado en la sentencia SET TITLEBAR en el


mdulo. Aparece un cuadro de mensaje de confirmacin.

2. En el cuadro de mensaje de confirmacin, seleccione S.

3. En el cuadro de dilogo Crear ttulo, introduzca un nombre de ttulo en el campo Ttulo. El


nombre de un ttulo puede tener una longitud de hasta 20 caracteres. Seleccione OK.

4. Active el mdulo. El ttulo GUI se activa junto con el mdulo.

Copyright . Reservados todos los derechos. 375


Captulo 12: La interfaz del programa

Creacin de un status GUI

Figura 162: Creacin de un status GUI

El tipo de status indica los atributos tcnicos del status GUI. Puede elegir entre un status GUI
para una pantalla normal (pantalla completa), una ventana de dilogo (para emplear con
ventanas de dilogo modales) y un men contextual. Los mens contextuales son
recopilaciones especiales de funciones que se visualizan cuando selecciona el botn derecho
del ratn en la pantalla.
Para crear un status GUI, cree enlaces a los componentes existentes o cree un nuevo status
GUI en blanco. Tambin puede combinar ambas tcnicas. Para crear un status GUI en blanco,
necesita crear sus propias barras de mens, funciones de mens y otros elementos. Los
cambios que realiza en el status GUI no afectan otros estados GUI.
Cuando se utiliza la tcnica de referencia para crear status GUI, se vuelven utilizar barras de
mens, barras de pulsadores y definiciones de teclas de funcin. As puede crear un status
GUI propio y referirlo a la barra de mens, la barra de pulsadores y a cualquier asignacin de
tecla de funcin que desee. El Menu Painter almacena y actualiza estas referencias, de tal
modo que las modificaciones que se realicen en la barra de mens, la barra de pulsadores o
las definiciones de teclas de funcin tienen efecto de modo automtico en todos los status
GUI que hacen referencia a ellos.
Para garantizar que el usuario pueda acceder a las funciones de la misma forma sin importar
la definicin del status GUI, use la tcnica de referencia para establecer consistencia en las
grandes aplicaciones que usan diversos status GUI.

376 Copyright . Reservados todos los derechos.


Leccin: Configuracin de un ttulo GUI y un status GUI

Creacin de un status GUI: asignacin de teclas de funcin

Figura 163: Creacin de un status GUI: asignacin de teclas de funcin

Cuando configura una tecla, se asignan funciones individuales a teclas de funcin y


pulsadores. Las configuraciones de teclas de funcin consisten en una asignacin de tecla y
una serie de barras de pulsadores.

Los tipos de configuracin de teclas son los siguientes:


Pantalla
Ventana de dilogo
Lista
Lista en una ventana de dilogo

Cuando anexa funciones a teclas de funcin reservadas, recomendadas y de asignacin libre,


garantice que cumplan con los estndares ergonmicos del sistema SAP. Puede encontrar
estos estndares ergonmicos en el men Entorno en el Menu Painter.
Las teclas de funcin reservadas aparecen en la barra de herramientas de SAP GUI. Si una
funcin que ya asign a una tecla de funcin es importante para la aplicacin, asgnela a un
pulsador en la barra de pulsadores. La barra de pulsadores puede contener hasta 35
pulsadores.

Copyright . Reservados todos los derechos. 377


Captulo 12: La interfaz del programa

Barra de herramientas: asignaciones automticas

Figura 164: Barra de herramientas: asignaciones automticas

Cuando se asigna una funcin a la barra de herramientas, la funcin se asigna


automticamente a la tecla de funcin reservada.
Para ver las teclas de funcin que estn asignadas en el status GUI actual, seleccione
Informacin en el Menu Painter.

Creacin de un status GUI: barra de pulsadores

Figura 165: Crear un status GUI: barra de pulsadores

Para usar una funcin en la barra de pulsadores, primero debe asignarla a una tecla de
funcin. Para seleccionar funciones, use la funcin de ayuda.
Si asigna un icono a una funcin con un texto esttico, el sistema visualiza el icono en vez del
texto esttico en la barra de pulsadores. El texto de funcin que pertenece a la funcin se
utiliza como texto quick info o tooltip. Cuando el usuario selecciona la funcin, el contenido
del atributo Texto info. aparece en la barra de status de la pantalla. Para visualizar un texto
adicional con un icono, introduzca el texto adicional en el atributo Texto icono.

378 Copyright . Reservados todos los derechos.


Leccin: Configuracin de un ttulo GUI y un status GUI

Para insertar un separador en la barra de pulsadores, utilice el men Insertar en el Menu


Painter.

Creacin de un status GUI: barra de mens

Figura 166: Crear un status GUI: barra de mens

Una entrada de men puede ser una funcin, un separador, otro men o un men en cascada.
Para aadir una funcin a un men, indique su cdigo de funcin en la columna de la
izquierda. Si la funcin ya existe en la lista de funciones y tiene asignado un texto, su cdigo
de funcin se inserta automticamente en el campo de texto. Si no se inserta
automticamente, haga doble clic en el campo de la derecha para introducir un texto.
Para insertar un separador, use Insertar o el men contextual, o complete el campo de texto
de funcin con signos negativos en la posicin correspondiente.
Par crear un submen, introduzca su nombre en el campo derecho de la entrada de men.

Copyright . Reservados todos los derechos. 379


Captulo 12: La interfaz del programa

Visualizacin de estndares

Figura 167: Visualizar estndares

Para establecer consistencia en todas las pantallas, debe crear y reutilizar las barras de
mens, las barras de pulsadores y las configuraciones de teclas existentes. El Menu Painter
administra los enlaces que se definen entre estos objetos para que todos los cambios se
apliquen a todos los dems status GUI que los utilizan. Tambin puede emplear una serie de
entradas de men estndares a modo de modelo para la modificacin.
Cuando asigna funciones a las teclas de funcin reservadas en la barra de herramientas,
cumpla con los estndares ergonmicos del sistema SAP. Si cumple con estos estndares, su
programa es ms fcil para que los usuarios lo comprendan y para que usted lo actualice.

Inclusin de elementos existentes

Figura 168: Incluir elementos existentes

380 Copyright . Reservados todos los derechos.


Leccin: Configuracin de un ttulo GUI y un status GUI

Con el Menu Painter puede incluir en un status GUI configuraciones de teclas, barras de
pulsadores o barras de mens que ya haya definido en otra parte. Si utiliza el Menu Painter,
trabaje de abajo a arriba. Si hay ms de una barra de pulsadores definida para su
configuracin de teclas, seleccione la que sea adecuada.
Todas las funciones estn inicialmente inactivas. Active nicamente aquellas funciones que
sean relevantes en el status GUI actual.
Cuando crea una nueva funcin, decida si desea cambiar todos los status que se refieren al
mismo objeto.

Para definir el status GUI

1. Haga doble clic en el nombre de status proporcionado en la sentencia SET PF-STATUS en


el mdulo. Aparece un cuadro de mensaje de confirmacin.

2. En el cuadro de mensaje de confirmacin, seleccione S.

3. En la ventana de dilogo Crear status, introduzca un nombre de status en el campo Status


y rellene los atributos de status adecuados. Seleccione OK.

4. Cree un status propio y haga referencia a la barra de mens, barra de pulsadores y la


asignacin de tecla de funcin que desee.

5. Active el status GUI.

Uso de un status GUI

Figura 169: Procesamiento del cdigo de funcin

Cuando un usuario desencadena una funcin de la clase (espacio) con un botn, entrada de
men o tecla de funcin, el sistema sustituye el cdigo de funcin relevante en el campo OK
de la pantalla.

Copyright . Reservados todos los derechos. 381


Captulo 12: La interfaz del programa

Para procesar este campo en el evento Proceso despus de la entrada (PAI), debe asignar un
nombre al campo OK. Por lo general el campo es denominado OK_CODE. Luego ingresa el
nombre en la lista de elementos en el Screen Painter. Debe crear un campo en su programa
ABAP con el mismo nombre. Durante el transporte automtico de campos que se da al inicio
del evento PAI, el cdigo de funcin pasa de la pantalla al campo correspondiente del
programa.
A fin de evitar que el cdigo de funcin genere pasos de proceso imprevistos en la pantalla
siguiente (pulsar la tecla INTRO no suele modificar el campo de comandos), debe inicializar el
campo ABAP que recibe exactamente el mismo nombre. Escriba el mdulo Proceso antes de
la salida (PBO) con la siguiente lnea (siempre que haya puesto el nombre OK_CODE al campo
de comando del usuario en la lista de elementos):
CLEAR OK_CODE

382 Copyright . Reservados todos los derechos.


Captulo 12
Ejercicio 27
Crear un status GUI

Ejemplo empresarial
Tras crear los programas para crear y modificar pantallas, necesita crear ttulos GUI y asignar
funciones a teclas de funcin o botones. Utilice el Menu Painter para crear un status GUI y
defina el ttulo GUI como Flight_data. Adems, implemente el procesamiento de campo.
Modelo: SAPMBC410ADIAS_ DIALOG.
Solucin: SAPMBC410ADIAS_GUI.
Utilice el Menu Painter para crear un status GUI y un ttulo GUI y evale la entrada del usuario.

1. Extienda el programa SAPMZ##BC410_SOLUTION del ejercicio anterior o copie la


solucin modelo SAPMBC410ADIAS_DIALOG.
Use la solucin modelo SAPMBC410ADIAS_GUI como orientacin.

2. En el evento PBO para la pantalla 0100, llame al mdulo STATUS_0100.


Use la navegacin hacia adelante para crear el mdulo en un nuevo include.
Acepte el nombre que propone el sistema.
Una vez all, fije el status GUI STATUS_0100 y crelo utilizando la navegacin hacia
adelante.
Elija el Status de dilogo como clase de dilogo e Imagen de actualizacin como texto
breve. Active la funcin estndar BACK (F3) con el tipo de funcin .
Adems, defina el ttulo GUI TITLE_0100 . Cambie los contenidos del ttulo usando el
parmetro Datos de vuelo (&1). En este ejercicio, cumplimente el parmetro &1 con Vista.
Utilice un smbolo de texto para el parmetro a fin de asegurarse de que se pueda
traducir.

3. Asigne el nombre OK_CODE al campo de comandos de su pantalla, y cree una variable


correspondiente en el Include TOP de su programa.

4. Implemente el procesamiento de campos de comando. Ahora OK_CODE se evala en el


mdulo PAI USER_COMMAND_0100, en lugar de usarse para controlar la prxima
pantalla usando el campo de caracteres de la pantalla, como ha sido el caso hasta ahora.
Asegrese de que el usuario de la pantalla 100 vuelva al punto en que se llam la pantalla
si el usuario elige BACK (F3).

5. Inicialice el campo de comandos en un mdulo en el evento PBO de la pantalla para evitar


una navegacin no deseada.

6. Opcional: Reemplace completamente el campo de caracteres en la pantalla 100 que se


haya usado hasta ahora para el dilogo de usuario para poder visualizar la hora usando un
status en vez de ingresar una T. Para visualizar la hora usando un status, extienda el
status STATUS_0100 con la funcin TIME y extienda el mdulo PAI
USER_COMMAND_0100 .

Copyright . Reservados todos los derechos. 383


Captulo 12: La interfaz del programa

7. Opcional: Disponga una barra de ttulo y un status independientes para la ventana de


dilogo donde se muestre la hora. Cree ambos objetos en un mdulo PBO STATUS_0150
mediante la navegacin hacia adelante.

384 Copyright . Reservados todos los derechos.


Captulo 12
Solucin 27
Crear un status GUI

Ejemplo empresarial
Tras crear los programas para crear y modificar pantallas, necesita crear ttulos GUI y asignar
funciones a teclas de funcin o botones. Utilice el Menu Painter para crear un status GUI y
defina el ttulo GUI como Flight_data. Adems, implemente el procesamiento de campo.
Modelo: SAPMBC410ADIAS_ DIALOG.
Solucin: SAPMBC410ADIAS_GUI.
Utilice el Menu Painter para crear un status GUI y un ttulo GUI y evale la entrada del usuario.

1. Extienda el programa SAPMZ##BC410_SOLUTION del ejercicio anterior o copie la


solucin modelo SAPMBC410ADIAS_DIALOG.
Use la solucin modelo SAPMBC410ADIAS_GUI como orientacin.
a) Consulte la solucin modelo.

2. En el evento PBO para la pantalla 0100, llame al mdulo STATUS_0100.


Use la navegacin hacia adelante para crear el mdulo en un nuevo include.
Acepte el nombre que propone el sistema.
Una vez all, fije el status GUI STATUS_0100 y crelo utilizando la navegacin hacia
adelante.
Elija el Status de dilogo como clase de dilogo e Imagen de actualizacin como texto
breve. Active la funcin estndar BACK (F3) con el tipo de funcin .
Adems, defina el ttulo GUI TITLE_0100 . Cambie los contenidos del ttulo usando el
parmetro Datos de vuelo (&1). En este ejercicio, cumplimente el parmetro &1 con Vista.
Utilice un smbolo de texto para el parmetro a fin de asegurarse de que se pueda
traducir.
a) Consulte la solucin modelo.

3. Asigne el nombre OK_CODE al campo de comandos de su pantalla, y cree una variable


correspondiente en el Include TOP de su programa.
a) Consulte la solucin modelo.

4. Implemente el procesamiento de campos de comando. Ahora OK_CODE se evala en el


mdulo PAI USER_COMMAND_0100, en lugar de usarse para controlar la prxima
pantalla usando el campo de caracteres de la pantalla, como ha sido el caso hasta ahora.
Asegrese de que el usuario de la pantalla 100 vuelva al punto en que se llam la pantalla
si el usuario elige BACK (F3).
a) Consulte la solucin modelo.

5. Inicialice el campo de comandos en un mdulo en el evento PBO de la pantalla para evitar


una navegacin no deseada.
a) Consulte la solucin modelo.

Copyright . Reservados todos los derechos. 385


Captulo 12: La interfaz del programa

6. Opcional: Reemplace completamente el campo de caracteres en la pantalla 100 que se


haya usado hasta ahora para el dilogo de usuario para poder visualizar la hora usando un
status en vez de ingresar una T. Para visualizar la hora usando un status, extienda el
status STATUS_0100 con la funcin TIME y extienda el mdulo PAI
USER_COMMAND_0100 .
a) Consulte la solucin modelo.

7. Opcional: Disponga una barra de ttulo y un status independientes para la ventana de


dilogo donde se muestre la hora. Cree ambos objetos en un mdulo PBO STATUS_0150
mediante la navegacin hacia adelante.
a) Consulte la solucin modelo.
Solucin modelo SAPMBC410ADIAS_GUI
Programa principal
INCLUDE mbc410adias_guitop.
INCLUDE mbc410adias_guii01.
INCLUDE mbc410adias_guio01.

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE move_to_dynp.
MODULE clear_ok_code.

PROCESS AFTER INPUT.


MODULE check_sflight.
MODULE user_command_0100.

Pantalla de lgica de proceso 150


PROCESS BEFORE OUTPUT.
MODULE status_0150.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0150.

Include TOP
PROGRAM sapmbc410adias_dynpro.
* screen structure
TABLES: sdyn_conn.

DATA:
* workarea for database read
wa_sflight TYPE sflight,
* function code at PAI
ok_code LIKE sy-ucomm.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS_100'.
SET TITLEBAR 'TITLE_100' WITH text-vie.
ENDMODULE. " status_0100 OUTPUT

MODULE status_0150 OUTPUT.

386 Copyright . Reservados todos los derechos.


Leccin: Configuracin de un ttulo GUI y un status GUI

SET PF-STATUS 'STATUS_150'.


SET TITLEBAR 'TITLE_150' WITH text-vie.
ENDMODULE. " status_0150 OUTPUT

MODULE clear_ok_code OUTPUT.


CLEAR ok_code.
ENDMODULE. " clear_ok_code OUTPUT

Include de mdulo PAI


MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE i007(bc410).

ENDMODULE. " check_sflight INPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.

* display time on add'l screen


WHEN 'TIME'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

Copyright . Reservados todos los derechos. 387


Captulo 12: La interfaz del programa

RESUMEN DE LA LECCIN
Ahora podr:
Definir un ttulo GUI
Crear un status GUI
Usar un status GUI

388 Copyright . Reservados todos los derechos.


Captulo 12

Evaluacin de la formacin

1. Una interfaz de usuario se puede crear con _______________.


Seleccione la respuesta correcta.

X A Ttulos GUI

X B Status GUI

X C Ttulos GUI y status GUI

2. Puede crear funciones solo con textos dinmicos.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Los usuarios pueden cambiar los textos asignados a teclas de funcin.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Puede crear un ttulo GUI desde el Menu Painter.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

5. Las barras de mens y las barras de pulsadores son elementos independientes dentro de
un programa. Puede volver a utilizarlas de un status GUI con ____ .
Seleccione la respuesta correcta.

X A la tcnica de referencia

X B atributos tcnicos

X C barras de status

Copyright . Reservados todos los derechos. 389


Captulo 12: Evaluacin de la formacin

6. Puede inicializar el campo de comandos solo en el Proceso despus de la entrada (PAI).


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

390 Copyright . Reservados todos los derechos.


Captulo 12

Respuestas a la Evaluacin de la formacin

1. Una interfaz de usuario se puede crear con _______________.


Seleccione la respuesta correcta.

X A Ttulos GUI

X B Status GUI

X C Ttulos GUI y status GUI

Los ttulos GUI y los status GUI de un programa forman la interfaz del programa.

2. Puede crear funciones solo con textos dinmicos.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Las funciones se pueden crear con texto esttico o dinmico.

3. Los usuarios pueden cambiar los textos asignados a teclas de funcin.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Puede crear un ttulo GUI desde el Menu Painter.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Puede crear un ttulo GUI desde el Menu Painter.

Copyright . Reservados todos los derechos. 391


Captulo 12: Respuestas a la Evaluacin de la formacin

5. Las barras de mens y las barras de pulsadores son elementos independientes dentro de
un programa. Puede volver a utilizarlas de un status GUI con ____ .
Seleccione la respuesta correcta.

X A la tcnica de referencia

X B atributos tcnicos

X C barras de status

Las barras de mens y las barras de pulsadores son elementos independientes dentro de
un programa. Puede volver a utilizarlas de un status GUI con tcnica de referencia.

6. Puede inicializar el campo de comandos solo en el Proceso despus de la entrada (PAI).


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Puede inicializar el campo de comando en el Proceso despus de la entrada (PAI) o en el


Proceso antes de la salida (PBO).

392 Copyright . Reservados todos los derechos.


CAPTULO 13 Elementos simples de la
pantalla

Leccin 1
Definicin de elementos de pantalla para salida 394

Leccin 2
Definicin de campos de entrada/salida 401

Leccin 3
Definicin de casillas de seleccin y de grupos de botones de seleccin 406
Ejercicio 28: Crear un grupo de botones de seleccin 411

Leccin 4
Definicin de botones 416

OBJETIVOS DEL CAPTULO

Definir campos de texto


Definir iconos de status
Definir marcos de grupo
Definir campos de entrada/salida
Definir cuadros desplegables para entrada/salida
Definir casillas de seleccin
Definir botones
Definir pulsadores

Copyright . Reservados todos los derechos. 393


Captulo 13
Leccin 1
Definicin de elementos de pantalla para salida

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear y usar campos de texto, iconos de status y marcos de grupo.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. En una pantalla es preciso que las
etiquetas, como pueden ser un nmero de vuelo o de reserva, se visualicen delante de los
campos correspondientes. Por este motivo, se requieren los siguientes conocimientos:
Cmo crear campos de texto, iconos de status y marcos de grupo

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir campos de texto
Definir iconos de status
Definir marcos de grupo

Campos de texto

Figura 170: Campos de texto

Un campo de texto es un rea rectangular en una pantalla en la que el sistema visualiza texto.
Los campos de texto contienen etiquetas para otros elementos. Estas etiquetas a menudo se
las denomina descriptores y son de visualizacin. El usuario no puede modificar estas
etiquetas en tiempo de ejecucin. Los campos de texto se visualizan en una posicin fija en la
pantalla.

394 Copyright . Reservados todos los derechos.


Leccin: Definicin de elementos de pantalla para salida

Campo de texto: atributos

Figura 171: Campo de texto: atributos

Los campos de texto tambin pueden contener lneas, iconos y otros elementos estticos.
Pueden contener cualquier carcter alfanumrico, pero no pueden comenzar con un carcter
de subrayado (_) o interrogante (?). Si utiliza texto para etiquetar un botn de seleccin o
casilla de seleccin, puede especificar si la etiqueta se encuentra a la izquierda o derecha del
botn de seleccin o casilla de seleccin.
Si su texto consiste en ms de una palabra, utilice caracteres de subrayado como
separadores. Al usar separadores, el sistema reconoce que palabras diferentes pertenecen a
un solo texto.
Puede traducir los campos de texto para que aparezcan en el idioma de inicio de sesin del
usuario. Para ello, seleccione Ir a Traduccin en Screen Painter.

Creacin de campos de texto

Figura 172: Creacin de campos de texto

Copyright . Reservados todos los derechos. 395


Captulo 13: Elementos simples de la pantalla

Se pueden crear campos de texto de cualquiera de las dos formas siguientes:


Site un objeto de campo de texto en el rea de trabajo e inserte el texto directamente en
el campo de atributo Texto en el editor de layout.
Use los campos de las estructuras del Dictionary ABAP para visualizar el elemento de
datos y el modelo para los campos de entrada o salida de la pantalla.

Iconos de status

Figura 173: Iconos de status

Los iconos de status son campos de salida especiales en los que se visualizan iconos. Un
icono de status es una reserva-espacio para un icono. Los iconos indican a status en su
aplicacin. El icono relevante se elige en tiempo de ejecucin.
Los iconos de status se predefinen en el sistema y tienen de dos a cuatro caracteres. Si desea
obtener ms informacin sobre los iconos disponibles, llame el report SHOWICON.

Iconos de status: atributos

Figura 174: Iconos de status: atributos

El sistema define los atributos que no se pueden modificar, por ejemplo, Campo de salida y
Visualizacin 2D. El formato de datos por defecto es CHAR.

396 Copyright . Reservados todos los derechos.


Leccin: Definicin de elementos de pantalla para salida

Sin embargo, puede cambiar dinmicamente los atributos Long. Vis., Brillo e Invisible de un
icono de status.

Creacin de iconos de status

Figura 175: Creacin de iconos de status

Los campos de iconos de status se definen en el editor de layout grfico. Un icono de status
es un campo de salida con un icono. Se usa para mostrar iconos, que se especifican
dinmicamente durante el tiempo de ejecucin.
A fin de garantizar que se pueda visualizar un texto quick info largo, defina el campo con una
longitud definida de 132 y una longitud visible 2.
En el programa ABAP, puede definir un campo con el mismo nombre que en el campo de
icono de pantalla usando el componente Texto del la estructura ICONS del Dictionary ABAP.
En tiempo de ejecucin, este campo contiene el nombre del icono que desea visualizar.
En el tiempo de ejecucin, puede asignar el icono requerido a este campo usando el mdulo
de funciones ICON_CREATE.

Copyright . Reservados todos los derechos. 397


Captulo 13: Elementos simples de la pantalla

Rellenar un icono de status

Figura 176: Rellenar un icono de status

Para rellenar un icono de status, seleccione el icono que desea visualizar desde el programa
ABAP. Antes de que se visualice la pantalla, deber encontrar el nombre tcnico del icono.
Para ello, llame a un mdulo en el evento Proceso antes de salida (PBO).
El nombre tcnico de un icono se recupera con el mdulo de funciones ICON_CREATE. Debe
pasar al mdulo de funciones el nombre del icono que desea visualizar, as como el texto de
visualizacin del icono. El mdulo de funciones devuelve el nombre tcnico del campo del
icono de status.
Para obtener ms informacin sobre este mdulo de funciones, consulte su documentacin.

Marcos de grupo

Figura 177: Marcos de grupo

Los marcos de grupo comprenden una seleccin de elementos que deben ir juntos, como
puede ser un grupo de campos o de botones de seleccin. Son elementos de visualizacin

398 Copyright . Reservados todos los derechos.


Leccin: Definicin de elementos de pantalla para salida

que ayudan al usuario a identificar aquellos elementos de la pantalla que deben ir juntos en un
grupo.
Los marcos de grupo se pueden emplear para asegurarse de que todos los campos de un
marco tengan asignado el mismo men contextual. Los marcos de grupo tambin pueden
tener ttulo.

Marcos de grupo: atributos

Figura 178: Marcos de grupo: atributos

Puede modificar los atributos de Long.. vis. e Invisible usando la tabla de sistema SCREEN. Un
marco de grupo tambin puede contener otros elementos de pantalla.
En tiempo de ejecucin, cuando el marco solo contiene elementos invisibles y se selecciona el
atributo de pantalla Comprensin en tiempo de ejecucin, no se visualiza el marco.

Creacin de marcos de grupo

Figura 179: Crear marcos de grupo

Un marco de grupo se puede definir en el editor de layout. El marco de grupo debe tener un
nombre y tambin puede tener una cabecera.
Se puede modificar el texto del marco de grupo de forma dinmica. Para ello, debe activar el
atributo Salida y crear un campo de datos global en el programa ABAP con el mismo nombre.
Debido a que Screen Painter y los campos de programa tienen los mismos nombres,
cualquier cambio en los contenidos del campo es inmediatamente visibles en la pantalla.

Copyright . Reservados todos los derechos. 399


Captulo 13: Elementos simples de la pantalla

RESUMEN DE LA LECCIN
Ahora podr:
Definir campos de texto
Definir iconos de status
Definir marcos de grupo

400 Copyright . Reservados todos los derechos.


Captulo 13
Leccin 2
Definicin de campos de entrada/salida

RESUMEN DE LA LECCIN
Esta leccin describe cules son los campos de entrada y salida, y cmo crearlos. Tambin
explica cmo ayudar al usuario con la entrada usando cuadros de listas desplegables que
contengan posibles entradas.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. La aplicacin debe aceptar entradas del
usuario, visualizar los datos y crear elementos de entrada y salida. Por este motivo, se
requieren los siguientes conocimientos:
Cmo crear campos de entrada/salida
Cmo crear cuadros desplegables para un campo de entrada

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir campos de entrada/salida
Definir cuadros desplegables para entrada/salida

Campos de entrada/salida

Figura 180: Campos de entrada/salida

Copyright . Reservados todos los derechos. 401


Captulo 13: Elementos simples de la pantalla

Un campo de entrada es un elemento de pantalla rectangular donde los usuarios introducen


datos. Un campo de salida es un elemento de pantalla rectangular donde el sistema visualiza
texto u otros datos. Los campos de entrada y salida tambin se conocen como modelos.

Los campos de entrada pueden tener las siguientes verificaciones:


Verificaciones de entradas de campo automticas
Las verificaciones de entradas de campo automticas se relacionan con los tipos de datos.
Por ejemplo, los campos de fecha solo le permiten ingresar una fecha vlida.
Verificaciones de consistencia de datos
Los campos de entrada que se creen con referencia a campos de Dictionary ABAP deben
tener verificaciones de consistencia, verificaciones de clave externa y conjuntos de valores
integrados.
Ayudas para entradas
Los campos de entrada pueden tener ayuda para posibles valores.

Campos de entrada y salida: atributos

Figura 181: Campos de entrada y salida: atributos

Los atributos de objeto marcados en gris se pueden modificar temporalmente con la tabla de
sistema SCREEN.
Es posible que no se puedan activar todas las combinaciones posibles de atributos. Esta
activacin depende del formato del campo de entrada o salida. Por ejemplo, no se puede
activar el atributo Ceros a la izquierda para un campo con el formato de datos CHAR, ya que
slo es relevante para campos numricos.

402 Copyright . Reservados todos los derechos.


Leccin: Definicin de campos de entrada/salida

Creacin de campos de entrada/salida

Figura 182: Crear campos de entrada/salida

Los campos de entrada/salida se pueden crear de las siguientes maneras:


Introducindolos directamente en el editor de layout.
La cantidad de caracteres de subrayado en el atributo de texto de objeto determina el
tamao del campo. En el caso de los valores numricos, se puede especificar un punto
como separador, y una coma como separador decimal. Como carcter final del campo de
entrada o salida, se puede indicar una V, que es un reserva-espacio para un signo +/-.

Empleando un modelo del Dictionary ABAP.


Seleccione los campos Dictionary o Programa.

Si desea utilizar el contenido de un campo de entrada o salida en el programa ABAP, debe


declarar el campo de forma global empleando la sentencia DATA o TABLES.

Copyright . Reservados todos los derechos. 403


Captulo 13: Elementos simples de la pantalla

Cuadros desplegables

Figura 183: Cuadros desplegables

Los cuadros desplegables permiten que el usuario elija una entrada de una lista que contiene
todas las entradas posibles. El usuario no puede indicar los valores que quiera, sino que debe
elegir uno de la lista.

Realice las siguientes acciones en Screen Painter para crear un cuadro desplegable para
un campo de entrada:
Fije el atributo Desplegable para Lista desplegable o para Lista desplegable con tecla.
Cambie el atributo Long. vis. por la longitud visualizada del texto descriptivo.
Fije el atributo Lista de valores en (espacio) para utilizar la ayuda para valores del
Dictionary ABAP.

El atributo Lista desplegable con tecla (disponible desde el componente de SAP NetWeaver
Application Server 6.10) ejecuta la visualizacin de la tecla y el texto, mientras Lista
desplegable permite que cada usuario decida si desea visualizar la tecla.
Si es preciso, fije el cdigo de funcin para la seleccin. De manera similar a una entrada del
men, este cdigo de funcin desencadena el evento Proceso despus de la entrada (PAI).
Puede interpretar el cdigo de funcin usando el campo OK_CODE.
Tenga en cuenta que la longitud visible del campo determina el ancho del campo, incluido el
botn desplegable y la lista de seleccin. Cuando se convierte en un cuadro desplegable, se
debe modificar el ancho del campo.
Los valores se cumplimentan de forma automtica con la funcin Ayuda asignada al campo
Dictionary ABAP. El campo Dictionary ABAP debe tener una funcin Ayuda, una tabla de
verificacin de dos columnas o una tabla de valores fijos.

RESUMEN DE LA LECCIN
Ahora podr:
Definir campos de entrada/salida

404 Copyright . Reservados todos los derechos.


Leccin: Definicin de campos de entrada/salida

Definir cuadros desplegables para entrada/salida

Copyright . Reservados todos los derechos. 405


Captulo 13
Leccin 3
Definicin de casillas de seleccin y de grupos
de botones de seleccin

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear, usar y modificar los atributos de casillas de seleccin y de
grupos de botones de seleccin. Tambin describe cmo asignar un cdigo de funcin a un
botn de seleccin luego de definir un grupo de botones de seleccin.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. La aplicacin debe permitir a los
usuarios interactuar con el programa, crear casillas de seleccin y grupos de botones de
seleccin como elementos de pantalla. Por este motivo, se requieren los siguientes
conocimientos:
Cmo crear casillas de seleccin en su programa
Cmo crear grupos de botones de seleccin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir casillas de seleccin
Definir botones

Casillas de seleccin y grupos de botones de seleccin

Figura 184: Casillas de seleccin y grupos de botones de seleccin

Los grupos de botones de seleccin le permiten a un usuario elegir un nico elemento de un


grupo de campos.

406 Copyright . Reservados todos los derechos.


Leccin: Definicin de casillas de seleccin y de grupos de botones de seleccin

Las casillas de seleccin le permiten al usuario elegir uno o ms elemento de un grupo de


campos.
Con los botones de seleccin, una seleccin inhabilita y desmarca todas las otras opciones en
el grupo.

Botones de seleccin y casillas de seleccin: atributos

Figura 185: Botones de seleccin y casillas de seleccin: atributos

Se debe anexar un nombre a las casillas de seleccin y los botones de seleccin. Adems del
campo de entrada o salida, puede visualizar texto e iconos para ellos. El texto se encuentra en
el campo Texto de los atributos. Para visualizar un icono, introduzca su nombre en el atributo
Nombre de icono. Entonces aparece una quick info para el icono en el campo
correspondiente.
Puede modificar los atributos de Entrada e Invisible de forma dinmica con la tabla de sistema
SCREEN.

Copyright . Reservados todos los derechos. 407


Captulo 13: Elementos simples de la pantalla

Creacin de una casilla de seleccin

Figura 186: Crear una casilla de seleccin

Las casillas de seleccin se crean con el editor de layout del Screen Painter. Para ello,
seleccione el objeto de casilla de seleccin de la lista de objetos, sitelo en la pantalla y asigne
un nombre a cada casilla de seleccin. En el programa ABAP, cree un campo con el mismo
nombre de clase C y longitud uno.
Puede saber si un usuario ha marcado una casilla de seleccin en el programa ABAP mirando
el contenido del campo. Si una casilla no est seleccionada, su valor de campo ser inicial
(por defecto o valor anterior).
Se puede asignar un cdigo de funcin y un tipo de funcin a una casilla de seleccin. Cuando
el usuario la selecciones, se desencadenar el evento Proceso despus de la salida (PAI) y se
ubicar el cdigo de funcin en el campo de comandos, es decir, el campo OK_CODE.

408 Copyright . Reservados todos los derechos.


Leccin: Definicin de casillas de seleccin y de grupos de botones de seleccin

Botones de seleccin

Figura 187: Creacin de un grupo de botones de seleccin

Para crear botones de seleccin en el editor de layout del Screen Painter, siga los
siguientes pasos:
1. Cree los botones de seleccin como elementos individuales.
Seleccione Botn de seleccin en la lista de objetos, sitelo en la pantalla y asgnele un
nombre. En el programa ABAP, cree un campo con el mismo nombre, TIPO C y longitud
uno. A fin de que sus programas sean ms fciles de leer y actualizar, cree una estructura
asociada a cada grupo de botones de seleccin.

2. Combine una recopilacin de botones de seleccin en un grupo de botones de seleccin.


Seleccione los botones de seleccin en el editor de layout y luego seleccione Editar
Grupo Grupo de botones de seleccin Definir.

Puede saber qu botn de seleccin elige un usuario consultando el contenido del campo en
el programa ABAP. Si no hay ningn botn seleccionado, su valor de campo permanecer
inicial.
Asigne un cdigo de funcin y un tipo de funcin a un grupo de botones de seleccin. Cuando
el usuario selecciona uno de los botones, se lanzar el evento Proceso despus de la salida
PAI y se ubicar el cdigo de funcin en el campo de comandos (OK_CODE).

Copyright . Reservados todos los derechos. 409


Captulo 13: Elementos simples de la pantalla

Ejecucin de programa para botones y casillas de seleccin

Figura 188: Ejecucin de programa para botones y casillas de seleccin

Cuando selecciona el campo, en funcin de si se ha asignado o no un cdigo de funcin a una


casilla o botn de seleccin, el sistema lanzar o no un evento PAI.
Puede asignar un cdigo de funcin a un botn de seleccin despus de que ha definido un
grupo de botones de radio; el sistema asignar el mismo cdigo de funcin a todos los
botones de seleccin en el grupo.
Los botones de seleccin se pueden crear como _______________.

X A elementos individuales

X B elementos colectivos

X C ninguno de los anteriores

410 Copyright . Reservados todos los derechos.


Captulo 13
Ejercicio 28
Crear un grupo de botones de seleccin

Ejemplo empresarial
Todos los usuarios deben poder pasar entre los siguientes modos de programa:

Modo de visualizacin
Modo de actualizacin de datos de vuelo cuando el usuario pueda modificar la clase de
avin
Actualizacin de reservas

Modelo: SAPMBC410ADIAS_ GUI


Solucin: SAPMBC410ADIAS_RADIOBUTTON
Cree un grupo de botones de seleccin para que el usuario pueda elegir entre una serie de
modos de programa.

1. Extienda su programa SAPMZ##BC410_SOLUTION (donde ## es su nmero de grupo)


desde el ejercicio anterior o copie la solucin modelo anterior SAPMBC410AINPS_GUI.
Puede emplear la solucin modelo SAPMBC410AINPS_RADIOBUTTON como orientacin.

2. En la pantalla 100, cree un grupo de botones de seleccin con los botones view,
maintain_flights y maintain_bookings. Asigne el cdigo de funcin MODE para
todos los botones de un grupo de botones de seleccin. Con la ayuda de la depuracin,
asegrese de que el cdigo de funcin MODE (de la clase ) se lance cuando el usuario
marque un modo distinto.
Declare los campos de datos relevantes en su Include TOP. Cree un marco de grupo en
torno al grupo de botones de seleccin y asgnele el texto Modo.

3. Fije el ttulo GUI segn el modelo que haya elegido el usuario. (Recordatorio: su ttulo GUI
debe tener un parmetro que indique que ya no necesita crear un ttulo nuevo.)

4. Programar el modo de Actualizacin de datos del vuelo. En este modo, el campo de


entrada/salida SDYN_CONN-PLANETYPE debe estar listo para la entrada. Codificar la
modificacin relevante de la pantalla dinmica en un mdulo con el nombre
modify_screen.

Copyright . Reservados todos los derechos. 411


Captulo 13
Solucin 28
Crear un grupo de botones de seleccin

Ejemplo empresarial
Todos los usuarios deben poder pasar entre los siguientes modos de programa:

Modo de visualizacin
Modo de actualizacin de datos de vuelo cuando el usuario pueda modificar la clase de
avin
Actualizacin de reservas

Modelo: SAPMBC410ADIAS_ GUI


Solucin: SAPMBC410ADIAS_RADIOBUTTON
Cree un grupo de botones de seleccin para que el usuario pueda elegir entre una serie de
modos de programa.

1. Extienda su programa SAPMZ##BC410_SOLUTION (donde ## es su nmero de grupo)


desde el ejercicio anterior o copie la solucin modelo anterior SAPMBC410AINPS_GUI.
Puede emplear la solucin modelo SAPMBC410AINPS_RADIOBUTTON como orientacin.
a) Consulte la solucin modelo.

2. En la pantalla 100, cree un grupo de botones de seleccin con los botones view,
maintain_flights y maintain_bookings. Asigne el cdigo de funcin MODE para
todos los botones de un grupo de botones de seleccin. Con la ayuda de la depuracin,
asegrese de que el cdigo de funcin MODE (de la clase ) se lance cuando el usuario
marque un modo distinto.
Declare los campos de datos relevantes en su Include TOP. Cree un marco de grupo en
torno al grupo de botones de seleccin y asgnele el texto Modo.
a) Consulte la solucin modelo.

3. Fije el ttulo GUI segn el modelo que haya elegido el usuario. (Recordatorio: su ttulo GUI
debe tener un parmetro que indique que ya no necesita crear un ttulo nuevo.)
a) Consulte la solucin modelo.

4. Programar el modo de Actualizacin de datos del vuelo. En este modo, el campo de


entrada/salida SDYN_CONN-PLANETYPE debe estar listo para la entrada. Codificar la
modificacin relevante de la pantalla dinmica en un mdulo con el nombre
modify_screen.
a) Consulte la solucin modelo.
Solucin modelo SAPMBC410AINPS_RADIOBUTTON

412 Copyright . Reservados todos los derechos.


Leccin: Definicin de casillas de seleccin y de grupos de botones de seleccin

Programa principal
INCLUDE mbc410ainps_radiobuttontop.

INCLUDE mbc410ainps_radiobuttoni01.

INCLUDE mbc410ainps_radiobuttono01.

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE move_to_dynp.
MODULE clear_ok_code.
MODULE modify_screen.

PROCESS AFTER INPUT.


MODULE check_sflight.
MODULE user_command_0100.

Include TOP
PROGRAM sapmbc410adias_dynpro.
* screen structure
TABLES: sdyn_conn.

DATA:
* workarea for database access
wa_sflight TYPE sflight,
* function code at PAI
ok_code LIKE sy-ucomm,
* radio buttons
view VALUE 'X',
maintain_flights,
maintain_bookings.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

MODULE status_0100 OUTPUT.


SET PF-STATUS 'STATUS_100'.
CASE 'X'.
WHEN view.
SET TITLEBAR 'TITLE_100' WITH 'Anzeige'(vie).
WHEN maintain_flights.
SET TITLEBAR 'TITLE_100' WITH 'Flug pflegen'(fli).
WHEN maintain_bookings.
SET TITLEBAR 'TITLE_100' WITH 'Maintain Bookings'(boo).
ENDCASE.

ENDMODULE. " status_0100 OUTPUT

MODULE status_0150 OUTPUT.


SET PF-STATUS 'STATUS_150'.
SET TITLEBAR 'TITLE_150' WITH text-vie.
ENDMODULE. " status_0150 OUTPUT

MODULE clear_ok_code OUTPUT.


CLEAR ok_code.
ENDMODULE. " clear_ok_code OUTPUT

Copyright . Reservados todos los derechos. 413


Captulo 13: Elementos simples de la pantalla

MODULE modify_screen OUTPUT.


IF maintain_flights = 'X'.
LOOP AT SCREEN.
IF screen-name = 'SDYN_CONN-PLANETYPE'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

ENDMODULE. " modify_screen OUTPUT

Include de mdulo PAI


MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE e007(bc410).

ENDMODULE. " check_sflight INPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.

* display time on add'l screen


WHEN 'TIME'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

414 Copyright . Reservados todos los derechos.


Leccin: Definicin de casillas de seleccin y de grupos de botones de seleccin

RESUMEN DE LA LECCIN
Ahora podr:
Definir casillas de seleccin
Definir botones

Copyright . Reservados todos los derechos. 415


Captulo 13
Leccin 4
Definicin de botones

RESUMEN DE LA LECCIN
Esta leccin explica cmo crear, usar, modificar y procesar los atributos de los botones.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes
utilizando diferentes pantallas en una aplicacin SAP. La aplicacin debe permitir a los
usuarios interactuar con el programa y crear botones como elementos de pantalla. Por este
motivo, se requieren los siguientes conocimientos:
Cmo definir botones

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir pulsadores

Pulsadores

Figura 189: Pulsadores

Los pulsadores son campos de entrada para el campo de comandos OK_CODE. Con el ratn,
los usuarios pueden acceder fcilmente a funciones relacionadas con elementos individuales
de pantalla o con grupos de elementos de pantalla.
Utilice pulsadores en el rea de datos de su pantalla para mostrar u ocultar ms informacin.

416 Copyright . Reservados todos los derechos.


Leccin: Definicin de botones

Si un pulsador se refiere a un nico campo o a un pequeo grupo de campos, asegrese de


que el pulsador est lo ms cerca posible de l. Si la funcin se refiere a un grupo, djelo claro
utilizando un marco de grupo.
Si los pulsadores se refieren a una tabla que se ve en la pantalla, sitelos por debajo de esta
en una fila horizontal dejando una lnea en blanco entre ellos y la tabla.
Cuando el usuario marca un pulsador, el sistema informa al programa de la funcin que se ha
elegido. En este punto, el control del programa retrocede a un proceso de trabajo en el
servidor de aplicacin, que trata el bloque de procesamiento Proceso despus de la entrada
(PAI).

Pulsadores: atributos

Figura 190: Pulsadores: atributos

Los pulsadores pueden contener texto (atributo de Texto), un icono o ambos. Un icono se
puede especificar de forma esttica o dinmica, con el mdulo de funciones ICON_CREATE.
Puede modificar dinmicamente los atributos Long. vis, Campo de salida e Invisible usando la
tabla del sistema SCREEN.

Para cambiar dinmicamente el texto en un pulsador, realice los siguientes pasos:


1. Defina el atributo Campo de salida en el campo Screen Painter para activarlo.

2. Cree un campo global con el mismo nombre en su programa ABAP.

Debido a que Screen Painter y los campos de programa tienen los mismos nombres,
cualquier cambio en los contenidos del campo es inmediatamente visibles en la pantalla.

Copyright . Reservados todos los derechos. 417


Captulo 13: Elementos simples de la pantalla

Crear y procesar pulsadores

Figura 191: Crear y procesar pulsadores

Para crear un pulsador, lleve a cabo las siguientes tareas:


Crear un pulsador
Marque el objeto de pulsador de la lista de elementos de Screen Painter, sitelo en la
pantalla y asgnele un nombre. Puede indicar un texto esttico en el atributo Texto. Indique
un cdigo de funcin para el pulsador en el atributo Cdigo de funcin. Este cdigo de
funcin se ubica automticamente en el campo OK_CODE cuando el usuario propone el
pulsador en la pantalla.
Active el campo de comandos OK_CODE
Debe dar un nombre al campo en la lista de elementos del Screen Painter y declarar un
campo con exactamente el mismo nombre en el programa ABAP con referencia al campo
de sistema SY-UCOMM.

Cuando un usuario elige una funcin en la pantalla, el sistema sita el cdigo de funcin
correspondiente en el campo OK_CODE. As, ms adelante puede consultar el campo y aplicar
el resultado para lanzar el bloque de proceso con el cdigo pertinente.
Si el usuario marca un pulsador que tiene el tipo de funcin (espacio), se procesa el evento
PAI.
Si el usuario marca un pulsador que tiene el tipo de funcin E, el sistema procesa un mdulo
con el suplemento AT EXIT-COMMAND. Esta operacin se da antes del transporte
automtico de campos y las verificaciones de entradas de campo. El sistema ubica el cdigo
de funcin que se ha desencadenado en el campo OK_CODE, que ms adelante podr
consultar en el mdulo.
Tras el suplemento AT EXIT-COMMAND, el sistema sigue procesando la pantalla
normalmente y luego ejecuta las verificaciones de entradas de campo, seguidas por el
proceso PAI.

418 Copyright . Reservados todos los derechos.


Leccin: Definicin de botones

RESUMEN DE LA LECCIN
Ahora podr:
Definir pulsadores

Copyright . Reservados todos los derechos. 419


Captulo 13: Elementos simples de la pantalla

420 Copyright . Reservados todos los derechos.


Captulo 13

Evaluacin de la formacin

1. El usuario puede cambiar las etiquetas en los campos de texto en el tiempo de ejecucin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Los caracteres de subrayado se interpretan como separadores entre dos palabras del
mismo campo de texto.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Los atributos _______________ y _______________ de un icono de status se pueden cambiar


dinmicamente.
Seleccione las respuestas correctas.

X A Invisible

X B Campo de salida

X C Intensificado

4. El texto del marco de grupo no se puede modificar de forma dinmica.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

5. Las verificaciones de entrada automtica en un campo de entrada se relacionan con los


tipos de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 421


Captulo 13: Evaluacin de la formacin

6. El usuario puede ingresar valores que quiera en los cuadros desplegables.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Cuando el usuario selecciona un/una ____________, todas las dems se desmarcan


automticamente.
Seleccione la respuesta correcta.

X A casilla de seleccin

X B botn de
seleccin

8. Los botones de seleccin se pueden crear como _______________.


Seleccione la respuesta correcta.

X A elementos individuales

X B elementos colectivos

X C ninguno de los anteriores

9. Un pulsador siempre se relaciona con un campo individual.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

10. El texto de un pulsador no se puede modificar de forma dinmica.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

422 Copyright . Reservados todos los derechos.


Captulo 13

Respuestas a la Evaluacin de la formacin

1. El usuario puede cambiar las etiquetas en los campos de texto en el tiempo de ejecucin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Los caracteres de subrayado se interpretan como separadores entre dos palabras del
mismo campo de texto.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Los atributos _______________ y _______________ de un icono de status se pueden cambiar


dinmicamente.
Seleccione las respuestas correctas.

X A Invisible

X B Campo de salida

X C Intensificado

4. El texto del marco de grupo no se puede modificar de forma dinmica.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 423


Captulo 13: Respuestas a la Evaluacin de la formacin

5. Las verificaciones de entrada automtica en un campo de entrada se relacionan con los


tipos de datos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Las verificaciones de entrada automtica en un campo de entrada se relacionan con los


tipos de datos.

6. El usuario puede ingresar valores que quiera en los cuadros desplegables.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

El usuario no puede indicar los valores que quiera en los cuadros desplegables, sino que
debe elegir uno de la lista desplegable.

7. Cuando el usuario selecciona un/una ____________, todas las dems se desmarcan


automticamente.
Seleccione la respuesta correcta.

X A casilla de seleccin

X B botn de
seleccin

8. Los botones de seleccin se pueden crear como _______________.


Seleccione la respuesta correcta.

X A elementos individuales

X B elementos colectivos

X C ninguno de los anteriores

Correcto. Los botones de seleccin se pueden crear como una recopilacin de botones de
seleccin en un grupo de botones de seleccin.

9. Un pulsador siempre se relaciona con un campo individual.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

424 Copyright . Reservados todos los derechos.


Captulo 13: Respuestas a la Evaluacin de la formacin

10. El texto de un pulsador no se puede modificar de forma dinmica.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 425


Captulo 13: Respuestas a la Evaluacin de la formacin

426 Copyright . Reservados todos los derechos.


CAPTULO 14 Gestin de pantallas de error

Leccin 1
Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos 428

Leccin 2
Tratamiento de errores usando navegacin y ayuda para entradas 438
Ejercicio 29: Verificacin de valores de entrada 443

OBJETIVOS DEL CAPTULO

Enviar mensajes de dilogo


Verificar valores de campo
Implementar verificaciones de entradas de campo
Navegar entre pantallas
Verificar entradas usando ayuda para entradas

Copyright . Reservados todos los derechos. 427


Captulo 14
Leccin 1
Tratamiento de errores usando mensajes de
dilogo y verificaciones de entrada de campos

RESUMEN DE LA LECCIN
Esta leccin explica cmo tratar errores usando mensajes de dilogo y verificaciones de
entrada de campos.

Ejemplo empresarial
Una agencia de viajes debe realizar verificaciones para identificar errores en los datos de
reservas de vuelos de los clientes. Por este motivo, se requieren los siguientes
conocimientos:
Una buena comprensin del tratamiento de errores en los campos de entrada y salida
Una buena comprensin de los mensajes de dilogo

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Enviar mensajes de dilogo
Verificar valores de campo
Implementar verificaciones de entradas de campo

Parmetros SET y GET

Figura 192: Valores por defecto en memoria SAP

428 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos

Se pueden almacenar valores de los campos de entrada y salida en la memoria SAP mediante
un ID de parmetro. Estos valores son especficos de usuario, pero estn disponibles en todas
las sesiones internas y externas.
El parmetro SET copia el contenido de los campos de entrada y salida en la memoria SAP en
el bloque de procesamiento Proceso despus de la entrada (PAI).
El parmetro GET copia los contenidos del campo correspondiente de la memoria SAP al final
del bloque de procesamiento Proceso antes de la salida (PBO).

Definicin de los atributos de los parmetros SET y GET

Figura 193: Definicin de los atributos de los parmetros SET y GET

En el Dictionary ABAP, se puede vincular un campo de entrada o salida en un rea de la


memoria SAP. Cuando se emplea un campo de entrada o salida que aparece definido en el
Dictionary ABAP, su ID de parmetro se visualiza en el atributo ID de parmetro en el Screen
Painter.
Los atributos de parmetro SET y GET, SPA y GPA en la tabla, le permiten modificar las
funciones de los parmetros SET y GET de forma separada.
Se pueden definir ID de parmetro en Workbench ABAP.

Copyright . Reservados todos los derechos. 429


Captulo 14: Gestin de pantallas de error

Mensajes de dilogo

Figura 194: Categoras de mensajes interactivos

Los mensajes de dilogo se agrupan en seis categoras: A, X, E, W, I y S.

La siguiente tabla describe cada categora de mensaje de dilogo:

Categora Texto Descripcin


A Terminacin Se cancela el proceso y el
usuario debe reiniciar la
transaccin.
X Salir Se cancela el proceso con un
dump breve
MESSAGE_TYPE_X y el
usuario debe reiniciar la
transaccin.
E Error Se interrumpe el proceso y el
usuario debe corregir la
entrada.
W Advertencia Se interrumpe el proceso y el
usuario puede corregir las
entradas.
I Informacin Se interrumpe el proceso,
pero el usuario puede
continuar confirmando el
mensaje al seleccionar Intro.
S xito La informacin se visualiza
en la barra de status de la
pantalla de salida.

430 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos

Verificaciones de entradas de campo

Figura 195: Verificaciones de entradas de campo automticas

Antes de procesar los mdulos PAI, el sistema implementa automticamente verificaciones


de entradas de campo para controlar los valores que ingresa un usuario.
La verificacin de campos obligatorios es la primera verificacin que tiene lugar y se usa para
garantizar que se rellenen todos los campos requeridos.
El sistema puede efectuar una verificacin de clave externa solamente si un campo de
pantalla hace referencia a un campo del Dictionary ABAP para el que se ha definido una tabla
de verificacin. Tambin se debe definir el atributo de verificacin de clave externa para que
se realice la verificacin.
Durante una verificacin de valores fijos, la funcin de ayuda est activa. El sistema visualiza
todas las posibles entradas entre las que puede elegir el usuario.

Verificaciones de entradas de campo con dilogo de error

Figura 196: Verificaciones de entradas de campo con dilogo de error

Si las verificaciones de entradas de campo automticas no satisfacen sus requisitos, puede


programar sus propias verificaciones en el evento PAI. Para ello, utilice la sentencia FIELD con

Copyright . Reservados todos los derechos. 431


Captulo 14: Gestin de pantallas de error

el suplemento MODULE. El mdulo que defina se procesar solo para el campo que
especifique en la sentencia FIELD.
Si durante el procesamiento del mdulo se genera un mensaje de error o de advertencia, el
sistema devuelve la misma pantalla pero sin procesar el mdulo PBO. Cuando se visualiza el
mensaje; solo el campo para el que se aplic la verificacin estar listo para la entrada.

Nota:
La sentencia FIELD garantiza que el campo est listo para la entrada. Si dentro de
un mdulo se emplea un mensaje que no se llama desde la sentencia FIELD, el
sistema visualiza el mensaje pero no vuelve a preparar el campo para que est
listo para la entrada.

Verificacin de grupos de campos

Figura 197: Verificar grupos de campos

Para asegurarse de que haya ms de un campo listo para la entrada despus de unos
mensajes interactivos de error, elabore una lista con todos los campos relevantes en la
sentencia FIELD, e incluya los campos y la sentencia MODULE en un bloque de CHAIN ...
ENDCHAIN.
Se pueden incluir campos individuales en mltiples bloques CHAIN... ENDCHAIN.

Nota:
El contenido del campo que se haya modificado durante el proceso PAI actual slo
se visualiza si el campo en cuestin tambin est incluido en la sentencia FIELD
del bloque CHAIN actual.

432 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos

Controlar dilogos de error

Figura 198: Controlar dilogos de error

Si la aplicacin enva un mensaje de error o de advertencia, la pantalla actual se muestra


nuevamente al usuario, pero el mdulo PBO no se procesa de nuevo. Slo estn listos para la
entrada aquellos campos a los que se asigna el mdulo.
Luego de que el usuario ingresa nuevos valores, el mdulo PAI no se vuelve a procesar
completamente. Se reinicia en algn lugar con el bloque de procesamiento.
El sistema identifica el campo que modific el usuario y reanuda el proceso en la primera
sentencia FIELD que corresponda.
Si el usuario confirma un mensaje de advertencia, sin modificar el contenido del campo, el
sistema reanuda el proceso PAI tras la sentencia MESSAGE en que se desencaden el error.

Copyright . Reservados todos los derechos. 433


Captulo 14: Gestin de pantallas de error

Sentencia FIELD

Figura 199: Sentencia FIELD y transporte de datos

El sistema transporta los datos de los campos de pantalla a los campos ABAP que tienen el
mismo nombre en el bloque de proceso PAI. El sistema primero transporta todos los campos
que no se encuentran en ninguna sentencia FIELD. Luego, transporta los campos restantes
cuando procesa la sentencia FIELD relevante.
Si se produce un mensaje de error o de advertencia en un mdulo que pertenece a una
sentencia FIELD, los valores actuales de todos los campos del mismo bloque CHAIN se
transportan automticamente de nuevo a sus campos de pantalla correspondientes.

Llamadas de mdulo condicionales

Se deben abordar las siguientes preguntas sobre las verificaciones:

Cmo puedo evitar verificaciones de campo innecesarias?


Cmo puedo salir de la imagen sin verificaciones automticas de campo?
Cmo puedo evitar una prdida de datos mientras el usuario navega?
Cmo puedo incrustar verificaciones que slo se ejecuten si el conmutador est ON?

Las verificaciones de entrada de campo generalmente requieren acceso a la base de datos.


Evitar estas verificaciones, siempre que sea posible, mejora el rendimiento del programa.
Si el usuario permanece en una pantalla, generalmente no podr hacer un conjunto coherente
de entradas que satisfagan las verificaciones de entrada. Por consiguiente, debe permitir que
el usuario abandone una pantalla sin procesar las verificaciones de campo.
Para proteger a los usuarios de que no pierdan los datos ingresados si abandonan la pantalla
accidentalmente, la seguridad del programa solicita una confirmacin para abandonar la
pantalla.

434 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos

Ejecucin cuando el valor no es inicial

Figura 200: Ejecucin cuando el valor no es inicial

Cuando utiliza el suplemento ON INPUT en una sentencia MODULE despus de una sentencia
FIELD, el sistema llama a un mdulo solo si ha cambiado el contenido del campo de su valor
inicial.
En un bloque CHAIN, se emplea el suplemento ON CHAIN-INPUT. As, el mdulo se llama si se
modifica el contenido inicial de al menos un campo de pantalla del bloque CHAIN.
Puede usar el suplemento ON INPUT solo si una declaracin FIELD contiene la declaracin
MODULE.

Ejecucin si hay modificacin

Figura 201: Ejecucin si hay modificacin

Si utiliza el suplemento ON REQUEST en una sentencia MODULE despus de una sentencia


FIELD, el mdulo slo se llama si el usuario indica un valor nuevo en dicho campo.

Copyright . Reservados todos los derechos. 435


Captulo 14: Gestin de pantallas de error

En un bloque CHAIN, se emplea el suplemento ON CHAIN-REQUEST. As, el mdulo se llama


si el usuario modifica el contenido de al menos un campo de pantalla del bloque CHAIN.
Puede usar el suplemento ON REQUEST solo si una declaracin FIELD contiene la declaracin
MODULE.

Evitar verificaciones de entradas de campo

Figura 202: Evitar verificaciones de entradas de campo

El mdulo que contiene el suplemento AT EXIT-COMMAND se procesa antes de las


verificaciones de entrada de campo automticas, del transporte automtico de datos y de
todos los dems mdulos PAI. Puede utilizar el suplemento AT EXIT-COMMAND para la
navegacin con un solo mdulo para cada pantalla. Este mdulo puede no tener asociada una
sentencia FIELD.
Si no sale de la pantalla desde este mdulo, las verificaciones de campo automticas se
procesan despus, seguidas del resto del evento PAI.

436 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando mensajes de dilogo y verificaciones de entrada de campos

Llamada de mdulo dependiente de flag

Figura 203: Llamada de mdulo dependiente de flag

Cuando especifica el suplemento SWITCH, se llama al mdulo de dilogo solo si el flag que
especific tiene el estado ON. Debe especificar el flag definido en el repositorio. Si el flag
especificado no existe, el mdulo de dilogo no se llama.
No puede especificar el suplemento con la sentencia FIELD. Se aplica el flag que tenga
asignado el campo de pantalla en el Screen Painter.

RESUMEN DE LA LECCIN
Ahora podr:
Enviar mensajes de dilogo
Verificar valores de campo
Implementar verificaciones de entradas de campo

Copyright . Reservados todos los derechos. 437


Captulo 14
Leccin 2
Tratamiento de errores usando navegacin y
ayuda para entradas

RESUMEN DE LA LECCIN
Esta leccin explica cmo tratar errores usando navegacin y ayuda para entradas.

Ejemplo empresarial
Trabaja en una agencia de viajes y necesita permitir que el usuario navegue entre diferentes
pantallas usando las funciones Atrs y Cancelar; tambin debe proporcionarles la ayuda para
entradas. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de navegacin y ayuda para entradas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Navegar entre pantallas
Verificar entradas usando ayuda para entradas

Navegacin

Figura 204: Navegacin: destinos

Las funciones principales que se usan para navegar entre pantallas incluyen la funcin Atrs,
la funcin Cancelar y la funcin Salir.

438 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando navegacin y ayuda para entradas

Cuando se selecciona, la funcin Atrs lo dirige a un nivel lgico hacia atrs. Esta funcin se
usa para guiar dirigirlo a la pantalla inicial de las pantallas del mismo nivel, as como para
dirigirlo a la pantalla que ha llamado a la pantalla actual de las pantallas que contienen
informacin detallada.
La funcin Cancelar es similar a la funcin Atrs, excepto que es diferente en su
comportamiento de dilogo.
En la pantalla inicial de un programa, las funciones Atrs, Salir y Cancelar vuelven a la pantalla
desde la que se llam el programa actual.

Navegacin: transaccin de pantalla nica

Figura 205: Navegacin: transaccin de pantalla nica

Tanto las funciones Atrs como Salir abandonan la transaccin actual y regresan al programa
de llamada, por ejemplo, el lugar de trabajo. Estas funcionen difieren en su comportamiento
de dilogo para evitar la prdida de datos ingresados.
La funcin Cancelar vuelve a visualizar la pantalla con los campos de datos inicializados y
permite al usuario seleccionar un objeto nuevo.

Copyright . Reservados todos los derechos. 439


Captulo 14: Gestin de pantallas de error

Dilogos de navegacin

Figura 206: Navegacin: dilogos

Si el usuario indica cualquier dato en la pantalla, el campo SY-DATAR se debe establecer en X.


Al verificar SY-DATAR puede evitar la prdida de datos accidentales enviando una consulta de
seguridad predefinida.
Cuando usa las funciones Salir y Cancelar, el usuario recibe un cuadro de dilogo. Para la
funcin Salir, el sistema verifica las entradas en la pantalla. Las funciones en cuestin deben
ser de la clase E. Para la funcin Atrs, el sistema lleva a cabo la verificacin de entradas
antes de que se ejecute el cuadro de dilogo.
Fjese en que un usuario puede perder los datos no grabados, por ejemplo, cuando se pasa del
modo Modificar al modo Visualizar. Si el usuario no graba los datos nuevos, el sistema
muestra los datos originales almacenados en la base de datos. El sistema SAP contiene una
serie de mdulos de funcin que se pueden emplear para los dilogos de usuario.

440 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando navegacin y ayuda para entradas

Ayuda para entradas

Figura 207: Ayuda para entradas

La Ayuda para entradas (la funcin de ayuda) es una funcin estndar del sistema SAP que
permite al usuario visualizar una lista con las posibles entradas para un campo de pantalla. El
usuario puede seleccionar un campo listo para la entrada de la lista e ingresar un valor en
este.
Si un campo tiene ayuda para entradas, el pulsador de entradas posibles aparece a su
derecha. El pulsador se hace visible cuando se sita el cursor en el campo. Puede comenzar la
funcin de ayuda seleccionando el pulsador o presionando F4.
Adems del pulsador de entradas posibles, la ayuda para entradas muestra informacin
adicional sobre las entradas que son especialmente tiles cuando el campo requiere una
clave formal.
La ayuda para entradas es una funcin estndar, por consiguiente, debe tener el mismo
aspecto y la misma conducta en todo el sistema. Las utilidades del Workbench ABAP le
permitirn asignar una ayuda para entradas estndar en un campo de pantalla.
La descripcin precisa de la ayuda para entradas de un campo, por lo general, surge de su
semntica. Por consiguiente, la ayuda para entradas se define en el Dictionary ABAP.

Copyright . Reservados todos los derechos. 441


Captulo 14: Gestin de pantallas de error

442 Copyright . Reservados todos los derechos.


Captulo 14
Ejercicio 29
Verificacin de valores de entrada

Ejemplo empresarial
Como parte de su trabajo, debe dar soporte al usuario verificando las entradas y
proporcionando ayuda para entradas.
Modelo: SAPMBC410ADIAS_ RADIOBUTTON
Solucin: SAPMBC410ADIAS_ INPUT_FIELD
Mejorar las verificaciones de entrada y ampliar las opciones de navegacin en la pantalla 100.

1. Extienda el programa SAPMZ##BC410_SOLUTION o copie la solucin modelo relevante


(SAPMBC410ADIAS_ RADIOBUTTON).
Puede emplear la solucin modelo SAPMBC410AINPS_INPUT_FIELD como orientacin.

2. Asegrese de que los campos Compaa area, Nmero de vuelo y Fecha de vuelo se
rellenen automticamente con los valores de la memoria SAP.
Modifique el mensaje de informacin del mdulo Proceso despus de la salida (PAI)
CHECK_SFLIGHT por un mensaje de error. Asegrese de que los campos estn listos para
la entrada si no existe un registro de datos.
Una seleccin de la base de datos solo se debera realizar si el usuario ha introducido
valores nuevos en la pantalla.

3. Asigne los cdigos de funcin EXIT y CANCELAR a las teclas estndar SHIFT+F3 (Exit) y
F12 (Cancelar). Asegrese de que estas funciones se procesen antes de las verificaciones
de entrada automticas. Si el usuario marca EXIT, salir del programa. Si el usuario marca
CANCELAR, inicializar los campos de entrada y salida, y visualizar de nuevo la pantalla.

4. Opcional: Asegrese de que se lean los valores adecuados en la tabla SFLIGHT con la
memoria SAP cuando se inicia el programa sin que el usuario tenga que desencadenar
primero el mdulo PAI.

Consejo:
Use el evento LOAD-OF-PROGRAM para verificar los valores de la tabla
SFLIGHT y cree un include usando la navegacin hacia adelante.

5. Ofrezca la seleccin de compaa area con una lista desplegable. En la pantalla 100,
defina el atributo Despegable a la Lista desplegable para el campo de entrada
SDYN_CONN-CARRID. Asegrese de que el atributo del programa Lista de valores est
definido en .

6. Opcional:
Si el usuario indica un tipo nuevo de avin en el campo de entrada/salida SDYN_CONN-
PLANETYPE, compruebe si el nmero de asientos reservados es mayor que el nmero
mximo de asientos. Para ello, actualice el campo SDYN_CONN-SEATSMAX en la tabla

Copyright . Reservados todos los derechos. 443


Captulo 14: Gestin de pantallas de error

SAPLANE. Si se produce un error, visualice el mensaje 109 de la clase de mensaje BC410


como mensaje de error y transporte el mayor nmero de asientos de vuelta a la pantalla.

7. Opcional: Guarde el registro con el nuevo tipo de avin.

Asigne el cdigo de funcin SAVE (tipo de funcin ) a la clave estndar CTRL-S


(grabar). La funcin slo debera estar disponible si el botn de seleccin est fijado en
Actualizacin de datos del vuelo. (Consejo: use el suplemento EXCLUDING en el
comando SET PF_STATUS).

Si el usuario elige esta funcin, grabe el nuevo registro de datos del vuelo. Use una
actualizacin directa, como:

444 Copyright . Reservados todos los derechos.


Captulo 14
Solucin 29
Verificacin de valores de entrada

Ejemplo empresarial
Como parte de su trabajo, debe dar soporte al usuario verificando las entradas y
proporcionando ayuda para entradas.
Modelo: SAPMBC410ADIAS_ RADIOBUTTON
Solucin: SAPMBC410ADIAS_ INPUT_FIELD
Mejorar las verificaciones de entrada y ampliar las opciones de navegacin en la pantalla 100.

1. Extienda el programa SAPMZ##BC410_SOLUTION o copie la solucin modelo relevante


(SAPMBC410ADIAS_ RADIOBUTTON).
Puede emplear la solucin modelo SAPMBC410AINPS_INPUT_FIELD como orientacin.
a) Consulte la solucin modelo.

2. Asegrese de que los campos Compaa area, Nmero de vuelo y Fecha de vuelo se
rellenen automticamente con los valores de la memoria SAP.
Modifique el mensaje de informacin del mdulo Proceso despus de la salida (PAI)
CHECK_SFLIGHT por un mensaje de error. Asegrese de que los campos estn listos para
la entrada si no existe un registro de datos.
Una seleccin de la base de datos solo se debera realizar si el usuario ha introducido
valores nuevos en la pantalla.
a) Consulte la solucin modelo.

3. Asigne los cdigos de funcin EXIT y CANCELAR a las teclas estndar SHIFT+F3 (Exit) y
F12 (Cancelar). Asegrese de que estas funciones se procesen antes de las verificaciones
de entrada automticas. Si el usuario marca EXIT, salir del programa. Si el usuario marca
CANCELAR, inicializar los campos de entrada y salida, y visualizar de nuevo la pantalla.
a) Consulte la solucin modelo.

4. Opcional: Asegrese de que se lean los valores adecuados en la tabla SFLIGHT con la
memoria SAP cuando se inicia el programa sin que el usuario tenga que desencadenar
primero el mdulo PAI.

Consejo:
Use el evento LOAD-OF-PROGRAM para verificar los valores de la tabla
SFLIGHT y cree un include usando la navegacin hacia adelante.

a) Consulte la solucin modelo.

5. Ofrezca la seleccin de compaa area con una lista desplegable. En la pantalla 100,
defina el atributo Despegable a la Lista desplegable para el campo de entrada
SDYN_CONN-CARRID. Asegrese de que el atributo del programa Lista de valores est
definido en .

Copyright . Reservados todos los derechos. 445


Captulo 14: Gestin de pantallas de error

a) Consulte la solucin modelo.


Programa principal
* Data objects
INCLUDE MBC410AINPS_INPUT_FIELDTOP.
* PAI modules
INCLUDE MBC410AINPS_INPUT_FIELDI01.
* PBO modules
INCLUDE MBC410AINPS_INPUT_FIELDO01.
* ABAP events
INCLUDE MBC410AINPS_INPUT_FIELDE02.

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE move_to_dynp.
MODULE clear_ok_code.
MODULE modify_screen.

PROCESS AFTER INPUT.


MODULE exit AT EXIT-COMMAND.
CHAIN.
FIELD: sdyn_conn-carrid,
sdyn_conn-connid,
sdyn_conn-fldate.
MODULE check_sflight ON CHAIN-REQUEST.
ENDCHAIN.
CHAIN.
FIELD: sdyn_conn-seatsmax,
sdyn_conn-planetype.
MODULE check_planetype ON CHAIN-REQUEST.
ENDCHAIN.

MODULE user_command_0100.

Include TOP
PROGRAM sapmbc410adias_dynpro.
* screen structure
TABLES: sdyn_conn.

DATA:
* workarea for database read
wa_sflight TYPE sflight,
* function code at PAI
ok_code LIKE sy-ucomm,
* radio buttons
view VALUE 'X',
maintain_flights,
maintain_bookings.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

MODULE status_0100 OUTPUT.


CASE 'X'.
WHEN view.
SET TITLEBAR 'TITLE_100' WITH 'Display'(vie).
WHEN maintain_flights.

446 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando navegacin y ayuda para entradas

SET TITLEBAR 'TITLE_100' WITH 'Maintain flight'(fli).


WHEN view.
SET TITLEBAR 'TITLE_100' WITH 'Maintain bookings'(boo).
ENDCASE.
ENDMODULE. " status_0100 OUTPUT

MODULE status_0150 OUTPUT.


SET PF-STATUS 'STATUS_150'.
SET TITLEBAR 'TITLE_150' WITH text-vie.
ENDMODULE. " status_0150 OUTPUT

MODULE clear_ok_code OUTPUT.


CLEAR ok_code.
ENDMODULE. " clear_ok_code OUTPUT

MODULE modify_screen OUTPUT.


IF maintain_flights = 'X'.
SET PF-STATUS 'STATUS_100'.
LOOP AT SCREEN.
IF screen-name = 'SDYN_CONN-PLANETYPE'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
SET PF-STATUS 'STATUS_100' EXCLUDING 'SAVE'.
ENDIF.
ENDMODULE. " MODIFY_SCREEN OUTPUT

ercise.
Include de mdulo PAI
MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE e007(bc410).

ENDMODULE. " check_sflight INPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.

* display time on add'l screen


WHEN 'TIME'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.

* save changesto database


WHEN 'SAVE'.
UPDATE sflight
FROM wa_sflight.
IF sy-subrc <> 0.

Copyright . Reservados todos los derechos. 447


Captulo 14: Gestin de pantallas de error

MESSAGE a008(bc410).
ENDIF.
MESSAGE s009(bc410).

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

MODULE exit INPUT.


CASE ok_code.
WHEN 'CANCEL'.
CLEAR wa_sflight.
SET PARAMETER ID:
'CAR' FIELD wa_sflight-carrid,
'CON' FIELD wa_sflight-connid,
'DAY' FIELD wa_sflight-fldate.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.

ENDMODULE. " exit INPUT

MODULE check_planetype INPUT.


IF sdyn_conn-planetype IS INITIAL.
MESSAGE e555(bc410) WITH 'Plane type needed'(plt).
ENDIF.
SELECT SINGLE seatsmax
FROM saplane
INTO sdyn_conn-seatsmax
WHERE planetype = sdyn_conn-planetype.

IF sdyn_conn-seatsocc > sdyn_conn-seatsmax.


MESSAGE e109(bc410).
* number of seats booked exceeds aircraft capacity
ELSE.
MOVE-CORRESPONDING sdyn_conn TO wa_sflight.
ENDIF.

ENDMODULE. " CHECK_PLANETYPE INPUT

Evento Include
LOAD-OF-PROGRAM.
* get stored values from SAP memory
GET PARAMETER ID:
'CAR' FIELD sdyn_conn-carrid,
'CON' FIELD sdyn_conn-connid,
'DAY' FIELD sdyn_conn-fldate.

* retrieve detail data of flight


SELECT SINGLE *
FROM sflight
INTO wa_sflight
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.

6. Opcional:
Si el usuario indica un tipo nuevo de avin en el campo de entrada/salida SDYN_CONN-
PLANETYPE, compruebe si el nmero de asientos reservados es mayor que el nmero
mximo de asientos. Para ello, actualice el campo SDYN_CONN-SEATSMAX en la tabla
SAPLANE. Si se produce un error, visualice el mensaje 109 de la clase de mensaje BC410
como mensaje de error y transporte el mayor nmero de asientos de vuelta a la pantalla.

448 Copyright . Reservados todos los derechos.


Leccin: Tratamiento de errores usando navegacin y ayuda para entradas

7. Opcional: Guarde el registro con el nuevo tipo de avin.

Asigne el cdigo de funcin SAVE (tipo de funcin ) a la clave estndar CTRL-S


(grabar). La funcin slo debera estar disponible si el botn de seleccin est fijado en
Actualizacin de datos del vuelo. (Consejo: use el suplemento EXCLUDING en el
comando SET PF_STATUS).

Si el usuario elige esta funcin, grabe el nuevo registro de datos del vuelo. Use una
actualizacin directa, como:
UPDATE sflight FROM wa_sflight.
IF sy-subrc NE 0.
MESSAGE a008(BC410).
ENDIF.
MESSAGE s009(BC410).

Copyright . Reservados todos los derechos. 449


Captulo 14: Gestin de pantallas de error

RESUMEN DE LA LECCIN
Ahora podr:
Navegar entre pantallas
Verificar entradas usando ayuda para entradas

450 Copyright . Reservados todos los derechos.


Captulo 14

Evaluacin de la formacin

1. Los programadores pueden definir un ID de parmetro de SET/GET en Workbench ABAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. La verificacin automtica de entradas de campo tiene lugar __________ del


procesamiento de los mdulos de Proceso despus de salida (PAI).
Seleccione la respuesta correcta.

X A antes

X B despus

X C durante

3. El suplemento ON INPUT se usa en una sentencia MODULE si el mdulo solo se debe


procesar cuando el valor del contenido del campo es inicial.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. La funcin Atrs se distingue de la funcin Cancelar por su comportamiento de dilogo.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 451


Captulo 14: Evaluacin de la formacin

5. En una Transaccin de pantalla nica la funcin ____ visualiza la pantalla con los campos
de datos inicializados y permite al usuario seleccionar un nuevo objeto.
Seleccione la respuesta correcta.

X A Atrs

X B Salir

X C Cancelar

6. Si un campo tiene ayuda para entradas, el pulsador de entradas posibles aparece a su


izquierda.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

452 Copyright . Reservados todos los derechos.


Captulo 14

Respuestas a la Evaluacin de la formacin

1. Los programadores pueden definir un ID de parmetro de SET/GET en Workbench ABAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. La verificacin automtica de entradas de campo tiene lugar __________ del


procesamiento de los mdulos de Proceso despus de salida (PAI).
Seleccione la respuesta correcta.

X A antes

X B despus

X C durante

3. El suplemento ON INPUT se usa en una sentencia MODULE si el mdulo solo se debe


procesar cuando el valor del contenido del campo es inicial.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. La funcin Atrs se distingue de la funcin Cancelar por su comportamiento de dilogo.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 453


Captulo 14: Respuestas a la Evaluacin de la formacin

5. En una Transaccin de pantalla nica la funcin ____ visualiza la pantalla con los campos
de datos inicializados y permite al usuario seleccionar un nuevo objeto.
Seleccione la respuesta correcta.

X A Atrs

X B Salir

X C Cancelar

6. Si un campo tiene ayuda para entradas, el pulsador de entradas posibles aparece a su


izquierda.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

454 Copyright . Reservados todos los derechos.


CAPTULO 15 Subscreens

Leccin 1
Definicin de Subscreens 456
Ejercicio 30: Incrustar subscreens 465

OBJETIVOS DEL CAPTULO

Definir reas de subscreens y subscreens


Procesamiento de subscreens
Incrustar subscreens

Copyright . Reservados todos los derechos. 455


Captulo 15
Leccin 1
Definicin de Subscreens

RESUMEN DE LA LECCIN
Esta leccin explica reas de subscreen y sus atributos generales y de subscreen.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para sus clientes
utilizando pantallas de la aplicacin. Para mostrar informacin adicional en las pantallas, debe
crear y usar subscreens. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de las reas de subscreen
Cmo crear e incrustar subscreens

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir reas de subscreens y subscreens
Procesamiento de subscreens
Incrustar subscreens

rea subscreen

Figura 208: Subscreens I

456 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

Un rea de subscreen es un rea rectangular reservada en una pantalla, en la que se ubica


otra pantalla en tiempo de ejecucin. Las reas subscreen no pueden contener otros
elementos de pantalla. Para utilizar una subscreen, debe crear una segunda pantalla del tipo
subscreen y visualizarla en el rea subscreen que ha definido en la pantalla principal.
Un subscreen es una pantalla independiente que se visualiza dentro de otra pantalla.

Puede usar una subscreen para realizar las siguientes funciones:


Para visualizar un grupo de objetos de la pantalla principal
Para visualizar u ocultar campos adicionales en la pantalla principal, en funcin de las
entradas que haya realizado el usuario

Reutilizacin de subscreens en diferentes programas

Figura 209: Subscreens II

Otra ventaja del uso de subscreens es que diferentes programas pueden usar la misma
subscreen. Para configurar esta funcin, debe ejecutar otros programas de pantalla dentro de
su programa principal.
Puede aadir ms de una subscreen en una sola pantalla principal. Tambin puede
determinar qu subscreen se visualiza de forma dinmica en tiempo de ejecucin.

Puede utilizar las subscreens en los casos siguientes:


Ampliaciones de pantalla (por ejemplo, exits de dynpro)
Dentro de otros objetos de pantalla (por ejemplo, controles de fichas)
Asistente de modificaciones
Transacciones web

Copyright . Reservados todos los derechos. 457


Captulo 15: Subscreens

rea de subscreen: atributos

Figura 210: rea de subscreen: atributos

Si una subscreen es mayor que el rea de subscreen en que se llama, el sistema muestra
nicamente los datos que caben en la pantalla, comenzando por la esquina superior
izquierda. Sin embargo, puede usar el atributo Desplazable para asegurarse de que se
muestre la subscreen completa. Si la pantalla es demasiado grande para ajustarse al rea de
subscreen, el sistema muestra barras de desplazamiento.
El atributo Redimensionable controla si el tamao de un rea de subscreen se puede
modificar en sentido vertical u horizontal. Debe fijar estos atributos para que el tamao de un
rea subscreen se modifique con el tamao de la pantalla principal. Puede emplear el atributo
Tamao mnimo para fijar un lmite inferior por debajo del que no se puede redimensionar el
rea subscreen.
El atributo de Men contextual permite asignar un men sensible al contexto para los campos
de salida del subscreen.

Las restricciones siguientes se aplican a las subscreens:


CALL SUBSCREEN no est permitido entre LOOP y ENDLOOP ni entre CHAIN y
ENDCHAIN.
Una subscreen no puede tener un campo OK_CODE.
Los nombres de objeto deben ser nicos dentro del conjunto de todos las subscreens en
una nica pantalla principal.
Los subscreens no pueden contener un mdulo con el suplemento AT EXIT-COMMAND.
No se pueden utilizar las sentencias SET TITLEBAR, SET PF-STATUS, SET SCREEN ni
LEAVE SCREEN en los mdulos de una subscreen.

458 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

Creacin de un rea subscreen

Figura 211: Creacin de un rea subscreen

Para crear un rea subscreen, seleccione rea Subscreen en la lista de objetos del Screen
Painter y sitela en la pantalla. Identifique la esquina superior izquierda del rea de control de
tablas y luego arrastre el objeto hasta obtener el tamao deseado.
En el campo Texto de objeto, indique un nombre para el rea subscreen. Es necesario poner
un nombre de subscreen para identificar el rea cuando llama a la subscreen.

Procesamiento de subscreens

Figura 212: Llamar una subscreen

Para utilizar una subscreen debe llamarlo en las secciones PBO y PAI de la lgica de proceso
de la pantalla principal. La sentencia CALL SUBSCREEN ordena al sistema que ejecute los
bloques de procesamiento PBO y PAI para la subscreen como componentes de PBO y de PAI

Copyright . Reservados todos los derechos. 459


Captulo 15: Subscreens

en la pantalla principal. Puede programar los mdulos ABAP para las subscreens del mismo
modo que para una pantalla.

Caso especial: visibilidad de los datos

Figura 213: Caso especial: visibilidad de los datos

Los campos que se emplean en la lgica de proceso son campos globales del programa
ABAP. Estos campos se deben declarar en el Include TOP del programa.

Subscreens de programas externos

Figura 214: Subscreens de programas externos

Si una subscreen no se encuentra en el mismo pool de mdulo que la pantalla principal, los
datos globales de este ltimo no estarn disponibles para la subscreen y los datos de la
pantalla no se podrn devolver al programa. La transferencia de datos la debe programar el

460 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

propio usuario, por ejemplo, con un mdulo de funciones que exporte e importe datos con
una sentencia MOVE adecuada en la codificacin de subscreen.

Incrustacin de subscreens

Figura 215: Subscreens: encapsulacin en grupos de funciones

Para usar subscreens en las pantallas de diferentes programas, debe encapsular las
subscreens en un grupo de funciones y usar los mdulos de funciones para mover los datos
entre los programas.
Los datos se pueden transferir de un programa de llamada al grupo de funciones mediante las
interfaces de los mdulos de funciones. Esta es la tcnica que se emplea para las subscreens
de cliente (ampliaciones de pantalla).

Copyright . Reservados todos los derechos. 461


Captulo 15: Subscreens

Subscreens en grupos de funciones: secuencia de llamada

Figura 216: Subscreens en grupos de funciones: secuencia de llamada

Los mdulos de funciones se pueden utilizar para transportar datos entre el programa de
llamada y el grupo de funciones.
Puede usar un mdulo antes de la llamada de la subscreen para transferir los datos del
programa de llamada a la subscreen del grupo de funciones. De este modo, se llama un
mdulo de funciones cuya interfaz se puede utilizar para transferir los datos requeridos al
grupo de funciones.
La llamada del mdulo de funciones debe tener lugar antes de la llamada de la subscreen. As,
se garantiza que los datos estn en conocimiento del grupo de funciones antes de que se
llame el bloque de proceso PBO de la subscreen.
La secuencia se invierte en el mdulo PAI de la pantalla de llamada. El bloque de proceso PAI
de la subscreen se llama antes de llamar un mdulo de funciones para transferir los datos del
grupo de funciones de retorno al programa de llamada.

462 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

Subscreens en grupos de funciones: transporte de datos

Figura 217: Subscreens en grupos de funciones: transporte de datos

A fin de que los datos del programa de llamada estn disponibles globalmente en el grupo de
funciones, debe transferir los parmetros de interfaz del mdulo de funciones a los campos
de datos globales del grupo de funciones, y viceversa.

Copyright . Reservados todos los derechos. 463


Captulo 15: Subscreens

464 Copyright . Reservados todos los derechos.


Captulo 15
Ejercicio 30
Incrustar subscreens

Ejemplo empresarial
Para mostrar informacin adicional en su pantalla, agregue subscreens a la pantalla de
actualizacin. Cree tres subscreens para visualizar los datos del vuelo, los detalles tcnicos
del avin y las reservas.
Modelo: SAPMBC410ADIAS_ INPUT_FIELD
Solucin: SAPMBC410ADIAS_ SUBSCREEN
Extienda la pantalla de actualizacin (100) para mostrar informacin del vuelo y el tipo de
avin. A tal efecto, emplee una subscreen.

1. Extienda el programa SAPMZ##BC410_SOLUTION del ejercicio anterior o copie la


solucin modelo SAPMBC410AINPS_INPUT_FIELD. Puede emplear la solucin modelo
SAPMBC410ASUBS_SUBSCREEN como orientacin.

2. En la pantalla de actualizacin (100), cree un rea de subscreen con los atributos


siguientes:
Nombre de pantalla Campos de entrada/salida Atributo
100 SUB Resizing vertical y
horizontal: ON

3. Cree las pantallas 110, 120 y 130, cada una de ellas con el tipo de subscreen y los atributos
siguientes:
Nombre de pantalla Campos de entrada/salida Atributo
110 SDYN_CONN Entrada: OFF
-COUNTRYFR Salida: ON
-COUNTRYTO
-CITYFROM
-CITYTO
-AIRPFROM
-AIRPTO
-DEPTIME
-ARRTIME

Copyright . Reservados todos los derechos. 465


Captulo 15: Subscreens

Nombre de pantalla Campos de entrada/salida Atributo


120 SAPLANE Entrada: OFF
-PLANETYPE Salida: ON
-PRODUCER Solo salida: ON
-SEATSMAX
-TANKCAP
-CAP_UNIT
-WEIGHT
-WEI_UNIT
-OP_SPEED
-SPEED_UNIT

130 Vaco (suministrado para la


tabla de reservas)

4. En su include TOP, cree un campo DYNNR que se pueda emplear en la lgica de proceso
para determinar qu subscreen aparece en el rea de subscreen.

5. Llame las pantallas subscreen en la lgica de proceso de la pantalla 100. Antes de la


llamada, escriba un mdulo PBO para determinar qu subscreen aparecer. Si el usuario
est en modo de Visualizacin, llame la pantalla 110 con la informacin de vuelo. Si el
usuario est en modo Actualizacin de datos de vuelo, llame la pantalla subscreen 120con
la informacin del avin. Si el usuario elige el modo Actualizar reservas, aparecer la
pantalla vaca 130.

6. En la lgica de proceso de la pantalla 110, lea la informacin de vuelo en la tabla SPFLI con
los valores de campo clave. En la lgica de proceso de la pantalla 120, lea la informacin
del tipo de avin de la tabla SAPLANE con los valores que posee para el tipo de avin.

466 Copyright . Reservados todos los derechos.


Captulo 15
Solucin 30
Incrustar subscreens

Ejemplo empresarial
Para mostrar informacin adicional en su pantalla, agregue subscreens a la pantalla de
actualizacin. Cree tres subscreens para visualizar los datos del vuelo, los detalles tcnicos
del avin y las reservas.
Modelo: SAPMBC410ADIAS_ INPUT_FIELD
Solucin: SAPMBC410ADIAS_ SUBSCREEN
Extienda la pantalla de actualizacin (100) para mostrar informacin del vuelo y el tipo de
avin. A tal efecto, emplee una subscreen.

1. Extienda el programa SAPMZ##BC410_SOLUTION del ejercicio anterior o copie la


solucin modelo SAPMBC410AINPS_INPUT_FIELD. Puede emplear la solucin modelo
SAPMBC410ASUBS_SUBSCREEN como orientacin.
a) Consulte la solucin modelo.

2. En la pantalla de actualizacin (100), cree un rea de subscreen con los atributos


siguientes:
Nombre de pantalla Campos de entrada/salida Atributo
100 SUB Resizing vertical y
horizontal: ON

a) Consulte la solucin modelo.

3. Cree las pantallas 110, 120 y 130, cada una de ellas con el tipo de subscreen y los atributos
siguientes:
Nombre de pantalla Campos de entrada/salida Atributo
110 SDYN_CONN Entrada: OFF
-COUNTRYFR Salida: ON
-COUNTRYTO
-CITYFROM
-CITYTO
-AIRPFROM
-AIRPTO
-DEPTIME
-ARRTIME

Copyright . Reservados todos los derechos. 467


Captulo 15: Subscreens

Nombre de pantalla Campos de entrada/salida Atributo


120 SAPLANE Entrada: OFF
-PLANETYPE Salida: ON
-PRODUCER Solo salida: ON
-SEATSMAX
-TANKCAP
-CAP_UNIT
-WEIGHT
-WEI_UNIT
-OP_SPEED
-SPEED_UNIT

130 Vaco (suministrado para la


tabla de reservas)

a) Consulte la solucin modelo.

4. En su include TOP, cree un campo DYNNR que se pueda emplear en la lgica de proceso
para determinar qu subscreen aparece en el rea de subscreen.
a) Consulte la solucin modelo.

5. Llame las pantallas subscreen en la lgica de proceso de la pantalla 100. Antes de la


llamada, escriba un mdulo PBO para determinar qu subscreen aparecer. Si el usuario
est en modo de Visualizacin, llame la pantalla 110 con la informacin de vuelo. Si el
usuario est en modo Actualizacin de datos de vuelo, llame la pantalla subscreen 120con
la informacin del avin. Si el usuario elige el modo Actualizar reservas, aparecer la
pantalla vaca 130.
a) Consulte la solucin modelo.

6. En la lgica de proceso de la pantalla 110, lea la informacin de vuelo en la tabla SPFLI con
los valores de campo clave. En la lgica de proceso de la pantalla 120, lea la informacin
del tipo de avin de la tabla SAPLANE con los valores que posee para el tipo de avin.
a) Consulte la solucin modelo.
Solucin modelo SAPMBC410ASUBS_SUBSCREEN
Programa principal
INCLUDE mbc410asubs_subscreentop.
INCLUDE mbc410asubs_subscreeni01.
INCLUDE mbc410asubs_subscreeno01.
INCLUDE mbc410asubs_subscreene02.

Pantalla de lgica de proceso 100


PROCESS BEFORE OUTPUT.
MODULE status_0100.
MODULE move_to_dynp.
MODULE clear_ok_code.
MODULE modify_screen.

468 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

MODULE fill_dynnr.

CALL SUBSCREEN sub INCLUDING sy-cprog dynnr.

PROCESS AFTER INPUT.


MODULE exit AT EXIT-COMMAND.

CALL SUBSCREEN sub.


CHAIN.
FIELD: sdyn_conn-carrid,
sdyn_conn-connid,
sdyn_conn-fldate.
MODULE check_sflight ON CHAIN-REQUEST.
ENDCHAIN.

CHAIN.
FIELD:
sdyn_conn-seatsmax,
sdyn_conn-planetype.
MODULE check_planetype ON CHAIN-REQUEST.
ENDCHAIN.

MODULE user_command_0100.

Pantalla de lgica de proceso 110


PROCESS BEFORE OUTPUT.
MODULE get_spfli.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0110.

Pantalla de lgica de proceso 120


PROCESS BEFORE OUTPUT.
MODULE get_saplane.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0120.

Pantalla de lgica de proceso 130


PROCESS BEFORE OUTPUT.
* MODULE STATUS_0130.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0130.

Include TOP
PROGRAM sapmbc410adias_dynpro.
* screen structure
TABLES: sdyn_conn,
saplane.

DATA:
* workarea for database read
wa_sflight TYPE sflight,
* function code at PAI
ok_code LIKE sy-ucomm,
* radio buttons
view VALUE 'X',
maintain_flights,
maintain_bookings,

Copyright . Reservados todos los derechos. 469


Captulo 15: Subscreens

* subscreen number
dynnr TYPE sy-dynnr.

Include de mdulo PBO


MODULE move_to_dynp OUTPUT.
MOVE-CORRESPONDING wa_sflight TO sdyn_conn.
ENDMODULE. " move_to_dynp OUTPUT

MODULE status_0100 OUTPUT.


CASE 'X'.
WHEN view.
SET TITLEBAR 'TITLE_100' WITH 'Display'(vie).
WHEN maintain_flights.
SET TITLEBAR 'TITLE_100' WITH 'Maintain Flights'(fli).
WHEN maintain_bookings.
SET TITLEBAR 'TITLE_100' WITH 'Maintain Bookings'(boo).
ENDCASE.

ENDMODULE. " status_0100 OUTPUT

MODULE status_0150 OUTPUT.


SET PF-STATUS 'STATUS_150'.
SET TITLEBAR 'TITLE_150' WITH text-vie.
ENDMODULE. " status_0150 OUTPUT

MODULE clear_ok_code OUTPUT.


CLEAR ok_code.
ENDMODULE. " clear_ok_code OUTPUT

MODULE modify_screen OUTPUT.


IF maintain_flights = 'X'.
SET PF-STATUS 'STATUS_100'.
LOOP AT SCREEN.
IF screen-name = 'SDYN_CONN-PLANETYPE'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
SET PF-STATUS 'STATUS_100' EXCLUDING 'SAVE'.
ENDIF.

ENDMODULE. " modify_screen OUTPUT

MODULE fill_dynnr OUTPUT.


CASE 'X'.
WHEN view.
dynnr = 110.
WHEN maintain_flights.
dynnr = 120.
WHEN maintain_bookings.
dynnr = 130.
ENDCASE.
ENDMODULE. " fill_dynnr OUTPUT

MODULE get_spfli OUTPUT.


ON CHANGE OF wa_sflight-carrid
OR wa_sflight-connid.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF
sdyn_conn FROM spfli
WHERE carrid = wa_sflight-carrid
AND connid = wa_sflight-connid.

470 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

ENDON.
ENDMODULE. " get_spfli OUTPUT

MODULE get_saplane OUTPUT.


ON CHANGE OF wa_sflight-planetype.
SELECT SINGLE * FROM saplane
WHERE planetype = wa_sflight-planetype.
ENDON.
ENDMODULE. " get_saplane OUTPUT

Include de mdulo PAI


MODULE check_sflight INPUT.
SELECT SINGLE *
FROM sflight
* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read
INTO wa_sflight " Read into internal structure
WHERE carrid = sdyn_conn-carrid AND
connid = sdyn_conn-connid AND
fldate = sdyn_conn-fldate.
CHECK sy-subrc <> 0.
CLEAR wa_sflight.
MESSAGE e007(bc410).

ENDMODULE. " check_sflight INPUT

MODULE user_command_0100 INPUT.


CASE ok_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.

* display time on add'l screen


WHEN 'TIME'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.

* save changes to database


WHEN 'SAVE'.
UPDATE sflight
FROM wa_sflight.
IF sy-subrc <> 0.
MESSAGE a008(bc410).
ENDIF.
MESSAGE s009(bc410).

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

MODULE exit INPUT.


CASE ok_code.
WHEN 'CANCEL'.
CLEAR: wa_sflight,
sdyn_conn,
saplane.
SET PARAMETER ID:
'CAR' FIELD wa_sflight-carrid,
'CON' FIELD wa_sflight-connid,
'DAY' FIELD wa_sflight-fldate.
LEAVE TO SCREEN 100.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.

Copyright . Reservados todos los derechos. 471


Captulo 15: Subscreens

ENDMODULE. " exit INPUT

MODULE check_planetype INPUT.


IF sdyn_conn-planetype IS INITIAL.
MESSAGE e555(bc410) WITH 'Plane type needed'(plt).
ENDIF.

SELECT SINGLE seatsmax


FROM saplane
INTO sdyn_conn-seatsmax
WHERE planetype = sdyn_conn-planetype.

IF sdyn_conn-seatsocc > sdyn_conn-seatsmax.


MESSAGE e109(bc410).
* Number of seats booked exceeds aircraft capacity
ELSE.
MOVE-CORRESPONDING sdyn_conn TO wa_sflight.
ENDIF.

ENDMODULE. " check_planetype INPUT

472 Copyright . Reservados todos los derechos.


Leccin: Definicin de Subscreens

RESUMEN DE LA LECCIN
Ahora podr:
Definir reas de subscreens y subscreens
Procesamiento de subscreens
Incrustar subscreens

Copyright . Reservados todos los derechos. 473


Captulo 15: Subscreens

474 Copyright . Reservados todos los derechos.


Captulo 15

Evaluacin de la formacin

1. Una pantalla principal nica incluye solo una subscreen.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Debe llamar a una subscreen en las secciones ___________ de la lgica de proceso de la


pantalla principal.
Seleccione la respuesta correcta.

X A tanto Proceso antes de la salida (PBO) como Proceso despus de la entrada (PAI)

X B ya sea PBO o PAI

3. Al incluir una subscreen de un grupo de funcin, la llamada de subscreen (en PBO) debe
ocurrir antes de la llamada de mdulo de funcin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 475


Captulo 15

Respuestas a la Evaluacin de la formacin

1. Una pantalla principal nica incluye solo una subscreen.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Debe llamar a una subscreen en las secciones ___________ de la lgica de proceso de la


pantalla principal.
Seleccione la respuesta correcta.

X A tanto Proceso antes de la salida (PBO) como Proceso despus de la entrada (PAI)

X B ya sea PBO o PAI

3. Al incluir una subscreen de un grupo de funcin, la llamada de subscreen (en PBO) debe
ocurrir antes de la llamada de mdulo de funcin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

476 Copyright . Reservados todos los derechos.


CAPTULO 16 Controles de fichas

Leccin 1
Definicin de controles de ficha 478

Leccin 2
Modificacin de controles de ficha 484
Ejercicio 31: Crear controles de fichas 489

OBJETIVOS DEL CAPTULO

Describir controles de ficha


Definir controles de ficha
Usar desplazamientos PAI locales en controles de fichas
Usar desplazamientos PAI en controles de fichas
Crear controles de fichas utilizando el asistente

Copyright . Reservados todos los derechos. 477


Captulo 16
Leccin 1
Definicin de controles de ficha

RESUMEN DE LA LECCIN
Esta leccin explica la creacin y el uso de controles de ficha.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes que
usan diferentes pantallas en la aplicacin SAP. Los usuarios deberan poder crear controles
de fichas para visualizar diversos componentes de una aplicacin en una pantalla individual.
Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de la definicin de controles de ficha
Cmo navegar entre diversos componentes

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir controles de ficha
Definir controles de ficha

Definicin de controles de ficha

Figura 218: Elementos de pantalla: controles de ficha

Los controles de fichas constituyen una forma fcil y manejable de visualizar distintos
componentes de una aplicacin en una pantalla individual y permiten al usuario navegar entre
ellos. El diseo intuitivo de los controles de fichas hace que la navegacin sea mucho ms
fcil para los usuarios finales.

Los usos de los controles de fichas son los siguientes:

478 Copyright . Reservados todos los derechos.


Leccin: Definicin de controles de ficha

Use los controles de fichas para simplificar aplicaciones complejas.


Use los controles de fichas cuando haya distintos componentes de una aplicacin que
conformen una unidad lgica. Por ejemplo, puede disponer de un conjunto de datos de
cabecera que se mantengan constantes y por debajo de los datos de cabecera puede
visualizar otros conjuntos de datos.

No debe usar los controles de fichas en los siguientes casos:


Necesita modificar el entorno de pantalla, los mens, los botones, los datos de cabecera,
etc. mientras se procesan los componentes de la aplicacin. La pantalla que rodea la ficha
debe ser constante.
Los componentes deben procesarse en un determinado orden. Los controles de fichas se
disean para que los usuarios naveguen libremente entre diversos componentes.
Los componentes se procesan de forma dinmica, es decir, una entrada de usuario en una
ficha provoca la aparicin repentina de otras fichas.

Los controles de fichas son compatibles con el procesamiento batch input.

Elementos de ficha

Figura 219: Elementos de ficha

Un control de fichas consiste en pginas individuales con una ficha y un ttulo de ficha. Un
control de fichas puede estar formado por una nica fila de ttulos de ficha.
Si el el control de fichas contiene demasiadas pginas, no ser posible que todos los ttulos de
ficha se visualicen simultneamente. En este caso, una barra de desplazamiento le permite
moverse entre el resto de las fichas. En la esquina superior derecha de la ficha, hay un botn.
Seleccione este botn y se visualiza una lista de todos los ttulos de fichas. El ttulo de la ficha
activa se marca con una marca de verificacin.

Copyright . Reservados todos los derechos. 479


Captulo 16: Controles de fichas

Elementos de pgina: vista tcnica

Figura 220: Elementos de pgina: vista tcnica

Un elemento de pgina consiste en un ttulo de ficha, un rea subscreen y una subscreen.


Tcnicamente, los ttulos de fichas se tratan como botones. El contenido de los elementos de
pgina se visualiza con la tcnica de subscreen. Asigne un rea de subscreen a cada pantalla
desde la que puede llamar a una subscreen.

Controles de ficha: atributos

Figura 221: Controles de ficha: atributos

Adems de los atributos generales, por ejemplo, Nombre de objeto, Posicin inicial y Tamao
esttico, los controles de ficha tambin tienen atributos especiales.

480 Copyright . Reservados todos los derechos.


Leccin: Definicin de controles de ficha

Creacin de controles de fichas

Figura 222: Crear un control de fichas

Cree un control de fichas realizando los siguientes pasos:


1. Defina el rea de fichas.

2. Defina los ttulos de ficha y, si es preciso, aadir ms.

3. Asigne un rea subscreen a cada elemento de pgina.

Creacin de controles de ficha: rea de fichas

Figura 223: Creacin de un control de fichas: rea de fichas

Realice los siguientes pasos para crear un rea de control de fichas:


1. Seleccione Control de ficha en la lista de objetos de Screen Painter y sitelo en la pantalla.

2. Fije la esquina superior izquierda del rea de control de fichas.

Copyright . Reservados todos los derechos. 481


Captulo 16: Controles de fichas

3. Arrastre el objeto hasta lograr el tamao requerido.

Asigne un nombre al control de fichas en el atributo Nombre de objeto. Este nombre identifica
su control de fichas.
En el include TOP de su programa ABAP, utilice la sentencia CONTROLS para declarar un
objeto con el mismo nombre. Utilice TABSTRIP como el tipo.
El tipo TABSTRIP est definido en el pool de tipos CXTAB. El campo ACTIVETAB contiene el
cdigo de funcin del ttulo de la ficha que est activa en cada momento. Otros campos estn
reservados para uso interno. El nmero por defecto de fichas para un control de fichas es dos.

Creacin de controles de ficha: ttulo de la ficha

Figura 224: Creacin de un control de fichas: ttulo de la ficha

Tcnicamente, los ttulos de ficha se tratan igual que los botones.

Un ttulo de ficha puede varios atributos, entre ellos:


Nombre
Texto
Cdigo de funcin
Tipo de funcin

Puede ingresar estos atributos en los campos Nombre, Texto, Cd.func. y Tip.func. de los
atributos de objeto.
Un ttulo de ficha puede tener el tipo de funcin (espacio) o P. Si el tipo de funcin es
(espacio), el bloque de procesamiento Proceso despus de la entrada (PAI) se lanza cuando
el usuario escoge esa ficha y el cdigo de funcin del ttulo de la ficha se coloca en el campo
de comando. Si el tipo de funcin es P, el usuario puede desplazarse entre distintas fichas de
la misma clase en el front end sin lanzar el bloque de proceso PAI.
Si quiere que su control de fichas tenga ms de dos ttulos, deber crear ms ttulos de ficha.
Para crear ms ttulos de fichas, seleccione Botn en la lista de objetos del Screen Painter y
sitelo en el rea del ttulo de ficha.

482 Copyright . Reservados todos los derechos.


Leccin: Definicin de controles de ficha

Creacin de controles de ficha: subscreens de ficha

Figura 225: Creacin de control de fichas: subscreens de ficha

Asigne un rea subscreen a cada ficha. El rea subscreen asignada a una ficha se indica de
forma automtica como objeto de referencia en los atributos de Dictionary para el ttulo de
ficha de esa pgina.

Siga los siguientes pasos para asignar un rea de subscreen a una o ms fichas:
1. Seleccione el ttulo de ficha relevante en el editor de layout de pantalla completa.

2. Seleccione el objeto de Subscreen y sitelo en la ficha.

Otra opcin es asignar una nica rea subscreen a diversas fichas indicando el nombre de ese
rea subscreen directamente en el campo Objeto de los atributos de las fichas relevantes.

RESUMEN DE LA LECCIN
Ahora podr:
Describir controles de ficha
Definir controles de ficha

Copyright . Reservados todos los derechos. 483


Captulo 16
Leccin 2
Modificacin de controles de ficha

RESUMEN DE LA LECCIN
Esta leccin explica cmo desplazarse entre las pginas de los controles de ficha.

Ejemplo empresarial
Una agencia de viajes necesita actualizar los datos de reserva de vuelos para los clientes que
usan diferentes pantallas en la aplicacin SAP. En las pantallas, los usuarios deben poder
modificar los controles de ficha para desplazarse localmente en el Proceso despus de la
entrada (PAI) y deben poder hacerlo con el asistente. Por este motivo, se requieren los
siguientes conocimientos:
Una buena comprensin de los controles de ficha
Desplazamientos en controles de tabla

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Usar desplazamientos PAI locales en controles de fichas
Usar desplazamientos PAI en controles de fichas
Crear controles de fichas utilizando el asistente

Desplazamiento local en controles de fichas

Figura 226: Desplazamiento local en controles de fichas

Asigne un rea subscreen distinta a cada elemento de pgina en un control de fichas y luego
podr desplazarse de forma local entre las pginas en el front end.

484 Copyright . Reservados todos los derechos.


Leccin: Modificacin de controles de ficha

Para desplazarse localmente entre las pginas en el front end, debe enviar todas las
subscreens al front end cuando enva la pantalla principal. Adems, todos los ttulos de ficha
del control de fichas debern tener el tipo de funcin P.
Cuando se desplaza entre diversos elementos de la pgina, no hay comunicacin entre los
servidores de aplicacin y presentacin.
Cuando un usuario elige una funcin en la pantalla que desencadena el proceso PAI, el
sistema tambin procesa los bloques PAI de todos las subscreens. Todas las verificaciones de
campo se ejecutan y los controles de ficha funcionan como una pantalla grande individual.
Por consiguiente, el desplazamiento local en los controles de ficha es ms adecuado para
transacciones de visualizacin.

Desplazamientos locales en controles de fichas: programacin

Figura 227: Desplazamientos locales en controles de fichas: programacin

Realice los siguientes pasos para programar un control de fichas que le permita
desplazarse localmente en el front end:
1. Asignar un rea subscreen independiente a cada ficha. Se enviar una subscreen a cada
una de esas pginas cuando se procese la pantalla.

2. Llamar todos las subscreens desde la lgica de proceso.

3. Asignar el tipo de funcin P a todos los ttulos de ficha.

El sistema puede ocultar cualquier pantalla cuya subscreen no contenga ningn elemento que
se puedan visualizar. Si no existen pantallas que contengan elementos que se puedan
visualizar, el sistema oculta el control de fichas por completo.

Copyright . Reservados todos los derechos. 485


Captulo 16: Controles de fichas

Desplazamientos PAI en controles de fichas

Figura 228: Desplazamientos PAI en controles de fichas

Si todos los elementos de pgina comparten una nica rea subscreen, el programa analiza el
cdigo de funcin del ttulo de ficha elegido para determinar qu pantalla se visualiza.

Este proceso de desplazamiento PAI incluye los siguientes pasos:


1. En el bloque de proceso PAI, el programa determina qu elementos de pgina deben estar
activos a partir del ttulo de ficha que elija el usuario.

2. En el bloque de procesamiento Proceso antes de la salida (PBO), el programa visualiza la


pantalla correspondiente.

Durante este proceso, el sistema verifica nicamente los campos del subscreen que se
visualiza.

Desplazamientos PAI en controles de fichas: programacin

Figura 229: Desplazamientos PAI en controles de fichas: programacin

486 Copyright . Reservados todos los derechos.


Leccin: Modificacin de controles de ficha

Para que el programa de aplicacin procese la funcin de desplazamiento en un control


de fichas, se deben satisfacer los requisitos siguientes:
Todas las fichas deben compartir un rea comn de subscreen.
Todos los ttulos de ficha deben tener el tipo de cdigo de funcin (espacio).

En la lgica de proceso, emplee una variable para llamar la pantalla que se visualiza en el rea
subscreen.
En el bloque PAI, llame un mdulo en el que el cdigo de funcin del ttulo ACTIVETAB se
ubique en el campo de la ficha activa de la estructura que ha creado con el tipo TABSTRIP. En
la figura, es MY_TAB_STRIP.
El bloque de proceso PBO debe contener un mdulo antes de que se llame la subscreen en el
que se ubica el nombre del subscreen en la variable correspondiente. Asigne un valor inicial a
esta variable subscreen a fin de que la pantalla se procese por primera vez antes de que el
usuario haya tenido la oportunidad de elegir un ttulo de ficha.
Para ocultar una ficha en tiempo de ejecucin, fije el ttulo de la ficha correspondiente en
estado inactivo con la tabla del sistema SCREEN, SCREEN-ACTIVE = 0. Fije el ttulo de la ficha
correspondiente en estado inactivo antes de procesar el control de fichas por primera vez
para asegurarse de que el entorno de la pantalla sea constante.

Controles de fichas utilizando el asistente

Figura 230: Controles de fichas utilizando el asistente

Utilice el Asistente de control de fichas para crear controles de ficha e insertarlos en pantallas
de un programa. El asistente le orientar a lo largo del proceso. Puede regresar a
configuraciones anteriores en cualquier momento.
Los objetos de programa se crean al llegar a la pantalla final cuando se ha concluido el
proceso. El asistente crea el control de fichas, as como las sentencias correspondientes en la
lgica de proceso, junto con los mdulos, subrutinas y definiciones de datos necesarias
relevantes.

Adems, se crean los siguientes objetos (si an no existen):


Subscreens vacos para las pginas de control de fichas

Copyright . Reservados todos los derechos. 487


Captulo 16: Controles de fichas

Includes para definiciones de datos, mdulos PBO y PAI y sentencias INCLUDE para
dichos Includes

Todos los objetos se ubican en la lista de objetos inactivos.

488 Copyright . Reservados todos los derechos.


Captulo 16
Ejercicio 31
Crear controles de fichas

Ejemplo empresarial
Debe crear un control de fichas en la pantalla 100 para visualizar informacin adicional de
vuelo y detalles del tipo de avin.

Modelo: SAPMBC410ASUBS_SUBSCREEN
Solucin: SAPMBC410ASUBS_TABSTRIP

Cree un control de fichas en la pantalla 100.

1. Extienda el programa SAPMZ##BC410_SOLUTION que cre antes o copie la solucin


modelo SAPMBC410ASUBS_SUBSCREEN. Use la solucin modelo
SAPMBC410ASUBS_TABSTRIP como orientacin.

2. Cree una ficha. Elimine el rea subscreen de la pantalla 100 y cree un control de fichas con
los atributos siguientes:
Nombre: MY_TABSTRIP
Resizing
Vertical: ON
Horizontal: ON

3. Cree tres etiquetas con los siguientes atributos.


Atributos de los pulsadores (fichas):
Nombre Texto Cdigo de Tipo de funcin Campo de
funcin referencia

P1 Ver datos del FC1 <vaco> SUB


vuelo
P2 Ver datos FC2 <vaco> SUB
tcnicos del
avin
P3 Actualizacin de FC3 <vaco> SUB
reservas

Asigne a cada ficha un rea de subscreen con los siguientes atributos:


Nombre: SUB
Resizing
Vertical: ON
Horizontal: ON

4. En el Include TOP de su programa, cree un objeto de datos para el control de fichas con la
sentencia:

Copyright . Reservados todos los derechos. 489


Captulo 16: Controles de fichas

CONTROLS MY_TABSTRIP ...

5. En la lgica de proceso de la pantalla 100, implemente la llamada para el dynpro


subscreen en el control de fichas. El nmero de subscreen se halla en el campo DYNNR
que cre anteriormente.

6. Antes de llamar la subscreen, escriba un mdulo PBO en el que determine qu subscreens


se deben llamar con independencia del modo en que est trabajando el usuario. Adems,
determine qu subscreen desea ajustar la primera vez que se visualiza la pantalla. Asigne
el cdigo de funcin correspondiente al campo MY_TABSTRIP-ACTIVETAB.
Incluya la funcin lgica de desplazamiento al control de fichas en el procesamiento del
campo de comando de la pantalla 100 asignando el valor relevante a MY_TABSTRIP-
ACTIVETAB.

490 Copyright . Reservados todos los derechos.


Captulo 16
Solucin 31
Crear controles de fichas

Ejemplo empresarial
Debe crear un control de fichas en la pantalla 100 para visualizar informacin adicional de
vuelo y detalles del tipo de avin.

Modelo: SAPMBC410ASUBS_SUBSCREEN
Solucin: SAPMBC410ASUBS_TABSTRIP

Cree un control de fichas en la pantalla 100.

1. Extienda el programa SAPMZ##BC410_SOLUTION que cre antes o copie la solucin


modelo SAPMBC410ASUBS_SUBSCREEN. Use la solucin modelo
SAPMBC410ASUBS_TABSTRIP como orientacin.
a) Consulte la solucin modelo.

2. Cree una ficha. Elimine el rea subscreen de la pantalla 100 y cree un control de fichas con
los atributos siguientes:
Nombre: MY_TABSTRIP
Resizing
Vertical: ON
Horizontal: ON

3. Cree tres etiquetas con los siguientes atributos.


Atributos de los pulsadores (fichas):
Nombre Texto Cdigo de Tipo de funcin Campo de
funcin referencia

P1 Ver datos del FC1 <vaco> SUB


vuelo
P2 Ver datos FC2 <vaco> SUB
tcnicos del
avin
P3 Actualizacin de FC3 <vaco> SUB
reservas

Asigne a cada ficha un rea de subscreen con los siguientes atributos:


Nombre: SUB
Resizing
Vertical: ON
Horizontal: ON

Copyright . Reservados todos los derechos. 491


Captulo 16: Controles de fichas

4. En el Include TOP de su programa, cree un objeto de datos para el control de fichas con la
sentencia:
CONTROLS MY_TABSTRIP ...
a) Consulte la solucin modelo.

5. En la lgica de proceso de la pantalla 100, implemente la llamada para el dynpro


subscreen en el control de fichas. El nmero de subscreen se halla en el campo DYNNR
que cre anteriormente.
a) Consulte la solucin modelo.

6. Antes de llamar la subscreen, escriba un mdulo PBO en el que determine qu subscreens


se deben llamar con independencia del modo en que est trabajando el usuario. Adems,
determine qu subscreen desea ajustar la primera vez que se visualiza la pantalla. Asigne
el cdigo de funcin correspondiente al campo MY_TABSTRIP-ACTIVETAB.
Incluya la funcin lgica de desplazamiento al control de fichas en el procesamiento del
campo de comando de la pantalla 100 asignando el valor relevante a MY_TABSTRIP-
ACTIVETAB.
a) Consulte la solucin modelo.
Solucin modelo SAPMBC410ASUBS_TABSTRIP
Programa principal

INCLUDE mbc410asubs_tabstriptop.
INCLUDE mbc410asubs_tabstripi01.
INCLUDE mbc410asubs_tabstripo01.
INCLUDE mbc410asubs_tabstripe02.

Pantalla de lgica de proceso 100


No hay cambios en relacin con el ejercicio anterior.
Pantalla de lgica de proceso 110
No hay cambios en relacin con el ejercicio anterior.
Pantalla de lgica de proceso 120
No hay cambios en relacin con el ejercicio anterior.
Pantalla de lgica de proceso 130
No hay cambios en relacin con el ejercicio anterior.
Include TOP
Add the following code:
CONTROLS:
my_tabstrip TYPE TABSTRIP.

Include de mdulo PBO


Change module FILL_DYNNR:

MODULE fill_dynnr OUTPUT.


CASE my_tabstrip-activetab.
WHEN 'FC1'.
dynnr = 110.
WHEN 'FC2'.
dynnr = 120.

492 Copyright . Reservados todos los derechos.


Leccin: Modificacin de controles de ficha

WHEN 'FC3'.
dynnr = 130.
when OTHERS.
my_tabstrip-activetab = 'FC1'.
dynnr = 110.
ENDCASE.
ENDMODULE. " fill_dynnr OUTPUT
when OTHERS.
my_tabstrip-activetab = 'FC1'.
dynnr = 110.
ENDCASE.
ENDMODULE. " fill_dynnr OUTPUT

Include de mdulo PAI


CASE ok_code.
WHEN 'FC1' OR 'FC2' OR 'FC3'.
my_tabstrip-activetab = ok_code.

WHEN 'BACK'.
LEAVE TO SCREEN 0.

* display time on add'l screen


WHEN 'TIME'.
CALL SCREEN 150
STARTING AT 10 10
ENDING AT 50 20.

* save changes to database


WHEN 'SAVE'.
UPDATE sflight
FROM wa_sflight.
IF sy-subrc <> 0.
MESSAGE a008(bc410).
ENDIF.
MESSAGE s009(bc410).

ENDCASE.
ENDMODULE. " user_command_0100 INPUT

Copyright . Reservados todos los derechos. 493


Captulo 16: Controles de fichas

RESUMEN DE LA LECCIN
Ahora podr:
Usar desplazamientos PAI locales en controles de fichas
Usar desplazamientos PAI en controles de fichas
Crear controles de fichas utilizando el asistente

494 Copyright . Reservados todos los derechos.


Captulo 16

Evaluacin de la formacin

1. Los controles de ficha les permiten a los usuarios navegar libremente entre pantallas.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. El desarrollador puede crear ms ttulos de fichas seleccionando el elemento


_______________ en Screen Painter.
Seleccione la respuesta correcta.

X A Pulsador

X B Subscreen

3. El desplazamiento local en controles de ficha es adecuado para transacciones de


visualizacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. En el bloque de procesamiento _______________, el programa establece la pantalla


correspondiente.
Seleccione la respuesta correcta.

X A Proceso antes de salida (PBO)

X B Proceso despus de la entrada (PAI)

5. Los subscreens vacos siempre existen en pginas de control de fichas.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 495


Captulo 16

Respuestas a la Evaluacin de la formacin

1. Los controles de ficha les permiten a los usuarios navegar libremente entre pantallas.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. El desarrollador puede crear ms ttulos de fichas seleccionando el elemento


_______________ en Screen Painter.
Seleccione la respuesta correcta.

X A Pulsador

X B Subscreen

3. El desplazamiento local en controles de ficha es adecuado para transacciones de


visualizacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. En el bloque de procesamiento _______________, el programa establece la pantalla


correspondiente.
Seleccione la respuesta correcta.

X A Proceso antes de salida (PBO)

X B Proceso despus de la entrada (PAI)

496 Copyright . Reservados todos los derechos.


Captulo 16: Respuestas a la Evaluacin de la formacin

5. Los subscreens vacos siempre existen en pginas de control de fichas.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 497