Vous êtes sur la page 1sur 100

4

DEFINICIN DE OBJETOS DE DATOS ESTRUCTURADOS ............................................ 2


4.1

TRABAJO CON ESTRUCTURAS ............................................................................ 2

4.2

EJERCICIO: TRATAR ESTRUCTURAS .................................................................... 7

DICCIONARIO ABAP ................................................................................................. 11


5.1

INTRODUCCIN................................................................................................ 11

5.2

TIPOS DE DATOS EN EL DICCIONARIO ABAP .................................................... 17

5.3

EJERCICIO: CREAR TIPOS DE DATOS BSICOS .................................................. 22

5.4

TRABAJAR CON ESTRUCTURAS PLANAS........................................................... 23

5.5

EJERCICIO: CREAR UNA ESTRUCTURA COMPLEJA ........................................... 26

5.6

TRABAJAR CON TIPOS DE TABLAS Y ESTRUCTURAS PROFUNDAS ................... 27

5.7

CREAR TIPOS DE TABLAS .................................................................................. 28

5.8

EJERCICIO: CREAR ESTRUCTURAS PROFUNDAS ............................................... 29

MODELADO DE DATOS ............................................................................................ 30


6.1

DEFINIR MODELO BASE DE DATOS .................................................................. 30

6.2

ESTRUCTURA DE TABLAS TRANSPARENTES ..................................................... 34

6.3

EJERCICIO: CREAR TABLAS TRANSPARENTES ................................................... 38

6.4

ACCESO A TABLA DE BASE DE DATOS .............................................................. 44

6.5

EJERCICIO: CREAR NDICES ............................................................................... 47

6.6

CONCEPTO DE AUTORIZACIN ........................................................................ 48

6.7

EJERCICIO:IMPLEMENTAR UNA VERIFICACIN DE AUTORIZACIN ................ 53

DICCIONARIO ABAP AVANZADO ............................................................................. 55


7.1

VISTAS .............................................................................................................. 55

7.2

EJERCICIO:CREAR UNA VISTA DE BASE DE DATOS ........................................... 64

7.3

AYUDAS DE BSQUEDA ................................................................................... 65

7.4

EJERCICIO: CREAR AYUDAS DE BSQUEDA ..................................................... 78

7.5

MODIFICACIN DE TABLAS .............................................................................. 78

7.6

EJERCICIO:REALIZAR UNA CONVERSIN DE TABLAS ....................................... 85

. OPEN SQL EN ABAP ............................................................................................... 86


8.1

QUERIES ........................................................................................................... 86

8.2

JOINS ................................................................................................................ 95

8.3

EJERCICIO: IMPLEMENTAR UN JOIN PARA TRES TABLAS DE BASES DE DATOS.


99

4 DEFINICIN DE OBJETOS DE DATOS


ESTRUCTURADOS
4.1 TRABAJO CON ESTRUCTURAS
RESUMEN DE LA LECCIN
Esta leccin cubre la definicin y los objetos de datos estructurados (variables estructuradas) y
sus anlisis en ABAP Debugger. Tambin aprender a utilizar sentencias ABAP bsicas para
objetos de datos estructurados.
Ejemplo empresarial
Se dispone a procesar sus estructuras de datos propias y a buscar errores semnticos en los
programas mediante el ABAP Debugger. Por ello, necesita saber lo siguiente:

Cmo definir objetos de datos estructurados (variables estructuradas)

Cmo utilizar sentencias ABAP bsicas para objetos de datos estructurados

Cmo analizar objetos de datos estructurados en modo debugging

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

Definir objetos de datos estructurados

Implementar sentencias ABAP bsicas para objetos de datos estructurados

Analizar objetos de datos estructurados en modo debugging

Definicin de objetos de datos estructurados

Figura 01: Definicin de estructuras con tipos globales

Al definir objetos de datos estructurados (conocidos como variables estructuradas o,


simplemente, estructuras) en ABAP, puede combinar los valores que pertenecen juntos de
forma lgica a un objeto de datos. Las estructuras se pueden anidar. Esto significa que los
componentes pueden estar formados por varias estructuras o incluso por tablas internas.
Define las variables de estructura en el programa con la sentencia DATA como lo hace con
objetos de datos bsicos.
Al fijar los tipos, puede consultar lo siguiente:

Una estructura en el Dictionary ABAP (tipo de estructura global)

Un tipo de estructura declarado de modo local en el programa

Definicin de estructuras con tipos locales

Figura 02: Definicin de estructuras con tipos locales

En la figura se muestra la definicin de una variable de estructura mediante un tipo


estructurado declarado de forma local.
Utilice la sentencia TYPES para definir tipos de estructura locales. Aqu, los componentes
estn delimitados como se muestra.
TYPES: BEGIN OF structure_name, ... , END OF structure_name.

Asigne un tipo a cada componente mediante el suplemento TYPE. Para obtener ms


informacin, consulte la documentacin de palabra clave de la sentencia TYPES.
Definir los objetos de datos del modo habitual.
En caso necesario, tambin puede definir directamente un objeto de datos estructurado. Para
ello, solo debe sustituir la palabra clave principal TYPES por DATA.
DATA: BEGIN OF structure_name, ... , END OF structure_name.
Acceder a componentes de estructura

Figura 03: Acceder a componentes de estructura

Los componentes de una estructura siempre se dirigen mediante un guin: nombre_estructuranombre_componente.

Uso de objetos de datos estructurados

Figura 04: Copia de componentes de estructura con el mismo nombre

La sentencia MOVE-CORRESPONDING copia el contenido de la estructura fuente en la


estructura de destino de a un componente por vez. Aqu, solo se consideran disponibles los
componentes que tienen el mismo nombre tanto en la estructura fuente como en la de destino.
El resto de componentes de las estructuras no se modifican.
La asignacin individual se ejecuta como en la sentencia MOVE.

Objetos de datos estructurados en modo debugging

Figura 05: Estructuras en modo debugging

