Anda di halaman 1dari 432

TAW12

Programacin ABAP - Avanzado -


Parte 2

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

2014 SAP AG. Reservados todos los derechos.

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


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

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


Corporation.

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

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

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


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

Oracle es una marca registrada de Oracle Corporation.

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

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


son marcas o marcas registradas de Citrix Systems, Inc.

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

Java es una marca registrada de Sun Microsystems, Inc.

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

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


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

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


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

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

Copyright . Reservados todos los derechos. iii


iv Copyright . Reservados todos los derechos.
Sobre este manual

Este manual intenta complementar la presentacin de la gua de instructores de este curso y servir
como una fuente de referencia. No es adecuado como material de auto-estudio.

Convenciones Tipogrficas
En este manual se usa el espaol de Espaa como estndar.
Tambin se usan las siguientes convenciones tipogrficas.

Esta informacin se visualiza en la presentacin del instructor.

Demostracin

Procedimiento

Advertencia o aviso

Consejo

Informacin relacionada o adicional

Discusin con moderador

Control de interfaz de usuario Texto ejemplo

Ttulo de ventana Texto ejemplo

Copyright . Reservados todos los derechos. v


vi Copyright . Reservados todos los derechos.
Contenido

xi Resumen del curso

1 Captulo 1: Ajuste del software SAP estndar

2 Leccin: Explicacin de los trminos para ajustar el software SAP


estndar
7 Leccin: Descripcin de las clases de ampliacin clsica

17 Captulo 2: Ampliacin de elementos de diccionario

18 Leccin: Ampliacin de la tablas con estructuras append e includes


de Customizing
23 Ejercicio 1: Ampliacin de una tabla
26 Leccin: Ampliacin de los textos de elementos de datos

35 Captulo 3: Exits de cliente

36 Leccin: Manejo de proyectos de ampliacin


44 Leccin: Ampliacin de programas con exits de programa
57 Ejercicio 2: Implementacin de un exit de cliente: exit de programa
61 Leccin: Ampliacin de mens con exits de men
65 Ejercicio 3: Implementacin de un exit de cliente: exit de men
69 Leccin: Ampliacin de dynpros con exits de dynpro
77 Ejercicio 4: Implementacin de un exit de cliente: exit de dynpro

85 Captulo 4: Add-ins empresariales clsicos

86 Leccin: Descripcin de una interfaz de objetos ABAP


89 Leccin: Descripcin de los Add-ins empresariales (BAdI) clsicos
94 Leccin: Explicacin de los detalles avanzados de los BAdI

101 Captulo 5: Modificaciones de la versin estndar de SAP

102 Leccin: Modificacin del software SAP estndar


112 Leccin: Modificacin con el asistente de modificacin
119 Ejercicio 5: Implementacin de modificaciones
124 Leccin: Implementacin de exits de usuario
128 Leccin: Ajuste de modificaciones

Copyright . Reservados todos los derechos. vii


139 Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de
ampliacin

141 Leccin: Descripcin del concepto de ampliacin


146 Leccin: Uso de ampliaciones explcitas
151 Ejercicio 6: Uso de ampliaciones explcitas
155 Leccin: Descripcin de ampliaciones implcitas
157 Leccin: Uso de ampliaciones implcitas en los mdulos de
funciones SAP
159 Ejercicio 7: Uso de las ampliaciones implcitas de un mdulo de
funciones de SAP
163 Leccin: Uso de ampliaciones implcitas en clases globales de SAP
167 Ejercicio 8: Ample una clase de SAP global.
174 Leccin: Uso de otras ampliaciones implcitas
177 Ejercicio 9: Ampliacin de estructuras y subrutinas de SAP

187 Captulo 7: Add-ins empresariales (BAdI)

188 Leccin: Comprensin del cambio de las Add-ins empresariales


clsicas a las nuevas Add-ins empresariales
193 Ejercicio 10: Implementacin de exits de programa para BAdI
clsicos
196 Leccin: Implementacin de exits de programa para nuevas Add-ins
empresariales (BAdI)
203 Ejercicio 11: Implementacin de exits de programa para nuevos BAdI
206 Leccin: Implementacin de exits de men de nuevos Add-ins
empresariales (BAdI)
213 Ejercicio 12: Implementacin de exits de men para nuevas BAdI
216 Leccin: Implementacin de nuevos exits de dynpro de Add-ins
empresariales (BAdI)
221 Ejercicio 13: Implementacin de exits de dynpro para nuevas BAdI

229 Captulo 8: Introduccin a Web Dynpro

230 Leccin: Resumen de los beneficios de Web Dynpro


235 Leccin: Explicacin de la arquitectura de Web Dynpro
239 Ejercicio 14: Crear un Web Dynpro simple
245 Leccin: Navegacin entre vistas
247 Ejercicio 15: Navegar entre vistas Web Dynpro
255 Leccin: Utilizacin de conjuntos de vistas
257 Ejercicio 16: Utilizar conjuntos de vistas
263 Leccin: Explicacin de la arquitectura de Web Dynpro y relaciones
entre entidades

273 Captulo 9: Controladores Web Dynpro

274 Leccin: Explicacin de los controladores de Web Dynpro

viii Copyright . Reservados todos los derechos.


285 Captulo Contexto de Web Dynpro
10:

286 Leccin: Definicin de contexto


292 Leccin: Establecer propiedades a los nodos del contexto
300 Leccin: Asignacin de contextos
303 Ejercicio 17: Definir, asignar y vincular datos al contexto

311 Captulo 11: Interfaz de usuario de Web Dynpro

312 Leccin: Definicin del layout de visualizacin


327 Ejercicio 18: Usar gestores de layout para disponer elementos de UI
334 Leccin: Vinculacin de datos y control del comportamiento del
elemento de UI
342 Leccin: Utilizacin de elementos de UI compuestos
351 Ejercicio 19: Usar el asistente de servicio y visualizar tablas

367 Captulo 12:Programacin de contextos y controladores

368 Leccin: Comprensin de mtodos y atributos de controlador


379 Leccin: Utilizacin de mtodos de controlador para acceder al
contexto en tiempo de ejecucin
389 Ejercicio 20: Acceso al contexto en tiempo de ejecucin
394 Leccin: Adicin de elementos nuevos a un nodo de contexto
401 Ejercicio 21: Visualizar datos en masa mediante tablas
409 Leccin: Implementacin de las funciones de suministro
411 Ejercicio 22: Implementar las funciones de suministro

Copyright . Reservados todos los derechos. ix


x Copyright . Reservados todos los derechos.
Resumen del curso

PBLICO OBJETIVO
Este curso est dirigido al siguiente pblico objetivo:
Consultor de desarrollo
Gestor de proyecto
Programador

Copyright . Reservados todos los derechos. xi


xii Copyright . Reservados todos los derechos.
CAPTULO 1 Ajuste del software SAP
estndar

Leccin 1
Explicacin de los trminos para ajustar el software SAP estndar 2

Leccin 2
Descripcin de las clases de ampliacin clsica 7

OBJETIVOS DEL CAPTULO

Describir las opciones para el ajuste del sistema estndar de SAP


Describir las clases de ampliacin clsica

Copyright . Reservados todos los derechos. 1


Captulo 1
Leccin 1
Explicacin de los trminos para ajustar el
software SAP estndar

RESUMEN DE LA LECCIN
En este mdulo se ofrece un resumen de las opciones disponibles para modificar el sistema
SAP y se esbozan las directrices que le permitirn decidir qu opcin utilizar.

Ejemplo empresarial
Necesita conocer las opciones disponibles para modificar y ampliar su sistema SAP. Por este
motivo, se requieren los siguientes conocimientos:
Una buena comprensin de los distintos niveles en los que se pueden realizar
modificaciones en la versin estndar que suministra SAP.
Una buena comprensin del mtodo ms adecuado para modificar el sistema estndar.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir las opciones para el ajuste del sistema estndar de SAP

Resumen de los niveles de modificacin

Figura 1: Diagrama de resumen: modificacin del estndar de SAP

Puede modificar el software estndar de SAP utilizando alguna de las siguientes tcnicas:

2 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los trminos para ajustar el software SAP estndar

Personalizacin
Modificacin
Ampliacin

Niveles de modificacin

Figura 2: Niveles de modificacin

Puede modificar el sistema basado en ABAP en los siguientes niveles:


Customizing
En el nivel de Customizing, puede configurar procesos empresariales especficos y
funciones para su sistema en funcin de una Gua de implementacin (IMG).
Personalizacin
En el nivel de personalizacin, puede realizar cambios en los atributos de visualizacin
globales de ciertos campos (como configurar valores predeterminados y ocultar campos)
y crear secuencias de men especficas del usuario.
Modificacin
En el nivel de modificacin, puede modificar los objetos de repository de SAP en el sitio del
cliente.
Si SAP suministra una versin modificada del objeto, debe ajustar el sistema del cliente
para reflejar estas modificaciones. Antes del release 4.0B, estos ajustes tenan que
hacerse manualmente mediante utilidades de actualizacin.
A partir del release 4.5A, este procedimiento se ha automatizado a travs del uso del
Asistente de modificaciones.
Ampliacin
En el nivel de ampliacin, puede crear objetos de repository para clientes individuales que
hacen referencia a objetos que ya existen en el repository de SAP.
Desarrollo de cliente

Copyright . Reservados todos los derechos. 3


Captulo 1: Ajuste del software SAP estndar

En el nivel de desarrollo del cliente, puede crear objetos de repository que son nicos para
los clientes individuales en las reas de nombre del cliente.

El Customizing y la personalizacin se realizan utilizando las herramientas que se encuentran


en el Business Engineer. Los desarrollos, las ampliaciones y las modificaciones del cliente se
realizan mediante las herramientas disponibles en el Workbench ABAP.

Procedimiento para la modificacin de funcionalidad

Figura 3: Procedimiento para la modificacin de funcionalidad

Si el Customizing o la personalizacin no cumple sus requisitos, puede iniciar un proyecto de


desarrollo o utilizar un Programa de software complementario (CSP). Una lista de CSP
certificados por SAP est disponible en la extranet de SAP Service Marketplace bajo el alias /
softwarepartner.
En la categora de desarrollo del cliente hay un proyecto de desarrollo si la versin estndar
de SAP no contiene ya funciones parecidas a la que se est intentando desarrollar. Sin
embargo, si existe una funcin SAP parecida, intente incluirla en su proyecto de desarrollo
amplindola o modificndola mediante un exit de usuario o haciendo una copia del programa
SAP adecuado.
Las modificaciones pueden provocar problemas. Despus de un upgrade, debe comparar las
nuevas versiones de objetos SAP con las versiones modificadas que ha creado. Si es
necesario, tambin debe ajustar las versiones nuevas para incorporar los ajustes realizados
en versiones anteriores.

Realice las modificaciones solo en las siguientes situaciones:


El Customizing o la personalizacin no cumplen sus requisitos.
No hay previstos exits de usuario ni ampliaciones similares.
Copiar el objeto de SAP al rea de nombres del cliente no puede considerarse una opcin.

4 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los trminos para ajustar el software SAP estndar

Customizing

Figura 4: Customizing

Business Engineer est compuesto por todas las herramientas de implementacin de SAP.

Estos son ejemplos de las herramientas de implementacin de SAP:


El modelo de referencia R/3
La gua de implementacin (IMG)
Una lista completa de todas las actividades de Customizing
El Modelo de referencia R/3 contiene todos los modelos utilizados para describir los
procesos industriales (los modelos de proceso, datos y organizacin).

Personalizacin

Las siguientes opciones pueden ayudarlo a lograr la personalizacin:

Atributos de visualizacin global de campos


- Transacciones de variante
- Parmetro SET/GET
- Opciones de control de tabla dependientes de usuario o de mandante
Mens personalizados
- Men
segn funcin
- Favoritos
- Accesos directos en el escritorio

Copyright . Reservados todos los derechos. 5


Captulo 1: Ajuste del software SAP estndar

La personalizacin acelera y simplifica el procesamiento de escenarios empresariales del


sistema basado en ABAP. Con la personalizacin, puede ajustar las transacciones de
aplicacin individuales para cubrir las necesidades empresariales de su compaa en su
conjunto o las necesidades de grupos de usuarios especficos en su compaa. Se desactivan
todas las funciones y los datos innecesarios encontrados en la transaccin.
Con la personalizacin, puede simplificar una aplicacin sin tener que usar el Workbench
ABAP.
Los atributos de visualizacin globales permiten definir valores predeterminados para
campos de dynpro especficos. Tambin se pueden suprimir columnas de control de tabla o
campos individuales de una transaccin concreta o de toda la pantalla.
Los mens personalizados, como los basados en roles, favoritos y de acceso rpido del
Escritorio, le permiten ajustar las secuencias de mens para reflejar las necesidades de
distintos grupos de usuarios en la empresa.

RESUMEN DE LA LECCIN
Ahora podr:
Describir las opciones para el ajuste del sistema estndar de SAP

6 Copyright . Reservados todos los derechos.


Captulo 1
Leccin 2
Descripcin de las clases de ampliacin clsica

RESUMEN DE LA LECCIN
En este mdulo se describen las clases de ampliacin disponibles y sus usos.

Ejemplo empresarial
Para trabajar en el sistema SAP, ser necesario aprender varias tcnicas de ampliacin. Por
este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de las clases de ampliacin disponibles y sus usos.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir las clases de ampliacin clsica

Niveles de modificacin mediante el Workbench ABAP

Figura 5: Niveles de modificacin mediante el Workbench ABAP

Los niveles de modificacin del software SAP con el Workbench ABAP son los siguientes:
Modificacin
Ampliacin
Desarrollo de cliente

Copyright . Reservados todos los derechos. 7


Captulo 1: Ajuste del software SAP estndar

Las modificaciones son cambios en los objetos SAP de los sistemas del cliente.
Concretamente:
Se ejecutan con ayuda de exits de usuario (subrutinas reservadas a los clientes en objetos
del rea de nombres de SAP).
Varios puntos de los objetos de Repository SAP son "de codificacin fija".

Los desarrollos de cliente son programas desarrollados por el cliente que puede llamar
objetos del Repository SAP. Por ejemplo, los clientes pueden crear programas que llaman los
mdulos de funciones SAP.
Se invierte la distribucin de roles en los conceptos de ampliacin. Los programas SAP
llaman objetos del Repository que un cliente ha creado o modificado. Por ejemplo, utiliza un
exit de mdulo de funciones llamado por un programa SAP.

Puede ampliar el sistema en los niveles siguientes:


En programas ABAP por exits de mdulo de funciones
En los GUI mediante el uso de exits de men
En dynpros, mediante la insercin de exits de dynpro en un subscreen de un rea
especificada por SAP
En los dynpros, mediante exits de campo para procesar el cdigo de cliente que hace
referencia a un campo especfico en el dynpro
En estructuras o tablas de Dictionary ABAP mediante ampliaciones de tabla

Ampliaciones de tabla

Figura 6: Ampliaciones de tabla

Puede ampliar tablas y estructuras con campos utilizando las siguientes opciones:
Estructuras append
Includes de Customizing (CI)

Las dos tcnicas le permiten adjuntar campos a una tabla sin tener que modificar la tabla.

8 Copyright . Reservados todos los derechos.


Leccin: Descripcin de las clases de ampliacin clsica

Una estructura append es una estructura que asigna exactamente a una tabla. Puede haber
varias estructuras append para una tabla. Durante la activacin, el sistema busca todas las
estructuras append activas para la tabla en cuestin y las adjunta a la tabla.
Las estructuras append difieren de las estructuras include en el modo en que hacen
referencia a las tablas. Para incluir campos de una estructura include en una tabla, debe
aadir una lnea .INCLUDE... a la tabla. En este caso, la tabla hace referencia a la
subestructura.
Las estructuras append hacen referencia a sus tablas. En este caso, la referencia no altera las
tablas de ninguna manera.

Ampliaciones de tabla: SAP y el cliente

Figura 7: Ampliaciones de tabla: SAP y el cliente

Las estructuras append le permiten adjuntar campos a una tabla sin tener que modificar la
tabla. Por lo tanto, los desarrolladores de SAP no tienen que planificar ampliaciones de tabla
mediante estructuras append. Una estructura append solo puede pertenecer a una tabla.
En cambio, los includes de Customizing permiten usar la misma estructura en varias tablas.
La sentencia include debe existir ya en la estructura o en la tabla SAP. Sin embargo, los
desarrolladores de SAP deben planificar las ampliaciones de tabla mediante includes de
Customizing.

Copyright . Reservados todos los derechos. 9


Captulo 1: Ajuste del software SAP estndar

Ampliaciones de programa

Figura 8: Ampliaciones de programa: cmo funcionan

La finalidad de una ampliacin de programa es llamar un objeto en el rea de nombres de


cliente.

Puede utilizar las siguientes tcnicas en las ampliaciones de programa:

Tcnica Descripcin
Exit de usuario Un exit de usuario es una subrutina.
Exit de cliente Un exit de cliente es un mdulo de funcin de
exit especial que llama el programa de
aplicacin SAP.
Este mdulo de funcin forma parte de un
grupo de funcin que el sistema maneja de
manera especial.

Evento de operacin El programa de aplicacin SAP llama


dinmicamente un mdulo de funciones en el
rea de nombres de cliente.
Add-in empresarial El programa de aplicacin llama un mtodo
de una clase o una instancia de una clase.
Esta clase se encuentra en el rea de
nombres de cliente.

10 Copyright . Reservados todos los derechos.


Leccin: Descripcin de las clases de ampliacin clsica

Ampliaciones de programa: SAP y cliente

Figura 9: Ampliaciones de programa: SAP y cliente

Las ampliaciones de programa le permiten ejecutar una lgica de programa adicional para un
programa de aplicacin SAP. En la actualidad, SAP proporciona las tcnicas que se describen
en la figura.

Ampliaciones de men

Figura 10: Ampliaciones de men: SAP y cliente

Las ampliaciones de men permiten aadir opciones adicionales a un men estndar de SAP.

El sistema SAP proporciona las siguientes opciones:

Copyright . Reservados todos los derechos. 11


Captulo 1: Ajuste del software SAP estndar

Exits de cliente
Add-ins empresariales

Las opciones de men adicionales se fusionan en GUI.


Cuando se implementa el cdigo de funcin, puede modificar el texto de la opcin de men y
cambiar los iconos. Sin embargo, esto es posible solo si el desarrollador de SAP proporciona
la opcin.

Ampliaciones de pantalla

Figura 11: Ampliaciones de pantalla

Los exits de dynpro son un tipo de exit de cliente. Permiten visualizar objetos adicionales en el
dynpro del programa de aplicacin de SAP.

Para proporcionar exits de dynpro, el desarrollador debe realizar las siguientes tareas:
Definir las reas de subscreen
Especificar las llamadas correspondientes en la lgica de proceso
Proporcionar el framework para transportar los datos
Incluir el exit de dynpro en una ampliacin
Actualizar la documentacin

A partir de SAP NetWeaver Application Server 6.20, los add-ins empresariales tambin
pueden contener exits de dynpro.

12 Copyright . Reservados todos los derechos.


Leccin: Descripcin de las clases de ampliacin clsica

Modificaciones

Figura 12: Modificaciones

Cualquier cambio que realice en un objeto que SAP suministr se denomina modificacin.
Despus de un upgrade, debe comparar las nuevas versiones de objetos SAP con las
versiones modificadas que ha creado. Si es necesario, tambin debe ajustar las versiones
nuevas para incorporar los ajustes realizados en versiones anteriores. Antes del release 4.0B,
el sistema registr las modificaciones en el nivel de objeto del Repository (por ejemplo, un
programa de include).
Desde el release 4.5A, la granularidad para registrar modificaciones es ms precisa. El
Asistente de modificaciones lo hace posible.El proceso de ajuste de modificaciones tambin
se renov.

RESUMEN DE LA LECCIN
Ahora podr:
Describir las clases de ampliacin clsica

Copyright . Reservados todos los derechos. 13


Captulo 1: Ajuste del software SAP estndar

14 Copyright . Reservados todos los derechos.


Captulo 1

Evaluacin de la formacin

1. De las siguientes tcnicas, cules incluyen las opciones para ajustar el software estndar
de SAP?
Seleccione las respuestas correctas.

X A Personalizacin

X B Ampliacin

X C Desarrollo de cliente

X D Modificacin

2. Cules son los niveles de modificacin del software SAP con el Workbench ABAP?
Seleccione las respuestas correctas.

X A Modificacin

X B Desarrollo de cliente

X C Ampliaciones

X D Personalizacin

Copyright . Reservados todos los derechos. 15


Captulo 1

Respuestas a la Evaluacin de la formacin

1. De las siguientes tcnicas, cules incluyen las opciones para ajustar el software estndar
de SAP?
Seleccione las respuestas correctas.

X A Personalizacin

X B Ampliacin

X C Desarrollo de cliente

X D Modificacin

2. Cules son los niveles de modificacin del software SAP con el Workbench ABAP?
Seleccione las respuestas correctas.

X A Modificacin

X B Desarrollo de cliente

X C Ampliaciones

X D Personalizacin

16 Copyright . Reservados todos los derechos.


CAPTULO 2 Ampliacin de elementos de
diccionario

Leccin 1
Ampliacin de la tablas con estructuras append e includes de Customizing 18
Ejercicio 1: Ampliacin de una tabla 23

Leccin 2
Ampliacin de los textos de elementos de datos 26

OBJETIVOS DEL CAPTULO

Ampliar tablas mediante estructuras append


Ampliar tablas mediante includes de Customizing
Ampliar textos de elementos de datos

Copyright . Reservados todos los derechos. 17


Captulo 2
Leccin 1
Ampliacin de la tablas con estructuras
append e includes de Customizing

RESUMEN DE LA LECCIN
En este mdulo se explica cmo ampliar las tablas utilizando estructuras append e includes
de Customizing.

Ejemplo empresarial
Desea agregar campos a las tablas SAP, pero no quiere tener que implementar
modificaciones. Por este motivo, se requieren los siguientes conocimientos:
Cmo ampliar tablas utilizando estructuras append
Cmo ampliar tablas utilizando includes de Customizing

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Ampliar tablas mediante estructuras append
Ampliar tablas mediante includes de Customizing

Ampliaciones de tabla

Figura 13: Ampliaciones al Dictionary ABAP: diagrama de resumen

18 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de la tablas con estructuras append e includes de Customizing

Puede aadir campos adicionales en una tabla de SAP sin modificar la tabla y utilizando
estructuras append e includes de Customizing.

Estas son las caractersticas de las estructuras append:


Puede crear estructuras append para las tablas SAP sin preparativos de SAP, segn sus
requisitos empresariales.
Puede utilizar mltiples estructuras append con una sola tabla SAP.
Puede utilizar las estructuras append como estructuras normales en los programas.

Estas son las caractersticas de los includes de Customizing:

Los includes de Customizing vienen integrados en las tablas de SAP.


El cliente completa los includes de Customizing con los campos adicionales requeridos.
Los Includes de Customizing se proporcionan dentro de los Exits de cliente que tambin
pueden contener exits de cdigo fuente relacionados y exits de dynpro.

Si el desarrollador de aplicaciones SAP sabe de antemano que es necesario aadir campos


especficos de cliente a una de las tablas o estructuras proporcionadas por SAP, el
desarrollador incluir estos campos en la tabla mediante una sentencia de include de
Customizing.
El mismo Include de Customizing se puede presentar en mltiples tablas o estructuras. De
este modo se garantiza la coherencia en estas tablas y estructuras siempre que se utilice el
include (si se aaden campos).
No se producirn errores si no se implementan los Includes de Customizing proporcionados
por SAP.

Estructuras append

Figura 14: Estructuras append

Las estructuras append le permiten adjuntar campos a una tabla sin tener que modificar la
tabla propiamente dicha.
Tambin es posible asignar las estructuras append a una sola tabla. Sin embargo, una tabla
tiene varias estructuras append adjuntas a ella. Cada vez que se activa una tabla, el sistema
busca todas las estructuras append activas para la tabla en cuestin y las adjunta a la tabla.

Copyright . Reservados todos los derechos. 19


Captulo 2: Ampliacin de elementos de diccionario

Si se crea una estructura append, o se modifica y luego se activa, la tabla a la cual est
asignada tambin se activar. Todos los cambios realizados en la estructura append tambin
se observan en la tabla.
Puede usar los campos en estructuras append de programas ABAP como cualquier otro
campo en la tabla. Si copia una tabla a la que se ha adjuntado una estructura append, los
campos de la estructura append pasarn a ser campos normales de la tabla de destino.

Estructuras append en el momento del upgrade

Figura 15: Estructuras append en el momento del upgrade

La creacin de estructuras append en el rea de nombres del cliente las protege contra
sobrescritura durante un upgrade del sistema. Durante los upgrades se cargan nuevas
versiones de las tablas estndares.
Los campos incluidos en estructuras append activas se aaden entonces a las nuevas tablas
estndares cuando se activan por primera vez.
A partir del release 3.0, la secuencia de campos en el Dictionary ABAP puede ser diferente a
la secuencia de campos en la base de datos. Por lo tanto, no es necesaria la conversin de la
tabla de la base de datos cuando agrega una estructura append o inserta campos en una
estructura existente. Todos los ajustes necesarios de la estructura se llevan a cabo
automticamente mediante el ajuste del catlogo de la base de datos ALTER TABLE.
La definicin de la tabla se cambia cuando se activa en el Dictionary ABAP y el nuevo campo
se aade a la tabla de la base de datos.

Preste atencin a los siguientes puntos cuando utilice estructuras append:


Las tablas y las estructuras de SAP pueden clasificarse de acuerdo con una determinada
categora de ampliacin para evitar los problemas que surgen de las verificaciones de
Unicode en el sistema. Los campos de un include de Customizing o una estructura append
deben respetar esta clasificacin.
No puede crear estructuras append para tablas pool y cluster.
Si una tabla contiene un campo largo (ya sea la clase de datos LCHR o LRAW), no podr
ampliar la tabla utilizando una estructura append. Esto se debe a que los campos largos de
este tipo siempre deben ser el ltimo campo en sus respectivas tablas. No puede aadir
campos de una estructura append despus de los campos largos.

20 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de la tablas con estructuras append e includes de Customizing

Si usa una estructura append para ampliar una tabla SAP, los nombres de campo de la
estructura append deben estar en el rea de nombres de cliente, es decir, deben empezar
por YY o ZZ. Esto evita conflictos de asignacin de nombres con cualquier campo nuevo
que SAP pueda insertar en el futuro.

Includes de Customizing

Figura 16: Includes de Customizing

Los includes de Customizing no forman parte del rea de nombres de cliente. Los nombres de
todos los includes de Customizing comienzan con CI_. Esta convencin para fijar nombres
permite garantizar que no se producirn errores por includes de Customizing inexistentes. El
software estndar de SAP no ofrece ningn cdigo para los Includes de Customizing.
Crea los includes de Customizing mediante transacciones especiales de Customizing.
Algunos ya forman parte de las ampliaciones de SAP y puede crearlos utilizando la Gestin de
proyectos.
Los nombres de campo de los includes de Customizing deben estar dentro del rea de
nombres de cliente, como los nombres de campo de las estructuras append.
Las reglas para aadir campos de los includes de Customizing a su base de datos son las
mismas reglas para las estructuras append.

Copyright . Reservados todos los derechos. 21


Captulo 2: Ampliacin de elementos de diccionario

22 Copyright . Reservados todos los derechos.


Captulo 2
Ejercicio 1
Ampliacin de una tabla

Ejemplo empresarial
Usted trabaja como tcnico informtico para una agencia de viajes de gran tamao. Sus
empleados utilizan la transaccin BC425_## para visualizar la informacin sobre vuelos
cuando ayudan a los clientes. Querran tener ms informacin sobre un vuelo, como por
ejemplo, el nombre del piloto o el men principal.
Los datos de su vuelo se almacenan en la tabla SFLIGHT##. Debe aadir dos columnas a esta
tabla sin modificarla realmente.
Ample tablas mediante estructuras append.

1. Aada dos campos a la tabla SFLIGHT## sin modificarla.

2. Cree su estructura append ZASFLIGHT## para la tabla SFLIGHT## (## es su nmero de


grupo).

3. Brinde los detalles de una estructura append.

4. Seleccione una categora de ampliacin para la estructura append.

Copyright . Reservados todos los derechos. 23


Captulo 2
Solucin 1
Ampliacin de una tabla

Ejemplo empresarial
Usted trabaja como tcnico informtico para una agencia de viajes de gran tamao. Sus
empleados utilizan la transaccin BC425_## para visualizar la informacin sobre vuelos
cuando ayudan a los clientes. Querran tener ms informacin sobre un vuelo, como por
ejemplo, el nombre del piloto o el men principal.
Los datos de su vuelo se almacenan en la tabla SFLIGHT##. Debe aadir dos columnas a esta
tabla sin modificarla realmente.
Ample tablas mediante estructuras append.

1. Aada dos campos a la tabla SFLIGHT## sin modificarla.


a) Llame el Dictionary ABAP mediante la transaccin SE11. O bien, en el Navegador de
objetos, seleccione Editar objetoEditar objetos del Dictionary.

b) Indique SFLIGHT## como el nombre de la tabla y seleccione Mostrar.

2. Cree su estructura append ZASFLIGHT## para la tabla SFLIGHT## (## es su nmero de


grupo).
a) Seleccione Pasar aEstructura append o su pulsador correspondiente.

b) Indique ZASFLIGHT## como el nombre de la estructura append.

c) Introduzca una descripcin breve para la estructura append.

d) Grbela en el paquete que cre.

3. Brinde los detalles de una estructura append.


a) La estructura debe incluir los siguientes campos:
Descripcin de campo Nombre del campo Elemento de datos
Nombre del piloto YYPILOT S_PILNAME
Men YYMEAL S_MEAL

4. Seleccione una categora de ampliacin para la estructura append.


a) Seleccione Categorade ampliacin adicional.

b) Seleccione el pulsador No es posible ampliar.

c) Active la estructura append.


Si se produce un error, los detalles se visualizarn en el log de activacin.

24 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de la tablas con estructuras append e includes de Customizing

RESUMEN DE LA LECCIN
Ahora podr:
Ampliar tablas mediante estructuras append
Ampliar tablas mediante includes de Customizing

Copyright . Reservados todos los derechos. 25


Captulo 2
Leccin 2
Ampliacin de los textos de elementos de
datos

RESUMEN DE LA LECCIN
En este mdulo se explica cmo sobrescribir textos suministrados con elementos de datos de
SAP con textos especficos de cliente.

Ejemplo empresarial
Le gustara adaptar etiquetas de campo y documentacin para elementos de datos de SAP
con textos especficos de cliente. Por este motivo, se requieren los siguientes conocimientos:
Cmo cambiar etiquetas de campo y documentacin para elementos de datos de SAP sin
llevar a cabo una modificacin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Ampliar textos de elementos de datos

Ampliaciones de texto

Figura 17: Ampliaciones de texto: resumen

Las ampliaciones de texto abarcan etiquetas de campo especficas de cliente y


documentacin para elementos de datos de SAP. La funcin de ampliaciones de texto en
todas las aplicaciones de SAP que utilizan el elemento de datos determinado. Son
ampliaciones globales.

26 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de los textos de elementos de datos

Sobrescritura de etiquetas de campo de SAP

Figura 18: Sobrescritura de etiquetas de campo de SAP

Los programadores de aplicaciones de SAP definen etiquetas de campo de distintas


longitudes y una descripcin breve de cada elemento de datos.
Los clientes pueden sobrescribir los textos de etiqueta de campo con textos especficos del
cliente.
Puede proporcionar nuevas etiquetas de campo para todos los campos de dynpro de esta
manera.

Requisitos previos para sobrescribir una etiqueta de campo de SAP

Figura 19: Requisitos previos para sobrescribir una etiqueta de campo de SAP

Copyright . Reservados todos los derechos. 27


Captulo 2: Ampliacin de elementos de diccionario

Puede sobrescribir etiquetas de campo solo para aquellos campos de dynpro para los cuales
el desarrollador no ha asignado una descripcin. En estos casos, el atributo Dict. modificado
del campo de dynpro tiene el valor F.

La tabla siguiente muestra los valores que puede tener el atributo Dict. Modified:

Valor Funcin
ESPACIO La etiqueta de campo que encaja mejor en la
longitud del campo
1 Etiqueta de campo corta
2 Etiqueta de campo media
3 Etiqueta de campo larga
4 Etiqueta de campo para cabecera
V Transferencia de texto de variable desde el
Dictionary (como ESPACIO):
F Fijo (no hay transferencia de texto desde el
Dictionary)

Sobrescritura de etiquetas de campo de SAP: pasos

Figura 20: Sobrescritura de etiquetas de campo de SAP: pasos

La figura muestra el procedimiento para sobrescribir las etiquetas del campo SAP.

Para sobrescribir las etiquetas de campo de SAP

1. Editar ampliaciones de texto.


a) Seleccione Workbench ABAPUtilidadesAmpliacionesGestin de proyecto. O
bien, utilice la transaccin CMOD.

28 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de los textos de elementos de datos

2. Abra la etiqueta de campo y la ampliacin de documentacin (sobrescritura) para


elementos de datos SAP.
a) Seleccione Pasar aAmpliaciones globales.

Restablecer las etiquetas de campo del cliente

Figura 21: Textos sobrescritos durante upgrades

Si SAP vuelve a entregar etiquetas de campo existentes, tendr que restablecer sus etiquetas
de campo de cliente como parte de un upgrade de release o despus de importar nuevas
correcciones.
Si desea conservar sus propias etiquetas de campo del release anterior, seleccione la opcin
de men que restablece las etiquetas de campo de cliente. SAP recomienda restablecer
siempre las etiquetas de campo despus de realizar un upgrade de release.

Copyright . Reservados todos los derechos. 29


Captulo 2: Ampliacin de elementos de diccionario

Restablecer las etiquetas de campo de SAP

Figura 22: Restablecimiento de etiquetas de campo de SAP

Para deshacer las modificaciones en etiquetas de campos, seleccione la opcin de men


Restablecer SAP.
Puede restablecer etiquetas de campo mediante un programa que se ejecuta en proceso de
fondo. Este programa verifica todos los elementos de datos que ha editado y restablece sus
etiquetas de campo en caso necesario.
Para las etiquetas de campo principales, como los elementos de datos BUKRS, MANDT, etc.,
comience a restablecer cuando los contenidos de las tablas que utilizan BUKRS y MANDT no
se estn modificando.

Documentacin ampliada para elementos de datos

Figura 23: Documentacin ampliada para elementos de datos

30 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de los textos de elementos de datos

Cuando se ampla la documentacin del elemento de datos, se puede copiar la


documentacin de SAP como propia. En este caso, cuando presiona F1 para el campo de
dynpro correspondiente, el sistema visualizar la documentacin de SAP y la documentacin
especfica del cliente.
Se puede generar una lista de los elementos de datos modificados y editar la documentacin
de cliente al seleccionar las lneas correspondientes a los elementos.
Si desea visualizar la documentacin original de SAP, borre su documentacin.

Creacin de la documentacin del cliente

Figura 24: Creacin de documentacin de cliente

Cuando selecciona la ruta de men que se muestra en la figura, se abre un cuadro de dilogo
donde debe seleccionar una de las opciones, Texto original o Modelo.
Seleccione la opcin Texto original para aadir ms texto a la documentacin de SAP.
Seleccione la opcin Modelo para crear documentacin especfica del cliente sin el texto de la
documentacin de SAP.

RESUMEN DE LA LECCIN
Ahora podr:
Ampliar textos de elementos de datos

Copyright . Reservados todos los derechos. 31


Captulo 2: Ampliacin de elementos de diccionario

32 Copyright . Reservados todos los derechos.


Captulo 2

Evaluacin de la formacin

1. Cules de las siguientes caractersticas de las estructuras append le permiten ampliar


tablas?
Seleccione las respuestas correctas.

X A Puede utilizar mltiples estructuras append con una sola tabla SAP.

X B Puede utilizar las estructuras append como estructuras normales en los


programas.

X C Puede utilizar estructuras append en varias tablas.

X D Los clientes pueden crear una estructura append para una tabla SAP sin
preparacin por parte de SAP.

2. Cules de las siguientes caractersticas de los includes de Customizing le permiten


ampliar tablas?
Seleccione las respuestas correctas.

X A Algunos includes de Customizing ya vienen integrados en las tablas de SAP.

X B Los includes de Customizing pueden contener cdigo fuente o exits de dynpro


facilitados por SAP para procesar o visualizar los campos de la tabla.

X C Los includes de Customizing pueden utilizarse para crear tablas pool y cluster.

X D Los includes de Customizing garantizan la coherencia en todas las tablas y


estructuras afectadas.

3. De las siguientes opciones, cul debe modificarse para ampliar textos de los elementos
de datos?
Seleccione las respuestas correctas.

X A Estructuras append

X B Elementos de datos

X C Etiquetas de campo

X D Documentacin

Copyright . Reservados todos los derechos. 33


Captulo 2

Respuestas a la Evaluacin de la formacin

1. Cules de las siguientes caractersticas de las estructuras append le permiten ampliar


tablas?
Seleccione las respuestas correctas.

X A Puede utilizar mltiples estructuras append con una sola tabla SAP.

X B Puede utilizar las estructuras append como estructuras normales en los


programas.

X C Puede utilizar estructuras append en varias tablas.

X D Los clientes pueden crear una estructura append para una tabla SAP sin
preparacin por parte de SAP.

2. Cules de las siguientes caractersticas de los includes de Customizing le permiten


ampliar tablas?
Seleccione las respuestas correctas.

X A Algunos includes de Customizing ya vienen integrados en las tablas de SAP.

X B Los includes de Customizing pueden contener cdigo fuente o exits de dynpro


facilitados por SAP para procesar o visualizar los campos de la tabla.

X C Los includes de Customizing pueden utilizarse para crear tablas pool y cluster.

X D Los includes de Customizing garantizan la coherencia en todas las tablas y


estructuras afectadas.

3. De las siguientes opciones, cul debe modificarse para ampliar textos de los elementos
de datos?
Seleccione las respuestas correctas.

X A Estructuras append

X B Elementos de datos

X C Etiquetas de campo

X D Documentacin

34 Copyright . Reservados todos los derechos.


CAPTULO 3 Exits de cliente

Leccin 1
Manejo de proyectos de ampliacin 36

Leccin 2
Ampliacin de programas con exits de programa 44
Ejercicio 2: Implementacin de un exit de cliente: exit de programa 57

Leccin 3
Ampliacin de mens con exits de men 61
Ejercicio 3: Implementacin de un exit de cliente: exit de men 65

Leccin 4
Ampliacin de dynpros con exits de dynpro 69
Ejercicio 4: Implementacin de un exit de cliente: exit de dynpro 77

OBJETIVOS DEL CAPTULO

Gestionar proyectos de ampliacin


Crear proyectos de ampliacin
Manejo de exits de programa
Implementar grupos de funcin de exit
Ampliar mens mediante exits de men
Ampliar dynpros con exits de dynpro

Copyright . Reservados todos los derechos. 35


Captulo 3
Leccin 1
Manejo de proyectos de ampliacin

RESUMEN DE LA LECCIN
En este mdulo se explican los aspectos fundamentales de un proyecto de ampliacin que se
debe usar para implementar exits de cliente existentes.

Ejemplo empresarial
Desea conocer el principio de proyecto de ampliacin en el entorno de exit de cliente. Por este
motivo, se requieren los siguientes conocimientos:
Una buena comprensin de cmo crear, activar y desactivar un proyecto de ampliacin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Gestionar proyectos de ampliacin
Crear proyectos de ampliacin

Gestin de ampliaciones

Figura 25: Ampliaciones de aplicacin de SAP

Las ampliaciones de aplicacin permiten a los clientes ampliar sus funciones de aplicacin.
SAP planifica los exits de cliente previamente, lo cual generalmente est compuesto por
varios componentes.
Las ampliaciones de aplicacin son inactivas cuando se entregan, y el cliente las completa y
activa cuando es necesario.

36 Copyright . Reservados todos los derechos.


Leccin: Manejo de proyectos de ampliacin

Estas son las caractersticas de una ampliacin de aplicacin:


Cada ampliacin proporciona un conjunto de funciones definidas con precisin y
planificadas previamente.
La interfaz entre las funciones del cliente y SAP est definida con claridad.
Los clientes no necesitan saber cmo se implementan las aplicaciones SAP.
Los clientes no necesitan ajustar las ampliaciones durante un upgrade debido a nuevas
funciones desarrolladas por SAP.

Proyectos de ampliacin del cliente

Figura 26: Proyectos de ampliacin del cliente

Los programadores de las aplicaciones de SAP crean ampliaciones de SAP a partir de exits de
programa, de men y de dynpro. Para tal fin, el sistema proporciona una funcin de
administracin (cdigo de transaccin SMOD).
Se proporciona a los clientes un catlogo que contiene un resumen de las ampliaciones SAP
existentes. Ellos pueden combinar las ampliaciones de SAP que quieran en un proyecto de
ampliacin mediante la transaccin CMOD.

Ampliaciones y proyectos de ampliacin

Figura 27: Ampliaciones y proyectos de ampliacin

Copyright . Reservados todos los derechos. 37


Captulo 3: Exits de cliente

Las ampliaciones de SAP estn integradas por piezas de componentes. Estos componentes
incluyen exits de programa, exits de men y exits de dynpro. Un componente especfico
puede asignarse a solo una ampliacin de SAP. Esto garantiza que las ampliaciones de SAP
sean nicas. SAP combina todos los componentes que pertenecen a una ampliacin
determinada.
Los proyectos de ampliacin de cliente estn formados por ampliaciones de SAP. Puede
utilizar cada ampliacin de SAP individual solo una vez en un proyecto de ampliacin de
cliente. Esto garantiza que el proyecto de cliente sea nico. El cliente debe editar las
ampliaciones que se activarn juntas dentro de un proyecto de ampliacin.

Exits de cliente: gestin de ampliaciones

Figura 28: Procedimiento de creacin de ampliacin de SAP

Los siguientes pasos detallan el procedimiento para crear la ampliacin de SAP:


1. Los programadores de la aplicacin SAP planifican las posibles ampliaciones en una
aplicacin y definen los componentes necesarios.

2. El programador de aplicaciones combina estos componentes en las ampliaciones de SAP.

3. Los programadores documentan sus ampliaciones lo mejor que pueden de modo que los
clientes puedan implementar las ampliaciones sin necesidad de analizar el cdigo fuente
del programa o el cdigo fuente de dynpro.

38 Copyright . Reservados todos los derechos.


Leccin: Manejo de proyectos de ampliacin

Procedimiento en la sede del cliente

Figura 29: Procedimiento en la sede del cliente

El procedimiento general para las ampliaciones en las instalaciones de cliente se describe


a continuacin:
1. Cree un proyecto de ampliacin.

2. Seleccione las ampliaciones SAP que desea utilizar.

3. Edite sus componentes individuales mediante la funcin Gestin de proyecto.

4. Documente todo el proyecto de ampliacin.

5. Active el proyecto de ampliacin.


Esto activa todas las piezas de componentes del proyecto.

Copyright . Reservados todos los derechos. 39


Captulo 3: Exits de cliente

Proyectos de ampliacin del cliente

Figura 30: Creacin de un proyecto de ampliacin del cliente

Para crear un proyecto de ampliacin del cliente, siga estos pasos:

1. Ejecute el cdigo de transaccin CMOD para iniciar la funcin Gestin de proyecto.

2. Asigne un nombre a su proyecto de ampliacin.


SAP le recomienda disear una convencin para fijar nombres para todos sus proyectos.
Por ejemplo, puede incluir el nombre de la transaccin o el modulpool del proyecto en el
nombre del proyecto. El nombre del proyecto identifica de forma exclusiva la ampliacin
en el sistema.

3. Acceda a los atributos del proyecto e introduzca un texto breve que describa el proyecto
de ampliacin.
El sistema introduce los dems atributos (status, sello con el nombre y cronomarcador)
para registrar la creacin y modificacin de detalles.

40 Copyright . Reservados todos los derechos.


Leccin: Manejo de proyectos de ampliacin

Asignacin de ampliaciones de SAP a proyectos del cliente

Figura 31: Asignacin de ampliaciones de SAP a proyectos del cliente

Puede utilizar la funcin de Gestin de proyecto para asignar ampliaciones de SAP a


proyectos de ampliacin del cliente. Introduzca los nombres de las ampliaciones de SAP que
desea utilizar en la pantalla adecuada.
La funcin de bsqueda le ofrece una vista tipo catlogo de las ampliaciones de SAP actuales.
A partir de ah, puede seleccionar sus ampliaciones deseadas.

Edicin de componentes

Figura 32: Edicin de componentes

Puede utilizar la funcin de Gestin de producto para editar los componentes del proyecto de
ampliacin.

Copyright . Reservados todos los derechos. 41


Captulo 3: Exits de cliente

En funcin de si el componente que est editando es un mdulo de funciones, una opcin de


men o una subscreen, pasar a Function Builder (una ventana de dilogo para introducir
opciones de men) o a Screen Painter.

Activacin de proyectos de ampliacin

Figura 33: Active los proyectos de ampliacin

La activacin de un proyecto de ampliacin afecta a todos sus componentes. Luego de la


activacin satisfactoria, el proyecto tiene el status activo.
Durante la activacin, el sistema vuelve a generar todos los programas, dynpros y mens con
componentes que pertenecen al proyecto. Tenga en cuenta que el sistema volver a generar
programas al momento de la ejecucin.
Despus de la activacin, puede observar el efecto de las ampliaciones en sus funciones de
aplicacin.
La funcin Desactivar le permite reiniciar el status de un proyecto de ampliacin activo a
inactivo.

Transporte de proyectos

Figura 34: Transporte de proyectos

Cada vez que cree un proyecto de ampliacin, debe asignarlo a una orden de modificacin.
Cada uno de los objetos de Repository relacionados, como programas, subscreens, exits de
men, etc., deberan asignarse a la misma orden de modificacin.

42 Copyright . Reservados todos los derechos.


Leccin: Manejo de proyectos de ampliacin

Puede transportar toda la ampliacin al mismo tiempo utilizando la misma orden de


modificacin.

RESUMEN DE LA LECCIN
Ahora podr:
Gestionar proyectos de ampliacin
Crear proyectos de ampliacin

Copyright . Reservados todos los derechos. 43


Captulo 3
Leccin 2
Ampliacin de programas con exits de
programa

RESUMEN DE LA LECCIN
En este mdulo se explica cmo funciona un exit de programa y cmo se implementa
mediante un exit de cliente. Tambin se detallan los usos posibles de un exit de programa.

Ejemplo empresarial
Necesita buscar exits de programa que se implementan mediante exits de cliente y usarlos
para ampliar las funciones. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de cmo buscar exits de programa
Una buena comprensin de cmo utilizar exits de programa para ampliar las funciones

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Manejo de exits de programa
Implementar grupos de funcin de exit

Exits de programa

Figura 35: Resumen de exits de programa

Los exits de programa permiten a los clientes implementar lgica adicional en funciones
adicionales. Los programadores de aplicaciones de SAP definen el lugar en el que se insertan
los exits de mdulo de programa y qu tipo de datos pueden transferir estos exits de mdulo.

44 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

Los programadores de SAP tambin crean los mdulos de funcin correspondientes para un
exit, que se completan con texto breve, interfaz y documentacin. La documentacin de los
mdulos de funcin tambin describe el propsito previsto de cada exit de programa.
Usted escribe el cdigo fuente de los mdulos de funciones en el Function Builder. Si es
necesario, tambin debe crear pantallas, elementos de texto e Includes dentro del grupo de
funciones.
El sistema procesa su cdigo ABAP por primera vez cuando se activa como un todo el
proyecto de ampliacin (del cual su mdulo de funciones es un componente). Los exits de
programa no producen ningn impacto hasta que se activa el proyecto de ampliacin.

Exits de programa: arquitectura

Figura 36: Exits de programa: arquitectura

La figura muestra el flujo de un programa que proporciona una ampliacin en forma de exit de
programa.
El mdulo de funciones de exit se llama en un punto predefinido del cdigo fuente. El
desarrollador de aplicaciones de SAP define este punto. Dentro del mdulo de funcin, la
codificacin en el rea de nombre del cliente se llama utilizando un programa de Include.

Copyright . Reservados todos los derechos. 45


Captulo 3: Exits de cliente

Exits de programa: sintaxis

Figura 37: Exits de programa: sintaxis

Los programadores de aplicaciones de SAP definen la llamada del mdulo de funciones


mediante la sentencia ABAP CALL CUSTOMER-FUNCTION 'NNN', donde 'NNN' es un nmero
de tres dgitos. Los programadores de aplicaciones de SAP crean tambin el grupo de
funciones y el mdulo de funciones correspondientes.
Estos mdulos de funciones siempre pertenecen a grupos de funciones cuyos nombres
empiezan por X, es decir, el grupo de funciones X.

En la tabla siguiente se detalla la convencin para fijar nombres que se aplica en los
mdulos de funciones:

Prefijo EXIT
Infijo Nombre del programa que llama el mdulo
de funciones
Sufijo Nmero de tres dgitos

Las tres partes del nombre estn separadas por un carcter de subrayado.
La sentencia CALL CUSTOMER-FUNCTION solo se ejecuta cuando se activa el proyecto de
ampliacin. Si se llama varias veces el mismo mdulo de funciones, la activacin ser vlida
para todas las llamadas.

46 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

Bsqueda de exits de programa

Figura 38: Bsqueda de exits de programa

La pregunta ms frecuente sobre ampliaciones es cmo puedo determinar si un programa


de aplicacin ofrece un exit de programa? Se trata de una cuestin central para todo tipo de
ampliaciones. Existen diferentes formas de encontrar una respuesta a esta pregunta.

Puede utilizar las siguientes maneras para determinar si un programa de aplicacin


ofrece un exit de programa:
Busque dentro de un programa de dilogo individual durante la ejecucin.
Seleccione SistemaStatus. El sistema muestra un cuadro de dilogo que contiene el
nombre del programa de aplicacin. Por ejemplo, un string de caracteres adecuado sera
"CALL CUSTOMER". Utilice el pulsador Buscar para buscar el string de manera global en el
programa. Si no tiene xito con su bsqueda, puede ampliar el dominio de la bsqueda.
Para ello, ejecute un anlisis del entorno para el programa correspondiente y busque el
string de caracteres especfico en el entorno del programa.
Utilice las herramientas de bsqueda.
En el lado derecho del grfico, puede ver cmo puede buscar el nombre de la ampliacin
necesaria mediante herramientas de bsqueda. Puede delimitar la bsqueda en el Sistema
de Informacin del Repository con los siguientes criterios:
- Package (intente tambin entradas genricas)
- Nombre tcnico de la ampliacin

Copyright . Reservados todos los derechos. 47


Captulo 3: Exits de cliente

Edicin de exits de programa

Figura 39: Edicin de exits de programa

La figura muestra cmo se editan los mdulos de funcin para los exits de programa.

Para editar exits de programa


Los pasos para editar exits de programa son los siguientes:

1. Ejecute la transaccin CMOD para utilizar la funcin Gestin de proyecto.

2. Utilice el botn de seleccin para editar componentes y acceder directamente al editor de


mdulos de funciones. Asegrese de que el editor se encuentre en modo de visualizacin.

Nota:
No modifique el mdulo de funciones, especialmente la interfaz. El mdulo de
funciones contiene una sentencia INCLUDE para un programa Include que
crea en el rea de nombres de cliente.

3. Haga doble clic en el objeto (programa de include). Esto crea y abre el programa de
Include en el editor, donde puede indicar el cdigo fuente.

48 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

Estructura de un grupo de funciones

Figura 40: Estructura de un grupo de funciones

Para utilizar un grupo de funciones X, debe entender cmo se organiza un grupo de funciones
normal.
Un grupo de funciones est compuesto por un programa principal (de la clase grupo de
funcin) e Includes. El sistema asigna nombres exclusivos a includes de distintos objetos.
Algunos de los nombres de include son simples propuestas y otros no se pueden modificar.
El Include TOP almacena datos globales y se genera de manera automtica cuando se crea un
grupo de funciones.
Los mdulos de funcin se almacenan en Includes con numeracin secuencial. Los Includes,
a la vez, se almacenan todos en un include que finaliza con UXX.

Nota:
Aunque puede elegir libremente los nombres de los includes para todos los dems
objetos (subrutinas, mdulos, eventos, etc.), se recomienda aceptar los nombres
propuestos.

Copyright . Reservados todos los derechos. 49


Captulo 3: Exits de cliente

Estructura de un grupo de funciones de exit

Figura 41: Estructura de un grupo de funciones de exit

Un programador de aplicaciones SAP crea grupos de funcin de exit para los exits de
ampliacin. Estos grupos de funcin de exit estn compuestos por programas de Include que
comienzan con LX o ZX. Solo puede editar los includes que empiecen por Z, porque son los
que se almacenan en el rea de nombres de cliente.
No puede aadir ms mdulos de funcin a un grupo de funciones.
Los programas de Include ZXAAAUNN incluyen el cdigo fuente del cliente para los mdulos
de funciones de un exit de mdulo de funciones.

Datos globales de un grupo de funciones de exit

Figura 42: Datos globales de un grupo de funciones de exit

Los programadores de aplicaciones de SAP pueden declarar datos globales en el programa


de Include LXAAATAP.
Puede declarar sus datos globales en el programa de Include ZXAAATOP.

50 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

El programa de Include LXAAATOP contiene adems la sentencia FUNCTION-POOL, que no


se puede modificar. En consecuencia, incluya siempre la clase de mensaje entre parntesis
mientras se visualizan los mensajes: por ejemplo, MESSAGE E500(EU).

Bloques de procesamiento especficos de cliente

Figura 43: Bloques de procesamiento especficos de cliente

La sentencia INCLUDE del Include ZXAAAUNN se encuentra en un bloque FUNCTION


-ENDFUNCTION. Esto significa que no se permiten eventos, subrutinas (FORM) ni mdulos
(MODULE) dentro de este Include (es decir, en el bloque FUNCTION-ENDFUNCTION).
Necesita crearlos en Includes diferentes. Las declaraciones de datos realizadas aqu con la
sentencia DATA son vlidas localmente en este mdulo de funciones.
Un programador de aplicaciones de SAP tambin puede hacer una propuesta para el cdigo
fuente. En tal caso, el sistema crea INCLUDE LXAAFNN, donde "NN" es el nmero interno del
mdulo de funciones del Include LXAAAUXX. El sistema proporciona documentacin en la
ampliacin de SAP. Puede copiar el cdigo fuente de este Include en su programa de Include
de cliente ZXAAAUNN mediante la transaccin Gestin de proyectos.
Puede crear sus propios elementos de texto para el grupo de funciones.

Copyright . Reservados todos los derechos. 51


Captulo 3: Exits de cliente

Otros objetos SAP en un grupo de funciones de exit

Figura 44: Otros objetos SAP en un grupo de funciones de exit

Los programadores de aplicaciones de SAP pueden brindar subrutinas predeterminadas en el


include LXAAAF01.

La tabla siguiente detalla los Includes adicionales que contienen subobjetos especficos:

Includes Subobjetos especficos


LX...F01 Subrutinas ofrecidas por SAP
LX...E01 Los eventos que pertenecen al grupo de
funciones X
LX...O01 Mdulos de proceso antes de la salida (PBO)
para las pantallas que se entregarn
LX...I01 Los mdulos de proceso despus de la
entrada (PAI) correspondientes

52 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

Objetos de cliente en un grupo de funciones de exit

Figura 45: Objetos de cliente en un grupo de funciones de exit

El cdigo para las subrutinas personalizadas, los mdulos y los eventos interactivos dentro de
un grupo de funciones X se organizar en programas de Include diferentes que, a la vez, se
incluyen en el programa de Include ZXAAAZZZ.

Los dems includes deben respetar la siguiente convencin para fijar nombres:

Includes Subobjetos especficos


ZXAAAFNN Subrutinas
ZXAAAONN Mdulos PBO
ZXAAAINN Mdulos PAI
ZXAAAENN Eventos

Copyright . Reservados todos los derechos. 53


Captulo 3: Exits de cliente

Pantallas de cliente

Figura 46: Pantallas de cliente

Puede usar CALL SCREEN para llamar sus pantallas. Cree los programas de Include
relacionados para los mdulos PBO y PAI en el programa de Include ZXAAAZZZ.
Utilice la navegacin hacia adelante (haga doble clic en un objeto) para crear sus pantallas y
mdulos.
Sus pantallas estn asignadas al grupo de funcin X (programa SAPLXAAA). Los mdulos
PBO y PAI se codifican en los Includes ZXAAAOnn y ZXAAAInn que nuevamente deben
incluirse en ZXAAAZZZ.

Exit de programa y grupo de funciones de exit

Figura 47: Resumen: exits de programa

54 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

Puede ampliar las aplicaciones de SAP aadiendo su lgica de procesamiento en puntos


predefinidos.

Estas ampliaciones pueden incluir los siguientes elementos:


Sus pantallas con la lgica de procesamiento correspondiente
Interfaz grfica de usuario
Elementos de texto creados por los clientes

Copyright . Reservados todos los derechos. 55


Captulo 3: Exits de cliente

56 Copyright . Reservados todos los derechos.


Captulo 3
Ejercicio 2
Implementacin de un exit de cliente: exit de
programa

Ejemplo empresarial
Sus compaeros de trabajo le han pedido que modifique la transaccin BC425_## de modo
que cada vez que intenten visualizar los detalles de un vuelo en una fecha pasada aparezca un
mensaje de advertencia. Ajuste el programa de forma que aparezca un mensaje de
advertencia cuando seleccione un vuelo de una fecha pasada.
No modifique el programa SAP.
Implemente una ampliacin mediante un exit de programa.

Tarea 1
Compruebe si es posible ampliar la transaccin.

1. Ha implementado el desarrollador de SAP un exit de cliente para la transaccin en


cuestin que se pueda usar para aadir las funciones necesarias?

2. Cmo se llama la ampliacin correspondiente? Seleccione la ampliacin con la que podr


implementar una comprobacin adicional cuando abandone la primera pantalla de la
transaccin.

Tarea 2
Implemente la ampliacin y verifique sus resultados.

1. Asigne el nombre TG##CUS1 al proyecto de ampliacin.

2. Programe la comprobacin siguiente: Determine si la fecha que indic es anterior a la


fecha actual. En caso afirmativo, emita una advertencia correspondiente. Para ello, use el
mensaje 011 de la clase de mensaje BC425.

3. Verifique los resultados.

Copyright . Reservados todos los derechos. 57


Captulo 3
Solucin 2
Implementacin de un exit de cliente: exit de
programa

Ejemplo empresarial
Sus compaeros de trabajo le han pedido que modifique la transaccin BC425_## de modo
que cada vez que intenten visualizar los detalles de un vuelo en una fecha pasada aparezca un
mensaje de advertencia. Ajuste el programa de forma que aparezca un mensaje de
advertencia cuando seleccione un vuelo de una fecha pasada.
No modifique el programa SAP.
Implemente una ampliacin mediante un exit de programa.

Tarea 1
Compruebe si es posible ampliar la transaccin.

1. Ha implementado el desarrollador de SAP un exit de cliente para la transaccin en


cuestin que se pueda usar para aadir las funciones necesarias?
a) Seleccione SistemaStatus.
Puede ver el nombre del programa correspondiente SAPBC425_FLIGHT##.

2. Cmo se llama la ampliacin correspondiente? Seleccione la ampliacin con la que podr


implementar una comprobacin adicional cuando abandone la primera pantalla de la
transaccin.
a) Encuentre un exit de cliente.
Puede buscar el string de caracteres CALL CUSTOMERFUNCTION globalmente en el
programa principal o usar el sistema info Repository para buscar ampliaciones que
contengan el nombre del programa en el nombre tcnico del componente (restrinja la
bsqueda con EXIT_SAPBC425_FLIGHT##_* en el nombre del componente).
La ampliacin que est buscando tiene el nombre SBC##E01. La documentacin para
la ampliacin muestra que se ha previsto para comprobaciones adicionales en la
primera pantalla de la transaccin.

Tarea 2
Implemente la ampliacin y verifique sus resultados.

1. Asigne el nombre TG##CUS1 al proyecto de ampliacin.


a) Ejecute la transaccin CMOD.

b) Seleccione HerramientasWorkbench
ABAPUtilidadesAmpliacionesGestin de proyectos.

c) Cree un proyecto con el nombre TG##CUS1 y grbelo.

58 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de programas con exits de programa

2. Programe la comprobacin siguiente: Determine si la fecha que indic es anterior a la


fecha actual. En caso afirmativo, emita una advertencia correspondiente. Para ello, use el
mensaje 011 de la clase de mensaje BC425.
a) Incluya la ampliacin SBC##E01, que encontr en su proyecto.

3. Verifique los resultados.


a) Edite los componentes. Abra el cdigo fuente del mdulo de funcin de exit y haga
doble clic para crear el Include. El cdigo fuente que crea podra ser similar a:
IF flightfldate < sydatum. MESSAGE w011(bc425) WITH sydatum. ENDIF.

b) Active el Include.

c) Vuelva a la Gestin de proyectos y active el proyecto de ampliacin.

Copyright . Reservados todos los derechos. 59


Captulo 3: Exits de cliente

RESUMEN DE LA LECCIN
Ahora podr:
Manejo de exits de programa
Implementar grupos de funcin de exit

60 Copyright . Reservados todos los derechos.


Captulo 3
Leccin 3
Ampliacin de mens con exits de men

RESUMEN DE LA LECCIN
En este mdulo se explica cmo se implementan los exits de men.

Ejemplo empresarial
Necesita buscar y usar exits de men implementados mediante exits de cliente. Por este
motivo, se requieren los siguientes conocimientos:
Una buena comprensin de cmo funcionan los exits de men implementados mediante
exits de cliente.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Ampliar mens mediante exits de men

Exits de men

Figura 48: Resumen de exits de men

Los exits de men le permiten aadir sus funciones a las opciones de men en mens de SAP.
Para tal fin, los programadores de aplicaciones SAP reservan ciertas opciones de men en la
interfaz de usuario grfica (GUI). Puede especificar el texto de entrada para sus funciones en
las opciones de men.

Copyright . Reservados todos los derechos. 61


Captulo 3: Exits de cliente

Las opciones de men se hacen visibles en el men de SAP solo despus de activar los exits
de men. Cuando seleccione la opcin de men correspondiente, la aplicacin de SAP llama
un exit de programa que contenga las funciones especficas de cliente.

Necesidades de exit de men

Figura 49: Necesidades de exit de men

Para proporcionar exits de men, los programadores de la aplicacin SAP deben suministrar
cdigos de funcin que comiencen con el signo ms (+) para la GUI. Estos cdigos de funcin
se encuentran inactivos y no aparecen en el GUI hasta que los activa en un proyecto de
ampliacin.

Exits de men y exits de programa

Figura 50: Exits de men y exits de programa

62 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de mens con exits de men

Los programadores de aplicaciones SAP determinan dnde lee un programa los cdigos de
funcin adicionales y cmo reacciona. Para ello utilizan un exit de programa o una funcin
predefinida.

Asignacin de nombres y edicin de exits de men

Figura 51: Asignacin de nombres y edicin de exits de men

Puede editar los exits de men mediante la transaccin CMOD para la Gestin de proyecto.
Si selecciona el pulsador para editar componentes (representado con un icono de lpiz),
aparece un cuadro de dilogo. Puede indicar descripciones breves dependientes del idioma
para cada opcin de men adicional aqu.
No puede realizar ninguna modificacin en la GUI.

Copyright . Reservados todos los derechos. 63


Captulo 3: Exits de cliente

64 Copyright . Reservados todos los derechos.


Captulo 3
Ejercicio 3
Implementacin de un exit de cliente: exit de
men

Ejemplo empresarial
Los nuevos mensajes de advertencia en la transaccin BC425_## ayudan a sus colegas a
evitar seleccionar vuelos de fechas pasadas. Sin embargo, quieren ms.
Desean crear un enlace en la transaccin que utilizan para visualizar los vuelos. El enlace les
permitir mostrar una lista de reservas de sus vuelos actuales desde la transaccin de
visualizacin de vuelos. Siempre ha utilizado un programa adecuado que genera listas. Sin
embargo, los usuarios deben llamarlo por separado e indicar los datos actuales en el dynpro
de seleccin del programa que se denomina SAPBC425_BOOKING_##.
Implementar una ampliacin con un exit de men en combinacin con un exit de programa.

Tarea 1
Examine la transaccin BC425_##. Es posible llamar el programa con una opcin de men
en la transaccin?

1. Ha implementado el desarrollador de SAP un exit de cliente que pueda usar para aadir
las funciones necesarias para la transaccin en cuestin?

2. Cmo se llama la ampliacin correspondiente? Seleccione la ampliacin que le permita


implementar una ampliacin de men.

Tarea 2
Implemente la ampliacin y verifique sus resultados.

1. Asigne el nombre TG##CUS2 al proyecto de ampliacin.

2. Edite los componentes de la ampliacin que encontr. Use la entrada del men
complementario para llamar el programa SAP425_BOOKING_##. Asegrese de que el
usuario pueda regresar a la lista de vuelos.

3. Transfiera los datos de transaccin actuales a la imagen de seleccin del programa que
desee llamar. Para ello, use los datos disponibles en el exit de programa.

Copyright . Reservados todos los derechos. 65


Captulo 3
Solucin 3
Implementacin de un exit de cliente: exit de
men

Ejemplo empresarial
Los nuevos mensajes de advertencia en la transaccin BC425_## ayudan a sus colegas a
evitar seleccionar vuelos de fechas pasadas. Sin embargo, quieren ms.
Desean crear un enlace en la transaccin que utilizan para visualizar los vuelos. El enlace les
permitir mostrar una lista de reservas de sus vuelos actuales desde la transaccin de
visualizacin de vuelos. Siempre ha utilizado un programa adecuado que genera listas. Sin
embargo, los usuarios deben llamarlo por separado e indicar los datos actuales en el dynpro
de seleccin del programa que se denomina SAPBC425_BOOKING_##.
Implementar una ampliacin con un exit de men en combinacin con un exit de programa.

Tarea 1
Examine la transaccin BC425_##. Es posible llamar el programa con una opcin de men
en la transaccin?

1. Ha implementado el desarrollador de SAP un exit de cliente que pueda usar para aadir
las funciones necesarias para la transaccin en cuestin?
a) Busque una ampliacin con un componente cuyo nombre contenga el nombre del
programa (delimite la bsqueda mediante el nombre de componente
SAPBC425_FLIGHT##*).

2. Cmo se llama la ampliacin correspondiente? Seleccione la ampliacin que le permita


implementar una ampliacin de men.
a) El nombre de la ampliacin es SBC##E02.

Tarea 2
Implemente la ampliacin y verifique sus resultados.

1. Asigne el nombre TG##CUS2 al proyecto de ampliacin.


a) Ejecute la transaccin CMOD.

b) Seleccione HerramientasWorkbench
ABAPUtilidadesAmpliacionesGestin de proyectos.

c) Indique TG##CUS2 en el campo Proyecto y grbelo.

2. Edite los componentes de la ampliacin que encontr. Use la entrada del men
complementario para llamar el programa SAP425_BOOKING_##. Asegrese de que el
usuario pueda regresar a la lista de vuelos.
a) Incluya la ampliacin SBC##E02, que encontr en su proyecto.

b) Edite los componentes de la ampliacin.

66 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de mens con exits de men

c) Asigne un texto de men.

d) Haga doble clic en el exit de programa para editarlo.

e) Cree el Include de cliente mediante la navegacin hacia delante.

3. Transfiera los datos de transaccin actuales a la imagen de seleccin del programa que
desee llamar. Para ello, use los datos disponibles en el exit de programa.
a) El texto fuente del include del grupo ## debera ser el siguiente:

SUBMIT sapbc_425_booking_## WITH so_car = flightcarrid WITH so_con =


flightconnid WITH so_fld = flightfldate AND RETURN.

b) Active su programa de include.

c) Active el proyecto de ampliacin.

d) Verifique los resultados.

Copyright . Reservados todos los derechos. 67


Captulo 3: Exits de cliente

RESUMEN DE LA LECCIN
Ahora podr:
Ampliar mens mediante exits de men

68 Copyright . Reservados todos los derechos.


Captulo 3
Leccin 4
Ampliacin de dynpros con exits de dynpro

RESUMEN DE LA LECCIN
En este mdulo se explica cmo buscar un exit de dynpro que se implementa mediante un
exit de cliente.

Ejemplo empresarial
Necesita buscar y usar exits de dynpro disponibles en la versin estndar del sistema SAP.
Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de cmo buscar y usar exits de dynpro implementados mediante
exits de cliente.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Ampliar dynpros con exits de dynpro

Exits de dynpro

Figura 52: Resumen de exits de dynpro

Los exits de dynpro le permiten utilizar secciones reservadas de un dynpro principal. Estas
secciones reservadas son reas de subscreen. Puede visualizar la informacin adicional o los
datos introducidos en estas reas de subscreen. Puede definir los campos de entrada y de
salida necesarios en un dynpro de cliente mediante un subscreen.

Copyright . Reservados todos los derechos. 69


Captulo 3: Exits de cliente

Subscreens en general

Figura 53: Subscreens en general

Las reas de subscreen son reas rectangulares del dynpro que el sistema reserva para
mostrar dynpros adicionales en el tiempo de ejecucin.

Una llamada de subscreen normal

Figura 54: Llamada de subscreen normal

El sistema determina qu dynpro se debe visualizar en un rea de subscreen en un evento de


Proceso antes de la salida (PBO).
La sintaxis general para llamar un dynpro normal es el siguiente:
CALL SUBSCREEN <SUBSCREEN-AREA> INCLUDING <PRG> <DYNPRO_NO>
Para cada subscreen, los eventos de Proceso despus de la entrada (PAI) y de PBO se
procesan tal como en los dynpros normales.

70 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de dynpros con exits de dynpro

La secuencia de llamadas "CALL SUBSCREEN" de la lgica de proceso del dynpro principal


determina la secuencia en que el sistema procesa la lgica de flujo de los subscreens
individuales.

Recuerde los siguientes puntos cuando llama un subscreen normal:


Puede procesar el cdigo de funcin solo mediante el dynpro principal.
No puede indicar un nombre para el campo de comando de un subscreen.
No puede definir statuss de GUI para los subscreens.
No puede indicar ningn valor para el dynpro siguiente en el control de flujo de un
subscreen.

Definicin de exits de dynpro

Figura 55: Definicin de exits de dynpro

Un programador de aplicaciones de SAP puede reservar varias reas de subscreen para un


dynpro.

Por lo general, SAP define los exits de dynpro. Anote los siguientes puntos:
Se llama el subscreen durante el control del flujo del dynpro principal con la sentencia
CALL CUSTOMER-SUBSCREEN.
El nombre del rea subscreen se define sin apstrofes.
El grupo de funciones al cual pertenece el subscreen se define de manera esttica en
apstrofes. Sin embargo, la variable de nmero de dynpro puede mantenerse utilizando
variables de programa que actan como marcador de posicin para los nmeros de
dynpro. Una variable de programa siempre debe tener cuatro lugares.

Las llamadas de exit de dynpro son inactivas en un principio. Cuando el dynpro se procesa, el
sistema se salta los exits de dynpro.
El sistema procesa el exit de dynpro nicamente despus de haber creado un subscreen
correspondiente en un proyecto de ampliacin y de haber activado este proyecto.

Copyright . Reservados todos los derechos. 71


Captulo 3: Exits de cliente

Las subscreens se crean en grupos de funciones X para los exits de dynpro. Normalmente,
estos grupos de funciones tambin incluyen exits de programa.

Llamada de subscreens de cliente

Figura 56: Llamada de subscreens de cliente

El sistema incluye un subscreen en el rea de subscreen que el programador de la aplicacin


de SAP define siempre que la sentencia CALL CUSTOMER-SUBSCREEN <AREA> INCLUDING
<X-FUNCTION-POOL> <SCREEN_NUMBER> se produzca en el PBO en el control de flujo de
un dynpro. En este momento, el sistema procesa todos los mdulos que se llaman durante el
evento de PBO del subscreen.
El evento PAI de una subscreen se procesa cuando el dynpro llama el subscreen durante su
evento PAI. Para procesar el evento PAI de un subscreen, el sistema utiliza la sentencia CALL
CUSTOMERSUBSCREEN <AREA>.

72 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de dynpros con exits de dynpro

Transporte de datos a subscreens

Figura 57: Transporte de datos a subscreens

El grupo de funciones X que contiene su subscreen no conoce los datos globales del
programa de llamada. Por lo tanto, los programadores de SAP usan exits de programa para
brindar estos datos de forma explcita a los subscreens.
A fin de facilitar el transporte de datos, el sistema llama los mdulos del control de flujo del
programa de llamada que contienen exits de programa para transferir datos mediante
parmetros de interfaz.
Los mdulos de funciones de exit correspondientes estn en el mismo grupo de funciones X
en el que se crea la subscreen de cliente.

Copyright . Reservados todos los derechos. 73


Captulo 3: Exits de cliente

Transporte de datos desde subscreens

Figura 58: Transporte de datos desde subscreens

Los datos se deben transportar tambin en direccin contraria, porque el programa de


llamada desconoce tambin los datos globales del grupo de funciones X que contiene las
entradas de usuario en su subscreen. Por ello, los programadores de aplicaciones de SAP
usan exits de programa para devolver los datos modificados en el subscreen al programa de
llamada.
El sistema llama un mdulo en el evento PAI del dynpro principal para hacer esto. El dynpro
principal contiene un exit de programa que puede enviar los datos globales relevantes para el
grupo de funciones X.

74 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de dynpros con exits de dynpro

Asignacin de nombres y edicin de exits de dynpro

Figura 59: Asignacin de nombres y edicin de exits de dynpro

El CMOD de transaccin Gestin de proyecto se utiliza para editar los exits de dynpro.

Los nombres tcnicos de los exits de dynpro estn compuestos por los siguientes
elementos:
El nombre del programa de llamada
El nmero de dynpro de cuatro dgitos para el dynpro principal
El nombre del rea de subscreen, seguido del nombre del programa del grupo de funcin X
y el nmero de subscreen

Copyright . Reservados todos los derechos. 75


Captulo 3: Exits de cliente

Edicin de subscreens

Figura 60: Edicin de subscreens

El entorno de desarrollo de SAP permite crear subscreens de cliente y los mdulos PBO y PAI
correspondientes como parte de la navegacin hacia adelante.
Cuando crea el subscreen, asegrese de que la clase de dynpro sea Subscreen.
No puede modificar las interfaces en el grupo de funcin X al que pertenece la subscreen y los
exits de programa, ni aadir sus mdulos de funciones propios.

76 Copyright . Reservados todos los derechos.


Captulo 3
Ejercicio 4
Implementacin de un exit de cliente: exit de
dynpro

Ejemplo empresarial
"Sera estupendo si la lista detallada de la transaccin BC425_## para mostrar los vuelos
pudiera mostrar ms datos".
Acepta este nuevo desafo que le plantean sus compaeros de trabajo e intenta solucionar el
problema sin modificar la transaccin. Concretamente, empieza por buscar un modo de
aadir varios campos nuevos al segundo dynpro de esta transaccin (nmero de dynpro
200).

Tarea 1
Cules son las opciones disponibles para colocar campos adicionales en un dynpro?
Verifique el dynpro 200 en la transaccin BC425_## y vea si esto es posible.

1. Existe un exit de dynpro para ampliar el dynpro?

2. Si es as, cmo se llama la ampliacin correspondiente?

Tarea 2
Implemente la ampliacin para aadir tres campos al dynpro (nombre de proyecto:
TG##CUS3):

1. Aada tres campos al dynpro.


Debera aparecer lo siguiente:
Nombre del piloto
Men
El nmero de tres cifras del vuelo actual

Tarea 3

1. Ejecute la transaccin BC425_## y verifique sus resultados.

Copyright . Reservados todos los derechos. 77


Captulo 3
Solucin 4
Implementacin de un exit de cliente: exit de
dynpro

Ejemplo empresarial
"Sera estupendo si la lista detallada de la transaccin BC425_## para mostrar los vuelos
pudiera mostrar ms datos".
Acepta este nuevo desafo que le plantean sus compaeros de trabajo e intenta solucionar el
problema sin modificar la transaccin. Concretamente, empieza por buscar un modo de
aadir varios campos nuevos al segundo dynpro de esta transaccin (nmero de dynpro
200).

Tarea 1
Cules son las opciones disponibles para colocar campos adicionales en un dynpro?
Verifique el dynpro 200 en la transaccin BC425_## y vea si esto es posible.

1. Existe un exit de dynpro para ampliar el dynpro?


a) Examine la lgica del flujo de los dynpros en busca del string de caracteres CALL
CUSTOMERSUBSCREEN. Ver que el dynpro 200 de la transaccin BC425_##
ofrece un exit de dynpro.

2. Si es as, cmo se llama la ampliacin correspondiente?


a) Determine el nombre de la ampliacin, por ejemplo, buscando en el sistema de
informacin de repository.
El nombre de la ampliacin es SBC##E03.

Tarea 2
Implemente la ampliacin para aadir tres campos al dynpro (nombre de proyecto:
TG##CUS3):

1. Aada tres campos al dynpro.


Debera aparecer lo siguiente:
Nombre del piloto
Men
El nmero de tres cifras del vuelo actual

a) Haga doble clic en el nmero de dynpro que aparece en la vista de componente del
proyecto de ampliacin para crear el subscreen.

b) En Screen Painter use la opcin diseo para ubicar los campos en el dynpro.
Piloto y Men se proporcionan desde la estructura sflight##, freeseats que es un
campo libre definido que debe definirse al principio en el Include TOP.

78 Copyright . Reservados todos los derechos.


Leccin: Ampliacin de dynpros con exits de dynpro

c) Utilice el exit de programa de la ampliacin. Cree el include de cliente e introduzca el


cdigo fuente siguiente:
MOVE-CORRESPONDING flight TO sflight## seatsfree = flight-seatsmax
flight-seatsocc.

Include TOP:
TABLES: sflight##. DATA: seatsfree type s_seatsocc.

d) Active el programa y luego el proyecto de ampliacin.

Tarea 3

1. Ejecute la transaccin BC425_## y verifique sus resultados.

Copyright . Reservados todos los derechos. 79


Captulo 3: Exits de cliente

RESUMEN DE LA LECCIN
Ahora podr:
Ampliar dynpros con exits de dynpro

80 Copyright . Reservados todos los derechos.


Captulo 3

Evaluacin de la formacin

1. De los siguientes pasos, cules se requieren en el procedimiento para crear una


ampliacin de SAP?
Seleccione las respuestas correctas.

X A Definir los componentes necesarios

X B Asignar componentes a ampliaciones SAP

X C Documentar el proyecto de ampliacin

X D Activar el proyecto de ampliacin

2. De los siguientes pasos, cules se requieren en el procedimiento para crear un proyecto


de ampliacin del cliente?
Seleccione las respuestas correctas.

X A Iniciar la gestin de proyectos

X B Asignar un nombre al proyecto de ampliacin

X C Transportar el proyecto

X D Indicar una descripcin de texto breve en los atributos del proyecto

3. De las siguientes opciones, cules determinan si un programa de aplicacin ofrece un


exit de programa?
Seleccione las respuestas correctas.

X A Buscar por programa

X B Buscar con herramientas de bsqueda

X C Buscar por documento

X D Buscar para un string de caracteres determinado

Copyright . Reservados todos los derechos. 81


Captulo 3: Evaluacin de la formacin

4. De los siguientes includes, cul contiene los eventos que pertenecen al grupo de
funciones X?
Seleccione la respuesta correcta.

X A LX...F01

X B LX...E01

X C LX...O01

X D LX...I01

5. Cules de las siguientes caractersticas de los exits de men le permiten ampliar mens?
Seleccione las respuestas correctas.

X A Le permiten aadir funciones propias a las opciones de men en mens de SAP.

X B Puede especificar el texto de entrada para las funciones de men creadas.

X C Los cdigos de funcin aparecen en el dynpro antes de la activacin.

X D Los programadores ABAP determinan dnde el programa lee los cdigos de


funcin adicionales.

6. Los exits de dynpro le permiten aprovechar las secciones reservadas de un dynpro


principal. Estas secciones reservadas se denominan ____________.
Seleccione la respuesta correcta.

X A Dynpros normales

X B Subscreens

X C Dynpros de programa

X D Dynpros clsicos

82 Copyright . Reservados todos los derechos.


Captulo 3

Respuestas a la Evaluacin de la formacin

1. De los siguientes pasos, cules se requieren en el procedimiento para crear una


ampliacin de SAP?
Seleccione las respuestas correctas.

X A Definir los componentes necesarios

X B Asignar componentes a ampliaciones SAP

X C Documentar el proyecto de ampliacin

X D Activar el proyecto de ampliacin

2. De los siguientes pasos, cules se requieren en el procedimiento para crear un proyecto


de ampliacin del cliente?
Seleccione las respuestas correctas.

X A Iniciar la gestin de proyectos

X B Asignar un nombre al proyecto de ampliacin

X C Transportar el proyecto

X D Indicar una descripcin de texto breve en los atributos del proyecto

3. De las siguientes opciones, cules determinan si un programa de aplicacin ofrece un


exit de programa?
Seleccione las respuestas correctas.

X A Buscar por programa

X B Buscar con herramientas de bsqueda

X C Buscar por documento

X D Buscar para un string de caracteres determinado

Copyright . Reservados todos los derechos. 83


Captulo 3: Respuestas a la Evaluacin de la formacin

4. De los siguientes includes, cul contiene los eventos que pertenecen al grupo de
funciones X?
Seleccione la respuesta correcta.

X A LX...F01

X B LX...E01

X C LX...O01

X D LX...I01

5. Cules de las siguientes caractersticas de los exits de men le permiten ampliar mens?
Seleccione las respuestas correctas.

X A Le permiten aadir funciones propias a las opciones de men en mens de SAP.

X B Puede especificar el texto de entrada para las funciones de men creadas.

X C Los cdigos de funcin aparecen en el dynpro antes de la activacin.

X D Los programadores ABAP determinan dnde el programa lee los cdigos de


funcin adicionales.

6. Los exits de dynpro le permiten aprovechar las secciones reservadas de un dynpro


principal. Estas secciones reservadas se denominan ____________.
Seleccione la respuesta correcta.

X A Dynpros normales

X B Subscreens

X C Dynpros de programa

X D Dynpros clsicos

84 Copyright . Reservados todos los derechos.


CAPTULO 4 Add-ins empresariales clsicos

Leccin 1
Descripcin de una interfaz de objetos ABAP 86

Leccin 2
Descripcin de los Add-ins empresariales (BAdI) clsicos 89

Leccin 3
Explicacin de los detalles avanzados de los BAdI 94

OBJETIVOS DEL CAPTULO

Describir una interfaz de objetos ABAP


Describir los Add-ins empresariales (BAdI) clsicos
Explicar los detalles avanzados de los BAdI

Copyright . Reservados todos los derechos. 85


Captulo 4
Leccin 1
Descripcin de una interfaz de objetos ABAP

RESUMEN DE LA LECCIN
Este mdulo resume los conceptos bsicos de la programacin orientada a objetos.

Ejemplo empresarial
Desea aadir nuevas funciones a una transaccin de actualizacin de vuelos. Para reducir al
mnimo el esfuerzo de ajuste durante el upgrade siguiente, desea que la implementacin
contenga la menor cantidad posible de modificaciones. En particular, desea utilizar los BAdI
proporcionados por SAP. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de la interfaz de objetos ABAP

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir una interfaz de objetos ABAP

Objetos ABAP: interfaces

Figura 61: Clases y objetos

El enfoque bsico de la programacin orientada a objetos consiste en pensar en objetos,


como una reserva especial con todos los atributos y sus funciones especiales, que funcionan
nicamente en esos atributos.
La descripcin tcnica de un objeto se conoce por su clase y el objeto es una instancia de una
clase. Cada objeto existe nicamente durante la vida til del programa.
En una clase, no solo hay descripciones que dependen del objeto, sino que tambin hay
componentes, que son vlidos en general y no dependen especialmente de un objeto en
particular. Estos componentes se denominan componentes estticos (atributos estticos y
mtodos estticos).

86 Copyright . Reservados todos los derechos.


Leccin: Descripcin de una interfaz de objetos ABAP

Interfaces

Figura 62: Interfaces

Una interfaz es una recopilacin de mtodos definidos formalmente sin codificacin. Los
mtodos definidos formalmente hacen referencia a los nombres de los mtodos y sus firmas.
Una interfaz puede integrarse con una clase que se conoce como la clase de implementacin
de la interfaz. En la clase, puede implementar todos los mtodos de interfaz con su
implementacin especfica de la clase.
Si tiene varias clases de implementacin de interfaz con su codificacin especfica de clase,
puede tener solo un mtodo de definicin (en la interfaz) y varias funcionalidades diferentes
(en las clases de implementacin).

Variables de referencia

Figura 63: Variables de referencia

Las instancias se crean durante el tiempo de ejecucin y, por ello, no tienen nombre. Esto
significa que tiene que llamar una instancia por su variable de referencia (puntero) que hace
referencia a la instancia.
Debe definir una variable de referencia en el bloque de declaracin de un programa con la
especificacin adicional REF TO <class>. Eso significa que esta variable de referencia aparece
durante el tiempo de ejecucin para una instancia especfica de esta clase, que an no est
creada. No significa que el puntero dirige a la clase, porque una clase no es nada fsico; es solo
una descripcin de clase.
Para crear un objeto de la clase, use la variable de referencia definida. La variable de
referencia se refiere automticamente a este objeto.
Ahora puede llamar los componentes de instancia del objeto utilizando la variable de
referencia como prefijo. Para llamar a los componentes de clase (por ejemplo, los mtodos de
clase), no necesita un objeto, porque los componentes de clase son independientes de

Copyright . Reservados todos los derechos. 87


Captulo 4: Add-ins empresariales clsicos

cualquier objeto de esta clase. Por ejemplo, se utiliza el prefijo de clase para llamar un mtodo
de clase.

Referencia de interfaz

Figura 64: Referencia de interfaz

No es posible instanciar una interfaz, porque las interfaces no tienen ningn cdigo. Por lo
tanto, no puede utilizar la sentencia CREAR OBJETO para una referencia que se define en una
interfaz.
La implementacin de una interfaz se proporciona por una clase que se encuentra
jerrquicamente por debajo de la interfaz. Entonces, una referencia que se define para una
interfaz puede referirse a un objeto de la clase de implementacin.
Las referencias de interfaz solo pueden llamar los componentes de interfaz de un objeto de la
clase de implementacin. Depende de su definicin de clase esttica. La funcin luego se
ejecuta en el contexto de su clase de implementacin. Por eso, si tiene varias clases de
implementacin de una interfaz, puede usar la misma semntica para llamar a un mtodo de
interfaz para los objetos de estas clases. Sin embargo, se ejecuta una funcin diferente para
cada objeto.

RESUMEN DE LA LECCIN
Ahora podr:
Describir una interfaz de objetos ABAP

88 Copyright . Reservados todos los derechos.


Captulo 4
Leccin 2
Descripcin de los Add-ins empresariales
(BAdI) clsicos

RESUMEN DE LA LECCIN
En este mdulo se describe la arquitectura de los Add-Ins empresariales (BAdI) clsicos.
Tambin describe cmo buscar los BAdI.

Ejemplo empresarial
Necesita ampliar su software de SAP mediante BAdI clsicos entregados en el sistema SAP
estndar. Por este motivo, se requieren los siguientes conocimientos:
Cmo buscar los BAdI disponibles en los programas de SAP

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir los Add-ins empresariales (BAdI) clsicos

Add-ins empresariales clsicos

Figura 65: BAdIs: arquitectura

Los BAdIs tienen en cuenta las modificaciones realizadas en el proceso de entrega del
software.

Copyright . Reservados todos los derechos. 89


Captulo 4: Add-ins empresariales clsicos

La seccin superior de la figura muestra la infraestructura tpica de entrega. Ya no implica tan


salo a un proveedor y un usuario. En cambio, ahora puede implicar a toda una cadena de
proveedores intermediarios.
La seccin inferior de la figura explica cmo funcionan los BAdI. Un programa de aplicacin
SAP ofrece la opcin de ampliacin. Para ello se necesita como mnimo una interfaz y una
clase BAdI que la implemente.

Estas son las ventajas de este concepto:


Un BAdl es reutilizable.
Un BAdI puede implementarse muchas veces, incluso por las partes que se encuentran en
el extremo de la cadena de entrega del software.
Un BAdI permite ofrecer ampliaciones a cada parte de la cadena de entrega del software.

BAdIs: componentes

Figura 66: BAdIs: componentes

Un BAdI contiene los componentes de una ampliacin.

Cada BAdI puede contener los siguientes componentes:


Ampliaciones de programa
Define las interfaces para las ampliaciones del programa en forma de mtodos de interfaz
en un BAdI. Utiliza esta interfaz para implementar la ampliacin. El programa SAP llama
los mtodos de interfaz de la clase BAdI generada.
Ampliaciones de men
Puede indicar los cdigos de funcin en un BAdI. Estas opciones de men estn
disponibles en la definicin de GUI y son visibles cuando el BAdI se implementa.
Ampliaciones de pantalla
Puede definir e implementar ampliaciones de pantalla en un BAdI.

90 Copyright . Reservados todos los derechos.


Leccin: Descripcin de los Add-ins empresariales (BAdI) clsicos

Los componentes creados cuando define un BAdI son los siguientes:


Interfaz
Clase generada (clase BAdI) que implementa la interfaz

La clase generada (clase BAdI) realiza las tareas siguientes:


Filtrado
Si implementa un BAdI dependiente del filtro, la clase de add-in garantiza que se llamen
solo las implementaciones relevantes.
Control
La clase BAdI llama las implementaciones activas.

BAdIs: Flujo de un exit de programa

Figura 67: BAdIs: Flujo de un exit de programa

La figura muestra el flujo de proceso de un programa que contiene una llamada BAdI. Puede
ver las posibilidades y las limitaciones inherentes de los BAdIs.
Debe declarar una variable de referencia que haga referencia a una interfaz de BAdI en la
seccin de declaracin.
En el primer paso se genera una referencia de objeto. Esto reemplaza la clase de servicio
CL_EXITHANDLER suministrada por SAP y genera las condiciones para llamar mtodos de
ampliaciones de programa.
Cuando se define un BAdI, el sistema genera una clase BAdI que implementa la interfaz. En la
segunda llamada, se llama el mtodo de interfaz de la clase BAdI. La clase BAdI busca todas
las implementaciones activas del BAdI y llama los mtodos implementados.

Copyright . Reservados todos los derechos. 91


Captulo 4: Add-ins empresariales clsicos

BAdIs: Llamar sintaxis en programas SAP

Figura 68: BAdIs: Llamar sintaxis en programas SAP

La figura muestra la sintaxis con la cual puede llamar un BAdI. Los crculos numerados
corresponden a las llamadas de la figura previa.
Primero debe definir una variable de referencia que haga referencia a la interfaz de BAdI. El
nombre de la variable de referencia no tiene que contener necesariamente el nombre del
BAdI.
En la primera llamada, se crea una referencia de objeto que crea una instancia de la clase de
BAdI generada. Al utilizar esta referencia de objeto, solo puede contactar los mtodos de la
interfaz.
Entonces puede usar esta referencia de objeto para llamar los mtodos necesarios
disponibles con el segundo paso.

92 Copyright . Reservados todos los derechos.


Leccin: Descripcin de los Add-ins empresariales (BAdI) clsicos

Identificacin de BAdI

Figura 69: Encontrar un BAdI

Puede buscar los BAdI de las siguientes maneras:


Puede buscar el string CL_EXITHANDLER en un programa de aplicacin relevante. Si se
llama un BAdI desde el programa, se debe llamar tambin el mtodo GET_INSTANCE de
esta clase.
Despus puede alcanzar la definicin de BAdI mediante la navegacin hacia adelante. La
definicin adems contiene documentacin y una gua para la implementacin del BAdI.
Puede usar la jerarqua de aplicaciones para limitar los componentes en los que desea
buscar. Inicie el sistema info Repository y seleccione AmpliacionesAdd-ins
empresariales para iniciar el programa de bsqueda relevante.
Pude utilizar las entradas en el componente de Customizing relevante.

RESUMEN DE LA LECCIN
Ahora podr:
Describir los Add-ins empresariales (BAdI) clsicos

Copyright . Reservados todos los derechos. 93


Captulo 4
Leccin 3
Explicacin de los detalles avanzados de los
BAdI

RESUMEN DE LA LECCIN
En este mdulo se explican detalles avanzados de los add-ins empresariales (BAdI).

Ejemplo empresarial
Debe aadir nuevas funciones a una transaccin de actualizacin de vuelos en un sistema
estndar de SAP. Para reducir al mnimo las entradas durante el upgrade siguiente, desea que
la implementacin contenga una cantidad mnima de modificaciones. En particular, desea
utilizar los BAdI proporcionados por SAP. Por este motivo, se requieren los siguientes
conocimientos:
Una buena comprensin de las clases de filtro extensible
Una buena comprensin de los cdigos predeterminados y de muestra

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar los detalles avanzados de los BAdI

Tipos de filtro extensible

Figura 70: Tipos de filtro extensible: requisitos previos

La asignacin del atributo extensible est sujeta a varias restricciones.

94 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los detalles avanzados de los BAdI

El dominio al cual se refiere el filtro extensible debe tener las siguientes propiedades:
El dominio est vinculado a una tabla de valores independiente del mandante. La tabla de
valores tiene exactamente un campo clave con el elemento de datos del tipo de filtro como
su tipo de campo.
El dominio tiene una tabla de texto con dos campos clave. Un campo clave tiene el tipo de
filtro como tipo de campo, y un campo clave es un campo de idioma. Para marcar un
campo como campo de texto, el campo debe existir en una tabla que contenga el string
parcial TEXT o TXT. En el Dictionary ABAP, la tabla de texto debe estar asignada a la tabla
de valores.
La clase de entrega de las dos tablas debe ser E o S.

No todos los valores de filtro que cre en el contexto de un BAdI extensible dependiente del
filtro deben presentarse en el campo de valor. Cuando graba los datos, el sistema aade estos
valores de filtro a la tabla de valores. Cuando borra la implementacin o el BAdI completo, el
sistema elimina los valores de la tabla de valores. Se aplica la misma situacin a las tablas de
texto.

Cdigo de ejemplo y predeterminado

Figura 71: Implementacin predeterminada

Una implementacin predeterminada se ejecuta cuando no existe una implementacin activa


de un BAdI. El proveedor de ampliaciones puede crear una implementacin predeterminada.
Para crear una implementacin predeterminada en la definicin de BAdI, seleccione Pasar
aCdigo predeterminado. El sistema genera automticamente una clase con un nombre
predefinido. Necesita implementar los mtodos para generar el comportamiento
predeterminado requerido.
El proveedor de ampliaciones tambin puede crear una implementacin de ejemplo que acta
como un modelo que puede insertarse en los mtodos de las implementaciones como
propuesta de cdigo inicial.

Copyright . Reservados todos los derechos. 95


Captulo 4: Add-ins empresariales clsicos

Para crear una implementacin de ejemplo, seleccione Pasar aCdigo de ejemplo. El


sistema crear una clase que implementar los mtodos de la interfaz. El usuario puede
examinar el cdigo de ejemplo como modelo.

Comparacin con otras tcnicas de ampliacin

Figura 72: Comparacin con otras tcnicas de ampliacin

Los BAdI son la evolucin lgica de la tcnica de ampliacin convencional. Han tomado la
capa de administracin de los exits de cliente, junto con la disponibilidad de los diversos
componentes de ampliacin.
La idea de hacer BAdI reutilizables fue adoptada de los Eventos de transaccin. Implementa
BAdI utilizando un enfoque coherente orientado a los objetos.

Convenciones para fijar nombres

Definicin de BAdI
- <BADI> O Z<BADI> O /../<BADI>
(Seleccione cualquiera; respete el rea de nombres)
Interfaz
- IF_EX_<BADI> O ZIF_EX_<BADI> O /../IF_EX_<BADI>
(Seleccione cualquiera; respete el rea de nombres)
Mtodos
- Seleccione cualquier nombre.
Clase de BAdI generada (clase de adaptador)
- CL_EX_<BADI> O ZCL_EX_<BADI> O /../CL_EX_<BADI>
(No puede cambiarse)

96 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los detalles avanzados de los BAdI

Convenciones para fijar nombres (implementaciones de BAdI)

Implementacin BAdI
- <IMPL> O Z<IMPL> O /../<IMPL>
(Seleccione cualquiera; respete el rea de nombres)
Interfaz
- IF_EX_<BADI> O ZIF_EX_<BADI> O /../IF_EX_<BADI>
(Se especifica en la definicin de BAdI)
Mtodos
- Definido en la definicin de BAdI
Implementacin de clase
- CL_IM_<IMPL> O ZCL_IM_<IMPL> O /../CL_IM_<IMPL>
(Seleccione cualquiera; respete el rea de nombres)

RESUMEN DE LA LECCIN
Ahora podr:
Explicar los detalles avanzados de los BAdI

Copyright . Reservados todos los derechos. 97


Captulo 4: Add-ins empresariales clsicos

98 Copyright . Reservados todos los derechos.


Captulo 4

Evaluacin de la formacin

1. De las siguientes opciones, cul es una recopilacin de mtodos definidos formalmente


sin codificacin?
Seleccione la respuesta correcta.

X A Objeto

X B Definicin

X C Interfaz

X D Variable de referencia

2. De los siguientes componentes, cules forman parte de un Add-In empresarial (BAdI)?


Seleccione las respuestas correctas.

X A Ampliaciones de programa

X B Ampliaciones de pantalla

X C Ampliaciones de filtrado

X D Ampliaciones de men

3. Cules son las ventajas de los Add-Ins empresariales (BAdI) en comparacin con los
exits de cliente?
Seleccione las respuestas correctas.

X A Los BAdI pueden definirse sin utilizar interfaces.

X B Los BAdI pueden reutilizarse.

X C Los BAdI contienen un exit de dynpro.

X D Los BAdI son dependientes de filtro.

Copyright . Reservados todos los derechos. 99


Captulo 4

Respuestas a la Evaluacin de la formacin

1. De las siguientes opciones, cul es una recopilacin de mtodos definidos formalmente


sin codificacin?
Seleccione la respuesta correcta.

X A Objeto

X B Definicin

X C Interfaz

X D Variable de referencia

2. De los siguientes componentes, cules forman parte de un Add-In empresarial (BAdI)?


Seleccione las respuestas correctas.

X A Ampliaciones de programa

X B Ampliaciones de pantalla

X C Ampliaciones de filtrado

X D Ampliaciones de men

3. Cules son las ventajas de los Add-Ins empresariales (BAdI) en comparacin con los
exits de cliente?
Seleccione las respuestas correctas.

X A Los BAdI pueden definirse sin utilizar interfaces.

X B Los BAdI pueden reutilizarse.

X C Los BAdI contienen un exit de dynpro.

X D Los BAdI son dependientes de filtro.

100 Copyright . Reservados todos los derechos.


CAPTULO 5 Modificaciones de la versin
estndar de SAP

Leccin 1
Modificacin del software SAP estndar 102

Leccin 2
Modificacin con el asistente de modificacin 112
Ejercicio 5: Implementacin de modificaciones 119

Leccin 3
Implementacin de exits de usuario 124

Leccin 4
Ajuste de modificaciones 128

OBJETIVOS DEL CAPTULO

Implementar modificaciones
Implementar modificaciones mediante el Asistente de modificaciones
Implementar modificaciones con exits de usuario
Ajustar las modificaciones

Copyright . Reservados todos los derechos. 101


Captulo 5
Leccin 1
Modificacin del software SAP estndar

RESUMEN DE LA LECCIN
En este mdulo se explican las modificaciones en el software estndar de SAP y cmo
implementarlas.

Ejemplo empresarial
Le gustara saber qu debe tener en cuenta cuando implementa modificaciones. Por este
motivo, se requieren los siguientes conocimientos:
Una buena comprensin de lo que debe tener en cuenta cuando modifica objetos de
programa

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

Modificaciones: resumen

Figura 73: Modificaciones: diagrama de resumen

Esta figura explica las modificaciones en el software estndar de SAP.

102 Copyright . Reservados todos los derechos.


Leccin: Modificacin del software SAP estndar

Originales y copias

Figura 74: Originales y copias

Un objeto es original solo en un sistema. En el caso de los objetos suministrados por SAP, el
sistema original pertenece a SAP. En los sistemas de cliente, estos objetos solo estn
disponibles como copias. Esto se aplica a su sistema de desarrollo y a los dems sistemas
posteriores.
Si escribe sus propias aplicaciones, los objetos que cree sern originales en su sistema de
desarrollo. Asigna sus desarrollos a una orden de modificacin del tipo Desarrollo/
Correccin.
Esta solicitud garantiza que el sistema transportar objetos del sistema de desarrollo a los
sistemas siguientes.

Correcciones y reparaciones

Figura 75: Correcciones y reparaciones

Copyright . Reservados todos los derechos. 103


Captulo 5: Modificaciones de la versin estndar de SAP

Los cambios realizados en un objeto original se denominan correcciones. Las correcciones se


registran en una orden de modificacin. Las tareas de la orden de modificacin son del tipo
Desarrollo/Correccin.
Si modifica una copia (un objeto fuera de su sistema original), la modificacin se registrar en
una tarea del tipo Reparacin. Las reparaciones de los objetos SAP se denominan
modificaciones.
Puede corregir el objeto original en el sistema de desarrollo cuando repara sus propios
objetos (por ejemplo, si algo sale mal en su sistema de produccin). Cuando modifica copias,
debe corregir el original de inmediato.
Sin embargo, no se puede hacer lo mismo con los objetos SAP, porque no son originales en
ningn sistema de cliente.
Solo debera modificar la versin estndar del sistema SAP si las modificaciones que desea
realizar son necesarias para optimizar el workflow en su empresa.

Nota:
Un buen conocimiento del flujo y la estructura de la aplicacin es un requisito
previo esencial para decidir qu tipo de modificaciones realizar y cmo disearlas.

Modificaciones y actualizaciones

Figura 76: Modificaciones y actualizaciones

Cuando realice un upgrade del sistema, aplique un support package o importe una orden de
transporte, se pueden originar conflictos con objetos modificados.
Los conflictos se producen cuando modifica un objeto de SAP y cuando SAP tambin ofrece
una nueva versin, que luego se activa en el repository.
Si desea conservar las modificaciones, debe realizar un ajuste de modificaciones para los
objetos. Si tiene varios objetos de SAP modificados, el ajuste de modificacin puede
demandar mucho tiempo.

104 Copyright . Reservados todos los derechos.


Leccin: Modificacin del software SAP estndar

Para garantizar la consistencia entre su sistema de desarrollo y sistemas posteriores, slo


debe realizar ajustes de modificacin en su sistema de desarrollo. Los objetos ajustados
luego se podrn transportar a otros sistemas de la infraestructura.

Implementacin de la modificacin

Figura 77: Registro de modificaciones en SSCR

Un usuario de desarrollo registrado registra modificaciones en las fuentes de SAP y las


modificaciones manuales de los objetos del Dictionary ABAP. Los matchcodes, los ndices de
base de datos, los parmetros de memoria intermedia, los objetos de cliente, los parches y
los objetos cuya modificacin se base en la generacin automtica (por ejemplo, en el
Customizing) no se registran. Si modifica el objeto nuevamente ms tarde, el sistema no
vuelve a pedir la clave de registro. Despus de registrar un objeto, el sistema almacena la
clave relacionada en el disco local y la copia automticamente para cambios posteriores,
independientemente del desarrollador registrado que efecta el cambio. Hasta ese momento,
estas claves siguen siendo vlidas incluso despus de un upgrade de release.

Los beneficios de SSCR (Registro de modificaciones del software de SAP) son los
siguientes:
Resolucin rpida de errores y alta disponibilidad de sistemas modificados
SAP registra todos los objetos que modific. A partir de esta informacin, el servicio de
atencin al cliente de primer nivel de SAP puede encontrar rpidamente los problemas y
solucionarlos. Esto ampla la disponibilidad de su sistema ERP.
Funcionamiento confiable
El registro de sus modificaciones evita modificaciones no deseadas. Esto, a su vez,
promueve el funcionamiento confiable de su software ERP.
Simplificacin de upgrades
Los upgrades y los upgrades de release resultan ms fciles debido a que la cantidad de
modificaciones es menor.

Copyright . Reservados todos los derechos. 105


Captulo 5: Modificaciones de la versin estndar de SAP

Pasos para registrar modificaciones

Figura 78: Realizacin de una modificacin registrada

Si desea modificar un objeto de repository, debe proporcionar la informacin siguiente al


Workbench Organizer:
Clave SSCR
Orden de modificacin

La figura explica cmo se obtiene una clave de SSCR. Si ahora sigue modificando el objeto,
deber confirmar los cuadros de advertencia. En este momento, todava puede cancelar la
accin sin reparar el objeto.
El Workbench Organizer le pedir que introduzca una orden de modificacin tal como lo hara
para sus propios objetos. El sistema aade este objeto automticamente a una tarea de
reparacin.

La orden de modificacin tiene las funciones siguientes:


Modificar bloqueo
Despus de asignar la tarea, slo el propietario podr modificar el objeto.
Importar bloqueo
El objeto no se puede sobrescribir mediante una importacin (ni upgrade ni Support
Package).
Creacin de la versin
El sistema genera una nueva versin del objeto.

106 Copyright . Reservados todos los derechos.


Leccin: Modificacin del software SAP estndar

Pasos posteriores a la modificacin

Figura 79: Cuando la modificacin ha finalizado

Tras finalizar el desarrollo, el programador libera la tarea. En este punto, el programador debe
documentar las modificaciones efectuadas. El sistema transfiere los objetos y los bloqueos de
objeto vlidos en la tarea se transfieren a la orden de modificacin.
Si el desarrollador confirma la reparacin, el bloqueo de importacin se transfiere a la orden
de modificacin. Si el desarrollador no confirma la reparacin al liberar la tarea, el bloqueo de
importacin sigue en su sitio. Slo el desarrollador puede anular el bloqueo.
Despus de completar el proyecto, libera la orden de modificacin. Esto elimina todos los
bloqueos de objeto para la orden de modificacin. Esto se aplica a los bloqueos de
modificacin e importacin.
Cuando libera la orden de modificacin, el sistema copia los objetos desde la base de datos
del sistema SAP y los almacena en un directorio en el nivel del sistema operativo. El
administrador del sistema luego los importa a los sistemas posteriores.
Luego de importar las modificaciones al sistema de calidad, el desarrollador debe probarlas y
comprobar el log de importacin de la orden.

Copyright . Reservados todos los derechos. 107


Captulo 5: Modificaciones de la versin estndar de SAP

Versiones

Figura 80: Versiones

Cuando libera una orden de modificacin, una versin completa de todos los objetos que
contiene se escribe en la base de datos para versiones.
Si vuelve a transportar ms adelante el objeto de Repository, el objeto actual pasar a ser una
copia completa. El sistema almacena las diferencias entre el objeto nuevo y el anterior se
archivarn en la base de datos para versiones como delta regresiva.
Cuando asigne un objeto de repository a una tarea, el sistema comprobar si la versin actual
coincide con la copia completa en la base de datos para versiones. De lo contrario, el sistema
crea una copia completa. El sistema tambin inicia este proceso la primera vez que modifica
un objeto, porque SAP no ofrece versiones de los objetos de repository.
Las versiones de un objeto de repository proporcionan la base para ajustar la modificacin.
Para admitir el ajuste, el sistema almacena informacin sobre el creador de la versin: SAP o
el cliente.

108 Copyright . Reservados todos los derechos.


Leccin: Modificacin del software SAP estndar

Factores cruciales para el xito (1)

Figura 81: Factores cruciales para el xito (1)

Encapsula el cdigo fuente del cliente en unidades de modularizacin en lugar de insertarlas


directamente en el cdigo fuente de SAP. Los ejemplos incluyen llamadas del mdulo de
funcin del cliente en el cdigo fuente del programa o llamadas de subscreen del cliente para
campos de dynpro adicionales.

Nota:
Asegrese de utilizar interfaces estrechas cuando encapsula funciones
especficas del cliente. Las interfaces estrechas garantizan un buen control de
datos.

Factores cruciales para el xito (2)

Los factores de xito crticos son los siguientes:

Use documentacin en lnea estandarizada (compatible con el Asistente de


modificaciones).
No borre ningn cdigo fuente de SAP. En lugar de ello, enve comentarios (admitido por el
Asistente de modificaciones).
Lleve un diario del sistema (con el log de modificacin de SE95 como base, por ejemplo).

No modifique objetos de Dictionary de Base central (a no ser que se indique en una nota
SAP o la SAP Support Line).
Libere todas las rdenes que contengan reparaciones.

Defina una versin estndar vlida para toda la empresa para administrar la documentacin
en el cdigo fuente.

Copyright . Reservados todos los derechos. 109


Captulo 5: Modificaciones de la versin estndar de SAP

Tambin necesita actualizar una lista de todas las modificaciones (un log de modificaciones)
en su sistema.
Cualquier modificacin realizada en los objetos de Dictionary ABAP que pertenecen a los
componentes de base de SAP, como Workbench ABAP, se pierden en el upgrade. Estos
objetos regresan a su forma inicial y el sistema no ofrece ninguna ayuda de ajuste. Esto puede
llevar a la prdida de contenidos de determinadas tablas.
Antes de una importacin de upgrade/Support Package, debe liberar todas las rdenes que
contengan reparaciones.

Logs de modificacin: ejemplo

Figura 82: Logs de modificacin: ejemplo

SAP le recomienda llevar un registro de todas las modificaciones que se realizaron en su


sistema. Esto incluye todas las modificaciones que ha realizado en los objetos de repository
del rea de nombres SAP.

Es necesario registrar la informacin en una lista con las siguientes columnas:


La clase de objeto, como el programa, el dynpro, el status de GUI, etc.
Nombre del objeto
Rutina (si procede)
rea temtica (de acuerdo con el diseo de proceso blueprint o el diseo tcnico)
Nmero de reparacin
Fecha de modificacin
Autor de la modificacin
Correccin preliminar: s o no
Nmero de nota de SAP, vlido hasta el release X.Y
Tiempo previsto para restablecer la modificacin durante un ajuste

110 Copyright . Reservados todos los derechos.


Leccin: Modificacin del software SAP estndar

RESUMEN DE LA LECCIN
Ahora podr:
Implementar modificaciones

Copyright . Reservados todos los derechos. 111


Captulo 5
Leccin 2
Modificacin con el asistente de modificacin

RESUMEN DE LA LECCIN
En este mdulo se describe cmo funcionan el Asistente de modificaciones y el Browser de
modificaciones, y se explica cmo usar estas herramientas.

Ejemplo empresarial
Desea utilizar el Asistente de modificaciones para realizar modificaciones de forma ordenada
para garantizar que podr visualizar una lista exacta de las modificaciones ms adelante y
facilitar los ajustes de las modificaciones. Por este motivo, se requieren los siguientes
conocimientos:
Una buena comprensin de cmo implementar modificaciones con el Asistente de
modificaciones
Una buena comprensin del funcionamiento del Asistente de modificaciones

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar modificaciones mediante el Asistente de modificaciones

El Asistente de modificaciones

El Asistente de modificaciones cumple los siguientes propsitos:

Granularidad ms precisa
Modificaciones en capa de software separada mediante exit de modificacin

El objetivo del Asistente de modificaciones es facilitar los ajustes. En el pasado, la


granularidad de las modificaciones se limitaba al nivel de programa de Include. Ahora es
posible una granularidad ms precisa, y el sistema registra modificaciones en los niveles de
subrutina o mdulo. Esto se debe a que las modificaciones se registran en una capa diferente.
En consecuencia, puede reiniciar las modificaciones, porque la versin original no se
modifica.

112 Copyright . Reservados todos los derechos.


Leccin: Modificacin con el asistente de modificacin

Asistente de modificaciones: cmo funciona

Figura 83: Asistente de modificaciones: cmo funciona

El Asistente de modificaciones registra cambios en una capa separada. Esto significa que el
cdigo fuente original del objeto no cambia. El sistema no adopta modificaciones hasta que se
genera la carga. Una vez generada la carga, el sistema crea el objeto ejecutable a partir de
ambas partes del programa SAP original y las modificaciones.

Ajustes de modificaciones: el antes y el despus

La tabla siguiente muestra los cambios en el ajuste de modificaciones debido al Asistente


de modificaciones:

ANTES AHORA
Granularidad: Programa Include Granularidad: Mdulo (como subrutina)
Ajuste de modificacin: Lnea por lnea en el Ajuste de modificacin: En el nivel del
nivel del mdulo (exit de modificacin) mdulo (exit de modificacin)

Anteriormente, si modificaba un programa de Include del cual SAP proporcionaba una nueva
versin en un upgrade, era necesario ajustar la modificacin. Realizaba el ajuste de la
modificacin lnea por lnea, y el sistema no brindaba demasiado soporte.
El Asistente de modificaciones cambia esta situacin. Se ha refinado la granularidad del
registro de modificaciones. Por ejemplo, si modifica una subrutina, el resto del programa de
Include no se modifica. Si SAP suministra una nueva versin del programa de Include, el
sistema comprobar si hay una nueva versin de esa subrutina. Si no es el caso, el sistema
incorpora sus modificaciones en la nueva versin de manera automtica.

Copyright . Reservados todos los derechos. 113


Captulo 5: Modificaciones de la versin estndar de SAP

Asistente de modificaciones: capas del software

Figura 84: Asistente de modificaciones: capas del software

La versin original de cada capa del software se compone de originales de la capa anterior y
las modificaciones actuales.

Asistente de modificaciones: herramientas admitidas

La siguiente lista muestra las herramientas que admite el Asistente de modificaciones:

Editor ABAP
Screen Painter
Menu Painter
Elementos de texto
Class Builder
Function Builder
Dictionary ABAP
Documentacin

En el Editor ABAP, puede usar el modo de modificacin para modificar el cdigo fuente. En
este modo solo hay disponible una serie limitada de funciones. Puede aadir, sustituir o
comentar el cdigo fuente, todo controlado por el Asistente de modificaciones.
El Asistente de modificaciones registra los cambios en una variedad de objetos de desarrollo
ABAP. Incluyen cambios en el layout y en la lgica de flujo del Screen Painter,cambios en
Menu Painter y en los elementos de texto, la incorporacin de nuevos mdulos de funcin a
un grupo de funciones existente y, para evitar conflictos durante las actualizaciones, appends
de tabla.

114 Copyright . Reservados todos los derechos.


Leccin: Modificacin con el asistente de modificacin

Asistente de modificaciones: requisitos previos

Figura 85: Asistente de modificaciones: requisitos previos

Si modifica un objeto SAP, debe proporcionar la informacin siguiente:


Clave del Registro de modificaciones del software de SAP (SSCR)
Orden de modificacin

El sistema le informa que el objeto es controlado por el Asistente de modificaciones. En el


editor solo hay disponibles funciones limitadas.
Puede activar o desactivar el Asistente de modificaciones para todo el sistema mediante el
parmetro de perfil eu/controlled_modification. SAP recomienda trabajar siempre con el
Asistente de modificaciones.
Puede desactivar el Asistente de modificaciones para un objeto individual del repository. El
sistema no utiliza la granularidad precisa que se utiliza en el Asistente de modificaciones.

Iconos del Asistente de modificaciones

Figura 86: Iconos del Asistente de modificaciones

En el modo de modificacin no se pueden usar todas las funciones normales de la


herramienta con la que est trabajando. Pero puede acceder a ellas mediante los pulsadores
correspondientes.

Las acciones que se realizarn en el Editor ABAP son las siguientes:

Copyright . Reservados todos los derechos. 115


Captulo 5: Modificaciones de la versin estndar de SAP

Insertar
Indique su cdigo fuente entre las lneas de comentario que genera el sistema.
Sustituir
Site el cursor en una lnea y seleccione Sustituir. El sistema comenta la lnea
correspondiente y aparece otra lnea donde puede indicar el cdigo. Si desea sustituir
varias lneas, mrquelas primero como un bloque.
Borrar
Seleccione una lnea o un bloque del cdigo fuente para comentar las lneas.
Deshacer modificaciones
Seleccione esta funcin para deshacer la modificacin seleccionada que se realiz en un
objeto.
Visualizar resumen de modificaciones
Seleccione esta funcin para visualizar un resumen de todas las modificaciones que
pertenecen a un objeto.

Asistente de modificaciones: ejemplo de editor ABAP

Figura 87: Asistente de modificaciones: ejemplo de editor ABAP

La figura muestra el resultado de las modificaciones efectuadas con el Asistente de


modificaciones.
El Asistente de modificaciones genera de manera automtica un framework de lneas de
comentarios que describen la accin. El comentario tambin contiene el nmero de la orden
de modificacin a la cual asigna el cambio y un nmero de administracin interno.

116 Copyright . Reservados todos los derechos.


Leccin: Modificacin con el asistente de modificacin

Resumen de modificaciones

Figura 88: Resumen de modificaciones

El icono Resumen de modificaciones brinda un resumen de las modificaciones realizadas en el


programa actual.
La pantalla est dividida de acuerdo con las diferentes unidades de modularizacin. Esto
corresponde a la estructura usada por el Asistente de modificaciones para registrar las
modificaciones.

Restauracin del original

Figura 89: Restauracin del original

Copyright . Reservados todos los derechos. 117


Captulo 5: Modificaciones de la versin estndar de SAP

Para deshacer una modificacin, site el cursor en ella y seleccione Deshacer.


El sistema borra el registro de esta modificacin. No puede restablecer este registro.

Browser de modificaciones

Figura 90: Browser de modificaciones

El Browser de modificaciones proporciona un resumen de todos los objetos modificados en el


sistema. El Browser de modificaciones diferencia entre las modificaciones efectuadas
mediante el Browser de modificaciones y las modificaciones realizadas sin l.
En la pantalla inicial del Browser de modificaciones se puede delimitar la seleccin en funcin
de diversos criterios. De este modo se puede buscar modificaciones en un rea concreta.
El Browser de modificaciones muestra la lista de aciertos en forma de rbol.

Los objetos se representan de la siguiente manera:


Tipo de modificacin (con el asistente o sin este)
Clase de objeto (PROG, DOMA, DTEL, TABL, ...)

Adems de las sencillas funciones de visualizacin, se puede usar tambin el Browser de


modificaciones para deshacer grupos enteros de modificaciones. Para ello, seleccione el
subrbol que desee y seleccione el pulsador Restablecer original.

118 Copyright . Reservados todos los derechos.


Captulo 5
Ejercicio 5
Implementacin de modificaciones

Ejemplo empresarial
Adems de la gran variedad de funciones en el sistema SAP, tambin desea implementar ms
funciones.
En raras ocasiones, se suministran funciones que contienen errores. Esto obliga a insertar
correcciones antes de poder importar el support package correspondiente.
El Asistente de modificaciones no permite realizar ciertas modificaciones. Desactive el
Asistente de modificaciones si desea implementarlas.
La implementacin de modificaciones con el Asistente de modificacin y la implementacin
de modificaciones no registradas.

Tarea 1

1. Siempre que sea posible, utilice el Asistente de modificaciones para modificar los objetos
SAP.

Tarea 2
Modifique el programa SAPBC425_BOOKING_##.

1. Ample la cabecera de forma que la columna con el nombre del cliente tambin tenga
cabecera.

2. Cree una nueva variable para contar los registros de datos. Visualice el contador en la
ltima columna de la lista.

3. Lea los campos LUGGWEIGHT y WUNIT en la tabla SBOOK y visualcelos en la lista.

Tarea 3
Modifique el programa SAPBC425 FLIGHT##.

1. Modifique el layout de la pantalla 0100: Inserte un marco alrededor de los tres campos de
entrada. Cree un pulsador y asgnele el cdigo de funcin MORE.

Tarea 4
Modifique el elemento de datos S CARRID##.

1. Modifique las etiquetas de campo de esta manera:


Texto breve Comp

Copyright . Reservados todos los derechos. 119


Captulo 5: Modificaciones de la versin estndar de SAP

Medio Compaa area

2. Modifique la documentacin para este elemento de datos. Cree un texto informativo.

Tarea 5

1. Verificar las modificaciones en el Browser de modificaciones.

120 Copyright . Reservados todos los derechos.


Captulo 5
Solucin 5
Implementacin de modificaciones

Ejemplo empresarial
Adems de la gran variedad de funciones en el sistema SAP, tambin desea implementar ms
funciones.
En raras ocasiones, se suministran funciones que contienen errores. Esto obliga a insertar
correcciones antes de poder importar el support package correspondiente.
El Asistente de modificaciones no permite realizar ciertas modificaciones. Desactive el
Asistente de modificaciones si desea implementarlas.
La implementacin de modificaciones con el Asistente de modificacin y la implementacin
de modificaciones no registradas.

Tarea 1

1. Siempre que sea posible, utilice el Asistente de modificaciones para modificar los objetos
SAP.
a) Modifique los objetos SAP utilizando el Asistente de modificaciones.

Tarea 2
Modifique el programa SAPBC425_BOOKING_##.

1. Ample la cabecera de forma que la columna con el nombre del cliente tambin tenga
cabecera.
a) Modifique la cabecera directamente desde la lista (SistemaListaCabecera de
lista) o en el Editor.

2. Cree una nueva variable para contar los registros de datos. Visualice el contador en la
ltima columna de la lista.
a) Cree una nueva variable directamente en el programa SAP.

b) Use la funcin Insertar en el Asistente de modificaciones. Lo ideal sera limitar las


modificaciones al mbito local en la subrutina data_output.

c) Visualice el contador.
Como alternativa puede implementar esta funcin en la ampliacin, con lo que no
haran falta modificaciones.

3. Lea los campos LUGGWEIGHT y WUNIT en la tabla SBOOK y visualcelos en la lista.


a) Ample la sentencia SELECT para incluir los campos LUGGWEIGHT y WUNIT.

b) Visualice los campos en la subrutina data_output.

Tarea 3

Copyright . Reservados todos los derechos. 121


Captulo 5: Modificaciones de la versin estndar de SAP

Modifique el programa SAPBC425 FLIGHT##.

1. Modifique el layout de la pantalla 0100: Inserte un marco alrededor de los tres campos de
entrada. Cree un pulsador y asgnele el cdigo de funcin MORE.
a) Use el Screen Painter para modificar el layout de la pantalla 0100.

Tarea 4
Modifique el elemento de datos S CARRID##.

1. Modifique las etiquetas de campo de esta manera:


Texto breve Comp

Medio Compaa area

a) Llame la transaccin de actualizacin para elementos de datos.

b) Site el cursor en el objeto correspondiente y seleccione el pulsador modificacin.

c) Indique un texto nuevo en la siguiente ventana de dilogo.

2. Modifique la documentacin para este elemento de datos. Cree un texto informativo.


a) Seleccione el pulsador Documentacin e introduzca un texto nuevo.

Tarea 5

1. Verificar las modificaciones en el Browser de modificaciones.


a) Para verificar la modificacin, inicie el Browser de modificaciones ejecutando la
transaccin SE95.

b) Limite la seleccin mediante el nombre de usuario, la orden de modificacin o la tarea.

122 Copyright . Reservados todos los derechos.


Leccin: Modificacin con el asistente de modificacin

RESUMEN DE LA LECCIN
Ahora podr:
Implementar modificaciones mediante el Asistente de modificaciones

Copyright . Reservados todos los derechos. 123


Captulo 5
Leccin 3
Implementacin de exits de usuario

RESUMEN DE LA LECCIN
En este mdulo se explica cmo funcionan los exits de usuario, cmo se buscan y cmo se
utilizan para ampliar las funciones.

Ejemplo empresarial
Necesita buscar exits de usuario en el sistema y usarlos para ampliar el software de SAP. Por
este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de los exits de usuario
Una buena comprensin de cmo buscar exits de usuario en el sistema y usarlos para
ampliar el software de SAP

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar modificaciones con exits de usuario

Exits de usuario

Figura 91: Exits de usuario: estructura de un modulpool

Un modulpool est organizado como un conjunto de programas de Include. Este es un buen


enfoque para entender el programa con mayor facilidad. La organizacin es parecida a la de
los grupos de funciones.

124 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de usuario

El programa principal contiene las sentencias de include para todos los programas de Include
pertenecientes al modulpool.
Los programas de include que se describen como includes especiales en el programa
tambin son programas de include. Tcnicamente, estos includes especiales no son
diferentes; solo se suministran una vez. Por lo tanto, las implementaciones del cliente no se
sobrescriben.

Exits de usuario: implementacin

Figura 92: Exits de usuario: implementacin

Los exits de usuario son una clase de ampliacin del sistema que se desarroll inicialmente
para el componente Ventas y Distribucin (SD). La finalidad original de los exits de usuario
era permitir al usuario el ajuste de las modificaciones.
Usar un exit de usuario es una modificacin, ya que obliga a modificar objetos en el rea de
nombres de SAP. Los desarrolladores de SAP crean un include especial en un modulpool.
Estos programas de include contienen una o ms subrutinas que utilizan la convencin para
fijar nombres USEREXIT_<NAME>. SAP ya ha implementado las llamadas para estas
subrutinas en la programacin de aplicaciones estndares. Por lo general, se usan variables
globales.
SAP nunca modifica los includes creados de este modo una vez suministrados. Si se deben
suministrar exits de usuario nuevos en un nuevo release, se colocarn en un nuevo programa
de include.

Copyright . Reservados todos los derechos. 125


Captulo 5: Modificaciones de la versin estndar de SAP

Exits de usuario: ejemplo

Figura 93: Exits de usuario: ejemplo

Los exits de usuario son subrutinas vacas proporcionadas por los desarrolladores de SAP.
Puede completarlas con su cdigo fuente.
La finalidad de este tipo de sistema es mantener las modificaciones al margen del cdigo
fuente del programa y guardarlas en programas de Include. Para ello, los desarrolladores de
SAP crean varios includes que cumplen las convenciones para fijar nombres para programas
y grupos de funciones. Los ltimos dos caracteres del nombre del include indican que el
cliente utilizar el programa de include. Por lo general, los ltimos dos caracteres contienen
una Z.
Ejemplo: Programa SAPMV45A
Include MV45AFZB
Esta convencin para fijar nombres garantiza que los desarrolladores de SAP no modificarn
este include en el futuro. Por lo tanto, los includes de este tipo nunca se enumeran durante los
ajustes de la modificacin.
Si SAP suministra exits de usuario nuevos con un nuevo release, se empaquetarn en nuevos
includes que cumplan la misma convencin para fijar nombres.

126 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de usuario

Exits de usuario: bsqueda

Figura 94: Exits de usuario: bsqueda

Encontrar una lista de todos los exits de usuario en la Gua de implementacin de referencia
de SAP. Aqu tambin podr encontrar documentacin que explica por qu los
desarrolladores de SAP han creado un exit de usuario concreto. Para esto, siga los pasos que
se describen en la Gua de implementacin.

RESUMEN DE LA LECCIN
Ahora podr:
Implementar modificaciones con exits de usuario

Copyright . Reservados todos los derechos. 127


Captulo 5
Leccin 4
Ajuste de modificaciones

RESUMEN DE LA LECCIN
En este mdulo se explica cmo se implementa un ajuste de modificacin.

Ejemplo empresarial
Es necesario realizar un ajuste de modificacin despus de haber implementado un upgrade o
un support package. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de los pasos realizados durante un ajuste de modificacin
Una buena comprensin de cmo se realizan los ajustes de modificacin en sistemas
posteriores

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

Ajuste de modificaciones

Figura 95: Objetos para el ajuste

Puede derivar el conjunto de objetos para el ajuste del conjunto de objetos nuevos
suministrado por SAP en un nuevo release. Este se compara con el conjunto de objetos
modificados.
La interseccin de estos dos conjuntos es el conjunto de objetos que debe ajustar cuando se
importa un upgrade/support package.

128 Copyright . Reservados todos los derechos.


Leccin: Ajuste de modificaciones

Ajuste de modificacin: SPDD y SPAU

Figura 96: Ajuste de modificacin: SPDD y SPAU

Durante el ajuste de modificacin, puede comparar las versiones nuevas y antiguas de los
objetos de repository ABAP utilizando las transacciones SPDD y SPAU.

No hace falta llamar la transaccin SPDD para ajustar los objetos del Dictionary en los
siguientes casos:
No realiz ningn cambio en los objetos estndares de SAP del Dictionary.
Solo ha agregado objetos de cliente a su sistema. Solo debe ajustar objetos de SAP que
modific utilizando esta transaccin.

Puede utilizar la transaccin SPAU para ajustar todos los dems objetos de repository ABAP.
El programa de upgrade R3up le indica que debe iniciar la transaccin despus de finalizar el
upgrade. Tiene 30 das para usar la transaccin SPAU despus de un upgrade. Despus de 30
das, tendr que solicitar una clave de Registro de modificaciones del software de SAP
(SSCR) para cada objeto que desee ajustar.
La transaccin SPAU primero identifica los objetos que modific y luego afirma los objetos
modificados para los cuales import una nueva versin durante el upgrade actual. El ajuste de
las modificaciones permite transferir las modificaciones efectuadas en su sistema a su nuevo
release del sistema.

Copyright . Reservados todos los derechos. 129


Captulo 5: Modificaciones de la versin estndar de SAP

Ajuste de modificaciones: objetos

Figura 97: Ajuste de modificaciones: objetos

Puede utilizar la transaccin SPDD para ajustar los objetos del Dictionary ABAP durante el
ajuste de modificacin.

Puede ajustar los siguientes objetos del Dictionary ABAP:


Dominios
Elementos de datos
Tablas (estructuras, tablas transparentes, pool y tablas de cluster junto con sus opciones
tcnicas)

Puede ajustar estos tres tipos de objetos directamente despus de la importacin del objeto
de Dictionary y antes de la importacin principal. Hasta ahora, el sistema no ha generado las
nuevas versiones de los objetos de Dictionary ABAP. Para garantizar que no se pierdan datos,
es importante que se hagan todas las modificaciones de cliente en dominios, elementos de
datos o tablas antes de generarlos.
Las modificaciones de otros objetos del Dictionary ABAP, como objetos de bloqueo,
matchcodes o vistas, no pueden provocar la prdida de datos. Por lo tanto, es necesario
ajustar estos objetos de Dictionary ABAP con la transaccin SPAU despus de completar la
importacin principal y la generacin de objetos.

Puede utilizar la transaccin SPAU para ajustar los tipos de objeto siguientes:
Programas ABAP
Interfaces (mens)
Dynpros
Objetos de matchcode
Vistas
Objetos de bloqueo

130 Copyright . Reservados todos los derechos.


Leccin: Ajuste de modificaciones

Transporte de ajustes entre sistemas

Figura 98: Transporte de ajustes entre sistemas

Durante el ajuste de modificacin, lleve a cabo el procesamiento del objeto mediante dos
rdenes de modificacin diferentes: una para el ajuste SPDD y otra para el ajuste SPAU. El
sistema transporta estas rdenes de modificacin a los otros sistemas de SAP que desea
ajustar. Esto garantiza que todo el trabajo real de ajustes se lleve a cabo nicamente en su
sistema de desarrollo.
Cuando se realiza el upgrade de sistemas SAP adicionales, el sistema muestra todos los
ajustes exportados del primer upgrade del sistema durante la etapa ADJUSTCHK. Usted
decide qu ajustes desea aceptar en sus sistemas adicionales. Despus el sistema los integra
en el upgrade actual. Posteriormente, el sistema verifica si las rdenes de modificacin
creadas durante el primer upgrade de sistema cubren todas las modificaciones en el sistema
SAP actual. En caso afirmativo, no podr realizar ajustes durante el upgrade actual.

Nota:
Para que este proceso sea efectivo, es importante que todos los sistemas
implicados tengan infraestructuras de sistema idnticas. Esto se puede garantizar
al hacer modificaciones primero en su sistema de desarrollo y al transportarlas
luego a los sistemas siguientes antes de realizar el upgrade del sistema de
desarrollo. Tambin se puede garantizar que todos sus sistemas tengan una
infraestructura de sistema idntica al crear el sistema de desarrollo antes del
upgrade como copia del sistema productivo y sin volver a modificar el sistema
productivo a partir de ese momento.

Copyright . Reservados todos los derechos. 131


Captulo 5: Modificaciones de la versin estndar de SAP

Ajuste de modificaciones: introduccin

Figura 99: Ajuste de modificaciones: introduccin

Cuando se inicia el ajuste de las modificaciones mediante la transaccin SPAU, se puede


delimitar la lista de aciertos en un dynpro de seleccin. Puede decidir si desea visualizar todos
los objetos que se deben ajustar o solo los que an no ha procesado el sistema.

Puede utilizar los criterios siguientes para delimitar la seleccin de objetos ajustados:
Modificado por
Paquete
Nmeros de orden/tarea

El sistema visualiza una lista de los objetos que se deben ajustar.

La lista se clasifica de acuerdo con los siguientes criterios:


Con el Asistente de modificaciones o sin este
Tipo de objeto

132 Copyright . Reservados todos los derechos.


Leccin: Ajuste de modificaciones

Iconos del Asistente de modificaciones

Figura 100: Iconos del Asistente de modificaciones

Los iconos delante de cada objeto que se debe ajustar indican cmo se pueden ajustar.

A continuacin se detallan los mtodos que indican la forma en que los objetos pueden
ajustarse:
Automticamente
El sistema no pudo encontrar ningn conflicto. Puede adoptar modificaciones de manera
automtica seleccionando el icono o la opcin de men correspondiente.
Semiautomticamente
Las herramientas individuales lo asisten en el ajuste de objetos. Cuando ajusta los
programas para efectuar cambios, el sistema muestra el editor de dynpro dividido.
Manualmente
Debe procesar las modificaciones sin ninguna ayuda especial por parte del sistema. En
este caso, el ajuste de las modificaciones le permite pasar directamente a la herramienta
relevante.

El sistema identifica los objetos ajustados con un tilde verde.


Si desea utilizar la nueva versin estndar de SAP, utilice Restablecer original para que no
tenga que realizar ningn ajuste en el futuro.

RESUMEN DE LA LECCIN
Ahora podr:
Ajustar las modificaciones

Copyright . Reservados todos los derechos. 133


Captulo 5: Modificaciones de la versin estndar de SAP

134 Copyright . Reservados todos los derechos.


Captulo 5

Evaluacin de la formacin

1. Cules son los beneficios de SSCR (Registro de modificaciones del software de SAP)
para las modificaciones de registro?
Seleccione las respuestas correctas.

X A Resolucin de errores rpida

X B Simplificacin de upgrades

X C Funcionamiento confiable

X D La clave SSCR proporcionada a un objeto debe proporcionarse una y otra vez para
cada modificacin.

2. Cul de las siguientes herramientas admite el Asistente de modificaciones?


Seleccione las respuestas correctas.

X A Editor ABAP

X B Screen Painter

X C Menu Builder

X D Dictionary ABAP

3. Cul es el propsito de brindar exits de usuario?


Seleccione las respuestas correctas.

X A Proporcionar ampliaciones para las aplicaciones de Ventas y Distribucin.

X B Proporcionar ampliaciones para evitar modificaciones.

X C Habilitar mltiples implementaciones independientes.

X D Garantizar actualizaciones sin inconvenientes.

Copyright . Reservados todos los derechos. 135


Captulo 5: Evaluacin de la formacin

4. Durante el ajuste de modificacin, qu transacciones puede utilizar para comparar las


versiones nuevas y anteriores de objetos de repository ABAP?
Seleccione las respuestas correctas.

X A SPDD

X B SSCR

X C SPAU

136 Copyright . Reservados todos los derechos.


Captulo 5

Respuestas a la Evaluacin de la formacin

1. Cules son los beneficios de SSCR (Registro de modificaciones del software de SAP)
para las modificaciones de registro?
Seleccione las respuestas correctas.

X A Resolucin de errores rpida

X B Simplificacin de upgrades

X C Funcionamiento confiable

X D La clave SSCR proporcionada a un objeto debe proporcionarse una y otra vez para
cada modificacin.

2. Cul de las siguientes herramientas admite el Asistente de modificaciones?


Seleccione las respuestas correctas.

X A Editor ABAP

X B Screen Painter

X C Menu Builder

X D Dictionary ABAP

3. Cul es el propsito de brindar exits de usuario?


Seleccione las respuestas correctas.

X A Proporcionar ampliaciones para las aplicaciones de Ventas y Distribucin.

X B Proporcionar ampliaciones para evitar modificaciones.

X C Habilitar mltiples implementaciones independientes.

X D Garantizar actualizaciones sin inconvenientes.

Copyright . Reservados todos los derechos. 137


Captulo 5: Respuestas a la Evaluacin de la formacin

4. Durante el ajuste de modificacin, qu transacciones puede utilizar para comparar las


versiones nuevas y anteriores de objetos de repository ABAP?
Seleccione las respuestas correctas.

X A SPDD

X B SSCR

X C SPAU

138 Copyright . Reservados todos los derechos.


CAPTULO 6 Puntos de ampliacin, opciones
de ampliacin y secciones de
ampliacin

Leccin 1
Descripcin del concepto de ampliacin 141

Leccin 2
Uso de ampliaciones explcitas 146
Ejercicio 6: Uso de ampliaciones explcitas 151

Leccin 3
Descripcin de ampliaciones implcitas 155

Leccin 4
Uso de ampliaciones implcitas en los mdulos de funciones SAP 157
Ejercicio 7: Uso de las ampliaciones implcitas de un mdulo de funciones de SAP 159

Leccin 5
Uso de ampliaciones implcitas en clases globales de SAP 163
Ejercicio 8: Ample una clase de SAP global. 167

Leccin 6
Uso de otras ampliaciones implcitas 174
Ejercicio 9: Ampliacin de estructuras y subrutinas de SAP 177

OBJETIVOS DEL CAPTULO

Describir las opciones de ampliacin disponibles en el concepto de ampliacin


Explicar los puntos de ampliacin
Analizar los puntos de ampliacin
Utilizar ampliaciones explcitas
Describir ampliaciones implcitas
Usar ampliaciones implcitas en los mdulos de funciones SAP

Copyright . Reservados todos los derechos. 139


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Usar ampliaciones implcitas en clases globales de SAP


Usar ampliaciones implcitas en clases locales de SAP
Usar ampliaciones implcitas en implementaciones de ampliaciones existentes
Usar las ampliaciones implcitas en programas de SAP

140 Copyright . Reservados todos los derechos.


Captulo 6
Leccin 1
Descripcin del concepto de ampliacin

RESUMEN DE LA LECCIN
En este mdulo se describen las opciones de ampliacin disponibles en el concepto de
ampliacin y tambin se describe el propsito de los puntos de ampliacin.

Ejemplo empresarial
Desea utilizar las nuevas opciones de ampliacin en el concepto de ampliacin para mejorar
las funciones de SAP sin realizar modificaciones. Por este motivo, se requieren los siguientes
conocimientos:
Comprensin de las ampliaciones disponibles en el concepto de ampliacin
Comprensin de los puntos de ampliacin
Comprensin de cmo obtener informacin sobre un punto de ampliacin

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir las opciones de ampliacin disponibles en el concepto de ampliacin
Explicar los puntos de ampliacin
Analizar los puntos de ampliacin

Copyright . Reservados todos los derechos. 141


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Ampliaciones en el concepto de ampliacin

Figura 101: Resumen de las ampliaciones en el concepto de ampliacin

En el concepto de ampliacin, hay algunas nuevas tcnicas de ampliacin disponibles en SAP


NetWeaver 7.0: puntos de ampliacin, opciones de ampliacin y secciones de ampliacin. A
diferencia de las tecnologas de ampliacin anteriores, las ampliaciones implcitas no
requieren preparativos de los desarrolladores de SAP, y estn disponibles de manera
implcita en reas determinadas de los objetos estndar de SAP.
SAP cre la nueva tecnologa de Add-In empresarial (BAdI) por motivos de rendimiento.
En la figura se ilustra la forma en que los puntos, las secciones de ampliacin y los BAdI
creados mediante la nueva tecnologa se agrupan y gestionan mediante puntos de
ampliacin.
Los puntos de ampliacin compuestos pueden ser puntos de ampliacin simples y otros
puntos de ampliacin compuestos. Estos puntos sirven para agrupar las ampliaciones
semnticamente.
Los BAdI clsicos an estn disponibles en el sistema. Sin embargo, SAP solo crear nuevos
BAdI a partir de ahora.

142 Copyright . Reservados todos los derechos.


Leccin: Descripcin del concepto de ampliacin

Puntos de ampliacin

Figura 102: Informacin sobre un punto de ampliacin

Desde SAP NetWeaver 7.02, es posible ofrecer otro punto o seccin de ampliacin dentro de
una implementacin de ampliacin. En el modo de implementacin, en el men contextual,
seleccione Operaciones de ampliacinCrear opcin. Especifique un nombre de punto o
seccin, y asigne un nombre al punto (respete el espacio para el nombre del cliente Y* o Z*
para el nombre del punto). Pulse INTRO y active la nueva ampliacin al activar la
implementacin.

Consejo:
Las implementaciones de ampliaciones se realizan en una capa de software
diferente (tal como las modificaciones realizadas con el Asistente de
modificacin). No puede verlos directamente en el Debugger. Para depurarlos,
seleccione el punto o la seccin de ampliacin definida y luego seleccione el
pulsador paso individual para indicar la implementacin de ampliacin.

Copyright . Reservados todos los derechos. 143


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Punto de ampliacin e implementacin de la ampliacin

Figura 103: Punto de ampliacin e implementacin de la ampliacin

Esta figura ilustra los puntos de ampliacin compuestos y las implementaciones de


ampliacin compuestas.
SAP ofrece puntos y secciones de ampliacin dentro de los puntos de ampliacin. Los puntos
de ampliacin pueden combinarse en SAP mediante los puntos de ampliacin compuestos.
Esta combinacin de puntos de ampliacin en puntos de ampliacin compuestos proporciona
una mejor estructura para la bsqueda global de puntos de ampliacin.

El cliente puede implementar las ampliaciones de las siguientes maneras:


Los clientes pueden implementar puntos y secciones de ampliacin creando una
implementacin de ampliacin para el punto de ampliacin relacionado.
Normalmente, los clientes implementan todos los puntos o las secciones de un punto de
ampliacin en una implementacin. Los elementos ampliados se numeran de manera
automtica.
Los clientes tambin tienen la opcin de combinar sus implementaciones de ampliacin en
una implementacin de ampliacin compuesta. Esta combinacin de implementaciones
de ampliacin en implementaciones de ampliacin compuestas simplifica su bsqueda
posterior. Sin embargo, no es necesario crear implementaciones de ampliacin
compuestas para los puntos de ampliacin compuestos.

Buscar un punto de ampliacin


No es posible realizar una bsqueda global para los puntos y las secciones de ampliacin
explcitos; sin embargo, es posible buscar puntos de ampliacin. En general, el nombre de un
punto que contiene todas las ampliaciones explcitas de un programa es, por lo general,
ES_<Nombre del programa SAP>.

Para buscar un punto de ampliacin, siga los pasos siguientes:

144 Copyright . Reservados todos los derechos.


Leccin: Descripcin del concepto de ampliacin

1. Inicie el Sistema de informacin de Repository (transaccin SE84).

2. En la pantalla Navegador de objetos, seleccione AmpliacionesPuntos de ampliacin.

3. Especifique los criterios de bsqueda para los puntos de ampliacin que busca y ejecute
para visualizar una lista de resultados.

4. Elija uno de los resultados para mostrar. Ver una lista de puntos y secciones de
ampliacin de este punto.

5. En la etiqueta Implementaciones de ampliaciones, puede ver todas las implementaciones


de ampliaciones del punto. Seleccione la implementacin de ampliacin que desea
visualizar.

6. El resultado muestra todos los elementos de implementacin de ampliaciones


relacionados con el nombre de la implementacin de ampliacin.

7. Seleccione, por ejemplo, un elemento dinmico de implementacin de ampliacin y el


pulsador Fuente para ver el cdigo de implementacin en la parte inferior de la pantalla.
Seleccione el pulsador Editor para visualizar el cdigo fuente de la ampliacin incorporada
al programa.

Nota:
Tambin puede utilizar el explorador de ampliaciones (transaccin SPAU_ENH)
para mostrar los puntos de ampliacin y sus implementaciones. La
funcionalidad es la misma que la del Sistema de informacin de Repository.

RESUMEN DE LA LECCIN
Ahora podr:
Describir las opciones de ampliacin disponibles en el concepto de ampliacin
Explicar los puntos de ampliacin
Analizar los puntos de ampliacin

Copyright . Reservados todos los derechos. 145


Captulo 6
Leccin 2
Uso de ampliaciones explcitas

RESUMEN DE LA LECCIN
En este mdulo se proporciona un resumen de los puntos y las secciones de ampliacin
explcita.

Ejemplo empresarial
Como desarrollador, ha observado algunas opciones y puntos de ampliacin explcitos en un
programa estndar que deber cambiar. No desea modificar el programa y, por lo tanto, le
gustara aprender a utilizar las ampliaciones explcitas disponibles.Por este motivo, requiere
los conocimientos siguientes:

1. Comprensin de los puntos y secciones de ampliacin explcitos

2. Comprensin de los riesgos de las implementaciones mltiples de puntos y secciones de


ampliacin explcitos

3. Cmo utilizar las ampliaciones explcitas

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

Puntos y secciones de ampliacin explcitos

Figura 104: Puntos y secciones de ampliacin explcitos

La figura le ensea a identificar puntos y secciones de ampliacin explcitos en un programa


de SAP.
SAP proporciona puntos de ampliacin explcitos y le permite ampliar el cdigo fuente de SAP
insertando su propia lgica sin realizar modificaciones. Puede identificar los puntos de

146 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones explcitas

ampliacin explcitos buscando la sintaxis ENHANCEMENT-POINT . Los puntos de ampliacin


pueden ser estticos (para permitir declaraciones de datos adicionales) o dinmicos (para
permitir cdigos ejecutables adicionales).
Una seccin de ampliacin es una opcin que SAP proporciona para permitirle sustituir el
cdigo fuente de SAP sin tener que realizar modificaciones. Puede identificar una seccin de
ampliacin al buscar las sintaxis ENHANCEMENT-SECTION y END-ENHANCEMENT-
SECTION .
Los puntos y las secciones de ampliacin explcitos estn almacenados en los puntos de
ampliacin.

Crear una implementacin para una ampliacin explcita


Para usar puntos y secciones de ampliacin explcitos, cree una implementacin de
ampliacin (del punto de ampliacin de nivel superior).

1. Visualice el objeto SAP (programa, mdulo de funciones, mtodo).

2. Busque el punto o la seccin de ampliacin que necesita.

3. Seleccione el pulsador Ampliacin.

4. Cree la implementacin de ampliacin mediante el men contextual del punto o la seccin


de ampliacin.

5. Especifique el nombre de la implementacin de ampliacin (respete el espacio para el


nombre del cliente Y* o Z*).

6. Introduzca el cdigo fuente.

7. Seleccione el pulsador Activar ampliaciones.

Riesgos de las implementaciones mltiples de las secciones de ampliacin


explcitas

Figura 105: Implementaciones mltiples de secciones de ampliacin

Copyright . Reservados todos los derechos. 147


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Es posible que se haya creado ms de una implementacin de ampliacin para una seccin de
ampliacin.

Nota:
Solo puede ejecutarse una implementacin de seccin de ampliacin en el tiempo
de ejecucin. Para habilitar una implementacin especfica cuando haya ms de
una, es necesario utilizar el Switch Framework.

Cuando haya ms de una implementacin activa, deber solucionar el conflicto creando un


switch de conexin. si falta este switch de conexin, no podr saber cul es la implementacin
que se ejecutar en el tiempo de ejecucin.

Conflicto en la seccin de ampliacin: ejemplo 1

Figura 106: Conflicto en la seccin de ampliacin: ejemplo 1

La figura muestra una situacin de conflicto donde el sistema no sabe qu implementacin


ejecutar. Aqu se requiere un switch de conexin para especificar la implementacin que se
ejecutar. Sin el switch de conexin, no puede saber si se utilizarn la implementacin 1 o la
implementacin 2 en el tiempo de ejecucin. Existe un riesgo adicional cuando utiliza una
seccin ENH (ampliacin) para el desarrollo local, cuando tambin la utiliza una
implementacin BF (funcin empresarial).

148 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones explcitas

Conflicto en la seccin de ampliacin: ejemplo 2

Figura 107: Conflicto en la seccin de ampliacin: ejemplo 2

En la figura, no se observa un conflicto porque la conexin BF-ENH-Implementation est


desactivada. Si activa la conexin BF-ENH-Implementation, se produce un conflicto y se
requerir un switch de conexin para solucionarlo.

Riesgos de las implementaciones mltiples de los puntos de ampliacin


explcitos

Figura 108: Implementaciones mltiples de los puntos de ampliacin

Copyright . Reservados todos los derechos. 149


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Es posible tener una o ms implementaciones para un punto de ampliacin que pertenece a


distintas implementaciones de ampliacin.
Por ejemplo, el Punto D tiene una implementacin de ampliacin en la implementacin de
ampliacin 1 y la implementacin de ampliacin 2.
Es posible asignar un punto de ampliacin de un punto a varias implementaciones de
ampliacin, y una implementacin de ampliacin puede utilizarse para puntos de ampliacin
de uno o ms puntos (relacin "m" a "n").

Nota:
Si existen mltiples implementaciones para un punto de ampliacin, no puede
asumir que se procesarn en un orden determinado, pero esto puede cambiar en
el futuro.

Riesgo de implementaciones mltiples

Figura 109: Riesgo de implementaciones mltiples

La secuencia de ejecucin de las implementaciones no est predefinida. Por lo tanto, debe


evitar dependencias o conflictos, por ejemplo, donde las distintas implementaciones cambian
el valor de una misma variable.

150 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 6
Uso de ampliaciones explcitas

Ejemplo empresarial
Como desarrollador, desea usar puntos y secciones de ampliacin explcitos para ampliar o
sustituir el cdigo fuente de SAP sin realizar modificaciones.

1. Analice el cdigo fuente del programa BC427_##_EPS (donde ## representa su nmero


de grupo).

2. Utilice el punto de ampliacin explcito BC427_##_EP1 para reaccionar ante el usuario


que indica 6 y 7 en la pantalla de seleccin de la misma manera en que el cdigo estndar
de SAP reacciona ante los valores del 1 al 5. Asigne el nombre ZBC427_##_EPS a la
implementacin de ampliacin que se crear.

3. Utilice la seccin de ampliacin explcita BC427_##_ES1 para mostrar el texto


correspondiente en la lista (es decir, utilizando WRITE) en lugar de emitir un mensaje de
usuario.

Copyright . Reservados todos los derechos. 151


Captulo 6
Solucin 6
Uso de ampliaciones explcitas

Ejemplo empresarial
Como desarrollador, desea usar puntos y secciones de ampliacin explcitos para ampliar o
sustituir el cdigo fuente de SAP sin realizar modificaciones.

1. Analice el cdigo fuente del programa BC427_##_EPS (donde ## representa su nmero


de grupo).
a) No requiere una solucin.

2. Utilice el punto de ampliacin explcito BC427_##_EP1 para reaccionar ante el usuario


que indica 6 y 7 en la pantalla de seleccin de la misma manera en que el cdigo estndar
de SAP reacciona ante los valores del 1 al 5. Asigne el nombre ZBC427_##_EPS a la
implementacin de ampliacin que se crear.
a) Cuando indica 6 y 7, el sistema debera mostrar Saturday (sbado) y Sunday
(domingo).
*$*$-Start: BC427_00_EP1------------------------$*$*

ENHANCEMENT 1 ZBC427_00_EPS.

CASE weekday. WHEN '6'. WRITE 'Saturday'. EXIT. WHEN '7'. WRITE
'Sunday'. EXIT. ENDCASE.

ENDENHANCEMENT. *$*$-End: BC427_00_EP1------------------------$*$*

3. Utilice la seccin de ampliacin explcita BC427_##_ES1 para mostrar el texto


correspondiente en la lista (es decir, utilizando WRITE) en lugar de emitir un mensaje de
usuario.
*$*$-Start:
a) BC427_00_ES1----------------------$*$* ENHANCEMENT 2
ZBC427_00_EPS. WRITE:/ 'Invalid weekday input'. ENDENHANCEMENT. *$*$-
-End: BC427_00_ES1----------------------$*$*

Full model solution program after exercise:

*-------------------------------------------------------------* * This
program translates the name of a weekday into English. *
*-------------------------------------------------------------*
REPORT BC427_00_EPS.

PARAMETERS weekday TYPE s_weekday_00.

START-OF-SELECTION.

CASE weekday. WHEN '1'. WRITE 'Monday'. EXIT. WHEN '2'. WRITE
'Tuesday'. EXIT. WHEN '3'. WRITE 'Wednesday'. EXIT. WHEN '4'. WRITE

152 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones explcitas

'Thursday'. EXIT. WHEN '5'. WRITE 'Friday'. EXIT. ENDCASE.

ENHANCEMENT-POINT BC427_00_EP1 SPOTS BC427_00_ESPOT1. *$*$-Start:


BC427_00_EP1----------------------$*$* ENHANCEMENT 1
ZBC427_00_EPS. "active version

CASE weekday. WHEN '6'. WRITE 'Saturday'. EXIT. WHEN '7'. WRITE
'Sunday'. EXIT. ENDCASE.

ENDENHANCEMENT. *$*$-End: BC427_00_EP1------------------------$*$*

ENHANCEMENT-SECTION BC427_00_ES1 SPOTS BC427_00_ESPOT1. MESSAGE


'Invalid weekday input' TYPE 'I'. END-ENHANCEMENT-SECTION. *$*$-Start:
BC427_00_ES1------------------------$*$* ENHANCEMENT 2
ZBC427_00_EPS. "active version WRITE:/ 'Invalid weekday input'.
ENDENHANCEMENT. *$*$-End: BC427_00_ES1------------------------$*$*

Copyright . Reservados todos los derechos. 153


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

RESUMEN DE LA LECCIN
Ahora podr:
Utilizar ampliaciones explcitas

154 Copyright . Reservados todos los derechos.


Captulo 6
Leccin 3
Descripcin de ampliaciones implcitas

RESUMEN DE LA LECCIN
En este mdulo se describen los puntos de ampliacin implcitos y las opciones de ampliacin
disponibles en las aplicaciones estndar de SAP.

Ejemplo empresarial
Desea ampliar las aplicaciones estndar de SAP sin realizar modificaciones, sin embargo, no
puede ver las ampliaciones explcitas disponibles. Por este motivo, se requieren los siguientes
conocimientos:
Comprensin de los puntos de ampliacin implcitos
Comprensin de las opciones de ampliacin implcitas

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

Resumen de los puntos de ampliacin implcitos

Figura 110: Resumen de los puntos de ampliacin implcitos

Los puntos de ampliacin implcitos le ofrecen la opcin de insertar un cdigo fuente adicional
en ciertos puntos de los programas de SAP, mdulos de funcin y mtodos sin realizar
modificaciones ni preparaciones explcitas de parte de los desarrolladores de SAP. El objeto
de SAP correspondiente pudo haberse creado en versiones anteriores a SAP NetWeaver 7.0.

Resumen de las opciones de ampliacin implcitas

Las opciones de ampliacin implcitas le ofrecen la capacidad de definir los siguientes


componentes sin modificaciones:

Copyright . Reservados todos los derechos. 155


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Parmetros de interfaz adicionales (opcionales) en los mdulos de funcin y en los


mtodos de SAP
Atributos y mtodos adicionales en las clases de SAP
Funciones de tratamiento anterior o posterior para los mtodos globales de SAP
Reemplazos para los mtodos globales de SAP

RESUMEN DE LA LECCIN
Ahora podr:
Describir ampliaciones implcitas

156 Copyright . Reservados todos los derechos.


Captulo 6
Leccin 4
Uso de ampliaciones implcitas en los mdulos
de funciones SAP

RESUMEN DE LA LECCIN
En este mdulo se describe el uso de ampliaciones implcitas en los mdulos de funciones
SAP.

Ejemplo empresarial
Encontr un mdulo de funciones estndar de SAP cuyo comportamiento desea cambiar sin
hacer modificaciones. Por este motivo, se requieren los siguientes conocimientos:
Comprensin de los puntos y de las opciones de ampliacin implcitos disponibles en los
mdulos de funciones SAP
Comprensin del modo de uso de las ampliaciones implcitas en un mdulo de funciones
SAP

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Usar ampliaciones implcitas en los mdulos de funciones SAP

Puntos y opciones de ampliacin implcitos en los mdulos de funcin de SAP


Para utilizar los puntos y las opciones de ampliacin implcitos en el mdulo de funciones de
SAP, deber crear una implementacin de ampliacin.

Los siguientes puntos y opciones de ampliacin implcitos estn disponibles para los
mdulos de funcin de SAP:

Opciones de ampliacin implcitas


- Pueden aadirse parmetros opcionales adicionales a la interfaz del mdulo de funcin.
Puntos de ampliacin implcitos
- Puede crear una implementacin de ampliacin que le permitir aadir lgica al
principio o al final del cdigo fuente del mdulo de funcin.

Ampliar un mdulo de funcin de SAP

A continuacin se detallan los pasos para ampliar las interfaces de un mdulo de funcin
de SAP:

1. Visualice el mdulo de funciones en Function Builder.

Copyright . Reservados todos los derechos. 157


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

2. Seleccione Mdulo de funcionesAmpliar interfaz y especificar una implementacin de


ampliacin para aadir un nuevo parmetro de interfaz con la tipificacin.

3. Seleccione el pulsador Activar ampliaciones.

Estos parmetros de interfaz aadidos siempre deben ser opcionales (si no los marca como
opcionales, el sistema lo hace) y pueden utilizarse en una ampliacin de cdigo fuente del
mdulo de funcin correspondiente.

A continuacin se detallan los pasos para ampliar el cdigo fuente de un mdulo de


funcin de SAP:

1. Visualice el cdigo fuente del mdulo de funcin.

2. Seleccione el pulsador Ampliacin.

3. Seleccione TratarOperaciones de ampliacinMostrar opciones de ampliacin


implcitas para visualizar las opciones de ampliacin implcitas.

4. En el editor, utilice el men contextual de uno de los puntos de ampliacin implcitos


visualizados para crear una implementacin de ampliacin.

5. Inserte el cdigo fuente.

6. Seleccione el pulsador Activar ampliaciones.

158 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 7
Uso de las ampliaciones implcitas de un
mdulo de funciones de SAP

Ejemplo empresarial
Desea utilizar las opciones y los puntos de ampliacin implcitos para ampliar mdulos de
funcin de SAP sin realizar modificaciones.

1. Familiarcese con el funcionamiento del mdulo de funcin de SAP


BC427_##_CALC_PRICE. El mdulo de funcin calcula el precio bruto a partir del precio
neto introducido y lo devuelve a travs del parmetro EXPORT.

2. Sin realizar modificaciones, defina un parmetro IMPORT adicional (opcional)


denominado im_discount (clase I) que puede utilizarse para traspasar un descuento (en
%) al mdulo de funcin. Asigne el nombre a suimplementacin de ampliacin
ZBC427_##_CALC_PRICE_INTERFACE (donde ## representa su nmero de grupo).
Defina un parmetro EXPORT denominado ex_discprice (clase BC427_PRICE) que el
mdulo de funcin puede utilizar para devolver el precio bruto descontado.
Grabe las ampliaciones.

3. Ample el cdigo fuente del mdulo de funcin para garantizar que el precio desconectado
pueda calcularse y que el resultado pueda mostrarse en ex_discprice con el parmetro
IMPORT im_discprice. Asigne el nombre a suimplementacin de ampliacin
ZBC427_##_CALC_PRICE_SOURCE.

4. Active las dos implementaciones de ampliacin.

5. Copiar programa BC427_IEP_FM_TEMPLATE (el nombre del programa destino como


ZBC427_##_IEP_FM). En su programa copiado, llame su mdulo de funcin ampliado
para garantizar que muestra el precio bruto descontado adems del precio bruto estndar
(la opcin de entrada de usuario para el descuento ya se ha implementado con el
parmetro de descuento). Entonces, el programa debe mostrar los dos precios brutos.

Copyright . Reservados todos los derechos. 159


Captulo 6
Solucin 7
Uso de las ampliaciones implcitas de un
mdulo de funciones de SAP

Ejemplo empresarial
Desea utilizar las opciones y los puntos de ampliacin implcitos para ampliar mdulos de
funcin de SAP sin realizar modificaciones.

1. Familiarcese con el funcionamiento del mdulo de funcin de SAP


BC427_##_CALC_PRICE. El mdulo de funcin calcula el precio bruto a partir del precio
neto introducido y lo devuelve a travs del parmetro EXPORT.
a) No requiere una solucin.

2. Sin realizar modificaciones, defina un parmetro IMPORT adicional (opcional)


denominado im_discount (clase I) que puede utilizarse para traspasar un descuento (en
%) al mdulo de funcin. Asigne el nombre a suimplementacin de ampliacin
ZBC427_##_CALC_PRICE_INTERFACE (donde ## representa su nmero de grupo).
Defina un parmetro EXPORT denominado ex_discprice (clase BC427_PRICE) que el
mdulo de funcin puede utilizar para devolver el precio bruto descontado.
Grabe las ampliaciones.
a) Seleccione Mdulo de funcin Ampliar interfaz.

b) Cuando se le solicite, especifique el nombre de la implementacin de ampliacin.

c) Seleccione la etiqueta IMPORT y aada el parmetro IM_DISCOUNT. Este parmetro


debe marcarse como opcional.

d) Seleccione la etiqueta EXPORT y aada el parmetro EX_DISCPRICE.

e) Grabe los datos.

3. Ample el cdigo fuente del mdulo de funcin para garantizar que el precio desconectado
pueda calcularse y que el resultado pueda mostrarse en ex_discprice con el parmetro
IMPORT im_discprice. Asigne el nombre a suimplementacin de ampliacin
ZBC427_##_CALC_PRICE_SOURCE.
a) Visualice el cdigo fuente del mdulo de funcin.

b) Seleccione el pulsador Ampliar.

c) Seleccione Tratar Operaciones de ampliacin Mostrar opciones de ampliacin


implcitas para visualizar las opciones de ampliacin implcitas.

d) En el editor, utilice el men contextual de uno de los puntos de ampliacin implcitos


visualizados para crear su implementacin de ampliacin.

160 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones implcitas en los mdulos de funciones SAP

e) Inserte el cdigo fuente, tal como se muestra a continuacin:


FUNCTION BC427_00_CALC_PRICE. *"-------------------------------
*"*"Lokale Schnittstelle: *" IMPORTING *" REFERENCE(IM_NETPRICE)
TYPE BC427_PRICE *" EXPORTING *" REFERENCE(EX_FULLPRICE) TYPE
BC427_PRICE *"-------------------------------

ex_fullprice = im_netprice * 119 / 100 .

""""""$"$\SE:(1) Function Module BC427_00_CALC_PRICE, End *$*$-Start:


(1)-------------------------------$*$* ENHANCEMENT 1
ZBC427_00_CALC_PRICE_SOURCE. "active version ex_discprice =
ex_fullprice - ex_fullprice * ( im_discount / 100 ). ENDENHANCEMENT. *
$*$-End: (1)-------------------------------$*$* ENDFUNCTION.

f) Seleccione el pulsador GRABAR.

4. Active las dos implementaciones de ampliacin.


a) Utilice el pulsador Activar ampliacin en el editor del mdulo de funcin.

5. Copiar programa BC427_IEP_FM_TEMPLATE (el nombre del programa destino como


ZBC427_##_IEP_FM). En su programa copiado, llame su mdulo de funcin ampliado
para garantizar que muestra el precio bruto descontado adems del precio bruto estndar
(la opcin de entrada de usuario para el descuento ya se ha implementado con el
parmetro de descuento). Entonces, el programa debe mostrar los dos precios brutos.
REPORT
a) zbc427_00_iep_fm.

PARAMETERS: netprice TYPE bc427_price, discount TYPE i.

DATA: fullprice TYPE bc427_price, discprice TYPE bc427_price.

* Calling the enhanced function module

CALL FUNCTION 'BC427_00_CALC_PRICE' EXPORTING IM_NETPRICE =


netprice IM_DISCOUNT = discount IMPORTING EX_FULLPRICE =
fullprice EX_DISCPRICE = discprice . WRITE: / 'Full
price :', 18 fullprice, / 'Discount price :', 18 discprice.

Copyright . Reservados todos los derechos. 161


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

RESUMEN DE LA LECCIN
Ahora podr:
Usar ampliaciones implcitas en los mdulos de funciones SAP

162 Copyright . Reservados todos los derechos.


Captulo 6
Leccin 5
Uso de ampliaciones implcitas en clases
globales de SAP

RESUMEN DE LA LECCIN
En este mdulo se describe el uso de ampliaciones implcitas en las clases globales de SAP.

Ejemplo empresarial
Ha encontrado una clase global estndar de SAP cuyo comportamiento desea cambiar sin
realizar modificaciones. Por este motivo, se requieren los siguientes conocimientos:
Comprensin de los puntos y opciones de ampliacin implcitos en las clases de SAP
Comprensin de los mtodos anteriores, posteriores y de sobrescritura
Comprensin de las ampliaciones implcitas de cdigo fuente y de cundo pueden
utilizarse en lugar de los mtodos anteriores y posteriores
Cmo mejorar una clase de SAP global

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Usar ampliaciones implcitas en clases globales de SAP

Copyright . Reservados todos los derechos. 163


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Puntos y opciones de ampliacin implcitos en las clases de SAP

Figura 111: Puntos y opciones de ampliacin implcitos en las clases de SAP

Para ampliar las interfaces de los mtodos SAP globales y definir atributos o mtodos
adicionales para las clases globales de SAP, proceda de la siguiente manera:
1. Visualice la clase en el generador de clases.

2. Seleccione ClaseAmpliar y especifique la implementacin de una ampliacin.

3. Aada nuevos atributos, mtodos y parmetros de interfaz a los mtodos existentes.

4. Para acceder al editor de mtodos y poder aadir el cdigo, haga doble clic en el nombre
de los mtodos adicionales que haya creado.

5. Seleccione el pulsador Activar ampliaciones.

Los parmetros de interfaz recientemente aadidos siempre deben ser opcionales, y pueden
utilizarse en cualquier ampliacin de cdigo fuente del mtodo correspondiente.
Cualquier atributo o mtodo nuevo tambin se puede utilizar en las ampliaciones de cdigo
fuente de mtodos de la misma clase global.

Mtodos de sobrescritura, anteriores y posteriores


Estos mtodos se utilizan de manera automtica antes, despus o en lugar del mtodo SAP.
Cuanto se crean los mtodos de sobrescritura, anteriores y posteriores, el sistema genera
una clase local denominada lcl_<enhancement_name> para la ampliacin
<enhancement_name>. Esta clase local se incorpora al final de la seccin de implementacin
de clase local de la clase original (como una implementacin de la opcin de ampliacin
predefinida).
Puede acceder a los componentes de la clase original dentro de la clase local
lcl_<enhancement_name> a travs de la referencia de objeto CORE_OBJECT.

164 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones implcitas en clases globales de SAP

La clase local lcl_<enhancement_name> puede implementar las siguientes interfaces:


IPR_<enhancement_name> para mtodos anteriores
IPO_<enhancement_name>para mtodos posteriores
IOW_<enhancement_name> para mtodos de sobrescritura

Los parmetros de sobrescritura, anteriores y posteriores son similares a los parmetros


del mtodo original, pero presentan las siguientes restricciones:

Los mtodos anteriores no tienen parmetros para export.


Los mtodos posteriores no tienen parmetros para EXPORT; los parmetros para
EXPORT del mtodo SAP original se convierten en parmetros CHANGING del mtodo
posterior.
El parmetro de retorno de un mtodo funcional se convierte en un parmetro changing.
Los mtodos de sobrescritura tienen la misma firma que el mtodo original.
No puede modificar las definiciones de parmetro de los mtodos de sobrescritura,
anteriores y posteriores.

Definicin de un mtodo de sobrescritura, anterior o posterior

A continuacin se detallan los pasos para definir un mtodo de sobrescritura, anterior o


posterior de una clase de SAP global:

1. Visualice la clase en el generador de clases.

2. Seleccione ClaseAmpliar y especifique o cree la implementacin de una ampliacin.

3. Use el cursor para marcar el mtodo SAP.

4. Seleccione TratarOperaciones de ampliacin y luego seleccione Insertar mtodo


anterior, Insertar mtodo posterior o Aadir mtodo de sobrescritura.

5. Seleccione el pulsador nuevo en la columna Exit anterior/posterior/de sobrescritura) para


implementar el mtodo correspondiente. Para llamar los componentes de la clase global
en el mtodo, debe utilizar la variable de referencia core_object que se establece en el
constructor local.

6. Grabe el mtodo.

7. Seleccione el pulsador Activar ampliaciones.

Para cada mtodo SAP, puede definir un mtodo anterior y otro posterior. Como alternativa,
puede crear un mtodo de sobrescritura que sustituya al mtodo SAP.

Ampliaciones de cdigo fuente implcitas en comparacin con mtodos


anteriores o posteriores

Estas son las ventajas de los mtodos anteriores o posteriores:

Mayor nivel de abstraccin por estar en espacios diferentes

Copyright . Reservados todos los derechos. 165


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Menor esfuerzo de ajuste que en las ampliaciones de cdigo fuente durante la


actualizacin (solo cuando los parmetros se modifican)
Todos los mtodos anteriores y posteriores se almacenan en la clase de ampliacin local
que posee atributos para intercambiar datos entre los mtodos.

166 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 8
Ample una clase de SAP global.

Ejemplo empresarial
Desea utilizar las nuevas opciones de ampliacin del concepto de ampliacin para mejorar
una clase de SAP global para que cumpla sus requisitos.Esto incluye la creacin de un
atributo y un mtodo adicional, as como la ampliacin de mtodos existentes dentro de la
clase.
Tarea 1
Cree un nuevo atributo y un mtodo adicional en la clase.

1. Cree un nuevo atributo de instancia privada llamado Age, de tipo I, usando una ampliacin
implcita.Asigne el nombre ZBC427_PERSON_## a su implementacin de ampliacin.

2. Cree un nuevo mtodo de instancia pblica llamado GET_AGE, que devuelva el valor del
nuevo atributo AGE al programa de llamada a travs del parmetro de RETURNING
llamado RE_AGE de tipo I.

3. Utilice el entorno de prueba en el Generador de clases para garantizar el funcionamiento


del nuevo mtodo.

Tarea 2
Cree parmetros adicionales y ample el cdigo fuente de los mtodos existentes.

1. Ample el constructor de instancia aadiendo un nuevo parmetro, IM_AGE, de tipo I.

2. Utilice la ampliacin implcita al final del constructor de instancia para completar el


atributo Age con el valor del nuevo parmetro IM_AGE.

Tarea 3
Cree un mtodo posterior.

1. Cree un parmetro de Import adicional, IM_DISPLAY_ALL, de la clase ABAP_BOOL para el


mtodo DISPLAY_ATTRIBUTES.

2. Cree un mtodo posterior para el mtodo DISPLAY_ATTRIBUTES que compruebe el valor


del nuevo parmetro IM_DISPLAY_ALL y, si tiene el valor 'X', mostrar el valor del atributo
AGE con el comando WRITE. Deber utilizar la referencia CORE_OBJECT para trabajar
con el atributo AGE en el mtodo posterior.

3. Utilice la clase ampliada en una copia del programa ABAP


BC427_IEP_CLASS_TEMPLATE. Este programa debera crear una instancia de la clase
CL_BC427_PERSON_##, y luego llamar el mtodo DISPLAY_ATTRIBUTES utilizando el
nuevo parmetro IM_DISPLAY_ALL para garantizar que todos los detalles se visualizan en
la lista/informe.

Copyright . Reservados todos los derechos. 167


Captulo 6
Solucin 8
Ample una clase de SAP global.

Ejemplo empresarial
Desea utilizar las nuevas opciones de ampliacin del concepto de ampliacin para mejorar
una clase de SAP global para que cumpla sus requisitos.Esto incluye la creacin de un
atributo y un mtodo adicional, as como la ampliacin de mtodos existentes dentro de la
clase.
Tarea 1
Cree un nuevo atributo y un mtodo adicional en la clase.

1. Cree un nuevo atributo de instancia privada llamado Age, de tipo I, usando una ampliacin
implcita.Asigne el nombre ZBC427_PERSON_## a su implementacin de ampliacin.
a) Inicie la transaccin SE80.

b) En la pantalla Navegador de objetos, indique Clase/Interfaz.

c) Indique CL_BC427_PERSON_## como el nombre de clase y seleccione el pulsador


Visualizar.

d) En el panel Nombre del objeto, haga doble clic en el nombre de clase


CL_BC427_PERSON_## para abrirlo.

e) En la pantalla Generador de clases: Visualizar clase CL_BC427_PERSON_##,


seleccione la etiqueta Atributo.

f) Seleccione el pulsador Ampliar.

g) En el cuadro de dilogo Crear implementacin de ampliacin, indique


ZBC427_PERSON_## y una breve descripcin en el campo Texto breve y seleccione el
pulsador Continuar.

h) En el cuadro de dilogo Crear entrada de directorio de objeto, indique ZBC427_## en el


campo Paquete.

i) Grabe los datos.

j) En el cuadro de dilogo Peticin para orden de Workbench transportable, seleccione la


orden de Workbench que el instructor cre para usted.

k) Seleccione el pulsador Continuar.

l) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##, indique


los datos siguientes en la etiqueta Atributo:
Atributo Nivel Visibilidad Tipo asociado
age Instancia Privado I

168 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones implcitas en clases globales de SAP

m) Active su ampliacin.

2. Cree un nuevo mtodo de instancia pblica llamado GET_AGE, que devuelva el valor del
nuevo atributo AGE al programa de llamada a travs del parmetro de RETURNING
llamado RE_AGE de tipo I.
a) En la etiqueta Mtodos, indique los datos siguientes:
Mtodo Nivel Visibilidad
GET_AGE Instancia Pblico

b) Seleccione el mtodo GET_AGE.

c) Seleccione el pulsador Parmetro.

d) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##, indique


los datos siguientes en la pantalla de parmetros del mtodo:
Parmetros Tipo Tipo asociado
re_age Retorno I

e) Seleccione el pulsador Cdigo, y asegrese de que puede ver los parmetros de


mtodo seleccionando el pulsador FIRMA.

f) Indique el cdigo de la siguiente manera:re_age = age.

g) Seleccione el pulsador Activar.

3. Utilice el entorno de prueba en el Generador de clases para garantizar el funcionamiento


del nuevo mtodo.
a) Regrese a la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_## y
seleccione el pulsador En el entorno de prueba.

b) En la pantalla Crear instancia de la clase CL_BC427_PERSON_##: Parmetros de


constructor, seleccione el pulsador Tratar campo largo o estructura.

c) Indique un nombre y regrese.

d) Seleccione el pulsador Crear instancia.

e) Seleccione el pulsador Ejecutar para su mtodo GET_AGE.

Nota:
El valor del parmetro de retorno est vaco por el momento, porque el
atributo age an no se complet.

Tarea 2
Cree parmetros adicionales y ample el cdigo fuente de los mtodos existentes.

1. Ample el constructor de instancia aadiendo un nuevo parmetro, IM_AGE, de tipo I.


a) Seleccione CONSTRUCTOR en la columna Mtodo.

Copyright . Reservados todos los derechos. 169


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

b) Seleccione el pulsador Parmetro.

c) Indique los datos siguientes:


Parmetros Tipo asociado
im_age I

d) Marque la casilla de seleccin Opcional y luego seleccione el pulsador Activar.

2. Utilice la ampliacin implcita al final del constructor de instancia para completar el


atributo Age con el valor del nuevo parmetro IM_AGE.
a) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##,
seleccione el pulsador Cdigo.

b) Seleccione el pulsador Ampliar.

c) En la pantalla Generador de clases: Clase CL_BC427_PERSON_## Cambiar ampliacin,


seleccione Tratar Operaciones de ampliacin Mostrar opciones de ampliacin
implcita.

d) Seleccione la ampliacin implcita al final del mtodo CONSTRUCTOR y luego


seleccione el pulsador Crear.

e) En el cuadro de dilogo Seleccionar modo de ampliacin, seleccione el pulsador


Cdigo.

f) En el cuadro de dilogo Crear implementacin de ampliacin, indique


ZBC427_PERSON_CODE_## en el campo Implementacin de la ampliacin.

g) Indique una descripcin breve en el campo Texto breve.

h) Grabe los datos y asgnelos a su paquete y orden de transporte de la manera habitual.

i) En la pantalla Generador de clases: Ampliacin ZBC427_PERSON_CODE_## Cambiar,


indique el cdigoAGE= IM_AGE. y seleccione el pulsador Activar.

j) Regrese a la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_## y


seleccione el pulsador En el entorno de prueba.

k) En la pantalla Crear instancia de la clase CL_BC427_PERSON_##: Parmetros de


constructor, seleccione el pulsador Tratar campo largo o estructura.

l) Indique un nombre para la prueba.

m) Regrese e indique un valor para el parmetro IM_AGE.

n) Seleccione el pulsador Crear instancia.

o) Seleccione el pulsador Ejecutar para su mtodo GET_AGE nuevamente.

Nota:
El valor del parmetro de retorno tendr el valor correspondiente de AGE.

Tarea 3
Cree un mtodo posterior.

170 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones implcitas en clases globales de SAP

1. Cree un parmetro de Import adicional, IM_DISPLAY_ALL, de la clase ABAP_BOOL para el


mtodo DISPLAY_ATTRIBUTES.
a) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##,
asegrese de que se encuentra en la etiqueta Mtodos y luego seleccione el mtodo
DISPLAY_ATTRIBUTES.

b) Seleccione el pulsador Parmetro.

c) Para el parmetro de mtodo de DISPLAY ATTRIBUTES, indique los datos siguientes:


Parmetros Tipo Tipo asociado
IM_DISPLAY_ALL Importacin ABAP_BOOL

d) Seleccione el pulsador Mtodos para volver a la lista de mtodos.

2. Cree un mtodo posterior para el mtodo DISPLAY_ATTRIBUTES que compruebe el valor


del nuevo parmetro IM_DISPLAY_ALL y, si tiene el valor 'X', mostrar el valor del atributo
AGE con el comando WRITE. Deber utilizar la referencia CORE_OBJECT para trabajar
con el atributo AGE en el mtodo posterior.
a) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##,
seleccione el mtodo DISPLAY_ATTRIBUTES.

b) En la pantalla Generador de clases: Cambiar ampliacin ZBC427_PERSON_##,


seleccione TratarOperaciones de ampliacinInsertar mtodo posterior.

c) Cuando le pregunten si desea acceder a componentes privados o protegidos de la


clase, seleccione el pulsador S.

d) En la pantalla Editor ABAP: Cambiar Include ZBC427_PERSON_##, indique el cdigo


siguiente:
if im_display_all = 'X'. Write:/'Age of person is', core_object->age.
endif.

e) Revise la sintaxis y active el cdigo.

3. Utilice la clase ampliada en una copia del programa ABAP


BC427_IEP_CLASS_TEMPLATE. Este programa debera crear una instancia de la clase
CL_BC427_PERSON_##, y luego llamar el mtodo DISPLAY_ATTRIBUTES utilizando el
nuevo parmetro IM_DISPLAY_ALL para garantizar que todos los detalles se visualizan en
la lista/informe.
a) Seleccione Programa, indique el nombre del programa
BC427_IEP_CLASS_TEMPLATE y seleccione VISUALIZAR.

b) Seleccione BC427_IEP_CLASS_TEMPLATE y Copiar en el men contextual.

c) En el cuadro de dilogo Copiar programa BC427_IEP_CLASS_TEMPLATE, indique


ZBC427_IEP_CLASS_## en el campo Programa destino.

d) Abra el programa ZBC427_IEP_CLASS_## en modo Tratar.

e) Indique la definicin de una variable de referencia adecuada de la siguiente manera:


DATOS clase r_person ref.a cl_bc427_person_##.

Copyright . Reservados todos los derechos. 171


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

f) Aada el cdigo para crear una instancia de la clase; puede utilizar la funcionalidad
arrastrar y soltar o PATTERN para insertar el cdigo necesario. El resultado final
debera tener este aspecto:
CREATE OBJECT r_person EXPORTING im_name = p_name im_age = p_age.

g) Despus de haber creado el proyecto, llame el mtodo DISPLAY_ATTRIBUTES. Puede


utilizar la funcionalidad arrastrar y soltar o PATTERN para insertar el cdigo necesario.
El resultado final debera tener este aspecto:
CALL METHOD r_person->display attributes EXPORTING im_display_all =
'X'.

h) Seleccione el pulsador Activar.

i) Pruebe el programa.

j) En la pantalla de seleccin, indique un nombre en el campo Nombre y un valor de edad


en el campo Edad.

k) En el campo texto de comando, indique /h para activar el depurador.

l) Pulse INTRO y seleccione al pulsador Ejecutar.

m) Depure el programa y observe la ejecucin de sus implementaciones de ampliacin.

172 Copyright . Reservados todos los derechos.


Leccin: Uso de ampliaciones implcitas en clases globales de SAP

RESUMEN DE LA LECCIN
Ahora podr:
Usar ampliaciones implcitas en clases globales de SAP

Copyright . Reservados todos los derechos. 173


Captulo 6
Leccin 6
Uso de otras ampliaciones implcitas

RESUMEN DE LA LECCIN
En este mdulo se explican los puntos y opciones de ampliacin implcitos disponibles en
clases locales de SAP, definiciones de estructuras SAP y subrutinas SAP.

Ejemplo empresarial
Desea conocer las dems opciones de ampliacin implcitas disponibles en los programas
estndar de SAP. Por este motivo, se requieren los siguientes conocimientos:
Comprensin de los puntos y opciones de ampliacin implcitos en las clases locales de
SAP
Comprensin del modo de ampliar las estructuras y subrutinas SAP
Comprensin del modo de uso de los puntos de ampliacin implcitos en
implementaciones de ampliacin existentes

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Usar ampliaciones implcitas en clases locales de SAP
Usar ampliaciones implcitas en implementaciones de ampliaciones existentes
Usar las ampliaciones implcitas en programas de SAP

Puntos y opciones de ampliacin implcitos en clases locales de SAP

Las opciones de ampliacin implcitas disponibles en las clases locales de SAP son las
siguientes:

Aadir parmetros opcionales (importacin, exportacin y modificacin, pero no


parmetros de retorno o excepciones) a las interfaces del mtodo
Definir atributos y mtodos adicionales (pblico, protegido y privado)

Los puntos de ampliacin implcitos disponibles en las clases locales de SAP son las
siguientes:

Al principio y al final de los mtodos (para aadir lgica o utilizar parmetros de interfaz,
atributos o mtodos adicionales)
Al final del bloque de implementacin (para implementar mtodos adicionales creados)

Para utilizar los puntos y las opciones de ampliacin implcitos en las clases locales de SAP,
cree una implementacin de ampliacin.

174 Copyright . Reservados todos los derechos.


Leccin: Uso de otras ampliaciones implcitas

Ampliar una clase local de SAP

A continuacin se detallan los pasos para ampliar una clase local:

1. Visualice el cdigo fuente de la clase local.

2. Seleccione el pulsador Ampliacin.

3. Seleccione TratarOperaciones de ampliacinMostrar opciones de ampliacin


implcitas para mostrar las opciones de ampliacin implcitas.

4. En el editor, utilice el men contextual de una de las opciones de ampliacin o uno de los
puntos visualizados implcitos para crear una implementacin de ampliacin.

Consejo:
Debe desplazarse hacia la derecha del editor para ver las ampliaciones
implcitas que se muestran. Si crea una implementacin de ampliacin para
la seccin pblica, asegrese de seleccionar la ampliacin implcita
adecuada. No escriba PUBLIC SECTION en la implementacin de ampliacin.
Contine de la misma manera en las dems posibilidades de ampliacin.

5. Inserte el cdigo fuente.

6. Seleccione el pulsador Activar ampliaciones.

Nota:
Para la ampliacin de una interfaz de mtodo, las adiciones introductorias
IMPORTACIN, EXPORTACIN y MODIFICACIN no se especificarn, incluso
si no aparecen en la declaracin del mtodo original.

Otros puntos de ampliacin implcitos

Otros puntos de ampliacin implcitos de los objetos de SAP estn disponibles:

Al final de una declaracin (de tipo) de estructura (antes de "END OF ...") (para incluir
campos adicionales)
Al principio y al final de las subrutinas (para ampliar las funciones adicionales)
Al final de los Includes (para implementar las subrutinas y funciones adicionales)

Consejo:
Los puntos y las secciones de ampliacin implcitos no estn disponibles para
elementos de objetos centrales de la base de SAP.

Copyright . Reservados todos los derechos. 175


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

Utilizar otros puntos de ampliacin implcitos

1. Visualice el cdigo fuente del objeto de SAP correspondiente.

2. Seleccione el pulsador Ampliacin.

3. Seleccione TratarOperaciones de ampliacinMostrar opciones de ampliacin


implcitas para mostrar las opciones de ampliacin implcitas.

4. En el editor, utilice el men contextual de uno de los puntos de ampliacin implcitos


visualizados para crear una implementacin de ampliacin.

5. Inserte el cdigo fuente.

6. Seleccione el pulsador Activar ampliaciones.

Nota:
Cuando ample una declaracin (de tipo) de estructura (antes de END OF ...),
deber utilizar la sintaxis DATA: <Campo adicional1> TIPO <Tipo1>, <Campo
adicional2> TIPO <Tipo2>. De lo contrario, el programa sera incorrecto
sintcticamente.

176 Copyright . Reservados todos los derechos.


Captulo 6
Ejercicio 9
Ampliacin de estructuras y subrutinas de SAP

Ejemplo empresarial
Desea utilizar los puntos de ampliacin implcitos para ampliar las subrutinas y estructuras de
SAP.

1. Analice el cdigo fuente del programa BC427_##_IEP_STRFORM (donde ## representa


su nmero de grupo).

2. Utilice el punto de ampliacin implcito correspondiente para aadir los campos distancia
y distid para estructurar la definicin wa_conn (distancia y unidad de vuelo, tipificacin
utilizando los campos SPFLI del mismo nombre). Asigne el nombre a suimplementacin
de ampliacin ZBC427_##_IEP_STRFORM.

3. En la subrutina display_conn, el parmetro formal f_conn ahora contiene los dos campos
adicionales distancia y distid debido a la tipificacin utilizando wa_conn. Utilice el punto de
ampliacin implcito correspondiente para que aparezcan estos campos.

Copyright . Reservados todos los derechos. 177


Captulo 6
Solucin 9
Ampliacin de estructuras y subrutinas de SAP

Ejemplo empresarial
Desea utilizar los puntos de ampliacin implcitos para ampliar las subrutinas y estructuras de
SAP.

1. Analice el cdigo fuente del programa BC427_##_IEP_STRFORM (donde ## representa


su nmero de grupo).
a) No requiere una solucin.

2. Utilice el punto de ampliacin implcito correspondiente para aadir los campos distancia
y distid para estructurar la definicin wa_conn (distancia y unidad de vuelo, tipificacin
utilizando los campos SPFLI del mismo nombre). Asigne el nombre a suimplementacin
de ampliacin ZBC427_##_IEP_STRFORM.
a) El punto de ampliacin implcito que se utilizar se encuentra al final de la definicin de
estructura (antes de END OF ...).
DATA: BEGIN OF wa_conn, carrid TYPE spfli-carrid, connid TYPE
spfli-connid, cityfrom TYPE spfli-cityfrom, cityto TYPE spfli-
-cityto, """"""""""$"$\SE:(1) Struct. WA_CONN, End *$*$-Start:
(1)------------------$*$* ENHANCEMENT 1 ZBC427_00_IEP_STRFORM.
"active version """""""""""""""""""""""""""""""" DATA: distance TYPE
spfli-distance, distid TYPE spfli-distid.
"""""""""""""""""""""""""""""""" ENDENHANCEMENT. *$*$-End:
(1)------------------$*$* END OF wa_conn.

3. En la subrutina display_conn, el parmetro formal f_conn ahora contiene los dos campos
adicionales distancia y distid debido a la tipificacin utilizando wa_conn. Utilice el punto de
ampliacin implcito correspondiente para que aparezcan estos campos.
a) El punto de ampliacin implcito que se utilizar se encuentra al final de la subrutina.
FORM display_conn USING f_conn LIKE wa_conn.

WRITE: / f_conn-carrid, f_conn-connid, f_conn-cityfrom, f_conn-


-cityto.

"""""""""""""""""""""""""""""""""""" *$*$-Start:
(2)---------------------$*$* ENHANCEMENT 2 ZBC427_00_IEP_STRFORM.
"active version WRITE: f_conn-distance, f_conn-distid.
ENDENHANCEMENT. *$*$-End: (2)---------------------$*$* ENDFORM.

178 Copyright . Reservados todos los derechos.


Leccin: Uso de otras ampliaciones implcitas

RESUMEN DE LA LECCIN
Ahora podr:
Usar ampliaciones implcitas en clases locales de SAP
Usar ampliaciones implcitas en implementaciones de ampliaciones existentes
Usar las ampliaciones implcitas en programas de SAP

Copyright . Reservados todos los derechos. 179


Captulo 6: Puntos de ampliacin, opciones de ampliacin y secciones de ampliacin

180 Copyright . Reservados todos los derechos.


Captulo 6

Evaluacin de la formacin

1. Los puntos de ampliacin implcitos requieren preparativos de SAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Los clientes pueden utilizar puntos o secciones de ampliacin al crear una


implementacin de ampliacin para el ______________ relacionado.
Seleccione la respuesta correcta.

X A Seccin de ampliacin implcita

X B Punto de ampliacin explcito

X C Punto de ampliacin

3. Qu sintaxis se utiliza para identificar un punto de ampliacin explcito?


Seleccione la respuesta correcta.

X A ENHANCEMENT-SECTION

X B ENHANCEMENT-POINT

X C END-ENHANCEMENT SECTION

4. Es posible tener ms de una implementacin para un punto de ampliacin que pertenece


a distintas implementaciones de ampliacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 181


Captulo 6: Evaluacin de la formacin

5. Los puntos y las secciones de ampliacin explcitos estn almacenados en un ___________.


Seleccione la respuesta correcta.

X A Conflicto-disolucin o switch de conexin

X B Punto de ampliacin

X C Implementacin de ampliacin

6. Un punto de ampliacin implcito le ofrece la opcin de insertar un cdigo fuente adicional


en ciertos puntos del cdigo fuente de SAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. El concepto de ampliacin le permite ampliar los mtodos en las clases de SAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Para utilizar los puntos y las opciones de ampliacin implcitos, debe crear un ___________.
Seleccione la respuesta correcta.

X A Punto de ampliacin explcito

X B Implementacin de ampliacin

X C Seccin de ampliacin explcita

9. Los parmetros aadidos a un mdulo de funcin de SAP con una ampliacin implcita
pueden ser obligatorios.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

10. Los mtodos de sobrescritura reemplazan la implementacin del mtodo original.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

182 Copyright . Reservados todos los derechos.


Captulo 6: Evaluacin de la formacin

11. Identifique las ampliaciones implcitas disponibles en las clases locales de SAP.
Seleccione las respuestas correctas.

X A Al comienzo y al final del mtodo

X B Al final del bloque de implementacin

X C Aadir parmetro de importacin

Copyright . Reservados todos los derechos. 183


Captulo 6

Respuestas a la Evaluacin de la formacin

1. Los puntos de ampliacin implcitos requieren preparativos de SAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Los clientes pueden utilizar puntos o secciones de ampliacin al crear una


implementacin de ampliacin para el ______________ relacionado.
Seleccione la respuesta correcta.

X A Seccin de ampliacin implcita

X B Punto de ampliacin explcito

X C Punto de ampliacin

3. Qu sintaxis se utiliza para identificar un punto de ampliacin explcito?


Seleccione la respuesta correcta.

X A ENHANCEMENT-SECTION

X B ENHANCEMENT-POINT

X C END-ENHANCEMENT SECTION

4. Es posible tener ms de una implementacin para un punto de ampliacin que pertenece


a distintas implementaciones de ampliacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

184 Copyright . Reservados todos los derechos.


Captulo 6: Respuestas a la Evaluacin de la formacin

5. Los puntos y las secciones de ampliacin explcitos estn almacenados en un ___________.


Seleccione la respuesta correcta.

X A Conflicto-disolucin o switch de conexin

X B Punto de ampliacin

X C Implementacin de ampliacin

6. Un punto de ampliacin implcito le ofrece la opcin de insertar un cdigo fuente adicional


en ciertos puntos del cdigo fuente de SAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. El concepto de ampliacin le permite ampliar los mtodos en las clases de SAP.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

8. Para utilizar los puntos y las opciones de ampliacin implcitos, debe crear un ___________.
Seleccione la respuesta correcta.

X A Punto de ampliacin explcito

X B Implementacin de ampliacin

X C Seccin de ampliacin explcita

9. Los parmetros aadidos a un mdulo de funcin de SAP con una ampliacin implcita
pueden ser obligatorios.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 185


Captulo 6: Respuestas a la Evaluacin de la formacin

10. Los mtodos de sobrescritura reemplazan la implementacin del mtodo original.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

11. Identifique las ampliaciones implcitas disponibles en las clases locales de SAP.
Seleccione las respuestas correctas.

X A Al comienzo y al final del mtodo

X B Al final del bloque de implementacin

X C Aadir parmetro de importacin

186 Copyright . Reservados todos los derechos.


CAPTULO 7 Add-ins empresariales (BAdI)

Leccin 1
Comprensin del cambio de las Add-ins empresariales clsicas a las nuevas Add-ins empresariales 188
Ejercicio 10: Implementacin de exits de programa para BAdI clsicos 193

Leccin 2
Implementacin de exits de programa para nuevas Add-ins empresariales (BAdI) 196
Ejercicio 11: Implementacin de exits de programa para nuevos BAdI 203

Leccin 3
Implementacin de exits de men de nuevos Add-ins empresariales (BAdI) 206
Ejercicio 12: Implementacin de exits de men para nuevas BAdI 213

Leccin 4
Implementacin de nuevos exits de dynpro de Add-ins empresariales (BAdI) 216
Ejercicio 13: Implementacin de exits de dynpro para nuevas BAdI 221

OBJETIVOS DEL CAPTULO

Explicar la integracin de Add-Ins empresariales (BAdIs) en el concepto de ampliacin


Describir los Add-ins empresariales (BAdI) clsicos
Implementar Add-ins empresariales (BAdI) clsicos
Implementar exits de programa para nuevos Add-ins empresariales (BAdI)
Implementar exits de men para nuevos Add-ins empresariales (BAdI)
Implementar exits de dynpro para nuevos Add-ins empresariales (BAdI)

Copyright . Reservados todos los derechos. 187


Captulo 7
Leccin 1
Comprensin del cambio de las Add-ins
empresariales clsicas a las nuevas Add-ins
empresariales

RESUMEN DE LA LECCIN
En este mdulo se proporciona informacin sobre la nueva tecnologa de Add-Ins
empresariales (BAdI) disponible desde SAP NetWeaver 7.0, y se explica cmo buscar y
utilizar BAdI clsicos y nuevos.

Ejemplo empresarial
Como desarrollador, desea aprender a utilizar los BAdI para ampliar su software SAP sin
realizar modificaciones. Por este motivo, se requieren los siguientes conocimientos:
Comprensin de la nueva tecnologa BAdI
Comprensin de los BAdI clsicos
Comprensin de cmo implementar los BAdI nuevos
Comprensin de cmo implementar exits de programa para BAdI clsicos

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar la integracin de Add-Ins empresariales (BAdIs) en el concepto de ampliacin
Describir los Add-ins empresariales (BAdI) clsicos
Implementar Add-ins empresariales (BAdI) clsicos

Nueva tecnologa de BAdI


Desde SAP NetWeaver 7.0, SAP pretende utilizar la nueva tecnologa BAdI para ampliaciones
futuras. Los BadI han existido desde SAP R/3 4.6 y proporcionan una tecnologa de
ampliacin moderna.

A continuacin se detallan los motivos que SAP present en la nueva tecnologa de BAdI:
La nueva tecnologa de BAdI mejora el rendimiento.
La nueva tecnologa de BAdI proporciona algunas funciones adicionales:
- Concepto de filtro ampliado
- Opcin para heredar atributos a partir de clases de implementacin de muestra
(redefinicin de mtodo selectivo)

188 Copyright . Reservados todos los derechos.


Leccin: Comprensin del cambio de las Add-ins empresariales clsicas a las nuevas Add-ins empresariales

Los nuevos BAdI vienen integrados en el nuevo concepto de ampliacin con puntos y
secciones de ampliacin.

El concepto de ampliacin disponible desde SAP NetWeaver 7.0 administra BAdI clsicos y
nuevos con opciones, puntos y secciones de ampliacin.

Resumen de los BAdI en el concepto de ampliacin

Figura 112: Resumen de los BAdI en el concepto de ampliacin

A diferencia de los BAdI clsicos, los nuevos BAdI siempre pertenecen a los puntos de
ampliacin, que los administran. Aunque SAP crear nuevos BAdI a partir de ahora, an hay
muchas ampliaciones que proporcionan los BAdI clsicos y, por lo tanto, siguen siendo muy
importantes.

Copyright . Reservados todos los derechos. 189


Captulo 7: Add-ins empresariales (BAdI)

BAdI clsicos

Figura 113: Exit de programa para BAdI clsico: arquitectura

La figura muestra cmo funciona un exit de programa que se proporciona con la tecnologa
clsica de BAdI.
Una definicin de BAdI y una interfaz se crean con la transaccin SE18. La creacin del BAdI y
de la interfaz genera la creacin automtica de una clase de adaptador BAdI y un mtodo de
puente correspondiente que la aplicacin de SAP llama para derivar al cdigo relevante. La
nica tarea de este mtodo de puente es llamar las implementaciones activas existentes de
las soluciones industriales, los interlocutores y los clientes, y uno despus del otro. No es
posible garantizar la secuencia en que se llamarn.

190 Copyright . Reservados todos los derechos.


Leccin: Comprensin del cambio de las Add-ins empresariales clsicas a las nuevas Add-ins empresariales

Exit de programa para BAdI clsico: sintaxis de llamada en el programa de SAP

Figura 114: Exit de programa para BAdI clsico: sintaxis de llamada en el programa de SAP

La figura muestra la sintaxis que se utiliza para preparar y llamar el mtodo de puente del
programa de SAP.
En el programa de SAP, una variable de referencia se define con la clase de interfaz BAdI que
ya se defini.
Cuando se llama el mtodo esttico GET_INSTANCE de la clase estndar CL_EXITHANDLER,
se crea una instancia de la clase de adaptador (instancia BAdI). A continuacin el mtodo de
puente se llama a travs de la instancia BAdI y accede a las implementaciones relevantes.

Buscar un exit de programa para BAdI clsico

Para realizar una bsqueda de BAdI libre, utilice la transaccin SE84.

Para detallar los BAdI para una aplicacin especfica, utiliza la transaccin SE81, seguida
de la transaccin SE84.

Para realizar una bsqueda relativa al programa:


a) Busque GET_INSTANCE globalmente en el programa.

b) Para navegar a la interfaz de BAdI, haga doble clic en la variable de referencia arrojada
por el mtodo GET_INSTANCE y despus haga doble clic en la interfaz que se utiliza
para indicar esta variable de referencia.

c) Realice una bsqueda de utilizacin para determinar dnde se utiliza la interfaz en las
clases denominadas CL_EX_<BAdI-Name>.

d) Lea la documentacin de BAdI en SE18.

Copyright . Reservados todos los derechos. 191


Captulo 7: Add-ins empresariales (BAdI)

Nota:
Tambin puede ser necesario realizar una bsqueda de GET_INSTANCE en los
mdulos y mtodos de funcin llamados por el programa principal.

O bien, puede seguir los pasos siguientes para realizar una bsqueda relativa al
programa:

En el Debuggerr, establezca un breakpoint para el mtodo GET_INSTANCE.


En el programa, busque los usos de las variables de referencia que se hallaron.

Para implementar un exit de programa para BAdI clsico

Siga estos pasos para implementar un exit de programa para BAdI clsico:

1. Visualice la definicin de BAdI en la transaccin SE18.

2. Seleccione ImplementacinCrear y acceda a la transaccin SE19.

3. Especifique un nombre para la implementacin de BAdI.

4. Para implementarlos, haga doble clic en los nombres de los mtodos de la etiqueta
Interfaz.

5. Active los mtodos y la clase de implementacin.

6. Active la implementacin de BAdI.

192 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 10
Implementacin de exits de programa para
BAdI clsicos

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un programa estndar de SAP. Desea
realizar una bsqueda en el programa para determinar si existe un exit programa BAdI clsico
que pueda implementar para ampliar el cdigo.

1. Desea aadir columnas adicionales a la lista del programa SAP BC427_##_CBD_PX


(donde ## representa su nmero de grupo) sin realizar modificaciones.
Averige si el programa SAP contiene un exit de programa para BAdI clsico para este fin.

2. Si corresponde, utilice el exit de programa BAdI que encontr para aadir las columnas
deseadas a la salida del programa.
Denomine su implementacin ZBC427_##_CBD_PX.

Copyright . Reservados todos los derechos. 193


Captulo 7
Solucin 10
Implementacin de exits de programa para
BAdI clsicos

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un programa estndar de SAP. Desea
realizar una bsqueda en el programa para determinar si existe un exit programa BAdI clsico
que pueda implementar para ampliar el cdigo.

1. Desea aadir columnas adicionales a la lista del programa SAP BC427_##_CBD_PX


(donde ## representa su nmero de grupo) sin realizar modificaciones.
Averige si el programa SAP contiene un exit de programa para BAdI clsico para este fin.
a) Realice una bsqueda global en el programa para GET_INSTANCE. Examine la
descripcin en el mdulo.

b) Para navegar hacia la definicin de variable, haga doble clic en la variable de referencia
utilizada para la llamada de mtodo.

c) Para navegar hacia la interfaz, haga doble clic en el nombre de la interfaz de BAdI
utilizada para definir la variable de referencia.

d) Realice una bsqueda de utilizacin para el uso de la interfaz en los Add-Ins


empresariales.

2. Si corresponde, utilice el exit de programa BAdI que encontr para aadir las columnas
deseadas a la salida del programa.
Denomine su implementacin ZBC427_##_CBD_PX.
method
a) IF_EX_BC427_00_EXT_FL_DISP~WRITE_ADDITIONAL_COLS. WRITE:
i_wa_sflight-price CURRENCY i_wa_sflight-currency, i_wa_sflight-
-currency. endmethod.

194 Copyright . Reservados todos los derechos.


Leccin: Comprensin del cambio de las Add-ins empresariales clsicas a las nuevas Add-ins empresariales

RESUMEN DE LA LECCIN
Ahora podr:
Explicar la integracin de Add-Ins empresariales (BAdIs) en el concepto de ampliacin
Describir los Add-ins empresariales (BAdI) clsicos
Implementar Add-ins empresariales (BAdI) clsicos

Copyright . Reservados todos los derechos. 195


Captulo 7
Leccin 2
Implementacin de exits de programa para
nuevas Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
En este mdulo se describe la implementacin y el uso de los exits de programa para el nuevo
Add-In empresarial (BAdI).

Ejemplo empresarial
Como desarrollador, necesita comprender la arquitectura y la sintaxis de los exits de
programa de los nuevos BAdI para que pueda implementarlos. Por este motivo, requiere los
siguientes conocimientos:
Comprensin de la Arquitectura de los exits de programa para los nuevos BAdI
Comprensin de la nueva sintaxis de exits de programa para BAdI
Comprensin de la forma de buscar exits de programa para nuevos BAdI
Comprensin de la forma de Implementar exits de programa para nuevos BAdI

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar exits de programa para nuevos Add-ins empresariales (BAdI)

196 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de programa para nuevas Add-ins empresariales (BAdI)

Arquitectura de los exits de programa para los nuevos BAdI

Figura 115: Exit de programa para BAdI nuevo: arquitectura

La figura muestra la arquitectura de un exit de programa que se proporciona con la nueva


tecnologa de BAdI.
La nueva tecnologa de BAdI funciona de manera similar a los BAdI clsicos. Ya no se crean
clases adaptadores de BAdI, lo que significa que el programa de aplicacin de SAP no se tiene
que instanciar. En su lugar, en el tiempo de ejecucin del programa de aplicacin, el sistema
genera un handle de BAdI en el ncleo que realiza la misma funcin que la clase de adaptador,
y llama los mtodos de implementacin disponibles con mayor eficacia.

Copyright . Reservados todos los derechos. 197


Captulo 7: Add-ins empresariales (BAdI)

Sintaxis de exit de programa para BAdI nuevo

Figura 116: Exit de programa para BAdI nuevo: sintaxis de llamada en el programa de SAP

La figura muestra la sintaxis en un programa de SAP que llama un BAdI nuevo.


A diferencia de la tecnologa de BAdI clsico, la variable de referencia se indica directamente
en el BAdI, en lugar de en la interfaz de BAdI.
El programa de SAP genera el ncleo de BAdI que utiliza la sentencia GET BADI que especifica
la variable de referencia. Si no encuentra una implementacin de BAdI activa, se lanza la
excepcin cx_badi_not_implemented.
El programa de SAP accede a la implementacin pertinente cuando se llama el mtodo de
puente del ncleo BAdI (CALL BADI). Si se utiliza una referencia de ncleo inicial para la
sentencia CALL BADI (por ejemplo, porque la sentencia GET BADI no se realiz con xito), se
desencadenar la excepcin cx_badi_initial_reference.
Conocer la sintaxis requerida en el programa de SAP le permite realizar una bsqueda relativa
al programa para nuevos BAdI.
Para realizar una bsqueda libre de BAdI o puntos de ampliacin, utilice la transaccin SE84.
Para detallar los BAdI o los puntos de ampliacin de una aplicacin especfica, utilice la
transaccin SE81 seguida de la transaccin SE84.

buscar exits de programa para nuevos BAdI

A continuacin se detallan los pasos para buscar exits de programa para nuevos BAdI:

1. Realice una bsqueda global en el programa para GET BADI.

2. Para navegar hacia la definicin de variable, haga doble clic en la variable de referencia
utilizada en la sentencia GET BADI.

198 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de programa para nuevas Add-ins empresariales (BAdI)

3. Haga doble clic en el nombre de BAdI para navegar hacia la visualizacin del punto de
ampliacin correspondiente.

Nota:
Tambin puede ser necesario realizar una bsqueda en los mdulos y
mtodos de funcin llamados en el programa de SAP.

O bien, puede seguir los pasos siguientes para realizar una bsqueda relacionada para
BAdI nuevos:

En el Debuggerr, establezca un breakpoint para el mtodo GET BADI.


En el programa, busque los usos de las variables de referencia determinadas.

Implementacin de exits de programa para nuevos BAdI

A continuacin se detallan los pasos para crear una implementacin de BAdI:

1. Visualice el punto de ampliacin correspondiente.

2. Seleccione Implementar punto de ampliacin y cree la implementacin de ampliacin.

3. Especifique un nombre para la implementacin de ampliacin.

4. Especifique un nombre para las implementaciones de BAdI.

5. Actualice los atributos para las implementaciones de BAdI.

6. En el rea de navegacin para el BAdI requerido, seleccione Clase de implementacin.

7. Especifique el nombre de la clase de implementacin que puede heredar de la clase de


muestra. O bien, puede copiarla. Seleccione el pulsador Cambiar.

8. Haga doble clic en el mtodo para implementarlo o ajustarlo.

9. Active el mtodo y todos los datos correspondientes, incluida la implementacin de la


ampliacin.

Copyright . Reservados todos los derechos. 199


Captulo 7: Add-ins empresariales (BAdI)

Implementacin de los exits de programa para nuevos BAdI

Figura 117: Punto de ampliacin con definicin de BAdI

La figura le muestra un punto de ampliacin con una definicin de BAdI (nuevo).


Para usar un BAdI,, debe crear una implementacin de ampliacin que sea una
implementacin del punto de ampliacin de nivel superior. Debe crear una implementacin de
BAdI para cada BAdI que desea utilizar en el punto de ampliacin.

Implementacin del punto de ampliacin con la implementacin de BAdI

Figura 118: Implementacin del punto de ampliacin con la implementacin de BAdI

La figura le muestra una implementacin de punto de ampliacin con una implementacin de


BAdI (nuevo).

200 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de programa para nuevas Add-ins empresariales (BAdI)

BAdI dependientes de filtro

Figura 119: BAdI dependientes de filtro

La figura ilustra el concepto de los BAdI dependientes de filtro. Algunos BAdI clsicos eran
dependientes de filtro, pero la funcionalidad se ha ampliado en los BAdI nuevos.

Los BAdI dependientes de filtro ahora permiten:


Filtros numricos
Implementaciones con valores de filtro individuales y condiciones de filtro que utilizan los
operadores <>, >, <. >=, <=, CP y NP
Mltiples filtros para una implementacin de BAdI

Copyright . Reservados todos los derechos. 201


Captulo 7: Add-ins empresariales (BAdI)

202 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 11
Implementacin de exits de programa para
nuevos BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un programa estndar de SAP.Desea buscar
en el programa para determinar si existe un exit de programa para nuevo BAdI que puede
implementar para ampliar el cdigo.

1. Desea aadir columnas adicionales a la lista del programa SAP BC427_##_NBD_PX


(donde ## representa su nmero de grupo) sin realizar modificaciones.
Averige si el programa SAP contiene un programa para BAdI nuevo para este fin.

2. Si corresponde, utilice el exit de programa BAdI que encontr para aadir las columnas
deseadas a la salida del programa.
Asigne nombres a los siguientes componentes:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_PXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_PX
Implementacin de clase como ZCL_BC427_##_NBD_PX

Copyright . Reservados todos los derechos. 203


Captulo 7
Solucin 11
Implementacin de exits de programa para
nuevos BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un programa estndar de SAP.Desea buscar
en el programa para determinar si existe un exit de programa para nuevo BAdI que puede
implementar para ampliar el cdigo.

1. Desea aadir columnas adicionales a la lista del programa SAP BC427_##_NBD_PX


(donde ## representa su nmero de grupo) sin realizar modificaciones.
Averige si el programa SAP contiene un programa para BAdI nuevo para este fin.
a) Realice una bsqueda global en el programa para GET BADI y CALL BADI.

b) Haga doble clic en la variable de referencia utilizada para navegar a la definicin de


variable.

c) Haga doble clic en el nombre de BAdI para navegar hacia la visualizacin del punto de
ampliacin correspondiente.

2. Si corresponde, utilice el exit de programa BAdI que encontr para aadir las columnas
deseadas a la salida del programa.
Asigne nombres a los siguientes componentes:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_PXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_PX
Implementacin de clase como ZCL_BC427_##_NBD_PX
METHOD
a) if_ex_bc427_00_px_badi~write_additional_cols. WRITE: i_wa_spfli-
-distance, i_wa_spfli-distid. ENDMETHOD.

204 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de programa para nuevas Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
Ahora podr:
Implementar exits de programa para nuevos Add-ins empresariales (BAdI)

Copyright . Reservados todos los derechos. 205


Captulo 7
Leccin 3
Implementacin de exits de men de nuevos
Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
En este mdulo se describe la implementacin y el uso de los nuevos exits de men para el
Add-In empresarial (BAdI).

Ejemplo empresarial
Como desarrollador, debe comprender la arquitectura y la sintaxis de los nuevos exits de
men para BAdI para poder implementarlos y aadir nuevas entradas de men a los mens
estndar de SAP. Por este motivo, se requieren los siguientes conocimientos:
Comprensin del principio y la arquitectura de los exits de men para BAdI
Comprensin de la sintaxis de los exits de men para BAdI
Comprensin de la forma de hallar e implementar un nuevo exit de men para BAdI

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar exits de men para nuevos Add-ins empresariales (BAdI)

206 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de men de nuevos Add-ins empresariales (BAdI)

Principio y arquitectura de los exits de men BAdI

Figura 120: Exits de men para BAdI: principio

La figura muestra el principio de un exit de men que SAP proporcion con la nueva
tecnologa de BAdI. Los exits de esta clase solo pueden tener una implementacin activa.
Los exits de men brindan a los clientes la opcin de implementar entradas de men
adicionales que desencadenan el cdigo personalizado en los dynpro de SAP.

Copyright . Reservados todos los derechos. 207


Captulo 7: Add-ins empresariales (BAdI)

Arquitectura y detalles de los exits de men para BAdI

Figura 121: Exits de men para BAdI: arquitectura y detalles

En la figura, para el GUI STATUS correspondiente, el desarrollador del dynpro SAP prepara
una opcin de men, que an no se encuentra visible, con un cdigo de funcin especificado
(siempre comienza con un signo +). Tambin encontrar un exit de programa para BAdI
relacionado con este cdigo de funcin en la lgica de flujo Proceso despus de entrada (PAI)
del dynpro en cuestin, y el exit de programa puede utilizarse para implementar una funcin.
Cuando un cliente implementa un BAdI de esta clase, no solo especifica el texto de la opcin
de men adicional. Tambin debe implementar el exit de programa para BAdI con la
codificacin que se ejecutar cuando el usuario selecciona la entrada del men. Cuando se
implementa el exit de men para BAdI, la entrada del men de dynpro de SAP se activa y se
visualiza. Si el usuario selecciona la entrada de men, se procesa la lgica personalizada.

208 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de men de nuevos Add-ins empresariales (BAdI)

Sintaxis de exits de men para BAdI

Figura 122: Sintaxis de exits de men para BAdI

La figura muestra la sintaxis de llamada en el programa de SAP correspondiente. Es idntica a


la sintaxis de llamada para exits de programa. Aqu la llamada se realizar especficamente en
un mdulo PAI para el cdigo de funcin especial que representa el exit de men
(comenzando por un signo +).

Copyright . Reservados todos los derechos. 209


Captulo 7: Add-ins empresariales (BAdI)

Exits de men para BAdI: implementacin

Figura 123: Exits de men para BAdI: implementacin

La figura muestra un ejemplo de una implementacin de exit de men para BAdI. Se ha


actualizado texto de men que el usuario ve en el men. La implementacin del exit de
programa tambin puede actualizarse en Clase de implementacin, al igual que con un exit de
programa para BAdI comn.

Implementar un exit de men para BAdI

A continuacin se detallan los pasos para buscar y utilizar nuevos exits de men para
BAdI:

1. En el estado de GUI del dynpro, busque el cdigo de funcin que comienza con un signo +
(ms).

2. En los mdulos de PAI del dynpro, busque una referencia al cdigo de funcin
correspondiente.

3. Para el comando CALL BADI que se relaciona con el cdigo de funcin, haga doble clic en
la variable de referencia que se utiliza en la llamada para navegar hacia la definicin.

4. Para navegar hacia la visualizacin del punto de ampliacin correspondiente al que


pertenece el BAdI, haga doble clic en el BAdI utilizado para la tipificacin.

5. Lea la documentacin de BAdI y, si es necesario, cree una implementacin para el punto y


luego una implementacin para el BAdI en s.

6. Implemente el exit de programa disponible en el BAdI.

7. Haga doble clic en el exit de men disponible en el BAdI para implementarlo.

210 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de men de nuevos Add-ins empresariales (BAdI)

8. Especifique el texto para la entrada de men adicional.

9. Active todos los objetos.

Copyright . Reservados todos los derechos. 211


Captulo 7: Add-ins empresariales (BAdI)

212 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 12
Implementacin de exits de men para nuevas
BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un men de un dynpro estndar de SAP.
Desea realizar una bsqueda en el programa para determinar si existe un exit de men para
BAdI que puede implementar para proporcionar una entrada adicional en el men que utiliza
su cdigo personalizado cuando lo elige un usuario.

1. El programa SAP BC427_##_NBD_MX (donde ## representa el nmero de grupo)


muestra el registro maestro requerido del cliente en un dynpro despus de indicar un ID
de cliente.
Desde el dynpro de visualizacin del cliente, desea proporcionar una entrada de men
adicional para detallar las reservas de vuelos del cliente. Averige si tiene un exit de men
para BAdI en esta entrada de men.

2. Si corresponde, utilice el exit de men que encontr para llamar el programa


BC427_CUSTOMER_BOOKINGS y visualizar las reservas de vuelo relevantes del cliente
que se visualiza en el dynpro Seleccin. Este programa proporciona el parmetro
CUSTOMID que se utiliza para indicar un ID de cliente y detallar las reservas
correspondientes.
Asigne un nombre a los componentes de la siguiente manera:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_MXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_MX
Implementacin de clase como ZCL_BC427_##_NBD_MX

Copyright . Reservados todos los derechos. 213


Captulo 7
Solucin 12
Implementacin de exits de men para nuevas
BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un men de un dynpro estndar de SAP.
Desea realizar una bsqueda en el programa para determinar si existe un exit de men para
BAdI que puede implementar para proporcionar una entrada adicional en el men que utiliza
su cdigo personalizado cuando lo elige un usuario.

1. El programa SAP BC427_##_NBD_MX (donde ## representa el nmero de grupo)


muestra el registro maestro requerido del cliente en un dynpro despus de indicar un ID
de cliente.
Desde el dynpro de visualizacin del cliente, desea proporcionar una entrada de men
adicional para detallar las reservas de vuelos del cliente. Averige si tiene un exit de men
para BAdI en esta entrada de men.
a) En el estado de GUI del dynpro, busque un cdigo de funcin que comienza con un
signo + (ms).

b) En los mdulos PAI del dynpro, busque el cdigo de funcin para determinar cul es el
exit de programa que se llama para el cdigo de funcin.

c) Para el comando CALL BADI, haga doble clic en la variable de referencia especificada
para navegar a esta definicin.

d) Haga doble clic en el BAdI utilizado para la tipificacin para navegar hacia la
visualizacin del punto de ampliacin correspondiente al que pertenece el BAdI.

2. Si corresponde, utilice el exit de men que encontr para llamar el programa


BC427_CUSTOMER_BOOKINGS y visualizar las reservas de vuelo relevantes del cliente
que se visualiza en el dynpro Seleccin. Este programa proporciona el parmetro
CUSTOMID que se utiliza para indicar un ID de cliente y detallar las reservas
correspondientes.
Asigne un nombre a los componentes de la siguiente manera:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_MXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_MX
Implementacin de clase como ZCL_BC427_##_NBD_MX

a) Sintaxis para llamar el programa y visualizar las reservas:


SUBMIT BC427_CUSTOMER_BOOKINGS WITH customid = im_customid AND RETURN.

214 Copyright . Reservados todos los derechos.


Leccin: Implementacin de exits de men de nuevos Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
Ahora podr:
Implementar exits de men para nuevos Add-ins empresariales (BAdI)

Copyright . Reservados todos los derechos. 215


Captulo 7
Leccin 4
Implementacin de nuevos exits de dynpro de
Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
En este mdulo se describe la implementacin y el uso de los nuevos exits de dynpro para el
Add-In empresarial (BAdI).

Ejemplo empresarial
Como desarrollador, debe comprender la arquitectura y la sintaxis de los nuevos exits de
dynpro para BAdI para poder aadir ms campos en un dynpro estndar de SAP. Por este
motivo, se requieren los siguientes conocimientos:
Comprensin del principio, la arquitectura y la sintaxis de los exits de dynpro para BAdI
Comprensin de la forma de Implementar exits de dynpro para nuevos BAdI

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Implementar exits de dynpro para nuevos Add-ins empresariales (BAdI)

Principio, arquitectura y sintaxis de los exits de dynpro para BAdI

Figura 124: Exits de dynpro para BAdI: principio

216 Copyright . Reservados todos los derechos.


Leccin: Implementacin de nuevos exits de dynpro de Add-ins empresariales (BAdI)

La figura muestra el principio de un exit de dynpro que SAP cre con la nueva tecnologa de
BAdI. Similar a los exits de men, solo puede haber una implementacin activa de un exit de
dynpro.
Los exits de dynpro brindan a los clientes la opcin de visualizar campos adicionales u otros
elementos de dynpro en un dynpro de SAP sin realizar modificaciones. Por ejemplo, puede
utilizar los exits de dynpro para visualizar campos de una estructura Append de cliente
relacionada con los datos que ya se visualizan en el dynpro.
El desarrollador de dynpro de SAP reserva un rea subscreen para almacenar un subscreen
de cliente. El subscreen del cliente debe definirse en un grupo de funciones del cliente y debe
contener los campos adicionales que se visualizarn. En la implementacin de cliente
correspondiente del BAdI, se especifica la referencia al subscreen y este se determina y
utiliza en el PBO (proceso antes de resultado) del dynpro de SAP.

Exits de dynpro para BAdI: arquitectura y sintaxis de llamada

Figura 125: Exits de dynpro para BAdI: arquitectura y sintaxis de llamada

Para garantizar que el subscreen de cliente muestre los datos correctos, los datos se
traspasan del PBO del dynpro de SAP (al llamar el mtodo de puente correspondiente) a la
implementacin del mtodo BAdI del cliente.
El cliente debe implementar el mtodo BAdI de manera que el mdulo de funcin del cliente
correspondiente de su grupo de funciones se llame al momento del traspaso de datos. Esta
implementacin del mtodo BAdI debe garantizar el traspaso de datos a los datos globales
del grupo de funciones que, a la vez, se utiliza para proporcionar los datos para los campos
del subscreen. Por lo tanto, en el grupo de funciones del cliente, adems del subscreen en s,
es necesario crear una estructura de TABLES correspondiente (en el Include TOP) para el
intercambio de datos y un mdulo de funcin correspondiente que se llamar en la
implementacin del cliente del mtodo BAdI.
Si el dynpro tiene campos de entrada (es decir, permite al usuario modificar datos), debe
implementar otro mtodo BAdI de manera que llame otro mdulo de funciones del grupo de

Copyright . Reservados todos los derechos. 217


Captulo 7: Add-ins empresariales (BAdI)

funciones del cliente. Esto permite que el BAdI obtenga datos traspasados del subscreen a la
estructura de TABLES y los exporte al programa de llamada del mtodo. El programa de SAP
llama este mtodo BAdI en la lgica de flujo PAI de su dynpro (con el mtodo de puente) para
recibir los datos del subscreen y procesarlos.

Implementacin de los exits de dynpro para nuevos BAdI

Figura 126: Exits de dynpro para BAdI: implementacin

La figura muestra una implementacin de un exit de dynpro para nuevo BAdI.

Buscar y utilizar exits de dynpro para BAdI

1. En el dynpro estndar de SAP, busque un rea subscreen (bsqueda previa opcional).

2. En el programa estndar de SAP, busque el comando GET BADI. Tambin encontrar el


mtodo GET_PROG_AND_DYNP_FOR_SUBSCR de la clase
CL_ENH_BADI_RUNTIME_FUNCTIONS, que le informa sobre la disponibilidad de un exit
de dynpro para BAdI.

3. Para navegar hacia la definicin de variable de referencia, haga doble clic en la variable de
referencia utilizada en la sentencia GET BADI.

4. Para navegar hacia el punto de ampliacin al que pertenece el BAdI, haga doble clic en el
BAdI utilizado para indicar la variable de referencia.

5. Lea la documentacin del BAdI y realice los pasos posteriores para la implementacin de
BAdI.

6. Cree el grupo de funciones, incluido el subscreen, la estructura de TABLES (en el Include


TOP) y los mdulos de funcin correspondientes.

7. Cree una implementacin para el punto de ampliacin y para el BAdI.

218 Copyright . Reservados todos los derechos.


Leccin: Implementacin de nuevos exits de dynpro de Add-ins empresariales (BAdI)

8. En el BAdI, implemente los exits de programa disponibles (los mtodos de colocacin y


obtencin).

9. En el BAdI, haga doble clic en el exit de dynpro disponible para implementarlo.

10. Especifique el subscreen y el programa principal del grupo de funciones. El nombre del
programa principal es el nombre del grupo de funciones con el prefijo SAPL.

11. Active todos los objetos.

Copyright . Reservados todos los derechos. 219


Captulo 7: Add-ins empresariales (BAdI)

220 Copyright . Reservados todos los derechos.


Captulo 7
Ejercicio 13
Implementacin de exits de dynpro para
nuevas BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un dynpro estndar de SAP. Desea buscar
en el programa para determinar si existe un exit de dynpro para BAdI que puede implementar
para aadir campos adicionales al dynpro estndar de SAP.

1. Despus de que el usuario elige un ID de compaa area, el programa de SAP


BC427_##_NBD_SX (donde ## representa su nmero de grupo) muestra los detalles de
la aerolnea especificada en un dynpro. Tambin desea visualizar all la moneda local de
una aerolnea.
Averige si tiene un exit de dynpro para BAdI en este caso.

2. Si corresponde, utilice el exit de dynpro para visualizar tambin el campo SCARR


-CURRCODE (moneda local de la aerolnea).
Asigne un nombre a sus componentes de la siguiente manera:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_SXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_SX
Implementacin de clase como ZCL_BC427_##_NBD_SX
Grupo de funciones para el subscreen como ZSCREEN_EXIT_##

Copyright . Reservados todos los derechos. 221


Captulo 7
Solucin 13
Implementacin de exits de dynpro para
nuevas BAdI

Ejemplo empresarial
Como desarrollador, deber realizar cambios en un dynpro estndar de SAP. Desea buscar
en el programa para determinar si existe un exit de dynpro para BAdI que puede implementar
para aadir campos adicionales al dynpro estndar de SAP.

1. Despus de que el usuario elige un ID de compaa area, el programa de SAP


BC427_##_NBD_SX (donde ## representa su nmero de grupo) muestra los detalles de
la aerolnea especificada en un dynpro. Tambin desea visualizar all la moneda local de
una aerolnea.
Averige si tiene un exit de dynpro para BAdI en este caso.
a) En el dynpro estndar de SAP, busque un rea subscreen (bsqueda previa opcional).

b) En el programa estndar de SAP, busque el comando GET BADI. Tambin encontrar


el mtodo GET_PROG_AND_DYNP_FOR_SUBSCR de la clase
CL_ENH_BADI_RUNTIME_FUNCTIONS, que le informa sobre la disponibilidad de un
exit de dynpro para BAdI.

c) Para navegar hacia la definicin de variable de referencia, haga doble clic en la variable
de referencia utilizada en la sentencia GET BADI.

d) Para navegar hacia el punto de ampliacin al que pertenece el BAdI, haga doble clic en
el BAdI utilizado para indicar la variable de referencia.

e) Lea la documentacin del BAdI y realice los pasos posteriores para la implementacin
de BAdI. Examine la descripcin en el mdulo.

2. Si corresponde, utilice el exit de dynpro para visualizar tambin el campo SCARR


-CURRCODE (moneda local de la aerolnea).
Asigne un nombre a sus componentes de la siguiente manera:
Implementacin de ampliacin (implementacin del punto) como
ZBC427_##_SXBADI_SPOT
Implementacin de BAdI como ZBC427_##_NBD_SX
Implementacin de clase como ZCL_BC427_##_NBD_SX
Grupo de funciones para el subscreen como ZSCREEN_EXIT_##

a) Examine la descripcin en el mdulo.

222 Copyright . Reservados todos los derechos.


Leccin: Implementacin de nuevos exits de dynpro de Add-ins empresariales (BAdI)

Include Top del grupo de funciones:


FUNCTION-POOL ZSCREEN_EXIT_00. "MESSAGE-ID ..

TABLES scarr.

Function module of the function group: FUNCTION Z_PUT_DATA_00.


*"---------------------- *"*"Local Interface: *" IMPORTING *"
REFERENCE(IM_SCARR) TYPE SCARR *"----------------------

* Move data from SAP program to SCARR Tables structure used for *
subscreen

MOVE-CORRESPONDING im_scarr to scarr.

ENDFUNCTION.

Implementation of BAdI method PUT_DATA: method


IF_EX_BC427_00_SX_BADI~PUT_DATA.

CALL FUNCTION 'Z_PUT_DATA_00' EXPORTING IM_SCARR = im_wa_scarr.

endmethod.

Copyright . Reservados todos los derechos. 223


Captulo 7: Add-ins empresariales (BAdI)

RESUMEN DE LA LECCIN
Ahora podr:
Implementar exits de dynpro para nuevos Add-ins empresariales (BAdI)

224 Copyright . Reservados todos los derechos.


Captulo 7

Evaluacin de la formacin

1. La nueva tecnologa de Add-In empresarial (BAdI) se ha desarrollado para ____________.


Seleccione las respuestas correctas.

X A Mejorar el rendimiento

X B Implementar funciones adicionales

X C Mejorar la escalabilidad

X D Integrar en el nuevo concepto de ampliacin

2. Los nuevos Add-In empresariales (BAdI) siempre pertenecen a los puntos de ampliacin y
son administrados por estos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Cuando utiliza los nuevos Add-Ins empresariales (BAdIs) en tiempo de ejecucin, el


sistema genera un handle de BAdI en el _______, que realiza la misma funcin que la clase
de adaptador de BAdI y llama los mtodos de implementacin disponibles.
Seleccione la respuesta correcta.

X A Shell

X B Sistema

X C Ncleo

4. Cuando el ncleo de Add-In empresarial (BAdI) se genera con la sentencia GET BADI,
qu excepcin se desencadena si no encuentra una implementacin de BAdI activa?
Seleccione la respuesta correcta.

X A cx_badi_implemented

X B cx_badi_not_implemented

X C call_badi_not_implemented

Copyright . Reservados todos los derechos. 225


Captulo 7: Evaluacin de la formacin

5. Para cada Add-In empresarial (BAdI) que desea utilizar en un punto de ampliacin, deber
crear una implementacin de BAdI.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. Los exits de dynpro brindan a los clientes la opcin de visualizar campos adicionales o
elementos de dynpro en un dynpro de SAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Cuando crea una implementacin de un exit de dynpro para Add-In empresarial (BAdI),
debe proporcionar el nmero de subscreen que cre y el nombre del programa principal
del grupo de funciones donde lo cre. El nombre del programa principal es el nombre del
grupo de funciones con el prefijo _______.
Seleccione la respuesta correcta.

X A SAP

X B SPL

X C SAPL

226 Copyright . Reservados todos los derechos.


Captulo 7

Respuestas a la Evaluacin de la formacin

1. La nueva tecnologa de Add-In empresarial (BAdI) se ha desarrollado para ____________.


Seleccione las respuestas correctas.

X A Mejorar el rendimiento

X B Implementar funciones adicionales

X C Mejorar la escalabilidad

X D Integrar en el nuevo concepto de ampliacin

2. Los nuevos Add-In empresariales (BAdI) siempre pertenecen a los puntos de ampliacin y
son administrados por estos.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

3. Cuando utiliza los nuevos Add-Ins empresariales (BAdIs) en tiempo de ejecucin, el


sistema genera un handle de BAdI en el _______, que realiza la misma funcin que la clase
de adaptador de BAdI y llama los mtodos de implementacin disponibles.
Seleccione la respuesta correcta.

X A Shell

X B Sistema

X C Ncleo

Copyright . Reservados todos los derechos. 227


Captulo 7: Respuestas a la Evaluacin de la formacin

4. Cuando el ncleo de Add-In empresarial (BAdI) se genera con la sentencia GET BADI,
qu excepcin se desencadena si no encuentra una implementacin de BAdI activa?
Seleccione la respuesta correcta.

X A cx_badi_implemented

X B cx_badi_not_implemented

X C call_badi_not_implemented

5. Para cada Add-In empresarial (BAdI) que desea utilizar en un punto de ampliacin, deber
crear una implementacin de BAdI.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

6. Los exits de dynpro brindan a los clientes la opcin de visualizar campos adicionales o
elementos de dynpro en un dynpro de SAP.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

7. Cuando crea una implementacin de un exit de dynpro para Add-In empresarial (BAdI),
debe proporcionar el nmero de subscreen que cre y el nombre del programa principal
del grupo de funciones donde lo cre. El nombre del programa principal es el nombre del
grupo de funciones con el prefijo _______.
Seleccione la respuesta correcta.

X A SAP

X B SPL

X C SAPL

228 Copyright . Reservados todos los derechos.


CAPTULO 8 Introduccin a Web Dynpro

Leccin 1
Resumen de los beneficios de Web Dynpro 230

Leccin 2
Explicacin de la arquitectura de Web Dynpro 235
Ejercicio 14: Crear un Web Dynpro simple 239

Leccin 3
Navegacin entre vistas 245
Ejercicio 15: Navegar entre vistas Web Dynpro 247

Leccin 4
Utilizacin de conjuntos de vistas 255
Ejercicio 16: Utilizar conjuntos de vistas 257

Leccin 5
Explicacin de la arquitectura de Web Dynpro y relaciones entre entidades 263

OBJETIVOS DEL CAPTULO

Describir el enfoque de programacin de Web Dynpro


Explicar las ventajas del enfoque de metadatos de Web Dynpro
Explicar los elementos principales de Web Dynpro
Explicar el transporte de datos y contextos
Establecer la navegacin entre vistas
Explicar conjuntos de vistas
Diferenciar entre entidades Web Dynpro visibles interna y externamente

Copyright . Reservados todos los derechos. 229


Captulo 8
Leccin 1
Resumen de los beneficios de Web Dynpro

RESUMEN DE LA LECCIN
Esta leccin explica el enfoque de programacin de Web Dynpro y los beneficios del enfoque
de metadatos de Web Dynpro.

Ejemplo empresarial
Desea encontrar una tecnologa ms adecuada para desarrollar aplicaciones Web basadas en
ABAP. Los requisitos de sus proyectos son: alta velocidad, bajo coste y elementos de UI
estandarizadas. Escuch que Web Dynpro ABAP es un buen candidato. Por lo tanto, desea
obtener un resumen inicial de la funcionalidad de Web Dynpro. Por este motivo, se requieren
los siguientes conocimientos:
Una buena comprensin del enfoque de programacin que se utiliza para crear
aplicaciones Web Dynpro
Una buena comprensin de las ventajas del enfoque de metadatos de Web Dynpro

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Describir el enfoque de programacin de Web Dynpro
Explicar las ventajas del enfoque de metadatos de Web Dynpro

Introduccin a Web Dynpro


Web Dynpro de SAP para Java y ABAP es un paso revolucionario en el desarrollo de interfaces
de usuario basadas en Web. Difiere de cualquier otro paradigma de diseo utilizado por SAP y
representa un gran avance en el desarrollo de aplicaciones de planificacin de recursos para
la empresa (ERP) basadas en Web.
Las aplicaciones Web Dynpro estn creadas mediante tcnicas de programacin declarativas
basadas en el paradigma Modelo Vista Controlador (MVC). Es decir, usted especifica qu
elementos de UI quiere en el cliente y de dnde obtienen los datos estos elementos. Tambin
puede definir las posibles rutas de navegacin de forma declarativa en su aplicacin. Un
framework de tiempo de ejecucin estndar genera todos los cdigos para crear la UI
automticamente. Esto le libera de las repetitivas tareas de codificacin que conlleva la
escritura en HTML y el hacerla interactiva con JavaScript.
Web Dynpro ABAP est disponible a partir de SAP NetWeaver Application Server 7.0. El
Object Navigator (cdigo de transaccin SE80) se ha mejorado para desarrollar las entidades
de una aplicacin Web Dynpro.
Web Dynpro est diseado para soportar el desarrollo estructurado. Las unidades de
modularizacin de software son componentes Web Dynpro, que pueden combinarse para
crear aplicaciones complejas.

230 Copyright . Reservados todos los derechos.


Leccin: Resumen de los beneficios de Web Dynpro

Declaraciones metamodelo y codificacin personalizada: Comparacin

Figura 127: Declaraciones metamodelo frente a codificacin personalizada

Una aplicacin Web Dynpro est desarrollada mediante un enfoque de programacin


declarativo. En el Workbench ABAP, existen herramientas especiales que le permiten crear
una representacin abstracta de una aplicacin en forma de metamodelo Web Dynpro. A
continuacin, se genera automticamente el cdigo fuente necesario y se ajusta a una
arquitectura estndar conocida como marco Web Dynpro.
El marco Web Dynpro le permite colocar el cdigo fuente personalizado en posiciones
predefinidas dentro del cdigo generado.
Todas las aplicaciones Web Dynpro estn construidas a partir de las mismas unidades
bsicas. No obstante, mediante el uso de la codificacin personalizada, el framework
estndar puede ampliarse para ofrecer todas la funcin empresarial requerida.
No todas las decisiones de implementacin se toman en la fase de diseo. Es posible
implementar una aplicacin Web Dynpro, en la que la UI se define en tiempo de ejecucin.
Esto le permite escribir aplicaciones muy flexibles sin tener que escribir ninguna codificacin
HTML o JavaScript.

Copyright . Reservados todos los derechos. 231


Captulo 8: Introduccin a Web Dynpro

Escenarios de aplicacin con Web Dynpro

Figura 128: Ejemplos de escenarios de aplicacin con Web Dynpro

La figura muestra que las aplicaciones Web Dynpro pueden acceder a varias fuentes de datos.
Una aplicacin Web Dynpro ABAP puede acceder directamente a todos los tipos de
componentes de reutilizacin.

Los siguientes son ejemplos de componentes de reutilizacin:


Los mtodos de clases se definen en su sistema.
Los mdulos de funciones se definen en su sistema o (mediante RFC) en el sistema back
-end.
Los servicios web se ofrecen a travs de un objeto de cliente de servicio web.

Atencin:
No ubique de manera directa una declaracin SELECT en los mtodos del
controlador, ya que as se genera una mezcla entre lgica de flujo y lgica
empresarial.

Los objetos de modelo todava no se admiten en Web Dynpro ABAP. La mejor forma de
disponer de entidades reutilizables que encapsulen lgica empresarial es crear clases ABAP
globales que contengan el cdigo fuente. Puede desarrollar componentes Web Dynpro sin UI
(annimos), en los que otros componentes Web Dynpro solo pueden acceder a las partes no
visuales del componente mediante la reutilizacin del componente.

232 Copyright . Reservados todos los derechos.


Leccin: Resumen de los beneficios de Web Dynpro

Beneficios de Web Dynpro

Figura 129: Ventajas de Web Dynpro

El principal objetivo de Web Dynpro es permitir a los desarrolladores de aplicaciones crear


aplicaciones Web potentes con el mnimo esfuerzo mediante herramientas descriptivas en un
proceso de diseo estructurado.

Los beneficios de Web Dynpro son los siguientes:


Diseo y cdigos minimizados
Lgica y layout independientes
Admite la reutilizacin de componentes
Admite la vinculacin de datos
Compatibilidad con varias plataformas
Basada en el browser, zero-footprint
Admite la accesibilidad 508

La filosofa Web Dynpro


Segn la filosofa Web Dynpro, es mejor tener menos lneas de cdigo escrito a mano.

Web Dynpro lleva a cabo su filosofa de las siguientes maneras:


Web Dynpro utiliza un metamodelo declarativo para definir las UI. El entorno de desarrollo
genera el cdigo fuente requerido a partir de esta definicin abstracta. Tambin puede
manipular la UI desde el cdigo fuente, lo cual es necesario para implementar cambios
dinmicos que se desconocen en el tiempo de diseo.
Web Dynpro ofrece caractersticas tcnicas como, por ejemplo, soporte para la
internacionalizacin, interaccin sin intermitencias y una separacin depurada de la lgica

Copyright . Reservados todos los derechos. 233


Captulo 8: Introduccin a Web Dynpro

empresarial y la UI. Esta separacin se consigue mediante una implementacin modificada


del paradigma de diseo del MVC.
Web Dynpro ofrece asientes que admiten la definicin de formularios y tablas en la UI y el
cdigo fuente en los mtodos del controlador. De esta manera, se reduce
significativamente el esfuerzo de desarrollo.

Dado que las tareas repetitivas de codificacin de UI se han eliminado, el desarrollador puede
centrarse ms en el flujo de datos empresariales mediante la aplicacin.

RESUMEN DE LA LECCIN
Ahora podr:
Describir el enfoque de programacin de Web Dynpro
Explicar las ventajas del enfoque de metadatos de Web Dynpro

234 Copyright . Reservados todos los derechos.


Captulo 8
Leccin 2
Explicacin de la arquitectura de Web Dynpro

RESUMEN DE LA LECCIN
esta leccin explica la arquitectura Web Dynpro y sus elementos principales. Esta leccin
tambin describe cmo funciona el transporte de datos en Web Dynpro.

Ejemplo empresarial
Necesita estructurar aplicaciones Web Dynpro complejas, anidar grandes secciones de la
aplicacin y desarrollar entidades reutilizables para su proyecto. Por este motivo, se
requieren los siguientes conocimientos:
Una buena comprensin de componentes Web Dynpro
Una buena comprensin del transporte de datos y contextos

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar los elementos principales de Web Dynpro
Explicar el transporte de datos y contextos

Componente Web Dynpro

Figura 130: Componente Web Dynpro

Los componentes Web Dynpro son contenedores para otras entidades relacionadas con una
UI y un programa Web Dynpro.

Copyright . Reservados todos los derechos. 235


Captulo 8: Introduccin a Web Dynpro

Las entidades relacionadas con la UI son ventanas y vistas. El layout de una vista es la parte
rectangular de una pgina visualizada por el cliente, por ejemplo, un browser. La vista
contiene elementos de UI como, por ejemplo, campos de entrada y botones. La pgina
completa enviada al cliente puede estar parametrizada en una sola vista, pero tambin puede
ser una combinacin de varias vistas. Las posibles combinaciones de vistas y el flujo entre las
vistas se definen en una ventana. Una ventana puede contener cualquier nmero de vistas.
Una vista puede estar incrustada en cualquier nmero de ventanas.
El cdigo fuente de Web Dynpro est ubicado en los controladores Web Dynpro. Las variables
globales de los controladores se definen como atributos de controlador. Los datos globales
relacionados con la UI (se visualizan mediante los elementos en la UI o se emplean para
manipular las propiedades de elemento de UI) se almacenan en un rea almacenamiento
jerrquico denominado contexto.

Acceso a los componentes Web Dynpro

Se puede acceder a los componentes Web Dynpro de las siguientes maneras:


Mediante una aplicacin Web Dynpro, usted puede enlazar un componente Web Dynpro a
un URL, al que puede llamar desde un browser de navegacin en Web o desde otro cliente
Web Dynpro.
Cuando se reutiliza un componente Web Dynpro como subcomponente, puede combinar
la interfaz visual de un componente Web Dynpro con las entidades visuales del
componente principal para formar la UI.
Cuando se reutiliza un componente Web Dynpro como subcomponente, el componente
principal puede acceder a todos los mtodos y datos definidos en la interfaz de
programacin.

Vinculacin de datos y contexto

Figura 131: Transporte de datos y contextos

La conexin de valores de elementos de UI que permite la entrada de usuario en los atributos


de contexto del controlador correspondiente se denomina vinculacin de datos. Al usar la

236 Copyright . Reservados todos los derechos.


Leccin: Explicacin de la arquitectura de Web Dynpro

vinculacin de datos, puede establecer un transporte de datos automtico entre los


elementos de UI y los atributos de contexto.
Hacer referencia a las variables definidas en un controlador Web Dynpro de otro controlador
Web Dynpro se denomina asignacin de contexto. La asignacin de contexto le permite
compartir datos comunes entre varios controladores, por lo que no es necesario copiar estos
datos entre los contextos de controlador.
Al combinar estos dos conceptos, el transporte de datos entre los elementos de UI ubicados
en diferentes vistas se pueden definir de una manera puramente declarativa.

Asignacin de contextos

Figura 132: Uso compartido de datos mediante asignacin de contexto

La asignacin de contextos permite que a un nodo de contexto de un controlador se le


suministren automticamente datos de ese nodo de contexto a un nodo correspondiente de
otro controlador. ste es el mecanismo bsico del uso compartido de datos entre
controladores.

Los requisitos para establecer una relacin de asignacin son los siguientes:
Debe existir un nodo en el contexto del controlador que acta como origen de asignacin.
Es posible que este nodo tenga nodos inferiores o atributos.
El controlador de origen de asignacin no debe ser un controlador de vistas.
El controlador que contenga el nodo asignado debe declarar la utilizacin del controlador
de origen de asignacin como controlador utilizado.

Copyright . Reservados todos los derechos. 237


Captulo 8: Introduccin a Web Dynpro

Vinculacin de datos

Figura 133: Colocacin de datos en la pantalla: Vinculacin de datos

La vinculacin de datos es el medio por el que los datos se transportan automticamente de


un elemento de UI con su layout y viceversa.
No debe asociar elementos de UI a los nodos de contexto o atributos definidos en otro
controlador. Los elementos de UI son privados para el controlador de vistas en el que se han
declarado.

El proceso de vinculacin de datos


El proceso de vinculacin de datos separa el objeto del elemento de UI del cdigo de
aplicacin del controlador de vistas. Por consiguiente, para manipular propiedades de
elementos de UI, el cdigo de aplicacin del controlador de vistas solo tiene que manipular los
valores de los nodos de contexto y atributos a los que estn asociados los elementos de UI.

A continuacin, el marco Web Dynpro realiza las tareas siguientes:


Transporta los datos desde el atributo de contexto hasta el elemento de UI durante el
proceso de renderizado de la pantalla.
Rellena el atributo de contexto a partir del elemento de UI una vez que se han introducido
los datos y se ha iniciado la siguiente peticin al servidor. Los valores introducidos se
convierten automticamente y se verifica la conformidad con el tipo de datos. Si se
produce un error, se visualizar el mensaje correspondiente.

La vinculacin de datos es un potente instrumento ya que no solo se puede vincular el valor


de un elemento de UI a un atributo de contexto, sino tambin las propiedades de un elemento
de UI, como por ejemplo la visibilidad. Esto significa que las propiedades de los elementos de
UI se pueden manipular desde el controlador de vistas actuando sobre los atributos de
contexto.

238 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 14
Crear un Web Dynpro simple

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro. Empieza creando las entidades Web Dynpro
que son obligatorias para una aplicacin que muestra una pgina con un campo de texto
simple.
Modelo: Irrelevante
Solucin: NET310_INTR_S
Cree un componente Web Dynpro con una ventana que incruste una vista individual, defina
un elemento de UI simple en el layout de visualizacin y trate sus propiedades.
Tarea 1
Crear un paquete que contenga todos los objetos de repositorio que va a desarrollar.

1. Cree el paquete ZNET310_##. Asigne a su paquete el componente de aplicacin BC-WD y


el componente de software HOME.

Tarea 2
Cree un componente Web Dynpro con una ventana que incruste una vista individual.

1. Cree un componente Web Dynpro ZNET310_INTR_## con una ventana MAIN_WINDOW


que incruste un vista individual MAIN_VIEW.

2. Qu otras entidades Web Dynpro se visualizan en el rbol de objetos de ABAP


Workbench despus de crear el componente Web Dynpro?

Tarea 3
Cree un elemento de UI simple TEXTVIEW que muestre un texto arbitrario en el layout de la
vista MAIN_VIEW.

1. Cree un elemento de UI simple (TEXTVIEW) del tipo TextView en el layout de la vista


MAIN_VIEW y trate sus propiedades.

2. Actualice el texto que deber visualizar en el elemento de UI TEXTVIEW. Es posible que


desee modificar otras propiedades del elemento y ver el resultado en la presentacin
preliminar de layout.

3. Active el componente Web Dynpro.

Copyright . Reservados todos los derechos. 239


Captulo 8: Introduccin a Web Dynpro

Tarea 4
Cree una aplicacin Web Dynpro para acceder a su componente Web Dynpro. Inicie la
aplicacin.

1. Cree una aplicacin Web Dynpro (nombre propuesto: ZNET310_INTR_##) que tenga
acceso a la nica ventana existente de su componente Web Dynpro.

2. Realice un test de la aplicacin Web Dynpro.

240 Copyright . Reservados todos los derechos.


Captulo 8
Solucin 14
Crear un Web Dynpro simple

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro. Empieza creando las entidades Web Dynpro
que son obligatorias para una aplicacin que muestra una pgina con un campo de texto
simple.
Modelo: Irrelevante
Solucin: NET310_INTR_S
Cree un componente Web Dynpro con una ventana que incruste una vista individual, defina
un elemento de UI simple en el layout de visualizacin y trate sus propiedades.
Tarea 1
Crear un paquete que contenga todos los objetos de repositorio que va a desarrollar.

1. Cree el paquete ZNET310_##. Asigne a su paquete el componente de aplicacin BC-WD y


el componente de software HOME.
a) En la pantalla SAP Easy Access ABAP Workbench, seleccione Navegador de objetos.
Tambin puede utilizar el cdigo de transaccin SE80.

b) En la pantalla Navegador de objetos, cree el paquete ZNET310_##.

c) En la ventana de dilogo Crear paquete, indique los datos siguientes:


Nombre del campo Valor
Paquete ZNET310_##

Descripcin breve Paquete Web Dynpro

Componente de aplicacin BC-WD

Componente de software INICIO

d) Seleccione el pulsador Continuar.

Tarea 2
Cree un componente Web Dynpro con una ventana que incruste una vista individual.

1. Cree un componente Web Dynpro ZNET310_INTR_## con una ventana MAIN_WINDOW


que incruste un vista individual MAIN_VIEW.
a) En el men contextual del paquete ZNET310_##, seleccione CrearWeb
DynproComponente Web Dynpro (Interfaz).

b) En la ventana de dilogo Web Dynpro: Componente/Crear interfaz, indique los datos


siguientes:

Copyright . Reservados todos los derechos. 241


Captulo 8: Introduccin a Web Dynpro

Nombre del campo Valor


Nombre ZNET310_INTR_##

Descripcin Componente Web Dynpro

Nombre de ventana Main_Window

Nombre de vista Main_View

c) Seleccione Continuar.

d) En la ventana de dilogo Crear entrada de directorio de objeto, asegrese de elegir el


paquete que cre en la tarea anterior y grabe su seleccin.

2. Qu otras entidades Web Dynpro se visualizan en el rbol de objetos de ABAP


Workbench despus de crear el componente Web Dynpro?

Las otras entidades Web Dynpro que se visualizan en el rbol de objetos de ABAP
Workbench despus de crear el componente Web Dynpro son: un controlador de
componente, un controlador de interfaz, una vista de interfaz para la ventana y una
interfaz global ZIWCI_NET310_INTR_##.

Tarea 3
Cree un elemento de UI simple TEXTVIEW que muestre un texto arbitrario en el layout de la
vista MAIN_VIEW.

1. Cree un elemento de UI simple (TEXTVIEW) del tipo TextView en el layout de la vista


MAIN_VIEW y trate sus propiedades.
a) En el rbol de objetos del componente ZNET310_INTR_##, haga doble clic en Vistas y
seleccione MAIN_VIEW.

b) En la etiqueta Layout, en el men contextual de ROOTUIELEMENTCONTAINER,


seleccione Insertar elemento.

c) En la ventana de dilogo Crear elemento, introduzca TEXTVIEW como nombre del


elemento y fije el tipo de elemento en TextView.

d) Seleccione Continuar.

2. Actualice el texto que deber visualizar en el elemento de UI TEXTVIEW. Es posible que


desee modificar otras propiedades del elemento y ver el resultado en la presentacin
preliminar de layout.
a) En la jerarqua de elementos de UI, seleccione el elemento de UI TEXTVIEW.

b) En la lista de propiedades, introduzca cualquier texto en el campoTexto.

c) Puede modificar otras propiedades si lo desea.

3. Active el componente Web Dynpro.


a) En el men contextual del componente Web Dynpro ZNET310_INTR_##, seleccione
Activar.

b) En la ventana de dilogo Objetos inactivos de NET310-##, encontrar que las partes


inactivas de su componente estn seleccionadas.

242 Copyright . Reservados todos los derechos.


Leccin: Explicacin de la arquitectura de Web Dynpro

Tarea 4
Cree una aplicacin Web Dynpro para acceder a su componente Web Dynpro. Inicie la
aplicacin.

1. Cree una aplicacin Web Dynpro (nombre propuesto: ZNET310_INTR_##) que tenga
acceso a la nica ventana existente de su componente Web Dynpro.
a) En el men contextual del componente Web Dynpro ZNET310_INTR_##, seleccione
CrearAplicacin Web Dynpro.

b) En la ventana de dilogo Crear aplicacin Web Dynpro, indique los datos siguientes:
Nombre del campo Valor
Aplicacin ZNET310_INTR_##

Descripcin Aplicacin WD

c) Seleccione Continuar.

d) En la pantalla Explorador Web Dynpro: Crear aplicacin Web Dynpro, seleccione el


pulsador Grabar.

2. Realice un test de la aplicacin Web Dynpro.


a) En el men contextual de la aplicacin Web Dynpro ZNET310_INTR_##, seleccione
Probar para abrir una ventana de navegador e iniciar la aplicacin.

Copyright . Reservados todos los derechos. 243


Captulo 8: Introduccin a Web Dynpro

RESUMEN DE LA LECCIN
Ahora podr:
Explicar los elementos principales de Web Dynpro
Explicar el transporte de datos y contextos

244 Copyright . Reservados todos los derechos.


Captulo 8
Leccin 3
Navegacin entre vistas

RESUMEN DE LA LECCIN
Esta leccin explica el principio de navegacin y las formas de navegar entre vistas.

Ejemplo empresarial
Quiere comprender cmo funciona la navegacin entre vistas en Web Dynpro. Para ello,
puede crear una aplicacin en la que el usuario puede desplazarse de una pgina a otra
presionando botones. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de la navegacin entre vistas

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Establecer la navegacin entre vistas

Principios de navegacin

Figura 134: Principio de navegacin

La navegacin entre vistas se desencadena disparando tomas de salida. Activar un punto de


navegacin de salida emite un evento de navegacin. Los eventos de navegacin son eventos
asincrnicos especiales que se colocan en una cola de navegacin. Se pueden disparar varias
tomas de salida desde una vista. Se pueden disparar varias tomas de salida desde una vista;
la prxima UI determina cules se utilizan. La cola de navegacin se procesa en un momento
concreto de la fase de procesamiento de Web Dynpro. A partir de este momento, la pila de

Copyright . Reservados todos los derechos. 245


Captulo 8: Introduccin a Web Dynpro

navegacin se puede ampliar disparando tomas de salida adicionales, o bien se puede


eliminar toda la pila de navegacin. Las tomas de salida se denominan en funcin de la accin
que causa la navegacin de la vista actual.

Tomas de entrada y salida

Figura 135: Navegacin entre vistas

Las tomas de entrada tienen mtodos de programa de control de eventos especiales que se
suscriben a los eventos de navegacin producidos al dispararse tomas de salida. Se llama a
los mtodos de toma de entrada nicamente cuando se procesa la cola de navegacin. Esto
solo tiene lugar una vez que las vistas del conjunto de vistas actual han disparado sus tomas
de salida y no se han producido errores de validacin que pueden cancelar la navegacin. Los
puntos de navegacin de entrada debern denominarse en funcin de la razn por la que se
visualiza la vista.
Las tomas de entrada y salida se unen mediante enlaces de navegacin. Enlazar una toma de
entrada a una toma de salida significa registrar el mtodo de programa de control de eventos
de toma de entrada en el evento de navegacin al que se llama disparando una toma de
salida. Los enlaces de navegacin se definen en una ventana.
Las tomas de salida y los mtodos de programa de control de eventos relacionados con la
toma de entrada pueden tener parmetros, lo que le permite traspasar datos entre las vistas.
Se emplea una accin para enlazar un evento del cliente con un mtodo de controlador de
eventos (se define automticamente mediante la accin) en el controlador de vistas
correspondiente.

246 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 15
Navegar entre vistas Web Dynpro

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro con ms de una vista. Para hacerlo, debe definir
los pulsadores en los layouts de cada vista para permitir al usuario navegar entre las vistas.
Modelo: Irrelevante
Solucin: NET310_CTRL_S
Defina los pulsadores e implemente la navegacin entre las vistas Web Dynpro.
Tarea 1
Cree un componente Web Dynpro que contenga una ventana y dos vistas.

1. Cree el componente Web Dynpro ZNET310_CTRL_## con una ventana MAIN_WINDOW y


una vista INPUT_VIEW.

2. Cree una vista adicional (OUTPUT_VIEW) dentro de su componente e incruste esta vista en
MAIN_WINDOW.

Tarea 2
Cree una toma de salida y otra de entrada para cada vista. Defina dos enlaces de navegacin
entre las dos vistas, que vayan del punto de navegacin de salida de una vista al punto de
navegacin de entrada de la otra vista.

1. Para su primera vista (INPUT_VIEW), cree un punto de navegacin de salida


(OUT_DETAILS) y un punto de navegacin de entrada (IN_DEFAULT).

2. Cules son las nuevas partes creadas en el controlador de vistas al finalizar el paso
anterior (consulte las diferentes etiquetas de las vistas)?

3. Repita el paso 1 para OUTPUT_VIEW. Cree el punto de navegacin de salida OUT_BACK y el


punto de navegacin de entrada IN_DEFAULT.

4. Ahora edite la ventana. Defina un enlace de navegacin desde el punto de navegacin de


salida (OUT_DETAILS) de INPUT_VIEW al punto de navegacin de entrada (IN_DEFAULT)
de la vista OUTPUT_VIEW.

5. Defina un enlace de navegacin desde el punto de navegacin de salida (OUT_BACK) de


OUTPUT_VIEW al punto de navegacin de entrada (IN_DEFAULT) de la vista INPUT_VIEW.

Tarea 3

Copyright . Reservados todos los derechos. 247


Captulo 8: Introduccin a Web Dynpro

Defina un pulsador en cada una de las dos vistas y asegrese de que el punto de navegacin
de salida de la vista respectiva se desencadena cuando el usuario pulsa el pulsador.

1. Cree un elemento de UI simple de tipo BUTTON con el nombre BUT_DETAILS en el layout


de la vista INPUT_VIEW y actualice el texto que debe mostrarse en el pulsador.

2. Cree una accin para el pulsador con el nombre DISPLAY_DETAILS. Asigne esta accin al
pulsador BUT_DETAILS. Si el usuario selecciona este pulsador, el punto de navegacin de
salida OUT_DETAILS se activa.

3. Cules son las nuevas partes creadas en el controlador de vistas con el paso anterior
(consulte las diferentes etiquetas de las vistas)?

4. Cree un pulsador en la vista OUTPUT_VIEW con el nombre BUT_BACK. Fije el texto que se
visualizar en el pulsador y asigne una accin con el nombre BACK a la propiedad
onAction. Asegrese de que el punto de navegacin de salida OUT_BACK se activa cuando
el selecciona el pulsador.

Tarea 4
Active su componente. Cree una aplicacin para acceder a su componente e inicie la
aplicacin.

1. Active su componente y todas las entidades de componente englobadas.

2. Cree una aplicacin Web Dynpro para su componente. Inicie la aplicacin.

248 Copyright . Reservados todos los derechos.


Captulo 8
Solucin 15
Navegar entre vistas Web Dynpro

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro con ms de una vista. Para hacerlo, debe definir
los pulsadores en los layouts de cada vista para permitir al usuario navegar entre las vistas.
Modelo: Irrelevante
Solucin: NET310_CTRL_S
Defina los pulsadores e implemente la navegacin entre las vistas Web Dynpro.
Tarea 1
Cree un componente Web Dynpro que contenga una ventana y dos vistas.

1. Cree el componente Web Dynpro ZNET310_CTRL_## con una ventana MAIN_WINDOW y


una vista INPUT_VIEW.
a) Realice este paso como en el ejercicio anterior.

b) En el men contextual del paquete ZNET310_##, seleccione


CrearWebDynproComponente Web Dynpro (Interfaz).

c) En la ventana de dilogo Web Dynpro: Componente/Crear interfaz, indique los datos


siguientes:
Nombre del campo Valor
Nombre ZNET310_CTRL_##

Descripcin Componente WD

Tipo Componente Web Dynpro

Nombre de ventana MAIN_WINDOW

Nombre de vista INPUT_VIEW

d) Seleccione Continuar.

e) Grabe las entradas.

2. Cree una vista adicional (OUTPUT_VIEW) dentro de su componente e incruste esta vista en
MAIN_WINDOW.
a) En el men contextual del componente ZNET310_CTRL_01, seleccione CrearVista.

b) En la ventana de dilogo Crear vistas, indique los datos siguientes:


Nombre del campo Valor
Componente ZNET310_CTRL_##

Copyright . Reservados todos los derechos. 249


Captulo 8: Introduccin a Web Dynpro

Nombre del campo Valor


de software OUTPUT_VIEW

Descripcin Output_View

c) Seleccione Continuar.

d) Grabe las entradas.

e) En el rbol de objetos del componente ZNET310_CTRL_##, seleccione Ventanas y


haga doble clic en MAIN_WINDOW.

f) En la pantalla de resumen de MAIN_WINDOW, asegrese de que la estructura de


ventana se visualice jerrquicamente (si no es as, seleccione el pulsador Cambiar vista
de editor de ventana).

g) Desde el rbol de objetos de Workbench ABAP, arrastre OUTPUT_VIEW del


componente ZNET310_CTRL_## en el nodo raz de MAIN_WINDOW.

h) Grabe las entradas.

Tarea 2
Cree una toma de salida y otra de entrada para cada vista. Defina dos enlaces de navegacin
entre las dos vistas, que vayan del punto de navegacin de salida de una vista al punto de
navegacin de entrada de la otra vista.

1. Para su primera vista (INPUT_VIEW), cree un punto de navegacin de salida


(OUT_DETAILS) y un punto de navegacin de entrada (IN_DEFAULT).
a) En el rbol de objetos del componente ZNET310_CTRL_##, seleccione Vistas y haga
doble clic en INPUT_VIEW.

b) En la pantalla de resumen de INPUT_VIEW, seleccione la etiqueta Puntos de


navegacin de salida e introduzca los siguientes datos:
Nombre del campo Valor
Nombre de punto OUT_DETAILS

Descripcin salida

c) Seleccione la etiqueta Puntos de navegacin de entrada e indique los datos siguientes:


Nombre del campo Valor
Nombre de punto IN_DEFAULT

Descripcin entrada

d) Grabe las entradas.

250 Copyright . Reservados todos los derechos.


Leccin: Navegacin entre vistas

2. Cules son las nuevas partes creadas en el controlador de vistas al finalizar el paso
anterior (consulte las diferentes etiquetas de las vistas)?

El mtodo de programa de control de eventos "HANDLEIN_DEFAULT (vaco) es la nueva


parte creada en el controlador de vistas al finalizar el paso anterior.

3. Repita el paso 1 para OUTPUT_VIEW. Cree el punto de navegacin de salida OUT_BACK y el


punto de navegacin de entrada IN_DEFAULT.
a) Realice este paso como en los pasos anteriores.

4. Ahora edite la ventana. Defina un enlace de navegacin desde el punto de navegacin de


salida (OUT_DETAILS) de INPUT_VIEW al punto de navegacin de entrada (IN_DEFAULT)
de la vista OUTPUT_VIEW.
a) En el rbol de objetos del componente ZNET310_CTRL_##, seleccione Ventanas y
haga doble clic en MAIN_WINDOW.

b) En la pantalla de resumen de MAIN_WINDOW, seleccione la etiqueta Ventana y


expanda todos los nodos de la estructura de ventana.

c) Asegrese de que la estructura de ventana se visualice jerrquicamente (si no es as,


seleccione el pulsador Cambiar vista de editor de ventana).

d) Arrastre el punto de navegacin de salida OUT_DETAILS de INPUT_VIEW al punto de


navegacin de entrada IN_DEFAULT de OUTPUT_VIEW.

e) Seleccione Continuar.

5. Defina un enlace de navegacin desde el punto de navegacin de salida (OUT_BACK) de


OUTPUT_VIEW al punto de navegacin de entrada (IN_DEFAULT) de la vista INPUT_VIEW.
a) Realice este paso como se describe antes.

Tarea 3
Defina un pulsador en cada una de las dos vistas y asegrese de que el punto de navegacin
de salida de la vista respectiva se desencadena cuando el usuario pulsa el pulsador.

1. Cree un elemento de UI simple de tipo BUTTON con el nombre BUT_DETAILS en el layout


de la vista INPUT_VIEW y actualice el texto que debe mostrarse en el pulsador.
a) En el rbol de objetos del componente ZNET310_CTRL_##, seleccione la vista
INPUT_VIEW y seleccione la etiqueta Layout.

b) En la etiqueta Layout, en el men contextual de ROOTUIELEMENTCONTAINER,


seleccione Insertar elemento.

c) En la ventana de dilogo Crear elemento, indique los datos siguientes:


Nombre del campo Valor
ID BUT_DETAILS

Typ Botn

d) Seleccione Continuar.

e) Vaya a la propiedad Texto e introduzca el texto que visualizar en la columna Valor.

Copyright . Reservados todos los derechos. 251


Captulo 8: Introduccin a Web Dynpro

2. Cree una accin para el pulsador con el nombre DISPLAY_DETAILS. Asigne esta accin al
pulsador BUT_DETAILS. Si el usuario selecciona este pulsador, el punto de navegacin de
salida OUT_DETAILS se activa.
a) Vaya a la propiedad onAction del botn y seleccione el pulsador Crear en la columna
Vinculacin.

b) En la ventana de dilogo Crear accin, indique los datos siguientes:


Campo Valor
Medida DISPLAY_DETAILS

Descripcin Accin para la vista de entrada

Punto de salida OUT_DETAILS

c) Seleccione Continuar.

d) Grabe las entradas.

3. Cules son las nuevas partes creadas en el controlador de vistas con el paso anterior
(consulte las diferentes etiquetas de las vistas)?

La accin DISPLAY_DETAILS y el mtodo de programa de control de eventos


ONACTIONDISPLAY_DETAILS (con codificacin para activar el punto de navegacin de
salida) son las nuevas partes creadas en el controlador de vistas mediante los pasos
anteriores.

4. Cree un pulsador en la vista OUTPUT_VIEW con el nombre BUT_BACK. Fije el texto que se
visualizar en el pulsador y asigne una accin con el nombre BACK a la propiedad
onAction. Asegrese de que el punto de navegacin de salida OUT_BACK se activa cuando
el selecciona el pulsador.
a) Realice esto como en los pasos anteriores.

Tarea 4
Active su componente. Cree una aplicacin para acceder a su componente e inicie la
aplicacin.

1. Active su componente y todas las entidades de componente englobadas.


a) En el men contextual del componente ZNET310_CTRL_##, seleccione el pulsador
Activar.

b) Seleccione Grabar.

2. Cree una aplicacin Web Dynpro para su componente. Inicie la aplicacin.


a) En el men contextual del componente ZNET310_CTRL_##, seleccione
CrearAplicacin Web Dynpro.

b) En la ventana de dilogo Crear aplicacin Web Dynpro, indique los datos siguientes:
Nombre del campo Valor
Aplicacin znet310_ctrl_##

252 Copyright . Reservados todos los derechos.


Leccin: Navegacin entre vistas

Nombre del campo Valor


Descripcin Aplicacin WD

c) Seleccione Continuar.

d) Grabe las entradas.

e) Para iniciar la aplicacin en una ventana de navegador, en el men contextual de la


aplicacin Web Dynpro znet310_ctrl_##, seleccione el pulsador Probar.

Copyright . Reservados todos los derechos. 253


Captulo 8: Introduccin a Web Dynpro

RESUMEN DE LA LECCIN
Ahora podr:
Establecer la navegacin entre vistas

254 Copyright . Reservados todos los derechos.


Captulo 8
Leccin 4
Utilizacin de conjuntos de vistas

RESUMEN DE LA LECCIN
En este mdulo se muestra cmo usar conjuntos de vistas.

Ejemplo empresarial
Debe crear ventanas y vistas anidadas, incrustar una vista en un controlador de vistas y
aprender a usar conjuntos de vistas. Por este motivo, se requieren los siguientes
conocimientos:
Una buena comprensin de los conjuntos de vistas

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

Conjuntos de vistas

Figura 136: Ventanas y vistas anidadas

Una ventana define qu vistas se visualizan en qu combinacin y cmo se cambia la


combinacin de vistas disparando tomas de salida.

Cuando cree una ventana, recuerde los siguientes puntos:

Copyright . Reservados todos los derechos. 255


Captulo 8: Introduccin a Web Dynpro

Debe incrustar en la ventana todas las vistas posibles que puedan existir en la interfaz
visual del componente.
Para visualizar mltiples vistas en paralelo, defina el layout y la posicin de estas vistas en
una vista especial que incluya ViewContainerUIElements en su layout. Esta vista de
container se incrusta en la ventana y se incrustan (incrustacin anidada) todas las vistas
posibles para esta rea de container de vistas dentro de cada rea definida por un
ViewContainerUIElement. Una vista predeterminada se visualiza al inicio de cada
ViewContainerUIElement.
Definir los enlaces de navegacin entre las diferentes vistas.

Solo se visualiza una vista a la vez en el de container de vistas. Para reemplazar el contenido
de un rea de container de vistas, defina los enlaces de navegacin entre vistas.
Las reas de container de vistas se pueden dejar vacas mediante la incrustacin de una vista
EMPTYVIEW (se genera automticamente con el componente) cuyo punto de navegacin de
entrada responda a un evento de navegacin adecuado.

Conjunto de vistas

Figura 137: Conjunto de vistas

Los puntos de navegacin de salida son los que hacen que un rea de container de vistas
contenga una vista en particular.
En las definiciones de ventana, en las que se incrustan varias vistas en reas de container de
vistas, podran ser visibles muchas permutaciones de vistas. Exactamente qu se visualiza
depende de los enlaces de navegacin que el usuario sigue.
El subconjunto de vistas continuamente visibles se conoce como conjunto de vistas.

256 Copyright . Reservados todos los derechos.


Captulo 8
Ejercicio 16
Utilizar conjuntos de vistas

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro de imagen individual. Deben combinarse varias
vistas para definir la pgina que el usuario visualiza. Adems, la activacin de los puntos de
navegacin de salida debe sustituir una o varias vistas que formen parte del conjunto de
vistas.
Modelo: NET310_CTRL_S
Solucin: NET310_CTRL_S_OPT
Al finalizar este ejercicio, podr visualizar ms de una vista en paralelo.
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_CTRL_##) o del componente Web


Dynpro NET310_CTRL_S en el nuevo componente, ZNET310_CTRL_##_OPT.

Tarea 2
Defina un rea de container en el layout de INPUT_VIEW.

1. Defina un elemento de UI (VC) del tipo VIEWCONTAINERUIELEMENT en el layout de la


vista INPUT_VIEW.

Tarea 3

1. Defina una nueva ventana con el nombre SECOND_WINDOW.

2. Incruste INPUT_VIEW en la nueva ventana.

3. Incruste la vista EMPTYVIEW en el rea de container.

4. Incruste la vista OUTPUT_VIEW en el rea de container VC.

5. Defina la navegacin.

Tarea 4
Active el componente. Defina una nueva aplicacin Web Dynpro para acceder a la nueva
ventana de su aplicacin. Inicie la nueva aplicacin.

1. Active su componente y todas sus entidades.

2. Cree una aplicacin Web Dynpro para su componente.

Copyright . Reservados todos los derechos. 257


Captulo 8
Solucin 16
Utilizar conjuntos de vistas

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro de imagen individual. Deben combinarse varias
vistas para definir la pgina que el usuario visualiza. Adems, la activacin de los puntos de
navegacin de salida debe sustituir una o varias vistas que formen parte del conjunto de
vistas.
Modelo: NET310_CTRL_S
Solucin: NET310_CTRL_S_OPT
Al finalizar este ejercicio, podr visualizar ms de una vista en paralelo.
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_CTRL_##) o del componente Web


Dynpro NET310_CTRL_S en el nuevo componente, ZNET310_CTRL_##_OPT.
a) Una solucin posible es seleccionar el pulsador Otro objeto en SE80.

b) En la ventana de dilogo Seleccin de objeto, seleccione la etiqueta Objetos web e


introduzca ZNET310_CTRL_## en el campo Comp./Interfaz Web Dynpro.

c) Seleccione el pulsador Copiar.

d) En la ventana de dilogo Copiar componente Web Dynpro, introduzca


ZNET310_CTRL_##_OPT en el campo Nombre de la copia.

e) Seleccione Continuar.

f) En la ventana de dilogo Crear entrada de directorio de objeto, seleccione el pulsador


Grabar.

g) En la ventana de dilogo, Peticin de solicitud de Workbench transportable, seleccione


Continuar.

Tarea 2
Defina un rea de container en el layout de INPUT_VIEW.

1. Defina un elemento de UI (VC) del tipo VIEWCONTAINERUIELEMENT en el layout de la


vista INPUT_VIEW.
a) En SE80, seleccione Comp./Interfaz Web Dynpro e introduzca el nombre de su nuevo
Web Dynpro ZNET310_CTRL_##_OPT, luego seleccione el pulsador Visualizar. En la
pantalla, Visualizar paquete, seleccione
ZNET310_CTRL_##_OPTVistasINPUT_VIEW.

258 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de conjuntos de vistas

b) Trate el layout de INPUT_VIEW.

c) En el men contextual de ROOTUIELEMENTCONTAINER, seleccione Insertar elemento.

d) En la ventana de dilogo Crear elemento, indique los datos siguientes:


Nombre del campo Valor
ID VC

Typ ViewContainerUIElement

e) Seleccione Continuar.

f) Grabe las entradas.

Tarea 3

1. Defina una nueva ventana con el nombre SECOND_WINDOW.


a) En el men contextual del componente ZNET310_CTRL_##_OPT, seleccione
CrearVentana.

b) En la ventana de dilogo Web Dynpro: Crear ventana, introduzca SECOND_WINDOW en el


campo Ventana.

c) Seleccione Continuar.

2. Incruste INPUT_VIEW en la nueva ventana.


a) Trate SECOND_WINDOW. Abra la etiqueta Ventana y expanda el nodo
SECOND_WINDOW.

b) Asegrese de que la estructura de ventana se visualice jerrquicamente. Si no es as,


seleccione el pulsador Cambiar vista de editor de ventana.

c) En la lista de objetos del componente, seleccione


ZNET310_CTRL_##_OPTVistasINPUT_VIEW.

d) Arrastre INPUT_VIEW al nodo raz SECOND_WINDOW, que se visualiza en la etiqueta


Ventana.

e) Grabe las entradas.

3. Incruste la vista EMPTYVIEW en el rea de container.


a) En la pantalla Generador Web Dynpro: Modificar ventana de ZNET310_CTRL_##_OPT,
en la etiqueta Ventana, expanda el nodo SECOND_WINDOW y luego el nodo
INPUT_VIEW dentro de l.

b) En el men contextual del rea de container de vistas VC, seleccione Insertar vista.

c) En la ventana de dilogo Web Dynpro: Insertar una vista, indique los datos siguientes:
Nombre del campo Valor
Vista para incrustar EMPTYVIEW
Componente de vista ZNET310_CTRL_##_OPT

d) Seleccione Continuar.

Copyright . Reservados todos los derechos. 259


Captulo 8: Introduccin a Web Dynpro

4. Incruste la vista OUTPUT_VIEW en el rea de container VC.


a) En el men contextual del rea de container de vistas VC, seleccione Insertar vista.

b) En la ventana de dilogo Web Dynpro: Insertar una vista, indique los datos siguientes:
Nombre del campo Valor
Vista para incrustar OUTPUT_VIEW
Componente de vista ZNET310_CTRL_##_OPT

c) Seleccione Continuar.

5. Defina la navegacin.
a) En la pantalla Generador Web Dynpro: Modificar ventana de ZNET310_CTRL_##_OPT,
asegrese de que el nodo SECOND_WINDOW, y todos los nodos dentro de l, estn
completamente expandidos. Arrastre el punto de navegacin de salida de
INPUT_VIEW y sultelo sobre el punto de navegacin de entrada de OUTPUT_VIEW.

b) Arrastre el punto de navegacin de salida de OUTPUT_VIEW y sultelo en el punto de


navegacin de entrada de EMPTYVIEW.

c) En la pantalla Generador Web Dynpro: Modificar ventana de ZNET310_CTRL_##_OPT,


seleccione el pulsador Grabar.

Tarea 4
Active el componente. Defina una nueva aplicacin Web Dynpro para acceder a la nueva
ventana de su aplicacin. Inicie la nueva aplicacin.

1. Active su componente y todas sus entidades.


a) En el men contextual del componente ZNET310_CTRL_##_OPT, seleccione Activar.

b) En la ventana de dilogo Objetos inactivos de NET310-##, seleccione Continuar.

2. Cree una aplicacin Web Dynpro para su componente.


a) En el men contextual del componente ZNET310_CTRL_##_OPT, seleccione
CrearAplicacin Web Dynpro.

b) En la ventana de dilogo Crear aplicacin Web Dynpro, introduzca


ZNET310_CTRL_##_OPT en el campo Aplicacin.

c) Seleccione Continuar.

d) Grabe las entradas.

Consejo:
Si ya ha creado una aplicacin Web Dynpro para su componente, deber
seleccionar explcitamente el nombre de la aplicacin cuando cree
aplicaciones posteriores.

e) Defina las propiedades de la aplicacin. En la etiqueta Propiedades, indique los datos


siguientes:

260 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de conjuntos de vistas

Nombre del campo Valor


Vista de interfaz SECOND_WINDOW
Nombre de punto DEFAULT

f) Seleccione el pulsador Grabar y luego en la ventana de dilogo Crear entrada de


directorio de objeto, seleccione el pulsador Grabar nuevamente.

g) En la ventana de dilogo, Peticin de solicitud de Workbench transportable, seleccione


Continuar.

h) En la pantalla Explorador Web Dynpro: Modificar aplicacin Web Dynpro, seleccione el


pulsador Probar. Se abre una ventana de navegador y se inicia la aplicacin.

Copyright . Reservados todos los derechos. 261


Captulo 8: Introduccin a Web Dynpro

RESUMEN DE LA LECCIN
Ahora podr:
Explicar conjuntos de vistas

262 Copyright . Reservados todos los derechos.


Captulo 8
Leccin 5
Explicacin de la arquitectura de Web Dynpro y
relaciones entre entidades

RESUMEN DE LA LECCIN
Esta leccin explica el paradigma de diseo Modelo Vista Controlador (MVC) y la visibilidad
interna y externa de las entidades Web Dynpro. Tambin le muestra cmo crear un
controlador personalizado y ver la interfaz de componentes.

Ejemplo empresarial
Quiere explorar la arquitectura Web Dynpro para determinar qu entidades Web Dynpro son
visibles interna y externamente. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de las entidades Web Dynpro que solo son visibles dentro de Web
Dynpro
Una buena comprensin de las entidades Web Dynpro que forman parte de la interfaz de
componente Web Dynpro

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Diferenciar entre entidades Web Dynpro visibles interna y externamente

Model View Controller

Figura 138: Model View Controller

Copyright . Reservados todos los derechos. 263


Captulo 8: Introduccin a Web Dynpro

Web Dynpro de SAP est construido sobre las bases del paradigma de diseo de MVC. MVC
fue inventado por el diseador de software noruego Trygve Reenskaug cuando trabajaba en
Xerox PARC a finales de los aos 70. La primera implementacin de este paradigma de
diseo se produjo con el lanzamiento del lenguaje de programacin Smalltalk-80.
MVC fue un paradigma de diseo revolucionario porque fue el primero en describir los
componentes de software en trminos de las responsabilidades funcionales que cada uno
debe cumplir y los protocolos de mensajes a los que cada componente debe responder.
SAP modific y ampli la especificacin MVC original para crear el grupo de herramientas
Web Dynpro.

Visibilidad interna frente a visibilidad externa

Figura 139: Entidades Web Dynpro visibles internamente (1)

La arquitectura de un componente Web Dynpro se puede dividir en dos partes: visibilidad


externa e interna. La lnea discontinua horizontal de la figura separa las entidades que son
visibles desde fuera del componente de las que son solo visibles dentro del componente.
Las partes visibles internamente pueden dividirse en entidades visuales y entidades de
programacin. Las entidades visuales se relacionan con la UI. Se generan mediante el
framework Web Dynpro y se pasan al cliente. Las entidades visibles internamente constan de
ventanas y vistas.
Un vista consta de un layout de visualizacin y del controlador de vistas correspondiente. El
controlador de vistas puede contener puntos de navegacin, mtodos y un contexto.
Una ventana incluye una o ms vistas y tiene un controlador de ventanas correspondiente. Un
controlador de ventanas puede contener puntos de navegacin, mtodos y un contexto. Cada
vista puede estar incrustada en varias ventanas.
La toma de salida de una ventana puede conectarse a cualquier toma de entrada de las vistas
incrustadas y la toma de salida de una vista puede conectarse a cualquier toma de entrada de
la ventana incrustada. No obstante, no es posible navegar entre ventanas del mismo
componente.

264 Copyright . Reservados todos los derechos.


Leccin: Explicacin de la arquitectura de Web Dynpro y relaciones entre entidades

Entidades Web Dynpro visibles internamente: Controlador de componentes

Figura 140: Entidades Web Dynpro visibles internamente (2)

El controlador de componentes funciona como controlador global del componente. La lgica


del programa relacionada nicamente a una vista concreta, por ejemplo la verificacin de la
entrada de usuario, se codifica en el controlador de vistas relacionado. Las declaraciones de
utilizacin entre los controladores le permiten acceder a los datos de contexto, los atributos
pblicos y los mtodos del controlador declarado (controlador utilizado). Un controlador de
vistas no puede declararse como controlador utilizado para otros controladores ya que esto
viola el cdigo de buenas prcticas de programacin (paradigma de programacin MVC).
La lgica empresarial no debe formar parte del componente Web Dynpro, sino que debe
definirse fuera del componente para garantizar una reutilizacin alta. Para encapsular el
cdigo fuente relacionado, preferentemente debe utilizar clases ABAP globales.

Copyright . Reservados todos los derechos. 265


Captulo 8: Introduccin a Web Dynpro

Entidades Web Dynpro visibles internamente: Controladores personalizados

Figura 141: Entidades Web Dynpro visibles internamente (3)

Los controladores personalizados son controladores opcionales definidos por el


desarrollador. Estos controladores se utilizan para modularizar el contenido del componente.
Por ejemplo, los controladores personalizados pueden actuar como controladores locales
para algunas vistas, o bien pueden utilizarse para encapsular la lgica relativa a cierta clase
de modelo (lgica empresarial). El uso de controladores personalizados le permite reducir el
contenido del controlador de componentes mediante la asignacin de subfunciones.

Entidades Web Dynpro visibles externamente

Figura 142: Entidades Web Dynpro visibles externamente

Si un componente Web Dynpro (componente superior) necesita acceder a otro componente


Web Dynpro (componente subordinado), el componente superior puede declarar la

266 Copyright . Reservados todos los derechos.


Leccin: Explicacin de la arquitectura de Web Dynpro y relaciones entre entidades

utilizacin de un componente subordinado. Se crea una instancia de utilizacin de un


componente especfico y el componente superior accede a las funciones del componente
subordinado mediante su controlador de interfaz de componente.

Controladores y vistas de interfaz


Las nicas partes de un componente Web Dynpro que son visibles externamente son el
controlador de interfaz y la vista de interfaz.

Una interfaz de componente Web Dynpro se compone de las siguientes partes:


Controlador de interfaces
Todos los componentes Web Dynpro tienen solo una interfaz de controlador. Mediante la
interfaz de controlador, se puede acceder a los datos, mtodos y programas de control de
eventos desde otros componentes.
Vistas de interfaz
Las vistas de interfaz representan la interfaz visual de un componente Web Dynpro. Existe
una relacin directa entre una ventana y una vista de interfaz. Cada vez que se define una
ventana, se genera automticamente una vista de interfaz relacionada que permite
acceder a la ventana desde fuera del componente. La vista de interfaz solo muestra al
usuario del componente aquellas tomas de entrada y salida que tienen la propiedad
interfaz activada. No se puede acceder a los mtodos y datos de contexto de la ventana
mediante la vista de interfaz relacionada.

Si un componente no tiene vistas, no es necesario que tenga ventanas. En este caso, el


componente no implementa una vista de interfaz. A los componentes que no tienen ninguna
interfaz visual se les llama componentes annimos.

Aplicacin Web Dynpro

Figura 143: Aplicacin Web Dynpro

Una aplicacin Web Dynpro es el punto de entrada a un componente Web Dynpro y es la


nica entidad Web Dynpro a la que se puede acceder mediante un URL.
Existe frecuentemente una relacin directa entre una vista de interfaz y una aplicacin.
De la misma forma en que se accede a las funciones en un Modulpool ABAP mediante la
definicin de varios cdigos de transaccin, se puede acceder a las funciones de un solo

Copyright . Reservados todos los derechos. 267


Captulo 8: Introduccin a Web Dynpro

componente Web Dynpro definiendo varias aplicaciones. Cada aplicacin accede a una vista
de interfaz diferente o a una toma de entrada diferente de la vista de interfaz.

Para definir una aplicacin Web Dynpro, especifique los siguientes elementos:
Componente que se debe instanciar. Se conoce como componente raz
Vista de interfaz del componente raz que se debe usar. La vista predeterminada en esta
vista de interfaz define el conjunto de la vista predeterminada.
La toma de entrada que acta como punto de entrada para la vista de interfaz designada
(esta toma de entrada debe ser del tipo Startup).

RESUMEN DE LA LECCIN
Ahora podr:
Diferenciar entre entidades Web Dynpro visibles interna y externamente

268 Copyright . Reservados todos los derechos.


Captulo 8

Evaluacin de la formacin

1. Cul de los siguientes elementos incluye el cdigo fuente de Web Dynpro?


Seleccione la respuesta correcta.

X A Controladores Web Dynpro

X B Vistas Web Dynpro

X C Nodos Web Dynpro

X D Componentes Web Dynpro

2. Cul de las siguientes afirmaciones acerca de la vinculacin de datos es verdadera?


Seleccione la respuesta correcta.

X A Permite que a un nodo de contexto de un controlador se le suministren


automticamente datos de un nodo de contexto correspondiente de otro controlador.

X B Permite que se transporten automticamente de un contexto del controlador de


vistas a un elemento de UI en su layout

X C Permite colocar el cdigo fuente personalizado en posiciones predefinidas dentro


del cdigo generado.

X D Permite que se transporten mensajes automticamente de un contexto del


componente a un elemento de UI en su nodo subordinado.

3. Se pueden disparar varias tomas de salida desde una vista.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 269


Captulo 8: Evaluacin de la formacin

4. Qu se debe activar para modificar la vista que se visualiza en un container de vistas?


Qu detonantes hacen que un rea de container de vistas contenga una vista en
particular?
Seleccione la respuesta correcta.

X A Puntos de navegacin de entrada

X B Puntos de navegacin de salida

X C Puntos de navegacin del campo

X D Puntos de navegacin

5. De qu partes se componen las entidades visibles internamente en la arquitectura Web


Dynpro?
Seleccione las respuestas correctas.

X A Ventanas y vistas

X B Frameworks

X C Tomas de entrada y salida

X D Entidades

270 Copyright . Reservados todos los derechos.


Captulo 8

Respuestas a la Evaluacin de la formacin

1. Cul de los siguientes elementos incluye el cdigo fuente de Web Dynpro?


Seleccione la respuesta correcta.

X A Controladores Web Dynpro

X B Vistas Web Dynpro

X C Nodos Web Dynpro

X D Componentes Web Dynpro

2. Cul de las siguientes afirmaciones acerca de la vinculacin de datos es verdadera?


Seleccione la respuesta correcta.

X A Permite que a un nodo de contexto de un controlador se le suministren


automticamente datos de un nodo de contexto correspondiente de otro controlador.

X B Permite que se transporten automticamente de un contexto del controlador de


vistas a un elemento de UI en su layout

X C Permite colocar el cdigo fuente personalizado en posiciones predefinidas dentro


del cdigo generado.

X D Permite que se transporten mensajes automticamente de un contexto del


componente a un elemento de UI en su nodo subordinado.

3. Se pueden disparar varias tomas de salida desde una vista.


Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 271


Captulo 8: Respuestas a la Evaluacin de la formacin

4. Qu se debe activar para modificar la vista que se visualiza en un container de vistas?


Qu detonantes hacen que un rea de container de vistas contenga una vista en
particular?
Seleccione la respuesta correcta.

X A Puntos de navegacin de entrada

X B Puntos de navegacin de salida

X C Puntos de navegacin del campo

X D Puntos de navegacin

5. De qu partes se componen las entidades visibles internamente en la arquitectura Web


Dynpro?
Seleccione las respuestas correctas.

X A Ventanas y vistas

X B Frameworks

X C Tomas de entrada y salida

X D Entidades

272 Copyright . Reservados todos los derechos.


CAPTULO 9 Controladores Web Dynpro

Leccin 1
Explicacin de los controladores de Web Dynpro 274

OBJETIVOS DEL CAPTULO

Examinar controladores de Web Dynpro


Detallar la estructura de componente y controladores personalizados
Detallar la estructura de los controladores de vistas y controladores de ventanas

Copyright . Reservados todos los derechos. 273


Captulo 9
Leccin 1
Explicacin de los controladores de Web
Dynpro

RESUMEN DE LA LECCIN
Esta leccin proporciona una resumen de varios tipos de controladores y entidades que
forman una parte integral de un componente Web Dynpro.

Ejemplo empresarial
Desea implementar la lgica de flujo de su aplicacin Web Dynpro. Esto incluir implementar
programas de control de eventos, mtodos de punto de navegacin de entrada y reaccin a
eventos de clientes, los cuales viven dentro de los controladores. Por este motivo, se
requieren los siguientes conocimientos:
Una buena comprensin de los contenidos de un controlador Web Dynpro
Una buena comprensin de la funcin de cada entidad de controlador.
Una buena comprensin de las diferencias entre el controlador de componentes, los
controladores personalizados, los controladores de vistas y los controladores de ventanas.

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Examinar controladores de Web Dynpro
Detallar la estructura de componente y controladores personalizados
Detallar la estructura de los controladores de vistas y controladores de ventanas

Tipos de controlador

Los diferentes tipos de controladores que se pueden encontrar en un componente Web


Dynpro son los siguientes:

Tipos de controlador Descripcin


Controlador de componentes Solo hay un controlador de componentes en
cada componente Web Dynpro. Se trata de
un controlador global, visible para todos los
dems controladores. El controlador de
componentes dirige la funcionalidad de todo
el componente. Este controlador no tiene
interfaz visual.

274 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los controladores de Web Dynpro

Tipos de controlador Descripcin


Controladores personalizados Los controladores personalizados son
opcionales. Se definen en la fase de diseo y
pueden utilizarse para encapsular
subfunciones del controlador de
componentes. Se pueden definir varios
controladores personalizados en un
componente. El framework Web Dynpro
instancia automticamente los
controladores personalizados y la orden de
instanciacin es indefinida. Por ello, la
codificacin en un controlador personalizado
no debera depender de la existencia de
ningn otro controlador personalizado.

Controladores de configuracin ste es un controlador personalizado


especial. Solo es necesario si el componente
correspondiente implementa una
configuracin especial y funciones de
personalizacin. Solo puede existir una sola
configuracin en cualquier componente.
Cualquier controlador puede acceder al
controlador de configuracin, pero el
controlador de configuracin no puede
acceder a ningn otro controlador.

Controladores de vistas Cada vista consta de la parte de layout y de


un controlador de vistas. Este controlador
gestiona la lgica de proceso especfica de la
vista, como la verificacin de la entrada de
usuario y la gestin de las acciones de
usuario.

Controladores de ventanas Cada ventana tiene exactamente un


controlador de ventanas. Usted puede
utilizar este controlador para gestionar los
datos traspasados mediante las tomas de
entrada cuando se reutiliza como
controlador subordinado. Puede llamar
mtodos de este controlador desde los
mtodos de la toma de entrada de la
ventana.

En tiempo de ejecucin, todas las instancias del controlador son singleton con respecto a sus
componentes superiores. Esto tambin es as para los controladores de vistas; por lo tanto,
no est permitido incrustar una vista en un conjunto de vistas ms de una vez.
El contexto y los mtodos definidos en un controlador son privados a menos que otro
controlador declare de manera explcita la utilizacin de dicho controlador. No obstante, un
controlador de vistas no puede declararse como controlador utilizado, lo que significa que los
datos de contexto y los mtodos de un controlador de vistas son siempre privados.

Vida til de instancia de controlador

Copyright . Reservados todos los derechos. 275


Captulo 9: Controladores Web Dynpro

Web Dynpro es una tecnologa con estado. La vida til de las instancias de controlador no se
limita al tiempo usado para procesar el cdigo de programacin y para procesar la interfaz de
usuario (UI).

La siguiente lista describe las vidas tiles de las diferentes instancias de controlador
segn el tipo de controlador:
Controlador de componentes
La duracin del controlador de componentes equivale a la duracin del componente. Al
iniciar una aplicacin Web Dynpro, el tiempo de ejecucin de Web Dynpro instancia el
controlador de componentes.
Controladores personalizados
La instanciacin de un controlador personalizado se pospone hasta que se llama al primer
mtodo del controlador. Las instancias del controlador personalizado no pueden
eliminarse explcitamente.
Controladores de configuracin
Un controlador de configuracin se instancia como primer controlador del componente.
Su duracin equivale a la duracin del componente.
Controladores de vistas
La instanciacin de un controlador de vistas se pospone hasta que se llama al primer
mtodo del controlador. El desarrollador puede controlar la vida til de un controlador de
vistas mediante las propiedades de vista: Para eliminar la instancia de vista con el
componente, el desarrollador selecciona la opcin controlada por el framework. Para
eliminar la instancia de vista cuando la vista ya no pertenezca al conjunto de vistas, el
desarrollador selecciona la opcin cuando sea visible.
Controladores de ventanas
La instanciacin de un controlador de ventanas se pospone hasta que se llama al primer
mtodo del controlador. Esto se realiza iniciando una aplicacin Web Dynpro, incrustando
la vista de interfaz relacionada en la ventana del componente externo o visualizando la
ventana en una ventana de dilogo. Las instancias del controlador de ventanas no pueden
eliminarse explcitamente.

276 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los controladores de Web Dynpro

Entidades de controlador comunes

Figura 144: Componentes de todos los controladores

Cada controlador tiene su propio contexto. El nodo raz del contexto ya existe. Todos los otros
nodos y atributos se definen estticamente o dinmicamente en el tiempo de ejecucin en el
cdigo fuente.
En todos los controladores, el framework Web Dynpro llama a determinados mtodos en un
orden predefinido. A estos mtodos se les denomina mtodos de conexin. Hay disponibles
diferentes mtodos de conexin en funcin del tipo de controlador.
Todos los tipos de controlador contienen por lo menos dos mtodos de conexin que se
procesan solo una vez durante la vida til de la instancia del controlador, en los siguientes
eventos:
Cuando se crea una instancia de controlador (wddoinit( ))
Cuando se elimina una instancia de controlador (wddoexit( ))

Los mtodos adicionales se pueden definir en la etiqueta Mtodos.


Los atributos que no estn asociados a ninguna propiedad de elemento de UI se declaran en
la etiqueta Atributos. Una vez declarados, los atributos son visibles en todos los mtodos de
este controlador. Existen dos atributos predefinidos, que se utilizan para acceder a la
funcionalidad del controlador (WD_THIS) y del contexto (WD_CONTEXT).

Uso compartido de informacin entre controladores


Para compartir informacin entre varios controladores, un controlador debe declarar la
utilizacin de otro controlador. Esto se puede llevar a cabo en la etiqueta Propiedades del
controlador que necesita acceder a otro controlador. Este tipo de uso compartido de datos se
utiliza para crear un nodo de contexto asignado o para acceder a los mtodos definidos por el
usuario y a los atributos pblicos de otro controlador.
No se debe especificar el nombre de un controlador de vistas como controlador utilizado, ya
que se esto viola los principios de diseo Modelo Vista Controlador (MVC). Un controlador de
vistas se debe escribir de manera que sea nicamente responsable de la visualizacin de los

Copyright . Reservados todos los derechos. 277


Captulo 9: Controladores Web Dynpro

datos y la interaccin del usuario. Un controlador de vistas no es responsable de generar los


datos que visualiza; se es el rol de un controlador personalizado.
Los mtodos de todos los controladores le permiten acceder a la lgica empresarial, como
mdulos de funcin, BAPI u otros mtodos en clases auxiliares.

Entidades especiales de componente / Controladores personalizados

Figura 145: Controladores de componentes y personalizados: Entidades especiales

Tanto en el controlador de componentes como en los controladores personalizados, los


eventos se pueden definir con los parmetros de su eleccin. Cualquier mtodo de cualquier
otro controlador, incluidos los controladores de vistas y de ventanas, se pueden registrar a
estos eventos si dicho mtodo se define como mtodo auxiliar de eventos.
Estos eventos se utilizan normalmente para invocar el procesamiento en un controlador de
vistas una vez finalizado el procesamiento en el controlador de componentes. Esto se puede
realizar cuando un mtodo del controlador de vistas se suscribe a un evento emitido por el
controlador de componentes.
Mediante sus declaraciones en la fase de diseo, el marco Web Dynpro lleva a cabo
automticamente la definicin, la activacin y la gestin de la suscripcin a dichos eventos.
Tambin tiene la opcin adicional de realizar suscripciones dinmicas a eventos en tiempo de
ejecucin.

Atencin:
Si dos o ms mtodos se suscriben al mismo evento, el orden en el que se
ejecutan ser indefinido.

El controlador de componentes posee los siguientes mtodos de conexin adicionales:


wddobeforenavigation()
wddopostprocessing()

278 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los controladores de Web Dynpro

wddoapplicationstatechange()

Los mtodos, elementos de contexto y eventos pueden marcarse como parte de la interfaz.
Estos elementos se muestran entonces a otros componentes mediante el controlador de
interfaz.

Entidades especiales de los controladores de vistas

Figura 146: Entidades especiales de los controladores de vistas

Un controlador de vistas es un bloque de construccin visual de un componente Web Dynpro


y est diseado para gestionar todos los aspectos de la visualizacin de datos y la interaccin
del usuario.
Los eventos especiales de navegacin y los programas de control de eventos de navegacin,
llamados puntos de navegacin, se han creado para permitir la navegacin entre varios
controladores de vistas Web Dynpro.
Activar un punto de navegacin de salida emite un evento de navegacin.
Mediante el nombre genrico <Toma de salida> para una toma de salida, su declaracin
produce la generacin de un mtodo denominado FIRE_<Toma de salida>_PLG en el
controlador de componentes de la vista. Este mtodo solo est visible para el framework de
Web Dynpro.
Una toma de entrada es un programa de control de eventos de navegacin que puede estar
registrado a una solicitud de navegacin. Mediante el nombre genrico <Toma de entrada>
para una toma de entrada, su declaracin produce la generacin de un mtodo denominado
HANDLE_<Toma de entrada>_PLG en el controlador de la vista.
Un registro esttico de un punto de navegacin de entrada al evento de navegacin
provocado por un punto de navegacin de salida se denomina un enlace de navegacin. Los
enlaces de navegacin no forman parte de una vista pero se definen en una ventana
incrustada en la vista. Por consiguiente, el registro de eventos se puede definir de manera
diferente en varias ventanas.

Copyright . Reservados todos los derechos. 279


Captulo 9: Controladores Web Dynpro

Mtodos de conexin especial


Una accin enlaza un evento del cliente (por ejemplo, seleccionar un pulsador en un browser)
a un mtodo de programa de control de eventos definido en el controlador de vistas
correspondiente. Cuando define una accin con el nombre <Accin>, se genera
automticamente un mtodo de programa de control de eventos (ONACTION<Accin>). Si
debe sustituirse una vista como resultado de un evento de cliente, el punto de navegacin de
salida relacionado se puede activar en este mtodo de programa de control de eventos de la
accin.

Los controladores de vistas incluyen los siguientes mtodos de conexin especial:


wddobeforeaction()
wddoafteraction()
wddomodifyview()
wddooncontextmenu()

Adems de los atributos estndar que existen en todos los controladores (WD_THIS y
WD_CONTEXT), un controlador de vistas tiene una referencia al controlador de componentes
de su componente: WD_COMP_CONTROLLER. Se puede utilizar esta referencia para acceder
a funciones del controlador de componente, por ejemplo, para llamar mtodos declarados
all.

Consejo:
El atributo WD_COMP_CONTROLLER solo se genera si se declara la utilizacin
del controlador de componentes.

Entidades especiales de los controladores de ventanas

Figura 147: Arquitectura del controlador de ventanas

280 Copyright . Reservados todos los derechos.


Leccin: Explicacin de los controladores de Web Dynpro

Los controladores de ventanas son similares a los controladores de vistas pero, a diferencia
de estos, no tienen una interfaz de usuario (layout de vista). Todas las vistas que se
visualizarn cuando se utilice una aplicacin Web Dynpro deben incrustarse en la ventana a la
que la aplicacin o el componente que llama hacen referencia.
La ventana Web Dynpro incrusta todas las vistas que se visualizarn. Si se definen
estticamente, los enlaces de navegacin que definen los posibles conjuntos de vistas estn
incrustados en la ventana Web Dynpro.
Cada ventana Web Dynpro contiene tomas de salida y de entrada, igual que las vistas. Puede
utilizar las tomas para establecer la navegacin en varios componentes. Para mostrar las
tomas a la interfaz del componente, seleccione la propiedad Interfaz de cada toma. A
continuacin, estas tomas forman parte de la vista de interfaz relacionada.
Si se declara la utilizacin del controlador de componentes, el controlador de ventanas
contiene el atributo adicional WD_COMP_CONTROLLER que permite el acceso a la
funcionalidad del controlador de componentes.

Los controladores de ventanas incluyen los siguientes mtodos de conexin especial:


wddoonopen( )
wddoonclose( )

RESUMEN DE LA LECCIN
Ahora podr:
Examinar controladores de Web Dynpro
Detallar la estructura de componente y controladores personalizados
Detallar la estructura de los controladores de vistas y controladores de ventanas

Copyright . Reservados todos los derechos. 281


Captulo 9: Controladores Web Dynpro

282 Copyright . Reservados todos los derechos.


Captulo 9

Evaluacin de la formacin

1. El contexto y los mtodos definidos en un controlador son privados a menos que otro
controlador declare de manera explcita la utilizacin de dicho controlador.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cul de los siguientes mtodos de conexin existe en un controlador de componente?


Seleccione las respuestas correctas.

X A wddobeforenavigation()

X B wddopostprocessing()

X C wddoonopen( )

X D wddoapplicationstatechange()

3. Los enlaces de navegacin que definen los posibles conjuntos de vistas siempre estn
incrustados en una ventana Web Dynpro.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 283


Captulo 9

Respuestas a la Evaluacin de la formacin

1. El contexto y los mtodos definidos en un controlador son privados a menos que otro
controlador declare de manera explcita la utilizacin de dicho controlador.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. Cul de los siguientes mtodos de conexin existe en un controlador de componente?


Seleccione las respuestas correctas.

X A wddobeforenavigation()

X B wddopostprocessing()

X C wddoonopen( )

X D wddoapplicationstatechange()

3. Los enlaces de navegacin que definen los posibles conjuntos de vistas siempre estn
incrustados en una ventana Web Dynpro.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

284 Copyright . Reservados todos los derechos.


CAPTULO 10 Contexto de Web Dynpro

Leccin 1
Definicin de contexto 286

Leccin 2
Establecer propiedades a los nodos del contexto 292

Leccin 3
Asignacin de contextos 300
Ejercicio 17: Definir, asignar y vincular datos al contexto 303

OBJETIVOS DEL CAPTULO

Definir nodos y atributos en el contexto de un controlador.


Explicar la propiedad de cardinalidad de los nodos de contexto
Explicar la propiedad Singleton de los nodos de contexto
Definir asignacin interna de contextos

Copyright . Reservados todos los derechos. 285


Captulo 10
Leccin 1
Definicin de contexto

RESUMEN DE LA LECCIN
Esta leccin explica el contexto. Adems, describe cmo definir nodos y atributos en el
contexto.

Ejemplo empresarial
Ha creado su primer componente Web Dynpro con vistas y ventanas que incluyen las vistas.
Ha creado una aplicacin Web Dynpro para acceder a su componente Web Dynpro desde el
browser. Quiere que su aplicacin muestre datos del sistema back-end. Por lo tanto, necesita
definir variables que puedan asociarse a elementos de UI y que puedan intercambiarse
fcilmente entre varios controladores. Estas variables se definen en el contexto de
controlador, por lo que desea aprender a definir esta estructura jerrquica de
almacenamiento de datos. Por este motivo, se requieren los siguientes conocimientos:
Comprensin de los nodos y atributos en el contexto de un controlador

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir nodos y atributos en el contexto de un controlador.

La estructura contextual

Figura 148: El contexto

286 Copyright . Reservados todos los derechos.


Leccin: Definicin de contexto

Cada controlador Web Dynpro tiene exactamente una estructura de almacenamiento de


datos jerrquica, conocida como contexto. Los datos incluidos en el contexto existen
nicamente durante el perodo de vida del controlador. Una vez cancelada la instancia de
controlador, todos los datos incluidos en su contexto se pierden.
La estructura del contexto, es decir, los metadatos, se define normalmente en la fase de
diseo. No obstante, en tiempo de ejecucin se puede modificar el contenido del contexto, y
tambin puede modificar dinmicamente la estructura.

Proceso de modificacin del contexto

Figura 149: Modificacin del contexto (1)

La figura muestra los diferentes pasos para modificar los nodos y atributos de contexto
usando diferentes opciones en las pantallas de aplicacin.

Proceso de modificacin de la vista de editor de contexto

Figura 150: Modificacin del contexto (2)

Copyright . Reservados todos los derechos. 287


Captulo 10: Contexto de Web Dynpro

A menos que se declare de otro modo, todos los datos de tiempo de ejecucin del contexto de
un controlador son privados para ese componente.
Puede facilitar el acceso a la informacin que contiene el contexto del controlador de
componentes en gran medida para el contexto de otro controlador (personalizado o de
vistas) mediante una tcnica conocida como asignacin de contextos. Mediante esta tcnica,
dos o ms controladores pueden acceder a los mismos datos de tiempo de ejecucin. La
asignacin de contextos es el mecanismo bsico del uso compartido de datos entre
controladores de un nico componente.

Nota:
Un controlador de vistas no puede compartir sus datos de contexto.

Nuevos nodos y atributos de contexto: Creacin

Figura 151: Creacin de nuevos nodos y atributos de contexto

Todos los contextos de controlador se construyen a partir de una disposicin jerrquica de


entidades conocidas como nodos y atributos. Un contexto tiene siempre un nodo superior
conocido como nodo raz de contexto. Este nodo raz de contexto tiene propiedades fijas y no
se puede eliminar.
Un nodo de contexto es la clase de abstraccin principal utilizada para el almacenamiento de
datos de tiempo de ejecucin en el marco Web Dynpro. Los nodos de contexto se organizan
jerrquicamente. El nodo debe tener atributos u otros nodos como nodos subordinados.

288 Copyright . Reservados todos los derechos.


Leccin: Definicin de contexto

Consejo:
Por razones de simplicidad, el trmino nodo se utiliza de las siguientes formas:
Cuando se refiere al tiempo de diseo, el trmino nodo describe un elemento
definido en el contexto de un controlador.
Cuando se refiere al tiempo de ejecucin, el trmino nodo se utiliza para
describir un objeto (instancia) derivado de los metadatos. Un trmino ms
correcto sera objeto de nodo o instancia de nodo.

Todas las entidades subordinadas de un nodo se agregan a una unidad conocida como
elemento. Un nodo se puede considerar como una serie de dichos elementos del mismo
modo que una tabla es una serie de filas.

Atencin:
El nombre de un nodo de contexto debe ser nico en toda la estructura del
contexto de un controlador.

Un atributo de contexto es una entidad del contexto que no puede tener subordinados. Un
atributo de contexto no puede existir sin estar subordinado a algn nodo superior, estar en el
nodo raz de contexto o en algn otro nodo.
Si debe almacenarse una serie de objetos de datos estructurados en un contexto de
controlador en tiempo de ejecucin, se define un nodo de contexto para almacenar la serie.
Cada set de datos estructurado se almacena en un elemento. La referencia a cada elemento
se almacena en la serie de nodos. La estructura de datos se deriva de los atributos del
contexto definidos como subelementos del nodo.

Copyright . Reservados todos los derechos. 289


Captulo 10: Contexto de Web Dynpro

Propiedades de los nodos de contexto

Figura 152: Nodos de contexto y atributos de contexto en tiempo de ejecucin (1)

La figura muestra la creacin del objeto de nodo en tiempo de ejecucin y la raz de contexto
en la fase de diseo.

Atributos de contexto relacionados con la raz de contexto

Figura 153: Nodos de contexto y atributos de contexto en tiempo de ejecucin (2)

290 Copyright . Reservados todos los derechos.


Leccin: Definicin de contexto

Una estructura se genera en tiempo de ejecucin para los atributos de contexto relacionados
con la raz de contexto. La referencia a esta estructura se almacena en el atributo de
elemento STATIC_ATTRIBUTES.

Nodos de contexto y atributos de contexto en tiempo de ejecucin

Figura 154: Nodos de contexto y atributos de contexto en tiempo de ejecucin (3)

Un objeto de nodo se crea automticamente para cada subnodo de la raz de contexto. Las
referencias se almacenan en el atributo CHILD_NODES del elemento raz de contexto.

RESUMEN DE LA LECCIN
Ahora podr:
Definir nodos y atributos en el contexto de un controlador.

Copyright . Reservados todos los derechos. 291


Captulo 10
Leccin 2
Establecer propiedades a los nodos del
contexto

RESUMEN DE LA LECCIN
Esta leccin explica varias propiedades de un nodo de contexto.

Ejemplo empresarial
Usted quiere crear el contexto del controlador de componente para su componente Web
Dynpro con los nodos y atributos necesarios para mantener los datos necesarios para su
aplicacin Web Dynpro. Necesita establecer las propiedades de estos nodos correctamente
para que se pueda mantener la cantidad correcta de datos en tiempo de ejecucin, entre
otros. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de la propiedad de cardinalidad de los nodos de contexto
Una buena comprensin de la propiedad Singleton de los nodos de contexto

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar la propiedad de cardinalidad de los nodos de contexto
Explicar la propiedad Singleton de los nodos de contexto

292 Copyright . Reservados todos los derechos.


Leccin: Establecer propiedades a los nodos del contexto

Cardinalidad

Figura 155: Estructura contextual en tiempo de ejecucin: Propiedad de cardinalidad (1)

Muchas propiedades de los nodos establecidos en el tiempo de diseo determinan la


asignacin de memoria (por ejemplo, la dimensin de los arrays de datos que deben
almacenarse) en tiempo de ejecucin. Por lo tanto, es esencial conocer las propiedades de los
nodos.
En la fase de diseo, puede crear la estructura de metadatos en la que se almacenan los datos
de tiempo de ejecucin. Todos los nodos de contexto constituyen series, por lo que es posible
que referencias a varios elementos sean guardadas por un nodo de contexto en tiempo de
ejecucin.
Todos los nodos de contexto tienen una propiedad conocida como cardinalidad. La
cardinalidad describe la cantidad mxima y mnima de elementos que la serie de nodos puede
tener en tiempo de ejecucin. Todos los nodos contienen una serie de elementos, incluso
cuando el nmero mximo de elementos de la coleccin est limitado a uno.

Los posibles valores de cardinalidad (especificados como <Mn.>..<Mx.>) y los permisos


de elemento que dependen de los valores de cardinalidad son los siguientes:

Valores de cardinalidad Descripcin


0..1 Se permite cero o un elemento
0..n se permite cero o ms elementos
1..1 Se permite exactamente un elemento
1..n se permite uno o ms elementos

Copyright . Reservados todos los derechos. 293


Captulo 10: Contexto de Web Dynpro

En el tiempo de ejecucin, el nodo raz de contexto se instancia automticamente. La


referencia a este nodo se proporciona mediante el marco a travs del atributo de controlador
WD_CONTEXT. No puede modificar las propiedades del nodo raz de contexto. Como la
cardinalidad es 1..1, el nodo raz de contexto contiene siempre exactamente un elemento.

Nodos de contexto: Cardinalidad


Todos los nodos de contexto definidos como subordinados directos del nodo raz de contexto
(nodos independientes) se instancian automticamente cuando se accede a ellos por primera
vez (mediante programacin o porque los datos del nodo se visualizarn en la UI). Si la
cardinalidad del nodo es igual a 1..1 o 1..n, se crea automticamente el elemento con el ndice 1
cuando se instancia el nodo. Todos los otros elementos se instancian mediante
programacin.
Es posible que no exista un nodo si la serie del objeto de nodo superior est vaco (no existen
elementos relacionados con el nodo superior). Esto significa que no se garantiza la existencia
de nodos que no estn definidos como subordinados directos del nodo raz de contexto
(nodos dependientes).

Los siguientes son los escenarios que pueden hacer que la aplicacin tenga fallos en el
volcado debido a violaciones de cardinalidad:
Eliminar el elemento por defecto de un nodo con cardinalidad 1..1 o 1..n.
Agregar un segundo elemento a un nodo con cardinalidad 0..1 1..1.

Estructura contextual en tiempo de ejecucin: Propiedad de cardinalidad

Figura 156: Estructura contextual en tiempo de ejecucin: Propiedad de cardinalidad (2)

La figura muestra que la estructura del contexto en tiempo de ejecucin no es la jerarqua


plana en dos dimensiones como en la fase de diseo. En el tiempo de ejecucin, el contexto
consta de varios objetos dependientes.
Esto puede compararse a un tabla interna en ABAP en la fase de diseo y en tiempo de
ejecucin. En la fase de diseo, los metadatos de la tabla interna incluye la estructura dada

294 Copyright . Reservados todos los derechos.


Leccin: Establecer propiedades a los nodos del contexto

por el tipo de lnea. La dimensin de la tabla interna (el nmero de lneas que el objeto de
datos incluye en tiempo de ejecucin) no forma parte de la definicin.
En tiempo de ejecucin, se pueden aadir varias lneas al objeto de datos de la tabla interna, al
igual que se pueden aadir varios elementos a una serie que se origine a partir de un nodo de
contexto en tiempo de ejecucin. No obstante, como no hay restricciones sobre el nmero
mnimo y mximo de lneas que una tabla interna puede incluir, no existe una contrapartida
para la propiedad cardinalidad. Las tablas internas tienen siempre cero lneas tras la
declaracin del objeto y pueden incluir un nmero ilimitado de lneas en tiempo de ejecucin.

Seleccin de leads

Figura 157: ndice de seleccin de leads

Cada nodo de contexto contiene el atributo LEAD_SELECTION_INDEX. Este atributo de tipo


nmero entero se utiliza para simplificar el acceso de la serie del nodo.
El marco Web Dynpro establece automticamente el ndice de la seleccin de leads si la
propiedad de nodo de contexto Inicializar seleccin de leads est establecida en verdadero. En
este caso, el atributo se fija automticamente en 1 apenas se crea el primer elemento. El
ndice de la seleccin de leads tambin puede establecerse mediante el cdigo fuente de
programa o con las acciones de usuario relacionadas con los elementos de UI (por ejemplo,
mediante la seleccin de una lnea en el elemento de UI de una Tabla asociado al nodo).

Consejo:
El ndice de la seleccin de leads se elimina seleccionando el valor de la
constante IF_WD_CONTEXT_NODE=>NO_SELECTION.

ndice de seleccin de leads: Utilizacin


En el cdigo fuente del controlador, se pueden utilizar mtodos especiales para acceder al
valor del ndice de seleccin de leads del nodo y al elemento relacionado a este ndice.

Copyright . Reservados todos los derechos. 295


Captulo 10: Contexto de Web Dynpro

El ndice de seleccin de leads es importante en las siguientes situaciones:

Si se selecciona una sola fila en una tabla, el ndice de seleccin de leads se ajusta
automticamente segn la fila seleccionada. Se puede acceder al elemento de contexto
relacionado sin tener que encontrar el ndice de elemento explcitamente. Por otro lado, la
fila marcada se puede manipular de manera programada cambiando el ndice de seleccin
de leads.
Los campos de formulario pueden estar vinculados a atributos de un nodo de contexto con
la cardinalidad 0:n o 1:n. En este caso, los datos del formulario se originan del elemento
relacionado al ndice de seleccin de leads del nodo. El set de datos visualizado por el
formulario se puede manipular de manera programada cambiando el ndice de seleccin
de leads.
Se pueden asignar mtodos especiales (funciones de suministro) a nodos de contexto. El
framework puede llamar automticamente a una funcin de suministro si la seleccin de
leads en el nodo superior cambia.

La propiedad Singleton

Figura 158: Estructura contextual en tiempo de ejecucin: Propiedad Singleton (1)

La figura muestra que el nodo de contexto N1 tiene un nodo subordinado llamado N2. El nodo
N2 es un nodo diferente con su propia serie de elementos.
La propiedad booleana Singleton afecta de manera importante a la relacin entre un nodo y
su nodo superior.
Si la propiedad singleton del nodo N2 est establecida en falso (el nodo N2 es un no singleton
en tiempo de ejecucin, que es el valor predeterminado), hay una instancia diferente del nodo
subordinado N2 para cada elemento de la serie de nodos superior N1.
Lo ms importante es que cada instancia del nodo N2 est relacionada con el elemento
respectivo de la serie de nodos superior. Tenga en cuenta que las flechas que sealan a cada

296 Copyright . Reservados todos los derechos.


Leccin: Establecer propiedades a los nodos del contexto

una de las series de nodos N2 se crean en los elementos del nodo superior. Por consiguiente,
si hay n elementos en el nodo superior, hay n instancias diferentes de un nodo subordinado
no singleton.

Estructura contextual en tiempo de ejecucin: Propiedad Singleton

Figura 159: Estructura contextual en tiempo de ejecucin: Propiedad Singleton (2)

Si la propiedad Singleton del nodo N2 se establece en true, la cantidad de elementos


presentes en la serie de nodos superiores N1 no tiene importancia. Siempre habr
nicamente una instancia del nodo subordinado N2 para el nodo N2 en tiempo de ejecucin si
es un singleton.

Copyright . Reservados todos los derechos. 297


Captulo 10: Contexto de Web Dynpro

Funciones de suministro

Figura 160: Relleno de un nodo dependiente (nodo Singleton): funcin de suministro

La figura muestra que puede haber muchos elementos diferentes en la serie de nodos N1.
Debemos asegurarnos de que cuando se accede al nodo inferior N2, ste contiene los datos
correctos para el elemento seleccionado en el nodo superior. Las funciones de suministro se
utilizan para garantizar que los nodos subordinados se rellenen automticamente. Se puede
asignar una funcin de suministro a cada nodo de contexto de un controlador.

El tiempo de ejecucin de Web Dynpro llama a la funcin de suministro automticamente


en las siguientes situaciones:
Si la serie de nodos es inicial.
Si se modifica el ndice de seleccin de leads del nodo superior.
Si la serie de nodos se invalida de manera programada.

Consejo:
En todas estas situaciones, la funcin de suministro solo se llama cuando es
necesario Si no se accede de manera programada al nodo inferior N2 o si ste no
est asociado con ningn elemento de UI en el prximo conjunto de vistas, no se
llama a la funcin de suministros.
Quizs no se llamen a las funciones de suministro explcitamente desde el cdigo
fuente de un mtodo de controlador. Solo el tiempo de ejecucin de Web Dynpro
puede acceder a dicho mtodo.

298 Copyright . Reservados todos los derechos.


Leccin: Establecer propiedades a los nodos del contexto

Asignacin de una funcin de suministro a un nodo


Puede asignarse una funcin de suministro a un nodo estableciendo el valor de la propiedad
Funcin de suministro. Como resultado, se crea un mtodo de controlador adicional con una
firma dada. Una referencia al elemento en la seleccin de leads del nodo superior (nombre:
PARENT_ELEMENT) permite acceder a los atributos de este elemento. Una referencia al nodo
con el cual se relaciona la funcin de suministro (nombre: NODE) le permite almacenar los
datos dependientes en la serie de nodos inferiores.
Cuando se utiliza una transaccin empresarial estndar, la informacin se presenta en forma
de lista de registros de cabecera de alguna clasificacin (por ejemplo, cabeceras de pedidos
de cliente). Desde esta lista, el usuario selecciona normalmente una cabecera de pedidos y, a
continuacin, mira sus partidas. Tiene mucho ms sentido leer la informacin de partida
nicamente cuando es necesario que leer todas las partidas de todos los pedidos de cliente
en el supuesto de que sean relevantes para alguien. Esto generara una arquitectura de
aplicacin muy ineficiente tanto en trminos de requisitos de procesamiento como de uso de
la memoria.

Instanciacin de datos no activa


Web Dynpro sigue el principio de instanciacin de datos no activa. Los datos solo se crean
cuando realmente se necesitan. Cuando se aplica este principio a la arquitectura de contexto,
el nodo subordinado permanece sin procesar a menos que el programa necesite realmente
mirar los datos de este.
La instanciacin de datos no activa significa tambin que no se crean automticamente series
dependientes para todos los elementos del nodo superior. La creacin de una serie del nodo
dependiente se pospone hasta que el elemento relacionado de la serie superior obtiene la
seleccin de liderazgo.

RESUMEN DE LA LECCIN
Ahora podr:
Explicar la propiedad de cardinalidad de los nodos de contexto
Explicar la propiedad Singleton de los nodos de contexto

Copyright . Reservados todos los derechos. 299


Captulo 10
Leccin 3
Asignacin de contextos

RESUMEN DE LA LECCIN
Esta leccin explica la asignacin de contexto.

Ejemplo empresarial
Necesita acceder a datos del contexto desde otro controlador. Por este motivo, se requieren
los siguientes conocimientos:
Cmo asignar el contexto

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Definir asignacin interna de contextos

Asignacin de contextos

Figura 161: Asignacin de contextos

La asignacin de contextos permite a un controlador (normalmente un controlador de vistas)


acceder a los datos procesados anteriormente por otro controlador. Como una relacin de
asignacin permite que se realice una referencia directa a los datos de otro controlador, no es
necesario que estos datos se copien o muevan.

300 Copyright . Reservados todos los derechos.


Leccin: Asignacin de contextos

Al nodo de contexto que acta como fuente de datos se le conoce como el nodo de origen de
asignacin, y al nodo de contexto que se asigna se le denomina nodo asignado.

Nota:
Un nodo asignado no actualiza su serie de elementos propia. En su lugar, hace
referencia a la serie de elementos del nodo de origen de asignacin. Un
controlador de vistas no puede actuar como fuente de datos para una relacin de
asignacin porque esto viola los principios del diseo de programa MVC.

Principio de diseo
En los programas diseados de acuerdo con el principio MVC, un controlador de vistas se
escribe de modo que no tome parte en la generacin de los datos que visualiza. En su lugar, el
controlador de vistas solo se preocupa de la visualizacin de datos generados con
anterioridad y de la gestin de la interaccin resultante del usuario (validacin, tratamiento de
errores, etc.). Interactuar con lgica back end para generar los datos solicitados es tarea del
controlador de componentes o controlador personalizado.
Una vez generados los datos, el controlador de componentes (o controlador personalizado)
los suministra a un controlador de vistas para su visualizacin. Si un controlador de vistas
acta como fuente de datos (origen) para una relacin de asignacin, puede producirse una
situacin en la que un controlador de componentes (o controlador personalizado) sera
dependiente de la funcionalidad de un controlador de vistas. Esto no es un diseo adecuado y,
por consiguiente, no est permitido.

Asignacin entre controladores


Para establecer una asignacin de contextos entre dos controladores, el controlador de
destino debe declarar el controlador de origen como controlador utilizado en sus
propiedades.
Si se selecciona la etiqueta Contexto en modo de edicin del controlador de destino, se
visualizarn los contextos de todos los controladores utilizados.

A continuacin, se puede hacer referencia a un nodo de un contexto de origen de la


siguiente manera:
Si todava no se ha definido un nodo independiente a asignar en el contexto del
controlador de destino, toda la estructura relacionada con el nodo de origen se copia
arrastrndolo desde el contexto del controlador de origen al nodo raz del contexto del
controlador de destino. Adems, el nodo que se copia se asigna al nodo de origen.
Si la estructura relacionada con un nodo ya se ha definido en el contexto del controlador
de destino, la asignacin puede establecerse arrastrando uno de los nodos y soltndolo en
el otro nodo. Sin embargo, el origen de la asignacin siempre es el nodo incluido en el
controlador utilizado (que se visualiza en la parte derecha).

Consejo:
Si el nodo que quiere asignar contiene los atributos que no se incluyen en el
origen de la asignacin, estos atributos se borran al asignar el nodo. La
asignacin de origen y el nodo asignado quizs posean diferentes nombres.
Despus de ejecutarse la asignacin entre los dos nodos, todos sus elementos se
asignan, tanto los atributos como los nodos subordinados.

Copyright . Reservados todos los derechos. 301


Captulo 10: Contexto de Web Dynpro

Si la estructura de nodo del origen de asignacin se modifica (si se aaden, eliminan o


modifican atributos), la asignacin se puede actualizar (sincronizar) mediante el men
contextual del nodo asignado.

Asignacin interna

Figura 162: Asignacin de contextos: Asignacin interna

Asignacin interna es el nombre que se da a una relacin de asignacin en la que tanto el


nodo asignado como el nodo de origen de asignacin estn dentro de los lmites de un
componente. Esto significa que la relacin de asignacin puede establecerse completamente
al escribir el componente actual.
Sin embargo, existe un caso especial en el que una relacin de asignacin solo puede
establecerse parcialmente al escribir el componente actual. Esto se conoce como asignacin
externa. Se trata de una situacin en la que el nodo de origen de asignacin est fuera de los
lmites de, o es externo a, el componente actual.

Nota:
La asignacin externa detallada se trata ms adelante en el curso.

Qu tipo de relacin de asignacin es la asignacin interna?

X A Solo el nodo asignado est dentro de los lmites de un componente

X B Solo el nodo de origen de asignacin est dentro de los lmites de un componente

X C Tanto el nodo asignado como el nodo de origen de asignacin estn dentro de los
lmites de un componente

X D Tanto el nodo asignado como el nodo de origen de asignacin estn fuera de los
lmites de un componente

302 Copyright . Reservados todos los derechos.


Captulo 10
Ejercicio 17
Definir, asignar y vincular datos al contexto

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro que le permita introducir datos en los campos
de entrada de la primera vista. La entrada de usuario se visualiza en la prxima vista.
Modelo: NET310_CTRL_S
Solucin: NET310_COND_S
Crear nodos en contextos de componentes y vistas, y vincular elementos de UI para ver
nodos de contexto.
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_CTRL_##) o del componente Web


Dynpro NET310_CTRL_S en el nuevo componente, ZNET310_COND_##.

Tarea 2
En el contexto del controlador de componentes, cree un nodo de contexto que contenga
atributos para almacenar un ID de transportista y un ID de conexin. Cree el mismo nodo de
contexto en cada una de las dos vistas y asigne los nodos definidos en los contextos del
controlador de vistas al nodo definido en el contexto del controlador de componentes.

1. En el contexto del controlador de componentes, cree un nodo de contexto con el nombre


FLIGHTINFO. Este nodo se basa en el tipo dictionary SFLIGHT y tiene la cardinalidad 1..1.
Aada dos atributos basados en los campos CARRID y CONNID de la tabla SFLIGHT.

2. Cree el mismo nodo en el contexto de cada controlador de vistas y asigne el nodo de


contexto de los controladores de vistas al nodo de contexto FLIGHTINFO del controlador
de componentes.

Tarea 3
Para ambas vistas, cree un formulario que visualice una etiqueta y un campo de entrada para
cada atributo de contexto del nodo FLIGHTINFO. Utilice el asistente de codificacin Web
Dynpro para realizar este paso.

1. En el layout de la vista INPUT_VIEW, cree un formulario con referencias a los atributos de


contexto CARRID y CONNID. Utilice el Asistente de codificacin Web Dynpro para crear el
formulario.

2. Repita el paso anterior para la vista OUTPUT_VIEW. Sin embargo, visualice los valores de
atributo de los elementos de UI del tipo TextView.

3. Active su componente. Cree una aplicacin Web Dynpro para su componente. Pruebe la
aplicacin.

Copyright . Reservados todos los derechos. 303


Captulo 10
Solucin 17
Definir, asignar y vincular datos al contexto

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro que le permita introducir datos en los campos
de entrada de la primera vista. La entrada de usuario se visualiza en la prxima vista.
Modelo: NET310_CTRL_S
Solucin: NET310_COND_S
Crear nodos en contextos de componentes y vistas, y vincular elementos de UI para ver
nodos de contexto.
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_CTRL_##) o del componente Web


Dynpro NET310_CTRL_S en el nuevo componente, ZNET310_COND_##.
a) En la pantalla Navegador de objetos, seleccione el componente Web
DynproZNET310_CTRL_## y luego (Otro objeto) en la barra de herramientas del
explorador Web Dynpro Explorer.

b)
En la ventana de dilogo Seleccin de objeto, seleccione (Copiar).

c) En la ventana de dilogo Copiar componente Web Dynpro, indique los datos siguientes:
Campo Valor
Nombre de la copia ZNET310_COND_##

d) Seleccione Continuar.

e) Asigne su componente Web Dynpro a su paquete y orden de transporte cuando se le


solicite.

Tarea 2
En el contexto del controlador de componentes, cree un nodo de contexto que contenga
atributos para almacenar un ID de transportista y un ID de conexin. Cree el mismo nodo de
contexto en cada una de las dos vistas y asigne los nodos definidos en los contextos del
controlador de vistas al nodo definido en el contexto del controlador de componentes.

1. En el contexto del controlador de componentes, cree un nodo de contexto con el nombre


FLIGHTINFO. Este nodo se basa en el tipo dictionary SFLIGHT y tiene la cardinalidad 1..1.
Aada dos atributos basados en los campos CARRID y CONNID de la tabla SFLIGHT.
a) Trate el controlador de componentes y seleccione la etiqueta Contexto.

304 Copyright . Reservados todos los derechos.


Leccin: Asignacin de contextos

b) En el men contextual del nodo raz de contexto COMPONENTCONTROLLER


seleccione CrearNodo.

c) En la ventana de dilogo Crear nodos, indique los datos siguientes:


Campo Valor
Nombre de nodo FLIGHTINFO

Estructura Dictionary SFLIGHT

Cardinalidad 1..1

d) Seleccione el pulsador Aadir atributo desde estructura.

e) En la ventana de dilogo Seleccionar componentes de estructura SFLIGHT, marque los


componentes de estructura CARRID y CONNID, y seleccione Continuar.

f) Seleccione Grabar.

2. Cree el mismo nodo en el contexto de cada controlador de vistas y asigne el nodo de


contexto de los controladores de vistas al nodo de contexto FLIGHTINFO del controlador
de componentes.
a) En la pantalla Explorador Web Dynpro: Modificar controlador de ZNET310_COND_##,
abra la vista Web Dynpro INPUT_VIEW y seleccione la etiqueta Contexto.

b) Arrastre el nodo de contexto FLIGHTINFO del contexto COMPONENTCONTROLLER y


sultelo en el nodo raz del controlador de vista CONTEXT.

c) Seleccione Grabar.

d) Abra la vista Web Dynpro OUTPUT_VIEW y seleccione la etiqueta Contexto.

e) Arrastre el nodo de contexto FLIGHTINFO del contexto COMPONENTCONTROLLER y


sultelo en el nodo raz del controlador de vista CONTEXT.

f) Seleccione Grabar.

Tarea 3
Para ambas vistas, cree un formulario que visualice una etiqueta y un campo de entrada para
cada atributo de contexto del nodo FLIGHTINFO. Utilice el asistente de codificacin Web
Dynpro para realizar este paso.

1. En el layout de la vista INPUT_VIEW, cree un formulario con referencias a los atributos de


contexto CARRID y CONNID. Utilice el Asistente de codificacin Web Dynpro para crear el
formulario.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_COND_##, abra la
vista INPUT_VIEW y seleccione la etiqueta Layout.

b) Seleccione el elemento de UI ROOTUIELEMENTCONTAINER de la jerarqua de


elementos de UI.

c) Seleccione el pulsador Asistente de codificacin Web Dynpro.

d) En la ventana de dilogo Galera de modelos, seleccione Formulario.

Copyright . Reservados todos los derechos. 305


Captulo 10: Contexto de Web Dynpro

e) En la ventana de dilogo Crear elementos de formulario para container


ROOTUIELEMENTCONTAINER, seleccione el pulsador Contexto y haga doble clic en el
nodo de contexto FLIGHTINFO.

f) Marque la casilla de seleccin Crear formulario en el container nuevo y Crear cabecera


de seccin.

g) Seleccione Continuar.

h) Seleccione Grabar.

2. Repita el paso anterior para la vista OUTPUT_VIEW. Sin embargo, visualice los valores de
atributo de los elementos de UI del tipo TextView.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_COND_##, abra la
vista OUTPUT_VIEW y seleccione la etiqueta Layout.

b) Seleccione en ROOTUIELEMENTCONTAINER la jerarqua de elementos de UI.

c) Seleccione el pulsador Asistente de codificacin Web Dynpro.

d) En la ventana de dilogo Galera de modelos, seleccione Formulario.

e) En la ventana de dilogo Crear elementos de formulario para container


ROOTUIELEMENTCONTAINER, seleccione el pulsador Contexto y haga doble clic en el
nodo de contexto FLIGHTINFO.

f) En el campo Editor de celdas estndar, seleccione el elemento TextView.

g) Marque la casilla de seleccin Crear formulario en el container nuevo y Crear cabecera


de seccin.

h) Seleccione Continuar.

i) Seleccione Grabar.

3. Active su componente. Cree una aplicacin Web Dynpro para su componente. Pruebe la
aplicacin.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_COND_##, en el
men contextual del componente ZNET310_COND_##, seleccione Activar.

b) En la ventana de dilogo Objetos inactivos de NET310-##, seleccione Continuar.

c) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_COND_##, en el


men contextual del componente ZNET310_COND_##, seleccione CrearAplicacin
Web Dynpro.

d) En la ventana de dilogo, Crear aplicacin Web Dynpro, seleccione Continuar.

e) Seleccione Grabar.

f) Asigne su aplicacin Web Dynpro a su paquete y orden de transporte cuando se le


solicite.

g) Desde el men contextual de su aplicacin Web Dynpro ZNET310_COND_##,


seleccione Probar para abrir una ventana de navegador e iniciar su aplicacin.

306 Copyright . Reservados todos los derechos.


Leccin: Asignacin de contextos

RESUMEN DE LA LECCIN
Ahora podr:
Definir asignacin interna de contextos

Copyright . Reservados todos los derechos. 307


Captulo 10: Contexto de Web Dynpro

308 Copyright . Reservados todos los derechos.


Captulo 10

Evaluacin de la formacin

1. Un contexto tiene siempre un nodo superior conocido como nodo raz de contexto. Qu
tipo de propiedades tiene este nodo raz de contexto?
Seleccione la respuesta correcta.

X A Propiedades fijas y no se puede eliminar

X B Sin propiedades fijas y no se puede eliminar

X C Propiedades fijas y se puede eliminar

X D Algunos propiedades fijas y se puede eliminar

2. Qu ocurre cuando la cardinalidad de un nodo es igual a 1..1 1..n?


Seleccione la respuesta correcta.

X A El elemento con un ndice aleatorio se crea automticamente cuando se instancia


el nodo

X B El elemento con ndice 1 se crea automticamente cuando se instancia el nodo

X C El elemento con ndice 1 se elimina automticamente cuando se instancia el nodo

3. Cules de las siguientes afirmaciones acerca de la asignacin interna son verdaderas?


Seleccione la respuesta correcta.

X A Solo el nodo asignado est dentro de los lmites de un componente

X B Solo el nodo de origen de asignacin est dentro de los lmites de un componente

X C Tanto el nodo asignado como el nodo de origen de asignacin estn dentro de los
lmites de un componente

X D Tanto el nodo asignado como el nodo de origen de asignacin estn fuera de los
lmites de un componente

Copyright . Reservados todos los derechos. 309


Captulo 10

Respuestas a la Evaluacin de la formacin

1. Un contexto tiene siempre un nodo superior conocido como nodo raz de contexto. Qu
tipo de propiedades tiene este nodo raz de contexto?
Seleccione la respuesta correcta.

X A Propiedades fijas y no se puede eliminar

X B Sin propiedades fijas y no se puede eliminar

X C Propiedades fijas y se puede eliminar

X D Algunos propiedades fijas y se puede eliminar

2. Qu ocurre cuando la cardinalidad de un nodo es igual a 1..1 1..n?


Seleccione la respuesta correcta.

X A El elemento con un ndice aleatorio se crea automticamente cuando se instancia


el nodo

X B El elemento con ndice 1 se crea automticamente cuando se instancia el nodo

X C El elemento con ndice 1 se elimina automticamente cuando se instancia el nodo

3. Cules de las siguientes afirmaciones acerca de la asignacin interna son verdaderas?


Seleccione la respuesta correcta.

X A Solo el nodo asignado est dentro de los lmites de un componente

X B Solo el nodo de origen de asignacin est dentro de los lmites de un componente

X C Tanto el nodo asignado como el nodo de origen de asignacin estn dentro de los
lmites de un componente

X D Tanto el nodo asignado como el nodo de origen de asignacin estn fuera de los
lmites de un componente

310 Copyright . Reservados todos los derechos.


CAPTULO 11 Interfaz de usuario de Web
Dynpro

Leccin 1
Definicin del layout de visualizacin 312
Ejercicio 18: Usar gestores de layout para disponer elementos de UI 327

Leccin 2
Vinculacin de datos y control del comportamiento del elemento de UI 334

Leccin 3
Utilizacin de elementos de UI compuestos 342
Ejercicio 19: Usar el asistente de servicio y visualizar tablas 351

OBJETIVOS DEL CAPTULO

Diferenciar elementos de UI
Definir el layout mediante elementos de container
Aadir elementos de UI al layout
Vincular las propiedades de elemento de UI a atributos de contexto.
Controlar el comportamiento del elemento de UI
Explicar elementos de UI compuestos
Definir la vinculacin de contexto para las UI de la tabla
Definir la propiedad de seleccin para las UI de la tabla
Utilizar la pgina de test para elementos de UI

Copyright . Reservados todos los derechos. 311


Captulo 11
Leccin 1
Definicin del layout de visualizacin

RESUMEN DE LA LECCIN
En esta leccin se explica cmo disponer los diferentes elementos de UI para formar el layout
de una vista. En esta leccin no se describirn nicamente elementos de UI simples, sino
tambin elementos complejos como los elementos de UI anidados (por ejemplo, Tabla).
Tambin muestra cmo definir la vinculacin de datos entre las propiedades de los elementos
de UI y los atributos de contexto.

Ejemplo empresarial
Desea crear una aplicacin Web Dynpro que tenga una interfaz de usuario optimizada (UI) y
disponer los elementos de la pantalla por grupos o trays. Desea crear una aplicacin Web
Dynpro que tenga una interfaz de usuario optimizada (UI) utilizando diferentes elementos de
container para disponer los elementos en la pantalla. Tambin quisiera poder visualizar varios
registros del usuario en una tabla y entender cmo las propiedades de algunos de sus
elementos de UI se pueden manipular en tiempo de ejecucin (por ejemplo, su visibilidad).
Por este motivo, se requieren los siguientes conocimientos:
Cmo definir el layout de la vista mediante la disposicin de los elementos de UI y el
establecimiento de sus propiedades
Cmo asociar propiedades de elemento de UI a atributos de contexto
Cmo usar el elemento de UI de tabla como ejemplo de elementos de UI compuestos

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Diferenciar elementos de UI
Definir el layout mediante elementos de container
Aadir elementos de UI al layout

312 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Elementos de UI

Figura 163: Elementos de UI

Un elemento de UI es cualquier entidad grfica que ocupe una posicin dentro de un layout de
visualizacin. No obstante, esto no significa que todos los elementos de UI sean visibles en la
pantalla. Determinados elementos de UI, como TransparentContainer,
ViewContainerUIElement o InvisibleElement, no son visibles en la pantalla. Estos elementos
ocupan una posicin en la jerarqua de elementos de UI similar a cualquier otro elemento de
UI visible y ayudan a estructurar la UI. Adems, todos los elementos de UI pueden
establecerse en invisibles en tiempo de ejecucin sin por ello liberar el espacio que ocuparan
como elementos de UI visibles. Por ejemplo, al ocultar el elemento de UI Label ubicado a la
izquierda de un elemento de UI InputField no significa que el elemento de UI InputField se
mueva a la izquierda y aparezca en la posicin en la que se visualizaba anteriormente el
elemento de UI Label.
Web Dynpro est diseado para operar con cualquier UI basada en formularios. Esto implica
que cualquier elemento de UI es solo una descripcin abstracta del cdigo fuente que se
renderiza en tiempo de ejecucin, y no nicamente una representacin WML o HTML de este
elemento.

Copyright . Reservados todos los derechos. 313


Captulo 11: Interfaz de usuario de Web Dynpro

Categoras de elementos de UI

Figura 164: Categoras de elementos de UI

Existe una gran cantidad de elementos disponibles para el diseo de la UI de una aplicacin
Web Dynpro. Todos los elementos de UI disponibles se dividen en categoras.

Cuando la presentacin preliminar de layout es visible, el diseador de vistas visualiza las


siguientes categoras:
La categora Text
Esta categora contiene elementos que se pueden emplear para visualizar textos o
introducir literales.
La categora Action
Esta categora contiene elementos simples que el usuario puede seleccionar para activar
la navegacin o solo para circular.
La categora Selection
Esta categora contiene elementos simples que visualizan varios valores. Segn la clase de
elemento, los usuarios pueden seleccionar uno o ms valores.
La categora Complex
Esta categora contiene elementos que requieren subelementos para definir un elemento
de UI vlido.
La categora Layout
Esta categora contiene elementos de UI que se utilizan para estructurar el layout. Un
subconjunto especial (elementos de container) consta de los elementos de UI Group,
Panel, TransparentContainer y Tray. Estos elementos definen reas rectangulares en las
cuales se ordenan los subelementos segn las reglas definidas por el container.

314 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

La categora Graphics
Esta categora contiene elementos para renderizar los miembros grficos de la pgina.
La categora Integration
Esta categora contiene elementos para incrustar todo tipo de tecnologas que no son
ABAP en Web Dynpro.

La categora __________ contiene elementos que se emplean para visualizar textos o


introducir literales.

X A text

X B action

X C selection

X D complex

Disposicin de elementos de UI

Figura 165: Disposicin de elementos de UI

Todos los layouts de visualizacin constan de una jerarqua de elementos de UI. El nodo raz
es de tipo TransparentContainer y se denomina RootUIElementContainer. El ID del elemento
no se puede modificar porque la codificacin es fija. Sin embargo, puede cambiar el tipo de
elemento de UI desde el men contextual de este elemento. Esto es importante si desea
incrustar un archivo Flash o un archivo Silverlight dentro de una vista Web Dynpro.
Todos los elementos de UI posteriores aadidos a un layout de visualizacin estn
subordinados jerrquicamente a RootUIElementContainer.
Context_Menus es el segundo elemento que se visualiza arriba de RootUIElementContainer.
Este proveedor de men de contexto le permite crear mens contextuales en tiempo de
diseo. En el tiempo de ejecucin, estos mens pueden instanciarse y asignarse a los
elementos de UI. El usuario hace clic con el botn secundario del ratn sobre un elemento de

Copyright . Reservados todos los derechos. 315


Captulo 11: Interfaz de usuario de Web Dynpro

UI en tiempo de ejecucin para visualizar los elementos del men contextual relacionado
junto con el men contextual estndar.

Elementos de container y gestores de layout


Los elementos de container son elementos de UI que pueden tener elementos inferiores
arbitrarios.

Los siguientes son los elementos de container disponibles:

Group
Panel
TransparentContainer
Tray
ScrollContainer (obsoleto, reemplcelo por TransparentContainer)

Los elementos de container ocupan un rea rectangular en el layout de la vista. Todos los
elementos de UI que estn subordinados a un elemento de container estn ubicados en esta
rea rectangular.
Todos los elementos de container definen la disposicin de sus subordinados. Hacen esto
mediante la propiedad Layout, que asigna un gestor de layout al elemento de UI del container.
Todos los elementos subordinados de un elemento de UI heredan un conjunto de
propiedades relacionado con el gestor de layout asignado al elemento de UI del container
superior.

La propiedad Layout puede tener los siguientes valores:

FlowLayout
RowLayout
MatrixLayout
FormLayout
GridLayout (cuando sea posible, reemplcelo por MatrixLayout)
FormLayoutAdvanced

316 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Gestores de layout: FlowLayout

Figura 166: Gestores de layout: FlowLayout

FlowLayout es el gestor de layout predeterminado. Todos los elementos subordinados de un


container que utiliza FlowLayout como el gestor de layout se dispondrn secuencialmente.
Por lo tanto, no se pueden especificar explcitamente saltos de lnea. Sin embargo, segn el
tipo de elemento, se puede forzar implcitamente un salto de lnea mediante el elemento.
Los elementos que no fuerzan un salto de lnea se muestran en una fila, siempre y cuando el
container tenga la longitud suficiente. Si el container es demasiado estrecho como para que
se puedan visualizar estos elementos subordinados en una fila (por ejemplo, si la ventana del
browser es demasiado estrecha), estos saltan automticamente a las siguientes filas. Este
salto no puede forzarse en la fase de diseo. Sin embargo, el salto puede desactivarse fijando
la propiedad wrapping en false.
Los elementos que estn en lneas diferentes no estn relacionados entre ellos. Este tipo de
container se puede utilizar para disponer subcontainers.

Los siguientes elementos no fuerzan un salto de lnea:

InputField
Label
FormattedTextView y TextView
Button, ButtonChoice, ToggleButton
LinkChoice, LinkToAction, LinkToUrl, ToggleLink
CheckBox, TriStateCheckBox
DropDownByIndex, DropDownByKey

Copyright . Reservados todos los derechos. 317


Captulo 11: Interfaz de usuario de Web Dynpro

RadioButton
Image

Gestores de layout: RowLayout

Figura 167: Gestores de layout: RowLayout

Si RowLayout se utiliza para el elemento de UI de container, todos los subordinados


heredarn la propiedad LayoutData, que puede tener los valores RowData y RowHeadData. Si
se establece esta propiedad en RowHeadData, se forzar un salto de lnea. Si se establece la
propiedad en RowData, no se forzar un salto de lnea. Sin embargo, segn el tipo de
elemento, se puede forzar implcitamente un salto de lnea mediante el elemento.
Los elementos que no fuerzan un salto de lnea y que tienen la propiedad LayoutData =
RowData se muestran en la misma fila que el elemento anterior, aun si se alcanza el margen
derecho del container.
Los elementos de UI ubicados en filas diferentes no estn relacionados entre s ya que todos
los elementos estn alineados en una sola columna.

318 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Gestores de layout: MatrixLayout

Figura 168: Gestores de layout: MatrixLayout

Si MatrixLayout se utiliza con el elemento de UI de container, todos los subordinados


heredarn la propiedad LayoutData, que puede tener los valores MatrixData y
MatrixHeadData. Si se establece esta propiedad en MatrixHeadData, se forzar un salto de
lnea. Si se establece la propiedad en MatrixData, los elementos subordinados se muestran en
la misma fila que el elemento anterior, incluso si ya se ha alcanzado el margen de la derecha.
Los elementos subordinados de este container se disponen en columnas. Con este gestor de
layout, el nmero de columnas no se define estticamente, sino por el nmero mximo de
elementos subordinados en cualquier fila. La cantidad de elementos en diferentes filas puede
variar.
Puede utilizar las propiedades StretchedHorizontally y StretchedVertically para especificar si
los elementos de UI se distribuirn en el rea del container. Si ambas propiedades se
establecen en blanco, los elementos se ubican en la esquina superior izquierda del container.
Los elementos de UI dispuestos en un MatrixLayout pueden ocupar varias celdas (propiedad
colSpan).

Copyright . Reservados todos los derechos. 319


Captulo 11: Interfaz de usuario de Web Dynpro

Gestores de layout: GridLayout

Figura 169: Gestores de layout: GridLayout

Al igual que el MatrixLayout, el GridLayout puede utilizarse si se desea un alineamiento


vertical de los elementos. No obstante, en este caso el nmero de columnas se define
estticamente mediante la propiedad colCount del elemento de container.
No puede definir explcitamente saltos de lnea. Se producir un salto de lnea cuando se
ocupen todas las celdas de una fila. Si se elimina un elemento de la jerarqua se modificar
toda la disposicin, ya que todos los elementos posteriores de la jerarqua se movern hacia
la izquierda tantas celdas como ocupaba el elemento eliminado.
Utilice este gestor de layout solo si todas las filas tienen el mismo nmero de columnas y si se
insertan o eliminan filas completas. Cuando se utilice este gestor de layout, asegrese de no
eliminar completamente los elementos de UI, sino que se debern sustituir por un
InvisibleElement con el fin de mantener la disposicin de elementos original.

320 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Gestores de layout: FormLayout (1)

Figura 170: Gestores de layout: FormLayout (1)

Si FormLayout se utiliza con el elemento de UI de container, todos los subordinados


heredarn la propiedad LayoutData, que puede tener los valores FormTopData,
FormHeadData y FormData.

Nota:
FormLayout solo est disponible en SAP NetWeaver 7.0 Enhancement Package 2
y versiones posteriores.

La parametrizacin FormTopData divide la pgina horizontalmente en secciones, y cada


seccin contiene una cantidad definida estticamente de columnas. El ancho de estas
columnas es nico en todas las secciones. Por lo tanto, la proporcin de los anchos de la
seccin se basa en la proporcin de los recuentos de columnas relacionados con las
secciones.
Por ejemplo, en la figura (Gestores de layout: FormLayout [1]), FormLayout es asignado al
grupo con la cabecera Layout de formulario y a cada uno de los grupos incrustados. Los
grupos con las cabeceras Grupo 1 y Grupo 2 definen una nueva seccin con respecto al grupo
incrustado. Para el Grupo 1, colCount se establece en 4 y para el Grupo 2, colCount se
establece en 8. Cada uno de los grupos incrustados tambin usa FormLayout como su gestor
de layout. El recuento de columnas para cada uno de los grupos incrustados se define
mediante la primera etiqueta en el grupo.

Copyright . Reservados todos los derechos. 321


Captulo 11: Interfaz de usuario de Web Dynpro

Gestores de layout: FormLayout (2)

Figura 171: Gestores de layout: FormLayout (2)

En cada seccin, los saltos de lnea se pueden forzar estableciendo LayoutData =


FormHeadData. Si establece la propiedad en FormData, los elementos subordinados se
muestran en la misma fila que el elemento anterior.
Los elementos de UI dispuestos en un FormLayout pueden ocupar varias celdas (propiedad
colSpan). Si se deja colSpan en su valor por defecto (-1), los elementos se extienden en las
columnas automticamente.
Por ejemplo, en la figura (Gestores de layout: FormLayout [2]), LayoutData = FormHeadData
es asignado al grupo con la cabecera Grupo 3, mientras que LayoutData = FormData es
asignado al grupo con la cabecera Grupo 4. Para el grupo con la cabecera Grupo 3, colCount
se establece en 6, mientras que para el grupo con la cabecera Grupo 4 esta propiedad se
establece en -1. En cada uno de estos grupos, el primer elemento en la primera lnea tiene la
propiedad LayoutData = FormTopData, mientras que todos los otros elementos que
comienzan una nueva fila tienen la propiedad LayoutData = FormHeadData. Todos los
campos de formulario que no comienzan una nueva fila tienen LayoutData = FormData.

Consejo:
Para obtener detalles sobre la propagacin automtica de elementos de UI en la
tabla, consulte la documentacin online.

En SAP NetWeaver 7.0 Enhancement Package 2, la propiedad LayoutData nunca se visualiza


para el primer subelemento de un container. Esto se debe a que el valor de esta propiedad
para el primer subelemento solo tiene un valor vlido.

El nico valor del primer elemento de la propiedad LayoutData se determina de la


siguiente manera:

322 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Si se asigna RowLayout a la propiedad Layout del container, el primer subelemento


automticamente se convierte en LayoutData = RowHeadData.
Si se asigna MatrixLayout a la propiedad Layout del container, el primer subelemento
automticamente se convierte en LayoutData = MatrixHeadData.
Si se asigna FormLayout a la propiedad Layout del container, el primer subelemento
automticamente se convierte en LayoutData = FormTopData.

FormLayoutAdvanced

Figura 172: FormLayoutAdvanced

FormLayoutAdvanced admite la alineacin de elementos de UI en los lmites del container.


Tambin es posible disponer los elementos de UI en forma de cascada en diferentes filas.
Los datos de layout de un elemento de UI, que pertenece a un container que tiene asignado
FormLayoutAdvanced, son proporcionados por FormDataAdvanced. La altura de
FormLayoutAdvanced en la forma de rowspan se debe especificar en cada elemento de UI.
FormLayoutAdvanced solo est disponible en SAP NetWeaver 7.0 Enhancement Package 3 /
SAP NetWeaver 7.3 Enhancement Package 1.

Nota:
La altura de la celda de layout no se ajusta automticamente a la altura de su
elemento de UI. Si es muy grande, se trunca. Otros layouts s se ajustan a la altura.
Para ms informacin, consulte MatrixLayout y GridLayout.

Usted utiliza el editor de vistas en un controlador personalizado para tratar el layout de vista.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 323


Captulo 11: Interfaz de usuario de Web Dynpro

Adicin de elementos de UI al layout

Figura 173: Utilizacin del editor de vistas

El editor de vistas es una herramienta especfica de Web Dynpro que le permite tratar un
layout de visualizacin. El Editor de vistas solo est disponible cuando trata un controlador de
vistas. No aparece cuando se trata un controlador personalizado porque estos controladores
no tienen interfaz visual. El editor de vistas se puede utilizar con o sin la presentacin
preliminar de layout.

Nota:
En la siguiente descripcin se asume que est familiarizado con la presentacin
preliminar de layout bsico.

324 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

Editor de vistas

Figura 174: Editor de vistas

Para aadir cualquier elemento de UI a la jerarqua de elementos de UI, puede arrastrarlo


desde la barra de herramientas situada en la parte izquierda del editor de vistas hasta la
presentacin preliminar de layout. tambin se puede aadir un nuevo elemento de UI en la
representacin jerrquica desde el men contextual de cualquier elemento de la jerarqua que
tenga elementos subordinados (por ejemplo, un elemento TransparentContainer o un
elemento Group). Para modificar la posicin de un elemento de UI a la jerarqua de elementos,
puede moverlo hacia arriba o hacia abajo usando la funcin relacionada desde el men
contextual del elemento o arrastrarlo a una nueva posicin en la representacin jerrquica o
en la presentacin preliminar de layout.

Nota:
Si arrastra y suelta un elemento en otro elemento que pueda funcionar como su
elemento superior, el elemento soltado se convierte en subelemento.

Utilice los siguientes mtodos para copiar un elemento con todos sus subelementos:
Para copiar un elemento dentro de la misma vista, seleccione Copiar elemento desde el
men contextual del elemento que quiere copiar. Luego, focalcese en el elemento que
debera ser el superior del elemento copiado. Finalmente, seleccione Insertar elemento
copiado desde el elemento de contexto del elemento padre.
Para crear un modelo de la copia persistente, seleccione Guardar como modelo desde el
men contextual de este elemento. Para usar el modelo, utilice el asistente de codificacin
Web Dynpro. Para cada modelo de copia, se muestra una entrada de lista debajo de las
entradas estndares del asistente.

Copyright . Reservados todos los derechos. 325


Captulo 11: Interfaz de usuario de Web Dynpro

La etiqueta Propiedades visualiza todas las propiedades del elemento de UI seleccionado. Los
eventos del cliente admitidos por un elemento de UI se enumerarn en la seccin de la
propiedad Events. Las propiedades relacionadas con los eventos del cliente empiezan con el
prefijo on (por ejemplo, onFilter, onSort u onAction). Para gestionar estos eventos del cliente,
se asocian acciones a cada uno de los eventos.

Consejo:
Los eventos del cliente son eventos relacionados con elementos de UI que el
marco Web Dynpro predefine. No se puede gestionar eventos adicionales del
cliente (por ejemplo, mediante JavaScript).

326 Copyright . Reservados todos los derechos.


Captulo 11
Ejercicio 18
Usar gestores de layout para disponer
elementos de UI

Ejemplo empresarial
Desarrolle una aplicacin Web Dynpro con una imagen en la primera vista. Adems, disponga
los elementos de UI de forma prudente.
Modelo: NET310_COND_S
Solucin: NET310_UI_S1
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_COND_##) o del componente Web


Dynpro NET310_COND_S en el nuevo componente, ZNET310_UI1_##.

Cuando se le solicite, asigne el nuevo componente Web Dynpro a su paquete y orden de


transporte.

Tarea 2
Aada un elemento de UI Image al layout de la vista INPUT_VIEW. El elemento de UI Image
deber visualizar el archivo reisen_1.jpg ubicado en la carpeta de MIME Repository
SAPBCWebDynproSAPPUBLICNET310.

1. En la pantalla Explorador Web Dynpro: Visualizar componente, seleccione


ZNET310_UI1_##VistasINPUT_VIEW. En el layout de la vista INPUT_VIEW, cree un
elemento de UI de tipo IMAGE (ID: IMG_PLANE). Actualice el origen del elemento de UI
Image. La fuente deber ser el archivo reisen_1.jpg ubicado en la carpeta de MIME
Repository SAPBCWebDynproSAPPUBLICNET310.

Tarea 3
Disponga los elementos de UI de la vista INPUT_VIEW. El container transparente que contiene
los campos de entrada y la imagen deber visualizarse en una fila. Estos dos elementos juntos
debern ocupar todo el ancho de pgina. El container transparente y la imagen debern
ocupar la misma altura. Modifique el color de fondo para visualizar el espacio ocupado por el
container transparente.

1. Corrija el orden de los elementos de UI en la jerarqua de elementos de UI. Ubique el botn


en el container transparente que incrusta el formulario. Al final de este ejercicio, el
container transparente deber estar ubicado a la izquierda de la imagen.

2. Ajuste el gestor de layout asignado al ROOTUIELEMENTCONTAINER. En vez del valor por


defecto (FlowLayout) utilice MatrixLayout. Adems, el botn debe visualizarse en una
nueva fila debajo de los campos de formulario.

Copyright . Reservados todos los derechos. 327


Captulo 11: Interfaz de usuario de Web Dynpro

3. Modifique el color de fondo del formulario. El rea que ocupa el contenedor transparente
circundante debe mostrarse en gris.

4. La imagen est rodeada de un marco transparente. Por lo tanto, la altura de la imagen sin
el marco no es igual a la altura del container. Elimine este marco.

Nota:
Este paso es opcional.

Tarea 4
Disponga los elementos de UI de la vista OUTPUT_VIEW en filas. El container transparente
que contenga los campos de formulario deber ocupar el ancho completo de pgina.
Visualice el rea ocupada por este container en gris.

1. Corrija el orden de los elementos de UI en la jerarqua de elementos de UI. Al final de esta


tarea, el botn debe visualizarse debajo del container transparente que incrusta el
formulario. Utilice la opcin de men Arriba o Abajo en el men contextual del botn para
convertirlo en el ltimo elemento en la jerarqua de elementos de UI.

2. Disponga los elementos de UI de la vista usando el gestor RowLayout (no se necesitan


columnas, pero se puede disponer el contenido en filas).

3. Modifique el color de fondo del formulario. El rea que ocupa el contenedor transparente
circundante debe mostrarse en gris.

Tarea 5
Active su componente Web Dynpro y realice un test.

1. Active su componente. Cree una aplicacin Web Dynpro con el mismo nombre que su
componente. Inicie la aplicacin Web Dynpro.

328 Copyright . Reservados todos los derechos.


Captulo 11
Solucin 18
Usar gestores de layout para disponer
elementos de UI

Ejemplo empresarial
Desarrolle una aplicacin Web Dynpro con una imagen en la primera vista. Adems, disponga
los elementos de UI de forma prudente.
Modelo: NET310_COND_S
Solucin: NET310_UI_S1
Tarea 1
Copie la solucin del ejercicio anterior o del componente modelo.

1. Copie la solucin del ejercicio anterior (ZNET310_COND_##) o del componente Web


Dynpro NET310_COND_S en el nuevo componente, ZNET310_UI1_##.
a) En la pantalla Object Navigator, seleccione el pulsador Otro objeto y, a continuacin,
seleccione la etiqueta Objetos Web.

b) Introduzca el nombre del componente Web Dynpro ZNET310_COND_## en el campo


Web Dynpro Comp./Intf. y seleccione el pulsador Copiar.

c) En la ventana de dilogo Copiar componente Web Dynpro, introduzca el nuevo


componente ZNET310_UI1_## en el campo Nombre de la copia.

d) Seleccione Continuar.

Cuando se le solicite, asigne el nuevo componente Web Dynpro a su paquete y orden de


transporte.

Tarea 2
Aada un elemento de UI Image al layout de la vista INPUT_VIEW. El elemento de UI Image
deber visualizar el archivo reisen_1.jpg ubicado en la carpeta de MIME Repository
SAPBCWebDynproSAPPUBLICNET310.

1. En la pantalla Explorador Web Dynpro: Visualizar componente, seleccione


ZNET310_UI1_##VistasINPUT_VIEW. En el layout de la vista INPUT_VIEW, cree un
elemento de UI de tipo IMAGE (ID: IMG_PLANE). Actualice el origen del elemento de UI
Image. La fuente deber ser el archivo reisen_1.jpg ubicado en la carpeta de MIME
Repository SAPBCWebDynproSAPPUBLICNET310.
a) En el men contextual del ROOTUIELEMENTCONTAINER, seleccione Insertar
elemento.

b) Seleccione el tipo de elemento IMAGE e introduzca la ID en el campo adecuado.

Copyright . Reservados todos los derechos. 329


Captulo 11: Interfaz de usuario de Web Dynpro

c) Seleccione el pulsador MIME Repository situado en la parte superior del rea de


navegacin de Workbench ABAP.

d) Abra la carpeta especfica (seleccione


SAPBCWebDynproSAPPUBLICNET310). Arrastre el objeto MIME
reisen_1.jpg al elemento de UI Image de la jerarqua de elementos de UI.

e) Grabe el parmetro (Strg + S o icono correspondiente).

Consejo:
La imagen tambin puede asignarse al elemento de UI estableciendo la
propiedad del elemento origen en {PUBLIC}/net310/reisen_1.jpg.

Tarea 3
Disponga los elementos de UI de la vista INPUT_VIEW. El container transparente que contiene
los campos de entrada y la imagen deber visualizarse en una fila. Estos dos elementos juntos
debern ocupar todo el ancho de pgina. El container transparente y la imagen debern
ocupar la misma altura. Modifique el color de fondo para visualizar el espacio ocupado por el
container transparente.

1. Corrija el orden de los elementos de UI en la jerarqua de elementos de UI. Ubique el botn


en el container transparente que incrusta el formulario. Al final de este ejercicio, el
container transparente deber estar ubicado a la izquierda de la imagen.
a) Arrastre el botn al container transparente que incrusta el formulario. El botn ser el
ltimo elemento en el container transparente.

2. Ajuste el gestor de layout asignado al ROOTUIELEMENTCONTAINER. En vez del valor por


defecto (FlowLayout) utilice MatrixLayout. Adems, el botn debe visualizarse en una
nueva fila debajo de los campos de formulario.
a) En la propiedad Layout seleccione MatrixLayout.

b) Haga doble clic en BUT_DETAILS.

Nota:
No es necesario corregir las parametrizaciones de layout del container
transparente que contiene el formulario y la imagen. En SAP NW 7.0 EhP2,
el primer subelemento de un container al que se le asigna el gestor de
layout MatrixLayout obtiene automticamente el layout MatrixHeadData.
Todos los otros subelementos obtendrn automticamente el layout
MatrixData. Esto significa que el container transparente y la imagen forman
una fila.

c) Para el botn, establezca la propiedad Layout en FormHeadData. Adems, establezca


colSpan en 2.

Consejo:
Si no se modifica el valor por defecto (-1) para la propiedad colSpan, el
botn se extiende por toda la fila completa.

330 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

3. Modifique el color de fondo del formulario. El rea que ocupa el contenedor transparente
circundante debe mostrarse en gris.
a) Trate las propiedades del container transparente que incrusta los campos de
formulario. En el campo cellBackgroundDesign, seleccione border.

4. La imagen est rodeada de un marco transparente. Por lo tanto, la altura de la imagen sin
el marco no es igual a la altura del container. Elimine este marco.

Nota:
Este paso es opcional.

a) En el campo cellDesign, seleccione padless. Grabe el parmetro.

Tarea 4
Disponga los elementos de UI de la vista OUTPUT_VIEW en filas. El container transparente
que contenga los campos de formulario deber ocupar el ancho completo de pgina.
Visualice el rea ocupada por este container en gris.

1. Corrija el orden de los elementos de UI en la jerarqua de elementos de UI. Al final de esta


tarea, el botn debe visualizarse debajo del container transparente que incrusta el
formulario. Utilice la opcin de men Arriba o Abajo en el men contextual del botn para
convertirlo en el ltimo elemento en la jerarqua de elementos de UI.
a) Haga doble clic en OUTPUT_VIEW.

b) Seleccione FORM_CONTAINER.

c) En el men contextual del BUT_BACK, seleccione EN LA LTIMA POSICIN.

2. Disponga los elementos de UI de la vista usando el gestor RowLayout (no se necesitan


columnas, pero se puede disponer el contenido en filas).
a) Para el ROOTUIELEMENTCONTAINER, establezca la propiedad Layout en RowLayout.

Consejo:
No corrija las parametrizaciones de layout del container transparente que
incrusta el formulario. En SAP NW 7.0 EhP2, el primer subelemento de un
container al que se le asigna el gestor de layout RowLayout obtiene
automticamente el layout RowHeadData. Todos los otros subelementos
obtendrn automticamente el layout RowData.

b) Edite las propiedades del botn. Establezca Layout Data = RowHeadData.

3. Modifique el color de fondo del formulario. El rea que ocupa el contenedor transparente
circundante debe mostrarse en gris.
a) Edite las propiedades del container transparente. Establezca cellBackgroundDesign =
border. Grabe.

Tarea 5
Active su componente Web Dynpro y realice un test.

Copyright . Reservados todos los derechos. 331


Captulo 11: Interfaz de usuario de Web Dynpro

1. Active su componente. Cree una aplicacin Web Dynpro con el mismo nombre que su
componente. Inicie la aplicacin Web Dynpro.
a) Realice este paso como en los ejercicios anteriores.

332 Copyright . Reservados todos los derechos.


Leccin: Definicin del layout de visualizacin

RESUMEN DE LA LECCIN
Ahora podr:
Diferenciar elementos de UI
Definir el layout mediante elementos de container
Aadir elementos de UI al layout

Copyright . Reservados todos los derechos. 333


Captulo 11
Leccin 2
Vinculacin de datos y control del
comportamiento del elemento de UI

RESUMEN DE LA LECCIN
Esta leccin explica cmo controlar el comportamiento del elemento de UI usando la
vinculacin de datos.

Ejemplo empresarial
Quiere controlar dinmicamente el comportamiento del elemento de UI (por ejemplo,
modificar la visibilidad). Para esto necesita manipular las entidades en el contexto en el que
estn vinculadas las propiedades de los elementos de UI. Por este motivo, se requieren los
siguientes conocimientos:
Cmo vincular propiedades de elementos de UI a los atributos de contexto
Cmo controlar mediante programacin las propiedades del elemento de UI

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Vincular las propiedades de elemento de UI a atributos de contexto.
Controlar el comportamiento del elemento de UI

Vinculacin de datos

Figura 175: Vinculacin de datos

Para controlar el comportamiento de los elementos de UI, debe manipular los atributos o
nodos de contexto a los que estn vinculadas las propiedades de los elementos de UI.
Una vez que la propiedad del elemento de UI se asocia a un atributo o nodo de contexto, los
datos de contexto suministran un valor a la propiedad del elemento de UI. Si el usuario puede
actualizar la propiedad del elemento de UI (como la propiedad value de un elemento de UI

334 Copyright . Reservados todos los derechos.


Leccin: Vinculacin de datos y control del comportamiento del elemento de UI

InputField), el contexto se actualizar automticamente con el nuevo valor durante la


siguiente circulacin.
Casi todas las propiedades de un elemento de UI se pueden asociar bien a un nodo de
contexto o bien a un atributo de contexto con el tipo de datos correcto.

Nota:
Una relacin de asociacin solo puede existir entre el contexto y los elementos de
UI del mismo controlador de vistas.

El desarrollador tiene el control total de la apariencia del layout de la pantalla del controlador
de vistas Web Dynpro sin tener que acceder directamente a los objetos de elemento de UI.
Para tener control programtico de cualquier propiedad, debera estar asociado al atributo o
nodo de contexto correspondiente.

Relacin de vinculacin de contexto


La ruta de contexto al nodo o atributo se visualizar como valor de la propiedad. Adems, el
crculo vaco se sustituir por un icono de marca de comprobacin verde. El elemento de UI
de la presentacin preliminar de layout tambin visualizar la ruta de contexto del nodo o
atributo al que est asociado.
El establecimiento de una relacin de vinculacin ordena al renderizador de pantalla Web
Dynpro que obtenga el valor de una propiedad de elemento de UI a partir del atributo o nodo
de contexto al que est asociado.
La vinculacin de datos no est limitada a proporcionar un valor a un InputField. La propiedad
de valor de un elemento de UI se puede proporcionar con datos mediante una relacin de
vinculacin.
ste es el mecanismo mediante el cual un controlador de vistas puede ajustar la apariencia y
el comportamiento de su layout de visualizacin sin tener que acceder nunca a los propios
objetos de elemento de UI.

Copyright . Reservados todos los derechos. 335


Captulo 11: Interfaz de usuario de Web Dynpro

Relacin de vinculacin de datos

Figura 176: Posicionamiento de datos en el layout de la pantalla de vista

La vinculacin de datos es una relacin de doble sentido. Una vez que se ha declarado una
relacin de asociacin, los datos de los nodos y atributos asociados se transportan
automticamente a los elementos de UI correspondientes. Despus de que el usuario haya
interactuado con la pantalla e inicializado un trayecto circular HTTP, los datos nuevos o
modificados de los elementos de UI se transportan de vuelta a los mismos nodos y atributos
del contexto del controlador de vistas. Para cuando el marco Web Dynpro transfiere el control
a su controlador de acciones, el contexto ya tiene la informacin actualizada.
Este proceso de transporte de doble sentido es totalmente automtico y no requiere ninguna
accin por parte del desarrollador de la aplicacin.

Nota:
Los datos ingresados por el usuario se convierten automticamente en formato
interno. Luego el tiempo de ejecucin de Web Dynpro verifica si la clase de datos
coincide con la clase del atributo asociado (incluidos los valores fijos del dominio).
Si se produce un error de verificacin, los datos no se transportan al atributo de
contexto.
Sin embargo, el tiempo de ejecucin de Web Dynpro almacena la entrada del
usuario para poder visualizarla nuevamente (con el mensaje de error de
verificacin visualizada en el prximo conjunto de vistas).

Una vez que la propiedad del elemento de UI se asocia a un atributo o nodo de contexto,
___________ se utilizan para suministrar un valor a la propiedad del elemento de UI.

X A datos de contexto

336 Copyright . Reservados todos los derechos.


Leccin: Vinculacin de datos y control del comportamiento del elemento de UI

X B elemento de UI correspondiente

X C controlador de vistas Web Dynpro

X D mtodos de conexin de controlador

Para definir vinculacin de datos

Los siguientes pasos son los requisitos mnimos para visualizar los datos en la pantalla
del controlador:

1. Crear un nodo o atributo en el contexto del controlador de vistas que contenga los datos.

2. Crear el elemento de UI en el layout de visualizacin.

3. Para todas las propiedades que requieren asociacin de datos, se visualizar un pulsador
con un icono amarillo y un crculo vaco a la derecha de la propiedad. Defina la vinculacin
requerida seleccionando este pulsador. Se visualizar el contexto del controlador de
vistas en un cuadro de dilogo. Todos los nodos o atributos que tengan el tipo correcto
para la asociacin de la propiedad de elemento de UI se visualizarn en l.

4. Seleccione un nodo o atributo apropiado.

Definir las propiedades de elemento de UI de manera esttica

Figura 177: Definicin de las propiedades de elemento de UI de manera esttica

El valor de una propiedad de elemento de UI puede ser de codificacin fija o estar vinculado a
un atributo de contexto con un tipo de datos adecuado. Si un valor de propiedad es de
codificacin fija en la fase de diseo, solo podr modificarse en tiempo de ejecucin mediante
el acceso directo al elemento de UI desde el cdigo fuente del controlador de vistas. Esto solo

Copyright . Reservados todos los derechos. 337


Captulo 11: Interfaz de usuario de Web Dynpro

se puede llevar a cabo mediante el mtodo de conexin wddomodifyview( ), ya que es el nico


mtodo que proporciona una referencia a la jerarqua de elementos de UI.

Atencin:
El acceso directo a la jerarqua de elementos de UI desde el mtodo de un
controlador est considerado un diseo pobre, porque la separacin entre la
lgica de proceso y la UI no est retenida. Evite esta tcnica.

Controlar dinmicamente las propiedades del elemento de UI

Figura 178: Control de las propiedades del elemento de UI

Para controlar mediante programacin el comportamiento de un elemento de UI, cree un


atributo de contexto con un tipo de datos que coincida con la propiedad que desea controlar.
Esto le permite controlar el comportamiento del elemento de UI mediante la modificacin del
valor del atributo relacionado en cualquier mtodo de cualquier controlador que tenga acceso
a este atributo de contexto. No ser necesario que acceda directamente al objeto de
elemento de UI desde el cdigo fuente del controlador.
Para controlar mediante programacin el comportamiento de un elemento de UI, cree un
atributo de contexto con un _____________ que coincida con la propiedad que desea controlar.

X A tipo de datos

X B de objeto

X C vinculacin de datos

338 Copyright . Reservados todos los derechos.


Leccin: Vinculacin de datos y control del comportamiento del elemento de UI

Vinculacin de las propiedades del elemento de UI

Figura 179: Vinculacin de las propiedades del elemento de UI

Una vez creado el atributo de contexto, ste debe asociarse a la propiedad de elemento de UI
apropiada. La figura muestra que la propiedad readOnly de un elemento InputField se ha
asociado a un atributo de contexto booleano.
El valor del atributo de contexto puede ahora manipularse mediante cualquier mtodo de
conexin de controlador o mediante sus mtodos definidos de manera adicional.
Esta tcnica se puede aplicar a la mayora de las propiedades de elemento de UI. Podr
encontrar los tipos de datos apropiados utilizando la etiqueta Tipos del tiempo de ejecucin
Web Dynpro en el cuadro de dilogo que se visualiza al escribir un atributo de contexto.
Las propiedades que suelen vincularse con atributos de contexto son la propiedad primaria
del elemento de UI (por ejemplo la propiedad value para InputField), y las propiedades
enabled, readOnly, state y visible.

Copyright . Reservados todos los derechos. 339


Captulo 11: Interfaz de usuario de Web Dynpro

Vinculacin de las propiedades de elementos de UI (1)

Figura 180: Vinculacin de datos para SAP NW 7.0 (ABAP SPS 12)

En SAP NetWeaver 7.0 SAP_ABAP support package stack 12, cada atributo de contexto
puede vincularse no solo con la propiedad primaria del elemento de UI, sino que tambin con
las propiedades enabled, visible, readOnly y state.
Para permitir este tipo de vinculacin de datos, la ventana de dilogo que se visualiza en el
proceso de vinculacin de datos contiene un grupo adicional de botones de seleccin que
posee dos de estos botones. Si selecciona el botn de seleccin superior, se establece una
vinculacin de datos directa. Si selecciona el botn de seleccin inferior, las propiedades
enabled, visible, readOnly y state pueden vincularse con las correspondientes propiedades de
atributo de contexto.

Textos del Dictionary ABAP


Muchos elementos de UI (TextView, Label, Caption, etc.) visualizan textos en la UI
renderizada.

Se pueden obtener textos a partir del Dictionary ABAP de las siguientes maneras:
La propiedad relacionada con el texto se vincula explcitamente con el elemento de datos,
un campo de estructura o un campo de una tabla transparente.
El elemento de UI se relaciona con un segundo elemento de UI y la propiedad primaria de
este segundo elemento se asocia a un elemento de contexto tipificado con un elemento de
datos. En este caso, la propiedad relativa al texto debe dejarse en blanco para poder
utilizar el texto del diccionario.

Por ejemplo, se relaciona una Label con un InputField y se deja la propiedad Text de la Label
en blanco. El texto de la etiqueta se origina a partir del elemento de datos relacionado con la
propiedad value del InputField.

340 Copyright . Reservados todos los derechos.


Leccin: Vinculacin de datos y control del comportamiento del elemento de UI

RESUMEN DE LA LECCIN
Ahora podr:
Vincular las propiedades de elemento de UI a atributos de contexto.
Controlar el comportamiento del elemento de UI

Copyright . Reservados todos los derechos. 341


Captulo 11
Leccin 3
Utilizacin de elementos de UI compuestos

RESUMEN DE LA LECCIN
Esta leccin explica los elementos de UI compuestos y en particular el UI Table. Adems
muestra cmo realizar la vinculacin de contexto necesaria y describe la propiedad de
seleccin para Tablas.

Ejemplo empresarial
Usted quiere visualizar varios registros para el usuario en la pantalla desde una tabla. Por este
motivo, se requieren los siguientes conocimientos:
Cmo definir elementos de UI compuestos
Cmo realizar la vinculacin de contexto necesaria y utilizar la propiedad de seleccin para
la interfaz de usuario (UI) Table.
Cmo utilizar la pgina de test para elementos de UI

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar elementos de UI compuestos
Definir la vinculacin de contexto para las UI de la tabla
Definir la propiedad de seleccin para las UI de la tabla
Utilizar la pgina de test para elementos de UI

342 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

Elementos de UI compuestos (1)

Figura 181: Elementos de UI compuestos (1)

Algunos elementos de UI, como la UI Table se visualizan en la pantalla como agregaciones de


elementos de UI ms sencillos y bsicos.

Elementos de UI compuestos (2)

Figura 182: Elementos de UI compuestos (2)

Sin los elementos de UI subordinados (o inferiores), un elemento de UI compuesto no es


capaz de visualizar ninguna informacin. Los elementos de UI compuestos, como Group y
Tray, tienen un elemento de UI subordinado Caption obligatorio, pero por lo dems, su

Copyright . Reservados todos los derechos. 343


Captulo 11: Interfaz de usuario de Web Dynpro

estructura est totalmente definida por el usuario. Sin embargo, los elementos de UI
compuestos, como Table y Tree, requieren una estructura subordinada obligatoria ms
compleja.

El elemento de UI Table

Figura 183: El elemento de UI Table

El elemento de UI Table acta como el superior de varios elementos de UI TableColumn, cada


uno de los cuales acta como el superior de una cabecera (implementada por un elemento de
UI Caption) y un editor de celdas. El trmino editor de celdas es una expresin abstracta de
todas las clases de elemento de UI que se pueden utilizar como elementos de celda en una
columna determinada.
El elemento de UI predeterminado para el editor de celdas es el elemento de UI TextView. No
obstante, en funcin del valor de la celda y de si es modificable o no, se pueden utilizar otros
elementos de UI como editores de celdas (por ejemplo, InputField, DropDownByKey,
Checkbox o Button).
El elemento de UI Table es un ejemplo de elemento de UI compuesto. El elemento de UI
TableColumn tambin es un elemento de UI compuesto.

344 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

Vinculacin de contexto para las UI de la tabla

Figura 184: Vinculacin de un elemento de UI Table al contexto

El elemento de UI Table permite visualizar en dos dimensiones los datos de las celdas
dispuestos en filas y columnas. El elemento de UI consta de un rea de cabecera opcional,
cero o ms filas y un rea de pie de pgina. Los elementos de UI Table debe asociarse a un
nodo de contexto de cardinalidad 0..n o 1..n. El elemento de la seleccin de leads del nodo de
contexto se visualiza como una fila resaltada en la pantalla (solo si se visualiza una columna
de seleccin).
El elemento de UI Table, junto con sus elementos subordinados, se puede crear con el
asistente de codificacin Web Dynpro. Si lo construy de esta forma, la vinculacin de datos
necesaria se har automticamente como parte del proceso. No obstante, si el elemento de
UI Table se ha aadido a la jerarqua de elementos manualmente, se utiliza la opcin del men
contextual Crear asociacin para crear la asociacin completa.

Copyright . Reservados todos los derechos. 345


Captulo 11: Interfaz de usuario de Web Dynpro

Elementos de UI TableColumn

Figura 185: Elementos de UI TableColumn

El elemento de UI Table debe incluir al menos un elemento de UI TableColumn. Los elementos


de UI TableColumn son elementos de UI compuestos. Esto significa que deben tener
elementos de UI subordinados para poder funcionar correctamente.
La cabecera de columna se crea mediante un elemento Caption. El texto visualizado en la
cabecera de columna se puede obtener a partir del Dictionary ABAP si la propiedad text del
elemento de UI Caption se ha dejado en blanco y si la propiedad primaria el atributo del
contexto visualizado en esta columna est tipificado con un elemento de datos de Dictionary
ABAP.

346 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

Elementos de UI subordinados de un TableColumn

Figura 186: Definicin de elementos de UI subordinados para un TableColumn

Para presentar la informacin al usuario, un elemento de UI TableColumn debe tener un


elemento de UI subordinado que acte como editor de celdas. Para decidir qu elemento de
UI utilizar, debe aclararse el tipo de interaccin entre el usuario y los datos de cada columna.
A pesar de llamarlo Editor de celdas, el usuario no necesariamente puede modificar los datos.
Si se selecciona un elemento de UI solo de visualizacin como TextView, el elemento de UI no
le permite al usuario modificar los datos. Si selecciona un Button, el valor de celda se
visualizar en el texto del pulsador. En este caso no puede introducir datos, pero puede
disparar un evento de cliente. Si selecciona un InputField en el editor de celdas de tabla, todas
las celdas que aparecen en esa columna se abrirn para la entrada de manera
predeterminada.
El ttulo que aparece como cabecera de columna es opcional, pero si se define siempre es del
tipo Caption.

Copyright . Reservados todos los derechos. 347


Captulo 11: Interfaz de usuario de Web Dynpro

Seleccin de filas de tabla

Figura 187: Seleccin de fila de tabla

Cada vez que seleccione el botn de seleccin de una entrada en tabla de la pantalla
renderizada, se iniciar un trayecto circular (comportamiento predeterminado). Este trayecto
circular ocasiona la modificacin de la seleccin de liderazgo del nodo de contexto al que est
asociada esta tabla.
En la figura, la serie de nodos contiene dos elementos y el usuario selecciona la segunda
entrada en tabla. Esto corresponde al elemento 2 del nodo FLIGHTS, y la seleccin de
liderazgo de este nodo se altera para reflejar la seleccin del usuario.
La cantidad de filas de la tabla iguala la cantidad de elementos en la serie de nodos.
Tambin puede definir una accin Web Dynpro y asociarla al evento onLeadSelect de la tabla.
Esto asegura que cuando el usuario modifica el ndice de seleccin de leads mediante la
seleccin de una fila de tabla, se procesan el mtodo de conexin wddobeforeaction( ), el
mtodo controlador de acciones correspondiente y el mtodo de conexin wddoafteraction( )
de la vista que contiene el elemento de UI de tabla.

348 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

Selecciones mltiples de filas desde una tabla

Figura 188: Seleccin de varias filas desde una tabla

Para permitir a un usuario seleccionar mltiples filas en una tabla (apretando SHIFT o CTRL y
seleccionando las filas necesarias), el nodo de contexto al cual est vinculado el elemento de
UI table DEBE tener una cardinalidad de seleccin de 0...n o 1...n. Antes de esto, el nodo de
contexto al que est vinculado el elemento de UI Table debe tener una cardinalidad de
seleccin de 0..n o 1..n. La parametrizacin de cardinalidad de seleccin predeterminada para
cualquier nodo de contexto es 0..1, lo que significa que se puede seleccionar cero elementos o
un elemento.

La propiedad SelectionMode del elemento de UI Table


El valor predeterminado de la propiedad Table, selectionMode (auto), se puede ajustar a none,
single, multi, singleNoLead y multiNoLead. La parametrizacin influye en la capacidad del
usuario de marcar filas y establece la seleccin de leads:

Las parametrizaciones para la propiedad del elemento de UI Table, SelectionMode, y sus


efectos son los siguientes:
selectionMode = none
No se muestra la columna de seleccin. La fila relacionada con la seleccin de leads no
est resaltada.
selectionMode = single o singleNoLead
Solo se puede seleccionar una fila. Esta es independiente de la propiedad del nodo de
contexto Selection.
selectionMode = singleNoLead o multiNoLead
El ndice de seleccin de leads no se modifica seleccionando filas de tabla.

Copyright . Reservados todos los derechos. 349


Captulo 11: Interfaz de usuario de Web Dynpro

350 Copyright . Reservados todos los derechos.


Captulo 11
Ejercicio 19
Usar el asistente de servicio y visualizar tablas

Ejemplo empresarial
Ha encontrado un mdulo de funciones que planea usar para recuperar los datos que se
usar en el componente Web Dynpro. Usted decide utilizar el asistente de servicio para
ayudarle a crear el contexto y el cdigo basado en el mdulo de funciones.
Modelo: Irrelevante
Solucin: NET310_UI_S2
Tarea 1
Cree un componente Web Dynpro con una vista incrustada en una ventana.

1. Cree el componente Web Dynpro ZNET310_UI2_## que contiene una vista


(DISPLAY_VIEW), la cual est incrustada en una ventana (MAIN_WINDOW).

Tarea 2
Cree una llamada de servicio del mdulo de funciones BAPI_FLIGHT_GETLIST en el
controlador de componentes. Esto crea un mtodo que encapsular la llamada BAPI.
Adems, los parmetros de interfaz de la BAPI se deben utilizar para crear los nodos y
atributos del contexto del controlador de componentes.

1. Cree una llamada de servicio para el mdulo de funciones BAPI_FLIGHT_GETLIST.


Defina el mtodo de servicio y los nodos y atributos de contexto relacionados en el
controlador de componentes. En Adaptar contexto, seleccione Contexto (Nodo/Atributo)
en la columna Tipo de objeto de los parmetros DESTINATION_FROM, DESTINATION_TO
y FLIGHT_LIST. Cuando se le pida el nombre del mtodo de servicio, acepte el nombre por
defecto (EXECUTE_BAPI_FLIGHT_GETLIST).

2. Qu entidades del componente se han creado?

3. Cules son las cardinalidades de los nodos DESTINATION_FROM y FLIGHT_LIST? Por


qu son diferentes?

Tarea 3
Copie el nodo BAPI_FLIGHT_GETLIST del contexto de la vista y defina la asignacin de
contexto.

Copyright . Reservados todos los derechos. 351


Captulo 11: Interfaz de usuario de Web Dynpro

1. Copie el nodo BAPI_FLIGHT_GETLIST del contexto del controlador de componentes en el


contexto de la vista y defina la asignacin de contexto.

Tarea 4
En el layout, cree dos grupos en una fila. Cada grupo ocupa el 50% del ancho total de la
pgina. El primer grupo tiene que incrustar un formulario que contenga campos de entrada
para introducir la ciudad de salida y el pas de salida. El segundo grupo tiene que incrustar un
formulario que contenga campos de entrada para introducir la ciudad de destino y el pas de
destino.

1. Cree un grupo como un subelemento para el ROOTUIELEMENTCONTAINER. Nombre el


grupo GROUP_DEPA. Visualice Salida en la cabecera del grupo.

2. Cree el segundo grupo. Nombre el grupo GROUP_DEST. Visualice Destino en la cabecera


del grupo.

3. Utilice el asistente de codificacin Web Dynpro para crear un formulario que contenga
campos de entrada para introducir la ciudad de salida y el pas de salida en el grupo
GROUP_DEPA. Disponga los campos de formulario usando el gestor de layout
MatrixLayout.

4. Repita el ltimo paso para el grupo GROUP_DEST. Cree un formulario que contenga
campos de entrada para introducir la ciudad de destino y el pas de destino.

5. Ajuste las propiedades de los elementos de UI. Cada grupo debe ocupar el 50% del ancho
total de la pgina. Utilice un matrix layout para la pgina a fin de definir dos columnas.

Tarea 5
Se define una tabla que visualiza los vuelos relacionados debajo de los dos formularios que
cre. La tabla debe ocupar todo el ancho de la pgina y debe visualizar 10 filas. Suprima la
columna de seleccin.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla que visualice los
vuelos almacenados en el nodo FLIGHT_LIST. La tabla debe visualizar toda la informacin,
salvo el ID de transportista y el cdigo ISO de la moneda.

2. Ajuste las propiedades del elemento de UI. La tabla debe ocupar todo el ancho de la
pgina y debe visualizar 10 filas. Suprima la columna de seleccin.

Tarea 6
Defina un pulsador que llame el mtodo de servicio definido en el controlador de
componentes. Ubique el pulsador en una nueva fila entre los grupos y la tabla.

1. Defina el pulsador.

2. Adapte la jerarqua de elementos de UI. Al final de esta tarea, el botn debe visualizarse en
una nueva fila entre los grupos y la tabla.

3. Ajuste las propiedades del pulsador. Coloque el pulsador como el primer elemento en una
nueva fila y defina el texto que debe visualizarse. Asigne una accin al pulsador
(DISPLAY_DETAILS.

352 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

4. Implemente el cdigo fuente del mtodo controlador de acciones. Llame al mtodo de


servicio.

Tarea 7
Pruebe su aplicacin.

1. Active su componente. Cree una aplicacin para acceder a su componente para poder
probarlo.

Copyright . Reservados todos los derechos. 353


Captulo 11
Solucin 19
Usar el asistente de servicio y visualizar tablas

Ejemplo empresarial
Ha encontrado un mdulo de funciones que planea usar para recuperar los datos que se
usar en el componente Web Dynpro. Usted decide utilizar el asistente de servicio para
ayudarle a crear el contexto y el cdigo basado en el mdulo de funciones.
Modelo: Irrelevante
Solucin: NET310_UI_S2
Tarea 1
Cree un componente Web Dynpro con una vista incrustada en una ventana.

1. Cree el componente Web Dynpro ZNET310_UI2_## que contiene una vista


(DISPLAY_VIEW), la cual est incrustada en una ventana (MAIN_WINDOW).
a) Realice este paso como en los ejercicios anteriores.

Tarea 2
Cree una llamada de servicio del mdulo de funciones BAPI_FLIGHT_GETLIST en el
controlador de componentes. Esto crea un mtodo que encapsular la llamada BAPI.
Adems, los parmetros de interfaz de la BAPI se deben utilizar para crear los nodos y
atributos del contexto del controlador de componentes.

1. Cree una llamada de servicio para el mdulo de funciones BAPI_FLIGHT_GETLIST.


Defina el mtodo de servicio y los nodos y atributos de contexto relacionados en el
controlador de componentes. En Adaptar contexto, seleccione Contexto (Nodo/Atributo)
en la columna Tipo de objeto de los parmetros DESTINATION_FROM, DESTINATION_TO
y FLIGHT_LIST. Cuando se le pida el nombre del mtodo de servicio, acepte el nombre por
defecto (EXECUTE_BAPI_FLIGHT_GETLIST).
a) En la pantalla Explorador Web Dynpro: Modificar componente, en el men contextual
de ZNET310_UI2_##, seleccione CrearLlamada de servicio.

b) En la ventana de dilogo Asistente Web Dynpro: Inicio, seleccione Continuar.

c) Seleccione Utilizar controlador existente, seleccione el controlador de componentes de


su componente y seleccione Continuar.

d) En la ventana de dilogo Asistente Dynpro: Seleccionar servicio, introduzca


BAPI_FLIGHT_GETLIST para Mdulo de funciones y seleccione Continuar.

e) En la ventana de dilogo Asistente Dynpro: Adaptar nombre del nodo, seleccione


Contexto (Nodo/Atributo) en la columna Tipo de objeto de los parmetros de contexto
de controlador DESTINATION_FROM, DESTINATION_TO y FLIGHT_LIST. Seleccione
Continuar.

354 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

f) En la ventana de dilogo Asistente Dynpro: Especificar nombre de mtodo, seleccione


Continuar.

g) En la ventana de dilogo A sistente Dynpro: Generar controlador, seleccione


Completar.

2. Qu entidades del componente se han creado?

El nodo de contexto BAPI_FLIGHT_GETLIST con varios subnodos para los parmetros


IMPORTING y TABLES seleccionados del mdulo de funciones El mtodo
EXECUTE_BAPI_FLIGHT_GETLIST( ) en el controlador de componentes, que encapsula la
llamada del mdulo de funciones. Se crean los atributos del controlador para los
parmetros AIRLINE y MAX_ROWS del mdulo de funciones.

3. Cules son las cardinalidades de los nodos DESTINATION_FROM y FLIGHT_LIST? Por


qu son diferentes?

La cardinalidad del nodo DESTINATION_FROM es 1..1 y la del nodo FLIGHTLIST es 0..n.


Son diferentes porque el parmetro DESTINATION_FROM es una estructura mientras que
el parmetro FLIGHT_LIST es una tabla interna.

Tarea 3
Copie el nodo BAPI_FLIGHT_GETLIST del contexto de la vista y defina la asignacin de
contexto.

1. Copie el nodo BAPI_FLIGHT_GETLIST del contexto del controlador de componentes en el


contexto de la vista y defina la asignacin de contexto.
a) En la pantalla Explorador Web Dynpro: Modificar controlador de ZNET310_UI2_##,
haga doble clic en OUTPUT_VIEW y seleccione la etiqueta Contexto.

b) En el contexto COMPONENTCONTROLLER, arrastre el nodo BAPI_FLIGHT_GETLIST en


el contexto del controlador de la vista y sultelo en el nodo raz del contexto CONTEXT.

c) Grabe las entradas.

Tarea 4
En el layout, cree dos grupos en una fila. Cada grupo ocupa el 50% del ancho total de la
pgina. El primer grupo tiene que incrustar un formulario que contenga campos de entrada
para introducir la ciudad de salida y el pas de salida. El segundo grupo tiene que incrustar un
formulario que contenga campos de entrada para introducir la ciudad de destino y el pas de
destino.

1. Cree un grupo como un subelemento para el ROOTUIELEMENTCONTAINER. Nombre el


grupo GROUP_DEPA. Visualice Salida en la cabecera del grupo.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, para la
vista DISPLAY_VIEW, seleccione la etiqueta Layout.

b) En el men contextual del ROOTUIELEMENTCONTAINER, seleccione Insertar elemento


e introduzca los siguientes datos:

Copyright . Reservados todos los derechos. 355


Captulo 11: Interfaz de usuario de Web Dynpro

Nombre del campo Valor


ID GROUP_DEPA

TYP Grupo

c) Seleccione Continuar.

d) Para el texto de propiedad, indique Salida en el campo Valor.

e) Grabe las entradas.

2. Cree el segundo grupo. Nombre el grupo GROUP_DEST. Visualice Destino en la cabecera


del grupo.
a) Realice este paso como se describe en el paso anterior.

3. Utilice el asistente de codificacin Web Dynpro para crear un formulario que contenga
campos de entrada para introducir la ciudad de salida y el pas de salida en el grupo
GROUP_DEPA. Disponga los campos de formulario usando el gestor de layout
MatrixLayout.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, para la
vista DISPLAY_VIEW, en la etiqueta Layout seleccione el elemento GROUP_DEPA.

b) Seleccione el pulsador Asistente de codificacin Web Dynpro.

c) En la ventana de dilogo Galera de modelos, haga doble clic en el modelo Formulario.

d) En la ventana de dilogo Crear elementos de formulario para el container


GROUP_DEPA, seleccione el pulsador Contexto.

e) En la ventana de dilogo Seleccionar elemento de contenido, haga doble clic en


DESTINATION_FROM.

f) En la ventana de dilogo Crear elementos de formulario para el container


GROUP_DEPA, limpie la casilla de seleccin en la columna Vinculacin de los atributos
AIRPORTID y COUNTR_ISO.

g) Introduzca MatrixLayout en el campo Layout de container nuevo y seleccione


Continuar.

4. Repita el ltimo paso para el grupo GROUP_DEST. Cree un formulario que contenga
campos de entrada para introducir la ciudad de destino y el pas de destino.
a) Realice este paso como se describe en los pasos anteriores usando el nodo
DESTINATION_TO para la informacin de destino.

5. Ajuste las propiedades de los elementos de UI. Cada grupo debe ocupar el 50% del ancho
total de la pgina. Utilice un matrix layout para la pgina a fin de definir dos columnas.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_## para
ROOTUIELEMENTCONTAINER, introduzca los siguientes datos:
Nombre del campo Valor
Layout MatrixLayout

ancho 100%

356 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

b) Seleccione la casilla de seleccin para la propiedad stretchedHorizontally.

c) Para el grupo GROUP_DEPA, introduzca los siguientes datos:


Nombre del campo Valor
ancho 100%

ancho (LayoutData) 50%

d) Para el grupo GROUP_DEST, introduzca los siguientes datos:


Nombre del campo Valor
ancho 100%

ancho (LayoutData) 50%

e) Grabe las entradas.

Tarea 5
Se define una tabla que visualiza los vuelos relacionados debajo de los dos formularios que
cre. La tabla debe ocupar todo el ancho de la pgina y debe visualizar 10 filas. Suprima la
columna de seleccin.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla que visualice los
vuelos almacenados en el nodo FLIGHT_LIST. La tabla debe visualizar toda la informacin,
salvo el ID de transportista y el cdigo ISO de la moneda.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, para la
vista DISPLAY_VIEW, en la etiqueta Layout seleccione ROOTUIELEMENTCONTAINER

b) Seleccione el pulsador Asistente de codificacin Web Dynpro.

c) En la ventana de dilogo Galera de modelos, haga doble clic en el modelo Tabla.

d) En la ventana de dilogo Crear vinculacin de contexto para la tabla "TABLE",


seleccione el pulsador Contexto.

e) En la ventana de dilogo Seleccionar elemento de contexto, haga doble clic en


FLIGHT_LIST.

f) En la ventana de dilogo Crear vinculacin de contexto para la tabla "TABLE", limpie la


casilla de seleccin en la columna Vinculacin de los atributos AIRLINEID y CURR_ISO.

g) Seleccione Continuar.

2. Ajuste las propiedades del elemento de UI. La tabla debe ocupar todo el ancho de la
pgina y debe visualizar 10 filas. Suprima la columna de seleccin.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_## para
ROOTUIELEMENTCONTAINERTABLE, introduzca los siguientes datos:
Nombre del campo Valor
LayoutData MatrixHeadData

Width 100%

colSpan 2

Copyright . Reservados todos los derechos. 357


Captulo 11: Interfaz de usuario de Web Dynpro

Nombre del campo Valor


selectionMode ninguno

visibleRowCount 10

b) Grabe las entradas.

Tarea 6
Defina un pulsador que llame el mtodo de servicio definido en el controlador de
componentes. Ubique el pulsador en una nueva fila entre los grupos y la tabla.

1. Defina el pulsador.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, para la
vista DISPLAY_VIEW, en el men contextual de ROOTUIELEMENTCONTAINER
seleccione InsertElement

b) En la ventana de dilogo Crear elemento, indique los datos siguientes:


Nombre del campo Valor
ID BUT_CALL_SERVICE

Typ Botn

c) Seleccione Continuar.

2. Adapte la jerarqua de elementos de UI. Al final de esta tarea, el botn debe visualizarse en
una nueva fila entre los grupos y la tabla.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, desde la
jerarqua de elementos, arrastre el botn BUT_CALL_SERVICE y sultelo en TABLE. De
esta manera, se intercambiarn las posiciones de estos dos elementos.

3. Ajuste las propiedades del pulsador. Coloque el pulsador como el primer elemento en una
nueva fila y defina el texto que debe visualizarse. Asigne una accin al pulsador
(DISPLAY_DETAILS.
a) En las propiedades del botn, indique los datos siguientes:
Nombre del campo Valor
Datos de Layout MatrixHeadData

Texto Visualizar vuelos

b) En la fila onAction, seleccione el pulsador Crear.

c) En la ventana de dilogo Crear accin, indique los datos siguientes:


Nombre del campo Valor
Medida DISPLAY_DETAILS

Descripcin visualizar botn de detalles

d) Seleccione Continuar.

358 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

4. Implemente el cdigo fuente del mtodo controlador de acciones. Llame al mtodo de


servicio.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_UI2_##, seleccione
la etiqueta Acciones.

b) En la columna Programa de control de eventos, haga doble clic en el mtodo


ONACTIONDISPLAY_DETAILS. Esto muestra el cdigo fuente del mtodo.

c) Seleccione el pulsador Asistente de codificacin Web Dynpro.

d) En la ventana de dilogo Estructura de la sentencia Web Dynpro, seleccione la etiqueta


General.

e) Seleccione Llamada de mtodo en controlador utilizado e introduzca los siguientes


datos:
Nombre del campo Valor
Nombre de componente ZNET310_UI2_##

Nombre de controlador COMPONENTCONTROLLER

Nombre de mtodo EXECUTE_BAPI_FLIGHT_GETLIST

f) Seleccione Continuar.

g) Grabe las entradas.

Tarea 7
Pruebe su aplicacin.

1. Active su componente. Cree una aplicacin para acceder a su componente para poder
probarlo.
a) Realice este paso como en los ejercicios anteriores.

Copyright . Reservados todos los derechos. 359


Captulo 11: Interfaz de usuario de Web Dynpro

Pgina de test para elementos de UI

Figura 189: Pgina de test para elementos de UI

La aplicacin Web Dynpro WDR_TEST_UI_ELEMENTS permite investigar y probar la funcin


de los elementos de UI disponibles. WDR_TEST_UI_ELEMENTS se proporciona con todos los
sistemas que contienen el marco Web Dynpro.

360 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de elementos de UI compuestos

RESUMEN DE LA LECCIN
Ahora podr:
Explicar elementos de UI compuestos
Definir la vinculacin de contexto para las UI de la tabla
Definir la propiedad de seleccin para las UI de la tabla
Utilizar la pgina de test para elementos de UI

Copyright . Reservados todos los derechos. 361


Captulo 11: Interfaz de usuario de Web Dynpro

362 Copyright . Reservados todos los derechos.


Captulo 11

Evaluacin de la formacin

1. Un elemento de UI es cualquier entidad grfica que ocupe una posicin dentro de un


layout de visualizacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. La categora __________ contiene elementos que se emplean para visualizar textos o


introducir literales.
Seleccione la respuesta correcta.

X A text

X B action

X C selection

X D complex

3. Usted utiliza el editor de vistas en el controlador personalizado para tratar el layout de


vista.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Una vez que la propiedad del elemento de UI se asocia a un atributo o nodo de contexto,
___________ se utilizan para suministrar un valor a la propiedad del elemento de UI.
Seleccione la respuesta correcta.

X A datos de contexto

X B elemento de UI correspondiente

X C controlador de vistas Web Dynpro

X D mtodos de conexin de controlador

Copyright . Reservados todos los derechos. 363


Captulo 11: Evaluacin de la formacin

5. Para controlar mediante programacin el comportamiento de un elemento de UI, cree un


atributo de contexto con un _____________ que coincida con la propiedad que desea
controlar.
Seleccione la respuesta correcta.

X A tipo de datos

X B de objeto

X C vinculacin de datos

6. El elemento de UI Table permite visualizar ____________ los datos de las celdas dispuestos
en filas y columnas.
Seleccione la respuesta correcta.

X A en dos dimensiones

X B en una dimensin

X C en tres dimensiones

X D en cuatro dimensiones

7. Cul es la cardinalidad de seleccin predeterminada para cualquier nodo de contexto?


Seleccione la respuesta correcta.

X A 0

X B 1

X C 0..1

X D 1..0

364 Copyright . Reservados todos los derechos.


Captulo 11

Respuestas a la Evaluacin de la formacin

1. Un elemento de UI es cualquier entidad grfica que ocupe una posicin dentro de un


layout de visualizacin.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

2. La categora __________ contiene elementos que se emplean para visualizar textos o


introducir literales.
Seleccione la respuesta correcta.

X A text

X B action

X C selection

X D complex

3. Usted utiliza el editor de vistas en el controlador personalizado para tratar el layout de


vista.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 365


Captulo 11: Respuestas a la Evaluacin de la formacin

4. Una vez que la propiedad del elemento de UI se asocia a un atributo o nodo de contexto,
___________ se utilizan para suministrar un valor a la propiedad del elemento de UI.
Seleccione la respuesta correcta.

X A datos de contexto

X B elemento de UI correspondiente

X C controlador de vistas Web Dynpro

X D mtodos de conexin de controlador

5. Para controlar mediante programacin el comportamiento de un elemento de UI, cree un


atributo de contexto con un _____________ que coincida con la propiedad que desea
controlar.
Seleccione la respuesta correcta.

X A tipo de datos

X B de objeto

X C vinculacin de datos

6. El elemento de UI Table permite visualizar ____________ los datos de las celdas dispuestos
en filas y columnas.
Seleccione la respuesta correcta.

X A en dos dimensiones

X B en una dimensin

X C en tres dimensiones

X D en cuatro dimensiones

7. Cul es la cardinalidad de seleccin predeterminada para cualquier nodo de contexto?


Seleccione la respuesta correcta.

X A 0

X B 1

X C 0..1

X D 1..0

366 Copyright . Reservados todos los derechos.


CAPTULO 12 Programacin de contextos y
controladores

Leccin 1
Comprensin de mtodos y atributos de controlador 368

Leccin 2
Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin 379
Ejercicio 20: Acceso al contexto en tiempo de ejecucin 389

Leccin 3
Adicin de elementos nuevos a un nodo de contexto 394
Ejercicio 21: Visualizar datos en masa mediante tablas 401

Leccin 4
Implementacin de las funciones de suministro 409
Ejercicio 22: Implementar las funciones de suministro 411

OBJETIVOS DEL CAPTULO

Explicar cmo se procesan los mtodos de conexin


Implementar mtodos de controlador
Utilizar atributos de controlador
Acceder al contexto de un controlador
Acceder a los elementos de nodo de contexto
Agregar elementos nuevos a un nodo de contexto
Utilizar funciones de suministro

Copyright . Reservados todos los derechos. 367


Captulo 12
Leccin 1
Comprensin de mtodos y atributos de
controlador

RESUMEN DE LA LECCIN
Esta leccin explica los diferentes mtodos de conexin y el orden en el que son procesados.
Tambin describe cmo se pueden crear mtodos y atributos de controlador.

Ejemplo empresarial
Ya sabe cmo crear un componente Web Dynpro, pero hasta ahora, ha trabajado
exclusivamente con entidades que se pueden crear de manera declarativa. Ahora necesita
implementar la lgica de proceso (incluido el acceso a la lgica back end) mediante la
escritura de cdigo fuente ABAP en mtodos de controlador. Por este motivo, se requieren
los siguientes conocimientos:
Una buena comprensin del modelo de fases y los mtodos de conexin
Una buena comprensin de los mtodos de controlador adicionales
Una buena comprensin de los atributos de controlador

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Explicar cmo se procesan los mtodos de conexin
Implementar mtodos de controlador
Utilizar atributos de controlador

368 Copyright . Reservados todos los derechos.


Leccin: Comprensin de mtodos y atributos de controlador

Entidades de controladores

Figura 190: Mtodos de controlador

Cada controlador Web Dynpro es una clase ABAP local individual que se define en la clase
ABAP global relacionada con el componente Web Dynpro. La definicin de estas clases se
genera automticamente cuando se declara un componente o un controlador nuevo.
El cdigo fuente que implementa a estos controladores se genera automticamente. Cada
controlador proporciona una cantidad de mtodos predefinidos que se llaman mtodos de
conexin. Los mtodos de conexin se llaman en tiempo de ejecucin Web Dynpro en un
orden predefinido.
Cuando se crea un controlador, estos mtodos estn vacos, pero luego el desarrollador
puede aadirles un cdigo segn sea necesario.

Adems de los mtodos de conexin, el desarrollador puede definir los siguientes tipos
de mtodos:
Mtodos ordinarios
Mtodos de programa de control de eventos
Funciones de suministro

La clase de controlador se genera a partir de todos los mtodos de controlador, mtodos de


conexin y mtodos definidos por el usuario, cada vez que se activa el controlador.
ABAP Workbench le permite introducir cdigo fuente solo en los mtodos del controlador. La
clase de controlador generada no es accesible.

Copyright . Reservados todos los derechos. 369


Captulo 12: Programacin de contextos y controladores

Mtodos de conexin estndar para todos los controladores

Figura 191: Mtodos de conexin estndar para todos los controladores

Todos los tipos de controladores ofrecen los siguientes mtodos de conexin estndar:
wddoinit( )
Este es el primer mtodo procesado en la duracin del controlador. Solo se le llama una
vez en el ciclo de vida del controlador. Todo su cdigo de inicializacin deber ir dentro
de este mtodo, ya que a este mtodo se le llama inmediatamente una vez instanciado el
controlador.
wddoexit()
Este es el ltimo mtodo procesado al final del ciclo de vida de un controlador. Todo su
cdigo de depuracin deber ir dentro de este mtodo.
Hay disponibles mtodos de conexin adicionales en funcin del tipo de controlador.

370 Copyright . Reservados todos los derechos.


Leccin: Comprensin de mtodos y atributos de controlador

Mtodos de conexin estndar: Controlador de componentes

Figura 192: Mtodos de conexin estndar: Controlador de componentes

El controlador de componentes posee los siguientes mtodos de conexin estndar


adicionales:
wddobeforenavigation()
Cuando se emite un evento de cliente, el mtodo de acciones correspondiente se procesa
en el controlador de vistas. Se llama al mtodo wddobeforenavigation( ) despus de que se
haya procesado el mtodo de acciones y justo antes de que el marco Web Dynpro procese
los eventos de la cola de navegacin.
En aplicaciones Web Dynpro complejas, puede que sea necesario validar los datos desde
varios componentes antes de poder pasar al siguiente paso del proceso empresarial. Este
mtodo se puede utilizar con este objetivo.
wddopostprocessing()
Este es el ltimo mtodo de controlador que se procesa antes de enviar la interfaz de
usuario (UI) al cliente.
wddoapplicationstatechange()
Este mtodo se procesa cada vez que la aplicacin se suspende o reanuda. La suspensin
de una aplicacin Web Dynpro se produce si se activa un punto de conexin de interrupcin
de la ventana. Este mtodo puede aplicarse para iniciar una nueva aplicacin sin salir de la
aplicacin Web Dynpro actual.
La aplicacin Web Dynpro deshabilitada temporalmente se reanuda automticamente si
se ha detenido la segunda aplicacin. La aplicacin Web Dynpro interrumpida se reanuda
ingresando a la ventana a travs de un punto de conexin de reanudacin. Si se crea un
punto de conexin de interrupcin para la ventana, debe crearse un punto de conexin de
reanudacin.

Copyright . Reservados todos los derechos. 371


Captulo 12: Programacin de contextos y controladores

Mtodos de conexin estndar del controlador de vistas

Figura 193: Mtodos de conexin estndar: Controlador de vistas

El controlador de vistas posee los siguientes mtodos de conexin adicionales:


wddobeforeaction()
Este mtodo suele contener el cdigo fuente relacionado con las verificaciones de entrada.
Luego de que el usuario haya emitido un evento de cliente vinculado con una accin, los
primeros mtodos que se procesan en la aplicacin Web Dynpro son los mtodos
wddobeforeaction( ) de todos los controladores de vistas del conjunto de vistas que se
renderiz previamente. Esto ocurre incluso antes de que el mtodo de controlador de
acciones relacionado con el evento de cliente se procese.
wddoafteraction()
Este mtodo puede emplearse para modularizar el cdigo fuente relacionado con el
control de acciones.
Luego de procesar una mtodo controlador de acciones, se procesan los mtodos
wddoafteraction( ) de todos los controladores de vistas del conjunto de vistas que se
renderiz previamente.
wddomodifyview()
Este evento se puede utilizar para manipular la jerarqua de elementos de UI
dinmicamente.
El nico mtodo que permite el acceso a la jerarqua de elementos de UI es el mtodo
wddomodifyview( ) de la vista. El parmetro de interfaz VIEW es una referencia a la
jerarqua de elementos de UI. Se puede utilizar el parmetro FIRST_TIME para averiguar si
este mtodo se ha procesado anteriormente en el ciclo de vida del controlador de vistas.
wddooncontextmenu()

372 Copyright . Reservados todos los derechos.


Leccin: Comprensin de mtodos y atributos de controlador

Este mtodo se procesa cada vez que el usuario hace clic con el botn derecho del ratn
sobre cualquier elemento de UI definido en el layout de visualizacin relacionado.
A partir del cdigo fuente de este mtodo, pueden instanciarse los menes contextuales
definidos estticamente y pueden definirse los menes contextuales nuevos. Estos
menes contextuales pueden asignarse a cualquier elemento de UI definido en la jerarqua
de vista. Esto permite extender el men contextual al que se accede con un clic del botn
derecho del ratn para incluir las funciones especficas de la aplicacin.

Mtodos de conexin especial para controladores de ventanas

Los mtodos de conexin especial para controladores de ventanas son los siguientes:
wddoonopen( )
Este mtodo de conexin especial se procesa si la ventana se visualiza como una ventana
de dilogo, justo antes de que sta se abra.
wddoonclose( )
Este mtodo de conexin especial se procesa si la ventana se visualiza como una ventana
de dilogo, justo antes de que sta se cierre.

Nota:
Estos dos mtodos de conexin especial pueden contener el cdigo que solo debe
procesarse si la ventana se visualiza como una ventana de dilogo (por ejemplo,
definicin de botones que se visualizan en el marco de la ventana de dilogo).

Modelo fase (conceptos bsicos)

Figura 194: Modelo de fase (caso simple)

Copyright . Reservados todos los derechos. 373


Captulo 12: Programacin de contextos y controladores

El modelo fase describe el orden en el que se procesan los mtodos de controlador. Segn la
complejidad de la aplicacin Web Dynpro (si hay subcomponentes involucrados y si hay
vistas anidadas usando ViewContainerUIElements) el modelo de fase tambin puede ser
complejo. Adems, los mensajes de error afectan el modelo de fase.

Nota:
Esta seccin describe la situacin ms simple con un componente, una vista y sin
situaciones de error.

Inicio de la aplicacin Web Dynpro

Cuando se inicia una aplicacin Web Dynpro, los controladores se procesan de la


siguiente manera:
Se instancian todos los controladores necesarios para la primera visualizacin. Esto
significa que los mtodos wddoinit( ) se procesan para el controlador de componentes, el
controlador de ventanas y el controlador de vistas.
Se procesa el mtodo del punto de navegacin de entrada de la vista de interfaz
relacionada con la aplicacin. Por defecto, se utiliza el punto de navegacin Por defecto.
Esto significa que se procesa el mtodo handledefault( ).
Se procesa el mtodo del controlador de componente wddobeforenavigation( ).
Se procesa el mtodo del controlador de vista wddomodifyview( ).
Se procesa el mtodo del controlador de componente wddopostprocessing( ).

Una interaccin del usuario normalmente activa la siguiente solicitud. Para algunos
elementos de UI (por ejemplo, pulsador) es necesario que una accin est vinculada al evento
del cliente. Sin embargo, algunas interacciones del usuario llevan a una solicitud que tiene que
vincular una accin a un evento del cliente relacionado (por ejemplo., desplazarse en una
tabla y seleccionar una nueva fila de tabla).

El modelo fase para una solicitud desencadenada por la interaccin de un usuario se


puede describir de la siguiente manera:
Si el evento del cliente est vinculado a una accin, se procesan los mtodos
wddobeforeaction( ), onaction<ACTION>( ) y wddoafteraction( ). En el controlador de
componente, se procesa el mtodo wddobeforenavigation( ).
Si se activa un punto de navegacin de salida y se define en la ventana un enlace de
navegacin a un punto de navegacin de entrada, se instancia la vista relacionada al punto
de navegacin de entrada y se procesa el mtodo wddoinit( ). Se procesa el mtodo de
punto de navegacin de entrada handle<PLUG>( ) para esta vista.
Si la duracin de la vista anterior est limitada, se procesa el mtodo wddoexit( ) para la
vista anterior.
En el controlador de vista, se procesa el mtodo wddomodifyview( ) para la siguiente vista.
En el controlador de componente, se procesa el mtodo wddopostprocessing( ).

374 Copyright . Reservados todos los derechos.


Leccin: Comprensin de mtodos y atributos de controlador

Mtodos de controlador adicionales

Figura 195: Mtodos de controlador adicionales

Puede crear mtodos adicionales para todos los controladores mediante la declaracin del
nombre y los parmetros del mtodo en la etiqueta Mtodos de la ventana del editor de
controladores. Para definir un mtodo ordinario, seleccione Tipo de mtodo = Mtodo. Si
selecciona Tipo de mtodo = Programa de control de eventos, se crear un mtodo de
programa de control de eventos. Este mtodo de controlador de eventos se puede registrar
estticamente (en la columna Evento) en cualquier evento activado en un controlador que se
define como Controlador utilizado en la etiqueta Propiedades.
Por ltimo, se puede establecer Tipo de mtodo = Funcin de suministro para que defina
mtodos que se puedan vincular a nodos de contexto (propiedad Funcin de suministro).

El framework de Web Dynpro puede llamar a los mtodos que se pueden vincular a nodos
de contexto en las siguientes condiciones:
Se accede a uno o ms elementos del nodo de contexto y el nodo de contexto an no est
rellenado o es inicial.
El nodo de contexto ha sido invalidado en un paso anterior.

Consejo:
No se puede llamar explcitamente a las funciones de suministro desde el cdigo
fuente de los mtodos de controlador. Solo el tiempo de ejecucin Web Dynpro
puede llamar a esta clase de mtodo.

Definiciones de mtodo de controlador


Cuando hace doble clic en el nombre del mtodo, puede definir la firma y el cdigo fuente del
mtodo.

Copyright . Reservados todos los derechos. 375


Captulo 12: Programacin de contextos y controladores

Todos los mtodos son pblicos y cualquier otro controlador del mismo componente puede
utilizarlos (excepto mtodos definidos en un controlador de vistas, que solo pueden ser
llamados dentro de la propia vista). Como condicin previa, el controlador que llama al
mtodo debe definir una relacin de utilizacin con el controlador al que pertenecen los
mtodos. El cdigo fuente ABAP para llamar a un mtodo en el controlador utilizado puede
generarse mediante el asistente de codificacin Web Dynpro.
Si el indicador Interfaz est establecido para un mtodo de controlador de componente
definido por el usuario, este mtodo aparece en la interfaz del componente. Como resultado,
este mtodo tambin se hace visible a otros componentes.

Atributos de controlador

Figura 196: Atributos de controlador estndar

Cada controlador es una clase ABAP local independiente con mtodos y atributos
predefinidos y definidos por el usuario.
Para cada controlador, se predefinen al menos dos atributos. La visibilidad de estos atributos
est limitada a los mtodos del mismo controlador.

Un controlador tiene los siguientes atributos estndares:


WD_THIS
Este es una autorreferencia a la interfaz del controlador local. Este atributo se distingue de
la autorreferencia ABAP estndar ME, que no deber utilizarse en el cdigo fuente de
ningn controlador. WD_THIS es una referencia a la interfaz del controlador actual,
IF_<nombre de controlador>, y representa todas las funcionalidades implementadas en la
clase generada. Tambin le da acceso a funcionalidades Web Dynpro estndar, como la
validacin.
WD_CONTEXT
Este es una referencia al nodo raz de contexto del controlador y, por consiguiente, a todo
el contexto. Todo acceso al contexto del controlador se inicia con esta referencia.

376 Copyright . Reservados todos los derechos.


Leccin: Comprensin de mtodos y atributos de controlador

Atributos adicionales
Si el controlador de componentes se declara como controlador utilizado en la etiqueta
Propiedades de cualquier otro controlador, se crear automticamente un atributo adicional,
WD_COMP_CONTROLLER, para el controlador que ha declarado la utilizacin:
WD_COMP_CONTROLLER es una referencia al controlador de componentes. Con esta
referencia, se puede acceder a todos los atributos pblicos y mtodos del controlador de
componente (wd_comp_controller-><meth>, en el que <meth> es un marcador de posicin
del nombre del mtodo o (wd_comp_controller-><attr>, en el que <attr> es un marcador de
posicin del nombre del atributo).
Esta referencia no est disponible para todos los dems controladores, incluso si estn
declarados como controladores utilizados. Sin embargo, esto no significa que los mtodos
definidos por el usuario y los atributos pblicos no estn disponibles. En vez de eso, significa
que se debe determinar primero la referencia. Para acceder a la interfaz del controlador local
de un controlador usado <ctrl>, utilice la siguiente sentencia:
DATA: lo_ctrl TYPE REF TO ig_<ctrl> .
lo_ctrl = wd_this->get_<ctrl>_ctr( ).

Atributos definidos por el usuario

Figura 197: Mtodos de controlador y atributos de controlador definidos por el usuario

En la etiqueta Atributos, pueden definirse los atributos adicionales para el controlador


relacionado. Si el indicador Pblico est establecido, estos atributos tambin sern visibles
para los dems controladores del mismo componente Web Dynpro. Los atributos no se
pueden mostrar en la interfaz de componentes.
Se utiliza la variable de referencia WD_THIS para acceder a los atributos de controlador
pblicos de uno de los mtodos del controlador. Para acceder a los atributos pblicos
definidos en otros controladores del mismo componente, determine la referencia a la interfaz
del controlador local del controlador usado.

Copyright . Reservados todos los derechos. 377


Captulo 12: Programacin de contextos y controladores

RESUMEN DE LA LECCIN
Ahora podr:
Explicar cmo se procesan los mtodos de conexin
Implementar mtodos de controlador
Utilizar atributos de controlador

378 Copyright . Reservados todos los derechos.


Captulo 12
Leccin 2
Utilizacin de mtodos de controlador para
acceder al contexto en tiempo de ejecucin

RESUMEN DE LA LECCIN
Esta leccin explica cmo acceder a nodos de contexto y elementos. Adems, muestra cmo
leer y modificar los valores de atributo.

Ejemplo empresarial
Usted quiere usar los mtodos Web Dynpro apropiados para acceder al contexto de
controlador en tiempo de ejecucin, y para leer, modificar, agregar o eliminar informacin
guardada all. Por este motivo, se requieren los siguientes conocimientos:
Una buena comprensin de cmo acceder al contexto de controlador

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Acceder al contexto de un controlador
Acceder a los elementos de nodo de contexto

Acceso a elementos y nodos de contexto

Figura 198: Acceso a un nodo de contexto

Copyright . Reservados todos los derechos. 379


Captulo 12: Programacin de contextos y controladores

Los atributos del controlador se pueden utilizar para incluir datos que son visibles a travs del
controlador. No obstante, no se puede asociar propiedades de elementos de UI a estos
atributos de controlador. Las propiedades de elementos de UI solo se pueden asociar a
atributos definidos en el contexto de controlador.
El acceso al contexto de controlador en tiempo de ejecucin (por ejemplo leer o modificar
datos) requiere el conocimiento de los mtodos Web Dynpro apropiados.
Para acceder a un elemento de contexto o a un atributo de contexto, primero necesita una
referencia al nodo de contexto relacionado.
Para cada controlador (<ctrl>), se genera una interfaz local con el nombre IF_<ctrl>.
Para cada nodo <nodo> del contexto de controlador se genera una constante
(WDCTX_<nodo>) dentro de esta interfaz. Tiene el nombre del nodo (en letras maysculas)
como su valor. Esta constante puede utilizarse para acceder al nodo de contexto.

Acceso al nodo raz de contexto


Se puede acceder al nodo raz de contexto mediante el atributo estndar WD_CONTEXT. Los
nodos subordinados del nodo raz de contexto se pueden identificar mediante el mtodo
get_child_node( ). Este mtodo devuelve una referencia a la instancia de nodo de tipo
IF_WD_CONTEXT_NODE.
El mtodo get_child_node( ) requiere que el programa de llamada especifique el nombre del
nodo. Opcionalmente, puede proporcionar al mtodo el ndice del elemento del nodo superior
al que pertenece la instancia de nodo deseada. Si no se indica el ndice, se emplea
implcitamente el ndice de seleccin de leads.

Consejo:
Para los nodos independientes, el ndice siempre puede omitirse, ya que cada
nodo raz de contexto posee un elemento que es el elemento en la seleccin de
leads.

Nota:
El mtodo path_get_node ( path = <path> ) es un medio especial de acceder a la
referencia en un nodo dependiente. Al igual que un parmetro, toda la va de
acceso al nodo deseado se transmite al mtodo. Los nombres de los nodos y los
ndices de los elementos forman la ruta (por ejemplo,
<node>.<el_index>.<sub_node>). Si se omite el ndice del elemento <el_index>
(en este caso, <node>.<sub_node>), la instancia del subnodo <sub_node> se
determina segn el elemento en la seleccin de leads del nodo superior <node>.

380 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

Acceso a un elemento de nodo

Figura 199: Acceso al elemento de nodo de la seleccin de lead

Despus de acceder a un nodo de contexto, la referencia al elemento de la seleccin de


liderazgo de este nodo se puede obtener llamando el mtodo get_element( ). Este mtodo
devuelve una referencia a la instancia de elemento de tipo IF_WD_CONTEXT_ELEMENT.
Se puede acceder al elemento con ndice n mediante el mtodo get_element( index = n ). El
nmero de elementos de una serie se puede obtener a partir del mtodo
get_element_count( ).

acceso a nodos de contexto y elementos de nodo

Para acceder a nodos de contexto y a elementos de nodo, se pueden usar los siguientes
mtodos:

Medida Mtodo
Referencia al nodo de contexto <nodo> lo_nd_<node> =
wd_context-
->get_child_node(
name =
wd_this->wdctx_<node> ).

Referencia a un elemento de la seleccin de lo_el_<node> =


liderazgo lo_nd_<node>-
->get_element( ).

Copyright . Reservados todos los derechos. 381


Captulo 12: Programacin de contextos y controladores

Medida Mtodo
Referencia a un elemento con ndice n
lo_el_<node> =
lo_nd_<node>->get_element(
index =
n ).

Obtener el nmero de elementos de una n =


serie lo_<node>-
->get_element_count( ).

Lectura y modificacin de valores de atributo

Figura 200: Acceso a un atributo individual de un elemento de nodo

El marco Web Dynpro ofrece varios mtodos para acceder a los atributos de un elemento de
nodo o para acceder a los atributos de todos los elementos de un nodo de contexto.

Una vez obtenida la referencia a un elemento de nodo, puede obtener los valores de
atributo de este elemento de las siguientes maneras:
Puede acceder a cualquier atributo de un elemento de nodo mediante el mtodo
get_attribute( ). Debe exportar el nombre del atributo. Se devuelve el valor del atributo en
un parmetro de importacin.
Puede obtener los atributos definidos estticamente llamando el mtodo
get_static_attributes( ). Se devuelve una estructura. La estructura de destino puede ser
diferente de la estructura de nodo si se utiliz un tipo de Dictionary para definirla, pero no
se utilizaron todos los campos como atributos.

382 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

Acceso a todos los atributos definidos estticamente de un elemento de nodo

Figura 201: Acceso a todos los atributos definidos estticamente de un elemento de nodo

Mediante el mtodo get_static_attributes( ), usted puede recuperar todos los atributos de los
elementos en una estructura en vez de tener que llamar el mtodo get_attribute( ) varias
veces.

La siguiente informacin es importante cuando se accede a atributos de contexto:


Para cada nodo <nodo> de un contexto de controlador, se genera de manera implcita un
tipo de estructura element_<nodo> en la interfaz IF_<ctrl>. Si se tipifica el nodo usando el
Dictionary, element_<nodo> se tipifica de igual manera. Si no se tipifica el nodo, los
campos de estructura se corresponden con los atributos definidos en el nodo. Este tipo de
estructura puede ser usado para tipificar un objeto de datos, el cual se rellena con los
mtodos get_attribute( ) y get_static_attributes( ).
Adems, para cada nodo <nodo> de un contexto de controlador, se genera de manera
implcita un tipo de tabla estndar elements_<nodo> en la interfaz IF_<ctrl>. El tipo de
lnea de esta tabla es element_<nodo>. Este tipo de tabla se puede utilizar para tipificar
una tabla interna que pueda incluir los atributos de varios elementos de nodo.

Copyright . Reservados todos los derechos. 383


Captulo 12: Programacin de contextos y controladores

Acceso a los atributos estticos de todos los elementos de nodo

Figura 202: Acceso a los atributos estticos de todos los elementos de nodo

Se pueden recuperar los atributos de todos los elementos a modo de tabla interna con el
mtodo get_static_attributes_table( ).
Para acceder a los sets de datos relacionados con varias filas de tabla que selecciona el
usuario, llame el mtodo del nodo get_selected_elements( ). Este mtodo retorna todos los
elementos seleccionados a una tabla interna (tipo WDR_CONTEXT_ELEMENT_SET). Cada fila
de esta tabla interna contiene la referencia a un elemento seleccionado.

Nota:
Para seleccionar un elemento de contexto, el usuario debe marcar la fila de tabla
correspondiente. Aunque el elemento en la seleccin de leads est resaltado, el
elemento de contexto relacionado no se selecciona automticamente.
Por lo tanto, al llamar el mtodo get_selected_elements( ), la aplicacin debe
definir si debe retornarse el elemento en la seleccin de leads aunque no se haya
seleccionado explcitamente. El valor del parmetro
INCLUDING_LEAD_SELECTION determina este proceso.

384 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

Modificacin de los valores de atributo de un elemento de nodo

Figura 203: Modificacin de un atributo individual de un elemento de nodo

Cuando se ha determinado la referencia a un determinado elemento de nodo, puede leer los


valores de atributo mediante los mtodos GET correspondientes. Tambin puede modificar
los valores de atributo existentes llamando los mtodos SET relacionados.
El mtodo set_attribute( ) se puede utilizar para modificar el valor de cualquier atributo del
elemento de nodo. Se pueden modificar varios atributos si estn definidos estticamente
mediante el mtodo set_static_attributes( ).

Copyright . Reservados todos los derechos. 385


Captulo 12: Programacin de contextos y controladores

Modificacin de varios atributos de un elemento de nodo

Figura 204: Modificacin de varios atributos de un elemento de nodo

La figura muestra un fragmento de cdigo que modifica varios atributos de un elemento de


nodo al mismo tiempo.

acceso y modificacin de atributos en el nodo <nodo> del controlador <ctrl>

Para acceder y modificar atributos de un nodo, utilice los mtodos correspondientes:

Medida Mtodo
Leer el valor del atributo <atr> DATA:
lv_<attr> TYPE
wd_this->element_<node>-
-<attr>.
lo_el_<node>-
->get_attribute(
EXPORTING
name = '<attr>'
IMPORTING
value = lv_<attr> ).

Leer el valor de varios atributos estticos DATA:


ls_<node> TYPE
wd_this->element_<node>.
lo_el_<node>->
get_static_attributes(
IMPORTING
static_attributes =

ls_<node> ).

386 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

Medida Mtodo
Leer los valores de atributo estticos para DATA:
todos los elementos de nodo
lt_<node> TYPE
wd_this-
->elements_<node>.

lo_nd_<node>->

get_static_attributes_tabl
e(
IMPORTING
table = lt_<node> ).

Modificar el valor lv_<atr> de un atributo DATA:


<atr> individual lv_<attr> TYPE
wd_this->element_<node>-
-<attr>.
lv_<attr> = ...

lo_el_<node>-
->set_attribute(
EXPORTING
name = '<attr>'
value = lv_<attr> ).

Modificar varios atributos de un elemento de DATA:


nodo ls_<node> TYPE
wd_this->element_<node>.
ls_<node>-<attr1> = ......

lo_el_<node>->

set_static_attributes(
EXPORTING
static_attrs =
ls_<node> ).

Copyright . Reservados todos los derechos. 387


Captulo 12: Programacin de contextos y controladores

388 Copyright . Reservados todos los derechos.


Captulo 12
Ejercicio 20
Acceso al contexto en tiempo de ejecucin

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro que visualice valores predefinidos en los
campos de entrada de la primera vista en tiempo de ejecucin.
Modelo: NET310_UI_S1
Solucin: NET310_CONR_S1

Tarea 1
Copie su componente Web Dynpro ZNET310_UI1_## o el modelo NET310_UI_S1 en el
componente Web Dynpro ZNET310_CONR1_##. Cree una aplicacin para acceder a este
componente.

1. Copie el modelo.

2. Cree una aplicacin Web Dynpro para acceder al nuevo componente.

Tarea 2
Coloque AA como valor predeterminado del campo que visualiza el ID de transportista en
INPUT_VIEW.

1. Implemente el mtodo WDDOINIT del controlador de vistas; utilice el asistente de


codificacin Web Dynpro para establecer el valor predeterminado del atributo de contexto
FLIGHTINFO.CARRID.

2. Active sus cambios y pruebe su aplicacin.

Tarea 3
Ahora establezca valores por defecto para todos los campos de entrada antes de que se
visualice la vista. Coloque LH como el valor predeterminado del campo que visualiza el ID de
transportista y coloque 0400 como el valor predeterminado del campo que visualiza el
nmero de conexin.

1. Convierta en comentario el cdigo que agreg en la ltima tarea.

2. Utilice el asistente de codificacin Web Dynpro para establecer los valores predefinidos de
los atributos de contexto FLIGHTINFO.CARRID y FLIGHTINFO.CONNID en un paso.

3. Active sus cambios y pruebe su aplicacin.

Copyright . Reservados todos los derechos. 389


Captulo 12
Solucin 20
Acceso al contexto en tiempo de ejecucin

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro que visualice valores predefinidos en los
campos de entrada de la primera vista en tiempo de ejecucin.
Modelo: NET310_UI_S1
Solucin: NET310_CONR_S1

Tarea 1
Copie su componente Web Dynpro ZNET310_UI1_## o el modelo NET310_UI_S1 en el
componente Web Dynpro ZNET310_CONR1_##. Cree una aplicacin para acceder a este
componente.

1. Copie el modelo.
a) En la pantalla Navegador de objetos, seleccione el componente Web
DynproZNET310_UI1_## y el pulsador Otro objeto en la barra del explorador Web
Dynpro Explorer.

b) En la pantalla Explorador Web Dynpro: Visualizar componente, seleccione Copiar.

c) En la ventana de dilogo Copiar componente Web Dynpro, introduzca


ZNET310_CONR1_## en el campo Nombre de la copia.

d) Seleccione Continuar.

e) Grabe las entradas.

2. Cree una aplicacin Web Dynpro para acceder al nuevo componente.


a) Realice este paso como en los ejercicios anteriores.

Tarea 2
Coloque AA como valor predeterminado del campo que visualiza el ID de transportista en
INPUT_VIEW.

1. Implemente el mtodo WDDOINIT del controlador de vistas; utilice el asistente de


codificacin Web Dynpro para establecer el valor predeterminado del atributo de contexto
FLIGHTINFO.CARRID.
a) En la pantalla Explorador Web Dynpro: Modificar aplicacin Web Dynpro, para el
componente ZNET310_CONR1_##, seleccione la vista INPUT_VIEW y seleccione la
etiqueta Mtodos.

b) En la columna Mtodo, haga doble clic en WDDOINIT y seleccione el pulsador asistente


de codificacin Web Dynpro.

390 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

c) En la ventana de dilogo Estructura de la sentencia Web Dynpro, seleccione el botn de


seleccin Establecer y seleccione el pulsador Contexto.

d) En la ventana de dilogo CONTEXT_VIEWER, seleccione el atributo CARRID.

e) Seleccione Continuar.

f) Antes del mtodo SET_ATTRIBUTE, que el asistente de codificacin debera haber


insertado, establezca el valor de la variable LV_CARRID en AA.

g) Consulte el cdigo fuente que se proporciona al final de esta tarea.

2. Active sus cambios y pruebe su aplicacin.


a) Realice este paso como en los ejercicios anteriores. El campo de formulario que
visualiza el transportista debe mostrar el valor AA.
El cdigo fuente es el siguiente:

View INPUT_VIEW, Method WDDOINIT, Task 1


METHOD wddoinit .
DATA lo_nd_flightinfo TYPE REF TO if_wd_context_node.
DATA lo_el_flightinfo TYPE REF TO if_wd_context_element.
DATA ls_flightinfo TYPE wd_this->element_flightinfo.
DATA lv_carrid TYPE wd_this->element_flightinfo-carrid.

* navigate from CONTEXT to FLIGHTINFO via lead selection


lo_nd_flightinfo =
wd_context->get_child_node(
name = wd_this->wdctx_flightinfo ).

* get element via lead selection


lo_el_flightinfo = lo_nd_flightinfo->get_element( ).

* set single attribute


lo_el_flightinfo->set_attribute(
name = `CARRID`
value = `AA` ).

ENDMETHOD.

Tarea 3
Ahora establezca valores por defecto para todos los campos de entrada antes de que se
visualice la vista. Coloque LH como el valor predeterminado del campo que visualiza el ID de
transportista y coloque 0400 como el valor predeterminado del campo que visualiza el
nmero de conexin.

1. Convierta en comentario el cdigo que agreg en la ltima tarea.


a) Consulte el cdigo fuente que se proporciona al final de esta tarea.

2. Utilice el asistente de codificacin Web Dynpro para establecer los valores predefinidos de
los atributos de contexto FLIGHTINFO.CARRID y FLIGHTINFO.CONNID en un paso.
a) En la vista INPUT_VIEW del componente ZNET310_CONR1_##, seleccione la etiqueta
Mtodos y haga doble clic en el mtodo WDDOINIT.

b) Seleccione el pulsador Asistente de codificacin Web Dynpro.

Copyright . Reservados todos los derechos. 391


Captulo 12: Programacin de contextos y controladores

c) En la ventana de dilogo Estructura de la sentencia Web Dynpro, seleccione el botn de


seleccin Establecer y seleccione el pulsador Contexto.

d) En la ventana de dilogo CONTEXT_VIEWER, seleccione el nodo FLIGHTINFO.

e) Seleccione Continuar.

f) Antes del mtodo SET_STATIC_ATTRIBUTES, el cual el asistente de codificacin


debera haber insertado, rellene la estructura LS_FLIGHTINFO de la siguiente manera:
ls_flightinfo-carrid = 'LH'.
ls_flightinfo-connid = '0400'.

g) El cdigo fuente es el siguiente:

View INPUT_VIEW, Method WDDOINIT, Task 2


METHOD wddoinit .

DATA lo_nd_flightinfo TYPE REF TO if_wd_context_node.


DATA lo_el_flightinfo TYPE REF TO if_wd_context_element.
DATA ls_flightinfo TYPE wd_this->element_flightinfo.
DATA lv_carrid TYPE wd_this->element_flightinfo-carrid.

* navigate from CONTEXT to FLIGHTINFO via lead selection


lo_nd_flightinfo =
wd_context->get_child_node(
name = wd_this->wdctx_flightinfo ).

* get element via lead selection


lo_el_flightinfo = lo_nd_flightinfo->get_element( ).

** set single attribute


* lo_el_flightinfo->set_attribute(
* name = `CARRID`
* value = `AA` ).

ls_flightinfo-carrid = 'LH'.
ls_flightinfo-connid = '0400'.

* set all declared attributes


lo_el_flightinfo->set_static_attributes(
static_attributes = ls_flightinfo ).

ENDMETHOD.

3. Active sus cambios y pruebe su aplicacin.


a) Realice este paso como en los ejercicios anteriores. El campo de formulario que
visualiza el transportista debe mostrar el valor AA.

392 Copyright . Reservados todos los derechos.


Leccin: Utilizacin de mtodos de controlador para acceder al contexto en tiempo de ejecucin

RESUMEN DE LA LECCIN
Ahora podr:
Acceder al contexto de un controlador
Acceder a los elementos de nodo de contexto

Copyright . Reservados todos los derechos. 393


Captulo 12
Leccin 3
Adicin de elementos nuevos a un nodo de
contexto

RESUMEN DE LA LECCIN
Esta leccin explica cmo agregar elementos nuevos a un nodo de contexto.

Ejemplo empresarial
Ya sabe cmo leer y modificar la informacin almacenada en el contexto de controlador. Sabe
cmo leer y modificar los datos ya almacenados en el contexto de controlador, pero necesita
entender cmo agregar nuevos elementos al contexto para proporcionar los datos para un
elemento de UI Table. Por este motivo, se requieren los siguientes conocimientos:
Cmo agregar elementos nuevos a un nodo de contexto

OBJETIVOS DE LA LECCIN
Despus de completar esta leccin, podr:
Agregar elementos nuevos a un nodo de contexto

Adicin de elementos nuevos a un nodo de contexto


El proceso de agregar un nuevo elemento a un nodo es como el proceso de agregar una nueva
fila a una tabla interna en el que primero define los valores de celda de un rea de trabajo que
tiene el tipo de fila correcto y luego inserta el rea de trabajo en la tabla interna.

Usted agrega un nuevo elemento a un nodo con los siguientes pasos:


1. Crear un elemento que se pueda agregar a un nodo de contexto especfico.

2. Definir los valores de atributo correspondientes.

3. Agregar el elemento nuevo al nodo de contexto.

394 Copyright . Reservados todos los derechos.


Leccin: Adicin de elementos nuevos a un nodo de contexto

Obtener la referencia a un nodo de contexto.

Figura 205: Obtener la referencia a un nodo de contexto.

Para crear un elemento que pueda aadirse a un nodo de contexto especfico, primero debe
determinarse la referencia a este nodo. Puede hacer esto mediante el mtodo
get_child_node( ) del atributo estndar WD_CONTEXT, sealando al nodo raz de contexto.
Una vez obtenida esta referencia, se utiliza el mtodo create_element( ) para crear el
elemento nuevo. Los valores de atributo se pueden proporcionar mediante el parmetro
static_attribute_values del mtodo create_element( ) o llamando por separado a los mtodos
set_attribute( ) o set_static_attributes( ).

Atencin:
El elemento nuevo todava no forma parte del nodo de contexto.

Copyright . Reservados todos los derechos. 395


Captulo 12: Programacin de contextos y controladores

Creacin de un elemento de nodo nuevo

Figura 206: Creacin de un elemento de nodo nuevo

La figura muestra el llamado del mtodo create_element( ) para crear y devolver la referencia
de un nuevo elemento.

Establecimiento de los valores de atributo del elemento nuevo

Figura 207: Establecimiento de los valores de atributo del elemento nuevo

396 Copyright . Reservados todos los derechos.


Leccin: Adicin de elementos nuevos a un nodo de contexto

La figura muestra el uso del mtodo set_attribute( ) para proporcionar los valores de los
atributos del elemento recientemente creado.

Vinculacin de un elemento a un nodo de contexto

Figura 208: Vinculacin de un elemento a un nodo de contexto

El elemento recientemente creado ahora debe aadirse al nodo del contexto.Esto se hace
llamando el mtodo bind_element( ) para el nodo en cuestin.

El mtodo bind_element( ) tiene los siguientes parmetros de importacin:


El parmetro new_item
La referencia del elemento se entrega a travs de este parmetro
El parmetro set_initial_elements
Este parmetro define si el elemento nuevo se aade simplemente a la serie de elementos
(valor = abap_false) o si sustituye a todos los elementos existentes de la serie (valor =
abap_true).

Copyright . Reservados todos los derechos. 397


Captulo 12: Programacin de contextos y controladores

Asociacin de una estructura a un nodo de contexto

Figura 209: Asociacin de una estructura a un nodo de contexto

En los programas ABAP, los sets de datos se gestionan como estructuras. Para visualizar el
contenido de la estructura en la UI, el contenido de la estructura debe copiarse en un
elemento de contexto. Esto significa que debe definirse un elemento nuevo, deben
establecerse los valores de atributo y debe asociarse el elemento al nodo de contexto
apropiado.
Existe una manera ms fcil de copiar el contenido de la estructura como elemento nuevo en
el nodo de contexto. En lugar de utilizar el mtodo bind_element( ) y de enviar la referencia del
elemento, puede utilizar el mtodo bind_structure( ) con el parmetro new_item para enviar la
estructura. La serie existente se puede ampliar o sustituir mediante el parmetro
set_initial_elements.

398 Copyright . Reservados todos los derechos.


Leccin: Adicin de elementos nuevos a un nodo de contexto

Asociacin de una tabla interna a un nodo de contexto

Figura 210: Asociacin de una tabla interna a un nodo de contexto

Varios sets de datos con estructuras idnticas se gestionan como tablas internas en
programas ABAP. No obstante, para poder visualizar los sets de datos en la UI, copie el
contenido de la tabla interna en tantos elementos de contexto como filas haya en la tabla
interna.
La mejor forma de aadir muchos elementos nuevos a un nodo de contexto es utilizar el
mtodo bind_table( ). La tabla interna se enva mediante el parmetro new_items. La serie
existente se puede ampliar o sustituir (parmetro set_initial_elements).

Eliminacin de elementos de un nodo de contexto


Para eliminar un elemento de una serie, llame el mtodo remove_element( ). Enve la
referencia al elemento mediante el parmetro element.

Para aadir o eliminar elementos del contexto, utilice los siguientes mtodos:

Medida Mtodo
Cree un nuevo elemento. lo_el_<node> =
lo_nd_<node>-
->create_element( ).

Aadir el elemento a la serie lo_nd_<node>-


->bind_element(
new_item = lo_el_<node>
set_initial_elements =
abap_false ).

Copyright . Reservados todos los derechos. 399


Captulo 12: Programacin de contextos y controladores

Medida Mtodo
Asociar la estructura ls_<nodo> a la serie DATA: ls_<node> TYPE
wd_this->element_<node>.

...

lo_nd_<node>-
->bind_structure(
new_item =
ls_<node>

set_initial_elements =

abap_false ).

Asociar la tabla interna lt_<nodo> a la serie DATA: lt_<node> TYPE


wd_this->elements_<node>.

...

lo_nd_<node>->bind_table(
new_items = lt_<node>
set_initial_elements
=

abap_false ).

Eliminar el elemento de la serie lo_nd_<node>-


->remove_element(
element =
lo_el_<node> ).

400 Copyright . Reservados todos los derechos.


Captulo 12
Ejercicio 21
Visualizar datos en masa mediante tablas

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro en la que el usuario pueda introducir criterios
de seleccin en la primera vista. Cuando el usuario selecciona un pulsador, la aplicacin lee
los vuelos relacionados de la base de datos y navega a la segunda vista en la que se visualizan
como tabla los vuelos seleccionados.
Modelo: NET310_CONR_S1
Solucin: NET310_CONR_S2

Tarea 1
Copie su componente Web Dynpro ZNET310_CONR1_## o el modelo NET310_CONR_S1 en el
componente Web Dynpro ZNET310_CONR2_##. Cree una nueva aplicacin para acceder a
este componente.

1. Copie el modelo.

2. Cree una nueva aplicacin para acceder a su componente.

Tarea 2
En el contexto del controlador de componentes, cree un nuevo nodo de contexto para
almacenar sets de datos para los vuelos ledos desde la tabla de base de datos SFLIGHT.
Copie este nodo de contexto en el contexto de la vista OUTPUT_VIEW y asigne los nodos de
contexto.

1. En el contexto de controlador de componentes, cree un nuevo nodo de contexto (nombre


propuesto: FLIGHTTAB) con referencia a la estructura de Dictionary ABAP SFLIGHT y
cardinalidad 0...n.
El nodo deber contener los siguientes atributos:
CARRID
CONNID
FLDATE
PLANETYPE
SEATSMAX
SEATSOCC

2. Copie y asigne el nodo de contexto nuevo en el contexto de la vista OUTPUT_VIEW.

Tarea 3

Copyright . Reservados todos los derechos. 401


Captulo 12: Programacin de contextos y controladores

Ample el layout de la vista OUTPUT_VIEW para visualizar los datos sobre lo vuelos en una
tabla.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla con vinculacin al
nodo de contexto FLIGHTTAB.

Tarea 4
Cree un mtodo en el controlador de componentes en el que pueda seleccionar vuelos desde
la tabla de base de datos SFLIGHT y almacenarlos en una tabla interna. Utilice el mtodo
esttico CL_NET310_FLIGHTMODEL=>READ_FLIGHTS( ) para recopilar los datos. Almacene
el resultado en el nodo de contexto FLIGHTTAB.

1. Cree un mtodo nuevo en el controlador de componentes (nombre: FLIGHTTAB_FILL).

2. Utilice el asistente de codificacin Web Dynpro para leer la entrada de usuario desde el
elemento en la seleccin de leads del nodo FLIGHTINFO.

3. Cree una tabla interna (nombre: LT_FLIGHTTAB) del tipo de tabla NET310_T_SFLIGHT.
Utilice el mtodo esttico CL_NET310_FLIGHTMODEL=>READ_FLIGHTS( ) para rellenar la
tabla interna (parmetro de exportacin ET_FLIGHTS). Utilice CARRID y CONNID
ingresados por el usuario para limitar la seleccin de datos.

4. Utilice el asistente de codificacin para insertar el cdigo necesario para almacenar el


contenido de la tabla interna en el nodo de contexto FLIGHTTAB.

Tarea 5
Asegrese de que su nuevo mtodo de controlador de componentes se ejecuta despus de la
navegacin, inmediatamente antes de que se visualice la vista OUTPUT_VIEW.

1. Trate el mtodo HANDLEIN_DEFAULT( ) de la vista OUTPUT_VIEW y utilice el asistente de


codificacin Web Dynpro para implementar una llamada del mtodo de controlador de
componentes FLIGHTTAB_FILL( ).

402 Copyright . Reservados todos los derechos.


Captulo 12
Solucin 21
Visualizar datos en masa mediante tablas

Ejemplo empresarial
Desea desarrollar una aplicacin Web Dynpro en la que el usuario pueda introducir criterios
de seleccin en la primera vista. Cuando el usuario selecciona un pulsador, la aplicacin lee
los vuelos relacionados de la base de datos y navega a la segunda vista en la que se visualizan
como tabla los vuelos seleccionados.
Modelo: NET310_CONR_S1
Solucin: NET310_CONR_S2

Tarea 1
Copie su componente Web Dynpro ZNET310_CONR1_## o el modelo NET310_CONR_S1 en el
componente Web Dynpro ZNET310_CONR2_##. Cree una nueva aplicacin para acceder a
este componente.

1. Copie el modelo.
a) Realice este paso como en los ejercicios anteriores.

2. Cree una nueva aplicacin para acceder a su componente.


a) Realice este paso como en los ejercicios anteriores.

Tarea 2
En el contexto del controlador de componentes, cree un nuevo nodo de contexto para
almacenar sets de datos para los vuelos ledos desde la tabla de base de datos SFLIGHT.
Copie este nodo de contexto en el contexto de la vista OUTPUT_VIEW y asigne los nodos de
contexto.

1. En el contexto de controlador de componentes, cree un nuevo nodo de contexto (nombre


propuesto: FLIGHTTAB) con referencia a la estructura de Dictionary ABAP SFLIGHT y
cardinalidad 0...n.
El nodo deber contener los siguientes atributos:
CARRID
CONNID
FLDATE
PLANETYPE
SEATSMAX
SEATSOCC

a) Realice este paso como en los ejercicios anteriores.

Copyright . Reservados todos los derechos. 403


Captulo 12: Programacin de contextos y controladores

2. Copie y asigne el nodo de contexto nuevo en el contexto de la vista OUTPUT_VIEW.


a) Realice este paso como en los ejercicios anteriores.

Tarea 3
Ample el layout de la vista OUTPUT_VIEW para visualizar los datos sobre lo vuelos en una
tabla.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla con vinculacin al
nodo de contexto FLIGHTTAB.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_CONR2_##, para la
vista OUTPUT_VIEW, seleccione la etiqueta Layout y luego
ROOTUIELEMENTCONTAINER.

b) Seleccione el pulsador Asistente de codificacin Web Dynpro.

c) En la ventana de dilogo galera de modelos, seleccione el modelo Tabla.

d) En la ventana de dilogo Crear vinculacin de contexto para la tabla "TABLE",


seleccione el pulsador Contexto y haga doble clic en el nodo de contexto FLIGHTTAB.
Seleccione Continuar.

e) En la pantalla de resumen OUTPUT_VIEW, en Propiedades para el elemento de UI


Table, introduzca los siguientes datos:
Nombre del campo Valor
Datos de Layout RowHeadData

ancho 100%

f) Grabe las entradas.

Tarea 4
Cree un mtodo en el controlador de componentes en el que pueda seleccionar vuelos desde
la tabla de base de datos SFLIGHT y almacenarlos en una tabla interna. Utilice el mtodo
esttico CL_NET310_FLIGHTMODEL=>READ_FLIGHTS( ) para recopilar los datos. Almacene
el resultado en el nodo de contexto FLIGHTTAB.

1. Cree un mtodo nuevo en el controlador de componentes (nombre: FLIGHTTAB_FILL).


a) En la pantalla Explorador Web Dynpro: Modificar controlador de ZNET310_CONR2_##,
seleccione la etiqueta Mtodos en el controlador de componentes.

b) En la columna Mtodo, introduzca FLIGHTTAB_FILL.

2. Utilice el asistente de codificacin Web Dynpro para leer la entrada de usuario desde el
elemento en la seleccin de leads del nodo FLIGHTINFO.
a) Haga doble clic en el mtodo FLIGHTTAB_FILL para navegar a la implementacin y
seleccione el pulsador asistente de codificacin Web Dynpro.

b) En la etiqueta Contexto de la ventana de dilogo Estructura de la sentencia Web


Dynpro, seleccione el botn de seleccin Leer.

404 Copyright . Reservados todos los derechos.


Leccin: Adicin de elementos nuevos a un nodo de contexto

c) Seleccione el pulsador Contexto y haga doble clic en el nodo FLIGHTINFO.

d) Seleccione Continuar.

e) Grabe las entradas.

3. Cree una tabla interna (nombre: LT_FLIGHTTAB) del tipo de tabla NET310_T_SFLIGHT.
Utilice el mtodo esttico CL_NET310_FLIGHTMODEL=>READ_FLIGHTS( ) para rellenar la
tabla interna (parmetro de exportacin ET_FLIGHTS). Utilice CARRID y CONNID
ingresados por el usuario para limitar la seleccin de datos.
a) En el mtodo FLIGHTTAB_FILL, trate el cdigo fuente generado para crear la tabla.

b) Consulte el cdigo fuente que se proporciona al final del ejercicio.

4. Utilice el asistente de codificacin para insertar el cdigo necesario para almacenar el


contenido de la tabla interna en el nodo de contexto FLIGHTTAB.
a) En la pantalla Explorador Web Dynpro: Modificar el controlador para
ZNET310_CONR2_##, coloque el cursor despus del cdigo que ya agreg y
seleccione el pulsador asistente de codificacin Web Dynpro.

b) En la ventana de dilogo Estructura de la sentencia Web Dynpro, seleccione el botn de


seleccin Establecer y la casilla de seleccin Operacin como tabla.

c) Seleccione el pulsador Contexto y haga doble clic en el nodo FLIGHTTAB.

d) Seleccione Continuar.

e) En el mtodo FLIGHTTAB_FILL, corrija el cdigo fuente generado. Enve la tabla interna


LT_FLIGHTTAB al mtodo BIND_TABLE( ).

f) Grabe las entradas.

g) Consulte el cdigo fuente que se proporciona al final del ejercicio.

Tarea 5
Asegrese de que su nuevo mtodo de controlador de componentes se ejecuta despus de la
navegacin, inmediatamente antes de que se visualice la vista OUTPUT_VIEW.

1. Trate el mtodo HANDLEIN_DEFAULT( ) de la vista OUTPUT_VIEW y utilice el asistente de


codificacin Web Dynpro para implementar una llamada del mtodo de controlador de
componentes FLIGHTTAB_FILL( ).
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_CONR2_##, para la
vista OUTPUT_VIEW, seleccione la etiqueta Mtodos.

b) Haga doble clic en el mtodo HANDLEIN_DEFAULT.

c) Seleccione el pulsador Asistente de codificacin Web Dynpro.

d) En la ventana de dilogo Estructura de la sentencia Web Dynpro, seleccione la etiqueta


General.

e) Seleccione el botn de seleccin Llamada de mtodo en controlador utilizado e


introduzca los siguientes datos:

Copyright . Reservados todos los derechos. 405


Captulo 12: Programacin de contextos y controladores

Nombre del campo Valor


Nombre de componente ZNET310_CONR2_##
Nombre de controlador COMPONENTCONTROLLER
Nombre de mtodo FLIGHTTAB_FILL

f) Seleccione Continuar.

g) Grabe las entradas.

h) Consulte el cdigo fuente que se proporciona al final del ejercicio.


El cdigo fuente es el siguiente:

Comp. Controller, Method FLIGTHTAB_FILL

METHOD flighttab_fill .

DATA lo_nd_flightinfo TYPE REF TO if_wd_context_node.


DATA lo_el_flightinfo TYPE REF TO if_wd_context_element.
DATA ls_flightinfo TYPE wd_this->element_flightinfo.
DATA lt_flighttab TYPE net310_t_sflight.
DATA lo_nd_flighttab TYPE REF TO if_wd_context_node.

* navigate from CONTEXT to FLIGHTINFO via lead selection


lo_nd_flightinfo =
wd_context->get_child_node(
name = wd_this->wdctx_flightinfo ).

* get element via lead selection


lo_el_flightinfo = lo_nd_flightinfo->get_element( ).

* get all declared attributes


lo_el_flightinfo->get_static_attributes(
IMPORTING
static_attributes = ls_flightinfo ).

* read all flights related to CARRID and CONNID entered by user


cl_net310_flightmodel=>read_flights(
EXPORTING
iv_carrid = ls_flightinfo-carrid
iv_connid = ls_flightinfo-connid
IMPORTING
et_flights = lt_flighttab ).

* navigate from CONTEXT to FLIGHTTAB via lead selection


lo_nd_flighttab =
wd_context->get_child_node(
name = wd_this->wdctx_flighttab ).

* bind table to context node FLIGHTTAB


lo_nd_flighttab->bind_table(
new_items = lt_flighttab
set_initial_elements = abap_true ).

ENDMETHOD.

406 Copyright . Reservados todos los derechos.


Leccin: Adicin de elementos nuevos a un nodo de contexto

View OUTPUT_VIEW, Method HANDLEIN_DEFAULT

METHOD handlein_default .

DATA lo_componentcontroller
TYPE REF TO ig_componentcontroller .

lo_componentcontroller =
wd_this->get_componentcontroller_ctr( ).

lo_componentcontroller->flighttab_fill( ).

ENDMETHOD.

Copyright . Reservados todos los derechos. 407


Captulo 12: Programacin de contextos y controladores

RESUMEN DE LA LECCIN
Ahora podr:
Agregar elementos nuevos a un nodo de contexto

408 Copyright . Reservados todos los derechos.


Captulo 12
Leccin 4
Implementacin de las funciones de
suministro

RESUMEN DE LA LECCIN
En este mdulo se explica cmo se implementan funciones de suministro.

Ejemplo empresarial
Quiere visualizar una tabla de reservas debajo de la tabla de vuelos existente en su
componente Web Dynpro. Las reservas que se visualizarn en esta tabla deberan ser
reservas relacionadas con el vuelo seleccionado por el usuario en la primera tabla, y las
reservas deberan cambiar si el usuario elige un vuelo diferente. Para lograr esto, necesita
asignar una funcin de suministro en el nodo de contexto BOOKINGS. Por este motivo, se
requieren los siguientes conocimientos:
Cmo utilizar funciones de suministro

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

Copyright . Reservados todos los derechos. 409


Captulo 12: Programacin de contextos y controladores

410 Copyright . Reservados todos los derechos.


Captulo 12
Ejercicio 22
Implementar las funciones de suministro

Ejemplo empresarial
Usted desea desarrollar una aplicacin Web Dynpro con una vista que muestre dos tablas,
una lista de vuelos y una lista de reservas. Los datos visualizados en la segunda tabla debern
depender de la fila seleccionada en la primera tabla. Desea utilizar una funcin de suministro
para asegurarse de que los datos de la segunda tabla se modifiquen cuando el usuario
seleccione una fila diferente en la primera tabla.
Modelo: NET310_CONR_S2
Solucin: NET310_CONR_S3
Utilice funciones de suministro llenar los nodos de contexto.
Tarea 1
Copie su componente Web Dynpro ZNET310_CONR2_## o el modelo NET310_CONR_S2 en
el componente Web Dynpro ZNET310_CONR3_##. Cree una nueva aplicacin para acceder a
su componente.

1. Copie el modelo.

2. Cree una nueva aplicacin para acceder a su componente.

Tarea 2
En el contexto de controlador de componentes, cree un nuevo nodo de contexto como un
subnodo del nodo FLIGHTTAB. Este nuevo nodo de contexto debe almacenar reservaciones
ledas desde la tabla de base de datos SBOOK.
Actualice la asignacin de nodo de contexto FLIGHTTAB en la vista OUTPUT_VIEW.

1. En el contexto de controlador de componentes, cree un nuevo nodo de contexto


(BOOKINGTAB) como un subnodo del nodo FLIGHTTAB. Establezca Estructura de
diccionario = SBOOK y Cardinalidad = 0..n. El nodo debe incluir los atributos BOOKID,
CUSTOMID, CUSTTYPE, LUGGWEIGHT, WUNIT, CLASS y PASSNAME.

2. Actualice la asignacin para el nodo de contexto FLIGHTTAB en el contexto de vista


OUTPUT_VIEW.

Tarea 3
Visualice las reservas en una segunda tabla ubicada debajo de la tabla de vuelos.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla con vinculacin al
nodo de contexto BOOKINGTAB.

Tarea 4

Copyright . Reservados todos los derechos. 411


Captulo 12: Programacin de contextos y controladores

Cree e implemente una funcin de suministro para llenar el subnodo BOOKINGTAB de


acuerdo con el elemento en seleccin de leads del nodo FLIGHTTAB.

1. En el contexto de controlador de componente, asigne una funcin de suministro


(BOOKINGS_READ) al nodo BOOKINGTAB.

2. El mtodo de suministro incluye cdigo fuente con comentarios. Elimine los comentarios
de las siguientes sentencias:
La declaracin de la estructura LS_PARENT_ATTRIBUTES
La llamada del mtodo GET_STATIC_ATTRIBUTES() para el elemento superior
La declaracin de tabla interna LT_BOOKINGTAB
La llamada de mtodo BIND_TABLE() utilizada para asociar la tabla LT_BOOKINGTAB
al nodo de contexto

El resto de las lneas con comentarios se pueden eliminar.

3. Llame al mtodo esttico CL_NET310_FLIGHTMODEL=>READ_BOOKINGS() para leer


todas las reservas para el vuelo seleccionado. Utilice los atributos CARRID, CONNID y
FLDATE del elemento superior para limitar la seleccin de datos Modifique el tipo de la
tabla interna LT_BOOKINGTAB por el tipo del parmetro RT_BOOKINGS que retorn el
mtodo READ_BOOKINGS( ).

412 Copyright . Reservados todos los derechos.


Captulo 12
Solucin 22
Implementar las funciones de suministro

Ejemplo empresarial
Usted desea desarrollar una aplicacin Web Dynpro con una vista que muestre dos tablas,
una lista de vuelos y una lista de reservas. Los datos visualizados en la segunda tabla debern
depender de la fila seleccionada en la primera tabla. Desea utilizar una funcin de suministro
para asegurarse de que los datos de la segunda tabla se modifiquen cuando el usuario
seleccione una fila diferente en la primera tabla.
Modelo: NET310_CONR_S2
Solucin: NET310_CONR_S3
Utilice funciones de suministro llenar los nodos de contexto.
Tarea 1
Copie su componente Web Dynpro ZNET310_CONR2_## o el modelo NET310_CONR_S2 en
el componente Web Dynpro ZNET310_CONR3_##. Cree una nueva aplicacin para acceder a
su componente.

1. Copie el modelo.
a) Realice este paso como en los ejercicios anteriores.

2. Cree una nueva aplicacin para acceder a su componente.


a) Realice este paso como en los ejercicios anteriores.

Tarea 2
En el contexto de controlador de componentes, cree un nuevo nodo de contexto como un
subnodo del nodo FLIGHTTAB. Este nuevo nodo de contexto debe almacenar reservaciones
ledas desde la tabla de base de datos SBOOK.
Actualice la asignacin de nodo de contexto FLIGHTTAB en la vista OUTPUT_VIEW.

1. En el contexto de controlador de componentes, cree un nuevo nodo de contexto


(BOOKINGTAB) como un subnodo del nodo FLIGHTTAB. Establezca Estructura de
diccionario = SBOOK y Cardinalidad = 0..n. El nodo debe incluir los atributos BOOKID,
CUSTOMID, CUSTTYPE, LUGGWEIGHT, WUNIT, CLASS y PASSNAME.
a) Realice este paso como en los ejercicios anteriores.

2. Actualice la asignacin para el nodo de contexto FLIGHTTAB en el contexto de vista


OUTPUT_VIEW.
a) En la pantalla Explorador Web Dynpro: Modificar controlador de ZNET310_CONR3_##,
seleccione OUTPUT_VIEW paraZNET310_CONR3_## y seleccione la etiqueta
Contexto.

b) En el men contextual del nodo raz FLIGHTTAB seleccione Actualizar asignacin.

Copyright . Reservados todos los derechos. 413


Captulo 12: Programacin de contextos y controladores

c) En la ventana de dilogo Copiar nodos subordinados, seleccione S.

d) Grabe las entradas.

Tarea 3
Visualice las reservas en una segunda tabla ubicada debajo de la tabla de vuelos.

1. Utilice el asistente de codificacin Web Dynpro para crear una tabla con vinculacin al
nodo de contexto BOOKINGTAB.
a) En la pantalla Explorador Web Dynpro: Modificar vista de ZNET310_CONR3_##, para la
vista OUTPUT_VIEW, en la etiqueta Layout y luego seleccione
ROOTUIELEMENTCONTAINER.

b) Seleccione el pulsador Asistente de codificacin Web Dynpro.

c) En la ventana de dilogo galera de modelos, seleccione el modelo Tabla.

d) En la ventana de dilogo Crear vinculacin de contexto para la tabla "TABLE",


seleccione el pulsador Contexto y haga doble clic en el nodo BOOKINGTAB.

e) Seleccione Continuar.

f) En OUTPUT_VIEW, en la pantalla Propiedades para el nuevo elemento de UI TABLE_1,


introduzca los siguientes datos:
Nombre del campo Valor
Datos de Layout RowHeadData

ancho 100%

g) Grabe las entradas.

Tarea 4
Cree e implemente una funcin de suministro para llenar el subnodo BOOKINGTAB de
acuerdo con el elemento en seleccin de leads del nodo FLIGHTTAB.

1. En el contexto de controlador de componente, asigne una funcin de suministro


(BOOKINGS_READ) al nodo BOOKINGTAB.
a) En la pantalla Explorador Web Dynpro: Modificar controlador de ZNET310_CONR3_##,
en la etiqueta Contexto de COMPONENTCONTROLLER, seleccione BOOKINGTAB.

b) En la tabla del rea de pantalla Propiedades de BOOKINGTAB, indique


BOOKINGS_READ para la propiedad Funcin de suministro.

c) Grabe las entradas.

2. El mtodo de suministro incluye cdigo fuente con comentarios. Elimine los comentarios
de las siguientes sentencias:
La declaracin de la estructura LS_PARENT_ATTRIBUTES
La llamada del mtodo GET_STATIC_ATTRIBUTES() para el elemento superior
La declaracin de tabla interna LT_BOOKINGTAB

414 Copyright . Reservados todos los derechos.


Leccin: Implementacin de las funciones de suministro

La llamada de mtodo BIND_TABLE() utilizada para asociar la tabla LT_BOOKINGTAB


al nodo de contexto

El resto de las lneas con comentarios se pueden eliminar.


a) Consulte el cdigo fuente que se proporciona al final del ejercicio.

3. Llame al mtodo esttico CL_NET310_FLIGHTMODEL=>READ_BOOKINGS() para leer


todas las reservas para el vuelo seleccionado. Utilice los atributos CARRID, CONNID y
FLDATE del elemento superior para limitar la seleccin de datos Modifique el tipo de la
tabla interna LT_BOOKINGTAB por el tipo del parmetro RT_BOOKINGS que retorn el
mtodo READ_BOOKINGS( ).
a) Consulte el cdigo fuente que se proporciona al final del ejercicio.
El cdigo fuente es el siguiente:

Comp. Controller, Method BOOKINGS_READ

METHOD bookings_read .

DATA ls_parent_attributes TYPE wd_this->element_flighttab.


DATA lt_bookingtab TYPE net310_t_sbook.

* get all static attributes of parent element


parent_element->get_static_attributes(
IMPORTING
static_attributes = ls_parent_attributes ).

* read related bookings


lt_bookingtab = cl_net310_flightmodel=>read_bookings(
iv_carrid = ls_parent_attributes-carrid
iv_connid = ls_parent_attributes-connid
iv_fldate = ls_parent_attributes-fldate ).

* bind all the elements


node->bind_table(
new_items = lt_bookingtab
set_initial_elements = abap_true ).

ENDMETHOD.

Copyright . Reservados todos los derechos. 415


Captulo 12: Programacin de contextos y controladores

RESUMEN DE LA LECCIN
Ahora podr:
Utilizar funciones de suministro

416 Copyright . Reservados todos los derechos.


Captulo 12

Evaluacin de la formacin

1. Cules de los siguientes son mtodos en los controladores Web Dynpro?


Seleccione las respuestas correctas.

X A WDDOINIT

X B WDDOCONSTRUCTOR

X C WDDOEXIT

X D WDDODESTRUCTOR

2. Cules de los siguientes tipos de mtodos se pueden definir en el controlador Web


Dynpro?
Seleccione las respuestas correctas.

X A Funciones de suministro

X B Programas de control de eventos

X C Mtodos estticos

3. En la etiqueta Atributos, pueden definirse los atributos adicionales para el controlador


relacionado.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

4. Qu necesita para acceder a un elemento de contexto o a un atributo de contexto?


Seleccione la respuesta correcta.

X A Una declaracin de una relacin de asociacin

X B Una referencia al nodo de contexto relacionado

X C Una definicin de variables que puedan asociarse a elementos de UI y que puedan


intercambiarse fcilmente entre varios controladores

X D Una referencia al nodo que la funcin de suministro modificar

Copyright . Reservados todos los derechos. 417


Captulo 12: Evaluacin de la formacin

5. Qu mtodo del nodo debe llamar para acceder a los sets de datos relacionados con
varias filas de tabla que selecciona el usuario?
Seleccione la respuesta correcta.

X A get_selected_elements( )

X B get_value_attribute( )

X C get_static_attributes( )

X D get_child_node( )

6. Para crear un elemento que pueda aadirse a un nodo de contexto especfico, primero
debe determinar la referencia a este nodo. Cmo podra hacerlo?
Seleccione la respuesta correcta.

X A Llamando al mtodo get_child_node( ) mediante el atributo estndar


WD_CONTEXT.

X B Llamando al mtodo wd_cpuse_<comp_usage>( )

X C Mediante el parmetro de la interfaz PARENT_ELEMENT

X D Mediante el parmetro static_attribute_values

418 Copyright . Reservados todos los derechos.


Captulo 12

Respuestas a la Evaluacin de la formacin

1. Cules de los siguientes son mtodos en los controladores Web Dynpro?


Seleccione las respuestas correctas.

X A WDDOINIT

X B WDDOCONSTRUCTOR

X C WDDOEXIT

X D WDDODESTRUCTOR

2. Cules de los siguientes tipos de mtodos se pueden definir en el controlador Web


Dynpro?
Seleccione las respuestas correctas.

X A Funciones de suministro

X B Programas de control de eventos

X C Mtodos estticos

3. En la etiqueta Atributos, pueden definirse los atributos adicionales para el controlador


relacionado.
Indique si esta afirmacin es verdadera o falsa.

X Verdadero

X Falso

Copyright . Reservados todos los derechos. 419


Captulo 12: Respuestas a la Evaluacin de la formacin

4. Qu necesita para acceder a un elemento de contexto o a un atributo de contexto?


Seleccione la respuesta correcta.

X A Una declaracin de una relacin de asociacin

X B Una referencia al nodo de contexto relacionado

X C Una definicin de variables que puedan asociarse a elementos de UI y que puedan


intercambiarse fcilmente entre varios controladores

X D Una referencia al nodo que la funcin de suministro modificar

5. Qu mtodo del nodo debe llamar para acceder a los sets de datos relacionados con
varias filas de tabla que selecciona el usuario?
Seleccione la respuesta correcta.

X A get_selected_elements( )

X B get_value_attribute( )

X C get_static_attributes( )

X D get_child_node( )

6. Para crear un elemento que pueda aadirse a un nodo de contexto especfico, primero
debe determinar la referencia a este nodo. Cmo podra hacerlo?
Seleccione la respuesta correcta.

X A Llamando al mtodo get_child_node( ) mediante el atributo estndar


WD_CONTEXT.

X B Llamando al mtodo wd_cpuse_<comp_usage>( )

X C Mediante el parmetro de la interfaz PARENT_ELEMENT

X D Mediante el parmetro static_attribute_values

420 Copyright . Reservados todos los derechos.