TAW12_02

429
TAW12_2 Objetos ABAP y Æreas de aplicacin SAP NetWeaver Fecha Centro de formacin Instructores PÆgina Web de formacin Manual del instructor Versin del curso: 63 Duracin del curso: 5 da(s) Nœmero de material: 50090661 Responsable: Christian Braun (D035329) An SAP Compass course - use it to learn, reference it for work

description

TAW12_02

Transcript of TAW12_02

Page 1: TAW12_02

TAW12_2Objetos ABAP y áreas de

aplicaciónSAP NetWeaver

Fecha

Centro de formación

Instructores

Página Web deformación

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

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

Page 2: TAW12_02

Copyright

Copyright © 2009 SAP AG. Reservados todos los derechos.

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

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

Marcas registradas

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

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

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

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

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

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

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

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

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

Declaración de renuncia

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

g20090710150436

Page 3: TAW12_02

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

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

Estilo de tipo Descripción

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

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

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

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

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

Texto deejemplo

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

<Texto deejemplo>

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

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. iii

Page 4: TAW12_02

Sobre este manual TAW12_2

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

Icono Significado

Para más información, sugerencias o detalles

Nota o más explicaciones sobre el punto anterior

Excepción o precaución

Procedimientos

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

iv © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 5: TAW12_02

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

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

Capítulo 1: Modificación de la versión estándar del sistemaSAP..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Modificación de la versión estándar del sistema SAP ... . . . . . . . . . .2

Capítulo 2: Ampliación de los elementos del Dictionary .... . . . 19Ampliaciones de tabla .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20Ampliaciones de texto .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

Capítulo 3: Ampliaciones mediante exits de cliente..... . . . . . . . . 41Exits de cliente: Resumen... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Gestión de ampliaciones.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Exit de programa... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Exit de menú... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71Exit de dynpro ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Capítulo 4: Add-ins empresariales ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95Add-ins empresariales: Utilización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Creación e implementación de un BAdI ... . . . . . . . . . . . . . . . . . . . . . . .100BAdI: Información adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

Capítulo 5: Modificaciones ..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Modificaciones .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129Realización de modificaciones ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135Asistente de modificaciones... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145Exit de usuario .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160El Note Assistant. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167Ajuste de modificaciones .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180

Capítulo 6: Ampliaciones ...... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193El nuevo concepto de ampliación... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195

Capítulo 7: Web Dynpro: Introducción ..... . . . . . . . . . . . . . . . . . . . . . . . 229Web Dynpro: Introducción ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. v

Page 6: TAW12_02

Contenido TAW12_2

Capítulo 8: Controladores Web Dynpro ..... . . . . . . . . . . . . . . . . . . . . . . 257Controladores Web Dynpro.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258

Capítulo 9: El contexto en la fase de diseño ..... . . . . . . . . . . . . . . . . 277El contexto en la fase de diseño ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279

Capítulo 10: Definición de la interfase de usuario (UI).... . . . . . 303Definición de la interfase de usuario (UI) . . . . . . . . . . . . . . . . . . . . . . . . .304

Capítulo 11: Programación de contextos y controladores.... 343Programación de contextos y controladores ... . . . . . . . . . . . . . . . . . .345

Capítulo 12: Internacionalización y mensajes ..... . . . . . . . . . . . . . . 391Internacionalización y mensajes ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392

Índice..... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411

vi © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 7: TAW12_02

Resumen del cursoEste curso, de una duración de dos semanas, ofrece una introducción detallada yamplia de los principios básicos de la programación de objetos ABAP. Tambiénse explica cómo realizar modificaciones de nivel especializado en la versiónestándar del sistema SAP. Además, aprenderá a evaluar los distintos métodos demodificación y a elegir el correcto para cada caso. Web Dynpro es la tecnologíade vanguardia de SAP para la creación de interfases de usuario de aplicaciones(UI). En este curso se explica detalladamente cómo desarrollar aplicacionesABAP con Web Dynpro.

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

� Los consultores de desarrollo responsables de adaptar y desarrollarprogramas/objetos ABAP

Prerrequisitos para el cursoConocimientos necesarios

� TAW10 (Principios básicos del Workbench ABAP)� Incluido en reservas para TAW12: TAW11 E-Learning (info detallada de

ABAP)

Conocimientos recomendados

� BC410: Programación de diálogos de usuario con dynpro

Detalles de la duración del cursoCapítulo 1: Modificación de la versión estándar del sistema SAPModificación de la versión estándar del sistemaSAP 30 Minutos

Capítulo 2: Ampliación de los elementos del DictionaryAmpliaciones de tabla 20 MinutosEjercicio 1: Ampliaciones de tabla 20 MinutosAmpliaciones de texto 30 Minutos

Capítulo 3: Ampliaciones mediante exits de clienteExits de cliente: Resumen 10 MinutosGestión de ampliaciones 20 MinutosExit de programa 40 MinutosEjercicio 2: Exit de programa 30 MinutosExit de menú 30 Minutos

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. vii

Page 8: TAW12_02

Resumen del curso TAW12_2

Ejercicio 3: Exit de menú 30 MinutosExit de dynpro 30 MinutosEjercicio 4: Exit de dynpro 45 Minutos

Capítulo 4: Add-ins empresarialesAdd-ins empresariales: Utilización 5 MinutosCreación e implementación de un BAdI 40 MinutosEjercicio 5: Creación e implementación de un BAdI 30 MinutosBAdI: Información adicional 15 Minutos

Capítulo 5: ModificacionesModificaciones 20 MinutosRealización de modificaciones 20 MinutosAsistente de modificaciones 20 MinutosEjercicio 6: Implementación de modificaciones 30 MinutosExit de usuario 10 MinutosEl Note Assistant 30 MinutosAjuste de modificaciones 30 MinutosEjercicio 7: Ajuste de modificaciones 20 MinutosEjercicio 8: Ajuste de modificaciones (opcional) 30 Minutos

Capítulo 6: AmpliacionesEl nuevo concepto de ampliación 180 MinutosEjercicio 9: Puntos de ampliación implícitos 15 MinutosEjercicio 10: Ampliaciones implícitas de clases 30 MinutosEjercicio 11: Puntos y secciones de ampliaciónexplícitos 15 Minutos

Ejercicio 12: BAdI nuevos 30 Minutos

Capítulo 7: Web Dynpro: IntroducciónWeb Dynpro: Introducción 120 MinutosEjercicio 13: Web Dynpro: Introducción 20 Minutos

Capítulo 8: Controladores Web DynproControladores Web Dynpro 40 MinutosEjercicio 14: Controladores Web Dynpro 30 Minutos

Capítulo 9: El contexto en la fase de diseñoEl contexto en la fase de diseño 70 MinutosEjercicio 15: El contexto en la fase de diseño 30 Minutos

Capítulo 10: Definición de la interfase de usuario (UI)Definición de la interfase de usuario (UI) 160 MinutosEjercicio 16: Interfase de usuario: Visualización deobjetos de Repository MIME 20 Minutos

Ejercicio 17: Interfase de usuario: visualizaciónde tablas 35 Minutos

Capítulo 11: Programación de contextos y controladoresProgramación de contextos y controladores 130 Minutos

viii © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 9: TAW12_02

TAW12_2 Resumen del curso

Ejercicio 18: Acceso al contexto en tiempo deejecución 15 Minutos

Ejercicio 19: Contexto en tiempo de ejecución:asociación de tablas internas a nodos decontexto 30 Minutos

Ejercicio 20: Contexto en tiempo de ejecución:selección de liderazgo y funciones de suministro 30 Minutos

Capítulo 12: Internacionalización y mensajesInternacionalización y mensajes 70 MinutosEjercicio 21: Internacionalización: texto traducibleen la UI 10 Minutos

Metas del cursoEste curso le permitirá:

� Utilizar elementos fundamentales de la modelación orientada a objetos enUML

� Crear programas de objetos ABAP que contengan todas las técnicas deprogramación útiles orientadas a objetos

� Utilizar las herramientas relevantes para crear objetos de Repositoryorientados a objetos

� Describir y usar las áreas de aplicación de los objetos ABAP� Definir, emitir y tratar excepciones basadas en clases� Consultar atributos de tipo y de clase en el tiempo de ejecución� Realizar modificaciones especializadas en la versión estándar del sistema

SAP� Evaluar los distintos métodos de modificación y elegir el adecuado en cada

caso� Explicar la arquitectura de un componente Web Dynpro� Describir las partes de un controlador Web Dynpro� Crear elementos de contexto en controladores Web Dynpro� Explicar cómo se puede implementar la navegación y las transferencias de

datos en componentes Web Dynpro y entre ellos� Definir la interfase de usuario de un componente Web Dynpro� Internacionalizar una aplicación Web Dynpro� Definir y enviar mensajes en un componente Web Dynpro� Definir la ayuda para entradas y la ayuda semántica para elementos de UI en

un componente Web Dynpro

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. ix

Page 10: TAW12_02

Resumen del curso TAW12_2

Objetivos del cursoAl finalizar este curso podrá:

� Utilizar elementos fundamentales de la modelación orientada a objetos enUML

� Crear programas de objetos ABAP que contengan todas las técnicas deprogramación útiles orientadas a objetos

� Utilizar las herramientas relevantes para crear objetos de Repositoryorientados a objetos

� Describir y aprovechar el rango de aplicaciones de objetos ABAP� Definir, emitir y tratar excepciones basadas en clases� Consultar atributos de tipo y de clase en el tiempo de ejecución� Realizar modificaciones especializadas en la versión estándar del sistema

SAP� Evaluar los distintos métodos de modificación y elegir el adecuado en cada

caso� Explicar la arquitectura de un componente Web Dynpro� Describir las partes de un controlador Web Dynpro� Crear elementos de contexto en controladores Web Dynpro� Explicar cómo se puede implementar la navegación y las transferencias de

datos en componentes Web Dynpro y entre ellos� Definir la interfase de usuario de un componente Web Dynpro� Internacionalizar una aplicación Web Dynpro� Definir y enviar mensajes en un componente Web Dynpro� Definir la ayuda para entradas y la ayuda semántica para elementos de UI en

un componente Web Dynpro

It is imperative that you read these notes, even if you have already completed anearlier version of this course. If available, read the list of the known errors for thiscourse as well. If it exists, this list has deliberately been saved separately from thisprinted course on SAP Service Marketplace (http://service.sap.com/curr-abap), tokeep the course as up-to-date as possible and minimize technical inputs.

x © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 11: TAW12_02

TAW12_2 Resumen del curso

Training courses recommended as preparation:

� SAPTEC� BC400� BC401� BC402� BC410� BC425� BC427� BC430� NET310

1. Learn the contents of this course including all items of the Onlinedocumentation for the respective subject areas. Solve all exercises on yourown at least once (without the help of model solutions, including all detailsand optional sections).

2. Obtain answers to any questions you have about the course materials andthe exercises.

3. Develop your own presentation methods and run through each demonstrationat least once yourself.

4. Clear up any questions you have on these methods.5. Attend this course at least once when it is held by an experienced instructor

and possibly supervise participants during an exercise yourself.

Training system:

� SAP NetWeaver 7.0 (Support Package 13 or later version) or higher (ABAPEngine is sufficient).

The training administration team should provide you with a system, includinga client. If problems arise with the server assignment, create a messageunder the component SR-KPS-ISM.

� Either a Windows Terminal Server (WTS) or local PCs with SAP GUI 6.40(at least patch level 21) or higher installed.

At the time this document was put together, the WTS address washttp://wts:1080/portal/corp/training.html→ Common_Training.

Training courses at a customer site or in a third-party training center

You can only establish a connection using the SAP Citrix Secure Gateway (SAPCSG) for training courses at the customer site. Therefore, you requirea CSG userID. The training department should have created the user ID for the course date.The training department sends you the data (user ID and password). Instructorsand participants use the same CSG user ID for the training course. Use the linkhttp://mywts.sap.com to establish a connection to the training WTS farms. Enter

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. xi

Page 12: TAW12_02

Resumen del curso TAW12_2

the CSG user ID and the password. Choose your region (US, EMEA or APJ).Choose Training - Zone. Connect to Common Training if no other WTS farmoption is executed for the training course.

Make all the preparations with regard to the following two points in accordancewith the �General instructor guide for all BC4XX courses� . It is locatedin the same area of the SAP Corporate Portal as this handbook. Refer to thegeneral handbook first.

The required system preparations are described below.

Data for exercises and demonstrations: As a rule, the necessary data has alreadybeen generated for your training client. If this is not the case, (for example, ifyour training course takes place at a customer site) you will have to run the datageneration program (report SAPBC_DATA_GENERATOR). This will queryyou on the type and quantity of the data. Select the standard setting and set theindicator for Postings also cancelled.

User IDs and initial passwords for participants: Unlike the application data,you must always generate the user IDs. Use the (locked) user ID TAW12_USER asa copy template.

Change requests for participants� exercises: In the program used to generateuser IDs (transaction ZUSR), you also have the option of creating a commonchange request that contains a task for each user generated in this way. Use it.

Presentation: Make sure you can open the offline presentation for this trainingcourse (version 63).

Example objects: All repository objects for this training course belong to thefollowing packages BC401, BC425, DNW7AW, and NET310. The followingnaming conventions were used for the course objects:

� ...BC401_CCC D_...: Demonstration and example objects� ...BC401_CCC S_...: Model solutions� ...BC401_CCC T_...: Templates

In each case, CCC is a three-character unit code.

Atención: Never modify these standard objects. Always create copies, ifyou want to change something for demonstration purposes. Otherwise,you may cause errors in other objects, or prevent other courses from beingheld in this system.

The same applies for your course participants. If, however, you use thecorrect copy template for their user IDs, they will probably not have theauthorization to do so.

General notes for the course: The time specifications are recommendationsonly. They contain sufficient time �intervals� for more detailed questions.However, you should bear in mind that the more participants learn, the more

xii © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 13: TAW12_02

TAW12_2 Resumen del curso

questions they tend to ask. The group may not be particularly homogenous. Youmust always guarantee that the entire content can be presented. We recommendkeeping within the time limits from the very start.

The course materials should be suitable for participants to work through againafter the course. This is why we provide extensive explanations and additionalinformation. It is your task to pick out the most important statements in thematerial. The decisive factor should be the graphics that appear in the offlinepresentation and the aspects they represent.

Similar principles apply to the objects of all packages. These packages containmore objects than you will need to present the course successfully. Much of thecode is also available as source code extracts in the presentation or in participants�material (or both). It is up to you whether you want to discuss these in detail,use the demonstration objects themselves, or create similar objects during thepresentation and use them. We recommend direct demonstration in the system.

Additional notes for instructors: In addition to these general notes, you will findadditional, more detailed notes in each unit and lesson. You will also find othershort notes in the material wherever we believe they are necessary to ensure thatthe content is explained in sufficient detail.

Introductory phase at the start of the course:

� Introduce yourself as the course instructor� Outline organizational issues� Introduction of participants (optional, depends on time available.)� Overview of the course material� References to more in-depth information� Overview of the course content

Additional Information about Certification

� Open the browser and enter the following link: http://www.sap.com/ser-vices/education/certification/index.epx. Select the following criteria: SAPNetWeaver, Development, Developer/Development Consultant. For moreinformation, select the following option on the next page: SAP CertifiedDevelopment Associate - ABAP - SAP NetWeaver 7.0.

Other Training Courses

� TAW10� TAW11

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. xiii

Page 14: TAW12_02

Resumen del curso TAW12_2

xiv © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 15: TAW12_02

Capítulo 11 Modificación de la versión estándar

del sistema SAP

Resumen del capítulo� Resumen de las opciones de ajuste y diagrama de decisiones para seleccionar

una técnica de ajuste.� Tipos de ampliación

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

� Describir los distintos niveles en los que se pueden realizar modificacionesen la versión estándar que suministra SAP.

� Elegir el método más adecuado para modificar el sistema estándar.� Enumerar los tipos de ampliación disponibles y explicar sus usos.

Contenido del capítuloLección: Modificación de la versión estándar del sistema SAP ... . . . . . . . . . .2

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 1

Page 16: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Lección:2

Modificación de la versión estándar del sistema SAPDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección se ofrece un resumen de las opciones disponibles para modificarel sistema SAP y se esbozan las directrices que le ayudarán a decidir qué opciónelegir. Se explican también los principios de las distintas opciones de ampliación.

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

� Describir los distintos niveles en los que se pueden realizar modificacionesen la versión estándar que suministra SAP.

� Elegir el método más adecuado para modificar el sistema estándar.� Enumerar los tipos de ampliación disponibles y explicar sus usos.

-

Ejemplo empresarialDesea conocer las opciones disponibles para modificar y ampliar el sistema SAP.

2 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 17: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Opciones para modificar un sistema SAP

Gráfico 1: Diagrama general del curso: Modificación de la versión estándardel sistema SAP

Gráfico 2: Niveles de modificación

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 3

Page 18: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Puede diseñar el sistema R/3 según sus necesidades de los modos siguientes:

� Customizing: Esto implica configurar funciones y procesos empresarialesespecíficos para su sistema de acuerdo con la Guía de implementación.Por ello, todas las modificaciones posibles se han pensado y organizado aconciencia.

� Personalización: Significa realizar modificaciones en determinadosatributos de visualización globales de campos (configurar valorespredeterminados o campos ocultos), además de crear secuencias de menúespecíficas de usuario.

� Modificación: Se trata de modificaciones en los objetos del RepositorySAP realizados en el centro del cliente. Si SAP suministra una versiónmodificada del objeto, el sistema del cliente se debe ajustar para reflejarestas modificaciones. Antes del release 4.0B, estos ajustes tenían quehacerse manualmente mediante utilidades de actualización. A partir delrelease 4.5A, este procedimiento se ha automatizado gracias al Asistente demodificaciones.

� Ampliación: Esto implica crear objetos de Repository para clientesindividuales que hacen referencia a objetos que ya existen en el RepositorySAP.

� Desarrollos de cliente: Hace referencia a la creación de objetos deRepository únicos para clientes individuales en un área de nombresespecífico reservado para nuevos objetos de cliente.

El Customizing y la mayor parte de la personalización se realiza medianteherramientas disponibles en el SAP Business Engineer; los desarrollos de cliente,las ampliaciones y las modificaciones se realizan mediante las herramientasdisponibles en el Workbench ABAP.

4 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 19: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Gráfico 3: Procedimiento para funciones de modificación

Si el Customizing o la personalización no pueden satisfacer sus requisitos, puedeiniciar un proyecto de desarrollo o usar una solución Complementary SoftwareProduct (CSP) si se dispone de ella. En SAP Service Marketplace encontrará unlistado de las soluciones CSP certificadas por SAP, bajo el alias /softwarepartner.

En la categoría de desarrollo del cliente se incluye un proyecto de desarrollo sila versión estándar de SAP no contiene ya funciones parecidas a la que se estáintentando desarrollar. Sin embargo, si existe una función SAP parecida, intenteasimilarla en su proyecto de desarrollo ampliando o modificándola mediante unexit de usuario o simplemente haciendo una copia del programa SAP adecuado.

Las modificaciones pueden provocar problemas: Después de un upgrade, lasnuevas versiones de objetos SAP se deben comparar con las versiones modificadasde objetos SAP que ha creado y modificado en caso necesario. Antes del release4.0B, estos ajustes tenían que hacerse manualmente mediante utilidades deactualización. A partir del release 4.5A, este procedimiento se ha automatizadogracias al Asistente de modificaciones.

Así pues, sólo debería realizar modificaciones si:

� El Customizing o la personalización no pueden cubrir sus necesidades.� No hay previstos exits de usuario ni ampliaciones similares.� No tiene sentido copiar el objeto SAP en el área de nombres de cliente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 5

Page 20: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Gráfico 4: Customizing

Show your students the Implementation Guide. (Select the menu path Tools ->Customizing -> IMG -> Execute Project. Choose the Display SAP ReferenceIMG button). Perform a simple Customizing transaction, for example: SAPCustomizing Implementation Guide -> Enterprise structure -> Definition ->Logistics - General -> Define, copy, delete, check division. Enter PB for plasticbags. Use the Customizing Organizer to show them the table and view currentlybeing edited.

El Business Engineer está compuesto por todas las herramientas deimplementación de SAP. Esto incluye:

� El Modelo de referencia R/3Contiene todos los modelos que describen elsistema R/3 (los modelos de proceso, datos y organización).

� La Guía de implementación (IMG) Visualiza una lista de todas lasactividades IMG.

6 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 21: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Gráfico 5: Personalización

Show how to make Global Field Settings Guide (Tools -> Accelerated SAP ->Personalization -> Global Field Values, which starts Transaction SHDG). Hereyou choose Application Components -> Financial Accounting. Choose "ChangeGlobal Fields" for Financial Accounting. Set Company Code 1000. Mark thesub-tree and activate. However, in most of the training systems your settingswon�t take effect because the profile parameter "dynpro/global_fields" is not set to"Yes" but has its default value "No".

Show how the administrator can make client-wide ("global") table controlsettings. Starting your demo with transaction VA01 you can also showSET-/GET-Parameter: then choose:

� Order Type "CD" (Delivery free of Charge)

� Sales organization 1000

� Distribution Channel 10

� Division 00

Now press green check. Sold-to-party and Ship-to-party should be 1000. Inthe sales items you can insert material M-05, a quantity and a price. Save yourwork. You can change the table control now: Move some columns. Now you canpress the settings button. Choose the administrator functionality. Set the column"Customer material no." invisible. Activate your settings. Now leave transactionVA01 and start TA VA21 (Create Quotation) or VA03 (Display Sales Order).Explain why the order number is already in the field. Show the table control "Allitems" where you changed the settings.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 7

Page 22: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Personalización acelera y simplifica el procesamiento de los flujos de procesoprocesados por el sistema R/3. Durante la personalización, las transacciones deaplicación individuales se ajustan para cubrir las necesidades empresariales de lacompañía en su conjunto o las necesidades de grupos de usuarios específicosdentro de la compañía. Todas las funciones y los datos innecesarios encontradosen la transacción se desactivan.

Los atributos de visualización globales permiten definir valores predeterminadospara campos de dynpro específicos. También se pueden suprimir columnasde control de tabal o campos individuales de una transacción concreta o detoda la pantalla.

Los menús basados en roles, los favoritos y los accesos rápidos del Escritoriopermiten ajustar las secuencias de menús de modo que reflejen las necesidades dedistintos grupos de usuarios en la empresa.

Gráfico 6: Niveles de modificación mediante el Workbench ABAP

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 losclientes en objetos del área de nombres de SAP).

� En varios puntos de los objetos de Repository SAP son "de codificación fija".

Los desarrollos de cliente son programas desarrollados por los clientes que puedenllamar objetos del Repository SAP. Ejemplo: Un cliente crea un programa quellama un módulo de funciones de SAP.

8 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 23: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Los conceptos de ampliación incluyen la versión contraria de este principio:Los programas SAP llaman objetos del Repository que el cliente ha creado omodificado. Ejemplo: Se usa un exit de módulo de funciones llamado por unprograma SAP. Puede ampliar el sistema en los niveles siguientes:

� En programas ABAP (exits de módulo de funciones)� En interfases GUI (exits de menú)� En pantallas, mediante la inserción de una subscreen en un área especificada

por SAP (exit de dynpro)� En pantallas, mediante el procesamiento del código de cliente que hace

referencia a un campo específico en la pantalla (exit de campo)� En estructuras o tablas de Dictionary ABAP (ampliaciones de tabla)

Gráfico 7: Ampliaciones de tabla

SAP proporciona dos formas de añadir tablas y estructuras a campos.

� Estructuras append� Includes del Customizing (�includes CI�)

Ambas técnicas permiten adjuntar campos a una tabla sin tener que modificar latabla propiamente dicha.

Una estructura append es una estructura que está asignada exactamente a unatabla. Puede haber varias estructuras append para una tabla. Durante la activación,el sistema busca todas las estructuras append activas para la tabla en cuestión ylas adjunta a la tabla.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 9

Page 24: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Las estructuras append difieren de las estructuras include en el modo en que hacenreferencia a las tablas. Para incluir campos de una estructura include en unatabla, debe añadir una línea ��.INCLUDE...� a la tabla. En este caso, la tablahace referencia a la subestructura. Las estructuras append, en cambio, hacenreferencia a las tablas. En este caso, las tablas propiamente dichas no se modificanen modo alguno según la referencia.

Gráfico 8: Ampliaciones de tabla: SAP y el cliente

Las estructuras append permiten adjuntar campos a una tabla sin tener quemodificar la tabla propiamente dicha. Por ello, las ampliaciones de tabla que usanestructuras append no tienen que ser planificadas por desarrolladores SAP. Unaestructura append sólo puede pertenecer exactamente a una tabla.

En cambio, los includes CI permiten usar la misma estructura en varias tablas. Lasentencia include debe existir ya en la estructura o en la tabla SAP. No obstante,las ampliaciones de tabla que usan includes CI sí deben ser planificadas pordesarrolladores SAP.

10 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 25: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Gráfico 9: Ampliaciones del programa: Funcionamiento

La finalidad de una ampliación de programa siempre es llamar un objeto en el áreade nombres de cliente. Puede utilizar las técnicas siguientes:

� Exits de cliente: La aplicación SAP llama un módulo de funciones de exitespecial. El módulo de funciones forma parte de un grupo de funcionesgestionado de forma especial por el sistema.

� Eventos de operación: el programa de aplicación SAP llama dinámicamenteun módulo de funciones en el área de nombres de cliente.

� Add-ins empresariales: el programa de aplicación llama un método de unaclase o una instancia de una clase. Esta clase se encuentra en el área denombres de cliente.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 11

Page 26: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Gráfico 10: Ampliaciones del programa: SAP y el cliente

Las ampliaciones de programa permiten ejecutar lógica de programa adicionalpara un programa de aplicación SAP. En la actualidad, SAP proporciona lastécnicas mencionadas.

Las ventajas y las restricciones de cada técnica de ampliación concreta sedescriben en detalle en otras unidades.

Gráfico 11: Ampliaciones de menú: SAP y el cliente

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

Page 27: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Las ampliaciones de menú permiten añadir entradas adicionales a un menúestándar de SAP. El sistema ofrece dos opciones en este caso:

� Exits de cliente� Add-ins empresariales

Las opciones de menú adicionales se fusionan en la interfase GUI.

Cuando se implementa el código de función, se puede modificar el texto de laopción de menú y se pueden modificar los iconos si el desarrollador SAP lo haespecificado así.

Gráfico 12: Ampliaciones de pantalla

Los exits de dynpro son un tipo de exit de cliente. Permiten visualizar objetosadicionales en una pantalla del programa de aplicación de SAP. El desarrolladorSAP debe:

� Definir las áreas subscreen.� Especificar las llamadas correspondientes en la lógica de proceso.� Proporcionar el framework para transportar los datos.� Incluir el exit de dynpro en una ampliación.� Actualizar la documentación.

A partir de SAP Web Application Server 6.20, los add-ins empresariales tambiénpueden contener exits de dynpro.

Puede implementar exits de dynpro creando subscreens, mediante la lógica deproceso, por ejemplo. También hay que implementar el transporte de datos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 13

Page 28: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

En la unidad �Ampliaciones con exits de cliente� se describe cómo implementarexits de dynpro para exits de dynpro �tradicionales�. En la unidad �Add-insempresariales� se explica cómo implementar estos exits para exits de dynpronuevos.

Gráfico 13: Modificaciones

Cualquier cambio que realice en un objeto de su sistema suministrado por SAP sedenomina modificación.

Las modificaciones pueden provocar complicaciones durante el siguiente upgradedel sistema. Cuando SAP suministra una nueva versión del objeto, se debe decidirsi se debe usar el nuevo objeto o si se desea seguir usando el objeto anterior.

Antes del release 4.0B, las modificaciones sólo se registraban en el nivel de objetodel Repository (por ejemplo, un programa include).

A partir del release 4.5A, se ha usado una granularidad más precisa para registrarmodificaciones. Esto ha sido posible gracias al Asistente de modificaciones, comoveremos en la unidad �Modificaciones�.

También se ha revisado el proceso de ajuste de las modificaciones. En la unidad"Modificaciones" también se explica cómo reconciliar las modificaciones.

14 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 29: TAW12_02

TAW12_2 Lección: Modificación de la versión estándar del sistema SAP

Discusión con moderador-

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

-

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 15

Page 30: TAW12_02

Capítulo 1: Modificación de la versión estándar del sistema SAP TAW12_2

Resumen de la lección

Ahora podrá:� Describir los distintos niveles en los que se pueden realizar modificaciones

en la versión estándar que suministra SAP.� Elegir el método más adecuado para modificar el sistema estándar.� Enumerar los tipos de ampliación disponibles y explicar sus usos.

16 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 31: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Describir los distintos niveles en los que se pueden realizar modificaciones

en la versión estándar que suministra SAP.� Elegir el método más adecuado para modificar el sistema estándar.� Enumerar los tipos de ampliación disponibles y explicar sus usos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 17

Page 32: TAW12_02

Resumen del capítulo TAW12_2

18 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 33: TAW12_02

Capítulo 217 Ampliación de los elementos del

Dictionary

Resumen del capítulo� Estructuras append� Includes del Customizing� Ampliaciones de texto

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

� Ampliar tablas mediante estructuras append.� Ampliar tablas mediante includes del Customizing.� Sobrescribir etiquetas de campo y documentación para elementos de datos

de SAP sin realizar modificaciones

Contenido del capítuloLección: Ampliaciones de tabla .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Ejercicio 1: Ampliaciones de tabla .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Lección: Ampliaciones de texto .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 19

Page 34: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Lección:18

Ampliaciones de tablaDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta lección se demuestra cómo se pueden usar estructuras append e includesdel Customizing elaborados por SAP para insertar campos de cliente adicionalesen estructuras de tabla SAP.

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

� Ampliar tablas mediante estructuras append.� Ampliar tablas mediante includes del Customizing.

-

Ejemplo empresarialDesea que las tablas SAP contengan más campos, pero no quiere tener queimplementar modificaciones.

20 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 35: TAW12_02

TAW12_2 Lección: Ampliaciones de tabla

Ampliaciones de tabla

Gráfico 14: Ampliaciones del Dictionary ABAP: Diagrama general del curso

� Estructura append

� Los clientes pueden crear una estructura append para una tabla SAP(sin preparación por parte de SAP).

� Se puede usar varias estructuras append con una sola tabla SAP.� Se pueden usar del mismo modo que las estructuras normales en

programas.� Include del Customizing

� Ya integrado en las tablas SAP por SAP.� El cliente lo completa con los campos adicionales que desee.� Puede contener código fuente o exits de dynpro facilitados por SAP

para procesar o visualizar los campos.

Las tablas y las estructuras se pueden ampliar de una de estas dos formas:

Las estructuras append permiten ampliar las tablas añadiendo campos que noforman parte de la versión estándar del sistema. Con las estructuras append, losclientes pueden añadir sus propios campos a la tabla o estructura que deseen.

Las estructuras append se crean para utilizarse con una tabla específica. Sinembargo, una tabla puede tener asignadas diversas estructuras append.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 21

Page 36: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Si se sabe de antemano que es necesario añadir campos específicos de cliente a unade las tablas o estructuras proporcionadas por SAP, el desarrollador SAP incluiráestos campos en la tabla mediante una sentencia de include de Customizing.

El mismo include del Customizing se puede usar en múltiples tablas o estructuras.De este modo se garantiza la coherencia en estas tablas y estructuras aunque seamplíe el include.

No se producen errores por includes de Customizing inexistentes.

Gráfico 15: Estructuras append

Las estructuras append permiten adjuntar campos a una tabla sin tener quemodificar la tabla propiamente dicha.

Una estructura append es una estructura que está asignada exactamente a unatabla. Puede haber varias estructuras append para una tabla. Cada vez que seactiva una tabla, el sistema busca todas las estructuras append activas para latabla en cuestión y las adjunta a la tabla. Si se crea o se modifica una estructuraappend, la tabla a la que esté asignada también se activará, y las modificacionesse reflejarán en ella cuando se active.

Los campos en estructuras append de programas ABAP se pueden usar comocualquier otro campo en la tabla.

Consejo: Si copia una tabla a la que se ha añadido una estructura append,los campos de la estructura append pasarán a ser campos normales dela tabla de destino.

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

Page 37: TAW12_02

TAW12_2 Lección: Ampliaciones de tabla

Gráfico 16: Estructuras append en el momento del upgrade

Las estructuras append se crean en el área de nombres de cliente. De este modo seevita que se sobrescriban durante los upgrades o los cambios de release. Durantelos upgrades se cargan nuevas versiones de las tablas estándar. Los camposincluidos en estructuras append activas se añaden entonces a las nuevas tablasestándar cuando se activan por primera vez.

Puesto que el orden de los campos en el Dictionary ABAP puede ser diferente delorden en la base de datos a partir del release 3.0, no hace falta realizar ningunaconversión cuando se añade una estructura append o se insertan campos en unaestructura append existente. La estructura se ajusta cuando se ajusta el catálogode la base de datos (ALTER TABLE). Cuando se activa en el Dictionary ABAP,la definición de la tabla se modifica, y el nuevo campo se añade a la tabla debase de datos.

Consejo: Tenga en cuenta los puntos siguientes sobre estructuras append:

� No se pueden crear estructuras append para tablas pool ni tablas cluster.� Si hay un campo largo (tipo de datos LCHR o LRAW) en una tabla, no se

puede ampliar con estructuras append. Esto se debe a que los campos largosdeben estar siempre en la última posición de la lista de campos, es decir,deben ser el último campo de la tabla. Después de ellos no se pueden añadircampos de una estructura append.

� Si usa una estructura append para ampliar una tabla SAP, los nombres decampo de la estructura append deberían estar en el área de nombres decliente, es decir, deberían empezar por YY o ZZ. De este modo se evita quehaya conflictos de nombres con los nuevos campos insertados por SAPen la tabla estándar.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 23

Page 38: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Create an append structure for table SFLIGHT00 that will be filled with data later.Create a field named ZZMEAL that refers to data element S_MEAL. Activateyour append structure. Create another field with a name not starting with ZZ orYY. Execute a syntax check. Emphasize that the database table does not recognizethe append structure: For the database it is just one table.

Show your students table AUFK. Scroll down and show them the Customizinginclude CI_AUFK. When you double-click CI_AUFK, you will see that theinclude structure does not exist yet. Create it and activate it. Show the where-usedlist for CI_AUFK to your students.

Gráfico 17: Includes del Customizing

Algunas de las tablas y estructuras proporcionadas con la versión estándar de R/3contienen sentencias include especiales: Es lo que se conoce como includes delCustomizing. A menudo, se insertan en tablas estándar a las que es necesarioañadir campos específicos del cliente.

A diferencia de las estructuras append, los includes del Customizing se puedeninsertar en más de una tabla. De este modo se garantiza la coherencia de los datosen todas las tablas y estructuras aunque se modifique el include.

Los includes del Customizing están incluidos en el área de nombres del cliente, ysus nombres empiezan por �CI_�. Esta convención para fijar nombres garantizaque no se producirán errores por includes de Customizing inexistentes. Con laversión estándar del sistema R/3 no se suministra código fuente para includesde Customizing.

24 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 39: TAW12_02

TAW12_2 Lección: Ampliaciones de tabla

Los includes de Customizing se crean mediante transacciones especiales delCustomizing. Algunas de ellas forman parte de ampliaciones de SAP y se puedencrear mediante la gestión de proyectos (véase la unidad �Ampliaciones con exitsde cliente�).

Los nombres de campo de los include del Customizing deben estar dentro del áreade nombres del cliente, como los nombres de campo de las estructuras append.Estos nombres deben empezar por �YY� o �ZZ�.

Cuando añada los campos de un include del Customizing a la base de datos,respete las normas aplicables a las estructuras append.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 25

Page 40: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

26 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 41: TAW12_02

TAW12_2 Lección: Ampliaciones de tabla

23 Ejercicio 1: Ampliaciones de tablaDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Ampliar tablas con estructuras append.

Ejemplo empresarialUsted trabaja como técnico informático para una agencia de viajes de gran tamaño.Entre otras cosas, sus compañeros usan la transacción BC425_## para mostrar lainformación sobre los vuelos a los clientes. Querrían tener más información sobreun vuelo, por ejemplo, el nombre del piloto o el menú principal.

Los datos de vuelo se guardan en la tabla SFLIGHT##. Debe añadir dos columnasa esta tabla sin modificarla.

Tarea 1:¿Cómo puede añadir estos dos campos a la tabla SFLIGHT## sin modificarla?

1. ¿Cómo puede ampliar la tabla SFLIGHT##?

2. Amplíe la tabla SFLIGHT## mediante una técnica que no requieramodificaciones.

Tarea 2:Crear una estructura append para la tabla SFLIGHT##.

1. La estructura debe incluir los siguientes elementos:

Nombre del piloto (asignación de tipo con el elemento de datosS_PILNAME)Menú (asignación de tipo con el elemento de datos S_MEAL)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 27

Page 42: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Solución 1: Ampliaciones de tablaTarea 1:¿Cómo puede añadir estos dos campos a la tabla SFLIGHT## sin modificarla?

1. ¿Cómo puede ampliar la tabla SFLIGHT##?

a) El único método posible para ampliar la tabla transparente SFLIGHT##es utilizar una estructura append, ya que no contiene includes delCustomizing.

2. Amplíe la tabla SFLIGHT## mediante una técnica que no requieramodificaciones.

a) El procedimiento se describe en detalle en las soluciones de la tareasiguiente.

Tarea 2:Crear una estructura append para la tabla SFLIGHT##.

1. La estructura debe incluir los siguientes elementos:

Nombre del piloto (asignación de tipo con el elemento de datosS_PILNAME)Menú (asignación de tipo con el elemento de datos S_MEAL)

a) Cree su estructura append mediante la opción de menú Pasar a→Estructuras append� o el pulsador correspondiente. Acepte el nombreque propone el sistema. Introduzca una descripción breve de laestructura append y grábela en el paquete que ha creado.

b) La estructura debe incluir dos campos:

Los nombres de los campos deban empezar por ZZ o YY. Por ejemplo,YYPILOT e YYMEAL.

Active la estructura append. Si se produce un error, los detalles sevisualizarán en el log de activación.

28 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 43: TAW12_02

TAW12_2 Lección: Ampliaciones de tabla

Resumen de la lección

Ahora podrá:� Ampliar tablas mediante estructuras append.� Ampliar tablas mediante includes del Customizing.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 29

Page 44: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Lección:26

Ampliaciones de textoDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección se explica cómo sobrescribir textos suministrados con elementosde datos de SAP con textos específicos de cliente. Estos textos específicos decliente se visualizan luego en pantallas e imágenes de selección en lugar del textoproporcionado por SAP.

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

� Sobrescribir etiquetas de campo y documentación para elementos de datosde SAP sin realizar modificaciones

-

Ejemplo empresarialLe gustaría sobrescribir etiquetas de campo y documentación para elementos dedatos de SAP con textos específicos del cliente.

30 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 45: TAW12_02

TAW12_2 Lección: Ampliaciones de texto

Ampliaciones de texto

Gráfico 18: Ampliaciones de texto: Resumen

Las ampliaciones de texto abarcan etiquetas de campo específicas de cliente ydocumentación para elementos de datos de SAP.

Funcionan en todas las aplicaciones de SAP que usan el elemento de datos encuestión (es decir, se trata de ampliaciones globales).

Gráfico 19: Sobrescritura de etiquetas de campo de SAP (1)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 31

Page 46: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Los programadores de aplicaciones de SAP definen etiquetas de campo dedistintas longitudes e introducen una descripción brece de cada elemento de datos.Los clientes pueden sobrescribir estos textos con textos propios.

De este modo se pueden proporcionar etiquetas de campo nuevas para todos loscampos de dynpro.

Gráfico 20: Sobrescritura de etiquetas de campo de SAP (2)

Las ampliaciones de texto se editan con la gestión de proyectos. (SeleccioneWorkbench ABAP→ Utilidades→ Ampliaciones→ Gestión de proyectos) (ointroduzca la transacción CMOD).

Seleccione � Pasar a→ Ampliaciones globales � para abrir la ampliación deetiquetas de campo y documentación (sobrescritura) para elementos de datosde SAP.

Change the field labels (keywords) for one data element that is used in transactionVA01, for example VKORG. Show your students the results in transactions VA01.You can also change the field label of a text with attribute "F", that is, no changeswill be accepted. An example for that is the data element PROGRAMM, which isused in transaction SE38 and SA38.

32 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 47: TAW12_02

TAW12_2 Lección: Ampliaciones de texto

Gráfico 21: Requisitos previos para sobrescribir una etiqueta de campode SAP

Sólo se pueden sobrescribir las etiquetas de campos de dynpro a los que eldesarrollador del dynpro no haya asignado explícitamente un texto descriptivo. Enestos casos, el atributo de campo de dynpro �Dict. modificado� tiene el valor �F�.

El atributo �Dict. modificado� puede tener los valores siguientes:

� ESPACIO: La etiqueta de campo que encaje 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.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 33

Page 48: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Gráfico 22: Textos sobrescritos durante upgrades

Si SAP vuelve a entregar etiquetas de campo existentes, tendrá que restablecersus etiquetas de campo de cliente después de un upgrade de release o después deimportar nuevas correcciones. Si desea conservar sus propias etiquetas de campodel release anterior, seleccione la opción de menú que restablece las etiquetas decampo de cliente. SAP recomienda restablecer siempre las etiquetas de campodespués de realizar un upgrade de release.

Las etiquetas de campo se restablecen mediante un programa que se ejecuta enproceso de fondo. Este programa verifica todos los elementos de datos editados yrestablece sus etiquetas de campo en caso necesario.

En el caso de las etiquetas de campos centrales, como los elementos de datosBUKRS, MANDT y otros, se recomienda iniciar el restablecimiento cuando elcontenido de las tablas que usen BUKRS y MANDT no esté siendo modificado.En caso contrario, la activación del elemento de datos podría fallar y el statuspasaría a ser el de sólo parcialmente activo.

34 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 49: TAW12_02

TAW12_2 Lección: Ampliaciones de texto

Gráfico 23: Restablecimiento de etiquetas de campo de SAP

Para deshacer las modificaciones en etiquetas de campos, seleccione la opción demenú para restablecer las etiquetas de campo de SAP.

Las etiquetas de campo se restablecen mediante un programa que se ejecuta enproceso de fondo. Este programa verifica todos los elementos de datos editados yrestablece sus etiquetas de campo en caso necesario.

En el caso de las etiquetas de campos centrales, como los elementos de datosBUKRS, MANDT y otros, se recomienda iniciar el restablecimiento cuando elcontenido de las tablas que usen BUKRS y MANDT no esté siendo modificado.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 35

Page 50: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Gráfico 24: Documentación ampliada para elementos de datos

Cuando se amplía la documentación del elemento de datos, se puede copiar ladocumentación de SAP como propia. En este caso, cuando seleccione F1 para elcampo de dynpro correspondiente, el sistema visualizará la documentación deSAP y la documentación específica del cliente.

Se puede generar una lista de los elementos de datos modificados y editarla documentación de cliente relevante; para ello, seleccione las líneascorrespondientes en la lista.

Sólo tendrá que borrar la documentación propia si desea que se visualice ladocumentación original de SAP.

36 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 51: TAW12_02

TAW12_2 Lección: Ampliaciones de texto

Gráfico 25: Creación de documentación de cliente

El acceso vía menús descrito en el gráfico anterior abre una ventana de diálogo enla que se debe elegir �Texto original� o �Modelo�. Seleccione la primera opciónsi desea añadir datos a la documentación de SAP. Seleccione la segunda opciónsi desea crear documentación específica de cliente sin incluir la documentaciónoriginal de SAP.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 37

Page 52: TAW12_02

Capítulo 2: Ampliación de los elementos del Dictionary TAW12_2

Discusión con moderador-

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

-

38 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 53: TAW12_02

TAW12_2 Lección: Ampliaciones de texto

Resumen de la lección

Ahora podrá:� Sobrescribir etiquetas de campo y documentación para elementos de datos

de SAP sin realizar modificaciones

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 39

Page 54: TAW12_02

Resumen del capítulo TAW12_2

Resumen del capítuloAhora podrá:� Ampliar tablas mediante estructuras append.� Ampliar tablas mediante includes del Customizing.� Sobrescribir etiquetas de campo y documentación para elementos de datos

de SAP sin realizar modificaciones

40 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 55: TAW12_02

Capítulo 335 Ampliaciones mediante exits de

cliente

Resumen del capítulo� Introducción� Gestión de ampliaciones� Exits de módulo de funciones� Exits de menú� Exits de dynpro

� Usar exits de programa, de menú y de dynpro creados mediante técnicas deexit de cliente.

� Explicar qué son los componentes, las ampliaciones y los proyectos deampliación.

� Crear proyectos de ampliación y tratar ampliaciones y sus componentes.� Explicar cómo añadir proyectos de ampliación a órdenes de modificación.� Transportar proyectos de ampliación.

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

� Explicar cómo están organizados los exits de cliente y los principios básicosde su utilización

� En esta lección se explican los aspectos fundamentales de un proyecto deampliación que se debe usar para implementar exits de cliente existentes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 41

Page 56: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

� Buscar exits de programa implementados mediante exits de cliente y usarlospara ampliar las funciones.

� Explicar cómo funcionan los exits de menú implementados mediante exits decliente.

� Buscar y usar estos exits de menú.� Desea buscar y usar exits de dynpro implementados mediante exits de cliente.

Contenido del capítuloLección: Exits de cliente: Resumen... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Lección: Gestión de ampliaciones.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Lección: Exit de programa... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Ejercicio 2: Exit de programa ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67Lección: Exit de menú.... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

Ejercicio 3: Exit de menú ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Lección: Exit de dynpro .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

Ejercicio 4: Exit de dynpro ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

42 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 57: TAW12_02

TAW12_2 Lección: Exits de cliente: Resumen

Lección:37

Exits de cliente: ResumenDuración de la lección: 10 Minutos

Resumen de la lecciónEn esta lección se ofrece una visión de conjunto de los exits de cliente.

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

� Explicar cómo están organizados los exits de cliente y los principios básicosde su utilización

-

Ejemplo empresarialDesea ver un resumen de los usos de sus exits de cliente.

Exits de cliente (resumen)

Gráfico 26: Ampliaciones de aplicación de SAP

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 43

Page 58: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Las ampliaciones de aplicación permiten a los clientes añadir funciones deaplicación. SAP planifica previamente los exits de cliente, que generalmente estáncompuestos por varios componentes.

Las ampliaciones de aplicación no están activas cuando se entregan, y los clientespueden completarlas y activarlas a medida que las necesiten.

La ampliación de aplicación cuenta con las características siguientes:

� Cada ampliación proporciona un conjunto de funciones definidas conprecisión y planificadas previamente.

� Cada interfase entre las funciones del cliente y SAP está definida conclaridad.

� Como cliente, no hace falta que sepa cómo implementar aplicaciones de SAP.� No hace falta ajustar las ampliaciones tras un upgrade debido a nuevas

funciones desarrolladas por SAP.

Gráfico 27: Proyecto de ampliación del cliente

Los programadores de SAP crean ampliaciones de SAP a partir de exits deprograma, exits de menú y exits de dynpro. Para este fin hay disponible unafunción de gestión (código de transacción SMOD).

Los clientes cuentan con una lista de las ampliaciones de SAP existentes y puedenagrupar las ampliaciones deseadas en un proyecto de ampliación mediante unafunción de gestión separada (transacción CMOD).

44 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 59: TAW12_02

TAW12_2 Lección: Exits de cliente: Resumen

Gráfico 28: Ampliaciones y proyectos de ampliación

Las ampliaciones de SAP están integradas por componentes. Estos componentesincluyen exits de programa, exits de menú y exits de dynpro. Un componenteespecífico sólo se puede usar una vez en todas las ampliaciones de SAP (de estemodo se garantiza que las ampliaciones de SAP son exclusivas).

Los proyectos de ampliación de cliente están formados por ampliaciones de SAP.Cada ampliación de SAP se puede usar sólo una vez en todos los proyectos deampliación de cliente (de este modo se garantiza que un proyecto de clientees exclusivo).

Create an enhancement project and record your actions using the WorkbenchOrganizer.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 45

Page 60: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Discusión con moderador-

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

-

46 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 61: TAW12_02

TAW12_2 Lección: Exits de cliente: Resumen

Resumen de la lección

Ahora podrá:� Explicar cómo están organizados los exits de cliente y los principios básicos

de su utilización

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 47

Page 62: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Lección:41

Gestión de ampliacionesDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta lección se explican los aspectos fundamentales de un proyecto deampliación que se debe usar para implementar exits de cliente existentes.

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

� En esta lección se explican los aspectos fundamentales de un proyecto deampliación que se debe usar para implementar exits de cliente existentes.

-

Ejemplo empresarialDesea conocer el principio de proyecto de ampliación en el entorno de exit decliente.

Proyecto de ampliación: principios fundamentales

Gráfico 29: Procedimiento de creación de ampliación de SAP

48 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 63: TAW12_02

TAW12_2 Lección: Gestión de ampliaciones

El programador de SAP planifica las posibles ampliaciones de aplicación en unaaplicación y define los componentes necesarios. Estos componentes se agrupan enampliaciones de SAP.

El programador documenta las ampliaciones de modo que los clientes puedanimplementar las ampliaciones sin tener que analizar el código fuente del programao el dynpro.

Gráfico 30: Procedimiento en la sede del cliente

En primer lugar, cree un proyecto de ampliación y luego elija las ampliacionesde SAP que desee usar.

A continuación, edite los componentes individuales mediante la función de gestiónde proyecto y documente todo el proyecto de ampliación.

Finalmente, active el proyecto de ampliación (de este modo se activarán todoslos componentes del proyecto).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 49

Page 64: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 31: Creación de un proyecto de ampliación del cliente

La transacción CMOD inicia la función de gestión de proyecto. Introduzca unnombre para el proyecto de ampliación. SAP recomienda utilizar una convenciónpara fijar nombres para los proyectos. Por ejemplo, puede incluir el nombre de latransacción o el modulpool en el nombre del proyecto. El nombre del proyectoidentifica de forma exclusiva la ampliación en el sistema.

A continuación, vaya a los atributos del proyecto e introduzca un texto breve parael proyecto de ampliación. El sistema introduce los demás atributos (sello con elnombre y cronomarcador para creación y modificación, y status).

50 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 65: TAW12_02

TAW12_2 Lección: Gestión de ampliaciones

Gráfico 32: Asignación de ampliaciones de SAP a un proyecto de cliente

Use la función de gestión de proyecto para asignar ampliaciones de SAP aproyectos de ampliación del cliente. Introduzca los nombres de las ampliacionesde SAP que desea utilizar en la pantalla adecuada.

La función de búsqueda visualiza una lista de ampliaciones de SAP existentes. Enella puede seleccionar las ampliaciones que le interesen.

Gráfico 33: Edición de componentes

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 51

Page 66: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Use la función de gestión de proyecto para editar los componentes del proyectode ampliación.

En función de si el componente que está editando es un módulo de funciones, unaopción de menú o una subscreen, pasará al Function Builder a una ventana dediálogo para introducir opciones de menú o a un Screen Painter.

Gráfico 34: Activación de proyectos de ampliación

Cuando se activa un proyecto de ampliación, afecta a todos los componentes.Después de haber activado con éxito el proyecto, tendrá el status activo.

Cuando se activa el proyecto, todos los programas, pantallas e interfases de menúque contengan componentes pertenecientes al proyecto también se volverán agenerar (los programas no se regeneran hasta que se inician). Después de laactivación, las ampliaciones se pueden ver en las funciones de la aplicación.

Puede usar la función Desactivar para reiniciar el status de un proyecto deampliación activo a inactivo.

Gráfico 35: Transporte de proyectos

52 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 67: TAW12_02

TAW12_2 Lección: Gestión de ampliaciones

Para garantizar que el proyecto de ampliación se transporte con coherencia, asigneel proyecto de ampliación propiamente dicho y todos sus componentes (programasde include, subscreens e includes con modulpools de subscreen) a una o variastareas como parte de una única solicitud de modificación.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 53

Page 68: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Discusión con moderador-

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

-

54 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 69: TAW12_02

TAW12_2 Lección: Gestión de ampliaciones

Resumen de la lección

Ahora podrá:� En esta lección se explican los aspectos fundamentales de un proyecto de

ampliación que se debe usar para implementar exits de cliente existentes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 55

Page 70: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Lección:48

Exit de programaDuración de la lección: 40 Minutos

Resumen de la lecciónEn esta lección se explica cómo funciona un exit de programa implementadomediante un exit de cliente y se enumeran los usos posibles.

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

� Buscar exits de programa implementados mediante exits de cliente y usarlospara ampliar las funciones.

-

Ejemplo empresarialDesea buscar exits de programa implementados mediante exits de cliente y usarlospara ampliar las funciones.

Exits de cliente: Exit de programa

Gráfico 36: Resumen del exit de programa

56 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 71: TAW12_02

TAW12_2 Lección: Exit de programa

Los exits de programa permiten a los clientes implementar lógica adicional enfunciones adicionales. Los programadores de SAP definen el lugar en el que seinsertan los exits de módulo de programa y qué tipo de datos transfieren. Losprogramadores de SAP crean además los módulos de funciones correspondientes,acompañados de un texto breve, una interfase y la documentación, y describen lasfunciones asignadas a un exit de programa en la documentación de SAP.

El código fuente de los módulos de funciones los escribe el usuario. En casonecesario, cree pantallas, elementos de texto e includes propios para el grupode funciones.

El sistema sólo procesa el código ABAP cuando se activa el proyecto deampliación (del cual forma parte su módulo de funciones). Antes, los exits deprograma no tendrán efecto alguno.

Gráfico 37: Exit de programa: Arquitectura

En este gráfico se muestra el flujo de un programa que proporciona una ampliaciónen forma de exit de programa.

El módulo de funciones de exit es llamado en un punto del texto fuente definidopor el desarrollador SAP. Dentro del módulo de funciones, los usuarios puedenañadir una función al área de nombres de cliente mediante un include.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 57

Page 72: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 38: Exit de programa: Sintaxis

El programador de SAP define la llamada del módulo de funciones mediantela sentencia ABAP CALL CUSTOMER-FUNCTION �nnn�. �nnn� representaun número de tres dígitos. El programador de SAP crea también el grupo defunciones y el módulo de funciones correspondientes.

Estos módulos de funciones siempre pertenecen a grupos de funciones cuyosnombres empiezan por X (grupo de funciones X).

La siguiente convención para fijar nombres se aplica a los módulos de funciones:

� Prefijo: EXIT� Nombre: Nombre del programa que llama el módulo de funciones� Sufijo: Número de tres dígitos� Las tres partes del nombre están separadas por un carácter de subrayado.

La sentencia CALL CUSTOMER-FUNCTION sólo se ejecuta tras haber activadoel proyecto de ampliación. Si se llama varias veces el mismo módulo de funciones,la activación será válida para todas las llamadas.

58 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 73: TAW12_02

TAW12_2 Lección: Exit de programa

Gráfico 39: Búsqueda de exits de programa

¿Cómo se puede saber si un programa de aplicación contiene un exit de programa?Se trata de una cuestión clave para todo tipo de ampliaciones. Hay varias formasde averiguarlo.

Para saber con rapidez si un programa de aplicación ofrece un exit de módulo defunciones, puede usar la opción que se muestra en el lado izquierdo del gráfico:Navegue por el programa tal y como se ha descrito anteriormente hasta encontrarun string de caracteres determinado. Seleccione Sistema→ Status para ver elnombre del programa de aplicación. En nuestro ejemplo, un string de caracteresadecuado sería �CALL CUSTOMER�. Realice la búsqueda globalmente en elprograma. Si la búsqueda no obtiene resultados, puede definir un área de búsquedamayor: Determine el entorno para el programa correspondiente y busque el stringde caracteres específico en el entorno del programa.

En el lado derecho del gráfico se muestran las herramientas que se pueden usarpara buscar el nombre de la ampliación necesaria. Puede delimitar la búsquedaen el Sistema de Información del Repository ABAP según distintos criterios:Estos son:

� Paquete (pruebe también con entradas genéricas)� Nombre técnico de la ampliación

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 59

Page 74: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 40: Edición de exits de programa

Show your students a simple transaction, for example, BC425_00. Identify theneed for a customer enhancement.

Show how to find the corresponding enhancement in the Repository InformationSystem.

Go back to the enhancement project, which you created before. Explain in detailthe concept of the function module exit. Again, emphasize that the interface of thefunction module is defined by the SAP developer and cannot be changed. Outlinethe motives behind your demonstration: You want to check whether the user haschosen "AA" and "0017". In this case, you want to send an information message.Assign the enhancement SBC00E01 to your project. Edit your component.Activate your project. Run transaction BC425_00 to show how the enhancementworks.

Use la función de gestión de proyectos (transacción CMOD) para editar un módulode funciones para un exit de programa.

Seleccione el pulsador de edición de componentes para ir directamente al editorde módulos de funciones (modo de visualización).

No modifique el módulo de funciones propiamente dicho, en especial la interfase.Sin embargo, el módulo de funciones contiene una sentencia INCLUDE para unprograma include que se debe crear en el área de nombres de cliente.

Haga doble clic en el nombre del include. Automáticamente pasará al editor delprograma include, donde podrá introducir su código fuente.

60 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 75: TAW12_02

TAW12_2 Lección: Exit de programa

Gráfico 41: Estructura de un grupo de funciones

Para saber cómo funciona un grupo de funciones X, debe entender cómo seestructura un grupo normal de funciones:

� Un grupo de funciones está formado por includes. El sistema asigna nombresexclusivos a los includes de distintos objetos. Algunos de los nombres deinclude son simples propuestas y otros no se pueden modificar.

� Los datos globales se guardan en el include TOP. Este include se generaautomáticamente cuando se crea un grupo de funciones.

� Los módulos de funciones se guardan en includes numeradossecuencialmente y guardados a su vez en un include cuyo nombre acabeen UXX.

� Puede elegir libremente los nombres de los includes para todos los demásobjetos (por ejemplo, subrutinas, módulos y eventos). Sin embargo, serecomienda aceptar los nombres propuestos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 61

Page 76: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 42: Estructura de un grupo de funciones de exit

Los grupos de funciones de exit creados por programadores de SAP contienenincludes que empiezan por �LX� o �ZX�. Sólo puede editar los includes queempiecen por Z, que son los que están guardados en el área de nombres de cliente.

No se pueden añadir más módulos de funciones al grupo de funciones.

El programa de Include ZXaaaUnn contiene el código fuente para el módulode funciones.

Gráfico 43: Datos globales de un grupo de funciones de exit

Los programadores de SAP pueden declarar datos globales en el includeLXaaaTAP.

62 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 77: TAW12_02

TAW12_2 Lección: Exit de programa

Puede declarar sus datos globales en el include ZXaaaTOP.

El include LXaaaTOP contiene la sentencia FUNCTION-POOL, que no se puedemodificar. En consecuencia, incluya siempre la clase de mensaje entre paréntesiscuando se visualicen mensajes: por ejemplo, MESSAGE E500(EU).

Gráfico 44: Bloques de procesamiento específicos de cliente

La sentencia INCLUDE del programa ZXaaaUnn está incluida en un bloqueFUNCTION - ENDFUNCTION. Por ello, no se permiten eventos, subrutinas(FORM) ni módulos (MODULE). Hay que crearlos en includes separados, unproceso que se describe más adelante. Las declaraciones de datos realizadas aquícon DATA son válidas localmente en este módulo de funciones.

El programador de SAP también puede hacer una propuesta para el texto fuente.En tal caso, se creará un include LXaaFnn (siendo nn el número interno delmódulo de funciones en el include LXaaaUXX). El desarrollador documenta esteinclude en la ampliación de SAP. Puede copiar el código fuente de este includeen su programa de include de cliente ZXaaaUnn mediante la transacción degestión de proyectos.

También puede crear elementos de texto propios para el grupo de funciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 63

Page 78: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 45: Otros objetos SAP en un grupo de funciones de exit

Los programadores de SAP pueden proporcionarle subrutinas predeterminadas enel include LXaaaF01.

Podría haber también otros includes con subobjetos específicos.

� LX...F01 contiene subrutinas proporcionadas por SAP.� LX...E01 contiene los eventos que pertenecen al grupo de funciones X.� LX...O01 contiene módulos PBO para pantallas que se deben suministrar.� LX...I01 contiene los módulos PAI correspondientes.

Gráfico 46: Objetos de cliente en un grupo de funciones de exit

Puede crear subrutinas, módulos y eventos interactivos (AT) mediante sus propiosincludes incorporados mediante el include ZXaaaZZZ.

64 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 79: TAW12_02

TAW12_2 Lección: Exit de programa

Los demás includes deben respetar la siguiente convención para fijar nombres:

� ZXaaaFnn para subrutinas� ZXaaaOnn para módulos PBO� ZXaaaInn para módulos PAI� ZXaaaEnn para eventos

Gráfico 47: Pantallas de cliente

Work on your demo in parallel to the slides: Insert a PERFORM ROUTINEstatement in the customer�s include. Double-click the name of the subroutine tocreate it. Insert a CALL SCREEN 9000 statement into the enhancement. Createthe screen by doubleclicking and inserting some text. Create some modules for thescreen. All these objects can be empty: You only demonstrate that the objects youcreate are created in includes in the customer name range.

Puede usar CALL SCREEN para llamar sus propias pantallas. Cree los programasde include relacionados para los módulos PBO y PAI en el programa de includeZXaaaZZZ.

Use la navegación hacia delante (seleccione un objeto y haga doble clic en él)para crear pantallas y módulos propios.

Las pantallas creadas de este modo reciben automáticamente el nombre delprograma principal del módulo de funciones (SAPLXaaa). Los módulos PBOpara estas pantallas se encuentran en el include ZXaaaO01; los módulos PAIse encuentran en el include ZXaaaI01.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 65

Page 80: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 48: Resumen: Exits de programa

Puede ampliar las aplicaciones de SAP añadiendo su propia lógica deprocesamiento en puntos predefinidos.

Puede incluir sus propias pantallas con la lógica de procesamiento correspondientey la interfase de usuario gráfica en estas ampliaciones, y crear sus propioselementos de texto.

66 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 81: TAW12_02

TAW12_2 Lección: Exit de programa

59 Ejercicio 2: Exit de programaDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Implementar una ampliación mediante un exit de programa.

Ejemplo empresarialSus compañeros de trabajo le han pedido que modifique la transacción BC425_##de modo que cada vez que intenten visualizar los detalles de un vuelo en una fechapasada aparezca un mensaje de advertencia.

Modifique el programa de forma que aparezca una advertencia cuando seseleccione un vuelo de una fecha pasada. No modifique el programa SAP.

Tarea 1:Compruebe si es posible ampliar la transacción.

1. ¿Ha implementado el desarrollador de SAP un exit de cliente para latransacción en cuestión que se pueda usar para añadir las funcionesnecesarias?

2. ¿Cómo se llama la ampliación correspondiente? Seleccione la ampliacióncon la que podrá implementar una comprobación adicional cuando abandonela primera pantalla de la transacción.

Tarea 2:Implementar la ampliación.

1. Asigne al proyecto de ampliación el nombre TG##CUS1.

2. Programe la comprobación siguiente: Compruebe si la fecha introducidaes anterior a la fecha de hoy (es decir, si pertenece al pasado). En casoafirmativo, muestre una advertencia con un texto adecuado. Para ello, utiliceel mensaje 011 de la clase de mensaje BC425.

3. Verifique los resultados.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 67

Page 82: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Solución 2: Exit de programaTarea 1:Compruebe si es posible ampliar la transacción.

1. ¿Ha implementado el desarrollador de SAP un exit de cliente para latransacción en cuestión que se pueda usar para añadir las funcionesnecesarias?

a) Seleccione Sistema→ Status para visualizar el nombre del programacorrespondiente (SAPBC425_FLIGHT##).

2. ¿Cómo se llama la ampliación correspondiente? Seleccione la ampliacióncon la que podrá implementar una comprobación adicional cuando abandonela primera pantalla de la transacción.

a) Ahora puede buscar exits de cliente de varias formas: Puedebuscar el string de caracteres CALL CUSTOMER-FUNCTIONglobalmente en el programa o puede usar el Sistema de Informacióndel Repository para buscar ampliaciones que contengan elnombre del programa en el nombre técnico del componente (useEXIT_SAPBC425_FLIGHT##_* en el nombre del componente paradelimitar la búsqueda). La ampliación que estaba buscando se llamaSBC##E01. La documentación para la ampliación muestra que seha previsto para comprobaciones adicionales en la primera pantallade la transacción.

Tarea 2:Implementar la ampliación.

1. Asigne al proyecto de ampliación el nombre TG##CUS1.

a) Seleccione la transacción CMOD para implementar la ampliación.

Para ir a la transacción CMOD, seleccione Herramientas→WorkbenchABAP→ Utilidades→ Ampliaciones→ Gestión de proyectos en elmenú. Cree un proyecto llamado TG##CUS1 y grábelo.

2. Programe la comprobación siguiente: Compruebe si la fecha introducidaes anterior a la fecha de hoy (es decir, si pertenece al pasado). En casoafirmativo, muestre una advertencia con un texto adecuado. Para ello, utiliceel mensaje 011 de la clase de mensaje BC425.

a) Incluya la ampliación SBC##E01, que encontrará en su proyecto.

Continúa en la página siguiente

68 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 83: TAW12_02

TAW12_2 Lección: Exit de programa

3. Verifique los resultados.

a) Edite los componentes. Haga doble clic para abrir el código fuente parael módulo de funciones de exit. Cree el include haciendo doble clic. Elcódigo fuente creado podría tener este aspecto:IF flight-fldate < sy-datum.

MESSAGE w011(bc425) WITH sy-datum.

ENDIF.

Active el include. Vuelva a la gestión de proyectos y active el proyectode ampliación.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 69

Page 84: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Resumen de la lección

Ahora podrá:� Buscar exits de programa implementados mediante exits de cliente y usarlos

para ampliar las funciones.

70 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 85: TAW12_02

TAW12_2 Lección: Exit de menú

Lección:63

Exit de menúDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección se demuestra cómo funcionan los exits de menú implementadosmediante exits de cliente. También se explica cómo buscarlos y usarlos.

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

� Explicar cómo funcionan los exits de menú implementados mediante exits decliente.

� Buscar y usar estos exits de menú.

-

Ejemplo empresarialDesea buscar y usar exits de menú implementados mediante exits de cliente.

Exits de cliente: Exit de menú

Gráfico 49: Resumen de los exits de menú

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 71

Page 86: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Los exits de menú permiten añadir funciones propias a las opciones de menú enmenús SAP. Los programadores de SAP reservan algunas opciones de menú paraello en su interfase GUI. Puede especificar personalmente el texto de la entradacorrespondiente.

Después de activar los exits de menú, aparecen en el menú SAP. Cuandoseleccione la opción de menú correspondiente, el sistema cambiará a un exit deprograma que contenga las funciones específicas de cliente.

Gráfico 50: Necesidades de exit de menú

Para implementar exits de menú, los programadores de SAP equipan la interfaseGUI de su programa de aplicación con códigos de función que empiezan conel signo �+�.

Estos códigos de función no están activos al principio y no aparecen en la pantalla.Sólo aparecen después de haberlos activado.

72 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 87: TAW12_02

TAW12_2 Lección: Exit de menú

Gráfico 51: Exits de menú y exits de programa

Los programadores de SAP determinan dónde lee un programa los códigos defunción adicionales y cómo reacciona. Para ello utilizan un exit de programa ouna función predefinida.

Gráfico 52: Asignación de nombre y edición de exits de menú

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 73

Page 88: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

First, show your students a menu for transaction BC425_00. Go to the functionkey overview where you can find all function keys that belong to that program.Now, show your students the enhancement containing both a menu exit and afunction module exit (SBC00E02). Implement the enhancement: Change the textof the menu. Create the include in the exit function module. Simply send anappropriate information message. The example demonstrates the high degree towhich these two kinds of enhancements are interconnected. Course participantsshould now understand why an additional hierarchy level for enhancements mustexist above the hierarchy level for components.

Los exits de menú se editan mediante la transacción de gestión de proyectos(CMOD).

El pulsador para editar componentes llama una ventana de diálogo en la que sepueden introducir descripciones breves y elegir un idioma para cada opción demenú adicional.

Consejo: No modifique la interfase GUI.

74 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 89: TAW12_02

TAW12_2 Lección: Exit de menú

67 Ejercicio 3: Exit de menúDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Implementar una ampliación mediante un exit de menú y un exit de

programa.

Ejemplo empresarialSus compañeros de trabajo están encantados con las nuevas funciones que haincorporado al sistema. Los nuevos mensajes de advertencia en la transacciónBC425_## les ayudan a evitar seleccionar vuelos de fechas pasadas. Sinembargo, quieren más...

Quieren que cree un enlace en la transacción que les permita ver los vuelosy visualizar una lista de reservas del vuelo actual desde la transacción devisualización de vuelos. Siempre ha usado un programa adecuado que generalistas y se llama SAPBC425_BOOKING_##. Sin embargo, los usuarios teníanque llamarlo por separado e introducir los datos actuales en una imagen deselección de programa.

Tarea 1:Examine la transacción BC425_##. ¿Es posible llamar el programa con unaopción de menú en la transacción?

1. ¿Ha implementado el desarrollador de SAP un exit de cliente para latransacción que se pueda usar para añadir las funciones necesarias?

2. ¿Cómo se llama la ampliación correspondiente? Seleccione la ampliaciónque le permita implementar una ampliación de menú.

Tarea 2:Implementar la ampliación.

1. Asigne al proyecto de ampliación el nombre TG##CUS2.

2. Edite los componentes de la ampliación. Inicie el programa especificadoanteriormente; para ello, seleccione la opción de menú adicional. Vuelva denuevo a la transacción BC425_## cuando salga de la lista.

3. Transfiera los datos de transacción actuales a la imagen de selección delprograma que desee llamar. Para ello, use los datos disponibles en el exitde programa.

Verifique los resultados.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 75

Page 90: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Solución 3: Exit de menúTarea 1:Examine la transacción BC425_##. ¿Es posible llamar el programa con unaopción de menú en la transacción?

1. ¿Ha implementado el desarrollador de SAP un exit de cliente para latransacción que se pueda usar para añadir las funciones necesarias?

a) Examine la transacción como en el ejercicio anterior. Resulta útilrealizar búsquedas con el Sistema de Información del Repository o latransacción CMOD.

b) Busque una ampliación con un componente cuyo nombre contenga elnombre del programa (delimite la búsqueda mediante el nombre decomponente SAPBC425_FLIGHT##*).

2. ¿Cómo se llama la ampliación correspondiente? Seleccione la ampliaciónque le permita implementar una ampliación de menú.

a) La ampliación que estaba buscando se llama SBC##E02.

Tarea 2:Implementar la ampliación.

1. Asigne al proyecto de ampliación el nombre TG##CUS2.

a) Seleccione la transacción CMOD para implementar la ampliación.

b) Para ir a la transacción CMOD, seleccione Herramientas→WorkbenchABAP→ Utilidades→ Ampliaciones→ Gestión de proyectos en elmenú. Cree un proyecto llamado TG##CUS2 y grábelo.

2. Edite los componentes de la ampliación. Inicie el programa especificadoanteriormente; para ello, seleccione la opción de menú adicional. Vuelva denuevo a la transacción BC425_## cuando salga de la lista.

a) Incluya la ampliación SBC##E02, que encontrará en su proyecto.Edite los componentes de la ampliación. Asigne un texto de menú.Haga doble clic en el exit de programa para editarlo. Cree el include decliente mediante la navegación hacia delante.

3. Transfiera los datos de transacción actuales a la imagen de selección delprograma que desee llamar. Para ello, use los datos disponibles en el exitde programa.

Continúa en la página siguiente

76 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 91: TAW12_02

TAW12_2 Lección: Exit de menú

Verifique los resultados.

a) El texto fuente del include del grupo 00 debería ser:SUBMIT sapbc425_booking_##

WITH so_car = flight-carrid

WITH so_con = flight-connid

WITH so_fld = flight-fldate

AND RETURN.

Active su programa de include. Active el proyecto de ampliación.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 77

Page 92: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Resumen de la lección

Ahora podrá:� Explicar cómo funcionan los exits de menú implementados mediante exits de

cliente.� Buscar y usar estos exits de menú.

78 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 93: TAW12_02

TAW12_2 Lección: Exit de dynpro

Lección:71

Exit de dynproDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección se explica cómo buscar un exit de dynpro implementado medianteun exit de cliente y se enumeran los usos posibles.

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

� Desea buscar y usar exits de dynpro implementados mediante exits de cliente.

-

Ejemplo empresarialDesea buscar y usar exits de dynpro disponibles en la versión estándar del sistemaSAP.

Exits de cliente: Exit de dynpro

Gráfico 53: Resumen de los exits de dynpro

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 79

Page 94: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Los exits de dynpro permiten utilizar secciones de una pantalla principalreservadas por los programadores de SAP (áreas de subscreen). Puede visualizarla información adicional o los datos introducidos en estas áreas. Defina loscampos necesarios en una pantalla de cliente (subscreen).

Gráfico 54: Subscreens (generales)

Las subscreens son áreas rectangulares de la pantalla reservadas para visualizarpantallas adicionales en tiempo de ejecución. En cada área subscreen se puedevisualizar otra pantalla (del tipo subscreen) en tiempo de ejecución.

80 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 95: TAW12_02

TAW12_2 Lección: Exit de dynpro

Gráfico 55: Llamada de un subscreen normal

Su sistema determina qué pantalla se visualizará en un área subscreen en PBO.La sintaxis general es: CALL SUBSCREEN <área subscreen> INCLUDING<prg> <número_dynpro>.

Por cada subscreen se procesan eventos PAI y PBO como si la subscreen fuerauna pantalla �normal�.

La secuencia de llamadas �CALL SUBSCREEN� en la lógica de proceso de lapantalla principal determina la secuencia en la que se procesará la lógica deproceso de las pantallas subscreen individuales.

Atención:

� El código de función sólo se puede procesar en la pantalla principal.� Las subscreens no pueden asignar un nombre a �su� campo de

comandos.� Las subscreens no pueden definir status de GUI.� En un control de flujo de subscreen no se puede introducir ningún

valor para la pantalla siguiente.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 81

Page 96: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 56: Definición de exits de dynpro

El programador de SAP puede reservar varias áreas de subscreen para una pantalla.

Se llama la subscreen durante el control del flujo de la pantalla principal mediantela sentencia CALL CUSTOMER-SUBSCREEN. El nombre del área subscreen nopuede contener apóstrofes. El grupo de funciones al cual pertenece la subscreense debe definir estáticamente en apóstrofes, pero el número de pantalla se puedemantener variable mediante campos. Siempre debe tener cuatro posiciones.

Las llamadas de exit de dynpro no están activas al principio, y se omiten cuandose procesa una pantalla.

La llamada sólo se activa después de haber creado una subscreen correspondienteen un proyecto de ampliación y de haber activado dicho proyecto.

Las subscreens se crean en un grupo de funciones X. Normalmente, estos gruposde funciones contienen también módulos de funciones de exit.

82 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 97: TAW12_02

TAW12_2 Lección: Exit de dynpro

Gráfico 57: Llamada de subscreens de cliente

Show your students screen 200 of transaction BC425_00. Navigate to the ScreenPainter to show the flow logic and the subscreen area. Now, search for thecorresponding SAP enhancement SBC00E03. Create a new project. Assign theSAP enhancement to the project. You can now edit the components. First, createthe subscreen. Place fields of table SFLIGHT00 to the subscreen. Go back andactivate your project. Show the result: No data is displayed in the new fields.This will be the next step.

Cada vez que la sentencia CALL CUSTOMER-SUBSCREEN <área subscreen>INCLUDING <pool de funciones X> <número_dynpro> aparece en PBO en elcontrol de flujo de una pantalla, se incluye una subscreen en el área subscreendefinida por los programadores de SAP. Llegados a este punto, se procesantambién todos los módulos llamados durante el evento.

El evento PAI de una subscreen se procesa cuando la pantalla llama la subscreendurante su evento PAI mediante la sentencia CALL CUSTOMER-SUBSCREEN<área subscreen>.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 83

Page 98: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 58: Transporte de datos a subscreens

El grupo de funciones X que contiene su subscreen desconoce los datos globalesdel programa de llamada. Los programadores de SAP usan exits de programa paraproporcionar datos de forma explícita a los subscreens.

A fin de facilitar el transporte de datos, en el control de flujo del programa dellamada se llaman los módulos que contienen exits de programa para transferirdatos mediante parámetros de interfase.

Los módulos de funciones de exit correspondientes están en el mismo grupo defunciones X en el que se crea la subscreen de cliente.

84 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 99: TAW12_02

TAW12_2 Lección: Exit de dynpro

Gráfico 59: Transporte de datos desde subscreens

Continue working on your demo: Implement the function module exit and bringthe data to the subscreen.

Los datos se deben transportar también en dirección contraria, ya que el programade llamada desconoce también los datos globales del grupo de funciones X quecontiene las entradas de usuario en la subscreen. Por ello, los programadores deSAP usan exits de programa para devolver los datos modificados en la subscreenal programa de llamada.

Para ello, el sistema llama un módulo en el evento PAI de la pantalla principal.Este módulo contiene un exit de programa que puede recibir los datos globalesrelevantes para el grupo de funciones X.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 85

Page 100: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Gráfico 60: Asignación de nombre y edición de exits de dynpro

Los exits de dynpro se editan mediante la transacción de gestión de proyectos(CMOD).

El nombre técnico de un exit de dynpro está formado por el nombre del programade llamada, el número de cuatro dígitos de la pantalla principal y el nombre delárea subscreen, seguido del nombre del programa del grupo de funciones X ydel número de la subscreen.

86 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 101: TAW12_02

TAW12_2 Lección: Exit de dynpro

Gráfico 61: Edición de subscreens

El entorno de desarrollo de SAP permite crear subscreens de cliente y los módulosPBO y PAI correspondientes como parte de la navegación hacia delante.

Consejo: Cuando cree la subscreen, asegúrese de que tenga el tipo depantalla subscreen.

No podrá modificar las interfases en el grupo de funciones X al quepertenecen la subscreen y los exits de programa, ni añadir módulos defunciones propios.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 87

Page 102: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

88 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 103: TAW12_02

TAW12_2 Lección: Exit de dynpro

79 Ejercicio 4: Exit de dynproDuración del ejercicio: 45 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Visualizar más campos en una pantalla de transacción de SAP y completarlos

con datos.

Ejemplo empresarial�Sería estupendo si la lista detallada de la transacción BC425_##, en la que semuestran los vuelos, pudiera mostrar más datos�.

Acepta este nuevo reto que le plantean sus compañeros de trabajo e intentasolucionar el problema sin modificar la transacción. Concretamente, empieza porbuscar un modo de añadir campos nuevos a la segunda pantalla de esta transacción(número de pantalla 200).

Tarea 1:¿Qué tipo de opciones existen para añadir campos adicionales a una pantalla?Fíjese bien en la pantalla 200 de la transacción BC425_## y compruebe si esposible.

1. ¿Existe un exit de dynpro para ampliar la pantalla?

2. Si es así, ¿cómo se llama la ampliación correspondiente?

Tarea 2:Implemente la ampliación para lograr lo siguiente (nombre de proyecto:TG##CUS3):

1. Añada tres campos a la pantalla. Debería aparecer lo siguiente:

Nombre del pilotoMenúEl número de tres cifras del vuelo actual

2. Asegúrese de que los datos se transporten correctamente a la subscreen.

Tarea 3:Verificación de los resultados

1. Para verificar el resultado del trabajo realizado, proceda del siguiente modo:

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 89

Page 104: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Solución 4: Exit de dynproTarea 1:¿Qué tipo de opciones existen para añadir campos adicionales a una pantalla?Fíjese bien en la pantalla 200 de la transacción BC425_## y compruebe si esposible.

1. ¿Existe un exit de dynpro para ampliar la pantalla?

a) Fíjese en las pantallas de transacción del Screen Painter. Verá que lapantalla 200 de la transacción BC425_## ofrece un exit de dynpro.

b) Examine la lógica de proceso de las pantallas en busca del string decaracteres CALL CUSTOMER-SUBSCREEN. Verá que la pantalla 200de la transacción BC425_## ofrece un exit de dynpro.

2. Si es así, ¿cómo se llama la ampliación correspondiente?

a) Puede visualizar el nombre de la ampliación si lo busca en el Sistemade Información del Repository, por ejemplo (véanse los ejerciciosanteriores). El nombre de la ampliación es SBC##E03.

Tarea 2:Implemente la ampliación para lograr lo siguiente (nombre de proyecto:TG##CUS3):

1. Añada tres campos a la pantalla. Debería aparecer lo siguiente:

Continúa en la página siguiente

90 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 105: TAW12_02

TAW12_2 Lección: Exit de dynpro

Nombre del pilotoMenúEl número de tres cifras del vuelo actual

a) Implemente la ampliación del mismo modo que en los ejerciciosanteriores. Con la transacción CMOD, cree un proyecto llamadoTG##CUS3. Incluya la ampliación SBC##E03 en su proyecto. Editelos componentes.

b) Use el exit de dynpro para ampliar la pantalla. Puede crear lapantalla 0500 haciendo doble clic en el componente de ampliacióncorrespondiente. Asegúrese de que selecciona el tipo de pantalla�Subscreen�. Copie los campos de la estructura correspondienteSFLIGHT## en el Dictionary. Tiene dos opciones para insertar uncampo en la pantalla para los espacios en blanco: Puede declarar unavariable en el include TOP del grupo de funciones X y generar elprograma. A continuación podrá colocar este campo de programa en lapantalla. También puede ampliar su estructura append. No lo haga eneste ejercicio, porque el instructor utiliza un programa para completarlos campos de la estructura append. Si se amplía la estructura append,se podrían producir errores en el programa.

2. Asegúrese de que los datos se transporten correctamente a la subscreen.

a) Use el exit de programa de la ampliación para transportar los datoscorrectamente. Cree el include de cliente e introduzca el código fuentesiguiente:MOVE-CORRESPONDING flight TO sflight##.

seatsfree =

flight-seatsmax – flight-seatsocc.

Include TOP:

TABLES: sflight##.

DATA: seatsfree type s_seatsocc.

Active el programa y luego active el proyecto de ampliación.

Tarea 3:Verificación de los resultados

1. Para verificar el resultado del trabajo realizado, proceda del siguiente modo:

a) Implemente la transacción BC425_## y compruebe el resultado desu trabajo.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 91

Page 106: TAW12_02

Capítulo 3: Ampliaciones mediante exits de cliente TAW12_2

Resumen de la lección

Ahora podrá:� Desea buscar y usar exits de dynpro implementados mediante exits de cliente.

92 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 107: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Explicar cómo están organizados los exits de cliente y los principios básicos

de su utilización� En esta lección se explican los aspectos fundamentales de un proyecto de

ampliación que se debe usar para implementar exits de cliente existentes.� Buscar exits de programa implementados mediante exits de cliente y usarlos

para ampliar las funciones.� Explicar cómo funcionan los exits de menú implementados mediante exits de

cliente.� Buscar y usar estos exits de menú.� Desea buscar y usar exits de dynpro implementados mediante exits de cliente.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 93

Page 108: TAW12_02

Resumen del capítulo TAW12_2

94 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 109: TAW12_02

Capítulo 485 Add-ins empresariales

Resumen del capítulo� Búsqueda de add-ins empresariales� Implementación de add-ins empresariales

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

� Explicar por qué SAP introdujo BAdI clásicos como ampliación en el release4.6.

� Buscar add-ins empresariales disponibles en los programas de SAP.� Usar add-ins empresariales para implementar ampliaciones de programa.� Explicar lo que es un tipo de filtro extensible.� Explicar el código predeterminado y el código de ejemplo de un BAdI.

Contenido del capítuloLección: Add-ins empresariales: Utilización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96Lección: Creación e implementación de un BAdI ... . . . . . . . . . . . . . . . . . . . . . . .100

Ejercicio 5: Creación e implementación de un BAdI .. . . . . . . . . . . . . . . . . .113Lección: BAdI: Información adicional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .118

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 95

Page 110: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Lección:86

Add-ins empresariales: UtilizaciónDuración de la lección: 5 Minutos

Resumen de la lecciónEn esta lección se explica por qué SAP introdujo add-ins empresariales (BAdI)clásicos como ampliación en el release 4.6.

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

� Explicar por qué SAP introdujo BAdI clásicos como ampliación en el release4.6.

-

Ejemplo empresarialDesea añadir nuevas funciones a una transacción de actualización de vuelosen un sistema SAP. Para reducir al mínimo las entradas durante el upgradesiguiente, desea que la implementación contenga la menor cantidad posible demodificaciones. Concretamente, desea usar los BAdI ofrecidos por SAP siempreque sea posible.

Utilización de los BAdI clásicosAdd-ins empresariales: Utilización

� Inconvenientes de las técnicas de ampliación anteriores

� Sólo se podían usar una vez (exits de cliente)� No se ampliaban las pantallas (eventos de operación, BTE)� No se ampliaban los menús (BTE)� No había nivel de administración (BTE)

� Requisitos para técnicas de ampliación nuevas:

� Uso múltiple� Ampliaciones de todos los tipos (exit de dynpro/menú/programa)� Nivel de administración� Implementación mediante la tecnología más moderna

96 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 111: TAW12_02

TAW12_2 Lección: Add-ins empresariales: Utilización

� Motivate the benefits of Business Add-Ins and compare them to older techniques� Emphasize that BAdIs are the first enhancement technique that can be used toprovide enhancements even by CSP solution providers or customers themselves.

Gráfico 62: Proceso de suministro del software

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 97

Page 112: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Discusión con moderador-

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

-

98 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 113: TAW12_02

TAW12_2 Lección: Add-ins empresariales: Utilización

Resumen de la lección

Ahora podrá:� Explicar por qué SAP introdujo BAdI clásicos como ampliación en el release

4.6.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 99

Page 114: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Lección:89

Creación e implementación de un BAdIDuración de la lección: 40 Minutos

Resumen de la lecciónEn esta unidad aprenderá cómo funcionan los exits de menú y de programaimplementados mediante BAdI. También se explica cómo buscar y usar los BAdI.

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

� Buscar add-ins empresariales disponibles en los programas de SAP.� Usar add-ins empresariales para implementar ampliaciones de programa.

-

Ejemplo empresarialDesea usar los BAdI clásicos proporcionados en la versión estándar del sistemaSAP para ampliar su software de SAP.

100 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 115: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

BAdI clásicos

Gráfico 63: Add-ins empresariales: Arquitectura

Los add-ins empresariales, a diferencia de los exits de cliente, tienen en cuentalas modificaciones en el proceso de entrega del software. En la parte superiordel gráfico se ilustra el proceso de entrega habitual: Ya no implica tan sólo alproveedor y al usuario. En cambio, ahora puede implicar a toda una cadena deproveedores intermediarios.

En la parte inferior del gráfico se explica cómo funcionan los add-insempresariales. Los programas de aplicación de SAP posibilitan las ampliaciones.Para ello se necesita como mínimo una interfase y una clase BAdI que laimplemente. La interfase es implementada también por el usuario.

La principal ventaja de esta idea es su capacidad de reutilización. Un BAdI sepuede implementar varias veces, incluso los elementos a la derecha de la cadenade entrega del software pueden hacerlo.

Los add-ins empresariales también permiten que cada elemento de la cadena deentrega del software ofrezca mejoras.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 101

Page 116: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 64: Add-ins empresariales: Componentes

Un add-in empresarial contiene los componentes de una ampliación. Cada add-inempresarial puede contener los componentes siguientes:

� Ampliaciones del programa: En un add-in empresarial, las interfases paraprogramar ampliaciones se definen en forma de métodos de interfase. Estainterfase se usa para implementar la ampliación. El programa SAP llama elmétodo de interfase de la clase BAdI generada.

� Ampliaciones de menú: En un BAdI se pueden introducir códigos defunción, al igual que exits de cliente. Las opciones de menú correspondientesestán disponibles en la definición de CUA y se visualizan después de haberimplementado el BAdI.

� Ampliaciones de pantalla: Al igual que los exits de cliente, las ampliacionesde pantalla que pueda implementar se podrán definir en un BAdI.

Cuando se define un add-in empresarial, se crean varios componentes:

� La interfase� La clase generada (clase BAdI) que implementa la interfase

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

� Filtrado: Si un BAdI sólo debe ser implementado en determinadascondiciones, la clase BAdI garantiza que sólo se llamen las implementacionesrelevantes.

� Control: La clase BAdI llama las implementaciones activas.

102 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 117: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Gráfico 65: Add-ins empresariales: Flujo de exit de programa

En este gráfico se muestra el flujo de proceso de un programa que contiene unallamada de add-in empresarial. Permite ver las opciones y restricciones inherentesa los add-ins empresariales.

No se visualiza: En la sección de declaración, debe declarar una variable dereferencia que haga referencia a la interfase de BAdI.

En el primer paso se genera una referencia de objeto. Sustituye a la clasede servicio CL_EXITHANDLER proporcionada por SAP. Más adelantecomentaremos la sintaxis exacta. De este modo se crean las condiciones parallamar los métodos de la ampliación del programa.

Cuando se define un BAdI, el sistema genera una clase BAdI que implementa lainterfase. En la llamada (2), se llama el método de interfase de la clase BAdI.La clase BAdI busca todas las implementaciones activas del BAdI y llama losmétodos que se han implementado.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 103

Page 118: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 66: Add-ins empresariales: Sintaxis de llamada en el programa SAP

En este gráfico se muestra la sintaxis para llamar un add-in empresarial. Loscírculos numerados corresponden a las llamadas del gráfico anterior.

En primer lugar, se debe definir una variable de referencia que haga referencia a lainterfase de BAdI. El nombre de la variable de referencia no tiene que contenernecesariamente el nombre del BAdI.

En la primera llamada (1) se crea una referencia de objeto. De este modo se creauna instancia de la clase BAdI generada. Con esta referencia de objeto sólo sepuede establecer contacto con los métodos de la interfase.

Puede usar esta referencia de objeto para llamar los métodos necesariosdisponibles con la ampliación (2).

104 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 119: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Gráfico 67: Búsqueda de un add-in empresarial

Hay varias maneras de buscar add-ins empresariales:

Se puede buscar el string �CL_EXITHANDLER� en un programa de aplicaciónrelevante. Si se llama un add-in empresarial, se debe llamar también el método�GET_INSTANCE� de esta clase.

Mediante la navegación hacia delante y de acuerdo con las convenciones parafijar nombres, puede llegar a la definición de un add-in empresarial que contengadocumentación y una guía de implementación del add-in empresarial.

Use la jerarquía de aplicaciones para limitar los componentes en los quedesea buscar. Inicie el Sistema de Información del Repository y seleccione �Ampliaciones→ Add-ins empresariales � para iniciar el programa de búsquedarelevante.

Como alternativa, puede utilizar las entradas en el componente relevante dela IMG.

Create an implementation. Edit the components following the subsequent slides.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 105

Page 120: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 68: Implementación de add-ins empresariales: Pantalla inicial

Para implementar add-ins empresariales, use la transacción SE19 (Herramientas→Workbench ABAP→ Utilidades→ Add-ins empresariales→ Implementación).

Introduzca un nombre para la implementación y seleccione �Crear�. Apareceráuna ventana de diálogo. Introduzca el nombre del add-in empresarial. Aparecerála pantalla de actualización del add-in empresarial.

También puede usar la transacción de definición de add-ins empresariales(SE18) para acceder a sus implementaciones. El menú contiene una entrada�Implementación� que se puede usar para visualizar un resumen de lasimplantaciones existentes. Desde aquí se pueden crear también nuevasimplementaciones.

Nota: En SAP NetWeaver Application Server 7.0 se incluyen nuevos BAdIademás de los BAdI "clásicos" anteriores (véase el documento adjunto).La pantalla inicial de la transacción SE19 se ha ajustado en consecuencia.Para crear una implementación para un BAdI clásico, seleccione �BAdIclásico� en el área de entrada inferior de la pantalla inicial. Introduzca elnombre del BAdI en el campo correspondiente y seleccione �Crear impl�.

106 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 121: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Gráfico 69: Implementación de add-ins empresariales: Métodos

Puede asignar el nombre que desee a la clase de implementación. Sin embargo, esaconsejable observar la convención propusta para fijar nombres. El nombre sederiva de la siguiente forma:

� Prefijo de área de nombres, Y o Z� CL_ (de clase)� IM_ (de implementación)� Nombre de la implementación (sin prefijo de área de nombres)

Para implementar el método, haga doble clic en su nombre. El sistema iniciael editor Generador de clases.

Cuando termine, active los objetos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 107

Page 122: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 70: Implementación de add-ins empresariales: Métodos privados

En la clase de implementación puede crear métodos privados que podrá llamarluego desde el método de interfase.

Para ello, debe editar las clases de implementación directamente en el generadorde clases. Los métodos privados se crean con la interfase incluida. Especifiqueuna visibilidad para el método e impleméntela.

Gráfico 71: Implementación de add-ins empresariales: Activación de unaimplementación

108 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 123: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Use el icono correspondiente para activar la implementación de un add-inempresarial. A partir de aquí, los métodos de la implementación se ejecutaráncuando se ejecute el programa de llamada relevante.

Si desactiva la implementación, los métodos no volverán a llamarse. Sin embargo,sí se seguirán procesando las llamadas correspondientes en el programa deaplicación. La diferencia es que la instancia de la clase de adaptador no encontraráimplementaciones activas. A diferencia de �CALL CUSTOMER-FUNCTION�, lallamada �CALL METHOD CL_EXITHANDLER=>GET_INSTANCE� se sigueejecutando aunque no haya implementaciones. Lo mismo ocurre con la llamadadel método de la clase de adaptador.

Sólo se puede activar o desactivar una implementación en su sistema original, sinmodificaciones. La activación o desactivación se debe transportar a los sistemasposteriores.

Aunque un add-in empresarial sólo se pueda implementar una vez, puede seguirhabiendo más de una implementación en el mismo sistema. Sin embargo, sólohabrá una activa cada vez.

Gráfico 72: BAdI: Exit de menú (resumen)

Al igual que ocurre con los exits de usuario, se pueden usar ampliaciones demenú con add-ins empresariales. Sin embargo, se deben cumplir las condicionessiguientes:

� El desarrollador del programa que desea ampliar debe haber previsto laampliación.

� La ampliación de menú se debe implementar en una implementación deadd-in empresarial.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 109

Page 124: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 73: BAdI: Exit de menú (preparativos de SAP)

Los códigos de función de las ampliaciones de menú empiezan por un signo �+�.

La opción de menú sólo aparecerá si hay una implementación de add-inempresarial activa que contenga la ampliación correspondiente.

Gráfico 74: BAdI: Exit de menú (procesamiento de códigos de función)

110 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 125: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Arbitrary. There is no standard demo for menu exits. However, you could createone very quickly.

Si el usuario elige la opción de menú en el programa que tiene asignado el códigode función �+<exit>�, el sistema procesará la llamada de método relevante.

La llamada de método y la ampliación de menú se pertenecen mutuamente y soninseparables. No tendría sentido tener una sin la otra. Por ello, es importante quelos dos componentes de ampliación estén en una misma ampliación: el add-inempresarial.

Gráfico 75: BAdI: Exit de menú (restricción)

Sólo podrá crear códigos de función para add-ins empresariales. Además, eladd-in empresarial no debe depender de ningún filtro.

Estas restricciones son necesarias para garantizar que no haya conflictos entre doso más implementaciones. (�¿Qué opción de menú se debería visualizar?�)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 111

Page 126: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

112 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 127: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

101 Ejercicio 5: Creación e implementaciónde un BAdIDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Implementar una ampliación mediante add-ins empresariales

Ejemplo empresarialEl personal de atención al cliente de la agencia de viajes desea que la lista de lasreservas que ha implementado en el ejercicio sobre los exits de menú contengamás información. La lista debería contener el nombre del cliente además de sunúmero de cliente.

Tarea 1:Compruebe si el programa SAPBC425_BOOKING_## (## = número de grupo)se puede ampliar.

1. Verificar si el programa ofrece opciones ampliadas.

2. Compruebe si hay una opción de ampliación adecuada para visualizar másinformación en la lista.

Tarea 2:Implementar la ampliación encontrada. Nombre de la implementación:ZBC425IM##.

1. ¿Qué datos se transfieren a las interfases de los métodos? ¿Existen yacampos que se deban visualizar en la lista?

2. La tabla SCUSTOM contiene información sobre los clientes. Obtenga elnombre del cliente a partir de su número de cliente. Visualice el nombre.

Tarea 3:Formatee la lista.

1. ¿Cómo se puede mover la línea vertical de modo que los campos adicionalesse visualicen dentro del marco?

2. ¿El método CHANGE_VLINE es adecuado para cambiar la posición de lalínea vertical? En caso afirmativo, úselo.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 113

Page 128: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Tarea 4:

1. Verifique los resultados.

114 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 129: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Solución 5: Creación e implementaciónde un BAdITarea 1:Compruebe si el programa SAPBC425_BOOKING_## (## = número de grupo)se puede ampliar.

1. Verificar si el programa ofrece opciones ampliadas.

a) Compruebe si el programa SAPBC425_BOOKING_## (## = númerode grupo) ofrece opciones ampliadas del modo siguiente:

b) Desde la visualización de lista: Sitúe el cursor en la lista y seleccioneF1→ Información técnica. Haga doble clic en el nombre del programa(también puede ir directamente al Editor ABAP). Busque el string decaracteres CL_EXITHANDLER en el programa. Haga doble clic en elparámetro de transferencia exit_book. Haga doble clic en la interfaseque se usa para definir el tipo de exit_book. Se inicia el generador declases. Llame una referencia de utilización para la interfase en lasclases. Se visualiza la clase CL_EX_BADI_BOOK##. El nombre deladd-in empresarial es BADI_BOOK##.

2. Compruebe si hay una opción de ampliación adecuada para visualizar másinformación en la lista.

a) Inicie la transacción SE18 (BAdI Builder: Pantalla inicial paradefiniciones). Lea la documentación sobre los add-ins empresariales.

Tarea 2:Implementar la ampliación encontrada. Nombre de la implementación:ZBC425IM##.

1. ¿Qué datos se transfieren a las interfases de los métodos? ¿Existen yacampos que se deban visualizar en la lista?

a) Implementación de la ampliación: Desde la transacción SE18,seleccione Implementación → Crear para abrir la transacciónque permite crear la implementación de los BAdI. Nombre de laimplementación: ZBC425IM##.

b) Puede visualizar los parámetros de la interfase haciendo doble clic enel método en la transacción SE18. En el generador de clases, sitúe elcursor en el método deseado y seleccione �Parámetros�. La estructurade transferencia no contiene los campos que desea visualizar en la lista.Debe leer los datos correspondientes por separado.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 115

Page 130: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

2. La tabla SCUSTOM contiene información sobre los clientes. Obtenga elnombre del cliente a partir de su número de cliente. Visualice el nombre.

a) Haga doble clic en el nombre del método para ir al editor. Acontinuación se hace una propuesta para implementar los métodos(grupo 00):METHOD if_ex_badi_book00~output.

DATA:

name TYPE s_custname.

SELECT SINGLE name

FROM scustom

INTO name

WHERE id = i_booking-customid.

WRITE: name.

ENDMETHOD.

Tarea 3:Formatee la lista.

1. ¿Cómo se puede mover la línea vertical de modo que los campos adicionalesse visualicen dentro del marco?

a) Puede usar el método change_vline para formatear la lista. Aquí puedemover el borde derecho de la lista.

b) El parámetro c_pos define la posición de la línea vertical derecha.

2. ¿El método CHANGE_VLINE es adecuado para cambiar la posición de lalínea vertical? En caso afirmativo, úselo.

a) El método se puede implementar de la siguiente manera:METHOD if_ex_badi_book00~change_vline.

c_pos = c_pos + 25.

ENDMETHOD.

Tarea 4:

1. Verifique los resultados.

a) �

116 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 131: TAW12_02

TAW12_2 Lección: Creación e implementación de un BAdI

Resumen de la lección

Ahora podrá:� Buscar add-ins empresariales disponibles en los programas de SAP.� Usar add-ins empresariales para implementar ampliaciones de programa.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 117

Page 132: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Lección:106

BAdI: Información adicionalDuración de la lección: 15 Minutos

Resumen de la lecciónEsta lección contiene información adicional sobre los BAdI.

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

� Explicar lo que es un tipo de filtro extensible.� Explicar el código predeterminado y el código de ejemplo de un BAdI.

-

Ejemplo empresarialDesea añadir nuevas funciones a una transacción de actualización de vuelosen un sistema SAP. Para reducir al mínimo las entradas durante el upgradesiguiente, desea que la implementación contenga la menor cantidad posible demodificaciones. Concretamente, desea usar los BAdI ofrecidos por SAP siempreque sea posible.

118 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 133: TAW12_02

TAW12_2 Lección: BAdI: Información adicional

Información adicional sobre los BAdI

Gráfico 76: Tipos de filtro extensible: Requisitos

La asignación del atributo extensible está sujeta a las restricciones siguientes:

El dominio con el tipo de filtro extensible debe tener las características siguientes:Debe estar enlazado a una tabla de valores independiente del mandante. La tablade valores tiene exactamente un campo clave con el elemento de datos del tipo defiltro como tipo de campo. Tiene una tabla de texto con dos campos clave. Uncampo clave tiene el tipo de filtro como tipo de campo, y un campo clave es uncampo de idioma. Para marcar un campo como campo de texto, en esta tabla debeexistir un campo que contenga el string �TEXT� o �TXT� como string parcial. Enel Dictionary ABAP, la tabla de texto debe estar asignada a la tabla de valores. Laclase de entrega de ambas tablas debe ser �E� o �S�.

Los valores de filtro creados en el contexto de un add-in empresarial extensible ydependiente del filtro no deben aparecer aún en el campo de valores, y se añaden ala tabla de valores cuando se guardan los datos. Del mismo modo, los valores sequitan de la tabla de valores cuando se borra la implementación o todo el add-inempresarial. Lo mismo se puede aplicar a las tablas de texto.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 119

Page 134: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 77: Implementación predeterminada

Una implementación predeterminada se ejecuta si no hay ninguna implementaciónactiva para un add-in empresarial. El proveedor de la ampliación crea laimplementación predeterminada.

Para crear una implementación predeterminada en la definición de BAdI,seleccione Pasar a→ Código predeterminado. El sistema genera automáticamenteuna clase con un nombre predefinido. Implemente los métodos, de modo que seconsiga el comportamiento predeterminado necesario.

También se puede crear una implementación de ejemplo. Se trata de un modeloque se puede insertar en los métodos de la implementación.

Para crear implementaciones de ejemplo, seleccione Pasar a→ Código deejemplo. El sistema creará una clase que implementará los métodos de la interfase.El código de ejemplo se visualiza para el usuario como modelo.

120 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 135: TAW12_02

TAW12_2 Lección: BAdI: Información adicional

Gráfico 78: Comparación con otras técnicas de ampliación

Los add-ins empresariales son la evolución natural de las técnicas de ampliaciónconvencionales. Han tomado la capa de administración de los exits de cliente,junto con la disponibilidad de los diversos componentes de ampliación.

Los add-ins tomaron la idea de la reutilización de los eventos de operación, que seha implementado desde un enfoque coherente orientado al objeto.

Gráfico 79: Convenciones para fijar nombres (definición de BAdI)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 121

Page 136: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Gráfico 80: Convenciones para fijar nombres (implementación de BAdI)

122 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 137: TAW12_02

TAW12_2 Lección: BAdI: Información adicional

Discusión con moderadorTo wrap up this topic, allow participants to briefly discuss the use of BAdIs.

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

What experience of BAdIs did you have prior to the training course?

During the training course, did you discover BAdIs that you can use in yourapplication area?

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 123

Page 138: TAW12_02

Capítulo 4: Add-ins empresariales TAW12_2

Resumen de la lección

Ahora podrá:� Explicar lo que es un tipo de filtro extensible.� Explicar el código predeterminado y el código de ejemplo de un BAdI.

124 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 139: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Explicar por qué SAP introdujo BAdI clásicos como ampliación en el release

4.6.� Buscar add-ins empresariales disponibles en los programas de SAP.� Usar add-ins empresariales para implementar ampliaciones de programa.� Explicar lo que es un tipo de filtro extensible.� Explicar el código predeterminado y el código de ejemplo de un BAdI.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 125

Page 140: TAW12_02

Resumen del capítulo TAW12_2

126 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 141: TAW12_02

Capítulo 5113 Modificaciones

Resumen del capítulo

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

� Describir qué es una modificación.� Explicar los conceptos básicos en el entorno de modificación.� Describir qué se debe tener en cuenta a la hora de implementar

modificaciones.� Explicar cómo funciona el Asistente de modificaciones.� Realizar modificaciones especializadas mediante el Asistente de

modificaciones.� Elaborar una lista de las modificaciones realizadas mediante el Browser de

modificaciones.� Describir qué son los exits de usuario y cómo funcionan.� Describir cómo buscar exits de usuario en el sistema y usarlos para ampliar

el software de SAP.� Usar el Note Assistant para implementar correcciones del código fuente

en un sistema SAP.� Citar las ventajas del Note Assistant.� Usar el Note Assistant para ajustar las correcciones implementadas mediante

notas SAP.� Enumerar los distintos pasos del ajuste de modificaciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 127

Page 142: TAW12_02

Capítulo 5: Modificaciones TAW12_2

� Enumerar los objetos que se deben ajustar y cuándo.� Describir cómo se realiza el ajuste de modificaciones en los sistemas

siguientes.

Contenido del capítuloLección: Modificaciones .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .129Lección: Realización de modificaciones ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .135Lección: Asistente de modificaciones... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145

Ejercicio 6: Implementación de modificaciones ... . . . . . . . . . . . . . . . . . . . . .155Lección: Exit de usuario .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .160Lección: El Note Assistant.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167Lección: Ajuste de modificaciones ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180

Ejercicio 7: Ajuste de modificaciones .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187Ejercicio 8: Ajuste de modificaciones (opcional) .. . . . . . . . . . . . . . . . . . . . . .189

128 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 143: TAW12_02

TAW12_2 Lección: Modificaciones

Lección:115

ModificacionesDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta lección se explican las modificaciones. Se familiarizará con lascondiciones básicas en el entorno de modificación.

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

� Describir qué es una modificación.� Explicar los conceptos básicos en el entorno de modificación.

-

Ejemplo empresarialLe gustaría conocer los principios básicos de la modificación.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 129

Page 144: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Modificaciones: Introducción

Gráfico 81: Modificaciones: Diagrama general del curso

Gráfico 82: Originales y copias

Un objeto es original sólo en un sistema. El �sistema original� de los objetossuministrados por SAP reside en SAP. En los sistemas de cliente, estos objetossólo están disponibles como copias. Esto se aplica al sistema de desarrollo y atodos los demás sistemas posteriores.

130 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 145: TAW12_02

TAW12_2 Lección: Modificaciones

Si escribe sus propias aplicaciones, los objetos que cree serán originales en susistema de desarrollo. Asigne sus desarrollos a una orden de modificación. Tendráel tipo �Desarrollo/Corrección�.

Esta solicitud garantiza que los objetos se transportarán desde el sistema dedesarrollo a los sistemas siguientes.

Gráfico 83: Correcciones y reparaciones

El hecho de modificar el original se llama corrección. El sistemaregistra estas modificaciones en una solicitud que contiene tareas del tipo�Desarrollo/Corrección�.

Por otra parte, si modifica una copia (un objeto fuera de su sistema original), lamodificación se registrará en una tarea con el tipo � Reparación �. Una reparaciónde un objeto SAP se llama modificación.

Las reparaciones realizadas en objetos propios (por ejemplo, debido a unaemergencia en el sistema productivo) también se pueden realizar de inmediato enlos originales en el sistema de desarrollo.

Atención: Cuando se modifican copias, se debe corregir el originalde inmediato.

Sin embargo, esto no es posible con los objetos SAP, porque los originales noestán en ningún sistema de cliente.

Sólo debería modificar la versión estándar del sistema SAP si las modificacionesque desea realizar son imprescindibles para optimizar el workflow en su empresa.Tenga en cuenta además que un buen conocimiento de base de la estructura de la

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 131

Page 146: TAW12_02

Capítulo 5: Modificaciones TAW12_2

aplicación y el flujo son esenciales a la hora de decidir qué tipo de modificacionesse deben realizar en la versión estándar del sistema y cómo se deberían diseñardichas modificaciones.

Gráfico 84: Modificaciones durante el upgrade

Cada vez que realice un upgrade del sistema, aplique un hot package o importeuna orden de transporte, se pueden originar conflictos.

Si modifica un objeto SAP y SAP ha suministrado también una nueva versión delmismo objeto, se producirán conflictos. El nuevo objeto que suministra SAP pasaa ser un objeto activo en el Repository de su sistema R/3.

Si desea grabar las modificaciones, realice un ajuste de la modificación para losobjetos relevantes. Si se han modificado muchos objetos SAP, se pueden producirretrasos considerables al importar un upgrade.

Para garantizar que el sistema de desarrollo y el sistema siguiente son coherentes,recomendamos ajustar sólo la modificación en el sistema de desarrollo. Losobjetos del ajuste se podrán transportar luego a los sistemas siguientes.

132 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 147: TAW12_02

TAW12_2 Lección: Modificaciones

Discusión con moderador-

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

-

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 133

Page 148: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Resumen de la lección

Ahora podrá:� Describir qué es una modificación.� Explicar los conceptos básicos en el entorno de modificación.

134 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 149: TAW12_02

TAW12_2 Lección: Realización de modificaciones

Lección:120

Realización de modificacionesDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta unidad se explica qué se debe tener en cuenta a la hora de realizarmodificaciones.

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

� Describir qué se debe tener en cuenta a la hora de implementarmodificaciones.

-

Ejemplo empresarialDesea saber qué se debe tener en cuenta a la hora de implementar modificaciones.

Realización de modificaciones

The following slides summarize important guidelines for modifying your system.Adhering to these rules will drastically reduce the amount of work required atupgrade. These rules apply irrespective of whether you use the ModificationAssistant. An additional modification log can also prove very valuable whenmaking modification adjustments. Emphasize that this slide can only serve asan example.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 135

Page 150: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 85: Registro de modificaciones en SSCR

Un usuario de desarrollo registrado registra las modificaciones en las fuentesde SAP y las modificaciones manuales de objetos del Dictionary ABAP. Sonexcepciones a este tipo de registro los matchcodes, los índices de base de datos,los parámetros de memoria intermedia, los objetos de cliente, las correccionesavanzadas y los objetos cuya modificación se base en la generación automática(por ejemplo, desde el Customizing). Si el objeto se modifica de nuevo másadelante, no se volverá a preguntar la clave de registro. Una vez registrado unobjeto, la clave relacionada se guarda localmente y se copia automáticamente paramodificaciones posteriores, independientemente de qué desarrollador registradorealice la modificación. Por ahora, estas claves siguen siendo válidas inclusodespués de un upgrade de release.

¿Qué ventajas le aporta el SSCR (SAP Software Change Registration)?

� Los errores se solucionan con rapidez y los sistemas modificados vuelven aestar disponibles con rapidez. SAP registra todos los objetos modificados.A partir de esta información, el servicio de atención al cliente de primerade SAP puede encontrar rápidamente los problemas y solucionarlos. Estoamplía la disponibilidad de su sistema R/3.

� Funcionamiento fiable. El tener que registrar sus modificaciones contribuyea evitar modificaciones accidentales. Esto, a su vez, garantiza que el softwareestándar de R/3 funcionará con total fiabilidad.

� Upgrades simplificados. Los upgrades y los cambios de release resultanmucho más fáciles debido a que el número de modificaciones es menor.

136 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 151: TAW12_02

TAW12_2 Lección: Realización de modificaciones

Gráfico 86: Realización de una modificación registrada

Si desea modificar un objeto de Repository de SAP, debe proporcionar lainformación siguiente al Workbench Organizer:

� Una clave SSCR� Una orden de modificación

Anteriormente hemos visto cómo obtener una clave SSCR. Si ahora siguemodificando el objeto, deberá confirmar los cuadros de advertencia siguientes: Eneste punto, aún puede cancelar la acción.

El Workbench Organizer le pedirá que introduzca una orden de modificacióncomo lo haría para sus propios objetos. El objeto se añade automáticamente a unatarea de reparación. La orden de modificación tiene las funciones siguientes:

� Bloqueo de modificación. Después de asignar la tarea, sólo el propietariopodrá modificar el objeto.

� Bloqueo de importación. El objeto no se puede sobrescribir mediante unaimportación (ni upgrade ni support package).

� Versiones. El sistema genera una nueva versión del objeto (véase másadelante).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 137

Page 152: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 87: Modificación finalizada

Una vez finalizado el desarrollo, el programador libera la tarea. En este punto,debe documentar las modificaciones efectuadas. Los objetos y los bloqueos deobjeto válidos en la tarea se transfieren de la tarea a la orden de modificación. Siel desarrollador confirma la reparación, el bloqueo de importación se transfiere ala orden de modificación. Si el desarrollador no confirma la reparación al liberarla tarea, el bloqueo de importación sigue en su sitio. Sólo el desarrollador puedeanular el bloqueo.

Una vez completado el proyecto, se libera la orden de modificación. Los bloqueosen los objetos de la orden de modificación también se liberan. Esto es aplicabletanto a los bloqueos de modificación como a los bloqueos de importación.

Cuando se libera la orden de modificación, los objetos se copian desde la basede datos de R/3 y se guardan en un directorio en el nivel del sistema operativo.A continuación, el administrador del sistema puede importarlos a los sistemassiguientes.

Después de importar las modificaciones al sistema de calidad, el desarrolladordebe probarlas y comprobar el log de importación de la orden.

138 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 153: TAW12_02

TAW12_2 Lección: Realización de modificaciones

Gráfico 88: Versiones

Cuando se libera una orden de modificación, el sistema guarda una versióncompleta de todos los objetos de la orden de modificación para la base de datospara versiones.

Si vuelve a editar más adelante el objeto de Repository, el objeto actual pasaráa ser una copia completa, y las diferencias entre el objeto nuevo y el anterior seguardarán en la base de datos para versiones como delta regresiva.

Cuando asigne un objeto de Repository a una tarea, el sistema comprobará si laversión actual coincide con la copia completa en la base de datos para versiones.Si no es así, se creará una copia completa. Este proceso también se inicia laprimera vez que se modifica un objeto SAP, ya que SAP no suministra versionesde objetos de Repository.

Las versiones de un objeto de Repository proporcionan la base para ajustar lamodificación. Como ayuda para el ajuste, se guarda también información sobresi la versión ha sido creada por SAP o por el cliente.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 139

Page 154: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 89: Factores cruciales para el éxito (1)

Encierre el código fuente del cliente en unidades de modularización en vez deinsertarlo directamente en párrafos largos de código fuente de SAP (por ejemplo,con llamadas de módulo de funciones de cliente en código fuente de programa, ollamadas de subscreen de cliente para campos de pantalla adicionales).

Consejo: No olvide usar interfases limitadas cuando encierre funcionesespecíficas de cliente a fin de garantizar un buen control de los datos.

Gráfico 90: Factores cruciales para el éxito (2)

140 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 155: TAW12_02

TAW12_2 Lección: Realización de modificaciones

Defina una versión estándar válida para toda la empresa para administrar ladocumentación de código fuente.

Guarde una lista de todas las modificaciones en su sistema (un log de lasmodificaciones, véase la diapositiva siguiente).

Las modificaciones que haga en objetos de Dictionary ABAP que pertenezcana componentes de SAP Base (Workbench ABAP, etc.) se perderán durante elupgrade. Estos objetos volverán a su versión anterior, y el ajuste no es una opción.Esto puede hacer que se pierda el contenido de algunas tablas.

Todas las solicitudes que contengan reparaciones se deben liberar antes deun upgrade o de la importación de un support package, de modo que todaslas versiones de cliente relevantes se puedan escribir en la base de datos paraversiones (el sistema comparará las versiones durante el ajuste).

Gráfico 91: Logs de modificación (ejemplo)

SAP recomienda guardar una lista de todas las modificaciones realizadas (esdecir, las modificaciones efectuadas a los objetos de Repository en el área denombres de SAP).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 141

Page 156: TAW12_02

Capítulo 5: Modificaciones TAW12_2

La lista puede contener las columnas siguientes:

� Tipo de objeto (programa, pantalla, status GUI...)� Nombre del objeto� Rutina (si procede)� Área temática (de acuerdo con el diseño de proceso blueprint o el diseño

técnico)� Número de reparación� Fecha de modificación� Autor de la modificación� ¿Corrección preliminar? (Sí/No)� Número de nota de SAP, válido hasta el release x.y� Entradas previstas para restablecer la modificación durante el ajuste

142 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 157: TAW12_02

TAW12_2 Lección: Realización de modificaciones

Discusión con moderador-

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

-

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 143

Page 158: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Resumen de la lección

Ahora podrá:� Describir qué se debe tener en cuenta a la hora de implementar

modificaciones.

144 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 159: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Lección:128

Asistente de modificacionesDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta lección se describe cómo funcionan el Asistente de modificaciones y elBrowser de modificaciones, y se explica cómo usar estas herramientas.

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

� Explicar cómo funciona el Asistente de modificaciones.� Realizar modificaciones especializadas mediante el Asistente de

modificaciones.� Elaborar una lista de las modificaciones realizadas mediante el Browser de

modificaciones.

Outline the basic principle of the Modification Assistant: To reduce the amountof work when making modification adjustments. In the past, you had to do a lotmanually. You had to adjust a program when the include was changed by SAPand the customer. Now, only a reasonable amount of work is required when theexact part of the include is changed by SAP and by you. Give the example of achanged subroutine: You changed the subroutine; SAP changes the include butnot the subroutine. As a result, the object will appear in the list of objects to beadjusted at adjustment time. However, the system determines that the adjustmentcan be carried out automatically. You can simply click the green traffic light.The Modification Assistant registers the modifications in different tables ratherthan directly in the source code. When the LOAD is generated, the contentsof the modification tables and the source is taken into account. As a result: �Modifications can be reset by deleting the contents of the modification tables �The first version required by the system is created when the modification is saved.

Ejemplo empresarialDesea utilizar el Asistente de modificaciones para realizar modificacionesde forma ordenada, garantizar que podrá visualizar una lista exacta de lasmodificaciones más adelante y facilitar los ajustes de las modificaciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 145

Page 160: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Asistente de modificaciones

Gráfico 92: Asistente de modificaciones: Objetivos

El Asistente de modificaciones se ha diseñado para facilitar los ajustes de lasmodificaciones. Para ello, se usa una granularidad más precisa para registrar lasmodificaciones. Anteriormente, la granularidad de las modificaciones se limitabaal nivel de programa de include. Ahora es posible una granularidad más precisa, ylas modificaciones se pueden registrar en los niveles de módulo o subrutina.

Entre otras cosas, esto se debe a que las modificaciones se registran en una capadistinta. Además de ofrecer una granularidad más precisa, esto significa que podrárestablecer las modificaciones, porque la versión original no se ha modificado.

Gráfico 93: Asistente de modificaciones: Funcionamiento

El Asistente de modificaciones registra las modificaciones en un nivel distinto,y deja sin modificar la fuente original de un objeto. Las modificaciones sólo setransfieren cuando se genera la carga. Esto significa que el objeto ejecutable segenera a partir de componentes del programa SAP original y de las modificaciones.

146 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 161: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

El antes y el después de los ajustes de las modificaciones

� ANTES:

� Granularidad: Origen de include� Ajuste de la modificación línea a línea� Cada modificación se tenía que incluir manualmente en la nueva

versión de SAP (mediante la función de cortar y pegar)� AHORA (con el Asistente de modificaciones):

� Granularidad: Módulo (por ejemplo, subrutina)� Ajuste de la modificación en el nivel de módulo (�exit de

modificaciones�)

En el pasado, si modificaba un include del cual SAP proporcionaba una nuevaversión en un upgrade, hacía falta ajustar la modificación. La modificación setenía que ajustar línea a línea. El sistema no proporcionaba demasiada ayudadurante el ajuste.

Esto ha cambiado considerablemente gracias al Asistente de modificación. Ahoralas modificaciones se registran con una granularidad más precisa. Por ejemplo, simodifica una subrutina, el resto del include no se modifica. Si SAP suministrauna nueva versión del include, el sistema comprobará si hay una nueva versiónde dicha subrutina. Si no es así, las modificaciones se podrán incorporar a lanueva versión automáticamente.

Gráfico 94: Asistente de modificaciones: Capas del software

La versión original de cada capa del software, más la modificación actual,comprende los originales para usuarios del software posteriores.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 147

Page 162: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Asistente de modificaciones: Herramientas admitidas

� Editor ABAP

� Modo de modificación� Screen Painter

� Disposición� Lógica de proceso

� Menu Painter� Elementos de texto� Generador de clases� Function Builder

� Agregación de módulos de funciones� Ampliaciones compatibles de interfase

� Dictionary

� Las estructuras append se registran� Elementos de datos: Modificación de etiquetas de campo

� Documentación

� Sustitución de objetos de documentación

El Asistente de modificaciones es compatible con las herramientas clave delWorkbench ABAP:

En el Editor ABAP, puede usar el modo de modificación para modificar el códigofuente. En este modo sólo hay disponible una serie limitada de funciones. Puedeañadir, sustituir o comentar el código fuente, todo bajo el control del Asistentede modificaciones.

También se registran las modificaciones en el Screen Painter. Esto es aplicabletanto al layout como a la lógica de proceso.

El Asistente de modificaciones registra también las modificaciones en el MenuPainter y en los elementos de texto, además de añadir nuevos módulos defunciones a un grupo de funciones existente.

Para evitar conflictos durante el upgrade, el Asistente de modificaciones registratambién la creación de appends de tabla.

148 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 163: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Gráfico 95: Asistente de modificaciones: Requisitos

Si desea modificar un objeto SAP, debe proporcionar la información siguiente:

� Una clave SSCR� Una orden de modificación

El sistema le informa de que el objeto es controlado por el Asistente demodificaciones. En el editor sólo hay disponibles funciones limitadas.

Puede activar o desactivar el Asistente de modificaciones para todo el sistema R/3mediante el parámetro de perfil eu/controlled_modification. SAP recomiendatrabajar siempre con el Asistente de modificaciones.

Puede desactivar el Asistente de modificaciones para objetos individuales delRepository. Una vez desactivado, el sistema deja de usar la granularidad precisaque se usa en el Asistente de modificaciones.

Demonstrate the features of the Modification Assistant: Explain the icons(although they are more or less self explanatory). Modify one of your programs asan example. Use the ABAP Editor to modify the source code. Show the icons: Themodification overview and the Restore Original features are important. Explainwhat happens: Tell your students that a table is used to log all modifications andthat the modifications themselves are stored in another table separately from thesource code. This enables the system to undo a modification.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 149

Page 164: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 96: Iconos del Asistente de modificaciones

En el modo de modificación no se pueden usar todas las funciones normales dela herramienta con la que está trabajando. Puede acceder a ellas mediante lospulsadores adecuados. Por ejemplo, en el Editor ABAP puede:

� Insertar. El sistema genera un framework de líneas de comentario en el quese puede introducir el código fuente.

� Sustituir. Sitúe el cursor en una línea y seleccione �Sustituir�. Se añadiráun comentario a la línea correspondiente, y aparecerá otra línea en la que sepodrá introducir códigos. Si desea sustituir varias líneas, márquelas primerocomo un bloque.

� Borrar. Seleccione una línea o un bloque de código fuente. Se añadencomentarios a las líneas.

� Deshacer modificaciones. Deshace todas las modificaciones efectuadas eneste objeto.

� Visualizar resumen de modificaciones. Seleccione esta función paravisualizar un resumen de todas las modificaciones de este objeto.

Modify a program. Use one of your demo programs. Show modification in theeditor. Show screen modifications. Show how to create a new text for a dataelement: There are two alternatives. And so on. Do this in parallel to presentingthe slides.

150 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 165: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Gráfico 97: Asistente de modificaciones: Ejemplo de Editor ABAP

En el gráfico se muestran los resultados de las modificaciones efectuadas con elAsistente de modificaciones.

El Asistente de modificaciones genera automáticamente un framework de líneasde comentarios que describen la acción. El comentario contiene también elnúmero de la orden de modificación a la que se ha asignado la modificación, y unnúmero usado para la administración interna.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 151

Page 166: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 98: Resumen de modificaciones

El icono �Resumen de modificaciones� le ofrece un resumen de las modificacionesefectuadas en el programa actual.

La visualización está desglosada en las diversas unidades de modularización.Esto corresponde a la estructura usada por el Asistente de modificaciones pararegistrar las modificaciones.

152 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 167: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Gráfico 99: Restablecimiento del original

Para deshacer una modificación, sitúe el cursor en ella. Seleccione el pulsadorpara deshacerla.

El registro de las modificaciones se borra. No es posible restablecer lamodificación borrada.

Show the most important features of the Modification Browser: Find the objectsyou modified recently. Undo a modification, and so on.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 153

Page 168: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 100: Browser de modificaciones

El Browser de modificaciones proporciona un resumen de todos los objetosmodificados en el sistema. El Browser de modificaciones diferencia entre lasmodificaciones efectuadas con y sin el Browser de modificaciones.

En la pantalla inicial del Browser de modificaciones se puede delimitar laselección en función de diversos criterios. De este modo se puede buscarmodificaciones en un área concreta.

El Browser de modificaciones visualiza la lista de aciertos en forma de árbol.Los objetos se organizan por:

� Tipo de modificación (con/sin asistente)� Tipo de objeto (PROG, DOMA, DTEL, TABL...)

Además de las sencillas funciones de visualización, se puede usar también elBrowser de modificaciones para deshacer grupos enteros de modificaciones.Para ello, seleccione el subárbol que desee y seleccione el pulsador �Restableceroriginal�.

154 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 169: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

137 Ejercicio 6: Implementación demodificacionesDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Realizar modificaciones mediante el Asistente de modificaciones� Implementar modificaciones no registradas

Ejemplo empresarialDesea implementar más funciones además de la gran variedad de funciones en R/3.

En raras ocasiones, se suministran funciones incorrectas. Esto obliga a insertarcorrecciones antes de poder importar el support package correspondiente.

El Asistente de modificaciones no permite realizar ciertas modificaciones. Si deseaimplementarlas de todos modos, puede desactivar el Asistente de modificaciones.

Tarea 1:Modificar objetos R/3. Use el Asistente de modificaciones si es posible. Acontinuación se especifica qué objetos se deben modificar:

Modifique el programa SAPBC425_BOOKING_##.

1. Amplíe la cabecera de forma que la columna con el nombre del clientetambién tenga cabecera.

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

3. Lea los campos LUGGWEIGHT y WUNIT en la tabla SBOOK, y visualícelosen la lista.

Tarea 2:Modifique el programa SAPBC425_FLIGHT##.

1. Modifique el layout de la pantalla 0100: Inserte un marco alrededor de lostres campos de entrada. Cree un pulsador y asígnele el código de funciónMORE.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 155

Page 170: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Tarea 3:Modifique el elemento de datos S_CARRID##.

1. Modifique las etiquetas de campo así: Breve: �Cía. aérea�, Media:�Compañía aérea�.

2. Modifique la documentación para este elemento de datos. Cree un textoinformativo.

Tarea 4:

1. Verificar las modificaciones en el Browser de modificaciones.

156 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 171: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Solución 6: Implementación demodificacionesTarea 1:Modificar objetos R/3. Use el Asistente de modificaciones si es posible. Acontinuación se especifica qué objetos se deben modificar:

Modifique el programa SAPBC425_BOOKING_##.

1. Amplíe la cabecera de forma que la columna con el nombre del clientetambién tenga cabecera.

a) Puede modificar la cabecera directamente desde la lista (Sistema→Lista→ Cabecera de lista) o en el Editor.

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

a) Puede crear una nueva variable directamente en el programa SAP.Use la función de inserción en el Asistente de modificaciones. Loideal sería limitar las modificaciones al ámbito local en la subrutinadata_output. Visualice el contador también. Como alternativapuede implementar esta función en la ampliación, con lo que no haríanfalta modificaciones.

3. Lea los campos LUGGWEIGHT y WUNIT en la tabla SBOOK, y visualícelosen la lista.

a) Lea los campos adicionales LUGGWEIGHT y WUNIT en la tablaSBOOK, y visualícelos en la lista. Añada dos campos a la sentenciaSELECT. Visualice los campos en la subrutina data_output.

Tarea 2:Modifique el programa SAPBC425_FLIGHT##.

1. Modifique el layout de la pantalla 0100: Inserte un marco alrededor de lostres campos de entrada. Cree un pulsador y asígnele el código de funciónMORE.

a) Use el Screen Painter para modificar el layout de la pantalla 0100.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 157

Page 172: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Tarea 3:Modifique el elemento de datos S_CARRID##.

1. Modifique las etiquetas de campo así: Breve: �Cía. aérea�, Media:�Compañía aérea�.

a) Llame la transacción de actualización para elementos de datos.Sitúe el cursor en el objeto correspondiente y seleccione el icono demodificación. Puede indicar un texto nuevo en la siguiente ventanade diálogo.

2. Modifique la documentación para este elemento de datos. Cree un textoinformativo.

a) Seleccione el pulsador �Documentación� e introduzca un texto nuevo.

Tarea 4:

1. Verificar las modificaciones en el Browser de modificaciones.

a) Para verificar la modificación, seleccione el Browser de modificaciones(transacción SE95). Limite la selección mediante el nombre de usuarioo la tarea/orden de modificación.

158 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 173: TAW12_02

TAW12_2 Lección: Asistente de modificaciones

Resumen de la lección

Ahora podrá:� Explicar cómo funciona el Asistente de modificaciones.� Realizar modificaciones especializadas mediante el Asistente de

modificaciones.� Elaborar una lista de las modificaciones realizadas mediante el Browser de

modificaciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 159

Page 174: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Lección:142

Exit de usuarioDuración de la lección: 10 Minutos

Resumen de la lecciónEn esta lección se explica cómo funcionan los exits de usuario, cómo se buscan ycómo se usan para ampliar las funciones.

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

� Describir qué son los exits de usuario y cómo funcionan.� Describir cómo buscar exits de usuario en el sistema y usarlos para ampliar

el software de SAP.

User exits are a long-standing method of enhancing an SAP System. Althoughthere should be no new user exits in an R/3 System, a wide range are still available.Briefly explain to participants what user exits are and what they are used for.

Ejemplo empresarialDesea saber cómo buscar exits de usuario en el sistema y usarlos para ampliar elsoftware de SAP.

160 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 175: TAW12_02

TAW12_2 Lección: Exit de usuario

Exits de usuario

Gráfico 101: Exit de usuario: Estructura de un modulpool de SAP

In the first step, explain how a module pool is built. Describe the distinguishingfeatures of a user exit. Provide your students with an example: Demonstrate aprogram that contains user exits (for example SAPMV45A). Show your studentswhere the use of user exits is described in the Implementation Guide (Sales andDistribution -> System Modifications).

Un modulpool está organizado como un conjunto de programas de include.Esto resulta especialmente beneficioso a la hora de entender el programa conmayor facilidad. La organización es parecida a la de los grupos de funciones. Enconcreto, la convención para fijar nombres según la cual las tres últimas letras delnombre del programa de include identifican su contenido, es la misma.

El programa principal, por lo general, contiene las sentencias de include para todoslos programas de include pertenecientes al modulpool.

Los programas descritos como programas de include "especiales" en la figuraanterior sólo son programas de include; técnicamente, no existen diferencias.Estos programas sólo se suministran una vez.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 161

Page 176: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 102: Exit de usuario: Implementación

Los exits de usuario son un tipo de ampliación del sistema y se desarrollaroninicialmente para el componente Comercial (SD). La finalidad original de los exitsde usuario era permitir a los usuarios evitar las dificultades a la hora de ajustarlas modificaciones.

Usar un exit de usuario es una modificación, porque obliga a modificar objetosen el área de nombres de SAP.

Los desarrolladores de SAP crean un include especial en un modulpool. Estosincludes contienen una o varias subrutinas que cumplen la convención interna parafijar nombres userexit_<nombre>. Las llamadas para estas subrutinas se hanimplementado ya en el programa. Normalmente se usan variables globales.

SAP nunca modifica los includes creados de este modo una vez suministrados. Sien un nuevo release se deben suministrar exits de usuario nuevos, se crearán en unnuevo programa de include.

162 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 177: TAW12_02

TAW12_2 Lección: Exit de usuario

Gráfico 103: Exit de usuario: Ejemplo

Los exits de usuario son en realidad subrutinas en blanco que le proporcionan losdesarrolladores de SAP. Puede completarlas con su propio código fuente.

La finalidad de este tipo de sistema es mantener las modificaciones al margen delcódigo fuente del programa y guardarlas en programas de include. Para ello,los desarrolladores de SAP crean varios includes que cumplen las convencionespara fijar nombres para includes de programas y grupos de funciones. Las dosúltimas letras del nombre del include hacen referencia al include que debería usarel cliente: �Z� suele ser una de ellas.

Ejemplo: Programa SAPMV45A Include MV45AFZB

Esta convención para fijar nombres garantiza que los desarrolladores de SAP notocarán este include en el futuro. Por ello, los includes de este tipo no se ajustandurante los ajustes de la modificación.

Si SAP suministra exits de usuario nuevos con un nuevo release, estaránempaquetados en nuevos includes que cumplan la misma convención para fijarnombres.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 163

Page 178: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 104: Exits de usuario: Buscar

Encontrará una lista de algunos de los exits de usuario disponibles en la Guía deimplementación de referencia de SAP. En ella encontrará también documentaciónque explica por qué los desarrolladores de SAP han creado un exit de usuarioconcreto.

Siga los pasos que se describen en la Guía de implementación.

También puede buscar exits de usuario para programas específicos. El gráficoanterior describe cómo se puede hacer.

164 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 179: TAW12_02

TAW12_2 Lección: Exit de usuario

Discusión con moderador-

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

-

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 165

Page 180: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Resumen de la lección

Ahora podrá:� Describir qué son los exits de usuario y cómo funcionan.� Describir cómo buscar exits de usuario en el sistema y usarlos para ampliar

el software de SAP.

166 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 181: TAW12_02

TAW12_2 Lección: El Note Assistant

Lección:147

El Note AssistantDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección se explica cómo usar el Note Assistant, que permite instalarnotas SAP cómodamente. Otra ventaja de Note Assistant es que reconoce lasdependencias entre notas y facilita los ajustes.

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

� Usar el Note Assistant para implementar correcciones del código fuenteen un sistema SAP.

� Citar las ventajas del Note Assistant.� Usar el Note Assistant para ajustar las correcciones implementadas mediante

notas SAP.

The Note Assistant helps your customers to implement corrections contained inSAP Notes. Without the Note Assistant, corrections had to be adjusted manuallyafter you implemented a Support Package or upgrade. Customers also had torequest an SSCR key before implementing SAP Notes. All this is much easierwith the Note Assistant:

� No SSCR key is needed.

� Implementation support due to usage of the Modification Assistant.

� Dependencies between SAP Notes are automatically recognized.

� Validity is automatically tested.

� Modification adjustment is supported.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 167

Page 182: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Ejemplo empresarial

El Note Assistant

Gráfico 105: El Note Assistant: Principios

Antes de introducir el Note Assistant, había que implementar manualmentetodas las notas SAP que requerían ajustes en objetos del sistema SAP. Ademásdel riesgo de errores, este procedimiento presentaba otros inconvenientes: Paraajustar manualmente un objeto SAP se necesita especificar una clave de registropara el objeto. Los desarrolladores tenían que interpretar la nota para saber si lacorrección de errores en el sistema comportaba dependencias. Finalmente, lacorrección de error implementada se tenía que comparar manualmente durante laimportación de support packages o upgrades.

El Note Assistant se usa para compensar la mayoría de los inconvenientesmencionados anteriormente. No hace falta introducir ninguna clave de registro.El Note Assistant usa el Asistente de modificaciones para implementar lascorrecciones de la nota en el sistema automáticamente. Reconoce automáticamentelas dependencias respecto a otras notas. Si las notas no se han implementadoaún en el sistema, el Note Assistant le pedirá que las importe. Finalmente, lasnotas SAP sólo son válidas durante un periodo concreto de tiempo. Cuando seimplementan support packages y upgrades, el sistema verifica si las correccionescontenidas en la nota SAP siguen siendo válidas. Si no es así, basta con seleccionarun pulsador para anular la corrección.

168 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 183: TAW12_02

TAW12_2 Lección: El Note Assistant

Gráfico 106: El Note Assistant: Ventajas

El Note Assistant le ayuda a implementar correcciones del código fuente en susistema SAP. Normalmente implementa estas correcciones automáticamente, loque significa que no hace falta importarlas manualmente, con lo que se reduceconsiderablemente el riesgo de error. Además, no hace falta registrar los objetosque se deben corregir en el SAP Software Change Registration (SSCR).

El Note Assistant ofrece numerosas ventajas. Además de implementarautomáticamente las correcciones del código fuente sin una clave SSCR, elasistente reconoce las dependencias entre notas distintas. También determina si unerror descrito en una nota se ha eliminado ya en un support package y, en casoafirmativo, marca la nota como obsoleta. Las modificaciones implementadas enel objeto que se debe corregir se registran y, en consecuencia, estos objetos seidentifican durante el ajuste de la modificación.

Una característica útil del Note Assistant es el hecho de que permite visualizar unresumen de todas las notas implementadas en el sistema.

Las notas se implementan en una categoría separada durante el ajuste de lasmodificaciones posterior a la implementación del upgrade o los support packages.Se detectan las notas obsoletas en el release actual, lo que permite transferirfácilmente el objeto a la versión estándar del sistema.

Consejo: El Note Assistant permite implementar correccionesindividuales del código fuente con facilidad. Sin embargo, no se hadiseñado para sustituir la implementación de support packages.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 169

Page 184: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 107: El Note Assistant: Etapas de trabajo

Mediante el Note Assistant se puede descargar las notas SAP existentes en el SAPService Marketplace. El Browser de notas proporciona un resumen de todas lasnotas implementadas en el sistema. También incluye un enlace al Browser demodificaciones que ofrece un resumen de todos los objetos corregidos con unanota SAP. Mediante la especificación de status se puede identificar qué notas SAPse pueden implementar, se han implementado o están obsoletas.

Después de leer atentamente la nota, puede implementarla siguiendo lasinstrucciones de la corrección. El Note Assistant determina si la nota se puedeimplementar automáticamente y, si es así, se visualiza un semáforo en verdejunto al objeto que se debe implementar. Si se detectan conflictos durante laimplementación, por ejemplo, porque el Note Assistant no encuentra el bloque decontexto, puede implementar la corrección manualmente mediante una versiónespecial del editor split screen.

170 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 185: TAW12_02

TAW12_2 Lección: El Note Assistant

Gráfico 108: El Note Assistant: Pool de trabajo

Introduzca la transacción SNOTE en el campo de comandos. Aparecerá una listade las notas asignadas a distintos nodos. En esta pantalla se visualiza lo siguiente:

� Notas que usted es responsable de editar� Todas las notas nuevas� Todas las notas con un status incoherente

.

Las notas que se pueden implementar se señalan con el indicador correspondiente(vaya al acceso vía menús Utilidades→ Color para ver el significado de losdistintos iconos). En el ejemplo anterior se incluye también una nota nuevaseñalada como obsoleta y no se puede implementar. Esto se debe a que no hayinstrucciones para la corrección (la nota es sólo informativa), o a que el periodo devalidez no coincide con el release del sistema y el nivel de support package.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 171

Page 186: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 109: El Note Assistant: Carga de una nota SAP

Puede cargar notas SAP desde el SAP Service Marketplace o desde el Frontend SAPNet � R/3. Puede usar una conexión RFC (descarga de nota) o unatransferencia de archivo (upload de nota).

Cuando se descarga una nota, se puede cargar directamente desde el Front endSAPNet � R/3 a su sistema mediante el Note Assistant.

Cuando se realiza un upload de una nota, primero hay que descargar la notadesde el SAP Service Marketplace y grabarla en la unidad local del PC. Luegohay que realizar un upload de la nota mediante una transferencia de archivoscon el Note Assistant.

172 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 187: TAW12_02

TAW12_2 Lección: El Note Assistant

Gráfico 110: El Note Assistant: Browser de notas

Gráfico 111: El Note Assistant: Implementación de una nota SAP

Después de leer atentamente la nota, puede implementarla. El sistemacomprueba automáticamente que se hayan cumplido los requisitos previos y siexisten dependencias respecto a otras notas. Si no se han registrado aún notasimprescindibles en el sistema, el Note Assistant enviará primero una lista de lasnotas que se deben implementar.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 173

Page 188: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Note Assistant: Características adicionales

� Editor split screen� Diversas opciones de registro en log:

� Visualización del status de implementación� Log de acciones

� Anulación de implementación de nota

Gráfico 112: El Note Assistant: Notas con dependencias

Si para implementar una nota hace falta implementar otra antes, el Note Assistantdeterminará las notas imprescindibles durante la implementación y las importará asu sistema. Visualiza las notas seleccionadas con todas las notas adicionales encola. Las notas se deben implementar siguiendo un orden especificado.

174 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 189: TAW12_02

TAW12_2 Lección: El Note Assistant

Cuenta con las opciones siguientes:

� Implementar varias notas a la vez. Si selecciona esta opción, el sistemaimplementará todas las notas especificadas que pueda, una tras otra. Elsistema puede implementar varias notas a la vez si se pueden transferirtodas las correcciones desde las notas sin tener que realizar modificaciones.Si los includes relevantes contienen sus propias modificaciones, puedeque el sistema no pueda implementar algunas modificaciones. El sistemaimplementa estas notas por separado para que el usuario pueda ajustar susmodificaciones.

� Implementar cada nota por separado. El sistema implementará las notasespecificadas por separado. Puede realizar un seguimiento detallado delas relaciones de pertenencia entre las modificaciones del código fuentey las notas especificadas, y cambiar la modificación del código fuente sifuera necesario.

� Cancelar implementación de nota. El sistema no implementa ningunacorrección del código fuente.

Show how to implement a Note. You can use the Notes in the optional exercisesfor this topic. First, demonstrate the implementation of Note 427325000. Thendisassemble this Note and implement Note 427706000. You can modify programSAPBC426_00 and program SAPMBC426_00 as mentioned in the exercises.Release your change request. Now, you can implement Note 427423000 to showthe splitscreen editor.

Gráfico 113: El Note Assistant: Ajuste de modificaciones

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 175

Page 190: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Un support package contiene un conjunto de correcciones de errores. Puedeimportar support packages a su sistema sólo como paquete completo y sólosiguiendo un orden especificado. Cada corrección incluida en un support packagese documenta en una nota SAP.

Después de implementar un support package, pueden darse los escenariossiguientes:

� La corrección se ha implementado mediante una nota SAP y está incluida enun support package (el semáforo está apagado): Cuando se implementa unsupport package, el sistema verifica automáticamente si se ha implementadoya una nota que contenga correcciones individuales del support package.Durante el ajuste de las modificaciones, estas notas se visualizan con unsemáforo apagado, lo que indica que son obsoletas. Hay que restablecer losobjetos relevantes al estado de la versión original de SAP.

� La nota se ha implementado, pero no está incluida en el support package(semáforo en ámbar). El sistema comprueba si las correcciones yaimplementadas mediante una nota SAP se han sobrescrito en un supportpackage que no incluya estas correcciones. A continuación deberáimplementar de nuevo estas correcciones del código fuente. El sistemavisualiza un semáforo ámbar para señalar estas notas durante el ajuste de lasmodificaciones (transacción SPAU). En el pool de trabajo estas notas sevisualizan con el status Inconsistente, que indica que se tienen que volvera implementar.

� La nota SAP sigue estando implementada, aunque partes de la mismaestán incluidas en el support package (semáforo en verde). Una notacontiene varias instrucciones de corrección con periodos de validez distintos,por ejemplo. Cuando implementa el support package, una instrucciónde corrección pasa a ser obsoleta, mientras que las otras siguen siendoválidas. En este caso, que se da en contadas ocasiones, la nota se visualizaacompañada de un semáforo en verde.

Creación manual de notas SAP

� Programa SCWN_REGISTER_NOTES

� Introducir notas� Se cargan notas

� Se verifica la validez� Se verifica la implementación

� Ventajas:

� Visualizar en el Browser de modificaciones� Las dependencias están bien especificadas� Durante el ajuste de las modificaciones, las correcciones están en la

categoría Correcciones de nota.

176 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 191: TAW12_02

TAW12_2 Lección: El Note Assistant

Si ya ha implementado notas SAP antes de instalar el Note Assistant, podráinformar al Note Assistant retroactivamente de ello. Esto es importante, porqueel Note Assistant no puede detectar automáticamente si se ha implementadouna nota manualmente en el sistema sin el Note Assistant. El registro ofrecelas ventajas siguientes:

� Todas las notas SAP implementadas en su sistema se visualizan en elBrowser de notas.

� Si se ha implementado una nota SAP manualmente sin el Note Assistant, yesa nota es imprescindible para otra nota SAP que desea implementar conel Note Assistant, el asistente detectará que la nota imprescindible se haimplementado ya y no le pedirá que vuelva a implementarla.

� Durante el ajuste de las modificaciones, las notas SAP implementadasmanualmente se visualizarán también en la categoría Correcciones de notapara support packages o upgrades que se implementarán más adelante. Elsistema determina si estas notas se deben volver a implementar o se debenrestablecer a su estado original.

Nota: Para registrar notas manualmente, inicie el programaSCWN_REGISTER_NOTES. En la pantalla de selección que aparece,introduzca los números de las notas SAP que se deben registrar comoplenamente implementadas. El sistema carga las notas SAP y verifica sison válidas para su release y el nivel del support package. El programaverifica también si las notas se han registrado ya como implementadasen el Note Assistant.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 177

Page 192: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Discusión con moderador

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

178 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 193: TAW12_02

TAW12_2 Lección: El Note Assistant

Resumen de la lección

Ahora podrá:� Usar el Note Assistant para implementar correcciones del código fuente

en un sistema SAP.� Citar las ventajas del Note Assistant.� Usar el Note Assistant para ajustar las correcciones implementadas mediante

notas SAP.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 179

Page 194: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Lección:158

Ajuste de modificacionesDuración de la lección: 30 Minutos

Resumen de la lecciónEn esta lección aprenderá a implementar un ajuste de modificaciones.

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

� Enumerar los distintos pasos del ajuste de modificaciones.� Enumerar los objetos que se deben ajustar y cuándo.� Describir cómo se realiza el ajuste de modificaciones en los sistemas

siguientes.

Make sure that your students know that only objects for which they can makeversions can be adjusted. This does not include logical databases, match codes,number range objects, or table indexes.

Ejemplo empresarialDesea ajustar correctamente las modificaciones después de haber implementadoun upgrade/support package.

Ajuste de modificaciones

Gráfico 114: Objetos para el ajuste

180 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 195: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

El conjunto de objetos para el ajuste se deriva del conjunto de objetos nuevossuministrado por SAP en un nuevo release. Éste se compara con el conjuntode objetos modificados.

La intersección de los dos conjuntos es el conjunto de objetos que se deben ajustarcuanto se importa un upgrade o un support package.

Gráfico 115: Ajuste de modificaciones: SPDD y SPAU

El ajuste de las modificaciones compara los objetos de Repository ABAP antes delupgrade (versión anterior) con los objetos correspondientes después del upgrade(nueva versión). Durante el ajuste se pueden usar las transacciones SPDD y SPAU.

No hace falta llamar la transacción SPDD para ajustar los objetos del Dictionary si:

� No se han realizado modificaciones en objetos estándar de SAP en elDictionary.

� Sólo ha añadido objetos de cliente a su sistema. Únicamente hay que ajustarlos objetos de SAP modificados.

Todos los objetos del Repository ABAP se ajustan mediante la transacción SPAU.El programa de upgrade R3up le dice que inicie la transacción una vez completadoel upgrade. Después de un upgrade, tiene 30 días para usar la transacción SPAU.Después de 30 días, tendrá que volver a aplicar una clave SSCR por cada objetoque desee ajustar.

La transacción SPAU determina qué objetos se han modificado e importadodurante el upgrade actual. El ajuste de las modificaciones permite transferir lasmodificaciones efectuadas en su sistema a su nuevo release R/3.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 181

Page 196: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Gráfico 116: Ajuste de modificaciones: Objetos

Introduce transactions SPDD and SPAU. Show the relevant menu paths. Explainthe individual buttons available on the interfaces of the adjustment tools.

Make sure that your students know that only objects for which they can makeversions can be adjusted. This does not include logical databases, match codes,number range objects, or table indexes.

Explain that the upgrade tool can include one change request for ABAP Dictionaryobjects and one for all other Repository objects. This means that all objects thatcan be adjusted using SPAU should be assigned to the same change request.

Durante el ajuste de las modificaciones, use la transacción SPDD para ajustar lossiguientes objetos del Dictionary ABAP:

� Dominios� Elementos de datos� Tablas (estructuras, tablas transparentes, pool y tablas cluster, junto con

sus opciones técnicas)

Estos tres tipos de objeto se ajustan directamente después de haber importado losobjetos del Dictionary (antes de la importación principal). A partir de este puntono se han generado más objetos en el Dictionary ABAP. Para garantizar que no sepierdan datos, es importante que las modificaciones de cliente efectuadas en lostipos de objeto detallados anteriormente se realicen antes de que se generen; encaso contrario, se podrían perder datos.

182 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 197: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

Las modificaciones de otros objetos del Dictionary ABAP, como objetos debloqueo, matchcodes o vistas, no pueden provocar pérdidas de datos. Enconsecuencia, estos objetos del Dictionary ABAP se ajustan mediante latransacción SPAU después de haber completado la importación principal y lageneración de objetos. Puede utilizar la transacción SPAU para ajustar los tipos deobjeto siguientes:

� Programas ABAP, interfases (menús), pantallas, objetos matchcode, vistas yobjetos de bloqueo.

Gráfico 117: Transporte de ajustes entre sistemas

Durante el ajuste de las modificaciones, debería usar dos órdenes de modificacióndistintas para implementar las modificaciones efectuadas: una para ajustes SPDDy otra para ajustes SPAU. Estas órdenes de modificación se transportan luego a lossistemas R/3 siguientes que se desea ajustar. De este modo se garantiza que sólohabrá que realizar todo el trabajo de ajuste real en el sistema de desarrollo.

Cuando se realiza el upgrade de sistemas R/3 adicionales, todos los ajustesexportados con el primer upgrade del sistema se visualizarán durante la etapaADJUSTCHK. El usuario decide qué ajustes desea aceptar en los sistemasadicionales, que luego se integran en el upgrade actual. Después el sistema verifica

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 183

Page 198: TAW12_02

Capítulo 5: Modificaciones TAW12_2

si las órdenes de modificación creadas durante el primer upgrade del sistemacubren todas las modificaciones en el sistema R/3 actual. En caso afirmativo, nose realizarán ajustes durante el upgrade actual.

Consejo: Para que este proceso surta efecto, es importante que todoslos sistemas de la infraestructura tengan el mismo status. Esto se puedegarantizar, por ejemplo, haciendo las modificaciones primero en elsistema de desarrollo y transportándolas luego a los sistemas siguientesantes de realizar el upgrade del sistema de desarrollo. También se puedegarantizar que todos los sistemas de la infraestructura tengan el mismostatus creando el sistema de desarrollo antes del upgrade como copia delsistema productivo y no volviendo a modificar el sistema productivoa partir de ese momento.

Gráfico 118: Ajuste de modificaciones: Pantalla inicial

Cuando se inicia el ajuste de las modificaciones (transacción SPAU) se puededelimitar la lista de aciertos en una pantalla de selección. Puede decidir si deseavisualizar todos los objetos que se deben ajustar o sólo los que aún no se hanprocesado. Puede utilizar los criterios siguientes para delimitar la selección:

� Modificado por� Clase de desarrollo� Números de orden/tarea

184 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 199: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

El sistema visualiza una lista de los objetos que se deben ajustar. La lista seordena por:

� Con/Sin Asistente de modificaciones� Tipo de objeto

Show how modification adjustments work. Even if you do not implement yourSupport Package, there are enough programs to use for demonstration purposes.

Gráfico 119: Iconos del Asistente de modificaciones

Los iconos delante de cada objeto que se debe ajustar indican cómo se puedenajustar. Se pueden usar los métodos de ajuste siguientes:

� Automático. El sistema no señala los conflictos. Las modificaciones sepueden adoptar automáticamente. Para usar esta opción, seleccione el iconorelevante o seleccione la entrada relevante en el menú.

� Semiautomático. Las herramientas individuales le ayudan durante el ajuste.Cuando se ajustan los programas, se llama el editor split screen. Puede usarlopara transferir las modificaciones.

� Manualmente. Procese las modificaciones sin ayuda específica por partedel sistema. En este caso, el ajuste de las modificaciones permite pasardirectamente a la herramienta correspondiente.

Los objetos ajustados se señalan con una marca de visto.

Si desea usar la nueva versión estándar de SAP, use �Restablecer original�. Si lohace, en el futuro no tendrá que hacer más ajustes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 185

Page 200: TAW12_02

Capítulo 5: Modificaciones TAW12_2

186 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 201: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

165 Ejercicio 7: Ajuste de modificacionesDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Ajustar las modificaciones.

Ejemplo empresarialTiene que ajustar las modificaciones efectuadas en el sistema después deimplementar un support package o un upgrade.

Tarea:Ajuste de modificaciones

1. Ajuste las modificaciones que realice en el sistema a los nuevos objetosimportados al sistema.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 187

Page 202: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Solución 7: Ajuste de modificacionesTarea:Ajuste de modificaciones

1. Ajuste las modificaciones que realice en el sistema a los nuevos objetosimportados al sistema.

a) Inicie el Patch Manager (transacción SPAM). Llame la transacciónSPAU desde el menú Detalles→ Ajustar modificaciones. Puede ajustarlas modificaciones aquí.

188 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 203: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

167 Ejercicio 8: Ajuste de modificaciones(opcional)Duración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Ajustar las modificaciones después de implementar un support package.

Ejemplo empresarialHa implementado notas como correcciones avanzadas en su sistema. Tambiénha realizado algunas modificaciones. Las notas también se incluyen y seentregan como parte de los support packages. Cuando se implementa un supportpackage, puede que se sobrescriban algunas de las modificaciones y correccionesimplementadas mediante notas. Por ello es necesario implementar un ajuste delas modificaciones.

Tarea 1:Inicie el ajuste de las modificaciones seleccionando Menú SAP→ Herramientas→ Workbench ABAP→ Utilidades→ Actualización→ Utilidades de upgrade→Comparación de programa o llamando la transacción SPAU.

1. Introduzca su nombre de usuario en el campo �Usuario que hizo la últimamodificación�. Ejecute el programa.

2. Visualizar los objetos en categorías distintas. ¿Qué significan los iconos?

Tarea 2:Ajustar las modificaciones. Empiece por arriba y vaya descendiendo:

1. Empiece por los objetos en la categoría �Correcciones de notas�.

2. Si no se ha definido el modo de ajuste, reinicie la función haciendo dobleclic en el interrogante.

3. En caso necesario, cree una nueva orden de modificación.

4. Siga con la categoría �Con Asistente de modificaciones�.

5. Para terminar, trabaje con la categoría �Sin Asistente de modificaciones�.

Tarea 3:

1. Una vez ajustados todos los objetos, libere la orden de modificación.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 189

Page 204: TAW12_02

Capítulo 5: Modificaciones TAW12_2

Solución 8: Ajuste de modificaciones(opcional)Tarea 1:Inicie el ajuste de las modificaciones seleccionando Menú SAP→ Herramientas→ Workbench ABAP→ Utilidades→ Actualización→ Utilidades de upgrade→Comparación de programa o llamando la transacción SPAU.

1. Introduzca su nombre de usuario en el campo �Usuario que hizo la últimamodificación�. Ejecute el programa.

a) �

2. Visualizar los objetos en categorías distintas. ¿Qué significan los iconos?

a) El significado de los iconos se explica en la documentación sobre elajuste de modificaciones.

Tarea 2:Ajustar las modificaciones. Empiece por arriba y vaya descendiendo:

1. Empiece por los objetos en la categoría �Correcciones de notas�.

a) �

2. Si no se ha definido el modo de ajuste, reinicie la función haciendo dobleclic en el interrogante.

a) �

3. En caso necesario, cree una nueva orden de modificación.

a) �

4. Siga con la categoría �Con Asistente de modificaciones�.

a) �

5. Para terminar, trabaje con la categoría �Sin Asistente de modificaciones�.

a) �

Tarea 3:

1. Una vez ajustados todos los objetos, libere la orden de modificación.

a) �

190 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 205: TAW12_02

TAW12_2 Lección: Ajuste de modificaciones

Resumen de la lección

Ahora podrá:� Enumerar los distintos pasos del ajuste de modificaciones.� Enumerar los objetos que se deben ajustar y cuándo.� Describir cómo se realiza el ajuste de modificaciones en los sistemas

siguientes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 191

Page 206: TAW12_02

Resumen del capítulo TAW12_2

Resumen del capítuloAhora podrá:� Describir qué es una modificación.� Explicar los conceptos básicos en el entorno de modificación.� Describir qué se debe tener en cuenta a la hora de implementar

modificaciones.� Explicar cómo funciona el Asistente de modificaciones.� Realizar modificaciones especializadas mediante el Asistente de

modificaciones.� Elaborar una lista de las modificaciones realizadas mediante el Browser de

modificaciones.� Describir qué son los exits de usuario y cómo funcionan.� Describir cómo buscar exits de usuario en el sistema y usarlos para ampliar

el software de SAP.� Usar el Note Assistant para implementar correcciones del código fuente

en un sistema SAP.� Citar las ventajas del Note Assistant.� Usar el Note Assistant para ajustar las correcciones implementadas mediante

notas SAP.� Enumerar los distintos pasos del ajuste de modificaciones.� Enumerar los objetos que se deben ajustar y cuándo.� Describir cómo se realiza el ajuste de modificaciones en los sistemas

siguientes.

192 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 207: TAW12_02

Capítulo 6171 Ampliaciones

Atención: As the package DNW7AW is assigned to the softwarecomponent TRAINING, which has not (yet) been integrated into thetraining system, you cannot enhance objects in this package. Until theTRAINING component is available in the training system, you mustchange the software component assignment of the package DNW7AWto SAP_ABA (modification) before the course starts, to run all thedemos and exercises. The easiest way to do this is with the reportSAPDNW7AW_COURSE_PREPARATION. (This directly manipulatesthe management table TDVEC � we do not recommend you follow thissame procedure in live systems.)

Resumen del capítuloLas ampliaciones le ofrecen la opción de adaptar el software de SAP a susnecesidades de cliente sin tener que realizar modificaciones. A lo largo de losaños se han desarrollado varias técnicas con este fin, como los exits de usuario,los exits de cliente, los eventos de operación (BTE) y, desde el release 4.6A deR/3, los add-ins empresariales (BAdI). En SAP Web Application Server Release6.10, los BAdI se ampliaron para incluir exits de dynpro. Éstos se tratan en laprimera lección.

En SAP NetWeaver Release 7.0, las opciones de ampliación existentes aumentaronconsiderablemente con la introducción del concepto de ampliación. Lasampliaciones implícitas son una de las innovaciones más importantes en este caso.Puede usarlas para añadir su propio código fuente en determinados puntos de losprogramas, por ejemplo, al comienzo de un módulo de funciones o al final de uninclude. También es posible añadir parámetros propios a módulos de funciones ométodos globales. Los nuevos BAdI son también uno de los componentes másimportantes del concepto de ampliación. Son más flexibles y eficaces que lavariante clásica. El concepto de ampliación se trata en la segunda lección.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 193

Page 208: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

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

� Explicar las nuevas opciones de ampliación y su gestión.� Enumerar las opciones de ampliación implícitas y usar estos puntos de

ampliación para ampliar el software de SAP.� Buscar puntos y secciones de ampliación explícitos, y usarlos para ampliar o

sustituir el software de SAP.� Explicar por qué SAP ha introducido la nueva tecnología BAdI.� Explicar el concepto de la nueva tecnología BAdI y su arquitectura en

tiempo de ejecución.� Buscar BAdI nuevos y usarlos para ampliar el software de SAP.� Explicar cómo se integra la implementación existente de ampliación de

soluciones sectoriales en el Switch Framework y cómo se puede activar.

Contenido del capítuloLección: El nuevo concepto de ampliación.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .195

Ejercicio 9: Puntos de ampliación implícitos .. . . . . . . . . . . . . . . . . . . . . . . . . . .211Ejercicio 10: Ampliaciones implícitas de clases ... . . . . . . . . . . . . . . . . . . . . .215Ejercicio 11: Puntos y secciones de ampliación explícitos.. . . . . . . . . . .221Ejercicio 12: BAdI nuevos .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223

194 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 209: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Lección:173

El nuevo concepto de ampliaciónDuración de la lección: 180 Minutos

Resumen de la lecciónEn esta lección se explican las ventajas y el uso de las nuevas opciones deampliación, además de la nueva tecnología BAdI introducida con SAP NetWeaver7.0.

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

� Explicar las nuevas opciones de ampliación y su gestión.� Enumerar las opciones de ampliación implícitas y usar estos puntos de

ampliación para ampliar el software de SAP.� Buscar puntos y secciones de ampliación explícitos, y usarlos para ampliar o

sustituir el software de SAP.� Explicar por qué SAP ha introducido la nueva tecnología BAdI.� Explicar el concepto de la nueva tecnología BAdI y su arquitectura en

tiempo de ejecución.� Buscar BAdI nuevos y usarlos para ampliar el software de SAP.� Explicar cómo se integra la implementación existente de ampliación de

soluciones sectoriales en el Switch Framework y cómo se puede activar.

Due to the complexity of the subject, it is important that you first provide theparticipants with a good overview of the options before going into detail.

You should definitely provide demos to illustrate the respective content. You willfind these in the package DNW7AW.

The participants should go through the exercises to extend the knowledge theyhave acquired.

Atención: Since the package DNW7AW is assigned to the softwarecomponent TRAINING, which has not (yet) been integrated into thetraining system, you cannot enhance objects in this package. Until theTRAINING component is available in the training system, you have tochange the software component assignment of the package DNW7AW toSAP_ABA (modification) before the course starts, so that all the demosand exercises can run. The easiest way to do this is with the reportSAPDNW7AW_COURSE_PREPARATION (which directly manipulatesthe management table TDVEC � we do not recommend you follow thissame procedure in productive systems...)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 195

Page 210: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Ejemplo empresarialDespués de realizar un upgrade a SAP NetWeaver 7.0 desea usar las nuevasopciones de ampliación y la nueva tecnología BAdI para ampliar el softwarede SAP.

Puntos y secciones de ampliaciónEn esta sección primero se ofrece un resumen de las nuevas opciones deampliación y su gestión. A continuación se explica dónde hay puntos deampliación implícitos y cómo se pueden usar para ampliar el software de SAP.Finalmente se explica cómo usar los puntos y las secciones de ampliaciónexplícitos como opciones de ampliación.

Gráfico 120: El nuevo concepto de ampliación (resumen)

A partir de SAP NetWeaver 7.0, se han añadido dos opciones de ampliaciónnuevas: Puntos de ampliación y secciones de ampliación. Resulta especialmenteinteresante el hecho de que las ampliaciones mediante puntos de ampliaciónno requieren preparación por parte de SAP, a diferencia de las ampliacionesimplementadas mediante la tecnología de ampliación anterior. Además, SAP haimplementado la nueva tecnología BAdI por cuestiones de rendimiento; las demásrazones se describen más adelante.

196 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 211: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

En el gráfico anterior se ilustra cómo los puntos y secciones de ampliación y losBAdI creados mediante la nueva tecnología se agrupan y gestionan mediantepuntos de ampliación. Los puntos de ampliación compuestos pueden ser puntosde ampliación simples y/o otros puntos de ampliación compuestos. Sirven paraagrupar semánticamente los puntos de ampliación.

Los BAdI anteriores (clásicos) siguen existiendo en el sistema como antes. En elfuturo, sin embargo, SAP sólo ofrecerá BAdI con la nueva tecnología.

En el gráfico siguiente se puede ver qué son los puntos de ampliación.

Gráfico 121: Puntos de ampliación

Un punto de ampliación es una opción que permite añadir código fuente,declaraciones variables y declaraciones de parámetros a programas SAP, módulosde funciones y clases sin tener que realizar modificaciones.

Los puntos de ampliación explícitos son opciones de inserción preparadas porSAP, mientras que los puntos de ampliación implícitos están presentes en lugaresparticulares en objetos SAP de forma predeterminada, es decir, sin ningunapreparación por parte de SAP. En los gráficos siguientes se muestra en qué lugareshay puntos de ampliación implícitos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 197

Page 212: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Gráfico 122: Puntos de ampliación implícitos (1)

Gráfico 123: Puntos de ampliación implícitos (2)

Para usar un punto de ampliación implícito se implementa una implementaciónde ampliación. A continuación se describe el procedimiento para usar losdiversos puntos de ampliación implícitos.

198 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 213: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Uso de puntos de ampliación implícitos que permiten insertar código fuente(plug-ins de código fuente implícitos):

1. Visualice el objeto SAP (programa, módulo de funciones, método).2. En el status GUI, seleccione el pulsador de ampliación.3. A continuación seleccione Tratar→ Operaciones de ampliación→ Mostrar

opciones de ampliación implícitas para mostrar las opciones de ampliaciónimplícitas.

4. Cree una implementación de ampliación mediante el menú contextual enel editor.

5. Inserte el código fuente.6. En el status GUI, seleccione el pulsador "Activar ampliaciones".

Importante: Cuando se amplía una declaración de estructura (tipo) directamenteantes de END OF..., se debe usar la sintaxis

DATA <campo adicional> TYPE <Type>

porque de otro modo el programa sería incorrecto sintácticamente.

At this point the participants could do the exercise on implicit enhancement points.

Ampliación de interfases de métodos y módulos de funciones SAP de clasesglobales:

Inserte nuevos parámetros de interfase con el tipo en el Function Builder o elgenerador de clases; para ello siga el acceso vía menús Módulo de funciones→Ampliar interfase o Clase→ Ampliar.

Consejo: Estos parámetros de interfase recién añadidos suelen seropcionales y se pueden activar en las ampliaciones de código fuente de losmétodos o módulos de funciones correspondientes.

Enhance a simple function module, for example FI_COMPANYCODE_GETDE-TAIL. Since you will probably not be the only one teaching on the system, youshould add a statement to your source code such as the following:

IF sy-uname = <YOUR_NAME>.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 199

Page 214: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Definición de atributos/métodos adicionales de clases globales:

Defina métodos y atributos adicionales en el generador de clases; para ello siga elacceso vía menús Clase→ Ampliar.

Consejo: Haga doble clic en un método adicional para ir al editor demétodo para la implementación.

Estos atributos y métodos adicionales se pueden direccionar en lasampliaciones de código fuente de métodos de la clase global.

Definición de un método anterior/posterior/de sobrescritura para el método deuna clase global:

1. Cambie al método de ampliación en el generador de clases; para ello siga elacceso vía menús Clase→ Ampliar.

2. Use el cursor para seleccionar el método SAP necesario.3. Seleccione el acceso vía menús Tratar→ Operaciones de ampliación, luego

seleccione una de las opciones de menú: Insertar método anterior, Insertarmétodo posterior o Añadir método de sobrescritura.

4. Seleccione el nuevo pulsador en la columna �Exit anterior (posterior/desobrescritura)� para implementar el método correspondiente.

Consejo: Por cada método SAP se puede definir un método anterior y otroposterior. Como alternativa, se puede crear un método de sobrescrituraque sustituya al método SAP. Estos métodos de ampliación tienen lamisma interfase que el método original.

Estos métodos se llaman automáticamente en los puntos descritos en elmétodo SAP. Se trata de métodos de instancia de una clase local generadaautomáticamente y tienen un atributo llamado CORE_OBJECT que hacereferencia a la instancia actual de la clase SAP. No pueden acceder a loscomponentes privados de la clase.

Demo: Enhance the class CL_DNW7AW_ENH_IMPLIC_PLANE_D1 with aprivate additional instance attribute me_span TYPE i DEFAULT 30., forexample. Define an appropriate additional getter method. Enhance the constructorwith a suitable additional parameter and use the implicit enhancement option atthe end of the constructor source code to map the parameter to the attribute. Thencreate an overwrite method for DISPLAY_ATTRIBUTES that also outputs theadditional attribute.

200 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 215: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

You could have the participants do the exercise on class enhancements here.

Gráfico 124: Puntos y secciones de ampliación explícitos

Un punto de ampliación explícito es una opción que SAP proporciona deantemano para permitir a los usuarios ampliar el código fuente de SAP sin tenerque realizar modificaciones.

Una sección de ampliación explícita es una opción que SAP proporciona deantemano para permitir a los usuarios sustituir el código fuente de SAP sin tenerque realizar modificaciones. No existen secciones de ampliación implícitas.

Los puntos y las secciones de ampliación explícitos siempre están incrustados enpuntos de ampliación.

Los puntos y las secciones de ampliación explícitos que permiten ampliar osustituir el código fuente se llaman dinámicos . Los puntos y las secciones deampliación explícitos que permiten ampliar o sustituir declaraciones se llamanestáticos .

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 201

Page 216: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Para usar puntos y secciones de ampliación explícitos, implemente unaimplementación de ampliación (una implementación del punto de ampliación denivel superior). En los pasos siguientes se describe cómo usar puntos y seccionesde ampliación explícitos:

1. Visualice el objeto SAP (programa, módulo de funciones, método).2. Busque el punto o la sección de ampliación necesarios.3. En el status GUI, seleccione el pulsador de ampliación.4. Cree la implementación de ampliación mediante el menú contextual del

punto o la sección de ampliación.5. Especifique el nombre de la implementación de ampliación.6. Introduzca el código fuente.7. En el status GUI, seleccione el pulsador Activar ampliaciones.

Consejo: Tenga en cuenta que los elementos de SAP Base central nose pueden ampliar.

Demo: It is best to create a simple program with explicit enhancement optionsyourself. In the second step, create implementations.

At this point, the participants could do the exercise on explicit enhancement pointsand enhancement sections.

La nueva tecnología BAdISAP introdujo la nueva tecnología BAdI con SAP NetWeaver 7.0, principalmentepara mejorar el rendimiento y ampliar las funciones. En el gráfico siguiente semuestran los motivos individuales.

202 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 217: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Gráfico 125: Motivos a favor de la nueva tecnología BAdI

La integración de los nuevos BAdI y puntos y secciones de ampliación en elframework de ampliación permite usar las nuevas opciones de ampliación dentrode una herramienta unificada individual.

Mediante la integración de la nueva tecnología de ampliación en el SwitchFramework, SAP permite usar flags para activar y desactivar las implementacionesde BAdI implementadas por soluciones sectoriales (véase a continuación).

Los BAdI anteriores creados mediante la tecnología clásica siguen estando en elsistema. En el futuro, SAP sólo ofrecerá BAdI con la nueva tecnología o mediantepuntos y secciones de ampliación explícitos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 203

Page 218: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Gráfico 126: BAdI clásicos (arquitectura)

Gráfico 127: BAdI clásicos (sintaxis de llamada en el programa SAP)

204 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 219: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

En la tecnología BAdI clásica, la clase adaptador de BAdI se generaautomáticamente cuando se define la interfase de BAdI/BAdI. En el tiempo deejecución se crea una instancia de la clase adaptador en el programa de aplicaciónde SAP y el método de interfase se llama desde la instancia de clase adaptador.Luego los métodos de interfase llaman los métodos (con el mismo nombre) deimplementaciones activas secuencialmente.

La nueva tecnología BAdI funciona del mismo modo. Sin embargo, ya no secrean clases adaptadores, lo que significa que el programa de aplicación de SAPno se tiene que instanciar. En su lugar, en el tiempo de ejecución del programade aplicación el sistema genera un handle de BAdI en el núcleo que realiza lamisma función que la clase adaptador, pero llama los métodos de implementacióndisponibles con mayor eficacia.

Gráfico 128: BAdI nuevos (arquitectura)

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 205

Page 220: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Gráfico 129: BAdI nuevos (sintaxis de llamada en el programa SAP)

En el gráfico anterior se muestra la sintaxis de llamada de los nuevos BAdI.

Si no se encuentra ninguna implementación activa del BAdI en GET BADI, seproducirá la excepción cx_badi_not_implemented.

Si la referencia de handle es inicial para CALL BADI (por ejemplo, por el fallo deGET BADI), se producirá la excepción cx_badi_initial_reference.

En el siguiente gráfico se muestra el procedimiento de búsqueda de BAdI.

206 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 221: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Gráfico 130: Búsqueda de BAdI

Para usar un BAdI encontrado, debe implementar una implementación deampliación (una implementación del punto de ampliación de nivel superior). Deeste modo se implementará una implementación de BAdI por cada BAdI en elpunto de ampliación.

Gráfico 131: Uso de los BAdI

La descripción anterior para la búsqueda y la utilización de BAdI guarda relacióncon los exits de programa (el tipo de exit más frecuente).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 207

Page 222: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Puede buscar e implementar exits de menú y de dynpro exactamente delmismo modo que con la técnica BAdI clásica, o bien mediante el métododescrito anteriormente. Para obtener el handle de BAdI para transportardatos, sólo hace falta usar la sentencia GET BADI en vez del métodoGET_INSTANCE_FOR_SUBSCREENS en el PBO del dynpro subscreen decliente para exits de dynpro.

Gráfico 132: BAdI dependientes de filtro

En el gráfico anterior se ilustra el concepto de BAdI dependiente de filtro, queequivale al concepto de BAdI clásico. Sin embargo, las funciones se han ampliado.Ahora también se pueden usar filtros numéricos. Para las implementaciones, ahorano sólo puede especificar valores de filtro individuales, sino también condicionesde filtro mediante los operadores <>, >, <, >=, <=, CP, NP. También puede definirmúltiples filtros para un BAdI.

Consejo: Documentación sobre el nuevo concepto de ampliación:Seleccione el pulsador Información en el Editor ABAP→ Introduzca"Concepto de ampliación" como concepto de búsqueda→ Entrada deglosario: "Concepto de ampliación"→ "Más"

208 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 223: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Switch FrameworkLa idea del Switch Framework es que los clientes reciban todas las solucionessectoriales como paquete completo y que puedan activar las que deseen utilizar.Todas las demás soluciones están disponibles, pero no se pueden usar. SAP hadecidido también usar paquetes de ampliación para entregar desarrollos futuros.Los clientes pueden decidir qué nuevas funciones desean activar.

Gráfico 133: Switch Framework

Puede usar el Switch Framework para crear flags y asignarles paquetes, elementosde pantalla y opciones de menú. Puede usar una función empresarial para agruparestos flags.

Una solución sectorial de SAP es un conjunto de funciones empresarialesconocidas como conjunto de funciones empresariales. Puede usar la transacciónSFW5 para activar un único conjunto de funciones empresariales y activar odesactivar funciones empresariales.

Demo: SFW5.

Los clientes también pueden usar el Switch Framework para activar y desactivarimplementaciones de ampliaciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 209

Page 224: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

El cliente define un flag en la transacción SFW1 y luego asigna el paquete conlas implementaciones que se deben activar. El cliente define también una funciónempresarial (en la transacción SFW2) a la que se asigna el flag.

Cuando se asigna un flag a una función empresarial, se debe especificar el tipo deasignación. Son posibles las opciones Activación y Habilitar/Pausa.

Activación asigna todos los flags/objetos de paquete a la función empresarial,mientras que Habilitar/Pausa asigna sólo los objetos del Dictionary. Enconsecuencia, seleccione Activación.

La función empresarial se puede activar y desactivar mediante la transacciónSFW5. Cuando se desactiva, todos los objetos de paquete que se pueden activar(incluidas las ampliaciones) pasan a ser ineficaces, aunque sigan estando enel sistema. Sin embargo, para desactivar la función empresarial, debe habersedefinido como anulable y el paquete no puede contener ningún objeto delDictionary.

As a demonstration, you should create a switch and assign it to your package withthe previous enhancement implementations.

Then, you should create a business function and assign your switch to the businessfunction.

Now show that your previous implementations are no longer effective althoughthey are still available.

Activate your business function and check whether or not your previousimplementations are effective.

210 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 225: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

189 Ejercicio 9: Puntos de ampliaciónimplícitosDuración del ejercicio: 15 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Usar puntos de ampliación implícitos para ampliar el código fuente de SAP.

Ejemplo empresarialDesea usar puntos de ampliación implícitos para ampliar la definición de unavariable de estructura y una subrutina en un programa SAP sin tener que realizarmodificaciones.

Datos del sistemaSistema: Will be assignedMandante: Will be assignedID de usuario: Will be assignedClave de acceso: Will be assignedParametrizaciones del sistema: No special settings required in the standardtraining system

Tarea:Ampliar una definición de estructura y una subrutina

1. Analice el código fuente del programa SAP SAPDNW7AW_ENH_IM-PLIC_##. (## indica el número de grupo de dos dígitos).

2. Use el punto de ampliación implícito correspondiente para añadir loscampos cityfrom y cityto a la definición de la variable estructural gs_flight(use el elemento de datos S_CITY para escribir cada campo). SeleccioneZDNW7AW_ENH_IMPLIC_## como nombre de la implementación deampliación.

3. En la subrutina, complete los campos adicionales cityfrom y cityto delparámetro formal ps_flight con valores antes de que se visualicen los camposcarrid y connid (mediante el punto de ampliación implícito correspondiente).

4. Use el punto de ampliación implícito correspondiente en la subrutina despuésde que se hayan visualizado los campos carrid y connid para visualizartambién fldate, cityfrom y cityto.

5. Active las ampliaciones y pruebe el programa.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 211

Page 226: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Solución 9: Puntos de ampliaciónimplícitosTarea:Ampliar una definición de estructura y una subrutina

1. Analice el código fuente del programa SAP SAPDNW7AW_ENH_IM-PLIC_##. (## indica el número de grupo de dos dígitos).

a) -

2. Use el punto de ampliación implícito correspondiente para añadir loscampos cityfrom y cityto a la definición de la variable estructural gs_flight(use el elemento de datos S_CITY para escribir cada campo). SeleccioneZDNW7AW_ENH_IMPLIC_## como nombre de la implementación deampliación.

a) Visualice el programa SAPDNW7AW_ENH_IMPLIC_## en elmodo de visualización en el Object Navigator. Vaya al modo deampliación: Programa→ Ampliar. A continuación seleccione Tratar→ Operaciones de ampliación→ Mostrar opciones de ampliaciónimplícitas. Sitúe el cursor en el punto indicado dentro de la definiciónde la estructura, llame el menú contextual para el editor y seleccioneImplementación de ampliación→ Crear. En la siguiente pantalla,introduzca ZDNW7AW_ENH_IMPLIC_##. Actualice el texto breve yseleccione Intro. Grabe las entradas.

b) Para el código fuente defina lo siguiente:DATA: cityfrom TYPE s_city,

cityto TYPE s_city.

3. En la subrutina, complete los campos adicionales cityfrom y cityto delparámetro formal ps_flight con valores antes de que se visualicen los camposcarrid y connid (mediante el punto de ampliación implícito correspondiente).

a) Sitúe el cursor en la primera fila de la subrutina write_str. En el menúcontextual, seleccione Implementación de ampliación→ Crear. Enla pantalla siguiente, seleccione Declaración. Luego, en la pantallasiguiente, seleccione la implementación que ya ha creado y confirmeesta selección con Intro.

b) Para el código fuente defina lo siguiente, por ejemplo:ps_flight-cityfrom = ’Heidelberg’.

ps_flight-cityto = ’Mainz’.

Continúa en la página siguiente

212 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 227: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

4. Use el punto de ampliación implícito correspondiente en la subrutina despuésde que se hayan visualizado los campos carrid y connid para visualizartambién fldate, cityfrom y cityto.

a) Véase el enfoque equivalente más arriba.

b) Para el código fuente defina lo siguiente:WRITE: / ps_flight-carrid, ps_flight-connid.

5. Active las ampliaciones y pruebe el programa.

a) Pulse Ctrl + F3 y F8.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 213

Page 228: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

214 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 229: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

193 Ejercicio 10: Ampliaciones implícitas declasesDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Ampliar las clases globales.

Ejemplo empresarialSAP suministra una clase de camión que no cubre sus necesidades. Por eso amplía(no modifica) la clase CL_DNW7AW_ENH_IMPLIC_TRUCK_##. (## indicael número de grupo).

Datos del sistemaSistema: Will be assignedMandante: Will be assignedID de usuario: Will be assignedClave de acceso: Will be assignedParametrizaciones del sistema: No special instructions required when using astandard training system.

Tarea 1:Crear un atributo adicional

1. Dentro de una implementación de ampliación ZDNW7AW_TRUCK##a,cree un nuevo atributo de instancia privado del tipo I para la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##. Se debe usar para registrarla velocidad máxima de un camión. (En este caso se ha prescindido de unaunidad de medida adicional necesaria, como km/h o mph).

Nombre sugerido: me_max_speed. Valor inicial: 100.

2. Active su implementación de ampliación.

3. De acuerdo con el atributo, cree un método getter funcionalGET_MAX_SPEED.

4. Active su implementación de ampliación.

5. Realice un test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) y llame su método getter paraconseguir la máxima velocidad.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 215

Page 230: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Tarea 2:Crear un parámetro adicional para el método

1. Amplíe el constructor estático con un parámetro opcional ie_max_speed conel que pueda determinar la velocidad cuando cree un camión.

2. Active su implementación de ampliación.

3. Use el punto de ampliación implícito disponible al final del código fuentedel constructor para asignar el parámetro ie_max_speed al atributo adicionalme_max_speed. Active su implementación de ampliación.

4. Active su implementación de ampliación.

5. Realice un nuevo test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) con una velocidad máximaespecífica y llame su método getter para la velocidad.

Tarea 3:Crear un método posterior para el método

Por cuestiones de seguridad (para reducir el riesgo de accidentes), el últimorequisito legal estipula que el camión sólo se podrá cargar hasta un 90% de supeso máximo.

1. Cree un método posterior para el método GET_CARGO que reduzca elvalor de retorno real al 90%.

2. Active su implementación de ampliación.

3. Realice un nuevo test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) con un peso máximoespecífico y llame su método GET_CARGO.

216 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 231: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Solución 10: Ampliaciones implícitas declasesTarea 1:Crear un atributo adicional

1. Dentro de una implementación de ampliación ZDNW7AW_TRUCK##a,cree un nuevo atributo de instancia privado del tipo I para la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##. Se debe usar para registrarla velocidad máxima de un camión. (En este caso se ha prescindido de unaunidad de medida adicional necesaria, como km/h o mph).

Nombre sugerido: me_max_speed. Valor inicial: 100.

a) En el generador de clases del Object Navigator, vaya al modo devisualización de la clase CL_DNW7AW_ENH_IMPLIC_TRUCK_##.Seleccione Clase→ Ampliar. En la pantalla siguiente, introduzcaZDNW7AW_TRUCK##a como nombre de la implementación y creeun texto breve. Grabe las entradas. Vaya a la etiqueta Atributos para laclase y cree el atributo adicional.

2. Active su implementación de ampliación.

a) Pulse Ctrl + F3.

3. De acuerdo con el atributo, cree un método getter funcionalGET_MAX_SPEED.

a) Vaya a la etiqueta Métodos y cree GET_MAX_SPEED como métodode instancia público. Cree re_speed como parámetro de retorno del tipoI. Haga doble clic en el nombre del método para acceder a su códigofuente. Aquí defina lo siguiente: re_speed = me_max_speed.

4. Active su implementación de ampliación.

a) Pulse Ctrl + F3.

5. Realice un test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) y llame su método getter paraconseguir la máxima velocidad.

a) Para comprobarlo, pulse F8. Cree una instancia (seleccione F8 denuevo) y llame el método.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 217

Page 232: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Tarea 2:Crear un parámetro adicional para el método

1. Amplíe el constructor estático con un parámetro opcional ie_max_speed conel que pueda determinar la velocidad cuando cree un camión.

a) Asegúrese de que sigue en el modo de ampliación. Active el cursor enel método CONSTRUCTOR y vaya a sus parámetros. Aquí, cree elparámetro para import del tipo I.

2. Active su implementación de ampliación.

a) Pulse Ctrl + F3.

3. Use el punto de ampliación implícito disponible al final del código fuentedel constructor para asignar el parámetro ie_max_speed al atributo adicionalme_max_speed. Active su implementación de ampliación.

a) Haga doble clic en el nombre del método CONSTRUCTOR paraacceder a su código fuente. Seleccione Método→ Ampliar y luegoTratar → Operaciones de ampliación → Mostrar opciones deampliación implícitas. Sitúe el cursor en la fila anterior a ENDMETHOD.Seleccione Tratar→ Operaciones de ampliación→ Crear y luegoCódigo fuente. Puesto que no se trata de una ampliación explícitaadicional, deberá crear una nueva implementación de ampliación.Introduzca ZDNW7AW_TRUCK##b. Cree un texto breve. Grabelas entradas.

b) Defina lo siguiente como código fuente:

me_max_speed = ie_max_speed.

4. Active su implementación de ampliación.

a) Pulse Ctrl + F3.

5. Realice un nuevo test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) con una velocidad máximaespecífica y llame su método getter para la velocidad.

a) Véase más arriba.

Continúa en la página siguiente

218 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 233: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Tarea 3:Crear un método posterior para el método

Por cuestiones de seguridad (para reducir el riesgo de accidentes), el últimorequisito legal estipula que el camión sólo se podrá cargar hasta un 90% de supeso máximo.

1. Cree un método posterior para el método GET_CARGO que reduzca elvalor de retorno real al 90%.

a) Asegúrese de que sigue en el modo de ampliación. En la etiquetaMétodos sitúe el cursor en el método GET_CARGO y seleccione Tratar→ Operaciones de ampliación→ Insertar método posterior. Haga clicen el pulsador que acaba de aparecer en la columna Exit posterior.

b) Para el código fuente defina lo siguiente:

re_cargo = re_cargo * ’0.9’.

2. Active su implementación de ampliación.

a) Pulse Ctrl + F3.

3. Realice un nuevo test de la clase en el entorno de test del generadorde clases: Cree un camión (es decir, un objeto de la claseCL_DNW7AW_ENH_IMPLIC_TRUCK_##) con un peso máximoespecífico y llame su método GET_CARGO.

a) Véase más arriba.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 219

Page 234: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

220 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 235: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

199 Ejercicio 11: Puntos y secciones deampliación explícitosDuración del ejercicio: 15 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Usar puntos y secciones de ampliación explícitos para ampliar o sustituir el

código fuente de SAP.

Ejemplo empresarialDesea usar puntos y secciones de ampliación explícitos para ampliar o sustituirel código fuente de SAP sin realizar modificaciones.

Datos del sistemaSistema: Will be assignedMandante: Will be assignedID de usuario: Will be assignedClave de acceso: Will be assignedParametrizaciones del sistema: No special settings required in the standardtraining system

Tarea:Ampliar y sustituir el código fuente de SAP

1. Analice el código fuente del programa SAP SAPDNW7AW_ENH_EX-PLIC_00 y ejecútelo. (## indica el número de grupo de dos dígitos).

2. Use el punto de ampliación explícito DNW7AW_ENHPO1_##para visualizar también los campos distance y distid. SeleccioneZDN7AW_ENH_EXPLIC## como nombre de la implementación deampliación.

3. Use la sección de ampliación explícita DNW7AW_ENHSEC1_## paravisualizar un texto distinto al proporcionado por SAP.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 221

Page 236: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

Solución 11: Puntos y secciones deampliación explícitosTarea:Ampliar y sustituir el código fuente de SAP

1. Analice el código fuente del programa SAP SAPDNW7AW_ENH_EX-PLIC_00 y ejecútelo. (## indica el número de grupo de dos dígitos).

a) Para ejecutarlo, pulse F8.

2. Use el punto de ampliación explícito DNW7AW_ENHPO1_##para visualizar también los campos distance y distid. SeleccioneZDN7AW_ENH_EXPLIC## como nombre de la implementación deampliación.

a) Para ello, vaya al modo de ampliación: Programa→ Ampliar. Sitúe elcursor en el nombre del punto de ampliación, llame el menú contextualpara el editor y seleccione Implementación de ampliación→ Crear.

3. Use la sección de ampliación explícita DNW7AW_ENHSEC1_## paravisualizar un texto distinto al proporcionado por SAP.

a) Para ello, vaya al modo de ampliación: Programa→ Ampliar. Sitúeel cursor en el nombre de la sección de ampliación, llame el menúcontextual para el editor y seleccione Implementación de ampliación→ Crear.

222 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 237: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

201 Ejercicio 12: BAdI nuevosDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Buscar BAdI nuevos en programas de SAP y usarlos para ampliar el

programa de SAP.

Ejemplo empresarialDesea encontrar BAdI implementados mediante la nueva tecnología BAdI enprogramas de SAP y usarlos para ampliar el software de SAP.

Datos del sistemaSistema: Will be assignedMandante: Will be assignedID de usuario: Will be assignedClave de acceso: Will be assignedParametrizaciones del sistema: No special settings required in the standardtraining system

Tarea:Buscar BAdI nuevos y usarlos

1. En el programa SAP SAPDNW7AW_BADI_## busque un BAdI que se usey visualice el punto de ampliación superior con la definición del BAdI. (##indica el número de grupo de dos dígitos).

2. Cree una implementación de ampliación (para el punto) con unaimplementación de BAdI (para el BAdI).

Nombre de la implementación de ampliación: ZDNW7AW_ES-POT_BADI_##

Nombre de la implementación de BAdI: ZDNW7AW_BADI_##

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 223

Page 238: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

3. Implemente la implementación de BAdI para que se visualicen camposadicionales de la tabla interna.

Consejo: Puede:

- copiar la clase de implementación de ejemplo en su clase deimplementación y ajustar el método copiado si es necesario. O bien:

- crear una clase de implementación en blanco e implementar elmétodo personalmente.

Puesto que el BAdI depende de un filtro, puede crear variasimplementaciones, por ejemplo, una para DE (Alemania) y otrapara GB (Gran Bretaña).

224 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 239: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Solución 12: BAdI nuevosTarea:Buscar BAdI nuevos y usarlos

1. En el programa SAP SAPDNW7AW_BADI_## busque un BAdI que se usey visualice el punto de ampliación superior con la definición del BAdI. (##indica el número de grupo de dos dígitos).

a) Busque el comando GET BADI. Haga doble clic en la variable quehay a continuación para acceder a la definición. Haga doble clic en eltipo de variable (DNW7AW_BADI_##). Pasará al punto de ampliaciónrelevante DNW7AW_ESPOT_BADI_##, donde se visualiza el BAdIDNW7AW_BADI_##.

2. Cree una implementación de ampliación (para el punto) con unaimplementación de BAdI (para el BAdI).

Nombre de la implementación de ampliación: ZDNW7AW_ES-POT_BADI_##

Nombre de la implementación de BAdI: ZDNW7AW_BADI_##

a) En la visualización del punto de ampliación, pulse F6 o el pulsadorpara crear una implementación.

b) En la pantalla siguiente introduzca ZDNW7AW_ESPOT_BADI_##como nombre de la implementación, cree un texto breve para ella ygrabe las entradas.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 225

Page 240: TAW12_02

Capítulo 6: Ampliaciones TAW12_2

3. Implemente la implementación de BAdI para que se visualicen camposadicionales de la tabla interna.

Consejo: Puede:

- copiar la clase de implementación de ejemplo en su clase deimplementación y ajustar el método copiado si es necesario. O bien:

- crear una clase de implementación en blanco e implementar elmétodo personalmente.

Puesto que el BAdI depende de un filtro, puede crear variasimplementaciones, por ejemplo, una para DE (Alemania) y otrapara GB (Gran Bretaña).

a) En la pantalla que se visualiza después de grabar los datos, introduzcaZDNW7AW_BADI_## como nombre de la implementación del BAdIy seleccione Intro.

b) Vaya a Crear implementación (pulsador ).

c) En el árbol de implementación de ampliación, haga dobleclic en Clase de implementación. A continuación introduzcaZCL_DNW7AW_BADI_IMPLEM_## como clase de implementación

y seleccione Modificar (pulsador ). Confirme que desea crear laclase. La forma más sencilla es optar por copiar la clase de ejemploen la pantalla siguiente. Grabe la nueva clase.

d) Si ha creado la clase partiendo de cero, aún tendrá que hacer dobleclic para crear el método IF_DNW7AW_BADI~WRITE_ADDI-TIONAL_COLS. Para el código fuente defina lo siguiente, porejemplo:WRITE: is_spfli-distance UNIT is_spfli-distid, is_spfli-distid.

e) Active su clase y su implementación de ampliación.

f) Para crear un valor de filtro para una implementación, haga doble clicen Valores de filtro en el árbol de implementación de ampliación. Hagaclic en el pulsador Combinación ( ) y defina los valores de filtronecesarios.

g) Ejecute el programa SAPDNW7AW_BADI_## (no modificado). Encaso necesario, introduzca diversos países en la pantalla de selecciónpara probar si las implementaciones dependientes de filtro funcionancorrectamente.

226 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 241: TAW12_02

TAW12_2 Lección: El nuevo concepto de ampliación

Resumen de la lección

Ahora podrá:� Explicar las nuevas opciones de ampliación y su gestión.� Enumerar las opciones de ampliación implícitas y usar estos puntos de

ampliación para ampliar el software de SAP.� Buscar puntos y secciones de ampliación explícitos, y usarlos para ampliar o

sustituir el software de SAP.� Explicar por qué SAP ha introducido la nueva tecnología BAdI.� Explicar el concepto de la nueva tecnología BAdI y su arquitectura en

tiempo de ejecución.� Buscar BAdI nuevos y usarlos para ampliar el software de SAP.� Explicar cómo se integra la implementación existente de ampliación de

soluciones sectoriales en el Switch Framework y cómo se puede activar.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 227

Page 242: TAW12_02

Resumen del capítulo TAW12_2

Resumen del capítuloAhora podrá:� Explicar las nuevas opciones de ampliación y su gestión.� Enumerar las opciones de ampliación implícitas y usar estos puntos de

ampliación para ampliar el software de SAP.� Buscar puntos y secciones de ampliación explícitos, y usarlos para ampliar o

sustituir el software de SAP.� Explicar por qué SAP ha introducido la nueva tecnología BAdI.� Explicar el concepto de la nueva tecnología BAdI y su arquitectura en

tiempo de ejecución.� Buscar BAdI nuevos y usarlos para ampliar el software de SAP.� Explicar cómo se integra la implementación existente de ampliación de

soluciones sectoriales en el Switch Framework y cómo se puede activar.

228 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 243: TAW12_02

Capítulo 7207 Web Dynpro: Introducción

The first task is to explain why SAP is rolling out another UI technology. In thischapter you could compare this technology with the classical Dynpro screens SAPITS and BSP. This should result in the following evaluation:

Web Dynpro is the follow up of the classical Dynpro technology. It is not a directcompetitor of BSP or SAP ITS.

SAP ITS is a mapping tool that allows you to translate existing Dynpro-basedapplications to a standard that a browser can interpret. SAP ITS is therefore theonly technology that allows you to map existing programs based on Dynpros toHTML and therefore to a browser-based UI.

Web Dynpro is a programming model, which allows you to quickly designstandard UIs. Anything that can be designed without source codeis designedwithout source code. However, the freedom in designing the UI is restricted. Forexample, it is not possible to include client-side JavaScript in the generated pages.The generated code is not restricted to HTML.

Finally, the BSP programming model allows all browser-based techniques to beinserted in the generated HTML pages. However, constructing a BSP UI takesa lot more time than developing a Web Dynpro UI, as there is no declarativeapproach. BSP can therefore be used for �free-style� programming.

Resumen del capítuloWeb Dynpro es un modelo de programación que proporciona SAP. Estáimplementado en Java y ABAP. Es apropiado para generar interfases de usuarioestandarizadas (UI) mediante un enfoque declarativo, minimizando el tiempo quese necesita para implementar aplicaciones Web.

En esta unidad se explican las ventajas del uso del modelo de programaciónde Web Dynpro en comparación con otros modelos de programación Webestablecidos. En este contexto se resumen la arquitectura básica y las funcionesclave de Web Dynpro.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 229

Page 244: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

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

� Describir el enfoque de programación declarativo utilizado para crearaplicaciones Web Dynpro.

� Explicar las ventajas de este enfoque de los metadatos.� Enumerar los elementos más importantes que forman parte de una aplicación

Web Dynpro y que se pueden definir de forma declarativa.

Contenido del capítuloLección: Web Dynpro: Introducción .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .231

Ejercicio 13: Web Dynpro: Introducción.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .251

230 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 245: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Lección:208

Web Dynpro: IntroducciónDuración de la lección: 120 Minutos

Resumen de la lecciónEn esta lección se ofrece un breve resumen de las funciones de Web Dynpro. Setratarán las principales ventajas de la utilización de Web Dynpro para diseñaraplicaciones Web.

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

� Describir el enfoque de programación declarativo utilizado para crearaplicaciones Web Dynpro.

� Explicar las ventajas de este enfoque de los metadatos.� Enumerar los elementos más importantes que forman parte de una aplicación

Web Dynpro y que se pueden definir de forma declarativa.

It is beneficial if the trainer knows other UI programming models, to be able to listthe benefits (and the restrictions) of ABAP Web Dynpro. In the ABAP area, thereare two other programming models, SAP ITS and BSPs, which are still supported.The trainer should be prepared for questions related to the pros and cons of thesethree technologies. Here are some tips:

SAP ITS will be used in to future to map existing Dynpro-based transactionsto HTML pages. This will be necessary, since it is impossible to convert allDynpro-based transactions to Web Dynpro in an acceptable time frame.SAP ITS is the only Web-enabling technology. For all other technologies,the application has to be completely rewritten. The disadvantages are: Longresponse times, since an additional timeframe is necessary for mappingbetween HTML pages and Dynpros - in both directions.Web Dynpro is the technology SAP uses for developing all futureapplications. Existing Dynpro-based transactions will be converted.Web Dynpro will replace the old Dynpro technology step by step. Thedisadvantages are: Although Web Dynpro does allow standardized interfacesto be developed quickly, it is not the right choice for the development ofornate Internet-like UIs. This is because the UI is rendered from metadata,and developers cannot place their own JavaScript code in the renderedHTML page. Web Dynpro has to be embedded in the portal environment, tobe able to change the application design.Finally BSP is the ABAP technology for �free-style� programming.Everything is possible. BSP can be compared to JSP on the Java side.The disadvantages are: Standardized UIs are not supported and everythinghas to be coded (for example, navigation, and UI). It therefore takes a lot

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 231

Page 246: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

longer to develop BSP-based UIs than Web Dynpros. As SAP developsstandard applications that require a standardized and consistent UI, BSPis not used by SAP. However, BSP is the only of these three technologiesthat allows sophisticate Internet applications to be developed using ABAP.This technology will therefore also be very interesting for the customerin the future.

Setting Up the System

It is easy to prepare the system for this course: For each user group, you haveto define an SU01 user. For the sake of simplicity, assign this user SAP_ALLauthorization (copy of your user). For all users, create a change request andassign each user a task. Check if the transaction ZUSR is available in the system,to perform these steps.

Ejemplo empresarialDesea encontrar la tecnología más adecuada para desarrollar aplicaciones Webbasadas en ABAP. Las condiciones de sus proyectos son: alta velocidad, bajocoste e interfases de usuario estandarizadas. Ha decidido que el Web Dynprode ABAP encaja bien con sus necesidades. Por ello, desea obtener un resumeninicial de las funciones de Web Dynpro.

¿Qué es Web Dynpro?Desde un punto de vista técnico, Web Dynpro de SAP para Java y ABAP es unpaso revolucionario en el desarrollo de interfases de usuario basadas en Web.Difiere completamente de cualquier paradigma de diseño utilizado anteriormentepor SAP y representa un gran avance en el desarrollo de aplicaciones deplanificación de recursos para la empresa (ERP) basadas en Web.

Las aplicaciones Web Dynpro están creadas mediante técnicas de programacióndeclarativas basadas en el paradigma Model View Controller (MVC). Es decir,puede especificar qué elementos de la interfase de usuario desea tener en elmandante y de dónde obtendrán sus datos dichos elementos. También puededefinir las posibles rutas de navegación de forma declarativa en su aplicación. Acontinuación, se genera automáticamente todo el código fuente necesario paracrear la interfase de usuario dentro de un framework de tiempo de ejecuciónestándar. Esto le libera de las repetitivas tareas de codificación que conlleva laescritura en HTML y de hacerla interactiva con JavaScript.

Web Dynpro de ABAP está disponible desde SAP NetWeaver 2004s (SAPNetWeaver Application Server 7.0). El Object Navigator (código de transacciónSE80) se ha mejorado para desarrollar las entidades de una aplicación WebDynpro.

232 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 247: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Web Dynpro está diseñado para soportar el desarrollo estructurado. Las unidadesde modularización de software son componentes Web Dynpro, que puedencombinarse para crear aplicaciones complejas.

Declaraciones metamodelo frente a codificaciónpersonalizadaUna aplicación Web Dynpro está desarrollada mediante un enfoque deprogramación declarativo. Dentro de Workbench ABAP existen herramientasespeciales que permiten crear una representación abstracta de su aplicación enforma de metamodelo Web Dynpro. A continuación, se genera automáticamenteel código fuente necesario y se ajusta a una arquitectura estándar conocida comoframework de Web Dynpro.

El framework de Web Dynpro le permite colocar el código fuente personalizadoen posiciones predefinidas dentro del código generado.

Todas las aplicaciones Web Dynpro están construidas a partir de las mismasunidades básicas. No obstante, mediante el uso de la codificación personalizada,el framework estándar puede ampliarse para ofrecer todas las funcionesempresariales requeridas.

No todas las decisiones de implementación se han de tomar en la fase de diseño.Es posible implementar una aplicación Web Dynpro, en la que la apariencia de lainterfase de usuario se decide en tiempo de ejecución. Esto permite la escrituraen una aplicación altamente flexible sin la necesidad de escribir directamenteen HTML o JavaScript.

Gráfico 134: Declaraciones metamodelo frente a codificación personalizada

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 233

Page 248: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Escenarios de aplicación con Web Dynpro

Gráfico 135: Escenarios de aplicación con Web Dynpro

Las aplicaciones Web Dynpro pueden acceder a diferentes tipos de fuentes dedatos:

� Desde una aplicación Web Dynpro ABAP, se puede tener acceso directoa todos los tipos de componentes reutilizables (por ejemplo, métodos omódulos de funciones). Incluso es posible acceder a la base de datosmediante un SELECT ABAP. No obstante, esto conduce a una mezcla de lalógica de proceso y la lógica empresarial, y por lo tanto deberá evitarse.

� Los servicios Web se pueden utilizar tan pronto como se haya generado unobjeto de mandante de servicio Web.

� El SAP Java Connector (JCo) se puede utilizar para llamar a métodos deEnterprise JavaBeans ubicados en un motor de J2EE.

La modelación de objetos todavía no es posible en Web Dynpro ABAP. La mejorforma de disponer de entidades reutilizables que encapsulen lógica empresarial escrear clases ABAP que contengan el código fuente. También es posible desarrollarcomponentes Web Dynpro sin UI (anónimos), que sólo ofrecen funcionesreutilizables. Puede accederse a estos componentes desde otros componentes WebDynpro mediante la reutilización de componentes.

234 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 249: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Ventajas de Web DynproEl principal objetivo de Web Dynpro es permitir a los desarrolladores deaplicaciones crear aplicaciones Web potentes con el mínimo esfuerzo medianteherramientas descriptivas en un proceso de desarrollo estructurado.

Un principio fundamental en la filosofía de Web Dynpro es: Cuanto menos líneasde código escrito a mano, mejor. Web Dynpro persigue este objetivo de dosmaneras.

� Web Dynpro utiliza un metamodelo declarativo en lenguaje neutro paradefinir una interfase de usuario. Partiendo de esta definición abstracta, elentorno de desarrollo genera el código fuente requerido. El código escrito amano todavía se utiliza, pero está limitado a los casos en los que se requieremanipular datos empresariales, no la interfase de usuario.

� Web Dynpro ofrece características técnicas como, por ejemplo, soporte parala internacionalización, interacción sin intermitencias y una separacióndepurada de la lógica empresarial y la interfase de usuario. Esta separaciónse consigue mediante una implementación modificada del paradigma dediseño del Model View Controller (MVC).

Dado que las tareas repetitivas de codificación de UI se han eliminado, eldesarrollador puede centrar su atención en el flujo de datos empresariales mediantela aplicación.

Las aplicaciones Web Dynpro se pueden ejecutar en una amplia gama dedispositivos y en varios tipos de redes: una función importante para los escenariosde colaboración.

Gráfico 136: Ventajas de Web Dynpro

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 235

Page 250: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Arquitectura de Web Dynpro: entidades y conceptos

Gráfico 137: Componente Web Dynpro

Los componentes Web Dynpro le permiten estructurar aplicaciones Webcomplejas y desarrollar entidades de interacción reutilizables. Esto permite laanidación de secciones de aplicación grandes.

Los componentes Web Dynpro son contenedores para otras entidades relacionadascon la UI y el programa Web Dynpro.

Las entidades relacionadas con la UI son ventanas y vistas. El layout de una vistarepresenta una parte rectangular de una página visualizada por el mandante (porejemplo, un browser). La vista contiene elementos de UI como, por ejemplo,campos de entrada y botones. La página completa enviada al mandante puedeestar parametrizada en una sola vista, pero también puede ser una combinación devarias vistas. Las posibles combinaciones de vistas y el flujo entre las vistas sedefinen en una ventana. Una ventana puede contener un número indeterminado devistas. Una vista puede estar incrustada en un número indeterminado de ventanas.

El código fuente de Web Dynpro está ubicado en los controladores Web Dynpro.Al almacenamiento jerárquico de las variables globales de los controladores sele denomina contexto.

Here, you can log on to the system, start transaction SE80 and display packageNET310. Open any Web Dynpro component (for example, NET310_UI_S2) anddisplay the entities in the object tree. Do not go further into detail here.

236 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 251: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Se puede acceder a los componentes Web Dynpro de tres maneras diferentes:

� Mediante una aplicación Web Dynpro, se puede enlazar un componente WebDynpro a un URL, al que se puede llamar desde un browser de navegaciónen Web o desde otro mandante Web Dynpro.

� Cuando se reutiliza un componente Web Dynpro como subcomponente, lainterfase visual de un componente Web Dynpro se puede combinar con lasentidades visuales del componente principal para formar la UI.

� Cuando se reutiliza un componente Web Dynpro como subcomponente, elcomponente principal puede acceder a todos los métodos y datos definidosen la interfase de programación.

Asignación de contextos y vinculación de datos

Gráfico 138: Transporte de datos y contextos

Se puede hacer referencia a las variables definidas en un contexto de controladorWeb Dynpro desde otros controladores Web Dynpro. Esto se denominaasignación de contextos. Esto le permite compartir atributos comunes entrevarios controladores, por lo que no es necesario copiar dichos atributos entrelos contextos de controlador.

El valor de los elementos de UI que permiten la entrada de usuario debe estarconectado a los atributos de contexto del controlador correspondiente. Esto sedenomina vinculación de datos. Mediante la vinculación de datos, se estableceun transporte de datos automático entre los elementos de UI y los atributos decontexto.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 237

Page 252: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Al combinar estos dos conceptos, el transporte de datos entre los elementosde UI ubicados en diferentes vistas se puede definir de una manera puramentedeclarativa.

In the Web Dynpro component you have displayed before (for example,NET310_UI_S2), show the context of views and component controller. Showcontext mapping. Open views. Show UI elements that are bound to contextattributes.

Gráfico 139: Asignación de contextos

Now you can go to the property tab of a view and show the entry for controllerusage. The component controller usage is generated automatically when creatinga new view.

La asignación de contextos permite que a un nodo de contexto de un controladorse le suministren automáticamente datos de un nodo de contexto correspondientede otro controlador. Éste es el mecanismo básico del uso compartido de datosentre controladores.

Cuando dos controladores dentro del mismo componente comparten datosmediante una relación de asignación, se dice que se produce una asignacióninterna.

238 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 253: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Al nodo de contexto que actúa como fuente de datos se le conoce como el nodode origen de asignación, y al nodo de contexto que se asigna se le denominanodo asignado.

La asignación entre contextos de controlador ubicados en distintos componentesde Web Dynpro se conoce como asignación externa.

Nota: La asignación externa no se tratará en esta lección.

Para que se establezca una relación de asignación, deben realizarse en primerlugar los siguientes pasos:

� Debe existir un nodo en el contexto del controlador que actúa como origende asignación. Este nodo no debe tener ningún atributo o nodo subordinadodeclarado.

� El controlador de origen de asignación no debe ser un controlador de vistas.� El controlador que contenga el nodo asignado debe declarar la utilización del

controlador de origen de asignación como controlador utilizado.

Gráfico 140: Colocación de datos en la pantalla: Vinculación de datos

La vinculación de datos es el medio por el que los datos se transportanautomáticamente de un contexto del controlador de vistas a un elemento de UI consu layout y viceversa.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 239

Page 254: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

No se puede vincular elementos de UI a nodos de contexto o atributos definidosen otro controlador. Los elementos de UI son privados para el controlador devistas en el que se han declarado.

El proceso de vinculación de datos separa el objeto del elemento de UI del códigode aplicación dentro del controlador de vistas. Por consiguiente, para manipularpropiedades de elementos de UI, el código de aplicación del controlador de vistassólo tiene que manipular los valores de los nodos de contexto y atributos a los queestán vinculados los elementos de UI. A continuación, el framework de WebDynpro gestiona las dos tareas siguientes:

Open component NET310_UI_S2, to show the data binding of a TABLE UIelement to a context node. Or open a view of component NET310_COND_S, toshow the data binding between an input field and a context attribute.

� El transporte de los datos desde el atributo de contexto hasta el elemento deUI durante el proceso de renderizado de la pantalla.

� Rellenar el atributo de contexto a partir del elemento de UI una vez que elusuario ha introducido los datos y se ha iniciado la siguiente petición alservidor. Los valores introducidos por el usuario para ello se conviertenautomáticamente y se verifica la conformidad del tipo. Si se produce unerror, se visualizará un mensaje.

La vinculación de datos es un potente instrumento ya que no sólo se puedevincular el valor de un elemento de UI a un atributo de contexto, sino tambiénotras propiedades como la visibilidad. Esto significa que las propiedades de loselementos de UI se pueden manipular desde el controlador de vistas actuandosobre los atributos de contexto.

240 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 255: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Navegación entre vistas

Gráfico 141: Navegación entre vistas

La navegación entre vistas se desencadena activando puntos de navegación desalida. Al activar un punto de navegación de salida se produce un evento denavegación. Los eventos de navegación son eventos asincrónicos especialesque se colocan en una cola de navegación. Se pueden disparar varios puntos denavegación de salida desde una vista. Puede utilizarse para definir la siguienteUI, que consta de varias vistas. La cola de navegación se procesa en un momentoconcreto de la fase de procesamiento de Web Dynpro. A partir de este momento,la pila de navegación se puede ampliar activando puntos de navegación de salidaadicionales, o bien se puede eliminar toda la pila de navegación. Los puntos denavegación de salida deberán denominarse en función de la acción que hizodesaparecer la navegación de la vista actual.

Los puntos de navegación de entrada son métodos de programa de control deeventos especiales que se suscriben a los eventos de navegación que se producen alactivarse puntos de navegación de salida. Los métodos de punto de navegación deentrada se llaman únicamente cuando se procesa la cola de navegación. Esto sólotiene lugar una vez que las vistas del conjunto de vistas actual han activado suspuntos de navegación de salida y no se ha producido ningún error de validaciónque pueda cancelar la navegación. Los puntos de navegación de entrada deberándenominarse en función de la razón por la que se está visualizando la vista.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 241

Page 256: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Open any view of component NET310_UI_S2 and show plugs.

Los puntos de navegación de entrada y salida se unen mediante enlaces denavegación. Técnicamente, enlazar un punto de navegación de entrada a un puntode navegación de salida significa registrar el método de programa de control deeventos de punto de navegación de entrada en el evento de navegación que se hallamado activando un punto de navegación de salida.

Los puntos de navegación de salida y los métodos de programa de controlde eventos relacionados con el punto de navegación de entrada pueden tenerparámetros, lo que le permite transferir datos entre las vistas.

Ventanas y vistas anidadas

Gráfico 142: Ventanas y vistas anidadas

Una ventana define qué vistas se visualizan en qué combinación y cómo se puedemodificar la combinación de vistas mediante la activación de puntos de navegaciónde salida. Por lo tanto, cuando se crea una ventana, se definen tres cosas:

242 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 257: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Open window D1_WIND of component NET310_NAVI_D1 and show howplugs are linked via navigation links. Open window D2_WIND of componentNET310_NAVI_D1 and show how a view can be embedded in a view container.Explain view assembly.

� Todas las vistas posibles que podrían existir en la interfase visual delcomponente deben incrustarse en la ventana.

� Si se requiere la visualización de varias vistas en paralelo, el layouty la posición de dichas vistas se definirá mediante una vista especialque contiene ViewContainerUIelements en su layout. Esta vista decontenedor se incrusta en la ventana y, dentro de cada área definida porun ViewContainerUIelement, se incrustan (incrustación anidada) todas lasvistas posibles para esta área de visualización. Existe una vista por defectoen el inicio para cada ViewContainerUIelement.

� Se deben definir los enlaces de navegación entre las diferentes vistas.

Sólo se puede visualizar una vista a la vez en el área de visualización. Los enlacesde navegación se deben definir entre vistas para que se sustituya el contenido deun área de visualización.

Las áreas de visualización se pueden dejar vacías mediante la creación de una vistavacía cuyo punto de navegación de entrada responda a un evento de navegaciónadecuado.

Gráfico 143: Conjunto de vistas

Los puntos de navegación de salida son los que hacen que un área de visualizacióncontenga una vista en particular.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 243

Page 258: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

En una definición de ventana dada, en la que se incrustan varias vistas en áreas devisualización, podrían verse muchas permutaciones de vistas. La permutación quees visible depende de qué enlaces de navegación sigue el usuario.

El subconjunto de vistas continuamente visibles se conoce como conjunto devistas.

At the end of this section, create your first WD component. Start by creating apackage. Save this package in the transport request created prior to the course.Create a WD component with a window in your package. Create a view andembed it into the window. Create an application to access the component. Finally,add a TextView UI element to your view and enter text. Activate the componentwith all entities and start the application.

Exercise �Web Dynpro: Introduction�

Arquitectura de Web Dynpro: Relación entre entidadesWeb Dynpro

Gráfico 144: Model View Controller (MVC)

244 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 259: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Web Dynpro de SAP está construido sobre las bases del paradigma de diseño deModel View Controller (MVC). MVC fue inventado originariamente por eldiseñador de software noruego Trygve Reenskaug cuando trabajaba en XeroxPARC a finales de los años 70. La primera implementación de este paradigma dediseño se produjo con el lanzamiento del lenguaje de programación Smalltalk-80.

MVC fue un paradigma de diseño revolucionario porque supuso el primero quedescribió componentes de software en términos de:

� Las responsabilidades funcionales que cada uno debe cumplir� Los protocolos de mensaje a los que cada componente debe responder

SAP ha modificado y ampliado la especificación MVC original para crear el grupode herramientas Web Dynpro.

Arquitectura del componente Web Dynpro

Gráfico 145: Entidades Web Dynpro visibles internamente (1)

One view can be embedded into different windows. The first view that isembedded into a window will be the default view.

In your WD component: Create a second view and embed it into the window.

La arquitectura de un componente Web Dynpro se puede dividir en dos partes:visibilidad interna y externa. La línea discontinua horizontal de la figura anteriorsepara las entidades que son visibles desde fuera del componente de las que sonsólo visibles dentro del componente.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 245

Page 260: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Las partes visibles internamente se pueden dividir en entidades visuales yentidades de programación. Las entidades visuales son aquellas relativas a la UI,generadas por el framework de Web Dynpro y transferidas al mandante. Lasentidades visibles internamente constan de ventanas y vistas.

Un vista consta de un layout de visualización y del controlador de vistascorrespondiente. El controlador de vistas puede contener puntos de navegación,métodos y un contexto.

Una ventana incluye una o más vistas y tiene un controlador de ventanascorrespondiente. Un controlador de ventanas puede contener puntos denavegación, métodos y un contexto. Cada vista puede estar incrustada en variasventanas.

El punto de navegación de salida de una ventana se puede conectar a cualquierpunto de navegación de entrada de las vistas incrustadas y el punto de navegaciónde salida de una vista puede conectarse a cualquier punto de navegación de entradade la ventana incrustada. No obstante, no es posible navegar entre ventanas delmismo componente.

Gráfico 146: Entidades Web Dynpro visibles internamente (2)

Multiple windows may exist (for example, NET310_NAVI_D1). Sometimes itis useful to access business logic from a view (input check: does a data recordexist that fits the user�s input?).

In your component: Create a second window. Embed both views that have beenembedded before into the first window.

246 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 261: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

El controlador de componentes actúa como controlador global del componente.La lógica de programa relacionada únicamente con una vista determinada (porejemplo, verificar la entrada del usuario) debería estar codificada en el controladorde vista relevante. Las declaraciones de utilización entre los controladores lepermiten acceder a los métodos y datos de contexto del controlador declarado(controlador utilizado). Un controlador de vistas no se puede declarar comocontrolador utilizado para otros controladores ya que violaría el código de buenasprácticas de programación (paradigma de programación MVC).

La lógica empresarial no debe formar parte del componente Web Dynpro, sino quedebe definirse fuera del componente para tener una reutilización alta. Es preferibleque las clases ABAP se utilicen para encapsular el código fuente relacionado.

Gráfico 147: Entidades Web Dynpro visibles internamente (3)

In your component: Create a custom controller. In the custom controller, create ausage declaration for the component controller and vice versa.

Los controladores personalizados son controladores opcionales que debe definirel desarrollador. Estos controladores se pueden utilizar para modularizar elcontenido del componente. Por ejemplo, los controladores personalizados puedenactuar como controladores locales para algunas vistas, o bien se pueden utilizarpara encapsular la lógica relativa a cierta clase de modelo (lógica empresarial).Esto le permite reducir el contenido del controlador de componentes completandosubfunciones con datos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 247

Page 262: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

Gráfico 148: Entidades Web Dynpro visibles externamente

Si un componente Web Dynpro (componente superior) necesita acceder a otrocomponente Web Dynpro (componente subordinado), el componente superiorpuede declarar la utilización de un componente subordinado. Entonces se crea unainstancia de utilización de un componente específico y el componente superioraccede a las funciones del componente subordinado mediante su controlador deinterfase de componente.

Las únicas partes de un componente Web Dynpro que son visibles para el usuarioson el controlador de interfase y las vistas de interfase.

248 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 263: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

In your component: Display the component interface. An interface view hasbeen created for each window. An interface controller has also been createdautomatically.

� Todos los componentes Web Dynpro tienen un único controlador deinterfase. Mediante el controlador de interfase, se puede acceder a los datos,métodos y programas de control de eventos desde otros componentes.

� Las interfases de vistas representan la interfase visual de un componenteWeb Dynpro. Existe una relación directa entre una ventana y una vista deinterfase. Cada vez que se define una ventana, se genera automáticamenteuna vista de interfase relacionada que permite acceder a la ventana desdefuera del componente. La vista de interfase sólo muestra al usuario delcomponente los puntos de navegación de entrada y salida que tienen lapropiedad interfase activada. No se puede acceder a los métodos y datos decontexto de la ventana mediante la vista de interfase relacionada.

� Si el componente no tiene vistas, no es necesario que tenga ventanas.En este caso, el componente no implementa una vista de interfase. Alos componentes que no tienen ninguna interfase visual se les llamacomponentes anónimos.

Gráfico 149: Aplicación Web Dynpro

Una aplicación Web Dynpro es un punto de entrada en un componente WebDynpro y es la única entidad Web Dynpro que se puede direccionar por URL.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 249

Page 264: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

In your component: Display the application characteristics. An application ispointing to a startup plug of an interface view located in a certain WD component.

Existe frecuentemente (pero no siempre) una relación directa entre una interfasede vista y una aplicación.

Del mismo modo que se puede acceder a la funcionalidad de un modulpool ABAPmediante la definición de varios códigos de transacción, se puede acceder a lafuncionalidad de un componente Web Dynpro individual mediante la definición devarias aplicaciones, cada una de ellas con acceso a una vista de interfase diferentey/o a un punto de navegación de entrada diferente de la vista de interfase.

Para definir una aplicación Web Dynpro, debe especificar:

� Componente que se debe llamar. Este componente se conoce comocomponente raíz

� Vista de interfase del componente raíz que se debe usar. Las vistaspredeterminadas en esta vista de interfase definen el conjunto de la vistapredeterminada.

� El punto de navegación de entrada que actuará como punto de entrada para lavista de interfase designada (este punto de navegación de entrada debe serdel tipo Inicio).

250 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 265: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

227 Ejercicio 13: Web Dynpro: IntroducciónDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear un componente Web Dynpro con una ventana Web Dynpro que

contenga una vista Web Dynpro individual� Colocar un elemento de UI simple en el layout de visualización y tratar

sus propiedades� Crear una aplicación Web Dynpro para hacer que la vista esté disponible

para los usuarios

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro. Empezará creando las entidadesWeb Dynpro que se necesitan para una aplicación que muestra una vista con uncampo de texto simple.

Modelo: Ninguno

Solución: NET310_INTR_S

Tarea 1:Crear un paquete que contenga todos los objetos de repositorio que va a desarrollar.

1. Cree el paquete ZNET310_##. Asigne el componente de aplicación BC-WDy el componente de software HOME.

Tarea 2:Cree un componente Web Dynpro con una ventana Web Dynpro.

1. Cree el componente Web Dynpro ZNET310_INTR_## con una ventanaprincipal MAIN_WINDOW.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 251

Page 266: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

2. ¿Qué otras entidades Web Dynpro se han creado automáticamente en estepaso?

Tarea 3:Cree una vista Web Dynpro con un elemento TEXTVIEW simple y hágala formarparte de la ventana principal.

1. Cree una vista Web Dynpro (nombre propuesto: MAIN_VIEW) en sucomponente.

2. Cree un elemento de UI simple de tipo TEXTVIEW (nombre propuesto:TEXT_VIEW_1) en el layout de visualización y trate sus propiedades.

3. Actualice el texto que deberá visualizar en el elemento TEXTVIEW. Esposible que desee modificar otras propiedades del elemento y ver el resultadoen la presentación preliminar de layout.

4. Haga que la vista Web Dynpro forme parte de la ventana Web Dynpro.

Tarea 4:Cree una aplicación Web Dynpro para acceder a su componente Web Dynproy realice un test.

1. Cree una aplicación Web Dynpro (nombre propuesto: ZNET310_INTR_##)que tenga acceso a la ventana principal de su componente Web Dynpro.

2. Active el componente Web Dynpro y pruebe la aplicación Web Dynpro.

252 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 267: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Solución 13: Web Dynpro: IntroducciónTarea 1:Crear un paquete que contenga todos los objetos de repositorio que va a desarrollar.

1. Cree el paquete ZNET310_##. Asigne el componente de aplicación BC-WDy el componente de software HOME.

a) Realice este paso como esperamos que ya lo haya hecho con frecuenciaanteriormente.

Tarea 2:Cree un componente Web Dynpro con una ventana Web Dynpro.

1. Cree el componente Web Dynpro ZNET310_INTR_## con una ventanaprincipal MAIN_WINDOW.

a) En el área de navegación, abra el menú contextual del paquetey seleccione Crear→ WebDynpro→ Componente WebDynpro(interfase).

b) En el cuadro de diálogo, introduzca el nombre del componente, unadescripción y el nombre de la ventana principal.

2. ¿Qué otras entidades Web Dynpro se han creado automáticamente en estepaso?

Respuesta:Un controlador de componentesUn controlador de interfaseUna vista de interfase para la ventana con su interfase de objetosZIWCI_NET310_INTR_##

Tarea 3:Cree una vista Web Dynpro con un elemento TEXTVIEW simple y hágala formarparte de la ventana principal.

1. Cree una vista Web Dynpro (nombre propuesto: MAIN_VIEW) en sucomponente.

a) En el menú contextual del componente Web Dynpro, seleccione Crear→ Vista.

b) Introduzca el nombre de la vista y una descripción breve.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 253

Page 268: TAW12_02

Capítulo 7: Web Dynpro: Introducción TAW12_2

2. Cree un elemento de UI simple de tipo TEXTVIEW (nombre propuesto:TEXT_VIEW_1) en el layout de visualización y trate sus propiedades.

a) Trate su vista Web Dynpro MAIN_VIEW y abra la ficha Layout.

b) En la pantalla de la jerarquía de elementos de UI(esquina superior derecha), abra el menú contextual deROOTUIELEMENTCONTAINER y seleccione Insertar elemento.

c) Introduzca el nombre del elemento y el tipo de elemento: TEXTVIEW.

3. Actualice el texto que deberá visualizar en el elemento TEXTVIEW. Esposible que desee modificar otras propiedades del elemento y ver el resultadoen la presentación preliminar de layout.

a) Haga doble clic en el elemento TEXTVIEW de la jerarquía deelementos de UI.

b) En la lista Propiedades (debajo de la jerarquía de elementos de UI)actualice el texto del campo texto.

4. Haga que la vista Web Dynpro forme parte de la ventana Web Dynpro.

a) Trate la ventana Web Dynpro y abra la ficha Ventana.

b) En la estructura de la ventana, abra el menú contextual de la ventanaWeb Dynpro y seleccione Integrar vista.

c) En el cuadro de diálogo, introduzca el nombre de la vista.

Tarea 4:Cree una aplicación Web Dynpro para acceder a su componente Web Dynproy realice un test.

1. Cree una aplicación Web Dynpro (nombre propuesto: ZNET310_INTR_##)que tenga acceso a la ventana principal de su componente Web Dynpro.

a) En el área de navegación, abra el menú contextual del componente WebDynpro y seleccione Crear→ Aplicación Web Dynpro.

b) Verifique el nombre de la aplicación (el mismo nombre que elcomponente) e introduzca una descripción en la ventana de diálogo.

2. Active el componente Web Dynpro y pruebe la aplicación Web Dynpro.

a) Abra el ComponenteWeb Dynpro y actívelo.

b) Abra la AplicaciónWeb Dynpro y realice un test.

254 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 269: TAW12_02

TAW12_2 Lección: Web Dynpro: Introducción

Resumen de la lección

Ahora podrá:� Describir el enfoque de programación declarativo utilizado para crear

aplicaciones Web Dynpro.� Explicar las ventajas de este enfoque de los metadatos.� Enumerar los elementos más importantes que forman parte de una aplicación

Web Dynpro y que se pueden definir de forma declarativa.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 255

Page 270: TAW12_02

Resumen del capítulo TAW12_2

Resumen del capítuloAhora podrá:� Describir el enfoque de programación declarativo utilizado para crear

aplicaciones Web Dynpro.� Explicar las ventajas de este enfoque de los metadatos.� Enumerar los elementos más importantes que forman parte de una aplicación

Web Dynpro y que se pueden definir de forma declarativa.

256 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 271: TAW12_02

Capítulo 8233 Controladores Web Dynpro

Not every detail of Web Dynpro controllers is covered in this chapter. Some topicssuch as the special hook methods that only exist for view controllers or componentcontrollers will be discussed in the relevant chapter (for example, Controller andContext Programming, Dynamic Modifications at Runtime). So focus on giving anoverview of the entities of a controller and describe what these entities are used for.

Resumen del capítuloLos controladores contienen el código fuente de una aplicación Web Dynpro;contienen los datos contextuales y se encargan del tratamiento de eventos y dela navegación. Sólo podrá programar lógica de proceso si sabe cómo se definenlos controladores y qué tipo de entidades ofrecen. Este capítulo ofrece unabreve introducción a los controladores de Web Dynpro ABAP, y se centra en lasdiferencias entre los tipos de controlador que puede haber en un componentede Web Dynpro.

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

� Asignar nombre al contenido de un controlador Web Dynpro.� Definir la función de cada entidad de controlador.� Enumerar las diferencias entre el controlador de componentes, los

controladores personalizados, los controladores de vistas y los controladoresde ventanas.

Contenido del capítuloLección: Controladores Web Dynpro.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .258

Ejercicio 14: Controladores Web Dynpro... . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 257

Page 272: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Lección:234

Controladores Web DynproDuración de la lección: 40 Minutos

Resumen de la lecciónLos controladores son el núcleo de los componentes Web Dynpro, ya que los datosy la lógica de programa se definen en estas entidades. En esta lección se ofrece unresumen de las entidades que componen un controlador.

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

� Asignar nombre al contenido de un controlador Web Dynpro.� Definir la función de cada entidad de controlador.� Enumerar las diferencias entre el controlador de componentes, los

controladores personalizados, los controladores de vistas y los controladoresde ventanas.

Do not go into detail about the order of hook methods, special hook methods, andso on, because these details will be explained in the relevant chapters of courseNET310.

For the demos, it is assumed that you have created a WD component before, witha view embedded in one window, a custom controller and a WD application.

Ejemplo empresarialYa conoce las ventanas, las vistas y los controladores que componen un programaWeb Dynpro. No obstante, para implementar la lógica de proceso, que incluyela gestión de eventos, la reacción de implementación del método de puntos denavegación de entrada de los eventos del mandante, etc., es necesario conocer laestructura interna de los controladores.

258 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 273: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

Tipos de controladorExisten cuatro tipos de controladores en un componente Web Dynpro ABAP.Estos tipos de controladores distintos abarcan varias entidades:

� Controlador de componentes

Sólo existe un controlador de componentes para cada componente WebDynpro. Se trata de un controlador global, visible para todos los demáscontroladores. El controlador de componentes dirige las funciones de todo elcomponente. Este controlador no tiene interfase visual.

� Controladores personalizados

Los controladores personalizados son opcionales. Deben definirse en la fasede diseño y se pueden utilizar para encapsular subfunciones del controladorde componentes. Se pueden definir varios controladores personalizadosen un componente. Los controladores personalizados se instancianautomáticamente mediante el framework de Web Dynpro sin la secuenciade instanciación en definición. Por ello, el código fuente en un controladorpersonalizado no debería depender de la existencia de otros controladorespersonalizados.

� Controlador de configuración

Éste es un controlador personalizado especial. Sólo es necesario si elcomponente correspondiente implementa una configuración especial yfunciones de personalización. Sólo puede existir una sola configuración encualquier componente. Cualquier controlador puede acceder al controladorde configuración, pero el controlador de configuración no puede accedera ningún otro controlador.

� Controladores de vistas

Cada vista consta de la parte de layout y de exactamente un controlador devistas. Este controlador gestiona la lógica de proceso específica de la vista,por ejemplo, verifica la entrada de usuario y gestiona las acciones de usuario.

� Controladores de ventanas

Cada ventana tiene exactamente un controlador de ventanas. Este controladorse puede utilizar para gestionar los datos transferidos mediante los puntos denavegación de entrada cuando se reutiliza como controlador subordinado. Sepuede llamar los métodos de este controlador desde los métodos de punto denavegación de entrada de la ventana.

En tiempo de ejecución, todas las instancias del controlador son singleton conrespecto a sus componentes superiores. Esto es verdadero también en el caso delos controladores de vistas. En consecuencia, no es posible incrustar una vista enun conjunto de vistas más de una vez.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 259

Page 274: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Los datos globales de un controlador se almacenan en un almacén de datosjerárquico, el contexto de controlador. Este contexto y los métodos definidosen un controlador son privados a menos que otro controlador declare de maneraexplícita la utilización de dicho controlador. No obstante, un controlador de vistasno se puede declarar como controlador utilizado, por lo que los datos de contextoy los métodos de un controlador de vistas son siempre privados.

Web Dynpro es una tecnología implementada dinámicamente, por lo que laduración de las instancias del controlador no está limitada al tiempo utilizado paraprocesar el código del programa y la UI. En función del tipo de controlador, laduración de la instancia de controlador es la siguiente:

Controlador de componentesLa vida útil del controlador de componentes equivale a la vida útil delcomponente. Al iniciar una aplicación Web Dynpro, el tiempo de ejecuciónde Web Dynpro instancia el controlador de componentes.

Controladores personalizadosLa instanciación de un controlador personalizado se pospone hasta que sellama al primer método del controlador. Las instancias del controladorpersonalizado no se pueden eliminar explícitamente.

Controladores de configuraciónEste controlador se instancia como primer controlador del componente. Suduración equivale a la duración del componente.

Controladores de vistasLa instanciación de un controlador de vistas se pospone hasta que se llama alprimer método del controlador. La vida útil de un controlador de vistas sepuede controlar mediante las propiedades de visualización:

Si se selecciona marco controlado, la instancia de vista se eliminarácon el componente.Si se selecciona cuando esté visible, la instancia de vista se eliminaráen cuanto la vista deje de pertenecer al conjunto de vistas.

Controladores de ventanasLa instanciación de un controlador de ventanas se pospone hasta que se llamaal primer método del controlador. Esto se realiza iniciando una aplicaciónWeb Dynpro o incrustando la vista de interfase relacionada en la ventanadel componente superior. Las instancias del controlador de ventanas nose pueden eliminar explícitamente.

Entidades de controlador comunesCada controlador tiene su propio contexto. El nodo raíz de contexto ya existe.Todos los demás nodos y atributos se deben definir estáticamente o por códigofuente.

260 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 275: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

Gráfico 150: Componentes de todos los controladores

Display the component controller of the component NET310_EVEN_D1. Clickthe single tabs to display the common controller entities. Open a view controllerand the window controller of this component, to demonstrate which entities arecontained in all of these controllers.

Add an attribute and a method to any of the controllers located in your democomponent. Show how to add a controller usage declaration to one of thecontrollers.

En todos los controladores, el framework de Web Dynpro llama los métodos en unorden predefinido. A estos métodos se les denomina métodos de conexión. Enfunción del tipo de controlador, hay disponibles diversos métodos de conexión.Existen al menos dos métodos de conexión incluidos en todos los tipos decontrolador. Estos métodos se procesan sólo una vez durante la duración de unainstancia de controlador: cuando se crea una instancia de controlador (wddoinit( ))y cuando se elimina una instancia de controlador (wddoexit( )).

Los métodos de instancia se pueden definir mediante la fichaMétodos.

Los atributos que no están relacionados con el valor o la propiedad de elementosde UI se pueden declarar mediante la ficha Atributos. Estos atributos se visualizanen todos los métodos de este controlador. Existen dos atributos predefinidos, quese utilizan para acceder a las funciones del controlador (WD_THIS) y del contexto(WD_CONTEXT).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 261

Page 276: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Para compartir información entre varios controladores, un controlador debedeclarar la utilización de otro controlador. Esto se lleva a cabo en la fichaPropiedades del controlador que necesita acceder a otro controlador. Este tipo deuso compartido de datos se utiliza frecuentemente cuando se desea crear un nodode contexto asignado o acceder a los métodos de instancia de otro controlador.

No se debe especificar bajo ningún concepto el nombre de un controlador de vistascomo controlador utilizado, ya que se violarían los principios de diseño MVC. Uncontrolador de vistas se debe escribir de manera que sea únicamente responsablede la visualización de los datos y la interacción del usuario. Un controlador devistas no es responsable de generar los datos que visualiza. Esa tarea es unafunción del controlador personalizado.

Se puede acceder a la lógica empresarial, como los módulos de funciones,los BAPI o los métodos en clases auxiliares, desde los métodos de todos loscontroladores.

Entidades especiales de componente / Controladorespersonalizados

Gráfico 151: Controladores de componentes/personalizados: entidadesespeciales

262 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 277: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

Create an event in the custom controller of your component. Define a controllerusage of the custom controller in the component controller. Define an eventhandler method in the component controller and register this method to the customcontroller event.

Tanto para controladores de componentes como para personalizados, se puedendefinir eventos mediante parámetros arbitrarios. Cualquier método de cualquierotro controlador, incluidos los controladores de vistas y de ventanas, se puederegistrar en estos eventos si dicho método se ha definido como método auxiliarde eventos. Una utilización típica de dichos eventos es la activación delprocesamiento en un controlador de vistas una vez finalizado el procesamientoen el controlador de componentes. Esto se puede realizar cuando un método delcontrolador de vistas se suscribe a un evento provocado por el controlador decomponentes.

Mediante sus declaraciones en la fase de diseño, el framework de Web Dynprolleva a cabo automáticamente la definición, la activación y la gestión de lasuscripción a dichos eventos. También tiene la opción adicional de implementaruna suscripción de evento dinámico en tiempo de ejecución.

Atención: Si dos o más métodos se suscriben al mismo evento, el ordenen el que se ejecutarán será indefinido.

El controlador de componentes, y sólo él, dispone de los siguientes métodosde conexión estándar adicionales. Éstos se llaman directamente antes de quese procesen las solicitudes de navegación (wddobeforenavigation( )) y despuésde que se hayan procesado todas las vistas del conjunto de vistas que se debenenviar (wddopostprocessing( )).

Los atributos, métodos, elementos de contexto y eventos pueden marcarse comoelementos de interfase. Estos elementos se muestran entonces a otros componentesmediante el controlador de interfase.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 263

Page 278: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Entidades especiales de los controladores de vistas

Gráfico 152: Controladores de vistas: entidades especiales

Your application: Create a second view and embed this view in your window. Addan outbound plug and an inbound plug to each of the views (no plug parameters).Go back to the window and add navigation links, so navigation back and forthbetween the views is possible. Add a button to each of the views to trigger thenavigation. For each of the views: Create the action and the fire_plug statementby entering the action�s name to the onAction property of the button. Test theapplication.

Demonstrate that the WDCOMPCONTROLLER attribute is generatedautomatically for each controller if the component controller is added to the usedcontroller list.

Un controlador de vistas es un bloque de construcción visual de un componenteWeb Dynpro y está diseñado para gestionar todos los aspectos de la visualizaciónde datos y la interacción del usuario.

Los eventos especiales de navegación y los programas de control de eventos denavegación se han creado para permitir la navegación entre varios controladoresde vistas Web Dynpro. A éstos se les denomina puntos de navegación.

Se emite un evento de navegación cuando se activa un punto de navegaciónde salida.

264 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 279: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

La declaración de un punto de navegación de salida activa la generación de unmétodo en un controlador de componentes de vista. Si el nombre genérico <puntode navegación de salida> se usa para un punto de navegación de salida, estemétodo se llamará FIRE_<punto de navegación de salida>_PLG. Este métodosólo está visible para el framework de Web Dynpro. El desarrollador no puedeverlo.

Un punto de navegación de entrada es un programa de control de eventosde navegación que puede estar registrado en una solicitud de navegación. Ladeclaración de un punto de navegación de entrada activa la generación de unmétodo en un controlador de componentes de vista. Si el nombre genérico <puntode navegación de entrada> se usa para un punto de navegación de entrada, estemétodo se llamará HANDLE_<punto de navegación de entrada>.

A un registro estático de un punto de navegación de entrada (métodoHANDLE<punto de navegación de entrada>) al evento de navegación producidopor un punto de navegación de salida (método FIRE_<punto de navegación desalida>_PLG) se le denomina enlace de navegación. Los enlaces de navegaciónno forman parte de una vista pero se definen en una ventana incrustada en lavista. Por consiguiente, el registro de eventos se puede definir de manera diferenteen varias ventanas.

Una acción enlaza un evento del mandante (por ejemplo, seleccionar un pulsadoren un browser) a un método de programa de control de eventos definido en elcontrolador de vistas correspondiente. Cuando se define una acción con el nombre<Acción>, se genera automáticamente un método de programa de control deeventos (ONACTION<Acción>). Si se sustituye una vista como resultado de unevento de mandante, el punto de navegación de salida relacionado se puede activaren este método de programa de control de eventos de la acción.

Se pueden encontrar dos métodos de conexión especiales en los controladoresde vistas:

� wddobeforeaction( ) se procesa si se activa un evento de mandante encualquier vista.

Antes de que se procesen los métodos de programa de control de eventos dela acción, los métodos wddobeforeaction( ) se ejecutan para todas las vistasque forman parte del último conjunto de vistas.

� wddomodifyview( ) es un método que le permite manipular el layout de lavista desde la perspectiva de la programación. Este evento se puede utilizarpara definir la UI dinámicamente.

Además de los atributos estándar de todos los controladores, un controlador devistas tiene una referencia al controlador de componentes de su componente:WD_COMP_CONTROLLER . Esta referencia se puede utilizar para acceder a lasfunciones relacionadas con el controlador de componentes. Se utiliza cuando seaccede a los mensajes o cuando se llama a un método declarado en el controladorde componentes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 265

Page 280: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Start demo NET310_EVEN_D1. Discuss the order in which the events areprocessed. Repeat the discussion with demo NET310_EVEN_D2

Here, you could also demonstrate the influence of the view�s lifetime propertyon the lifetime of the view. Start the WD applications NET310_NAVI_D2 andNET310_NAVI_D2A. The related components are identical, only the lifetimeof the views is different. The layout displays how often the WDDOINIT hookmethod is processed. If the view survives a navigation request, this method willnot be processed again. WDDOEXIT is only processed if the view is deleted.

Entidades especiales de los controladores deventanasLos controladores de ventanas son muy similares a los controladores devistas. Técnicamente, es como un controlador de vistas sin una UI (layout devisualización). Todas las vistas que se visualizarán cuando se utilice una aplicaciónWeb deben incrustarse en la ventana a la que la aplicación o el componente quellama hacen referencia.

Gráfico 153: Arquitectura del controlador de ventanas

266 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 281: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

Your component: Create a new view consisting of two view containers, VC1and VC2. Embed this view in the window and make it the default view. Embedthe existing start view in VC1 and embed the existing result view in VC2. Alsoinclude an empty view in VC2 and make it the default view in this view container.Define the navigation so that clicking on the button of the start view in VC1 willreplace the empty view in VC2 with the result view. When you select the Backbutton in the result view in VC2, the empty view will be displayed again in VC2.

Having demonstrated this, you should discuss the applications NET310_NAVI_D1and NET310_NAVI_D1_, followed by NET310_NAVI_D1A (using windowplugs for navigation) and NET310_NAVI_D1B (using main view plugs fornavigation, pass state information using plugs).

La ventana Web Dynpro contiene la estructura de todas las vistas que se debenvisualizar y, si están definidos estáticamente, los enlaces de navegación quedefinen los conjuntos de vistas posibles.

Cada ventana Web Dynpro contiene puntos de navegación de salida y de entrada,y vistas. Puede utilizar los puntos de navegación para establecer la navegaciónentre componentes. Para mostrar los puntos de navegación a la interfase delcomponente, active la propiedad Interfase de cada punto de navegación. Acontinuación, estos puntos de navegación formarán parte de la vista de interfaserelacionada.

El controlador de ventanas también dispone del atributo especialWD_COMP_CONTROLLER, que contiene la referencia al controlador decomponentes.

Exercise �Web Dynpro Controllers�

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 267

Page 282: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

268 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 283: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

243 Ejercicio 14: Controladores Web DynproDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear pulsadores en vistas Web Dynpro.� Conseguir que el usuario active acciones mediante la selección de pulsadores.� Implementar la navegación entre vistas Web Dynpro.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro con más de una vista. Deseaproporcionar pulsadores en sus vistas para permitir al usuario iniciar la navegacióna la siguiente vista.

Modelo: Ninguno

Solución: NET310_CTRL_S

Tarea 1:Crear un componente Web Dynpro con una ventana Web Dynpro que contengados vistas Web Dynpro.

1. Cree el componente Web Dynpro ZNET310_CTRL_## con una ventanaprincipal MAIN_WINDOW.

2. Cree dos vistas Web Dynpro (nombres propuestos: INPUT_VIEW yOUTPUT_VIEW) dentro de su componente e incrústelos en su ventana.

Tarea 2:Cree un punto de navegación de salida y otro de entrada para cada vista. Definados enlaces de navegación entre las dos vistas, que vayan del punto de navegaciónde salida de una vista al punto de navegación de entrada de la otra vista.

1. Para su primera vista (INPUT_VIEW), cree un punto de navegación desalida (nombre propuesto: TO_OUTPUT_VIEW) y un punto de navegaciónde entrada (nombre propuesto: FROM_OUTPUT_VIEW).

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 269

Page 284: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

2. ¿Qué nuevas partes se han creado en el controlador de vistas al finalizar elpaso anterior (consulte las diferentes fichas del editor de vistas)?

3. Haga lo mismo para su otra vista (nombres propuestos para los puntos denavegación: TO_INPUT_VIEW y FROM_INPUT_VIEW).

4. Defina un enlace de navegación desde el punto de navegación de la primeravista (TO_OUTPUT_VIEW) al punto de navegación de entrada de lasegunda vista (FROM_INPUT_VIEW).

5. Defina un enlace de navegación desde el punto de navegación de salida de lasegunda vista (TO_INPUT_VIEW) al punto de navegación de entrada de laprimera vista (FROM_OUTPUT_VIEW).

Tarea 3:Cree un pulsador en cada una de las dos vistas y asegúrese de que el punto denavegación de salida de la vista respectiva se active cuando el usuario seleccioneel pulsador.

1. Cree un elemento de UI simple de tipo BUTTON (nombre propuesto:BUTTON_GO) en la primera vista y actualice el texto que se deberávisualizar sobre el pulsador.

2. Cree una acción para el pulsador (nombre propuesto: GO) y relaciónelo conel punto de navegación de salida de la vista (TO_OUTPUT_VIEW).

3. ¿Qué nuevas partes se han creado en el controlador de vistas al finalizar elpaso anterior (consulte las diferentes fichas del editor de vistas)?

4. Cree un pulsador en la segunda vista (nombre propuesto: BUTTON_BACK)con texto y acción (nombre propuesto: BACK) y enlácelo al punto denavegación de salida de esa vista.

5. Cree una aplicación Web Dynpro para su componente, actívela y realiceun test.

270 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 285: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

Solución 14: Controladores Web DynproTarea 1:Crear un componente Web Dynpro con una ventana Web Dynpro que contengados vistas Web Dynpro.

1. Cree el componente Web Dynpro ZNET310_CTRL_## con una ventanaprincipal MAIN_WINDOW.

a) Realice este paso como en el ejercicio anterior.

2. Cree dos vistas Web Dynpro (nombres propuestos: INPUT_VIEW yOUTPUT_VIEW) dentro de su componente e incrústelos en su ventana.

a) Realice este paso como en el ejercicio anterior.

Tarea 2:Cree un punto de navegación de salida y otro de entrada para cada vista. Definados enlaces de navegación entre las dos vistas, que vayan del punto de navegaciónde salida de una vista al punto de navegación de entrada de la otra vista.

1. Para su primera vista (INPUT_VIEW), cree un punto de navegación desalida (nombre propuesto: TO_OUTPUT_VIEW) y un punto de navegaciónde entrada (nombre propuesto: FROM_OUTPUT_VIEW).

a) Trate la vista Web Dynpro INPUT_VIEW.

b) Seleccione la ficha Puntos de navegación de salida e introduzca elnombre del punto de navegación de salida y una descripción en latabla del extremo superior.

c) Seleccione la ficha Puntos de navegación de entrada e introduzca elnombre del punto de navegación de entrada y una descripción.

2. ¿Qué nuevas partes se han creado en el controlador de vistas al finalizar elpaso anterior (consulte las diferentes fichas del editor de vistas)?

Respuesta:Método de programa de control de eventos �HANDLEFROM_OUT-PUT_VIEW� (vacío).

3. Haga lo mismo para su otra vista (nombres propuestos para los puntos denavegación: TO_INPUT_VIEW y FROM_INPUT_VIEW).

a) Realice este paso como antes.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 271

Page 286: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

4. Defina un enlace de navegación desde el punto de navegación de la primeravista (TO_OUTPUT_VIEW) al punto de navegación de entrada de lasegunda vista (FROM_INPUT_VIEW).

a) Para tratar la ventana Web Dynpro, seleccione la ficha Ventana ydespliegue todos los nodos de la estructura de la ventana.

b) Arrastre el punto de navegación de salida de la primera vista y suéltelosobre el punto de navegación de entrada de la segunda vista. Confirmelos datos del cuadro de diálogo.

5. Defina un enlace de navegación desde el punto de navegación de salida de lasegunda vista (TO_INPUT_VIEW) al punto de navegación de entrada de laprimera vista (FROM_OUTPUT_VIEW).

a) Realice este paso como antes.

Tarea 3:Cree un pulsador en cada una de las dos vistas y asegúrese de que el punto denavegación de salida de la vista respectiva se active cuando el usuario seleccioneel pulsador.

1. Cree un elemento de UI simple de tipo BUTTON (nombre propuesto:BUTTON_GO) en la primera vista y actualice el texto que se deberávisualizar sobre el pulsador.

a) Trate la vista y seleccione la ficha Layout.

b) Abra el menú contextual de ROOTUIELEMENTCONTAINER yseleccione Insertar elemento.

c) Introduzca el nombre del pulsador y seleccione el tipo de elementoBUTTON.

d) Vaya a la propiedad Texto y actualice el texto que se debe visualizar enla columna Valor.

2. Cree una acción para el pulsador (nombre propuesto: GO) y relaciónelo conel punto de navegación de salida de la vista (TO_OUTPUT_VIEW).

a) Vaya a la propiedad OnAction del pulsador. Seleccione Crear enla columna Vinculación.

b) En el cuadro de diálogo, introduzca el nombre de la acción, unadescripción y el nombre del punto de navegación de salida.

Continúa en la página siguiente

272 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 287: TAW12_02

TAW12_2 Lección: Controladores Web Dynpro

3. ¿Qué nuevas partes se han creado en el controlador de vistas al finalizar elpaso anterior (consulte las diferentes fichas del editor de vistas)?

Respuesta:Acción �GO�Método de programa de control de eventos �ONACTIONGO� (concodificación para activar el punto de navegación de salida)

4. Cree un pulsador en la segunda vista (nombre propuesto: BUTTON_BACK)con texto y acción (nombre propuesto: BACK) y enlácelo al punto denavegación de salida de esa vista.

a) Realice este paso como antes.

5. Cree una aplicación Web Dynpro para su componente, actívela y realiceun test.

a) Realice este paso como en el ejercicio anterior.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 273

Page 288: TAW12_02

Capítulo 8: Controladores Web Dynpro TAW12_2

Resumen de la lección

Ahora podrá:� Asignar nombre al contenido de un controlador Web Dynpro.� Definir la función de cada entidad de controlador.� Enumerar las diferencias entre el controlador de componentes, los

controladores personalizados, los controladores de vistas y los controladoresde ventanas.

274 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 289: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Asignar nombre al contenido de un controlador Web Dynpro.� Definir la función de cada entidad de controlador.� Enumerar las diferencias entre el controlador de componentes, los

controladores personalizados, los controladores de vistas y los controladoresde ventanas.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 275

Page 290: TAW12_02

Resumen del capítulo TAW12_2

276 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 291: TAW12_02

Capítulo 9251 El contexto en la fase de diseño

It is a good idea to relate the node properties such as cardinality and singletonto elements with which students are familiar. You could use the followingrelationship, for example:

Node <-> internal tableElement <-> column of internal table

Then the cardinality can be related to the restrictions on the number of linesallowed in the internal table. In this context, the singleton property can bedeclared using the memory type of dependent internal tables in a classic ABAPenvironment. The dependent table could be the content of a cell in each table line(singleton=false <-> nested internal tables) or the dependent table could be anindependent element that contains the dependent data of just one line of the parenttable (singleton=true <-> independent internal tables).

Resumen del capítuloEl contexto es el almacenamiento de datos de un componente Web Dynpro.Los datos se almacenan en él en estructura jerárquica, que se puede definirestáticamente o en tiempo de ejecución. La comprensión de los elementos de laestructura contextual y sus propiedades es una condición previa para trabajar conel contexto. En esta unidad se explicará cómo definir la estructura del componentede forma estática.

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

� Definir nodos y atributos en el contexto de un controlador.� Explicar cómo la influencia singleton y la cardinalidad de las propiedades de

nodo influyen en la asignación de memoria en tiempo de ejecución.� Definir la asignación entre contextos de distintos controladores ubicados en

el mismo componente Web Dynpro.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 277

Page 292: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Contenido del capítuloLección: El contexto en la fase de diseño ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .279

Ejercicio 15: El contexto en la fase de diseño .. . . . . . . . . . . . . . . . . . . . . . . . .295

278 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 293: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Lección:252

El contexto en la fase de diseñoDuración de la lección: 70 Minutos

Resumen de la lecciónEn la fase de diseño, el desarrollador puede definir estáticamente la estructuracontextual de cualquier controlador. Los elementos de contexto deben añadirsea la jerarquía de la estructura y las propiedades deben configurarse para cadaelemento de contexto. En tiempo de ejecución, estas propiedades regulan laasignación de la memoria, por ejemplo, el tipo del contenido y la dimensión de losarrays de datos que se deberán almacenar. Por consiguiente, es esencial entenderlas definiciones estáticas y las propiedades del tiempo de ejecución relacionadascon el contexto. En esta lección se presenta una introducción básica al contexto.

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

� Definir nodos y atributos en el contexto de un controlador.� Explicar cómo la influencia singleton y la cardinalidad de las propiedades de

nodo influyen en la asignación de memoria en tiempo de ejecución.� Definir la asignación entre contextos de distintos controladores ubicados en

el mismo componente Web Dynpro.

Depending on how much has been shown in the chapter introducing Web Dynpro,some topics can be skipped (for example, context mapping).

In this lesson you should continue to develop your WD component. You shouldcreate a context node in the component controller (with some attributes), copy thisnode to both views, and map the context nodes of both views to the componentcontroller context node. You should create container forms that allow data to beentered in one view and displayed in another view.

Ejemplo empresarialHa creado su primer componente Web Dynpro con vistas incrustadas medianteventanas. Ha creado una aplicación Web Dynpro para acceder a su componenteWeb Dynpro desde el browser. Sin embargo, desea obtener los datos de aplicacióndesde un sistema back end, no simples datos estáticos. Por lo tanto, necesita definirvariables que puedan vincularse a elementos de UI y que puedan intercambiarsefácilmente entre varios controladores. Estas variables deben definirse en elcontexto de controlador, por lo que desea aprender a definir este almacenamientode datos jerárquico.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 279

Page 294: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Definición de la estructura contextualCada controlador Web Dynpro tiene exactamente una estructura dealmacenamiento de datos jerárquica, conocida como contexto. Los datos incluidosen el contexto existen únicamente durante el período de vida del controlador.Una vez cancelada la instancia de controlador, todos los datos incluidos en sucontexto se pierden.

Gráfico 154: Contexto: el núcleo de un controlador

La estructura (es decir, los metadatos) de un contexto se definen normalmente enla fase de diseño. No obstante, en tiempo de ejecución se puede modificar no sóloel contenido del contexto, sino también la propia estructura.

280 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 295: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Gráfico 155: Modificación del contexto

A menos que se declare de otro modo, todos los datos de tiempo de ejecución delcontexto de un controlador son privados para ese componente.

La información que contiene el contexto de un controlador personalizado puedehacerse fácilmente accesible para el contexto de otro controlador (personalizadoo de vistas) mediante una técnica conocida como asignación de contextos.Mediante esta técnica, dos o más controladores pueden acceder a los mismos datosde tiempo de ejecución. Éste es el mecanismo básico del uso compartido de datosentre controladores de un único componente.

Un controlador de vistas no puede compartir sus datos de contexto.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 281

Page 296: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Gráfico 156: Creación de nuevos elementos de contexto

Demo step 1: Create a context node with attributes in the component controller.

Show how to define a node without attributes and add the attributes one by one.Show also how a node related to a DDIC structure and some attributes related tostructure fields can be defined in one step. Show how to add or delete some of theattributes after having created the node (use Change from the context menu of thenode). Finally, show how to copy a node from another controller (choose CreateUsing the Wizard -> Copy Nodes of Different Context).

Todos los contextos de controlador se construyen a partir de una disposiciónjerárquica de entidades conocidas como nodos y atributos. Un contexto tienesiempre un nodo superior conocido como nodo raíz de contexto. El nodo raízse crea automáticamente cuando el controlador se inicializa y tiene siemprepropiedades fijas. El nodo raíz de contexto no puede eliminarse ni modificarsede ningún modo.

Un nodo de contexto es la clase de abstracción principal utilizada para elalmacenamiento de datos de tiempo de ejecución en el framework de Web Dynpro.Los nodos de contexto se organizan jerárquicamente. El nodo debe tener atributosu otros nodos como subordinados.

Todas las entidades subordinadas de un nodo se agregan a una unidad conocidacomo elemento. Un nodo se puede considerar como una serie de dichos elementosdel mismo modo que una tabla es una serie de filas.

282 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 297: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Atención: El nombre de un nodo de contexto debe ser único en toda laestructura del contexto de un controlador.

Un atributo de contexto es una entidad del contexto que no puede tenersubordinados. Un atributo de contexto sólo existe si está asignado a un nodosuperior. Este nodo superior puede ser un nodo raíz de contexto u otro nodo.

Si debe almacenarse una serie de objetos de datos estructurados en un contexto decontrolador en tiempo de ejecución, deberá definirse un nodo de contexto paraalmacenar la serie en sí. Los atributos de contexto u otros nodos de contextodeben definirse como subelementos que almacenen los elementos de cada objetode datos estructurado.

Propiedades de elementos de contexto

Gráfico 157: Estructura contextual en la fase de diseño

Cardinalidad de la serieEn la fase de diseño, puede crear la estructura de metadatos en la que sealmacenarán los datos de tiempo de ejecución. El diagrama anterior parecemostrar que la estructura contextual es un árbol plano en dos dimensiones, como lavisualización de directorios y archivos en Windows Explorer. Sin embargo, todoslos nodos de contexto son series, por lo que podría haber potencialmente variasinstancias de cada atributo y nodo subordinado dentro de una serie de nodos.

Todos los nodos de contexto tienen una propiedad llamada cardinalidad. Estapropiedad consta de dos valores que, al combinarse, describen el número máximoy mínimo de elementos que la serie de nodos puede incluir en tiempo de ejecución:

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 283

Page 298: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Cardinalidad mínima: 0 ó 1

Cardinalidad máxima: 1 ó n

Existen, por lo tanto, cuatro valores de cardinalidad posibles (especificados como<Min>..<Max>):

� 0..1: se permite cero o un elemento� 0..n: se permite cero o más elementos� 1..1: se permite exactamente un elemento� 1..n: se permite uno o más elementos

If the cardinality is 0:1 or 0:n and no element is created and explicitly addedto the collection, input fields bound to these attributes are set as read-only bythe WD runtime.

Todos los nodos contienen una serie de elementos, incluso cuando el númeromáximo de elementos de la colección está limitado a uno.

Gráfico 158: Estructura contextual en tiempo de ejecución: propiedad decardinalidad (1)

El nodo raíz de contexto contiene siempre exactamente un elemento (tenga encuenta que la cardinalidad es 1..1). Este elemento es conocido como el elementopor defecto y no puede eliminarse. Esto también implica que las series de nodosque sean subordinadas directas del nodo raíz de contexto existirán en tiempo deejecución como series vacías (cardinalidad = 0..<algo>) o tendrán un elementopor defecto (cardinalidad = 1..<algo>). Estos nodos subordinados del nodo raízde contexto se denominan por lo tanto nodos independientes. Todas las demás

284 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 299: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

series de nodos existirán únicamente si sus series superiores contienen al menosun elemento. Por consiguiente, la existencia de estas series de nodos en tiempo deejecución no está garantizada. Por eso, estos nodos se llaman nodos dependientes.

Si intenta realizar cualquier acción en una serie de nodos que pueda violar sucardinalidad, obtendrá un error de tiempo de ejecución del framework de WebDynpro. Dichas acciones incluyen:

� Intentar eliminar el elemento por defecto de un nodo con cardinalidad1..<algo>.

� Intentar añadir un segundo elemento a un nodo con cardinalidad <algo>..1.

Gráfico 159: Estructura contextual en tiempo de ejecución: propiedad decardinalidad (2)

Ahora puede ver que la estructura del contexto en tiempo de ejecución no es lajerarquía plana en dos dimensiones que se observa en la fase de diseño. En sulugar, un nodo de contexto adquiere profundidad.

Esto puede compararse a un tabla interna en ABAP en la fase de diseño y entiempo de ejecución. En la fase de diseño, los metadatos de la tabla interna incluyela estructura dada por el tipo de línea. La dimensión de la tabla interna (el númerode líneas que el objeto de datos incluye en tiempo de ejecución) no forma partede la definición. En tiempo de ejecución, se pueden añadir varias líneas al objetode datos de la tabla interna, al igual que se pueden añadir varios elementos a unaserie que se origine a partir de un nodo de contexto en tiempo de ejecución. Noobstante, como no hay restricciones sobre el número mínimo y máximo de líneasque una tabla interna puede incluir, no existe una equivalencia para la propiedadcardinalidad. Las tablas internas tienen siempre cero líneas tras la declaración delobjeto y pueden incluir un número ilimitado de líneas en tiempo de ejecución.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 285

Page 300: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

La selección de leadSe puede acceder a la serie de elementos de un nodo mediante un valor deíndice basado en 1. Cuando se realiza la selección de lead, sólo se puedemarcar un elemento de la serie de nodos. La selección de lead de un nodode contexto señala a un único elemento de nodo seleccionado (valor de laselección de lead = número del elemento de nodo seleccionado) o bien,si no se ha seleccionado ningún elemento, tiene el valor de la constanteIF_WD_CONTEXT_NODE=>NO_SELECTION. El framework de Web Dynpropuede establecer automáticamente la selección de lead si la propiedad de nodode contexto Inicializar selección de lead está establecida en verdadero. En estecaso, el primer elemento de una serie se marca automáticamente como el elementoen cuestión cuando se realiza la selección de lead. La selección de lead tambiénpuede establecerse mediante el código fuente de programa o con las acciones deusuario relacionadas con los elementos de UI (p. ej., mediante la selección de unalínea en el elemento de visualización de la tabla vinculado al nodo).

Your component: Open one of the views, navigate to the context and show theproperty of the previously created context node (cardinality, Initialization LeadSelection, ...). Show that these properties can only be manipulated for the mappingorigin, and not for the mapped nodes.

Si se establece la selección de lead, las siguientes afirmaciones son verdaderas:

� En el código del controlador, se pueden utilizar métodos especiales paraacceder a la selección de lead de un nodo, así como a su posición.

� Los elementos de UI, como por ejemplo los campos de entrada, se puedenvincular a los atributos de este elemento.

286 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 301: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

La propiedad Singleton

Gráfico 160: Estructura contextual en tiempo de ejecución: propiedadsingleton (1)

Observe que el nodo de contexto FLIGHTS tiene un nodo subordinado llamadoBOOKINGS. El nodo BOOKINGS es un nodo separado que tiene su propia seriede elementos.

La propiedad booleana Singleton es crucial para la relación entre un nododependiente y su nodo superior.

Si la propiedad singleton del nodo BOOKINGS está establecida en falso (el nodoBOOKINGS será un no singleton en tiempo de ejecución), habrá una instanciadiferente del nodo subordinado BOOKINGS para cada elemento de la serie denodos superior (en este caso FLIGHTS).

Lo más importante que se debe entender con esto es que cada instancia del nodoBOOKINGS está relacionada con el elemento respectivo de la serie de nodossuperior. Tenga en cuenta que las flechas que señalan a cada una de las series denodos BOOKINGS se crean en los elementos del nodo superior.

Por consiguiente, si hay n elementos en el nodo superior, habrá n instanciasdiferentes de un nodo subordinado no singleton.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 287

Page 302: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Gráfico 161: Estructura contextual en tiempo de ejecución: propiedadsingleton (2)

Si el nodo BOOKINGS tiene ahora su propiedad Singleton establecida enverdadero (que es el valor por defecto), no importa cuántos elementos haya en laserie de nodos superior (FLIGHTS, en este caso). Siempre habrá únicamente unainstancia del nodo subordinado BOOKINGS, por lo que la serie BOOKINGS seráun singleton en tiempo de ejecución.

Función de suministroEn el ejemplo anterior, podría haber muchos elementos diferentes en la serie denodos FLIGHTS. No obstante, como sólo hay una instancia del nodo subordinadosingleton BOOKINGS, necesitamos asegurarnos de que cuando se acceda a estenodo subordinado, este contenga los datos correctos para el elemento seleccionadoen el nodo superior.

288 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 303: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Gráfico 162: Reasignación de datos a un nodo singleton dependiente:Función de suministro

Las funciones de suministro son un mecanismo para recargar nodos subordinados.Se puede asignar una función de suministro a cada nodo de contexto de uncontrolador. El entorno de tiempo de ejecución llama automáticamente estafunción de suministro cuando se accede a los datos de un nodo de contexto noválido. La anulación de la validez de un nodo de contexto se produce bajo lascondiciones siguientes:

� La serie de nodos es inicial.� La selección de lead de la serie de nodos superiores se ha modificado.� El código fuente ha anulado la validez de esta serie de nodos.

La función de suministro es especialmente útil cuando se combina con nodossingleton. Los valores de los elementos del nodo subordinado de tipo Singletondependen del elemento del nodo superior al que está asignada actualmente laselección de lead. Si el usuario modifica la selección de lead, la función desuministro podrá acceder al nuevo elemento de selección de lead y volver acalcular los valores de los elementos del nodo subordinado en consecuencia.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 289

Page 304: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

El nombre de una función de suministro se puede introducir al definir o modificarun nodo de contexto desde su menú contextual. Como resultado, se crea unmétodo de instancia con una firma dada:

� Una referencia al elemento en la selección de lead del nodo superior permiteacceder a los atributos de este elemento.

� Una referencia al nodo con el que está relacionada la función de suministro lepermite almacenar los datos dependientes en la serie de nodos subordinados.

Your component: Edit the component controller context. You have already createda node with some attributes. Now add a subnode to this node. Edit the node�sproperties. Enter any name in the input field for the property Supply Function.Select Enter. Open the Methods tab. Explain that a related method has beengenerated.

Gráfico 163: Estructura contextual: Nodos singleton

Cuando se utiliza una transacción empresarial, la información se presentafrecuentemente en forma de lista de registros de cabecera de alguna clasificación(cabeceras de pedidos de cliente, por ejemplo). Desde esta lista, el usuarioselecciona normalmente una cabecera de pedidos y, a continuación, mira suspartidas. Tiene mucho más sentido leer la información de partida únicamentecuando es necesario, que leer todas las partidas de todos los pedidos de cliente porsi fueran relevantes para el usuario. Se trataría de una arquitectura de aplicaciónmuy ineficaz tanto en términos de requisitos de procesamiento como de uso dela memoria.

290 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 305: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Web Dynpro sigue el principio de instanciación de datos no activa. Estosignifica que los datos sólo se crean cuando realmente se necesitan. Cuando seaplica este principio a la arquitectura del contexto, hace que el no subordinadono se procese hasta que el programa acceda a sus datos. Por consiguiente, no esnecesario conservar varias instancias de datos que el usuario no ha solicitado.

La instanciación de datos no activa significa también que no se creanautomáticamente series dependientes para todos los elementos del nodo superior.La creación de una serie del nodo dependiente se pospone hasta que el elementorelacionado de la serie superior obtiene la selección de lead.

Asignación de contextos

Gráfico 164: Asignación de contextos

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 291

Page 306: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

La asignación de contextos permite a un controlador (normalmente uncontrolador de vistas) acceder a los datos procesados anteriormente por otrocontrolador. Como una relación de asignación permite que se realice unareferencia directa a los datos de otro controlador, no es necesario que estos datosse copien o muevan.

Nota: Un nodo asignado carece de serie de elementos propia. En su lugar,hace referencia a la serie de elementos del nodo de origen de asignación.Un controlador de vistas no puede actuar como fuente de datos para unarelación de asignación porque esto violaría los principios del diseño deprograma MVC.

Consejo: En los programas diseñados de acuerdo con el principio MVC,un controlador de vistas debe escribirse de modo que no tome parte enla generación de los datos que visualiza. En su lugar, el controlador devistas sólo se debe preocupar de la visualización de datos generadoscon anterioridad y de la gestión de la interacción resultante del usuario(validación, tratamiento de errores, etc.). Interactuar con lógica back endpara generar los datos solicitados es tarea del controlador personalizado.

Una vez generados los datos, el controlador personalizado los suministraa un controlador de vistas para su visualización. Si un controlador devistas pudiese actuar como fuente de datos (origen) para una relaciónde asignación, podría producirse una situación en la que un controladorpersonalizado fuera dependiente de las funciones de un controlador devistas. Esto no sería un buen diseño MVC y, por consiguiente, no estápermitido.

Para establecer una asignación de contextos entre dos controladores, el controladorde destino debe declarar el controlador de origen como controlador utilizadoen sus propiedades. Si se selecciona la ficha Contexto en modo de edición delcontrolador de destino, los contextos de todos los controladores utilizados sevisualizarán en la parte derecha. A continuación, se puede hacer referencia a unnodo de un contexto de origen de la siguiente manera:

Your component: Now edit your views. To create the context structures, dragand drop the node from the component. This also implements context mapping.You can also copy the context node first and implement mapping afterwards bydragging and dropping the view node to the node that serves as the mappingorigin. At the end, demonstrate how input fields can be created automatically. Usethe WD Code Wizard to create a group that contains the form elements. However,only input fields can be created this way. Using the Create Container Formfunction from the context menu of the ROOTUIELEMENTCONTAINER will notcreate a group that embeds the form fields. However, the developer can decidewhich context attribute will be bound to what kind of UI element.

292 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 307: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

You should also show how changes in the context structure of the mapping origincan be taken into account by mapping (using the functions Update Mapping andDelete Mapping).

� Si todavía no se ha definido un nodo independiente para asignación en elcontexto del controlador de destino, la estructura del nodo de origen seasigna arrastrándolo y soltándolo desde el contexto del controlador de origenhasta el nodo raíz del contexto del controlador de destino.

� Si ya se ha definido la estructura de un nodo en el contexto del controladorde destino, el nodo de destino se arrastra y se suelta desde el contextodel controlador de destino hasta el origen de asignación del contexto delcontrolador de origen. No obstante, para los nodos dependientes esto sólo esposible si los nodos independientes relacionados ya se han asignado.

Atención: Los nodos sólo se pueden asignar si el nodo asignado nocontiene más atributos que el origen de asignación.

Consejo: Después de ejecutarse la asignación entre los dos nodos,se asignan todos sus elementos, tanto los atributos como los nodossubordinados.

Si la estructura de nodo del origen de asignación se modifica (si se añaden,eliminan o modifican elementos), la asignación se puede actualizar(sincronizar) mediante el menú contextual del nodo asignado.

Gráfico 165: Asignación de contextos: asignación interna

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 293

Page 308: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Asignación interna es el nombre que se da a una relación de asignación en la quetanto el nodo asignado como el nodo de origen de asignación están dentro de loslímites de un componente. Esto significa que la relación de asignación se puedeestablecer completamente durante el desarrollo del componente actual.

Existe, sin embargo, un caso especial en el que una relación de asignación sólopuede establecerse parcialmente al escribir el componente actual. Esto se conocecomo asignación externa. Como su propio nombre implica, el nodo de origende asignación está fuera de los límites del componente actual. Hablaremos de laasignación externa más adelante.

Exercise �The Context at Design Time�

294 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 309: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

265 Ejercicio 15: El contexto en la fase dediseñoDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear nodos en contextos de componentes y vistas� Asignar nodos de contexto de vistas a nodos de contexto de componentes� Crear campos de entrada/salida en vistas Web Dynpro� Asociar elementos de UI a nodos de contexto de vistas

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro con campos de entrada/salida enlas vistas. Los datos que el usuario introduce en una vista (un ID de compañíaaérea y un ID de conexión) deberán estar disponibles para su visualización enla siguiente vista.

Modelo: NET310_CTRL_S

Solución: NET310_COND_S

Tarea 1:Copie la solución del ejercicio anterior o use el componente modelo.

1. Copie la solución del ejercicio anterior (ZNET310_CTRL_##) o delcomponente 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 quecontenga atributos para un ID de compañía aérea y un ID de conexión. Cree elmismo nodo de conexión en cada una de las dos vistas y asigne los contextos delcontrolador de vistas al contexto del controlador de componentes.

1. En el contexto del controlador de componentes, cree un nodo de contexto(nombre propuesto: FLIGHTINFO) basado en el tipo de diccionarioSFLIGHT y con cardinalidad 1...1. Añada dos atributos a partir de loscomponentes de estructura CARRID y CONNID.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 295

Page 310: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

2. Cree el mismo nodo en el contexto de cada controlador de vistas y asigneel nodo de contextos de los controladores de vistas al nodo de contextoFLIGHTINFO del controlador de componentes.

Tarea 3:Para ambas vistas, cree campos de entrada que correspondan a los atributos denodo de contexto y vincúlelos a dichos atributos.

1. En el layout de la vista INPUT_VIEW, cree un formulario con referenciasa los atributos de contexto CARRID y CONNID. Utilice el asistente decodificación Web Dynpro para crear el formulario.

2. Repita el paso anterior para la vista OUTPUT_VIEW.

3. Cree una aplicación Web Dynpro para su componente, actívela y realiceun test.

296 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 311: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

Solución 15: El contexto en la fase dediseñoTarea 1:Copie la solución del ejercicio anterior o use el componente modelo.

1. Copie la solución del ejercicio anterior (ZNET310_CTRL_##) o delcomponente Web Dynpro NET310_CTRL_S en el nuevo componente,ZNET310_COND_##.

a) Una posible solución: En Object Navigator, seleccione Tratar objetoy, a continuación, seleccione la etiqueta Objetos Web.

b) Introduzca el nombre del componente Web Dynpro que se va a copiary seleccione Copiar .

c) Introduzca un nombre para el nuevo componente Web Dynpro.

Tarea 2:En el contexto del controlador de componentes, cree un nodo de contexto quecontenga atributos para un ID de compañía aérea y un ID de conexión. Cree elmismo nodo de conexión en cada una de las dos vistas y asigne los contextos delcontrolador de vistas al contexto del controlador de componentes.

1. En el contexto del controlador de componentes, cree un nodo de contexto(nombre propuesto: FLIGHTINFO) basado en el tipo de diccionarioSFLIGHT y con cardinalidad 1...1. Añada dos atributos a partir de loscomponentes de estructura CARRID y CONNID.

a) Trate el controlador de componentes y seleccione la etiqueta Contexto.

b) Abra el menú contextual del nodo de contexto raíz y seleccione Crear→ Nodo.

c) Introduzca el nombre del nodo, el nombre del tipo de diccionario(estructura) y la cardinalidad.

d) Seleccione Añadir atributos desde estructura , marque loscomponentes de estructura CARRID y CONNID, y seleccione .

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 297

Page 312: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

2. Cree el mismo nodo en el contexto de cada controlador de vistas y asigneel nodo de contextos de los controladores de vistas al nodo de contextoFLIGHTINFO del controlador de componentes.

a) Trate una de las vistas Web Dynpro y seleccione la etiqueta Contexto.

b) Arrastre el nodo de contexto FLIGHTINFO desde el contexto decontrolador de componentes (lado derecho) y suéltelo en el nodo raízdel contexto de controlador de vistas (lado izquierdo). Confirme quedesea copiarlo y asigne el nodo.

c) Repita este paso para la segunda vista.

Tarea 3:Para ambas vistas, cree campos de entrada que correspondan a los atributos denodo de contexto y vincúlelos a dichos atributos.

1. En el layout de la vista INPUT_VIEW, cree un formulario con referenciasa los atributos de contexto CARRID y CONNID. Utilice el asistente decodificación Web Dynpro para crear el formulario.

a) Trate la vista Web Dynpro y seleccione la ficha Layout.

b) Inicie el Asistente de codificación Web Dynpro haciendo clic en elpulsador de la barra de herramientas de aplicaciones del exploradorWeb Dynpro. Seleccione el modelo para crear formularios.

c) Seleccione Contexto y haga doble clic en el nodo de contexto(FLIGHTINFO) del cuadro de diálogo.

d) Confirme las entradas seleccionando .

Consejo: Puede reorganizar los elementos de UI de la siguientemanera:

� Si mueve el pulsador al grupo de elementos de UImediante la función de arrastrar y soltar, este pulsadoraparecerá como último elemento del grupo.

� Si fija la propiedad de pulsador Datos de layout enMatrixHeadData, el pulsador se moverá hacia una nuevafila del grupo.

� Si actualiza la propiedad Texto de caption de los grupos,se añadirá una cabecera al grupo.

Continúa en la página siguiente

298 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 313: TAW12_02

TAW12_2 Lección: El contexto en la fase de diseño

2. Repita el paso anterior para la vista OUTPUT_VIEW.

a) Realice este paso como antes.

b) Si desea modificar la propiedad sólo lectura de los campos de entradade esta vista, cambie la casilla de selección readOnly para cada campode entrada.

3. Cree una aplicación Web Dynpro para su componente, actívela y realiceun test.

a) Realice este paso como en los ejercicios anteriores.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 299

Page 314: TAW12_02

Capítulo 9: El contexto en la fase de diseño TAW12_2

Resumen de la lección

Ahora podrá:� Definir nodos y atributos en el contexto de un controlador.� Explicar cómo la influencia singleton y la cardinalidad de las propiedades de

nodo influyen en la asignación de memoria en tiempo de ejecución.� Definir la asignación entre contextos de distintos controladores ubicados en

el mismo componente Web Dynpro.

300 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 315: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Definir nodos y atributos en el contexto de un controlador.� Explicar cómo la influencia singleton y la cardinalidad de las propiedades de

nodo influyen en la asignación de memoria en tiempo de ejecución.� Definir la asignación entre contextos de distintos controladores ubicados en

el mismo componente Web Dynpro.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 301

Page 316: TAW12_02

Resumen del capítulo TAW12_2

302 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 317: TAW12_02

Capítulo 10273 Definición de la interfase de usuario

(UI)

The focus of this chapter is NOT to discuss all UI elements and their properties.This would be very boring as it would be difficult to remember all these details.Instead, this chapter looks at the concepts of data binding, changing UI elementproperties at runtime and the complex Table element . Detailed documentation isavailable is available for each UI element in the context menu of the UI elementhierarchy.

Resumen del capítuloUno de los puntos fuertes de Web Dynpro es que permite definir una interfasede usuario fácilmente. Al igual que para diseñar una pantalla tradicional, seutiliza una herramienta WYSIWYG para diseñar un layout de visualización. Entiempo de ejecución, el layout se genera a partir de los metadatos, en función delcliente utilizado. En esta unidad se explican todos los aspectos de la definición deinterfases de usuario.

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

� Definir el layout de las vistas mediante la disposición de los elementos de UIy el establecimiento de sus propiedades.

� Vincular las propiedades de elemento de UI a atributos de contexto.� Usar el elemento de UI de tabla como ejemplo de utilización de elementos de

UI compuestos.

Contenido del capítuloLección: Definición de la interfase de usuario (UI) .. . . . . . . . . . . . . . . . . . . . . . . .304

Ejercicio 16: Interfase de usuario: Visualización de objetos deRepository MIME ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331Ejercicio 17: Interfase de usuario: visualización de tablas .. . . . . . . . . .333

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 303

Page 318: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Lección:274

Definición de la interfase de usuario (UI)Duración de la lección: 160 Minutos

Resumen de la lecciónLa definición de la interfase de usuario conlleva la definición de los elementosde UI y su disposición en el layout de visualización así como la vinculación delas propiedades del elemento de UI a los atributos de contexto. Las propiedadesdel elemento de UI pueden entonces controlarse mediante el código fuente delcontrolador actuando sobre los atributos, garantizando la mejor separación entre laUI y la lógica del programa.

En esta lección se explica cómo disponer de los diferentes elementos de UI paradiseñar el layout de una vista. Se habla de los elementos de UI estándar y loselementos complejos, es decir, los elementos de UI anidados (por ejemplo, TABLEo TREE). También aprenderemos a definir la vinculación de datos entre laspropiedades de los elementos de UI y los atributos de contexto.

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

� Definir el layout de las vistas mediante la disposición de los elementos de UIy el establecimiento de sus propiedades.

� Vincular las propiedades de elemento de UI a atributos de contexto.� Usar el elemento de UI de tabla como ejemplo de utilización de elementos de

UI compuestos.

Only the simple elements and the container elements are discussed here.Some students may also ask for trees, Gantt charts, network charts or officeintegration UI elements. Some of these elements - for example, informationon integrating interactive forms (of Adobe), will be explained in the specialtopics chapter at the end of this handbook. Demos on business graphics are alsocontained in the NET310 package. A standard SAP Web Dynpro application(WDR_TEST_UI_ELEMENTS) can also be used to check out the functions ofelements not covered in this training material.

Ejemplo empresarialDesea crear una aplicación Web Dynpro que tenga una interfaz de usuariooptimizada (por ejemplo, desea disponer los elementos de la pantalla por gruposo bandejas). Los datos en masa deberán visualizarse en tablas, lo que le permitemarcar una o más filas y filtrar o clasificar los datos. Además, algunas propiedades

304 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 319: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

de los elementos de UI (como la visibilidad) deberán controlarse desde el códigofuente de la aplicación. Por lo tanto, desea ampliar sus conocimientos sobre loselementos de UI.

Definición de un layout de visualización

Gráfico 166: Elementos de UI

Un elemento de UI es cualquier entidad gráfica que ocupe una posicióndentro de un layout de visualización. No obstante, eso no significa que todoslos elementos de UI sean visibles en la pantalla. Existen algunos elementosde UI que no son visibles en la pantalla, como el TransparentContainer o elViewUIElementContainer. Estos elementos se utilizan para estructurar la UI sinser visibles, pero ocupan una posición en la jerarquía de elementos de UI al igualque cualquier otro elemento de UI visible. Además, todos los elementos de UI sepueden establecer como invisibles en tiempo de ejecución sin que por ello se libereel espacio que ocuparían como elementos de UI visibles. Por ejemplo, al ocultarel elemento de UI Label ubicado a la izquierda de un elemento de UI InputFieldno significa automáticamente que el elemento de UI InputField se mueva a laizquierda y aparezca en la posición en la que se visualizaba anteriormente elelemento de UI Label.

Web Dynpro se ha diseñado para operar con cualquier interfaz de usuario basadaen formularios. Este será probablemente un browser estándar, pero también podríaser un Smart Client, un Pocket PC� o una Blackberry� en futuras versiones.Esto implica que cualquier elemento de UI es sólo una descripción abstracta delcódigo fuente que se debe renderizar en tiempo de ejecución, y no únicamente unarepresentación WML o HTML de este elemento.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 305

Page 320: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 167: Categorías de elementos de UI

Existe una gran cantidad de elementos de interfaz de usuario disponibles parael diseño de la interfaz de usuario de una aplicación Web Dynpro. Todos loselementos de interfaz de usuario disponibles se dividen en categorías, que sevisualizan en el diseñador de vistas si la presentación preliminar de layout esvisible:

La categoría Standard Simple contiene elementos que se utilizan frecuentementeen aplicaciones Web Dynpro y que también se conocen de otras tecnologías deUI como, por ejemplo, Button, Label o InputField.

La categoría Standard Complex contiene elementos que necesitan tener elementossubordinados para definir un elemento de UI renderizable y válido. Un buenejemplo es una Table, que necesita tener un elemento TableColumn comosubordinado para cada columna que se deba visualizar.

La categoría Standard Container consta de elementos que pueden tener elementossubordinados. Los elementos de UI de container estructuran el layout de maneravisible (por ejemplo, Group) o no visible (por ejemplo, TransparentContainer).

Otras categorías contienen elementos para visualizar diagramas basadosen Active-X (Active Component), formularios interactivos de Adobe(Adobe) o gráficos empresariales renderizados por Internet Graphics Server(BusinessGraphics), o para incrustar documentos de Microsoft Office comodocumentos de Microsoft Word o Excel (OfficeIntegration) y otros elementosde UI especiales.

306 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 321: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 168: Disposición de elementos de UI

Show documentation available for each UI element (right mouse click on anyelement defined in UI element hierarchy)

Todos los layouts de visualización constan de una jerarquía de elementos de UI.El nodo raíz siempre es de tipo TransparentContainer y siempre se denominaRootUIElementContainer . Esto no se puede modificar, la codificación es fija.Todos los elementos de UI posteriores añadidos a un layout de visualización estánsubordinados jerárquicamente a RootUIElementContainer.

Elementos de container y gestores de layoutLos elementos de container son elementos de UI que pueden tener elementossubordinados. Ocupan un área rectangular en el layout de una vista. Todos loselementos de UI que están subordinados a un elemento de container están ubicadosen esta área rectangular. Todos los elementos de container definen cómo sedispondrán sus subordinados. Esto se realiza evaluando la propiedad Layout, queasigna un gestor de layout al elemento de UI. Todos los elementos subordinados

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 307

Page 322: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

de un elemento de UI de container heredan un conjunto de propiedades que estánrelacionadas con el valor de la sección Layout Data de la propiedad Layout delcontainer. La propiedad Layout puede tener cuatro valores:

� FlowLayout� RowLayout� MatrixLayout� GridLayout

To demonstrate the differences between the layout managers, start the demoNET310_UI_D1. Resize your browser window.

Gráfico 169: Gestores de layout: FlowLayout

El gestor de layout por defecto es el gestor de layout FlowLayout. Todos losatributos subordinados de este container se visualizan en una fila, tan larga comoancho sea el container. Si el elemento de UI de container es demasiado estrechocomo para que se puedan visualizar todos los elementos subordinados en unafila (si la ventana del browser es demasiado estrecha, por ejemplo), éstos saltanautomáticamente a las siguientes líneas. Este salto no puede forzarse en la fase dediseño. Los elementos que están en líneas diferentes no están relacionados entreellos. Este tipo de container se puede utilizar para disponer subcontainers.

308 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 323: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 170: Gestores de layout: RowLayout

Si el gestor de layout RowLayout se utiliza con el elemento de UI de container,todos los subordinados heredarán la propiedad LayoutData, que puede tenerlos valores RowData y RowHeadData. Si se establece esta propiedad enRowHeadData, se forzará un salto de línea. Si se establece la propiedad enRowData, el elemento subordinado aparecerá en la misma línea que el elementoanterior, aunque ya se haya alcanzado el margen de la derecha. Los elementosde UI ubicados en filas diferentes no están enlazados entre sí y, por lo tanto, noestán alineados en columnas.

El ancho de cada celda se puede establecer con el atributo width de cada elementosubordinado.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 309

Page 324: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 171: Gestores de layout: MatrixLayout

Si el gestor de layout MatrixLayout se utiliza con el elemento de UI de container,todos los subordinados heredarán la propiedad LayoutData, que puede tenerlos valores MatrixData y MatrixHeadData. Si se establece esta propiedad enMatrixHeadData, se forzará un salto de línea. Si se establece la propiedad enMatrixData, el elemento subordinado aparecerá en la misma línea que el elementoanterior, aunque ya se haya alcanzado el margen de la derecha. Los elementossubordinados de este container se disponen en columnas. Con este gestor delayout, el número de columnas no se define estáticamente, sino según el númeromáximo de elementos subordinados en cualquier fila. El número de elementos enfilas distintas no tiene que coincidir necesariamente.

Los elementos de UI dispuestos en un MatrixLayout pueden ocupar varias celdas(propiedad colSpan).

310 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 325: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 172: Gestores de layout: GridLayout

Al igual que el MatrixLayout, el gestor de layout GridLayout puede utilizarse sise desea un alineamiento vertical de los elementos. No obstante, en este caso elnúmero de columnas se define mediante la propiedad colCount del elemento decontainer. De este modo, el elemento subordinado individual no controla si esel primer elemento de una nueva fila. Se producirá un salto de línea cuando seocupen todas las celdas de una fila. Si se elimina un elemento de la jerarquía,se modificará toda la disposición, ya que todos los elementos posteriores de lajerarquía se moverán hacia la izquierda tantas celdas como ocupaba el elementoeliminado.

Deberá utilizarse este tipo de gestor de layout si todas las filas ocupan el mismonúmero de columnas y si se insertan o eliminan sólo filas completas. Cuando seutilice este gestor de layout, no se deberán eliminar completamente los elementosde UI, sino que se deberán sustituir por un InvisibleElement con el fin de mantenerla disposición de elementos original.

Your component: Change the layout manager of the ROOTUIELEMENTCON-TAINER in one of the views. Rearrange the UI elements.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 311

Page 326: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Adición de elementos de UI al layoutEl Editor de vistas es una herramienta específica de Web Dynpro que le permitetratar un layout de visualización. El Editor de vistas sólo está disponible cuandose trata un controlador de vistas. No aparece cuando se trata un controladorpersonalizado, porque estos controladores no tienen interfase visual.

Gráfico 173: Utilización del editor de vistas

El editor de vistas se puede utilizar con o sin la presentación preliminar de layout.En la siguiente descripción se asume que utiliza la presentación preliminar delayout.

312 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 327: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 174: Editor de vistas

Para añadir cualquier elemento de UI, puede arrastrarlo y soltarlo desde la barrade herramientas situada en la parte izquierda del Editor de vistas. También esposible añadir un nuevo elemento de UI en la representación jerárquica, lo cual sepuede realizar desde el menú contextual de cualquier elemento de la jerarquía quetenga elementos subordinados (por ejemplo, un elemento TransparentContainero un elemento Group).

Para modificar la posición de un elemento de UI en la jerarquía de elementos,puede moverlo hacia arriba o hacia abajo mediante la funcionalidad relacionadadesde el menú contextual del elemento. También puede mover el elementoarrastrándolo y soltándolo en la nueva posición de la representación jerárquica oen la presentación preliminar de layout.

La ficha Propiedades visualiza todas las propiedades del elemento de UIseleccionado. Si el elemento de UI admite eventos, los eventos del mandanteadmitidos se enumerarán en la sección de la propiedad Events. Las propiedadesrelacionadas con los eventos del mandante empiezan por el prefijo on (porejemplo, onFilter, onSort u onAction). Para gestionar estos eventos del cliente,deben asociarse acciones a cada uno de los eventos.

Consejo: Los eventos del cliente son eventos relacionados con elementosde UI que el marco Web Dynpro predefine. No se puede gestionar eventosadicionales del mandante (por ejemplo, mediante JavaScript).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 313

Page 328: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Vinculación de datosUna vez que la propiedad del elemento de UI se asocia a un atributo o nodo decontexto, los datos de contexto se utilizan para suministrar un valor a la propiedaddel elemento de UI. Si el usuario puede actualizar la propiedad del elemento deUI (como la propiedad de valor de un elemento de UI InputField), el contextose actualizará automáticamente con el nuevo valor durante el siguiente trayectocircular.

Casi todas las propiedades de un elemento de UI se pueden vincular bien a unnodo de contexto o bien a un atributo de contexto con el tipo de datos correcto.

Nota: Una relación de asociación sólo puede existir entre el contexto ylos elementos de UI del mismo controlador de vistas.

El controlador de vistas Web Dynpro se ha construido de modo que seanormalmente posible tener el control completo de la apariencia del layout depantalla sin tener que acceder nunca directamente a los objetos del elemento de UI.Cualquier propiedad sobre la que se desee tener un control programático deberáasociarse al atributo o nodo de contexto correspondiente.

Gráfico 175: Vinculación de datos

Definición de vinculación de datosPara que un elemento de UI visualice algún dato, su propiedad de valor debeestar vinculada al menos a un atributo o nodo de contexto adecuado (existen muypocos elementos de UI que no tengan una propiedad de valor, HorizontalGutterpor ejemplo).

314 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 329: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Los siguientes pasos son los mínimos requeridos para poner los datos en lapantalla:

1. Crear un nodo o atributo en el contexto del controlador de vistas quecontenga los datos. No es importante saber si se trata de un nodo de contextoasignado o no.

2. Crear el elemento de UI en el layout de visualización.3. Para todas las propiedades que requieren vinculación de contextos, se

visualizará un pulsador con un icono amarillo y un círculo vacío a la derechade la propiedad. Asigne la asociación requerida haciendo clic en este botón.Se visualizará el contexto del controlador de vistas en un cuadro de diálogo.Todos los nodos o atributos que tengan el tipo correcto para la vinculación dela propiedad de elemento de UI se visualizarán en él. Seleccione un nodoo atributo apropiado.

La ruta de contexto al nodo o atributo se visualizará como valor de la propiedad.Además, el círculo vacío se sustituirá por un icono de marca de comprobaciónverde. El elemento de UI de la presentación preliminar de layout tambiénvisualizará la ruta de contexto del nodo o atributo al que está vinculado.

El establecimiento de una relación de asociación ordena al renderizador depantalla Web Dynpro que obtenga el valor de una propiedad de elemento de UI apartir del atributo o nodo de contexto al que está asociado.

La asociación de contextos no se limita a suministrar simplemente un InputField,por ejemplo, con un valor. Una propiedad de valor del elemento de UI es sólo unade las numerosas propiedades que se pueden suministrar con datos mediante unarelación de asociación.

Éste es el mecanismo mediante el cual un controlador de vistas puede ajustar laapariencia y el comportamiento de su layout de visualización sin tener que accedernunca a los propios objetos de elemento de UI.

It is to early to explain how UI element properties can be changed from thecontroller source code. However, binding the properties to context attributes canbe shown.

You can use the demo NET310_UI_D2 to show how to change the UI elementproperties.

Your component: In this context, you should explain that depending on theproperty, the context attribute has to have a certain type. Show how to type acontext attribute accordingly (property visible of a Label and/or an InputField).Add a context node containing such attributes and bind the corresponding UIelement properties.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 315

Page 330: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 176: Colocación de datos en la pantalla (1)

Gráfico 177: Colocación de datos en la pantalla (2)

Como puede ver en la figura anterior, no es necesario tener los elementos de UI enel mismo orden que los atributos de contexto a los que están asociados.

La asociación de datos es una relación de doble sentido.

316 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 331: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Una vez que se ha declarado una relación de asociación, los datos de los nodosy atributos asociados se transportan automáticamente a los elementos de UIcorrespondientes. Después de que el usuario haya interactuado con la pantalla einicializado un trayecto circular HTTP, los datos nuevos o modificados de loselementos de UI se transportan de vuelta a los mismos nodos y atributos delcontexto del controlador de vistas. Para cuando el marco Web Dynpro transfiereel control a su controlador de acciones, el contexto ya tiene la informaciónactualizada.

Este proceso de transporte de doble sentido es totalmente automático y no requiereninguna acción por parte del desarrollador de la aplicación. Todo lo que tiene quehacer es declarar una relación de asociación.

Control del comportamiento del elemento de UI

Gráfico 178: Definición de las propiedades de elemento de UI de maneraestática

El valor de una propiedad de elemento de UI puede ser de codificación fijao estar vinculado a un atributo de contexto de un tipo de datos adecuado. Siun valor de propiedad es de codificación fija en la fase de diseño, sólo podrámodificarse en tiempo de ejecución mediante el acceso directo al elemento de UIdesde el código fuente del controlador de vistas. Esto sólo se puede llevar a cabomediante el método de conexión wddomodifyview( ), ya que es el único métodoque proporciona una referencia a la jerarquía de elementos de UI. No obstante, elacceso directo a la jerarquía de elementos de UI desde el método de un controladorestá considerado un diseño pobre, porque la separación entre la lógica de procesoy la UI no está garantizada. Esta técnica deberá evitarse.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 317

Page 332: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 179: Control de las propiedades de elementos de UI (1)

Para controlar el comportamiento de un elemento de UI desde la perspectivade la programación, deberá crear un atributo de contexto con un tipo de datosque coincida con la propiedad que desea controlar. Esto le permite controlarel comportamiento del elemento de UI mediante la modificación del valor delatributo relacionado en cualquier método de cualquier controlador que tengaacceso a este atributo de contexto. Ya no será necesario que acceda directamenteal objeto de elemento de UI desde el código fuente del controlador.

Gráfico 180: Control de las propiedades de elementos de UI (2)

318 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 333: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Una vez creado el atributo de contexto, éste debe asociarse a la propiedad deelemento de UI apropiada. En este caso, la propiedad readOnly de un elementoInputField se ha asociado a un atributo de valor booleano.

El valor del atributo de contexto puede ahora manipularse mediante cualquiermétodo de conexión de controlador o mediante sus métodos de instancia o decontrol de acciones.

Esta técnica se puede aplicar a la mayoría de las propiedades de elemento de UI.Podrá encontrar los tipos de datos apropiados utilizando la ficha Tipos del tiempode ejecución Web Dynpro en el cuadro de diálogo que se visualiza al escribirun atributo de contexto.

Textos del Dictionary ABAPMuchos elementos de UI (TextView, Label, Caption, etc.) visualizan textos en laUI renderizada. Estos textos se pueden obtener a partir del Dictionary ABAPde dos maneras:

� La propiedad relativa al texto se asocia a un atributo de contexto, que a suvez se tipifica con un elemento de datos definido en el Dictionary ABAP.

Ejemplo: La propiedad Text de un Button se asocia a un atributo de contexto.A continuación, el texto del pulsador se origina a partir del elemento de datosrelacionado con el atributo de contexto.

� El elemento de UI se relaciona con un segundo elemento de UI, y estesegundo elemento se vincula a un elemento de contexto tipificado con unelemento de datos. En este caso, la propiedad relativa al texto debe dejarseen blanco para poder utilizar el texto del diccionario.

Ejemplo: Se relaciona una Label con un InputField y se deja la propiedadText de la Label en blanco. El texto de la etiqueta se origina a partir delelemento de datos relacionado con el InputField.

Your component: Show, how to use DDIC texts. Get the texts related to the textproperty of some view elements (for example, the Labels) from the DDIC (dataelements or structure fields).

Página de test para elementos de UIEn cada sistema basado en SAP NetWeaver 2004s se incluye la aplicación WebDynproWDR_TEST_UI_ELEMENTS. Puede utilizarla para verificar las funcionesde cada uno de los elementos de UI.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 319

Page 334: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 181: Página de test para elementos de UI

Here you should ask the students, if they know the MIME Repository. If thisis not the case, give a brief introduction. This should comprise the followingissues:

Explain that the path visible in the MIME Repository (for example,sap/bc/webdynpro/sap/public/NET310/explosion.gif) corresponds to theURL path for accessing the MIME object. Check it out by using thispath as part of the URL in the browser.

Use existing MIME objects in Web Dynpro (for example, drag and dropan image from the MIME Repository to an Image UI element in the UIelement hierarchy).Add a MIME object to your component using the context menu for yourcomponent. After importing the MIME object, switch to the MIMERepository and localize the object (sap/bc/webdynpro/sap/z....).

Exercise �Displaying MIME Repository Objects�

320 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 335: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Elementos de UI compuestosAlgunos elementos de UI se visualizan en la pantalla como agregaciones deelementos de UI más sencillos y básicos. El elemento de UI Table es un buenejemplo de ello.

Gráfico 182: Elementos de UI compuestos (1)

Sin los elementos de UI subordinados, un elemento de UI compuesto no es capazde visualizar ninguna información. Los elementos de UI compuestos, comoGroup y Tray, tienen un elemento de UI subordinado Caption obligatorio, peropor lo demás, su estructura está totalmente definida por el usuario. Sin embargo,los elementos de UI compuestos, como Table y Tree, requieren una estructurasubordinada obligatoria más compleja.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 321

Page 336: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 183: Elementos de UI compuestos (2)

El elemento de UI TableEl elemento de UI Table actúa como elemento superior de diversos elementos deUI TableColumn. Cada uno de estos elementos actúa a su vez como elementosuperior de una cabecera (implementado como elemento de UI Caption) y uneditor de celdas. El editor de celdas es una expresión abstracta de todas las clasesde elemento de UI que se pueden utilizar como elementos de celda en una columnadeterminada. El elemento de UI por defecto para el editor de celdas es TextView.No obstante, en función del valor de la celda y de si hace falta que el valor de lacelda sea modificable o no, se pueden utilizar otros elementos de UI como editoresde celdas (por ejemplo, InputField, DropDownByKey, Checkbox o Button).

Show Demo NET310_UI_D3 here. Focus on: UI element hierarchy in viewlayout.

322 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 337: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 184: El elemento de UI Table

Asociación de una Table al contextoEl elemento de UI Table permite visualizar en dos dimensiones los datos de lasceldas dispuestos en filas y columnas. El elemento de UI consta de un área decabecera opcional, cero o más filas y un área de pie de página. El elemento deUI Table debe asociarse a un nodo de contexto de cardinalidad 0..n o 1..n. Elelemento de la selección de liderazgo del nodo de contexto pasa a ser una entradaen tabla resaltada al visualizarse en la pantalla (esto no depende de si se tiene unacolumna de selección).

El elemento de UI Table, con sus elementos subordinados, se puede crearutilizando el asistente de codificación Web Dynpro. En este caso, la definiciónde la vinculación de contexto completa forma parte del proceso del asistente. Noobstante, si el elemento de UI Table se ha añadido a la jerarquía de elementosmanualmente, se podrá utilizar la entrada del menú contextual Crear asociaciónpara crear la asociación completa.

El título ubicado en la parte superior de la tabla (Vuelos en la siguiente figura)es opcional.

Show Demo NET310_UI_D3 here. Focus on: Data binding of TABLE UI element.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 323

Page 338: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Gráfico 185: Vinculación de un elemento de UI Table al contexto

Elementos de UI TableColumnEl elemento de UI Table debe incluir al menos un elemento de UI TableColumn.Los elementos de UI TableColumn deberán vincularse a los atributos del mismonodo a los que esté vinculado el elemento de UI Table superior. Cualquier atributode nodo de un tipo de datos sencillo se puede convertir en una columna de tabla.

Consejo: Un elemento de UI TableColumn puede asociarse a un atributoque no sea un subordinado del nodo al que el elemento de UI Table estáasociado. En este caso, los valores de todas las celdas de la columnason iguales.

Los elementos de UI TableColumn son elementos de UI compuestos. Estosignifica que deben tener elementos de UI subordinados para poder funcionarcorrectamente.

La cabecera de columna se crea mediante un elemento Caption. El textovisualizado en la cabecera de columna se puede obtener a partir del DictionaryABAP si la propiedad Text del elemento de UI Caption se ha dejado en blancoy si el atributo del contexto visualizado en esta columna está tipificado con unelemento de datos de Dictionary ABAP.

324 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 339: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Gráfico 186: Elementos de UI TableColumn

Elementos de UI subordinados de un TableColumnPara presentar la información al usuario, un elemento de UI TableColumn debetener un elemento de UI subordinado que actuará como editor de celdas. Paradecidir qué elemento de UI utilizar, debe aclararse el tipo de interacción entre elusuario y los datos de cada columna.

No crea que, porque el nombre de este rol contenga la palabra �editor� elusuario podrá modificar los datos necesariamente. Si se selecciona alguna clasede elemento de UI sólo de visualización como TextView, el usuario no podrámodificar los datos; el elemento de UI que elija no lo permitirá. Si selecciona unButton, entonces el valor de celda se visualizará en el texto del botón. En estecaso los usuarios no pueden introducir datos, pero pueden activar un evento demandante. Si, por otra parte, selecciona un InputField para que sea el editor deceldas de la tabla, todas las celdas que aparezcan en dicha columna se abrirían,por defecto, para la entrada.

El título que aparece como cabecera de columna es opcional, pero si se definesiempre será del tipo Caption.

Show Demo NET310_UI_D3 here. Focus on: Data binding of cell editors.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 325

Page 340: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Your component: Now you should show how to create a table. Gather data bycreating a service call in the component controller (this has to be explained anywaybefore the related exercise can be solved. Be sure you know which BAPI you wantto call. Copy the generated context node containing the mass data to the start viewand map the node. Use the WD Code Wizard to create the table display. Call theservice method from WDDOINIT of the view. If necessary provide data statically.

Gráfico 187: Definición de elementos de UI subordinados para unTableColumn

Selección de una entrada en tabla y su efecto en laselección de liderazgo del nodoCada vez que haga clic en el pulsador de selección de una fila de tabla en lapantalla renderizada, se iniciará un trayecto circular. Este trayecto circularocasionará el ajuste de la selección de lead del nodo de contexto correspondienteal que esté vinculada esta tabla.

En la siguiente figura, la serie de nodos contiene dos elementos y el usuario hahecho clic en la segunda fila de la tabla. Esto corresponde al elemento 2 del nodoFLIGHTS, y la selección de lead de este nodo cambia para reflejar la selección delusuario.

Habrá tantas filas en la tabla como elementos en la serie de nodos.

326 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 341: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

También puede definir una acción Web Dynpro y asociarla al evento onLeadSelectde la tabla. De este modo, no sólo se ajusta la selección de lead de la serie denodos cuando el usuario hace clic en una tabla, sino que el método de conexiónwddobeforeaction( ) y el método de controlador de acciones correspondiente de lavista que contiene el elemento de UI TableView se procesan.

Show Demo NET310_UI_D3 here. Focus on: Selecting a row sets the leadselection (displayed in the view in the input field).

Gráfico 188: Selección de fila de tabla

Selección de varias filas de una tablaAntes de que un usuario pueda seleccionar varias filas en una tabla (manteniendopulsado MAYÚS o CTRL y haciendo clic en las filas requeridas), el nodode contexto al que está vinculado el elemento de UI Table debe tener unacardinalidad de selección de 0..n o de 1..n. La parametrización de cardinalidadde selección predeterminada para cualquier nodo de contexto es 0..1, lo quesignifica que se puede seleccionar cero elementos o un elemento.

Show Demo NET310_UI_D3 here. Focus on: Selecting multiple rows (this isallowed, since the selection cardinality is set to 0...n for this demo). Choose CTRLand select some lines. Fire the request using the button above the table. Thelead selection does not change.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 327

Page 342: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Cada nodo proporciona el método get_selected_elements( ), quedevuelve todos los elementos seleccionados de una tabla interna (tipoWDR_CONTEXT_ELEMENT_SET).

Nota: Una línea de tabla en una vista seleccionada con la selección delead es sólo una parte del resultado del método get_selected_elements() si el parámetro INCLUDING_LEAD_SELECTION del método estáestablecido en verdadero.

Gráfico 189: Selección de varias filas de una tabla

La propiedad SelectionMode del elemento de UI TableLos temas tratados en las dos secciones anteriores sólo afectan al valor por defectode la propiedad selectionMode de Table (auto). No obstante, esta propiedad puedetener seis valores, que influyen en la posibilidad de seleccionar filas y definir laselección de lead del modo siguiente:

Show Demo NET310_UI_D3 here. Focus on: Choose different settings forthe Selection Mode and verify the influence on choosing rows and setting leadselection as described below.

328 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 343: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Other interesting demos:

NET310_UI_D4 shows that selecting a row leads to an HTTP round trip. However,there is no client-side event handling involved, so the related hook methods in theview controller are not processed (table on bottom). If the client event of selectinga row is bound to an action, the related hook methods are processed (table on top).

La propiedad SelectionModeValor Cantidad

mínima de filasseleccionadas

Cantidadmáxima de filasseleccionadas

Laselecciónde unafila detabla

activa untrayectocircular

Laselecciónde unafila detabla

establecela

selecciónde lead

automático Cardinalidad deselección

Cardinalidad deselección

X X

Unidim. Cardinalidad deselección

1 X X

múltiple Cardinalidad deselección

Cardinalidad deselección

X X

ninguno 0 0 - -singleNoLead Cardinalidad de

selección1 - -

multiNoLead Cardinalidad deselección

Cardinalidad deselección

- -

Exercise �Displaying Tables�

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 329

Page 344: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

330 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 345: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

299 Ejercicio 16: Interfase de usuario:Visualización de objetos de RepositoryMIMEDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear elementos de UI del tipo TRAY.� Crear elementos de UI del tipo IMAGE.� Visualizar los archivos gráficos guardados en el Repository MIME.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro con una vista que incluya lavisualización de un archivo gráfico. El archivo gráfico se guarda en el RepositoryMIME.

Modelo: Ninguno

Solución: NET310_UI_S1

Tarea:Cree un componente Web Dynpro. Cree una vista e incrústelo en la ventanaprincipal del componente. En el layout de vista, cree un elemento de UI detipo TRAY y, en la bandeja, un elemento de UI del tipo IMAGE que visualiceel archivo explosion.gif desde la carpeta del Repository MIME SAP→ BC→WebDynpro→ SAP→ PUBLIC→ NET310.

1. Cree un componente Web Dynpro ZNET310_UI1_## con una vistaincrustada en la ventana principal.

2. En la vista, cree un elemento de UI del tipo TRAY (nombre propuesto:TRAY_1) y actualice el texto del título.

3. En el elemento tray, cree un elemento de UI del tipo IMAGE (nombrepropuesto: IMAGE_EXPLOSION) y actualice el origen del elementoIMAGE. La fuente deberá ser el archivo explosion.gif, ubicado en la carpetadel Repository MIME SAP→ BC→ WebDynpro→ SAP→ PUBLIC→NET310.

4. Active su componente. Cree una aplicación Web Dynpro y realice un test.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 331

Page 346: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Solución 16: Interfase de usuario:Visualización de objetos de RepositoryMIMETarea:Cree un componente Web Dynpro. Cree una vista e incrústelo en la ventanaprincipal del componente. En el layout de vista, cree un elemento de UI detipo TRAY y, en la bandeja, un elemento de UI del tipo IMAGE que visualiceel archivo explosion.gif desde la carpeta del Repository MIME SAP→ BC→WebDynpro→ SAP→ PUBLIC→ NET310.

1. Cree un componente Web Dynpro ZNET310_UI1_## con una vistaincrustada en la ventana principal.

a) Realice este paso como antes.

2. En la vista, cree un elemento de UI del tipo TRAY (nombre propuesto:TRAY_1) y actualice el texto del título.

a) Abra el menú contextual de ROOTUIELEMENTCONTAINER yseleccione Insertar elemento.

b) Introduzca el nombre del elemento de UI y seleccione el tipo deelemento TRAY.

c) Actualice el título en la propiedad text del subelemento CAPTION.

3. En el elemento tray, cree un elemento de UI del tipo IMAGE (nombrepropuesto: IMAGE_EXPLOSION) y actualice el origen del elementoIMAGE. La fuente deberá ser el archivo explosion.gif, ubicado en la carpetadel Repository MIME SAP→ BC→ WebDynpro→ SAP→ PUBLIC→NET310.

a) Abra el menú contextual de TRAY_1 y seleccione Insertar elemento.

b) Introduzca el nombre del elemento IMAGE y seleccione el tipo deelemento IMAGE.

c) Abra MIME Repository (seleccione el botónMIME Repository situadoen la parte superior del área de navegación de Workbench ABAP).

d) Abra la carpeta especificada. Arrastre explosion.gif y suéltelo en elelemento de UI IMAGE_EXPLOSION, en la jerarquía de elementosde UI.

4. Active su componente. Cree una aplicación Web Dynpro y realice un test.

a) Realice este paso como en los ejercicios anteriores.

332 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 347: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

301 Ejercicio 17: Interfase de usuario:visualización de tablasDuración del ejercicio: 35 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear una llamada de servicio a un módulo de funciones y vincule los

parámetros al contexto de controlador� Crear un elemento de UI del tipo TABLE para visualizar datos en masa.

Ejemplo empresarialModelo: Ninguno

Solución: NET310_UI_S2

Tarea 1:Cree un componente Web Dynpro con dos vistas (vista de entrada y vista devisualización) incrustadas en la ventana principal.

1. Cree el componente Web Dynpro ZNET310_UI2_## con dos vistas(nombres propuestos: INPUT_VIEW y DISPLAY_VIEW) e incruste lasvistas en la ventana principal.

Tarea 2:Cree una llamada de servicio del módulo de funciones BAPI_FLIGHT_GETLISTen el controlador de componentes. Esto creará un método que encapsulará lallamada BAPI. Además, los parámetros de interfase de BAPI se vincularán alcontexto de controlador de componentes.

1. Cree una llamada de servicio en el controlador de componentes existentepara el módulo de funciones BAPI_FLIGHT_GETLIST.

Cuando se le pida que guarde los parámetros en el contexto del controlador,seleccione DESTINATION_FROM, DESTINATION_TO y FLIGHTLIST.

Cuando se le pida el nombre del método de servicio, acepte el nombre pordefecto (EXECUTE_BAPI_FLIGHT_GETLIST).

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 333

Page 348: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

2. ¿Qué entidades del componente se han creado?

3. ¿Cuáles son las cardinalidades de los nodos DESTINATION_FROM yFLIGHTLIST? ¿Por qué son diferentes?

Tarea 3:En el layout de visualización de entrada, cree un grupo con los campos de entradapara la ciudad de salida y la ciudad de destino. Para vincular los campos deentrada a atributos de contexto de vistas, copie los nodos relevantes del contextode componente en el contexto de la vista de entrada y defina la asignación decontextos.

1. Copie los nodos DESTINATION_FROM y DESTINATION_TO delcontexto de componente al contexto de la vista de entrada y defina laasignación entre los nodos de contexto de los diferentes controladores.

2. En el layout de visualización, utilice el asistente de codificación de WebDynpro para crear un formulario que proporcione un campo de entrada quecorresponda al atributo CITY del nodo de contexto DESTINATION_FROM.El asistente creará también un elemento de UI de grupo que incluirá loscampos de formulario. Ajuste el texto que el elemento de UI CITY_LABELdebe visualizar.

3. Repita el último paso para el atributo CITY del nodo de contextoDESTINATION_TO. Esto también creará un segundo grupo. Ajuste el textoque el elemento de UI CITY_LABEL_1 debe visualizar.

Mueva todas las etiquetas y campos de entrada de uno de los grupos yelimine el segundo grupo.

4. Ajuste las propiedades de los elementos de UI para asegurarse de que loscampos de entrada (con sus etiquetas) se visualizan uno debajo del otro.

Continúa en la página siguiente

334 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 349: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Tarea 4:Copie los nodos relevantes del contexto de componente al contexto de la vistade visualización y asigne los nodos de contexto de los diferentes controladores.Utilice el asistente de codificación de Web Dynpro para crear una tabla quevisualice la información del vuelo en la vista de visualización.

1. Copie el nodo FLIGHTLIST del contexto de componente al contexto de lavista de visualización y asigne los dos nodos.

2. Utilice el asistente de codificación de Web Dynpro para crear unavisualización de tabla con vinculación al nodo de contexto FLIGHTLIST.

Tarea 5:Proporcione un pulsador en cada vista e implemente la navegación entre las dosvistas.

1. Cree una toma de entrada y otra de salida para cada una de las dos vista.

2. Cree enlaces de navegación entre las tomas de las vistas (ambas direcciones).

3. Proporcione un botón en cada una de las vistas. Cree acciones relacionadascon estos pulsadores y asegúrese de que el punto de navegación de salidacorrespondiente se active cuando el usuario seleccione el pulsador.

Tarea 6:Utilice el asistente de codificación Web Dynpro para implementar una llamadadel método de servicio EXECUTE_BAPI_FLIGHT_GETLIST en el programa decontrol de eventos para la toma de entrada de la vista de visualización.

1. En la vista de visualización, implemente el método para gestionar el puntode navegación de entrada (método llamado HANDLE...). Inicie el asistentede codificación de Web Dynpro para implementar una llamada del métodoEXECUTE_BAPI_FLIGHT_GETLIST del controlador de componentes(llamada de método En controlador utilizado).

2. Active su componente. Cree una aplicación Web Dynpro y realice un test.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 335

Page 350: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Solución 17: Interfase de usuario:visualización de tablasTarea 1:Cree un componente Web Dynpro con dos vistas (vista de entrada y vista devisualización) incrustadas en la ventana principal.

1. Cree el componente Web Dynpro ZNET310_UI2_## con dos vistas(nombres propuestos: INPUT_VIEW y DISPLAY_VIEW) e incruste lasvistas en la ventana principal.

a) Realice este paso como en los ejercicios anteriores.

Tarea 2:Cree una llamada de servicio del módulo de funciones BAPI_FLIGHT_GETLISTen el controlador de componentes. Esto creará un método que encapsulará lallamada BAPI. Además, los parámetros de interfase de BAPI se vincularán alcontexto de controlador de componentes.

1. Cree una llamada de servicio en el controlador de componentes existentepara el módulo de funciones BAPI_FLIGHT_GETLIST.

Cuando se le pida que guarde los parámetros en el contexto del controlador,seleccione DESTINATION_FROM, DESTINATION_TO y FLIGHTLIST.

Cuando se le pida el nombre del método de servicio, acepte el nombre pordefecto (EXECUTE_BAPI_FLIGHT_GETLIST).

a) Abra el menú contextual del componente Web Dynpro en el área denavegación de Workbench ABAP (a la izquierda) y seleccione Crear→ Llamada de servicio.

b) Seleccione Continuar para confirmar la primera ventana del asistente.

c) Seleccione Utilizar controlador existente, introduzca el controlador decomponentes de su componente y seleccione Continuar.

d) Seleccione Módulo de funciones y, a continuación, Continuar.

e) En la siguiente pantalla, introduzca el nombre del módulo de funcionesen el campo Módulo de funciones y seleccione Continuar.

f) Verifique los parámetros que se deberán almacenar en el contexto delcontrolador y seleccione Continuar.

g) Introduzca el nombre del método de servicio y una descripción yseleccione Continuar.

Continúa en la página siguiente

336 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 351: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

2. ¿Qué entidades del componente se han creado?

Respuesta:

� El nodo de contexto BAPI_FLIGHT_GETLIST con varios subnodospara los parámetros IMPORTING y TABLES seleccionados delmódulo de funciones

� El método EXECUTE_BAPI_FLIGHT_GETLIST en el controlador decomponentes, que encapsula la llamada del módulo de funciones

3. ¿Cuáles son las cardinalidades de los nodos DESTINATION_FROM yFLIGHTLIST? ¿Por qué son diferentes?

Respuesta:

� DESTINATION_FROM: 1...1� FLIGHTLIST: 0...nEl parámetro DESTINATION_FROM es una estructura. El parámetroFLIGHTLIST es una tabla interna.

Tarea 3:En el layout de visualización de entrada, cree un grupo con los campos de entradapara la ciudad de salida y la ciudad de destino. Para vincular los campos deentrada a atributos de contexto de vistas, copie los nodos relevantes del contextode componente en el contexto de la vista de entrada y defina la asignación decontextos.

1. Copie los nodos DESTINATION_FROM y DESTINATION_TO delcontexto de componente al contexto de la vista de entrada y defina laasignación entre los nodos de contexto de los diferentes controladores.

a) Realice este paso como en los ejercicios anteriores.

2. En el layout de visualización, utilice el asistente de codificación de WebDynpro para crear un formulario que proporcione un campo de entrada quecorresponda al atributo CITY del nodo de contexto DESTINATION_FROM.El asistente creará también un elemento de UI de grupo que incluirá loscampos de formulario. Ajuste el texto que el elemento de UI CITY_LABELdebe visualizar.

a) Realice este paso como en los ejercicios anteriores.

3. Repita el último paso para el atributo CITY del nodo de contextoDESTINATION_TO. Esto también creará un segundo grupo. Ajuste el textoque el elemento de UI CITY_LABEL_1 debe visualizar.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 337

Page 352: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Mueva todas las etiquetas y campos de entrada de uno de los grupos yelimine el segundo grupo.

a) Cree el grupo como anteriormente. Mueva todos los elementos deeste grupo al primer grupo arrastrando y soltándolos en la jerarquíade elementos de UI.

4. Ajuste las propiedades de los elementos de UI para asegurarse de que loscampos de entrada (con sus etiquetas) se visualizan uno debajo del otro.

a) Establezca la propiedad Layout de ROOTUIELEMENTCONTAINERa MatrixLayout.

b) Establezca la propiedad Layoutdata del grupo de elementos de UI enMatrixHeadData.

c) Establezca la propiedad Layoutdata de CITY_LABEL aMatrixHeadData.

d) Establezca la propiedad Layoutdata de CITY_LABEL_1 aMatrixHeadData.

Tarea 4:Copie los nodos relevantes del contexto de componente al contexto de la vistade visualización y asigne los nodos de contexto de los diferentes controladores.Utilice el asistente de codificación de Web Dynpro para crear una tabla quevisualice la información del vuelo en la vista de visualización.

1. Copie el nodo FLIGHTLIST del contexto de componente al contexto de lavista de visualización y asigne los dos nodos.

a) Realice este paso como en los ejercicios anteriores.

2. Utilice el asistente de codificación de Web Dynpro para crear unavisualización de tabla con vinculación al nodo de contexto FLIGHTLIST.

a) Coloque el cursor sobre ROOTUIELEMENTCONTAINER, accioneel pulsador Asistente de codificación Web Dynpro y seleccioneEstándar→ Tabla.

b) Seleccione Contexto y haga doble clic en el nodo de contextoFLIGHTLIST.

c) Acepte el valor por defecto (editor de celdas estándar TextView yasociación para todos los campos) y seleccione .

Continúa en la página siguiente

338 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 353: TAW12_02

TAW12_2 Lección: Definición de la interfase de usuario (UI)

Tarea 5:Proporcione un pulsador en cada vista e implemente la navegación entre las dosvistas.

1. Cree una toma de entrada y otra de salida para cada una de las dos vista.

a) Realice este paso como en los ejercicios anteriores.

2. Cree enlaces de navegación entre las tomas de las vistas (ambas direcciones).

a) Realice este paso como en los ejercicios anteriores.

3. Proporcione un botón en cada una de las vistas. Cree acciones relacionadascon estos pulsadores y asegúrese de que el punto de navegación de salidacorrespondiente se active cuando el usuario seleccione el pulsador.

a) Realice este paso como en los ejercicios anteriores.

Tarea 6:Utilice el asistente de codificación Web Dynpro para implementar una llamadadel método de servicio EXECUTE_BAPI_FLIGHT_GETLIST en el programa decontrol de eventos para la toma de entrada de la vista de visualización.

1. En la vista de visualización, implemente el método para gestionar el puntode navegación de entrada (método llamado HANDLE...). Inicie el asistentede codificación de Web Dynpro para implementar una llamada del métodoEXECUTE_BAPI_FLIGHT_GETLIST del controlador de componentes(llamada de método En controlador utilizado).

a) Abra el método en el editor. Seleccione Asistente de codificación WebDynpro y luego Llamada de método en controlador utilizado.

b) Seleccione el controlador de componentes y el método que se debellamar desde la Ayuda para entradas y seleccione .

2. Active su componente. Cree una aplicación Web Dynpro y realice un test.

a) Realice este paso como en los ejercicios anteriores.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 339

Page 354: TAW12_02

Capítulo 10: Definición de la interfase de usuario (UI) TAW12_2

Resumen de la lección

Ahora podrá:� Definir el layout de las vistas mediante la disposición de los elementos de UI

y el establecimiento de sus propiedades.� Vincular las propiedades de elemento de UI a atributos de contexto.� Usar el elemento de UI de tabla como ejemplo de utilización de elementos de

UI compuestos.

340 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 355: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Definir el layout de las vistas mediante la disposición de los elementos de UI

y el establecimiento de sus propiedades.� Vincular las propiedades de elemento de UI a atributos de contexto.� Usar el elemento de UI de tabla como ejemplo de utilización de elementos de

UI compuestos.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 341

Page 356: TAW12_02

Resumen del capítulo TAW12_2

342 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 357: TAW12_02

Capítulo 11311 Programación de contextos y

controladores

This is the first chapter that deals with the source code of controller methods.ABAP programmers do not usually work with frameworks and they may not befamiliar with the need for using framework methods. In particular, programmersmay not know how to access the controller�s global data (defined in the context),as in the classical ABAP programming context, all data objects are defined usingthe data statement. Here, the data cannot be accessed if the API methods forcontext accesses are not known.

Therefore, point out the advantages of such an approach: For example, codewizards can be used to define the source code, data binding between UI propertiesand context fields requires a standard method for storing data, and data sharing(context mapping) between controllers requires standard data storage.

Resumen del capítuloUno de los puntos fuertes de Web Dynpro es el enfoque declarativo de losmetadatos. Este enfoque le permite definir toda la navegación y la UI estáticaentre los diferentes conjuntos de vistas sin tener que programar código fuente.No obstante, la definición de la lógica de programación y el acceso back endrequiere la programación del código fuente ABAP. El código fuente se defineen los métodos de los controladores personalizados, los controladores de vistaso los controladores de ventanas. En esta unidad se trata la programación decontroladores y se hace énfasis en cómo acceder al contexto del controlador.

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

� Enumerar los métodos de conexión que existen para los diferentes tiposde controlador.

� Explicar en qué orden se procesan estos métodos de conexión.� Crear y llamar sus propios métodos de controlador.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 343

Page 358: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

� Utilizar los atributos de controlador estándar para acceder a las funciones decontrolador, en especial el contexto de controlador.

� Definir sus propios atributos de controlador y usarlos en los métodos decontrolador.

� Acceder al contexto de controlador y leer, borrar, modificar o añadirelementos de la serie.

Contenido del capítuloLección: Programación de contextos y controladores ... . . . . . . . . . . . . . . . . . .345

Ejercicio 18: Acceso al contexto en tiempo de ejecución ... . . . . . . . . . .369Ejercicio 19: Contexto en tiempo de ejecución: asociación de tablasinternas a nodos de contexto .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .375Ejercicio 20: Contexto en tiempo de ejecución: selección de liderazgoy funciones de suministro .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .383

344 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 359: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Lección:312

Programación de contextos y controladoresDuración de la lección: 130 Minutos

Resumen de la lecciónLa definición del código fuente de los controladores requiere entender cómo sedeben usar los métodos predefinidos (métodos de conexión), cuándo y en quéorden se procesan, cómo se pueden crear métodos adicionales definidos por elusuario y cómo se puede acceder a dichos métodos desde el mismo controlador odesde otro. Además, se debe entender también cómo definir eventos, provocarestos eventos y registrar el programa de control de eventos correspondiente.Finalmente, para implementar controladores, es crucial acceder al contexto decontrolador (leer, modificar y eliminar datos almacenados en el controlador). Enesta lección, se tratarán todos estos aspectos detalladamente.

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

� Enumerar los métodos de conexión que existen para los diferentes tiposde controlador.

� Explicar en qué orden se procesan estos métodos de conexión.� Crear y llamar sus propios métodos de controlador.� Utilizar los atributos de controlador estándar para acceder a las funciones de

controlador, en especial el contexto de controlador.� Definir sus propios atributos de controlador y usarlos en los métodos de

controlador.� Acceder al contexto de controlador y leer, borrar, modificar o añadir

elementos de la serie.

References to demos can be found in this lesson.

Ejemplo empresarialHa creado un componente Web Dynpro. Hasta el momento, ha trabajadoexclusivamente en entidades que se pueden definir de manera declarativa. Noobstante, la lógica de proceso (incluido el acceso a la lógica back end) debe serimplementada mediante la definición de código fuente ABAP en métodos decontrolador. Desea saber cómo trabajar con métodos y atributos de controlador.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 345

Page 360: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Métodos de controladorCada controlador Web Dynpro es una clase ABAP separada. La definición deestas clases se genera automáticamente cuando se crea un controlador o uncomponente nuevo. El código fuente que implementa a estos controladores segenera automáticamente. Cada controlador proporciona una serie de métodospredefinidos que el Web Dynpro llama en tiempo de ejecución siguiendo unorden predefinido. Estos métodos se conocen como métodos de conexión. Enel momento de la creación del controlador, estos métodos están vacíos y puedenincluir cualquier codificación que el desarrollador desee colocar en ellos. Ademásde estos métodos de conexión, el desarrollador puede definir métodos adicionales:métodos de instancia, métodos de programa de control de eventos o funcionesde suministro.

Gráfico 190: Métodos de controlador

La clase de controlador se genera cada vez que se activa el controlador a partir detodos los métodos de controlador, métodos de conexión y métodos definidos porel usuario. Workbench ABAP le permite introducir código fuente únicamente enlos métodos de controlador; la clase de controlador generada no está accesible.

346 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 361: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Métodos de conexiónExisten dos métodos de conexión para todos los tipos de controlador:

� wddoinit( ) :

wddoinit( ) es el primer método procesado en la duración del controlador.Sólo se llama una vez en el ciclo de vida del controlador. Todo su código deinicialización deberá ir aquí, ya que este método se llama inmediatamenteuna vez instanciado el controlador.

� wddoexit( ) :

wddoexit( ) es el último método procesado al final del ciclo de vida de uncontrolador. Todo su código de depuración deberá ir aquí.

Gráfico 191: Métodos de conexión estándar para todos los controladores

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 347

Page 362: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

En función del tipo de controlador, hay disponibles métodos de conexiónadicionales. Para el controlador de componentes, existen tres métodos estándaradicionales. Dos de ellos son especialmente importantes:

� wddobeforenavigation()

Cuando se provoca un evento de mandante, el método de accionescorrespondiente se procesa en el controlador de vistas. Se llama al métodowddobeforenavigation( ) después de que se haya procesado el método deacciones y justo antes de que el marco Web Dynpro procese los eventos de lacola de navegación.

� wddopostprocessing()

En aplicaciones Web Dynpro complejas, puede que sea necesario validar losdatos desde varios componentes antes de poder pasar al siguiente paso delproceso empresarial. Este método se ha creado para que se pueda llevar acabo la validación con independencia del componente. Es el último métodode controlador que se procesa antes de enviar la UI al cliente.

Gráfico 192: Métodos de conexión estándar: Controlador de componentes

348 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 363: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Para los controladores de vistas, existen dos métodos de conexión adicionales:

� wddobeforeaction()

Una vez que se ha iniciado la aplicación Web Dynpro y que el usuario haprovocado un evento de mandante, los primeros métodos que se debenprocesar en la aplicación Web Dynpro son los métodos wddobeforeaction() de todos los controladores de vistas del conjunto de vistas renderizadoanteriormente. Esto ocurre incluso antes de que el método de controlador deacciones relacionado con el evento de mandante se procese.

� wddomodifyview( )

El único método que permite el acceso a la jerarquía de elementos de UI esel método wddomodifyview( ) de la vista. El parámetro de interfase VIEWes una referencia a la jerarquía de elementos de UI; se puede utilizar elparámetro FIRST_TIME para averiguar si este método puede procesarseanteriormente en el ciclo de vida del controlador de vistas. Este evento sepuede utilizar para manipular la jerarquía de elementos de UI dinámicamente.

Gráfico 193: Métodos de conexión estándar: Controlador de vista

Here, the phase model for controller processing can be visualized. Here, thefollowing demos should be shown:

NET310_EVEN_D1: Order of hook methods for one view in one window.

NET310_EVEN_D2: Order of hook methods for two views in one window.

NET310_EVEN_D2A: Order of hook methods for two views in one window.The views lifetime is restricted.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 349

Page 364: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

NET310_EVEN_D3: Order of hook methods for three views in one window. Oneview contains two view containers. The other views are embedded in these viewcontainers, so they are displayed in parallel.

Métodos de instancia de controladorPuede crear métodos adicionales para todos los controladores mediante ladeclaración del nombre del método y sus parámetros en la etiqueta Métodosde la ventana del editor de controlador. Para definir un método de instancia,seleccione Tipo de método = Método. Si selecciona Tipo de método = Programade control de eventos, se creará un método de programa de control de eventos.En la columna Evento, el método se puede registrar estáticamente para cadaevento desencadenado en un controlador definido como Controlador usado en laetiqueta Propiedades. Para terminar, se puede definir el tipo de método = funciónde suministro para definir métodos vinculados a nodos de contexto (propiedadFunción de suministro). A estos métodos se les llama automáticamente desde elmarco Web Dynpro si se accede al nodo y éste está marcado como inválido.

Después de hacer doble clic en el nombre del método, se puede definir la firma yel código fuente del método.

Todos los métodos son públicos y los puede utilizar otro controlador del mismocomponente. Como condición previa, el controlador que llama al método debedefinir una relación de utilización con el controlador al que pertenecen losmétodos. El código fuente ABAP para llamar a un método en el controladorutilizado puede generarse mediante el asistente de codificación Web Dynpro.

Si el indicador Interfase está establecido para un método definido por el usuario,este método aparecerá en la interfase del componente, de modo que el métodoesté visible para otros componentes.

350 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 365: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Gráfico 194: Métodos de instancia de controlador

Your component: Create a new method in the custom controller. Define thiscontroller to be a used controller for one of your view controllers. Call the customcontroller method from this view controller. Look at source code.

Atributos de controladorCada controlador es un programa ABAP independiente, que no tiene únicamentemétodos predefinidos y definidos por el usuario, sino también atributos visiblescomo mínimo para cada método del controlador.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 351

Page 366: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Atributos estándarDespués de haber definido un controlador, como mínimo se predefinen dosatributos. Estos atributos están visibles sólo para los métodos de controlador. Losatributos estándar son:

� WD_THIS

WD_THIS es una autoreferencia a la interfase del controlador. Este atributodebe distinguirse de la autoreferencia ABAP estándar ME, que no deberáutilizarse en el código fuente de ningún controlador. WD_THIS es unareferencia a la interfase del controlador actual, IF_<nombre de controlador>,y representa todas las funciones implementadas en la clase generada.También le da acceso a funciones Web Dynpro estándar, como la validación.

� WD_CONTEXT

WD_CONTEXT es una referencia al nodo raíz de contexto del controlador y,por consiguiente, a todo el contexto. Todo acceso al contexto del controladorse inicia con esta referencia.

Gráfico 195: Atributos de controlador estándar WD_CONTEXT y WD_THIS

Si el controlador de componentes se declara como controlador utilizado en la fichaPropiedades de cualquier otro controlador, se creará automáticamente un atributoadicional para el controlador que ha declarado la utilización:

� WD_COMP_CONTROLLER

WD_COMP_CONTROLLER es la referencia al controlador decomponentes. Mediante esta referencia podrá acceder a todoslos métodos y atributos públicos del controlador de componentes(wd_comp_controller-><meth>, siendo <meth> un reserva-espaciopara el nombre del método).

352 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 367: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Create an instance method in the component controller and call this method fromthe view controller. Look at source code. Compare with the coding to call thecustom controller method (for the component controller method, the shortcutvariable WD_COMP_CONTROLLER is used).

Gráfico 196: Atributo de controlador estándar WD_COMP_CONTROLLER

Esta referencia no está disponible para todos los demás controladores, incluso siestán declarados como controladores utilizados. No obstante, esto no significaque los métodos definidos por el usuario y los atributos públicos no esténdisponibles, sino que primero debe evaluarse la referencia. Para tener la referenciaal controlador <ctrl> definida como controlador utilizado, se debe utilizar lasiguiente sentencia ABAP:

DATA: r_ctrl TYPE REF TO ig_<ctrl> .r_ctrl = wd_this->get_<ctrl>_ctr( ).

Atributos definidos por el usuarioEn la ficha Atributos, pueden definirse los atributos adicionales para el controladorrelacionado. Si la visibilidad está establecida como Pública, estos atributostambién estarán visibles para los demás controladores del mismo componente WebDynpro. Los atributos no se pueden mostrar en la interfase de componentes.

Para acceder a los atributos de controlador públicos de uno de los métodos delcontrolador, se debe utilizar la variable de autoreferencia WD_THIS. El accesoa los atributos públicos definidos en otros controladores del mismo componentese implementa de manera similar al acceso a métodos definidos en otroscontroladores.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 353

Page 368: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Gráfico 197: Métodos de controlador y atributos de controlador definidospor el usuario

Your component: In the component controller, create two attributes (one public,one private). Access these attributes from any method of the componentcontroller. Try to access these attributes from any method of the view controller(WD_COMP_CONTROLLER-><attribute>). Result: Result: Only the publicattribute can be used by another controller.

Acceso a los nodos de contexto y elementos de nodoen tiempo de ejecuciónEn la última sección, vimos que podíamos utilizar atributos de controlador paraproporcionar objetos de datos que son visibles a través del controlador. Noobstante, no se pueden asociar propiedades de elementos de UI a estos atributos decontrolador. Las propiedades de elementos de UI sólo se pueden asociar a variablesdefinidas en el contexto de controlador. Este almacenamiento de datos jerárquicotambién es preferible si la información debe compartirse entre controladores.

El acceso al contexto de controlador en tiempo de ejecución requiere elconocimiento de los métodos Web Dynpro apropiados. Esta sección trata de cómoleer, modificar, añadir o eliminar la información almacenada en el contexto decontrolador.

Acceso al nodo de contextoPara acceder a un elemento de contexto o a un atributo de contexto, primeronecesita una referencia al nodo de contexto relacionado.

354 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 369: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Gráfico 198: Acceso al nodo de contexto

La siguiente información es muy importante:

� Para cada controlador (<ctrl>), se genera una interfase con el nombreIF_<ctrl>.

� Para cada nodo <nodo> de un contexto de controlador se genera unaconstante (WDCTX_<nodo>) en esta interfase. Se llama igual que el nodo(en mayúsculas) y usa este nombre como valor. Esta constante puedeutilizarse para acceder al nodo de contexto.

Se puede acceder al nodo raíz de contexto mediante el atributo estándarWD_CONTEXT. Los nodos subordinados del nodo raíz de contexto se puedendeterminar mediante el método get_child_node( ). Este método devuelve unareferencia a la instancia de nodo de tipo IF_WD_CONTEXT_NODE. El métodoget_child_node( ) requiere el nombre del nodo y, opcionalmente, del índice delelemento del nodo superior al que pertenece la instancia de nodo deseada. En estecaso, el nodo superior es la raíz de contexto, que siempre tiene un solo elemento.Por consiguiente, el parámetro de índice es 1 (valor por defecto = selección delead del elemento superior).

Acceso a un elemento de nodoDespués de acceder a un nodo de contexto, la referencia al elemento durantela selección de lead de este modo se puede conseguir llamando el métodoget_element( ). Este método devuelve una referencia a la instancia de nodo detipo IF_WD_CONTEXT_ELEMENT.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 355

Page 370: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Gráfico 199: Acceso al elemento de nodo de la selección de lead

Se puede acceder al elemento con el índice n mediante el método get_element(index = n ). El número de elementos de una serie se puede obtener a partir delmétodo get_element_count( )

Conclusión

Resumen: acceso a nodos de contexto y elementos de nodoAcción Método

Referencia al nodo<nodo> de uncontrolador <ctrl>

r_node =wd_context->get_child_node(

name = if_<ctrl>=>wdctx_<node> ).

Referencia a unelemento de laselección de lead

r_element =r_node->get_element( ).

Referencia al elementocon el índice n

r_element =r_node->get_element( index = n ).

Obtener el número deelementos de una serie

n =r_node->get_element_count( ).

356 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 371: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Your component: in your component controller, method DOINIT, access theelement at lead selection of any of your nodes. Use the code wizard to accessattributes, but only show the coding discussed up to now. Check what happensif the node�s cardinality is 0..<something> and no elements have been added tothe collection yet (Result: get_element( ) will return an initial element reference;this should be handled).

Lectura y modificación de valores de atributoEl marco Web Dynpro ofrece una variedad de métodos para acceder a los atributosde un elemento de nodo o para acceder a los atributos de todos los elementos deun nodo de contexto.

Acceso a los atributos de un elemento de nodo individualUna vez obtenida la referencia a un elemento de nodo, existen dos maneras deobtener los valores de atributo de este elemento:

1. Se puede acceder a cualquier atributo de un elemento de nodo mediante elmétodo get_attribute( ). Aquí se debe exportar el nombre del atributo y elvalor de atributo se devolverá en un parámetro de importación.

2. Los atributos definidos estáticamente se pueden obtener llamando al métodoget_static_attributes( ). De este modo se devuelve una estructura en unparámetro de importación. La estructura de destino puede ser diferente dela estructura de nodo. Esto es posible porque los campos de estructura secopian de manera individual en la estructura de destino.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 357

Page 372: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Gráfico 200: Acceso a un atributo individual de un elemento de nodo

Gráfico 201: Acceso a todos los atributos definidos estáticamente de unelemento de nodo

358 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 373: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Your component: Use the code wizard to generate coding to read a single attributeor all static attributes of a node element at lead selection.

La siguiente información es importante en este contexto:

� Para cada nodo <nodo> de un contexto de controlador, se genera de maneraimplícita un tipo de estructura element_<nodo> en la interfaz IF_<ctrl>.Los campos de estructura corresponden a los atributos que componen unelemento de nodo. Este tipo de datos se puede utilizar para tipificar unavariable, que los métodos enumerados anteriormente completan con datos.

� Además, para cada nodo <nodo> de un contexto de controlador, se generade manera implícita un tipo de tabla estándar element_<nodo> en la interfazIF_<ctrl>. El tipo de línea de esta tabla es element_<nodo>. Este tipo dedatos se puede utilizar para tipificar una tabla interna que pueda incluir losatributos de varios elementos de nodo.

Acceso a los atributos de todos los elementos de nodo

Gráfico 202: Acceso a los atributos estáticos de todos los elementos denodo

El método get_static_attributes_table( ) se puede utilizar para recuperar losatributos de todos los elementos como tabla interna.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 359

Page 374: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Your component: You have created a service call to bind mass data to a relatedcontext node. After calling the service method, you could read the mass data fromthe context, using the get_static_attributes_table() method.

Modificación de los valores de atributo de un elemento de nodoUna vez determinada la referencia a un elemento de nodo específico, podrá nosólo leer los valores de atributo mediante los métodos getter apropiados, sinotambién modificar los valores de atributo existentes llamando los métodos setterrelacionados.

El método set_attribute( ) se puede utilizar para modificar el valor de cualquieratributo del elemento de nodo. Se pueden modificar varios atributos si estándefinidos estáticamente mediante el método set_static_attributes( ).

Gráfico 203: Modificación de un atributo individual de un elemento de nodo

360 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 375: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Gráfico 204: Modificación de varios atributos de un elemento de nodo

Conclusión

Resumen: Acceso a atributos en el nodo <nodo> del controlador<ctrl> y modificación

Acción MétodoLeer el valor delatributo <atr>

DATA:v_value TYPEif_<ctrl>=>wdctx_element_<node>-<attr>.

r_element->get_attribute(EXPORTING

name = ’<attr>’IMPORTING

value = v_value ).

Leer el valor devarios atributosestáticos

DATA:s_struc TYPEif_<ctrl>=>wdctx_element_<node>.

ref_element->get_static_attributes(IMPORTING

static_attributes = s_struc ).

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 361

Page 376: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Acción MétodoLeer los valores deatributo estáticospara todos loselementos de nodo

DATA:t_tab TYPEif_<ctrl>=>wdctx_elements_<node>.

ref_node->get_static_attributes_table(IMPORTING

table = t_tab ).

Modificar el valorv_value de unatributo <atr>individual

ref_element->set_attribute(EXPORTING

name = ’<attr>’value = v_value ).

Modificación devarios atributos deun elemento de nodo

DATA:s_struc TYPEif_<ctrt>=>wdctx_element_<node>.

s_struc-<attr1> = ......ref_element->set_static_attributes(

EXPORTINGstatic_attributes = s_struc ).

Exercise �Accessing the Context at Runtime�

Adición de elementos nuevos a un nodo de contextoHasta ahora hemos hablado de la lectura y la modificación de datos yaalmacenados en el contexto de controlador. Ahora aprenderemos a añadirelementos nuevos a un nodo de contexto.

La adición de un elemento nuevo a un nodo se realiza en dos pasos. El primerpaso es crear un elemento que se pueda añadir más tarde a un nodo de contextoespecífico. Una vez definidos los valores de atributo, el nuevo elemento se puedeañadir al nodo de contexto. Es similar al proceso de adición de una línea nuevaa una tabla interna. El primer paso es definir los valores de celda de un área detrabajo que tenga el tipo de línea correcto, y el segundo paso es insertar el área detrabajo en una tabla interna.

Creación de un elemento de nodo nuevoPara crear un elemento que se pueda añadir a un nodo de contexto, primero hay quedeterminar la referencia a dicho nodo. Para ello se usa el método get_child_node() del atributo estándar WD_CONTEXT, que señala al nodo raíz de contexto.

362 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 377: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Gráfico 205: Determinación de la referencia a un nodo de contexto

Una vez determinada esta referencia, se utiliza el método create_element( ) paracrear el elemento nuevo. Se pueden enviar los valores iniciales para los atributosestáticos mediante el parámetro static_attribute_values o se pueden definir losvalores de atributo mediante los métodos de establecimiento set_attribute( ) oset_static_attributes( ).

Atención: El elemento nuevo todavía no forma parte del nodo decontexto.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 363

Page 378: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Gráfico 206: Creación de un elemento de nodo nuevo

Gráfico 207: Establecimiento de los valores de atributo del elemento nuevo

364 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 379: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Adición de elementos a un nodo de contextoPara terminar, se puede añadir al nodo un elemento que aún no forme partedel nodo de contexto mediante el método bind_element( ), que se refiere a lareferencia del nodo. Este método tiene dos parámetros de importación:

� La referencia de elemento se envía mediante el parámetro new_item.� El parámetro set_initial_elements define si el elemento nuevo se añade

simplemente a la serie de elementos (valor = abap_false) o sustituye a todoslos elementos existentes de la serie (valor = abap_true).

Gráfico 208: Vinculación de un elemento a un nodo de contexto

Your component: On your first view, you have some input fields bound to contextattributes. Change the cardinality of the related context node to 0..1. Start theapplication. The application terminates.

In the WDDOINIT method of this view, create a context element, set the contextattributes displayed in the layout and add the element to the collection. Startthe application again. Input fields are ready for input and attribute values aredisplayed.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 365

Page 380: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Asociación de una estructura a un nodo de contextoEn los programas ABAP, los registros de datos se tratan como estructuras. Noobstante, para visualizar los elementos de estructura en la UI, el contenido de laestructura debe copiarse en un elemento de contexto. Esto significa que debedefinirse un elemento nuevo, deben establecerse los valores de atributo, y esteelemento debe vincularse al nodo de contexto adecuado.

Existe una manera más fácil de copiar el contenido de la estructura como elementonuevo en el nodo de contexto. En lugar de utilizar el método bind_element( ) yde enviar la referencia del elemento, puede utilizar el método bind_structure( )con el parámetro new_item para enviar la estructura. Al igual que en el métodobind_element( ), la serie existente se puede ampliar o sustituir (parámetroset_initial_elements).

Gráfico 209: Asociación de una estructura a un nodo de contexto

Asociación de una tabla interna a un nodo de contextoEn los programas ABAP, si varios registros de datos tienen la misma estructura,son tratados como tablas internas. No obstante, para poder visualizar los conjuntosde datos en la UI, el contenido de tabla interna se debe copiar en tantos elementosde contexto como líneas haya en la tabla interna.

La mejor forma de hacerlo es utilizar el método bind_table( ). La tabla internase envía mediante el parámetro new_items. La serie existente se puede ampliar osustituir (parámetro set_initial_elements).

366 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 381: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Gráfico 210: Asociación de una tabla interna a un nodo de contexto

Here, you should show demo NET310_UI_D5. Here, the source code of thesupply function is of interest. The reference to the node to be altered by the supplyfunction is available using the interface parameter NODE and the reference tothe element at lead selection in the parent collection is provided by the interfaceparameter PARENT_ELEMENT. Only data retrieval has to be implemented. Youcan also implement a supply function for any node of your component controllercontext.

Eliminación de elementos de un nodo de contextoPara eliminar un elemento de una serie, llame el método remove_element( ). Lareferencia al elemento debe enviarse mediante el parámetro elemento.

Two demos can be shown:

NET310_CONR_D1: The following method calls can be discussed whiledebugging the source code of this demo:

node->get_element(), node->create_element(), node->bind_element(),node->get_lead_selection(), node->get_element_count(), node->bind_structure(),element->set_static_attributes() and element->set_attribute().

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 367

Page 382: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

NET310_CONR_D2: In addition, the method call node->remove_element() isused in this demo.

Conclusión

Resumen: Adición de elementos a / Eliminación de elementos deun nodo de contexto

Acción MétodoCree un nuevoelemento

r_element = r_node->create_element( ).

Añadir el elementoa la serie

r_node->bind_element(new_item = r_elementset_initial_elements = abap_false

).

Vincular laestructura s_struc ala serie

DATA:s_struc TYPE

if_<ctrt>=>wdctx_element_<node>....r_node->bind_structure(

new_item = s_strucset_initial_elements = abap_false

).

Vincular la tablainterna t_tab a laserie

DATA:t_tab TYPE

if_<ctrt>=>wdctx_elements_<node>....r_node->bind_table(

new_items = t_tabset_initial_elements = abap_false

).

Eliminar elelemento de la serie

r_node->remove_element(element = r_element ).

Exercises �Binding Internal Tables to Context Nodes� and �Lead Selectionand Supply Functions�

368 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 383: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

333 Ejercicio 18: Acceso al contexto en tiempode ejecuciónDuración del ejercicio: 15 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Establecer el valor de los atributos de nodo de contexto dinámicamente.� Establecer los valores por defecto para campos de entrada dinámicamente.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro en la que los campos de entrada dela primera vista se rellenan con valores por defecto en tiempo de ejecución.

Modelo: NET310_COND_S

Solución: NET310_CONR_S1 / NET310_CONR_S1_OPT

Tarea 1:Copie su componente Web Dynpro ZNET310_COND_## o el modeloNET310_COND_S en el componente Web Dynpro ZNET310_CONR1_##.

Modifique el layout de ambas vistas y asegúrese de que los dos campos de entrada(con sus etiquetas) y los pulsadores estén unos debajo de los otros.

1. Copie el modelo.

2. Modifique el layout de las vistas.

Tarea 2:Haga de AA el valor por defecto del campo CARRID antes de que se visualice lavista de entrada.

1. Implemente el método WDDOINIT del controlador de vistas. Utilice elasistente de codificación de Web Dynpro para leer el nodo de contextoFLIGHTINFO.

2. Sustituya la última llamada de método (método get_static_attributes) poruna llamada de un método de elemento de contexto para establecer el valordel atributo CARRID en AA.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 369

Page 384: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Tarea 3: (Opcional)Establezca valores por defecto para todos los campos de entrada antes de que sevisualice la vista. Utilice una estructura y una llamada de método individual enlugar de establecer los valores por defecto uno a uno.

1. Convierta la última llamada de método en un comentario. Sustitúyala dela siguiente manera:

Complete la estructura stru_flightinfo con valores por defecto y llame unmétodo del elemento de contexto para establecer todos los atributos en unsolo paso.

370 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 385: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Solución 18: Acceso al contexto entiempo de ejecuciónTarea 1:Copie su componente Web Dynpro ZNET310_COND_## o el modeloNET310_COND_S en el componente Web Dynpro ZNET310_CONR1_##.

Modifique el layout de ambas vistas y asegúrese de que los dos campos de entrada(con sus etiquetas) y los pulsadores estén unos debajo de los otros.

1. Copie el modelo.

a) Realice este paso como en los ejercicios anteriores.

2. Modifique el layout de las vistas.

a) Modifique la propiedad Layout de ROOTUIELEMENTCONTAINERa MatrixLayout.

b) Modifique la propiedad Layout del grupo a MatrixLayout.

c) Establezca la propiedad Layoutdata del grupo, las etiquetas y lospulsadores en MatrixHeadData.

Tarea 2:Haga de AA el valor por defecto del campo CARRID antes de que se visualice lavista de entrada.

1. Implemente el método WDDOINIT del controlador de vistas. Utilice elasistente de codificación de Web Dynpro para leer el nodo de contextoFLIGHTINFO.

a) Accione el pulsador Asistente de codificación Web Dynpro.

b) Seleccione Leer atributo/nodo de contexto y utilice la Ayuda paraentradas para seleccionar el nodo de contexto.

2. Sustituya la última llamada de método (método get_static_attributes) poruna llamada de un método de elemento de contexto para establecer el valordel atributo CARRID en AA.

a) Consulte la muestra de código fuente de la solución modelo enResultado.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 371

Page 386: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Tarea 3: (Opcional)Establezca valores por defecto para todos los campos de entrada antes de que sevisualice la vista. Utilice una estructura y una llamada de método individual enlugar de establecer los valores por defecto uno a uno.

1. Convierta la última llamada de método en un comentario. Sustitúyala dela siguiente manera:

Complete la estructura stru_flightinfo con valores por defecto y llame unmétodo del elemento de contexto para establecer todos los atributos en unsolo paso.

a) Consulte la muestra de código fuente de la solución modelo.

Resultado

Solución modelo: NET310_CONR_S1.

METHOD wddoinit .

DATA:

node_flightinfo TYPE REF TO if_wd_context_node,

elem_flightinfo TYPE REF TO if_wd_context_element.

* navigate from <CONTEXT> to <FLIGHTINFO> via lead selection

node_flightinfo = wd_context->get_child_node(

name = if_input_view=>wdctx_flightinfo ).

* get element via lead selection

elem_flightinfo = node_flightinfo->get_element( ).

* set single attribute

elem_flightinfo->set_attribute(

EXPORTING

name = ’CARRID’

value = ’AA’ ).

ENDMETHOD.

Solución modelo: NET310_CONR_S1_OPT

METHOD wddoinit .

Continúa en la página siguiente

372 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 387: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

DATA:

node_flightinfo TYPE REF TO if_wd_context_node,

elem_flightinfo TYPE REF TO if_wd_context_element,

stru_flightinfo TYPE if_input_view=>element_flightinfo .

* navigate from CONTEXT to FLIGHTINFO via lead selection

node_flightinfo = wd_context->get_child_node( name = ‘FLIGHTINFO‘ ).

* get element via lead selection

elem_flightinfo = node_flightinfo->get_element( ).

* set all declared attributes

stru_flightinfo-carrid = ’AA’.

stru_flightinfo-connid = ’0400’.

elem_flightinfo->set_static_attributes(

exporting

static_attributes = stru_flightinfo ).

ENDMETHOD.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 373

Page 388: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

374 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 389: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

339 Ejercicio 19: Contexto en tiempo deejecución: asociación de tablas internas anodos de contextoDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Vincular tablas internas a nodos de contexto en tiempo de ejecución.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro en la que el usuario pueda introducircriterios de selección en la primera vista. Después de que el usuario seleccione unpulsador, se seleccionarán los datos y el sistema navegará a una segunda vista, enla que los datos seleccionados se visualizarán como una tabla.

Modelo: NET310_CONR_S1_OPT

Solución: NET310_CONR_S2

Tarea 1:Copie su componente Web Dynpro ZNET310_CONR1_## o elmodelo NET310_CONR_S1_OPT en el componente Web DynproZNET310_CONR2_##.

En el contexto de componente, cree un nuevo nodo de contexto para almacenarsets de datos leídos desde la tabla de base de datos SFLIGHT.

1. Copie el modelo.

2. En el contexto de componente, cree un nuevo nodo de contexto (nombrepropuesto: FLIGHTTAB) con referencia a la estructura de DictionaryABAP SFLIGHT y la cardinalidad 0...n.

El nodo deberá contener los siguientes atributos: CARRID, CONNID,FLDATE, PLANETYPE, SEATSMAX y SEATSOCC.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 375

Page 390: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Tarea 2:Copie el nuevo nodo de contexto en el contexto de la vista OUTPUT_VIEW yasigne los nodos de contexto de los diferentes controladores. Amplíe el layout dela vista para visualizar los datos de la tabla.

1. Copie el nodo de contexto de componente FLIGHTTAB en el contexto de lavista OUTPUT_VIEW. Asigne el nodo del contexto de controlador de vistasal nodo del contexto de controlador de componentes.

2. Utilice el asistente de codificación Web Dynpro para crear una visualizaciónde tabla con vinculación al nodo de contexto FLIGHTTAB.

Tarea 3:Cree un método en el controlador de componentes en el que pueda seleccionarvuelos desde la tabla de base de datos SFLIGHT y almacenarlos en una tabla interna.Utilice el método estático CL_NET310_FLIGHTMODEL=>READ_FLIGHTS()para leer los datos. Almacene el resultado en el nodo de contexto FLIGHTTAB.

1. Cree un método nuevo en el controlador de componentes (nombre propuesto:FLIGHTTAB_FILL).

2. Utilice el asistente de codificación de Web Dynpro para leer el nodo decontexto FLIGHTINFO.

3. Cree una tabla interna (nombre propuesto: IT_FLIGHTTAB) del tipode tabla if_componentcontroller=>elements_flighttab. Utilice el métodoestático CL_NET310_FLIGHTMODEL=>READ_FLIGHTS() pararellenar la tabla interna (parámetro de exportación e_flights). UtiliceCARRID y CONNID del nodo de contexto FLIGHTINFO para limitar laselección de datos.

4. Utilice el asistente de codificación de Web Dynpro para leer el nodode contexto FLIGHTTAB después de llamar el método estáticoCL_NET310_FLIGHTMODEL=>READ_FLIGHTS(). Como no desealeer datos desde el contexto sino almacenar datos allí, elimine todas lasllamadas de método creadas por el asistente a excepción de la primera(método GET_CHILD_NODE).

5. Llame el método BIND_TABLE del nodo de contexto FLIGHTTAB paraalmacenar el contenido de la tabla interna en el nodo de contexto.

Continúa en la página siguiente

376 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 391: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Tarea 4:Asegúrese de que su nuevo método de controlador de componentes se ejecutadespués de la navegación, inmediatamente antes de que se visualice la vista desalida.

1. Trate el método HANDLEFROM_INPUT_VIEW del controlador de vistasOUTPUT_VIEW y utilice el asistente de codificación de Web Dynpro paraimplementar una llamada del método de controlador de componentes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 377

Page 392: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Solución 19: Contexto en tiempo deejecución: asociación de tablas internas anodos de contextoTarea 1:Copie su componente Web Dynpro ZNET310_CONR1_## o elmodelo NET310_CONR_S1_OPT en el componente Web DynproZNET310_CONR2_##.

En el contexto de componente, cree un nuevo nodo de contexto para almacenarsets de datos leídos desde la tabla de base de datos SFLIGHT.

1. Copie el modelo.

a) Realice este paso como en los ejercicios anteriores.

2. En el contexto de componente, cree un nuevo nodo de contexto (nombrepropuesto: FLIGHTTAB) con referencia a la estructura de DictionaryABAP SFLIGHT y la cardinalidad 0...n.

El nodo deberá contener los siguientes atributos: CARRID, CONNID,FLDATE, PLANETYPE, SEATSMAX y SEATSOCC.

a) Realice este paso como en los ejercicios anteriores.

Tarea 2:Copie el nuevo nodo de contexto en el contexto de la vista OUTPUT_VIEW yasigne los nodos de contexto de los diferentes controladores. Amplíe el layout dela vista para visualizar los datos de la tabla.

1. Copie el nodo de contexto de componente FLIGHTTAB en el contexto de lavista OUTPUT_VIEW. Asigne el nodo del contexto de controlador de vistasal nodo del contexto de controlador de componentes.

a) Realice este paso como en los ejercicios anteriores.

2. Utilice el asistente de codificación Web Dynpro para crear una visualizaciónde tabla con vinculación al nodo de contexto FLIGHTTAB.

a) Realice este paso como en los ejercicios anteriores.

Continúa en la página siguiente

378 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 393: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Tarea 3:Cree un método en el controlador de componentes en el que pueda seleccionarvuelos desde la tabla de base de datos SFLIGHT y almacenarlos en una tabla interna.Utilice el método estático CL_NET310_FLIGHTMODEL=>READ_FLIGHTS()para leer los datos. Almacene el resultado en el nodo de contexto FLIGHTTAB.

1. Cree un método nuevo en el controlador de componentes (nombre propuesto:FLIGHTTAB_FILL).

a) En el controlador de componentes, seleccione la ficha Métodos,introduzca el nombre del método y haga doble clic.

2. Utilice el asistente de codificación de Web Dynpro para leer el nodo decontexto FLIGHTINFO.

a) Realice este paso como en los ejercicios anteriores.

3. Cree una tabla interna (nombre propuesto: IT_FLIGHTTAB) del tipode tabla if_componentcontroller=>elements_flighttab. Utilice el métodoestático CL_NET310_FLIGHTMODEL=>READ_FLIGHTS() pararellenar la tabla interna (parámetro de exportación e_flights). UtiliceCARRID y CONNID del nodo de contexto FLIGHTINFO para limitar laselección de datos.

a) Consulte el código fuente de la solución modelo.

4. Utilice el asistente de codificación de Web Dynpro para leer el nodode contexto FLIGHTTAB después de llamar el método estáticoCL_NET310_FLIGHTMODEL=>READ_FLIGHTS(). Como no desealeer datos desde el contexto sino almacenar datos allí, elimine todas lasllamadas de método creadas por el asistente a excepción de la primera(método GET_CHILD_NODE).

a) Consulte el código fuente de la solución modelo.

5. Llame el método BIND_TABLE del nodo de contexto FLIGHTTAB paraalmacenar el contenido de la tabla interna en el nodo de contexto.

a) Consulte el código fuente de la solución modelo.

Tarea 4:Asegúrese de que su nuevo método de controlador de componentes se ejecutadespués de la navegación, inmediatamente antes de que se visualice la vista desalida.

1. Trate el método HANDLEFROM_INPUT_VIEW del controlador de vistasOUTPUT_VIEW y utilice el asistente de codificación de Web Dynpro paraimplementar una llamada del método de controlador de componentes.

a) Abra el método HANDLEFROM_INPUT_VIEW.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 379

Page 394: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

b) Seleccione Asistente de codificación de Web Dynpro.

c) Seleccione Llamada de método en controlador utilizado.

d) Seleccione el controlador de componentes e introduzca el nombredel método.

Resultado

Solución modelo: NET310_CONR_S2, MétodoFLIGTHTAB_FILL

METHOD flighttab_fill .

DATA:

node_flightinfo TYPE REF TO if_wd_context_node,

elem_flightinfo TYPE REF TO if_wd_context_element,

stru_flightinfo TYPE if_componentcontroller=>element_flightinfo.

* navigate from <CONTEXT> to <FLIGHTINFO> via lead selection

node_flightinfo = wd_context->get_child_node( name = ‘FLIGHTINFO‘ ).

* get element via lead selection

elem_flightinfo = node_flightinfo->get_element( ).

* get all declared attributes

elem_flightinfo->get_static_attributes(

IMPORTING

static_attributes = stru_flightinfo ).

DATA:

node_flighttab TYPE REF TO if_wd_context_node,

it_flighttab TYPE if_componentcontroller=>elements_flighttab.

* read all flights related to CARRID and CONNID entered by user

* if carrid or/and connid are initial, all carriers/connection numbers

* are read

CALL METHOD cl_net310_flightmodel=>read_flights

EXPORTING

i_carrid = stru_flightinfo-carrid

i_connid = stru_flightinfo-connid

IMPORTING

e_flights = it_flighttab.

Continúa en la página siguiente

380 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 395: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

* navigate from <CONTEXT> to <FLIGHTTAB> via lead selection

node_flighttab = wd_context->get_child_node( name = ‘FLIGHTTAB‘ ).

* bind table to context node <FLIGHTTAB>

CALL METHOD node_flighttab->bind_table

EXPORTING

new_items = it_flighttab.

ENDMETHOD.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 381

Page 396: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

382 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 397: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

345 Ejercicio 20: Contexto en tiempo deejecución: selección de liderazgo yfunciones de suministroDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Utilizar funciones de suministro para completar los nodos de contexto con

datos.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro con una vista que visualice dostablas: una lista de vuelos y una lista de reservas. Los datos visualizados enla segunda tabla deberán depender de la fila seleccionada en la primera tabla.Desea utilizar una función de suministro para asegurarse de que los datos de lasegunda tabla se modificarán cuando el usuario seleccione una fila diferente enla primera tabla.

Modelo: NET310_CONR_S2

Solución: NET310_CONR_S3

Tarea 1:Copie su componente Web Dynpro ZNET310_CONR2_# o el modeloNET310_CONR_S2 en el componente Web Dynpro ZNET310_CONR3_##.

En el contexto de componente, cree un nuevo nodo de contexto como subnododel nodo FLIGHTTAB para almacenar datos de un conjunto de reservas leídasdesde la tabla de base de datos SBOOK.

1. Copie el modelo.

2. En el contexto de componente, cree un subnodo del nodo de contextoFLIGHTTAB (nombre propuesto: BOOKINGTAB) con referencia a laestructura de Dictionary ABAP SBOOK y establezca la cardinalidad en 0...n.

El nodo deberá contener los siguientes atributos: BOOKID, CUSTOMID,CUSTTYPE, LUGGWEIGHT, WUNIT, CLASS y PASSNAME.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 383

Page 398: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Tarea 2:Asegúrese de que el nodo de contexto BOOKINGTAB también existe en la vistaOUTPUT_VIEW y de que este nodo está asignado al nodo BOOKINGTABdel contexto de controlador de componentes. Amplíe el layout de la vista paravisualizar las reservas en una segunda tabla debajo de la tabla de vuelos.

1. Actualice la asignación para el nodo de contexto FLIGHTTAB en el contextode vista OUTPUT_VIEW.

Consejo: Aquí debe utilizar las funciones de actualización. No esposible asignar subnodos directamente arrastrándolos y soltándolos.

2. Utilice el asistente de codificación de Web Dynpro para crear unavisualización de tabla con vinculación al nodo de contexto BOOKINGTAB.

Tarea 3:Cree e implemente una función de suministro para completar el subnodoBOOKINGTAB con datos de acuerdo con la selección de lead del nodoFLIGHTTAB.

1. En el contexto de componente, asigne una función de suministro al subnodoBOOKINGTAB (nombre propuesto: BOOKINGS_READ) y créeloutilizando la navegación hacia adelante.

2. Quite los signos de comentario de la codificación generada (declaración dedatos y llamada de método BIND_TABLE para el subnodo BOOKINGTAB).

3. Declare una estructura en la que los componentes se correspondan con losatributos del nodo superior (nombre propuesto: STRU_FLIGHTTAB).

Consejo: Quizás desee copiar la declaración de este tipo deestructura del método FLIGHTTAB_FILL.

4. Utilice el método estático CL_NET310_FLIGHT-MODEL=>READ_BOOKINGS() para completar la tablainterna ITAB_BOOKINGTAB antes de vincularla al subnodoBOOKINGTAB. Utilice los atributos CARRID, CONNID y FLDATE delnodo superior para limitar la selección de datos.

384 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 399: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

Solución 20: Contexto en tiempo deejecución: selección de liderazgo yfunciones de suministroTarea 1:Copie su componente Web Dynpro ZNET310_CONR2_# o el modeloNET310_CONR_S2 en el componente Web Dynpro ZNET310_CONR3_##.

En el contexto de componente, cree un nuevo nodo de contexto como subnododel nodo FLIGHTTAB para almacenar datos de un conjunto de reservas leídasdesde la tabla de base de datos SBOOK.

1. Copie el modelo.

a) Realice este paso como en los ejercicios anteriores.

2. En el contexto de componente, cree un subnodo del nodo de contextoFLIGHTTAB (nombre propuesto: BOOKINGTAB) con referencia a laestructura de Dictionary ABAP SBOOK y establezca la cardinalidad en 0...n.

El nodo deberá contener los siguientes atributos: BOOKID, CUSTOMID,CUSTTYPE, LUGGWEIGHT, WUNIT, CLASS y PASSNAME.

a) Realice este paso como en los ejercicios anteriores.

Tarea 2:Asegúrese de que el nodo de contexto BOOKINGTAB también existe en la vistaOUTPUT_VIEW y de que este nodo está asignado al nodo BOOKINGTABdel contexto de controlador de componentes. Amplíe el layout de la vista paravisualizar las reservas en una segunda tabla debajo de la tabla de vuelos.

1. Actualice la asignación para el nodo de contexto FLIGHTTAB en el contextode vista OUTPUT_VIEW.

Consejo: Aquí debe utilizar las funciones de actualización. No esposible asignar subnodos directamente arrastrándolos y soltándolos.

a) Abra el menú contextual del nodo de contexto FLIGHTTAB yseleccione Actualizar asignación.

b) Confirme los dos cuadros de diálogo siguientes seleccionando Sí.

2. Utilice el asistente de codificación de Web Dynpro para crear unavisualización de tabla con vinculación al nodo de contexto BOOKINGTAB.

a) Realice este paso como en los ejercicios anteriores.

Continúa en la página siguiente

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 385

Page 400: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Tarea 3:Cree e implemente una función de suministro para completar el subnodoBOOKINGTAB con datos de acuerdo con la selección de lead del nodoFLIGHTTAB.

1. En el contexto de componente, asigne una función de suministro al subnodoBOOKINGTAB (nombre propuesto: BOOKINGS_READ) y créeloutilizando la navegación hacia adelante.

a) En el contexto de componente, haga doble clic en el subnodo.

b) Introduzca el nombre de la función de suministro como atributo depropiedad Función de suministro y haga doble clic en el nombre.

2. Quite los signos de comentario de la codificación generada (declaración dedatos y llamada de método BIND_TABLE para el subnodo BOOKINGTAB).

a) Consulte el código fuente de la solución modelo.

3. Declare una estructura en la que los componentes se correspondan con losatributos del nodo superior (nombre propuesto: STRU_FLIGHTTAB).

Consejo: Quizás desee copiar la declaración de este tipo deestructura del método FLIGHTTAB_FILL.

a) Consulte el código fuente de la solución modelo.

4. Utilice el método estático CL_NET310_FLIGHT-MODEL=>READ_BOOKINGS() para completar la tablainterna ITAB_BOOKINGTAB antes de vincularla al subnodoBOOKINGTAB. Utilice los atributos CARRID, CONNID y FLDATE delnodo superior para limitar la selección de datos.

a) Consulte el código fuente de la solución modelo.

Resultado

Solución modelo: NET310_CONR_S3, MétodoBOOKINGS_READ

METHOD bookings_read .

* General Notes

* =============

* A common scenario for a supply method is to aquire key

* informations from the parameter <parent_element> and then

* to invoke a data provider.

* A free navigation thru the context, especially to nodes on

Continúa en la página siguiente

386 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 401: TAW12_02

TAW12_2 Lección: Programación de contextos y controladores

* the same or deeper hierachical level is strongly discouraged,

* because such a strategy may easily lead to unresolvable

* situations!!

*

* data declaration

DATA:

itab_bookingtab TYPE if_componentcontroller=>elements_bookingtab.

DATA:

stru_flighttab TYPE if_componentcontroller=>element_flighttab.

* get all declared attributes

parent_element->get_static_attributes(

IMPORTING

static_attributes = stru_flighttab ).

* read bookings related to selected flight

CALL METHOD cl_net310_flightmodel=>read_bookings

EXPORTING

i_carrid = stru_flighttab-carrid

i_connid = stru_flighttab-connid

i_fldate = stru_flighttab-fldate

IMPORTING

e_bookings = itab_bookingtab.

* bind all the elements

node->bind_table(

new_items = itab_bookingtab

set_initial_elements = abap_true ).

ENDMETHOD.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 387

Page 402: TAW12_02

Capítulo 11: Programación de contextos y controladores TAW12_2

Resumen de la lección

Ahora podrá:� Enumerar los métodos de conexión que existen para los diferentes tipos

de controlador.� Explicar en qué orden se procesan estos métodos de conexión.� Crear y llamar sus propios métodos de controlador.� Utilizar los atributos de controlador estándar para acceder a las funciones de

controlador, en especial el contexto de controlador.� Definir sus propios atributos de controlador y usarlos en los métodos de

controlador.� Acceder al contexto de controlador y leer, borrar, modificar o añadir

elementos de la serie.

388 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 403: TAW12_02

TAW12_2 Resumen del capítulo

Resumen del capítuloAhora podrá:� Enumerar los métodos de conexión que existen para los diferentes tipos

de controlador.� Explicar en qué orden se procesan estos métodos de conexión.� Crear y llamar sus propios métodos de controlador.� Utilizar los atributos de controlador estándar para acceder a las funciones de

controlador, en especial el contexto de controlador.� Definir sus propios atributos de controlador y usarlos en los métodos de

controlador.� Acceder al contexto de controlador y leer, borrar, modificar o añadir

elementos de la serie.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 389

Page 404: TAW12_02

Resumen del capítulo TAW12_2

390 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 405: TAW12_02

Capítulo 12353 Internacionalización y mensajes

Demos are available for all aspects explained in this unit.

Resumen del capítuloEs necesario internacionalizar las aplicaciones Web Dynpro para poder ofrecer laaplicación en varios idiomas de destino. Cada texto (por ejemplo, definido comouna propiedad de elemento de UI o texto literal en el código fuente) puede definirsede forma que se pueda traducir. Esto también puede aplicarse a textos utilizadoscomo mensajes en la pantalla del cliente. Esta unidad se centra en cómo definir lostextos y mensajes traducibles, así como en el modo de enviar los mensajes.

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

� Definir textos traducibles en el OTR o como elementos de texto en unaclase ABAP.

� Utilizar textos OTR y elementos de texto de las clases ABAP para definirliterales traducibles en el entorno Web Dynpro.

� Notificar mensajes basados en textos T100, textos OTR y elementos detextos de clases ABAP.

� Notificar mensajes con y sin conexiones a elementos de UI.� Definir dónde se deberán visualizar los mensajes en la pantalla.

Contenido del capítuloLección: Internacionalización y mensajes .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .392

Ejercicio 21: Internacionalización: texto traducible en la UI ... . . . . . . .405

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 391

Page 406: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Lección:354

Internacionalización y mensajesDuración de la lección: 70 Minutos

Resumen de la lecciónOfrecer una aplicación Web Dynpro en diversos idiomas requiere la definiciónde todos los literales utilizados en la aplicación para que se puedan traducir. Acontinuación, el literal se puede cargar en tiempo de ejecución en el idioma detrabajo pertinente.

Existen varias maneras de hacer traducibles los literales. El texto se puede definiren el Online Text Repository (OTR) como un elemento de texto en una claseABAP o en el Dictionary ABAP. En esta lección se tratarán todas las técnicas.

Al hablar de textos traducibles, los mensajes también se tienen que tener encuenta. Cada texto definido en el OTR, en la tabla de base de datos T100 o comoun elemento de texto en una clase ABAP puede ser enviado como mensaje. Estalección tratará con detalle qué tipo de mensajes existen y cómo pueden enviarsedichos mensajes.

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

� Definir textos traducibles en el OTR o como elementos de texto en unaclase ABAP.

� Utilizar textos OTR y elementos de texto de las clases ABAP para definirliterales traducibles en el entorno Web Dynpro.

� Notificar mensajes basados en textos T100, textos OTR y elementos detextos de clases ABAP.

� Notificar mensajes con y sin conexiones a elementos de UI.� Definir dónde se deberán visualizar los mensajes en la pantalla.

Use the demos from the package NET310 to explain the content.

Ejemplo empresarialHa creado una aplicación Web Dynpro. No obstante, si el usuario proporcionavalores de campo incorrectos, su aplicación se bloquea o no funcionacorrectamente. Desea verificar la entrada del usuario e informarle mediante lavisualización de mensajes. Estos mensajes y todos los textos visualizados por elusuario deberán ser traducibles, ya que su aplicación se debe ofrecer en diversosidiomas.

392 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 407: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

The demo NET310_I18N_D1 can be used for all the techniques to definetranslatable texts. Analyze the coding of the DOINIT method of the view, to findout how assistance class texts can be accessed.

However, it is more instructive if you create and use your own OTR texts inyour component. It is also better to define your own assistance class, textsymbols, constants, and an alias for the interface method get_text() by yourself.Demonstrate how to use texts from the ABAP Dictionary as well.

InternacionalizaciónLa internacionalización significa que deben definirse todas las partes dependientesde idiomas de las aplicaciones para que pueda definirse una versión específica delidioma de la entidad y se utilice la versión correcta en tiempo de ejecución segúnel idioma utilizado por el usuario para iniciar la sesión.

Gráfico 211: Internacionalización

Nota: Puesto que internacionalización es una palabra demasiado larga, amenudo se abrevia como I18N. Es decir, la primera letra I, la última letraN, y olvídese de las otras 18 letras que hay en medio.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 393

Page 408: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Las entidades dependientes de idioma incluyen textos de etiqueta, textos quickinfo, textos de pulsador, textos de mensaje e imágenes.

Utilización de textos definidos en Dictionary ABAP

Gráfico 212: Referencia a textos de Dictionary ABAP

Los textos definidos en Dictionary ABAP se pueden utilizar de las siguientesmaneras:

� El elemento de UI Label pertenece a un elemento de UI que permite entradasde usuario (por ejemplo InputField). Este elemento de UI relacionado,a su vez, debe estar vinculado a un atributo de contexto de la propiedadque incluye el valor de campo. Si el atributo de contexto tiene un tipo deDictionary ABAP, el texto de elemento de datos correspondiente (textomedio) se utiliza automáticamente como texto de etiqueta.

El mismo mecanismo se aplica a los Caption de TableColumns.

� También se puede hacer referencia a cada texto de elemento de datosdirectamente. Para ello, se debe seleccionar el pulsador situado a la derechade un campo de valor de propiedades. En la ventana de diálogo que aparece,seleccione el pulsador Asociación DDIC on/off para seleccionar un tipo deDDIC y el tipo de texto (breve, medio o largo).

� Desde el código fuente, se puede utilizar el método get_available_texts( ) dela clase CL_TEXT_IDENTIFIER para leer textos desde el Dictionary ABAP.

394 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 409: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

Your component: Bind some dictionary texts to text properties of some UIelements of your views (for example, Label texts).

Definición y utilización de textos Online Text Repository (OTR)El Online Text Repository (OTR) es un área de almacenamiento central paratextos que se puede utilizar no sólo en un contexto Web Dynpro, sino también enBSP, en clases y en programas ABAP normales (tipo 1/tipo M). Se pueden definirdiversos tipos de textos en OTR: Textos OTR largos, breves o textos de alias.

La longitud de los textos OTR largos es ilimitada. No obstante, el inconvenientees que sólo se pueden utilizar una vez. Si desea utilizar el mismo texto largopor segunda vez, debe volver a escribirse en el idioma original y, lo que es peor,debe traducirse otra vez. En el contexto Web Dynpro, los textos largos OTR secrean automáticamente cuando se introduce un texto en un campo de valor de unapropiedad del elemento de UI.

Los textos OTR cortos tienen un límite de 255 caracteres. Sin embargo, estostextos se pueden reutilizar y sólo hay que traducirlos una vez. En el contexto WebDynpro, sólo se deberán utilizar textos OTR cortos.

OTR proporciona servicios para acceder a estos textos en tiempo de ejecución yadmite la entrada y la traducción de textos. Para crear un nuevo texto OTR corto,se puede utilizar el browser de Online Text Repository. Puede encontrar estaherramienta en el menú Pasar a al tratar una vista. El nombre de un texto OTRbreve está formado por el nombre del paquete seguido de una barra diagonal y unidentificador arbitrario (<paquete>/<alias>). Los textos OTR también pueden sepueden crear mediante la transacción SOTR_EDIT. Esta transacción también lepermite buscar textos existentes, traducir textos y encontrar dónde se utilizan lostextos OTR.

Para utilizar un texto OTR breve como valor de una propiedad de elemento deUI, realice los siguientes pasos:

� Seleccione el pulsador de Ayuda para entradas en el campo de valorPropiedades. Aparecerá el browser de OTR visualizando todos los textosde su paquete y del paquete SOTR_VOCABULARY_BASIC, que contienetextos estándar.

� Seleccione un texto de la lista y seleccione Continuar.� La directiva OTR para la utilización de este texto se introduce

automáticamente en el campo de valor Propiedades.

La directiva OTR es una combinación del nombre alias del texto, el nombre delpaquete y el prefijo OTR: $OTR:<paquete>/<alias>.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 395

Page 410: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Gráfico 213: Utilización de textos OTR breves como valores de propiedadesde elemento de UI

También se puede acceder a los textos OTR breves desde el código fuente de uncontrolador. La clase CL_WD_UTILITIES proporciona los métodos de servicioapropiados. El método get_otr_text_by_alias( ) le permite acceder al valor deun texto breve OTR dependiente de idioma proporcionando el alias. El valordevuelto es del tipo string.

396 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 411: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

Gráfico 214: Utilización de textos OTR breves desde el código fuente delcontrolador

Your component: First, create some OTR texts using the OTR Browser fromthe menu. Then restart the ABAP Workbench (because it contains bugs) beforeyou access the texts. Finally, use the input help for the value fields, to assign UIelement properties to your OTR texts.

Utilización de textos definidos en una clase ABAPEn vez de utilizar textos definidos en el OTR, se puede definir los textos comoelementos de texto en una clase ABAP. Para acceder a los valores de elemento detexto, use un método público de la clase. En cada SAP NetWeaver AS 7.0 haydisponible una clase que ofrece métodos para leer los elementos de texto. Sellama CL_WD_COMPONENT_ASSISTANCE. Cada clase que hereda de su clasesuperior tendrá el método get_text( ). Si se pasa el identificador del símbolo detexto al método, se devuelve el texto en el idioma sy-langu.

Para utilizar esta clase en un componente Web Dynpro, debe estar instanciada encada controlador. No obstante, una manera más fácil y coherente es dejar que eltiempo de ejecución de Web Dynpro cree la instancia sólo una vez. Esto se realizaescribiendo el nombre de clase en el campo Clase de asistencia que se puedeencontrar en la ficha Propiedades del componente Web Dynpro. Los pasos son:

� Editar el componente Web Dynpro. Navegar a la ficha Propiedades delcomponente.

� Introducir un nombre de clase en el campo Clase de asistencia.� Hacer doble clic en el nombre de clase. Si la clase no existe, se creará. La

clase se deriva de la clase superior CL_WD_COMPONENT_ASSISTANCE.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 397

Page 412: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Gráfico 215: Utilización de la clase de asistencia de componente

Se pueden añadir símbolos de texto a la clase seleccionando Pasar a→ Símbolosde texto. Asegúrese de que la longitud de los elementos de texto es suficientementelarga para soportar diferentes idiomas.

� Opcionalmente, puede definir un alias público para el método de interfazget_text( ) (sólo por comodidad).

� Si desea hacer referencia a los elementos de texto mediante identificadoresarbitrarios, puede definir constantes de tipo WDR_TEXT_KEY para cadaelemento de texto. El valor de constante equivale al identificador deelemento de texto entre comillas.

Una vez asignada la clase de asistencia al componente, se añade un atributo(WD_ASSIST) a la lista de atributos de cada controlador. El tiempo de ejecuciónde Web Dynpro establece este atributo para la instancia de clase de asistencia.Mediante WD_ASSIST, se puede acceder a un texto de la siguiente manera:

� Mediante el identificador de elemento de texto CAR:

DATA: lv_text TYPE string.lv_text = wd_assist->if_wd_component_assistance~get_text(

key = ’CAR’ ).

� Mediante una constante CARRID con el identificador de elemento de textoCAR como su valor:

DATA: lv_text TYPE string.lv_text = wd_assist->if_wd_component_assistance~get_text(

key = wd_assist->carrid ).

398 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 413: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

Your component: Create an assistance class. Define a text symbol without anyplaceholder and another text symbol with one or more placeholders (names:&PARA1&, ...). Define class constants with better names. Define an alias get_textfor the interface method if_wd_component_assistance~get_text().

From any method of any controller of your component: Use the ABAP CodeWizard, to generate the method call of the get_text() method. Use the textsymbol�s identifier (literal) or the class constant to access the text symbol. Use thealias or complete interface method name. For the method with the placeholders,hand over literals to replace the placeholders. Execute debugging.

Los textos definidos en la clase de asistencia también pueden tener marcador deposición. Éstos se definen mediante la utilización del signo & seguido del nombredel marcador de posición. Por lo general, no existen restricciones en cuanto alnúmero y los nombres de los reserva-espacios.

El método get_text( ) le permite exportar valores para los marcadores de posición.Éste devuelve el texto correspondiente en el idioma de trabajo, con el marcador deposición sustituido por los valores proporcionados.

Atención: El método get_text( ) sólo sustituye un máximo de cuatromarcadores de posición con los nombres (incluido el signo & inicial)&PARA1& ... &PARA4&. Aquí, los nombres de marcadores de posiciónse deben definir en letras mayúsculas.

Si el texto se obtiene sin proporcionar valores para los marcadores de posición,el texto se devuelve como se ha definido. Los marcadores de posición podránsustituirse más adelante por otro algoritmo (por ejemplo, si el texto se utiliza comotexto de un mensaje).

Not shown here: You can translate the OTR texts or the text symbols in the SE63 -if you would like to show that.

Exercise �Translatable Texts in the UI�

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 399

Page 414: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Notificación de mensajesEl código fuente para notificar mensajes se puede generar mediante el asistente decodificación Web Dynpro. El código generado consta de una parte común, queincluye el código fuente para obtener la referencia al gestor de mensajes, así comouna parte dependiente del método al que se debe llamar. El gestor de mensajeses responsable de recopilar y enviar los mensajes notificados en el componentereal y en todos los subcomponentes.

Como la obtención de la referencia al gestor de mensajes es obligatoria antes depoder notificar un mensaje, el código fuente correspondiente deberá moverse almétodo de conexión estándar wddoinit() y la referencia se deberá almacenar + enun atributo de controlador definido por el usuario.

Gráfico 216: Notificación de un mensaje: Parte común

Your component: Report any message using the WD Code Wizard. Restrict yourdiscussion to the general code first.

Categoría TEXTTodos los métodos de notificación de mensajes de la categoría TEXT tienen unainterfase común. Debe exportarse al menos el texto de mensaje mediante elparámetro message_text. Si el texto de mensaje incluye marcadores de posición, lalista de parámetros deberá definirse antes de llamar al método. Los marcadores de

400 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 415: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

posición de los textos de mensaje pueden tener nombres arbitrarios (en el siguienteejemplo, X1). Si un método de categoría TEXT pertenece a un elemento de UI,deberá proporcionarse una referencia al elemento de contexto y el nombre delatributo de este elemento de contexto con el valor erróneo. Como este atributo estávinculado a la propiedad de un elemento de UI, el tiempo de ejecución de WebDynpro puede relacionar el mensaje con este elemento de UI.

Gráfico 217: Ejemplo: Notificación de mensajes: Categoría TEXT

You can show all kinds of TEXT messages using demo NET310_I18N_D3. Errormessages, warnings, and success messages are reported. Some of them are relatedto context attributes, some have placeholders. Discuss in detail.

Categoría T100Para usar textos ya definidos en la tabla de base de datos T100 existen dosmétodos. Debe introducir el número de mensaje, la clase de mensaje y el tipode mensaje. Si el texto de mensaje incluye marcadores de posición, se puedenexportar los valores apropiados. En función del método, todos los componentesde mensaje se exportan mediante parámetros de punto de código o mediante unaestructura de exportación. Como mínimo, el texto del mensaje se debe exportarmediante el parámetro message_text.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 401

Page 416: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Si un método de la categoría T100 pertenece a un elemento de UI, se deberáproporcionar una referencia al elemento de contexto y el nombre del atributo deeste elemento de contexto con el valor erróneo. Como este atributo está vinculadoa la propiedad de un elemento de UI, el tiempo de ejecución de Web Dynpro puederelacionar a continuación el mensaje con este elemento de UI.

Gráfico 218: Notificación de mensajes: Categoría T100

Demo NET310_I18N_D2 shows all kinds of T100 messages. Discuss in detail.

Categoría EXCEPTIONSSe pueden interceptar excepciones en tiempo de ejecución en un objeto deexcepción, que en tal caso incluirá el texto del error. Este texto se define en la clasede excepción y, por lo tanto, no se puede modificar. El objeto de mensaje se puedeutilizar para crear un mensaje Web Dynpro mediante la llamada a métodos de lacategoría EXCEPTIONS. El objeto de mensaje se exporta mediante el parámetromessage_object. Si un método de la categoría EXCEPTIONS pertenece a unelemento de UI, deberá proporcionarse una referencia al elemento de contexto y elnombre del atributo de este elemento de contexto con el valor erróneo. Como esteatributo está asociado a la propiedad de un elemento de UI, el tiempo de ejecuciónWeb Dynpro puede relacionar a continuación el mensaje con este elemento de UI.

402 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 417: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

Gráfico 219: Notificación de mensajes: Categoría EXCEPTIONS

Demo NET310_I18N_D4 shows how to report an exception message. Discussin detail.

Codificación para notificar mensajesSi la codificación de validación sólo se debe realizar para una acción deusuario específica, se puede colocar en el método de controlador de accionescorrespondiente (onaction<acción>). No obstante, si existen varios métodos decontrolador de acciones, se deberán realizar validaciones en más de un método decontrolador de acciones. En este caso, es buena idea poner la codificación en unmétodo adicional para tenerlo escrito sólo una vez.

Por esta razón, existe un método de conexión especial para cada vista que seprocesa antes de que se llame cualquiera de los métodos de controlador deacciones. El nombre de este método de conexión es wddobeforeaction( ). Siuna pantalla está formada por varias vistas (vistas anidadas), entonces todos losmétodos wddobeforeaction( ) se procesarán antes de que se llame a ningún métodode controlador de acciones.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 403

Page 418: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Gráfico 220: Notificación de mensajes: Método de conexiónWDDOBEFOREACTION()

Procesamiento dependiente de la validaciónEl procesamiento de los métodos de conexión de vista y la navegación podríandepender del tipo de acción desencadenada y del tipo de los mensajes notificadosen el método de conexión wddobeforeaction( ):

Si la acción no depende de la validación (tipo de acción = independiente devalidación), los mensajes notificados en wddobeforeaction( ) NO influirán en elprocesamiento de los métodos de conexión ni en la navegación.

Si la acción depende de la validación (tipo de acción = estándar), los tipos demensaje siguientes cancelarán la navegación y evitarán el procesamiento delmétodo de controlador de acciones y el método de conexión wddomofifyview( ):

Mensajes de error gravesMensajes de error relacionados con atributos de contexto

La notificación de mensajes en el método de controlador de acciones no influye enla navegación ni en el procesamiento de los métodos de conexión.

Exercise �Value Checks and Messages�

404 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 419: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

367 Ejercicio 21: Internacionalización: textotraducible en la UIDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:� Crear textos OTR.� Usar textos OTR para elementos de UI.

Ejemplo empresarialDesea desarrollar una aplicación Web Dynpro en la que todos los textos de UI sepuedan traducir. Para aquellos textos que no se recuperan desde el DictionaryABAP, va a utilizar OTR.

Modelo: NET310_CONR_S3

Solución: NET310_I18N_S1

Tarea:Copie su componente Web Dynpro ZNET310_CONR3_## o el modeloNET310_CONR_S3 en el componente Web Dynpro ZNET310_I18N1_##.

Utilice textos OTR para títulos de grupo y textos de botón.

1. Copie el modelo.

2. Cree los textos OTR requeridos en su paquete (los identificadores empiezanpor ZNET310_##/).

3. Para todos los elementos de UI de tipo GROUP o BUTTON, establezca lapropiedad text con referencia a un texto OTR.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 405

Page 420: TAW12_02

Capítulo 12: Internacionalización y mensajes TAW12_2

Solución 21: Internacionalización: textotraducible en la UITarea:Copie su componente Web Dynpro ZNET310_CONR3_## o el modeloNET310_CONR_S3 en el componente Web Dynpro ZNET310_I18N1_##.

Utilice textos OTR para títulos de grupo y textos de botón.

1. Copie el modelo.

a) Realice este paso como en los ejercicios anteriores.

2. Cree los textos OTR requeridos en su paquete (los identificadores empiezanpor ZNET310_##/).

a) Seleccione Pasar a→ Browser de Online Text Repository.

b) Seleccione Crear .

c) Introduzca el identificador, la longitud y el texto. Seleccione Grabar.

3. Para todos los elementos de UI de tipo GROUP o BUTTON, establezca lapropiedad text con referencia a un texto OTR.

a) Trate el elemento de UI respectivo y abra la Ayuda para entradas de lapropiedad text.

b) Haga doble clic en el texto OTR correspondiente de la lista.

406 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 421: TAW12_02

TAW12_2 Lección: Internacionalización y mensajes

Resumen de la lección

Ahora podrá:� Definir textos traducibles en el OTR o como elementos de texto en una

clase ABAP.� Utilizar textos OTR y elementos de texto de las clases ABAP para definir

literales traducibles en el entorno Web Dynpro.� Notificar mensajes basados en textos T100, textos OTR y elementos de

textos de clases ABAP.� Notificar mensajes con y sin conexiones a elementos de UI.� Definir dónde se deberán visualizar los mensajes en la pantalla.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 407

Page 422: TAW12_02

Resumen del capítulo TAW12_2

Resumen del capítuloAhora podrá:� Definir textos traducibles en el OTR o como elementos de texto en una

clase ABAP.� Utilizar textos OTR y elementos de texto de las clases ABAP para definir

literales traducibles en el entorno Web Dynpro.� Notificar mensajes basados en textos T100, textos OTR y elementos de

textos de clases ABAP.� Notificar mensajes con y sin conexiones a elementos de UI.� Definir dónde se deberán visualizar los mensajes en la pantalla.

408 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 423: TAW12_02

TAW12_2 Resumen del curso

Resumen del cursoAhora podrá:

� Utilizar elementos fundamentales de la modelación orientada a objetos enUML

� Crear programas de objetos ABAP que contengan todas las técnicas deprogramación útiles orientadas a objetos

� Utilizar las herramientas relevantes para crear objetos de Repositoryorientados a objetos

� Describir y aprovechar el rango de aplicaciones de objetos ABAP� Definir, emitir y tratar excepciones basadas en clases� Consultar atributos de tipo y de clase en el tiempo de ejecución� Realizar modificaciones especializadas en la versión estándar del sistema

SAP� Evaluar los distintos métodos de modificación y elegir el adecuado en cada

caso� Explicar la arquitectura de un componente Web Dynpro� Describir las partes de un controlador Web Dynpro� Crear elementos de contexto en controladores Web Dynpro� Explicar cómo se puede implementar la navegación y las transferencias de

datos en componentes Web Dynpro y entre ellos� Definir la interfase de usuario de un componente Web Dynpro� Internacionalizar una aplicación Web Dynpro� Definir y enviar mensajes en un componente Web Dynpro� Definir la ayuda para entradas y la ayuda semántica para elementos de UI en

un componente Web Dynpro

Más información

� Use un URL o una etiqueta de referencia cruzada para destacar informaciónadicional que pueda resultar útil a los participantes, como sitios Web o WhitePapers. Bórrelos si son irrelevantes.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 409

Page 424: TAW12_02

Resumen del curso TAW12_2

410 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 425: TAW12_02

ÍndiceAampliación de interfase, 199aplicación, 249arquitectura del componentereutilización, 248visibilidad de entidades,245

asignación de contextos, 237,292asignación externa, 239asignación interna, 238

atributosWD_COMP_CON-TROLLER, 352WD_CONTEXT, 352WD_THIS, 352

BBAdI, 202BAdI dependientes de filtro,208

Ccardinalidad de la serie, 283componente, 236concepto de ampliación, 195conjunto de vistas, 244contexto, 236, 280acceso a un nodo, 355acceso en tiempo deejecución, 354añadir elemento de nodo,365añadir elementos, 362asignación de contextos,292asociar estructura a nodo,366

asociar tabla interna anodo, 366cardinalidad de la serie,283crear elemento de nodo,362eliminar elemento denodo, 367función de suministro, 288modificar atributos, 360nodos dependientes, 284nodos independientes, 284propiedad singleton, 287propiedades de elementos,283selección de lead, 286tener acceso a atributos,357

controlador, 236atributos, 351atributos definidos por elusuario, 353atributos estándar, 352contexto, 354duración, 260entidades, 260entidades de controladorde componentes, 263entidades de controladorde ventanas, 266entidades de controladorde vistas, 264entidades de controladorpersonalizados, 263métodos, 346métodos de conexión, 346métodos de instancia, 350tipos, 259

controlador de vistas

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 411

Page 426: TAW12_02

Índice TAW12_2

Editor de vistas, 312EEditor de vistas, 312elemento de UI, 305elemento de UI compuestos,321

elementos de UI, 312controlar comportamiento,317definición, 322elementos de container,307elementos de UIcompuestos, 321gestores de layout, 307página de test, 319textos del DictionaryABAP, 319vinculación de datos, 314

enlace de navegación, 265Entidades Web Dynproaplicación, 249componente, 236contexto, 236controlador, 236ventana, 236, 242vista, 236

Ffunción de suministro, 288funciones empresariales, 209GGET BADI, 206Iinternacionalización, 393textos de clase deasistencia, 397textos del DictionaryABAP, 394Textos OTR, 395, véase Online TextRepository (OTR)

, véase internacionalización

Mmensajesnotificación, 400

metamodelo, 233método anterior, 200método de sobrescritura, 200método posterior, 200métodos de conexiónwddobeforeaction(), 349wddobeforenavigation(),348wddomodifyview(), 349wddopostprocessing(),348

Model View Controller(MVC), 245, véaseModel View Controller(MVC)

Nnavegaciónenlaces, 242puntos de navegación deentrada, 241puntos de navegación desalida, 241

navegaciónlenlaces, 242OOnline Text Repository(OTR), 395

Pplug-in de código fuente, 199punto de ampliación, 196�197puntos de navegaciónde entrada, 241de salida, 241

Puntos de navegación, 264puntos de navegación deentrada, 241

puntos de navegación desalida, 241

Ssección de ampliación, 196selección de lead, 286SFW1, 210

412 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 427: TAW12_02

TAW12_2 Índice

SFW5, 209Switch Framework, 209Ttextos de clase de asistencia,397

Vventana, 236, 242

vinculación de datos, 237, 314vista, 236WWeb Dynproresumen, 232ventajas, 235

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 413

Page 428: TAW12_02

Índice TAW12_2

414 © 2009 SAP AG. Reservados todos los derechos. 10-07-2009

Page 429: TAW12_02

FeedbackSAP AG ha tomado todas las medidas posibles en la preparación de este curso paraasegurar la exactitud de los contenidos del mismo así como que esté completo. Sitiene algunas correcciones o sugerencias para mejorarlo, anótelas en los espaciosprevistos para este fin en la evaluación del curso.

10-07-2009 © 2009 SAP AG. Reservados todos los derechos. 415