Realice el seguimiento del contenido de campo de una estructura en el ABAP Debugger


indicando el nombre de la estructura en el rea Variable 1 o copindolo del cdigo fuente
haciendo doble clic sobre l. Visualice el componente de la estructura haciendo doble clic en el
nombre de la estructura en el rea Variable 1. Adems, puede configurar un rea de
visualizacin para la estructura en uno de los desktops.
Para visualizar una variable de estructura en el ABAP Debugger clsico, utilice el doble clic. Un
doble clic en la estructura del cdigo fuente, copia la estructura en la vista de campo. Un doble
clic en la vista de campo lo lleva a la visualizacin de estructura, donde podr leer el nombre, el
contenido y el tipo de los componentes individuales.

4.2 EJERCICIO: TRATAR ESTRUCTURAS


Ejemplo empresarial
Desea visualizar datos de la compaa area y vuelos segn una entrada de fecha particular
del usuario. Mediante estructuras durante la obtencin de datos, combine los datos en una
estructura de salida para su informe.Utilice la sentencia ABAP MOVE-CORRESPONDING para
asignar valores entre estructuras y utilice el ABAP Debugger para realizar el seguimiento del
flujo de datos y comprender las conexiones entre los bloques de procesamiento.
Modelo
Ninguno
Solucin
BC400_STS_STRUCTURE

Tarea 1
Cree un programa y defina una pantalla de seleccin para indicar una compaa area, un
nmero de vuelo y la fecha de vuelo.
1. Cree el programa ejecutable ZBC400_##_STRUCTURE sin ningn include TOP. Asigne el
programa al paquete y a la orden de transporte.
2. Defina las opciones de entrada para compaa area (nombre sugerido: pa_car), nmero
de vuelo (nombre sugerido: pa_con) y la fecha de vuelo (nombre sugerido: pa_date). Al
tipificar los campos de entrada, consulte los campos adecuados del tipo de estructura del
Dictionary BC400_S_FLIGHT.
Tarea 2
Cree dos estructuras basadas en los tipos de estructura del Diccionario para obtener datos en
una fase posterior y una estructura destinada a la salida definida por un tipo local.
1. Defina dos estructuras en el programa con referencia al tipo de estructura del Diccionario
BC400_S_CARRIER (nombre sugerido: gs_carrier) y BC400_S_FLIGHT (nombre sugerido:
gs_flight).
2. Defina una tercera estructura que combine todos los componentes de las dos estructuras
anteriores. El tipo de referencia debera definirse localmente en el programa (nombre
sugerido: gty_s_carrierflight). Utilice la sentencia TYPES para la definicin. Utilice este tipo
de estructura local para definir una variable de estructura (nombre sugerido:
gs_carrierflight).
Tarea 3
Obtenga los datos del vuelo para la fecha de vuelo, con informacin acerca de la compaa
area seleccionada. Presente estos datos en una lista sencilla.
1. Para obtener los datos, utilice los mtodos GET_CARRIER y GET_FLIGHT de la clase
CL_BC400_FLIGHTMODEL. Incluya los mtodos en el programa mediante la funcin
arrastrar y soltar, y suministre el tipo de datos correcto a la firma de los mtodos. Aqu, los
parmetros de entrada de la pantalla de seleccin sirven de parmetros para import y las
dos primeras estructuras sirven de parmetros para export.
2. Combine los datos recibidos de las primeras dos estructuras en la estructura de salida.
Para ello, utilice la sentencia MOVE-CORRESPONDING.
3. Utilice la sentencia WRITE para mostrar el contenido de la estructura de salida en una lista
sencilla.
4. (OPCIONAL) Suprima la salida a la lista si no se encontr ningn vuelo. En su lugar, emita
un mensaje breve de gestin de errores de los mtodos utilizando la sentencia WRITE.

Tarea 4
Ejecute el programa y verifique el resultado.

1. Verifique el contenido de todas las estructuras en el ABAP Debugger. Realice un test en


caso de que no se encuentren datos de vuelo.
Ejemplo empresarial
Desea visualizar datos de la compaa area y vuelos segn una entrada de fecha particular
del usuario. Mediante estructuras durante la obtencin de datos, combine los datos en una
estructura de salida para su informe.
Utilice la sentencia ABAP MOVE-CORRESPONDING para asignar valores entre estructuras y
utilice el ABAP Debugger para realizar el seguimiento del flujo de datos y comprender las
conexiones entre los bloques de procesamiento.
Modelo
Ninguno
Solucin
BC400_STS_STRUCTURE

Tarea 1
Cree un programa y defina una pantalla de seleccin para indicar una compaa area, un
nmero de vuelo y la fecha de vuelo.
1. Cree el programa ejecutable ZBC400_##_STRUCTURE sin ningn include TOP. Asigne el
programa al paquete y a la orden de transporte.
a. Realice este paso de la forma habitual.
2. Defina las opciones de entrada para compaa area (nombre sugerido: pa_car), nmero
de vuelo (nombre sugerido: pa_con) y la fecha de vuelo (nombre sugerido: pa_date). Al
tipificar los campos de entrada, consulte los campos adecuados del tipo de estructura del
Dictionary BC400_S_FLIGHT.
b. Vase el extracto del cdigo fuente de la solucin modelo.
Tarea 2
Cree dos estructuras basadas en los tipos de estructura del Diccionario para obtener datos en
una fase posterior y una estructura destinada a la salida definida por un tipo local.
1. Defina dos estructuras en el programa con referencia al tipo de estructura del Diccionario
BC400_S_CARRIER (nombre sugerido: gs_carrier) y BC400_S_FLIGHT (nombre sugerido:
gs_flight).
a. Vase el extracto del cdigo fuente de la solucin modelo.
2. Defina una tercera estructura que combine todos los componentes de las dos estructuras
anteriores. El tipo de referencia debera definirse localmente en el programa (nombre
sugerido: gty_s_carrierflight). Utilice la sentencia TYPES para la definicin. Utilice este tipo
de estructura local para definir una variable de estructura (nombre sugerido:
gs_carrierflight).
b. Vase el extracto del cdigo fuente de la solucin modelo.

