119167629 taw10-02-es

493
TAW10_2 Fundamentos de Workbench ABAP SAP NetWeaver Fecha Centro de formación Instructores Página Web de formación Manual del instructor Versión del curso: 63 Duración del curso: 10 día(s) Número de material: 50089085 Responsable: Christian Braun (D035329) An SAP Compass course - use it to learn, reference it for work

Upload: zhihao-qu

Post on 09-Feb-2017

505 views

Category:

Technology


9 download

TRANSCRIPT

Page 1: 119167629 taw10-02-es

TAW10_2Fundamentos de Workbench

ABAPSAP NetWeaver

Fecha

Centro de formación

Instructores

Página Web deformación

Manual del instructorVersión del curso: 63Duración del curso: 10 día(s)Número de material: 50089085Responsable: Christian Braun (D035329)

An SAP Compass course - use it to learn, reference it for work

Page 2: 119167629 taw10-02-es

Copyright

Copyright © 2009 SAP AG. Reservados todos los derechos.

Esta publicación no puede ser reproducida o trasmitida, total o parcialmente, de ninguna forma nipara ningún propósito sin el permiso expreso de SAP AG. La información aquí contenida puede sermodificada sin previo aviso.

Algunos productos de software distribuidos por SAP AG y sus distribuidores contienen componentesde software que pertenecen a otros proveedores de software.

Marcas registradas

• Microsoft®, WINDOWS®, NT®, EXCEL®, Word®, PowerPoint® y SQL Server® sonmarcas registradas certificadas de Microsoft Corporation.

• IBM®, DB2®, OS/2®, DB2/6000®, Parallel Sysplex®, MVS/ESA®, RS/6000®, AIX®,S/390®, AS/400®, OS/390® y OS/400® son marcas registradas certificadas de IBMCorporation.

• ORACLE® es una marca registrada certificada de ORACLE Corporation.• INFORMIX®-OnLine para SAP y INFORMIX® Dynamic ServerTM son marcas registradas

certificadas de Informix Software Incorporated.• UNIX®, X/Open®, OSF/1® y Motif® son marcas registradas certificadas de Open Group.• Citrix®, Citrix logo, ICA®, Program Neighborhood®, MetaFrame®, WinFrame®,

VideoFrame®, MultiWin® y otros nombres de productos Citrix referidos aquí son marcasregistradas de Citrix Systems, Inc.

• HTML, DHTML, XML, XHTML son marcas registradas o marcas registradas certificadas deW3C®, World Wide Web Consortium, Massachusetts Institute of Technology.

• JAVA® es una marca registrada certificada de Sun Microsystems, Inc.• JAVASCRIPT® es una marca registrada certificada de Sun Microsystems, Inc., utilizada bajo

licencia para tecnología desarrollada e implementada por Netscape.• SAP, SAP Logo, R/2, RIVA, R/3, SAP ArchiveLink, SAP Business Workflow, WebFlow, SAP

EarlyWatch, BAPI, SAPPHIRE, Management Cockpit, mySAP.com Logo y mySAP.com sonmarcas registradas o marcas registradas certificadas de SAP AG en Alemania y en otros paísesen todo el mundo. Todos los otros productos mencionados son marcas registradas o marcasregistradas certificadas de sus respectivas empresas.

Declaración de renuncia

SAP DISTRIBUYE ESTE MATERIAL SOBRE UNA BASE "AS IS" Y NO SE HACERESPONSABLE EXPRESAMENTE, DE FORMA DIRECTA NI INDIRECTA, INCLUYENDOSIN RESTRICCIÓN LAS GARANTÍAS DE COMERCIABILIDAD E IDONEIDAD PARA UNOBJETIVO PARTICULAR, EN LO QUE CONCIERNE A ESTE MATERIAL Y AL SERVICIO,LA INFORMACIÓN, EL TEXTO, GRÁFICOS, LINKS O CUALQUIER OTRO MATERIAL YPRODUCTOS AQUÍ CONTENIDOS. EN NINGÚN CASO SAP SE RESPONSABILIZARÁ DECUALQUIER DAÑO DIRECTO, INDIRECTO, ESPECIAL, SECUNDARIO, CONSIGUIENTE,O PUNITIVO DE CUALQUIER CLASE, INCLUIDOS SIN LIMITACIÓN INGRESOS OGANANCIAS PÉRDIDAS, QUE PUEDAN SER RESULTADO DEL EMPLEO DE ESTOSMATERIALES O COMPONENTES DE SOFTWARE INCLUIDOS.

g20091222113158

Page 3: 119167629 taw10-02-es

Sobre este manualLa función de este manual es complementar la presentación del instructor deeste curso y servir como fuente de referencia. Este manual no está pensado parael estudio autodidacta.

Convenciones tipográficasEn esta guía se utilizan las siguientes convenciones tipográficas.

Estilo de tipo Descripción

Texto de ejemplo Palabras o carácteres que aparecen en la pantalla.Aquí se incluyen nombres de campos, títulos depantallas, pulsadores así como nombres de menús,vías de acceso y opciones.

También se usan como referencia a otra documentacióntanto interna como externa.

Texto de ejemplo Palabras o frases acentuadas en textos principales,títulos de gráficos y tablas

TEXTO DE EJEMPLO Nombres de elementos en el sistema. Aquí se incluyennombres de informes, nombres de programas, códigosde transacciones, nombres de tablas y algunas palabrasclaves de un lenguaje de programación cuando seencuentran en el texto principal, por ejemplo SELECTe INCLUDE.

Texto de ejemplo Salida en pantalla. Aquí se incluyen nombres dearchivos y directorios y sus vías de acceso, mensajes,nombres de variables y parámetros y párrafos deltexto fuente de un programa.

Texto deejemplo

Entrada exacta de usuario. Son palabras y carácteresque se introducen en en el sistema exactamente comoaparecen en la documentación.

<Texto deejemplo>

Entrada variable de usuario. Las entradas entrecorchetes indican que se deben sustituir estas palabrasy carácteres con entradas apropiadas.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. iii

Page 4: 119167629 taw10-02-es

Sobre este manual TAW10_2

Iconos en el texto principalEn este manual se utilizan los siguientes iconos.

Icono Significado

Para más información, sugerencias o detalles

Nota o más explicaciones sobre el punto anterior

Excepción o precaución

Procedimientos

Indica que el objeto está visualizado en la presentacióndel instructor.

iv © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 5: 119167629 taw10-02-es

ContenidoResumen del curso ...................................................... vii

Metas del curso ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viiObjetivos del curso... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix

Capítulo 1: Introducción a la programación de imágenes ....... 1Aspectos generales... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3Principios de la programación de imágenes ... . . . . . . . . . . . . . . . . . . . 13Modificación y secuencia de imágenes ... . . . . . . . . . . . . . . . . . . . . . . . . . 29

Capítulo 2: La interfase del programa .............................. 55Interfaz de usuario .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Status GUI .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Capítulo 3: Elementos de pantalla para salida ................... 85Campos de texto, iconos de status y marcos de grupo... . . . . . . . 86

Capítulo 4: Elementos de pantalla para entrada/salida ........ 99Resumen de campos de entrada/salida ... . . . . . . . . . . . . . . . . . . . . . .101Casillas de selección, grupos de botones de selección y

pulsadores ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

Capítulo 5: Elementos de pantalla: Subscreens y controles defichas ...................................................................... 153

Subscreens ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155Controles de ficha... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178

Capítulo 6: Introducción al Dictionary ............................. 203Resumen de las funciones de Dictionary ABAP ... . . . . . . . . . . . . . .204

Capítulo 7: Objetos de datos en el Dictionary ABAP........... 215Tipos de datos básicos... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217Tablas en el Dictionary ABAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252Tablas SAP especiales .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280

Capítulo 8: Rendimiento al acceder a tablas ..................... 289Rendimiento durante el acceso a una tabla .. . . . . . . . . . . . . . . . . . . .290

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. v

Page 6: 119167629 taw10-02-es

Contenido TAW10_2

Capítulo 9: Verificaciones de entrada.............................. 321Consistencia gracias a las verificaciones de entrada ... . . . . . . . .322

Capítulo 10: Dependencias de objeto.............................. 355Dependencias de objeto .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356

Capítulo 11: Cambio de tablas ....................................... 371Modificaciones de tablas... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372

Capítulo 12: Vistas y diálogos de actualización ................. 403Vistas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404Vistas de actualización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424

Capítulo 13: Ayuda para búsqueda................................. 445Ayudas para búsqueda... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446

Índice....................................................................... 481

vi © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 7: 119167629 taw10-02-es

Resumen del cursoEste curso de formación de dos semanas de duración brinda una introducciónintegral y detallada de los conceptos básicos de programación de ABAP oprogramación orientada al objeto de ABAP y las herramientas de WorkbenchABAP. Este curso también lo preparará para obtener la certificación comoAsociado de desarrollo certificado de SAP - ABAP - SAP Netweaver 7.0.

Grupo destinoEste curso está dirigido a los siguientes grupos destino:

• Consultores de desarrollo y desarrolladores responsables de adaptar ydesarrollar ABAP/programas objetos ABAP.

Prerrequisitos para el cursoConocimientos necesarios

• Conocimiento básico y sólido de EDP• Buena experiencia de programación en un lenguaje de programación

diferente

Detalles de la duración del cursoCapítulo 1: Introducción a la programación de imágenesAspectos generales 30 MinutosPrincipios de la programación de imágenes 50 MinutosModificación y secuencia de imágenes 45 MinutosEjercicio 1: Creación de pantallas 45 Minutos

Capítulo 2: La interfase del programaInterfaz de usuario 25 MinutosStatus GUI 35 MinutosEjercicio 2: Creación de status GUI 40 Minutos

Capítulo 3: Elementos de pantalla para salidaCampos de texto, iconos de status y marcos degrupo 20 Minutos

Capítulo 4: Elementos de pantalla para entrada/salidaResumen de campos de entrada/salida 60 MinutosEjercicio 3: Verificaciones de entrada y ayuda paraentradas 35 Minutos

Casillas de selección, grupos de botones deselección y pulsadores 40 Minutos

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. vii

Page 8: 119167629 taw10-02-es

Resumen del curso TAW10_2

Ejercicio 4: Botones de selección y verificacionesde entrada 75 Minutos

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichasSubscreens 45 MinutosEjercicio 5: Subscreens 50 MinutosControles de ficha 30 MinutosEjercicio 6: Creación de controles de fichas 45 Minutos

Capítulo 6: Introducción al DictionaryResumen de las funciones de Dictionary ABAP 60 Minutos

Capítulo 7: Objetos de datos en el Dictionary ABAPTipos de datos básicos 120 MinutosEjercicio 7: Tipos de datos básicos 30 MinutosEjercicio 8: Estructuras simples y anidadas 30 MinutosEjercicio 9: Tipos de tabla (tablas internas/ITAB) 30 MinutosEjercicio 10: Estructuras profundas 30 MinutosTablas en el Dictionary ABAP 60 MinutosEjercicio 11: Tablas en el Dictionary ABAP 60 MinutosTablas SAP especiales 30 Minutos

Capítulo 8: Rendimiento al acceder a tablasRendimiento durante el acceso a una tabla 120 MinutosEjercicio 12: Aspectos relacionados con elrendimiento durante el acceso a una tabla 30 Minutos

Capítulo 9: Verificaciones de entradaConsistencia gracias a las verificaciones de entrada 120 MinutosEjercicio 13: Consistencia gracias a lasverificaciones de entrada 30 Minutos

Capítulo 10: Dependencias de objetoDependencias de objeto 60 MinutosEjercicio 14: Dependencias respecto a objetos deDictionary ABAP 30 Minutos

Capítulo 11: Cambio de tablasModificaciones de tablas 100 MinutosEjercicio 15: Modificaciones de tablas de base dedatos 30 Minutos

Ejercicio 16: Utilidad de base de datos (SE14) parasolucionar problemas (opcional) 45 Minutos

Capítulo 12: Vistas y diálogos de actualizaciónVistas 120 MinutosEjercicio 17: Vistas 20 MinutosVistas de actualización 100 MinutosEjercicio 18: Vistas de actualización 60 Minutos

Capítulo 13: Ayuda para búsqueda

viii © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 9: 119167629 taw10-02-es

TAW10_2 Resumen del curso

Ayudas para búsqueda 120 MinutosEjercicio 19: Ayudas para búsqueda 60 Minutos

Metas del cursoEste curso le permitirá:

• Trabajar con las herramientas de Workbench ABAP• Escribir sus propios programas simples ABAP• Realizar accesos de lectura a la base de datos• Desarrollar componentes de reutilización simples (subrutinas, módulos de

funciones y métodos) y usarlos en programas• Programar procesamientos de imagen dinámicos• Programar diálogos de usuario con los distintos elementos de pantalla en

el sistema SAP• Describir la función del Dictionary ABAP en el sistema SAP• Definir objetos de base de datos y usarlos• Crear y administrar tipos de datos definidos por el usuario• Usar los servicios del Dictionary ABAP• Comprender cómo está vinculado el Dictionary ABAP a los entornos de

desarrollo y tiempo de ejecución

Objetivos del cursoAl finalizar este curso podrá:

• Describir la estructura de datos de los sistemas SAP• Usar las herramientas Workbench ABAP• Crear y llamar subrutinas, módulos de funciones y métodos• Escribir programas de diálogo de fácil manejo• Utilizar y procesar elementos de pantalla en el sistema SAP• Crear una interfase de usuario para un programa• Usar y describir el Dictionary ABAP y sus servicios• Modelar y leer datos usando SQL de la base de datos• Programar de manera sensible al rendimiento• Usar el Code Inspector

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. ix

Page 10: 119167629 taw10-02-es

Resumen del curso TAW10_2

x © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 11: 119167629 taw10-02-es

Capítulo 11 Introducción a la programación de

imágenes

This unit lays the foundation for the next topics of the course. The participantsshould understand the basic terms in screen programming. Basic techniques haveto be known by the participants in principle. They will be applied later on invarious exercises. Screen types and general screen attributes are discussed. Screensequencing as well as the introduction of screen levels using the CALL SCREENstatement are discussed. Moreover, the participants learn how to navigate betweenscreens using functions from the programming interface.

Resumen del capítuloEn esta unidad se describen los principios de la programación de imágenes.Aprenderá a crear imágenes y a añadir elementos de pantalla del DictionaryABAP. La unidad también presenta información detallada sobre cómo modificaratributos de forma dinámica, inicializar la tabla del sistema SCREEN e insertarsecuencias de imágenes para transacciones complejas.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Describir el modelo de implementación de transacción única• Organizar el código fuente de su programa con Includes• Crear y procesar imágenes• Añadir elementos de pantalla de Dictionary ABAP• Explicar el procesamiento PBO y PAI• Realizar modificaciones dinámicas de imagen• Insertar secuencias de imágenes

Contenido del capítuloLección: Aspectos generales... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 1

Page 12: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Lección: Principios de la programación de imágenes ... . . . . . . . . . . . . . . . . . . . 13Demostración: Demonstration of SAPMBC410DIAD_A_SIM-PLE_TRANS .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

Lección: Modificación y secuencia de imágenes ... . . . . . . . . . . . . . . . . . . . . . . . . . 29Demostración: Demonstration of SAPMBC410DIAD_B_MOD-IFY_SCREEN .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Demostración: Demonstration of SAPMBC410DIAD_B_MOD-IFY_SCREEN .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Demostración: Demonstration of SAPBC410DIAD_C_DYN-PRO_PRE ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42Ejercicio 1: Creación de pantallas .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 13: 119167629 taw10-02-es

TAW10_2 Lección: Aspectos generales

Lección:2

Aspectos generalesDuración de la lección: 30 Minutos

Resumen de la lecciónEn la presente lección se familiarizará con el término "diálogo de usuario",descubrirá que el modelo de implementación SAP actual es la transacción deimagen única, verá las clases de programa que existen y aprenderá a organizar suprograma con Includes.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Describir el modelo de implementación de transacción única• Organizar el código fuente de su programa con Includes

Ejemplo empresarialDesea programar diálogos de usuario para el SAP GUI.

Gráfico 1: Diálogos de usuario

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 3

Page 14: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Se considera diálogo de usuario a cualquier forma de interacción entre elusuario y el programa. Por ejemplo:

• Registro de datos• Selección de una opción del menú• Hacer clic en un botón• Hacer clic o doble clic en una entrada de lista

Gráfico 2: Modelo de implementación SAP

El objetivo del modelo de implementación actual de SAP es sustituir secuenciaslargas y anidadas de imágenes por transacciones de imagen única.

La principal ventaja de esto es que mejora la utilidad del sistema SAP. Lastransacciones resultan mucho más fáciles de utilizar para los usuarios.

Las imágenes de entrada y de datos se combinan en una sola ventana. De tal modoque se ahorra al usuario una navegación innecesaria y se asegura un contextoempresarial correcto.

Las transacciones de imagen única proponen al usuario la sesión de programaque mejor se ajusta a sus autorizaciones, permiten que el usuario pueda accederdirectamente a los objetos que se vayan a tratar, y se limita el área de selecciónmediante un filtro, una estructura de árbol o, por ejemplo, el último objeto quese ha tratado.

Una vez se han grabado los datos en la base de datos, el usuario puede volver avisualizar el objeto tratado para verificar las modificaciones que le ha introducido.

4 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 15: 119167629 taw10-02-es

TAW10_2 Lección: Aspectos generales

Gráfico 3: Ejemplo de formato de pantalla: Transacción FB60

La transacción FB60 se ha rediseñado conforme al nuevo modelo deimplementación.

La pantalla se divide en cuatro partes, cada una de ellas con funciones distintas:

• Selección de objetos: Puede seleccionar el objeto que desea tratar en unaestructura de árbol.

• ID de objeto: Puede tratar los datos y atributos clave de todo el objeto.• Detalles del objeto: Puede seleccionar objetos parciales para tratarlos.• Funciones de aplicación: Como resultado de las nuevas transacciones de

imagen única, en la barra de pulsadores sólo hay unas cuantas funcionesdisponibles. Entre ellas: opciones de visualización, como mostrar y ocultarámbitos de imagen, crear objetos nuevos a partir de modelos, o conmutarentre distintas sesiones de un programa.

The easiest demo would be transaction SE80.

A lo largo de esta lección, creará un programa acorde con el paradigma de latransacción de imagen única. Más concretamente, utilizará elementos comobotones de selección y fichas.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 5

Page 16: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 4: Ejercicio: Programación de pantallas

You might want to execute the final solution, module poolSAPMBC410ACONS_CONTEXTMENU.

ABAP dispone de diversas clases de programa. Dos de ellas representanprogramas completos: Las clases 1 y M se pueden ejecutar. El resto de clasesestán incompletas, es decir, se pueden utilizar dentro de otros programas, pero nopor sí solas.

6 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 17: 119167629 taw10-02-es

TAW10_2 Lección: Aspectos generales

Gráfico 5: Clases de programas ABAP

Programa ejecutable (tipo 1)

Los programas ejecutables se pueden ejecutar mediante Sistema → Servicios →Reportingo directamente desde el editor ABAP. Siguiendo un orden predefinido, seimplementan un conjunto de bloques de procesamiento. Puede utilizar una imagende selección estándar. Por lo general, los programas de tipo 1 crean y visualizanlistas. No obstante, en los informes modernos se aplica el SAP List Viewer (ALV).

Modulpool (tipo M)

Para que un programa M sea ejecutable, debe crear al menos un código detransacción en el que se especifique una imagen inicial. Puede controlar lasecuencia de imágenes posterior tanto de forma estática en los atributos de imagencomo dinámica en el código de programa.

Los siguientes tipos de programas no se pueden ejecutar directamente. Sirvende contenedor para las unidades de modularización que se llaman desde otrosprogramas. Cuando cargue una de estas unidades de modularización, el sistemacarga todo su programa principal en la sesión interna del programa de llamada.

Grupo de funciones (tipo F)

Un grupo de funciones puede contener módulos de funciones, declaraciones dedatos locales e imágenes.

Programa de Include (tipo 1)

Un programa de Include puede contener cualquier sentencia ABAP.

Pool de interfases (tipo J)

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 7

Page 18: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Un pool de interfases puede contener interfases globales y declaraciones de datoslocales.

Pool de clases (tipo K)

Un pool de clases puede contener clases globales y declaraciones de datos locales.

Gráfico 6: Organización de programas

En el más sencillo de los casos, el programa consiste en una fuente única quecontiene todos los bloques de procesamiento necesarios. No obstante, para queel código de programa sea más fácil de comprender y poder reutilizar algunaspartes del mismo en otros programas, por ejemplo, para declaraciones de datos,debería utilizar programas de Include.

Cuando cree un programa desde el Object Navigator, el sistema propone quesea Con Include TOP. Seleccionando esta opción, podrá crear programas conuna estructura clara.

Cuando cree bloques de procesamiento, el sistema solicita automáticamente elprograma de Include en el que debe insertarse el código fuente correspondiente.

Si se especifica un programa de Include que todavía no existe, el sistema lo crea einserta una declaración INCLUDE correspondiente en el programa principal.

8 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 19: 119167629 taw10-02-es

TAW10_2 Lección: Aspectos generales

Gráfico 7: Tablas del modelo de datos del vuelo (BC410)

Los campos de tabla más importantes que se utilizan en este curso y su significado:

SPFLI

CARRID Cia.aérea

CONNID Código de conexión

AIRPFROM, AIRPTO Aeropuerto de salida, aeropuerto dellegada

CITYTO, CITYFROM Ciudad de llegada, ciudad de salida

SFLIGHT

CARRID, CONNID Véase SPFLI.

FLDATE Fecha de vuelo

SEATSMAX, SEATSOCC Capacidad máxima, asientos ocupados(clase turista)

PRICE Precio del vuelo básico

CURRENCY Moneda

SBOOK

CARRID, CONNID, FLDATE Véase SFLIGHT.

BOOKID Número de reserva

CUSTOMID Número de cliente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 9

Page 20: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

SAPLANE

PLANETYPE Tipo de avión

SEATSMAX Capacidad máxima

10 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 21: 119167629 taw10-02-es

TAW10_2 Lección: Aspectos generales

Discusión con moderadorDiscuss open questions.

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

What other programming models are there in SAP software?

What other GUIs are there in SAP software?

What are the advantages of organizing your program with includes?

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 11

Page 22: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Resumen de la lección

Ahora podrá:• Describir el modelo de implementación de transacción única• Organizar el código fuente de su programa con Includes

12 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 23: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Lección:11

Principios de la programación de imágenesDuración de la lección: 50 Minutos

Resumen de la lecciónEsta lección le ayudará a comprender los principios de la programación deimágenes. Asimismo, aprenderá a crear imágenes y a añadir elementos de pantalladel Dictionary ABAP. Por último, conocerá los procesamientos PBO y PAI.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear y procesar imágenes• Añadir elementos de pantalla de Dictionary ABAP• Explicar el procesamiento PBO y PAI

Explain the principles of screen programming. Also, discuss how to create screensusing examples. You also need to describe how to add ABAP Dictionary screenelements. Finally, explain how PBO and PAI processing are performed in screenprogramming.

Strengths of Screens

Emphasize the advantages of the screen programming. Compare with lists andselection screens.

Screens in Dialog Programs

Use this slide to give an overview. Do not go too deep into details. Comparewith list programming.

Attributes of Screen Elements (Key)

Describe the legend.

Screen Programs: Screen Processing

Emphasize the MODIFY SCREEN statement. Recall the advantages of usingthe field SCREEN-ACTIVE.

Screens

Define the term.

Defining and Managing Screens

Denote all the screen elements to ensure that participants can refer to it for laterconsiderations.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 13

Page 24: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Screen: Attributes

Concentrate on important attributes. This slide is mainly for reference.

Creating Screens

The four parts of a screen leads to the corresponding steps for creating a screen.

Creating Screens: Screen Attributes

Enforce the use of the Object Navigator for creating program objects.

Creating Screens: Layout

Refer to the demo.

Creating Screens: Element List

Refer to the demo.

Creating Screens: Flow Logic

Refer to the demo

Data Visibility

Mention the two software processors DYNP and APAP. Explain that they usedifferent sets of fields and where they come from. Note that the main principlefor data exchange is that the fields possess identical names. Underline and givereasons for using an extra screen structure. Use the TABLES statement only forthe data exchange structure.

Data Exchange: Screens - ABAP Program

Explain the moments of data transfer. Underline and give reasons for using anextra ABAP working area. This will ensure that unchecked data can never bewritten to the database.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando las pantallas de la aplicación. Supongamos que forma parte dela dirección de dicha agencia. Debe realizar las tareas siguientes.

14 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 25: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Presentación de pantallas

Gráfico 8: Pantallas

Las pantallas son objetos de libre definición que se pueden utilizar para visualizaro introducir información a través de unos campos de entrada y de salida, listas, etc.

Las pantallas son una forma de diálogo entre el usuario y el programa ABAP.

Gráfico 9: Puntos fuertes de las pantallas

Las pantallas permiten introducir y visualizar datos.

Las pantallas se pueden utilizar junto con el Dictionary ABAP para verificar laconsistencia de los datos que ha indicado el usuario.

Las pantallas permiten crear diálogos de fácil manejo con pulsadores, controles deficha, controles de tabla y otros elementos gráficos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 15

Page 26: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 10: pantallas en programas de diálogo

Centrémonos en un programa de diálogo sencillo compuesto por una imagen deselección como imagen inicial y una imagen para visualizar la información de unregistro de datos seleccionado.

Cuando se inicia el programa, el sistema carga su contexto de programa y preparaespacio de memoria para los objetos de datos del mismo. Se muestra la imagende selección.

El usuario introduce datos en la imagen de selección y elige Ejecutar.

En un bloque de proceso, el programa lee los datos de la base de datos. Para ello,transfiere información de los datos que ha solicitado el usuario a la base de datos.La base de datos cumplimenta una estructura con el registro de datos indicado.

Así, la lógica de proceso llama una pantalla. De este modo se desencadena unbloque de proceso que pertenece a la pantalla y que se denomina Proceso antes desalida (PBO). Una vez se procesa el PBO, los datos se transfieren a la estructuraque sirve de interface a la pantalla. A continuación, se transfiere a la pantalla yse visualiza.

Cualquier acción del usuario en la pantalla, como la entrada de datos, la elecciónde una opción de menú o la selección de un pulsador, devuelve el control al sistemade tiempo de ejecución. A continuación, los campos de dynpro se transportan ala estructura que actúa de interface entre la pantalla y el programa. El sistemade tiempo de ejecución desencadena otro bloque de proceso que pertenece a lapantalla y que se denomina Proceso después de la entrada (PAI) y que siempre seejecuta tras una interacción con el usuario.

16 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 27: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Gráfico 11: Atributos de elementos de pantalla (clave)

Los elementos de pantalla como campo de texto, campo de entrada/salida, iconode status, marco de grupo, botón de selección, casilla de selección, y pulsadordisponen de atributos generales, de Dictionary, de programa y de visualización.

Los elementos subscreen, control de fichas y control de tablas disponen deatributos generales y especiales relacionados con sus correspondientes clases.

Los atributos de un elemento se pueden dividir en:

• Atributos de definición estática que no se pueden modificar de formadinámica

• Atributos de definición estática que se pueden modificar de formadinámica

• Atributos que sólo se pueden fijar de forma dinámica

Si desea disponer de documentación exhaustiva relativa a los atributos deelementos de pantalla, vea la documentación online (Biblioteca SAP →Componentes SAP NetWeaver → Workbench ABAP → Herramientas deWorkbench ABAP → Screen Painter → Definición de los atributos de elemento).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 17

Page 28: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 12: Pantallas: Atributos

Cada pantalla tiene un conjunto de atributos de administración que especifican eltipo, el tamaño y la pantalla posterior. También cuenta con parametrizaciones queafectan a otras propiedades de la pantalla y sus componentes.

Los atributos de administración Programa y Número de dynpro identifican lapantalla por su número y por el programa al que pertenece.

Los números de pantalla mayores que 9.000 se reservan para los clientes delsistema SAP. Los números de pantalla del 1.000 al 1.010 se reservan para laspantallas de actualización de las tablas de Dictionary ABAP y las pantallas deselección estándar de los programas ejecutables.

El tipo de pantalla identifica la finalidad de la misma. Otros atributos especiales depantalla y sus componentes dependen del tipo de pantalla.

El atributo Dynpro siguiente permite especificar la pantalla que se debería procesartras la actual en una secuencia definida.

Si desea disponer de una lista completa de los atributos de pantalla, consulte ladocumentación online (Biblioteca SAP → Componentes SAP NetWeaver →Workbench ABAP → Herramientas de Workbench ABAP → Screen Painter →Creación de pantallas).

18 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 29: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Gráfico 13: Definición y gestión de pantallas

Una pantalla se compone de una imagen y de su lógica de proceso. La lógicade proceso es un programa que controla cómo se procesa la pantalla. Si deseainformación sobre la programación de la lógica de proceso de pantallas, consultela Guía del usuario de ABAP.

Las pantallas están formadas por cuatro componentes: la máscara de imagen enpantalla, los atributos de imagen, la lista de elementos y la lógica de proceso. Lalógica de proceso contiene el código de la misma y no las sentencias ABAP.

Las pantallas son contenedores de otros elementos de pantalla

Demostración: Demonstration ofSAPMBC410DIAD_A_SIMPLE_TRANS

ObjetivoTo demonstrate SAPMBC410DIAD_A_SIMPLE_TRANS

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Show the field checks and the input help.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 19

Page 30: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

2. Review the main steps with respect to the last slide.

Creación de pantallas

Gráfico 14: Creación de pantallas

Cuando se crea una pantalla, se debe:

• Fijar los atributos generales de dynpro en la imagen de atributos.• Diseñar el formato de imagen en el editor de layout.• Fijar los atributos de campo en la lista de campos.• Escribir la lógica de proceso en el editor de la lógica de proceso.

20 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 31: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Gráfico 15: Creación de pantallas: Atributos de imagen

Para crear una pantalla desde la lista de objetos en el Object Navigator, cree unobjeto de desarrollo nuevo con la clase Pantalla. Sitúe el cursor sobre pantallas yhaga clic con el botón derecho.

El Object Navigator abre automáticamente el Screen Painter.

Cuando se crea una pantalla, en primer lugar se deben indicar sus atributos:Indique un número de pantalla, un texto breve y un tipo de pantalla. Por logeneral, se aplicará el tipo de pantallaNormal. Se puede especificar el número dela pantalla siguiente en el campo Dynpro siguiente.

Si se indica 0 o ningún valor para el dynpro siguiente, el sistema reanuda elprocesamiento en el mismo punto en que se llama la pantalla una vez terminade procesarla.

También se puede crear una pantalla insertando una sentencia CALL SCREEN enel editor ABAP y haciendo luego doble clic en el número de pantalla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 21

Page 32: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 16: Creación de pantallas: Layout

Los elementos de pantalla se definen adoptando las descripciones de campopertinentes del Dictionary ABAP. Sin embargo, también puede utilizardescripciones de campo que el usuario haya definido en su programa. Para ello,primero deberá generar el programa.

Se pueden usar los textos y modelos de palabras clave tanto juntos como porseparado.

El editor de layout gráfico constituye una forma sencilla de definir diversoselementos de pantalla, como pueden ser los campos de entrada/salida, los textosde palabra clave y las casillas. Basta con marcar el elemento deseado y situarlosobre la pantalla con el ratón.

Para eliminar un elemento de pantalla, selecciónelo y marque Borrar.

Puede mover elementos de la pantalla arrastrándolos y soltándolos con el ratón.

Nota: El editor de layout gráfico se encuentra en UNIX y en WindowsNT, Windows 95 o versiones superiores de Windows.

Si emplea un sistema operativo distinto, deberá utilizar el Screen Painteralfanumérico.

22 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 33: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Gráfico 17: Creación de pantallas: La lista de elementos

Para que pueda fijar los atributos de todos los elementos de pantalla, el ScreenPainter contiene una lista de elementos con seis vistas. También puede visualizartodos los atributos de un único elemento de cualquiera de las listas, Atributos.Asimismo, puede actualizar los atributos de un elemento desde el editor de layoutmediante la función Atributos.

En el Screen Painter, se trabaja con clases de datos externos. Éstos correspondena las clases de datos que constan en el Dictionary ABAP. En el caso de camposque haya elegido el usuario y que estén definidos en el Dictionary ABAP, elsistema muestra la clase de datos externos en la columna Formato. En el caso deelementos o modelos que no tengan una referencia Dictionary ABAP, el propiousuario deberá indicar la clase de datos externos.

Al fin de encontrar la clase de datos externos equivalente a una clase de datosinternos, clase de datos ABAP, consulte la documentación de descriptor de lasentencia ABAP SELECT: Reglas de asignación para columnas individuales.Por ejemplo:

Clase de datos del Dictionary ABAP Clase de datos ABAP

CHAR C

NUMC N

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 23

Page 34: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 18: Creación de pantallas: Lógica de proceso

Las pantallas poseen su propio conjunto de descriptores que se emplean en loseventos PBO y PAI de la lógica de proceso. Consulte la documentación online.Desde el Screen Painter, inicie la ayuda (Ctrl.-F8), y luego marque Resumende descriptores.

En la lógica de proceso, escriba las llamadas de MÓDULO. Los módulos soncomponentes del mismo programa ABAP. Contienen las sentencias ABAP que elusuario quiere ejecutar.

Se puede crear un módulo haciendo doble clic sobre el nombre del mismo en eleditor de la lógica de proceso.

Para crear un módulo desde la lista de objetos del Object Navigator, marque elmódulo de desarrollo Módulo PBO o Módulo PAI.

Puede llamar el mismo módulo desde más de una pantalla. Si el procesamientodepende del número de pantalla, puede recuperar el número de la pantalla actualen el campo SY-DYNNR.

Fíjese en que los módulos que se llaman en el bloque de procesamiento PBO sedeben definir con la sentencia MODULE... SALIDA; los módulos que se creancon la sentencia MODULE... ENTRADA sólo se pueden llamar en el evento PAI.

24 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 35: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Gráfico 19: Visibilidad de los datos

Existen dos procesadores de software distintos que participan en el procesamientode pantallas del programa. El procesador ABAP controla la ejecución delprograma dentro de un módulo. El procesador DYNP controla la lógica de procesoy prepara los datos que se visualizarán en la pantalla.

Durante este proceso, se muestran dos conjuntos de datos. El usuario trabaja conlos campos globales de su programa dentro del módulo. Los campos globalesse crean en el Include TOP con sentencias declarativas, por ejemplo, TABLESo DATA.

Los campos que el sistema reconoce en la lista de elementos se utilizan pararecuperar datos y visualizarlos en la pantalla, y también para transportar los datosque ha modificado el usuario. Esto ocurre de forma automática, cuando se recibencampos del Dictionary ABAP o del programa del editor de layout.

Es preciso copiar los datos porque existen distintos conjuntos de campos dedatos. Un programa del sistema se encarga de ejecutar el proceso de copiado. Ainstancias definidas durante el proceso, se comparan los campos con designacionesidénticas en DYNP y ABAP.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 25

Page 36: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 20: Intercambio de datos: pantallas: Programas ABAP

Para que una pantalla y su programa ABAP se puedan comunicar, los campos dela pantalla y sus equivalentes en el programa deben tener nombres idénticos.

Después de que el sistema haya procesado todos los módulos del bloque deprocesamiento PBO, el sistema copia el contenido de los campos del área detrabajo ABAP en sus campos equivalentes del área de trabajo de imagen.

Antes de que el sistema procese el primer módulo del bloque de procesamientoPAI, el sistema copia el contenido de los campos del área de trabajo de pantalla ensus campos equivalentes del área de trabajo ABAP.

El usuario debería utilizar sus propias estructuras, como por ejemploSDYN_CONN, para transportar datos entre la pantalla y el programa ABAP. Deeste modo se garantiza que los datos que se transportan de la pantalla al programa,y viceversa, son exactamente los datos que desea el usuario.

26 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 37: 119167629 taw10-02-es

TAW10_2 Lección: Principios de la programación de imágenes

Discusión con moderador

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

Discuss the process of creating screens.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 27

Page 38: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Resumen de la lección

Ahora podrá:• Crear y procesar imágenes• Añadir elementos de pantalla de Dictionary ABAP• Explicar el procesamiento PBO y PAI

28 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 39: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Lección:24

Modificación y secuencia de imágenesDuración de la lección: 45 Minutos

Resumen de la lecciónEn esta unidad aprenderá a modificar atributos de forma dinámica. Aprenderá ainicializar la tabla de sistema SCREEN. Asimismo, aprenderá a insertar secuenciasde imagen para transacciones complejas cuando necesite utilizar imágenesmúltiples.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Realizar modificaciones dinámicas de imagen• Insertar secuencias de imágenes

Screen sequencing as well as the introduction of screen levels using the CALLSCREEN statement are discussed. Moreover, the participants learn how tonavigate between screens using functions from the programming interface.

Dynamically Modifiable Static Attributes

How is it possible to modify statically defined attributes? Explain thesystem-defined structure SCREEN.

Modifying Attributes Dynamically: Example

Ask which attribute and hence which SCREEN field has been changed.

The SCREEN System Table

Introduce the terminology system table SCREEN. Emphasize that this is nointernal table but there are some statements that looks like statements for internaltables. For instance, the READ TABLE statement does not work.

Initializing the System Table SCREEN

Point out that dynamical screen modifications are temporary, since the systemtable SCREEN will be copied at the very beginning of every PBO from thestatically defined attributes of the screen elements.

Determining the Next Screen

Underline the necessity of determining the next screen based on user inputs.

Static Screen Sequence

Show the attribute next screen within the demo.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 29

Page 40: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Setting the Next Screen Dynamically

Explain the technique. Emphasize that the changing of the attributes is temporary.

Inserting Screen Sequences

Distinguish inserting screen sequences from setting the next screen dynamically.Explain the screen stack.

Inserting a Sequence of Screens Dynamically

Explain the technique.

Window Coordinates

Explain the coordinates and the special cases, e.g. upper_row = 0.

Setting the Cursor Position Dynamically

Give examples for the OFFSET addition.

Exercise for creating a screen and using it in an executable program

The exercise is quite simple but the participants have to copy the template. Give ahint such that they do not forget to copy the corresponding include programs.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando las pantallas de la aplicación. Estas imágenes le deberíanpermitir modificar atributos de forma dinámica. En el caso de transaccionescomplejas para las que requiera el uso de imágenes múltiples, como lavisualización de reservas de vuelos y de datos de vuelo, necesitará saber cómo seinsertan secuencias de imágenes.

Modificaciones de imagen dinámicasLas modificaciones dinámicas de los atributos de elementos de pantalla sontemporales.

Cuando utilice esta técnica para modificar los atributos de un elemento de pantalla,puede sustituir secuencias largas de imágenes independientes, que son mucho máscostosas en términos de tiempo de programación y de ejecución. Por ejemplo, conesta técnica, puede modificar el atributo de un elemento de pantalla para decidir siun campo de entrada/salida está listo para la entrada.

30 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 41: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Gráfico 21: Modificación dinámica de atributos: Ejemplo

Gráfico 22: Atributos estáticos que admiten una modificación dinámica

Al inicio del PBO, el sistema de tiempo de ejecución lee los atributos de creaciónestática y que admiten una modificación dinámica de todos los elementos depantalla actual que se reflejan en una tabla del sistema con la clase de líneaSCREEN.

SCREEN-NAME es el identificador único de un elemento en una pantalla. Existeuna excepción a esta norma: un elemento de texto puede recibir el mismo nombreque el elemento de entrada al que describe.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 31

Page 42: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

SCREEN-REQUIRED puede tener tres valores: 0 significa que no se requiere, 1significa que se requiere y 2 (que se introdujo en el SAP Web Application Server6.10) significa recomendado.

Si desea una definición completa de la estructura SCREEN, consulte ladocumentación de Ayuda en LOOP AT SCREEN en el editor ABAP.

El gráfico muestra la asignación de los campos en la tabla de sistema SCREEN alos nombres de los atributos de creación estática de los elementos de pantalla.

Gráfico 23: La tabla de sistema SCREEN

La tabla de sistema con la clase de línea SCREEN se denomina tabla de sistemaSCREEN en la unidad siguiente.

Cuando se procesa una pantalla, la tabla de sistema SCREEN contiene una entradapara cada uno de los elementos que se han creado en el Screen Painter para esapantalla.

32 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 43: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Gráfico 24: Inicialización de la tabla de sistema SCREEN

La tabla de sistema SCREEN se inicializa al comienzo del evento PBO de laimagen actual. Para ello, un programa de sistema copia los atributos de definiciónestática de los elementos de pantalla individual en la tabla.

Luego el usuario puede modificar los atributos que admiten modificacionesdinámicas de los elementos en pantalla en un módulo de PBO con las sentenciassiguientes:

LOOP AT SCREEN.

...

MODIFY SCREEN.

ENDLOOP.

Para ello, se utiliza la estructura SCREEN, que crea el sistema automáticamente yque se cumplimenta con los valores de todas las líneas sucesivas de la tabla delsistema en el loop. Los atributos fijados tienen el valor "1" y los atributos queno están fijados tienen el valor "0". Para modificar la tabla del sistema, utiliceMODIFY SCREEN en el loop.

Para encontrar el elemento cuyos atributos desea modificar, puede emplearun LOOP en la tabla SCREEN y consultar uno de los campos siguientes:SCREEN-NAME o SCREEN-GROUP1 a SCREEN-GROUP4.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 33

Page 44: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 25: La modificación de un atributo de grupo

Se pueden modificar los atributos de diversos elementos de pantalla a la vez entiempo de ejecución, incluyéndolos en un grupo de modificación del ScreenPainter. Asigne todos los elementos que se modificarán en un único paso deprocesamiento a un grupo del Screen Painter. Para ello, indique un nombre degrupo para cada uno de los elementos relevantes en uno de los campos GROUP1a GROUP4.

Cada elemento se puede incluir en un máximo de cuatro grupos de modificación.El nombre de grupo puede ser una secuencia cualquiera de tres caracteres. Sepueden asignar elementos a un grupo de modificación tanto en la lista de elementoscomo en el editor de layout del Screen Painter.

Gráfico 26: Modificación dinámica de atributos: Programa

34 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 45: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Las modificaciones de imagen se tienen que programar en un módulo que seprocesa durante el bloque de proceso PROCESO ANTES DE SALIDA.

Con la tabla SCREEN se utiliza un loop para modificar los atributos de unelemento o de un grupo de elementos. LOOP AT SCREEN WHERE . . . y READTABLE SCREEN no se soportan.

Para activar y desactivar atributos, asigne el valor 1 (activo) o 0 (inactivo), yguarde los cambios con la sentencia MODIFY SCREEN.

Fíjese en que los elementos que ha definido de forma estática como invisiblesen el Screen Painter no se pueden volver a activar con SCREEN-ACTIVE = 1.Utilice la sentencia SCREEN-INVISIBLE = 0. Sin embargo, los elementosque se han definido estáticamente como visibles en el Screen Painter se puedenhacer invisibles de forma dinámica con SCREEN-ACTIVE = 0. Esta sentenciatiene la misma influencia que las tres sentencias SCREEN-INVISIBLE = 1,SCREEN-INPUT = 0, SCREEN-OUTPUT = 0.

Demostración: Demonstration ofSAPMBC410DIAD_B_MODIFY_SCREEN

ObjetivoTo demonstrate SAPMBC410DIAD_B_MODIFY_SCREEN

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Show the function. Which property has changed? Give reasons for using

SCREEN-ACTIVE instead of SCREEN-INVISIBLE. Remark that obviouslythe activity of groups of fields has been changed.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 35

Page 46: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Secuencia de imágenes

Gráfico 27: Determinación del Dynpro siguiente

En el caso de las transacciones complejas, puede ser necesario emplear muchasimágenes. La imagen inicial se determina cuando se crea el código de transacción.Las pantallas determinan el dynpro siguiente en función de las entradas del usuario.

El dynpro siguiente se introduce de forma estática en los atributos de imagen. Enel tiempo de ejecución, se puede sustituir de forma temporal el dynpro siguienteestático con la sentencia SET SCREEN.

Gráfico 28: Secuencias de imágenes estáticas

36 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 47: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Se puede definir una secuencia estática de imágenes indicando un valor en elcampo Dynpro siguiente de los atributos de imagen.

Si se indica 0 o ningún valor para el dynpro siguiente, el sistema reanuda elprocesamiento en el mismo punto en que se inicia la pantalla una vez terminade procesarla.

Gráfico 29: Configuración dinámica de Dynpro siguiente

La sentencia SET SCREEN sustituye temporalmente el atributo de Dynprosiguiente.

La pantalla debe pertenecer al mismo programa.

El dynpro siguiente se procesa o bien cuando termina el procesamiento deimágenes en curso o bien cuando se cancela mediante la sentencia LEAVESCREEN.

Para especificar el dynpro siguiente y abandonar la imagen actual en un mismopaso, utilice la sentencia LEAVE TO SCREEN.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 37

Page 48: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 30: Inserción de secuencias de imágenes

Se puede insertar una secuencia de imágenes. Al hacerlo, se añade una nuevacapa a una pila.

Una secuencia de imágenes se inserta con la sentencia CALL SCREEN.

Nota: Los niveles creados así se deben eliminar luego. Puede hacerlo,configurando el dynpro siguiente de forma estática o dinámica en el valorinicial (0) al final de la secuencia de imágenes insertada.

Gráfico 31: Inserción dinámica de una secuencia de imágenes

38 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 49: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Para interrumpir el procesamiento de la imagen actual y pasar a una nueva imageno secuencia de imágenes, utilice la sentencia CALL SCREEN. La pantalla debepertenecer al mismo programa.

El sistema construye una pila dentro del programa.

Para volver a la sentencia que sigue a la sentencia CALL SCREEN, puede utilizaro bien SET SCREEN 0, LEAVE SCREEN o LEAVE TO SCREEN 0. Actoseguido, la pantalla que llamaba la otra pantalla se sigue procesando.

Si utiliza la sentencia anterior fuera del marco de una cadena de llamadas, elprograma se cancela y el control vuelve al punto en el que fue llamado. Unprograma también se puede cancelar con la sentencia ABAP LEAVE PROGRAM.

Gráfico 32: Llamada dinámica de una ventana de diálogo

En la sentencia CALL SCREEN, se pueden utilizar los suplementos STARTINGAT y ENDING AT para especificar la posición y el tamaño de la pantalla quese está llamando. La pantalla de la sentencia CALL SCREEN se debe definircomo una ventana de diálogo modal que satisfaga los estándares ergonómicosdel sistema SAP.

Si se omite la sentencia ENDING AT, el tamaño de la ventana de diálogo seespecifica con Tamaño utilizado en sus atributos de imagen. A continuación, elsistema determina el tamaño de la ventana de diálogo con el atributo de imagenTamaño ocupado.

Si emplea el suplemento ENDING AT, el sistema muestra aquella parte de laventana de diálogo que cabrá en el espacio de que se dispone. Si no hay suficienteespacio como para ver toda la ventana de diálogo, aparecerán una barras dedesplazamiento.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 39

Page 50: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Gráfico 33: Cooedenadas de ventana

La posición inicial de cualquier ventana del sistema SAP es la esquina superiorizquierda.

Los valores que se aplican para las variables left_col, upper_row, right_col ylower_row en la sentencia siguiente hacen referencia a la ventana SAP desdela que se visualiza la segunda pantalla con CALL SCREEN, pantalla 100 en elejemplo tal como se ve en el gráfico.

CALL SCREEN <nnnn>

STARTING AT left_col upper_row

ENDING AT right_col lower_row.

40 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 51: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Gráfico 34: Configuración dinámica de la posición del cursor

Cuando el sistema muestra una pantalla, sitúa el cursor en el primer campo deentrada automáticamente. Si, en cambio, desea que el cursor aparezca cada vez enun campo distinto, puede introducir el correspondiente nombre de elemento en elcampo Posición del cursor de los atributos de imagen.

También puede decir al sistema en el evento PBO que sitúe el cursor en un campoen concreto. De esta forma, la aplicación será más fácil de usar.

Se puede definir el campo en que debería aparecer el cursor en el programa con lasentencia ABAP:

SET CURSOR FIELD <object_name> OFFSET <position>.

<field_name> puede ser un nombre único entre comillas, o una variable quecontenga el nombre del objeto. Para situar el cursor en una posición determinadadentro de un campo, emplee el parámetro OFFSET especificando la posiciónrequerida en <position>.

A continuación, el sistema sitúa el cursor en la posición inicial correspondienteempezando a contar al comienzo del campo.

Demostración: Demonstration ofSAPMBC410DIAD_B_MODIFY_SCREEN

ObjetivoTo demonstrate SAPMBC410DIAD_B_MODIFY_SCREEN

Datos del sistemaSistema:

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 41

Page 52: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Show the coding.

Demostración: Demonstration ofSAPBC410DIAD_C_DYNPRO_PRE

ObjetivoTo demonstrate SAPBC410DIAD_C_DYNPRO_PRE

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Copy SAPBC410DIAD_C_DYNPRO_PRE. Show the parts of screen 100.

Create screen 200. Insert the input/output field. Create the set_status module.

2. Create and call screen 300. Do this within an extra module that will be calledto PAI of screen 200.

3. Implement the command field processing.

42 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 53: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

37 Ejercicio 1: Creación de pantallasDuración del ejercicio: 45 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear pantallas y utilizarlas en sus aplicaciones

Ejemplo empresarialCrear un programa con una pantalla que incluya campos de entrada y de salida, yleer datos de la base de datos. Crear una transacción adecuada para su programa.

Tarea:Crear un programa con una pantalla que incluya campos de entrada y de salida, yleer datos de la base de datos. Crear una transacción adecuada para su programa.

1. Crear un programa.

Cree el paquete ZBC410_## (donde ## es su número de grupo) y asígnelo ala solicitud de modificación que le ha proporcionado el instructor.

En este paquete, cree el programa SAPMZ##BC410_SOLUTION conun Include TOP (tipo: modulpool). Accepte el nombre que proponeel sistema para el Include TOP. Puede emplear la solución de modeloSAPMBC410ADIAS_DYNPRO como orientación.

2. Cree el objeto de programa siguiente:

Pantalla 0100 Descripción: Imagen de actualización

Tipo: Normal

Dynpro siguiente: 0100

3. En el paquete, cree una transacción (tipo: transacción de diálogo)Z##SOLUTION para su programa y verifíquela. Nota: Puesto que todavíano ha programado ninguna navegación para su programa, el intento deverificarlo generará temporalmente un bucle infinito, lo que significa quedeberá reiniciar el workbench.

4. Cree los campos siguientes en la pantalla. Utilice la opción de uso de camposde Dictionary ABAP.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 43

Page 54: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Pantalla 100

Campos E/S, camposde texto

SDYN_CONN

• CARRID• CONNID• FLDATE

Atributos de cada campo:

Entrada: on

Salida: on

Entradas obligatorias: on

Campos E/S, camposde texto

SDYN_CONN

• PRICE• CURRENCY• PLANETYPE• SEATSMAX• SEATSOCC• PAYMENTSUM

Atributos de cada campo:

Entrada: off

Salida: on

5. En el evento PAI para la pantalla 100, cree un módulo CHECK_SFLIGHT.Para ello utilice la navegación hacia adelante y poder crear, de este modo, unmódulo en un Include nuevo. Acepte el nombre que propone el sistema. Lealos campos de la tabla de base de datos SFLIGHT donde los datos son los dela compañía aérea, el número de vuelo y la fecha de vuelo.

Tiene dos opciones:

Puede leer directamente en la estructura SDYN_CONN. O puede utilizar laestructura interna de igualdad, wa_sflight, que se crea en el Include TOPpara leer de la base de datos. En este caso, necesita asegurarse de que loscampos de la estructura de ayuda se copian en los campos de dynpro. Paraello, necesita un módulo PBO nuevo. La mejor forma de hacerlo es utilizarla navegación hacia adelante.

Si no se pueden leer datos para las entradas de la pantalla, visualice elmensaje 007 de la clase de mensajes BC410 como mensaje de información einicialice los campos de dynpro. (Nota: los campos CARRID y CONNID severifican de forma automática. Sólo se verifica la combinación de CARRID,CONNID y FLDATE).

Continúa en la página siguiente

44 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 55: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

6. Aún no nos hemos centrado en la navegación normal (con un botón Atrás,etc.). No obstante, recurra a los conocimientos que ya tiene para crear unaforma sencilla de salir del programa (en la siguiente unidad adquirirá unmejor dominio de este aspecto).

Cree un campo de un carácter en la pantalla. Si el usuario indica X en estecampo, él o ella debería volver al punto en que se llamó el pograma.

Programe una consulta adecuada en un módulo PAI nuevo,USER_COMMAND_0100.

Consejo: La forma más sencilla de hacerlo es crear primero elcampo de un carácter en ABAP (Include TOP) y activar el programa.Luego podrá incluir fácilmente el campo en la pantalla en ScreenPainter con el botón de color naranja.

7. Opcional: Visualice la hora en una ventana de diálogo.

Si el usuario introduce T en el campo, aparecerá una ventana de diálogodonde se verá la hora y se reinicializará el campo de comandos.

Para ello, cree una pantalla nueva y llámela en un módulo PAIUSER_COMMAND_0100:

Pantalla 0150 Descripción: Hora

Tipo: Ventana de diálogo modal

Dynpro siguiente: 0

Visualice el campo UZEIT de la estructura Dictionary SYST en la pantalla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 45

Page 56: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Solución 1: Creación de pantallasTarea:Crear un programa con una pantalla que incluya campos de entrada y de salida, yleer datos de la base de datos. Crear una transacción adecuada para su programa.

1. Crear un programa.

Cree el paquete ZBC410_## (donde ## es su número de grupo) y asígnelo ala solicitud de modificación que le ha proporcionado el instructor.

En este paquete, cree el programa SAPMZ##BC410_SOLUTION conun Include TOP (tipo: modulpool). Accepte el nombre que proponeel sistema para el Include TOP. Puede emplear la solución de modeloSAPMBC410ADIAS_DYNPRO como orientación.

a) Consulte la solución modelo.

2. Cree el objeto de programa siguiente:

Pantalla 0100 Descripción: Imagen de actualización

Tipo: Normal

Dynpro siguiente: 0100

a) Consulte la solución modelo.

3. En el paquete, cree una transacción (tipo: transacción de diálogo)Z##SOLUTION para su programa y verifíquela. Nota: Puesto que todavíano ha programado ninguna navegación para su programa, el intento deverificarlo generará temporalmente un bucle infinito, lo que significa quedeberá reiniciar el workbench.

a) Consulte la solución modelo.

4. Cree los campos siguientes en la pantalla. Utilice la opción de uso de camposde Dictionary ABAP.

Continúa en la página siguiente

46 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 57: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Pantalla 100

Campos E/S, camposde texto

SDYN_CONN

• CARRID• CONNID• FLDATE

Atributos de cada campo:

Entrada: on

Salida: on

Entradas obligatorias: on

Campos E/S, camposde texto

SDYN_CONN

• PRICE• CURRENCY• PLANETYPE• SEATSMAX• SEATSOCC• PAYMENTSUM

Atributos de cada campo:

Entrada: off

Salida: on

a) Consulte la solución modelo.

5. En el evento PAI para la pantalla 100, cree un módulo CHECK_SFLIGHT.Para ello utilice la navegación hacia adelante y poder crear, de este modo, unmódulo en un Include nuevo. Acepte el nombre que propone el sistema. Lealos campos de la tabla de base de datos SFLIGHT donde los datos son los dela compañía aérea, el número de vuelo y la fecha de vuelo.

Tiene dos opciones:

Puede leer directamente en la estructura SDYN_CONN. O puede utilizar laestructura interna de igualdad, wa_sflight, que se crea en el Include TOPpara leer de la base de datos. En este caso, necesita asegurarse de que loscampos de la estructura de ayuda se copian en los campos de dynpro. Paraello, necesita un módulo PBO nuevo. La mejor forma de hacerlo es utilizarla navegación hacia adelante.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 47

Page 58: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

Si no se pueden leer datos para las entradas de la pantalla, visualice elmensaje 007 de la clase de mensajes BC410 como mensaje de información einicialice los campos de dynpro. (Nota: los campos CARRID y CONNID severifican de forma automática. Sólo se verifica la combinación de CARRID,CONNID y FLDATE).

a) Consulte la solución modelo.

6. Aún no nos hemos centrado en la navegación normal (con un botón Atrás,etc.). No obstante, recurra a los conocimientos que ya tiene para crear unaforma sencilla de salir del programa (en la siguiente unidad adquirirá unmejor dominio de este aspecto).

Cree un campo de un carácter en la pantalla. Si el usuario indica X en estecampo, él o ella debería volver al punto en que se llamó el pograma.

Programe una consulta adecuada en un módulo PAI nuevo,USER_COMMAND_0100.

Consejo: La forma más sencilla de hacerlo es crear primero elcampo de un carácter en ABAP (Include TOP) y activar el programa.Luego podrá incluir fácilmente el campo en la pantalla en ScreenPainter con el botón de color naranja.

a) Consulte la solución modelo.

7. Opcional: Visualice la hora en una ventana de diálogo.

Si el usuario introduce T en el campo, aparecerá una ventana de diálogodonde se verá la hora y se reinicializará el campo de comandos.

Para ello, cree una pantalla nueva y llámela en un módulo PAIUSER_COMMAND_0100:

Pantalla 0150 Descripción: Hora

Tipo: Ventana de diálogo modal

Dynpro siguiente: 0

Visualice el campo UZEIT de la estructura Dictionary SYST en la pantalla.

a) Consulte la solución modelo.

ResultadoSolución del modelo SAPMBC410ADIAS_DYNPRO

Programa principal

Continúa en la página siguiente

48 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 59: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

INCLUDE MBC410ADIAS_DYNPROTOP.

INCLUDE MBC410ADIAS_DYNPROI01.

INCLUDE MBC410ADIAS_DYNPROOI01.

Pantalla de lógica de proceso 100

PROCESS BEFORE OUTPUT.

* MODULE STATUS_0100.

*

MODULE move_to_dynp.

PROCESS AFTER INPUT.

MODULE user_command_0100.

MODULE check_sflight.

Include TOP

PROGRAM sapmbc410adias_dynpro.

TABLES: sdyn_conn.

DATA:

wa_sflight TYPE sflight,

io_command.

Include de módulo PBO

MODULE move_to_dynp OUTPUT.

MOVE-CORRESPONDING wa_sflight TO sdyn_conn.

ENDMODULE. " move_to_dynp OUTPUT

Include de módulo PAI

MODULE check_sflight INPUT.

SELECT SINGLE *

FROM sflight

* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read

INTO wa_sflight " Read into internal structure

WHERE carrid = sdyn_conn-carrid AND

connid = sdyn_conn-connid AND

fldate = sdyn_conn-fldate.

CHECK sy-subrc <> 0.

CLEAR wa_sflight.

MESSAGE i007(bc410).

ENDMODULE. " check_sflight INPUT

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 49

Page 60: 119167629 taw10-02-es

Capítulo 1: Introducción a la programación de imágenes TAW10_2

MODULE user_command_0100 INPUT.

CASE io_command.

WHEN 'X'.

LEAVE TO SCREEN 0.

WHEN 'T'.

CALL SCREEN 150

STARTING AT 10 10

ENDING AT 50 20.

CLEAR io_command.

ENDCASE.

ENDMODULE. " user_command_0100 INPUT

50 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 61: 119167629 taw10-02-es

TAW10_2 Lección: Modificación y secuencia de imágenes

Resumen de la lección

Ahora podrá:• Realizar modificaciones dinámicas de imagen• Insertar secuencias de imágenes

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 51

Page 62: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Describir el modelo de implementación de transacción única• Organizar el código fuente de su programa con Includes• Crear y procesar imágenes• Añadir elementos de pantalla de Dictionary ABAP• Explicar el procesamiento PBO y PAI• Realizar modificaciones dinámicas de imagen• Insertar secuencias de imágenes

52 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 63: 119167629 taw10-02-es

TAW10_2 Examine sus conocimientos

47Examine sus conocimientos

1. Cuando se crea una pantalla, se debe:

a. Diseñar el formato de imagen en el editor de layout.

b. Fijar los atributos generales de imagen en la imagen de atributos.

c. Escribir la lógica de proceso en el editor de la lógica de proceso.

d. Fijar los atributos de campo en la lista de campos.

Seleccione el orden correcto:Seleccione la(s) respuesta(s) correcta(s).□ A a, b, c, d□ B c, d, b, a□ C b, a, d, c□ D d, b, a, c

2. Tras procesar , se transfieren los datos a la pantalla y se visualizan.Rellene los espacios en blanco para completar las frases.

3. Para que pueda fijar los atributos de todos los elementos de pantalla, elScreen Painter contiene una lista de elementos con cuatro vistas.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

4. Para interrumpir el procesamiento de la imagen actual y pasar a una nuevaimagen o secuencia de imágenes, utilice la sentencia siguiente:Seleccione la(s) respuesta(s) correcta(s).□ A CALL SCREEN <nnnn>□ B SET SCREEN <nnnn>□ C LEAVE SCREEN□ D LEAVE TO SCREEN <nnnn>

5. Las modificaciones de imagen se tienen que programar enun módulo que se procesa durante el bloque de proceso

.Rellene los espacios en blanco para completar las frases.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 53

Page 64: 119167629 taw10-02-es

Examine sus conocimientos TAW10_2

48Respuestas

1. Cuando se crea una pantalla, se debe:a. Diseñar el formato de imagen en el editor de layout.b. Fijar los atributos generales de imagen en la imagen de atributos.c. Escribir la lógica de proceso en el editor de la lógica de proceso.d. Fijar los atributos de campo en la lista de campos.Seleccione el orden correcto:

Respuesta: C

El orden correcto es fijar los atributos generales de imagen en la imagende atributos, diseñar el formato de imagen en el editor de layout, fijar losatributos de campo en la lista de campos y escribir la lógica de proceso en eleditor de lógica de proceso.

2. Tras procesar PBO, se transfieren los datos a la pantalla y se visualizan.

Respuesta: PBO

3. Para que pueda fijar los atributos de todos los elementos de pantalla, elScreen Painter contiene una lista de elementos con cuatro vistas.

Respuesta: Falso

Para que pueda fijar los atributos de todos los elementos de pantalla, elScreen Painter contiene una lista de elementos con seis vistas.

4. Para interrumpir el procesamiento de la imagen actual y pasar a una nuevaimagen o secuencia de imágenes, utilice la sentencia siguiente:

Respuesta: A

Para interrumpir el procesamiento de la imagen actual y pasar a una nuevaimagen o secuencia de imágenes, utilice la sentencia CALL SCREEN<nnnn>.

5. Las modificaciones de imagen se tienen que programar en un módulo que seprocesa durante el bloque de proceso PROCESO ANTES DE SALIDA.

Respuesta: PROCESO ANTES DE SALIDA

54 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 65: 119167629 taw10-02-es

Capítulo 249 La interfase del programa

The program interface is the most important interface between the user and theprogram. So, the development of dialogs has to consider the building of theprogram interface as an outstanding theme. Developers have to spend time tolayout the program interface. Put the participants to a deeper understanding ofusing functions from the program interface. Also, motivate them to spend explicittime of the development process to layout the program interface. Finally, teachhow to create and use the program interface.

Resumen del capítuloEsta unida explica que el título y el status GUI forman parte de la interfase deusuario. Describe el procedimiento para crear un título GUI y un status GUI.Se aborda la necesidad de reutilizar barras de menú, barras de pulsadores ydefiniciones de teclas existentes. Por último, se explica cómo utilizar el status GUI.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Crear un título GUI• Identificar las teclas de función• Crear un status GUI• Procesar el código de función

Contenido del capítuloLección: Interfaz de usuario .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Lección: Status GUI .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

Demostración: Demonstration of SAPBC410GUID_A_GUI_PRE ... . 73Ejercicio 2: Creación de status GUI.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 55

Page 66: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Lección:50

Interfaz de usuarioDuración de la lección: 25 Minutos

Resumen de la lecciónEste módulo le ayudará a comprender cómo el título GUI y el status forman partede la interface de usuario. Aprenderá a crear un título GUI de tres formas distintas:a partir de la lista de objetos del Object Navigator, a partir de Menu Painter, ocon la navegación hacia adelante a partir del editor ABAP. Además, verá que,desde un punto de vista técnico, un status es una referencia a una barra de menú, aciertas definiciones de tecla y a una barra de pulsadores. Por último, se explicanconfiguraciones de teclas de función, menús y barras de menús.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear un título GUI• Identificar las teclas de función

Explain how GUI title and status are part of user interface. Also, describe statusfrom the technical point of view.

Overview: Interface

Define the user interface as a set of GUI titles and GUI status, where a GUI statusand a GUI title describe the state of the program interface for the current screen.The GUI status itself consists of a menu bar, a standard toolbar, an applicationtoolbar, and a number of function key settings.

GUI Title

Explain creating and using of GUI titles.

Status: Technical View (1)

Explain the reference technique. Emphasize the advantages of this technique for aconsistent user interface. Show any status within the Menu Painter.

Status: Technical View (2)

Give reasons for using the BOTTOM UP technique to the participants. Formulateguidelines for the layout of a GUI status.

Functions

Show and explain the attributes of a function. Emphasize the function code as keyin the function list. Show the function list for any status.

Function Key Setting

56 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 67: 119167629 taw10-02-es

TAW10_2 Lección: Interfaz de usuario

Discuss reserved, recommended, and freely assigned function key settings. Showthe application toolbar of any status.

Menus and Menu Bars

Discuss that all accessible functions should be reachable by a menu entry.Formulate guidelines for the layout of menus. Show the menus and menu listsof any status.

Creating a GUI Status

Explain and demonstrate how to create a status by forward navigation. Remarkother possible accesses to the Menu Painter. Note that since release 4.6, the statustype describes the technical properties of the status.

Function Key Assignment

Emphasize the BOTTOM-UP-technique. Lead the focus of the participants to thefact that there are two types of functions, static texts and dynamic texts. Giveapplication samples for both.

Standard Toolbar: Automatic Assignments

Emphasize the advantages of standardization for the usability of the ERP-system.This slide gives an overview of standard functions key assignments.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando imágenes en la aplicación. Para dichas imágenes, necesita crearuna interface de usuario. Esta interface debería incluir un título GUI y un status.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 57

Page 68: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Resumen: Interface

Gráfico 35: Resumen: Interface

Un status GUI consiste en una barra de menús, una barra de herramientas, unabarra de pulsadores y la configuración de teclas de función. Cada pantalla puedetener uno o más status GUI. Por ejemplo, un programa editor puede tener dosstatus: uno para el modo de visualización y uno para el modo de modificación.

Los elementos de un status GUI permiten que los usuarios puedan elegir lasfunciones con el ratón.

Los menús son elementos de control que permiten al usuario elegir qué funcionesprocesará un programa de aplicación. Los menús también pueden contenersubmenús. Los menús de sistema y de ayuda están presentes en todas las pantallasdel sistema SAP. Siempre tienen las mismas funciones y no se pueden ni modificarni ocultar.

La barra de pulsadores contiene iconos de las funciones de uso frecuente. La barrade herramientas, que siempre es la misma en todas las imágenes del sistema SAP,contiene una serie de iconos en la que cada uno de ellos tiene una asignación fija auna tecla de función. Si una función de la barra de herramientas no está disponibleen la imagen actual, el icono correspondiente se muestra en gris.

La barra de pulsadores permite al usuario elegir funciones de uso frecuentehaciendo clic sobre el botón en cuestión.

Las configuraciones de las teclas de función se emplean para asignar funcionescomo Buscar, Sustituir o Cortar a las teclas de función.

Los títulos y status GUI de un programa se pueden agrupar para formar suinterface de usuario. Cada vez que se añade un título o status nuevo, se debevolver a generar la interface de usuario.

58 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 69: 119167629 taw10-02-es

TAW10_2 Lección: Interfaz de usuario

Gráfico 36: Título GUI

Un título se puede crear de tres formas distintas: a partir de la lista de objetos delObject Navigator, a partir de Menu Painter, o con la navegación hacia adelante apartir del editor ABAP.

El nombre de un título puede tener una longitud de hasta 20 caracteres.

Debería definir un título adecuado para cada una de las imágenes de su aplicación.

Puede emplear variables en los títulos que se configuran de forma dinámica entiempo de ejecución insertando el signo & como reserva-espacio. En el tiempo deejecución, el signo & se sustituye por el valor que especifique. Se pueden definirhasta nueve variables añadiendo dígitos tras el signo &.

Para definir un título que contenga variables, utilice la sentencia:

SET TITLEBAR WITH <&1> ... <&9>.

Una barra de título permanece en su sitio hasta que se configura otra. En tiempode ejecución, la variable de sistema SY-TITLE contiene el título actual. Las barrasde título también se conocen como títulos GUI.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 59

Page 70: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Gráfico 37: Status: Vista técnica (1)

Desde un punto de vista técnico, un status es una referencia a una barra de menús,a ciertas definiciones de tecla y a una barra de pulsadores.

Un componente único, como puede ser una barra de menús, puede ser utilizadopor más de un status GUI.

Los status GUI son objetos de programa ABAP que se pueden visualizar enimágenes y listas.

Debería definir un status para cada una de las imágenes de su aplicación.

Gráfico 38: Status: Vista técnica (2)

Una barra de menús se compone de menús individuales.

60 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 71: 119167629 taw10-02-es

TAW10_2 Lección: Interfaz de usuario

Las definiciones de tecla y barras de pulsadores son objetos inferiores de laconfiguración de teclas de función.

Puede crear un conjunto de barras de pulsadores para una sola configuración detecla siguiendo el acceso vía menús Pasar a→ objetos de interface; Configuraciónde teclas de función → <name> → Configuración de pulsadores; Interface deusuario → Objeto inferior → Crear en el Menu Painter. Antes de poder asignaruna tecla de función a un pulsador, ésta debe tener asignada una función. Cadastatus contiene una única barra de pulsadores.

Todos los menús de programa y definiciones de teclas hacen referencia a unconjunto de funciones de interface (lista de funciones). Dichas funciones sepueden alcanzar con la ayuda para entradas. La barra de pulsadores hace referenciaa las funciones de forma indirecta mediante las configuraciones estándar.

Una función puede estar tanto activa como inactiva dentro de un status.

Funciones

Gráfico 39: Funciones

Las funciones se identifican por sus códigos de función.

El atributo tipo de función determina la finalidad prevista de una función. Utilicelas clases de función " " (espacio), E y P. Las clases de función S y H estánreservadas para uso interno del sistema SAP. El tipo de función T indica un códigode transacción. Cuando se lanza una función de esta clase, el sistema sale delprograma de llamada y llama el programa nuevo.

Las funciones se pueden crear con textos estáticos o dinámicos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 61

Page 72: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Si una función tiene un texto estático, le puede asignar un icono (atributo delNombre de icono). Si la función ya está asignada a un pulsador, se mostrará unicono en el lugar del texto estático. El texto estático se utiliza cuando se asigna lafunción a una entrada de menú. El texto de función que pertenece a la función seutiliza como texto quick info. El contenido del atributo Texto info aparece en labarra de status de la pantalla cuando el usuario elige la función. Si desea visualizarel texto además del icono, introduzca el texto en el atributo Texto de icono.

Puede utilizar el atributo de Acceso directo para especificar las letras que permitenelegir una función de la barra de menús sin tener que utilizar el ratón.

Una función se puede vincular a un flag. Si el flag está activado, se puede definirla reacción. Así, se visualiza la función si antes no se mostraba o se oculta siantes se veía.

Si desea disponer de más información, consulte la documentación onlineBiblioteca SAP → Componentes SAP NetWeaver → Workbench ABAP →Herramientas de Workbench ABAP → Menu Painter → Funciones.

Para obtener más información relativa a flags, consulte la Documentación depalabras clave ABAP → Modificaciones ABAP por release → Modificaciones enel release 7.0 → Switch Framework.

Gráfico 40: Definición de teclas de función

Las funciones se pueden asignar a teclas de función individuales o a botones.

Las configuraciones de teclas de función consisten en una definición de tecla y unpulsador dentro de una barra.

62 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 73: 119167629 taw10-02-es

TAW10_2 Lección: Interfaz de usuario

La clase de las configuraciones de tecla de función (pantalla y ventana de diálogo)determina la finalidad técnica exclusiva de la configuración de la tecla de función.Además, se pueden especificar opciones para la implementación de menúscontextuales y la ayuda para entradas en listas.

Las definiciones de teclas consisten en teclas de función reservadas, teclas defunción recomendadas y teclas de función de asignación libre. Las teclas defunción reservadas son teclas de función cuyos valores asignados no se puedenmodificar en el sistema SAP. Sus funciones se pueden activar y desactivar, pero nose pueden modificar ni los iconos ni los textos que tienen asignados. Las teclasde función reservadas aparecen en la barra de herramientas en pantallas y listas.Las teclas de función recomendadas contienen propuestas que satisfacen losestándares ergonómicos del sistema SAP.

Las funciones que se asignan a las teclas de función también se pueden asignar alos botones de la barra de pulsadores.

Una barra de pulsadores puede contener hasta 35 botones. Se pueden insertarseparadores verticales en la barra de botones a fin de agruparlos visualmente.Se puede controlar la visualización de las funciones inactivas en la barra depulsadores marcando Pasar a → Atributos → Configuración de pulsadores.

Gráfico 41: Menús y barras de menús

Un menú puede contener hasta 15 entradas.

Algunas entradas posibles son funciones, separadores y menús (menús en cascada).

Los menús pueden tener hasta tres niveles de profundidad. El tercer nivel sólopuede contener funciones y separadores.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 63

Page 74: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Los menús se pueden crear con texto estático o dinámico. Si desea utilizar untexto dinámico, deberá asignar un campo al menú. El contenido de este campo sevisualizará como texto del menú.

La clase de menú Include permite hacer referencia a menús de otros programas.Al hacerlo, se debe especificar el nombre del programa y el status desde el queincluir el texto de menú en el campo Documentación breve.

Sólo se puede acceder a los menús de Include con la barra de menús.

Una barra de menús puede contener hasta ocho menús diferentes. Hasta seisde estos menús se pueden asignar de forma totalmente libre. El sistema añadeautomáticamente tanto el menú de sistema como el menú de ayuda a todas lasbarras de menú.

64 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 75: 119167629 taw10-02-es

TAW10_2 Lección: Interfaz de usuario

Discusión con moderador

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

• There are three ways to create a title. Discuss.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 65

Page 76: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Resumen de la lección

Ahora podrá:• Crear un título GUI• Identificar las teclas de función

66 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 77: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

Lección:58

Status GUIDuración de la lección: 35 Minutos

Resumen de la lecciónEn este módulo aprenderá a crear un status GUI con las definiciones de tecla defunción, una barra de pulsadores y una barra de menús. Además, comprenderála necesidad de reutilizar las barras de menús, las barras de pulsadores y lasconfiguraciones de teclas existentes. Por último, aprenderá a utilizar un status GUI.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear un status GUI• Procesar el código de función

Discuss how to create a GUI status in three ways, using function key assignments,an application toolbar, and a menu bar. Also, explain the need to reuse existingmenu bars, application toolbars, and key settings.

Creating a GUI Status: Application Toolbar

Use the F4 help to make the entries easy. This is an advantage of theBOTTOM-UP-technique.

Creating a GUI Status: Menu Bar

Use the F4 help to make the entries easy. This is an advantage of theBOTTOM-UP-technique.

Display Standards

Show the path to the SAP Style Guide.

Including Existing Elements

The participants should be aware of how easy it is to refer to the same statusobjects in order to get a consistent program interface.

Processing the Function Code

Explain the user_command module and the need to name the command field.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 67

Page 78: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando pantallas en la aplicación. En una pantalla, necesita crear unstatus GUI que sea una referencia a una barra de menús, a ciertas definicionesde tecla y a una barra de pulsadores. Debería poder crear el status GUI o biendefiniendo enlaces a componentes ya existentes o bien un status en blanco.

Creación de un status GUI

Gráfico 42: Creación de un status GUI

La clase de status indica los atributos técnicos del mismo. Puede elegir entreun status para una pantalla normal (pantalla completa), un status de ventana dediálogo (para emplear con ventanas de diálogo modales) y un status de menúcontextual. Los menús contextuales son agrupaciones especiales de funciones quese pueden visualizar haciendo clic con el botón derecho.

Un status se puede crear generando enlaces a componentes existentes o creandoun nuevo status en blanco. También puede combinar ambas técnicas. Si deseacrear un status totalmente nuevo, deberá definir sus propias barras de menús,funciones de menú y otros elementos. Las modificaciones de un status afectanúnicamente a dicho status.

Cuando se utiliza la técnica de referencia, se crean barras de menús, barras depulsadores y definiciones de teclas de función como elementos independientes.Así luego puede crear un status propio y hacer referencia a la barra de menús,barra de pulsadores y la definición de tecla de función que desee. El Menu Painteralmacena y actualiza estas referencias, de tal modo que las modificaciones que

68 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 79: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

se realicen en la barra de menús, barra de pulsadores o definiciones de tecla defunción tienen efecto de modo automático en todos los status que hacen referenciaa ellos.

La técnica de referencia resulta especialmente eficaz para garantizar la consistenciaen aplicaciones muy grandes en las que se emplean diversos status. Los enlacesgarantizan que el usuario pueda acceder a las funciones del mismo modo conindependencia del status que haya fijado.

Gráfico 43: Creación de un status GUI: Definición de teclas de función

En una configuración de teclas, se asignan funciones individuales a teclas defunción y pulsadores. Las configuraciones de teclas de función consisten en unadefinición de tecla y una serie de barras de pulsadores.

Las configuraciones de teclas pueden ser de distintas clases: pantalla, ventana dediálogo, lista y lista dentro de una ventana de diálogo.

Se pueden anexar funciones a teclas de función reservadas, teclas de funciónrecomendadas y teclas de función de asignación libre. Asegúrese de que se ajustana los estándares ergonómicos de SAP que se encuentran en el menú Entorno delMenu Painter.

Las teclas de función reservadas aparecen en la barra de herramientas del SAPGUI.

En caso de que haya una función importante y de que ya la haya asignado a unatecla de función, también la puede asignar a un pulsador de la barra. La barra depulsadores puede contener hasta 35 botones.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 69

Page 80: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Gráfico 44: Barra de herramientas: Definiciones automáticas

Cuando se asigna una función a la barra de herramientas, ésta se asignaautomáticamente a la tecla de función reservada.

Para ver a qué teclas de función están asignadas estas funciones en el status actual,seleccione Información en el Menu Painter.

Si desea obtener más información sobre el modo en que combinaciones de teclascomo, por ejemplo, Ctrl-P, se convierten en números de teclas de función internospara, por ejemplo, batch input, siga el acceso vía menús Utilidades → Textos deayuda → Números de tecla internos en el Menu Painter.

Gráfico 45: Creación de un status GUI: Barra de pulsadores

No se puede utilizar una función de la barra de pulsadores, hasta que ésta estéasignada a una tecla de función.

70 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 81: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

Utilice la ayuda para entradas para seleccionar funciones.

Si asigna un icono a una función con un texto estático, atributo Nombre de icono,el sistema visualiza el icono en vez del texto estático en la barra de pulsadores.El texto de función que pertenece a la función se utiliza como quick info (textoquick info). El contenido del atributo Texto info aparece en la barra de status de lapantalla cuando el usuario elige la función. Si desea visualizar el texto adicionalcon un icono, debería introducirlo en el atributo Texto de icono.

Para insertar un separador en la barra de pulsadores, utilice el menú Insertar enel Menu Painter.

Gráfico 46: Creación de un status GUI: Barra de menús

Una entrada de menú puede ser una función, un separador, otro menú o un menúen cascada.

Para añadir una función a un menú, indique su código de función en la columna dela izquierda. Si la función ya existe en la lista de funciones y tiene asignado untexto, éste se inserta automáticamente en el campo de texto. Si no, haga doble clicen el campo de la derecha para introducir un texto.

Para insertar un separador, utilice el menú Insertar, rellene el campo de textode la función con signos negativos en la posición correspondiente o utilice elMenú contextual.

Par crear un submenú, basta con introducir su nombre en el campo derecho de laentrada de menú.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 71

Page 82: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Gráfico 47: Normas de visualización

A fin de asegurar la consistencia, debería reutilizar las barras de menús, lasbarras de pulsadores y las configuraciones de teclas existentes. El Menu Painteradministra los enlaces que se definen entre estos objetos para que todos loscambios se apliquen a todos los demás status que los utilizan. También puedeemplear una serie de entradas de menú estándar a modo de modelo y modificarlas.

Cuando asigne funciones a las teclas de función reservadas de la barra deherramientas, debería ceñirse a las normas SAP. De esta forma, el programa resultamucho más manejable para los usuarios y, a la vez, resulta más fácil actualizar.

Gráfico 48: Inclusión de elementos existentes

72 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 83: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

Con el Menu Painter puede incluir en un status configuraciones de teclas, barrasde pulsadores o barras de menús que ya haya definido en otra parte. Si utiliza elMenu Painter, trabaje de abajo a arriba. Si hay más de una barra de pulsadoresdefinida para su configuración de teclas, puede seleccionar la pertinente.

Al comienzo, todas las funciones están inactivas. Active únicamente las funcionesque son relevantes en el status actual.

Cuando cree una función nueva, puede decidir si también deberían modificarsetodos los status que hacen referencia al mismo objeto. Al comienzo, todas lasfunciones están inactivas.

Demostración: Demonstration ofSAPBC410GUID_A_GUI_PRE

ObjetivoTo demonstrate SAPBC410GUID_A_GUI_PRE

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Put in the titles for the basic and the detail list.

2. Use parameters for the title of the detail list.

3. Show how to create titles by forward navigation.

4. Test the program.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 73

Page 84: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Uso del status GUI

Gráfico 49: Procesamiento del código de función

Cuando el usuario desencadena una función de la clase " " (espacio) con unbotón, entrada de menú o tecla de función, el sistema sitúa el código de funcióncorrespondiente en el campo OK_CODE de la pantalla.

Para que pueda procesar este campo en el evento PAI, debe asignar un nombreal campo y luego indicarlo en la lista de elementos en el Screen Painter. Acontinuación deberá crear un campo en su programa ABAP con el mismo nombre.Durante el transporte automático de campos que se da al inicio del evento PAI, elcódigo de función pasa de la pantalla al campo correspondiente del programa.

A fin de evitar que el código de función desemboque en pasos de procesoimprevistos en el dynpro siguiente (pulsar la tecla Intro no suele modificar elcampo de comandos), debería inicializar el campo ABAP que recibe exactamenteel mismo nombre.

La forma más fácil de hacerlo es escribir un módulo PBO con la línea siguiente(siempre que haya especificado el campo de comandos de usuario ok_code enla lista de elementos):

CLEAR ok_code.

74 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 85: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

67 Ejercicio 2: Creación de status GUIDuración del ejercicio: 40 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear status de diálogo y utilizarlos en las aplicaciones propias

Ejemplo empresarialTras crear los programas para crear y modificar pantallas, necesita crear títulosGUI y asignar funciones a teclas de función o botones. Utilice el Menu Painterpara crear un status GUI y defina el Título GUI como datos de vuelo. Además,implemente el procesamiento de campo.

Tarea:Utilice el Menu Painter para crear un status GUI y un título GUI y evalúe laentrada del usuario.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterior ocopie la solución modelo SAPMBC410ADIAS_DYNPRO. Puede emplear lasolución de modelo SAPMBC410ADIAS_GUI como orientación.

2. En el evento PBO para la pantalla 100, llame el módulo STATUS_100.Utilice la navegación hacia adelante para crear el módulo en un Includenuevo. Acepte el nombre que propone el sistema.

Una vez allí, fije el status GUI STATUS_100 y créelo utilizando la navegaciónhacia adelante. Elija el Status de diálogo como clase de diálogo e Imagende actualización como texto breve. Active la función estándar BACK (F3)con el tipo de función " ".

También debería fijar el título GUI TITLE_100. Debería ser posible modificarel contenido del título con un parámetro: “Datos del vuelo (&1)”. En esteejercicio, cumplimente el parámetro &1 con “Vista”. Utilice un símbolo detexto para el parámetro a fin de asegurarse de que se pueda traducir.

3. Asigne el nombre ok_code al campo de comandos de su pantalla, y cree unavariable correspondiente en el Include TOP de su programa.

4. Implemente el procesamiento de campos de comando. En lugar de controlarel dynpro siguiente con el campo de carácter de imagen como habíaocurrido hasta ahora, el ok_code debería evaluarse ahora con el módulo PAIUSER_COMMAND_0100: Asegúrese de que el usuario de la pantalla 100vuelve al punto en que se llamó la pantalla si él o ella elige BACK (F3).

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 75

Page 86: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

5. A fin de evitar una navegación no deseada, inicialice el campo de comandosen un módulo en el evento PBO de la pantalla.

6. Opcional: Sustituya totalmente el campo de caracteres de la pantalla 100que se ha empleado hasta ahora para el diálogo de usuario, de tal modo que lahora se pueda visualizar con el status sin tener que volver a introducir una T.

Para ello, amplíe su status STATUS_100 con la función TIME y amplíe sumódulo PAI USER_COMMAND_0100.

7. Opcional: disponga una barra de título y un status independientes para laventana de diálogo donde se muestre la hora. Cree ambos objetos en unmódulo PBO STATUS_150 mediante la navegación hacia adelante.

76 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 87: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

Solución 2: Creación de status GUITarea:Utilice el Menu Painter para crear un status GUI y un título GUI y evalúe laentrada del usuario.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterior ocopie la solución modelo SAPMBC410ADIAS_DYNPRO. Puede emplear lasolución de modelo SAPMBC410ADIAS_GUI como orientación.

a) Consulte la solución modelo.

2. En el evento PBO para la pantalla 100, llame el módulo STATUS_100.Utilice la navegación hacia adelante para crear el módulo en un Includenuevo. Acepte el nombre que propone el sistema.

Una vez allí, fije el status GUI STATUS_100 y créelo utilizando la navegaciónhacia adelante. Elija el Status de diálogo como clase de diálogo e Imagende actualización como texto breve. Active la función estándar BACK (F3)con el tipo de función " ".

También debería fijar el título GUI TITLE_100. Debería ser posible modificarel contenido del título con un parámetro: “Datos del vuelo (&1)”. En esteejercicio, cumplimente el parámetro &1 con “Vista”. Utilice un símbolo detexto para el parámetro a fin de asegurarse de que se pueda traducir.

a) Consulte la solución modelo.

3. Asigne el nombre ok_code al campo de comandos de su pantalla, y cree unavariable correspondiente en el Include TOP de su programa.

a) Consulte la solución modelo.

4. Implemente el procesamiento de campos de comando. En lugar de controlarel dynpro siguiente con el campo de carácter de imagen como habíaocurrido hasta ahora, el ok_code debería evaluarse ahora con el módulo PAIUSER_COMMAND_0100: Asegúrese de que el usuario de la pantalla 100vuelve al punto en que se llamó la pantalla si él o ella elige BACK (F3).

a) Consulte la solución modelo.

5. A fin de evitar una navegación no deseada, inicialice el campo de comandosen un módulo en el evento PBO de la pantalla.

a) Consulte la solución modelo.

6. Opcional: Sustituya totalmente el campo de caracteres de la pantalla 100que se ha empleado hasta ahora para el diálogo de usuario, de tal modo que lahora se pueda visualizar con el status sin tener que volver a introducir una T.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 77

Page 88: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

Para ello, amplíe su status STATUS_100 con la función TIME y amplíe sumódulo PAI USER_COMMAND_0100.

a) Consulte la solución modelo.

7. Opcional: disponga una barra de título y un status independientes para laventana de diálogo donde se muestre la hora. Cree ambos objetos en unmódulo PBO STATUS_150 mediante la navegación hacia adelante.

a) Consulte la solución modelo.

ResultadoSolución modelo SAPMBC410ADIAS_GUI

Programa principal

INCLUDE MBC410ADIAS_GUITOP.

INCLUDE MBC410ADIAS_GUII01.

INCLUDE MBC410ADIAS_GUIO01.

Pantalla de lógica de proceso 100

PROCESS BEFORE OUTPUT.

MODULE status_0100.

MODULE move_to_dynp.

module clear_ok_code.

PROCESS AFTER INPUT.

MODULE user_command_0100.

MODULE check_sflight.

Pantalla de lógica de proceso 150

PROCESS BEFORE OUTPUT.

MODULE status_0150.

*

PROCESS AFTER INPUT.

* MODULE USER_COMMAND_0150.

Include TOP

PROGRAM sapmbc410adias_dynpro.

* screen structure

TABLES: sdyn_conn.

DATA:

* workarea for database read

Continúa en la página siguiente

78 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 89: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

wa_sflight TYPE sflight,

* function code at PAI

ok_code LIKE sy-ucomm.

Include de módulo PBO

*&---------------------------------------------------------------------*

*& Module move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

* copy data to screen structure

*----------------------------------------------------------------------*

MODULE move_to_dynp OUTPUT.

MOVE-CORRESPONDING wa_sflight TO sdyn_conn.

ENDMODULE. " move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

*& Module status_0100 OUTPUT

*&---------------------------------------------------------------------*

* set status and title for screen 100

*----------------------------------------------------------------------*

MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_100'.

SET TITLEBAR 'TITLE_100' WITH text-vie. " View

ENDMODULE. " status_0100 OUTPUT

*&---------------------------------------------------------------------*

*& Module status_0150 OUTPUT

*&---------------------------------------------------------------------*

* set status and title for screen 150

*----------------------------------------------------------------------*

MODULE status_0150 OUTPUT.

SET PF-STATUS 'STATUS_150'.

SET TITLEBAR 'TITLE_150' WITH text-tim. " Time

ENDMODULE. " status_0150 OUTPUT

*&---------------------------------------------------------------------*

*& Module clear_ok_code OUTPUT

*&---------------------------------------------------------------------*

* initialize ok_code

*----------------------------------------------------------------------*

MODULE clear_ok_code OUTPUT.

CLEAR ok_code.

ENDMODULE. " clear_ok_code OUTPUT

Include de módulo PAI

*&---------------------------------------------------------------------*

*& Module check_sflight INPUT

*&---------------------------------------------------------------------*

* Read flight record from database

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 79

Page 90: 119167629 taw10-02-es

Capítulo 2: La interfase del programa TAW10_2

*----------------------------------------------------------------------*

MODULE check_sflight INPUT.

SELECT SINGLE *

FROM sflight

* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read

INTO wa_sflight " Read into internal structure

WHERE carrid = sdyn_conn-carrid AND

connid = sdyn_conn-connid AND

fldate = sdyn_conn-fldate.

CHECK sy-subrc <> 0.

CLEAR wa_sflight.

MESSAGE i007(bc410).

ENDMODULE. " check_sflight INPUT

*&---------------------------------------------------------------------*

*& Module user_command_0100 INPUT

*&---------------------------------------------------------------------*

* process user command

*----------------------------------------------------------------------*

MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

* display time on add'l screen

WHEN 'TIME'.

CALL SCREEN 150

STARTING AT 10 10

ENDING AT 50 20.

ENDCASE.

ENDMODULE. " user_command_0100 INPUT

80 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 91: 119167629 taw10-02-es

TAW10_2 Lección: Status GUI

Resumen de la lección

Ahora podrá:• Crear un status GUI• Procesar el código de función

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 81

Page 92: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Crear un título GUI• Identificar las teclas de función• Crear un status GUI• Procesar el código de función

82 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 93: 119167629 taw10-02-es

TAW10_2 Examine sus conocimientos

75Examine sus conocimientos

1. Las teclas de función que contienen propuestas que satisfacen los estándaresergonómicos del sistema SAP son:

Seleccione la(s) respuesta(s) correcta(s).□ A Reservadas□ B Recomendadas□ C Libres□ D Todas las anteriores

2. Hay formas de crear un título.Rellene los espacios en blanco para completar las frases.

3. El contenido del atributo Texto de icono aparece en la barra de status de lapantalla cuando el usuario elige la función.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

4. El campo de comandos sólo se puede inicializar en PAI.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 83

Page 94: 119167629 taw10-02-es

Examine sus conocimientos TAW10_2

76Respuestas

1. Las teclas de función que contienen propuestas que satisfacen los estándaresergonómicos del sistema SAP son:

Respuesta: B

Las teclas de función recomendadas contienen propuestas que satisfacen losestándares ergonómicos del sistema SAP.

2. Hay tres formas de crear un título.

Respuesta: tres

3. El contenido del atributo Texto de icono aparece en la barra de status de lapantalla cuando el usuario elige la función.

Respuesta: Falso

El contenido del atributo Texto info aparece en la barra de status de lapantalla cuando el usuario elige la función.

4. El campo de comandos sólo se puede inicializar en PAI.

Respuesta: Falso

El campo de comandos se puede inicializar en PAI o en PBO.

84 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 95: 119167629 taw10-02-es

Capítulo 377 Elementos de pantalla para salida

There are two ways to define text fields, show them both. Status icons are usedto visually assist the user. Explain the runtime compression in connection withintroducing frames. There is no exercise for this unit. During the demonstrationyou create a dialog box that displays the status of the current connection. For thispopup all the output elements are used.

Resumen del capítuloEsta unidad explica cómo se crean y utilizan los campos de texto en una pantalla.Asimismo, se tratan los iconos de status y se explica cómo crear y rellenar losiconos de status. También se explica cómo se crean marcos de grupo.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Crear y modificar campos de texto• Crear y modificar iconos de status• Crear y modificar marcos de grupo

Contenido del capítuloLección: Campos de texto, iconos de status y marcos de grupo... . . . . . . . 86

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 85

Page 96: 119167629 taw10-02-es

Capítulo 3: Elementos de pantalla para salida TAW10_2

Lección:78

Campos de texto, iconos de status y marcos de grupoDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta unidad aprenderá a utilizar campos de texto en una pantalla. Aprenderá acrear campos de texto de dos formas.

También verá que un icono de status es una reserva-espacio para un icono.También aprenderá a crear y a rellenar los iconos de status.

Asimismo, conocerá los marcos de grupo, que consisten en un elemento devisualización que comprende una selección de elementos que deben ir unidos.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear y modificar campos de texto• Crear y modificar iconos de status• Crear y modificar marcos de grupo

Explain why and when output fields are required in an application.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando imágenes en la aplicación. En una pantalla es preciso queetiquetas, como pueden ser un número de vuelo o de reserva, se visualicen delantede los campos correspondientes.

Elementos de salida: Campos de texto

86 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 97: 119167629 taw10-02-es

TAW10_2 Lección: Campos de texto, iconos de status y marcos de grupo

Gráfico 50: Campos de texto

Un campo de texto es un área rectangular en una pantalla en la que el sistemavisualiza texto.

Los campos de texto contienen etiquetas para otros elementos. Estas etiquetas, aveces denominadas descriptores, son meramente de visualización. El usuario nopuede modificar estas etiquetas en tiempo de ejecución. Los campos de texto sevisualizan en una posición fija en la pantalla.

Los campos de texto también pueden contener líneas, iconos y otros elementosestáticos. Pueden contener cualquier carácter alfanumérico, pero no puedencomenzar con un carácter de subrayado (_) o interrogante (?). Si utiliza textopara etiquetar un botón de selección o casilla de selección, puede especificar si laetiqueta debe tener un Botón izquierdo o Botón derecho.

Si su texto consiste en más de una palabra, utilice caracteres de subrayado comoseparadores. De este modo, el sistema puede reconocer que las palabras vanjuntas. El sistema interpreta los espacios como separadores entre dos camposde texto distintos.

Los campos de texto se pueden traducir. En este caso, aparecerán en el idioma detrabajo del usuario. Para ello, siga el acceso vía menús en Pasar a → Traducciónen el Screen Painter.

Gráfico 51: Campo de texto: Atributos

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 87

Page 98: 119167629 taw10-02-es

Capítulo 3: Elementos de pantalla para salida TAW10_2

Gráfico 52: Creación de campos de texto

Se pueden crear campos de texto de cualquiera de las dos formas siguientes:

• Situando un objeto de campo de texto en el área de trabajo e insertando eltexto en el atributo Texto directamente en el editor de layout.

• Utilizando el texto que acompaña a un elemento de datos del DictionaryABAP.

• Cuando se utilizan campos de las estructuras Dictionary ABAP en lapantalla, el sistema suele visualizar los elementos de datos y el modelo paralos campos de entrada/salida en la pantalla.

Iconos de status

Gráfico 53: Iconos de status

88 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 99: 119167629 taw10-02-es

TAW10_2 Lección: Campos de texto, iconos de status y marcos de grupo

Un icono de status es una reserva-espacio para un icono. El icono relevantese elige en tiempo de ejecución. Los iconos permiten indicar un status en unaaplicación. Están predefinidos en el sistema y tienen entre dos y cuatro caracteres.

Si desea obtener más información sobre los iconos disponibles, llame el reportSHOWICON.

Gráfico 54: Iconos de status: Atributos

Los iconos de status son campos de salida especiales en los que se visualizaniconos. El sistema fija los atributos Campo de salida y 2 como dimensionales, yno se pueden modificar. El formato de datos por defecto es CHAR.

Los atributos Longitud visible, Intensificado e Invisible de un icono de status sepueden modificar de forma dinámica.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 89

Page 100: 119167629 taw10-02-es

Capítulo 3: Elementos de pantalla para salida TAW10_2

Gráfico 55: Creación de iconos de status

Un campo de status sólo se puede definir en el editor de layout gráfico. Un campode status es un campo de salida con un icono. Se emplea para visualizar un iconoque se especifica de forma dinámica en tiempo de ejecución.

A fin de garantizar que se pueda visualizar Quick info que pueda ser larga, definael campo con una longitud definida de 132 y una longitud visible 2.

En el programa ABAP, defina un campo con el mismo nombre que el campode dynpro utilizando el campo TEXT de la estructura ICONS. En tiempo deejecución, este campo contiene el nombre del icono que desea visualizar.

En tiempo de ejecución, asigne el icono requerido a este campo con el módulode funciones ICON_CREATE.

90 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 101: 119167629 taw10-02-es

TAW10_2 Lección: Campos de texto, iconos de status y marcos de grupo

Gráfico 56: Cumplimentación de un icono de status

Seleccione el icono que desea visualizar en el programa ABAP. Antes de que sevisualice la pantalla, deberá encontrar el nombre técnico del icono. Esto se hacellamando un módulo en el evento PBO.

El nombre técnico de un icono se recupera con el módulo de funcionesICON_CREATE. Debe traspasar el nombre del icono que se desea visualizar almódulo de funciones. También puede traspasar un texto a visualizar con el icono.El módulo de funciones devuelve el nombre técnico del campo del icono de status.

Para obtener más información sobre este módulo de funciones, consulte sudocumentación.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 91

Page 102: 119167629 taw10-02-es

Capítulo 3: Elementos de pantalla para salida TAW10_2

Marcos de grupo

Gráfico 57: Marcos de grupo

Los marcos de grupo comprenden una selección de elementos que deben ir juntos,como puede ser un grupo de campos o de botones de selección. No son más queelementos de visualización que ayudan al usuario a identificar aquellos elementosde la pantalla que deben ir juntos en un grupo.

Los marcos de grupo se pueden emplear para asegurarse de que todos los camposde un marco tengan asignado el mismo menú contextual.

Los marcos de grupo pueden tener título.

Gráfico 58: Marcos de grupo: Atributos

Los atributos Longitud visible e Intensificado se pueden modificar con la tablade sistema SCREEN.

Un marco de grupo puede contener otros elementos de pantalla.

92 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 103: 119167629 taw10-02-es

TAW10_2 Lección: Campos de texto, iconos de status y marcos de grupo

En tiempo de ejecución, cuando el marco sólo contiene elementos invisibles y estáfijado el atributo de imagen Compresión en tiempo de ejecución, no se visualizael marco.

Gráfico 59: Creación de marcos de grupo

Un marco de grupos se define en el editor de layout. El objeto debe tener unnombre; también se puede asignar una cabecera al marco.

Se puede modificar el texto del marco de grupo de forma dinámica. Para ello,debería activar el atributo campo de salida y crear un campo de datos global en elprograma ABAP con el mismo nombre. Puesto que el campo Screen Painter y elcampo de programa tienen el mismo nombre, los cambios que se realicen en elcontenido del campo se verán inmediatamente en la pantalla de forma parecida acampos de entrada/salida.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 93

Page 104: 119167629 taw10-02-es

Capítulo 3: Elementos de pantalla para salida TAW10_2

Discusión con moderador

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

Not a lot to be discussed here...

94 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 105: 119167629 taw10-02-es

TAW10_2 Lección: Campos de texto, iconos de status y marcos de grupo

Resumen de la lección

Ahora podrá:• Crear y modificar campos de texto• Crear y modificar iconos de status• Crear y modificar marcos de grupo

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 95

Page 106: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Crear y modificar campos de texto• Crear y modificar iconos de status• Crear y modificar marcos de grupo

96 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 107: 119167629 taw10-02-es

TAW10_2 Examine sus conocimientos

89Examine sus conocimientos

1. Si su texto consiste en más de una palabra, utilice los caracteres siguientescomo separadores:

Seleccione la(s) respuesta(s) correcta(s).□ A Subrayado□ B Coma□ C Interrogante□ D Espacio

2. El texto del marco de grupo no se puede modificar de forma dinámica.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

3. Los atributos ,e de un icono de status se pueden modificar de formadinámica.Rellene los espacios en blanco para completar las frases.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 97

Page 108: 119167629 taw10-02-es

Examine sus conocimientos TAW10_2

90Respuestas

1. Si su texto consiste en más de una palabra, utilice los caracteres siguientescomo separadores:

Respuesta: A

Si su texto consiste en más de una palabra, utilice el carácter de subrayadocomo separador.

2. El texto del marco de grupo no se puede modificar de forma dinámica.

Respuesta: Falso

El texto del marco de grupo se puede modificar de forma dinámica.

3. Los atributos Longitud visible, Intensificado e Invisible de un icono de statusse pueden modificar de forma dinámica.

Respuesta: Longitud visible, Intensificado, Invisible

98 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 109: 119167629 taw10-02-es

Capítulo 491 Elementos de pantalla para

entrada/salida

I/O fields are the most important screen elements for data input. They allow theuser to manipulate global data of the program and to store them on the database.Therefore, input checks and input help are indispensable for consistent data.The participants have to understand the corresponding concepts. Enforce thelinking of search helps to the screen structure in the ABAP Dictionary. Otherwise,you need more complicated techniques to get import parameters for the searchhelp.Visualize the layout of the aimed screen at the exercises.

Resumen del capítuloEsta unidad se centra en los campos de entrada/salida como son casillas deselección, grupos de botones de selección y pulsadores. Conocerá a los camposde entrada/salida y el proceso por el que se crean. También aprenderá a ejecutarverificaciones de errores para campos de entrada/salida. Asimismo, esta unidadexplica cómo crear y utilizar casillas de selección, grupos de botones de seleccióny pulsadores, y modificar los atributos de todos ellos.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Crear campos de entrada/salida• Verificar errores en campos de entrada/salida• Crear un cuadro desplegable para un campo de entrada• Crear casillas de selección en sus programas• Crear grupos de botones de selección• Crear pulsadores

Contenido del capítuloLección: Resumen de campos de entrada/salida ... . . . . . . . . . . . . . . . . . . . . . .101

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 99

Page 110: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Demostración: Demonstration of SAPBC410INPD_A _PRE... . . . . . .105Demostración: Demonstration of SAPBC410INPD_A _PRE... . . . . . .116Demostración: Demonstration of SAPBC410INPD_D_WARNING ..116Demostración: Demonstration of SAPBC410INPD_E_HELP_FOR_IN-PUT... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122Ejercicio 3: Verificaciones de entrada y ayuda para entradas... . . . . .123

Lección: Casillas de selección, grupos de botones de selección ypulsadores ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130

Demostración: Demonstration of SAPMBC410INPD_H_CHECK-BOX ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .134Demostración: Demonstration of SAPMBC410INPD_I_RADIOBUT-TON .... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135Demostración: Demonstration of SAPMBC410INPD_J_READY_SPE-CIAL ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139Ejercicio 4: Botones de selección y verificaciones de entrada ... . . . .141

100 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 111: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Lección:92

Resumen de campos de entrada/salidaDuración de la lección: 60 Minutos

Resumen de la lecciónEn este módulo aprenderá qué son los campos de entrada/salida y cómo crearlos.Aprenderá a ejecutar verificaciones de errores para campos de entrada/salida.Además, aprenderá a navegar entre pantallas con las funciones Back y Cancelar.Por último, descubrirá que puede ayudar al usuario con las entradas introduciendocuadros desplegables que contengan las entradas posibles.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear campos de entrada/salida• Verificar errores en campos de entrada/salida• Crear un cuadro desplegable para un campo de entrada

Describe what are input/output fields and how to create them. Also, tell how tohelp the user with input by using dropdown list boxes containing the possibleentries.

Input/Output Fields

Define the term and give examples for using input/output fields.

Input/Output Fields: Attributes

Concentrate on important attributes.

Automatic Field Input Checks

Demonstrate the automatic checks on the demonstration.

Field Input Checks with Error Dialog

Give reasons for an extra check.

Checking Groups of Fields

Explain the CHAIN-statement.

Controlling Error Dialogs

Discuss the reentry point. It is the last possible reentry point. Note that the lastpossible point depends on the field changed by the user.

Dialog Message Categories

Give application examples, specifically for types a, e, and w.

The FIELD Statement and Data Transport

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 101

Page 112: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Explain the delayed data transport and the transport back to the screen in case oferror or warning message. This is the reason for the visibility of maximum seatsin the last demo.

Execution on Input

Explain this technique; give reasons and applications for it.

Execution on Change

Explain this technique; give reasons and applications for it.

Avoiding the Field Input Checks

Explain this technique; give reasons and applications for it.

Navigation-Targets

Refer to the SAP style guide.

Navigation: Single-Screen-Transaction

Explain the changes with respect to the previous slide. Underline SAP’s newprogramming model.

Navigation-Dialogs

Explain the problem of the possibility of losing data by navigation.

Input Help

How can we support the user for the input of data? Give the possible ways ofinput help.

Dropdown List Boxes

Note that in this course only the easiest way to assign a value table is shown. In thiscase the values come from the fixed values or a value table assigned to the domainor a search help. To send an own value table to the help processor, you can use thefunction module VRM_SET_VALUES, but this function module is not released.This info is only for the instructor. Do not explain this technique within the course.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando pantallas de la aplicación. La aplicación debería poder aceptarentradas del usuario o posibilitarle la visualización de los datos y crear elementosde entrada/salida. Además, también le debería permitir navegar entre pantallascon las funciones Back y Cancelar.

102 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 113: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Campos de entrada/salida

Gráfico 60: Campos de entrada/salida

Un campo de entrada es un elemento de pantalla rectangular en el que los usuariosintroducen datos.

Un campo de salida es un elemento de pantalla rectangular en el que el sistemavisualiza texto u otros datos.

Los campos de entrada/salida también se conocen como modelos.

Los campos de entrada pueden tener verificaciones de entrada de campoautomáticas relacionadas con su clase de datos, por ejemplo, en los campos defecha sólo podrá indicar una fecha válida.

Los campos de entrada que se creen con referencia a campos de Dictionary ABAPdeben tener verificaciones de consistencia, verificaciones de clave externa yconjuntos de valores integrados.

Los campos de entrada pueden tener ayuda para posibles valores.

Si desea más información sobre los campos de entrada/salida, consulte ladocumentación online, Biblioteca SAP → SAP NetWeaver 7.0 → SAP NetWeaverpor funcionalidad clave → Plataforma de aplicación por funcionalidad clave →Tecnología ABAP → Workbench ABAP → Herramientas de Workbench ABAP →Screen Painter → Screen Painter gráfico → Resumen del formato de imagen →Elementos de pantalla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 103

Page 114: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 61: Campos de entrada/salida: Atributos

Los atributos de objeto marcados en gris se pueden modificar temporalmente conla tabla de sistema SCREEN.

Es posible que no se puedan activar todas las combinaciones posibles de atributos.Esto depende del formato del campo de entrada/salida. Por ejemplo, no se puedeactivar el atributo Ceros a la izquierda para un campo con el formato de datosCHAR, ya que sólo es relevante para campos numéricos.

Si desea más información sobre el atributo Formato de datos, consulte ladocumentación online (Biblioteca SAP → SAP NetWeaver 7.0 7,0 SAP NetWeaverpor funcionalidad clave → Plataforma de aplicación por funcionalidad clave →Tecnología ABAP → Workbench ABAP → Herramientas de Workbench ABAP →Screen Painter → Definición de atributos de elemento → Elección de formatosde campo.

104 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 115: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 62: Creación de campos de entrada/salida

Los campos de entrada/salida se pueden crear de dos maneras:

• Introduciéndolos directamente en el editor de layout. El tamaño del campose determina según el número de caracteres de subrayado que haya en elatributo de texto del objeto. En el caso de los valores numéricos, se puedeespecificar un punto como separador, y una coma como separador decimal.Como carácter final del campo de entrada/salida, se puede indicar una Vcomo reserva-espacio para un signo +/-.

• Empleando un modelo del Dictionary ABAP. Para ello, seleccione CamposDict/Programa.

Si desea utilizar el contenido de un campo de entrada/salida en el programa ABAP,debe declarar el campo de forma global empleando la sentencia DATA o TABLES.

Demostración: Demonstration of SAPBC410INPD_A_PRE

ObjetivoTo demonstrate SAPBC410INPD_A _PRE

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 105

Page 116: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Parametrizaciones del sistema:1. Copy SAPBC410INPD_A_PRE and insert the various i/o-fields.

2. Demonstrate the i/o-fields of screen 100 as SET/GET-Parameters.

Verificación de errores en campos de entrada/salida

Gráfico 63: Valores por defecto en memoria SAP

Se pueden almacenar valores en la memoria SAP mediante un ID de parámetro.Estos valores son específicos de usuario y de sesión, pero están disponibles entodas las sesiones internas y externas.

El parámetro SET copia los contenidos correspondientes del campo en la memoriadel sistema SAP durante el bloque de proceso PAI.

El parámetro GET copia los contenidos correspondientes del campo en la memoriaSAP al finalizar el bloque de proceso PBO una vez que los datos se han transferidodel programa y siempre y cuando el campo de dynpro mantenga el valor inicial.

106 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 117: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 64: Definición de los atributos de los parámetros SET y GET

Se puede vincular un campo de entrada/salida en un área de la memoria SAPdentro del Dictionary ABAP.

Cuando se emplea un campo de entrada/salida que aparece definido en elDictionary ABAP, su ID de parámetro se visualiza en el ID de parámetro delatributo Dictionary del Screen Painter.

Los atributos de los parámetros SET y GET, SPA y GPA en la tabla, permitenactivar las funciones de parámetro SET y GET de forma independiente.

Se pueden definir ID de parámetro en el Workbench ABAP.

Gráfico 65: Categorías de mensajes interactivos

Los mensajes se agrupan en seis categorías: A, X, E, W, I y S. Las diferenciasentre cada tipo son las siguientes:

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 107

Page 118: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Clases de mensaje

Tipo Texto Descripción

A Cancelación Se cancela el proceso y el usuario debe reiniciar latransacción.

X Exit Como la clase de mensaje A, pero con un dumpbreve MESSAGE_TYPE_X.

E Error Se interrumpe el proceso y el usuario debe corregirla entrada.

W Advertencia Se interrumpe el proceso y el usuario puede corregirlas entradas.

I Información Se interrumpe el proceso, pero se reanuda una vezque el usuario confirma el mensaje (seleccionandoIntro).

S Éxito La información se visualiza en el dynpro.

Gráfico 66: Verificaciones de entrada automática en campos

Antes de que se procesen los módulos PAI, el sistema verifica de forma automáticalos valores que el usuario introduce en la pantalla una vez se ha visualizado.

La primera verificación consiste en garantizar que todos los campos requeridos sehayan cumplimentado.

El sistema puede efectuar una verificación de clave externa solamente si un campode dynpro hace referencia a un campo del Dictionary ABAP para el que se hayadefinido una tabla de verificación. También debe estar fijado el atributo deverificación de clave externa.

La función de ayuda para entradas también está activa. El sistema visualiza lasposibles entradas entre las que puede elegir el usuario.

108 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 119: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 67: Verificaciones de entrada de campo con mensajes interactivosde error

Si las verificaciones automáticas de entrada de campo no satisfacen sus requisitos,puede programar un evento PAI propio. Para ello, utilice la sentencia FIELD conel suplemento MODULE. Esto supone que el módulo que defina se procesará sólopara el campo especificado en la sentencia FIELD.

Si durante el módulo se genera un mensaje de error o de advertencia, el sistemavuelve a enviar la pantalla pero sin procesar el módulo PBO. Se visualiza elmensaje; sólo el campo para el que se aplicó la verificación estará listo para laentrada.

Nota: La sentencia FIELD se encarga de que el campo vuelva a estar listopara la entrada. Si dentro de un módulo se emplea un mensaje que no sellama desde la sentencia FIELD, el sistema visualiza el mensaje pero novuelve a preparar el campo para que esté listo para la entrada.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 109

Page 120: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 68: Verificación de grupos de campos

Si lo que quiere es asegurarse de que haya más de un campo listo para la entradadespués de unos mensajes interactivos de error, deberá elaborar una lista con todoslos campos relevantes en la sentencia FIELD, e incluir los campos y la sentenciaMODULE en un bloque de CHAIN ... ENDCHAIN.

Se pueden incluir campos individuales en más de un bloque CHAIN...ENDCHAIN.

Tenga en cuenta que la sentencia FIELD se encarga de que el campo vuelva a estarlisto para la entrada. El contenido del campo que se haya modificado duranteel proceso PAI actual sólo se visualiza si el campo en cuestión también estabaincluido en la sentencia FIELD del bloque CHAIN actual.

110 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 121: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 69: Control de los mensajes interactivos de error

Si el sistema envía un mensaje de error o de advertencia, la pantalla actual sevuelve a enviar pero no se vuelve a procesar el PBO.

Sólo están listos para la entrada aquellos campos a los que se asigna el módulo.

Una vez que el usuario ha introducido valores nuevos, el módulo de PROCESODESPUÉS DE LA ENTRADA no se vuelve a procesar por completo, sino que sereinicia en algún punto del bloque de proceso.

El sistema encuentra los campos que ha modificado el usuario y reanuda el procesoen la primera sentencia FIELD que corresponda.

Si el usuario tan solo confirma un mensaje de advertencia, sin modificar elcontenido del campo, el sistema reanuda el proceso PAI tras la sentenciaMESSAGE en que se desencadenó el error.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 111

Page 122: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 70: La sentencia FIELD y el Transporte de datos

El sistema transporta los datos de los campos de dynpro a los campos ABAP quetienen el mismo nombre en el bloque de proceso PAI. Primero, transporta todos loscampos que no están incluidos en ninguna sentencia FIELD. El resto de campos setransportan cuando el sistema procesa la sentencia FIELD relevante.

Si se produce un mensaje de error o de advertencia en un módulo que pertenecea una sentencia FIELD, los valores actuales de todos los campos del mismobloque CHAIN se transportan automáticamente de nuevo a sus campos de dynprocorrespondientes.

112 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 123: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 71: Llamadas de módulo condicionales

Las verificaciones de entrada de campo suelen requerir acceso a la base de datos.Evitarlas, siempre que sea posible, mejora el rendimiento del programa.

Si el usuario ha llegado a la pantalla por error, normalmente no podrá realizar unconjunto de entradas consistente que satisfaga las verificaciones de entrada. Porello, debería permitir que un usuario pueda abandonar la pantalla sin que tenganlugar las verificaciones de campos.

Para impedir que el usuario pierda los datos que ya haya podido introducir siabandona la pantalla por error, emerge un mensaje de seguridad del programa.

Gráfico 72: Ejecución cuando el valor no es inicial

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 113

Page 124: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Si utiliza el suplemento ON INPUT en una sentencia MODULE después deFIELD, el módulo sólo se llamará si ha cambiado el contenido inicial del campo.

En un bloque CHAIN, debe emplear el suplemento ON CHAIN-INPUT. Así, elmódulo se llama si se modifica el contenido inicial de al menos un campo dedynpro del bloque CHAIN.

Puede emplear el suplemento ON INPUT sólo si la sentencia MODULE estádentro de una sentencia FIELD.

Gráfico 73: Ejecución si hay modificación

Si utiliza el suplemento ON REQUEST en una sentencia MODULE después deFIELD, el módulo sólo se llama si el usuario indica un valor nuevo en dichocampo.

En un bloque CHAIN, debe emplear el suplemento ON CHAIN-REQUEST. Así,el módulo se llama si el usuario modifica el contenido de al menos un campode dynpro del bloque CHAIN.

Puede emplear el suplemento ON REQUEST sólo si la sentencia MODULE estádentro de una sentencia FIELD.

114 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 125: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 74: Omisión de verificaciones de entrada de campos

El módulo que contiene el suplemento AT EXIT-COMMAND se procesa antesde las verificaciones de entrada de campo automáticas, antes del transporteautomático de datos y antes de todos los demás módulos PAI. Se puede emplearpara navegar. Puede utilizar el suplemento AT EXIT-COMMAND con un solomódulo para cada pantalla. Puede no tener asociada una sentencia FIELD.

Si no abandona la pantalla desde este módulo, las verificaciones de campoautomáticas se procesan después, seguidas del resto del evento PAI.

Gráfico 75: Llamada de módulo dependiente de flag

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 115

Page 126: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Si hay especificado el suplemento SWITCH, el módulo de diálogo se llamasolamente si el flag indicado tiene el estado ON. Un flag definido en el repositoryse debe especificar de forma directa. Si el flag especificado no existe, el módulode diálogo no se llama.

El suplemento no se puede especificar junto con la sentencia FIELD. Allí, seaplica el flag que tenga asignado el campo de dynpro en el Screen Painter.

Demostración: Demonstration of SAPBC410INPD_A_PRE

ObjetivoTo demonstrate SAPBC410INPD_A _PRE

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Extend the field check to a group field check.

2. Insert the field check. Show first what happens without the FIELD statement.

Demostración: Demonstration ofSAPBC410INPD_D_WARNING

ObjetivoTo demonstrate SAPBC410INPD_D_WARNING

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Demonstrate the difference between error and warning.

116 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 127: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Navegación

Gráfico 76: Navegación: Objetivos

Las funciones Back y Cancelar deberían retroceder un nivel lógico. Desde laspantallas que tienen el mismo nivel que la imagen inicial, vuelven a la imageninicial. Desde las pantallas que contienen información detallada, vuelven a lapantalla desde la que se llamó la imagen actual.

La función Cancelar se distingue de la función Back por su comportamiento.

La función Exit debería volver al punto en que se llamó la unidad de proceso.

En la imagen inicial de un programa, estas tres funciones -Back, Exit y Cancelar-vuelven a la pantalla desde la que se llamó el programa actual.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 117

Page 128: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 77: Navegación: Transacción de imagen única

Back abandona la transacción actual y vuelve al programa de llamada.

Back abandona la transacción actual y vuelve al programa de llamada.

Las funciones Exit y Back son distintas por lo que respecta a su comportamientode diálogo a fin de impedir la pérdida de datos de entrada.

Cancelar vuelve a visualizar la pantalla con los campos de datos inicializados ypermite al usuario seleccionar un objeto nuevo.

118 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 129: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 78: Navegación: Diálogos

Si el usuario ha intoducido datos en la pantalla, SY-DATAR = X o su propioindicador, se puede evitar una pérdida accidental de datos empleando un promptde seguridad predefinido.

Para las funciones Exit y Cancelar, primero envíe una ventana de diálogo alusuario. Luego, en el caso de la función Exit , el sistema verifica la entrada en lapantalla. Las funciones en cuestión deben ser de la clase E.

En el caso de la función Back, las verificaciones de entrada se efectúan antesdel diálogo.

Fíjese en que los datos no grabados también se pueden perder, por ejemplo,cuando se pasa del modo Modificar al modo Visualizar. Si el usuario decide nograbar, el sistema muestra los datos originales almacenados en la base de datos.

El sistema SAP contiene una serie de módulos de función que se pueden emplearpara los diálogos de usuario.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 119

Page 130: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Ayuda para entradas

Gráfico 79: Ayuda para entradas

La Ayuda para entradas (ayuda F4) es una función estándar del sistema SAP.Permite que el usuario visualice una lista de las entradas posibles para un campode dynpro. Si el campo está listo para la entrada, el usuario puede introducir unvalor seleccionándolo de la lista.

Si un campo tiene ayuda para entradas, el botón de entradas posibles aparece a suderecha. El botón se hace visible cuando se sitúa el cursor en el campo. Se puedelanzar la ayuda o bien haciendo clic sobre el botón o bien pulsado la tecla F4.

Además de las entradas posibles, la ayuda para entradas visualiza informaciónadicional relevante de las entradas. Esta característica resulta especialmentepráctica cuando el campo requiere una clave formal.

Puesto que la ayuda para entradas es una función estándar, debería tener el mismoaspecto y conducta en todo el sistema. Las utilidades del Workbench ABAP lepermitirán asignar una ayuda para entradas estándar en un campo de dynpro.

La descripción precisa de la ayuda para entradas de un campo, por lo general,surge de su semántica. Por consiguiente, la ayuda para entradas se suele definiren el Dictionary ABAP.

120 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 131: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Gráfico 80: Cuadros desplegables:

Los cuadros desplegables permiten que el usuario elija una entrada de una listaque contiene todas las entradas posibles. El usuario no puede indicar los valoresque quiera, sino que debe elegir uno de la lista.

Para crear un cuadro desplegable para un campo de entrada, deberá procedercomo sigue en el Screen Painter:

Fije el atributo Desplegable para Lista desplegable o para Lista desplegable contecla.

Cambie el atributo Longitud visible por la longitud visualizada del textodescriptivo.

Fije el atributo Lista de valores en " " (espacio) para utilizar la ayuda para valoresdel Dictionary ABAP.

Lista desplegable con tecla (disponible desde Servidor de aplicación Web SAP6.10) implementa la visualización de la tecla además del texto, mientras que Listadesplegable deja la elección en manos de cada usuario, en función de si le gustao no ver la tecla.

Si es preciso, fije el código de función para la selección. Como si fuera unaentrada de menú, esta función desencadena el PAI; el código de función se puedeinterpretar con el campo OK_CODE.

Importante: La longitud visible del campo determina el ancho del campo,incluidos el botón y la lista de selección. Cuando el campo se convierte en uncuadro desplegable, se debe modificar su anchura.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 121

Page 132: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Los valores se cumplimentan de forma automática con la Ayuda para búsquedaasignada al campo Dictionary ABAP. El campo Dictionary ABAP debe tener unaayuda para búsqueda, una tabla de verificación de dos columnas o una tabla devalores fijos.

Demostración: Demonstration ofSAPBC410INPD_E_HELP_FOR_INPUT

ObjetivoTo demonstrate SAPBC410INPD_E_HELP_FOR_INPUT

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. From the result of your last demo. Change the input of the carrier to a

dropdown list box. Demonstrate the easiest way, or show the above demoand the corresponding settings for the I/O-field.

122 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 133: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

111 Ejercicio 3: Verificaciones de entrada yayuda para entradasDuración del ejercicio: 35 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Define detalles para campos de entrada/salida

Ejemplo empresarialDar soporte al usuario verificando las entradas y proporcionándole ayuda paraentradas.

Tarea:Mejorar las verificaciones de entrada y ampliar las opciones de navegación en lapantalla 100.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicioanterior o copie la solución modelo relevante del último ejercicioSAPMBC410ADIAS_GUI.

Puede emplear la solución de modelo SAPMBC410ADIAS_INPUT_FIELDcomo orientación.

2. Asegúrese de que los campos Compañía aérea, Número de vuelo y Fecha devuelo se cumplimentan de forma automática con los valores de la memoriaSAP.

Modifique el mensaje de información del módulo PAI CHECK_SFLIGHTpor un mensaje de error. Asegúrese de que los campos estén listos para laentrada si no existe un registro de datos.

De lo contrario, una selección de la base de datos sólo se debería realizar siel usuario ha introducido valores nuevos en la pantalla.

3. Asigne los códigos de función EXIT y CANCELAR a las teclas estándarMay-F3 (Exit) y F12 (Cancelar). Asegúrese de que estas funciones seprocesan antes de las verificaciones de entrada automáticas. Si el usuariomarca EXIT, salir del programa. Si el usuario marca CANCELAR, inicializarlos campos de entrada/salida y visualizar de nuevo la pantalla.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 123

Page 134: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

4. Opcional: Asegúrese de que se leen los valores adecuados en la tablaSFLIGHT con la memoria SAP cuando se inicia el programa sin que elusuario tenga que lanzar primero el PAI.

Consejo: Utilice el evento LOAD-OF-PROGRAM para ello y creeun Include nuevo (con la navegación hacia adelante).

5. Ofrezca la selección de compañía aérea con una lista desplegable. En lapantalla 100, fije el atributo Desplegable en Lista desplegable para el campode entrada/salida SDYN_CONN-CARRID. Asegúrese de que el atributo deprograma Lista de valores esté fijado en ‘ ’.

124 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 135: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Solución 3: Verificaciones de entrada yayuda para entradasTarea:Mejorar las verificaciones de entrada y ampliar las opciones de navegación en lapantalla 100.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicioanterior o copie la solución modelo relevante del último ejercicioSAPMBC410ADIAS_GUI.

Puede emplear la solución de modelo SAPMBC410ADIAS_INPUT_FIELDcomo orientación.

a) Consulte la solución modelo.

2. Asegúrese de que los campos Compañía aérea, Número de vuelo y Fecha devuelo se cumplimentan de forma automática con los valores de la memoriaSAP.

Modifique el mensaje de información del módulo PAI CHECK_SFLIGHTpor un mensaje de error. Asegúrese de que los campos estén listos para laentrada si no existe un registro de datos.

De lo contrario, una selección de la base de datos sólo se debería realizar siel usuario ha introducido valores nuevos en la pantalla.

a) Consulte la solución modelo.

3. Asigne los códigos de función EXIT y CANCELAR a las teclas estándarMay-F3 (Exit) y F12 (Cancelar). Asegúrese de que estas funciones seprocesan antes de las verificaciones de entrada automáticas. Si el usuariomarca EXIT, salir del programa. Si el usuario marca CANCELAR, inicializarlos campos de entrada/salida y visualizar de nuevo la pantalla.

a) Consulte la solución modelo.

4. Opcional: Asegúrese de que se leen los valores adecuados en la tablaSFLIGHT con la memoria SAP cuando se inicia el programa sin que elusuario tenga que lanzar primero el PAI.

Consejo: Utilice el evento LOAD-OF-PROGRAM para ello y creeun Include nuevo (con la navegación hacia adelante).

a) Consulte la solución modelo.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 125

Page 136: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

5. Ofrezca la selección de compañía aérea con una lista desplegable. En lapantalla 100, fije el atributo Desplegable en Lista desplegable para el campode entrada/salida SDYN_CONN-CARRID. Asegúrese de que el atributo deprograma Lista de valores esté fijado en ‘ ’.

a) Consulte la solución modelo.

ResultadoSolución modelo SAPMBC410AINPS_INPUT_FIELD

Programa principal

* Data objects

INCLUDE MBC410AINPS_INPUT_FIELDTOP.

* PAI modules

INCLUDE MBC410AINPS_INPUT_FIELDI01.

* PBO modules

INCLUDE MBC410AINPS_INPUT_FIELDO01.

* ABAP events

INCLUDE MBC410AINPS_INPUT_FIELDE02.

Pantalla de lógica de proceso 100

PROCESS BEFORE OUTPUT.

MODULE status_0100.

MODULE move_to_dynp.

MODULE clear_ok_code.

PROCESS AFTER INPUT.

MODULE exit AT EXIT-COMMAND.

CHAIN.

FIELD: sdyn_conn-carrid,

sdyn_conn-connid,

sdyn_conn-fldate.

MODULE check_sflight ON CHAIN-REQUEST.

ENDCHAIN.

MODULE user_command_0100.

Include TOP

No hay cambios en relación con el ejercicio anterior.

Include de módulo PBO

No hay cambios en relación con el ejercicio anterior.

Continúa en la página siguiente

126 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 137: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Include de módulo PAI

*&---------------------------------------------------------------------*

*& Module check_sflight INPUT

*&---------------------------------------------------------------------*

* Read flight record from database

*----------------------------------------------------------------------*

MODULE check_sflight INPUT.

SELECT SINGLE *

FROM sflight

* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read

INTO wa_sflight " Read into internal structure

WHERE carrid = sdyn_conn-carrid AND

connid = sdyn_conn-connid AND

fldate = sdyn_conn-fldate.

CHECK sy-subrc <> 0.

CLEAR wa_sflight.

MESSAGE e007(bc410).

ENDMODULE. " check_sflight INPUT

*&---------------------------------------------------------------------*

*& Module user_command_0100 INPUT

*&---------------------------------------------------------------------*

* process user command

*----------------------------------------------------------------------*

MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

* display time on add'l screen

WHEN 'TIME'.

CALL SCREEN 150

STARTING AT 10 10

ENDING AT 50 20.

ENDCASE.

ENDMODULE. " user_command_0100 INPUT

*&---------------------------------------------------------------------*

*& Module exit INPUT

*&---------------------------------------------------------------------*

* process EXIT functions (type 'E')

*----------------------------------------------------------------------*

MODULE exit INPUT.

CASE ok_code.

WHEN 'CANCEL'.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 127

Page 138: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

CLEAR wa_sflight.

SET PARAMETER ID:

'CAR' FIELD wa_sflight-carrid,

'CON' FIELD wa_sflight-connid,

'DAY' FIELD wa_sflight-fldate.

LEAVE TO SCREEN 100.

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " exit INPUT

Evento Include

LOAD-OF-PROGRAM.

* get stored values from SAP memory

GET PARAMETER ID:

'CAR' FIELD sdyn_conn-carrid,

'CON' FIELD sdyn_conn-connid,

'DAY' FIELD sdyn_conn-fldate.

* retrieve detail data of flight

SELECT SINGLE *

FROM sflight

INTO wa_sflight

WHERE carrid = sdyn_conn-carrid AND

connid = sdyn_conn-connid AND

fldate = sdyn_conn-fldate.

128 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 139: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de campos de entrada/salida

Resumen de la lección

Ahora podrá:• Crear campos de entrada/salida• Verificar errores en campos de entrada/salida• Crear un cuadro desplegable para un campo de entrada

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 129

Page 140: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Lección:118

Casillas de selección, grupos de botones de seleccióny pulsadoresDuración de la lección: 40 Minutos

Resumen de la lecciónEn esta unidad, aprenderá a crear, utilizar y modificar los atributos de casillas deselección, grupos de botones de selección y pulsadores. Además, aprenderá aasignar un código de función a un botón de selección una vez se ha definido elgrupo de botones. Por último, aprenderá a procesar botones de selección.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear casillas de selección en sus programas• Crear grupos de botones de selección• Crear pulsadores

Describe when and how to create checkboxes, radio button groups, andpushbuttons. Also, discuss how to assign a function code to a radio button afterdefining a radio button group.

Checkboxes and Radio Button Groups

Define the term and give examples for using.

Radio Button Groups and Checkboxes: Attributes

Concentrate on important attributes.

Program Flow for Radio Buttons and Checkboxes

Refer to the demo. Explain the technique. Remark that it works in the same way asGUI functions, but the function does not belong to the function list of the interface.

Pushbuttons

Define the term and give examples for using.

Pushbuttons: Attributes

Concentrate on important attributes. This slide is mainly for reference.

Exercise for Creating Input/Output Fields on Screens

130 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 141: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

The participants have to copy the structure SDYN_CONN00 first. Demonstratethis since in most cases it is difficult for them to work with the Dictionary. Thisstructure does not contain all search helps. Assigning the search helps is includedin a later exercise.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando pantallas de la aplicación. La aplicación debería permitir alos usuarios interactuar con el programa, crear casillas de selección, grupos debotones de selección y pulsadores como elementos de pantalla.

Casillas de selección y grupos de botones deselección

Gráfico 81: Casillas de selección y grupos de botones de selección

Utilice botones de selección cuando quiera que un usuario pueda elegir únicamenteun elemento de un grupo de campos.

Utilice casillas de selección cuando quiera que un usuario pueda elegir uno omás elementos de un grupo de campos.

Con los botones de selección, una selección excluye todas las demás opcionesdel grupo. Cuando el usuario selecciona una, todas las demás se desmarcanautomáticamente.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 131

Page 142: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 82: Botones de selección y casillas de selección: Atributos

Se debe anexar un nombre a las casillas de selección y los botones de selección.

Además del campo de entrada/salida, puede visualizar texto e iconos para ellos. Eltexto se encuentra en el campo Texto de los atributos. Para visualizar un icono,introduzca su nombre en el atributo Nombre de icono. Entonces aparece una quickinfo para el icono en el campo correspondiente.

Puede modificar los atributos de Campo de entrada y Visible de forma dinámicacon la tabla de sistema SCREEN.

Gráfico 83: Creación de una casilla de selección

132 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 143: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Las casillas de selección se crean con el editor de pantalla completa del ScreenPainter. Para ello, seleccione el objeto de casilla de selección de la lista de objetosy sitúelo en la pantalla. Debe asignar un nombre a todas las casillas de selección.En el programa ABAP, cree un campo con el mismo nombre, clase C y longituduno.

Puede saber si un usuario ha marcado una casilla de selección en el programaABAP consultando el contenido del campo. Si una casilla no está seleccionada,su valor de campo será inicial.

Se puede asignar un código de función y un tipo de función a una casilla deselección. Cuando el usuario la seleccione, se lanzará el evento PAI y se ubicará elcódigo de función en el campo de comandos, es decir, el campo OK_CODE.

Gráfico 84: Creación de un grupo de botones de selección

Las casillas de selección se crean con el editor de layout del Screen Painter. Sedeben seguir dos pasos:

Cree los botones de selección como elementos individuales. Seleccione botón deselección en la lista de objetos y sitúelo en la pantalla. Debe asignar un nombrea todos los botones de selección. En el programa ABAP, cree un campo con elmismo nombre, clase C y longitud uno. A fin de que sus programas sean másfáciles de leer y actualizar, cree una estructura asociada a cada grupo de botonesde selección.

También puede combinar una serie de botones de selección con un grupo debotones de selección. Para ello, marque los botones de selección del editor delayout y luego marque Tratar → Grupo → Grupo de botones de selección →Definir.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 133

Page 144: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Puede saber qué botón de selección ha elegido un usuario consultando el contenidodel campo en el programa ABAP. Si no hay ningún botón seleccionado, su valorde campo será inicial.

Asigne un código de función y un tipo de función a un grupo de botones deselección. Cuando el usuario seleccione uno de los botones, se lanzará el eventoPAI y se ubicará el código de función en el campo de comandos, es decir, elcampo OK_CODE.

Gráfico 85: Ejecución de programa para botones de selección y casillasde selección

En función de si se ha asignado o no un código de función a una casilla o botón deselección, cuando se marque el campo el sistema lanzará o no un evento PAI.

Puede asignarse un código de función a un botón de selección una vez se hadefinido un grupo de botones. Luego, el sistema asigna el mismo código defunción a todos los botones de selección del grupo.

Demostración: Demonstration ofSAPMBC410INPD_H_CHECKBOX

ObjetivoTo demonstrate SAPMBC410INPD_H_CHECKBOX

134 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 145: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Start transaction BC410INPD_J in order to show the aimed functionality.

2. Copy SAPMBC410INPD_G_PRE_SPECIAL. Note that it is a module pool,you need a transaction to start it.

3. Insert the checkbox and the corresponding dynamic screen modification.Here you should code the screen modification. The participants will do so inthe next exercise, but they should give you the method.

Demostración: Demonstration ofSAPMBC410INPD_I_RADIOBUTTON

ObjetivoTo demonstrate SAPMBC410INPD_I_RADIOBUTTON

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Insert the radio button group and the corresponding functionality.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 135

Page 146: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Pulsadores

Gráfico 86: Pulsadores

Los pulsadores son campos de entrada para el campo de comandos, es decir, elcampo OK_CODE.

Con el ratón, los usuarios pueden acceder fácilmente a funciones relacionadas conelementos individuales de pantalla o con grupos de elementos de pantalla.

Utilice pulsadores en el área de datos de su pantalla para mostrar u ocultar másinformación.

Si un pulsador se refiere a un único campo o a un pequeño grupo de campos,asegúrese de que el pulsador esté lo más cerca posible de él. Si la función serefiere a un grupo, déjelo claro con un marco de grupo.

Si los pulsadores se refieren a una tabla que se ve en la pantalla, sitúelos por debajode ésta en una fila horizontal dejando una línea en blanco entre ellos y la tabla.

Cuando el usuario marca un pulsador, el sistema informa al programa de la funciónque se ha elegido. En este punto, el control del programa retrocede a un procesode trabajo en el servidor de aplicación que trata el bloque de proceso PAI.

136 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 147: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Gráfico 87: Pulsadores: Atributos

Los pulsadores pueden contener texto, atributo de Texto, un icono, o ambos. Unicono se puede especificar de forma estática o dinámica, con el módulo de funciónICON_CREATE.

Puede modificar los atributos longitud visible, campo de salida e Invisible deforma dinámica con la tabla de sistema SCREEN.

El texto de un pulsador se puede modificar de forma dinámica. Para ello, fije elatributo Campo de salida como activo en el Screen Painter y cree un campo globalcon el mismo nombre en su programa ABAP. Puesto que el campo Screen Paintery el campo de programa tienen el mismo nombre, los cambios que se realicen enel contenido del campo se verán inmediatamente en la pantalla de forma parecidaa campos de entrada/salida.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 137

Page 148: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Gráfico 88: Creación y proceso de pulsadores

Cuando se crea un pulsador, se debe:

Crear un pulsador: Seleccione el objeto de pulsador de la lista de elementosScreen Painter, sitúelo en la pantalla y asígnele un nombre. Puede indicar untexto estático en el atributo Texto. Indique un código de función para el pulsadoren el atributo Código de función. Éste se ubica automáticamente en el campoOK_CODE cuando el usuario propone el pulsador en la pantalla.

Active el campo de comandos, campo OK_CODE: Debe dar un nombre alcampo en la lista de elementos del Screen Painter y luego declarar un campo conexactamente el mismo nombre en el programa ABAP con referencia al campode sistema sy-ucomm.

Cuando el usuario elige una función en la pantalla, el sistema sitúa el códigode función correspondiente en el campo OK_CODE. Así, más adelante puedeconsultar el campo y aplicar el resultado para lanzar el bloque de proceso con elcódigo pertinente.

Si el usuario marca un pulsador que tiene el tipo de función " " (espacio), seprocesa el evento PAI.

Si el usuario marca un pulsador que tiene el tipo de función E, el sistema procesaun módulo con el suplemento AT EXIT-COMMAND. Esta operación se da antesdel transporte automático de campos y las verificaciones de entradas de campo. Elsistema ubica el código de función que se ha lanzado en el campo OK_CODE, quemás adelante podrá consultar en el módulo.

138 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 149: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Tras el módulo AT EXIT-COMMAND, el sistema sigue procesando la pantallanormalmente, luego las verificaciones de entradas de campo y, por último, elproceso PAI.

Demostración: Demonstration ofSAPMBC410INPD_J_READY_SPECIAL

ObjetivoTo demonstrate SAPMBC410INPD_J_READY_SPECIAL

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Copy SAPMBC410INPD_I_RADIOBUTTON or use the resulting program

of the corresponding demo. Insert the display/change toggle into screen 200.Insert the corresponding screen modification. For simplicity you can leavethe dynamic text for the TOGGLE-pushbutton since it is a little bit tricky. Toshow it, perform the following steps.

1. Create the pushbutton using an icon as text.2. Set the program attribute ’output’. The icon changes to a status icon.3. Use the function module ICON_CREATE to set the correct value.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 139

Page 150: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

140 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 151: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

127 Ejercicio 4: Botones de selección yverificaciones de entradaDuración del ejercicio: 75 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear botones de selección y programar la lógica relevante• Practicar modificaciones dinámicas a imágenes

Ejemplo empresarialTodos los usuarios deben poder pasar de un modo de programa a otro:

• Modo de visualización• Actualización de datos de vuelo cuando el usuario pueda modificar la clase

de avión• Actualización de reservas

Tarea:Cree un grupo de botones de selección para que el usuario pueda elegir entre unaserie de modos de programa.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo anterior SAPMBC410ADIAS_INPUT_FIELD.Puede emplear la solución de modelo SAPMBC410ADIAS_RADIOBUTTONcomo orientación.

2. En la pantalla 100, cree un grupo de botones de selección con los botonesview, maintain_flights y maintain_bookings. Asegúrese de que el código defunción MODE (de la clase ‘ ’) se lanza cuando el usuario marca un mododistinto.

Declare los campos de datos relevantes en su Include TOP. Cree un marco degrupo en torno al grupo de botones de selección y asígnele el texto “Modo”.

3. Fije el título GUI en consonancia con el modelo que haya elegido el usuario.(Recordatorio: su título GUI debería tener un parámetro que indique que yano necesita crear un título nuevo.)

4. Programar el modo de Actualización de datos del vuelo. En este modo, elcampo de entrada/salida SDYN_CONN-PLANETYPE debería estar listo parala entrada. Codificar la modificación relevante de la pantalla dinámica en unmódulo con el nombre modify_screen.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 141

Page 152: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Opcional:

Si el usuario indica un tipo nuevo de avión, compruebe si el número deasientos reservados es mayor que el número máximo de asientos. Paraello, actualice el campo SDYN_CONN-SEATSMAX en la tabla SAPLANE.Si surge un error, se visualiza el mensaje 109 del tipo de mensajes BC410como mensaje de error. Si surge un error, transporte el número máximode asientos de nuevo a la pantalla.

5. Opcional: Se debe grabar el nuevo tipo de avión.

Asigne el código de función SAVE (tipo de función " ") a la clave estándarCTRL-S (grabar). La función sólo debería estar disponible si el botón deselección está fijado en Actualización de datos del vuelo. (Consejo: Utiliceel suplemento EXCLUDING en el comando SET PF-STATUS.)

Si el usuario elige esta función, grabe el nuevo registro de datos del vueloen la base de datos. Para ello, utilice una actualización directa de base dedatos con la forma:

UPDATE sflight FROM wa_sflight.

IF sy-subrc NE 0.

MESSAGE a008(bc410).

ENDIF.

MESSAGE s009(bc410).

142 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 153: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Solución 4: Botones de selección yverificaciones de entradaTarea:Cree un grupo de botones de selección para que el usuario pueda elegir entre unaserie de modos de programa.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo anterior SAPMBC410ADIAS_INPUT_FIELD.Puede emplear la solución de modelo SAPMBC410ADIAS_RADIOBUTTONcomo orientación.

a) Consulte la solución modelo.

2. En la pantalla 100, cree un grupo de botones de selección con los botonesview, maintain_flights y maintain_bookings. Asegúrese de que el código defunción MODE (de la clase ‘ ’) se lanza cuando el usuario marca un mododistinto.

Declare los campos de datos relevantes en su Include TOP. Cree un marco degrupo en torno al grupo de botones de selección y asígnele el texto “Modo”.

a) Consulte la solución modelo.

3. Fije el título GUI en consonancia con el modelo que haya elegido el usuario.(Recordatorio: su título GUI debería tener un parámetro que indique que yano necesita crear un título nuevo.)

a) Consulte la solución modelo.

4. Programar el modo de Actualización de datos del vuelo. En este modo, elcampo de entrada/salida SDYN_CONN-PLANETYPE debería estar listo parala entrada. Codificar la modificación relevante de la pantalla dinámica en unmódulo con el nombre modify_screen.

Opcional:

Si el usuario indica un tipo nuevo de avión, compruebe si el número deasientos reservados es mayor que el número máximo de asientos. Paraello, actualice el campo SDYN_CONN-SEATSMAX en la tabla SAPLANE.Si surge un error, se visualiza el mensaje 109 del tipo de mensajes BC410como mensaje de error. Si surge un error, transporte el número máximode asientos de nuevo a la pantalla.

a) Consulte la solución modelo.

5. Opcional: Se debe grabar el nuevo tipo de avión.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 143

Page 154: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

Asigne el código de función SAVE (tipo de función " ") a la clave estándarCTRL-S (grabar). La función sólo debería estar disponible si el botón deselección está fijado en Actualización de datos del vuelo. (Consejo: Utiliceel suplemento EXCLUDING en el comando SET PF-STATUS.)

Si el usuario elige esta función, grabe el nuevo registro de datos del vueloen la base de datos. Para ello, utilice una actualización directa de base dedatos con la forma:

UPDATE sflight FROM wa_sflight.

IF sy-subrc NE 0.

MESSAGE a008(bc410).

ENDIF.

MESSAGE s009(bc410).

a) Consulte la solución modelo.

ResultadoSolución modelo SAPMBC410AINPS_RADIOBUTTON

Programa principal

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 100

PROCESS BEFORE OUTPUT.

MODULE status_0100.

MODULE move_to_dynp.

MODULE clear_ok_code.

MODULE modify_screen.

PROCESS AFTER INPUT.

MODULE exit AT EXIT-COMMAND.

CHAIN.

FIELD: sdyn_conn-carrid,

sdyn_conn-connid,

sdyn_conn-fldate.

MODULE check_sflight ON CHAIN-REQUEST.

ENDCHAIN.

CHAIN.

FIELD:

sdyn_conn-seatsmax,

sdyn_conn-planetype.

MODULE check_planetype ON CHAIN-REQUEST.

Continúa en la página siguiente

144 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 155: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

ENDCHAIN.

MODULE user_command_0100.

Include TOP

PROGRAM sapmbc410adias_dynpro.

* screen structure

TABLES: sdyn_conn.

DATA:

* workarea for database access

wa_sflight TYPE sflight,

* function code at PAI

ok_code LIKE sy-ucomm,

* radio buttons

view VALUE 'X',

maintain_flights,

maintain_bookings.

Include de módulo PBO

*&---------------------------------------------------------------------*

*& Module move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

* copy data to screen structure

*----------------------------------------------------------------------*

MODULE move_to_dynp OUTPUT.

MOVE-CORRESPONDING wa_sflight TO sdyn_conn.

ENDMODULE. " move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

*& Module status_0100 OUTPUT

*&---------------------------------------------------------------------*

* set status and title for screen 100

*----------------------------------------------------------------------*

MODULE status_0100 OUTPUT.

CASE 'X'.

WHEN view.

SET TITLEBAR 'TITLE_100' WITH 'Display'(vie).

WHEN maintain_flights.

SET TITLEBAR 'TITLE_100' WITH 'Maintain Flights'(fli).

WHEN maintain_bookings.

SET TITLEBAR 'TITLE_100' WITH 'Maintain Bookings'(boo).

ENDCASE.

ENDMODULE. " status_0100 OUTPUT

*&---------------------------------------------------------------------*

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 145

Page 156: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

*& Module status_0150 OUTPUT

*&---------------------------------------------------------------------*

* set status and title for screen 150

*----------------------------------------------------------------------*

MODULE status_0150 OUTPUT.

SET PF-STATUS 'STATUS_150'.

SET TITLEBAR 'TITLE_150' WITH text-vie.

ENDMODULE. " status_0150 OUTPUT

*&---------------------------------------------------------------------*

*& Module clear_ok_code OUTPUT

*&---------------------------------------------------------------------*

* initialize ok_code

*----------------------------------------------------------------------*

MODULE clear_ok_code OUTPUT.

CLEAR ok_code.

ENDMODULE. " clear_ok_code OUTPUT

*&---------------------------------------------------------------------*

*& Module modify_screen OUTPUT

*&---------------------------------------------------------------------*

* change elements dynamically

*----------------------------------------------------------------------*

MODULE modify_screen OUTPUT.

IF maintain_flights = 'X'.

SET PF-STATUS 'STATUS_100'.

LOOP AT SCREEN.

IF screen-name = 'SDYN_CONN-PLANETYPE'.

screen-input = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSE.

SET PF-STATUS 'STATUS_100' EXCLUDING 'SAVE'.

ENDIF.

ENDMODULE. " modify_screen OUTPUT

Include de módulo PAI

*&---------------------------------------------------------------------*

*& Module check_sflight INPUT

*&---------------------------------------------------------------------*

* Read flight record from database

*----------------------------------------------------------------------*

MODULE check_sflight INPUT.

SELECT SINGLE *

FROM sflight

Continúa en la página siguiente

146 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 157: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

* INTO CORRESPONDING FIELDS OF sdyn_conn " direct read

INTO wa_sflight " Read into internal structure

WHERE carrid = sdyn_conn-carrid AND

connid = sdyn_conn-connid AND

fldate = sdyn_conn-fldate.

CHECK sy-subrc <> 0.

CLEAR wa_sflight.

MESSAGE e007(bc410).

ENDMODULE. " check_sflight INPUT

*&---------------------------------------------------------------------*

*& Module user_command_0100 INPUT

*&---------------------------------------------------------------------*

* process user command

*----------------------------------------------------------------------*

MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

* display time on add'l screen

WHEN 'TIME'.

CALL SCREEN 150

STARTING AT 10 10

ENDING AT 50 20.

* save changes to database

WHEN 'SAVE'.

UPDATE sflight

FROM wa_sflight.

IF sy-subrc <> 0.

MESSAGE a008(bc410).

ENDIF.

MESSAGE s009(bc410).

ENDCASE.

ENDMODULE. " user_command_0100 INPUT

*&---------------------------------------------------------------------*

*& Module exit INPUT

*&---------------------------------------------------------------------*

* process EXIT functions (type 'E')

*----------------------------------------------------------------------*

MODULE exit INPUT.

CASE ok_code.

WHEN 'CANCEL'.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 147

Page 158: 119167629 taw10-02-es

Capítulo 4: Elementos de pantalla para entrada/salida TAW10_2

CLEAR wa_sflight.

SET PARAMETER ID:

'CAR' FIELD wa_sflight-carrid,

'CON' FIELD wa_sflight-connid,

'DAY' FIELD wa_sflight-fldate.

LEAVE TO SCREEN 100.

WHEN 'EXIT'.

LEAVE PROGRAM.

ENDCASE.

ENDMODULE. " exit INPUT

*&---------------------------------------------------------------------*

*& Module check_planetype INPUT

*&---------------------------------------------------------------------*

* text

*----------------------------------------------------------------------*

MODULE check_planetype INPUT.

IF sdyn_conn-planetype IS INITIAL.

MESSAGE e555(bc410) WITH 'Plane type needed'(plt).

ENDIF.

SELECT SINGLE seatsmax

FROM saplane

INTO sdyn_conn-seatsmax

WHERE planetype = sdyn_conn-planetype.

IF sdyn_conn-seatsocc > sdyn_conn-seatsmax.

MESSAGE e109(bc410).

* Number of seats booked exceeds aircraft capacity

ELSE.

MOVE-CORRESPONDING sdyn_conn TO wa_sflight.

ENDIF.

ENDMODULE. " check_planetype INPUT

148 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 159: 119167629 taw10-02-es

TAW10_2 Lección: Casillas de selección, grupos de botones de selección y pulsadores

Resumen de la lección

Ahora podrá:• Crear casillas de selección en sus programas• Crear grupos de botones de selección• Crear pulsadores

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 149

Page 160: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Crear campos de entrada/salida• Verificar errores en campos de entrada/salida• Crear un cuadro desplegable para un campo de entrada• Crear casillas de selección en sus programas• Crear grupos de botones de selección• Crear pulsadores

150 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 161: 119167629 taw10-02-es

TAW10_2 Examine sus conocimientos

137Examine sus conocimientos

1. Cuando se interrumpe el proceso aparace el mensaje siguiente y el usuariopuede corregir las entradas:

Seleccione la(s) respuesta(s) correcta(s).□ A E Error□ B W Advertencia□ C I Información□ D X Exit

2. La del campo determina el ancho del campo,incluidos el botón y la lista de selección.Rellene los espacios en blanco para completar las frases.

3. La función Back se distingue de la función Cancelar por su comportamiento.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

4. Elabore una lista de los pasos que se deben seguir para crear un pulsador.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 151

Page 162: 119167629 taw10-02-es

Examine sus conocimientos TAW10_2

138Respuestas

1. Cuando se interrumpe el proceso aparace el mensaje siguiente y el usuariopuede corregir las entradas:

Respuesta: B

El mensaje "W Advertencia" aparece cuando se interrumpe el proceso y elusuario puede corregir las entradas.

2. La longitud visible del campo determina el ancho del campo, incluidos elbotón y la lista de selección.

Respuesta: longitud visible

3. La función Back se distingue de la función Cancelar por su comportamiento.

Respuesta: Falso

La función Cancelar se distingue de la función Back por su comportamiento.

4. Elabore una lista de los pasos que se deben seguir para crear un pulsador.

Respuesta: Marque el objeto de pulsador de la lista de elementos ScreenPainter, sitúelo en la pantalla y asígnele un nombre. Puede indicar un textoestático en el atributo Texto. Indique un código de función para el pulsadoren el atributo Código de función. Éste se ubica automáticamente en el campoOK_CODE cuando el usuario propone el pulsador en la pantalla.

152 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 163: 119167629 taw10-02-es

Capítulo 5139 Elementos de pantalla: Subscreens y

controles de fichas

Describe the subscreen area and its attributes. Describe screens of type subscreen.Be sure to mention that a subscreen does not have a command field and thatany pushbutton function codes, if they exist on the subscreen, are passed to thecommand field of the main screen. Describe the flow logic command CALLSUBSCREEN. Discuss techniques involved in including screens from otherprograms.

Tabstrip controls are a combination of 2 techniques previously discussed:

• Pushbuttons• Subscreen Areas/Subscreens.

Discuss the attributes of a tabstrip and the tab. Discuss the declaration of thecontrol in the global data of the main program. Introduce the CONTROLSdeclarative. It is imperative that you discuss the technique of local scrolling first.This is easier for the participants to understand, and requires less complicatedcoding. Note that the Tabstrip Control plays an essential role for SAP’s newprogramming model.

Nota: The control name used must be IDENTICAL to the field name ofthe tabstrip in Screen Painter.

Resumen del capítuloEsta unidad abarca aspectos esenciales del uso de subscreens y controles defichas. Se abordan dos técnicas para el uso de subscreens para la modularizaciónde pantalla. En esta unidad se expone el mecanismo que permite que el usuariovisualice información relacionada en una única imagen mediante un control deficha sin tener que navegar a través de muchas imágenes detalladas.

Objetivos del capítuloAl finalizar este capítulo podrá:

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 153

Page 164: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

• Crear subscreens en imágenes• Utilizar grupos de funciones en subscreens• Crear controles de fichas• Desplazarse en controles de fichas

Contenido del capítuloLección: Subscreens ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .155

Demostración: Demonstration of SAPBC410SUBD_B_SUB-SCREEN.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164Ejercicio 5: Subscreens ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167

Lección: Controles de ficha... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .178Demostración: Demonstration of SAPBC410SUBD_D_TABSTRIP_LO-CAL ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190Demostración: Demonstration of SAPBC410SUBD_E_TABSTRIP 191Demostración: Demonstration of Tabstrip Wizard... . . . . . . . . . . . . . . . . . . .191Ejercicio 6: Creación de controles de fichas ... . . . . . . . . . . . . . . . . . . . . . . . . .193

154 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 165: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Lección:140

SubscreensDuración de la lección: 45 Minutos

Resumen de la lecciónEn esta unidad se explica que un área subscreen es un área rectangular reservada enuna pantalla, en la que se ubica otra pantalla en tiempo de ejecución. Conocerá losatributos generales y de subscreen del área subscreen. También aprenderá a creary a llamar un área subscreen, y a encapsular subscreens en un grupo de funciones.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear subscreens en imágenes• Utilizar grupos de funciones en subscreens

Give examples of situations where subscreens are used. Explain how to create andcall a subscreen area.

Subscreens (1)

Define the term and give examples of use. This slide displays the first application.Discuss the possibility of customer subscreens.

Subscreens (2)

This slide shows the second application. Reuse of screens of the same program oranother program.

Subscreen Area: Attributes

Concentrate on important attributes. This slide is mainly for reference. Dividestrongly between subscreen and the corresponding area.

Calling a Subscreen

Refer to the demo. Let the participants think a little bit about the fact that the nameof the program belongs to the statement.

Special Case: Visibility of Data

Emphasize that the data fields used for the name of the program and the screenare global data of the ABAP program. Nevertheless the screen processor controlsthe flow logic.

Subscreens From External Programs

Comment on the fact that the subscreen belongs to program B and therefore it canonly project the global data of program B. The data needs to be passed to theglobal data of the called program in which the subscreen is defined. More datapassing techniques are discussed later on.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 155

Page 166: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Subscreens: Encapsulation in Function Groups

This slide explains why we have to use functional groups for program B.

Subscreens in Function Groups: Call Sequence

Emphasize that the PBO of the subscreen screen is inserted into the PBO fromthe calling screen. Therefore the data transport has to take place before. On theother hand in the PAI the transport of data from the functional group to the callingprogram must take place after the CALL SCREEN statement.

Subscreens in Function Groups: Data Transport

Explain how the functional modules can import data to or export data from theglobal data of the functional group, respectively.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos para susclientes utilizando pantallas de la aplicación. Para dichas imágenes, necesita crearsubscreens para visualizar información adicional.

Utilización de los subscreens

Gráfico 89: Subscreens (1)

156 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 167: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Un área de subscreen es un área rectangular reservada en una pantalla, en la quese ubica otra imagen en tiempo de ejecución. Las áreas subscreen no puedencontener otros elementos de pantalla. Para utilizar un subscreen, cree una segundapantalla del tipo subscreen y visualícela en el área subscreen que ha definidoen la pantalla principal.

Un subscreen es una pantalla independiente que se visualiza dentro de otrapantalla. Puede ser que quiera utilizar un subscreen como una forma de visualizarun grupo de objetos de la pantalla principal en determinadas circunstancias, perono en otras. Puede recurrir a esta técnica para mostrar u ocultar campos adicionalesen la pantalla principal, en función de las entradas que haya realizado el usuario.

Gráfico 90: Subscreens (2)

Otra aplicación de los subscreens es que distintos programas pueden emplear unmismo subscreen. Para configurarla debe ejecutar otros programas de pantalladentro del programa principal.

Puede añadir más de un subscreen en una sola imagen principal. También puededeterminar los subscreens de forma dinámica en tiempo de ejecución.

Puede utilizar los subscreens en los casos siguientes:

• En ampliaciones de pantalla (exits de dynpro)• Dentro de otros objetos de pantalla (controles de fichas)• En el asistente de modificaciones• En transacciones Web

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 157

Page 168: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Gráfico 91: Área subscreen: Atributos

Si el subscreen es mayor que el área de subscreen en que se llama, el sistemamuestra únicamente aquello que cabe en la pantalla, comenzando por la esquinasuperior izquierda. No obstante, se puede utilizar el atributo Desplazable paraque cuando una pantalla sea demasiado grande, el sistema muestre unas barrasde desplazamiento.

Los atributos de resizing controlan si el tamaño de un área subscreen se puedemodificar en sentido vertical y horizontal. Debería fijar estos atributos si quiereque el tamaño de un área subscreen se modifique con el tamaño del conjunto de laventana. Puede emplear el atributo de tamaño mínimo para fijar un límite inferiorpor debajo del que no se puede redimensionar el área subscreen.

El atributo de Menú contextual permite asignar un menú sensible al contextopara los campos de salida del subscreen.

Las restricciones siguientes se aplican a los subscreens:

• CALL SUBSCREEN no está permitido entre LOOP y ENDLOOP ni entreCHAIN y ENDCHAIN.

• Un subscreen no puede tener un campo designado OK_CODE.• Los nombres de objeto deben ser únicos dentro del conjunto de todos los

subscreens en una única imagen principal.• Los subscreens no pueden contener un módulo con el suplemento AT

EXIT-COMMAND.• No se pueden utilizar las sentencias SET TITLEBAR, SET PF-STATUS,

SET SCREEN ni LEAVE SCREEN en los módulos de un subscreen.

158 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 169: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Gráfico 92: Creación de un área subscreen

Para crear un área subscreen seleccione subscreen en la lista de objetos del ScreenPainter y sitúelo en la pantalla. Fije la esquina superior izquierda del área decontrol de tablas y luego arrastre el objeto hasta obtener el tamaño deseado.

En el campo Texto de objeto, indique un nombre para el área subscreen. Lonecesitará para identificar el área cuando se llama el subscreen.

Proceso de subscreens

Gráfico 93: Llamar un subscreen

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 159

Page 170: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Para utilizar un subscreen debe llamarlo en las secciones PBO y PAI de la lógicade proceso de la imagen principal. La sentencia CALL SUBSCREEN ordena alsistema que ejecute los bloques de procesamiento PBO y PAI para el subscreencomo componentes de PBO y de PAI en la imagen principal. Los módulos ABAPse programan para subscreens igual que para una imagen normal (a parte de lasrestricciones que ya se han mencionado).

Gráfico 94: Caso especial: Visibilidad de los datos

Los campos que se emplean en la lógica de proceso son campos globales delprograma ABAP. Estos campos se deben declarar en el Include TOP del programa.

160 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 171: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Gráfico 95: Subscreens de programas externos

Si el subscreen no se encuentra en el mismo modulpool que el programa principal,los datos globales de este último no estarán disponibles para el subscreen y losdatos de la pantalla no se devolverán al programa. La transferencia de datos ladebe programar el propio usuario, por ejemplo, con un módulo de funciones queexporte e importe datos con una sentencia MOVE adecuada en la codificaciónde subscreen.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 161

Page 172: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Subscreens en grupos de funciones

Gráfico 96: Subscreens: Encapsulación en grupos de funciones

Si desea utilizar subscreens en imágenes de muchos programas distintos,encapsule los subscreens en un grupo de funciones y utilice módulos de funcionespara transportar los datos entre el programa en el que quiere aplicar el subscreen yel grupo de funciones.

Los datos se transfieren de un programa de llamada al grupo de funciones mediantelas interfaces de los módulos de funciones.

Ésta es la técnica que se emplea para los subscreens de cliente (ampliacionesde pantalla).

162 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 173: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Gráfico 97: Subscreens en grupos de funciones: Secuencia de llamada

Los módulos de funciones se utilizan para transportar datos entre el programa dellamada y el grupo de funciones.

Para declarar los datos del programa de llamada al subscreen desde el grupo defunciones, utilice un módulo antes de la llamada de subscreen. De este modo, sellama un módulo de funciones cuya interface se puede utilizar para transferir losdatos requeridos al grupo de funciones.

La llamada del módulo de funciones debe tener lugar antes de la llamada delsubscreen. Así, se garantiza que los datos estén en conocimiento del grupo defunciones antes de que se llame el bloque de proceso PROCESO ANTES DESALIDA del subscreen.

La secuencia se invierte en el módulo PAI de la imagen de llamada. El bloque deproceso PROCESO DESPUÉS DE LA ENTRADA del subscreen se llama antesde llamar un módulo de funciones para transferir los datos del grupo de funcionesde retorno al programa de llamada.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 163

Page 174: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Gráfico 98: Subscreens en grupos de funciones: Transporte de datos

A fin de que los datos del programa de llamada estén disponibles globalmente enel grupo de funciones, debe transferir los parámetros de interface del módulo defunciones a los campos de datos globales del grupo de funciones.

El módulo de funciones que se emplea para transferir los datos del programa dellamada al grupo de funciones debe copiar sus parámetros de interface en losdatos globales del grupo de funciones.

El módulo de funciones que se emplea para transferir los datos del grupo defunciones al programa de llamada debe copiar los datos correspondientes de losdatos globales del grupo de funciones en sus parámetros de interface.

Demostración: Demonstration ofSAPBC410SUBD_B_SUBSCREEN

ObjetivoTo demonstrate SAPBC410SUBD_B_SUBSCREEN

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:

164 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 175: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

1. Insert three further subscreens from the functional groupBC410SUBD_CONNECTION. Explain the problem of data transport.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 165

Page 176: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

166 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 177: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

149 Ejercicio 5: SubscreensDuración del ejercicio: 50 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Utilizar subscreens en pantallas de sus programas

Ejemplo empresarialPara mostrar información adicional en la pantalla, en función del modo en queesté trabajando el usuario, se añaden subscreens en la imagen de actualización.Cree tres subscreens para visualizar los datos del vuelo, los detalles técnicos delavión y las reservas.

Tarea:Amplíe la Imagen de actualización (100) para ver la información del vuelo y eltipo de avión. A tal efecto, emplee un subscreen.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo SAPMBC410AINPS_RADIOBUTTON. Puedeemplear la solución de modelo SAPMBC410ASUBS_SUBSCREEN comoorientación.

2. En la imagen de actualización (100), cree un área de subscreen con losatributos siguientes:

Subscreen SUB Atributos:

Resizing vertical y horizontal:ON

3. Cree las pantallas 110, 120 y 130, cada una de ellas con el tipo de subscreeny atributos siguientes:

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 167

Page 178: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Pan-talla110

Campos E/S, campos detexto

SDYN_CONN

-COUNTRYFR

-COUNTRYTO

-CITYFROM

-CITYTO

-AIRPFROM

-AIRPTO

-DEPTIME

-ARRTIME

Para cada campo:

Entrada: OFF

Salida: ON

Pan-talla120 Campos E/S, campos de

texto:

SAPLANE

-PLANETYPE

-PRODUCER

-SEATSMAX

-TANKCAP

-CAP_UNIT

-WEIGHT

-WEI_UNIT

-OP_SPEED

-SPEED_UNIT

Atributos de cada campo:

Entrada: OFF

Salida: ON

Sólo salida: ON

Continúa en la página siguiente

168 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 179: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Pan-talla130

vacío (suministrado para latabla de reservas)

4. En su Include TOP, cree un campo DYNNR que se pueda emplear en lalógica de proceso para determinar qué subscreen debería aparecer en elárea subscreen.

5. Llame el dynpro subscreen en la lógica de proceso de la pantalla 100. Antesde la llamada, escriba un módulo PBO para determinar cuál de los subscreensaparecerá. Si el usuario está en modo de Visualización, llame la pantalla110 de subscreen con la información de vuelo. Si el usuario está en modode Actualización de datos de vuelo, llame la pantalla 120 de subscreen conla información del avión. Si el usuario elige el modo Actualizar reservas,aparecerá la pantalla vacía 130.

6. En la lógica de proceso de la pantalla 110, lea la información de vuelo dela tabla SPFLI con los valores de campo clave.

En la lógica de proceso de la pantalla 120, lea la información del tipo de aviónde la tabla SAPLANE con los valores de que dispone para el tipo de avión.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 169

Page 180: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Solución 5: SubscreensTarea:Amplíe la Imagen de actualización (100) para ver la información del vuelo y eltipo de avión. A tal efecto, emplee un subscreen.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo SAPMBC410AINPS_RADIOBUTTON. Puedeemplear la solución de modelo SAPMBC410ASUBS_SUBSCREEN comoorientación.

a) Consulte la solución modelo.

2. En la imagen de actualización (100), cree un área de subscreen con losatributos siguientes:

Subscreen SUB Atributos:

Resizing vertical y horizontal:ON

a) Consulte la solución modelo.

3. Cree las pantallas 110, 120 y 130, cada una de ellas con el tipo de subscreeny atributos siguientes:

Pan-talla110

Campos E/S, campos detexto

SDYN_CONN

-COUNTRYFR

-COUNTRYTO

-CITYFROM

-CITYTO

-AIRPFROM

-AIRPTO

-DEPTIME

-ARRTIME

Para cada campo:

Entrada: OFF

Salida: ON

Pan- Continúa en la página siguiente

170 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 181: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

talla120 Campos E/S, campos de

texto:

SAPLANE

-PLANETYPE

-PRODUCER

-SEATSMAX

-TANKCAP

-CAP_UNIT

-WEIGHT

-WEI_UNIT

-OP_SPEED

-SPEED_UNIT

Atributos de cada campo:

Entrada: OFF

Salida: ON

Sólo salida: ON

Pan-talla130

vacío (suministrado para latabla de reservas)

a) Consulte la solución modelo.

4. En su Include TOP, cree un campo DYNNR que se pueda emplear en lalógica de proceso para determinar qué subscreen debería aparecer en elárea subscreen.

a) Consulte la solución modelo.

5. Llame el dynpro subscreen en la lógica de proceso de la pantalla 100. Antesde la llamada, escriba un módulo PBO para determinar cuál de los subscreensaparecerá. Si el usuario está en modo de Visualización, llame la pantalla110 de subscreen con la información de vuelo. Si el usuario está en modode Actualización de datos de vuelo, llame la pantalla 120 de subscreen conla información del avión. Si el usuario elige el modo Actualizar reservas,aparecerá la pantalla vacía 130.

a) Consulte la solución modelo.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 171

Page 182: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

6. En la lógica de proceso de la pantalla 110, lea la información de vuelo dela tabla SPFLI con los valores de campo clave.

En la lógica de proceso de la pantalla 120, lea la información del tipo de aviónde la tabla SAPLANE con los valores de que dispone para el tipo de avión.

a) Consulte la solución modelo.

ResultadoSolución modelo SAPMBC410ASUBS_SUBSCREEN

Programa principal

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 100

PROCESS BEFORE OUTPUT.

MODULE status_0100.

MODULE move_to_dynp.

MODULE clear_ok_code.

MODULE modify_screen.

MODULE fill_dynnr.

CALL SUBSCREEN sub INCLUDING sy-cprog dynnr.

PROCESS AFTER INPUT.

MODULE exit AT EXIT-COMMAND.

CALL SUBSCREEN sub.

CHAIN.

FIELD: sdyn_conn-carrid,

sdyn_conn-connid,

sdyn_conn-fldate.

MODULE check_sflight ON CHAIN-REQUEST.

ENDCHAIN.

CHAIN.

FIELD:

sdyn_conn-seatsmax,

sdyn_conn-planetype.

MODULE check_planetype ON CHAIN-REQUEST.

ENDCHAIN.

MODULE user_command_0100.

Pantalla de lógica de proceso 110

Continúa en la página siguiente

172 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 183: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

PROCESS BEFORE OUTPUT.

MODULE get_spfli.

*

PROCESS AFTER INPUT.

* MODULE USER_COMMAND_0110.

Pantalla de lógica de proceso 120

PROCESS BEFORE OUTPUT.

module get_saplane.

*

PROCESS AFTER INPUT.

* MODULE USER_COMMAND_0120.

Pantalla de lógica de proceso 130

Sigue vacío.

Include TOP

PROGRAM sapmbc410adias_dynpro.

* screen structure

TABLES: sdyn_conn,

saplane.

DATA:

* workarea for database read

wa_sflight TYPE sflight,

* function code at PAI

ok_code LIKE sy-ucomm,

* radio buttons

view VALUE 'X',

maintain_flights,

maintain_bookings,

* subscreen number

dynnr TYPE sy-dynnr.

Include de módulo PBO

*&---------------------------------------------------------------------*

*& Module move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

* copy data to screen structure

*----------------------------------------------------------------------*

MODULE move_to_dynp OUTPUT.

MOVE-CORRESPONDING wa_sflight TO sdyn_conn.

ENDMODULE. " move_to_dynp OUTPUT

*&---------------------------------------------------------------------*

*& Module status_0100 OUTPUT

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 173

Page 184: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

*&---------------------------------------------------------------------*

* set status and title for screen 100

*----------------------------------------------------------------------*

MODULE status_0100 OUTPUT.

SET PF-STATUS 'STATUS_100'.

SET TITLEBAR 'TITLE_100' WITH text-vie.

CASE 'X'.

WHEN view.

SET TITLEBAR 'TITLE_100' WITH 'Display'(vie).

WHEN maintain_flights.

SET TITLEBAR 'TITLE_100' WITH 'Maintain Flights'(fli).

WHEN maintain_bookings.

SET TITLEBAR 'TITLE_100' WITH 'Maintain Bookings'(boo).

ENDCASE.

ENDMODULE. " status_0100 OUTPUT

*&---------------------------------------------------------------------*

*& Module status_0150 OUTPUT

*&---------------------------------------------------------------------*

* set status and title for screen 150

*----------------------------------------------------------------------*

MODULE status_0150 OUTPUT.

SET PF-STATUS 'STATUS_150'.

SET TITLEBAR 'TITLE_150' WITH text-vie.

ENDMODULE. " status_0150 OUTPUT

*&---------------------------------------------------------------------*

*& Module clear_ok_code OUTPUT

*&---------------------------------------------------------------------*

* initialize ok_code

*----------------------------------------------------------------------*

MODULE clear_ok_code OUTPUT.

CLEAR ok_code.

ENDMODULE. " clear_ok_code OUTPUT

*&---------------------------------------------------------------------*

*& Module modify_screen OUTPUT

*&---------------------------------------------------------------------*

* change elements dynamically

*----------------------------------------------------------------------*

MODULE modify_screen OUTPUT.

IF maintain_flights = 'X'.

SET PF-STATUS 'STATUS_100'.

LOOP AT SCREEN.

IF screen-name = 'SDYN_CONN-PLANETYPE'.

screen-input = 1.

Continúa en la página siguiente

174 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 185: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ELSE.

SET PF-STATUS 'STATUS_100' EXCLUDING 'SAVE'.

ENDIF.

ENDMODULE. " modify_screen OUTPUT

*&---------------------------------------------------------------------*

*& Module fill_dynnr OUTPUT

*&---------------------------------------------------------------------*

* determine subscreen number

*----------------------------------------------------------------------*

MODULE fill_dynnr OUTPUT.

CASE 'X'.

WHEN view.

dynnr = 110.

WHEN maintain_flights.

dynnr = 120.

WHEN maintain_bookings.

dynnr = 130.

ENDCASE.

ENDMODULE. " fill_dynnr OUTPUT

*&---------------------------------------------------------------------*

*& Module get_spfli OUTPUT

*&---------------------------------------------------------------------*

* read SPFLI data from database

*----------------------------------------------------------------------*

MODULE get_spfli OUTPUT.

ON CHANGE OF wa_sflight-carrid

OR wa_sflight-connid.

SELECT SINGLE * INTO CORRESPONDING FIELDS OF

sdyn_conn FROM spfli

WHERE carrid = wa_sflight-carrid

AND connid = wa_sflight-connid.

ENDON.

ENDMODULE. " get_spfli OUTPUT

*&---------------------------------------------------------------------*

*& Module get_saplane OUTPUT

*&---------------------------------------------------------------------*

* read SAPLANE data from database

*----------------------------------------------------------------------*

MODULE get_saplane OUTPUT.

ON CHANGE OF wa_sflight-planetype.

SELECT SINGLE * FROM saplane

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 175

Page 186: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

WHERE planetype = wa_sflight-planetype.

ENDON.

ENDMODULE. " get_saplane OUTPUT

Include de módulo PAI

No hay cambios en relación con el ejercicio anterior.

176 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 187: 119167629 taw10-02-es

TAW10_2 Lección: Subscreens

Resumen de la lección

Ahora podrá:• Crear subscreens en imágenes• Utilizar grupos de funciones en subscreens

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 177

Page 188: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Lección:160

Controles de fichaDuración de la lección: 30 Minutos

Resumen de la lecciónEn la presente unidad se abordan la creación y las aplicaciones de los controlesde fichas. Se trata de elementos que le permitirán visualizar con más facilidad ymejor manejabilidad los distintos componentes de una aplicación en una imagenindividual y, a su vez, permitirán al usuario navegar entre ellos. Además, aprenderáa desplazarse entre páginas de forma local en el front end. Por último, aprenderá aprocesar desplazamientos en un control de ficha mediante un programa.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear controles de fichas• Desplazarse en controles de fichas

Explain the benefits of using tabstrip controls and describe how to create them.Also, discuss how to process scrolling in a tabstrip control using a program.

Screen Elements: Tabstrip Controls

Define the term and give examples of use. Show, for instance, the element listin the Screen Painter.

Tabstrip Elements

Show the elements at the Tabstrip control for the element list in the Screen Painter.Explain the functionality.

Page Element: Technical View

Explain the technical properties. Reiterate the subscreen techniques.

Tabstrip Controls: Attributes

Concentrate on important attributes. This slide is mainly for reference. Dividestrongly between Tabstrip Control and the corresponding area.

Creating a Tabstrip Control

Plan the creating of a tabstrip control together with the participants.

Creating a Tabstrip Control: Tabstrip Area

Emphasize that each screen element needs a corresponding ABAP data object.

Creating a Tabstrip Control: Tab Title

178 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 189: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Refer to the demo.

Creating a Tabstrip Control: Tabstrip Subscreens

Refer to the demo. Emphasize the attribute reference field for the tab title and thespecial function type.

Scrolling Locally in a Tabstrip Control

Explain the technique and insert it into the demo.

Scrolling Locally in a Tabstrip Control: Programming

Compare with the demo. Scrolling in Tabstrip Controls. Discuss the necessarysteps with the participants. Give examples for using this more complicatedtechnique.

Scrolling in Tabstrip Controls: Programming

Explain the coding.

Creating Tabstrip Controls Using the Wizard

This is a new feature in Release 4.6C. The participants now know how tabstripcontrols work. Using the wizard will make their work much easier.

Exercise for Creating a Tabstrip Control

There is an empty subscreen assigned to the third tab title. We will fill it in thenext exercise.

Ejemplo empresarialUna agencia de viajes necesita actualizar los datos de reserva de vuelos parasus clientes utilizando pantallas de la aplicación. En las imágenes, los usuariosdeberían poder crear controles de fichas para visualizar diversos componentes deuna aplicación en una imagen individual. Asimismo, deberían poder navegarentre componentes.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 179

Page 190: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Elementos de pantalla: Controles de ficha

Gráfico 99: Elementos de pantalla: Controles de ficha

Los controles de ficha le ofrecen una forma fácil y manejable de visualizardistintos componentes de una aplicación en una imagen individual y, a su vez,permitir al usuario navegar entre ellos. Su intuitivo diseño hace que la navegaciónsea mucho más fácil para los usuarios finales.

Los controles de fichas son muy prácticos para simplificar aplicaciones complejas.Los controles de fichas se pueden aplicar siempre que haya distintos componentesde una aplicación que conformen una unidad lógica. Por ejemplo, puede disponerde un conjunto de datos de cabecera que se mantengan constantes, y que, pordebajo de ellos, quiera visualizar otros conjuntos de datos.

No debería emplear controles de fichas si:

• Necesita modificar el entorno de pantalla, los menús, los pulsadores,los datos de cabecera, etc. mientras se procesan los componentes de laaplicación. La pantalla que rodea la ficha debe ser constante.

• Los componentes deben procesarse en un determinado orden. Los controlesde fichas se diseñan para que los usuarios naveguen libremente entrecomponentes.

• Los componentes se procesan de forma dinámica, es decir, una entrada deusuario en una etiqueta provoca la aparición de otras etiquetas.

Los controles de fichas son compatibles con el procesamiento batch input.

180 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 191: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Gráfico 100: Elementos de ficha:

Un control de ficha consiste en páginas individuales con una etiqueta y unalengüeta.

Un control de fichas puede estar formado por una única fila de lengüetas.

Si el control de fichas contiene demasiadas páginas, no será posible que todaslas lengüetas se visualicen simultáneamente. En este caso, una barra dedesplazamiento le permite moverse entre el resto de etiquetas. En la esquinasuperior derecha de la etiqueta hay un pulsador. Si el usuario lo marca, se visualizauna lista de todas las lengüetas. La lengüeta activa se marca con una marca deverificación.

Gráfico 101: Elementos de página: Vista técnica

Un elemento de página consiste en una lengüeta, un área subscreen y un subscreen.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 181

Page 192: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Desde un punto de vista técnico, el sistema manipula las lengüetas como si fueranpulsadores.

El contenido de los elementos de página se visualiza con la técnica de subscreen.Se asigna un área de subscreen a cada elemento de página para los que luegose podrá llamar un subscreen.

Gráfico 102: Controles de ficha: Atributos

Además de los atributos generales, Nombre de objeto, Posición inicial y Tamañoestático, los controles de fichas también tienen atributos especiales.

Creación de un control de fichas

Gráfico 103: Creación de un control de fichas

Para crear un control de ficha es preciso ejecutar los tres pasos siguientes:

• Definir el área de fichas.• Definir las lengüetas y, si es preciso, añadir más.• Asignar un área subscreen a cada elemento de página.

182 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 193: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Gráfico 104: Creación de un control de fichas: Área de fichas

Para crear un área de control de fichas, seleccione Control de fichas en la listade objetos del Screen Painter y sitúelo en la pantalla. Fije la esquina superiorizquierda del área de control de tablas y luego arrastre el objeto hasta obtener eltamaño deseado.

Asigne un nombre al control de ficha en el atributo Nombre de objeto. Necesitaráeste nombre para identificar su control de ficha.

En su programa ABAP, utilice la sentencia CONTROLS para declarar un objetocon el mismo nombre. Utilice TABSTRIP como el tipo.

El tipo TABSTRIP está definido en el pool de tipos CXTAB. El campoACTIVETAB contiene el código de función de la lengüeta de la ficha que estáactiva en cada momento. Los demás campos están reservados para uso interno.

El número por defecto de etiquetas para un control de ficha es dos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 183

Page 194: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Gráfico 105: Creación de un control de fichas: Lengüeta

Técnicamente, las lengüetas se tratan igual que los pulsadores. Tienen un nombre,un texto, un código de función y un tipo de función. Estos datos se introducen enlos campos Nombre, Texto, Cód.func. y Tip.func. de los atributos de objeto.

Una lengüeta puede tener el tipo de función " " (espacio) o P. Si el tipo de funciónes " " (espacio), el bloque de proceso PAI se desencadena cuando el usuario marcaesa lengüeta y el código de función de la lengüeta está situado en el campo decomando. Si el tipo de función es P, el usuario puede desplazarse entre distintasetiquetas de la misma clase sin lanzar el bloque de proceso PAI. Si quiere que sucontrol de ficha tenga más de dos lengüetas, deberá crear más. Para ello, seleccionePulsador en la lista de objetos del Screen Painter y sitúelo en el área de lengüeta.

184 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 195: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Gráfico 106: Creación de un control de ficha: Subscreens de ficha

Se debe asignar un área subscreen a cada etiqueta.

El área subscreen asignada a una etiqueta se indica de forma automática comoObjeto de referencia en los atributos de Dictionary para la lengüeta de esa página.

Para asignar un área subscreen a una o más etiquetas, elija la lengüeta relevante enel editor full screen, marque el objeto Subscreen y sitúelo sobre la etiqueta.

Otra opción es asignar una única área subscreen a diversas etiquetas indicando elnombre del área subscreen directamente en el campo Objeto de referencia de losatributos de las etiquetas relevantes.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 185

Page 196: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Desplazamientos locales en controles de fichas

Gráfico 107: Desplazamientos locales en controles de fichas

Si ha asignado un área subscreen distinta a cada elemento de página en un controlde ficha, podrá desplazarse de forma local entre las etiquetas en el front end.

Para ello, deberá enviar todos los subscreens al front end cuando envíe la pantallaprincipal. Además, todas las lengüetas del control de ficha deberán tener el tipode función P.

Cuando el usuario se desplaza entre diferentes elementos de página, no se daninguna comunicación entre el servidor de presentación y el de aplicación.

Cuando el usuario elige una función en la pantalla que desencadena el proceso PAI,el sistema también procesa los bloques PAI de todos los subscreens. Eso implicaque se ejecutan todas las verificaciones de campo. En este sentido, se podríaconsiderar que el control de ficha se comporta igual que una imagen grande única.

El desplazamiento local en controles de fichas es más adecuado para transaccionesde visualización.

186 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 197: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Gráfico 108: Desplazamientos locales en controles de fichas: Programación

Para programar un control de ficha para desplazarse localmente en el front end,se debe:

Asignar un área subscreen independiente a cada etiqueta. Se enviará un subscreena cada una de ellas cuando se procese la pantalla.

Llamar todos los subscreens desde la lógica de proceso.

Asignar el tipo de función P a todas las lengüetas.

El sistema oculta todos aquellos elementos de página cuyo subscreen no contengaelementos que se puedan visualizar.

Si no existen elementos de página que contengan elementos que se puedanvisualizar, el sistema oculta el control de ficha por completo.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 187

Page 198: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Desplazamientos PAI en controles de fichas

Gráfico 109: Desplazamientos PAI en controles de fichas

Si todos los elementos de página comparten una única área subscreen, el programaanaliza el código de función de la lengüeta elegida para determinar qué pantallase visualiza.

Se deben seguir dos pasos:

• En el bloque de proceso PAI, el programa determina qué elementos de páginadeben estar activos a partir de la lengüeta que elija el usuario.

• Cuando el bloque de proceso PBO se vuelve a procesar, el programavisualiza la pantalla correspondiente.

Durante este proceso, el sistema verifica únicamente los campos del subscreenque se visualiza.

188 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 199: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Gráfico 110: Desplazamientos PAI en controles de fichas: Programación

Si desea que el programa de aplicación procese los desplazamientos en un controlde ficha, se deben satisfacer los requisitos siguientes:

Todas las etiquetas deben compartir un área subscreen.

Todas las lengüetas deberán tener el tipo de código de función " " (espacio).

En la lógica de proceso, se debe emplear una variable para llamar la pantalla quese debe visualizar en el área subscreen.

En el bloque PAI, se debe llamar un módulo en el que el código de función de lalengüeta activa esté en el campo ACTIVETAB de la estructura que ha creadopreviamente en el programa con el tipo TABSTRIP. En el ejemplo del gráfico,es MY_TAB_STRIP.

El bloque de proceso PBO debe contener un módulo antes de que se llameel subscreen en el que se ubica el nombre del subscreen en la variablecorrespondiente. Se debe asignar un valor inicial a este campo a fin de quela pantalla se procese por primera vez antes de que el usuario haya tenido laoportunidad de elegir una lengüeta.

Se puede ocultar una etiqueta en tiempo de ejecución, fijando la lengüetacorrespondiente en estado inactivo con la tabla de sistema SCREEN,SCREEN-ACTIVE = 0. Debería hacerlo antes de procesar el control de ficha porprimera vez y así asegurarse de que el entorno de la pantalla sea constante.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 189

Page 200: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Gráfico 111: Creación de controles de ficha con el asistente

Puede utilizar el Asistente de control de fichas para ayudarle a crear controlesde ficha e insertarlos en imágenes de un programa. El asistente le orientará alo largo del proceso. Puede regresar a configuraciones anteriores en cualquiermomento. Los objetos de programa se crean al llegar a la pantalla final cuando seha concluido el proceso. El asistente no sólo crea el control de ficha, sino tambiénlas sentencias correspondientes en la lógica de proceso, junto con los módulos,subrutinas y definiciones de datos necesarias relevantes.

Además del control de fichas en la pantalla y la correspondiente lógica de proceso,se crean los objetos siguientes en caso de que no existan:

Subscreens vacíos para las páginas de control de fichas.

Includes para definiciones de datos, módulos PBO, módulos PAI y sentenciasINCLUDE para dichos Includes.

Todos los objetos se ubican en la lista de objetos inactivos.

Demostración: Demonstration ofSAPBC410SUBD_D_TABSTRIP_LOCAL

ObjetivoTo demonstrate SAPBC410SUBD_D_TABSTRIP_LOCAL

Datos del sistemaSistema:Mandante:

190 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 201: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Collect the three subscreens of the last demo into the tabstrip control.

Demostración: Demonstration ofSAPBC410SUBD_E_TABSTRIP

ObjetivoTo demonstrate SAPBC410SUBD_E_TABSTRIP

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Change the paging from the previous demo to backend scrolling.

Demostración: Demonstration of Tabstrip Wizard

ObjetivoTo demonstrate Tabstrip Wizard

Datos del sistemaSistema:Mandante:ID de usuario:Clave de acceso:Parametrizaciones del sistema:1. Copy the program SAPBC410SUBD_F_WIZARD_PRE and use the wizard

to create a Tabstrip Control.

2. Show the resulting coding.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 191

Page 202: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

192 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 203: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

171 Ejercicio 6: Creación de controles defichasDuración del ejercicio: 45 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Utilizar controles de fichas en pantallas de sus programas

Ejemplo empresarialEn el último ejercicio, creó subscreens para visualizar información adicional enla pantalla. Ahora, cree un control de ficha en la pantalla 100 para visualizarinformación adicional del vuelo y detalles del tipo de avión.

Tarea:Cree un control de ficha en la pantalla 100 para visualizar información adicionaldel vuelo y detalles del tipo de avión.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo SAPMBC410ASUBS_SUBSCREEN. Puedeemplear la solución de modelo SAPMBC410ADIAS_TABSTRIP comoorientación.

2. Creación de una ficha: Elimine el área subscreen de la pantalla 100 y creeun control de ficha con los atributos siguientes:

Controlesde ficha

Nombre:

MY_TABSTRIP

Atributos:

Resizing vertical y horizontal: ON

Pulsador(Lengüeta1)

Nombre:

P1

Atributos:

Texto: Ver datos del vuelo

Código de función: FC1

Tipo de función: <vacío>

Campo de referencia: SUB

Pulsador Nombre: Atributos:

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 193

Page 204: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

(Lengüeta2) P2 Texto: Ver datos técnicos del avión

Código de función: FC2

Tipo de función:<vacío>

Campo de referencia: SUB

Pulsador(Lengüeta3)

Nombre:

P3

Atributos:

Texto: Actualización de reservas

Código de función: FC3

Tipo de función: <vacío>

Campo de referencia: SUB

3. En el Include TOP de su programa, cree un objeto de datos para el controlde ficha con la sentencia siguiente:

CONTROLS MY_TABSTRIP ...

4. En la lógica de proceso de la pantalla 100, implemente la llamada para eldynpro subscreen en el control de ficha. El número de subscreen se halla enel campo DYNNR que creó en el ejercicio anterior.

5. Antes de llamar el subscreen, escriba un módulo PBO en el que determinequé subscreens se deben llamar con independencia del modo en que estétrabajando el usuario. Además, determine qué dynpro subscreen quiereconfigurar la primera vez que se visualice la pantalla y asigne el código defunción que corresponda al campo MY_TABSTRIP-ACTIVETAB.

Amplíe el proceso de su campo de comandos para la pantalla 100 con lalógica de desplazamiento para el control de ficha. Hágalo asignando el valorrelevante a MY_TABSTRIP-ACTIVETAB.

194 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 205: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

Solución 6: Creación de controles defichasTarea:Cree un control de ficha en la pantalla 100 para visualizar información adicionaldel vuelo y detalles del tipo de avión.

1. Amplíe el programa SAPMZ##BC410_SOLUTION del ejercicio anterioro copie la solución modelo SAPMBC410ASUBS_SUBSCREEN. Puedeemplear la solución de modelo SAPMBC410ADIAS_TABSTRIP comoorientación.

a) Consulte la solución modelo.

2. Creación de una ficha: Elimine el área subscreen de la pantalla 100 y creeun control de ficha con los atributos siguientes:

Controlesde ficha

Nombre:

MY_TABSTRIP

Atributos:

Resizing vertical y horizontal: ON

Pulsador(Lengüeta1)

Nombre:

P1

Atributos:

Texto: Ver datos del vuelo

Código de función: FC1

Tipo de función: <vacío>

Campo de referencia: SUB

Pulsador(Lengüeta2)

Nombre:

P2

Atributos:

Texto: Ver datos técnicos del avión

Código de función: FC2

Tipo de función:<vacío>

Campo de referencia: SUB

Pulsador(Lengüeta3)

Nombre:

P3

Atributos:

Texto: Actualización de reservas

Código de función: FC3

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 195

Page 206: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Tipo de función: <vacío>

Campo de referencia: SUB

a) Consulte la solución modelo.

3. En el Include TOP de su programa, cree un objeto de datos para el controlde ficha con la sentencia siguiente:

CONTROLS MY_TABSTRIP ...

a) Consulte la solución modelo.

4. En la lógica de proceso de la pantalla 100, implemente la llamada para eldynpro subscreen en el control de ficha. El número de subscreen se halla enel campo DYNNR que creó en el ejercicio anterior.

a) Consulte la solución modelo.

5. Antes de llamar el subscreen, escriba un módulo PBO en el que determinequé subscreens se deben llamar con independencia del modo en que estétrabajando el usuario. Además, determine qué dynpro subscreen quiereconfigurar la primera vez que se visualice la pantalla y asigne el código defunción que corresponda al campo MY_TABSTRIP-ACTIVETAB.

Amplíe el proceso de su campo de comandos para la pantalla 100 con lalógica de desplazamiento para el control de ficha. Hágalo asignando el valorrelevante a MY_TABSTRIP-ACTIVETAB.

a) Consulte la solución modelo.

ResultadoSolución modelo SAPMBC410ASUBS_TABSTRIP

Programa principal

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 100

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 110

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 120

No hay cambios en relación con el ejercicio anterior.

Pantalla de lógica de proceso 130

Continúa en la página siguiente

196 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 207: 119167629 taw10-02-es

TAW10_2 Lección: Controles de ficha

No hay cambios en relación con el ejercicio anterior.

Include TOP

Añada la codificación siguiente:

CONTROLS:

my_tabstrip TYPE TABSTRIP.

Include de módulo PBO

Modifique el módulo FILL_DYNNR:

*&---------------------------------------------------------------------*

*& Module fill_dynnr OUTPUT

*&---------------------------------------------------------------------*

* determine subscreen number

*----------------------------------------------------------------------*

MODULE fill_dynnr OUTPUT.

CASE my_tabstrip-activetab.

WHEN 'FC1'.

dynnr = 110.

WHEN 'FC2'.

dynnr = 120.

WHEN 'FC3'.

dynnr = 130.

when OTHERS.

my_tabstrip-activetab = 'FC1'.

dynnr = 110.

ENDCASE.

ENDMODULE. " fill_dynnr OUTPUT

Include de módulo PAI

Modifique el módulo USER_COMMAND_0100:

MODULE user_command_0100 INPUT.

CASE ok_code.

WHEN 'FC1' OR 'FC2' OR 'FC3'.

my_tabstrip-activetab = ok_code.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

....

ENDCASE.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 197

Page 208: 119167629 taw10-02-es

Capítulo 5: Elementos de pantalla: Subscreens y controles de fichas TAW10_2

Resumen de la lección

Ahora podrá:• Crear controles de fichas• Desplazarse en controles de fichas

198 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 209: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Crear subscreens en imágenes• Utilizar grupos de funciones en subscreens• Crear controles de fichas• Desplazarse en controles de fichas

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 199

Page 210: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

200 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 211: 119167629 taw10-02-es

TAW10_2 Examine sus conocimientos

179Examine sus conocimientos

1. La sentenciaordena al

sistema que ejecute los bloques de procesamiento PBO y PAI para elsubscreen como componentes de PBO y de PAI en la imagen principal.

Rellene los espacios en blanco para completar las frases.

2. Cuando se emplea un subscreen encapsulado, la llamada del subscreen debeocurrir antes de la llamada del subscreen.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

3. Para crear un área de control de ficha, seleccione Control de ficha del ScreenPainter y sitúelo en la pantalla.Rellene los espacios en blanco para completar las frases.

4. Para programar un control de ficha para desplazarse localmente en el frontend, se deben llamar todos los subscreens desde la lógica de proceso.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 201

Page 212: 119167629 taw10-02-es

Examine sus conocimientos TAW10_2

180Respuestas

1. La sentencia CALL SUBSCREEN <subárea> ordena al sistema queejecute los bloques de procesamiento PBO y PAI para el subscreen comocomponentes de PBO y de PAI en la imagen principal.

Respuesta: CALL SUBSCREEN <subárea>

2. Cuando se emplea un subscreen encapsulado, la llamada del subscreen debeocurrir antes de la llamada del subscreen.

Respuesta: Falso

La llamada del módulo de funciones debe tener lugar antes de la llamadadel subscreen.

3. Para crear un área de control de ficha, seleccione Control de ficha del ScreenPainter y sitúelo en la pantalla.

Respuesta:

4. Para programar un control de ficha para desplazarse localmente en el frontend, se deben llamar todos los subscreens desde la lógica de proceso.

Respuesta: Correcto

Para programar un control de ficha para desplazarse localmente en el frontend, se deben llamar todos los subscreens desde la lógica de proceso.

202 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 213: 119167629 taw10-02-es

Capítulo 6181 Introducción al Dictionary

See introductory instructor’s note in the lesson.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Enumerar las funciones del Dictionary ABAP en el sistema R/3• Describir las posibles formas de definir objetos de datos y tipos de datos• Describir los servicios proporcionados por el Dictionary ABAP• Explicar cómo está vinculado el Dictionary ABAP con los entornos de

desarrollo y de tiempo de ejecución

Contenido del capítuloLección: Resumen de las funciones de Dictionary ABAP ... . . . . . . . . . . . . . .204

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 203

Page 214: 119167629 taw10-02-es

Capítulo 6: Introducción al Dictionary TAW10_2

Lección:182

Resumen de las funciones de Dictionary ABAPDuración de la lección: 60 Minutos

Resumen de la lecciónEn esta lección se ofrece una visión de conjunto del alcance funcional delDictionary ABAP.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Enumerar las funciones del Dictionary ABAP en el sistema R/3• Describir las posibles formas de definir objetos de datos y tipos de datos• Describir los servicios proporcionados por el Dictionary ABAP• Explicar cómo está vinculado el Dictionary ABAP con los entornos de

desarrollo y de tiempo de ejecución

Provide an initial insight into the technical possibilities of the ABAP Dictionarywithout, however, going into the individual aspects in too much detail.

Ejemplo empresarialDebe explicar cuáles son las principales opciones que ofrece el Dictionary ABAPa un compañero de trabajo

204 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 215: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de las funciones de Dictionary ABAP

Resumen de las funciones

Gráfico 112: Función del Dictionary ABAP

Expalin briefly the three functions introduced on the slide. The points will bediscussed in greater detail on the following slides.

El Dictionary ABAP permite administrar todas las definiciones de tipo que se usanen el sistema R/3 de forma centralizada.

En el Dictionary ABAP se pueden crear tipos definidos por el usuario (elementosde datos, estructuras y tipos de tabla) para usarlos en los programas ABAP o eninterfases de módulos de funciones, métodos de objeto, etc. Los objetos de basede datos como tablas, índices y vistas también se pueden definir en el DictionaryABAP y se pueden crear con esta definición en la base de datos.

El Dictionary ABAP proporciona además una serie de servicios que ofrecensoporte para el desarrollo de programas. Por ejemplo, es posible activar ydesactivar bloqueos, definir una Ayuda para entradas (F4) y añadir una Ayudade campo (F1) a un campo de dynpro.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 205

Page 216: 119167629 taw10-02-es

Capítulo 6: Introducción al Dictionary TAW10_2

Gráfico 113: Objetos de base de datos en el Dictionary ABAP

Explain the object types DB Table and DB View Explain that a table or view in theABAP Dictionary is defined independent of the database. The object can then becreated automatically in the database. It is in this step that the definition of theobject in the ABAP Dictionary is transferred to the definition of the databasesystem being used.

En el Dictionary ABAP se pueden definir tablas y vistas de base de datos.

Estos objetos se crean en la base de datos subyacente con esta definición. Lasmodificaciones en la definición de una tabla o una vista de base de datos seefectúan automáticamente en la base de datos.

En el Dictionary ABAP se pueden definir índices para acelerar el acceso a losdatos en una tabla. Estos índices se crean también en la base de datos.

206 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 217: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de las funciones de Dictionary ABAP

Gráfico 114: Definiciones de tipos en el Dictionary ABAP

Explain, that you can create globally addressable types in the ABAP Dictionary.They can be used in programs or function modules. Explain the various typecategories using the examples on the slide (data element, structure, table type).Explain how these basic types can be combined. This enables one to definecomplex types.

En el Dictionary ABAP existen tres clases de tipos diferentes:

• Elementos de datos:Describen un tipo de datos atómico mediante ladefinición de un tipo de datos, la longitud y los posibles caracteres decimales.

• Estructuras: Están formadas por componentes que pueden ser de cualquiertipo.

• Tipos de tabla: Describen la estructura de una tabla interna.

Cualquier tipo complejo definido por el usuario se puede crear a partir de estostipos básicos.

Ejemplo: Los datos de un empleado están guardados en una estructuraEMPLOYEE (empleado) con los componentes NAME (nombre), ADDRESS(dirección) y TELEPHONE (teléfono). El componente NAME (nombre) estambién una estructura formada por FIRST NAME (nombre de pila) y LASTNAME (apellido). Ambos componentes son elementales, por ejemplo, su tipo seha definido mediante un elemento de datos. El tipo de componente ADDRESS(dirección) se ha definido también mediante una estructura cuyos componentes sonotras estructuras. Un tipo de tabla se usa para definir el componente TELEPHONE(teléfono), porque un empleado puede tener más de un número de teléfono.

Los tipos se usan por ejemplo en programas ABAP o para definir los tipos deparámetros de interfase de los módulos de funciones.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 207

Page 218: 119167629 taw10-02-es

Capítulo 6: Introducción al Dictionary TAW10_2

Gráfico 115: Servicios del Dictionary ABAP

Briefly mention F1 and F4 Help. The participants should already know about them.

El Dictionary ABAP ofrece soporte para el desarrollo de programas medianteuna serie de servicios:

• Se pueden definir Ayudas para la entrada (F4) para campos de dynpro conAyudas para búsqueda.

• A los campos de dynpro se les puede asignar fácilmente una Ayuda paraentradas (F1) mediante la creación de documentación para los elementosde datos.

• Se puede definir fácilmente una verificación de entrada para campos dedynpro que garantice que los valores introducidos sean coherentes con clavesexternas.

• El Dictionary ABAP ofrece soporte para activar y desactivar bloqueos. Paraello, se deben crear objetos de bloqueo en el Dictionary ABAP. A partir deestos objetos de bloqueo se generan automáticamente módulos de funcionespara activar y desactivar bloqueos; luego se pueden enlazar en el programade aplicación.

• Cuando se accede a estos datos, el rendimiento se puede mejorar en el casode los objetos de base de datos (vistas, tablas) mediante parametrizaciones degrabación en memoria intermedia.

• Mediante el inicio de sesión se puede activar el registro automático demodificaciones en las entradas de tabla.

208 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 219: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de las funciones de Dictionary ABAP

Gráfico 116: Enlace con el entorno de desarrollo y de tiempo de ejecución

Explain the relationship between the ABAP Dictionary and the tools of thedevelopment and runtime environment. Explain the relationship using the ScreenPainter and ABAP Interpreter.

Screen Painter: The screen painter is used when creating the interface. Fields fromstructures or tables defined in the dictionary can be positioned directly on thescreen using the command Get from Dictionary. As a result, the type definition,input checks, or help for the field are automatically carried over to the screen.

ABAP Interpreter: The type definitions of all global types from the ABAPDictionary used in the program are retrieved from the Dictionary when generatinga report. You must clarify that the ABAP Dictionary is the main source for datadefinitions in the SAP system. All other components actively retrieve the datadefinitions they require from the ABAP Dictionary.

El Dictionary ABAP se integra activamente en los entornos de desarrollo y detiempo de ejecución. Cada modificación se refleja de inmediato en los dynpros yprogramas ABAP relevantes.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 209

Page 220: 119167629 taw10-02-es

Capítulo 6: Introducción al Dictionary TAW10_2

Ejemplos:

• Cuando se genera un programa o un dynpro, el intérprete de ABAP y elde dynpro acceden a las definiciones de tipo almacenadas en el DictionaryABAP.

• Las herramientas ABAP y Screen Painter usan la información almacenada enel Dictionary ABAP como soporte durante el desarrollo de programas. Unejemplo de ello es la función Traer de Dictionary en el Screen Painter, con laque se pueden añadir campos de una tabla o de una estructura definidas enel Dictionary ABAP en un dynpro.

• La interfase de base de datos usa la información sobre las tablas o las vistasde base de datos almacenada en el Dictionary ABAP para acceder a los datosde estos objetos.

210 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 221: 119167629 taw10-02-es

TAW10_2 Lección: Resumen de las funciones de Dictionary ABAP

Discusión con moderadorHere you have the opportunity to discuss unanswered questions.

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

See list of learning goals

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 211

Page 222: 119167629 taw10-02-es

Capítulo 6: Introducción al Dictionary TAW10_2

Resumen de la lección

Ahora podrá:• Enumerar las funciones del Dictionary ABAP en el sistema R/3• Describir las posibles formas de definir objetos de datos y tipos de datos• Describir los servicios proporcionados por el Dictionary ABAP• Explicar cómo está vinculado el Dictionary ABAP con los entornos de

desarrollo y de tiempo de ejecución

212 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 223: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Enumerar las funciones del Dictionary ABAP en el sistema R/3• Describir las posibles formas de definir objetos de datos y tipos de datos• Describir los servicios proporcionados por el Dictionary ABAP• Explicar cómo está vinculado el Dictionary ABAP con los entornos de

desarrollo y de tiempo de ejecución

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 213

Page 224: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

214 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 225: 119167629 taw10-02-es

Capítulo 7189 Objetos de datos en el Dictionary

ABAP

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo se familiarizará con las distintas opciones para asignar objetos dedatos en el Dictionary.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Crear dominios y usarlos en elementos de datos• Definir elementos de datos y usarlos como base para definir objetos de datos

en programas ABAP• Definir estructuras y usarlas como base para definir objetos de datos en

programas ABAP• Definir tablas internas y usarlas como base para definir objetos de datos

en programas ABAP• Definir estructuras complejas (anidadas/profundas) y usarlas como base para

definir objetos de datos en programas ABAP• Definir constantes globales con ayuda de un pool de tipos y usarlas en

programas ABAP• Crear tablas• Usar el concepto de dominio de dos niveles• Definir las opciones técnicas de una tabla• Crear y usar estructuras Include• Describir tipos de tablas en el sistema SAP, además de las tablas transparentes

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 215

Page 226: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

• Diferenciar entre las tablas pool y las tablas cluster• Describir las ventajas y las desventajas de las tablas pool y las tablas cluster

Contenido del capítuloLección: Tipos de datos básicos... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .217

Ejercicio 7: Tipos de datos básicos ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231Ejercicio 8: Estructuras simples y anidadas ... . . . . . . . . . . . . . . . . . . . . . . . . .237Ejercicio 9: Tipos de tabla (tablas internas/ITAB) .. . . . . . . . . . . . . . . . . . . . .243Ejercicio 10: Estructuras profundas... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .247

Lección: Tablas en el Dictionary ABAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .252Ejercicio 11: Tablas en el Dictionary ABAP ... . . . . . . . . . . . . . . . . . . . . . . . . . .267

Lección: Tablas SAP especiales .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280

216 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 227: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Lección:191

Tipos de datos básicosDuración de la lección: 120 Minutos

Resumen de la lecciónEn esta lección se describen los tipos de datos básicos y cómo se usan alcombinarlos.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear dominios y usarlos en elementos de datos• Definir elementos de datos y usarlos como base para definir objetos de datos

en programas ABAP• Definir estructuras y usarlas como base para definir objetos de datos en

programas ABAP• Definir tablas internas y usarlas como base para definir objetos de datos

en programas ABAP• Definir estructuras complejas (anidadas/profundas) y usarlas como base para

definir objetos de datos en programas ABAP• Definir constantes globales con ayuda de un pool de tipos y usarlas en

programas ABAP

Explain the different options for defining data objects. You should demonstratetheir use in ABAP programs, especially for the complex data types (deepstructures and internal tables).

Ejemplo empresarialDebe definir tipos de datos simples y complejos en el Dictionary, y ser capaz deusarlos en un programa ABAP.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 217

Page 228: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Tipos de datos

Gráfico 117: Pantalla inicial del Dictionary ABAP (SE11)

En el Dictionary ABAP se pueden definir tipos de datos válidos para todos losprogramas (conocidos en general). Puede hacer referencia a estos tipos de datosdesde cualquier programa ABAP en el sistema SAP agregando TYPE a lassentencias ABAP correspondientes.

En la pantalla inicial las definiciones correspondientes se definen mediante elcampo Tipo de datos. Como tipo de datos puede encontrarse con los tres tiposbásicos: elemento de datos, estructura y tipo de tabla (tablas internas - ITAB).

El grupo de tipos es, en realidad, una reliquia del pasado (anterior al release 4.5a),cuando aún no era posible crear tipos de datos complejos globales propios paradeclarar objetos de datos en ABAP. El grupo de tipos se sigue utilizando con estefin. En el futuro, cuando cree un nuevo tipo de datos complejo global, use lasopciones que se facilitan en las estructuras del Dictionary. Además, el grupo detipos para crear constantes globales se utilizaba antes y se sigue utilizando ahora.El uso de constantes globales se soporta también mediante objetos ABAP encalidad de atributos de constante de una clase. No obstante, si desea programarsin orientación a los objetos, sólo le quedará el grupo de tipos para definir unaconstante global.

218 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 229: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Gráfico 118: Tipos de datos en el Dictionary ABAP

Para definir objetos de datos en los programas ABAP puede usar las definicionesde tipo mencionadas anteriormente, salvo el dominio. Las flechas le indican cómose pueden combinar entre sí.

Lo ideal sería que los elementos de datos usaran dominios para definir suspropiedades técnicas. Sin embargo, un programa ABAP no puede acceder a losdominios para definir objetos de datos.

Por norma general, los elementos de datos obtienen sus tipos de datos de losdominios. Este tipo de datos se puede derivar también de un tipo integrado.

Una estructura está formada por componentes, que pueden ser campos elementales,tablas o estructuras.

El tipo de línea de un tipo de tabla (ITAB) puede ser estructurado o elemental.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 219

Page 230: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 119: Dominio

Los dominios se usan para gestionar las propiedades técnicas de los objetosde datos de forma centralizada. Los dominios no se pueden usar directamenteen programas, tablas, etc. Los tipos de datos "elemento de datos" (véase másadelante) se usan en este caso como puente entre las propiedades técnicas y losdistintos tipos de datos/objetos de datos.

La información técnica abarca los puntos siguientes:

Formato:En las especificaciones de formato encontrará el Tipo de dato y elNúmero de caracteres que se pueden introducir en un objeto de datosdependiente. Si el formato es numérico, podrá determinar también unvalor para los decimales.Los tipos de datos se basan en 24 tipos integrados. A continuación seexplican los tipos de datos que se usan con mayor frecuencia:

CHARCadena de caracteresLos campos del tipo CHAR sólo pueden tener una longitudmáxima de 255 en las tablas. Si desea utilizar cadenas decaracteres más largas, deberá elegir el tipo de datos LCHR. Enlas estructuras no existen restricciones por lo que respecta a lalongitud de este tipo de campos.

DATS

220 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 231: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

FechaLa longitud de este tipo de datos se ha fijado en 8 caracteres.Puede definir el modelo de salida mediante el perfil de usuario.

DECCampo de cálculo o cantidad con punto decimal, signo +/-, ycoma como separador de unidades de millar.Un campo DEC sólo puede tener 31 caracteres como máximo.

NUMCCadena de caracteres que sólo puede contener números. Lalongitud de un campo de este tipo está limitada a un máximo de255 caracteres.

Propiedades de salida:En este caso, la longitud de campo máxima, incluidas comas o puntosdecimales, se especifica para la entrada y salida de valores.Este valor se suele calcular automáticamente después de haber asignadoel número de caracteres en Formato; sin embargo, se puede sobrescribirmás tarde. El formato de salida influye en la salida de dynpros eimágenes de selección. Las especificaciones en esta área se usan paraintegrar un campo en una imagen; sin embargo, se pueden modificaren el Screen Painter.Además, también se puede definir una rutina de conversión para estedominio. Esto sirve para modificar el formato de visualización (p. ej.,ceros iniciales antes de un número) al convertir el contenido de uncampo de dynpro del formato de visualización al formato interno deSAP y a la inversa, y también para darle salida mediante la sentenciaABAP WRITE. Del mismo modo, se puede usar esta rutina deconversión para anular las conversiones estándar inadecuadas.En el caso de algunos tipos de datos (DEC, FLTP, QUAN y CURR),se puede editar la casilla de verificación Signo +/-. Si está activada, elprimer carácter del campo de dynpro estará reservado para el signo +/-.La longitud de salida aumentaría entonces en 1.En el caso de los tipos de datos basados en caracteres, deberíadeterminar también si se permiten minúsculas. Si no se ha activadoeste indicador, se podrán introducir minúsculas en el campo de entradacorrespondiente, pero se transformarán en mayúsculas en cuanto elusuario confirme la entrada (p. ej., tecla INTRO).Además, puede definir rangos de valores válidos para utilizarlos enverificaciones de entrada. No obstante, este tema se explica en másdetalle en otro apartado del curso.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 221

Page 232: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 120: Elemento de datos

Además de ser el vínculo entre dominios y objetos de datos, los elementos dedatos contienen también información semántica/técnica sobre objetos de datoscreados a partir de éstos.

Los denominadores de campo de datos se pueden y se deben actualizar en loselementos de datos. Estos denominadores de campo (breves, medios y largos) sepueden visualizar más adelante en dynpros o imágenes de selección para explicarel contenido de campo.

En las imágenes de selección (p. ej., comando ABAP PARAMETERS), sólo sepuede obtener del Dictionary la versión larga del denominador de campo (en lavía acceso menús del Editor ABAP: Pasar a -> Elemento de texto -> Texto deselección => Casilla de verificación‚ Referencia a Dictionary).

Si el valor de campo figura en una lista, la entrada del denominador de campose usará para el título. Además, se debe especificar una longitud para eldenominador de campo en cuestión. Esta longitud determina la longitud máximadel denominador de campo. Si trabaja para una empresa multinacional, puedetraducir los denominadores de campo a otros idiomas (acceso vía menús: Pasar a-> Traducción o transacción SE63). Cuando especifique la longitud, recuerde queen otro idioma el mismo término del denominador de campo puede ser más largo.

Se puede añadir una Ayuda para búsqueda (F4 / Ayuda para entradas) a unelemento de datos. El tema de las ayudas para búsqueda se trata en más detalleen otra unidad posterior de este curso. Las ayudas para búsqueda se puedenintegrar en distintos niveles.

222 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 233: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

En aplicaciones distintas, a veces hay que introducir un valor concreto en variaspantallas. Para ahorrarle al usuario el tener que introducir el mismo valor variasveces, es posible asignar un parámetro SET/GET al elemento de datos. En esteparámetro, el valor se transfiere cuando se sale de la pantalla. Si en una pantallaposterior hay un campo de entrada que se basa en el mismo elemento de datos,este valor se leerá desde el parámetro y se introducirá en el campo de dynpro.Los parámetros SET/GET conservan el valor durante toda la sesión. Cuando elusuario finaliza la sesión, los valores se pierden. Para usar el parámetro SET/GET,debe introducirlo en la tabla TPARA!.

SET/GET parameters have nothing to do with the history (local data) of theSAPGUI.

También puede asignar un nombre predeterminado en inglés al elemento dedatos. Sin embargo, esto sólo surte efecto si se usa el elemento de datos comocomponente en estructuras BAPI. Se debería usar el nombre predeterminado paraque los nombres de componente se usen de forma uniforme.

The Change document checkbox is connected to change objects. In changeobjects, business objects are defined for logging. You can control this loggingmuch more precisely than logging in the technical settings of a table (see below).Change objects are not a topic for this course, however, but are explained in thecourse BC414 - Programming Database Changes.

To explain them, you can provide a short demonstration using VA02 and VA03here: call VA02 in an existing document, for example, change the order quantity.Call VA03 and display the same document. Display the changes via the menu itemENVIRONMENT -> CHANGES. All changes are displayed that are connected toyour change.

Las propiedades técnicas del elemento de datos se conservan en la etiqueta Tipode datos. En este caso debería usar sobre todo dominios previstos para escrituratécnica. No obstante, puede definir el elemento de datos mediante los mismostipos integrados que se usan para definir los dominios. Como caso especial, puedecrear también un elemento de datos como tipo de referencia. El tipo al que sehace referencia no se limita en este caso al tipo "DATA ELEMENT" (elementode datos). Puede ser cualquier otro tipo de referencia o incluso una referenciagenérica a ANY (cualquiera), OBJECT (objeto) o DATA (datos). Una referenciaal tipo ANY puede señalar tanto a objetos como a datos. La definición comoreferencia equivale a la declaración de tipo en un programa ABAP “ TYPEStr_dt TYPE REF TO data ”.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 223

Page 234: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Sample code for reference variable (trace the different assignmentsand contents of the fields/references in the debugger): REPORTSAPBC430D_REFERENZ_TYPE

Gráfico 121: Estructuras

Una estructura está formada por componentes en forma de elementos de datos,tipos integrados, definiciones de estructura de tablas internas, vistas de tabla deBD u otras definiciones de estructura existentes.

Cuando se incluyen también los campos de un objeto bidimensional real en unaestructura mediante la inclusión de una vista o tablas de BD, el objeto de datos quese puede generar a partir de ello es plano (unidimensional).

Una estructura de las llamadas profundas se crea siempre que se utiliza un tipo detabla para definir un componente. Si bien este componente es bidimensional, losotros componentes de la estructura siguen siendo planos (unidimensionales).

224 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 235: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Gráfico 122: Uso de estructuras simples en ABAP

La forma más simple de una estructura es la secuencia de campos mediante el usode elementos de datos. Con ello se consigue siempre lo que se conoce comoestructura plana. Un objeto de datos basado en este tipo de estructura es siempreunidimensional (a diferencia de los objetos de datos bidimensionales, parecidos atablas). A los elementos individuales (componentes) de la estructura se les designacon el nombre de la estructura, un guion y el nombre de los componentes.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 225

Page 236: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 123: 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 datosse describe ahora como estructura anidada.

Las estructuras de este tipo se pueden anidar unas dentro de otras de cualquierforma.

226 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 237: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Gráfico 124: Tablas internas

En cuanto se introduce una tabla interna como componente de estructura, laestructura pasa a ser profunda.

Puede definir tablas internas o ITAB mediante una estructura de líneas existente.Se pueden usar como tipos de línea: tablas de base de datos, definiciones deestructura, vistas, elementos de datos, definiciones de tipo directas o tipos detabla existentes.

Cuando se declara una tabla interna en un programa ABAP, se crea un arraybidimensional en la memoria principal.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 227

Page 238: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 125: Estructura profunda

Una estructura profunda contiene como mínimo una tabla. El componente de unatabla de esta clase tiene su propio nombre, con el que se puede designar comocualquier tabla interna normal (LOOP AT..., INSERT... INTO TABLE, ...).

Una tabla interna puede, a su vez, tener una estructura profunda como tipo delínea. De este modo, puede crear tipos de datos multidimensionales, ya que esposible realizar varios anidamientos entre tablas internas y estructuras.

Atención: En cambio, las tablas de base de datos sólo incluyen estructurasplanas.

228 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 239: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Gráfico 126: Grupo de tipos

Si desea definir constantes globales, debe usar un grupo de tipos. El nombre delgrupo de tipos sólo puede contener cinco caracteres como máximo. En el grupo detipos puede definir constantes mediante la sentencia CONSTANTS. En este casopuede usar los tipos ABAP predefinidos o los tipos globales de Dictionary.

Para poder utilizar los tipos de un grupo de tipos en un programa, declare el grupode tipos mediante la sentencia TYPE POOL. A partir de estas líneas, podrá utilizartodas las constantes del grupo de tipos.

La definición de un grupo de tipos es un fragmento de código ABAP que seactualiza en el Dictionary (SE11) o en el Editor ABAP (SE38).

Realización:

La primera sentencia del grupo de tipos zmytp es siempre: TYPE-POOL zmytp .

Ésta va seguida de la definición del tipo de datos con la sentencia TYPES, comose describe en los tipos de datos de programa local. Además, puede declararconstantes válidas para todos los programas mediante la sentencia CONSTANTS.Todos los nombres de estos tipos de datos y constantes deben empezar con elnombre del grupo de tipos, seguido de un guion bajo:

zmytp_

En un programa ABAP, los grupos de tipos se deben declarar con la sentenciasiguientes antes de poder utilizarlos:

TYPE-POOLS zmytp.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 229

Page 240: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Cuando se usa esta sentencia, se pueden usar todos los tipos de datos y constantesdefinidos en el grupo de tipo zmytp dentro del programa. En un programa sepueden usar varios grupos de tipos.

230 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 241: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

205 Ejercicio 7: Tipos de datos básicosDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear tipos de datos básicos en el Dictionary y usarlos en programas ABAP

Ejemplo empresarialPara su proyecto de desarrollo debería crear varios tipos de datos globales a losque puedan tener acceso los demás miembros del proyecto.

Datos del sistemaSistema: to be assigned by the instructorMandante: to be assigned by the instructorID de usuario: to be assigned by the instructorClave de acceso: to be assigned by the instructorParametrizaciones del sistema:

Tarea 1:Cree dos dominios de modo que pueda usarlos más adelante en elementos de datos.

1. Llame la transacción SE11.

2. Cree un dominio llamado ZDO_10NUM_## en la pantalla inicial delDictionary ABAP.

3. El dominio se debe crear para elementos de datos que admitan númerosdecimales de 10 dígitos. De estos 10 dígitos, 2 deberían estar reservadospara decimales. Los elementos de datos se deberían poder usar para cálculosempresariales.

4. Grabe el dominio (como Objeto local) y actívelo.

5. En la pantalla inicial del Dictionary ABAP, cree un dominio llamadoZDO_30CHAR_##. Este dominio debería poder contener 30 caracteres detexto; en los campos de entrada, las minúsculas deben estar permitidas.

6. Grabe el dominio (como Objeto local) y actívelo.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 231

Page 242: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Tarea 2:Cree varios elementos de datos y use los dominios ya definidos para laspropiedades técnicas.

1. Llame la transacción SE11.

2. Introduzca un elemento de datos (ZLASTNAME##) como apellido de unapersona y use un dominio adecuado. El elemento de datos debería podercontener 30 letras en mayúsculas y minúsculas.

3. Introduzca un elemento de datos (ZFIRSTNAME##) como nombre de pilade una persona y use un dominio adecuado. El elemento de datos deberíapoder contener 30 letras en mayúsculas y minúsculas.

4. Cree un elemento de datos (ZASSETS##) para activos y use un dominioadecuado. El elemento de datos se debería usar para cálculos empresariales.

5. Cree un elemento de datos (ZLIABILITIES##) para pasivos y use undominio adecuado. El elemento de datos se debería usar para cálculosempresariales.

Tarea 3:Cree un programa.

1. Cree el programa ejecutable ZBC430_##_DATA_ELEMENTS sin “IncludeTOP”.

2. Cree los campos de entrada siguientes en el programa sin el comando ABAPPARAMETERS.

Parámetro Tipo de datos

pa_fname ZFIRSTNAME##

pa_fname ZLASTNAME##

pa_activ ZASSETS##

pa_liabs ZLIABILITIES##

Reste el pasivo al activo y dé salida a todos los parámetros y a los resultadosdel cálculo en una lista.

3. Ejecute el programa e introduzca los distintos valores en la imagen deselección, a la que se da salida en forma de lista.

232 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 243: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Solución 7: Tipos de datos básicosTarea 1:Cree dos dominios de modo que pueda usarlos más adelante en elementos de datos.

1. Llame la transacción SE11.

a) En el menú SAP EASY ACCESS, introduzca se11 en el campo decomandos y confirme la entrada.

Si está en otra transacción, introduzca /n se11 en el campo de comandosy confirme la entrada.

2. Cree un dominio llamado ZDO_10NUM_## en la pantalla inicial delDictionary ABAP.

a) Marque el botón de selección Dominio.

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

c) Accione el pulsador Crear.

3. El dominio se debe crear para elementos de datos que admitan númerosdecimales de 10 dígitos. De estos 10 dígitos, 2 deberían estar reservadospara decimales. Los elementos de datos se deberían poder usar para cálculosempresariales.

a) Introduzca una descripción significativa para el dominio en el campoDescripción breve.

b) En el campo Tipo de datos, introduzca el valor DEC o marque laentrada en la Ayuda para entradas (F4).

c) En el campo Núm.caracteres, introduzca el valor 10.

d) En el campo Decimales, introduzca el valor 2.

e) Marque la casilla de verificación Signo +/-.

4. Grabe el dominio (como Objeto local) y actívelo.

a) Haga clic en la parte superior de la pantalla Grabar.

5. En la pantalla inicial del Dictionary ABAP, cree un dominio llamadoZDO_30CHAR_##. Este dominio debería poder contener 30 caracteres detexto; en los campos de entrada, las minúsculas deben estar permitidas.

a) Siga los pasos anteriores y defina las propiedades correspondientesen la etiqueta Definición.

6. Grabe el dominio (como Objeto local) y actívelo.

a) Haga clic en la parte superior de la pantalla Grabar.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 233

Page 244: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Tarea 2:Cree varios elementos de datos y use los dominios ya definidos para laspropiedades técnicas.

1. Llame la transacción SE11.

a) En el menú SAP EASY ACCESS, introduzca se11 en el campo decomandos y confirme la entrada.

Si está en otra transacción, introduzca /n se11 en el campo de comandosy confirme la entrada.

2. Introduzca un elemento de datos (ZLASTNAME##) como apellido de unapersona y use un dominio adecuado. El elemento de datos debería podercontener 30 letras en mayúsculas y minúsculas.

a) Marque el botón de selección Tipo de datos.

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

c) Seleccione Crear.

d) En el popup que aparece, marque el botón de selección Elemento dedatos y confirme la entrada.

e) Introduzca una descripción significativa para el elemento de datos en elcampo Descripción breve.

f) En la etiqueta Tipo de datos del tipo elemental, introduzca el dominiorelevante creado anteriormente en el ejercicio.

g) En la etiqueta Denominador de campo deberá introducir nombresadecuados para el elemento de datos. Estos nombres aparecerán enpantallas e imágenes de selección (versión larga), por ejemplo, comoexplicación de los campos.

3. Introduzca un elemento de datos (ZFIRSTNAME##) como nombre de pilade una persona y use un dominio adecuado. El elemento de datos deberíapoder contener 30 letras en mayúsculas y minúsculas.

a) Proceda como en el ejercicio anterior.

4. Cree un elemento de datos (ZASSETS##) para activos y use un dominioadecuado. El elemento de datos se debería usar para cálculos empresariales.

a) Proceda como en el ejercicio anterior.

5. Cree un elemento de datos (ZLIABILITIES##) para pasivos y use undominio adecuado. El elemento de datos se debería usar para cálculosempresariales.

a) Proceda como en el ejercicio anterior.

Continúa en la página siguiente

234 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 245: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Tarea 3:Cree un programa.

1. Cree el programa ejecutable ZBC430_##_DATA_ELEMENTS sin “IncludeTOP”.

a) Para ello, use la transacción SE80 o SE38.

2. Cree los campos de entrada siguientes en el programa sin el comando ABAPPARAMETERS.

Parámetro Tipo de datos

pa_fname ZFIRSTNAME##

pa_fname ZLASTNAME##

pa_activ ZASSETS##

pa_liabs ZLIABILITIES##

Reste el pasivo al activo y dé salida a todos los parámetros y a los resultadosdel cálculo en una lista.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 235

Page 246: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

3. Ejecute el programa e introduzca los distintos valores en la imagen deselección, a la que se da salida en forma de lista.

a) Asegúrese de que se puedan utilizar mayúsculas y minúsculas paranombres, de acuerdo con las definiciones en los dominios. En los doscampos numéricos, se deben poder introducir decimales y un signonegativo.

ResultadoExtracto de código fuente: SAPBC430S_DATA_ELEMENTS

REPORT sapbc430s_data_elements .

*Replace ## by Your Group- Screennumber and uncomment the ABAP-coding

DATA: result TYPE zassets##.

PARAMETERS: pa_fname TYPE zfirstname##,

pa_lname TYPE zlastname##,

pa_activ TYPE zassets##,

pa_liabs TYPE zliabilities##.

START-OF-SELECTION.

NEW-LINE.

WRITE: 'Client:', pa_fname, pa_lname.

result = pa_activ - pa_liabs.

NEW-LINE.

WRITE: 'Finance:', pa_activ, pa_liabs, result.

236 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 247: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

211 Ejercicio 8: Estructuras simples yanidadasDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear estructuras simples y anidadas en el Dictionary, y usarlas en programas

ABAP

Ejemplo empresarialA fin de diseñar estructuras de datos complejas, deberá crear una estructuracompleja para su proyecto en el Dictionary.

Tarea 1:Cree estructuras simples para poder usarlas luego en programas ABAP.

1. En el Dictionary, cree una estructura ZNAME## e incluya los doscomponentes siguientes en la estructura. Use los elementos de datos creadosen ejercicios anteriores para introducir los datos.

Componente Tipo de componente Descripción

FIRSTNAME El propio nombre de pila

LASTNAME El propio apellido

2. Cree una estructura ZADRESS## e introduzca los cuatro componentessiguientes:

Componente Tipo de componente Descripción

STREET S_STREET Calle

NR S_NO Número

ZIP POSTCODE Código postal

CITY S_CITY Población

Tarea 2:Cree una estructura anidada para poder usarla luego en programas ABAP.

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

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 237

Page 248: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

2. Añada la estructura ZADRESS## como estructura Include en la estructuraZPERSON##. Además, incluya la estructura ZNAME## en la estructuraZPERSON## como estructura anidada con el nombre de componenteNAME.

3. Introduzca un programa ABAP ZBC430_##_STRUCT_NESTED. Creeun objeto de datos estructurado (wa_person) en este programa del tipoZPERSON##. Complete los componentes de este objeto de datos con datospersonales y dé salida a estos datos en una lista.

238 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 249: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Solución 8: Estructuras simples yanidadasTarea 1:Cree estructuras simples para poder usarlas luego en programas ABAP.

1. En el Dictionary, cree una estructura ZNAME## e incluya los doscomponentes siguientes en la estructura. Use los elementos de datos creadosen ejercicios anteriores para introducir los datos.

Componente Tipo de componente Descripción

FIRSTNAME El propio nombre de pila

LASTNAME El propio apellido

a) Inicie SE11 e introduzca el nombre de la estructura en el campo deentrada Tipo de datos.

b) Seleccione Crear y marque Estructura en el diálogo siguiente.

c) Indique una descripción breve e introduzca los componentesespecificados. Active la estructura para que se conozca a nivel general.

2. Cree una estructura ZADRESS## e introduzca los cuatro componentessiguientes:

Componente Tipo de componente Descripción

STREET S_STREET Calle

NR S_NO Número

ZIP POSTCODE Código postal

CITY S_CITY Población

a) Proceda del mismo modo que en la parte anterior del ejercicio.

Tarea 2:Cree una estructura anidada para poder usarla luego en programas ABAP.

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

a) Proceda del mismo modo que en la parte anterior del ejercicio.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 239

Page 250: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

2. Añada la estructura ZADRESS## como estructura Include en la estructuraZPERSON##. Además, incluya la estructura ZNAME## en la estructuraZPERSON## como estructura anidada con el nombre de componenteNAME.

a) Incluya la dirección a través del menú Tratar -> Include -> Insertar oen la columna Componente introduzca la palabra clave .INCLUDE.

Atención: El punto antepuesto a la palabra clave es importante.

Para la segunda estructura, que desea incluir como estructura profunda,introduzca un nombre de componente aleatorio (p. ej., "Nombre").

Componente Tipo de componente Descripción

.include ZADRESS## Estructura dedirección

NAME ZNAME## Hace referencia a laestructura del nombre

Continúa en la página siguiente

240 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 251: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

3. Introduzca un programa ABAP ZBC430_##_STRUCT_NESTED. Creeun objeto de datos estructurado (wa_person) en este programa del tipoZPERSON##. Complete los componentes de este objeto de datos con datospersonales y dé salida a estos datos en una lista.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto de código fuente: SAPBC430S_STRUCT_NESTED

REPORT sapbc430s_struct_nested.

*Replace ## by Your group- or screennumber and

*uncomment the ABAP-coding

DATA wa_person TYPE zperson##.

START-OF-SELECTION.

wa_person-name-firstname = 'Harry'.

wa_person-name-lastname = 'Potter'.

wa_person-street = 'Privet Drive'.

wa_person-nr = '3'.

wa_person-zip = 'GB-10889'.

wa_person-city = 'London'.

WRITE: / wa_person-name-firstname ,

wa_person-name-lastname ,

wa_person-street ,

wa_person-nr ,

wa_person-zip ,

wa_person-city .

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 241

Page 252: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

242 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 253: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

217 Ejercicio 9: Tipos de tabla (tablasinternas/ITAB)Duración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear tipos de tabla y usarlos en programas ABAP

Ejemplo empresarialCon el fin de conservar datos locales, defina un tipo de tabla para guardar losdatos ordenados.

Tarea:Cree tablas internas simples basadas en una estructura existente para poder usarlasluego en programas ABAP.

1. Cree un tipo de tabla ZIT_SFLIGHT## en el Dictionary. El tipo de tabladebería basarse en el tipo de línea de la tabla de base de datos SFLIGHT yestar clasificado en función de la fecha de vuelo (FLDATE)

2. Introduzca un programa ABAP ZBC430_##_ITAB_SORTED. En esteprograma, cree un objeto de datos estructurado (wa_sflight) del tipoSFLIGHT como área de trabajo y una tabla interna basada en el tipo detabla que acaba de definir. En la tabla SFLIGHT, marque los datos de unacompañía aérea (p. ej., ’JL’) en el área de trabajo y dé salida a los datos enforma de lista sin clasificar.

3. Amplíe el programa del modo siguiente. Inserte una línea (comando ABAPULINE) en la lista. Cargue de nuevo los mismos datos mediante el comandoSELECT con ARRAY FETCH en la tabla interna del tipo ZIT_SFLIGHT##,y dé salida al contenido de la tabla mediante el comando LOOP en la mismalista. Compare el orden de los datos en los dos extractos de lista.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 243

Page 254: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Solución 9: Tipos de tabla (tablasinternas/ITAB)Tarea:Cree tablas internas simples basadas en una estructura existente para poder usarlasluego en programas ABAP.

1. Cree un tipo de tabla ZIT_SFLIGHT## en el Dictionary. El tipo de tabladebería basarse en el tipo de línea de la tabla de base de datos SFLIGHT yestar clasificado en función de la fecha de vuelo (FLDATE)

a) En el menú SAP EASY ACCESS, introduzca se11 en el campo decomandos y confirme la entrada.

Si está en otra transacción, introduzca /n se11 en el campo de comandosy confirme la entrada.

b) Marque el botón de selección Tipo de datos.

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

d) Seleccione Crear.

e) En la ventana de diálogo siguiente, marque Tipo de tabla.

f) Asigne una descripción breve e introduzca el nombre de la tabla debase de datos en el campo de tipo de línea.

g) Cambie a la etiqueta Inicialización y acceso y marque Tabla clasificadacomo tipo de acceso.

h) Cambie a la etiqueta Clave y marque No unívoco como tipo de clave.

i) Ahora marque el componente clave correspondiente en Definición declave, Componentes clave, y el pulsador Seleccionar componentes.

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

2. Introduzca un programa ABAP ZBC430_##_ITAB_SORTED. En esteprograma, cree un objeto de datos estructurado (wa_sflight) del tipoSFLIGHT como área de trabajo y una tabla interna basada en el tipo detabla que acaba de definir. En la tabla SFLIGHT, marque los datos de unacompañía aérea (p. ej., ’JL’) en el área de trabajo y dé salida a los datos enforma de lista sin clasificar.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

244 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 255: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

3. Amplíe el programa del modo siguiente. Inserte una línea (comando ABAPULINE) en la lista. Cargue de nuevo los mismos datos mediante el comandoSELECT con ARRAY FETCH en la tabla interna del tipo ZIT_SFLIGHT##,y dé salida al contenido de la tabla mediante el comando LOOP en la mismalista. Compare el orden de los datos en los dos extractos de lista.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto de código fuente: SAPBC430S_ITAB_SORTED

REPORT SAPBC430S_ITAB_SORTED.

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

**uncomment the ABAP-coding

DATA it_flight TYPE zit_sflight##.

DATA wa_sflight TYPE sflight.

WRITE / 'Printout in tableorder of Database:'.

SELECT * FROM sflight

INTO wa_sflight

WHERE carrid = 'JL'.

WRITE: / wa_sflight-carrid,

wa_sflight-connid,

wa_sflight-fldate,

wa_sflight-price,

wa_sflight-currency,

wa_sflight-planetype.

ENDSELECT.

ULINE.

SELECT * FROM sflight

INTO TABLE it_flight

WHERE carrid = 'JL'.

WRITE / 'Printout in tableorder of sorted ITAB:'.

LOOP AT it_flight INTO wa_sflight.

WRITE: / wa_sflight-carrid,

wa_sflight-connid,

wa_sflight-fldate,

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 245

Page 256: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

wa_sflight-price,

wa_sflight-currency,

wa_sflight-planetype.

ENDLOOP.

246 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 257: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

221 Ejercicio 10: Estructuras profundasDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear estructuras profundas y usarlas en programas ABAP

Ejemplo empresarialAmplíe la estructura de los datos personales del equipo de proyecto de modo quepueda agregar una lista de teléfonos tan larga como desee para cada empleado.

Tarea:Cree una tabla interna basada en un objeto de datos para poder introducirla en unaestructura. Úsela en un programa ABAP.

1. Cree un tipo de tabla para una tabla estándar ZIT_PHONE_NUMBER##en el Dictionary. El tipo de tabla se debería basar en el tipo de línea de laestructura existente STR_PHONE.

2. Amplíe la estructura ZPERSON## existente en el Dictionary. El nuevocomponente debería llamarse PHONE y debería estar basado en la tablainterna ZIT_PHONE_NUMBER##.

3. Cree un programa ABAP ZBC430_##_STRUCT_DEEP. Para ello, copie lasolución para el programa ZBC430_##_STRUCT_NESTED o la plantillamodelo SAPBC430S_STRUCT_NESTED. Amplíe este programa con unárea de trabajo para un objeto de datos estructurado (wa_phone) del tipoSTR_PHONE.

4. Amplíe el programa del modo siguiente:

Inserte tres números de teléfono en el objeto de datos estructuradowa_person y dé salida a estos datos en la misma lista mediante el comandoLOOP.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 247

Page 258: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Solución 10: Estructuras profundasTarea:Cree una tabla interna basada en un objeto de datos para poder introducirla en unaestructura. Úsela en un programa ABAP.

1. Cree un tipo de tabla para una tabla estándar ZIT_PHONE_NUMBER##en el Dictionary. El tipo de tabla se debería basar en el tipo de línea de laestructura existente STR_PHONE.

a) En el menú SAP EASY ACCESS, introduzca se11 en el campo decomandos y confirme la entrada.

Si está en otra transacción, introduzca /n se11 en el campo de comandosy confirme la entrada.

b) Marque el botón de selección Tipo de datos.

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

d) Seleccione Crear.

e) En la ventana de diálogo siguiente, seleccione Tipo de tabla.

f) Proporcione una descripción breve e introduzca el nombre de laestructura en el campo de tipo de línea.

g) Cambie a la etiqueta Inicialización y acceso y seleccione Tablaestándar como tipo de acceso.

h) Cambie a la etiqueta Clave y seleccione No unívoco como tipo de clave.

i) Ahora seleccione Clave estándar como Definición de clave.

2. Amplíe la estructura ZPERSON## existente en el Dictionary. El nuevocomponente debería llamarse PHONE y debería estar basado en la tablainterna ZIT_PHONE_NUMBER##.

a) Introduzca un nuevo componente llamado "Teléfono" en la estructura yespecifique el tipo de tabla que acaba de crear como tipo de componente.

Compo-nente

Tipo de componente Descripción

.include ZADRESS## Estructura dedirección

NAME ZNAME## Hace referencia ala estructura delnombre

Continúa en la página siguiente

248 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 259: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

PHONE ZIT_PHONE_NUMBER## Hace referenciaa la tabla deteléfonos

3. Cree un programa ABAP ZBC430_##_STRUCT_DEEP. Para ello, copie lasolución para el programa ZBC430_##_STRUCT_NESTED o la plantillamodelo SAPBC430S_STRUCT_NESTED. Amplíe este programa con unárea de trabajo para un objeto de datos estructurado (wa_phone) del tipoSTR_PHONE.

a) Consulte el extracto del código fuente de la solución modelo.

4. Amplíe el programa del modo siguiente:

Inserte tres números de teléfono en el objeto de datos estructuradowa_person y dé salida a estos datos en la misma lista mediante el comandoLOOP.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto de código fuente: SAPBC430S_STRUCT_DEEP

REPORT sapbc430s_struct_deep.

DATA wa_person TYPE zperson##.

DATA wa_phone TYPE str_phone.

START-OF-SELECTION.

*Fill deep structure with data

wa_person-name-firstname = 'Harry'.

wa_person-name-lastname = 'Potter'.

wa_person-street = 'Privet Drive'.

wa_person-nr = '3'.

wa_person-zip = 'GB-10889'.

wa_person-city = 'London'.

wa_phone-p_type = 'P'.

wa_phone-p_number = '+31-10-9938990'.

INSERT wa_phone INTO TABLE wa_person-phone.

wa_phone-p_type = 'F'.

wa_phone-p_number = '+31-10-9938991'.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 249

Page 260: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

INSERT wa_phone INTO TABLE wa_person-phone.

wa_phone-p_type = 'M'.

wa_phone-p_number = '+31-79-12211433'.

INSERT wa_phone INTO TABLE wa_person-phone.

*Write on List

WRITE: / wa_person-name-firstname ,

wa_person-name-lastname ,

wa_person-street ,

wa_person-nr ,

wa_person-zip ,

wa_person-city .

WRITE: / 'Phone-Numbers:'.

LOOP AT wa_person-phone INTO wa_phone.

WRITE: AT 20 wa_phone-p_type,

wa_phone-p_number.

NEW-LINE.

ENDLOOP.

250 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 261: 119167629 taw10-02-es

TAW10_2 Lección: Tipos de datos básicos

Resumen de la lección

Ahora podrá:• Crear dominios y usarlos en elementos de datos• Definir elementos de datos y usarlos como base para definir objetos de datos

en programas ABAP• Definir estructuras y usarlas como base para definir objetos de datos en

programas ABAP• Definir tablas internas y usarlas como base para definir objetos de datos

en programas ABAP• Definir estructuras complejas (anidadas/profundas) y usarlas como base para

definir objetos de datos en programas ABAP• Definir constantes globales con ayuda de un pool de tipos y usarlas en

programas ABAP

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 251

Page 262: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Lección:226

Tablas en el Dictionary ABAPDuración de la lección: 60 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear tablas• Usar el concepto de dominio de dos niveles• Definir las opciones técnicas de una tabla• Crear y usar estructuras Include

In this lesson, the two-step domain concept that was already addressed in BC400is repeated. In addition, the basic dependencies of the ABAP Dictionaries betweendomain, data element and table are explained. Furthermore, their mapping on theunderlying database is presented (databases generally only know tables. Dataelements are unknown to databases. The term domain does exist on severaldatabase systems, but is used differently in the ABAP Dictionary).

The technical settings and their effects in RDBMS are also discussed. Theparticipants should gain an insight into the definition of tables, structures, dataelements and domains.

Ejemplo empresarialDebería asignar unidades de información, llamadas entidades, en la base de datosde su empresa.

252 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 263: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Tablas

Gráfico 127: Tablas y campos

The primary key is a combination of columns (column = field) that uniquelyidentifies a data record (corresponding to an entry).

La estructura de los objetos de desarrollo de la aplicación se asignan en tablas enla base de datos relacional subyacente.

Los atributos de estos objetos corresponden a campos de la tabla.

Una tabla está formada por columnas (campos) y filas (entradas). Tiene unnombre y distintos atributos generales, como clase de entrega y autorización paramantenimiento.

Un campo tiene un nombre unívoco y atributos; por ejemplo, puede ser un campoclave.

Una tabla tiene uno o más campos clave, que son la clave principal.

Los valores de estos campos clave identifican de forma unívoca una entrada detabla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 253

Page 264: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Debe especificar una tabla de referencia para campos de moneda (tipo de datosCURR) o cantidad (tipo de datos QUAN). Debe contener un campo (campo dereferencia) con el formato para claves de moneda (tipo de datos CUKY) o elformato para unidades (tipo de datos UNIT). El campo sólo se asigna al campo dereferencia durante la ejecución del programa.

Gráfico 128: Objetos básicos del Dictionary ABAP

The instructor first explains the object table and term table key. The instructorthen discusses the field definition (data element, domain). Only the domain canbe defined alone without using other objects. The instructor shows a demo tomake things clearer.

Important points:

• Calling a transaction• Calling F1 and F4 help with technical field information• Presenting the format check with an incorrect entry and using the F4 help• Calling the table definition used in the transaction• Explaining tables, data element and domain definition using the sample

transaction (for example short name of the data element is a component ofthe F1 help of the field on the screen)

• During the demo, the trainer asks the participants: Does it make sense to usethe same domain to define different data elements? The trainer discussesthe responses with the participants

254 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 265: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Los objetos básicos para la definición de datos en el Dictionary ABAP son tablas,elementos de datos y dominios. Los dominios sirven para la definición técnicade un campo de tabla (p. ej. tipo o longitud del campo) y los elementos de datossirven para la definición semántica (p. ej. descripción breve).

Un dominio describe el rango de valores de un campo en función del tipo y lalongitud de los datos. El rango de valores se puede limitar especificando valoresfijos.

Un elemento de datos describe el significado de un dominio en un determinadocontexto empresarial. El elemento de datos contiene sobre todo la Ayuda paraentradas (documentación F1) y los denominadores de campo en la pantalla.

Un campo no es un objeto independiente, sino que depende de la tabla. El camposólo se puede actualizar dentro de una tabla.

Puede introducir el tipo de datos y el número de posiciones para un campodirectamente. En este caso no hace falta ningún elemento de datos. En cambio, eltipo de datos y el número de posiciones se definen especificando un tipo directo.

Los atributos de tipo de datos de un elemento de datos se pueden definir tambiénespecificando un tipo integrado; en este caso, el tipo de datos y el número deposiciones se introducen directamente.

Gráfico 129: El concepto de dominio de dos niveles: Ejemplo

El horario de vuelo está guardado en la tabla SPFLI. Los campos de tablaAIRPFROM (aeropuerto de salida) y AIRPTO (aeropuerto de destino) tienenel mismo dominio: S_AIRPID. Ambos campos utilizan el mismo dominio,puesto que ambos campos contienen el ID de un aeropuerto y, por lo tanto,tienen los mismos atributos técnicos. Sin embargo, tienen distinto significadosemántico y usan elementos de datos distintos para documentar este dato. Elcampo AIRPFROM utiliza el elemento de datos S_FROMAIRP, mientras que elcampo AIRPTO usa el elemento de datos S_TOAIRP.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 255

Page 266: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 130: Tablas y estructuras transparentes

Overview of the relationships between the tables in the ABAP Dictionary and thecorresponding tables in the database system

Transparent Tables and Structures

WebAs : Database (1:1)

Data can be permanently saved in transparent tables. Structures are defined andactivated like tables. However, database tables are not generated from structures.

Structure use:

• Type definition in programs• Include structures

The instructor explains the relationships to the database objects and shows a demo.The following points are important:

• Call the DB utility (menu option: Utilities)• Call the database object check in the DB utility• Explain the table fields of the DB object

Compare to the structure.

256 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 267: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Demo 1: Creating a Table

Idea:

In this demo you create table ZCARGO for entering all cargo orders.

Table Structure ZCARGO (Template: SCARGO)

Field name Key Data element Type,LengthDescription

CLIENT X S_CLIENT Client

CARRID X S_CARR_ID Airline

CONNID X S_CONN_ID Connection

FLDATE X S_DATE Date of flight

CARGO_ID XZCARGO_ID

CHAR,10

Cargo number

CARGO_DESC X SCARGO_DESC Cargodescription

CUST_NO SCUSTOMER_NUM Customernumber

CARGOTYPEZCARGO_TYPE

CHAR,1

Cargo type

VALUE SCARGO_VALUE Cargo value

CURRENCY CURCY Currency

Note:

Data elements in bold print must be created using a suitable domain. Explain indetail the reference field and reference value for the VALUE field. Data elementZCARGO_ID must be documented. After you create the table, maintain a fewdata records using SE16. Display the F1 help for field VALUE.

Tip:

One of the data records you maintain should contradict the checks defined in thedemo on foreign keys. This enables you to show that creating a foreign key doesnot result in a cleanup of incorrect data records.

Al activar el Dictionary ABAP se crea automáticamente en la base de datosuna tabla transparente. En ese momento, en el Dictionary ABAP se traduce ladescripción independiente de la base de datos de la tabla al idioma en que estáel sistema de base de datos utilizado.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 257

Page 268: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

La tabla de base de datos se llama igual que la tabla en el Dictionary ABAP. Loscampos también se llaman igual en la base de datos y en el Dictionary ABAP. Lostipos de datos del Dictionary ABAP se convierten en los correspondientes tiposde datos del sistema de base de datos.

El orden de los campos en el Dictionary ABAP puede ser distinto del orden de loscampos en la base de datos. Esto permite introducir nuevos campos sin tener queconvertir la tabla. Cuando añada un nuevo campo, ajuste el orden de los camposmodificando el catálogo de base de datos (ALTER TABLE). El nuevo campose añade a la tabla de base de datos.

Los programas ABAP pueden acceder a una tabla de transparente de dos formas.Una forma es acceder a los datos incluidos en la tabla mediante OPEN SQL (oEXEC SQL). Con el otro método, la tabla define un tipo estructurado al que seaccede cuando se definen variables (o tipos más complejos).

También puede crear un tipo estructurado en el Dictionary ABAP para el que noexista un objeto correspondiente en la base de datos. Estos tipos se denominanestructuras. Las estructuras se pueden usar también para definir los tipos devariables.

Gráfico 131: Estructuras Include

The instructor explains how to create substructures in the ABAP Dictionary. Youcreate substructures as structures with transaction SE11 and then include them intables as desired.

Additionally, the instructor should mention that insertion of substructures into SAPtables is considered a modification. This can be avoided by using an APPEND

258 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 269: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Las estructuras se pueden incluir en tablas o en otras estructuras para evitardefiniciones de estructura redundantes.

Una tabla sólo se puede incluir como tabla completa.

Una cadena de includes sólo puede contener una tabla de base de datos. La tablaen la que se introducen los includes pertenece a la cadena de includes. Estosignifica que no se puede incluir una tabla transparente en otra tabla transparente.

Los includes podrían contener más includes a su vez.

Las definiciones de clave externa se suelen transmitir del include a la tabla deinclusión. Los atributos de la definición de clave externa se transfieren del includea la tabla de inclusión, de modo que la clave externa dependa de la definiciónen el include.

The table is automatically created in the database system when it is activated.Certain information is required at this time so that the table can be administeredcorrectly from the point of view of the ABAP Dictionary. This information iscalled technical settings. From the previous topics, the participant knows thetables and table field definition and the mapping to the database system. Only theadministrative information needed for creating the table is missing.

Demo 2: Inserting Includes

Idea:

The cargo weight must be administered in table ZCARGO. Add fields WEIGHTand UNIT to the table. Because this field combination is required in other tables,use the Include ZWEIGHT.

Table Structure ZWEIGHT (Template: SCARGO_WEIGHT)

Field name Data element Type,Length

Description

WEIGHT S_WEIGHT QUAN, 10,2

Weight

UNIT S_WEIGHTUNIT UNIT, 3 Unit

Note:

Explain reference field and reference table. Briefly show the functions for Includesin SE11 (expand, collapse).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 259

Page 270: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

You might want to indicate that the database fields can be appended using ALTERTABLE (as preparation for Unit 6). Once activated, show the database structurefor table ZCARGO and talk about the activation log. Explain that the databasedoes not differentiate whether the field comes from an include or the table.

Tip:

DO not maintain a foreign key to table T006 (contains all unit) for the UNITfield. Otherwise, Demo 15 will not work.

Gráfico 132: Opciones técnicas

The instructor explains the technical settings.

• Data class (select table space or database space)• Size category (determine size of next extent)• Buffering (faster access to the database server using the main memory of

the application server)• Logging the information (should all the data changes for this table be logged)

The technical settings are transferred to the database system using the DB utilityand can be managed in the storage parameters.

Debe actualizar las opciones técnicas cuando defina una tabla transparente en elDictionary ABAP.

260 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 271: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Las opciones técnicas se usan para optimizar de forma individualizada lasnecesidades de almacenamiento y el comportamiento de acceso de las tablas debase de datos.

Las opciones técnicas se pueden usar para definir cómo se debería tratar la tablacuando se crea en la base de datos, si la tabla se debe guardar en la memoriaintermedia y si las modificaciones de las entradas se deben registrar en un log.

La tabla se crea automáticamente en la base de datos cuando se activa en elDictionary ABAP. La información necesaria en este caso sobre el almacén que sedebe seleccionar (tablespace) y el tamaño de tabla previsto se determinan a partirde las parametrizaciones de clase de datos y tipo de tamaño.

Las parametrizaciones de la memoria intermedia definen si se debe guardar latabla en la memoria intermedia y cómo.

Puede definir si se deben registrar en log las modificaciones en las entradas detabla.

Gráfico 133: Fragmentación de tablas en la base de datos

Concretamente, las tablas que incluyen datos de transacción pueden tener vacíosgrandes en el espacio de memoria asignado debido al rápido crecimiento o a lamodificación frecuente de los sets de datos (inserción y borrado de registros dedatos). Esta fragmentación de los datos en el disco duro del servidor de base dedatos siempre provoca reiterados problemas de rendimiento, que no se puedencorregir mediante medidas sencillas como la creación de un índice.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 261

Page 272: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Los índices fragmentados se pueden desfragmentar con sólo borrarlos y volverlosa introducir. En este caso la base de datos calcula de nuevo el contenido y laestructura del índice y crea el espacio de memoria necesario compacto en elsoporte de almacenamiento siempre que sea posible. Mientras se reestructura elíndice, se pueden seguir usando las tablas de base de datos.

Atención: Si el índice se crea a partir de una tabla grande (< 100.000registros de datos), el proceso de creación podría tardar varios minutos oincluso horas (en el caso de tablas en el entorno BW). Además, mientrasse vuelve a crear el índice, no se puede utilizar para acceder a la base dedatos, lo que supondría una carga adicional (escaneado de tota la tabla)para la base de datos cuando se lean los registros de datos desde las tablascorrespondientes.

Las tablas fragmentadas se deben convertir (véase Modificaciones de tablas debase de datos) para poder reducir la fragmentación. El sistema SAP crea unanueva tabla para ello. Los datos se transfieren a esta tabla. La tabla anterior seborra entonces, y la nueva tabla la sustituye. Si esta tabla creciera rápidamentede forma inesperada, se debería volver a verificar antes de convertir las opcionestécnicas y ajustarlas en caso necesario.

Atención: Durante el proceso de conversión, el contenido de la tablano se puede leer ni modificar. El proceso de conversión de una tabla sedebe ejecutar en un entorno productivo con la máxima precaución, yaque, en función del tamaño de la tabla, el proceso de conversión puededurar varios minutos u horas.

= > Estos procesos de conversión (para tablas o índices) se debenrealizar por lo tanto en momentos en que la carga sea mínima.

A fin de evitar este tipo de fragmentaciones en la medida de lo posible desde elprincipio, marque las tablas según su tamaño y el tipo de datos en las opcionestécnicas.

262 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 273: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Gráfico 134: Clase de datos

La clase de datos define el área física de la base de datos (o el tablespace enORACLE) en la que se debe guardar la tabla desde un punto de vista lógico. Siselecciona correctamente la clase de datos, la tabla se creará automáticamente enel área correcta de la base de datos cuando se active en el Dictionary ABAP.

Las clases de datos más importantes son datos maestros, datos de movimiento,datos organizativos y datos del sistema.

Los datos maestros son datos que rara vez se modifican. Un ejemplo de datosmaestros son los datos de un archivo de dirección, por ejemplo, el nombre, ladirección y el número de teléfono.

Los datos de movimiento son datos que se modifican a menudo. Un ejemplo es elstock de material de un almacén, que puede cambiar después de cada pedido.

Los datos organizativos son los datos definidos durante el Customizing cuandose instala el sistema y que luego rara vez se modifican. Las claves de país sonun ejemplo.

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

Otras clases de datos, llamadas clases de datos de cliente (USER, USER1), estána disposición de los clientes. Se deben utilizar para desarrollos de cliente. En labase de datos debe haber asignadas zonas de almacenamiento especiales.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 263

Page 274: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 135: Categoría de tamaño

La categoría de tamaño describe las necesidades de almacenamiento previstaspara la tabla en la base de datos.

Cuando se crea una tabla en la base de datos, se reserva un extent inicial. Eltamaño del extent inicial es idéntico para todas las categorías de tamaño. Simás adelante la tabla necesita más espacio para datos, se agregan extents. Estosextents adicionales tienen un tamaño fijo determinado por la categoría de tamañoespecificada en el Dictionary ABAP.

Puede elegir una categoría de tamaño de 0 a 4. Cada categoría tiene asignado untamaño de extent fijo que depende del sistema de base de datos utilizado.

La correcta asignación de una categoría de tamaño garantiza que no se crearán unagran cantidad de extents pequeños. También evita que se malgaste el espacio dealmacenamiento creando extents demasiado grandes.

264 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 275: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Gráfico 136: Registro en log

Puede utilizar el registro en log para registrar y almacenar las modificacionesen las entradas de una tabla.

Para activar el registro en log, se debe marcar el campo correspondiente en lasopciones técnicas. No obstante, el registro en log sólo se realiza si el sistema SAPse inicia con un perfil que contiene el parámetro ´rec/client´. No basta con marcarel indicador en el Dictionary ABAP para iniciar el registro en log.

El parámetro “rec/client” puede tener los valores siguientes:

rec/client =ALL Se deben registrar en log todos los mandantes.

rec/client = 000[...] Sólo se deben registrar en log los mandantesespecificados.

rec/client = OFF El registro en log está desactivado en estesistema.

Las modificaciones de datos se registran en log con independencia de laactualización. Puede visualizar los logs con la transacción Historial de tabla(SCU3).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 265

Page 276: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Atención: El registro en log provoca un cuello de botella en el sistema:

• Acceso de escritura adicional por cada modificación en las tablasque se están registrando en log.

• Esto puede dar lugar a bloqueos, aunque los usuarios accedan atablas de distintas aplicaciones.

Resumen

• Todos los datos orientados a la empresa se administran en tablas cuyadefinición se almacena en el Dictionary ABAP.

• Para definir las tablas se usa el concepto de dominio de dos niveles. Ladefinición semántica se implementa con elementos de datos, mientras que latécnica se implementa con dominios.

• Los campos de estructuras Include se pueden incluir en tablas.• Las opciones técnicas de una tabla definen cómo se debería guardar la tabla

en la base de datos (tablespace, tamaño de extent) y si se deben registrar enlog las modificaciones de los registros de datos.

266 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 277: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

237 Ejercicio 11: Tablas en el Dictionary ABAPDuración del ejercicio: 60 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear tablas y usar el concepto de dominio de dos niveles• Definir las opciones técnicas de forma lógica• Documentar los campos• Crear y usar estructuras Include

Ejemplo empresarialEn estos ejercicios, las tablas del modelo de vuelo se amplían con la gestión deempleados. Esta gestión de empleados permite a las compañías aéreas introducir yevaluar datos sobre sus empleados (por ejemplo, nombre, número de personal,salario, departamento, etc.) y sobre las asignaciones dentro de la organización(departamentos de la compañía aérea).

En este ejercicio vamos a crear dos tablas para los datos de empleado y losdepartamentos de la compañía aérea.

Los datos para los empleados se actualizan en la tabla ZEMPLOY##. Losnombres y las direcciones de los empleados, así como sus salarios, se almacenanen la tabla ZEMPLOY##. La tabla ZDEPMENT## contiene los departamentosde la compañía aérea. Se puede contactar con cada departamento mediante unnúmero de teléfono y fax. En los ejercicios siguientes iremos ampliando estastablas paso a paso.

Tarea 1:

To avoid conflicts, the instructor should make sure that all groups specify theirgroup number when defining names for ABAP Dictionary objects (this is oftenforgotten for data elements and domains). All groups should also complete theexercises, since the unit exercises build on previous exercises. Good supervisionof the exercises is of great importance. Each group should then executeBC430_CHECK.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 267

Page 278: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

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

Nota: Antes de poder activar las tablas, tendrá que definir sus opcionestécnicas. El procedimiento se describe en las últimas tareas de losejercicios. Las primeras tareas se pueden realizar por lo tanto sin activarla tabla.

Se actualizan los datos de tres compañías aéreas. Una compañía aéreatiene 20.000 empleados y entre 10 y 30 departamentos. No guarde losdatos en la memoria intermedia ni en un log. De la memoria intermediahablaremos en los ejercicios de la siguiente unidad.

1. Cree la tabla ZEMPLOY##.

A través del acceso vía menús Herramientas → Workbench ABAP →Desarrollo → Dictionary ABAP se accede a la pantalla de resumen delDictionary ABAP.

Tabla ZEMPLOY##

Campo Elemento dedatos

Dominio Tipo,longi-tud

Significado

CLIENT S_CLIENT CLIENT Mandante

CARRIER S_CARR_ID S_CARR_ID Compañíaaérea

EMP_NUM El propio El propio NUMC10

Nº personal

FIRST_NAME S_FNAME S_FNAME Nombre depila

LAST_NAME S_LNAME S_LNAME Apellido

DEPARTMENT El propio El propio CHAR,4

Código dedeparta-mento

AREA El propio El propio CHAR,1

Área

SALARY El propio El propio CURR,10Dec. 2

Sueldo

CURRENCY S_CURRCODE S_CURR Moneda

2. Cree la tabla ZDEPMENT##.

Continúa en la página siguiente

268 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 279: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

A través del acceso vía menús Herramientas → Workbench ABAP →Desarrollo → Dictionary ABAP se accede a la pantalla de resumen delDictionary ABAP.

Tabla ZDEPMENT##

Campo Elemento dedatos

Dominio Tipo,longi-tud

Descripción

CLIENT S_CLIENT CLIENT Mandante

CARRIER S_CARR_ID S_CARR_ID Cía. aérea

DEPARTMENT El propio El propio CHAR,4

Código dedeparta-mento

TELNR El propio S_PHONE CHAR,30

Teléfono

FAXNR El propio S_PHONE CHAR,30

Fax

3. Documente los campos Nº personal y Código de departamento.

4. Para activar la tabla, realice las opciones técnicas y asigne un campo demoneda si existe un campo de cantidad en la tabla.

Tarea 2:Compruebe que los mismos campos estén disponibles en las dos tablas pararegistrar las modificaciones; para ello, añada estos campos a ambas tambas conuna subestructura ZCHANGE##.

Nota: Las modificaciones en las tablas ZEMPLOY## y ZDEPMENT##son cruciales y, por lo tanto, se debe registrar. La transacción deactualización debe indicar quién ha realizado una entrada de tabla porúltima vez. Para ello se pueden anexar campos para el número de personalde la última persona que modificó la entrada y la fecha de la última entradaen las tablas ZEMPLOY## y ZDEPMENT##.

En una aplicación real, esta ampliación provocaría siempre que sedesactivara la actualización de la tabla estándar para las dos tablas. Encambio se crearían transacciones de actualización propias para la tabla enlas que el programa completaría internamente los campos para modificarel registro en log en lugar del usuario.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 269

Page 280: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

La creación de estas transacciones no se discute en este curso. Por lotanto, en este curso supondremos que todos los usuarios completan(personal y correctamente) estos campos en la rutina de actualizaciónde la tabla estándar.

1. Cree la estructura ZCHANGE##. Cree un elemento de datos nuevo parael campo Última modificación mediante el dominio usado para el númerode personal. Use S_CHDATE como elemento de datos para la fecha de laúltima modificación.

2. Inserte ZCHANGE## como Include en las tablas ZEMPLOY## yZDEPMENT##.

3. Averigüe qué acciones se han realizado en la base de datos.

4. Inicie el programa BC430_CHECK en la transacción SE38.

Nota: El programa BC430_CHECK verifica si las solucionesson correctas y completa las nuevas tablas ZEMPLOY## yZDEPMENT## con datos de muestra necesarios para ejerciciosposteriores.

270 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 281: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Solución 11: Tablas en el Dictionary ABAPTarea 1:

To avoid conflicts, the instructor should make sure that all groups specify theirgroup number when defining names for ABAP Dictionary objects (this is oftenforgotten for data elements and domains). All groups should also complete theexercises, since the unit exercises build on previous exercises. Good supervisionof the exercises is of great importance. Each group should then executeBC430_CHECK.

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

Nota: Antes de poder activar las tablas, tendrá que definir sus opcionestécnicas. El procedimiento se describe en las últimas tareas de losejercicios. Las primeras tareas se pueden realizar por lo tanto sin activarla tabla.

Se actualizan los datos de tres compañías aéreas. Una compañía aéreatiene 20.000 empleados y entre 10 y 30 departamentos. No guarde losdatos en la memoria intermedia ni en un log. De la memoria intermediahablaremos en los ejercicios de la siguiente unidad.

1. Cree la tabla ZEMPLOY##.

A través del acceso vía menús Herramientas → Workbench ABAP →Desarrollo → Dictionary ABAP se accede a la pantalla de resumen delDictionary ABAP.

Tabla ZEMPLOY##

Campo Elemento dedatos

Dominio Tipo,longi-tud

Significado

CLIENT S_CLIENT CLIENT Mandante

CARRIER S_CARR_ID S_CARR_ID Compañíaaérea

EMP_NUM El propio El propio NUMC10

Nº personal

FIRST_NAME S_FNAME S_FNAME Nombre depila

LAST_NAME S_LNAME S_LNAME Apellido

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 271

Page 282: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

DEPARTMENT El propio El propio CHAR,4

Código dedeparta-mento

AREA El propio El propio CHAR,1

Área

SALARY El propio El propio CURR,10Dec. 2

Sueldo

CURRENCY S_CURRCODE S_CURR Moneda

a) Marque Tabla de base de datos e introduzca el nombre de tablaZEMPLOY## en el campo de entrada correspondiente. SeleccioneCrear. Introduzca un breve texto en la pantalla de actualización parala tabla.

b) Seleccione la clase de entrega A y marque Actualización de tablapermitida.

c) Ahora seleccione la etiqueta Campos para ir a la pantalla deactualización de definiciones de campo. Introduzca los nombres decampo (no hace falta que estén en el área de nombres de cliente).

d) Para los campos Mandante, Compañía aérea, Nombre, Apellido yMoneda, use el elemento de datos indicado al introducir el nombre delelemento de datos en la columna Tipo campo. Grabe las entradas.

e) Cree sus propios elementos de datos para los campos Nº personal,Código de departamento, Área y Sueldo. En la columna Tipo campo,introduzca un nombre (Z<objeto>##) para el elemento de datos.Marque el nombre del elemento de datos. Se muestra la definición delelemento de datos.

f) Introduzca un texto breve (componente de la ayuda F1). Ahoraseleccione la etiqueta Denominador de campo y almacene los textospara los denominadores de campo.

g) También debe asignar una descripción técnica al elemento de datos(dominio). Marque la etiqueta Definición e introduzca un nombre(Z<objeto>##) para el dominio en ella. Si el dominio se hapredefinido, active el elemento de datos y vuelva a la pantalla deactualización de los campos de tabla (con F3). Si no es así, marque elnombre del dominio. Se muestra la definición del dominio.

h) En ella, defina la descripción breve, el tipo de datos (NUMC, CHAR oCURR) y la longitud del campo. Active el dominio.

Continúa en la página siguiente

272 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 283: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

i) Retroceda una pantalla (con F3) hasta la definición del elemento dedatos y active el elemento de datos.

j) Retrocede otra pantalla hasta la definición del campo. Empiece denuevo a partir de e) hasta haber definido todos los campos de tabla.Grabe la tabla.

k) Defina la tabla de referencia y el campo de referencia para el campoSueldo. Marque el nombre de campo e introduzca lo siguiente en laventana de diálogo siguiente:

Campo Valor

Tabla de referencia ZEMPLOY##

Campo de referencia Moneda

l) Defina campos clave para la tabla ZEMPLOY## marcando la columnaClave a continuación del nombre de campo. Los campos Mandante,Compañía aérea y Nº personal identifican una entrada de formaunívoca. En consecuencia, se deben marcar como campos clave.

Nota: Los campos clave Mandante, Compañía aérea y Nºpersonal deben aparecer en este orden al principio de la listade campos.

m) Active la tabla ZEMPLOY##. La pantalla de actualización de lasopciones técnicas aparece automáticamente.

Nota: Puesto que el contenido de la tabla ZEMPLOY## nosuele cambiar, elija la clase de datos APPLO (datos maestros).El número previsto de registros en la tabla ZEMPLOY## es de60.000, por lo tanto, elija la categoría de tamaño 2. La tabla nose debe guardar en la memoria intermedia ni en log.

Tabla ZEMPLOY##

Clase de datos APPL0 (datos maestros)

Categoría de tamaño 2

Memoria intermedia No se permite

Registro en log Sin registro en log

Grabe las opciones técnicas. Vuelva a la pantalla de actualización de latabla (F3). La tabla está activada.

2. Cree la tabla ZDEPMENT##.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 273

Page 284: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

A través del acceso vía menús Herramientas → Workbench ABAP →Desarrollo → Dictionary ABAP se accede a la pantalla de resumen delDictionary ABAP.

Tabla ZDEPMENT##

Campo Elemento dedatos

Dominio Tipo,longi-tud

Descripción

CLIENT S_CLIENT CLIENT Mandante

CARRIER S_CARR_ID S_CARR_ID Cía. aérea

DEPARTMENT El propio El propio CHAR,4

Código dedeparta-mento

TELNR El propio S_PHONE CHAR,30

Teléfono

FAXNR El propio S_PHONE CHAR,30

Fax

a) Marque Tabla de base de datos e introduzca el nombre de tablaZDEPMENT## en el campo de entrada correspondiente. SeleccioneCrear. Introduzca un breve texto en la pantalla de actualización parala tabla.

b) Seleccione la clase de entrega A y marque Actualización de tablapermitida.

c) Ahora seleccione la etiqueta Campos para ir a la pantalla deactualización de definiciones de campo. Introduzca los nombres decampo (no hace falta que estén en el área de nombres de cliente).

d) Para los campos Mandante y Cía. aérea se usan los datos indicados;para ello se introduce el nombre del elemento de datos en la columnaTipo campo. Grabe las entradas.

e) Para los campos Código de departamento, Número de teléfono yNúmero de fax debería crear sus propios elementos de datos. En lacolumna Tipo campo, introduzca un nombre (Z<objeto>##) parael elemento de datos. Marque el nombre del elemento de datos. Semuestra la definición del elemento de datos.

f) Introduzca un texto breve (componente de la ayuda F1). Ahoraseleccione la etiqueta Denominador de campo y almacene los textospara los denominadores de campo en ella.

Continúa en la página siguiente

274 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 285: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

g) También debe asignar una descripción técnica al elemento de datos(dominio). Marque la etiqueta Definición e introduzca un nombre(Z<objeto>##) para el dominio en ella. Si no es así, marque elnombre del dominio. Se muestra la definición del dominio.

Nota: Si el dominio se ha predefinido, active el elemento dedatos y vuelva a la pantalla de actualización de los camposde tabla (con F3).

h) Defina la descripción breve, el tipo de datos (CHAR) y la longitud delcampo (30). Active el dominio.

i) Retroceda una pantalla (con F3) hasta la definición del elemento dedatos y active el elemento de datos.

j) Grabe la tabla.

k) Defina campos clave para la tabla ZDEPMENT## marcando la columnaClave a continuación del nombre de campo. Los campos Mandante,Compañía aérea y Código de departamento identifican una entrada deforma unívoca. En consecuencia, se deben marcar como campos clave.

l) Active la tabla y defina las opciones técnicas:

Puesto que el contenido de la tabla ZDEPMENT## no suele cambiar,elija la clase de datos APPL0 (datos maestros). El número previstode registros en la tabla ZDEPMENT## es de 90, por lo tanto, elija lacategoría de tamaño 0. La tabla no se debe guardar en la memoriaintermedia ni en log.

Tabla ZDEPMENT##

Campo Valor

Clase de datos APPL0 (datos maestros)

Categoría de tamaño 0

Memoria intermedia No se permite

Registro en log Sin registro en log

3. Documente los campos Nº personal y Código de departamento.

a) Haga doble clic en el elemento de datos para ir a su definición. Cambieal modo de modificación con Visualizar <=> Modificar. SeleccionePasar a → Documentación.

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

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 275

Page 286: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

4. Para activar la tabla, realice las opciones técnicas y asigne un campo demoneda si existe un campo de cantidad en la tabla.

a) Haga clic en Opciones técnicas

b) Ahora seleccione la Clase de datos y la Categoría de tamañoadecuadas.

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

d) Aún tiene que asignar campos de moneda para los campos decantidad (como SALARY). Para ello, cambie a la etiqueta Camposde moneda/cantidad.

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

f) En el campo Referencia, registre el nombre del campo utilizado parala moneda.

Continúa en la página siguiente

276 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 287: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Tarea 2:Compruebe que los mismos campos estén disponibles en las dos tablas pararegistrar las modificaciones; para ello, añada estos campos a ambas tambas conuna subestructura ZCHANGE##.

Nota: Las modificaciones en las tablas ZEMPLOY## y ZDEPMENT##son cruciales y, por lo tanto, se debe registrar. La transacción deactualización debe indicar quién ha realizado una entrada de tabla porúltima vez. Para ello se pueden anexar campos para el número de personalde la última persona que modificó la entrada y la fecha de la última entradaen las tablas ZEMPLOY## y ZDEPMENT##.

En una aplicación real, esta ampliación provocaría siempre que sedesactivara la actualización de la tabla estándar para las dos tablas. Encambio se crearían transacciones de actualización propias para la tabla enlas que el programa completaría internamente los campos para modificarel registro en log en lugar del usuario.

La creación de estas transacciones no se discute en este curso. Por lotanto, en este curso supondremos que todos los usuarios completan(personal y correctamente) estos campos en la rutina de actualizaciónde la tabla estándar.

1. Cree la estructura ZCHANGE##. Cree un elemento de datos nuevo parael campo Última modificación mediante el dominio usado para el númerode personal. Use S_CHDATE como elemento de datos para la fecha de laúltima modificación.

a) En la pantalla inicial del Dictionary ABAP, marque Tipo de datose introduzca ZCHANGE## en el campo correspondiente. SeleccioneCrear.

b) Marque Estructura en la ventana de diálogo siguiente.

c) Introduzca los nombres de campo en la columna Componente ylos elementos de datos correspondientes en la columna Tipo decomponente. Cree su propio elemento de datos para el primer campo.Use el dominio que ha creado para el número de personal en la tablaZEMPLOY##.

d) Cree un campo para el número de personal y otro para la fecha demodificación. Use el elemento de datos S_CHDATE para el segundocampo.

e) Active la estructura ZCHANGE##.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 277

Page 288: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

2. Inserte ZCHANGE## como Include en las tablas ZEMPLOY## yZDEPMENT##.

a) Vuelva a la pantalla de actualización para la tabla ZEMPLOY##.

b) Seleccione Filas nuevas y sitúe el cursor en el primer campo nuevo.

c) Seleccione Tratar → Include → Insertar.

d) En la siguiente ventana de diálogo, introduzca el nombre ZCHANGE##y seleccione Continuar.

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

3. Averigüe qué acciones se han realizado en la base de datos.

a) Puede visualizar las acciones realizadas en la base de datos conUtilidades → Log de activación.

4. Inicie el programa BC430_CHECK en la transacción SE38.

Nota: El programa BC430_CHECK verifica si las solucionesson correctas y completa las nuevas tablas ZEMPLOY## yZDEPMENT## con datos de muestra necesarios para ejerciciosposteriores.

a) Inicie la transacción SE38 a través del campo de entrada. Inicie elprograma BC430_CHECK.

278 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 289: 119167629 taw10-02-es

TAW10_2 Lección: Tablas en el Dictionary ABAP

Resumen de la lección

Ahora podrá:• Crear tablas• Usar el concepto de dominio de dos niveles• Definir las opciones técnicas de una tabla• Crear y usar estructuras Include

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 279

Page 290: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Lección:250

Tablas SAP especialesDuración de la lección: 30 Minutos

Resumen de la lecciónAquí se describen las tablas pool y las tablas cluster.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Describir tipos de tablas en el sistema SAP, además de las tablas transparentes• Diferenciar entre las tablas pool y las tablas cluster• Describir las ventajas y las desventajas de las tablas pool y las tablas cluster

In this lesson, show the table types pool and cluster tables using the example of theBSEG and AA005 tables and their use in a report. Using the ST05 (PerformanceTrace), show that you access different tables in the database to those in the ABAPReport in the FROM clause (Native SQL).

Ejemplo empresarialEn las verificaciones de rendimiento de algunas aplicaciones se habrá encontradocon sentencias select que aparentemente acceden a otras tablas en la base dedatos distintas a las tablas a las que se hace referencia en la codificación ABAPcorrespondiente.

280 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 291: 119167629 taw10-02-es

TAW10_2 Lección: Tablas SAP especiales

Tablas pool y tablas cluster

Gráfico 137: Resumen de los tipos de tabla de BD

Además de las tablas transparentes, en las que la definición en el DictionaryABAP es idéntica a la de la base de datos, en el sistema R/3 existen tablas pool ytablas cluster.

Las tablas pool y las tablas cluster se caracterizan por el hecho de que varias tablasdefinidas lógicamente en el Dictionary ABAP se combinan en una tabla de base dedatos física (pool o cluster de tablas).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 281

Page 292: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 138: Tablas cluster

La idea de las tablas cluster es guardar datos dependientes de la función,divididos en diferentes tablas, en una tabla de base de datos. En consecuencia, laintersección de los campos clave de las tablas cluster está formada por la clavedel cluster de tablas (clave de cluster).

Los datos dependientes de una clave de cluster se guardan en el campo VARDATAdel cluster de tablas. Si el campo VARDATA no puede asumir todos los datosdependientes, la interfase de base de datos crea un registro de desbordamiento. Laexclusividad dentro del cluster de tablas está garantizada por el campo PAGNO.

La interfase de base de datos comprime el contenido del campo VARDATA.En consecuencia, el campo VARDATA contiene una descripción de cómo sedeben descomprimir sus datos. Los campos TIMESTAMP y PAGELG contieneninformación de administración.

282 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 293: 119167629 taw10-02-es

TAW10_2 Lección: Tablas SAP especiales

Gráfico 139: Tablas pool

La idea central de un pool de tablas, a diferencia de los clusters de tablas, esguardar registros de datos procedentes de las tablas definidas en el DictionaryABAP y que no dependen los unos de los otros. Le gustaría combinar tablas deR/3 pequeñas en una tabla de base de datos.

En el ejemplo anterior puede ver que la intersección de los campos clave TABA yTABB está en blanco. A pesar de ello, los registros de datos de TABA y TABB seguardan en el pool de tablas TABAB.

La clave para un registro de datos del pool de tablas TABAB está formada porlos campos TABNAME y VARKEY. El campo TABNAME contiene el nombrede la tabla pool. El campo VARKEY está formado por la concatenación de loscampos clave de la tabla pool. Esto se debe a la necesidad de que los camposclave de una tabla pool tengan el tipo C.

En el campo VARDATA, los campos de las tablas pool que no son clave seguardan desestructurados y comprimidos por la interfase de base de datos. Elcampo DATALN contiene la longitud del campo VARDATA.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 283

Page 294: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Gráfico 140: Describa las ventajas y los inconvenientes de las tablas pool ylas tablas cluster.

La ventaja principal de las tablas pool y las tablas cluster consiste en que los datosse pueden guardar en la base de datos en formato comprimido. De este modo, sereducen el espacio necesario en la memoria y la carga de la red.

La combinación de tablas en los pools para formar clusters de tablas implica quehabrá menos tablas, mientras que la compresión implica que habrá menos camposen la base de datos. El resultado es que se ejecutan menos sentencias SQL distintas.

Las tablas pool y cluster no se guardan como tablas independientes en la base dedatos. Esto facilita la administración. En el caso de las tablas cluster, los datosdependientes de la función se leen juntos, con lo que se accede menos veces ala base de datos.

La principal desventaja es una limitación de las funciones de la base de datos. Conlos campos que no son clave no se puede crear un índice. No existen índicesprimarios ni índices en un subconjunto de los campos clave. El uso de las vistasde base de datos o de join ABAP también queda descartado, igual que el uso deappend de tabla. Sólo puede acceder a los datos en tablas pool o tablas cluster conOPEN SQL (no Native SQL).

En el caso de las tablas pool sólo se transfieren a la base de datos las condicionesWHERE para campos clave y tablas cluster, y las condiciones WHERE para loscampos de la clave cluster (subconjunto de campos clave). Las cláusulas ORDERBY (o GROUP BY) no se transfieren en el caso de los campos que no son clave.Necesita claves más largas de lo que es necesario semánticamente para las tablaspool.

284 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 295: 119167629 taw10-02-es

TAW10_2 Lección: Tablas SAP especiales

Discusión con moderadorHere you have the opportunity to discuss unanswered questions.

Preguntas para la discusiónUtilice las siguientes preguntas para que los participantes del curso tomen parte enla discusión. También puede utilizar sus propias preguntas.

See list of learning goals

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 285

Page 296: 119167629 taw10-02-es

Capítulo 7: Objetos de datos en el Dictionary ABAP TAW10_2

Resumen de la lección

Ahora podrá:• Describir tipos de tablas en el sistema SAP, además de las tablas transparentes• Diferenciar entre las tablas pool y las tablas cluster• Describir las ventajas y las desventajas de las tablas pool y las tablas cluster

286 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 297: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Crear dominios y usarlos en elementos de datos• Definir elementos de datos y usarlos como base para definir objetos de datos

en programas ABAP• Definir estructuras y usarlas como base para definir objetos de datos en

programas ABAP• Definir tablas internas y usarlas como base para definir objetos de datos

en programas ABAP• Definir estructuras complejas (anidadas/profundas) y usarlas como base para

definir objetos de datos en programas ABAP• Definir constantes globales con ayuda de un pool de tipos y usarlas en

programas ABAP• Crear tablas• Usar el concepto de dominio de dos niveles• Definir las opciones técnicas de una tabla• Crear y usar estructuras Include• Describir tipos de tablas en el sistema SAP, además de las tablas transparentes• Diferenciar entre las tablas pool y las tablas cluster• Describir las ventajas y las desventajas de las tablas pool y las tablas cluster

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 287

Page 298: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

288 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 299: 119167629 taw10-02-es

Capítulo 8257 Rendimiento al acceder a tablas

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo conocerá los aspectos básicos de un acceso eficaz a una tabla.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Valorar cuándo se puede acelerar el acceso a una tabla mediante índices• Crear índices en el Dictionary ABAP• Explicar las distintas formas de grabación en memoria intermedia• Valorar si tiene sentido grabar una tabla en la memoria intermedia y qué

forma de grabación se debería elegir• Grabar una tabla en la memoria intermedia mediante las opciones técnicas

Contenido del capítuloLección: Rendimiento durante el acceso a una tabla .. . . . . . . . . . . . . . . . . . . . .290

Ejercicio 12: Aspectos relacionados con el rendimiento durante elacceso a una tabla .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 289

Page 300: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Lección:258

Rendimiento durante el acceso a una tablaDuración de la lección: 120 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Valorar cuándo se puede acelerar el acceso a una tabla mediante índices• Crear índices en el Dictionary ABAP• Explicar las distintas formas de grabación en memoria intermedia• Valorar si tiene sentido grabar una tabla en la memoria intermedia y qué

forma de grabación se debería elegir• Grabar una tabla en la memoria intermedia mediante las opciones técnicas

The participants should become familiar with the two most important methods forincreasing access speed to table contents. After studying this unit, the participantsshould be able to judge when creating indexes or buffering a table would increaseperformance. The two methods for increasing performance are contradictory;one must decide to use one or the other. The trainer should explain when to usewhich method.

Participants should be able to create indexes in the ABAP Dictionary and learnwhen it makes sense to create an index. They should also learn the differencebetween the primary index and a secondary index. The primary index (consistingof the key fields) is automatically created in the database when the table isactivated. The use of indexes can be checked with the SQL trace (ST05). Indexesare created in the database from the dictionary definition.

Ejemplo empresarialAlgunas transacciones contienen sentencias select en sus aplicaciones, y esto haceque los tiempos de ejecución sean muy largos. Ahora debe mejorar el rendimientosin modificar el programa.

290 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 301: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Mejora del rendimiento gracias al acceso a través delíndice

Gráfico 141: Estructura de un índice

An index to a table is a separate object in the database.

Index entries can be sorted by field.

Performance enhancements result from this sorting. Therefore, the sequence ofindex fields is critical. Sorting in the index is only useful when accessing data upto the first non-specified field.

Explain the binary search method in detail using the slide. Mention, however, thatthe structure of an index or access using an index can be implemented differentlydepending on the database system being used.

The index is used by the database software (mention the Optimizer). You do nothave to define the index to be used in the SELECT statement.

An index slows down insertion of new data records and changes to existing datarecords, since you have to adjust the index sorting. Therefore do not create toomany indexes on tables whose contents are frequently changed.

Creation of secondary indexes is not a modification of SAP tables.

Secondary indexes can be created specifically for certain database systems, ifrequired.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 291

Page 302: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Se puede usar un índice para acelerar la selección de registros de datos en una tabla.

Un índice se puede interpretar como una copia de una tabla de base de datosreducida a ciertos campos. Los datos se guardan clasificados en esta copia. Estaclasificación permite acceder rápidamente a los registros de la tabla (por ejemplo,mediante una búsqueda binaria). No todos los campos de la tabla están contenidosen el índice. El índice contiene también un puntero que señala la entrada de índicea la entrada correspondiente de la tabla para que todo el contenido del campose pueda leer.

• Cuando cree índices, tenga en cuenta que:

– Un índice sólo se puede usar hasta el último campo especificado en laselección. Los campos especificados en la cláusula WHERE para unagran cantidad de selecciones deberían estar en la primera posición.

– Sólo tiene sentido que los campos cuyos valores limitenconsiderablemente la cantidad de datos estén en un índice.

– Cuando se modifica un registro de datos de una tabla, se debe rectificarla clasificación del índice. Las tablas cuyo contenido se modifica confrecuencia no deberían tener demasiados índices.

– Asegúrese de que los índices de una tabla sean lo más disyuntivosposible.

Gráfico 142: Acceso mediante índices

292 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 303: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Demo 3: Indexes

Idea:

Frequently, you will want to determine all of a customer’s cargo orders. To ensurefast data access, an index is created on the client (CLIENT) and customer number(CUST_NO) fields.

Note:

Explain what a unique index is. Using this example, explain why it is not a uniqueindex. Explain that the settings for creating the index in the database depend onthe behavior of the optimizer for the different databases.

El optimizador de base de datos decide qué índice de la tabla se debería usar en labase de datos para acceder a los registros de datos.

Se debe diferenciar entre el índice primario y los índices secundarios de una tabla.El índice primario contiene los campos clave de la tabla. El índice primario secrea automáticamente en la base de datos cuando se activa la tabla. Si se accedecon frecuencia a una tabla grande, hasta el punto de que no se puede clasificar elíndice primario, cree índices secundarios para la tabla.

Los índices de una tabla cuentan con un ID de índice de tres posiciones. El 0 estáreservado para el índice primario. Los clientes pueden crear sus propios índices entablas SAP; sus ID deben empezar por Y o Z.

Si los campos de índice tienen una función clave, por ejemplo, identificanunívocamente cada registro de la tabla, el índice se puede considerar un índiceunívoco. De este modo se garantiza que no haya campos de índice duplicados enla base de datos.

Cuando se define un índice secundario en el Dictionary ABAP, se puedeespecificar si se debe crear en la base de datos cuando se active. Algunos índicessólo permiten mejorar el rendimiento en algunos sistemas de base de datos. Porlo tanto, se puede especificar una lista de sistemas de base de datos cuando sedefine un índice. Entonces el índice sólo se crea en los sistemas de base de datosespecificados cuando se activa.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 293

Page 304: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Mejora del rendimiento mediante la grabación de latabla en la memoria intermedia

The participants learn that table buffering can result in a considerable gain inperformance when accessing data. They should also learn that the buffers residelocally on the application servers.

Explain that the buffers reside locally on the application servers. Explain the dataaccess represented on the slide. Explain that access to data in the buffer is muchfaster than reading data from the database. Emphasize that SAP table buffers (inthe application server) are limited by the database buffering mechanism (in thedatabase server).

Mention that indexes and buffering are contradictory measures for increasingperformance. If a table is buffered, the existing indexes are not used during accesssince the data is read directly from the buffer.

Explain how buffers receive data. During initial access, data of a buffered tableis read from the database. During subsequent access to the data, it can be readfrom the buffer.

Gráfico 143: Acceso a los datos mediante la memoria intermedia

Grabar la tabla en la memoria intermedia mejora el rendimiento cuando se leenlos registros de la tabla.

294 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 305: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Los registros de una tabla grabada en la memoria intermedia se leen directamentedesde la memoria intermedia local del servidor de aplicación en el que se estáejecutando la transacción de acceso cuando se accede a la tabla. De este modose eliminan los accesos a la base de datos que consumen mucho tiempo. Elacceso mejora entre el 10 y el 100%. La mejora de la velocidad depende de laestructura de la tabla y de la configuración exacta del sistema. En consecuencia, lagrabación en la memoria intermedia puede mejorar en gran medida el rendimientodel sistema.

Si las necesidades de almacenamiento en la memoria intermedia aumentan porquehay más datos, los datos a los que no se ha accedido en mucho tiempo pasan aun segundo lugar. Este movimiento se produce de forma asincrónica, a intervalosdefinidos dinámicamente a partir de los accesos a la memoria intermedia. Losdatos sólo se mueven si el espacio libre en la memoria intermedia es inferior alvalor predefinido o si la calidad del acceso no es satisfactoria en un momentoconcreto.

Cuando se introduce /$TAB en el campo de comandos, el sistema reinicia lasmemorias intermedias de tablas en el servidor de aplicación correspondiente.Utilice este comando sólo si detecta inconsistencias en la memoria intermedia.En los sistemas grandes, se puede tardar varias horas en llenar las memoriasintermedias. El rendimiento se reduce considerablemente durante este tiempo.

La forma de grabación en la memoria intermedia determina qué registros de latabla se guardarán en la memoria intermedia del servidor de aplicación cuandose acceda a un registro de la tabla. Se puede grabar en la memoria intermedia delas siguientes formas:

• Grabar completamente en memoria intermedia: Cuando se accede a unregistro de la tabla, todos los registros de la tabla se cargan en la memoriaintermedia.

• Grabar en memoria intermedia genérica: Cuando se accede a un registrode la tabla, todos los registros en los que coincide la parte izquierda de laclave se cargan en la memoria intermedia.

• Grabar un registro individual en la memoria intermedia: Sólo se cargaen la memoria intermedia el registro al que se ha accedido.

Using examples on the slides, explain which data are written in the puffer whenaccessing a data record in a buffered table. First, briefly explain the three bufferingtypes so that their differences are clear.

Then explain what buffering type to use under which circumstances. Explain thatit only makes sense to load records into the buffer if you think that these recordswill be accessed in the near future. Full buffering: is recommended for

• small tables, which are frequently read but rarely written in.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 295

Page 306: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Demo 4: Buffering

Call the technical settings for table ZCARGO and explain the buffer settings. Donot buffer the table to avoid scheduling too many cargo requests for an airplane.This also means avoiding scheduling a large cargo request during synchronization,since the database is inconsistent.

In this case, another user could schedule another large request, thereby exceedingthe load capacity of the airplane.

You can use the transaction ST05 to demonstrate whether the database is accessedor the data provided from the buffer.

Gráfico 144: Grabar completamente en memoria intermedia

Cuando se graba completamente en memoria intermedia, la tabla está entera o noestá en la memoria intermedia. Cuando se accede a un registro de la tabla, todoslos registros de la tabla se cargan en la memoria intermedia.

Cuando se decide si una tabla se debe grabar completamente en la memoriaintermedia, hay que tener en cuenta el tamaño de tabla, el número de accesos delectura y el número de accesos de escritura. Cuanto más pequeña sea la tabla,mayor sea la frecuencia de lectura y menor sea la frecuencia de escritura, másrecomendable será grabar la tabla por completo en la memoria intermedia.

296 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 307: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

También se recomienda grabar por completo en la memoria intermedia las tablasque acceden a menudo a registros que no existen. Puesto que todos los registrosde la tabla están en la memoria intermedia, se sabe con certeza si un registro estápresente o no en la memoria intermedia.

Los registros de datos se guardan en la memoria intermedia clasificados por clavede tabla. Cuando se accede a los datos con SELECT, sólo se pueden usar para elacceso los campos hasta la última clave especificada. La parte izquierda de laclave debería ser por ello tan grande como sea posible para este tipo de accesos.Por ejemplo, si no se ha definido el primer campo clave, toda la tabla se escanearáen la memoria intermedia. En estas circunstancias, un acceso directo a la base dedatos podría ser más eficaz si existe un índice secundario adecuado.

Gráfico 145: Grabar en memoria intermedia genérica

Generic buffering: recommended for

• tables where records corresponding to a set of values in the generic keywill be reaccessed in the near future.

• Client-specific, fully buffered tables are automatically buffered genericallyby the client number.

• Language-dependent tables should be buffered generically, becauseapplication servers generally work with only one language.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 297

Page 308: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Cuando se graba en memoria intermedia genérica, todos los registros cuyoscampos clave genéricos coincidan con este registro se cargarán en la memoriaintermedia cuando se acceda a un registro de la tabla. La clave genérica es la parteizquierda de la clave primaria de la tabla y se debe definir cuando se selecciona eltipo de grabación en la memoria intermedia. La clave genérica se debe seleccionarde modo que las áreas genéricas no sean demasiado pequeñas, ya que esto podríadar lugar a áreas demasiado genéricas. Si sólo existen unos cuantos registrospara cada área genérica, suele ser preferible grabar completamente la tabla enla memoria intermedia. Si selecciona una clave genérica demasiado grande, seanularán demasiados datos en caso de que se modifiquen las entradas de tabla, loque podría repercutir negativamente en el rendimiento.

Una tabla se debería grabar genéricamente en la memoria intermedia sólo sideterminadas áreas genéricas de la tabla son necesarias habitualmente para eltratamiento.

Las tablas grabadas totalmente en la memoria intermedia que dependen delmandante se graban automáticamente de forma genérica. El campo del mandantees la clave genérica. Se supone que no todos los mandantes se tratan al mismotiempo en un servidor de aplicación. Las tablas dependientes del idioma sonotro ejemplo de grabación genérica en la memoria intermedia. La clave genéricaincluye todos los campos clave hasta el campo de idioma, incluido.

Las áreas genéricas se gestionan en la memoria intermedia como objetosindependientes. Las áreas genéricas se gestionan del mismo modo que las tablasgrabadas por completo en la memoria intermedia. Por ello, debería leer también lainformación sobre grabación completa en la memoria intermedia.

Gráfico 146: Grabar un registro individual en la memoria intermedia

298 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 309: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Single-record buffering: recommended for

• large tables with repeated access to the individual entries• Explain that only records that are accessed with SELECT SINGLE are read

from the buffer when using single-record buffering.•

Sólo se cargan en la memoria intermedia los registros a los que se accederealmente. La grabación de un registro individual en la memoria intermediaahorra espacio de almacenamiento en comparación con la grabación completa o lagenérica. No obstante, los gastos generales de la administración de la memoriaintermedia son mayores que los de la grabación genérica o la completa. Se debeacceder muchas más veces a la base de datos para cargar los registros que con lasotras formas de grabación en la memoria intermedia.

La grabación de un registro individual se recomienda, sobre todo, en el casode tablas grandes en las que sólo se accede a algunos registros reiteradamentemediante SELECT SINGLE. Todos los accesos a la tabla que no usen SELECTSINGLE pasarán por alto la memoria intermedia y accederán directamente a labase de datos.

Si accede a un registro mediante SELECT SINGLE y éste aún no está en lamemoria intermedia, se accederá a la base de datos para cargar el registro. Si latabla no contiene ningún registro con la clave especificada, el registro se grabaráen la memoria intermedia como inexistente. De este modo se evita que se vuelva aacceder a la base de datos mediante la misma clave.

Sólo hace falta un acceso a la base de datos para cargar una tabla con grabacióncompleta en la memoria intermedia, pero en cambio hay que acceder varias vecesa la base de datos en el caso de la grabación de registro individual. Por lo tanto, lagrabación completa en la memoria intermedia suele ser preferible en el caso de lastablas pequeñas a las que se accede con frecuencia.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 299

Page 310: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Gráfico 147: Grabación de una tabla en la memoria intermedia

Mention that there are no indexes in the buffer. Fully buffered tables andgenerically buffered areas of a table are stored in the buffer sorted by key field.There is a full table scan in the buffer for accesses where this sorting cannot beused. This can be less efficient than a database access for very large tables ifthe database table has suitable indexes.

The following commands bypass the SAP table buffer:

• SELECT ...... BYPASSING BUFFER.• SELECT FOR UPDATE• SELECT with aggregate functions (COUNT, MIN, MAX, SUM, AVG)• SELECT DISTINCT• SELECT ...... WHERE ... IS .... NULL• ORDER BY (except for Primary Key)

El Sistema R/3 gestiona y sincroniza las memorias intermedias en los servidoresde aplicación individuales. Si un programa de aplicación accede a los datos de unatabla, las interfaces de base de datos determinan si estos datos se encuentran en lamemoria intermedia del servidor de aplicación. En caso afirmativo, los datos seleen directamente de la memoria intermedia. Si los datos no están en la memoria

300 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 311: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

intermedia del servidor de aplicación, se leerán directamente de la base de datosy se cargarán en la memoria intermedia. De este modo la memoria intermediapermitirá acceder a estos datos en lo sucesivo.

Upon completion of this topic, participants should be comfortable with the processof synchronizing local buffers. It should be clear to participants that it does notmake sense to buffer tables whose contents change frequently.

Content in a buffered table is modified in the example. You have to synchronize thebuffer at certain intervals in order to make the changes on all application servers.

Go through the slides step by step.

Consejo: The fact that the synchronization mechanism can causetemporary inconsistencies normally provokes questions.

Using the slides, show that temporary inconsistencies can occur when youread data from a table because of the buffer synchronization mechanism.Explain that this is considered an acceptable trade-off to achieve increasedrun-time performance.

Explain that these temporary inconsistencies are generally not a significantproblem since you decide whether each individual table should bebuffered. If you always need the current data for a table, do not bufferthe table.

Point out that it makes no sense to buffer a table whose contents aremodified frequently since the buffered data is constantly invalidated.

Demo 5: Examples of Buffered Tables

Use these tables to discuss the different buffering settings: Buffering activated,single-record buffering.

Table DD07T (fixed values for domains): Buffering activated, generic bufferingwith key fields Domain name and Language.

Table T002 (language key): Buffering activated, full buffering. This demo is notrequired for the flow of the course and can be omitted.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 301

Page 312: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Gráfico 148: Sincronización de la memoria intermedia 1

Puesto que las memorias intermedias se encuentran en los servidores de aplicaciónlocales, se deben sincronizar después de modificar datos en una tabla guardadaen la memoria intermedia. La sincronización se realiza a intervalos fijadosque se pueden definir en el perfil del sistema. El parámetro correspondiente es“rdisp/bufreftime” y define la longitud del intervalo en segundos. El valor debeestar comprendido entre 60 y 3600. Se recomienda un valor de entre 60 y 240.

El ejemplo siguiente muestra cómo se sincronizan las memorias intermediaslocales del sistema. Se supone que el sistema cuenta con dos servidores deaplicación.

Situación de partida: Ninguno de los servidores ha accedido aún a registros dela tabla SCARR para realizar una grabación completa en la memoria intermedia.Por ello, la tabla no se encuentra aún en las memorias intermedias locales delos dos servidores.

• Fecha y hora 1: El servidor 1 lee registros de la tabla SCARR en la basede datos.

• Fecha y hora 2: La tabla SCARR se carga por completo en la memoriaintermedia local del servidor 1. La memoria intermedia local de este servidorse usa ahora para acceder desde el servidor 1 a los datos de la tabla SCARR.

302 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 313: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Gráfico 149: Sincronización de la memoria intermedia 2

• Fecha y hora 3: Un usuario del servidor 2 accede a los registros de la tabla.Puesto que la tabla no se encuentra aún en la memoria intermedia local delservidor 2, los registros se leen directamente desde la base de datos.

• Fecha y hora 4: La tabla SCARR se carga en la memoria intermedia localdel servidor 2. En consecuencia, el servidor 2 usa su memoria intermedialocal para acceder a los datos la próxima vez que lee la tabla SCARR.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 303

Page 314: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Gráfico 150: Sincronización de la memoria intermedia 3

• Fecha y hora 5: Un usuario del servidor 1 borra registros de la tablaSCARR y actualiza la base de datos.

• Fecha y hora 6: El servidor 1 realiza una entrada en la tabla desincronización.

• Fecha y hora 7: El servidor 1 actualiza la memoria intermedia local.

304 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 315: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Gráfico 151: Sincronización de la memoria intermedia 4

• Fecha y hora 8: Un usuario del servidor 2 accede a los registros borrados.Puesto que la tabla SCARR se encuentra en la memoria intermedia local,para el acceso se utilizará esta memoria intermedia local.

– El servidor 2 encuentra los registros, aunque ya no se encuentren enla tabla de base de datos.

– Si se hiciera el mismo acceso al servidor 1 desde un programa deaplicación, el programa reconocería que los registros ya no existen.En este momento el comportamiento de un programa de aplicacióndepende del servidor en el que se esté ejecutando.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 305

Page 316: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Gráfico 152: Sincronización de la memoria intermedia 5

• Fecha y hora 9: Ha llegado el momento de la sincronización. Los dosservidores consultan la tabla de sincronización para ver si, mientras, otroservidor ha modificado una de las tablas en su memoria temporal local.

• Fecha y hora 10: El servidor 2 detecta que la tabla SCARR ha sidomodificada por el servidor 1. Por lo tanto, el servidor 2 anula la tabla en sumemoria intermedia local. El siguiente acceso a los datos de la tabla SCARRdesde el servidor 2 usa la base de datos. El servidor 1 no debe anular la tablaen su memoria intermedia, ya que es el único que ha modificado la tablaSCARR. Por ello, el servidor 1 usa de nuevo la memoria intermedia local lapróxima vez que accede a los registros de la tabla SCARR.

306 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 317: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Gráfico 153: Sincronización de la memoria intermedia 6

• Fecha y hora 11: El servidor 2 vuelve a acceder a los registros de la tablaSCARR. Puesto que la tabla SCARR está anulada en la memoria intermedialocal del servidor 2, para el acceso se utiliza la base de datos.

• Fecha y hora 12: La tabla se vuelve a cargar en la memoria intermedia localdel servidor 2. La información obtenida con la tabla SCARR vuelve a serconsistente en los servidores y en la base de datos.

Ventajas e inconvenientes de este método de sincronización de la memoriaintermedia:

• Ventaja: La carga en la red se mantiene reducida al mínimo. Si hubieraque sincronizar las memorias intermedias de inmediato después de cadamodificación, cada servidor debería informar a todos los demás servidores decada modificación en una tabla guardada en la memoria intermedia a travésde la red. Esto repercutiría negativamente en el rendimiento.

• Inconveniente: Las memorias intermedias locales de los servidores deaplicación pueden contener datos obsoletos entre sincronizaciones.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 307

Page 318: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Esto significa que:

• Sólo se pueden guardar en la memoria intermedia las tablas en las quese escribe poco (son principalmente de sólo lectura) o para las que estasinconsistencias temporales son irrelevantes.

• Las tablas cuyas entradas se modifican con frecuencia no se deberían guardaren la memoria intermedia. En caso contrario, la anulación y la recarga seríanconstantes, lo que repercutiría negativamente en el rendimiento.

Un índice ayuda a acelerar los accesos de lectura a una tabla. Un índice se puedeinterpretar como una copia clasificada de la tabla reducida a los campos de índice.

Las memorias intermedias de tablas se encuentran en los servidores de aplicaciónlocales.

Grabar en la memoria intermedia mejora el rendimiento considerablementecuando se accede a los registros de la tabla. Es importante elegir la forma correctade grabar en la memoria intermedia.

Las memorias intermedias de tabla se ajustan a las modificaciones en las entradasde tabla a intervalos fijos.

Cuanto mayor sea la frecuencia de lectura de una tabla y menor sea la frecuenciacon que se modifica el contenido de la tabla, más se recomienda grabar la tabla enla memoria intermedia.

Gráfico 154: Árbol de decisión para grabación en memoria intermedia

308 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 319: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

En su sistema de desarrollo se debería usar el árbol de decisión para grabartablas en la memoria intermedia como soporte. La información mencionadaanteriormente se muestra aquí en forma de diagrama.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 309

Page 320: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

310 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 321: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

275 Ejercicio 12: Aspectos relacionados conel rendimiento durante el acceso a unatablaDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear índices• Actualizar los atributos de la grabación en la memoria intermedia de una tabla

Ejemplo empresarialDurante su actividad diaria, los empleados de la compañía aérea necesitan poderacceder con rapidez a los datos de las tablas de administración de empleados. Eneste ejercicio se debería acelerar el acceso a los datos de estas tablas.

La combinación de nombre de pila y apellido se utiliza a menudo para acceder alos datos de HR de un empleado. El apellido se declara (se especifica en el acceso)con más frecuencia que el nombre de pila. Para ello se debe crear un índice.

Para planificar una tripulación de vuelo, se deben asignar empleados (pilotos yauxiliares de vuelo) a los vuelos. Hay que crear una tabla en la que se puedanintroducir los empleados implicados y sus cargos para cada vuelo.

Tarea 1:Cree un índice que permita acceder a la combinación de nombre de pila y apellido.Asegúrese de crear el índice en la base de datos.

Los datos de HR de los empleados se actualizan en la tabla ZEMPLOY##. Porlo tanto, es necesario crear un índice para esta tabla.

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

Nota: El índice no es unívoco, ya que puede haber empleados quese llamen igual. Por ello, no hay motivo para crear el índice sólo endeterminados sistemas de base de datos.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 311

Page 322: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Tarea 2:Copie la tabla SFLCREW en la tabla ZFLCREW##. Luego active la tablaZFLCREW##.

1. Copie la tabla SFLCREW en la tabla ZFLCREW##. Sustituya el elemento dedatos existente para el número de empleado por su propio elemento de datos.

Tarea 3:Actualice las parametrizaciones para grabar las tablas ZDEPMENT## yZFLCREW## en la memoria intermedia.

Vuelva a considerar las parametrizaciones para grabar las tablas ZDEPMENT## yZFLCREW## en la memoria intermedia. Tenga en cuenta la información siguientecuando use estas tablas.

Las compañías aéreas tienen entre 10 y 30 departamentos. En las tablas sólo segestionan unas cuantas compañías aéreas (3 como máximo). Los datos sobre latripulación de los vuelos completados se guardan en un fichero de archivo cadatres meses. En consecuencia, la tabla ZFLCREW## tiene relativamente pocasentradas (como máximo 5.000 por compañía aérea).

A las tablas ZDEPMENT## y ZFLCREW## se accede con mucha frecuencia. Losregistros de datos se leen reiteradamente desde estas tablas.

Los empleados de una compañía aérea que trabajan en la administración son losúnicos que utilizan un servidor de aplicación. Los datos de la tripulación del vuelosólo tienen interés internamente para la compañía aérea. Puesto que las compañíasaéreas comparten algunos servicios, los empleados administrativos de unacompañía acceden a menudo a los datos de departamento de las otras compañías.

1. Actualice las parametrizaciones para grabar las tablas ZDEPMENT## en lamemoria intermedia en las Opciones técnicas.

Nota: Puesto que el contenido de la tabla ZDEPMENT## no suelevariar, pero en cambio se lee a menudo, es aconsejable guardar latabla en la memoria intermedia.

2. Actualice las parametrizaciones para grabar las tablas ZFLCREW## en lamemoria intermedia en las Opciones técnicas.

Nota: Los datos de la tabla ZFLCREW## se leen a menudoreiteradamente. En cambio, rara vez se accede a ella para modificarel contenido. En consecuencia, debería grabar la tabla en la memoriaintermedia.

Continúa en la página siguiente

312 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 323: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Normalmente en un servidor de aplicación sólo hacen falta los datos deuna compañía aérea. Por ello, grabe la tabla genéricamente en la memoriaintermedia con la clave genérica Mandante y Cía. aérea.

3. Ejecute el programa BC430_CHECK en la transacción SE38.

BC430_CHECK verifica si las soluciones son correctas y completa la nuevatabla ZFLCREW## con los datos de muestra necesarios para ejerciciosposteriores.

Atención: Si realiza el ejercicio complementario, inicie esteprograma sólo después de haberlo completado.

Tarea 4: (opcional)Cree un índice para las diversas áreas de actividad de una compañía aérea en latabla de empleados. Asegúrese de que este índice sólo se cree en los sistemas debase de datos MAXDB y SQL Server

Nota: El hecho de usar un índice para las áreas podría comportar unamejora del rendimiento cuando se accede a los datos de empleados, porejemplo, cuando se seleccionan todos los pilotos de una compañía aéreacon frecuencia. Después de medir el rendimiento en distintos sistemasde base de datos, sólo mejoró el rendimiento con los sistemas de basede datos MAXDB y SQL Server.

1. Visualice el índice que ha creado.

2. Cree el nuevo índice sólo en los sistemas de base de datos MAXDB y SQLServer.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 313

Page 324: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Solución 12: Aspectos relacionados conel rendimiento durante el acceso a unatablaTarea 1:Cree un índice que permita acceder a la combinación de nombre de pila y apellido.Asegúrese de crear el índice en la base de datos.

Los datos de HR de los empleados se actualizan en la tabla ZEMPLOY##. Porlo tanto, es necesario crear un índice para esta tabla.

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

Nota: El índice no es unívoco, ya que puede haber empleados quese llamen igual. Por ello, no hay motivo para crear el índice sólo endeterminados sistemas de base de datos.

a) En el modo de visualización, vaya a la pantalla de actualización para latabla ZEMPLOY## y seleccione Índices.

b) En la siguiente ventana de diálogo, confirme que desea crear un índice.

c) En la siguiente ventana de diálogo, introduzca un ID de índice de trescaracteres y seleccione Continuar.

d) Introduzca un texto breve en la pantalla de actualización del índice.

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

f) Marque los campos Mandante, Apellido y Nombre, y seleccioneCopiar. Los campos se copian desde la ventana de diálogo al índicerespetando este orden.

Nota: Si el campo Nombre está antes del campo Apellido,cambie el orden de los campos. Para ello, sitúe el cursor en lalínea del campo Nombre y seleccione Cortar. Ahora sitúe elcursor en la primera línea libre después del campo Apellido yseleccione Pegar.

g) Por lo tanto, debería dejar las opciones técnicas Índice no unívoco eÍndice en todos los sistemas de base de datos.

h) Active el índice. El índice se crea automáticamente en la base de datos.

Continúa en la página siguiente

314 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 325: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Tarea 2:Copie la tabla SFLCREW en la tabla ZFLCREW##. Luego active la tablaZFLCREW##.

1. Copie la tabla SFLCREW en la tabla ZFLCREW##. Sustituya el elemento dedatos existente para el número de empleado por su propio elemento de datos.

a) En la pantalla inicial del Dictionary ABAP, introduzca SFLCREW enel campo Tabla de base de datos. Seleccione Copiar.

b) En la siguiente ventana de diálogo, introduzca el nombre ZFLCREW##en el campo A tabla y seleccione Continuar.

c) En el modo de modificación, vaya a la pantalla de actualización de tablay sustituya el elemento de datos SEMP_NUM por el elemento de datoscreado para el número de empleado.

d) Ahora active la tabla.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 315

Page 326: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

Tarea 3:Actualice las parametrizaciones para grabar las tablas ZDEPMENT## yZFLCREW## en la memoria intermedia.

Vuelva a considerar las parametrizaciones para grabar las tablas ZDEPMENT## yZFLCREW## en la memoria intermedia. Tenga en cuenta la información siguientecuando use estas tablas.

Las compañías aéreas tienen entre 10 y 30 departamentos. En las tablas sólo segestionan unas cuantas compañías aéreas (3 como máximo). Los datos sobre latripulación de los vuelos completados se guardan en un fichero de archivo cadatres meses. En consecuencia, la tabla ZFLCREW## tiene relativamente pocasentradas (como máximo 5.000 por compañía aérea).

A las tablas ZDEPMENT## y ZFLCREW## se accede con mucha frecuencia. Losregistros de datos se leen reiteradamente desde estas tablas.

Los empleados de una compañía aérea que trabajan en la administración son losúnicos que utilizan un servidor de aplicación. Los datos de la tripulación del vuelosólo tienen interés internamente para la compañía aérea. Puesto que las compañíasaéreas comparten algunos servicios, los empleados administrativos de unacompañía acceden a menudo a los datos de departamento de las otras compañías.

1. Actualice las parametrizaciones para grabar las tablas ZDEPMENT## en lamemoria intermedia en las Opciones técnicas.

Nota: Puesto que el contenido de la tabla ZDEPMENT## no suelevariar, pero en cambio se lee a menudo, es aconsejable guardar latabla en la memoria intermedia.

a) En el modo de visualización, vaya a la pantalla de actualización parala tabla ZDEPMENT## y seleccione Opciones técnicas. Aparece lapantalla de actualización deseada, donde puede cambiar el modo demodificación.

b) Marque Grabar en memoria intermedia activado. Puesto que noexisten restricciones en lo que respecta al acceso y la tabla es pequeña,marque Grabar completamente en memoria intermedia.

c) Active las opciones técnicas para la tabla ZDEPMENT##.

2. Actualice las parametrizaciones para grabar las tablas ZFLCREW## en lamemoria intermedia en las Opciones técnicas.

Nota: Los datos de la tabla ZFLCREW## se leen a menudoreiteradamente. En cambio, rara vez se accede a ella para modificarel contenido. En consecuencia, debería grabar la tabla en la memoriaintermedia.

Continúa en la página siguiente

316 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 327: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Normalmente en un servidor de aplicación sólo hacen falta los datos deuna compañía aérea. Por ello, grabe la tabla genéricamente en la memoriaintermedia con la clave genérica Mandante y Cía. aérea.

a) En el modo de visualización, vaya a la pantalla de actualización parala tabla ZFLCREW## y seleccione Opciones técnicas. Aparece lapantalla de actualización deseada, donde puede cambiar el modo demodificación.

b) Marque Grabar en memoria intermedia activado. Marque Grabar enmemoria intermedia genérica y seleccione 2 como número de camposclave genéricos.

c) Active las opciones técnicas para la tabla ZFLCREW##.

3. Ejecute el programa BC430_CHECK en la transacción SE38.

BC430_CHECK verifica si las soluciones son correctas y completa la nuevatabla ZFLCREW## con los datos de muestra necesarios para ejerciciosposteriores.

Atención: Si realiza el ejercicio complementario, inicie esteprograma sólo después de haberlo completado.

Tarea 4: (opcional)Cree un índice para las diversas áreas de actividad de una compañía aérea en latabla de empleados. Asegúrese de que este índice sólo se cree en los sistemas debase de datos MAXDB y SQL Server

Nota: El hecho de usar un índice para las áreas podría comportar unamejora del rendimiento cuando se accede a los datos de empleados, porejemplo, cuando se seleccionan todos los pilotos de una compañía aéreacon frecuencia. Después de medir el rendimiento en distintos sistemasde base de datos, sólo mejoró el rendimiento con los sistemas de basede datos MAXDB y SQL Server.

1. Visualice el índice que ha creado.

a) Seleccione Crear en la ventana de diálogo. Incluya los camposMandante, Cía. aérea y Área en el índice.

Nota: Este índice tampoco es unívoco.

El índice sólo se crea en la base de datos si el sistema de formación seestá ejecutando en uno de los sistemas de base de datos seleccionados.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 317

Page 328: 119167629 taw10-02-es

Capítulo 8: Rendimiento al acceder a tablas TAW10_2

2. Cree el nuevo índice sólo en los sistemas de base de datos MAXDB y SQLServer.

a) Marque Para sistemas de base de datos seleccionados.

b) Luego seleccione el símbolo de flecha en esta línea. Seleccione Listade selección. Con la Ayuda para entradas F4 marque en la lista losidentificadores de los sistemas de base de datos ADA para Adabasy MSS para SQL Server.

c) Seleccione Continuar.

d) Active el índice.

318 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 329: 119167629 taw10-02-es

TAW10_2 Lección: Rendimiento durante el acceso a una tabla

Resumen de la lección

Ahora podrá:• Valorar cuándo se puede acelerar el acceso a una tabla mediante índices• Crear índices en el Dictionary ABAP• Explicar las distintas formas de grabación en memoria intermedia• Valorar si tiene sentido grabar una tabla en la memoria intermedia y qué

forma de grabación se debería elegir• Grabar una tabla en la memoria intermedia mediante las opciones técnicas

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 319

Page 330: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Valorar cuándo se puede acelerar el acceso a una tabla mediante índices• Crear índices en el Dictionary ABAP• Explicar las distintas formas de grabación en memoria intermedia• Valorar si tiene sentido grabar una tabla en la memoria intermedia y qué

forma de grabación se debería elegir• Grabar una tabla en la memoria intermedia mediante las opciones técnicas

320 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 331: 119167629 taw10-02-es

Capítulo 9285 Verificaciones de entrada

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo conocerá las opciones para definir verificaciones de entrada enel Dictionary.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Crear y usar valores fijos• Definir qué es una clave externa• Aplicar las condiciones para la asignación de campo de una clave externa• Conocer la diferencia entre la tabla de valores y la tabla de verificación• Crear una clave externa

Contenido del capítuloLección: Consistencia gracias a las verificaciones de entrada ... . . . . . . . .322

Ejercicio 13: Consistencia gracias a las verificaciones de entrada ..337

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 321

Page 332: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Lección:286

Consistencia gracias a las verificaciones de entradaDuración de la lección: 120 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear y usar valores fijos• Definir qué es una clave externa• Aplicar las condiciones para la asignación de campo de una clave externa• Conocer la diferencia entre la tabla de valores y la tabla de verificación• Crear una clave externa

The participants learn the functions for ensuring data integrity in the ABAPDictionary. The basic question is how to use the value set of a table to check theinput of a certain table field on the screen. The foreign key concept is generallyconsidered to be complicated. Make sure that the participants understand whatyou are saying by asking questions:

• What is the difference between a value table and a check table?• Does a value table have to be entered to define a foreign key?• Is the check field a field in the foreign key table or a field in the check table?

Ejemplo empresarialCuando se introducen valores en la aplicación, se deberían realizar verificacionesadicionales en la pantalla sin necesidad de códigos ABAP adicionales.

322 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 333: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Verificación de entrada a través de los dominiostécnicos

Gráfico 155: Valores fijos

The instructor explains that an input check can be done using fixed values. Fixedvalues are stored in the domain. Fixed values can be entered individually or as aninterval. ·Fixed values create F4 help.

Un dominio describe el rango de valores de un campo especificando el tipo yla longitud de los datos. Si sólo se permite un conjunto limitado de valores, sepueden definir como valores fijos.

Cuando se especifican valores fijos, el rango de valores del dominio quedarestringido por estos valores. Los valores fijos se usan de inmediato como valoresde verificación para las entradas en pantalla. También hay disponible una AyudaF4.

Los valores fijos se pueden mostrar en una lista por separado o se pueden definircomo intervalo.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 323

Page 334: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Gráfico 156: Tabla de valores

A field’s value range can be defined using a value table. Validation does not occuruntil a foreign key is defined. The value table then becomes a check table. Thistype of input check is dynamic because the table is used to validate all new fieldcontent. The value table is a good reason to explain the foreign key concept.

El rango de valores de un campo también se puede definir especificando una tablade valores en el dominio.

A diferencia de los valores fijos, en cambio, con sólo especificar una tabla devalores no se verifica la entrada. No hay Ayuda F4.

Si introduce una tabla de valores, el sistema puede hacer una propuesta para ladefinición de la clave externa.

Learn the definition of a foreign key by assigning the foreign key fields to thekey fields of the check table.

324 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 335: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Demo: Fixed values

Idea:

Only certain fixed values make sense for the cargo type. Define this group ofvalues using fixed values for domain ZCARGO_TYPE. Examples:

G Hazardous materials

M Bulk products

S General cargo

C Container misc.

Note

After creating the fixed values using SE16, show the effect of this action.

Una tabla de valores sólo se convierte en una tabla de verificación cuandose define una clave externa. Si hace referencia a un dominio con una tablade valores en un campo, pero no se ha definido ninguna clave externa en elnivel de campo, no habrá verificación.

Gráfico 157: Inserción de un registro de datos

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 325

Page 336: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

The instructor explains the example. A flight is to be booked at American Airlinescounter 8. Question to participants: is this possible?

Un cliente desea reservar un vuelo con American Airlines (AA). Este vuelo tieneel número 0017 y se realizará el 22 de noviembre de 1997. La reserva se deberíarealizar en el mostrador 8.

La tabla SBOOK contiene todas las reservas de vuelos de las compañías aéreas.

La tabla SCOUNTER contiene todos los mostradores válidos de las compañíasaéreas.

Si se realiza una entrada en el campo COUNTER de la tabla SBOOK, asegúresede que sólo se puedan introducir mostradores válidos. Esto significa que losmostradores se deben guardar en la tabla SCOUNTER.

Pregunta: ¿Tiene autorización para insertar el registro de datos anterior en latabla SBOOK?

Gráfico 158: Violación de la verificación de clave externa

El vuelo no se puede reservar, porque American Airlines (AA) no tiene ningúnmostrador 8.

326 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 337: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

No se ha seleccionado ningún registro de datos en la tabla SCOUNTER para lasentradas en el ejemplo. Se rechaza la entrada en la tabla SBOOK.

En el Dictionary ABAP, estas relaciones entre dos tablas se denominan clavesexternas y se deben definir explícitamente para los campos.

Las claves externas se utilizan para asegurar la consistencia de los datos. Los datosintroducidos se comparan con datos existentes para asegurar que son consistentes.

Gráfico 159: Campos de clave externa/Campos de verificación

The instructor explains the importance of domain equality for the assigned fields inthe foreign key definition. The system only forces domain equality for the checkfield. In general, however, there should be domain equality for all fields in theforeign key definition in order to keep the maintenance cost for modificationsas low as possible. The slide shows that the data element for the foreign keydefinition is of no importance. Domain equality is required when the check field isassigned to a key field of the check table (no comparison of apples and oranges).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 327

Page 338: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Demo 7: Foreign Key

Idea

You define input checks to ensure data consistency for table ZCARGO. Thefollowing checks are recommended:

• Check if a correct ID was entered in CARRID from SCARR (carriers).• Check if the flight exists, i.e. if there is a suitable record in table SPFLI

(flight schedule) for the value combination in CARRID and CONNID.• Check if the flight will take place on this day, i.e. if there is a suitable record

in table SLFIGHT (flights) for the three values in CARRID, CONNID andFLDATE.

• Check if there is a customer with this number in table SBUSPART (businesspartner).

• · Check if the currency key is correct, i.e. if a currency key from tableTCURC was entered.

Field name Check table

CLIENT T000

CARRID SCARR

CONNID SPFLI

FLDATE SFLIGHT

CARGO_ID

CARGO_DESC

CUST_NO SCUSTOM

CUST_NAME

CARGOTYPE

VALUE

CURRENCY TCURC

WEIGHT

UNIT

Note

You can omit the foreign key for T000 and TCURC; otherwise, you will have tocreate too many foreign keys.

328 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 339: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Replace data element SCUSTOMER_NUM with S_CUSTOMER for the foreignkey for field CUST_NO. Use this to show what the domain equality conditionmeans. Try to create the foreign key prior to exchanging the domains and thenexplain the error message.

You should also explain that the check table is not necessarily equal to the valuetable. The value table in this case is SBUSPART. However, if one assumes thatonly customers of the airline can also send cargo, SCUSTOM is the only realisticcheck table. This means the system recommendation for the check table has to beignored.

Create the message ZZBC430, No. 001 in T100 for foreign key SFLIGHT.Message text: The flight will not take place on the given date! Also create a longtext for the message. Tip: You can also use the existing message BC430, no.100, with the same text.

In SE16, show the effect of the foreign key during data entry. Trigger the errormessage. Using the data from Demo 1, show that the creation of a foreign keydoes not trigger an cleanup of the data. Explain that the foreign key is only aninput check on the screen. Show the F$ help and where it comes from

EJEMPLO:

En este ejemplo, la tabla de clave externa es la tabla SBOOK. La finalidad dela clave externa es garantizar que sólo se puedan asignar mostradores válidos delas compañías aéreas para una reserva. La tabla de verificación SCOUNTERcontiene exactamente esta información. Cada mostrador se identifica con trescampos de clave en esta tabla: MANDT, CARRID y COUNTNUM.

A fin de definir la clave externa, estos tres campos se asignan a los campos de latabla de claves externas (campos de clave externa) con que se introduce la entradaque se debe verificar en la pantalla. En la tabla SBOOK, se trata de los campos:MANDT, CARRID, COUNTER. La entrada se acepta si representa un mostradorválido; en caso contrario, el sistema la rechazará.

La clave externa se define para el campo SBOOK-COUNTER (campo deverificación), lo que significa que se verifica la entrada en este campo. Por esoel campo COUNTER se llama campo de verificación en el caso de esta claveexterna.

Se ha definido una clave externa para el campo COUNTER, la tabla SBOOK, queda lugar a la siguiente asignación de campos:

Tabla de verificación Tabla de claves externas

SCOUNTER-CLIENT SBOOK-MANDT

SCOUNTER-CARRID SBOOK-CARRID

SCOUNTER-COUNTNUM SBOOK-COUNTER

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 329

Page 340: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Gráfico 160: Consistencia de datos mediante claves externas

Entering a value table in the domain does not result in a check. This entry is usedby the system to create an automatic proposal for the foreign key definition. Theforeign key is only checked against the check table of the foreign key when it isactivated. The system proposes the value table from the domain as the checktable, but the user can overwrite it. A value table need not be entered in thedomain to define a foreign key.

Una combinación de campos de una tabla se denomina clave externa si estacombinación de campos es la clave primaria de otra tabla.

Una clave externa enlaza dos tablas.

La tabla de verificación es la tabla cuyos campos clave se verifican. Esta tabla seconoce también como tabla de referencia.

Se debe realizar una entrada en la tabla de claves externas. Esta entrada debe sercoherente con los campos clave de la tabla de verificación.

El campo de la tabla de claves externas que se debe verificar se conoce comocampo de verificación.

Las claves externas sólo se pueden usar en dynpros. Los registros de datos sepueden realizar en la tabla sin verificación, mediante un programa ABAP.

330 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 341: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Ejemplo: Se debe realizar una nueva entrada en la tabla SPFLI (horario de vuelos).Se verifica si la compañía aérea introducida está guardada en la tabla SCARR(compañía aérea) para el campo SPFLI-CARRID. El registro sólo se copia en latabla SPFLI (tabla de claves externas) en caso afirmativo. Se ha definido una claveexterna para el campo SPFLI-CARRID (campo de verificación), por ejemplo, loque significa que se verifica este campo. La tabla de verificación correspondientees la tabla SCARR con los campos clave primarios CLIENT y CARRID.

Gráfico 161: Definiciones de clave externa en el campo de verificación

En el Dictionary ABAP, se necesita el mismo dominio para el campo deverificación y el campo clave de referencia de la tabla de verificación, a fin de nocomparar campos con tipos de datos o longitudes de campo distintos. El dominioes igual de importante. Se pueden usar elementos de datos distintos, perodeben hacer referencia al mismo dominio.

El requisito de que el dominio sea el mismo sólo es válido para el campo deverificación. Para los demás campos de clave externa, basta si el tipo de datos y lalongitud de campo son iguales. No obstante, debería intentar que el dominio fuerael mismo. En este caso, la clave externa se mantendrá consistente si se modifica lalongitud del campo, porque se modificarán los dos campos correspondientes. Silos dominios son distintos, la clave externa sería inconsistente si, por ejemplo, semodificara la longitud de campo.

Si el dominio del campo de verificación tiene una tabla de valores, puede hacer queel sistema haga una propuesta con la tabla de valores como tabla de verificación.En este caso, se crea una propuesta para la asignación de campo en la clave externa.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 331

Page 342: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

ATENCIÓN: No se puede dar una situación en que un dominio que tienela tabla SAIRPORT como tabla de valores se use después del campoSAIRPORT-ID. Sin embargo, nunca se define una clave en este campo (con loque se evita un bucle).

Gráfico 162: La tabla de verificación es distinta de la tabla de valores

If a value table is entered in the domain, the system can automatically make aproposal for selecting the check table and for assigning the field in the foreign keydefinition. This proposal must be checked. The field assignment as well as theproposal for the check table must be checked. If there is more than one field withthe same domain (or same data type and field length) in the foreign key table thatcould be used for the assignment to a key field of the check table, the systemchooses the first suitable field. This field need not necessarily be the right one.

Si la reutilización de los dominios se inserta en puntos inadecuados, la propuestapodría ser inapropiada para la tabla de verificación. En el caso anterior, existeun campo clave primario en varias tablas que se basa en el mismo dominio queel campo de verificación. La propuesta del sistema será la tabla de valores deldominio. A fin de evitar este problema desde el principio:

En el ejemplo anterior de definición de claves externas para el campoSBOOK-AGENCYNUM, la propuesta del sistema se basa en la tabla de valoresdel dominio y es la siguiente:

Tabla de verificación: SBUSPART

332 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 343: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Asignación de campo:

Tabla de verificación Tabla de claves externas

SBUSPART-CLIENT SBOOK-MANDT

SBUSPART-BUSPARTNUM SBOOK-AGENCYNUM

Esta propuesta no hace lo que usted quiere:

La tabla SBUSPART contiene todos los interlocutores comerciales de lascompañías aéreas. Sin embargo, para el campo SBOOK-AGENCYNUM sólose permiten agencias. En consecuencia, la tabla SBUSPART contiene datos noválidos para este campo. La propuesta del sistema es, por lo tanto, incorrecta. Latabla de verificación correcta es la tabla STRAVELAG. Se trata de un subconjuntode la tabla SBUSPART según su definición de clave externa en el campoAGENCYNUM.

Sobrescriba la propuesta del sistema con la tabla STRAVELAG. Si no sabecuál es la tabla de verificación correcta, el sistema puede ayudarle con unalista de todas las tablas en cuestión. Esto incluye todas las tablas con uncampo clave cuyo dominio sea S_ BUSPARNUM.

Gráfico 163: Atributos semánticos

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 333

Page 344: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Semantic attributes. All specifications for cardinality are for documentationpurposes only. The only exception, creating help views and maintenance views,only takes foreign keys with cardinality 1:1 or 1:C into consideration. If there is arelationship to a text table, the cardinality 1:CN is allowed. This limitation appliesonly if the base table is a check table for the assigned table. Most participantsfind cardinality difficult to understand. Therefore discuss a number of examplesof foreign keys in the flight model. IMPORTANT: Always define the cardinalityfrom the point of view of the check table. The participants should see cardinalityas a representation of the real world. Considering the relationship between checktable objects and objects of the foreign key table allows most participants to drawthe correct conclusions. Foreign key field category. Here, all details only serve thepurposes of documentation, with one exception - the definition of a text table.

The participants have no problems with these settings because the key fields of theforeign key table are already defined

La cardinalidad describe la relación de la clave externa con la cantidad de registrosde la tabla de verificación asignados a registros de la tabla de claves externas. Lacardinalidad se define siempre desde la perspectiva de la tabla de verificación.

El tipo de campo de clave externa define si el campo identifica o no una entrada detabla. Esto significa que los campos de clave externa son campos clave, no soncampos clave, o son un caso especial, es decir, campos clave de una tabla de texto.

Existen las clases siguientes de campos de clave externa:

• Sin especificar: No se puede dar información sobre la clase de campo declave externa.

• No campos clave/candidatos: Los campos de clave externa no son camposclave primarios de la tabla de claves externas ni identifican de forma unívocaun registro de la tabla de claves externas (candidatos clave). Por lo tanto, loscampos de clave externa no identifican (o lo hacen parcialmente) la tabla declaves externas.

• Campos clave/candidatos: Los campos de clave externa son campos claveprimarios de la tabla de claves externas o identifican de forma unívoca unregistro de la tabla de claves externas (candidatos clave). Por lo tanto, loscampos de clave externa identifican (o lo hacen parcialmente) la tabla declaves externas.

• Campos clave de una tabla de texto: La tabla de claves externas es unatabla de texto en la tabla de verificación. Por ejemplo, la clave de la tablade claves externas es distinta de la clave de la tabla de verificación sólo enque cuenta con un campo adicional de clave de idioma. Se trata de un casoespecial de la categoría Campos clave/candidatos.

334 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 345: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Gráfico 164: Tabla de texto

Demo: Text foreign key

Idea

If the cargo consists of hazardous materials, it must have a hazardous materialsnumber. Extend table ZCARGO by a field for this hazardous materials number.The hazardous materials numbers are managed in Table DANGER_NO. Thistable is already in the system.

Table Structure DANGER_NO

Field name Key Data element Description

CLIENT X S_MANDT Client

DANGER_NO X SDANGER_NO Hazardousmaterials number

DANGER_KAT SDANGER_KAT Hazard category

You need explanatory text to be able to interpret the hazardous materials number.To create this text in more than one language, you need a text table for the tableDANGER_NO. The text table DANGER_NOT is already in the system.

Table Structure DANGER_NOT

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 335

Page 346: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Field name Key Data element Description

CLIENT X S_MANDT Client

DANGER_NO X SDANGER_NO Hazardousmaterials number

LANGU X LANGU Language key

TEXT SDAN-GER_TEXT

Explanatory text

Note:

Show the foreign key between DANGER_NOT and DANGER_NO. Explain themeaning of text table key fields.

Insert a new field DANGER_NO in table ZCARGO and maintain the foreign keyfor DANGER_NO: Show that the table can be edited with SE11.

Mention that new fields are always added to the end of the table in the database,even if they were inserted elsewhere in SE11.

In SE16, show that the texts from DANGER_NOT are added to the valuesdisplayed fromDANGER_NO in the logon language.

Alternative demo:

If you want to show how to create text tables in more detail, copy tableDANGER_NO to a separate table called ZDANGER_NO.

Copy the data using report BC430_DATA_COPY. Then create a text table calledZDANGER_NOT and copy its content using BC430_DATA_COPY. Maintainthe text foreign key between ZDANGER_NOT and ZDANGER_NO and showits effect.

La tabla SMEAL contiene las comidas servidas a los pasajeros durante un vuelo.Los nombres de las comidas se actualizan en la tabla SMEALT.

La tabla SMEALT es la tabla de texto para la tabla SMEAL, ya que la clave deSMEALT está formada por la clave de SMEAL y un campo adicional de clave deidioma (campo con tipo de datos LANG).

La tabla SMEALT puede contener texto explicativo en varios idiomas para cadaentrada de clave de SMEAL.

Para vincular las entradas de clave con el texto, la tabla de texto SMEALT debeestar vinculada a la tabla SMEAL por medio de una clave externa. La opciónCampos clave de una tabla de texto se debe elegir para el tipo de los camposde clave externa.

La relación de clave externa se define de SMEALT a SMEAL.

Sólo se puede vincular una tabla de texto a una tabla.

336 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 347: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

297 Ejercicio 13: Consistencia gracias a lasverificaciones de entradaDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear valores fijos• Fijar tablas de valores en el contexto correcto• Definir claves externas• Usar el mecanismo anterior para garantizar que los datos son consistentes

Ejemplo empresarialCuando se introducen o se modifican los datos maestros del empleado, sólo sedeberían permitir datos consistentes, compañías aéreas válidas, departamentosy áreas.

Los empleados de estas compañías aéreas se dividen en personal de administración(A), personal de vuelo (F) y personal de servicio (S). En consecuencia, estánasignados a las áreas de actividad A, F o S.

Tarea 1:Divida los empleados de las compañías aéreas en personal de administración (A),personal de vuelo (F) y personal de servicio (S). Compruebe que sólo se puedanintroducir áreas de actividad válidas en la tabla ZEMPLOY##.

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

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 337

Page 348: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Tarea 2:Defina claves externas adecuadas para las tablas ZEMPLOY##, ZDEPMENT##y ZFLCREW##.

Use las tablas del modelo de vuelo, las tablas T000 (mandante) y SCURX (códigode moneda), y las tablas para definir las claves externas.

Para actualizar las claves externas individuales, llame la rutina de actualizaciónpara las tablas concretas. Seleccione la etiqueta Campos.

Defina una verificación de claves externas para cada uno de los campos siguientes:

Tabla Campo

ZEMPLOY## Mandante

Cía. aérea

Código de departamento

Moneda

ZDEPMENT## Mandante

Cía. aérea

ZFLCREW## Número de empleado

1. Cree la clave externa Mandante de ZEMPLOY## del modo siguiente:

2. Cree la clave externa Cía. aérea de ZEMPLOY##.

Nota: Puesto que usa el dominio S_CARR_ID para el campo Cía.aérea en ZEMPLOY##, puede usar la tabla de valores SCARR parala definición de clave externa.

3. Cree la clave externa Código de departamento de ZEMPLOY## del modosiguiente:

Introduzca la tabla de valores ZDEPMENT## en el dominio del campoCódigo de departamento y active el dominio.

Nota: Para obtener una propuesta para la definición de claveexterna, modifique el dominio del campo Código de departamentoen ZEMPLOY##. Esto no es imprescindible para definiciones declaves externas posteriores, pero facilita la definición.

4. Cree la clave externa Moneda de ZEMPLOY## del modo siguiente:

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

Continúa en la página siguiente

338 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 349: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

5. Cree la clave externa Mandante de ZDEPMENT## del modo siguiente.

6. Cree la clave externa Cía. aérea de ZDEPMENT## del modo siguiente:

7. Cree la clave externa Nº empleado de ZFLCREW##.

8. Actualice los datos para la tabla ZEMPLOY## y pruebe el efecto de lasrelaciones de su clave externa.

Tarea 3:Algunos empleados de las compañías aéreas trabajan en agencias de viajes dondevenden los vuelos de sus compañías. Amplíe la tabla ZEMPLOY## con un campoque documente la agencia de viajes en la que trabaja cada empleado.

Amplíe la tabla ZEMPLOY## en consecuencia y defina la relación de la claveexterna.

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

1. Cree un nuevo campo Agencia en su tabla ZEMPLOY##.

Tarea 4:Amplíe la tabla ZDEPMENT## con otro campo.

Cada departamento de una compañía aérea tiene un jefe de departamento. Laasignación entre el departamento y el jefe del departamento se debería estableceren el modelo de vuelo.

1. Amplíe la tabla ZDEPMENT## con el campo Jefe dep.

Nota: En nuestro modelo, el número de personal identifica a lapersona. En consecuencia, el nuevo campo que se debe añadir ala tabla ZDEPMENT## debe contener números de personal. Elcampo debería hacer referencia también al dominio para númerosde personal.

Puesto que la persona que se debe gestionar en este caso desempeñaun rol especial, debería crear un nuevo elemento de datos y noutilizar el que ya había creado para el número de personal.

Defina una clave externa adecuada para este campo.

Nota: Use el concepto de domino de dos niveles.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 339

Page 350: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Tarea 5:Cree una tabla de texto.

1. Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##.

Nota: Esto permite a los empleados entender el código dedepartamento de la compañía aérea en todos los países.

Para la definición de campo, use los elementos de datos (tipo de datosLONG) y S_TEXT (tipo de datos CHAR, 40).

2. Defina la clave externa del campo Código dep. en la tabla ZDEPMENTT##.

Nota: Las claves externas para los campos Mandante y Cía. aéreaen la tabla ZDEPMENTT## ya se habían definido correctamentemediante la copia.

3. Defina la clave externa del campo Idioma en la tabla ZDEPMENTT##.

Nota: Puesto que usa el dominio SPRAS para el campo Idioma deZDEPMENTT##, puede usar la tabla de valores T002 para definir laclave externa.

340 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 351: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Solución 13: Consistencia gracias a lasverificaciones de entradaTarea 1:Divida los empleados de las compañías aéreas en personal de administración (A),personal de vuelo (F) y personal de servicio (S). Compruebe que sólo se puedanintroducir áreas de actividad válidas en la tabla ZEMPLOY##.

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

a) Vaya desde la pantalla de actualización de la tabla al elemento de datoscorrespondiente, y de allí al dominio.

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

Valor fijo Descripción breve

A Personal de administración

F Personal de vuelo

S Personal de servicio

c) Active su dominio.

Tarea 2:Defina claves externas adecuadas para las tablas ZEMPLOY##, ZDEPMENT##y ZFLCREW##.

Use las tablas del modelo de vuelo, las tablas T000 (mandante) y SCURX (códigode moneda), y las tablas para definir las claves externas.

Para actualizar las claves externas individuales, llame la rutina de actualizaciónpara las tablas concretas. Seleccione la etiqueta Campos.

Defina una verificación de claves externas para cada uno de los campos siguientes:

Tabla Campo

ZEMPLOY## Mandante

Cía. aérea

Código de departamento

Moneda

ZDEPMENT## Mandante

Cía. aérea

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 341

Page 352: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Tabla Campo

ZFLCREW## Número de empleado

1. Cree la clave externa Mandante de ZEMPLOY## del modo siguiente:

a) Sitúe el cursor en el campo Mandante en ZEMPLOY##. SeleccionePasar a → Clave externa.

Puesto que usa el dominio MANDANTE para el campo Mandanteen ZEMPLOY##, el sistema propone la tabla de valores T000 comotabla de verificación.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación T000

CkTabFld Tabla de clavesexternas

Campo de claveexterna

MANDT ZEMPLOY## Mandante

c) Introduzca un texto breve y defina los atributos semánticos del modosiguiente:

Campo Valor

Tipo de campos de clave externa Campos clave/can-didatos

Cardinalidad 1:CN

d) Grabe su clave externa.

Continúa en la página siguiente

342 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 353: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

2. Cree la clave externa Cía. aérea de ZEMPLOY##.

Nota: Puesto que usa el dominio S_CARR_ID para el campo Cía.aérea en ZEMPLOY##, puede usar la tabla de valores SCARR parala definición de clave externa.

a) Sitúe el cursor en el campo Cía. aérea. Seleccione Pasar a → Claveexterna.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla verificación SCARR

CkTabFld Tabla de clavesexternas

Campo de claveexterna

MANDT ZEMPLOY## Mandante

CARRID ZEMPLOY## Cía. aérea

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa Campos clave/can-didatos

Cardinalidad 1:CN

d) Grabe su clave externa.

3. Cree la clave externa Código de departamento de ZEMPLOY## del modosiguiente:

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 343

Page 354: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Introduzca la tabla de valores ZDEPMENT## en el dominio del campoCódigo de departamento y active el dominio.

Nota: Para obtener una propuesta para la definición de claveexterna, modifique el dominio del campo Código de departamentoen ZEMPLOY##. Esto no es imprescindible para definiciones declaves externas posteriores, pero facilita la definición.

a) En primer lugar, sitúe el cursor en el campo Código de departamentoen ZEMPLOY##. Seleccione Pasar a → Clave externa.

Nota: Puesto que usa el dominio del campo Códigode departamento de ZDEPMENT## para el Código dedepartamento de ZEMPLOY##, puede usar la tabla de valoresZDEPMENT## para definir la clave externa.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación ZDEPMENT##

CkTabFld Tabla de clavesexternas

Campo de claveexterna

MANDT ZEMPLOY## Mandante

CARRID ZEMPLOY## Cía. aérea

DEPARTMENT ZEMPLOY## Código dedepartamento

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa No campos clave/can-didatos

Cardinalidad 1:CN

d) Grabe su clave externa.

Continúa en la página siguiente

344 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 355: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

4. Cree la clave externa Moneda de ZEMPLOY## del modo siguiente:

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

a) Sitúe el cursor en el campo Moneda de ZEMPLOY##. SeleccionePasar a → Clave externa.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación SCURX

CkTabFld Tabla de clavesexternas

Campo de claveexterna

CURRKEY ZEMPLOY## Moneda

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa No campos clave/can-didatos

Cardinalidad 1:CN

d) Grabe su clave externa.

5. Cree la clave externa Mandante de ZDEPMENT## del modo siguiente.

a) Véase la clave externa Mandante de ZEMPLOY##.

Campo Valor

Tipo de campos de clave externa Campos clave/can-didatos

Cardinalidad 1:CN

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 345

Page 356: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

6. Cree la clave externa Cía. aérea de ZDEPMENT## del modo siguiente:

a) Véase la clave externa Cía. aérea de ZEMPLOY##.

Campo Valor

Tipo de campos de clave externa Campos clave/can-didatos

Cardinalidad 1:CN

7. Cree la clave externa Nº empleado de ZFLCREW##.

a) Sitúe el cursor en el campo Nº empleado en ZFLCREW##. SeleccionePasar a → Clave externa.

Nota: La tabla de verificación es la tabla ZEMPLOY##. Sila ha guardado como tabla de valores en el dominio para elnúmero de empleado, se creará la propuesta correspondiente.En caso contrario, deberá introducirla personalmente.

b) Copie la propuesta del sistema para la asignación de campo.

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa Campos clave/can-didatos

Cardinalidad 1:CN

d) Grabe su clave externa.

8. Actualice los datos para la tabla ZEMPLOY## y pruebe el efecto de lasrelaciones de su clave externa.

a) En la pantalla de actualización de la tabla ZEMPLOY##, marqueUtilidades → Contenido de tabla → Crear entradas.

b) Introduzca datos y verifique si la clave externa funciona correctamentemediante la Ayuda para entradas.

Tarea 3:Algunos empleados de las compañías aéreas trabajan en agencias de viajes dondevenden los vuelos de sus compañías. Amplíe la tabla ZEMPLOY## con un campoque documente la agencia de viajes en la que trabaja cada empleado.

Continúa en la página siguiente

346 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 357: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

Amplíe la tabla ZEMPLOY## en consecuencia y defina la relación de la claveexterna.

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

1. Cree un nuevo campo Agencia en su tabla ZEMPLOY##.

a) Vaya a la pantalla de actualización de campo para la tablaZEMPLOY##. Inserte un nuevo campo Agencia en la lista de campos(marque Nuevas filas).

Nota: En la pantalla de actualización para la tablaSTRAVELAG puede ver que el elemento de datos adecuado sellama S_AGNCYNUM.

b) Asigne el elemento de datos S_AGNCYNUM a su nuevo campoAgencia de ZEMPLOY##.

c) Sitúe el cursor en el campo Agencia y haga que el sistema propongala definición de la clave externa.

d) Controle la propuesta: La tabla de verificación es SBUSPART.Esta tabla de verificación no es correcta, porque contiene todoslos interlocutores comerciales de las compañías aéreas, no sólo lasagencias.

e) La tabla de verificación correcta es STRAVELAG, que contiene lasagencias con las que trabajan las compañías aéreas.

f) Podrá entenderlo mejor si consulta la definición de la tablaSTRAVELAG en un segundo modo. El campo AGENCYNUMtiene una clave externa con la tabla de verificación SBUSPART. Estosignifica que la tabla STRAVELAG es un subconjunto de la tablaSBUSPART. En la definición de la clave externa para la Agencia deZEMPLOY##, sobrescriba la entrada SBUSBART en el campo deentrada Tabla de verificación con STRAVELAG.

g) Seleccione Copiar. El sistema reconoce la modificación en la tablade verificación y propone crear una propuesta. Acepte esta oferta ymarque la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación STRAVELAG

CkTabFld Tabla de clavesexternas

Campo de claveexterna

MANDT ZEMPLOY## Mandante

AGENCYNUM ZEMPLOY## Agencia

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 347

Page 358: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

h) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa No campos clave/can-didatos

Cardinalidad 1:CN

i) Seleccione Copiar.

j) Ahora active la tabla.

k) En la pantalla de actualización de la tabla ZEMPLOY##, marqueUtilidades → Contenido de tabla → Crear entradas. Verifique la claveexterna con la Ayuda para entradas.

Tarea 4:Amplíe la tabla ZDEPMENT## con otro campo.

Cada departamento de una compañía aérea tiene un jefe de departamento. Laasignación entre el departamento y el jefe del departamento se debería estableceren el modelo de vuelo.

1. Amplíe la tabla ZDEPMENT## con el campo Jefe dep.

Nota: En nuestro modelo, el número de personal identifica a lapersona. En consecuencia, el nuevo campo que se debe añadir ala tabla ZDEPMENT## debe contener números de personal. Elcampo debería hacer referencia también al dominio para númerosde personal.

Puesto que la persona que se debe gestionar en este caso desempeñaun rol especial, debería crear un nuevo elemento de datos y noutilizar el que ya había creado para el número de personal.

Defina una clave externa adecuada para este campo.

Nota: Use el concepto de domino de dos niveles.

a) Vaya al modo de modificación en la pantalla de actualización para latabla ZDEPMENT##. Seleccione la etiqueta Campos.

b) Seleccione Filas nuevas.

Continúa en la página siguiente

348 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 359: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

c) Introduzca el nuevo campo Jefe dep. directamente después de loscampos existentes introduciendo un nombre de campo adecuado en laprimera columna e introduciendo un nombre para el elemento de datosque se va a crear en la columna Tipo de campo.

d) Grabe la definición de tabla.

e) Marque el nombre del nuevo elemento de datos que se debe crear.Confirme que desea crear un elemento de datos.

f) Introduzca un texto breve para el elemento de datos. Introduzca elnombre de dominio que ya ha creado para el número de personal enel campo Dominio.

g) Marque la página Denominador de campo e introduzca el textocorrespondiente allí.

h) Active el elemento de datos. Vuelva a la pantalla de actualización parala tabla ZDEPMENT##; para ello, seleccione Back.

i) Cree la clave externa para el nuevo campo de la manera habitual. Latabla de verificación es la tabla ZEMPLOY##.

Nota: Si ha guardado esta tabla como tabla de valorespara el dominio para el número de personal, el sistemahará esta propuesta. En caso contrario, deberá introducirlapersonalmente.

j) Copie la propuesta del sistema en la asignación de campo de la claveexterna.

k) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de clave externa No campos clave/can-didatos

Cardinalidad 1:C

l) Ahora active la tabla.

Tarea 5:Cree una tabla de texto.

1. Cree una tabla de texto ZDEPMENTT## para la tabla ZDEPMENT##.

Nota: Esto permite a los empleados entender el código dedepartamento de la compañía aérea en todos los países.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 349

Page 360: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Para la definición de campo, use los elementos de datos (tipo de datosLONG) y S_TEXT (tipo de datos CHAR, 40).

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

b) Vaya a la pantalla de actualización de campo para la tablaZDEPMENTT##. Borre todos los campos que no son campos clave.Cree los nuevos campos siguientes:

Campo Elementode datos

Tipodedatos,longi-tud

Significado

IDIOMA SPRAS LANG Idioma

DESCR S_TEXT CHAR,40

Descripción

Nota: El campo ZDEPMENTT## Idioma debe ser un campoclave.

2. Defina la clave externa del campo Código dep. en la tabla ZDEPMENTT##.

Nota: Las claves externas para los campos Mandante y Cía. aéreaen la tabla ZDEPMENTT## ya se habían definido correctamentemediante la copia.

a) En primer lugar, sitúe el cursor en el campo Código de departamentoen la tabla ZDEPMENTT##. Seleccione Pasar a → Clave externa.

Nota: Puesto que usa el dominio del campo Código dedepartamento de ZDEPMENT## para el campo Código dedepartamento de ZDEPMENTT##, puede usar la tabla devalores ZDEPMENT## para definir la clave externa.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación ZDEPMENT##

CkTabFld Tabla de clavesexternas

Campo de claveexterna

MANDT ZDEPMENT## Mandante

Continúa en la página siguiente

350 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 361: 119167629 taw10-02-es

TAW10_2 Lección: Consistencia gracias a las verificaciones de entrada

CARRID ZDEPMENT## Cía. aérea

DEPARTAMENTO ZDEPMENT## Código dedepartamento

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de claveexterna

Campos clave de una tablade texto

Cardinalidad 1:CN

d) Grabe su clave externa.

3. Defina la clave externa del campo Idioma en la tabla ZDEPMENTT##.

Nota: Puesto que usa el dominio SPRAS para el campo Idioma deZDEPMENTT##, puede usar la tabla de valores T002 para definir laclave externa.

a) Sitúe el cursor en el campo Idioma de ZDEPMENTT##. SeleccionePasar a → Clave externa.

b) Haga que el sistema proponga una definición de clave externa.Verifique la propuesta. Se deben asignar los campos siguientes:

Tabla de verificación T002

CkTabFld Tabla de clavesexternas

Campo de claveexterna

SPRAS ZDEPMENTT## Idioma

c) Introduzca un texto breve y determine los atributos semánticos delmodo siguiente:

Campo Valor

Tipo de campos de claveexterna

Campos clave/candidatos

Cardinalidad 1:CN

d) Grabe su clave externa.

e) Ahora active la tabla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 351

Page 362: 119167629 taw10-02-es

Capítulo 9: Verificaciones de entrada TAW10_2

Resumen de la lección

Ahora podrá:• Crear y usar valores fijos• Definir qué es una clave externa• Aplicar las condiciones para la asignación de campo de una clave externa• Conocer la diferencia entre la tabla de valores y la tabla de verificación• Crear una clave externa

352 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 363: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Crear y usar valores fijos• Definir qué es una clave externa• Aplicar las condiciones para la asignación de campo de una clave externa• Conocer la diferencia entre la tabla de valores y la tabla de verificación• Crear una clave externa

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 353

Page 364: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

354 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 365: 119167629 taw10-02-es

Capítulo 10315 Dependencias de objeto

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo se familiarizará con las distintas relaciones de dependencia queexisten entre los distintos objetos de Dictionary.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Explicar cómo funcionan el sistema info Repository y la referencia deutilización para objetos del Dictionary ABAP

• Describir el mecanismo para gestionar objetos dependientes en el DictionaryABAP

• Diferenciar entre la versión activa y la inactiva de un objeto de DictionaryABAP

Contenido del capítuloLección: Dependencias de objeto .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .356

Ejercicio 14: Dependencias respecto a objetos de Dictionary ABAP 363

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 355

Page 366: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

Lección:316

Dependencias de objetoDuración de la lección: 60 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Explicar cómo funcionan el sistema info Repository y la referencia deutilización para objetos del Dictionary ABAP

• Describir el mecanismo para gestionar objetos dependientes en el DictionaryABAP

• Diferenciar entre la versión activa y la inactiva de un objeto de DictionaryABAP

This chapter deals with both active and inactive administration of the ABAPDictionary. Use of the where-used list is based on the discussion of handlingdependent objects. The unit then transitions to the information system. Mostparticipants should remember these topics from BC400.

Ejemplo empresarialA menudo existen determinadas dependencias entre objetos de Dictionary que sehacen efectivas a raíz de modificaciones en los objetos. Por ejemplo, si modificaun dominio técnico, puede que haya que convertir una o varias tablas de base dedatos (esto puede llevar mucho tiempo).

356 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 367: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

Activación y referencia de utilización

Gráfico 165: Versiones activa e inactiva

Durante el desarrollo, a veces necesitará modificar un objeto (activo) que ya estáen uso en el sistema. En el Dictionary ABAP se da soporte a estas modificacionesmediante la separación de la versión activa y la inactiva.

La versión activa de un objeto de Dictionary ABAP es la versión a la que accedenlos componentes del entorno en tiempo de ejecución (por ejemplo, procesadorABAP, interfase de base de datos). Esta versión no se modifica inicialmente.

Una versión inactiva se crea cuando se modifica un objeto activo. La versióninactiva se puede grabar sin verificar. No afecta al sistema en tiempo de ejecución.

Al final del proceso de desarrollo, la versión inactiva puede pasar a ser la versiónactiva. Para ello se realiza una activación. Primero se verifica la consistenciade la versión inactiva del objeto. Si es consistente, la versión inactiva sustituyea la activa. A partir de ahora, el sistema en tiempo de ejecución utiliza la nuevaversión activa.

En el ejemplo anterior se muestra cómo se modifica el status del objeto. Unaestructura activa contiene tres campos. Se añade un campo a esta estructuraen el Dictionary ABAP. Después de esta acción, existe una versión activa contres campos y una versión inactiva con cuatro campos. Durante la activación,la versión activa se sobrescribe con la versión inactiva. La versión inactiva seconvierte entonces en la versión activa. Después de esta acción sólo queda laversión activa con cuatro campos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 357

Page 368: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

Gráfico 166: Objetos en tiempo de ejecución

Using the presentation , the instructor explains the process for changing ABAPDictionary Objects that are already active. The instructor also notes the centralrole played by the activation procedure.

The runtime object is really just a technical detail, but it has a major impact onthe procedure used in the ABAP Dictionary. Once again, the importance of theactivation procedure is stressed.

The need to look at dependent objects is based on the runtime object. Changes tothe database are covered in the next unit.

Key here is that the activation of dependent objects is always based on the activeversion.

La información sobre una estructura (o tabla) se distribuye en el Dictionary ABAPen dominios, elementos de datos y la definición de la estructura. El objeto entiempo de ejecución (nametab) combina esta información en una estructura conforma optimizada para acceder desde programas ABAP. El objeto en tiempo deejecución se crea cuando se activa la estructura.

Los objetos en tiempo de ejecución de las estructuras se graban en la memoriaintermedia, de modo que el sistema en tiempo de ejecución ABAP puede accedera esta información con rapidez.

358 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 369: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

El objeto en tiempo de ejecución contiene información sobre la estructura global(por ejemplo, número de campos) y los campos de estructura individuales (nombrede campo, posición del campo en la estructura, tipo de datos, longitud, número dedecimales, campo de referencia, tabla de referencia, tabla de verificación, rutina deconversión, etc.).

El objeto en tiempo de ejecución de una tabla contiene más información que lainterfase de la base de datos necesita para acceder a los datos de tabla (dependenciade mandante, grabación en memoria intermedia, campos clave, etc.).

Los objetos en tiempo de ejecución se crean para todos los objetos de DictionaryABAP que se pueden usar como tipos en programas ABAP. Se trata de elementosde datos, tipos de tablas y vistas, además de estructuras y tablas.

Gráfico 167: Referencia de utilización

Si se modifica un objeto ya activo, la modificación puede repercutir en otrosobjetos que lo usen (directa o indirectamente). Estos objetos que usan otro objetose llaman objetos dependientes. Por un lado, podría ser necesario ajustar a loscambios los objetos en tiempo de ejecución de estos objetos dependientes. Porel otro, una modificación podría hacer que un objeto dependiente pasara a serinconsistente.

Por ello, los objetos dependientes se determinan y se activan (si es necesario)cuando se activa un objeto activo. Las versiones activas de los objetosdependientes se vuelven a activar. Concretamente, no se modifican las versionesnuevas e inactivas de objetos que usan el objeto modificado.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 359

Page 370: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

Ejemplo: Cuando se modifica un dominio, por ejemplo, su tipo de datos, todos loselementos de datos, las estructuras y las tablas que hacen referencia a este dominiose deben volver a activar. Esta activación se inicia automáticamente cuando seactiva el dominio. De este modo se garantiza que todos los objetos en tiempo deejecución afectados se ajusten a la información de tipo modificado.

Si un objeto de Dictionary ABAP tiene una tabla como objeto dependiente, puedeque haya que ajustar su objeto de base de datos y su objeto en tiempo de ejecucióncuando se active el objeto dependiente. El método que se usa aquí se explicaen la unidad siguiente.

La modificación de un objeto de Dictionary ABAP podría afectar también a susobjetos dependientes. Antes de realizar una modificación crítica (como modificarel tipo de datos o borrar un campo), defina el conjunto de objetos afectado paracalcular las implicaciones de la acción planificada.

Existe una referencia de utilización para cada objeto de Dictionary ABAP quepermite buscar todos los objetos que hacen referencia a este objeto. Puede llamarla referencia de utilización desde la transacción de actualización del objeto.

Puede encontrar usos directos e indirectos de un objeto de Dictionary ABAP conla referencia de utilización. También tiene que definir qué tipos de objetos de usose deberían incluir en la búsqueda (por ejemplo, todas las estructuras y tablasmediante un elemento de datos). También puede buscar usos que no sean objetosde Dictionary ABAP (por ejemplo, todos los programas que usan una tabla). Labúsqueda también se puede limitar por clase de desarrollo o área de nombres deusuario.

Si es probable que un objeto sea usado por varios objetos, realice la búsqueda enproceso de fondo.

360 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 371: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

Gráfico 168: El sistema de información Repository del Dictionary ABAP

Reason for the where-used list: helps to determine how critical a change will be.Explain the function. Other search functions in the information system.

Demo: Show the where-used list and information system by searching for anobject you created earlier in the course.

El sistema de información Repository del Dictionary ABAP forma parte delsistema de información Repository general. Ayuda a buscar objetos de DictionaryABAP y sus usuarios.

La referencia de utilización para objetos de Repository se puede llamar desdeel sistema de información. El sistema de información también permite buscarobjetos por atributos.

Además de los criterios de búsqueda específicos del objeto (p. ej., tipo degrabación en memoria intermedia para tablas), puede buscar todos los objetos porclase de desarrollo, descripción breve o autor y fecha de la última modificación.

Las listas de objetos creadas por el sistema de información Repository estántotalmente integradas en el Workbench ABAP. Permiten ir directamente a lastransacciones de actualización de los objetos encontrados.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 361

Page 372: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

362 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 373: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

321 Ejercicio 14: Dependencias respecto aobjetos de Dictionary ABAPDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Ampliar tablas y estructuras con campos• Usar el sistema de información Repository y la referencia de utilización

para objetos de Dictionary ABAP

Ejemplo empresarialLa información sobre el jefe de departamento podría estar almacenada en elsistema de gestión de empleados. El log de modificaciones también debería sermás detallado.

El log de modificaciones para las tablas ZEMPLOY## y ZDEPMENT## no es lobastante preciso. Además de la persona que hizo la última modificación y la fechade dicha modificación, desea registrar la hora de la última modificación.

Tarea:Amplíe las tablas ZEMPLOY## y ZDEPMENT## con otro campo.

Nota: Los campos del log de modificaciones se pueden encontrar en laestructura Include ZCHANGE##. Por lo tanto, el nuevo campo se deberíainsertar en esta estructura. El campo se inserta automáticamente en lastablas ZEMPLOY## y ZDEPMENT## mediante el mecanismo de include.

1. Asegúrese de que se inserte un campo adecuado para el log de modificacionesen las tablas ZEMPLOY## y ZDEPMENT## con el menor esfuerzo posible.Use el elemento de datos S_TIME.

Nota: Los campos del log de modificaciones se pueden encontraren la estructura Include ZCHANGE##. Por lo tanto, el nuevocampo se debería insertar en esta estructura. El campo se insertaautomáticamente en las tablas ZEMPLOY## y ZDEPMENT##mediante el mecanismo de include.

2. Asegúrese de que el campo esté incluido en las tablas ZEMPLOY## yZDEPMENT##. Verifique el log de activación de las tablas y las estructurasimplicadas.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 363

Page 374: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

3. Cree una lista con los objetos de Dictionary ABAP siguientes:

Todos los dominios con valores fijos cuyos nombres empiecen por Z

Todos los campos de tabla que usen el elemento de datos S_FNAME

Todas las tablas del modelo de vuelo (paquete SAPBC_DATAMODEL) conla clase de entrega A

Nota: Todos los ejercicios se pueden resolver con el sistema deinformación Repository.

4. Determine todos los programas que usan la tabla SFLIGHT.

5. ¿Cómo se llaman los elementos de datos creados por sus compañeros deal lado?

Consejo: Puede determinar los elementos de datos de suscompañeros mediante una búsqueda de cadena utilizando el nombre(si los compañeros han respetado las convenciones para fijarnombres) o Última modificación.

6. Ejecute el programa BC430_CHECK en la transacción SE38. Verifica silas soluciones son correctas.

364 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 375: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

Solución 14: Dependencias respecto aobjetos de Dictionary ABAPTarea:Amplíe las tablas ZEMPLOY## y ZDEPMENT## con otro campo.

Nota: Los campos del log de modificaciones se pueden encontrar en laestructura Include ZCHANGE##. Por lo tanto, el nuevo campo se deberíainsertar en esta estructura. El campo se inserta automáticamente en lastablas ZEMPLOY## y ZDEPMENT## mediante el mecanismo de include.

1. Asegúrese de que se inserte un campo adecuado para el log de modificacionesen las tablas ZEMPLOY## y ZDEPMENT## con el menor esfuerzo posible.Use el elemento de datos S_TIME.

Nota: Los campos del log de modificaciones se pueden encontraren la estructura Include ZCHANGE##. Por lo tanto, el nuevocampo se debería insertar en esta estructura. El campo se insertaautomáticamente en las tablas ZEMPLOY## y ZDEPMENT##mediante el mecanismo de include.

a) En la pantalla inicial del Dictionary ABAP, marque Tipo de datose introduzca ZCHANGE## en el campo correspondiente. SeleccioneModificar.

b) Marque la etiqueta Componentes. Introduzca el nombre del nuevocampo, S_TIME, en la primera fila libre de la lista de componentes yen la columna Tipo de componente.

c) Active la estructura.

2. Asegúrese de que el campo esté incluido en las tablas ZEMPLOY## yZDEPMENT##. Verifique el log de activación de las tablas y las estructurasimplicadas.

a) Encontrará el log de activación para la estructura en Utilidades →Log de activación. Aquí puede ver que las tablas ZEMPLOY## yZDEPMENT## están activadas como objetos dependientes y se hanampliado con el nuevo campo.

b) Vaya al modo de visualización en la pantalla de actualización para latabla ZEMPLOY## (o ZDEPMENT##). Seleccione Utilidades →Contenido de tabla → Crear entradas. Aquí puede ver que la tabla seha ampliado realmente con el campo correspondiente.

3. Cree una lista con los objetos de Dictionary ABAP siguientes:

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 365

Page 376: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

Todos los dominios con valores fijos cuyos nombres empiecen por Z

Todos los campos de tabla que usen el elemento de datos S_FNAME

Todas las tablas del modelo de vuelo (paquete SAPBC_DATAMODEL) conla clase de entrega A

Nota: Todos los ejercicios se pueden resolver con el sistema deinformación Repository.

a) En la pantalla inicial del Dictionary ABAP, seleccione Entorno →Sistema de información Repository. Despliegue el nodo DictionaryABAP.

b) Marque Dominios. En la imagen de selección, introduzca Z* en elprimer campo. Seleccione Tratar → Todas las selecciones. En laimagen de selección ampliada, seleccione Todos los dominios convalores fijos. Seleccione Ejecutar para generar la lista solicitada.

c) Seleccione Back dos veces para volver a la pantalla inicial del sistemade información Repository. Amplíe el nodo Campos. Marque Camposde tabla. Seleccione Tratar → Todas las selecciones e introduzcaS_FNAME en el campo Elemento de datos. Seleccione Ejecutar paragenerar la lista solicitada.

d) Seleccione Back dos veces para volver a la pantalla inicial delsistema de información Repository. El nodo Dictionary ABAP siguedesplegado. Marque Tablas de base de datos.

e) Introduzca el paquete SAPBC_DATAMODEL en la imagen de selección.Seleccione Tratar → Todas las selecciones e introduzca la clase deentrega A. Seleccione Ejecutar para generar la lista solicitada.

4. Determine todos los programas que usan la tabla SFLIGHT.

a) Vaya a la pantalla inicial del Dictionary ABAP. Seleccione Tablas debase de datos e introduzca SFLIGHT en el campo correspondiente.Seleccione Referencia de utilización.

b) El uso en programas ya aparece marcado en la siguiente ventana dediálogo. Seleccione Ejecutar para generar la lista solicitada.

Continúa en la página siguiente

366 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 377: 119167629 taw10-02-es

TAW10_2 Lección: Dependencias de objeto

5. ¿Cómo se llaman los elementos de datos creados por sus compañeros deal lado?

Consejo: Puede determinar los elementos de datos de suscompañeros mediante una búsqueda de cadena utilizando el nombre(si los compañeros han respetado las convenciones para fijarnombres) o Última modificación.

a) Puede generar la lista necesaria de nuevo en el sistema de informaciónRepository del Dictionary ABAP. Despliegue el nodo DictionaryABAP y marque Elementos de datos. Puede limitar la selección segúnla última fecha de modificación (la última modificación no deberíaser anterior al comienzo del curso), como mínimo en el primer caso(convención para fijar nombres).

b) Seleccione Tratar → Todas las selecciones y busque mediante Últimamodificación.

Nota: Si tiene dos grupos de compañeros, use Selecciónmúltiple.

6. Ejecute el programa BC430_CHECK en la transacción SE38. Verifica silas soluciones son correctas.

a) Inicie la transacción SE38 desde el campo de entrada. Inicie elprograma BC430_CHECK.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 367

Page 378: 119167629 taw10-02-es

Capítulo 10: Dependencias de objeto TAW10_2

Resumen de la lección

Ahora podrá:• Explicar cómo funcionan el sistema info Repository y la referencia de

utilización para objetos del Dictionary ABAP• Describir el mecanismo para gestionar objetos dependientes en el Dictionary

ABAP• Diferenciar entre la versión activa y la inactiva de un objeto de Dictionary

ABAP

368 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 379: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Explicar cómo funcionan el sistema info Repository y la referencia de

utilización para objetos del Dictionary ABAP• Describir el mecanismo para gestionar objetos dependientes en el Dictionary

ABAP• Diferenciar entre la versión activa y la inactiva de un objeto de Dictionary

ABAP

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 369

Page 380: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

370 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 381: 119167629 taw10-02-es

Capítulo 11329 Cambio de tablas

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo aprenderá a modificar las tablas existentes.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Modificar tablas• Calcular la repercusión de estas modificaciones en la base de datos• Convertir tablas• Reanudar conversiones canceladas• Añadir campos de cliente a tablas estándar SAP por medio de estructuras

append sin modificaciones

Contenido del capítuloLección: Modificaciones de tablas... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372

Ejercicio 15: Modificaciones de tablas de base de datos ... . . . . . . . . . .391Ejercicio 16: Utilidad de base de datos (SE14) para solucionarproblemas (opcional). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .397

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 371

Page 382: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Lección:330

Modificaciones de tablasDuración de la lección: 100 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Modificar tablas• Calcular la repercusión de estas modificaciones en la base de datos• Convertir tablas• Reanudar conversiones canceladas• Añadir campos de cliente a tablas estándar SAP por medio de estructuras

append sin modificaciones

After completing this unit, participants should be able to make changes to existingobjects in the ABAP Dictionary. They should learn to judge the effect of a changein the ABAP Dictionary on corresponding database objects.

The participants learn that a change made to a table in the ABAP Dictionary mustalso be made in the database. Existing data could be lost as a result of such achange (for example when deleting a field).

Ejemplo empresarialLas estructuras de datos de una aplicación se deben ajustar a procesos modificados,exactamente igual que los programas. Para ello, ahora debería modificar las tablasde base de datos existentes para su proyecto.

372 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 383: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Modificaciones de base de datos en tablastransparentes

Gráfico 169: Modificaciones de tablas

Los programas ABAP sólo pueden acceder correctamente a una tabla de base dedatos si el objeto en tiempo de ejecución de la tabla es consistente con la estructurade la tabla en la base de datos. Cada vez que se modifica la tabla en el DictionaryABAP, debe verificar si la estructura de base de datos de la tabla se debe ajustara la definición modificada de la tabla en el Dictionary ABAP cuando se activa(cuando se reescribe el objeto en tiempo de ejecución).

No hace falta modificar la estructura de base de datos cuando se producen algunasmodificaciones en el Dictionary ABAP. Por ejemplo, no hace falta modificarla estructura de base de datos cuando se modifica el orden de los campos enel Dictionary ABAP (salvo en el caso de los campos clave). En este caso, laestructura modificada se activa en el Dictionary ABAP, mientras que la estructurade base de datos no se modifica.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 373

Page 384: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Gráfico 170: ¿Cómo se ajusta la estructura?

Explain again that a table always exists both in the dictionary and in the database.These two versions of the table must be equivalent. When a table definition in theABAP Dictionary is changed, the table definition in the database must be changedaccordingly. Explain that the table in the database is updated automatically whenthe modified version is activated.

Explain the three ways that the structure can be adjusted. Make sure theparticipants understand that system automatically determines the method foradjusting the structure; no user interaction is possible.

The choice of method depends on the database system used and whether the tablecontains any data.

Indicate that these different methods require different amounts of time andresources. Conversion is the most costly method of structure adjustment in termsof time and resources. However, if indexes have to be rebuilt due to the structuremodification, a change with ALTER TABLE can also be very time-consuming(for large tables).

There are situations where a structure adjustment is not necessary (e.g. change inthe order of the fields).

374 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 385: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

La tabla de base de datos se puede ajustar según la definición modificada en elDictionary ABAP de tres formas distintas:

• Borrando la tabla de base de datos y creándola de nuevo. La tabla en la basede datos se borra, la tabla inactiva se activa en el Dictionary ABAP, y la tablase vuelve a crear en la base de datos. Se pierden los datos en la tabla.

• Modificando el catálogo de base de datos (ALTER TABLE). Simplemente semodifica la definición de la tabla en la base de datos. Los datos existentesse conservan. No obstante, puede que haya que volver a crear los índicesen la tabla.

• Conversión de la tabla. Esta es la forma más lenta de ajustar una estructura.

Si la tabla no contiene datos, se borra de la base de datos y se crea de nuevo conla estructura nueva. Si existen datos en la tabla, se intenta ajustar la estructuracon ALTER TABLE. Si el sistema de base de datos usado no puede hacerlo, seconvertirá la tabla para ajustar la estructura.

Gráfico 171: Proceso de conversión 1

The participants learn how a conversion executes and what to do when aconversion terminates. To react correctly when an error occurs and prevent errors,it is particularly important to understand the conversion phases.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 375

Page 386: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Demo 9: Conversion

Idea

Unfortunately there is a design error when you create table ZCARGO. FieldCARGO_ID for the cargo number has type CHAR and not type NUMC.

Note

Go to the domain and change the data type to NUMC. Then activate the domainand explain the activation log. Go to the table and convert it with the databaseutility. Explain what happens during a conversion from CHAR to NUMC. TheMOVE-CORRESPONDING statement simply removes all the letters and othercharacters from the field. Show and explain the conversion log.

El ejemplo siguiente muestra los pasos que da el sistema durante una conversión.

Situación de partida: La tabla TAB se ha modificado en el Dictionary ABAP. Lalongitud del campo 3 se ha reducido de 60 a 30 posiciones.

El Dictionary ABAP tiene, por lo tanto, una versión activa de la tabla (el campo 3tiene una longitud de 60 posiciones) y otra inactiva (el campo 3 sigue teniendo 30posiciones).

La versión activa de la tabla se ha creado en la base de datos, lo que significa queel campo 3 tiene actualmente 60 posiciones en la base de datos. Para la tabla enel Dictionary ABAP se ha definido un índice secundario con el ID A11, creadotambién en la base de datos.

La tabla ya contiene datos.

376 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 387: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Gráfico 172: Proceso de conversión 2

The new structure of the database table TAB is created under the name QCM8TAB.The main problem during conversion is that the application programs can haveaccess to the database table TAB. In release 4.6C this is not possible because thedatabase table has the name QCM8TAB through the conversion process. In step 5,the database table is renamed to the original name.

Paso 1: La tabla está bloqueada para evitar más modificaciones de la estructura.Si la conversión se cancela por un error, la tabla permanecerá bloqueada. Estemecanismo de bloqueo evita que se modifique la estructura antes de que secomplete la conversión correctamente. Si esto ocurriera, se podrían perder datos.Además, todas las vistas dependientes de la tabla están desactivadas y, por lotanto, bloqueadas.

Paso 2: Se modifica el nombre de la tabla en la base de datos. Se borran todoslos índices en la tabla. El nombre de la nueva tabla (temporal) se define con elprefijo QCM y el nombre de la tabla. Por lo tanto, el nombre de la tabla temporalpara la tabla TAB es QCMTAB.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 377

Page 388: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Gráfico 173: Proceso de conversión 3

Paso 3: La versión inactiva de la tabla TAB está activada en el DictionaryABAP. La tabla se crea en la base de datos con su nueva estructura y el nombreQCM8TAB. El índice primario de la tabla también se crea automáticamente en labase de datos. La estructura de la tabla de base de datos QCM8TAB es igual ala estructura de la tabla activa en el Dictionary ABAP después de este paso. Latabla de base de datos, sin embargo, no contiene datos.

En consecuencia, la tabla no existe en la base de datos bajo su nombre originaldurante la conversión. Por lo tanto, los programas que accedan a esta tabla no sepodrán ejecutar. Por ello, asegúrese siempre de que ninguna aplicación accedea la tabla que se debe convertir durante la conversión.

378 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 389: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Gráfico 174: Proceso de conversión 4

Paso 4: Los datos se cargan de nuevo desde la tabla QCMTAB en la tablaQCM8TAB (con MOVE-CORRESPONDING). Los datos se encuentran en ambastablas después de este paso. Cuando se reduce el tamaño de los campos, porejemplo, las posiciones adicionales se truncan cuando se vuelven a cargar los datos.

Puesto que los datos se encuentran en ambas tablas, QCM8TAB y QCMTAB,los requisitos de almacenamiento son mayores durante la conversión. Por ello,verifique si hay suficiente espacio disponible en el tablespace correspondienteantes de convertir tablas grandes.

Se produce un commit en base de datos a partir de los 16 MB cuando se copian losdatos de la tabla QCMTAB a la tabla QCM8TAB. Así pues, para el proceso deconversión se necesitan 16 MB de recursos en el segmento de rollback. El bloqueode la base de datos existente se desactiva con el commit y se vuelve a solicitarantes de editar la siguiente área de datos que se debe convertir.

Si reduce el tamaño de las claves, sólo se podrá volver a cargar un registro siexisten varios registros cuya clave no se puede diferenciar. No se puede sabercuál será el registro en cuestión. En tal caso, limpie los datos de la tabla antesde la conversión.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 379

Page 390: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Gráfico 175: Proceso de conversión 5

Paso 5: Se borra la tabla QCMTAB.

Paso 6: Se cambia el nombre de la tabla QCM8TAB por TAB. Se vuelven a crearlos índices secundarios definidos en el Dictionary ABAP para la tabla. Las vistasde la tabla desactivadas en el primer paso de la conversión se vuelven a activar enla base de datos.

Paso 7: Se elimina el bloqueo activado al principio de la conversión.

• Si la conversión se cancela, la tabla permanecerá bloqueada y se creará unlog de reinicio.

• Atención: La tabla no existe en la base de datos bajo su nombre originaldurante la conversión. Los programas no pueden acceder a la tabla durantela conversión. Las conversiones se deberían realizar siempre en modoproductivo. Como mínimo deberá desactivar todas las aplicaciones queusen las tablas que se van a convertir.

• Depure las conversiones canceladas. En caso contrario, los programas queaccedan a la tabla no se ejecutarán correctamente. En tal caso, averigüepor qué se ha cancelado la conversión (por ejemplo, desbordamiento deltablespace correspondiente) y rectifique la situación. Luego reanude laconversión cancelada.

380 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 391: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

The instructor explains in detail the conversion process using the slides. Makesure you stress that in Step 4 (copying back data), the space required for thetable in the database doubles. Mention that reloading uses ABAP commandMOVE-CORRESPONDING. Fields are not renamed.

Gráfico 176: Posibles problemas durante las conversiones

Puesto que durante la conversión los datos se encuentran tanto en la tabla originalcomo en la temporal, durante la conversión los requisitos de almacenamiento sonmayores. Si el tablespace se desborda cuando se vuelven a cargar los datos desdela tabla temporal, la conversión se cancelará. En tal caso, amplíe el tablespace yvuelva a iniciar la conversión en la utilidad de base de datos.

Si acorta la clave de una tabla (por ejemplo, porque elimina o acorta la longitudde los campos clave), no podrá diferenciar entre las nuevas claves de registros yaexistentes en la tabla. Cuando vuelva a cargar los datos desde la tabla temporal,sólo podrá volver a cargar uno de estos registros en la tabla. No se puede sabercuál será el registro en cuestión. Si desea copiar determinados registros, deberádepurar la tabla antes de la conversión.

Durante una conversión, los datos se vuelven a copiar en la tabla de base de datosdesde la tabla temporal mediante la sentencia ABAPMOVE-CORRESPONDING.En consecuencia, sólo se permiten las modificaciones de tipo que se puedenejecutar con MOVE-CORRESPONDING. Todas las demás modificaciones detipo hacen que se cancele la conversión cuando se vuelven a cargar los datosen la tabla original. En este caso, hay que restablecer el estado anterior a laconversión. Mediante las herramientas de base de datos, borre la tabla, cambie elnombre QCM por el nombre anterior de la tabla, reconstruya el objeto en tiempode ejecución (en la utilidad de base de datos), restablezca el estado anterior de laestructura de la tabla en el Dictionary, y por último active la tabla.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 381

Page 392: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Gráfico 177: Reanudación de conversiones canceladas

Explain the reasons a conversion terminates as listed on the slide. Stress that keyabbreviations can result is loss of data.

Explain what to do when a conversion terminates. Mention the object log. Explainthat some of the causes of termination do not result in an entry in the object log(for example, when the server goes down or there is a dump). In these cases, theuser must look in the system log or ABAP short dump to search for the causeof the error.

Mention that a terminated conversion must be corrected as quickly as possible.Application programs that access the table to be converted could otherwise reactincorrectly or produce inconsistent data. For example, if the data was not yetreloaded, no entries will be found in the table in the database. A program canwrite a new data record to this table although there is already a corresponding datarecord in the QCM table with the same key.

Demo 10: Terminated Conversions

Activate a conversion of table ZCARGO, by reducing the field length for the textfor cargo. To ensure that the conversion terminates, make the index created indemo 3 a UNIQUE index and ensure that there are duplicate entries for the indexfields in the table. Start the conversion. It terminates in Step 6 (index creation).

382 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 393: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Show the restart log and how you can find terminated conversions in SE14. Showthe object log and explain the reason for the error.

Correct the error by canceling the unique flag in the index maintenance (since thetable is locked in display mode in the table, go to the index and then to changemode). Save and activate the index. Then return to the database utility andcontinue the terminated conversion. This demo is optional and can be omitted.

ST22 Dump Analysis

SM21 Syslog

Si se cancela una conversión, se conservará la entrada de bloqueo fijada parala tabla en el primer paso. La tabla no se podrá editar con las herramientas deactualización del Dictionary ABAP (transacción SE11).

Es posible analizar una conversión cancelada con la utilidad de base de datos(transacción SE14) y luego reanudarla. La utilidad de base de datos proporcionauna herramienta de análisis con la que se pueden averiguar la causa del error y elestado actual de todas las tablas implicadas en la conversión.

Normalmente el motivo exacto de la cancelación figura en el log de objeto. Si ellog de objeto no proporciona información sobre la causa del error, analice el logdel sistema o los dumps breves.

Si hay una conversión cancelada, en la utilidad de base de datos se visualizarándos opciones en forma de pulsadores:

• Después de corregir el error, puede reanudar la conversión en el punto en quese canceló mediante la opción Reanudar ajuste.

• También cuenta con la opción Desbloquear tabla. Esta opción sólo borra laentrada de bloqueo existente para la tabla. Nunca seleccione Desbloqueartabla para una conversión cancelada si los datos sólo existen en la tablatemporal, por ejemplo, si la conversión se ha cancelado en el paso 3 o en el 4.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 383

Page 394: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Ampliación de las tablas estándar de SAP

Gráfico 178: Estructuras append 1

Append Structures 1

The following enhancements can be made to a table or structure TAB with anappend structure:

• Insert new fields in TAB,• Define foreign keys for fields of TAB that already exist,• Attach search helps to fields of TAB that already exist,

These enhancements are part of the append structure, i.e. they must always bechanged and transported with the append structure. When a table or structure isactivated, all the append structures of the table are searched and the fields of theseappend structures are added to the table or structure. Foreign keys and search helpattachments added using the append structure are also added to the table. If anappend structure is created or changed, the table or structure assigned to it is alsoadjusted to these changes when the append structure is activated.

Las estructuras append permiten añadir campos a estructuras o a una tabla estándarde SAP sin tener que modificar la definición de tabla.

384 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 395: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Una estructura append es una estructura que está asignada exactamente a unatabla. Puede haber varias estructuras append para una tabla.

Cuando se activa una tabla, se buscan todas las estructuras append activas para latabla y se añaden sus campos a la tabla. Si se crea o se modifica una estructuraappend, la tabla a la que esté asignada se activará también, y las modificacionesse reflejarán en ella cuando se active.

Al igual que todas las estructuras, una estructura append define un tipo que sepuede usar en programas ABAP.

Con el release 4.6C puede definir, mediante una estructura append, claves externaspara campos que ya existen en la tabla. También se pueden añadir ayudas para labúsqueda a campos que ya existan en la tabla.

Consejo: Si copia una tabla transparente en el Dictionary ABAP (DDIC)y se ha añadido una estructura append a dicha tabla, los campos de laestructura append pasarán a ser campos normales en la tabla de destino.

Demo 11: Append Structures

Idea

Table ZCARGO is considered to be a SAP standard solution. A customer (airline)now has additional requirements for managing the cargo. The customer can insurethe cargo against damage not covered by the carrier. Enter an insurance numberfor all cargo managed in ZCARGO. Extend table ZCARGO with an appendstructure with the insurance number as the only field.

Note

Include the field in the table with direct type entry. Explain the disadvantages ofdirect type entry (no F1 help possible, no foreign key, no F4 help). Explain thatfields with direct type entry should not be used on screens. Show how to createthe append. Mention that the name of the append must always lie in the customernamespace and that there is a special naming convention for fields in appends.Show the activation log and explain that the table was automatically updatedwhen the append was activated.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 385

Page 396: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Gráfico 179: Estructuras append 2

Los clientes crean estructuras append en su área de nombres. Las estructurasappend quedan así protegidas contra sobrescritura durante los upgrades.

Las nuevas versiones de las tablas estándar se importan durante el upgrade. Cuandose activan las tablas estándar, los campos contenidos en las estructuras appendactivas se añaden a las nuevas tablas estándar. Cuando se añaden estructurasappend a una tabla, no hace falta ajustar manualmente las modificaciones de clientea la nueva versión de la tabla de SAP (transacción SPDD) durante el upgrade.

Puesto que el orden de los campos en el Dictionary ABAP puede ser diferente delorden en la base de datos a partir del release 3.0, no hace falta realizar ningunaconversión cuando se añade una estructura append o se insertan campos en unaestructura append existente. La estructura se ajusta cuando se ajusta el catálogode la base de datos (ALTER TABLE). Cuando se activa en el Dictionary ABAP,la definición de la tabla se modifica, y el nuevo campo se añade a la tabla debase de datos.

386 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 397: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Gráfico 180: Estructuras append 3

Explain the advantages of extending a table with an append structure as opposedto directly extending the table. Show how the new SAP version is merged with thecustomer fields in the append structure during an upgrade. An APPEND structureis assigned to exactly one table.

Explain that new customer fields should only be appended to standard SAP tableswith an append structure and not by directly extending the table.

Mention the namespace for customer fields. Names must begin with YY or ZZ orwith a reserved name space (/reserved name/).

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 387

Page 398: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

La nueva versión de la tabla estándar de SAP se activa, y el nuevo campo seañade a la tabla de base de datos.

Consejo: Tenga en cuenta los puntos siguientes sobre estructuras append:

• No se pueden crear estructuras append para tablas pool ni tablascluster.

• Si hay un campo largo (tipo de datos LCHR o LRAW) en una tabla,no se puede ampliar con estructuras append. Esto se debe a que loscampos largos deben estar siempre en la última posición de la listade campos (p. ej., deben ser el último campo de la tabla).

• Si añade una estructura append a una tabla SAP como cliente, loscampos de esta estructura append deberían estar en el área paranombres de cliente de campos, es decir, deberían empezar por YY oZZ. De este modo se evita que haya conflictos de nombres con losnuevos campos insertados por SAP en la tabla estándar.

• Si tiene un área para nombres reservada como interlocutor parasus desarrollos, los campos que seleccione en estructuras appenddeberían estar siempre dentro de su área para nombres.

Gráfico 181: Ampliación de tablas

El cliente puede ampliar posteriormente las estructuras y las tablas definidas porSAP en el Dictionary ABAP del modo siguiente:

388 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 399: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Includes del CustomizingCon esta variante, se reservan algunas posiciones dentro de una estructura oalgunas tablas para ampliaciones. Sin embargo, los includes asociados seanteponen a todos los creados por el cliente.

AppendsCon esta variante, los campos sin reserva previa se añaden al final de lasestructuras o las tablas.

Atención: Problemas debidos a ampliaciones de una estructura

Las ampliaciones de este tipo no sólo afectan a las estructuras y tablasampliadas, sino que afectan también a todas las estructuras dependientesque la ampliación incorpore como include o subestructura. Por ejemplo,las ampliaciones mediante appends, que sólo afectan al final de laestructura inicial, pueden dar lugar a ajustes dentro de las estructurasdependientes.

En los programas sin verificación de Unicode activa, las ampliaciones deestructura pueden provocar errores de sintaxis y en tiempo de ejecución,sobre todo en el caso de las verificaciones de tipo y en combinación conestructuras profundas. En los programas con verificación de Unicodeactiva, se ven afectados también las asignaciones, las verificaciones deoperando, y los accesos con offset y longitud. Las modificaciones sonproblemáticas en este caso si, por ejemplo, se insertan componentesnuméricos o profundos en una estructura exclusivamente alfanumérica, yesto hace que la estructura pierda esta característica. Por ese motivo, lasampliaciones son problemáticas, ya que la vista fragmentada se modifica,y esto influye en las verificaciones de asignaciones y comparaciones quese basan en ella.

Para poder detectar las repercusiones de las ampliaciones de estructura, todas lasestructuras y tablas en el Dictionary ABAP se clasifican en Detalles -> Categoríade ampliación siguiendo el procedimiento siguiente:

Nivel Categoría Significado

1 Sin clasificar La estructura no tiene categoría deampliación

2 No ampliable No se puede ampliar la estructura

3 Ampliable yalfanumérico

Todos los componentes de la estructura ysus ampliaciones deben ser alfanuméricos

4 Ampliable yalfanumérico o númérico

La estructura y sus ampliaciones no puedencontener tipos de datos profundos

5 Ampliable libremente La estructura y sus ampliaciones puedencontener componentes con un tipo de datosopcional

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 389

Page 400: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Aquí los tipos elementales C, D, N y T se describen alfanuméricos, mientras quelos tipos elementales F, I, P y X son numéricos. Los tipos profundos STRINGy XSTRING no se soportan.

En el caso de las estructuras y las tablas con includes o subestructuras, lascategorías de ampliación de los includes y las subestructuras no pueden sermayores que las de la estructura inicial. Por ejemplo, si la estructura inicialcontiene un include del nivel 4, los niveles 2 y 3 no se permitirán para la estructurainicial.

Las ampliaciones de estructura en el Dictionary puede afectar también a lasestructuras internas de programas ABAP si las estructuras del Dictionary enel texto fuente se usan como include o subestructura. Estas dependencias secontemplan implícitamente en la verificación del programa ABAP. Esto no incluyelas estructuras clasificadas que contengan includes o subestructuras ampliables.

390 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 401: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

345 Ejercicio 15: Modificaciones de tablas debase de datosDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Modificar objetos existentes• Convertir tablas• Ampliar tablas estándar con estructuras append sin modificarlas

Ejemplo empresarialDespués de algunos cambios organizativos en las compañías aéreas, el diseñooriginal de la gestión de empleados ya no es adecuado.

El diseño de la tabla ZFLCREW## ya no es el idóneo. El campo para el rol delempleado durante el vuelo es demasiado largo.

Tarea 1:Acorte un campo en la tabla ZFLCREW##.

1. Reduzca la longitud del campo a 15 caracteres.

Nota: Cree un nuevo elemento de datos ZROLE## y sustituya elelemento de datos existente por otro. Cuando defina el elemento dedatos ZROLE##, no use ningún dominio. En cambio, introduzca eltipo de datos y la longitud directamente cuando defina el elementode datos. Ahora active la tabla.

Vaya al modo de modificación en la pantalla de actualización para la tablaZFLCREW##.

2. Visualice el log de activación. El sistema le recuerda que al acortar el campoes necesario convertir la tabla ZFLCREW##.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 391

Page 402: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Tarea 2:Los empleados con funciones de gestión o actualización tienen su propio lugar detrabajo en un aeropuerto. Registre la información de contacto con estos empleadosen la tabla ZEMPLOY##: un número de teléfono para ponerse en contacto conlos empleados de mantenimiento del aeropuerto y la ubicación de la oficina o dellugar en el que trabajan los empleados administrativos.

1. Cree una estructura append para la tabla ZEMPLOY## que contenga lainformación siguiente:

Campo Elemento de datos

ZZAirport S_AIRPORT

ZZOffice number S_BUREAUNO

ZZTelephone number S_TELNO

Nota: Los nombres de campo en una estructura append deben estardentro del área para nombres de campos del cliente. De ahí que losnombres de los campos deban empezar por ZZ o YY.

Tarea 3:Cree una clave externa adecuada para el campo Aeropuerto a partir de la estructuraappend.

1. Defina la clave externa en la pantalla de actualización de la estructura append.

Consejo: La tabla de todos los aeropuertos se llama SAIRPORT.Para definir la clave externa por completo, tendrá que verificar uncampo en la tabla añadida (ZEMPLOY##).

En la pantalla de actualización para la tabla ZEMPLOY##, seleccione Pasara → Estructura append.

2. Ejecute el programa BC430_CHECK con la transacción SE38. El programaverifica si las soluciones son correctas.

392 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 403: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Solución 15: Modificaciones de tablas debase de datosTarea 1:Acorte un campo en la tabla ZFLCREW##.

1. Reduzca la longitud del campo a 15 caracteres.

Nota: Cree un nuevo elemento de datos ZROLE## y sustituya elelemento de datos existente por otro. Cuando defina el elemento dedatos ZROLE##, no use ningún dominio. En cambio, introduzca eltipo de datos y la longitud directamente cuando defina el elementode datos. Ahora active la tabla.

Vaya al modo de modificación en la pantalla de actualización para la tablaZFLCREW##.

a) Sobrescriba el elemento de datos SEMP_ROLE en la columna Tipode campo con el nombre de su elemento de datos ZROLE##. Grabesus modificaciones.

b) Marque el nombre ZROLE##. En la siguiente ventana de diálogo,confirme que desea crear el elemento de datos.

c) En la pantalla de actualización del elemento de datos, introduzca unadescripción breve.

d) Marque la etiqueta Definición. Seleccione Tipo de datos integrados.Introduzca CHAR en el campo Tipo de datos, 15 en el campo Longitudy 0 en el campo Decimales.

e) En la etiqueta Denominador de campo, actualice el texto para elelemento de datos.

f) Active el elemento de datos.

2. Visualice el log de activación. El sistema le recuerda que al acortar el campoes necesario convertir la tabla ZFLCREW##.

a) Vuelva a la pantalla de actualización de la tabla.

b) Vaya a la utilidad de base de datos con Utilidades → Utilidad de basede datos.

c) Seleccione Activar y ajustar base de datos. Confírmelo en la consultade seguridad. El sistema convierte ahora la tabla.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 393

Page 404: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Tarea 2:Los empleados con funciones de gestión o actualización tienen su propio lugar detrabajo en un aeropuerto. Registre la información de contacto con estos empleadosen la tabla ZEMPLOY##: un número de teléfono para ponerse en contacto conlos empleados de mantenimiento del aeropuerto y la ubicación de la oficina o dellugar en el que trabajan los empleados administrativos.

1. Cree una estructura append para la tabla ZEMPLOY## que contenga lainformación siguiente:

Campo Elemento de datos

ZZAirport S_AIRPORT

ZZOffice number S_BUREAUNO

ZZTelephone number S_TELNO

Nota: Los nombres de campo en una estructura append deben estardentro del área para nombres de campos del cliente. De ahí que losnombres de los campos deban empezar por ZZ o YY.

a) En el modo de visualización, vaya a la pantalla de actualización para latabla ZEMPLOY##.

b) Seleccione Pasar a → Estructura append.

c) En la siguiente ventana de diálogo, introduzca el nombre necesario parala estructura append. Debe cumplir las convenciones habituales parafijar nombres. Seleccione Continuar.

d) El sistema visualiza la pantalla de actualización para la estructuraappend. La estructura append se actualiza del mismo modo que seactualizaría una estructura.

e) Introduzca un texto breve e inserte los campos ZZAirport, ZZOfficenumber y ZZTelephone number con los elementos de datosespecificados.

f) Active la estructura append. Seleccione Pasar a → Log de activaciónpara visualizar el log de activación.

g) La tabla ZEMPLOY## se ajusta automáticamente cuando se activala estructura append. Los nuevos campos se añaden a los camposexistentes en la base de datos.

Continúa en la página siguiente

394 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 405: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Tarea 3:Cree una clave externa adecuada para el campo Aeropuerto a partir de la estructuraappend.

1. Defina la clave externa en la pantalla de actualización de la estructura append.

Consejo: La tabla de todos los aeropuertos se llama SAIRPORT.Para definir la clave externa por completo, tendrá que verificar uncampo en la tabla añadida (ZEMPLOY##).

En la pantalla de actualización para la tabla ZEMPLOY##, seleccione Pasara → Estructura append.

a) Sitúe el cursor en el campo Aeropuerto. Seleccione el icono de clave.Copie la propuesta del sistema.

b) Aparece la pantalla de actualización de la clave externa. La tabla deverificación y las asignaciones de campo ya están completadas conpropuestas del sistema. Introduzca una descripción breve adecuada.

Nota: La clave externa no se puede especificar totalmentemediante la estructura append, ya que la clave de la tabla deverificación SAIRPORT contiene un campo de mandante yun código de aeropuerto, mientras que la estructura appendno tiene campo de mandante. Asegúrese de que, al generar lapropuesta, el campo de mandante se tome de la tabla append.

c) Seleccione No campos clave/candidatos como tipo de campos de claveexterna (ya que el campo Aeropuerto no es un campo clave en la tablaZEMPLOY##) y, como cardinalidad, C (porque no todos los empleadosestán asignados a un aeropuerto) o CN (porque se pueden asignar variosempleados al mismo aeropuerto).

d) Seleccione Copiar y luego active la estructura append.

2. Ejecute el programa BC430_CHECK con la transacción SE38. El programaverifica si las soluciones son correctas.

a) Ejecute el programa BC430_CHECK con la transacción SE38.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 395

Page 406: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

396 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 407: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

351 Ejercicio 16: Utilidad de base de datos(SE14) para solucionar problemas(opcional)Duración del ejercicio: 45 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Solucionar los errores que se producen durante la conversión de tablas

Ejemplo empresarialCuando se convierten tablas de BD existentes, se pueden perder datos o se puedenpresentar otros problemas. En estos casos, debería poder anular la conversión.

Datos del sistemaSistema: to be communicated by the instructorMandante: to be communicated by the instructorID de usuario: to be communicated by the instructorClave de acceso: to be communicated by the instructor

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 397

Page 408: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

Tarea:Debe evitar que se pierdan datos cuando se cometan errores durante la conversión.

Atención: In this conversion, data is lost because the department codes aresimply cut off. The temporary table for the conversion process remains ispreserved only for department tables and can be used for restoring the data.

In the case of the employee table, the department code values are simplycut off and the temporary tables are not preserved. For the participantsto be able to restore their data, they have to copy the affected tables(employees and departments) beforehand and fill these with data from theoriginal tables. These table contents can be used by the participants sothat their data can be reproduced.

With this exercise, you should show the participants how easy it is to losedata during a conversion and discuss possible precautionary measuresthat can be used (for example, where-used list before changing domains,saving tables in a temporary tables before the conversion, precisemeasurement of the field widths used within the table data, etc.).

1. Evitar la pérdida de datos.

Atención: Antes de continuar, copie el contenido de las tablasde empleados y de departamentos en las tablas temporalescorrespondientes.

2. Modifique el dominio para los departamentos de longitud 4 a longitud 2y active el dominio.

3. Active también los objetos dependientes (tablas).

4. Visualice el log.

Nota: A pesar de que en el mensaje de activación sólo se indicanadvertencias, encontrará los mensajes de error resaltados en rojo enel log, y una instrucción que indica que se han convertido las tablas.

5. Convierta primero la tabla de departamentos mediante la transacción SE14.

6. Ahora convierta la tabla de empleados y verifique el contenido.

7. Si fallara la conversión, pruebe a anularla de nuevo.

398 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 409: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Solución 16: Utilidad de base de datos(SE14) para solucionar problemas(opcional)Tarea:Debe evitar que se pierdan datos cuando se cometan errores durante la conversión.

Atención: In this conversion, data is lost because the department codes aresimply cut off. The temporary table for the conversion process remains ispreserved only for department tables and can be used for restoring the data.

In the case of the employee table, the department code values are simplycut off and the temporary tables are not preserved. For the participantsto be able to restore their data, they have to copy the affected tables(employees and departments) beforehand and fill these with data from theoriginal tables. These table contents can be used by the participants sothat their data can be reproduced.

With this exercise, you should show the participants how easy it is to losedata during a conversion and discuss possible precautionary measuresthat can be used (for example, where-used list before changing domains,saving tables in a temporary tables before the conversion, precisemeasurement of the field widths used within the table data, etc.).

1. Evitar la pérdida de datos.

Atención: Antes de continuar, copie el contenido de las tablasde empleados y de departamentos en las tablas temporalescorrespondientes.

a) Copie la tabla de empleados y la tabla de departamentos mediante SE11o SE80.

b) Copie el contenido de las tablas mediante un report ABAP (comandoABAP INSERT)

c) Además, modifique la definición de tipo para el campo de tabla deldepartamento en ambas tablas y use el tipo de datos CHAR 4 como tipointegrado. De este modo, las tablas temporales no se ven afectadas porlas modificaciones que se hagan en el dominio.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 399

Page 410: 119167629 taw10-02-es

Capítulo 11: Cambio de tablas TAW10_2

2. Modifique el dominio para los departamentos de longitud 4 a longitud 2y active el dominio.

a) Repita el mismo procedimiento del ejercicio anterior.

3. Active también los objetos dependientes (tablas).

a) Confirme la ventana de diálogo siguiente mediante el pulsadorSiguiente.

.

4. Visualice el log.

Nota: A pesar de que en el mensaje de activación sólo se indicanadvertencias, encontrará los mensajes de error resaltados en rojo enel log, y una instrucción que indica que se han convertido las tablas.

5. Convierta primero la tabla de departamentos mediante la transacción SE14.

a) Introduzca el nombre de la tabla en la pantalla inicial de las utilidadesde base de datos.

b) Seleccione Tratar.

c) Seleccione Activar y ajustar base de datos para iniciar el procesode conversión.

Nota: El proceso de conversión finaliza sin mensajes de error.A pesar de ello, preste atención al log y evalúe los mensajes.

6. Ahora convierta la tabla de empleados y verifique el contenido.

a) Introduzca el nombre de la tabla ((SE14)) en la pantalla inicial de lasutilidades de base de datos.

b) Seleccione Tratar.

c) Seleccione Activar y ajustar base de datos para iniciar el procesode conversión.

Atención: El proceso de conversión finaliza sin mensajesde error. A pesar de ello, preste atención al log y evalúe losmensajes.

7. Si fallara la conversión, pruebe a anularla de nuevo.

a) Probablemente haya una nota en el log de conversión que indique queexisten duplicados en la clave primaria.

ResultadoHable con el instructor de las posibilidades para restablecer el estado originalde los datos.

400 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 411: 119167629 taw10-02-es

TAW10_2 Lección: Modificaciones de tablas

Resumen de la lección

Ahora podrá:• Modificar tablas• Calcular la repercusión de estas modificaciones en la base de datos• Convertir tablas• Reanudar conversiones canceladas• Añadir campos de cliente a tablas estándar SAP por medio de estructuras

append sin modificaciones

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 401

Page 412: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Modificar tablas• Calcular la repercusión de estas modificaciones en la base de datos• Convertir tablas• Reanudar conversiones canceladas• Añadir campos de cliente a tablas estándar SAP por medio de estructuras

append sin modificaciones

402 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 413: 119167629 taw10-02-es

Capítulo 12357 Vistas y diálogos de actualización

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo conocerá la opción para definir vistas y vistas de actualizaciónen el sistema SAP.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Valorar cómo se crea una vista a partir de tablas mediante conexión,proyección y selección

• Crear vistas de base de datos• Parametrizar un vínculo entre claves externas y condiciones de conexión• Usar vistas en programas para seleccionar datos• Valorar cuándo se deben usar vistas de actualización• Reconocer la diferencia entre una conexión interna y otra externa• Crear una vista de actualización• Crear vistas de actualización simples• Crear vistas de actualización complejas

Contenido del capítuloLección: Vistas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .404

Ejercicio 17: Vistas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .419Lección: Vistas de actualización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .424

Ejercicio 18: Vistas de actualización... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .435

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 403

Page 414: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Lección:358

VistasDuración de la lección: 120 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Valorar cómo se crea una vista a partir de tablas mediante conexión,proyección y selección

• Crear vistas de base de datos• Parametrizar un vínculo entre claves externas y condiciones de conexión• Usar vistas en programas para seleccionar datos• Valorar cuándo se deben usar vistas de actualización• Reconocer la diferencia entre una conexión interna y otra externa

The participants learn how a view is built with relational operators, join, projectionand selection. The difference between inner and outer join is explained. Theparticipants can create a real database view in the ABAP Dictionary and learnwhat a view is used for. They know that you can enter data records that aredistributed on several tables with a maintenance view.

The participants learn what a view is used for. The structure of a view using therelational operators is explained with an example.

Ejemplo empresarialA fin de crear un código ABAP simplificado en sus aplicaciones, cree vistas comoresumen o como combinación de tablas.

404 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 415: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Vistas restringidas o ampliadas de las tablas de basede datos

Gráfico 182: ¿Por qué se necesitan vistas?

Explain the meaning of views. In the relational data model, data relating to anobject is often distributed to multiple tables. Because a logical view of the objectis often required, the data in these tables is “linked” back together using views.

A menudo los datos para un objeto de aplicación están distribuidos entre variastablas de base de datos. Por eso, los sistemas de base de datos ofrecen un modo dedefinir vistas específicas de la aplicación sobre los datos en varias tablas. Esto eslo que se conoce como vistas.

Los datos procedentes de varias tablas se pueden combinar mediante una vista(conexión) de forma lógica. También se puede ocultar información que no esrelevante en este caso (proyección) o visualizar sólo los registros de datos quecumplen determinadas condiciones (selección).

Los datos de una vista se pueden visualizar igual que los datos de una tabla en laactualización ampliada de tabla.

These slides explain step for step the procedure for creating a view with the helpof relational operators. The slides can be linked directly to the demo.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 405

Page 416: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Demo 12: Database Views

Create the view example shown on the slide. This demo links the formalconstruction of the view with the SE11 interface. Tables TABA and TABB arecalled ZBC430_TABA and ZBC430_TABB in the training system. Prior to thedemo, add data to the tables using report BC430_DEMO_FILL. Create the viewin the training example. After each step (tables and fields without join condition;join condition; projection; selection condition), show which data can be selectedwith the view.

Demo 13: Database Views

Idea

Create a view on all the relevant data for the cargo. You need the followinginformation:

Flight and cargo data (data from table ZCARGO)

City of departure and city of arrival (from table SPFLI)

Customer data (from table SCUSTOM)

Create a database view ZCARGO_INFO. ZCARGO, SPFLI and SCUSTOM areincluded in this view.

Note

You can copy the connection of ZCARGO to SPFLI and SCUSTOM from theexisting foreign keys. Enter the join condition directly for one of the links.

Join Conditions

• SPFLI-CLIENT = ZCARGO-CLIENT• SPFLI-CARRID = ZCARGO-CARRID• SPFLI-CONNID = ZCARGO-CONNID• SCUSTOM-CLIENT = ZCARGO-CLIENT• SCUSTOM-ID = ZCARGO-CUST_NO

Fields:

• ZCARGO: client, airline ID, connection, date of flight, cargo number, cargodescription, customer number

• SPFLI: city of departure, city of arrival• SCUSTOM: Customer contact person

406 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 417: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Display the view data to show the effect of the link. The view should only showflights with hazardous materials as cargo. You achieve this by setting the selectioncriterion Hazardous Materials to a number other than 0. Display the view dataagain.

Gráfico 183: Estructura de una vista: situación de partida

Explicaremos la estructura de una vista y la selección de los datos mediante dichavista con un ejemplo.

Supongamos que existen dos tablas: SCARR y SFLIGHT. La tabla SCARRcontiene dos entradas, y la tabla SFLIGHT contiene cuatro.

Primero las tablas se añaden entre sí. Como consecuencia, se obtiene un productomixto formado por ambas tablas en el que cada registro de la tabla SCARR secombina con un registro de la tabla SFLIGHT.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 407

Page 418: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Gráfico 184: Estructura de una vista: condición de conexión

Normalmente, no todo el producto mixto es una buena selección. Por ello, deberíalimitar el producto mixto mediante una condición de conexión. La condición deconexión describe la relación entre los registros de las dos tablas.

En nuestro ejemplo, el campo CARRID de SCARR se compara con el campoCARRID de SFLIGHT. La condición de conexión es:

SCARR-CARRID = SFLIGHT-CARRID

Con esta condición de conexión, todos los registros cuya entrada en el campo 1 nocoincida con la entrada en el campo 3 se eliminarán del producto mixto. Por lotanto, la columna del campo 3 no es necesaria en la vista.

408 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 419: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Gráfico 185: Estructura de una vista: selección de campo (proyección)

A menudo, algunos campos de las tablas incluidos en una vista no tienen interésalguno. Se puede definir explícitamente un conjunto de campos para incluirlo enla vista (proyección).

En nuestro ejemplo, el campo PLANETYPE no es relevante y, por lo tanto,se puede ocultar.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 409

Page 420: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Gráfico 186: Estructura de una vista: condición de selección

El conjunto de registros que se puede visualizar en la vista se puede limitar másmediante una condición de selección.

En nuestro ejemplo, sólo se deberían visualizar en la vista los registros que tenganel valor DL en el campo CARRID.

En consecuencia, se puede formular una condición de selección que consista enexcluir un campo de la vista.

Using this example, explain again the purpose of a view (view of all data relevantfor booking the flight). Explain that the join conditions generally come from theapplication logic and can be transferred directy from an existing foreign key.

410 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 421: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Gráfico 187: ¿Cómo se vinculan las tablas (tablas de Base) a las vistas?

Ejemplo: A veces las agencias de viajes tienen que verificar qué vuelos hareservado un cliente. Los datos correspondientes están distribuidos entre variastablas:

SCUSTOM: Los datos de cliente, como el número de cliente, el nombrey la dirección

SBOOK: Los datos de reservas, como la compañía aérea, el númerode vuelo y el pasajero (número de cliente)

SPFLI: Los datos del vuelo, como la población de salida y la dedestino

Cree una vista de las tablas SCUSTOM, SBOOK y SPFLI para obtener los datosde la reserva.

En este caso, las condiciones de conexión son:

• SBOOK-CLIENT = SCUSTOM-CLIENT• SBOOK-CUSTOMID = SCUSTOM-ID• SPFLI-CLIENT = SBOOK-CLIENT• SPFLI-CARRID = SBOOK-CARRID• SPFLI-CONNID = SBOOK-CONNID

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 411

Page 422: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Gráfico 188: Estructura de la vista

Puede obtener las reservas de un cliente concreto seleccionando los registroscorrespondientes de las claves CLIENT y CUSTOMID en la tabla SBOOK.

Puede obtener los datos de los vuelos de la tabla SPFLI para cada reserva en latabla SBOOK seleccionando el registro correspondiente para las claves CLIENT,CARRID y CONNID desde la tabla SPFLI.

Puede visualizar sólo las reservas del cliente que no se hayan cancelado mediantela vista con la condición de selección siguiente:

• SBOOK-CANCELED <> X

Las condiciones de conexión se pueden derivar también de las relacionesexistentes de claves externas. En la transacción de actualización se pueden copiarlas condiciones de conexión de claves externas existentes.

Los nombres de los campos de tabla subyacentes se suelen usar como nombresde campo en la vista. Sin embargo, también puede elegir un nombre de campodistinto. Esto es necesario, por ejemplo, si se deben copiar dos campos conel mismo nombre en la vista a partir de tablas distintas. En este caso, debeseleccionar un nombre distinto para uno de los dos campos en la vista.

412 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 423: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Gráfico 189: Selección de datos con vistas

Views are mainly needed when programming; nested SELECTS across severaltables can be prevented in this way. Views can also be used in data collectionsearch helps.

Explain how to obtain the same result as the example using an inner join in aprogram. This provides better performance than a nested select, but is not as goodas a SELECT using a database view.

También puede formular la condición de conexión directamente en OPEN SQL.

Obtendría el mismo resultado utilizando una conexión interna:

SELECT C~CARRID C~CARRNAME P~CONNID P~CITYFROM P~CITYTO

F~FLDATE F~SEATSMAX F~SEATSOCC

INTO TABLE ITAB_FLIGHTS

FROM ( SCARR AS C INNER JOIN SPFLI AS P

ON C~CARRID = P~CARRID )

INNER JOIN SFLIGHT AS F

ON F~CARRID = P~CARRID

AND F~CONNID = P~CONNID

WHERE CITYFROM IN SO_CITYF

AND CITYTO IN SO_CITYT

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 413

Page 424: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

AND SEATSOCC < F~SEATSMAX

ORDER BY C~CARRID P~CONNID F~FLDATE.

Una vista tiene el carácter de tipo y se puede acceder a ella en programas, comoes el caso de todos los demás tipos. Además, se puede usar para definir objetosde datos.

Gráfico 190: Conexión interna y externa

The slide refers to the example at the beginning of the unit. Explain that the dataselected with an inner join can be a real subset of the data selected with an outerjoin. The difference between the inner join and outer join will be used to explainthe help views as selection method in the unit Search Helps.

• Inner join (implemented with a database view), record for which there is asuitable entry in every table (join condition).

• Outer join (implemented with a maintenance view or help view)

At this point, participants often ask why SAP does not support a database viewwith an outer join. The reason is, the database systems used with SAP do not havea unified standard for views with outer joins.

El conjunto de datos que se puede seleccionar con una vista depende en granmedida de si en la vista se implementa una conexión interna o una conexiónexterna.

414 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 425: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Si la conexión es interna, sólo obtendrá los registros que tengan una entrada entodas las tablas incluidas en la vista. Si la conexión es externa, en cambio, seseleccionarán también los registros que no tengan una entrada correspondiente enalgunas de las tablas incluidas en la vista.

La lista de aciertos que se obtiene con una conexión interna puede ser, por lo tanto,un subconjunto de la lista de aciertos que se obtendría con una conexión externa.

En las vistas de base de datos se implementa una conexión interna. Sólo obtendrálos registros que tengan una entrada en todas las tablas incluidas en la vista.

En las vistas de actualización se implementa una conexión externa.

Gráfico 191: Vistas de base de datos

The topic explains the structure of a database view. Database views aredistinguished from the other view types. The definition of a database view iscreated in the database and the data is selected from the joined tables. There aretwo ways to create a database view:

• With relationships (foreign key relationships must be defined for the joinedtables)

• Manually (the join conditions are entered manually)

Append views are used for enhancements of database views of the SAP standard.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 415

Page 426: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

With an append view, fields of the base tables of the view can be included inthe view without modifications. This is analogous to enhancing a table with anappend structure.

Append views are a new type of view that can only be used to enhance new fieldsto existing database views. An append view is assigned to exactly one databaseview. More than one append view can be created for a database view.

When a database view is activated, the system looks for all the append views forthis view and their fields are appended to the database view. When an append viewis created or changed, the assigned database view is automatically adjusted to thischange when the append view is activated.

Mention that a database view is defined in the ABAP Dictionary and isautomatically created in the database when it is activated.

Mention that database views can be buffered. Database view buffering is thesame as table buffering. The buffered data becomes invalid as soon as data in oneof the base tables is changed.

Explain that including a table results in new fields being included automaticallyin the view. Individual fields can also be excluded.

Una vista de base de datos se define en el Dictionary ABAP y se creaautomáticamente en la base de datos durante la activación. Los accesos a una vistade base de datos se transfieren directamente a la base de datos desde la interfase debase de datos. El software de la base de datos selecciona los datos.

Si se modifica la definición 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 modificación.Puesto que una vista no contiene datos, este ajuste se realiza borrando la antiguadefinición de vista y creando la vista de nuevo en el Dictionary ABAP con sunueva definición.

El status de actualización define si la vista permite sólo leer o también escribir.Si se ha definido una vista de base de datos con más de una tabla, con esta vistasólo podrá leer.

Los datos que se leen con una vista de base de datos se pueden grabar en lamemoria intermedia. Los datos de vista se graban en la memoria intermedia igualque las tablas. Las opciones técnicas de una vista de base de datos controlan silos datos de la vista se pueden grabar en la memoria intermedia y cómo. Aquíse pueden usar las mismas parametrizaciones (formas de grabar en la memoriaintermedia) que para grabar tablas en la memoria intermedia. Los datos de vistagrabados en la memoria intermedia se anulan cuando se modifican los datos deuna de las tablas de Base de la vista.

416 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 427: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Demo 14: Includes in Database Views

This demo explains the include technique. Change the view from Demo 11 (ontables ZBC430_TABA and ZBC430_TABB). Delete all the fields and replacethem with: ZBC430_TABA * * ZBC430_TABB * - ZBC430_TABB FIELD3 -ZBC430_TABB FIELD 4 Explain what these lines mean. Display the data andshow that this definition is analogous to the old one.

Gráfico 192: Incorporación dinámica de campos de tabla en vistas de basede datos

Puede incluir tablas enteras en vistas de base de datos. En tal caso, todos loscampos de la tabla incluida pasan a ser campos de la vista (se pueden excluirexplícitamente determinados campos). Si se incluyen campos nuevos en la tablao se borran campos existentes, la vista se ajustará automáticamente según estamodificación. Por lo tanto, un campo nuevo o borrado se incluye en la vista o seborra de ella automáticamente.

Si se añade una estructura append a una tabla incluida en una vista, los camposañadidos con la estructura append se incluirán automáticamente en la vista.

Para incluir una tabla en una vista, introduzca el carácter “*” en el campo Campode vista en la actualización de vista, el nombre de la tabla que se debe incluir en elcampo Tabla, y el carácter “*” de nuevo en el campo Nombre de campo.

Si no desea insertar un campo de la tabla incluida en la vista, introduzca un “-” enel campo Campo de vista, el nombre de la tabla incluida en el campo Tabla y elnombre del campo que se debe excluir en el campo Nombre de campo.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 417

Page 428: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

A partir del release 4.6C, los campos de las tablas de Base de una vista de base dedatos se pueden incluir en la vista sin modificaciones mediante una vista append.Esto equivale a ampliar una tabla con una estructura append. Una vista append seasigna exactamente a una vista de base de datos. Se puede crear más de una vistaappend para una vista de base de datos.

418 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 429: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

369 Ejercicio 17: VistasDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear vistas• Definir condiciones de conexión• Grabar vistas de base de datos en la memoria intermedia

Ejemplo empresarialLos datos existentes para un empleado están distribuidos entre varias tablas(de acuerdo con el modelo de datos relacionales). Para algunos ejercicios, sinembargo, se necesita una vista completa de estos datos. En este ejercicio, las vistascorrespondientes se implementan mediante la creación de vistas.

El personal de vuelo (todos los pilotos y los auxiliares) se deben seleccionarcuando se parametriza la tripulación de un vuelo. No todos los datos en la tablaZEMPLOY## 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 dela tripulación. El número de teléfono del departamento del empleado deberíamostrarse por si hubiera preguntas.

Tarea:1. Cree una vista de base de datos adecuada llamada ZEMPFLY## que cumpla

los requisitos. Se debería visualizar la información siguiente sobre unempleado:

Mandante

Cía. aérea

Nº personal

Nombre de pila

Apellido

Número de teléfono del departamento

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 419

Page 430: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Código de departamento

Nota: La vista debería permitir ver los datos en las tablasZEMPLOY## y ZDEPMENT##. En la vista se deberían visualizardatos de los empleados (de la tabla ZEMPLOY##) y de losdepartamentos (de la tabla ZDEPMENT##).

2. Transfiera los campos de las tablas a la vista.

3. Asegúrese de que sólo se pueda seleccionar el personal de vuelo con la vista.Defina esta restricción mediante una condición de selección.

Probablemente tendrá que acceder (con frecuencia) a los datos medianteesta vista. Por ello, los datos seleccionados se deberían grabar en lamemoria intermedia a fin de aumentar el rendimiento. Seleccione Grabarcompletamente en memoria intermedia como forma de grabación.

4. Grabe la vista en la memoria intermedia.

420 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 431: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Solución 17: VistasTarea:1. Cree una vista de base de datos adecuada llamada ZEMPFLY## que cumpla

los requisitos. Se debería visualizar la información siguiente sobre unempleado:

Mandante

Cía. aérea

Nº personal

Nombre de pila

Apellido

Número de teléfono del departamento

Código de departamento

Nota: La vista debería permitir ver los datos en las tablasZEMPLOY## y ZDEPMENT##. En la vista se deberían visualizardatos de los empleados (de la tabla ZEMPLOY##) y de losdepartamentos (de la tabla ZDEPMENT##).

a) En la pantalla inicial del Dictionary ABAP, marque el tipo de objetoVista, introduzca el nombre de objeto ZEMPFLY## y seleccione Crear.

b) Se visualizará una ventana de diálogo en la que se debe seleccionar eltipo de vista. Marque Vista de base de datos y seleccione Seleccionar.

c) Introduzca un texto breve en la pantalla siguiente.

d) Primero introduzca la tabla ZEMPLOY## en el campo Tablas.

e) Seleccione Relaciones. Se detallan en una lista todas las relaciones declaves externas entre la tabla ZEMPLOY## y otras tablas. Marque larelación con la tabla ZDEPMENT## y seleccione Copiar.

Las condiciones de conexión se copian de la clave externa.

f) En un modo distinto, visualice la clave externa entre las dos tablas yfíjese en la relación entre la clave externa y las condiciones de conexión.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 421

Page 432: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

2. Transfiera los campos de las tablas a la vista.

a) Marque Campos de vista.

b) Seleccione Campos de tabla. En la siguiente ventana de diálogo,marque la tabla ZEMPLOY## y elija Seleccionar.

c) Se mostrarán todos los campos de la tabla ZEMPLOY## en una lista.Marque los campos Mandante, Cía. aérea, Nº personal, Nombre yApellido. Seleccione Copiar. Los campos se insertan en la vista.

d) Vuelva a seleccionar Campos de tabla. En la ventana de diálogo,seleccione la tabla ZDEPMENT## e inserte los campos Teléfono dedepartamento y Código de departamento en la vista como se hadescrito anteriormente.

e) Seleccione Condiciones de selección.

3. Asegúrese de que sólo se pueda seleccionar el personal de vuelo con la vista.Defina esta restricción mediante una condición de selección.

Probablemente tendrá que acceder (con frecuencia) a los datos medianteesta vista. Por ello, los datos seleccionados se deberían grabar en lamemoria intermedia a fin de aumentar el rendimiento. Seleccione Grabarcompletamente en memoria intermedia como forma de grabación.

a) La restricción sobre si un empleado pertenece al personal de unvuelo o no se encuentra en el campo Área en la tabla ZEMPLOY##.Introdúzcalo en las columnas Tabla y Nombre de campo.

b) El personal de vuelo se identifica con el valor F en el campo Área.En consecuencia, introduzca EQ en la columna Operario y ’F’ en lacolumna Valor compar. (comillas incluidas).

4. Grabe la vista en la memoria intermedia.

a) Seleccione Pasar a → Opciones técnicas. Se muestra la pantalla deactualización de las opciones técnicas de la vista. A excepción dealgunos atributos que son irrelevantes para las vistas y que, por lo tanto,no se visualizan, la pantalla es igual a la pantalla de actualización detablas correspondiente.

b) Marque Grabar en memoria intermedia activado y Grabarcompletamente en memoria intermedia.

c) Grabe las opciones técnicas y vuelva a la pantalla de actualizaciónde la vista.

d) Active la vista.

422 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 433: 119167629 taw10-02-es

TAW10_2 Lección: Vistas

Resumen de la lección

Ahora podrá:• Valorar cómo se crea una vista a partir de tablas mediante conexión,

proyección y selección• Crear vistas de base de datos• Parametrizar un vínculo entre claves externas y condiciones de conexión• Usar vistas en programas para seleccionar datos• Valorar cuándo se deben usar vistas de actualización• Reconocer la diferencia entre una conexión interna y otra externa

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 423

Page 434: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Lección:374

Vistas de actualizaciónDuración de la lección: 100 Minutos

Resumen de la lecciónEn esta lección se familiarizará con la posibilidad de generar vistas deactualización para tablas de Customizing o de cliente.

Objetivos de la lecciónAl finalizar esta lección podrá:

• Crear una vista de actualización• Crear vistas de actualización simples• Crear vistas de actualización complejas

This lesson focuses on the transactions SE54, SM30 and SM34. You should beable to move confidently in all three transactions and know their possibilities.

Ejemplo empresarialDebe crear vistas simples para las nuevas tablas de BD con el fin de generar datosde test rápidamente en su proyecto.

424 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 435: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Creación de vistas de actualización

Gráfico 193: Recopilación de datos mediante las máscaras de actualizacióngeneradas

Demo 15: Maintenance Views

Create a maintenance view on SBUSPART and STRAVELAG. Generate themaintenance interface using SE54 and then use SM30 to enter travel agency datafor the maintenance view. Show that the data entered has been transferred to bothtables. This demo is optional and can be omitted.

Los datos distribuidos entre más de una tabla, a menudo, forman una unidadlógica llamada objeto de aplicación para el usuario. Debería poder visualizar,modificar y crear los datos de este tipo de objeto de aplicación. Normalmente alusuario no le interesa la implementación técnica del proyecto de aplicación, comola distribución de los datos entre varias tablas.

Puede actualizar objetos de aplicación complejos de forma sencilla mediante unavista de actualización. Los datos se distribuyen automáticamente en las tablasde base de datos subyacentes.

Todas las tablas que se utilizan en una vista de actualización se deben vinculara una clave externa. Esto significa que las condiciones de conexión se derivansiempre de la clave externa en la vista de actualización. No se pueden introducirlas condiciones de conexión directamente como en la vista de base de datos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 425

Page 436: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Se debe generar una interfase de actualización en la que se puedan visualizar,modificar y crear los datos de la vista a partir de la definición de una vista deactualización en el Dictionary ABAP.

Una vez creada la interfase de actualización, los módulos de funciones quedistribuyen los datos actualizados con la vista en las tablas subyacentes se generanautomáticamente.

La interfase de actualización se genera con la transacción Generar vista de tabla(transacción SE54) o a partir de la pantalla de actualización de vista, medianteUtilidades → Generador actual.tab..

Gráfico 194: Vista de actualización desde una vista de actualización

En una vista de actualización en un paso, los datos de las líneas de la tabla serepresentan como TableControl. Los campos clave tienen el fondo gris y noson modificables. Los campos de funciones tienen el fondo blanco y se puedenmodificar.

Si ha creado una vista de actualización en dos pasos, se puede abrir otra ventanahaciendo doble clic en una línea de tabla en la que los registros de datosseleccionados se presenten de forma clara.

426 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 437: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Gráfico 195: Definición de una vista de actualización 1

Cuando se crea una vista de actualización, se debe tener en cuenta lo siguiente:

En las vistas, marque la vista de actualización como tipo de vista.Todos los campos clave de la tabla primaria deben estar incluidos en ladefinición de la vista.El campo de mandante debe estar incluido en el caso de las tablas/vistasdependientes del mandante. Sin embargo, este campo no aparece aún en lavista de actualización.En el caso de las tablas secundarias de texto, el idioma no se puede copiar,ya que el idioma de inicio de sesión se introduce automáticamente durantela actualización.Los campos clave se deben definir antes que los campos de funciones.Los campos de funciones y los campos clave no se pueden mezclar.

Mediante la opción de status de actualización se puede definir el status deactualización de toda la tabla/vista. Cuenta con las posibilidades siguientes:

sólo lecturalectura, modificación, borrado e inserción (parametrización estándar)lectura y modificaciónlectura y modificación (vistas temporales)

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 427

Page 438: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Gráfico 196: Definición de una vista de actualización 2

Introduzca un texto breve explicativo en el campo de descripción breve. Conel sistema info, por ejemplo, podrá buscar más adelante la vista mediante estetexto breve.

Copia de tablas

Especifique la tabla primaria de la vista en la etiqueta Tablas/Condiciones deconexión en Tablas. Sólo se pueden incluir en la vista de actualización las vistasconectadas a la tabla primaria (indirectamente) por medio de la clave externa.

En caso necesario, incluya otras tablas en la vista. Sólo podrá incluir tablas en unavista de actualización si están conectadas entre sí por medio de claves externas.Sitúe el cursor en la tabla primaria y seleccione Relaciones. Se visualizarán todaslas relaciones de claves externas de la tabla primaria. Marque la clave externa quedesee y seleccione Copiar. La tabla secundaria relacionada con la clave externa secopiará en la vista. Se visualizan las condiciones de conexión (relación de claveexterna y condición de conexión) derivadas de las claves externas.

También puede incluir tablas conectadas entre sí a una de las tablas secundariascopiadas anteriormente mediante una clave externa. Sitúe el cursor en la tablasecundaria y active Relaciones. Proceda como se ha descrito anteriormente.

Las relaciones de claves externas para las que no sea adecuada una vista deactualización se visualizarán al final de la lista, bajo el título Relaciones concardinalidad inadecuada.

Copia de los campos de vista

428 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 439: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

En la etiqueta Campo de vista, marque los campos que desee copiar en la vista.

Active Campos de tabla. Todas las tablas contenidas en la vista se visualizaránen una ventana de diálogo. Marque una tabla. Ahora los campos de la tabla sevisualizan en una ventana de diálogo. Puede eliminar campos resaltándolos en laprimera columna y seleccionando Copiar.

Todos los campos clave de la tabla primaria deben estar incluidos en una vistade actualización. Además, todos los campos clave de tablas secundarias norelacionadas con la clave externa (es decir, que no estén conectadas con un campoclave ya incluido en la vista por medio de una condición de conexión) se debenincluir en esta vista.

De este modo se garantiza que los registros insertados mediante la vista deactualización se puedan registrar correctamente en las tablas incluidas en la vista.

Condiciones de selección

En la etiqueta Condiciones de selección, formule restricciones (opcionales) a losregistros de datos que se puedan visualizar mediante la vista (véase Actualizaciónde una condición de selección de la vista). Las condiciones de selección definenqué registros de datos se pueden seleccionar mediante la vista.

Status de actualización

En la etiqueta Status de actualización se define el status de actualización de lavista. El status de actualización determina el modo de acceso a los datos de la vistaa través de la actualización de vista estándar (SM30).

Activación

Durante la activación se registra un log que se puede visualizar mediante Utilidades-> Log de activación. Si se han producido errores o advertencias durante laactivación de la vista, se visualizará automáticamente el log de activación.

Genere interfases de actualización.

Mediante Entorno -> Generador actual.tab., vaya a la transacción SE54. Allípuede generar módulos de actualización e interfases de actualización a partir de ladefinición de vista para copiar la distribución de los datos introducidos mediantela vista a las tablas de Base de la vista.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 429

Page 440: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Gráfico 197: Definición de una vista de actualización

Al entorno de generación de vistas de actualización se llega del modo siguiente:

• Desde SE11 se pasa a la vista de Tablas/Vistas mediante el menú Utilidades-> Generador actual.tab.

• Mediante la transacción SE54:

1. Seleccione Desarrollo -> Otras herramientas -> Vista actual.tabla.Ahora se encuentra en la pantalla inicial de la transacción deactualización.

2. Introduzca el nombre de la tabla o de la vista.3. Marque Objetos generados4. Seleccione Crear/Modificar.5. A continuación, confirme en la ventana que se deben crear los módulos

de actualización.

En la definición de la vista de actualización, especifique los parámetros siguientes:

Grupo de funcionesAquí se define el grupo de funciones en el que se generan los componentesde la vista de actualización de vista individual/tablas. En caso necesario, sevuelve a crear el grupo de funciones.

430 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 441: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Grupo de autorizacionesAquí se especifica qué usuarios tienen autorización para actualizar elcontenido de la vista/las tablas.

Clase de actualizaciónAquí se define si la ventana de diálogo se debería integrar en un paso odos. Las ventanas de diálogo de un paso consisten sólo en una pantalla deresumen que contiene todos los campos. En las ventanas de diálogo de dospasos, sólo se visualizan en la pantalla de resumen los campos clave y detexto que tengan una longitud de más de 20 caracteres. Todos los camposse ofrecen en la pantalla detallada.

Pantallas de actualizaciónAquí se especifica el número interno de cada pantalla de actualización.Puede proponer valores posibles mediante una función de búsqueda.

Rutina de grabaciónAquí se especifica si el contenido de la vista/tablas actualizado en la ventanade diálogo se pueden incluir en un transporte, y cómo.

Una vez introducidos todos los valores, se inicia la generación de la vista deactualización. Si el proceso se ejecuta sin errores, la ventana de diálogo se puedeusar de inmediato para actualizar el contenido de la vista/las tablas. Para ello, iniciela transacción SM30 e introduzca la tabla o la vista en el campo Tabla/Vista parael que haya generado la vista de actualización. Active el pulsador Actualización.

Gráfico 198: Ventajas e inconvenientes de una vista de actualización

La vista de actualización no se debería usar para actualizar datos durante elfuncionamiento estándar, ya que podrían obtenerse datos inconsistentes.

Se ha previsto principalmente para introducir volúmenes intermedios de datos entablas de cliente o de Customizing sin riesgo de solapamiento de datos.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 431

Page 442: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Las tablas secundarias deben guardar una relación de dependencia N:1 conrespecto a las tablas primarias o las tablas secundarias previas transitivamente(véase más arriba).

Gráfico 199: Clusters de vistas y vistas de actualización

Si ha generado vistas de actualización para tablas/vistas, puede combinarlas en uncluster de vistas.

Por cluster de vistas se entiende un grupo de vistas de actualización que se hancombinado en una unidad de actualización por motivos técnicos o empresariales.

Los clusters de vistas ofrecen la opción de actualizar datos interrelacionados desdeel punto de vista del contenido y que van más allá de una tabla/vista.

Mientras que en las vistas de actualización sólo se pueden procesar relaciones 1:1(a excepción de los textos dependientes del idioma), en los clusters de vistas sepueden asignar también ampliaciones de clave y relaciones de cardinalidad N:M.Además, las vistas de actualización se pueden combinar en un cluster de vistas sindependencia clave ni subclave.

La navegación dentro de un cluster de vistas suele estar orientada a la jerarquíade las tablas/vistas subyacentes a las vistas individuales. Las relacionesmaestro-detalles, incluso entre varios niveles, son especialmente adecuadas paraun cluster de vistas.

432 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 443: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Normalmente, un cluster de vistas está formado por una o varias vistas raíz, yun máximo de 14 vistas de actualización que dependen de ellas. Estas vistas deactualización pueden ser de un paso o dos.

En primer lugar, debe generar mediante SE54 una vista de actualización paracada tabla/vista implicada, a fin de combinarlas luego mediante SE54 en uncluster de vistas.

Luego se actualizan los datos con la transacción SM34 y especificando el nombredel cluster.

Gráfico 200: Ventajas

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 433

Page 444: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

434 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 445: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

385 Ejercicio 18: Vistas de actualizaciónDuración del ejercicio: 60 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear vistas de actualización simples y complejas.

Ejemplo empresarialCree vistas simples de tablas de base de datos con el fin de generar datos de testrápidamente en su proyecto.

Tarea 1:Cree una vista de actualización llamada ZPARTNER## para poder actualizarfácilmente los nuevos interlocutores comerciales.

Nota: Los interlocutores comerciales se introducen en la tablaSBUSPART. Un interlocutor comercial puede ser un cliente particular ouna agencia de viajes. Si se trata de una agencia de viajes, existirá unaentrada correspondiente en la tabla STRAVELAG.

La vista debería permitirle actualizar las tablas SBUSPART ySTRAVELAG simultáneamente. Incluya todos los campos necesarios delas tablas en la vista.

Desea actualizar juntos los datos de las tablas SBUSPART y STRAVELAGen la vista de actualización. Si desea introducir un nuevo interlocutordirectamente, introdúzcalo primero en la tabla SBUSPART. Sólo asípodrá introducir los datos correspondientes en la tabla STRAVELAG(debido a la verificación existente de clave externa entre SBUSPART ySTRAVELAG).

1. Genere la interfase de actualización. Utilice los parámetros siguientes:

Grupo de funciones ZZBC430##

Grupo de autorizaciones SUNI

Clase de actualización De un paso

Pantalla de resumen 100

2. Incluya los campos de ambas tablas en la vista.

3. Genere una interfase de actualización para la vista.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 435

Page 446: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

4. Luego actualice los datos de una nueva agencia de viajes mediante laactualización de tabla ampliada. Seleccione Sistema → Servicios →Actualización de tabla → Actual.tab.ampliada.

Tarea 2:Vista de actualización de agrupaciones en un cluster de vistas.

Nota: Desea que varias vistas de actualización de tablas dependientes semuestren en una misma pantalla de transacción. Para ello, cree una vistade actualización compleja con varias tablas de cliente. En este ejerciciouse de nuevo la tabla del modelo de datos de vuelo. Copie estas tablas contodo su contenido en el área para nombres de cliente.

1. Primero copie todas las tablas SCARR, SPFLI y SFLIGHT en el área paranombres de cliente con el número de supervisión añadido (ZCARR##,ZPFLI## y ZFLIGHT##). Actualice las claves externas correctamente enlas nuevas tablas.

2. Copie el contenido de las tablas originales en las tablas recién creadasmediante un report.

3. Cree una vista de actualización de dos pasos (números de pantalla, p. ej.100 y 110) para cada tabla copiada.

4. Cree un cluster de vistas llamado ZPC_FLIGHT##.

5. Introduzca una descripción breve lógica en la entrada de cabecera.

6. Modifique la estructura del objeto e introduzca las nuevas entradas siguientes:

Vista/Tab. Descripción breve Predece-sor

Dep Pos

ZCARR## Cías. aéreas ZCARR## R 1

ZPFLI## Conexiones de vuelo ZCARR## S 2

ZFLIGHT## Vuelos de la conexión ZPFLI## S 3

7. Genere las dependencias entre campos para cada entrada de la lista.

8. Active el cluster de vistas.

9. Genere una nueva entrada para una compañía aérea y cree dos vuelos paracada una de estas dos nuevas conexiones de vuelo. Dé salida a las nuevasentradas en un report en forma de lista.

436 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 447: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Solución 18: Vistas de actualizaciónTarea 1:Cree una vista de actualización llamada ZPARTNER## para poder actualizarfácilmente los nuevos interlocutores comerciales.

Nota: Los interlocutores comerciales se introducen en la tablaSBUSPART. Un interlocutor comercial puede ser un cliente particular ouna agencia de viajes. Si se trata de una agencia de viajes, existirá unaentrada correspondiente en la tabla STRAVELAG.

La vista debería permitirle actualizar las tablas SBUSPART ySTRAVELAG simultáneamente. Incluya todos los campos necesarios delas tablas en la vista.

Desea actualizar juntos los datos de las tablas SBUSPART y STRAVELAGen la vista de actualización. Si desea introducir un nuevo interlocutordirectamente, introdúzcalo primero en la tabla SBUSPART. Sólo asípodrá introducir los datos correspondientes en la tabla STRAVELAG(debido a la verificación existente de clave externa entre SBUSPART ySTRAVELAG).

1. Genere la interfase de actualización. Utilice los parámetros siguientes:

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 437

Page 448: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

Grupo de funciones ZZBC430##

Grupo de autorizaciones SUNI

Clase de actualización De un paso

Pantalla de resumen 100

a) Marque el tipo de objeto Vista en la pantalla inicial del DictionaryABAP. Introduzca el nombre de objeto ZPARTNER## y seleccioneCrear.

b) Marque el tipo de vista en la ventana de diálogo. Marque Vista deactualización y marque Seleccionar.

c) Introduzca un texto breve en la pantalla siguiente. Cuando se definela vista de actualización, en primer lugar se debe copiar la tablaSBUSPART.

d) Introduzca la tabla SBUSPART en el campo Tablas. Los campos clavede esta tabla se incluyen automáticamente en la vista como campos.

e) Sitúe el cursor en el campo Tablas, en la entrada SBUSPART.Seleccione Relaciones.

Aparece una ventana de diálogo en la que se muestra una lista de todaslas relaciones de claves externas existentes entre la tabla SBUSPART yotras tablas.

f) En la ventana de diálogo, marque la relación de clave externa para latabla STRAVELAG y seleccione Copiar.

g) Las condiciones de conexión se crean a partir de la clave externa. Lascondiciones de conexión tienen la forma siguiente:

SBUSPART-MANDANT = STRAVELAG-CLIENTSBUSPART-BUSPARTNUM = STRAVELAG-AGENCYNUM

2. Incluya los campos de ambas tablas en la vista.

a) Haga clic en la etiqueta Campos de vista. Sitúe el cursor en la tablaSBUSPART y seleccione Campos de tabla. Aparece una lista de todoslos campos en la tabla. Seleccione Marcar todo y luego Copiar.

b) Incluya todos los campos de la tabla STRAVELAG salvo los camposCLIENT y AGENCYNUM en la vista del mismo modo. Estos camposestán vinculados a los campos correspondientes de la tabla SBUSPARTmediante las condiciones de conexión, y por lo tanto no deberíanaparecer en la vista.

c) Active la vista.

Continúa en la página siguiente

438 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 449: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

3. Genere una interfase de actualización para la vista.

a) Seleccione Utilidades → Generador actual.tab.

b) Introduzca el grupo de autorizaciones SUNI y el grupo de funcionesZZBC430## en la ventana siguiente.

c) Marque la clase de actualización De un paso. Marque el número 0100como número de la pantalla de actualización de la pantalla de resumen.

d) Seleccione Crear. La clase de desarrollo del grupo de funciones y losobjetos de actualización generados se proponen en un prompt. Enambos casos, seleccione Objeto local.

4. Luego actualice los datos de una nueva agencia de viajes mediante laactualización de tabla ampliada. Seleccione Sistema → Servicios →Actualización de tabla → Actual.tab.ampliada.

a) Introduzca los datos de una nueva agencia de viajes.

b) Con el browser de datos (en el entorno de menús de la pantalla inicialdel Dictionary ABAP), verifique si los datos de la nueva agencia deviajes se han registrado en las tablas SBUSPART y STRAVELAG.

Tarea 2:Vista de actualización de agrupaciones en un cluster de vistas.

Nota: Desea que varias vistas de actualización de tablas dependientes semuestren en una misma pantalla de transacción. Para ello, cree una vistade actualización compleja con varias tablas de cliente. En este ejerciciouse de nuevo la tabla del modelo de datos de vuelo. Copie estas tablas contodo su contenido en el área para nombres de cliente.

1. Primero copie todas las tablas SCARR, SPFLI y SFLIGHT en el área paranombres de cliente con el número de supervisión añadido (ZCARR##,ZPFLI## y ZFLIGHT##). Actualice las claves externas correctamente enlas nuevas tablas.

a) Copie y active las tablas mediante SE11. Ajuste las relaciones de clavesexternas ZPFLI## (CARRID -> ZCARR##) y ZFLIGHT## (CARRID-> ZCARR##, CONNID -> ZPFLI##).

2. Copie el contenido de las tablas originales en las tablas recién creadasmediante un report.

a) Véase el texto fuente de la solución modelo. También puede buscar elreport correspondiente y copiarlo en el sistema.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 439

Page 450: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

3. Cree una vista de actualización de dos pasos (números de pantalla, p. ej.100 y 110) para cada tabla copiada.

a) Cuenta con dos posibilidades de acceder a la pantalla adecuada de latransacción SE54:

1. En SE11, vaya a la tabla correspondiente mediante el accesovía menús Utilidades -> Generador actual.tab. en el entornode generación.

2. Inicie la transacción SE54 e introduzca la tabla correspondiente.

Marque Objeto generado y accione el pulsador Crear/Modificar.

b) En la pantalla siguiente, introduzca el grupo de autorizaciones SUNIy, como grupo de funciones, los nombres de tabla correspondientescon el prefijo ZFP_.

c) Marque la clase de actualización De dos pasos. Marque los números0100 y 0110 como números de la pantalla de actualización de lapantalla de resumen y de la pantalla individual.

d) Seleccione Crear. La clase de desarrollo del grupo de funciones y losobjetos de actualización generados se proponen en un prompt. Enambos casos, seleccione Objeto local.

e) Proceda del mismo modo que con todas las tablas copiadas.

4. Cree un cluster de vistas llamado ZPC_FLIGHT##.

a) Inicie la transacción SE54. En la pantalla inicial, seleccione Tratarcluster de vistas para acceder a la pantalla para editar/crear un clusterde vistas.

b) Introduzca el nombre del cluster en el campo Cluster de vistas.

c) Accione el pulsador Crear/Modificar.

d) Ignore el mensaje “ No modificar (datos de SAP) ”. Mientraspermanezca en el área para nombres de cliente (Z* o Y*), este mensajees irrelevante. Para más información, véase la nota SAP 671067.

5. Introduzca una descripción breve lógica en la entrada de cabecera.

6. Modifique la estructura del objeto e introduzca las nuevas entradas siguientes:

Continúa en la página siguiente

440 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 451: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Vista/Tab. Descripción breve Predece-sor

Dep Pos

ZCARR## Cías. aéreas ZCARR## R 1

ZPFLI## Conexiones de vuelo ZCARR## S 2

ZFLIGHT## Vuelos de la conexión ZPFLI## S 3

a) En la ventana de navegación haga doble clic en Estructura de diálogo,en el nodo Estructura de objeto.

b) Accione el pulsador Nuevas entradas.

c) Introduzca los valores correspondientes en la tabla.

d) Marque la tabla ZCARR## como objeto inicial en la columna START.

7. Genere las dependencias entre campos para cada entrada de la lista.

a) Marque cada línea de la estructura de objetos y genere las dependenciasentre campos correspondientes mediante el pulsador Dependenciaentre campos.

8. Active el cluster de vistas.

a) Haga doble clic en la ventana de diálogo de la entrada de cabecera yaccione el pulsador Activar.

9. Genere una nueva entrada para una compañía aérea y cree dos vuelos paracada una de estas dos nuevas conexiones de vuelo. Dé salida a las nuevasentradas en un report en forma de lista.

a) Llame la transacción SM34.

b) Introduzca el nombre de su cluster de vistas en el campo de entraday active el pulsador Actualizar.

c) Importe las nuevas entradas, empezando por ZCARR.

Nota: Puede desplazarse por ellas en el lado izquierdo de lapantalla e introducir o modificar los datos en el lado derecho.

d) Los datos se registran en la base de datos mediante el pulsador Grabar.

e) Registre un report con SE38 o SE80 en ABAP que dé salida a lasentradas de la nueva compañía aérea.

ResultadoREPORT SAPBC430S_FILL_CLUSTER_TAB .

DATA wa_scarr TYPE scarr.

DATA wa_spfli TYPE spfli.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 441

Page 452: 119167629 taw10-02-es

Capítulo 12: Vistas y diálogos de actualización TAW10_2

DATA wa_flight TYPE sflight.

DATA my_error TYPE i VALUE 0.

START-OF-SELECTION.

* Replace ## by Your user-number

DELETE FROM zcarr##.

DELETE FROM zpfli##.

DELETE FROM zflight##.

SELECT * FROM scarr INTO wa_scarr.

INSERT INTO zcarr## VALUES wa_scarr.

ENDSELECT.

IF sy-subrc = 0.

SELECT * FROM spfli INTO wa_spfli.

INSERT INTO zpfli## VALUES wa_spfli.

ENDSELECT.

IF sy-subrc = 0.

SELECT * FROM sflight INTO wa_flight.

INSERT INTO zflight## VALUES wa_flight.

ENDSELECT.

IF sy-subrc <> 0.

my_error = 1.

ENDIF.

ELSE.

my_error = 2.

ENDIF.

ELSE.

my_error = 3.

ENDIF.

IF my_error = 0.

WRITE / 'Datatransport successfully finished'.

ELSE.

WRITE: / 'ERROR:', my_error.

ENDIF.

442 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 453: 119167629 taw10-02-es

TAW10_2 Lección: Vistas de actualización

Resumen de la lección

Ahora podrá:• Crear una vista de actualización• Crear vistas de actualización simples• Crear vistas de actualización complejas

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 443

Page 454: 119167629 taw10-02-es

Resumen del capítulo TAW10_2

Resumen del capítuloAhora podrá:• Valorar cómo se crea una vista a partir de tablas mediante conexión,

proyección y selección• Crear vistas de base de datos• Parametrizar un vínculo entre claves externas y condiciones de conexión• Usar vistas en programas para seleccionar datos• Valorar cuándo se deben usar vistas de actualización• Reconocer la diferencia entre una conexión interna y otra externa• Crear una vista de actualización• Crear vistas de actualización simples• Crear vistas de actualización complejas

444 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 455: 119167629 taw10-02-es

Capítulo 13395 Ayuda para búsqueda

See introductory instructor’s note in the lesson.

Resumen del capítuloEn este capítulo aprenderá a definir y usar personalmente Ayudas para búsquedade SAP.

Objetivos del capítuloAl finalizar este capítulo podrá:

• Definir un proceso de ayuda para la entrada mediante una Ayuda para entrada• Definir una Ayuda para búsqueda con varias trayectorias de búsqueda

alternativas• Usar los distintos mecanismos para la conexión a Ayuda para búsqueda con

el fin de asignar una Ayuda para búsqueda a un campo de dynpro• Determinar si un campo de dynpro tiene Ayuda para entrada y en qué forma• Ampliar una Ayuda para búsqueda compuesta mediante una Ayuda para

búsqueda append sin modificaciones• Programar un exit de Ayuda para búsqueda

Contenido del capítuloLección: Ayudas para búsqueda... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .446

Ejercicio 19: Ayudas para búsqueda ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .471

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 445

Page 456: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Lección:396

Ayudas para búsquedaDuración de la lección: 120 Minutos

Resumen de la lección

Objetivos de la lecciónAl finalizar esta lección podrá:

• Definir un proceso de ayuda para la entrada mediante una Ayuda para entrada• Definir una Ayuda para búsqueda con varias trayectorias de búsqueda

alternativas• Usar los distintos mecanismos para la conexión a Ayuda para búsqueda con

el fin de asignar una Ayuda para búsqueda a un campo de dynpro• Determinar si un campo de dynpro tiene Ayuda para entrada y en qué forma• Ampliar una Ayuda para búsqueda compuesta mediante una Ayuda para

búsqueda append sin modificaciones• Programar un exit de Ayuda para búsqueda

The participants learn how to define a suitable input help for a given screen field.You will take into consideration the different options and compare them. Youwill define what mechanisms are effective for the input help for a given field.The participants learn to assign several search paths to a field and to removeindividual search helps from SAP composite search helps without triggering asoftware modification.

Ejemplo empresarialDesea poner a disposición de los usuarios de su empresa Ayudas para entradasencillas en las ventanas de diálogo.

Ayudas para entradas

The participants know the standard F4 function. They realize that the ABAPWorkbench mechanisms for defining an input help must be available andunderstand that the definition of an input help can be divided into severalcomponents. ABAP Dictionary Object Search help describes these parts.

446 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 457: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Gráfico 201: Función estándar de SAP: Ayuda para entradas

La Ayuda para entradas (F4) es una función estándar del sistema SAP que permiteal usuario visualizar una lista con los valores posibles para un campo de dynpro.En los campos listos para la entrada puede introducirse un valor directamenteseleccionándolo en la lista.

Los campos con Ayuda para entradas se señalan en el sistema SAP con la clavede Ayuda para entradas a la derecha del campo. Esta clave aparece en cuanto sesitúa el cursor en el campo de dynpro correspondiente. La ayuda se puede iniciarseleccionando este elemento de pantalla o mediante la tecla de función F4.

Si el número de entradas posibles en un campo es muy grande, se puede limitar elconjunto de valores visualizados mediante restricciones.

La visualización de las entradas posibles se complementa con otra informaciónútil sobre los valores visualizados. Esta característica resulta especialmente útilsi se debe introducir en el campo una clave formal.

Puesto que la Ayuda para entradas es una función estándar, debe representarse ycomportarse del mismo modo en todo el sistema SAP. Por este motivo, el entornode desarrollo ofrece herramientas para asignar a los campos de dynpro una Ayudapara entradas estandarizada.

La descripción precisa de la Ayuda para entradas de un campo se suele definirsemánticamente. Por ello, la Ayuda para entradas de un campo se suele definiren el Dictionary ABAP.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 447

Page 458: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Gráfico 202: Requisitos de Ayuda para entradas

Explain that the F4 help improves the usability of the SAP system. The F4 helpmust behave the same throughout the entire SAP system, although you alsohave to take the differences between the individual fields into consideration (forexample, displaying a few values or selecting from mass data).

The ABAP Workbench supports the developer in defining standardized butcontext-specific input help. Although the input help is an attribute of a screenfield, its definition should be derived from that in the Dictionary. At this point,refer to the advantages of reusable input helps.

Explain the individual components of the definition of an input help using theabove graphic. These components will be discussed in detail at a later time.

The term input help refers to the general method in the SAP system. The SearchHelp Object in the ABAP Dictionary is a way to implement this method.

448 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 459: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

La Ayuda para entradas de un campo de dynpro (campo de búsqueda) debecumplir varios requisitos:

• Se debe tener en cuenta la información (contextual) conocida por el sistemaen la Ayuda para entradas. Esto incluye entradas que el usuario haya hechoya en la máscara de entrada actual e información obtenida en las ventanasde diálogo anteriores. Normalmente, la Ayuda para entradas usa el contextopara limitar el conjunto de valores posibles.

• La Ayuda para entradas debe determinar los valores que se pueden ofrecer alusuario para que seleccione de entre ellos. También se deben determinar losdatos que se visualizarán como información complementaria en la lista devalores posibles. Cuando se determinen los valores posibles, deberán tenerseen cuenta las restricciones derivadas del contexto y de las demás condicionesde búsqueda especificadas por el usuario.

• La Ayuda para entradas debe dialogar con el usuario. En el diálogo sepresentan los valores posibles (con información complementaria) en formade lista y se ofrece la posibilidad de marcar un valor de la lista. A vecestambién se necesita una plantilla de búsqueda en la que el usuario puedadefinir condiciones para los valores que se deben visualizar.

• Si el usuario marca un valor, la Ayuda para entradas devolverá el valor en elcampo de búsqueda. La plantilla de entrada contiene a menudo más campos(a menudo son campos de visualización sólo) que aportan más informaciónsobre el campo de búsqueda. La Ayuda para entradas debería actualizarademás el contenido de estos campos si los hay.

Gráfico 203: Objeto de Dictionary ABAP: Ayuda para búsqueda

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 449

Page 460: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Point out that the data available for selection must be supplied from the database.An existing table or view can be used as the selection method. If neither isavailable, a suitable view must be created. Refer to the slide in the Appendixregarding views as selection method.

Participants familiar with the matchcode concept from Release 3 may ask whetherthis view can be generated automatically. This is no longer possible.

Introduction to the two important dialog windows of the input help: Point outthat the hit list is always required, but you only have to restrict the values if youexpect a large number of hits.

Explain that IMPORT parameters of the input help make it possible to offer onlythe data that appears to make sense based on the context and the entries already onthe screen. Point out that it does not make sense to use IMPORT parameters in allcases. Not all parameters are meaningful as IMPORT parameters. For example, ifthere is still a short text from previous processing on the screen, it should not beused as a restriction for a new selection.

EXPORT parameters can be used to load additional information about the selectedvalue to the screen (for example, a short text). Under normal circumstances, allsearch help parameters can be made into EXPORT parameters.

Demo: Create the search help. Run the search help in test mode. Show thatthe search help does not work for field ZCARGO-WEIGHT and then move onto the next topic.

El objeto de Dictionary ABAP Ayuda para búsqueda se usa para describir unaAyuda para entradas. La definición de una Ayuda para búsqueda contiene lainformación que el sistema necesita para cumplir los requisitos descritos.

La interfase de la Ayuda para entradas controla la transferencia de datos desdela máscara de entrada hasta la Ayuda para entradas y a la inversa. La interfasedefine los datos contextuales que se utilizarán y los datos que se devolverán enla máscara de entrada cuando se seleccione un valor.

El comportamiento interno de la Ayuda para búsqueda describe el procesoF4 propiamente dicho. Incluye el método de selección con el que se debendeterminar los valores que se van a visualizar, así como el comportamiento deldiálogo que describe la interacción con el usuario.

Al igual que ocurre con un módulo de funciones, las Ayudas para búsquedadistinguen entre la interfase con la que intercambian datos con los demáscomponentes de software y el comportamiento interno (en el caso de los módulosde funciones, este último punto se define en el texto fuente).

Sólo tiene lógica definir una Ayuda para búsqueda si existe un mecanismo paraacceder a la Ayuda para búsqueda desde una ventana. Este mecanismo, llamadoconexión a Ayuda para búsqueda, se describe más adelante.

450 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 461: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Al igual que el editor de módulos de funciones, el editor de Ayudas para búsquedapermite probar un objeto. De este modo puede probar el comportamiento de unaAyuda para búsqueda sin asignarla a un campo de dynpro.

Gráfico 204: Método de selección de una Ayuda para búsqueda

Los valores posibles visualizados para un campo mediante la Ayuda para entradasse determinan en tiempo de ejecución mediante una selección de la base de datos.Cuando se define una Ayuda para búsqueda, se debe definir el objeto de base dedatos del que se deberían seleccionar los datos especificando una tabla o una vistacomo método de selección.

Tiene lógica utilizar una vista como método de selección si los datos sobre losvalores posibles relevantes para la Ayuda para entradas están distribuidos entrevarias tablas. Si los datos se encuentran todos en la misma tabla o en la tabla detexto correspondiente, puede usar la tabla como método de selección. El sistemacomprobará automáticamente que el texto de la tabla de texto se use en el idiomade inicio de sesión del usuario.

Si aún no existe ninguna vista que combine los datos relevantes para una Ayudapara entradas, créela en el Dictionary ABAP.

Las vistas de actualización no se pueden utilizar como método de selección paraAyudas para búsqueda. Normalmente se usa una vista de base de datos. Sinembargo, tenga en cuenta que las vistas de base de datos (en el sistema SAP) secrean siempre con una conexión interna. En consecuencia, sólo se ofrecerán comoAyuda para entradas los valores que tengan una entrada en cada una de las tablas

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 451

Page 462: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

implicadas. A veces los valores se deberían determinar mediante una conexiónexterna. En tal caso, seleccione una vista para Ayuda como método de selección.Encontrará más información sobre las vistas para Ayuda en el apéndice.

Si el método de selección de una Ayuda para búsqueda depende del mandante,los valores posibles sólo se seleccionarán dentro del mandante en que el usuariohaya iniciado la sesión.

Gráfico 205: Descripción del comportamiento del diálogo

Los valores posibles se presentan en forma de lista en la ventana de diálogo enla que se visualiza la lista de aciertos y el usuario puede seleccionar en ella laentrada necesaria. Si los valores posibles son claves formales, se deberá visualizarmás información.

Si la lista de aciertos es muy larga, el usuario debería poder definir másrestricciones para los atributos de la entrada. Al restringir el conjunto de datosde este modo, mejora la claridad de la lista y se reduce la carga del sistema. Sepueden introducir condiciones adicionales en otra ventana de diálogo, la ventanade diálogo para restringir valores.

El tipo de diálogo de una Ayuda para búsqueda define si la ventana de diálogo pararestringir valores se debe visualizar antes de determinar la lista de aciertos.

Defina las características que deberán aparecer en cada una (o en ambas)ventanas de diálogo como parámetros en la Ayuda para búsqueda. Puede usarcomo parámetros todos los campos del método de selección (salvo el campo demandante) y los campos que no sean clave de la tabla de texto.

452 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 463: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Qué parámetros deben aparecer en cada ventana de diálogo (y en qué orden) sedefine asignando posiciones a los parámetros en las dos ventanas de diálogo. Deeste modo se pueden usar distintos parámetros (u órdenes) en las dos ventanas dediálogo.

Para los parámetros de Ayuda para búsqueda se deben definir tipos con elementosde datos. De este modo se define la visualización en las dos ventanas de diálogo.Si no se define nada más, un parámetro usará el elemento de datos del campocorrespondiente del método de selección.

Gráfico 206: Interfase de una Ayuda para búsqueda

Cuando se define un parámetro de una Ayuda para búsqueda, se debe definirtambién si se debería usar para copiar datos en la Ayuda para entradas (parámetroIMPORT), o si se deben devolver datos con la Ayuda para entradas (parámetroEXPORT).

Los parámetros IMPORT y EXPORT de una Ayuda para búsqueda componenjuntos la interfase. (Es como en los módulos de funciones).

También se pueden definir parámetros de interfase que no aparezcan en ningunade las ventanas de diálogo: ni en la de visualizar la lista de aciertos ni en la derestringir valores. Esto podría resultar útil, por ejemplo, si se deben actualizarcampos de dynpro que no aparecen en ninguna de las dos ventanas de diálogocuando se seleccione un valor.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 453

Page 464: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

La ubicación de los parámetros IMPORT de los que una Ayuda para búsquedaobtiene sus valores y los campos de dynpro en los que se devuelve el contenido delos parámetros EXPORT de la Ayuda para búsqueda se definen en la conexión aAyuda para búsqueda.

El campo de búsqueda es un caso especial. Su contenido sólo se usa en la Ayudapara entradas si se trata de una cadena de búsqueda (es decir, si contiene loscaracteres * ó +) y el parámetro vinculado al campo de búsqueda es un parámetroIMPORT.

Los parámetros que sólo contengan información adicional sobre el campo debúsqueda no se deberían definir como parámetros IMPORT, ya que de lo contrarioel usuario deberá vaciar los campos de dynpro correspondientes cada vez antes depoder definir un nuevo valor con la Ayuda para entradas.

Gráfico 207: ¿Cómo se utilizan las Ayudas para búsqueda?

Una Ayuda para búsqueda describe el flujo de una Ayuda para entradas. La Ayudapara búsqueda sólo puede surtir efecto si se usa un mecanismo para asignar laAyuda para búsqueda a este campo. Este mecanismo se conoce como conexión aAyuda para búsqueda para el campo.

Cuando se conecta una Ayuda para búsqueda a un campo, repercute en elcomportamiento del campo. Por eso se considera que forma parte de la definicióndel campo.

Los atributos semánticos y técnicos de un campo de dynpro (tipo, longitud, AyudaF1...) no se suelen definir directamente cuando se define la máscara de entrada.Al contrario, sólo se especifica una referencia a un campo de Dictionary ABAP

454 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 465: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

(normalmente llamado igual) en el Screen Painter. El campo de dynpro tomalos atributos de este campo del Dictionary ABAP. El mismo principio se usatambién para definir la Ayuda para entradas de un campo de dynpro. La Ayudapara búsqueda se añade así al campo de búsqueda del Dictionary ABAP y no alcampo de dynpro.

En la conexión a Ayuda para búsqueda, los parámetros de la interfase de la Ayudapara búsqueda y los campos de dynpro que facilitan datos para la Ayuda paraentradas o que obtienen datos de la Ayuda para entradas se asignan entre sí. Elcampo de búsqueda se debe asignar en este punto a un parámetro EXPORT de laAyuda para búsqueda. Este parámetro debería ser un parámetro IMPORT para queel usuario pueda beneficiarse de los strings de búsqueda ya introducidos.

Los campos sin conexión a Ayuda para búsqueda también pueden tener una Ayudapara entradas, ya que también se usan otros mecanismos para la Ayuda paraentradas (por ejemplo, valores fijos de dominio).

Gráfico 208: Conexión a Ayuda para búsqueda en el Dictionary ABAP

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 455

Page 466: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Existen tres mecanismos para añadir una Ayuda para búsqueda a un campo delDictionary ABAP:

1. Una Ayuda para búsqueda se puede añadir directamente a un campo de unaestructura o tabla. La conexión se define igual que una clave externa. Deberádefinir una asignación (entre los parámetros de interfase de la Ayuda parabúsqueda y los campos de la estructura) para la que el sistema realizará unapropuesta.

2. Si un campo tiene una tabla de verificación, su contenido se ofreceráautomáticamente como valores posibles en la Ayuda para entradas. Semuestran los campos clave de la tabla de verificación. Si una tabla deverificación incluye una tabla de texto, se visualizará su primer campo decaracteres que no sea clave. Si no le satisface la visualización estándardescrita de los datos de la tabla de verificación, puede añadir una Ayuda parabúsqueda a la tabla de verificación. Esta Ayuda para búsqueda se usa paratodos los campos que tienen esta tabla como tabla de verificación. Deberádefinir una asignación entre la interfase de la Ayuda para búsqueda y la clavede la tabla de verificación cuando defina la conexión.

3. La semántica de un campo y sus valores posibles se definen por medio de suelemento de datos. Por lo tanto, se puede conectar a un elemento de datosuna Ayuda para búsqueda. La Ayuda para búsqueda estará luego disponiblepara todos los campos que hagan referencia a este elemento de datos. En laconexión se debe definir un parámetro EXPORT de la Ayuda para búsquedapara la transferencia de datos.

La conexión de una Ayuda para búsqueda a una tabla de verificación (o a unelemento de datos) puede dar lugar a un alto grado de posibilidad de reutilización.Sin embargo, existen restricciones sobre la transferencia de más valores a travésde la interfase de la Ayuda para búsqueda.

The participants learn the different mechanisms with which the SAP system canprovide an input help. In particular, they learn the different ways to attach a searchhelp to a field and to determine the origin of fields that already have an input help.

456 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 467: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Gráfico 209: Resumen: Mecanismos para la Ayuda para entradas

Explain that you work with search helps in two steps.

• Definition of the search help in SE11.• Attach the search help to the data element, table or field

Explain that input fields should be defined in the Screen Painter based on theABAP Dictionary. By doing so, you can supply both the F1 and F4 help from theABAP Dictionary. If the F4 help is defined using a search help defined in theABAP Dictionary, the search help must be assigned to an ABAP Dictionary field.

If the search field is in the context of additional screen fields taken into accountby F4 Help, define these fields with reference to other fields in the same ABAPDictionary structure. By attaching a search help to an ABAP Dictionary fieldcorresponding to the search field, the other structure fields can be assigned theinterface parameters of the search help.

Possibilities for attaching a search help to an ABAP Dictionary: The attachment tothe field (shown in the center) is the implementation of the concept described onthe previous slide. The two other methods (attaching to a data element or checktable) are less direct. Functions are more limited because you cannot use the fullsearch help interface (especially when attaching it to the data element). However,attachment to a check table has proven to be highly reusable. Explain carefullythat attachment to a check table can cause misunderstandings. Attaching a searchhelp to a table does not affect the F4 help of this table’s fields, rather this affectsthose fields which use this table as a check table.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 457

Page 468: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Summary of all mechanisms for the input help: The instructor should evaluatethem once again. The instructor should also comment, that is seldom makes senseto define the input help via the screen field. The instructor should also explainthat many input helps look acceptable without defining a search help (domainfixed value, check table with a text table). Define a search help and attach itin the appropriate manner only in those cases where the standard mechanismis insufficient.

Demo 16: Elementary search help with attachment to a data element

Idea

You want to improve the F4 help for the SE16 maintenance screen of tableZCARGO. You define an F4 help for the unit of weight field. Comment: Createan elementary search help ZWEIGHT. Table T006 containing all possible unitsas selection method is included in this search help.

Search help parameters:

• MSEHI: Unit key (import and export)• MSEHT: Unit text (export)• DIMID: Unit classification, MASS = unit of measure (export)

Parameter DIMID is given the default value ’MASS’. The import parameter isMSEHI. Only the values in MSEHI and MSEHT should be displayed in the hitlist. Show the search help for table ZCARGO in SE16.

Change the settings (Position of the hit list, selection popup, dialog box behavior)and show its effects on the look and feel of the F4 Help.

Demo 17: Elementary search help with attachment to the check table

At the moment, the check table help for the hazardous materials number appearswith the suitable text for the hazardous materials number in the user’s logonlanguage. You want to improve this help. First, a search screen should appearinstead of the list of all hazardous materials numbers. Second, the hazardousmaterials category should be displayed.

Create an elementary search help ZDANGNO and enter table DANGER_NO asselection method. The system sees that there is a text table for this table. Thefields of this text table are therefore also available in the search help.

Search help parameters:

• Hazardous materials number (import and export)• Hazardous materials number text (export)• Hazard category (export)

458 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 469: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Attach the search help to check table DANGER_NO.

Demo 18: Elementary search help with attachment to a field

Idea

Define a search help for the customer number in table ZCARGO, permitting youto find the customer number using existing customer bookings.

Note

Use elementary search ZCUSTBOOK with selection method SBOOKINGS(Database view) using tables SBOOK and SCUSTOM. Include fields CUSTOMID,NAME, BOOKID, STREET, CITY and COUNTRY as the parameters.

The import parameters are CUSTOMID and NAME. All parameters areexport parameters. In SE16 show the effect of the two import parameters anddemonstrate that export parameter NAME results in the customer name beingfilled immediately when a customer number is chosen.

Demo 19: Collective search help with attachment to a field

Idea

Expand the existing search help for customer number ZCUSTBOOK because it issometimes difficult to access data using the search path defined for this search help.

Once searching by customer number is complete, offer a search path based onexisting flight reservations (by means of flight number, date, and reservationnumber. A suitable search help SCUSTBOOK_FLIGHT is already in the system.

Note

Copy search help ZCUSTBOOK to ZCUSTBOOK_ADR and activate thelatter. Change ZCUSTBOOK into a collective search help and includeZCUSTBOOK_ADR in this collective search help.

For the table, in SE16 show that the help after field CUST_NO has not changed.Now include search help SCUSTBOOK_FLIGHT in the collective search help andassign the parameters. Look at SE16 again to see the effect on the CUST_NO field.

A fin de ofrecer una Ayuda para entradas lógica para tantos campos de dynprocomo sea posible, el sistema SAP usa varios mecanismos. Si hay más de unode estos mecanismos disponible para un campo, se usará el que esté más a laizquierda o en la parte superior de la jerarquía anterior.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 459

Page 470: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Además de las opciones descritas anteriormente para definir la Ayuda para entradasde un campo en el Dictionary ABAP, ésta se puede definir también en el campo dedynpro. La desventaja en este caso es que no se puede reutilizar automáticamente.

Con el evento de imagen POV, se puede programar la Ayuda para entradas deun campo personalmente. Se puede ajustar el diseño de la ayuda a la ayudaestándar mediante los módulos de funciones F4IF_FIELD_VALUE_REQUEST oF4IF_INT_TABLE_VALUE_REQUEST.

Sin embargo, compruebe si la parte de la Ayuda para entradas que ha programadopersonalmente se debería implementar como exit de Ayuda para búsqueda (véaseel Apéndice).

Por lo tanto, se puede conectar una Ayuda para búsqueda a un campo de dynpro enel Screen Painter. Existen ciertas restricciones de tipo funcional para esta clase deconexión en comparación con la conexión en el Dictionary.

No se deberían seguir usando las verificaciones de entrada definidas directamenteen la lógica de flujo de la imagen de la que se puede derivar también Ayudaspara entrada.

La función Info técnica se ofrece en la lista de aciertos del menú desplegable conel botón derecho del ratón. Se puede usar para averiguar cuál de los mecanismosespecificados se está usando.

Gráfico 210: Rendimiento de la Ayuda para entradas

460 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 471: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Participants are made aware of performance problems that can occur with F4 Help.

Note that F4 help is a frequently used function which, in some circumstances,must search through large amounts of data. Therefore, it is critical that participantsthink about suitable measures to optimize access when creating a search help.

A veces hay que buscar gran cantidad de datos en las selecciones de una Ayudapara entradas. Esto significa que puede que el usuario tenga que esperar muchotiempo antes de que se visualicen las entradas posibles, y podría suponer ademásun aumento considerable de la carga en el sistema.

Cuando se define una Ayuda para búsqueda, se debe verificar si se deben tomarmedidas para optimizar el comportamiento de acceso para el método de selección.Esto es cierto sobre todo si la selección usa una vista y, por lo tanto, más de unatabla física.

Si el número de entradas en el método de selección es muy alto, se debería limitarla lista de aciertos mediante más condiciones. De este modo aumenta también laclaridad de la lista de aciertos. Las condiciones adicionales se pueden derivardirectamente del contexto, o bien el usuario las puede introducir en la ventana dediálogo para valores de restricción. A menudo, el rendimiento de la Ayuda paraentradas se puede mejorar considerablemente mediante la creación de un índiceen los campos usados para formular las restricciones.

Si el número de entradas en el método de selección es relativamente reducido,verifique si se puede grabar el método de selección en la memoria intermedia.

The participants learn how to define input helps with several search paths usingcollective search helps. They must understand the similarities and differencesbetween elementary and collective search helps.

Introduction ot the problems in the use of alternative search paths: Mention brieflythe old matchcode concept. The participants should understand that the previouslydefined (elementary) search helps sometimes only represent one of many possiblesearch paths. The complete input help is defined by combining several suchelementary search helps. Since this has the same effect externally as elementarysearch helps (interface, ways of attaching search helps), collective search helps aredefined as a second instance of the search help and not as a new object type.

Relationship between a collective search help and the elementary search helpsintegrated into it: Draw special attention to the fact that a collective search help isattached exactly like an elementary search help.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 461

Page 472: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Gráfico 211: Trayectorias de búsqueda alternativas

En el modelo de datos relacionales, normalmente las entidades se representanmediante claves formales. En la vida real, en cambio, estas entidades se identificana menudo por medio de uno o varios de sus atributos. Por ejemplo, la clave de unapersona es el número de personal. Una persona describirá normalmente a otra consu nombre y, posiblemente, con su dirección.

Los atributos usados para identificar una entidad pueden variar de un usuario aotro y de un caso a otro. Un usuario desea usar estos atributos en una Ayuda paraentradas con el fin de definir un valor para un campo que requiere la entrada deuna clave formal.

Por lo tanto, necesita trayectorias de búsqueda que permitan acceder a los datosmediante campos que no sean clave. Deberían ser posibles varias trayectoriasdistintas para un campo.

Una trayectoria de búsqueda para un campo se puede implementar con una Ayudapara búsqueda en la forma descrita anteriormente. Para describir una Ayuda paraentradas con más de una trayectoria de búsqueda alternativa, se puede combinarun conjunto de campos de búsqueda en un nuevo objeto en el sistema SAP. Puestoque este objeto describe la Ayuda para entradas de un campo, se llama tambiénAyuda para búsqueda.

A diferencia de las Ayudas para búsqueda elementales descritas anteriormente, lasAyudas para búsqueda que combinan varias trayectorias de búsqueda se llamanAyudas para búsqueda compuestas.

Las Ayudas para búsqueda compuestas se usan a veces para asignar la distribuciónde las entradas posibles en un campo a varios conjuntos de datos (disyuntivos).

462 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 473: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Gráfico 212: Ayudas para búsqueda compuestas y Ayudas para búsquedaelementales

Al igual que la Ayuda para búsqueda elemental, la Ayuda para búsqueda compuestatiene una interfase de parámetros IMPORT y EXPORT con la que se intercambiandatos. Mediante esta interfase, la Ayuda para búsqueda compuesta se puede añadira campos, tablas y elementos de datos como una Ayuda para búsqueda elemental.

Sólo se puede añadir una Ayuda para búsqueda a un campo, una tabla o unelemento de datos. Por ello hay varias trayectorias de búsqueda conectadas auna Ayuda para búsqueda compuesta.

Cuando se define una Ayuda para búsqueda compuesta, se pueden omitir loscomponentes de descripción del comportamiento de diálogo y la selección dedatos. Se muestran las Ayudas para búsqueda incluidas en una lista. Se debenasignar los parámetros de la Ayuda para búsqueda compuesta a los parámetros deinterfase de la Ayuda para búsqueda incluida por cada inclusión.

Una Ayuda para búsqueda se puede incluir también en varias Ayudas parabúsqueda compuestas y, al mismo tiempo, estar conectada directamente a campos,tablas y elementos de datos. Una Ayuda para búsqueda compuesta se puede incluirtambién en otra Ayuda para búsqueda compuesta.

Cuando se usa una Ayuda para búsqueda compuesta, las Ayudas para búsquedaelementales incluidas en la Ayuda para búsqueda colectiva se ofrecen en etiquetasparalelas. Si usa reiteradamente una Ayuda para búsqueda compuesta, la etiquetausada por última vez quedará activa automáticamente. Esto se debe a que lamayoría de los usuarios siempre usan la misma trayectoria de búsqueda.

Ayudas para búsqueda ampliadas:

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 463

Page 474: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Gráfico 213: Ayudas para búsqueda append

The Append Search Help concept is similar to the Append Structures conceptalready presented. However, you can also hide in addition to appending. Theelementary search help appended to a collective search help is always at the endof the list.

Demo 20: Append search helps

Idea

Collective search help ZCUSTBOOK is considered an SAP standard search help.The customer wants to expand this search help by adding one customer-specificsearch path. In additional, elementary search help SCUSTBOOK_FLIGHT is ofno use to the customer and should be hidden.

Note

Create Append search help ZCUSTBOOK_APP and include existing searchhelp SCUSTBOOK_TYPE. Then include search help SCUSTBOOK_FLIGHTand mark it as hidden.

Explain the procedure for hiding a standard search help (create an append searchhelp, include the standard search help and mark it as hidden) because it is notintuitive.

464 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 475: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

El conjunto de trayectorias de búsqueda relevantes para un objeto depende en granmedida de las circunstancias concretas del cliente SAP. A menudo los clientesdesean poder ampliar las Ayudas para búsqueda compuestas estándar de SAP consus propias Ayudas para búsqueda elementales. En el release 4.6 hay disponibleuna técnica de append que permite ampliar las Ayudas para búsqueda compuestassin necesidad de modificaciones.

Una Ayuda para búsqueda append es una Ayuda para búsqueda compuestaasignada a otra Ayuda para búsqueda compuesta (el objeto de appending) que laamplía mediante las Ayudas para búsqueda que incluye.

La Ayuda para búsqueda append usa la interfase de los objetos de appending.La Ayuda para búsqueda append está dentro del área para nombres del cliente.Normalmente, las Ayudas para búsqueda incluidas en la Ayuda para búsquedaappend han sido creadas también por el cliente y se encuentran en el área paranombres de éste. No obstante, puede que SAP proporcione ya la Ayuda parabúsqueda elemental necesaria; en tal caso, el cliente sólo tendrá que añadirla a supropia Ayuda para búsqueda append.

Las Ayudas para búsqueda append se usan en SAP para mejorar la separaciónde los componentes. Así pues, algunas Ayudas para búsqueda compuestas deSAP cuentan ya con una o varias Ayudas para búsqueda append en la Ayuda parabúsqueda estándar. Las ampliaciones de cliente deberían consistir siempre en lacreación de una Ayuda para búsqueda append separada.

Las Ayudas para búsqueda compuestas de SAP contienen a menudo Ayudaspara búsqueda elementales que no todos los clientes necesitan. Las Ayudas parabúsqueda que no son necesarias se pueden ocultar mediante una Ayuda parabúsqueda append. Para ello, la Ayuda para búsqueda correspondiente se debeincluir en la Ayuda para búsqueda append, y se debe fijar el flag Oculto.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 465

Page 476: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Gráfico 214: La vista como método de selección de una Ayuda parabúsqueda

Si el método de selección de una Ayuda para búsqueda es una vista de base dedatos, en la Ayuda para entradas sólo se visualizarán los registros para los queexistan entradas en todas las tablas implicadas en la vista (conexión interna). Elconjunto de entradas posibles se describe a veces mediante las entradas en la tablaprimaria para las que se puede añadir información opcional adicional procedentede otras tablas secundarias. Esta vista de los datos se puede implementar con unavista de ayuda en el sistema SAP. Para las vistas de ayuda se usa la misma lógicade conexión externa que para las vistas de actualización.

Una vista de ayuda se define como una vista de actualización. Las vistas de ayudasólo se pueden utilizar como métodos de selección en Ayudas para búsqueda.Puesto que el sistema SAP no puede transmitir directamente la selección en unavista de ayuda a la base de datos, debe generar sus propias rutinas de acceso. Lavista de base de datos se debería usar, pues, como método de selección preferenteantes que la vista de ayuda.

La selección mediante una tabla y un texto de tabla equivale a la selecciónmediante una vista de ayuda virtual. Por ello, en este caso no hay que crearninguna vista de ayuda virtual.

Excepción: La tabla contiene un campo llamado igual que un campo de la tabla detexto que no es clave. Si se necesita este campo de la tabla de texto en la Ayudapara búsqueda, deberá crear una vista de ayuda en las dos tablas, porque no sepuede acceder directamente al campo en la Ayuda para búsqueda.

Normalmente el nombre de las vistas de ayuda empieza por el prefijo H_. Lasvistas que empiezan por los prefijos H_Y o H_Z están, pues, en el área paranombres del cliente.

466 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 477: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Gráfico 215: Más opciones para Ayudas para búsqueda

Se puede preasignar un valor a un parámetro mediante la asignación de un valorde propuesta. El parámetro tendrá siempre este valor a no ser que se trate de unparámetro IMPORT vinculado a un campo de la pantalla, su modulpool o unparámetro de la Ayuda para búsqueda compuesta.

Los siguientes valores pueden ser predeterminados: literales, campos de sistema yparámetros GET.

Se puede usar un valor de propuesta para formular una condición de selecciónsimple para un campo del método de selección.

Se puede asignar una letra o una cifra a una Ayuda para búsqueda elemental comotecla sensible. Si esta Ayuda para búsqueda elemental se usa en un campo dedynpro para la Ayuda para entradas, y este campo tiene asignado el acceso rápido=<tecla sensible>.<SEL1>.<SEL2>, cuando se llame la Ayuda para entradas, seprocesará esta Ayuda para búsqueda elemental. <SEL1>, <SEL2> representan elcontenido de campo para la ventana de diálogo de restricción de valores (con * alfinal); la lista de aciertos se visualiza de inmediato.

La Ayuda para búsqueda individual incluida se puede ocultar en una Ayuda parabúsqueda compuesta. De este modo se pueden desactivar trayectorias de búsquedaindividuales si no se desean en un sistema. Normalmente se ocultan en una Ayudapara búsqueda append, ya que para ello no hace falta modificar nada.

Los parámetros de una Ayuda para búsqueda elemental se pueden marcar comocampos de sólo visualización en la ventana de diálogo de restricción de valores.En general, los parámetros IMPORT asignados a campos no modificables de lapantalla se visualizan en esta ventana de diálogo como no modificables.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 467

Page 478: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Gráfico 216: Desviación respecto a la versión estándar: exit de Ayudapara búsqueda

Una Ayuda para búsqueda es un objeto que describe una Ayuda para entradasdentro del sistema estándar. En algunos casos, la semántica especial de un campoobliga a desviarse de esta versión estándar en algunos detalles. Esta desviación sepuede implementar mediante un exit de Ayuda para búsqueda.

Un exit de Ayuda para búsqueda es un módulo de funciones con una interfaseestandarizada. El módulo de funciones F4IF_SHLP_EXIT_EXAMPLE se puedeusar como modelo. Si una Ayuda para búsqueda tiene un exit de Ayuda parabúsqueda de este tipo, el exit se llamará antes de cada paso individual del proceso.Los datos administrativos del procesador de la ayuda se transfieren por medio dela interfase. El exit de Ayuda para búsqueda permite manipular estos datos.

Los datos administrativos también contienen información sobre el paso que sedebe ejecutar a continuación. El exit de Ayuda para búsqueda puede ejecutar ahoraacciones de preparación para este paso o ejecutar el paso en sí (por ejemplo, unaselección de datos que no se puede implementar mediante SELECT en una tabla ovista). En el segundo caso, el exit de Ayuda para búsqueda modifica también lainformación sobre el siguiente paso que se debe ejecutar.

Se han definido ya algunos módulos de funciones que se pueden usar como exitsde Ayuda para búsqueda o para manipular los datos administrativos en exits deAyuda para búsqueda. Tienen el prefijo F4UT_. Los exits de Ayuda para búsquedasólo se deberían usar en casos excepcionales.

Mediante los exits de Ayuda para búsqueda, se fomentan las soluciones noestándar y se dificulta la actualización de la Ayuda para entradas.

468 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 479: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Gráfico 217: Visualizaciones alternativas de la Ayuda para entradas

El sistema SAP reconoce tres formas de presentación de la Ayuda para entradas:

• Lista desplegable• Control (amodal)• Diálogo de SAP (modal)

La lista desplegable no ofrece más condiciones de selección ni visualiza máscolumnas en la lista de aciertos. Sin embargo, la lista desplegable es la Ayuda paraentradas más fácil de utilizar para los usuarios en el caso de las listas claras deuna sola columna. El desarrollador de la aplicación decide si se debe ofrecer uncampo como lista desplegable y guarda esta información en el Screen Painterdel campo correspondiente. Cuando el usuario llama la lista desplegable, losdatos que se deben visualizar se obtienen mediante el mecanismo de Ayuda paraentradas guardado en el Dictionary ABAP o en el Screen Painter del campo. Paraobtener más información sobre la utilización de listas desplegables, consulte elcurso BC410 Programación de diálogos de usuario.

Otra posibilidad es visualizar los campos que no se ofrecen en forma de listadesplegable como control amodal o mediante un diálogo modal implementadocon la tecnología de dynpro de SAP. Mediante Ayuda → Opciones, cada usuariopuede definir la variante que prefiera. Esta forma de presentación se usa luegopara todas las Ayudas para entrada del usuario en cuestión. El administrador delsistema puede definir el valor de propuesta.

El control resulta especialmente útil si se debe completar más de un camposecuencialmente con la misma Ayuda para entradas (por ejemplo, en un control detabla). La función Retener lista inicia el control desde la ayuda modal.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 469

Page 480: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

470 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 481: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

417 Ejercicio 19: Ayudas para búsquedaDuración del ejercicio: 60 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Implementar Ayudas para entrada con Ayudas para búsqueda elementales• Definir Ayudas para entradas con más de una trayectoria de búsqueda

mediante Ayudas para búsqueda compuestas• Añadir o eliminar trayectorias de búsqueda para Ayudas para búsqueda

compuestas sin realizar modificaciones

Ejemplo empresarialMuchas tareas de administración obligan a buscar datos de un empleado. Se debenproporcionar las opciones de búsqueda adecuadas para ello.

Tarea:Cree una Ayuda para búsqueda simple para un campo de entrada.

1. Vaya a la pantalla de visualización para la tabla ZDEPMENT## y llameUtilidades -> Contenido de tabla -> Crear entradas.

Aparecerá una máscara de entrada en la que puede crear nuevas entradas parala tabla ZDEPMENT## (por ejemplo, nuevos departamentos). El jefe delnuevo departamento se debe definir siempre aquí. Realice esta entrada en elcampo Jefe de departamento. La actualización de este campo debería estarsoportada por una Ayuda para entradas que visualice el (número de personaldel) empleado. Compruebe que haya una Ayuda para entradas en el campo.Averigüe qué mecanismo de Ayuda para entradas se usa aquí.

El objetivo es hacer que la Ayuda para entradas para la tabla de verificaciónZEMPLOY## sea más fácil de usar. Más adelante, compruebe si lo ha hechobien; para ello, llame de nuevo la Ayuda para entradas. Con este fin, creeuna Ayuda para búsqueda elemental ZEMPLOY##_ESH1. Los atributossiguientes deberían aparecer en el orden especificado en la lista de aciertos:

Cía. aérea

Nombre de pila

Apellido

Nº personal

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 471

Page 482: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Puesto que son muchos los empleados, limite los valores visualizadosespecificando el nombre y/o el apellido de la persona que busca antes devisualizar la lista de aciertos. Tenga presente que el apellido se usa más amenudo que el nombre de pila como restricción.

Si se ha especificado una compañía aérea antes de llamar la Ayuda paraentradas, sólo se mostrarán sus empleados. En caso contrario, cuandoseleccione el empleado, se completará un campo de entrada en la máscara deentrada para la compañía aérea. Asegúrese de que la Ayuda para búsquedadefinida para la ayuda de la tabla de verificación ZEMPLOY## se use paraverificar si todo es correcto, como se ha descrito anteriormente.

2. La Ayuda para búsqueda que acaba de crear sólo puede mejorar la ayudade la tabla de verificación de ZEMPLOY## (y, por lo tanto, la Ayuda paraentradas del campo Jefe de departamento de ZDEPMENT##) si se haañadido a la tabla ZEMPLOY##.

3. Quizás desee ofrecer más trayectorias para búsqueda para buscar empleados.Para ello, realice los preparativos siguientes:

Copie la Ayuda para búsqueda SAREA para su nueva Ayuda para búsquedaZEMPLOY##_AREA. Modifique los parámetros, la tabla de método deselección y los elementos de datos de la copia, de modo que hagan referenciaa los nombres usados en su tabla, no a los usados en la tabla original.

Compruebe y active la Ayuda para búsqueda. Copie la Ayuda para búsquedaSDEPT en la nueva Ayuda para búsqueda ZEMPLOY##_DEPT. Modifíquelacomo desee y actívela (como antes). Copie la Ayuda para búsquedaZEMPLOY##_DEPT en ZEMPLOY##_CSH y convierta la nueva copia enuna Ayuda para búsqueda compuesta. Incluya las Ayudas para búsquedaZEMPLOY##_ESH1, ZEMPLOY##_AREA y ZEMPLOY##_DEPT comocomponentes de la nueva Ayuda para búsqueda compuesta.

Modifique la Ayuda para búsqueda definida para la ayuda de la tabla deverificación de ZEMPLOY## y compruebe si todo es correcto.

4. Las necesidades de su empresa han cambiado, y esto afecta al proceso debúsqueda de empleados. La trayectoria de búsqueda con la que se buscan losempleados por departamento ya no es necesaria.

Modifique la Ayuda para entradas que se usa para el campo Jefe dedepartamento de ZDEPMENT## en consecuencia, sin modificar la Ayudapara entradas ZEMPLOY##_CSH (ni la tabla implicada). Para ello, cree unaAyuda para búsqueda append para ZEMPLOY##_CSH. El append deberíaincluir la Ayuda para búsqueda ZEMPLOY##_DEPT como Ayuda parabúsqueda oculta. Verifique si todo es correcto.

472 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 483: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Solución 19: Ayudas para búsquedaTarea:Cree una Ayuda para búsqueda simple para un campo de entrada.

1. Vaya a la pantalla de visualización para la tabla ZDEPMENT## y llameUtilidades -> Contenido de tabla -> Crear entradas.

Aparecerá una máscara de entrada en la que puede crear nuevas entradas parala tabla ZDEPMENT## (por ejemplo, nuevos departamentos). El jefe delnuevo departamento se debe definir siempre aquí. Realice esta entrada en elcampo Jefe de departamento. La actualización de este campo debería estarsoportada por una Ayuda para entradas que visualice el (número de personaldel) empleado. Compruebe que haya una Ayuda para entradas en el campo.Averigüe qué mecanismo de Ayuda para entradas se usa aquí.

El objetivo es hacer que la Ayuda para entradas para la tabla de verificaciónZEMPLOY## sea más fácil de usar. Más adelante, compruebe si lo ha hechobien; para ello, llame de nuevo la Ayuda para entradas. Con este fin, creeuna Ayuda para búsqueda elemental ZEMPLOY##_ESH1. Los atributossiguientes deberían aparecer en el orden especificado en la lista de aciertos:

Cía. aérea

Nombre de pila

Apellido

Nº personal

Puesto que son muchos los empleados, limite los valores visualizadosespecificando el nombre y/o el apellido de la persona que busca antes devisualizar la lista de aciertos. Tenga presente que el apellido se usa más amenudo que el nombre de pila como restricción.

Si se ha especificado una compañía aérea antes de llamar la Ayuda paraentradas, sólo se mostrarán sus empleados. En caso contrario, cuandoseleccione el empleado, se completará un campo de entrada en la máscara de

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 473

Page 484: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

entrada para la compañía aérea. Asegúrese de que la Ayuda para búsquedadefinida para la ayuda de la tabla de verificación ZEMPLOY## se use paraverificar si todo es correcto, como se ha descrito anteriormente.

a) Seleccione Ayuda para búsqueda en la pantalla inicial del DictionaryABAP e introduzca ZEMPLOY##_ESH1 en el campo correspondiente.

b) Seleccione Crear. En la siguiente ventana de diálogo, confirme quedesea crear una Ayuda para búsqueda elemental.

c) Introduzca un texto breve para la Ayuda para búsqueda.

d) La Ayuda para búsqueda debería ayudar a buscar empleados. Éstosse gestionan en la tabla ZEMPLOY##. En consecuencia, seleccioneesta tabla (o una vista de la misma) como método de selección. Paraeste ejercicio basta con la tabla. Introdúzcala en el campo Método deselección.

e) Para lograr el comportamiento necesario, seleccione el tipo de diálogoDiálogo con restricción de valores.

f) Seleccione los parámetros de la Ayuda para búsqueda mediante laAyuda para entradas. Conserve la lista de aciertos con los posiblesparámetros de Ayuda para búsqueda mediante Retener, ya que en estecaso no tiene que volver a llamar la ayuda. Marque los campos Cía.aérea, Nombre de pila, Apellido y Nº personal como parámetros.

g) Marque todos los parámetros como parámetros EXPORT (columnaEXP). Marque el atributo que se debe buscar (por ejemplo, Nº personal)y la compañía aérea en la posición más elevada de la jerarquía comoparámetros IMPORT (columna IMP). De este modo se garantiza quese tenga en cuenta la entrada correspondiente en la máscara de entrada(como se ha descrito en el ejercicio).

h) Puede definir la lista de aciertos mediante la asignación de los númerosde posición correspondientes (por ejemplo, 1, 2, 3, 4, 5) en la columnaLPos.

i) Puede definir la ventana de diálogo para restringir los valoresmediante la asignación de números de posición en la columna SPos.En consecuencia, tendrá que introducir números positivos en estascolumnas para los parámetros Nombre de pila y Apellido, mientras queel valor de Apellido deberá ser menor que el de Nombre de pila.

j) Active su Ayuda para búsqueda. La Ayuda para búsqueda no estáactiva aún para el campo Jefe de departamento de ZDEPMENT##.Sin embargo, puede probar la Ayuda para búsqueda de inmediato conla función Test.

Continúa en la página siguiente

474 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 485: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

2. La Ayuda para búsqueda que acaba de crear sólo puede mejorar la ayudade la tabla de verificación de ZEMPLOY## (y, por lo tanto, la Ayuda paraentradas del campo Jefe de departamento de ZDEPMENT##) si se haañadido a la tabla ZEMPLOY##.

a) Vaya al modo de modificación en la pantalla de actualización para latabla. Seleccione Pasar a -> Ayuda para búsqueda -> Para tabla. En lasiguiente ventana de diálogo, introduzca el nombre de la Ayuda parabúsqueda ZEMPLOY##_ESH1. Seleccione Continuar.

b) Probablemente la propuesta creada por el sistema para asignar losparámetros de Ayuda para búsqueda a los campos clave de la tabla serácorrecta. Compruébelo y copie la definición.

c) Active la tabla ZEMPLOY##.

d) Vuelva a llamar la función Crear entradas para la tabla ZDEPMENT##.Ahora la Ayuda para entradas del campo Jefe de departamento deberíafuncionar según se deseaba.

3. Quizás desee ofrecer más trayectorias para búsqueda para buscar empleados.Para ello, realice los preparativos siguientes:

Copie la Ayuda para búsqueda SAREA para su nueva Ayuda para búsquedaZEMPLOY##_AREA. Modifique los parámetros, la tabla de método deselección y los elementos de datos de la copia, de modo que hagan referenciaa los nombres usados en su tabla, no a los usados en la tabla original.

Compruebe y active la Ayuda para búsqueda. Copie la Ayuda para búsquedaSDEPT en la nueva Ayuda para búsqueda ZEMPLOY##_DEPT. Modifíquelacomo desee y actívela (como antes). Copie la Ayuda para búsquedaZEMPLOY##_DEPT en ZEMPLOY##_CSH y convierta la nueva copia enuna Ayuda para búsqueda compuesta. Incluya las Ayudas para búsquedaZEMPLOY##_ESH1, ZEMPLOY##_AREA y ZEMPLOY##_DEPT comocomponentes de la nueva Ayuda para búsqueda compuesta.

Modifique la Ayuda para búsqueda definida para la ayuda de la tabla deverificación de ZEMPLOY## y compruebe si todo es correcto.

a) En la pantalla inicial del Dictionary, introduzca SAREA en el campodel nombre de la Ayuda para búsqueda y seleccione el pulsadorde copia. Modifique el nombre de la Ayuda para búsqueda aZEMPLOY##_AREA y seleccione Continuar. Seleccione Modificarpara la nueva Ayuda para búsqueda.

b) Modifique la tabla del método de selección a ZEMPLOY##. Modifiquelos nombres de parámetros para que coincidan con los campos dela tabla; para ello, seleccione el parámetro y la Ayuda para entradas.

Continúa en la página siguiente

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 475

Page 486: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

De este modo se corregirá también la referencia al elemento de datos.Corrija otras especificaciones según se necesite, verifique la sintaxis dela definición y active la Ayuda para búsqueda.

c) Repita los pasos a) y b) para crear la Ayuda para búsquedaZEMPLOY##_DEPT mediante el modelo SDEPT.

d) Copie la Ayuda para búsqueda ZEMPLOY##_DEPT enZEMPLOY##_CSH. En la pantalla de actualización de la Ayudapara búsqueda, seleccione Tratar ® Modificar el tipo de Ayuda parabúsqueda y confirme la modificación.

e) Inserte un parámetro de importación para el área. Debe hacer referenciaal elemento de datos usado para el Área de ZEMPLOY##.

f) Marque la etiqueta Ayudas para búsqueda incluidas. Introduzca laAyuda para búsqueda ZEMPLOY##_ESH1.

g) Sitúe el cursor en la Ayuda para búsqueda que acaba de introducir.Seleccione Asignación de parámetro. Haga que el sistema propongauna asignación.

h) Probablemente, la propuesta será correcta. Para curarse en salud,compruebe la propuesta y luego cópiela.

i) Repita los pasos 4 – 6 para las Ayudas para búsqueda incluidasZEMPLOY##_AREA y ZEMPLOY##_DEPT.

j) Active la Ayuda para búsqueda ZEMPLOY##_CSH.

k) Vaya a la pantalla de actualización de la tabla ZEMPLOY## paramodificar la Ayuda para búsqueda para la tabla. Seleccione Pasar a ->Ayuda para búsqueda -> Para tabla y modifique el nombre de la Ayudapara búsqueda a ZEMPLOY##_CSH. Haga que el sistema haga unapropuesta, compruébela y cópiela. Active la tabla ZEMPLOY##.

l) Llamando la Ayuda para entradas para el campo Jefe de departamentode ZDEPMENT##, podrá ver que la Ayuda para entradas sigue enfuncionamiento y que ahora hay activa una Ayuda para búsquedacompuesta.

4. Las necesidades de su empresa han cambiado, y esto afecta al proceso debúsqueda de empleados. La trayectoria de búsqueda con la que se buscan losempleados por departamento ya no es necesaria.

Modifique la Ayuda para entradas que se usa para el campo Jefe dedepartamento de ZDEPMENT## en consecuencia, sin modificar la Ayudapara entradas ZEMPLOY##_CSH (ni la tabla implicada). Para ello, cree una

Continúa en la página siguiente

476 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 487: 119167629 taw10-02-es

TAW10_2 Lección: Ayudas para búsqueda

Ayuda para búsqueda append para ZEMPLOY##_CSH. El append deberíaincluir la Ayuda para búsqueda ZEMPLOY##_DEPT como Ayuda parabúsqueda oculta. Verifique si todo es correcto.

a) Puesto que desea hacer los cambios sin modificar los objetos existentes,cree una Ayuda para búsqueda append para la Ayuda para búsquedacompuesta ZEMPLOY##_CSH.

b) En el modo de visualización, vaya a la pantalla de actualización parala Ayuda para búsqueda ZEMPLOY##_CSH. Seleccione Pasar a →Ayudas para búsqueda append.

c) En la siguiente ventana de diálogo se propone un nombre para la Ayudapara búsqueda append. Puede copiar este nombre.

d) Introduzca una descripción breve para la Ayuda para búsqueda append.

e) Marque la etiqueta Ayudas para búsqueda incluidas.

f) Introduzca ZEMPLOY##_DEPT en la lista de Ayudas para búsquedaincluidas. Marque la columna Oculto para la entrada.

g) Sitúe el cursor en el nombre de la Ayuda para búsquedaZEMPLOY##_DEPT. Seleccione Asignación de parámetro. En lasiguiente ventana de diálogo, confirme que desea crear una propuestapara la asignación de parámetros.

h) Es probable que la asignación de parámetros propuesta por el sistemasea correcta. Compruébelo y copie la asignación.

i) Active su Ayuda para búsqueda append.

j) Puede comprobar si lo ha hecho bien llamando la Ayuda para entradasdel campo Jefe de departamento de ZDEPMENT##.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 477

Page 488: 119167629 taw10-02-es

Capítulo 13: Ayuda para búsqueda TAW10_2

Resumen de la lección

Ahora podrá:• Definir un proceso de ayuda para la entrada mediante una Ayuda para entrada• Definir una Ayuda para búsqueda con varias trayectorias de búsqueda

alternativas• Usar los distintos mecanismos para la conexión a Ayuda para búsqueda con

el fin de asignar una Ayuda para búsqueda a un campo de dynpro• Determinar si un campo de dynpro tiene Ayuda para entrada y en qué forma• Ampliar una Ayuda para búsqueda compuesta mediante una Ayuda para

búsqueda append sin modificaciones• Programar un exit de Ayuda para búsqueda

478 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 489: 119167629 taw10-02-es

TAW10_2 Resumen del capítulo

Resumen del capítuloAhora podrá:• Definir un proceso de ayuda para la entrada mediante una Ayuda para entrada• Definir una Ayuda para búsqueda con varias trayectorias de búsqueda

alternativas• Usar los distintos mecanismos para la conexión a Ayuda para búsqueda con

el fin de asignar una Ayuda para búsqueda a un campo de dynpro• Determinar si un campo de dynpro tiene Ayuda para entrada y en qué forma• Ampliar una Ayuda para búsqueda compuesta mediante una Ayuda para

búsqueda append sin modificaciones• Programar un exit de Ayuda para búsqueda

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 479

Page 490: 119167629 taw10-02-es

Resumen del curso TAW10_2

Resumen del cursoAhora podrá:

• Describir la estructura de datos de los sistemas SAP• Usar las herramientas Workbench ABAP• Crear y llamar subrutinas, módulos de funciones y métodos• Escribir programas de diálogo de fácil manejo• Utilizar y procesar elementos de pantalla en el sistema SAP• Crear una interfase de usuario para un programa• Usar y describir el Dictionary ABAP y sus servicios• Modelar y leer datos usando SQL de la base de datos• Programar de manera sensible al rendimiento• Usar el Code Inspector

480 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 491: 119167629 taw10-02-es

ÍndiceAAsistente de modificaciones,157

AT EXIT-COMMAND, 115Atributos de Dictionary, 17Atributos de imagen, 19Atributos de visualización, 17Atributos del programa, 17Ayuda para entradas, 120Bbarra de herramientas, 58barra de pulsadores, 58Bloque de proceso PAI, 136botones de selección, 131CCALL SCREEN, 21CALL SCREEN <nnnn>, 38campo de entrada, 103campo de salida, 103casillas de selección, 131códigos de función, 61Compresión en tiempo deejecución, 93

Controles de ficha, 180CHCHAIN, 112CHAIN ... ENDCHAIN, 110DDefiniciones de tecla, 61Dictionary ABAP, 15EEditor ABAP, 21Evento PAI, 24, 133

Ggrupo de botones de selección,133

grupo de funciones, 162IICON_CREATE, 90icono de status, 89Include TOP, 160LLEAVE PROGRAM, 39LEAVE TO SCREEN, 37Lista de elementos, 19Lista de objetos, 190Lógica de proceso, 19MMarcos de grupo, 92Máscara de imagen enpantalla, 19

Menú de Include, 64Menú de sistema, 64MODIFY SCREEN, 35Módulo PAI, 24Módulo PBO, 24MÓDULO... ENTRADA, 24MÓDULO... SALIDA, 24Módulos PAI, 190Módulos PBO, 190OObjeto de referencia, 185ON CHAIN-INPUT, 114ON CHAIN-REQUEST, 114ON INPUT, 114ON REQUEST, 114PPAI, 16

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 481

Page 492: 119167629 taw10-02-es

Índice TAW10_2

Parámetro GET, 106Parámetro SET, 106PBO, 16Procesador DYNP, 25procesamiento batch input,180

Proceso antes de salida, 16PROCESO ANTES DESALIDA, 35

Proceso después de la entrada,16

PROCESO DESPUÉS DELA ENTRADA, 111

Programa ABAP, 133SScreen Painter, 21SCREEN-ACTIVE, 35

SCREEN-INPUT, 35SCREEN-INVISIBLE, 35SCREEN-OUTPUT, 35Sentencias FIELD, 112Servidor de aplicación, 186Servidor de presentación, 186SET SCREEN <nnnn>, 36Status GUI, 58subscreen, 157TTabla de sistema SCREEN, 32tecla de función, 58técnica de referencia, 68–69texto estático, 138WWorkbench ABAP, 120

482 © 2009 SAP AG. Reservados todos los derechos. 22-12-2009

Page 493: 119167629 taw10-02-es

FeedbackSAP AG ha tomado todas las medidas posibles en la preparación de este curso paraasegurar la exactitud de los contenidos del mismo así como que esté completo. Sitiene algunas correcciones o sugerencias para mejorarlo, anótelas en los espaciosprevistos para este fin en la evaluación del curso.

22-12-2009 © 2009 SAP AG. Reservados todos los derechos. 483