Tarea 3
Obtenga los datos del vuelo para la fecha de vuelo, con informacin acerca de la compaa
area seleccionada. Presente estos datos en una lista sencilla.
1. Para obtener los datos, utilice los mtodos GET_CARRIER y GET_FLIGHT de la clase
CL_BC400_FLIGHTMODEL. Incluya los mtodos en el programa mediante la funcin
arrastrar y soltar, y suministre el tipo de datos correcto a la firma de los mtodos. Aqu, los
parmetros de entrada de la pantalla de seleccin sirven de parmetros para import y las
dos primeras estructuras sirven de parmetros para export.
a. Vase el extracto del cdigo fuente de la solucin modelo.

2. Combine los datos recibidos de las primeras dos estructuras en la estructura de salida.
Para ello, utilice la sentencia MOVE-CORRESPONDING.
b. Vase el extracto del cdigo fuente de la solucin modelo.

3. Utilice la sentencia WRITE para mostrar el contenido de la estructura de salida en una lista
sencilla.
c.

Vase el extracto del cdigo fuente de la solucin modelo.

4. (OPCIONAL) Suprima la salida a la lista si no se encontr ningn vuelo. En su lugar, emita


un mensaje breve de gestin de errores de los mtodos utilizando la sentencia WRITE.

Tarea 4
Ejecute el programa y verifique el resultado.
1. Verifique el contenido de todas las estructuras en el ABAP Debugger. Realice un test en
caso de que no se encuentren datos de vuelo.
a. Fije un breakpoint de sesin en el Editor ABAP y ejecute el programa directamente
mediante (Procesamiento directo).
b.
Extracto del cdigo fuente:

10

5 DICCIONARIO ABAP
5.1 INTRODUCCIN
DESCRIPCIN DEL DICCIONARIO ABAP
11

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 06: Funcin del Dictionary ABAP

12

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 07: 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.

Definiciones de tipos en el Dictionary ABAP

13

Figura 08: 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.
Servicios del Dictionary ABAP

14

Figura 09: 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.

15

Enlace con el entorno de desarrollo y de tiempo de ejecucin

Figura 10: 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.

Evaluacin de la formacin

16

5.2 TIPOS DE DATOS EN EL DICCIONARIO ABAP


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

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.

17

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

Resumen de tipos de datos

Figura 11: 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:

18

Elemento de datos

Estructura

Tipo de tabla

Tipos de datos en el Dictionary ABAP

Figura 12: 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.

19

El tipo de datos debe seleccionarse de una lista integrada de tipos de datos.


Los siguientes son los tipos de datos ms utilizados:
o

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.

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.

20

Elementos de datos

Figura 13: 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

21

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 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.

5.3 EJERCICIO: 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.

22

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.
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.

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.

5.4 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

23

Figura 14: Estructuras

Una estructura consiste en componentes de las siguientes clases:

Elementos de datos
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

24

Figura 15: 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.
Estructura anidada

25

Figura 16: 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.

5.5 EJERCICIO: CREAR UNA ESTRUCTURA COMPLEJA


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.

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

26

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.

5.6 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

27

Figura 17: Tablas internas definidas por un tipo de tabla

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.

5.7 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.

28

Estructuras profundas

Figura 18: 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.

5.8 EJERCICIO: 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.

29

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.

6 MODELADO DE DATOS
6.1 DEFINIR MODELO BASE DE DATOS
RESUMEN DE LA LECCIN
En este mdulo encontrar un resumen del modelado de datos. Necesita realizar un modelado
de datos antes del desarrollo de la aplicacin. Tambin aprender a comprender la descripcin
de tablas de bases de datos en Dictionary ABAP.
Ejemplo empresarial
Desea desarrollar un programa que acceda a las tablas de la base de datos. Para ello, necesita
conocer el modelo de datos subyacente y la estructura de las tablas de base de datos. Por este
motivo, se requieren los siguientes conocimientos:

Comprender el propsito y los beneficios de utilizar un modelo de datos en el desarrollo


de la aplicacin

Comprender el modelo de datos de vuelo de SAP

Comprender el significado y la estructura de una tabla transparente

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

Explicar la finalidad y los beneficios de los modelos de datos

Describir el modelo de datos de vuelo SAP

Explicar tablas transparentes

30

Resumen del modelo de datos

Figura 19: Modelado de datos

En el desarrollo de aplicaciones empresariales, los aspectos relevantes del mundo real se


deben representar en forma de datos. Una unidad empresarial representa a una entidad. Estas
entidades estn relacionadas entre s, que estn fijas en el modelo de datos subyacente,
tambin conocido como el Structured Entity Relationship Model (SERM).
El desarrollador usa este modelo de datos se utiliza como la base de la implementacin de
definiciones de tabla apropiadas (tablas transparentes), incluidas sus relaciones con las otras
en el Dictionary ABAP.
Al activar las definiciones de tabla, las tablas de base de datos correspondientes se crean
automticamente en la base de datos. Los datos de aplicacin reales se indican en esas tablas
ms adelante.

Modelo de datos de vuelo SAP

31

Figura 20: Modelo de datos de vuelo SAP para los cursos de formacin ABAP

Consultas tpicas en la agencia de viajes:

Aeropuertos relevantes

Conexiones de vuelos relevantes

Horarios de vuelos relevantes

Informacin relevante acerca de vuelos, por ejemplo, precio, utilizacin de la capacidad


o disponibilidad, etc.

Los cursos de formacin ABAP, la documentacin online y la documentacin de palabras clave


ABAP utilizan el mismo modelo de datos de vuelo como ejemplo. Los objetos de Repository
para el modelo de datos de vuelo se encuentran en el paquete SAPBC_DATAMODEL.
Los clientes de una agencia de viaje que desean volar de un lugar a otro quieren que la
agencia de viaje les brinde la siguiente informacin especfica.
Informacin requerida:

Qu conexin ofrece el mejor vuelo y el ms directo?

Cules son los horarios de vuelo aceptables en los das de viaje propuestos?

Qu conexiones tienen los vuelos ms econmicos, las conexiones ms rpidas y las


conexiones con horarios de llegada a destino?

Por otro lado, la agencia de viajes tiene otros requisitos. En el modelo de datos diseado para
gestionar los datos requeridos, los datos se almacenan en tablas segn los criterios tcnicos en
una base de datos central. La cantidad de datos almacenados supera lo que se necesita para
responder las rdenes del cliente.
Por ese motivo, necesita poder compilar los datos necesarios para cumplir con lo que solicita el
cliente utilizando los programas de aplicacin.

32

Modelo de datos relacional

Figura 21: Modelo de datos relacional

El modelo de datos de vuelo contiene las siguientes entidades para toda la informacin
empresarial que estn conectadas de modo lgico:

Ciudades

Aeropuertos

Compaas areas

Trayectos de vuelo

Vuelos

Estas entidades se relacionan entre s de las siguientes maneras:

Cada horario de vuelos contiene una compaa area, un aeropuerto de salida y un


aeropuerto de destino.

Cada vuelo reservable pertenece a un horario de vuelo existente.

Cada asignacin se puede fijar entre las ciudades relevantes y los aeropuertos
prximos.

Puede gestionar todos los datos necesarios sin redundancias, mediante estas relaciones. Al
mismo tiempo, la agencia de viajes puede obtener todos los datos solicitados por el cliente.

33

6.2 ESTRUCTURA DE 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

Tablas transparentes

34

Figura 22: 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.
Objetos bsicos del Dictionary ABAP

35

Figura 23: 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.

36

Ejemplo del concepto de dominio de dos niveles

Figura 24: 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

37

Figura 25: Tablas transparentes y estructuras

Cuando se activa una tabla transparente en el Dictionary ABAP, automticamente se crea una
tabla en la 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.

6.3 EJERCICIO: CREAR TABLAS TRANSPARENTES


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.
1. Cree las dos tablas transparentes ZEMPLOY## y ZDEPMENT##. Defina sus campos
clave.

38

a) Selecciona 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


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

la
el
la
el

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.

39

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:

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 identifican una entrada de forma unvoca. En consecuencia, se deben marcar
como campos clave.

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


aparece automticamente.

La siguiente tabla muestra las opciones tcnicas que debe seleccionar:

Grabe las opciones tcnicas. Regrese a la pantalla de actualizacin de la tabla por medio de
F3. La tabla est activada.

40

2. Cree la tabla ZDEPMENT##.

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.
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.

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.

41

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:

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##.

42

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.
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.


f)

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

43

4. Inicie el programa BC430_CHECK en la transaccin SE38.

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

6.4 ACCESO A 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

44

Figura 26: Estructura de un ndice

Se puede crear un ndice para acelerar la seleccin de registros de datos en una tabla.
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.

45

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 ??: Acceso mediante ndices

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

46

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.

6.5 EJERCICIO: CREAR NDICES


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.

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.

47

1. Visualice el ndice que ha creado.


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

6.6 CONCEPTO DE AUTORIZACIN


RESUMEN DE LA LECCIN
En este mdulo se explica por qu es til una verificacin de autorizacin y cmo incluirla en
sus programas.
Ejemplo empresarial
Las verificaciones de autorizacin son necesarias en sus programas para proteger los datos del
acceso no autorizado. Por este motivo, se requieren los siguientes conocimientos:

Comprender el concepto de autorizacin de SAP

Comprender cmo implementar las verificaciones de autorizacin

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

Explicar el concepto de autorizacin SAP

Implementar verificaciones de autorizacin

El concepto de autorizaciones de SAP

48

Figura 27: El concepto de autorizaciones de SAP

Los datos crticos y las partes del alcance de funcin del sistema SAP se deben proteger del
acceso no autorizado. Implemente verificaciones de autorizacin en su programa para que
cada usuario solo pueda acceder a reas para las cuales est autorizado.
Objetos de autorizacin y autorizaciones (ejemplo)

49

Figura 28: Objetos de autorizacin y autorizaciones (ejemplo)

Los objetos de autorizacin se definen por clases de objetos. Cuando define un objeto de
autorizacin, el desarrollador especifica los campos apropiados (sin valores). Se deriva una
autorizacin real de un objeto de autorizacin asignando valores a estos campos. Esta
autorizacin se puede integrar en el registro maestro del usuario requerido mediante un perfil
de autorizacin.
Es posible crear varias autorizaciones distintas (para la integracin en distintos registros
maestros del usuario) para un objeto de autorizacin.
Verificacin de autorizacin (principio)

Figura 29: Verificacin de autorizacin (principio)

En tiempo de ejecucin, utilice la sentencia AUTHORITY-CHECK para verificar si el usuario


dispone de la autorizacin requerida para ejecutar la funcin que se llama en su registro
maestro de usuario.
Dependiendo del resultado de la verificacin (SY-SUBRC), contine el programa segn
corresponda, de la siguiente manera:

SY-SUBRC = 0
El usuario tiene la autorizacin requerida para realizar la funcin (por ejemplo,
SELECT) y continuar con el programa.

SY-SUBRC <> 0
El usuario no tiene autorizacin suficiente, por lo tanto, emita un mensaje de
error/advertencia.

50

En circunstancias normales, la definicin de objetos de autorizacin es parte de la modelado de


datos y de la creacin de tablas de base de datos. En este curso, acceder a un modelo de
datos existente para que pueda utilizar el objeto de autorizacin S_CARRID en este modelo de
datos.
La implementacin del concepto de autorizacin es una de las tareas del programador que
programa el acceso a las tablas de base de datos.
Los pasos siguientes, como definir autorizaciones y perfiles, y designar los registros maestros
de usuario, con tareas del administrador.
Visualizar objetos de autorizacin

Figura 30: Visualizacin de objetos de autorizacin

Antes de poder implementar la verificacin de autorizacin requerida en su programa,


determine la estructura (los campos) del concepto de autorizacin respectivo. Un objeto suele
consistir en el campo ACTVT (Actividad) y en otro campo que especifica el tipo de datos que se
debe proteger (es decir, nmero de material, compaa area, etc.). Los valores de estos
campos de autorizacin especifican lo que cada usuario est autorizado a hacer.
Puede visualizar un objeto de autorizacin directamente en el Workbench ABAP (por ejemplo,
mediante el pulsador Otro objeto o la etiqueta Otro). Tambin puede utilizar la transaccin
SU21. Aqu, obtendr un resumen de todos los objetos de autorizacin creados en el sistema.

Implementacin de verificaciones de autorizacin

51

Figura 31: Verificacin de autorizacin (ejemplo de sintaxis)

En la figura se muestra cmo implementar una verificacin de autorizacin.


Para la verificacin de autorizacin del programa, especifique la autorizacin que se debe
verificar en el registro maestro del usuario actual. Especifique la autorizacin especificando el
objeto de autorizacin, sus campos y los valores de campo apropiados. Consulte la sintaxis
que se muestra en la figura.
En este ejemplo, se verifica la autorizacin de usuario para acceder al objeto S_CARRID; el
campo CARRID (compaa area) contiene la compaa area introducida por el usuario y el
campo ACTVT (actividad) contiene el valor 03 (visualizacin).
Despus de la sentencia AUTHORITY-CHECK, verifique el cdigo de retorno SY-SUBRC e
implemente el tratamiento posterior de su programa segn corresponda.

Implementar verificaciones de autorizacin en programas

52

Figura 32: Implementacin de verificaciones de autorizacin en programas

Para evitar errores ortogrficos en nombres de objetos y campos, genere la sentencia


AUTHORITY-CHECK en su cdigo fuente mediante el pulsador Patrn. Despus, actualice los
valores de campo e implemente la evaluacin de SY-SUBRC.

6.7 EJERCICIO:IMPLEMENTAR UNA VERIFICACIN DE AUTORIZACIN


Ejemplo empresarial
Desea desarrollar un programa en el cual se lean los datos del modelo de vuelo desde la base
de datos. El acceso a los datos de este modelo se controla mediante autorizaciones del objeto
de autorizacin S_CARRID. Para ello, necesita realizar una verificacin de autorizacin. Para
hacer que la verificacin de autorizacin se pueda reutilizar, encapslela en un mdulo de
funciones.
Modelo
Ninguno
Solucin
BC400_DDS_AUTH_CHECK (mdulo de funciones)
Implementar verificaciones de autorizacin.

Tarea 1
Cree un nuevo mdulo de funciones en el grupo de funciones. Actualice la interfaz del mdulo
de funciones de manera que importe un ID de compaa area y una actividad para la
verificacin de autorizacin. Cree dos excepciones para la confirmacin: una para cuando no
exista ninguna autorizacin y otra para cuando el autor de la llamada haya especificado una
actividad no vlida.
1. Cree un nuevo mdulo de funciones en su grupo de funciones (nombre sugerido:
Z_BC400_##_AUTH_CHECK).

53

2. Cree un parmetro para import separado para el ID de compaa area y la actividad


(nombres sugeridos: IV_CARRID e IV_ACTIVITY). Para tipificar el elemento de
datos, seleccione S_CARR_ID y ACTIV_AUTH.

3. Cree
dos
excepciones
WRONG_ACTIVITY).

(clsicas)

(nombres

sugeridos:

NO_AUTH

Tarea 2
Implemente una verificacin de autorizacin en el cdigo fuente para el objeto de autorizacin
S_CARRID. Presente una excepcin si no existe la autorizacin o si el autor de la llamada no
ha especificado ninguna de las actividades relevantes.
1. Implemente una verificacin de autorizacin para el objeto de autorizacin S_CARRID.
Suministre los parmetros para import del mdulo de funciones a los campos de
autorizacin. Evale el valor de retorno (sy-subrc) y emita una excepcin si falta la
autorizacin.

2. Antes de la verificacin de autorizacin, asegrese de que el autor de la llamada haya


especificado solo una de las actividades relevantes. En caso necesario, emita una
excepcin.

Tarea 3
Active y realice un test del mdulo de funciones.
1. Activar el mdulo de funciones.
2. Pruebe su mdulo de funciones.

54

7 DICCIONARIO ABAP AVANZADO


7.1 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 33: Vistas de base de datos

55

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.
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 34: 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.
Estructura de una vista: condicin de conexin

56

Figura 35: 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 SCARRCARRID = 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)

57

Figura 36: Estructura de una vista: seleccin de campo (proyeccin)

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.
Por lo tanto, se puede formular una condicin de seleccin con campos incluidos en la vista y
campos que no estn incluidos en ella.

Definicin de vista de base de datos

58

Figura 37: 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:

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

59

Estructura de la vista

Figura 38: 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.
Seleccin de datos con vistas

60

Figura 39: 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.

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.
Conexin interna y externa

61

Figura 40: 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.
Vistas de base de datos

62

Figura 41: 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.
Incorporacin dinmica de campos de tabla en vistas de base de datos

63

Figura 42: 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.

7.2 EJERCICIO:CREAR UNA VISTA DE BASE DE DATOS


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.

64

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

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 memoria intermedia. En la pantalla de opciones tcnicas, seleccione la
casilla de seleccin Grabar completamente en memoria intermedia.

7.3 AYUDAS DE 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

65

Definir ayudas para bsqueda elementales

El proceso de ayuda para entradas

Figura 43: 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.
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

66

Figura 44: 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.

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

67

Figura 45: 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.
Mtodo de seleccin de una Ayuda para bsqueda

68

Figura 46: 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.

69

Figura 47: 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.
Interfaz de una Ayuda para bsqueda

70

Figura 48: 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.
Uso de ayudas para bsqueda

71

Figura 49: 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).
Conexin a Ayuda para bsqueda en el Dictionary ABAP

72

Figura 50: 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.
Resumen - Mecanismos para la Ayuda para entradas

73

Figura 51: 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.
Rendimiento de la Ayuda para entradas

74

Figura 52: 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.
La vista como mtodo de seleccin de una Ayuda para bsqueda

75

Figura 53: 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.
Visualizaciones alternativas de la Ayuda para entradas

76

Figura 54: 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.

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.

77

7.4 EJERCICIO: CREAR AYUDAS DE 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
ciertos:

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.

7.5 MODIFICACIN DE TABLAS


OBJETIVOS DEL CAPTULO

Calcular el efecto de las modificaciones de una tabla

Convertir tablas transparentes

78

Gestionar errores de conversin

Ampliar tablas mediante estructuras append

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 ??: Modificaciones de tablas

79

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 55: 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.

80

Si el sistema de base de datos usado no puede hacerlo, se convertir la tabla para ajustar la
estructura.

El proceso de conversin de tablas

Figura 56: 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.

Proceso de conversin 2

81

Figura 57: 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.

Proceso de conversin 3

82

Figura 58: 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.

Proceso de conversin 4

83

Figura 59: 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.

Proceso de conversin 5

84

Figura 60: 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.

7.6 EJERCICIO:REALIZAR UNA CONVERSIN DE TABLAS

85

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.

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.

8 . OPEN SQL EN ABAP


8.1 QUERIES
RESUMEN DE LA LECCIN
En este mdulo se explican las expresiones lgicas que se utilizan en las condiciones WHERE
de las sentencias de Open SQL. Tambin se analiza una variedad de otros operadores adems
de las comparaciones de valor sencillas con = y EQ.
Ejemplo empresarial
Desea implementar accesos a bases de datos con Open SQL en sus aplicaciones. Estos
accesos a bases de datos deben ser sofisticados y eficaces. Por lo tanto, necesita descubrir las
opciones especiales de uso de expresiones lgicas en la condicin WHERE y la especificacin
de objetos de datos en las clusulas INTO. Por este motivo, se requieren los siguientes
conocimientos:

Un resumen de la importancia de los posibles operadores en las condiciones WHERE

Un resumen de cmo utilizar los diferentes operadores correctamente

Un resumen de las opciones disponibles para especificar objetos de datos despus de


INTO

Un resumen de cmo implementar procesamiento secuencial de grandes volmenes


de datos

86

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

Delimitar los sets de datos seleccionados en la base de datos con la clusula WHERE

Utilizar diferentes tipos de objetos de datos como el destino para sentencias SELECT

Leer grandes volmenes de datos de la base de datos

Operadores en las condiciones WHERE


Al formular condiciones WHERE, compar principalmente con valores individuales y evalu las
tablas de seleccin (opciones de seleccin). Los valores de comparacin en este caso fueron
objetos de datos (variables y literales). Sin embargo, Open SQL tambin admite una variedad
de operadores y le permite comparar campos de tablas de bases de datos con otros.
Los posibles operadores en las condiciones WHERE se enumeran en la siguiente tabla:

87

88

Figura ??: Operadores en las condiciones WHERE

La figura muestra un ejemplo de bsqueda compleja para los clientes de una lnea area
utilizando datos de nombre y direccin.

Cuando el desarrollador enlaza las condiciones, los operadores AND se evalan antes de los
operadores OR. Coloque parntesis para modificar esta orden cuando sea necesario.

Comparacin de campos de tabla

89

Figura 61: Comparacin de campos de tabla

Adems de las variables y las constantes, tambin puede indicar los campos de las mismas
tablas de bases de datos despus de los operadores de comparacin (por ejemplo, =, EQ, <>,
NE, <, LT, etc.) en las condiciones WHERE de las sentencias Open SQL. Introducir campos de
las mismas tablas de bases de datos despus de comparar los operadores facilita la
comparacin de dos campos de bases de datos entre s en la condicin WHERE y,
nicamente, la lectura de registros cuyos contenidos cumplen con la condicin.
Para evitar confundir el segundo campo de tabla con un objeto de datos, el nombre de la tabla
de base de datos debe especificarse con el denominador de campo conectado con el carcter
~. De manera alternativa, utilice un alias para el nombre de la tabla, el cual define con el
suplemento AS despus del nombre de la tabla en la clusula FROM.

rea de destino de lnea individual

90

Figura 62: Lista de objetos de datos en lugar de la estructura individual

Las reas de destino de lnea individual se utilizan para el acceso a registro individual utilizando
SELECT SINGLE y en los loops individuales utilizando SELECT ... ENDSELECT. El destino
puede ser una estructura (objeto de datos estructurado) y siempre se especifica con el
suplemento INTO (sin TABLE) o con INTO CORRESPONDING FIELDS OF. Tambin puede
especificar una lista de objetos de datos elementales o componentes de estructura
elementales. En este caso, los campos individuales se separan con comas mientras que toda
la lista se encierra entre parntesis.

La especificacin de componentes de estructura individuales es una alternativa ms robusta de


especificar la estructura completa despus del modificador CORRESPONDING FIELDS OF. En
teora, tambin puede especificar una lista de objetos de datos individuales o componentes de
estructura despus de INTO CORRESPONDING FIELDS OF.

rea de destino multilnea

91

Figura 63: APPENDING en lugar de INTO

Cuando las sentencias SELECT cuentan con reas de destino multilnea, debe especificar una
tabla interna como el objeto de datos. Especifique la tabla, por ejemplo, despus del
suplemento INTO TABLE o despus de INTO CORRESPONDING FIELDS OF TABLE.
De manera alternativa, reemplace INTO TABLE e INTO CORRESPONDING FIELDS OF
TABLE con APPENDING TABLE y APPENDING CORRESPONDING FIELDS OF TABLE,
respectivamente. Si utiliza INTO, el contenido de la tabla interna se reemplaza completamente
con los datos seleccionados. Si utiliza APPEND, los datos se agregan a cualquier lnea
existente en la tabla.

Tamao de paquete explcito

92

Figura 64: Suplemento PACKAGE SIZE

Cuando procesa los sets de resultado multilnea, los lee en una tabla interna (array fetch). Si
estn involucrados grandes sets de resultados, el programa puede cancelarse porque la
memoria de trabajo disponible es insuficiente para una tabla interna de ese tamao.
Una solucin a esto es el procesamiento secuencial en un loop SELECT. Este enfoque tiene
bajos requisitos de memoria porque solo un registro se transporta a la memoria de trabajo por
vez.

Una desventaja del procesamiento secuencial en el loop SELECT es que solo un registro est
disponible por vez para el log de la aplicacin. La disponibilidad de un registro es
particularmente problemtica cuando desea modificar los registros en la base de datos porque
las modificaciones solo pueden realizarse mediante el acceso de registro individual. Sin
embargo, una gran cantidad de accesos de escritura de registro individual es perjudicial para la
base de datos y para el rendimiento del programa.
Para tales casos, Open SQL proporciona una variante de la sentencia SELECT en la cual los
datos se procesan en un loop (SELECT ... ENDSELECT), pero el rea de destino es multilnea
(INTO TABLE). La cantidad de registros que se ubica en la tabla interna al mismo tiempo y se
procesa en la ejecucin de loop actual se define con el modificador PACKAGE SIZE. Puede
especificar esta cantidad de manera dinmica o esttica, pero se define una vez al comienzo
del loop. La misma cantidad de lneas se procesa durante cada ejecucin de loop.

93

Cursor explcito

Figura 65: OPEN CURSOR ... FETCH ... CLOSE CURSOR

Los paquetes de diferentes tamaos se pueden procesar de manera secuencial con la sintaxis
que se muestra en la figura.
En esta variante de acceso de lectura de base de datos, el acceso en s se desvincula de la
transferencia de la cantidad de resultados al programa de aplicacin.
La sentencia OPEN CURSOR define y ejecuta el acceso, pero no transmite datos al programa
de aplicacin.
La sentencia FETCH NEXT CURSOR recupera la cantidad de lneas deseada (suplemento
PACKAGE SIZE) del set de resultados y las copia a una tabla interna.
La sentencia CLOSE CURSOR completa el acceso a la base de datos.
La importancia de la variable del cursor, que es una variable con un tipo de CURSOR
especial, se destaca de la siguiente manera:

La variable del cursor identifica el acceso a la base de datos en sentencias


subsiguientes.

94

La variable del cursor almacena la posicin en el set de resultados del acceso a la base
de datos hasta que el procesamiento ya est completo.

Despus de OPEN CURSOR, la variable de cursor seala una posicin que se encuentra antes
de la primera lnea.
Las sentencias secuenciales FETCH no solo le permiten leer distintas cantidades de registros,
pero tambin le permiten especificar un objeto de datos diferente como el destino (estructuras o
tablas internas) despus de cada INTO.

RESUMEN DE LA LECCIN
Ahora podr:

Delimitar los sets de datos seleccionados en la base de datos con la clusula WHERE

Utilizar diferentes tipos de objetos de datos como el destino para sentencias SELECT

Leer grandes volmenes de datos de la base de datos

8.2 JOINS
OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:

Identificar las desventajas de SELECT anidada

Utilizar vistas de bases de datos y ABAP JOINs

En un sistema de base de datos relacional, como Open SQL, los intentos para acceder a datos
almacenados en una tabla principal requieren tambin lecturas de las tablas secundarias
relacionadas. El mtodo de programacin obvio para realizar estos accesos es con un loop a
travs de los registros en la tabla principal con las sentencias SELECT anidadas (consultar la
figura 191 de ejemplo). Sin embargo, las tablas secundarias pueden tener ellas mismas tablas
relacionadas que a su vez necesitan leerse. No existe lmite terico o prctico para la
profundidad de anidamiento; el modelo de SELECT anidada puede encadenar tablas de
manera indefinida, siempre y cuando las tablas estn enlazadas por columnas de datos en
comn.
Por varias razones, las sentencias SELECT anidadas son el mtodo que ms recurso consume
para leer varias tablas de bases de datos enlazadas y, en un buen diseo de programa, se

95

evita este mtodo por cualquier otro procesamiento de acceso de datos ms pequeo y ms
simple. Las sentencias SELECT anidadas ponen una carga alta en el servidor de la base de
datos y producen mucho trfico de red, debido a que varios paquetes de datos llenados
parcialmente se transfieren y los mismos datos se pueden leer varias veces consecutivamente
(accesos idnticos).
En este mdulo, aprender varias tcnicas que le permiten evitar en gran medida las
sentencias SELECT anidadas y reducir su impacto negativo en el rendimiento del sistema
cuando su uso es inevitable.

ABAP JOINs

Figura 66: Ejemplo INNER JOIN o OUTER JOIN

Para leer datos distribuidos en varias tablas, cree un vnculo entre las tablas funcionalmente
dependientes. El vnculo entre las tablas se conoce tcnicamente como JOIN, y el operador de
la base de datos correspondientes es una conexin.
Para implementar un JOIN, puede utilizar vistas de base de datos del Diccionario ABAP o
ABAP JOINs.

Puede derivar la lgica del INNER JOIN y OUTER JOIN del set de resultados previsto.

96

Una conexin interna produce el set de resultados que solo tiene en cuenta los registros de la
tabla externa para el que existen registros de datos adecuados en la tabla interna (como en el
ejemplo).
Una conexin externa izquierda produce el set de resultados que contiene todos los registros
de la tabla externa, independientemente de si existen o no registros adecuados en la tabla
interna. Si no existe ningn registro adecuado en la tabla interna, los campos de la tabla interna
(la otra tabla que se usa en la condicin de la conexin externa izquierda) se fijan en valores
cero en el set de resultados. Las tablas involucradas en una conexin se denominan tablas
bsicas. Una proyeccin (seleccin de columna) o una seleccin (seleccin de lnea) puede
aplicarse en el resultado de una conexin.
No todas las bases de datos admitidas por SAP admiten la sintaxis estndar para condiciones
ON. Por ello, utilice sintaxis limitada para asegurar que solo se permitan las conexiones que
devuelven el mismo set de resultados en todos los sistemas de base de datos.
Las restricciones para una conexin externa son las siguientes:

Solo puede tener una tabla o una vista a la derecha del operador de conexin. No
puede tener otra expresin de conexin.

Solo se puede utilizar AND como operador lgico en una condicin ON.

Toda comparacin en la condicin ON debe contener un campo de la tabla de la


derecha.

Ninguno de los campos de la tabla de la derecha puede aparecer en las condiciones WHERE
de la conexin externa izquierda.
Para obtener ms informacin sobre la implementacin de funciones de conexin, consulte la
documentacin de ABAP.
Ejemplo Conexin interna de ABAP

Figura 67: Ejemplo Conexin interna de ABAP

97

Una desventaja del uso de ABAP JOINs es que la sentencia es ms compleja que una vista del
Diccionario ABAP, donde la sintaxis de la sentencia SELECT (en concreto, la clusula FROM)
corresponde a un acceso de tabla normal.

Propiedades y ventajas de vistas de base de datos


Estos son los atributos y beneficios de las vistas de bases de datos:

Tambin puede utilizar vistas en otros programas.

Puede utilizar vistas para listas y funciones de bsqueda; por ejemplo, SE84 y SE81
encuentran vistas rpidamente.

Puede grabar vistas (opciones tcnicas) en la memoria intermedia como las tablas de
base de datos.

Los campos comunes en ambas tablas (campos de join) slo se transfieren una vez de
la base de datos al servidor de aplicacin.

La vista se implementa en el Diccionario ABAP como un INNER JOIN. Esto significa


que no se transfiere ningn dato si la tabla interna no contiene ninguna entrada que
corresponda a la tabla externa.

Si no desea utilizar un INNER JOIN para leer desde una tabla de texto, utilice un LEFT
OUTER JOIN de ABAP. Por ejemplo, si tiene una situacin donde los resultados de un
INNER JOIN no contienen ningn registro porque ninguna entrada est disponible en
un cierto idioma, puede utilizar un LEFT OUTER JOIN de ABAP en su lugar (consulte
la figura Ejemplo INNER JOIN o OUTER JOIN).

98

8.3 EJERCICIO: IMPLEMENTAR UN JOIN PARA TRES TABLAS DE BASES


DE DATOS.
Ejemplo empresarial
Su empresa utiliza un programa personalizado que muestra una lista de reservas para una
seleccin de agencias de viajes, clientes y datos de vuelo.
Los usuarios frecuentemente se quejan por los largos tiempos de ejecucin.
Un anlisis muestra que el bajo rendimiento se debe a la gran cantidad de accesos de registro
individual de las tablas SCARR y STRAVELAG dentro de un loop.
Le han solicitado que vuelva a disear el programa de manera que pueda leer los datos
necesarios en un acceso consolidado a la base de datos.
Modelo
BC402_DBT_3JOIN
Solucin
BC402_DBS_3JOIN
Formule JOINs en varias tablas, explique la diferencia entre INNER JOIN y OUTER JOIN, y
comprenda por qu la utilizacin de JOINs para tablas almacenadas en memoria intermedia
afecta de manera negativa el rendimiento.
Tarea 1
Copie el modelo BC402_DBT_3JOIN a ZBC402_##_3JOIN, donde ## representa su nmero
de grupo.
Familiarcese con el programa y su funcionamiento.
1. Copie el programa y todos sus subcomponentes.
2. De qu tablas de bases de datos lee los datos el programa? Qu tablas se leen en
un loop?
3. Los administradores de la base de datos detectaron los accesos repetidos a registros
individuales para las tablas SCARR y STRAVELAG, pero no para SCUSTOM. Puede
explicar esto?
4. En esta situacin, tiene sentido combinar el acceso a SCUSTOM con un acceso a
otras tablas en un JOIN?
Tarea 2
Implemente un acceso a la base de datos que lea de varias tablas juntas en un JOIN.
Seleccione las tres tablas para las cuales se implementa esto. Observe el sitio donde se
necesita un LEFT OUTER JOIN para garantizar que se lea la misma cantidad de reservas. Solo
lea las columnas que se necesiten. Ample el tipo de estructura GTY_S_BOOKINGS con los
componentes apropiados.

1. Ample el acceso de base de datos a la tabla SBOOK. Modifique la clusula FROM


para leer los datos necesarios de las tablas SCARR y STRAVELAG en una conexin
triple. Tenga en cuenta que SBOOK tambin contiene contabilizaciones que no

99

realizaron las agencias de viajes, lo cual significa que el campo agencynum es el


INITIAL (que sugiere que est vaco).
2. Qu modificaciones debe realizar a la condicin WHERE?
El campo agencynum ya no es el nico. Por lo tanto, debe agregarlo como prefijo con
el nombre de la tabla, SBOOK, o con un alias adecuado.
Consulte el extracto del cdigo fuente de la solucin modelo.

3. En la clusula SELECT, agregue los campos que desea leer de las tablas de bases de
datos SCARR y STRAVELAG. Ample el tipo de lnea de la tabla interna (tipo de
estructura GTY_S_BOOKINGS) con componentes tipificados correctamente.
Qu otras modificaciones en la clusula SELECT debe realizar?
Tarea 3
Elimine las sentencias y las sentencias innecesarias o agrgueles comentarios. Active y realice
un test del programa.
1. Elimine las sentencias SELECT para SCARR y STRAVELAG, o agrgueles
comentarios.
2. En la sentencia WRITE, muestre los campos adicionales de la tabla interna
GT_BOOKINGS.
3. Elimine la secuencia de los objetos de datos innecesarios o agrguele comentarios.
4. Active y realice un test del programa.

100