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

119167612 taw10-01-es

Embed Size (px)

Citation preview

Page 1: 119167612 taw10-01-es

TAW10_1Fundamentos de Workbench

ABAPSAP NetWeaver

Fecha

Centro de formación

Instructores

Página Web deformación

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

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

Page 2: 119167612 taw10-01-es

Copyright

Copyright © 2010 SAP AG. Reservados todos los derechos.

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

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

Marcas registradas

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

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

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

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

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

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

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

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

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

Declaración de renuncia

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

g20100113113246

Page 3: 119167612 taw10-01-es

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

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

Estilo de tipo Descripción

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

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

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

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

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

Texto deejemplo

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

<Texto deejemplo>

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

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. iii

Page 4: 119167612 taw10-01-es

Sobre este manual TAW10_1

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 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 5: 119167612 taw10-01-es

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

Metas del curso ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .viiObjetivos del curso... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . x

Capítulo 1: La gran imagen.............................................. 1El portafolio de software de SAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3Estrategia de liberación SAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17SAP NetWeaver.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Capítulo 2: Navegación................................................. 41Navegación en general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Navegación avanzada en SAP GUI ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

Capítulo 3: El núcleo del sistema .................................... 81Arquitectura principal de SAP NetWeaver Application Server .. 82Procesos AS ABAP... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103

Capítulo 4: Tecnologías de la comunicación y la integración 137Procesos empresariales de todo el sistema... . . . . . . . . . . . . . . . . . . .139Remote Function Calls y BAPIs... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145Arquitectura orientada a servicios de empresa (Enterprise

SOA) ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158Servicios Web ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167

Capítulo 5: Flujo de un programa ABAP .......................... 179Arquitectura de sistema y programas ABAP ... . . . . . . . . . . . . . . . . . .180

Capítulo 6: Introducción alWorkbench ABAP .................. 195Repository y Object Navigator .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197Desarrollo de programas y organización de desarrollos.. . . . . . .208

Capítulo 7: Elementos básicos del lenguaje ABAP............. 243Trabajo con objetos de datos elementales ... . . . . . . . . . . . . . . . . . . . .244

Capítulo 8: Modularización ........................................... 287Modularización: fundamentos y resumen ... . . . . . . . . . . . . . . . . . . . . .289Modularización con subrutinas... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298Modularización con módulos de funciones ... . . . . . . . . . . . . . . . . . . . .320

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. v

Page 6: 119167612 taw10-01-es

Contenido TAW10_1

Modularización con métodos de clases globales ... . . . . . . . . . . . . .356Modularización con métodos de clases locales (presentación

preliminar) .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388

Capítulo 9: Objetos de datos complejos .......................... 399Trabajo con estructuras ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .400Uso de tablas internas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414

Capítulo 10: Modelado y obtención de datos .................... 447Modelado de datos y tablas transparentes del Dictionary

ABAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .449Lectura de tablas de base de datos ... . . . . . . . . . . . . . . . . . . . . . . . . . . . .465Verificación de autorización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508

Capítulo 11: ABAP Open SQL........................................ 529ABAP Open SQL: optimización de sentencias... . . . . . . . . . . . . . . . .530

Capítulo 12: Pantalla de selección.................................. 551Generación y diseño de la pantalla de selección ... . . . . . . . . . . . . .553Verificaciones de entrada y variantes ... . . . . . . . . . . . . . . . . . . . . . . . . . .580Pantalla de selección: modificaciones en tiempo de

ejecución... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .592

Capítulo 13: Llamadas de programa y gestión dealmacenamiento de datos............................................. 607

Llamados de programa y gestión de almacenamiento dedatos ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .609

Capítulo 14: Nuevas herramientas de prueba.................... 639Code Inspector .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .640

Glosario ................................................................... 655

Índice....................................................................... 661

vi © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 7: 119167612 taw10-01-es

Resumen del cursoEste curso de formación de dos semanas de duración brinda una introducciónintegral y detallada de los conceptos básicos de programación de ABAP y lasherramientas de Workbench ABAP. Además, este curso, junto con TAW11 yTAW12, lo prepara para la certificación como Asociado de desarrollo certificadode SAP - ABAP - SAP NetWeaver 7.0.

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

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

Prerrequisitos para el cursoConocimientos necesarios

• Sólidos conocimientos básicos de tratamiento de datos (DP)• Experiencia en la programación de sonido con otro lenguaje de programación

Detalles de la duración del cursoCapítulo 1: La gran imagenEl portafolio de software de SAP 60 MinutosEstrategia de liberación SAP 30 MinutosEjercicio 1: Estrategia de liberación SAP 10 MinutosSAP NetWeaver 20 Minutos

Capítulo 2: NavegaciónNavegación en general 40 MinutosEjercicio 2: Diseño de entrada al sistema y depantalla 10 Minutos

Navegación avanzada en SAP GUI 60 MinutosEjercicio 3: Llamado de funciones 30 Minutos

Capítulo 3: El núcleo del sistemaArquitectura principal de SAP NetWeaverApplication Server 60 Minutos

Procesos AS ABAP 80 Minutos

Capítulo 4: Tecnologías de la comunicación y la integraciónProcesos empresariales de todo el sistema 30 MinutosRemote Function Calls y BAPIs 30 MinutosEjercicio 4: Remote Function Calls y BAPIs 10 Minutos

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. vii

Page 8: 119167612 taw10-01-es

Resumen del curso TAW10_1

Arquitectura orientada a servicios de empresa(Enterprise SOA) 30 Minutos

Servicios Web 30 Minutos

Capítulo 5: Flujo de un programa ABAPArquitectura de sistema y programas ABAP 20 Minutos

Capítulo 6: Introducción al Workbench ABAPRepository y Object Navigator 45 MinutosDesarrollo de programas y organización dedesarrollos 95 MinutosEjercicio 5: Organización de desarrollos 5 MinutosEjercicio 6: Desarrollo de un programa ABAPsencillo 10 Minutos

Ejercicio 7: Creación de transacciones 10 Minutos

Capítulo 7: Elementos básicos del lenguaje ABAPTrabajo con objetos de datos elementales 75 MinutosEjercicio 8: Sentencias ABAP básicas 30 MinutosEjercicio 9: Debugging de sentencias en objetos dedatos elementales 25 Minutos

Capítulo 8: ModularizaciónModularización: fundamentos y resumen 10 MinutosModularización con subrutinas 60 MinutosEjercicio 10: Subrutinas 30 MinutosModularización con módulos de funciones 80 MinutosEjercicio 11: Uso de un módulo de funciones 20 MinutosEjercicio 12: Creación de un grupo de funciones 10 MinutosEjercicio 13: Creación y utilización de un módulode funciones 30 Minutos

Modularización con métodos de clases globales 30 MinutosEjercicio 14: Uso de métodos estáticos globales 20 MinutosEjercicio 15: Creación de clases globales 10 MinutosEjercicio 16: Creación y utilización de métodosestáticos globales 30 Minutos

Modularización con métodos de clases locales(presentación preliminar) 15 Minutos

Capítulo 9: Objetos de datos complejosTrabajo con estructuras 30 MinutosEjercicio 17: Trabajo con estructuras 35 MinutosUso de tablas internas 90 MinutosEjercicio 18: Uso de tablas internas 25 Minutos

Capítulo 10: Modelado y obtención de datosModelado de datos y tablas transparentes delDictionary ABAP 30 Minutos

viii © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 9: 119167612 taw10-01-es

TAW10_1 Resumen del curso

Ejercicio 19: Análisis de tablas transparentes enel Dictionary ABAP 20 Minutos

Lectura de tablas de base de datos 90 MinutosEjercicio 20: Obtención de datos mediante accesoa registro individual 20 Minutos

Ejercicio 21: Obtención de datos mediante un loopSELECT 25 Minutos

Ejercicio 22: (Opcional) Obtención de datos poracceso en masa (Array Fetch) 25 Minutos

Verificación de autorización 45 MinutosEjercicio 23: Verificación de autorización 10 Minutos

Capítulo 11: ABAP Open SQLABAP Open SQL: optimización de sentencias 40 Minutos

Capítulo 12: Pantalla de selecciónGeneración y diseño de la pantalla de selección 40 MinutosEjercicio 24: Generación y diseño de la pantalla deselección 60 Minutos

Verificaciones de entrada y variantes 30 MinutosEjercicio 25: Verificaciones de entrada y variantes 20 MinutosPantalla de selección: modificaciones en tiempode ejecución. 30 MinutosEjercicio 26: Pantalla de selección: modificacionesen tiempo de ejecución. 40 Minutos

Capítulo 13: Llamadas de programa y gestión de almacenamientode datosLlamados de programa y gestión dealmacenamiento de datos 40 MinutosEjercicio 27: Memoria ABAP 30 Minutos

Capítulo 14: Nuevas herramientas de pruebaCode Inspector 30 MinutosEjercicio 28: Code Inspector 30 Minutos

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. ix

Page 10: 119167612 taw10-01-es

Resumen del curso TAW10_1

Metas del cursoEste curso le permitirá:

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

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

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

desarrollo y tiempo de ejecución

Objetivos del cursoAl finalizar este curso podrá:

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

Atención: It is imperative that you read these notes, even if you havealready completed an earlier version of this course. If available, alsoread the list of the known errors for this course. If it exists, this listhas deliberately been saved separately from this printed course on SAPService Marketplace, so as to keep the course as up-to-date as possiblewhile minimizing the technical effort necessary.

x © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 11: 119167612 taw10-01-es

TAW10_1 Resumen del curso

Training courses recommended as preparation:

• SAPTEC• BC400• BC401• BC402• BC405• BC410• BC412• BC414• BC430

1. Learn the contents of this course incl. all items of the Online documentationfor the respective subject areas; solve all exercises on your own at least once(without the help of model solutions, incl. all details and 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.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. xi

Page 12: 119167612 taw10-01-es

Resumen del curso TAW10_1

Training system:

• SAP NetWeaver 7.0 (Support Package 13 or higher) or higher (ABAP engineis sufficient).

Your training administration should provide you with a system, including aclient. If problems arise with the server assignment, create a CSS messageunder the component SR-KPS-ISM.

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

The internal connectivity to the training WTS farms can only be used withinthe SAP network infrastructure. Use the link http://wts.wdf.sap.corp:1080 toestablish a connection to the training WTS farms. Choose your region (US,EMEA or APJ). Choose "Training - Zone". Connect to "Common Training"if no other WTS farm option is executed for the training course.

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(SAP CSG) for training courses at the customer site. Therefore, you requirea CSG user ID. The training department should have created the user ID forthe course date. The training department sends you the data (user ID andpassword). Instructors and participants use the same CSG user ID for thetraining course. Use the link http://mywts.sap.com to establish a connectionto the training WTS farms. Enter the CSG user ID and the password. Chooseyour region (US, EMEA or APJ). Choose "Training - Zone". Connect to"Common Training" if no other WTS farm option is executed for the trainingcourse.

Make all the preparations with regard to the following two points in accordancewith the “ BC4XX - General Instructor Guide for ABAP Classes” . This islocated under http://service.sap.com/curr-abap –>Additional Material.

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, if yourtraining course takes place at a customer’s site) you will have to run the datageneration program SAPBC_DATA_GENERATOR. This will query you on thetype and quantity of the data. Select the standard setting and set the indicator forPostings 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 TAW10_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.

xii © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 13: 119167612 taw10-01-es

TAW10_1 Resumen del curso

Atención: Do not create any packages. Participants will do this as partof an exercise.

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 BC400, BC402, BC405 and DNW7AW. The followingnaming conventions were used for the course objects:

• ...BC400...XY D_...: Demonstration and example objects• ...BC400...XY S_...: Model solutions• ...BC400...XY T_...: Templates

In each case, XY is a two-character unit code.

Atención: Never modify these standard objects. Create copies always, 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 morequestions they tend to ask. It may also be that the learning group are notparticularly homogenous. You must guarantee, in any case, that the entire contentcan be presented. We recommend keeping within the time limits right from thefirst chapters.

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.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. xiii

Page 14: 119167612 taw10-01-es

Resumen del curso TAW10_1

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 think it necessary to ensure that the courseis held successfully.

Introductory phase at the start of the course:

• Introduce yourself as the course instructor• Organizational issues• Introducing the 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. Select thefollowing option on the next page: SAP Certified Development Associate -ABAP - SAP NetWeaver 7.0, for more information.

Subsequent courses

• TAW11• TAW12

xiv © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 15: 119167612 taw10-01-es

Capítulo 11 La gran imagen

In this section, the participants should learn to evaluate how the primary coursefocus (SAP NetWeaver Application Server) relates to the “rest” of the SAPsolutions (SAP NetWeaver, SAP Business Suite, and so on).

Experience has shown that these topics are usually subject to frequent changessuch as renaming, and so on. It is not always easy for customers and SAPemployees alike to keep track of all changes. These materials were last updated inQ2 2008. You can use the following addresses to keep yourself up-to-date:

• http://service.sap.com/releasestrategy• http://smart.sap.corp:1080/smart

First of all, a lesson deals with the distinction between applications andcomponents. Here it should be made clear that an SAP application (previously“solution”) technically consists of several components (SAP systems). After that,it is pointed out that all SAP applications are based on the same technology andintegration platform: SAP NetWeaver. Do not deal with the individual SAPNetWeaver components in too much detail, but make it clear that SAP NetWeaverAS is a central part of almost every SAP system. That is, the functionalitydiscussed in the course will usually be available in many SAP systems in thecompany. In the last lesson of the unit, we will try to document the SAP releasestrategy in a customer course. We strongly recommend that the instructor closelymonitors updates or changes to the release strategy and mentions them in thecourse, if necessary.

Resumen del capítuloEsta unidad ofrece, en primer lugar, un resumen de las soluciones SAP. Acontinuación ampliará sus conocimientos acerca de la estrategia de liberaciónde SAP. Finalmente, hablaremos de la plataforma de aplicación e integraciónSAP NetWeaver.

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

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 1

Page 16: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

• Enumerar los componentes clave de las soluciones SAP• Explicar las diferencias entre una aplicación y un componente• Describir el proceso de entrega de software SAP• Explicar la estrategia de actualización SAP• Descubrir cuándo estarán disponibles las liberaciones de software SAP• Explicar el concepto básico de SAP NetWeaver• Describir la función principal de SAP NetWeaver Application Server

Contenido del capítuloLección: El portafolio de software de SAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3Lección: Estrategia de liberación SAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

Ejercicio 1: Estrategia de liberación SAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25Lección: SAP NetWeaver.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 17: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

Lección:2

El portafolio de software de SAPDuración de la lección: 60 Minutos

Resumen de la lecciónEsta unidad ofrece una introducción a la estructura de las soluciones de softwareSAP, con SAP Business Suite como epicentro.

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

• Enumerar los componentes clave de las soluciones SAP• Explicar las diferencias entre una aplicación y un componente

The aim of this introductory lesson is to provide participants with an overview ofthe SAP software portfolio. Some advantages are also introduced here. Make surethat, as part of this lesson, you show the participants the introduced areas on theSAP homepage: http://www.sap.com.

Ejemplo empresarialSu empresa planifica introducir el software de SAP. Usted, como miembro delequipo de proyecto, necesita una visión general del portafolio completo de SAP.

Ofertas para empresas de todos los tamañosSAP ofrece un amplia gama de productos para empresas de todos los tamaños.Cuenta con productos ampliables, lo que garantiza que se pueden ajustar acualquier tamaño y que pueden adaptarse a los procesos continuamente cambiantesde una empresa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 3

Page 18: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Gráfico 1: Diferentes tamaños, diferentes productos

Las siguientes ofertas están disponibles para los clientes de entidades pequeñasy medianas:

SAP Business OneSAP Business One es una aplicación ERP integrada que cuenta con una interfazsimilar a Windows, la cual ha sido desarrollada especialmente para empresaspequeñas y medianas. Se destaca por sus opciones de navegación y expansiónsimples, sus innovadoras funciones arrastrar y vincular, y la integración conMicrosoft Word y Excel. El software le permite gestionar de manera uniformelas áreas empresariales más importantes como ventas, distribución y finanzas conuna única aplicación integrada. Esto le permite a SAP Business One facilitar unresumen actual de los datos más importantes de su empresa en cualquier momento.Esta información lo ayuda a satisfacer los requisitos de los clientes aun más rápido,lo que constituye un requisito previo importante para un crecimiento rentable.

SAP Business One es la solución ideal para pequeñas empresas con menos de100 empleados y 30 usuarios que buscan un sistema económico que cubra susprocesos centrales (como finanzas, ventas, servicio al cliente y operaciones).Por consiguiente, garantiza operaciones rentables y satisfactorias. La soluciónpuede utilizarse como software local u hospedado por un colaborador con untiempo medio de implementación de menos de un mes. SAP Business One sevende únicamente a través de una red global de colaboradores (actualmente1.300 colaboradores certificados y con experiencia). Estos ofrecen soporte las 24horas, que también cubre las más de 350 ampliaciones de los proveedores desoftware independientes. Actualmente hay más de 14.500 clientes que utilizanSAP Business One en más de 40 países.

Nota: Para obtener más información, consulte http://www.sap.com/solu-tions/sme/businessone.

4 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 19: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

SAP Business ByDesign

SAP Business ByDesign is based on an entirely newly developed, designedapplication platform. Business applications have been programmed anew fromscratch based on a model. The interaction between applications and systems takesplace via specified services or interfaces: Application-to-Application (A2A),Business-to-Business (B2B) as well as new UI interfaces. Standardized protocols,which are also simply referred to as Web Services, are used for this purpose. Butthis is not the definition of an Enterprise Service Oriented Architecture (EnterpriseSOA). It is rather the modeling of the applications and the A2A, B2B and UIinterfaces that distinguish an Enterprise SOA.

SAP Business ByDesign es la solución más reciente de SAP para empresaspequeñas y medianas de entre 100 y 500 empleados que quieren utilizar unasolución a medida para mejorar sus procesos principales y, al mismo tiempo,beneficiarse de la reducción de costes de entrada y operación. Su objetivo es,especialmente, ayudar a las empresas medianas que aún no utilizan un softwareempresarial integrado.

La solución combina las ventajas de una aplicación completa e integrada conel potencial de bajo riesgo y los bajos costes operativos totales de una solucióna medida. Una solución a medida que se destaca por su servicio y soporteintegrados, su capacidad de adaptación y el fácil uso, y que también garantizatransparencia y el cumplimiento de los requisitos legales; todo esto con un diseñobasado en una Enterprise SOA. SAP Business ByDesign es la solución a medidamás completa y totalmente integrada. Más que una solución para cubrir huecos,soporta los requisitos de las empresas medianas en todas las áreas, como la gestiónefectiva de las finanzas, los recursos humanos, proyectos, producción, la gestiónde las relaciones entre proveedor y cliente, y la gestión del cumplimiento de losrequisitos legales regionales y locales, como principios de diseño centrales. Nofue desarrollada con las categorías tradicionales de las aplicaciones empresarialeso de la gestión de la relación con el cliente, etc. Más bien fue desarrollada paraprocesos empresariales en toda la empresa, con interfaces de usuario que sepersonalizan según las funciones del usuario. SAP Business ByDesign ofreceprocesos completos para el centro de trabajo del futuro.

Nota: Para obtener más información, consulte http://www.sap.com/solu-tions/sme/businessbydesign.

SAP Business All-in-OneTodo el software debe adaptarse a la empresa en cuestión. Una empresa medianacon pocos empleados y procesos relativamente estables puede utilizar sistemasSAP preconfigurados. SAP All-in-One es el nombre comercial de aplicacionesverticales (específicas del sector o del país) que se basan en la tecnología de SAPNetWeaver y que fueron desarrolladas junto con colaboradores SAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 5

Page 20: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

SAP Business All-in-One es la solución ideal para empresas pequeñas ymedianas con requisitos muy específicos del sector, que tienen varios sectoresy una infraestructura informática madura. La solución se puede utilizar comosoftware local u hospedado por un colaborador y se basa en SAP ERP. Ofreceun portafolio de funciones específicas del sector sobre la base de SAP BestPractices. Está disponible a través de 660 soluciones de mercado, ofrecidas pormás de 1.000 colaboradores. SAP Business All-in-One es económico y puedeplanificarse. Además, gracias a los escenarios empresariales preconfigurados y alos aceleradores de implementación, puede implementarse rápidamente (de 4 a 16semanas). Actualmente, hay más de 10.000 clientes que utilizan SAP BusinessAll-in-One en más de 50 países.

Nota: Para obtener más información, consulte http://www.sap.com/solu-tions/sme/businessallinone.

SAP Business Suite en detalle

The SAP Business Suite, which has evolved from older R/3 releases or SAPsystems, is not Enterprise SOA by design but by evolution. Put differently: theability to use Enterprise Services will be “enabled” subsequently, but this wasnot a design principle from the start. Of course, SAP ERP 6.0 will also enableEnterprise SOA integration scenarios, especially by means of the XI EnterpriseService Repository.

This remark is intended as background information for the instructor and shouldonly be passed on to participants on request.

La SAP Business Suite es una extensa familia de aplicaciones empresarialesque les permite a las empresas gestionar sus cadenas de valores completas. Lasaplicaciones empresariales incluidas ofrecen resultados consistentes a los usuariosen toda la red de la empresa, y aportan a su empresa la flexibilidad que necesitaen las situaciones dinámicas de mercado actuales. La aplicación consta de variosproductos diferentes que soportan procesos de toda la empresa.

Nota: Para obtener más información, consulte http://www.sap.com/solu-tions/business-suite.

El portafolio de software de SAP se amplía y optimiza constantemente, y se adaptaa las necesidades del mercado y de los clientes. Por lo tanto, SAP ha desarrollado,por ejemplo, varias aplicaciones específicas del sector a lo largo de los años. Eltema de la integración de distintos sistemas empresariales (incluso de diferentesproveedores y entre empresas) ha ganado importancia recientemente. Tambiénse han agregado productos para empresas pequeñas y medianas a las solucionesde software de la familia SAP.

6 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 21: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

La SAP Business Suite, un paquete de software empresarial completo únicoen el mundo, juega un papel central. Muchas empresas ya se benefician delas aplicaciones empresariales integrales y flexibles con funciones altamentedesarrolladas: integración completa, funciones típicas del sector, ampliaciónilimitada y colaboración fluida a través de Internet.

La SAP Business Suite ofrece:

• Un abanico completo de soluciones empresariales• Una infraestructura tecnológica que combina apertura y flexibilidad con

madurez y estabilidad• Interfaces para la integración de productos no desarrollados por SAP• Componentes que pueden adaptarse para cumplir múltiples requisitos

empresariales• Numerosas funciones específicas del sector

El siguiente gráfico ilustra los componentes clave de la SAP Business Suite:

Gráfico 2: SAP Business Suite: Arquitectura

Los componentes clave de la SAP Business Suite son:

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 7

Page 22: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Business Process Platform (BPP)Una Business Process Platform es el requisito previo para el desarrollode una arquitectura orientada a servicios para aplicaciones empresariales(Enterprise Service-Oriented Architecture, Enterprise SOA). SAP BPP secompone de los siguientes módulos:

SAP NetWeaverSAP NetWeaver es una plataforma de integración y aplicaciónabierta para todas las aplicaciones SAP y algunas aplicaciones decolaboradores de SAP. SAP NetWeaver es una plataforma basada enWeb que sirve de base para la Enterprise SOA y permite la integracióny coordinación en toda la empresa independientes de la tecnologíade empleados, información y procesos empresariales. Gracias a losestándares abiertos, pueden integrarse información y aplicaciones decualquier fuente y basadas en cualquier tecnología. SAP NetWeaver sepuede utilizar con los estándares tecnológicos más importantes, comoJava 2 Platform, Java Enterprise Edition (Java EE) y Microsoft .NET.La plataforma ofrece confianza, seguridad y capacidad de ampliaciónmáximas, lo cual garantiza que los procesos empresariales esencialespara el éxito funcionen sin problemas.

Aplicaciones SAPLa SAP Business Suite incluye aplicaciones amplias e integradas,para las cuales los clientes pueden obtener licencias completas oindividuales. Las aplicaciones SAP más recientes utilizan el EnterpriseService Repository, un repository para procesos y Enterprise Services.Los Enterprise Services asignan procesos empresariales utilizandoestándares públicos.

Tanto SAP NetWeaver como las aplicaciones SAP se amplían continuamentea través de Enhancement Packages. Los Enhancement Packages se envían aintervalos regulares para poder responder más rápidamente a las necesidadesdel mercado y para ofrecer beneficios adicionales a clientes y colaboradoressin tener que esperar a la próxima liberación principal del producto.

8 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 23: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

Composite Applications (xApps)SAP xApps son un portafolio de “Packaged Composite Applications” quepuede utilizar para promover más fácilmente las mejoras y la innovaciónen su empresa. Con su capacidad de combinar sistemas existentes yheterogéneos para formar procesos multifuncionales, las SAP xAppsComposite Applications reúnen a las personas, la información y los procesosempresariales para hacer que su empresa sea más dinámica y competitiva.Esta flexibilidad le permite implementar estrategias empresarialesgenerales con más facilidad y eficiencia. SAP xApps aumentan el valorde las inversiones existentes en el área empresarial central y maximizanla devolución de inversiones estratégicas: empleados, conocimientos,productos, relaciones comerciales y tecnología de la información.Puede utilizar el SAP Composite Application Framework (CAF) paradesarrollar y ejecutar sus propias xApps.

El siguiente gráfico ofrece un resumen de las aplicaciones incluidas en la SAPBusiness Suite.

Gráfico 3: SAP Business Suite: Aplicaciones incluidas

This graphic is still brand new (in Q3 2007) and differs significantly from earliergraphics. One reason was to bring the product view (“What SAP products areavailable?”) and the license view (“What can you buy=license from SAP?”) closertogether.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 9

Page 24: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

The following list should help to explain what is behind the individual terms. InSAPTEC one cannot expect the instructor to be an expert in all applications -but you should at least be able to provide a rough description of the individualapplications. If they are still valid, the specified links provide additionalinformation.

Algunas de las aplicaciones introducidas en el gráfico son:

• Aplicaciones para Governance Risk and Compliance (GRC):Aplicaciones para Governance (SAP GRC Repository), gestión de riesgos(SAP GRC Risk Management) y cumplimiento de requisitos legales (SAPGRC Access Control, SAP GRC Process Control, SAP GRC GlobalTrade Services, aplicaciones SAP para la gestión del cumplimientode normativas de medioambiente, salud y seguridad, aplicacionescompuestas GRC de SAP y Cisco). Para obtener más información, consultehttp://www.sap.com/solutions/grc

• Aplicaciones para la gestión del rendimiento: Aplicaciones para lagestión del rendimiento (SAP Strategy Management, SAP BusinessPlanning and Consolidation, SAP Business Profitability Management deAcorn, SAP xApp Analytics). Para obtener más información, consultehttp://www.sap.com/solutions/performancemanagement

• SAP Enterprise Resource Planning (SAP ERP): Aplicaciones para elsoporte de planificación de recursos en toda una empresa

– SAP ERP Human Capital Management– SAP ERP Financials– SAP ERP Operations– ERP Corporate Services

Para obtener más información, consulte http://www.sap.com/solutions/busi-ness-suite/erp

• SAP Customer Relationship Management (SAP CRM): Aplicacionespara procesos empresariales completos y orientados al cliente. Para obtenermás información, consulte http://www.sap.com/solutions/business-suite/crm

• SAP Supplier Relationship Management (SAP SRM): SAP SRM integraprocesos estratégicos de compra, como la cualificación del proveedor y lagestión de proveedores, invitaciones electrónicas para licitación y subastas ola gestión de contratos, con los demás procesos centrales en su empresa ycon los procesos de sus proveedores. Para obtener más información, consultehttp://www.sap.com/solutions/business-suite/srm

• SAP Supply Chain Management (SAP SCM): Aplicaciones paragestionar la cadena logística completa para sincronizar el suministro yla demanda entre empresas. Para obtener más información, consultehttp://www.sap.com/solutions/business-suite/scm

10 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 25: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

• SAP Product Lifecycle Management (SAP PLM): Aplicaciones para lainclusión de colaboradores internos y externos directamente en el desarrollooperativo de productos y en los procesos de producción. Para obtener másinformación, consulte http://www.sap.com/solutions/business-suite/plm

• Aplicaciones industriales: Aplicaciones específicas del sector

– Bancos– Sanidad– Universidades e institutos de investigación– Seguridad interna y externa– Sector público– Seguros– Sector de servicios– Mayorista– Minorista– Proveedores de servicios logísticos– Medios de comunicación– Telecomunicaciones– Industria de suministros– Industria automovilística– Sector de la construcción, ingeniería de proyectos y operaciones– Industria de tecnología de punta y electrónica– Industria de bienes de consumo– Industria aeronáutica y espacial– Ingeniería mecánica– Industria del metal, la madera y el papel– Minería– Industria química– Ciencias sociales– Industria del petróleo y el gas

Para obtener más información, consulte http://www.sap.com/industries

• SAP xApps Composite Applications: Aplicaciones compuestas quecubren varias soluciones de empresa entre personas, información y procesos

– SAP xApp Cost and Quotation Management (SAP xCQM)– SAP xApp Integrated Exploration and Production (SAP xIEP)– SAP xApp Lean Planning and Operations (SAP xLPO)– SAP xApp Manufacturing Integration and Intelligence (SAP xMII)– SAP xApp Product Definition (SAP xPD)

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 11

Page 26: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

– SAP xApp Resource and Portfolio Management (SAP xRPM)– SAP xApp Sales and Operations Planning (SAP xSOP)– SAP xApp Spend Analytics (SAP xSA)

Para obtener más información, consulte http://www.sap.com/xapps

• Aplicaciones para Information Workers: Aplicaciones que garantizana los empleados el acceso a los datos de la empresa y a los procesosempresariales, en cualquier momento y en cualquier lugar

– Duet for Microsoft Office and SAP– SAP Interactive Forms by Adobe– SAP NetWeaver Enterprise Search

Para obtener más información, consulte http://www.sap.com/solutions/in-formationworkers

• SAP NetWeaver: Plataforma de integración y aplicación abiertas paratodas las aplicaciones SAP

– SAP NetWeaver Application Server– SAP NetWeaver Business Intelligence– SAP NetWeaver Exchange Infrastructure– SAP NetWeaver Master Data Management– SAP NetWeaver Mobile– SAP NetWeaver Portal– SAP Auto-ID Infrastructure– SAP NetWeaver Identity Management

Para obtener más información, consulte http://www.sap.com/plat-form/netweaver

Contexto de aplicaciones y componentesVarias aplicaciones para desafíos empresariales se obtienen en el contexto de laSAP Business Suite. Sin embargo, muchas aplicaciones tienen requisitos similareso idénticos para funciones empresariales en subáreas. Es por ello que las diferentesaplicaciones contienen componentes (de software) similares en algunas partes.Un componente es la unidad de software más pequeña que puede producirse,suministrarse, instalarse y actualizarse por separado.

Los componentes hacen referencia, por ejemplo, a un sistema SAP ECC, unsistema SAP SCM o también un sistema de portal SAP NetWeaver. El gráficoofrece un resumen de esta jerarquía (componentes como bloques de construcciónde soluciones) utilizando la aplicación SAP SCM como ejemplo.

12 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 27: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

Gráfico 4: Aplicaciones y componentes

Posibilidades con SAP Business SuitePara ofrecerle una imagen más clara de las posibilidades de la SAP BusinessSuite, puede ver algunos de los escenarios empresariales que posiblemente esténutilizando la SAP Business Suite del siguiente gráfico.

Gráfico 5: Escenario empresarial posible con SAP Business Suite

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 13

Page 28: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

La SAP Business Suite ofrece varias opciones para integrar procesos empresarialesinternos de su empresa y, de manera similar, integrar sistemas de interlocutorescomerciales. Puede implementar la integración de procesos de toda la empresautilizando diferentes tecnologías, como con Application Link Enabling (ALE)utilizando Electronic Data Interchange (EDI), a través del intercambio de datosXML, o también mediante Composite Applications (xApps) y servicios Web.

Point out here that there is usually exactly one database that belongs to anSAP system. In the above graphic, the company (indicated using the contentof the dotted ellipse in the middle) has four production SAP systems with fourcorresponding databases.

14 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 29: 119167612 taw10-01-es

TAW10_1 Lección: El portafolio de software de SAP

Discusión con moderadorHighlight the possibilities offered by SAP Business Suite.

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.

Which of the opportunities offered by the SAP Business Suite will you actuallyuse in your company?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 15

Page 30: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Resumen de la lección

Ahora podrá:• Enumerar los componentes clave de las soluciones SAP• Explicar las diferencias entre una aplicación y un componente

Más informaciónPara obtener más información, consulte los siguientes sitios web de SAP. Todosestos sitios están disponibles libremente. Algunos de estos le exigen registrarsegratuitamente.

Please draw the participants’ attention to the Web site of your local SAPsubsidiary, for example: http://www.sap.de.

• Página de inicio de SAP global, http://www.sap.com• Portal de ayuda de SAP, http://help.sap.com• SAP Service Marketplace, http://service.sap.com• SAP Info, http://www.sap.info• SAP Insider Online, http://www.sapinsideronline.com

16 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 31: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

Lección:14

Estrategia de liberación SAPDuración de la lección: 30 Minutos

Resumen de la lecciónEsta lección explica cuáles son las fases que su solución SAP recorre a lo largo deltiempo hasta llegar al siguiente upgrade para una liberación superior, así comotambién cuál es la duración de actualización garantizada para los productos SAP.

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

• Describir el proceso de entrega de software SAP• Explicar la estrategia de actualización SAP• Descubrir cuándo estarán disponibles las liberaciones de software SAP

It should become clear to the participants how the SAP product they use willchange over time, whether through corrections/enhancements or through upgrades.SAP supports these processes in many ways, not least through the SAP SolutionManager.

Ejemplo empresarialQuiere información actualizada acerca de la disponibilidad de liberaciones desoluciones SAP para poder tomar una buena decisión acerca de la compra oupgrade de una solución SAP.

Historial de componentes de software seleccionadosEsta sección proporciona una parte del historial de algunos componentes desoftware seleccionados.

SAP is very good at confusing customers, for example, through constant renaming.This little section is supposed to “get” customers who are familiar with the namesof older software components, on the one hand. On the other hand, this sectionis a good transition to the topic as to how SAP actually supplies customers withapplications.

Discuss only the structure of the latest ECC or SAP NetWeaver systems in detailbecause the rest of the slide is pretty much self-explanatory. An overly extensivehistory with all name changes over the last few years (for example sap.com=> mySAP Business Suite => SAP Business Suite) can be rather confusing for

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 17

Page 32: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

customers who do not know the history because they are just about to introducethe software. “Seasoned” SAP users or admins in contrast might find the overviewslide very helpful for understanding the contexts.

Base técnica (servidor de aplicación)

Do not deal with the components of SAP NetWeaver in detail yet, this will bedone in the next lesson. If the participants ask, tell them briefly that this is ourintegration platform. This term should have already been mentioned in the firstlesson for the software portfolio.

En los días en los que SAP ofrecía básicamente dos productos (SAP R/2 ySAP R/3), el desarrollo de la base (técnica) estaba estrechamente enlazadocon el desarrollo de aplicaciones. Los nombres de liberación de la SAP Basiscorrespondían a la versión SAP R/3; por ejemplo, SAP Basis 4.0B era la basetécnica para SAP R/3 4.0B

Hacia el cambio de milenio, el portafolio de SAP creció significativamente, secrearon nuevos productos que requerían cambios y ampliaciones más frecuentesde la SAP Basis que SAP R/3. Esto marcó la transición de la SAP Basis clásica(última versión: SAP Basis 4.6D) a SAP Web Application Server (SAP WebAS). Las nuevas tecnologías de Internet (Internet Communication Manager apartir de SAP Web AS 6.10) y la complementación del entorno ABAP clásico conJava/JEE (a partir de SAP Web AS 6.20) fueron hitos importantes.

SAP Web AS 6.40 constituye la base técnica (“plataforma de aplicación”) de SAPNetWeaver 04. SAP NetWeaver ofrece funciones ampliadas (como BusinessIntelligence), todas basadas en la plataforma de aplicación. A partir de SAPNetWeaver 7.0 (anteriormente: SAP NetWeaver 2004s) los nombres y liberacionescontinuaron adaptándose, de manera que ahora SAP NetWeaver 7.0 se basa enSAP NetWeaver Application Server 7.00 (SAP NetWeaver AS).

Funciones principales de ERPEl siguiente gráfico muestra el desarrollo histórico del SAP ERP CentralComponent actual (ECC 6.0):

18 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 33: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

Gráfico 6: Evolución desde SAP R/3, a través de SAP R/3 Enterprise, hastaSAP ECC

Tal como ya hemos mencionado, en los tiempos de SAP R/3, el desarrollo delas aplicaciones y la base técnica estaban interconectados, hasta SAP R/3 4.6Cinclusive.

Con SAP R/3 Enterprise (4.7), que se basa en SAP Web AS 6.20, se introdujo elconcepto de SAP R/3 Enterprise Extensions.

Una aplicación central (anteriormente: solución) de la SAP Business Suite es SAPERP para la planificación de los recursos empresariales. El componente centraldel software de SAP ERP es SAP ERP Central Component (SAP ECC). Por lotanto, SAP ECC 5.0 puede considerarse el sucesor técnico de SAP R/3 Enterprise yse basa en un SAP Web AS 6.40. En el momento de redactar esta documentación,la versión actual es SAP ERP 6.0 (anteriormente: SAP ERP 2005), que tambiénincluye un SAP ECC 6.0 y otros componentes, y opera sobre la base de SAPNetWeaver AS 7.00. Las ampliaciones funcionales de los diferentes componentesde software se ponen a disposición a través de paquetes de ampliación.

The SAP NetWeaver strategy was announced in spring 2003. Back then, SAPR/3 Enterprise was the latest SAP R/3 release. Formally, it belongs to the newlydefined SAP NetWeaver but from a license perspective, there were individualsystem licenses, which did not automatically equate to an SAP NetWeaver license.Hence the year information 2003 was set in brackets because it is only supposed tohint to a parallelism and no assignment. For SAP NetWeaver 2004 and 2004s incontrast, the entries in brackets point to name changes (old term in brackets).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 19

Page 34: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

SAP NW AS 7.10 o SAP NetWeaver 7.1 no se utilizan actualmente como basetécnica para un sistema SAP ECC. Otros componentes de SAP NetWeaver, comoSAP NW Process Integration (PI) y SAP NW Composition Environment (CE) yarequieren este nivel de liberación de SAP NetWeaver.

Disponibilidad y entregaLas aplicaciones SAP, SAP NetWeaver, Enhancement Packages y xApps seofrecen a los clientes en dos fases.

Gráfico 7: Fases de entrega de software de SAP

Fase de entrega restringidaLas nuevas liberaciones de software sólo están disponibles para un númerolimitado de clientes cuyo aumento está controlado. La fecha de Liberación alcliente marca el inicio de la Fase de entrega restringida.

20 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 35: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

Durante la fase de entrega restringida, la nueva liberación del software pasa por unproceso estándar, el Ramp-Up. Las características del proceso de ramp-up son:

• Ramp-up es el nombre del proceso de introducción en el mercado de nuevosproductos o nuevas liberaciones de software SAP.

• El software se puede utilizar para una implementación productiva.• Durante el ramp-up, el software sólo está disponible para un círculo limitado

de clientes; los clientes “le solicitan” a SAP participar en un ramp-up.• El ramp-up sirve para tener en cuenta los deseos de los clientes antes de que el

software de SAP correspondiente esté disponible para el público en general.• Los participantes en el ramp-up tienen contacto directo con el desarrollo SAP

y obtienen un amplio soporte en la implementación del software SAP.• Un ramp-up suele durar unos 6 meses.

Nota: Para más información sobre el ramp-up, consultehttp://service.sap.com/rampup.

Fase de entrega no restringidaLa segunda fase de la entrega se denomina fase de entrega no restringida. Tras lafecha del release estándar, todos los clientes pueden solicitar el nuevo softwaresin restricciones.

La última versión del software de SAP que suele estar disponible se denominaRelease estándar. Cuando los clientes de SAP solicitan el software de SAP, suelenobtener el release estándar actual.

MantenimientoSu contrato de mantenimiento incluye support packages, que SAP proporciona através del SAP Service Marketplace. Los support packages solucionan problemas(dependientes de los componentes) que pueden aparecer cuando se utiliza elsoftware de SAP. SAP ofrece estos support packages a determinados intervalos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 21

Page 36: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Estrategia de mantenimiento 5-1-2

Gráfico 8: Estrategia de mantenimiento 5-1-2

Desde 2004, SAP ofrece la nueva estrategia de mantenimiento 5-1-2 para todos losproductos que se basan en SAP NetWeaver. Esta estrategia de mantenimiento 5-1-2ofrece mantenimiento general durante cinco años, más un año de mantenimientoextendido por una cuota de mantenimiento dos por ciento mayor y, opcionalmente,otros dos años por una cuota de mantenimiento cuatro por ciento mayor que lacuota de mantenimiento estándar. El software instalado en ubicaciones del clientese puede traspasar a la fase de mantenimiento específico de cliente.

Distinguimos las siguientes tres fases de mantenimiento:

Mantenimiento generalEl mantenimiento general comienza a partir de la liberación al cliente y,generalmente, finaliza 5 años después de la fecha del release estándar.

Mantenimiento ampliadoLos clientes pueden ampliar el período de soporte (en el que las correccioneso los cambios legales se tienen en cuenta) a cambio de una cuota demantenimiento superior (+2% por 1 año, +4% para 2 años).

22 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 37: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

Mantenimiento específico de clienteA partir de cierto momento en el ciclo de vida de una liberación, estaliberación ya no se adapta para cumplir con los requisitos externos.Requisitos como, por ejemplo, la implementación de cambios legales o elsoporte de nuevas tecnologías. El tiempo en cuestión se marca mediante elfin del mantenimiento ampliado o mediante el fin del mantenimiento general,si no se ofrece un mantenimiento ampliado. El mantenimiento específico decliente empieza en este momento.

Nota: Consulte http://service.sap.com/maintenance para obtenerinformación adicional sobre la estrategia de mantenimiento. La SAPnote 52505 trata especialmente las particularidades del mantenimientoespecífico de cliente.

UpgradeDebería pensar en realizar un upgrade con la última liberación cuando su softwarede SAP esté a punto de finalizar su mantenimiento general, a más tardar. Duranteun upgrade de su software de SAP, normalmente se pueden saltar una o másliberaciones de software (de su aplicación) que han aparecido durante este tiempo.Por ejemplo, un upgrade de SAP R/3 4.6C a SAP ERP 6.0 es técnicamenteposible, a pesar de que se cambia de producto durante este upgrade (de SAP R/3a SAP ERP).

SAP ofrece vías de acceso de upgrade para aplicaciones SAP, SAP NetWeaver,Enhancement Packages, xApps y transportes de contenido. Puede haber casos enlos que un upgrade requiera varios pasos (especialmente debido a restriccionestécnicas).

Nota: Para obtener más información acerca de los upgrades, consultehttp://service.sap.com/upgrade.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 23

Page 38: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

24 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 39: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

21 Ejercicio 1: Estrategia de liberación SAPDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Nombrar algunas fuentes de información de SAP Service Marketplace

Ejemplo empresarialDesea determinar el período de mantenimiento estándar de la aplicación SAP ERP6.0 y el momento en el que estará disponible la siguiente Support Package Stack.

Tarea: Información de mantenimientoDeterminar alguna información de mantenimiento a través del SAP ServiceMarketplace.

Utiliza el SAP Service Marketplace para determinar el fin del mantenimientoestándar de la aplicación SAP ERP 6.0 y para saber cuándo se liberará la siguienteSupport Package Stack para las aplicaciones de su sistema SAP ERP 6.0.

1. ¿Cuándo finaliza el contrato de mantenimiento para la aplicación SAP ERP6.0?

2. ¿Para cuándo está planificada la siguiente Support Package Stack para SAPNetWeaver 7.0?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 25

Page 40: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Solución 1: Estrategia de liberación SAPTarea: Información de mantenimientoDeterminar alguna información de mantenimiento a través del SAP ServiceMarketplace.

Utiliza el SAP Service Marketplace para determinar el fin del mantenimientoestándar de la aplicación SAP ERP 6.0 y para saber cuándo se liberará la siguienteSupport Package Stack para las aplicaciones de su sistema SAP ERP 6.0.

1. ¿Cuándo finaliza el contrato de mantenimiento para la aplicación SAP ERP6.0?

a) Consulte estas direcciones

• http://service.sap.com/releasestrategy• http://service.sap.com/pam

para responder a la pregunta: Marzo de 2013.

2. ¿Para cuándo está planificada la siguiente Support Package Stack para SAPNetWeaver 7.0?

a) Consulte esta dirección

• http://service.sap.com/sp-stacks

para responder a la pregunta: Seleccione el enlace SP Stack Calendaren la parte inferior de la página y determine la semana planificada.

26 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 41: 119167612 taw10-01-es

TAW10_1 Lección: Estrategia de liberación SAP

Resumen de la lección

Ahora podrá:• Describir el proceso de entrega de software SAP• Explicar la estrategia de actualización SAP• Descubrir cuándo estarán disponibles las liberaciones de software SAP

Más información

• http://www.sap.com/solutions• http://service.sap.com/releasestrategy• http://service.sap.com/rampup• http://service.sap.com/maintenance• http://service.sap.com/upgrade

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 27

Page 42: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Lección:24

SAP NetWeaverDuración de la lección: 20 Minutos

Resumen de la lecciónEste módulo describe la función principal de SAP NetWeaver Application Serveren SAP NetWeaver.

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

• Explicar el concepto básico de SAP NetWeaver• Describir la función principal de SAP NetWeaver Application Server

This lesson is very important because it explains the SAP NetWeaver and SAPNetWeaver Application Server technology to the participants.

Ejemplo empresarialDesea saber más acerca de SAP NetWeaver y la función que SAP NetWeaverApplication Server (SAP NetWeaver AS) tiene en SAP NetWeaver.

SAP NetWeaverLa plataforma tecnológica SAP NetWeaver está diseñada para introducirlos procesos importantes de tecnología de la información en empresas demanera flexible, eficiente y paso por paso. Gracias al alto nivel de integraciónde las funciones de plataforma individuales, su conectabilidad y el uso deestándares industriales, la plataforma de integración y aplicación contribuyesignificativamente a la reducción de los costes totales de propiedad (TCO) entoda la infraestructura del sistema. SAP NetWeaver representa la base técnica deSAP Business Suite, SAP xApps Composite Applications y otras aplicacionesSAP parcialmente específicas del sector.

SAP NetWeaver también es la base técnica de la arquitectura de futuro, orientadaa servicios para aplicaciones empresariales (SOA empresarial). En una SOAempresarial, las funciones de aplicación se ponen a su disposición en forma deservicios empresariales. Se trata de servicios Web que pueden combinarse demanera flexible y utilizarse con propósitos empresariales. Los proporcionandistintos proveedores a través de redes de datos, y se comunican con otrasaplicaciones utilizando interfaces abiertas y estandarizadas.

28 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 43: 119167612 taw10-01-es

TAW10_1 Lección: SAP NetWeaver

SAP NetWeaver integra y conecta a las personas, la información y los procesosempresariales a través de tecnologías y empresas. Permite a las empresasadaptarse a los cambios rápidamente. SAP NetWeaver garantiza que los procesosempresariales esenciales de una empresa sean fiables, seguros y ampliables.Además, SAP NetWeaver les permite a las empresas maximizar los beneficios delsoftware y los sistemas actuales. Se consolidan las tecnologías de integración nouniformes y se ofrece contenido empresarial predefinido, por lo que se reduce lacantidad de trabajo manual necesario. SAP NetWeaver se basa en una tecnologíaque utiliza estándares industriales y puede ampliarse con herramientas dedesarrollo conocidas, como Java 2 Platform, Enterprise Edition (J2EE), Microsoft.NET e IBM WebSphere.

Not all SAP applications are based on SAP NetWeaver, in particular SAP BusinessOne. If participants ask about the interoperability of .NET and WebSphere, youcan point to these two areas in http://sdn.sap.com under SAP NetWeaver →Platform and Operations.

Prácticas y escenarios de tecnologías de la información

With SAP NetWeaver 7.0, SAP departs from the layered structure of SAPNetWeaver and moves towards IT practices and scenarios. Demo: On your SAPcountry site (for example, to www.sap.de) under Platform → SAP NetWeaver →SAP Business Maps point out IT Practices and IT Scenarios.

For SAP NetWeaver 7.1 more terminology changes are planned...

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 29

Page 44: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Gráfico 9: Prácticas y escenarios de tecnologías de la información

SAP NetWeaver le permite implementar procesos de tecnología de la informaciónen un abanico de métodos de solución llamados prácticas de tecnología dela información. Para cada práctica, SAP NetWeaver permite un abanico deactividades de tecnología de la información clave, que pueden realizarse utilizandolos componentes integrados de la plataforma. Aquí el interés no se centra enlos componentes del sistema ni en los componentes tecnológicos, sino en losobjetivos empresariales y de tecnología de la información de la empresa. Lasprácticas de tecnología de la información le permiten alcanzar los objetivos de suempresa en proyectos individuales y gestionables, es decir, en pasos secuencialesy de acuerdo con su importancia. Las prácticas de tecnología de la informaciónhacen referencia, por ejemplo, al incremento de la productividad de usuario através de una colaboración mejorada de toda la empresa, un acceso personalizadoa aplicaciones y datos, y una gestión mejorada de los conocimientos. Las prácticasde tecnología de la información muestran cómo puede utilizarse SAP NetWeaverpara solucionar ciertos problemas de tecnología de la información por medio deescenarios de tecnología de la información. Para cada práctica de tecnología dela información, SAP NetWeaver suministra los escenarios correspondientes, queactúan como guías de implementación.

El objetivo de los escenarios de tecnología de la información es ayudarlo, comousuario, colaborador o proveedor de servicios, con la instalación, configuración yoperación de SAP NetWeaver, así como también con la operación de aplicacionesSAP, aplicaciones específicas de usuario y la implementación de sus escenarios detecnología de la información definidos.

30 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 45: 119167612 taw10-01-es

TAW10_1 Lección: SAP NetWeaver

Niveles de SAP NetWeaver

The correct term: The four SAP NetWeaver layers consist of central functions(such as the portal). Key components like the SAP NetWeaver Portal providethese central functions.

Nota: All SAP NetWeaver component like the Portal, for example, havethe name SAP NetWeaver as the prefix since the SAP NetWeaver Release7.0. That is, the SAP Enterprise Portal is now called SAP NetWeaverPortal

SAP NetWeaver Component Previous Designation

SAP NetWeaver SAP Basis

SAP NetWeaver Application Server SAP Web Application Server

SAP NetWeaver Mobile SAP Mobile Infrastructure

SAP NetWeaver Portal SAP Enterprise Portal

SAP NetWeaver Business Intelligence SAP Business Information Warehouse

SAP NetWeaver ExchangeInfrastructure

SAP NetWeaver ExchangeInfrastructure

SAP NetWeaver CompositeApplication Framework

SAP Composite ApplicationFramework

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 31

Page 46: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Gráfico 10: SAP NetWeaver: Funciones

• People Integration

People Integration garantiza que sus empleados tengan acceso a lainformación y las funciones que necesitan para realizar sus actividades demanera rápida y eficiente. Las funciones del SAP NetWeaver Portal sonlas más importantes en este contexto. SAP NetWeaver Mobile sirve deplataforma universal para la movilidad de la empresa y es compatible con lassoluciones SAP de Mobile Business.

• Information Integration

Este nivel de integración proporciona acceso a toda la informaciónestructurada y no estructurada de su empresa. Las áreas clave de InformationIntegration están formadas principalmente por SAP NetWeaver BusinessIntelligence, Knowledge Management, como componente de SAPNetWeaver Portal y SAP NetWeaver Master Data Management. Todaslas áreas clave mencionadas anteriormente ofrecen opciones integrales paraacceder de manera uniforme a información distribuida en una empresa.

What is meant by “structured” information? This generally refers to SAPdata or data from an SAP system. All other information is referred to asunstructured. This does not mean that this data does not have a structure - ofcourse it can have a structure - but it does not have an SAP-specific structure.

• Process Integration

Process Integration garantiza que los procesos empresariales funcionen másallá de los límites de sistema en una infraestructura de sistemas heterogéneos.La SAP NetWeaver Exchange Infrastructure (SAP XI) juega un papelfundamental aquí y conecta sistemas SAP con sistemas externos. Para ello,utiliza sobre todo estándares públicos del mundo XML y Java.

• Application Platform

El SAP NetWeaver Application Server ofrece una infraestructuraprobada para aplicaciones empresariales en funcionamiento que se basanen tecnologías clave como J2EE o ABAP. Además del entorno de tiempode ejecución de las aplicaciones J2EE y ABAP, las herramientas dedesarrollo correspondientes también se envían y lo ayudan a implementarsus aplicaciones. Los estándares públicos, el acceso a aplicaciones basadoen browser y los servicios Web completan la plataforma de aplicación yconstituyen un instrumento importante para la arquitectura de servicio dela empresa.

Más allá de estos cuatro pasos, y en paralelo a ellos, SAP NetWeaver ofreceLifecycle Management y Composite Application Framework:

32 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 47: 119167612 taw10-01-es

TAW10_1 Lección: SAP NetWeaver

Lifecycle ManagementLifecycle Management permite el diseño, desarrollo, despliegue y gestiónde modificaciones de la solución completa y, por lo tanto, cumple con losrequisitos de las áreas de seguridad, diseño y modelado, pruebas y gestión deentornos de sistema.

Composite Application FrameworkEl Composite Application Framework (CAF) está integrado en SAPNetWeaver y les permite a SAP y a sus interlocutores utilizar herramientas,frameworks, normas y métodos para crear nuevas aplicaciones que se basanen procesos empresariales de todas las áreas de funciones.

SAP NetWeaver Application Server (SAP NetWeaverAS)Casi todos los sistemas SAP se basan en SAP NetWeaver AS y lo utilizan comoentorno de tiempo de ejecución. Junto con la base de datos, SAP NetWeaver ASes la plataforma de aplicación de SAP NetWeaver.

Gráfico 11: SAP NetWeaver AS es la base de los sistemas SAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 33

Page 48: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Gráfico 12: SAP NetWeaver Application Server

SAP NetWeaver AS es el resultado lógico del desarrollo avanzado de la SAPApplication Server Technology (antes: SAP Basis), con una atención especialen las aplicaciones basadas en Web.

SAP NetWeaver AS ofrece:

• Un entorno de tiempo de ejecución fiable y probado exhaustivamente, que seha desarrollado de manera continua durante más de diez años

• Un framework para ejecutar procesos empresariales complejos que cumplanlos estándares de seguridad más altos

• Un entorno de desarrollo fiable y de fácil manejo• Soporte para estándares públicos, incluidos HTTP, HTTPS, SMTP, WebDAV,

SOAP, SSL, SSO, X.509, Unicode, HTML, XML y WML• Grandes posibilidades de ampliación• Soporte para diferentes sistemas operativos y plataformas de bases de datos

34 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 49: 119167612 taw10-01-es

TAW10_1 Lección: SAP NetWeaver

Dado que las aplicaciones suministradas por SAP no siempre requieren ambosentornos de tiempo de ejecución (ABAP y Java), hay distintas opciones deinstalación para SAP NetWeaver AS. Éstas son:

• SAP NetWeaver AS ABAP:infraestructura completa en la que se puedendesarrollar y utilizar aplicaciones basadas en ABAP.

• SAP NetWeaver AS Java:infraestructura completa en la que se puedendesarrollar y utilizar aplicaciones que cumplen con J2EE.

• SAP NetWeaver AS ABAP+Java: Infraestructura completa, en la que sepueden desarrollar y utilizar aplicaciones basadas en ABAP y aplicacionesbasadas en J2EE. Esta instalación enfatiza la integración perfecta de Java yABAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 35

Page 50: 119167612 taw10-01-es

Capítulo 1: La gran imagen TAW10_1

Discusión con moderadorThe discussion should illustrate the strengths and advantages of SAP NetWeaver.

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.

Which advantages do SAP customers gain by using SAP NetWeaver?

36 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 51: 119167612 taw10-01-es

TAW10_1 Lección: SAP NetWeaver

Resumen de la lección

Ahora podrá:• Explicar el concepto básico de SAP NetWeaver• Describir la función principal de SAP NetWeaver Application Server

Más informaciónPara obtener más información, consulte las siguientes secciones:

• http://www.sap.com/netweaver.• http://service.sap.com/it-scenarios

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 37

Page 52: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Enumerar los componentes clave de las soluciones SAP• Explicar las diferencias entre una aplicación y un componente• Describir el proceso de entrega de software SAP• Explicar la estrategia de actualización SAP• Descubrir cuándo estarán disponibles las liberaciones de software SAP• Explicar el concepto básico de SAP NetWeaver• Describir la función principal de SAP NetWeaver Application Server

38 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 53: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

33Examine sus conocimientos

1. SAP ofrece las siguientes soluciones:

Seleccione la(s) respuesta(s) correcta(s).□ A SAP Business Change Enabler (SAP BCE)□ B SAP Product Lifecycle Management (SAP PLM)□ C SAP Customer Relationship Management (SAP CRM)□ D SAP Supply Chain Management (SAP SCM)□ E SAP Strategic Organization Planning (SAP SOP)

2. SAP garantiza ciertos períodos de mantenimiento para los productos basadosen SAP NetWeaver. El mantenimiento general se puede ampliar si se pagancuotas de mantenimiento superiores. ¿Durante cuántos años se realizará elmantenimiento de un producto SAP en total, si usted está dispuesto a pagaruna cuota de mantenimiento con un aumento del 2% durante una parte delperíodo de mantenimiento?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 39

Page 54: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

34Respuestas

1. SAP ofrece las siguientes soluciones:

Respuesta: B, C, D

SAP BCE y SAP SOP son productos imaginarios. Los demás productosson aplicaciones SAP reales.

2. SAP garantiza ciertos períodos de mantenimiento para los productos basadosen SAP NetWeaver. El mantenimiento general se puede ampliar si se pagancuotas de mantenimiento superiores. ¿Durante cuántos años se realizará elmantenimiento de un producto SAP en total, si usted está dispuesto a pagaruna cuota de mantenimiento con un aumento del 2% durante una parte delperíodo de mantenimiento?

Respuesta: En este caso, el mantenimiento del software se realiza durante 6(5 + 1) años.

40 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 55: 119167612 taw10-01-es

Capítulo 235 Navegación

Since many course participants will be seeing an SAP system for the first time, itis important that they all receive a good grounding in the basics that will enablethem to access system functions efficiently. You should pay particular attention tothe developers and system administrators during this unit. They are the ones whowill often need to call up functions that are unfamiliar to them in the course oftheir work. To find these functions, administrators will need to know how to usethe command field (for example, search_sap_menu) and table TSTCT.

Resumen del capítuloEn esta unidad, aprenderá a usar SAP GUI para navegar en los sistemas SAP.Asimismo, aprenderá cómo obtener ayuda cuando trabaja en los sistemas SAP.

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

• Entrar al sistema correctamente• Enumerar algunas variantes de SAP GUI• Salir del sistema correctamente• Uso de varios métodos para iniciar funciones del sistema SAP• Crear una lista de favoritos• Usar las funciones de ayuda• Describir los menús estándar Sistema y Ayuda.

Contenido del capítuloLección: Navegación en general. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Procedimiento: Cambio de la clave de acceso inicial . . . . . . . . . . . . . . . . . . 50Procedimiento: Nuevo cambio de la clave de acceso modificada ... . 51Procedimiento: Salida a través de la barra de menús... . . . . . . . . . . . . . . . 55Ejercicio 2: Diseño de entrada al sistema y de pantalla.. . . . . . . . . . . . . . . 57

Lección: Navegación avanzada en SAP GUI ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 41

Page 56: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Ejercicio 3: Llamado de funciones ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

42 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 57: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Lección:36

Navegación en generalDuración de la lección: 40 Minutos

Resumen de la lecciónEste módulo ofrece un resumen de las distintas opciones de navegación en lossistemas SAP, y le enseñará los comandos básicos de navegación utilizando elSAP GUI para Windows como ejemplo.

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

• Entrar al sistema correctamente• Enumerar algunas variantes de SAP GUI• Salir del sistema correctamente

After completing this lesson, the participants should be able to log on to thesystem without errors and name and use the basic elements of an SAP GUI screenas well as log off from the system correctly. Course ADM100 covers how toconfigure SAP logon.

Ejemplo empresarialDesea descubrir qué opciones están disponibles normalmente para los usuariospara acceder a sistemas SAP.

Diferentes interfaces de usuario en el entorno SAPHay numerosos tipos de sistemas SAP, como sistemas ERP “clásicos”, perotambién hay otros tipos de sistemas como sistemas Portal o Business InformationWarehouse, por ejemplo. En función de su utilización, estos diferentes tipos desistemas ofrecen interfaces de usuario bastante distintas.

La siguiente lista menciona algunas tecnologías de acceso utilizadas a menudo porlos usuarios finales de estos sistemas (no por “técnicos”).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 43

Page 58: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Ejemplos de diferentes tecnologías de acceso para una pequeñaselección de tipos de sistemas SAP

Producto SAP Tecnología de acceso típica

SAP ERP (con SAPECC)

SAP GUI para Windows (GUI = interfaz gráfica deusuario)

SAP NetWeaver BI7.0

Interfaz basada en browser (diferentes browsersposibles) BEx Analyzer (requiere Excel en el front endadicionalmente)

SAP BusinessByDesign

Interfaz basada en browser (diferentes browsersposibles)

SAP BusinessAll-in-One

SAP NetWeaver Business Client

Tenga en cuenta que la lista anterior no cubre todos los productos SAP y que nose enumeran todas las tecnologías de acceso posibles (!) en todos los casos. Porejemplo, también se puede acceder a un sistema SAP ECC a través del browser outilizando el SAP GUI para Java. Asimismo, se puede acceder a SAP NetWeaverBI a través de SAP GUI para Windows, etc.

La próxima visualización se limitará a la tecnología de acceso más conocida,el SAP GUI.

La interfaz de presentación, SAP GUI (interfaz gráfica de usuario), le permite alusuario interactuar con el sistema SAP y registrar o visualizar datos.

SAP GUI implementa la interfaz gráfica de usuario utilizando las funcionesproporcionadas por el entorno de presentación relevante. SAP GUI se basa enla guía de estilo de Windows y está disponible para varias plataformas, ya queproporciona las mismas funciones para cada una. Si aprende a utilizar la SAPGUI en una plataforma concreta, no representa ningún problema cambiar a otraplataforma, a excepción de unos pocos atributos de la SAP GUI específicospara cada plataforma. Hay diferentes variantes de la SAP GUI, y todas puedenutilizarse de la misma manera, independientemente de la plataforma subyacente.

Están disponibles los siguientes tipos de SAP GUI:

• SAP GUI para el entorno Windows• SAP GUI para el entorno Java• SAP GUI para HTML

Nota: En la lista superior, se utilizan los términos oficiales de la SAP GUI;éstos sólo están disponibles en inglés. De manera coloquial, se utilizan lossiguientes términos como sinónimos (en el mismo orden): SAP GUI paraWindows, Java GUI y Web GUI. Tenga en cuenta que éstos no son los“términos SAP oficiales”, pero se utilizan frecuentemente de todas formas.

44 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 59: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Atención: Las variantes nombradas de SAP GUI sólo son adecuadaspara trabajar con sistemas SAP basados en ABAP (incluida la SAP GUIpara el entorno Java).

Para acceder a las aplicaciones SAP basadas en Java se utiliza unnavegador.

SAP GUI para el entorno Windows (abreviado como SAP GUI para Windows) esla implementación de SAP GUI en un entorno Microsoft Windows. SAP GUI paraWindows se escribe en C o C++, se ejecuta en plataformas basadas en Windows ypermite todas las transacciones en un sistema SAP.

El flujo de datos entre el nivel de presentación y el nivel de aplicación nose compone de imágenes preparadas, sino de información lógica compactasobre los elementos de operación y las entradas del usuario (protocolo DIAG).Normalmente, el volumen de datos transferidos en cada cambio de pantalla es deunos pocos KB. Por lo tanto, también puede conectar fácilmente servidores depresentación a través de rutas WAN.

SAP GUI para el entorno Java (abreviado como: SAP GUI para Java) se escribeen Java y es la implementación independiente de plataforma de SAP GUI. Al igualque SAP GUI para el entorno Windows, esta GUI también utiliza el protocoloDIAG, de manera que el volumen de datos transferidos en cada cambio de pantallasuele ser de pocos KB. Además, usted puede conectar fácilmente servidores depresentación a través de rutas WAN.

Puede instalar SAP GUI en el front end o, de manera alternativa, puede instalarlaen un servidor de terminal y acceder a ella utilizando clientes de terminal.

SAP GUI para HTML se compone del Internet Transaction Server (ITS) en elApplication Server ABAP (abreviado: AS ABAP) en el lado de servidor, y unnavegador Web en el lado de cliente. El ITS es necesario para convertir el flujo dedatos de SAP GUI ya existente en AS ABAP en HTML y viceversa. En este caso, seintercambia un flujo de datos de HTML entre el Internet Communication Managerde AS ABAP y el front end. La principal ventaja de SAP GUI para HTML es lainstalación más sencilla en el front end; la instalación en el navegador es suficiente.

El siguiente gráfico muestra las distintas alternativas y el flujo de comunicacióncon el despachador de AS ABAP.

If it is available and you know how to access it, you could at this point call up SAPGUI for the Java Environment (for example on a WTS) for the training systemyou are using and, once you have logged on, carry out a transaction in it (forexample, SM50). You could do the same for the HTML GUI in the browser, sothat the participants get to see the various types of GUI.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 45

Page 60: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Gráfico 13: Tipos alternativos de SAP GUI

Nota: Puede encontrar más información acerca de las distintas alternativasde SAP GUI en las siguientes notas SAP:

• Nota SAP 66971: plataformas front end soportadas• Nota SAP 314568: funciones no disponibles con SAP GUI para

HTML• Nota SAP 146505: SAP GUI para el entorno Java• Nota SAP 138869: SAP GUI en el servidor de terminal Windows

Entrar al sistemaSe puede acceder a la mayoría de las soluciones ofrecidas por SAP utilizandola SAP GUI (interfaz gráfica de usuario SAP). Por motivos de simplicidad, lassiguientes descripciones se refieren a SAP GUI para el entorno Windows.

SAP ofrece otro programa para iniciar el front end: SAP Logon. Cuando llamaa SAP Logon, éste muestra una lista de sistemas SAP para los que puede iniciarel proceso de entrada al sistema. Esta lista se obtiene de un fichero en el frontend: saplogon.ini. Este fichero suele estar preconfigurado de manera central yestá disponible para usuarios finales.

Durante la entrada al sistema, el programa SAP Logon también permite unadistribución dinámica de usuarios utilizando los recursos disponibles para elsistema seleccionado.

46 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 61: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Gráfico 14: El programa SAP Logon

Al entrar a un sistema SAP, se le pedirá que indique el usuario y la clave deacceso, entre otras cosas. Si ha implementado una solución Single Sign-On (SSO),es posible que no tenga que indicar esta información. Cuando entra al sistema,también selecciona un cierto mandante del sistema SAP. Generalmente, estecampo ya se ha completado correctamente.

Consejo: Un mandante generalmente representa a una empresa en unsistema SAP. Esto significa que, si un sistema SAP tiene varios mandantes,pueden representarse y activarse varias empresas simultáneamente eneste sistema. El mandante tiene un campo clave correspondiente en lastablas de la base de datos utilizadas por dicho sistema SAP. Al trabajaren un mandante, usted sólo tiene acceso a datos comerciales del mismomandante. Los mandantes, por lo tanto, equivalen a unidades económicasindependientes.

Al entrar al sistema, puede seleccionar un idioma de entrada al sistema soportadopor el sistema. Los sistemas SAP pueden permitir una gran cantidad de idiomas;inglés y otro idioma seleccionado es la cantidad mínima. La cantidad de idiomasinstalados determina los idiomas que su sistema soporta.

En la imagen de acceso, también tiene la opción de utilizar el pulsador Nuevaclave de acceso para cambiar su clave de acceso, como máximo una vez al día.

Su administrador del sistema puede agregar texto adicional a su imagen de acceso.Para ello, siga SAP-Hinweis 205487 - Eigener Text auf dem SAPGui Anmeldebild.

Nota: Las Notas SAP contienen información detallada sobre ciertasfunciones o correcciones de errores conocidos en productos SAP. Puedetener acceso a las Notas SAP a través, por ejemplo, del SAP ServiceMarketplace en Internet, utilizando un usuario válido (usuario S) y unaclave de acceso: http://service.sap.com/notes.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 47

Page 62: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Durante una entrada al sistema, puede trabajar en varias sesiones (procesandoventanas de un sistema SAP) simultáneamente. Su administrador de sistema puedeutilizar un parámetro de sistema para definir cuántas sesiones se permiten paracada entrada al sistema SAP. Para obtener más detalles, consulte SAP-Hinweis12466 - Anmeldebeschränkungen im R/3.

The parameter rdisp/max_alt_modes is used for this purpose. Six windowsare the default. The parameter cannot be set user-specifically but applies for allusers of the system or the logon instance.

Gráfico 15: La imagen de acceso de un sistema SAP

Los datos de usuario se almacenan en el sistema por mandante, es decir quepuede, por ejemplo, entrar al sistema en el mandante 100 de su sistema sin tenerun usuario para el mandante 200, incluso si su sistema tiene un mandante 200.Los datos de un usuario concreto dentro de un mandante se denominan registromaestro de usuario.

Existen múltiples entradas al sistema registradas en sistemas SAP. Esto es debidoa motivos de seguridad y licencia. Si el mismo usuario entra al sistema más deuna vez, luego, para cada entrada al sistema subsiguiente, el sistema muestra unmensaje de advertencia que le ofrece al usuario las siguientes tres opciones:

48 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 63: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Multiple logons are logged in table USR41_MLD.

• Cerrar todas las sesiones existentes y entrar al sistema nuevamente• Mantener las sesiones existentes abiertas y abrir una sesión adicional (esto

se registra en el log).• Finalizar esta entrada al sistema

Cambio de clave de accesoUtilice la clave de acceso inicial que se le ha asignado para entrar al sistema porprimera vez. Durante la primera entrada al sistema, se le pedirá que grabe unaclave de acceso modificada. Por motivos de seguridad, es aconsejable cambiarla clave de acceso de vez en cuando.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 49

Page 64: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

43Cambio de la clave de acceso inicial

1. Indique su nueva clave de acceso dos veces, activando ambos campos deentrada uno tras otro haciendo clic con el ratón o utilizando el tabulador.Tenga en cuenta que pueden configurarse numerosas reglas para la estructurade una clave de acceso en su sistema.

Gráfico 16: Ventana de diálogo para cambiar la clave de acceso

2. Finalmente, seleccione para guardar su nueva clave de acceso.

50 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 65: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

44Nuevo cambio de la clave de acceso modificadaPrerrequisitos

Consejo: Los usuarios pueden cambiar su clave de acceso una vez al díacomo máximo en la imagen inicial. En cambio, los administradores deusuarios autorizados para utilizar la transacción SU01 pueden cambiar laclave de acceso de un usuario tantas veces como lo deseen. De hecho, eladministrador sólo puede asignar nuevas claves de acceso iniciales.

Procedimiento1. En la imagen de acceso del sistema SAP, indique sus datos y su clave de

acceso actual.

2. En la parte superior izquierda, haga clic en el pulsador Nueva clave de acceso.

3. Cambie su clave de acceso tal como se describe arriba y grabe sus datos.

Different system parameters with the prefix login/* influence the passwordresponse in the SAP system. Parameter login/password_expiration_time, forexample, specifies after which number of days the user has to change his password.

Estructura de pantalla

You can, for example, use transaction GUIT to demonstrate the different screenelements. On the individual screens of this transaction, examples of input fields,pushbuttons, radio buttons and checkboxes are illustrated. Screen 700 showsfrequently used icons in the SAP system. System table ICON contains all iconsand their technical names. The behavior of the navigational arrows in transactionGUIT is also instructive: The green arrow (Back) is not active whereas the yellowand red arrows still work. You can also close transaction GUIT by enteringcommand /n. The instructor can also use other transactions to demonstrate thescreen elements.

Una vez que ha entrado al sistema correctamente, aparece la imagen inicial delsistema SAP. Esta pantalla también es conocida como pantalla SAP Easy Access.

La pantalla SAP Easy Access es la imagen inicial por defecto en los sistemas SAP.La parte izquierda de la pantalla contiene una jerarquía de árbol de los menúsdisponibles en el sistema SAP. Puede utilizar la parte derecha de la pantalla paravisualizar el logotipo de su empresa. Su administrador de sistema pone a sudisposición este gráfico de manera central. Los usuarios individuales no puedenpersonalizar dicho gráfico.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 51

Page 66: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Gráfico 17: SAP Easy Access

Puede obtener una descripción detallada de cómo configurar el gráfico en SAPEasy Access, en Detalles → Información de administración (si dispone de laautorización correcta). Tenga en cuenta que el gráfico se almacena en el sistema yse transporta al front end cada vez que un usuario entra al sistema. A pesar de quese transporta en formato comprimido, el gráfico no debería exceder los 20 KB.También puede evitar que se muestre el gráfico seleccionando la parametrizaciónConexión lenta en el programa SAP Logon (vea SAP-Hinweis 161053 - Benutzungdes SAPGUI im WAN), o utilizando Detalles → Opciones en la pantalla SAPEasy Access.

Aparece una pantalla típica (con algunos elementos comunes) si seleccionaSistema → Perfil de usuario → Datos propios y, después, la etiqueta Valores pordefecto. Entonces verá esta pantalla con los datos de su propio usuario:

52 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 67: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Gráfico 18: Elementos de pantalla en SAP GUI

Una interfaz de usuario SAP puede contener los siguientes elementos simples depantalla, por ejemplo:

• Campo de comandos• Barra de menús, barra de funciones del sistema, barra de título, barra de

herramientas de aplicación, barra de status• Casillas de selección• Botones de selección• Ficha

Puede iniciar aplicaciones directamente indicando su código de transacción en elcampo de comandos, que generalmente está oculto. Puede encontrar el códigode transacción de una aplicación en el menú de resumen de la pantalla SAP EasyAccess, en la barra de status (ver abajo), o en la aplicación en sí misma, en Sistema→ Status.

La barra de menús es la línea superior de cualquier ventana de diálogo delsistema SAP. Los menús que se muestran aquí dependen de la aplicación en la quese encuentra. Estos menús también pueden contener menús en cascada.

Los pulsadores de la barra de herramientas estándar se muestran en todas laspantallas SAP. Si no están disponibles en una aplicación, los pulsadores que nopuede utilizar en esa pantalla están desactivados. Si se sitúa el cursor durante un

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 53

Page 68: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

instante sobre un pulsador, aparece una marca con el nombre o la función delpulsador. Si es adecuado, también se muestra la parametrización de la tecla defunción correspondiente.

La barra de título es la función en la que se encuentra actualmente.

La barra de herramientas de aplicación muestra los pulsadores disponibles en laaplicación en la que se encuentra actualmente.

La barra de status muestra información sobre el status actual del sistema, comoadvertencias o errores. También puede cambiar la variante de visualización paramostrar, por ejemplo, el código de transacción de la transacción en la que seencuentra actualmente.

Dentro de un grupo de campos, las casillas de selección le permiten seleccionarvarias opciones a la vez.

Con los botones de selección, sólo puede seleccionar una opción.

Una etiqueta organiza varias subscreens para mejorar la claridad.

Los campos de entrada y los pulsadores son elementos de pantalla adicionales.

Salida del sistemaDebería salir del sistema al terminar su trabajo en el sistema SAP. Tiene variasopciones para hacerlo:

54 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 69: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

47Salida a través de la barra de menús

1. En la barra de menús, seleccione Sistema → Salir.

Consejo: También puede hacer clic en la flecha amarilla delmenú SAP Easy Access o ingresar el comando /nend en el campode comandos. Si tiene varias sesiones abiertas, la flecha amarillasólo cierra la ventana activa. El campo de diálogo para salir sóloaparece en la última ventana.

Atención: El comando /nex finaliza inmediatamente su sesión sinconsultar primero con las ventanas de diálogo. ¡Todas las sesionesde su sesión terminal se cierran y las entradas que no se han grabadose pierden!

2. Aparece una ventana de diálogo de salida y le comunica que perderá losdatos que no se hayan grabado al salir del sistema.

Gráfico 19: Ventana de diálogo de salida

3. Para salir, seleccione Sí.

Consejo: Desde el punto de vista del sistema operativo Windows,una sesión SAP es una aplicación normal. Por lo tanto, tambiénpuede cerrar sesiones SAP con los medios del sistema operativo,por ejemplo, utilizando la combinación de teclas Alt+F4. Cuandocierra la última ventana de su sesión, la ventana de diálogo tambiénse muestra.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 55

Page 70: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

56 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 71: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

49 Ejercicio 2: Diseño de entrada al sistemay de pantallaDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Utilizar SAP GUI para Windows para entrar al sistema SAP y navegar

Ejemplo empresarialQuiere trabajar en un sistema SAP.

Datos del sistemaSistema: The training system assigned to you (such as DEV)Mandante: The client assigned to you (such as 100)ID de usuario: The user name that you have given the participants(such as SAPTEC-##)Clave de acceso: The password that you have given the participants forthe relevant user.Parametrizaciones del sistema: None

Tarea: Entrar al sistema y tareas inicialesEntre al sistema de formación y realice algunos ejercicios básicos en el sistema.Los accesos vía menús hacen referencia al menú SAP estándar.

Consejo: Utilice los datos de entrada al sistema que le ha proporcionadosu instructor.

1. Inicie el programa SAP Logon y cree una nueva entrada según la informaciónque le haya proporcionado su instructor. Seleccione el pulsador Entrar alsistema.

Indique el mandante, el nombre de usuario, la clave de acceso inicial y elidioma de trabajo que le indique el instructor. Cuando entre al sistema porprimera vez, indique una nueva clave de acceso de su elección dos vecesen la ventana que aparece.

2. ¿Cuál es el número máximo de sesiones paralelas (ventanas del sistema SAP)que puede abrir utilizando Sistema → Crear sesión?

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 57

Page 72: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

3. ¿Cuál es el nombre de la función que alcanza si selecciona Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios?¿Qué código de transacción podría utilizar para llamar esta transacción enlugar del menú?

58 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 73: 119167612 taw10-01-es

TAW10_1 Lección: Navegación en general

Solución 2: Diseño de entrada al sistemay de pantallaTarea: Entrar al sistema y tareas inicialesEntre al sistema de formación y realice algunos ejercicios básicos en el sistema.Los accesos vía menús hacen referencia al menú SAP estándar.

Consejo: Utilice los datos de entrada al sistema que le ha proporcionadosu instructor.

1. Inicie el programa SAP Logon y cree una nueva entrada según la informaciónque le haya proporcionado su instructor. Seleccione el pulsador Entrar alsistema.

Indique el mandante, el nombre de usuario, la clave de acceso inicial y elidioma de trabajo que le indique el instructor. Cuando entre al sistema porprimera vez, indique una nueva clave de acceso de su elección dos vecesen la ventana que aparece.

a) Siga las instrucciones del ejercicio.

2. ¿Cuál es el número máximo de sesiones paralelas (ventanas del sistema SAP)que puede abrir utilizando Sistema → Crear sesión?

a) Este sistema de formación debería permitirle abrir hasta 6 sesiones.

3. ¿Cuál es el nombre de la función que alcanza si selecciona Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios?¿Qué código de transacción podría utilizar para llamar esta transacción enlugar del menú?

a) La función se denomina Lista de usuarios (consulte la entrada en labarra de título). Puede encontrar el código de transacción relevanteutilizando Sistema → Status. En este caso, el código es SM04.

También puede visualizar el código de transacción de una transacciónactiva en la barra de status.

De manera alternativa, puede visualizar permanentemente los códigosde transacción en el menú SAP Easy Access. Seleccione Barra de menú→ Extras → Opciones y active el campo Visualizar nombres técnicos.

Una cuarta opción sería visualizar los detalles seleccionando Barra demenú → Extras → Detalles técnicos. Para ello, la entrada de menúcorrespondiente debería seleccionarse primero con el ratón.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 59

Page 74: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Resumen de la lección

Ahora podrá:• Entrar al sistema correctamente• Enumerar algunas variantes de SAP GUI• Salir del sistema correctamente

Más información

• Para obtener más información, consulte la siguiente documentación en línea:Ayuda → Biblioteca SAP → Introducción al sistema SAP.

60 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 75: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

Lección:52

Navegación avanzada en SAP GUIDuración de la lección: 60 Minutos

Resumen de la lecciónEn este módulo conocerá varias maneras de llamar funciones en los sistemas SAP.Además, se introducen diferentes opciones de selección y funciones de ayuda. Porúltimo, aprenderá a trabajar con salidas en lista.

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

• Uso de varios métodos para iniciar funciones del sistema SAP• Crear una lista de favoritos• Usar las funciones de ayuda• Describir los menús estándar Sistema y Ayuda.

During the course of this lesson, you should explain to the participants the variousoptions for calling functions using either the mouse or the keyboard. Pay particularattention to navigation using transaction codes. There is a simple method foradministrators to create their own lists of transaction codes: select the entriesrequired for the list from the table TSTCT and save them in Excel. The easiestway of doing this is to use the function System → List → Save → Local file. Youwill often be asked how to create transaction code lists: This is the answer. Endusers do not need to create transaction code lists in this way, since they have theirrole-based menus at their disposal, which contain the functions required for thatrole, normally about 10 to 15.

The significance of the user menus and the option of switching to the SAP menuare also covered in this lesson.

Ejemplo empresarialQuiere saber cómo se pueden iniciar las funciones en el sistema SAP, y qué ayudale proporciona el sistema.

Menú de usuario y menú SAPEl menú SAP Access se visualiza automáticamente después de iniciar la sesión;representa el punto de acceso estándar a un sistema SAP para SAP GUI enWindows. La barra de navegación en la parte izquierda de la pantalla contieneuna clara estructura de árbol, que consiste en entradas de menú y entradas de

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 61

Page 76: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

favoritos. Puede ajustar el área favoritos según sus necesidades. Las entradas delos menús SAP y de los menús de usuario sólo se pueden modificar por partede administradores de sistema.

SAP and area menus can be processed using SE43. The user menus are bound toauthorization roles. The latter are processed using PFCG.

Gráfico 20: Lista de favoritos y menú de usuario

El usuario final puede cambiar entre el menú de usuario basado en roles y el menúestándar de SAP (si las parametrizaciones del sistema lo permiten).

Consejo: Los administradores del sistema pueden utilizar la tablaUSERS_SSM para determinar si los usuarios pueden cambiar entre el menúSAP y sus menús de usuario. Si ninguno de los menús está permitido, elmenú de usuario sigue visualizándose. La disponibilidad del menú deusuario o SAP no afecta las autorizaciones de un usuario. Esto significaque un usuario siempre puede llamar funciones autorizadas utilizando uncódigo de transacción, independientemente de la estructura de menú.

El menú de usuario basado en roles se crea sobre la base de los roles asignadosal usuario y se transfiere al front end. Esto significa que tiene sentido mantenerlos roles tan pequeños como sea posible, porque los roles grandes podrían tardarmucho tiempo en llegar al front end en ciertas circunstancias. Si un usuario tienevarios roles asignados, algunas funciones pueden repetirse en distintas partesdel menú de usuario basado en roles. Si no quiere que aparezcan dos veces,

62 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 77: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

consulte SAP-Hinweis 357693 - Redundanzvermeidung im Easy Access (y lasotras notas enumeradas ahí) para obtener información sobre cómo identificar yborrar duplicados, y cuestiones relacionadas con el tema.

Consejo: Mientras tenga la autorización apropiada, también puedevisualizar menús de usuario distintos de los que tiene asignados en suregistro maestro de usuario. Para ello, seleccione Otro menú. UtiliceCrear rol para iniciar la transacción de actualización de roles, PFCG.

Los menús de usuario y SAP se pueden estructurar de una manera bastantecompleja. Es difícil recordar la ruta exacta de la transacción que busca. Mientrasla transacción no se haya copiado en el área favoritos, puede encontrarla conmayor facilidad con transacciones especiales de búsqueda. Las transaccionesSEARCH_SAP_MENU y SEARCH_USER_MENU buscan los menúscorrespondientes para el patrón de texto predefinido. El resultado de búsqueda seprepara en una vista de lista desde la cual puede obtener la vía de navegación. Lastransacciones encontradas no se pueden iniciar directamente con un doble clic.

A further search option for SAP menu entries is the transaction SDMO, which alsoallows you to search for a text pattern. A (technically out-of-date) dynamic menuis generated, from which the transactions found can be started with a double-click.

Gestión de favoritosAdemás del menú de área o menú SAP, el usuario también obtiene funciones en elárea favoritos. Los enlaces a transacciones utilizadas con frecuencia, los enlacesWeb o los ficheros se pueden almacenar en el área favoritos.

The users’ favorites’ entries are in the system tables SMEN_BUFFC andSMEN_BUFFI. Administrators can access these table to make changes andthereby change or delete the favorites of large user groups.

La lista de favoritos contiene, por lo tanto, referencias a funciones del sistema SAPo enlaces a contenido de Internet o a ficheros en el ordenador front end del usuariofinal. La lista de favoritos, que inicialmente está vacía, la puede tratar cada usuariofinal según sus preferencias; usted sólo puede ver su propia lista de favoritos.Dado que los datos de favoritos se almacenan en el sistema SAP, todos los usuariospueden tener diferentes colecciones de favoritos en los diferentes sistemas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 63

Page 78: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Possible instructor demo: Demonstrate the download of your own favorites menu.Save the data, for example, under C:\temp\fav.txt on your front-end PC. After that,delete the complete favorites list. Now upload the favorites from the file youhave just saved into the system again.

Consejo: Los menús de favoritos completos, incluidas las estructuras decarpetas, se pueden copiar fácilmente cargándolos o bajándolos de unsistema SAP a otro. Los menús de favoritos descargados se almacenantemporalmente en el PC front end.

The upload and download of favorites requires the corresponding authorizationsfor the authorization object S_GUI. It could be that the user does not haveauthorization in the productive customer system to upload.

Para mejorar la estructuración, clasifique los favoritos en carpetas propias. Puedetratar los favoritos en la pantalla SAP Easy Access utilizando la entrada de menúFavoritos.

El menú Favoritos le da la opción de añadir una función del menú de usuario(o SAP) a su lista personal de favoritos, seleccionando la función y escogiendoFavoritos → Añadir. Aquí, el acceso vía menús también se escribe con el textode la entrada de favoritos hasta llegar a un límite. Si ha resaltado una entrada demenú utilizando el ratón, puede copiar el nodo seleccionado en el área favoritoshaciendo clic con el botón derecho.

Como alternativa, también puede arrastrar los elementos desde el área de menúutilizando el ratón, y almacenarlos en el área favoritos (arrastrar y soltar). Puedeañadir URLs o enlaces a ficheros a su lista de favoritos seleccionando Favoritos→ Añadir otros objetos. Haga clic en el símbolo de triángulo a la izquierda delsímbolo de fichero para desplegar u ocultar la lista de favoritos.

Consejo: Para cambiar el nombre de una transacción en Favoritos, resaltela entrada de favoritos correspondiente y seleccione el acceso vía menúsFavoritos → Modificar. Puede cambiar y grabar el texto en la ventana dediálogo que se abre.

Puede borrar entradas de favoritos que ya no necesite. Al hacerlo, el enlace con lafunción correspondiente se borra de su lista de favoritos. Si quiere borrar todoel menú Favoritos, resalte la entrada Favoritos y haga clic con el botón derechodel ratón para llamar el menú de contexto disponible. Seleccione Borrar todoslos favoritos.

64 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 79: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

Llamado de funcionesTiene varias opciones para navegar en un sistema SAP:

• Indicando códigos de transacción en el campo de código OK• Seleccionando posiciones de los menús en la barra de menús• Seleccionando posiciones de la lista de favoritos o de los menús de usuario o

SAP

Gráfico 21: Distintas opciones de navegación

Puede alcanzar los menús en la barra de menús utilizando simplemente lacombinación de teclas Alt+<#> (# equivale a la letra subrayada de la posiciónde menú seleccionada) o Alt y navegar con el cursor utilizando las teclas deflecha en el teclado.

Puede utilizar el teclado para ir a la pantalla SAP Easy Access, o el campo decódigo OK, y llamar funciones del sistema desde allí.

Consejo: Utilice las siguientes teclas para navegar utilizando el teclado:

• TAB se desplaza de un elemento de campo al siguiente dentro de ungrupo de campos.

• Ctrl + TAB se desplaza de un grupo de campos al primer elementodel siguiente grupo de campos.

• Ctrl + / se desplaza directamente al campo de código OK.

Puede encontrar más accesos rápidos mediante Customizing de laconfiguración local (Alt+F12) → Ayuda SAP GUI.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 65

Page 80: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Cuando el campo de código OK está activado (también conocido como campo decomandos), puede utilizar la tecla F1 para visualizar posibles entradas para estecampo relevante. Las siguientes entradas son posibles:

• /n para cancelar la transacción en curso• /nXXXX para llamar la transacción XXXX directamente desde otra

transacción. Sin el prefijo sólo puede llamar XXXX desde la pantalla SAPEasy Access.

• /o para visualizar el resumen de sesiones• /oXXXX para llamar la transacción XXXX en una nueva sesión directamente

desde otra transacción• /nend para finalizar la sesión con una ventana de diálogo de confirmación• /nex para finalizar la sesión sin una ventana de diálogo de confirmación• /i para borrar la sesión que está utilizando actualmente

Nota: El campo de código OK es una excepción en la que la selección dela tecla F4 no muestra la ayuda para entradas. La tecla F4 en el campode código OK enumera las últimas 15 entradas diferentes en el campo decódigo OK. Esta lista se almacena en el registro del front end y es válidapara todas las sesiones en el front end (sin importar el sistema que seutiliza).

Opciones de ayudaEl sistema SAP le ofrece varias opciones de ayuda que se introducen en lasiguiente sección.

Ayuda F1Con F1 se obtienen las explicaciones sobre los campos, los menús, las funcionesy los mensajes. La ayuda F1 también muestra información técnica sobre elcampo relevante. Allí encontrará el ID de parámetro que puede utilizar alconfigurar valores predeterminados específicos de usuario para campos de entradaque también están enlazados con el ID de parámetro. También puede obtenerinformación interesante llamando la ayuda F1 en el campo de código OK, porejemplo.

66 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 81: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

Gráfico 22: La ayuda F1

También puede utilizar otros pulsadores en la ventana de diálogo Auxiliar derendimiento para obtener información acerca del campo seleccionado. Unode los datos más importantes, además del enlace a la Ayuda para aplicacionessensible al contexto, es el enlace a la Información técnica. Selecciónela paraobtener información detallada, como el ID de parámetro asignado al campo.Puede utilizar parámetros para fijar valores predeterminados para campos deentrada utilizados con frecuencia; para hacerlo, los parámetros se almacenan conlos valores deseados en el registro maestro de usuario.

Nota: Es posible que deba activar primero el Auxiliar de rendimientoutilizando el menú Ayuda → Parametrizaciones → Ayuda F1.

Ayuda F4Con F4 se obtiene información sobre los valores de entrada posibles. Tambiénpuede llamar la ayuda F4 para un campo con el pulsador más próximo a laderecha del campo seleccionado. Si un campo contiene un símbolo de marca deverificación, sólo puede pasar al siguiente paso en la aplicación después de indicarun valor permitido (entrada obligatoria). Puede utilizar variantes de transacción ode pantalla, o el Customizing para marcar campos como obligatorios u opcionales,ocultos o rellenos con valores estándar ocultos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 67

Page 82: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Gráfico 23: La ayuda F4

La ayuda F4 visualiza una lista de entradas posibles para un campo. Si hay muchasentradas posibles, se muestra una pantalla de selección por separado. Si hay unalista de aciertos larga, la ayuda F4 sólo muestra tantas entradas como el usuariohaya especificado en la etiqueta Ayuda F4, en Ayuda → Parametrizaciones. Elvalor predeterminado para la cantidad máxima de aciertos visualizados es 500.Tómese su tiempo para familiarizarse con el resto de las parametrizaciones quepuede configurar aquí.

Consejo: Los usuarios también pueden crear listas de espera personal.Un empleado S&D que sólo es responsable de Munich, por ejemplo,únicamente quiere ver los mandantes de Munich y define una lista deespera personal correspondiente. Sin embargo, el empleado sigue teniendola opción en todo momento de cambiar a la vista total de los clientescompletos, o de actualizar o borrar por completo la lista de valores.

Demonstrate how you create a personal list of values using SU3 as an examplefor the possible entries of the logon language, Fixed values tab page. Enter DEand EN in your personal values list. Demonstrate the effect when you call up thepossible entries again after creating the personal list.

Biblioteca SAP (Documentación online)La Biblioteca SAP es una ayuda útil para obtener información acerca de lasfunciones de sistema. Le permite acceder a la documentación online. Lainformación almacenada aquí no sólo describe cómo utilizar las funciones desistema, sino que también explica los conceptos de arquitectura del sistema, da

68 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 83: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

ejemplos de cómo configurar varios procesos, y le advierte de posibles erroresde usuario y sus consecuencias. La documentación online también contienevarios consejos y trucos para ayudarle a realizar las tareas comunes más fácil yrápidamente.

Gráfico 24: La Biblioteca SAP

Consejo: También puede tener acceso a la Biblioteca SAP en Internet.Llame la dirección http://help.sap.com. Aquí puede acceder a ladocumentación completa de productos para todas las Releases; tambiénestá disponible una búsqueda de texto completo por solución de fácilmanejo.

Los menús de sistema y de ayudaLos menús de Sistema y Ayuda siempre están disponibles con las mismas opcionesen cada pantalla de un sistema SAP.

El menú de Sistema le permite tener acceso a varias funciones de sistema.Este menú también contiene funciones a las que sólo puede acceder utilizandoeste menú (no de otra manera). Puede salir utilizando Sistema → Salir, yobtener información útil acerca de su sistema y de la función que está utilizandoactualmente, como el código de transacción, seleccionando Sistema → Status.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 69

Page 84: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Gráfico 25: Los menús de sistema y de ayuda

Puede utilizar el menú de Ayuda para tener acceso a la documentación del sistema.También puede ver las Infos de release y configurar las parametrizacionesestándar para su ayuda F4. Sin embargo, mayormente utilizará el menú Ayudapara navegar a la sección específica de la documentación relevante para su trabajoactual en el contexto actual. La ayuda sensible al contexto también se denominaAyuda para aplicaciones. La herramienta para tener acceso a la documentaciónen general es la Biblioteca SAP.

70 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 85: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

61 Ejercicio 3: Llamado de funcionesDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Familiarizarse con varias formas de llamar funciones y navegar por el sistema

Ejemplo empresarialDesea llamar funciones.

Datos del sistemaSistema: The training system assigned to you (such as DEV)Mandante: The client assigned to you (such as 100)ID de usuario: The user name you have been given (such asSAPTEC-##)Clave de acceso: The password that you have given the participants forthe relevant user.Parametrizaciones del sistema: None

Tarea 1: Varias formas de llamar el resumen deusuarios¿Quién se encuentra actualmente dentro del sistema de formación?

1. Llame la transacción para visualizar una lista de los usuarios que hanentrado al sistema. En el menú estándar SAP, seleccione Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios.

2. Para salir del resumen de usuarios, pulse la tecla F3 o el botón Atrás en labarra de herramientas estándar. A continuación, indique sm04 en el campode comandos de la pantalla SAP Easy Access. Esto lo llevará directamente alresumen de usuarios.

Tarea 2: Opcional: Creación de un menú de favoritosGrabe las transacciones utilizadas con frecuencia en un menú de favoritos.

1. Expanda el menú SAP hasta el resumen de usuarios: Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios.Resalte la entrada de transacción con el ratón.

A continuación, seleccione Favoritos → Añadir en la barra de menús. Latransacción se graba en el área de favoritos.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 71

Page 86: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

2. Agregue las siguientes transacciones al menú Favoritos sin expandir primeroel menú SAP:

RSPFPAR, SEARCH_SAP_MENU, SEARCH_USER_MENU

3. ¿Puede distinguir entre las entradas de favoritos mediante el método utilizadopara registrarlas?

4. Cree una carpeta con el título Opciones de búsqueda en la que podráalmacenar ambas transacciones de búsqueda.

5. Averigüe con qué frecuencia y en qué lugar del menú SAP se almacena latransacción para el resumen de usuarios.

Transac-ción

Vía en el menú SAP

SM04

SM04

SM04

Tarea 3: Opcional: Uso de la ayuda F1 y F4Utilizar la información técnica de la ayuda F1.

1. Averigüe en qué tabla de su sistema SAP están almacenados los códigos detransacción. Para ello, utilice el campo de entrada de diálogo para indicaruna transacción de inicio, aquí: SAP Easy Access Detalles →Configurartransacción de inicio.

72 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 87: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

Solución 3: Llamado de funcionesTarea 1: Varias formas de llamar el resumen deusuarios¿Quién se encuentra actualmente dentro del sistema de formación?

1. Llame la transacción para visualizar una lista de los usuarios que hanentrado al sistema. En el menú estándar SAP, seleccione Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios.

a) Para ver la solución, consulte la pregunta.

2. Para salir del resumen de usuarios, pulse la tecla F3 o el botón Atrás en labarra de herramientas estándar. A continuación, indique sm04 en el campode comandos de la pantalla SAP Easy Access. Esto lo llevará directamente alresumen de usuarios.

a) Para ver la solución, consulte la pregunta.

Tarea 2: Opcional: Creación de un menú de favoritosGrabe las transacciones utilizadas con frecuencia en un menú de favoritos.

1. Expanda el menú SAP hasta el resumen de usuarios: Herramientas →Administración → Monitor → Supervisar sistema → Resumen de usuarios.Resalte la entrada de transacción con el ratón.

A continuación, seleccione Favoritos → Añadir en la barra de menús. Latransacción se graba en el área de favoritos.

a) Consulte el texto del ejercicio.

Consejo: Alternativamente, puede utilizar el método dearrastrar y soltar o el menú contextual para copiar transaccionesen el área de favoritos. El menú contextual se abre haciendoclic con el botón derecho del ratón.

2. Agregue las siguientes transacciones al menú Favoritos sin expandir primeroel menú SAP:

RSPFPAR, SEARCH_SAP_MENU, SEARCH_USER_MENU

a) A continuación, seleccione Favoritos → Insertar transacción en labarra de menús. Indique la transacción deseada en la ventana de diálogoy grabe los datos. Este proceso debe ejecutarse individualmente paracada transacción.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 73

Page 88: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

3. ¿Puede distinguir entre las entradas de favoritos mediante el método utilizadopara registrarlas?

a) Sí; si se ingresan mediante una selección previa en el menú, una partede la información de la vía del acceso al menú se almacena como textode favoritos.

4. Cree una carpeta con el título Opciones de búsqueda en la que podráalmacenar ambas transacciones de búsqueda.

a) Seleccione Favoritos → Insertar fichero. Asigne el nombre Opcionesde búsqueda al fichero. A continuación, arrastre ambas transaccionesde búsqueda (SEARCH_SAP_MENU, SEARCH_USER_MENU) alfichero mediante el ratón.

5. Averigüe con qué frecuencia y en qué lugar del menú SAP se almacena latransacción para el resumen de usuarios.

Transac-ción

Vía en el menú SAP

SM04

SM04

SM04

a) Inicie la transacción de búsqueda SEARCH_SAP_MENU. En laventana de diálogo, indique SM04 e inicie la búsqueda. La transacciónSM04 se almacena un total de tres veces en el menú SAP. Del mismomodo, ahora puede buscar en el menú de usuario.

Transac-ción

Vía en el menú SAP

SM04 Herramientas → Administración → Monitor →Supervisar sistema → Resumen de usuarios

SM04 Herramientas → Administración → Monitor →Rendimiento → Excepciones/Usuario → Usuarioactivo → Usuario local

SM04 Herramientas → CCMS → Control/Supervisión →Rendimiento → Excepciones/Usuario → Usuarioactivo → Usuario local

Continúa en la página siguiente

74 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 89: 119167612 taw10-01-es

TAW10_1 Lección: Navegación avanzada en SAP GUI

Tarea 3: Opcional: Uso de la ayuda F1 y F4Utilizar la información técnica de la ayuda F1.

1. Averigüe en qué tabla de su sistema SAP están almacenados los códigos detransacción. Para ello, utilice el campo de entrada de diálogo para indicaruna transacción de inicio, aquí: SAP Easy Access Detalles →Configurartransacción de inicio.

a) Puede obtener esta información llamando la ayuda F1 en la ventana dediálogo para indicar la transacción de inicio. A continuación, consultela información técnica. La tabla se denomina TSTC.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 75

Page 90: 119167612 taw10-01-es

Capítulo 2: Navegación TAW10_1

Resumen de la lección

Ahora podrá:• Uso de varios métodos para iniciar funciones del sistema SAP• Crear una lista de favoritos• Usar las funciones de ayuda• Describir los menús estándar Sistema y Ayuda.

Más información

• Documentación: Puede encontrar ayuda ampliada para SAP Easy Access enAyuda → Ayuda para aplicaciones.

76 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 91: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Entrar al sistema correctamente• Enumerar algunas variantes de SAP GUI• Salir del sistema correctamente• Uso de varios métodos para iniciar funciones del sistema SAP• Crear una lista de favoritos• Usar las funciones de ayuda• Describir los menús estándar Sistema y Ayuda.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 77

Page 92: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

78 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 93: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

69Examine sus conocimientos

1. Sólo puede trabajar en una ventana (sesión) a la vez en un sistema SAP.

Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

2. ¿Cuáles de las siguientes afirmaciones describen de manera precisa a unmandante en un sistema SAP?Seleccione la(s) respuesta(s) correcta(s).□ A Un mandante representa una unidad económica completamente

independiente.□ B Un mandante tiene su propia base de datos.□ C Un mandante equivale a un cliente.□ D Un mandante puede representar a una empresa entera.

3. Los siguientes strings son entradas válidas en el campo de comandos:Seleccione la(s) respuesta(s) correcta(s).□ A /nend□ B /nex□ C ?SM04□ D /nsm04□ E Desde SAP Easy Access: SM04□ F Desde SAP Easy Access: search_sap_menu

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 79

Page 94: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

70Respuestas

1. Sólo puede trabajar en una ventana (sesión) a la vez en un sistema SAP.

Respuesta: Falso

Una vez que ha entrado al sistema, es posible trabajar en varias ventanas(sesiones) en paralelo.

2. ¿Cuáles de las siguientes afirmaciones describen de manera precisa a unmandante en un sistema SAP?

Respuesta: A, D

Los datos de todos los mandantes de un sistema SAP se almacenan en unaúnica base de datos común. No obstante, estos datos se dividen por mandante,de manera que pueden administrarse y controlarse diferentes empresas endistintos mandantes. Un mandante “no” es un cliente en un sistema SAP.

3. Los siguientes strings son entradas válidas en el campo de comandos:

Respuesta: A, B, D, E, F

Puede indicar códigos de transacción válidos directamente en la pantallaSAP Easy Access. Si está en otra función, indique /n delante del código detransacción. /nend y /nex son dos opciones de salida distintas. ?SM04no es una entrada válida. search_sap_menu es una entrada válida; creauna pantalla de búsqueda para entradas en el menú SAP.

80 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 95: 119167612 taw10-01-es

Capítulo 371 El núcleo del sistema

This is a pivotal unit in this course. It explains the most important terms for SAPNetWeaver AS ABAP and AS Java. The process types of the SAP NetWeaverApplication Server are discussed and important concepts are explained.Participants need the information in this unit if they are to understand the contentof more advanced courses. You should therefore make sure that you plan enoughtime for this unit. The lesson for AS ABAP is more detailed than the lesson forAS Java since most SAP business applications are programmed in ABAP andare thus processed on the AS ABAP. AS Java is usually used for executing theuser interfaces. Nonetheless, it is possible to program business applications forAS Java, of course.

Resumen del capítuloEsta unidad ofrece una visión detallada de cómo el sistema SAP procesa lassolicitudes de usuario. Aprenderá sobre los diferentes tipos de procesos del SAPNetWeaver Application Server y sobre cómo funcionan.

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

• Estructurar configuraciones cliente/servidor• Nombrar los procesos del Servidor de aplicación SAP NetWeaver• Definir el término instancia y reconocer las características de una instancia

central• Comprender cómo funciona el AS ABAP• Enumerar los procesos AS ABAP y describir su finalidad• Describir cómo se procesan las solicitudes a AS ABAP

Contenido del capítuloLección: Arquitectura principal de SAP NetWeaver Application Server .. 82Lección: Procesos AS ABAP... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .103

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 81

Page 96: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Lección:72

Arquitectura principal de SAP NetWeaver ApplicationServerDuración de la lección: 60 Minutos

Resumen de la lecciónEste módulo presenta la arquitectura principal de los sistemas SAP. Basadosen configuraciones de cliente/servidor simples, se introducen los procesosindividuales del Servidor de aplicación SAP NetWeaver y se define el términoinstancia instancia. También se explicará la arquitectura de los distintos tipos deservidores de aplicación SAP NetWeaver.

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

• Estructurar configuraciones cliente/servidor• Nombrar los procesos del Servidor de aplicación SAP NetWeaver• Definir el término instancia y reconocer las características de una instancia

central

The lesson is intended as an introduction to the processes on an SAP NetWeaverApplication Server (AS). To illustrate the processes, the instructor of this lessoncan configure an SAP system with ready made stickers on the pin board togetherwith the participants (see http://service.sap.com/curr-adm, file SAP Stickers 700).First you could, for example, set up a three-tier client/server architecture withseveral instances on different hosts. You can then assign an ABAP dispatcher toeach instance. Then you can give an overview of all the work process types andthe services with the tasks they perform. You could let the participants decidewhich processes to configure on which instance. Once you have completedthe configuration on the pin board, you can discuss the configuration that theparticipants have chosen (for example, taking downtime prevention into account),demonstrating the advantages of configuring a central instance (if the participantshave not already configured the system in this way). This scenario can then betransferred to the AS Java and the central service instance can be explained.

Ejemplo empresarialDurante la implementación de un sistema SAP, debe establecerse la arquitecturade los sistemas SAP y el modo en que se distribuirán los procesos del sistema SAPrequeridos entre el hardware disponible.

82 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 97: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

IntroducciónLos sistemas SAP se utilizan para asignar procesos o aplicaciones empresariales.Estas aplicaciones se deben implementar independientemente del entorno dehardware que se utilice (sistema operativo, base de datos) con el mayor alcanceposible. Para ello, SAP NetWeaver proporciona dos entornos de tiempo deejecución diferentes: un entorno de tiempo de ejecución ABAP (tipo de utilizaciónAS ABAP) y un entorno de tiempo de ejecución Java (tipo de utilización AS Java).

ABAP (Advanced Business Application Programming) es un lenguaje deprogramación desarrollado por SAP. Muchas de las aplicaciones empresariales deun sistema SAP están escritas en ABAP. ABAP se ha optimizado para desarrollaraplicaciones empresariales con altas posibilidades de ampliación. Los clientespueden utilizar el Workbench ABAP para desarrollar aplicaciones completamentenuevas, así como ampliar y modificar las aplicaciones estándar SAP. De estemodo, es posible utilizar toda la infraestructura del AS ABAP, que también escompatible con la creación de las aplicaciones más complejas por parte de grandesgrupos de programadores. El Servidor de aplicación ABAP proporciona el entornode tiempo de ejecución para programas escritos en ABAP.

SAP no sólo proporciona un entorno de tiempo de ejecución para programasABAP, sino también un entorno de tiempo de ejecución para programas Java. ASJava es un servidor de aplicación de acuerdo con el estándar Java 2 EnterpriseEdition (J2EE).

El lenguaje de programación Java lo presentó por primera vez Sun MicrosystemsInc.™ en el año 1995. Java es un lenguaje de programación orientado a objetos eindependiente de plataformas, que se ha extendido por distintas áreas. El conceptoJava permite el desarrollo de un extenso rango de distintos tipos de aplicaciones,desde las aplicaciones clásicas a applets utilizados en sitios web hasta aplicacionescliente/servidor.

Java 2 Platform Enterprise Edition (J2EE) es un estándar de proveedor paratodo un rango de componentes de software creado fundamentalmente en ellenguaje de programación Java. Sun utiliza el test de compatibilidad J2EE paragarantizar el cumplimiento de las especificaciones de Java 2 Enterprise Edition.

La finalidad de esta especificación es proporcionar un framework aceptado deforma general para la utilización de componentes modulares para desarrollaraplicaciones distribuidas y de varios niveles. Con la especificación J2EE, Sundesea garantizar que se ajusten las aplicaciones Web en todos los servidorescompatibles con J2EE. De acuerdo con la especificación J2EE, la lógica deaplicación se empaqueta en Enterprise JavaBeans (EJB). Éstos representancomponentes de programa Java. Un container proporciona implícitamente losservicios del entorno de tiempo de ejecución a los componentes.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 83

Page 98: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

AS Java 7.0 (and also 6.40) is J2EE 1.3 compliant. Based on the specification, theactual Java application server is often called J2EE Engine. With release 7.1 theAS Java will also be Java 5 EE compliant.

Cliente y servidor: Definición terminológica

The participants need to be able to differentiate between hardware-orientedand software-oriented views. To ensure that the participants have completelyunderstood this section, you could, at the end, ask if the sentence “Severalapplication servers can run on one application server” makes sense, and whatexactly it means.

Antes de tratar varias configuraciones de cliente/servidor en el contexto desistemas SAP, es necesario definir los conceptos cliente y servidor. Existenbásicamente dos modos de hacerlo.

En la vista orientada al hardware, el término servidor se refiere al servidorcentral de una red que proporciona datos, memoria y recursos para las estacionesde trabajo (clientes).

En la vista orientada al software, tanto el cliente como el servidor se definenen el nivel de proceso (servicio). Un servicio en este contexto es un servicioproporcionado por un componente de software. Este componente de softwarepuede estar formado por un proceso o un grupo de procesos (como un SAP WebApplication Server) y, en este caso, se denomina servidor para el servicio encuestión. Los componentes de software que utilizan un servicio se denominanclientes. Al mismo tiempo, los clientes también pueden ser servidores para otrosservicios específicos.

El siguiente gráfico aclara los dos enfoques de definición.

84 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 99: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

Gráfico 26: Vista orientada al hardware y vista orientada al software

En el contexto de sistemas SAP, los términos cliente y servidor se utilizangeneralmente tal como se definen en la vista orientada al software.

Configuración cliente/servidor para sistemas SAP

The participants should learn about the different configuration option and, inparticular, recognize the significance of a special hardware layer for applicationserver processes (scalability, logon load balancing).

Los siguientes procesos se utilizan con frecuencia para operar con software deaplicaciones empresariales:

• Procesos de presentación (por ejemplo, para visualizar pantallas)• Procesos de aplicación (por ejemplo, para ejecutar programas de aplicación)• Procesos de base de datos (por ejemplo, para gestionar y organizar datos

de base de datos)

Al instalar y configurar un sistema SAP, es necesario que decida cómo distribuirálos procesos requeridos entre el hardware disponible. Existen varias formas dehacerlo, algunas de las cuales se describen más detalladamente a continuación.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 85

Page 100: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Las configuraciones pueden ser de un solo nivel o de varios niveles, dependiendodel número de capas de hardware utilizadas (consulte el siguiente gráfico). Elsistema SAP ECC es un ejemplo de software de aplicación empresarial.

• En configuraciones de un solo nivel, todas las tareas de procesamiento(procesos de base de datos, de aplicación y de presentación) las realiza unordenador. Éste es el procesamiento de unidad central clásico.

• Las configuraciones a dos niveles se implementan normalmente conservidores de presentación especiales, que se encargan exclusivamente de laedición del entorno gráfico.

• En una configuración de tres niveles, cada capa se ejecuta en su propio host.Varios servidores de aplicación distintos pueden trabajar simultáneamentecon los datos de un servidor de base de datos.

Gráfico 27: Configuraciones cliente/servidor sencillas

Las configuraciones de un solo nivel se utilizan generalmente para tests ydemostraciones (por ejemplo, un sistema SAP en un portátil). Si varios usuariosdesean trabajar en un sistema configurado de este modo, los costes extras dehardware para cada usuario adicional son superiores a los costes asociados a laimplementación de niveles de hardware adicionales (por ejemplo, mover losprocesos de presentación a otros hosts).

La configuración a dos niveles con procesos de presentación distribuidos(tal y como se muestra en el gráfico anterior) es capaz de mantener un buenrendimiento para un número considerablemente mayor de usuarios, sin aumentarsustancialmente los costes de hardware. La carga resultante de los procesos depresentación se distribuye a los distintos ordenadores front-end y, de este modo,no influye en el rendimiento del host de base de datos.

86 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 101: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

Sin embargo, si el número de usuarios supera un determinado límite superior, elhost central, en el cual se ejecutan tanto los procesos de aplicación como de basede datos, se somete al riesgo de convertirse en un cuello de botella. Para evitarlo,puede mejorar el rendimiento del sistema SAP distribuyendo los procesos decapa de aplicación por varios hosts. Otra ventaja de añadir una capa de hardwareespecíficamente para procesos de aplicación es que facilita la posibilidad deampliar. Si el número de usuarios SAP en un sistema aumenta a lo largo deltiempo, afectando negativamente al rendimiento del sistema, este problema sepuede resolver, en la mayoría de los casos, simplemente añadiendo otro host paralos procesos de aplicación.

Otra posibilidad de configuración a dos niveles es la instalación de sistemasdesktop de gran potencia en los que se ejecutan presentaciones y aplicaciones(cliente/servidor de dos niveles). Estas configuraciones están especialmenteindicadas para aplicaciones con altas demandas de procesador (por ejemplo, lassimulaciones o para programadores de software), pero no están implementadasen el entorno SAP para otros propósitos que no sean de prueba, debido a laadministración adicional requerida.

En el entorno SAP Business Suite, las configuraciones de cliente/servidor máscomplejas de más de tres niveles son posibles y se utilizan en la práctica. Un niveladicional podría ser un servidor web, por ejemplo.

At this point you could show the participants which configuration is used for thecourse (normally a two-tier configuration with distributed presentation). To dothis, use transaction SM51 followed by the menu path System → Status, and themessage that the SAP GUI process is running locally on the front-end, for example.

You can start placing stickers on the pin board at this point. Pin on the threearchitectural levels and the required hardware (e.g. 3 PCs at presentation level, 2hosts at application level and 1 host at database level).

La instancia

The section starts with the definition of the term instance for the SAP NetWeaverAS. Clearly explain terms central instance and central services instance as well.

Una instancia es una unidad administrativa que combina componentes del sistemaSAP que proporcionan uno o más servicios. Los servicios proporcionados por unainstancia se inician o se detienen juntos. Los perfiles de instancia comunes seutilizan para fijar los parámetros de todos los componentes de una instancia. Cadainstancia dispone de sus propias áreas de memoria intermedia. Una instancia

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 87

Page 102: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

se ejecuta en un ordenador físico, pero pueden existir varias instancias en unmismo ordenador. Las instancias se identifican por el ID de sistema (SID) y elnúmero de instancia.

Consejo: Los términos instancia (SAP) y Servidor de aplicación se usanfrecuentemente como sinónimos.

Gráfico 28: Instancias de un sistema SAP (ejemplo)

Al instalar un sistema SAP, ya dispone de la opción de separar los procesos delnivel de aplicación de los que se encuentran en el nivel de base de datos. Estosignifica que es posible instalar y operar la base de datos de un sistema SAP enun ordenador físicamente separado de las instancias del sistema SAP. Existeexactamente una base de datos para cada sistema SAP. La base de datos tienenormalmente el mismo ID de sistema (DB ID) que el sistema SAP.

La instancia central del sistema SAP se distingue por el hecho de que ofreceservicios que no facilita ninguna otra instancia del sistema. Para el AS ABAP,se trata del Servidor de mensajes y del Proceso de trabajo de cola (véase acontinuación). Para el AS Java, la instancia central se puede reconocer medianteel Software Deployment Manager (SDM).

88 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 103: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

La instancia de servicios centrales proporciona servicios centrales del AS Java,el Servicio de mensajes y el Enqueue Service (véase a continuación). Para elAS ABAP, estos servicios también se pueden mover a la instancia de servicioscentrales ABAP por motivos de alta disponibilidad. Por este motivo, estossistemas AS ABAP ya no disponen de una instancia central.

El resto de instancias del sistema se denomina generalmente instancias de diálogo.

Si la instancia central y la base de datos (y para el AS Java también la instanciade servicios centrales) están instaladas en el mismo ordenador, esto se denominasistema central.

Procesos del SAP NetWeaver Application ServerEl sistema de tiempo de ejecución SAP está formado por un gran número deprocesos paralelos que trabajan conjuntamente. Sin embargo, es posible distinguirentre el entorno de tiempo de ejecución de ABAP (AS ABAP) y el entorno detiempo de ejecución de Java (AS Java).

Procesos AS ABAP

Gráfico 29: Procesos AS ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 89

Page 104: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

En el AS ABAP, estos procesos de cada servidor de aplicación incluyen eldespachador, así como algunos procesos de trabajo según los recursos dehardware:

• El despachador distribuye las solicitudes a los procesos de trabajo.• Los procesos de trabajo de diálogo cumplen todos los requisitos para la

ejecución de los pasos de diálogo desencadenados por un usuario activo.Cada despachador requiere, por lo menos, dos procesos de trabajo de diálogo.

• Los procesos de trabajo SPOOL transfieren flujos de datos secuencialesa las impresoras. Se necesita únicamente un proceso de trabajo SPOOLpara cada sistema SAP. Es posible configurar más de un proceso de trabajoSPOOL para cada despachador.

This spool work process is also required if there is no printing in the system,for example, to store lists generated in the context of background process inTemSe.

• Los procesos de trabajo de actualización ejecutan órdenes de actualización.De modo similar a los procesos de trabajo SPOOL, se requiere como mínimoun proceso de trabajo de actualización por sistema SAP, y puede configurarmás de uno por cada despachador.

• Los procesos de trabajo de fondo ejecutan programas que funcionan sininteractuar con el usuario. Se necesitan como mínimo dos procesos detrabajo de fondo para cada sistema SAP. Puede configurar más de un procesode trabajo de fondo para cada despachador.

For the “normal” operation of the SAP system, a single background processwould suffice. However, for an upgrade or during an import of ABAPtransport requests, two background work processes are required.

• El proceso de trabajo de cola administra la tabla de bloqueo en la memoriacompartida. La tabla de bloqueo contiene los bloqueos de la base de datoslógica del entorno de tiempo de ejecución ABAP del sistema SAP. Senecesita únicamente un proceso de trabajo de cola para cada sistema.

If more than one enqueue work process has to be configured, this must beconfigured on the same instance as the first enqueue work process as bothwork processes have to access the same lock table.

90 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 105: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

Consejo: The Internet Graphics Server (IGS) is missing in this graphic. Ifthere are any questions about this or you with to mention the IGS, here’ssome information on the IGS:

The Internet Graphics Server (IGS) is an infrastructure that applicationdevelopers can use to display graphics in an internet browser with minimaleffort. The IGS is integrated into the different SAP UI technologies fromHTML GUI to Web Dynpro ABAP/Java and offers a server architecturewhere data from an SAP system or another source can be used forgenerating graphical and non-graphical output.

With SAP Web AS 6.40, the IGS is available as a fixed component of SAPWeb AS and will be installed with every SAP Web AS installation (bothfor systems based on AS ABAP and for systems based on AS Java). WithSAP Web AS 6.20 there already is a standalone engine on Windows 32 bitcomputers, you can thus choose between the standalone and the integratedIGS for SAP Web AS 6.40. From SAP NetWeaver AS 7.00 however, onlythe integrated IGS version should be used.

The IGS basically consists of 3 parts:

• Multiplexer (Mux), which administers incoming/outboundconnections and distributes the enquiries to the appropriate portwatchers.

• Port watchers, which connect to the Mux via TCP/IP and are the hostapplication for the IGS interpreter

• Interpreters, the plug-ins for the IGS, which take care of thegeneration of graphics and content. There are several interpretersavailable for different types of graphics and content

You can use the following tools to administer the IGS:

• For AS ABAP ABAP: Report GRAPHICS_IGS_ADMIN ortransaction SIGS, where the report was encapsulated.

• For AS Java: Web interface access using the URLhttp://(hostname):(port), whereby the Host Name is the name of thecomputer on which the IGS is installed and the Port is the port ofthe HTTP listener.

If you want to demonstrate the IGS in the SAPTEC course, the easiest thingto do is to call up transaction SIGS (or report GRAPHICS_IGS_ADMIN).On the start page, confirm the suggested RFC destination. This takesyou to the initial page for the IGS.

SAP Note 454042 provides a more detailed description of the IGS.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 91

Page 106: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

En resumen, se puede decir que el despachador de una instancia AS ABAPgestiona distintos tipos de procesos de trabajo: procesos de trabajo de diálogo, deactualización, de fondo, de cola y spool. Estos procesos de trabajo asumen tareasdistintas cuando ejecutan los procesos empresariales en el sistema SAP.

El administrador de un sistema SAP puede utilizar parámetros de perfil paraconfigurar el número de procesos de trabajo distintos.

Consejo: The type and number of the work processes to be started foreach instance is configured using the SAP system profile parameter. Thefollowing table summarizes the relevant profile parameters.

Type Use profile parameter

DIA Responsible for dialog requests rdisp/wp_no_dia

UPD Responsible for update rdisp/wp_no_vb

UPD2 Exclusively responsible for lesstime-critical update (optional)

rdisp/wp_no_vb2

BGD Executes background jobs rdisp/wp_no_btc

SPO Processes output requests rdisp/wp_no_spo

ENQ Responsible for locks rdisp/wp_no_enq

This is only a selection of relevant dispatcher parameters. For lock mechanisms,for example, there are dedicated enque/* parameters.

SAP Note 39412 contains additional information on the topic of how many ABAPwork processes you can and should configure.

92 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 107: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

Además de los procesos de trabajo, el sistema de tiempo de ejecución ABAPproporciona servicios adicionales (no se trata de procesos de trabajo) para lacomunicación interna y externa:

• El Servidor de mensajes (MS) se ocupa de la comunicación entre losdespachadores distribuidos dentro del AS ABAP, lo que permite laposibilidad de ampliar varios servidores de aplicación paralelos. El servidorde mensajes sólo se configura una vez por cada sistema SAP.

• El lector de gateway (GW) permite la comunicación entre sistemas SAP, oentre sistemas SAP y sistemas de aplicación externos. Existe uno por cadadespachador.

• El Internet Communication Manager (ICM) permite la comunicacióncon el sistema SAP mediante protocolos web como HTTP. El ICM recibesolicitudes del cliente y las reenvía al sistema SAP para su procesamiento.En un sistema ABAP+Java (véase a continuación), reconoce si la solicitudes una llamada para el AS ABAP o el AS Java y reenvía la solicitudcorrespondiente. También puede dirigir solicitudes HTTP de un sistema SAPa un servidor Web y devolver la respuesta al sistema SAP. Puede configurarun máximo de un proceso ICM por servidor de aplicación (vista basadaen software).

Procesos AS Java

Gráfico 30: Procesos AS Java

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 93

Page 108: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Los procesos siguientes existen en AS Java:

• El despachador distribuye las solicitudes por los procesos de trabajo.• El proceso de servidor ejecuta las aplicaciones Java. Cada proceso de

servidor es multihilo y capaz de procesar un número elevado de solicitudes enparalelo (al contrario que los procesos de trabajo ABAP). Cada despachadorpuede tener como mínimo un proceso de servidor y un máximo de 16.

It is for this reason that generally there are a lot less Java server processesconfigured per Java dispatcher than work processes are configured foreach ABAP dispatcher. Due to port reasons a maximum of 16 Java serverprocesses can be configured for each instance.

• El servicio de mensajes Java gestiona una lista de despachadores y procesosde servidor Java. Es el responsable de la comunicación dentro del entornode tiempo de ejecución Java.

• El Enqueue Service Java gestiona los bloqueos lógicos que el programa deaplicación Java ejecutado fija en un proceso de servidor.

Just like in the ABAP environment, every developer is responsible forrequesting locks from the enqueue service and releasing them in the Javaenvironment.

• El Software Deployment Manager (SDM) es la herramienta estándarutilizada para instalar componentes de software Java en SAP Web AS Java.

Tipos de SAP NetWeaver ASSegún la aplicación o el producto utilizados, se instalan distintos tipos de servidorde aplicación.

94 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 109: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

Gráfico 31: Posibles tipos de SAP NetWeaver AS

Quickly point out the different installation options of the SAP NetWeaver AS.Stress that the option chosen generally depends on the SAP system to be installed.If you install an SAP NetWeaver Portal, an AS Java is installed, whereas an ASABAP+Java is installed if you install an SAP NetWeaver PI. In the installation ofan SAP NetWeaver BI, in contrast, an AS ABAP-based BI system and a separateAS Java-based BI Java system are installed.

The graphic only shows the minimal installation (that is, the central instance).

• Sistema AS ABAP: infraestructura completa, en la cual se puedendesarrollar y utilizar aplicaciones basadas en ABAP.

• Sistema AS Java: infraestructura completa para desarrollar y utilizaraplicaciones basadas en J2EE.

• AS ABAP + sistema Java:infraestructura completa en la que se puedendesarrollar y utilizar aplicaciones basadas en ABAP y aplicaciones basadasen J2EE. Un sistema de estas características se debe instalar sólo si esrequerido explícitamente por la aplicación. Por ejemplo, SAP NetWeaverPI 7.0 o SAP Solution Manager 4.0

Una de las características principales del SAP NetWeaver AS es que las tablas, losprogramas y los datos de aplicación ABAP se almacenan en el esquema ABAP dela base de datos, mientras que los datos Java se almacenan en el esquema Java.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 95

Page 110: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Aquí, el entorno de tiempo de ejecución ABAP puede acceder al esquema ABAPde la base de datos, y el entorno de tiempo de ejecución Java puede acceder alesquema Java. En el sistema ABAP+Java, los distintos entornos de tiempo deejecución se comunican directamente mediante el SAP Java Connector (JCo).

Arquitectura AS ABAPEn AS ABAP, la instancia central se distingue por el hecho de que el servidor demensajes y el proceso de trabajo de cola se ejecutan allí. Al resto de instancias delsistema se las denomina generalmente instancias de diálogo. De forma alternativa,las instancias también se denominan a partir de los servicios proporcionados.

Los servicios que puede proporcionar un servidor de aplicación vienendeterminados por el tipo de procesos de trabajo que tiene. De este modo, unservidor de aplicación puede asumir varios roles, por ejemplo, como servidorde diálogo y, simultáneamente, como servidor de actualización, si proporcionavarios procesos de trabajo de diálogo y como mínimo un proceso de trabajo deactualización.

Nota: Hay un resumen de las instancias AS ABAP disponible en SM51(en SAP Easy Access , en Herramientas → Administración → Monitor →Supervisar sistema →Servidores.

Puede utilizar la transacción SM50 para visualizar un resumen de losprocesos de trabajo de la instancia en la cual ha entrado al sistema, otambién puede visualizar este resumen seleccionando Herramientas→ Administración → Monitor → Supervisar sistema → Resumen delproceso en la pantalla de SAP Easy Access.

Gráfico 32: Arquitectura AS ABAP

96 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 111: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

At this point, you can show participants transaction SM51 in the system andbriefly mention the instances and services that are available there. If you wish, youcan also point out the option of branching from SM51 to SM04 (user overview)and SM50 (process overview).

You can see to which instance you are logged on under System → Status.

If you explain the work process distribution in SM50, it is useful to point out thatthere is a V2 type update work process (UP2). Additional information on thisfollows in the introduction of the individual processes.

El servidor de mensajes ABAP pone a disposición del AS ABAP un serviciode mensajes central para la comunicación interna (p. ej. para el inicio deactualizaciones, la solicitud y la liberación de bloqueos o el lanzamiento deórdenes de procesos de fondo). El servidor de mensajes también proporcionainformación acerca de qué instancias del sistema están disponibles actualmente.

Los despachadores ABAP de los servidores de aplicación individuales secomunican a través del servidor de mensajes ABAP, que se instala exactamenteuna vez por sistema SAP.

Al entrar al sistema AS ABAP mediante SAP GUI para Windows o SAP GUI paraJava utilizando grupos logon, el servidor de mensajes realiza una distribución de lacarga de usuarios por las instancias disponibles. Esta distribución de la carga, quetiene lugar durante la operación de acceso, también se conoce como distribucióndinámica de usuarios. Después de la distribución de la carga por parte del servidorde mensajes, el SAP GUI se comunica directamente con el despachador. Elusuario permanece dentro de esta instancia hasta que salga del sistema.

Nota: Puede consultar un resumen de los usuarios que han entrado alsistema en la misma instancia en la que se encuentra usted, mediantela transacción SM04 (Herramientas → Administración → Monitor →Supervisar sistema → Resumen de usuarios).

Puede ver en qué instancia ha entrado al sistema a través de Sistema →Status.

Si accede al AB ABAP a través de protocolos web como HTTP mediante elnavegador, el Internet Communication Manager (ICM) recibe la solicitud. Acontinuación, reenvía la solicitud al despachador de su instancia.

El Gateway Reader (GW) acepta la comunicación de otros sistemas SAP medianteRemote Function Call (RFC).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 97

Page 112: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Arquitectura AS JavaEn AS Java, la instancia central se distingue por el hecho de que el SoftwareDeployment Manager (SDM) se ejecuta allí. El centro de mensajes (MS) y elEnqueue Service (ES) de servicios centrales se ejecutan en la instancia de servicioscentrales (instancia CS). Al resto de instancias del sistema se las denominageneralmente instancias de diálogo.

Nota: Todo el entorno Java (todos los procesos y el esquema de base dedatos) también se refiere a un cluster Java, y los procesos individuales(despachador y servidor) como nodos del cluster Java.

Puede obtener un resumen de procesos Java iniciados (despachador Java yprocesos de servidor Java, así como SDM) mediante la información del sistemadel entorno de tiempo de ejecución Java (http://<Nombre de host>:<Java-Despachador-HTTP-Puerto de la instancia>/sap/monitoring/SystemInfo, porejemplohttp://twdf1234.wdf.sap.corp:50000→ Información del sistema)

You can show the participants the AS Java system information. You require anappropriately authorized user in the Java stack to display the system information.

Gráfico 33: Arquitectura AS Java

De manera análoga al AS ABAP, el servicio de mensajes del AS Java proporcionaun servicio de mensajes central para la comunicación interna. El servicio demensajes Java también ofrece información acerca de qué instancias y nodosdel AS Java están disponibles. Cada nodo del cluster Java se puede comunicardirectamente con el centro de mensajes.

98 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 113: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

En el AS Java, el Enqueue Service lleva a cabo los bloqueos lógicos. Cada nododel cluster Java se puede comunicar directamente con el Enqueue Service.

Cuando se accede al AS Java a través de un navegador, el despachador Java recibesolicitudes, que serán procesadas por los procesos de servidor.

Arquitectura AS ABAP+JavaPara el AS ABAP+Java (que significa procesos ABAP y Java en el mismosistema SAP, bajo el mismo ID de sistema), se aplican los mismos principiosarquitectónicos que para los sistemas AS ABAP y AS Java por separado. Sinembargo, existen algunas particularidades debido a que, en este caso, ambosentornos de tiempo de ejecución están integrados entre ellos.

Nota: El AS ABAP+Java se denomina con frecuencia “instalaciónadd-in”, puesto que es posible instalar primero un AS ABAP ycomplementarlo con un AS Java posteriormente.

Gráfico 34: Arquitectura AS ABAP+Java

La instancia central de un sistema AS ABAP+Java se reconoce por los siguientesprocesos: ABAP-MS, proceso de trabajo de cola y SDM. Los servicios centralesdel entorno de tiempo de ejecución Java (Java-MS, Java-ES) aquí también sesuministran en la instancia de servicios centrales Java. Todas las otras instanciasse denominan generalmente instancias de diálogo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 99

Page 114: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Puesto que ambos entornos de tiempo de ejecución son capaces de responder asolicitudes a través de protocolos web, el Internet Communication Manager debedecidir si la solicitud se dirigirá al entorno de tiempo de ejecución ABAP o Java.La decisión se toma mediante la dirección URL de la solicitud. En el caso de unasolicitud al entorno de tiempo de ejecución ABAP, por ejemplo, la llamada deun web dynpro ABAP, el ICM reenvía la solicitud al despachador ABAP y losprocesos de trabajo responden a la solicitud. Si la solicitud está dirigida al entornode tiempo de ejecución Java, por ejemplo, la llamada de un Java Server Page(JSP), el ICM reenvía la solicitud al despachador Java y uno de los procesos deservidor responde a la solicitud.

En un sistema AS ABAP+Java, los datos también se archivan en esquemas debases de datos separados (pero en la misma instalación de base de datos). Es decir,los procesos de trabajo sólo pueden acceder a los datos ABAP, y los procesos deservidor sólo pueden acceder a los datos Java. En el intercambio de datos, ambosentornos de tiempo de ejecución se comunican mediante el SAP Java Connector(JCo). Esta comunicación es necesaria, por ejemplo, si los datos de facturaciónalmacenados en el esquema de datos ABAP deben visualizarse en una interfazde usuario Java.

El SAP JCo está integrado al AS Java y también se utiliza cuando un sistema ASJava debe comunicarse con un sistema AS ABAP remoto.

The SAP JCo provides the SAP RFC protocol for the Java environment. TheJCo is also available in a separate installation, for example, to connect non-SAPproducts in Java with SAP ABAP systems.

Another special feature of the AS ABAP+Java is the joint user storage. In thiscase, the User Management Engine (AS Java) uses the users from AS-ABAP.

100 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 115: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura principal de SAP NetWeaver Application Server

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.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 101

Page 116: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Resumen de la lección

Ahora podrá:• Estructurar configuraciones cliente/servidor• Nombrar los procesos del Servidor de aplicación SAP NetWeaver• Definir el término instancia y reconocer las características de una instancia

central

102 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 117: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Lección:89

Procesos AS ABAPDuración de la lección: 80 Minutos

Resumen de la lecciónEste módulo trata sobre el funcionamiento del Servidor de aplicación SAPNetWeaver ABAP (AS ABAP). Se presentan los procesos y se explica cómofuncionan.

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

• Comprender cómo funciona el AS ABAP• Enumerar los procesos AS ABAP y describir su finalidad• Describir cómo se procesan las solicitudes a AS ABAP

This lesson introduces the processes of AS ABAP. The different tasks of thedifferent processes are introduced. After this lesson, the participants should knowthe basic mechanisms and processes in AS ABAP. This is not about describingevery detail of the different functions.

Ejemplo empresarialSu empresa ha decidido implementar SAP ERP. Las funciones empresarialesbásicas, como la gestión financiera en SAP ERP, son procesadas por el entornode tiempo de ejecución ABAP. Por este motivo, para los empleados de otrosdepartamentos distintos, quizás más técnicos (desarrollo, administración desistemas, preparación del trabajo, seguridad, etc.) es importante entender cómofunciona el AS ABAP más detalladamente.

Procesamiento de solicitudes en AS ABAP

Clearly point out to participants who already know about the classical ABAPruntime environment that classical transactions, such as the displaying ofcustomers by means of transaction FD03 still happen exclusively via the ABAPruntime environment. The existence of a Java runtime environment does not meanthat precisely this application is now implemented by means of the SAP GUI aswell as in a Java-based way. Which runtime environment (ABAP or Java) andwhich user interface (SAP GUI, Web Dynpro ABAP/Java, BSP / JSP) must to beused always depends on the selected application.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 103

Page 118: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Los usuarios pueden entrar al sistema SAP a través de SAP GUI o de un clienteWeb (navegador). Al acceder mediante el SAP GUI, las solicitudes del usuario sonprocesadas por el entorno de tiempo de ejecución ABAP, y al acceder medianteun navegador, el procesamiento puede ser realizado por el entorno de tiempo deejecución ABAP o el JAVA, según la solicitud.

Procesamiento de solicitudes por parte de SAP GUI

If necessary, you can also talk about the necessity of buffer synchronization andthe applied procedure when you introduce the buffers and their significance.

The participants should learn about the general procedure for a user request inthe SAP system. In doing, only the case of an internal user (with SAP GUI) isdiscussed here. This section does not cover integration of browsers using the ICM.

Los usuarios entran al sistema mediante el servidor de mensajes (ABAP)(distribución de carga) o acceden directamente al despachador ABAP, mientrasque los procesos de trabajo ejecutan las entradas de usuarios.

El procesamiento de una solicitud de usuario en AS ABAP, tal y como se describeen el gráfico, implica distintos procesos en las tres capas (presentación, aplicacióny base de datos):

Gráfico 35: Procesamiento de una solicitud de usuario

104 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 119: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Las entradas de pantalla de un usuario son aceptadas por el programa depresentación SAPSAP GUI (SAP Graphical User Interface), convertidas a unformato interno y reenviadas al AS ABAP.

El despachador (ABAP) es el proceso principal del AS ABAP. Éste gestiona losrecursos para las aplicaciones escritas en ABAP junto con el sistema operativorespectivo. Las tareas principales del despachador ABAP incluyen la distribuciónde las solicitudes a “sus” procesos de trabajo, la integración de la capa depresentación y la organización de transacciones de comunicación.

El despachador graba primero las solicitudes de procesamiento en colas desolicitudes y las procesa según el principio “first in, first out”.

El despachador ABAP reparte las solicitudes una tras otra a los procesos de trabajodisponibles. En realidad, los datos se procesan en el proceso de trabajo, aunqueel usuario que creó la solicitud utilizando SAP GUI no siempre tiene asignado elmismo proceso de trabajo. Es decir que no hay asignaciones fijas de procesos detrabajo a los usuarios. Para procesar solicitudes de usuario, a menudo es necesarioleer datos del esquema ABAP de la base de datos o escribir en ella. Por estemotivo, todos los procesos de trabajo están conectados directamente al esquemaABAP de la base de datos.

The user with which the work processes log on to the database is the user to whomthe database schema (all tables of AS ABAP) “belongs”. Up to release 4.6C, thisuser was called SAPR3. After that, the user name was changed to SAP<SID> sothat several SAP systems could be operated in one database. You can look upthis user in the SAP system under System → Status. For AS Java, the user (thedatabase schema) is called SAP<SID>DB.

Al final del proceso, el resultado del proceso de trabajo se envía mediante eldespachador nuevamente a SAP GUI. El SAP GUI interpreta los datos recibidos ygenera la imagen de salida para el usuario.

Las memorias intermedias ayudan a acelerar el procesamiento de las solicitudesde usuario. Los datos que se leen con frecuencia pero que raramente se modifican(por ejemplo, programas o datos de Customizing como mandantes, monedas osociedades) se pueden mantener como copia del contenido de la base de datosen la memoria compartida del servidor de aplicación. Esto significa que no esnecesario leer los datos de la base de datos cada vez que se requiera, sino que sepueden llamar muy rápidamente desde la memoria intermedia. Cada instanciadispone de sus propias memorias intermedias.

During initialization of the SAP system, the dispatcher executes the followingactions (amongst others): Read system profile parameters, start work processes,logon to the message server.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 105

Page 120: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Gráfico 36: Flujo de proceso para solicitudes

At this point it might help the participants if you point out that all work processesare based on the same kernel file, disp+work.exe, that is, all work processes –regardless of their type – have an identical structure.

Los procesos de trabajo ejecutan la lógica de proceso de los programas deaplicación. Además de la memoria interna, un proceso de trabajo cuenta con uncontrolador de tareas que coordina las acciones dentro de un proceso de trabajo,los procesadores de software y una interfaz de base de datos. El procesador dedynpro ejecuta la lógica de proceso del programa de aplicación, llama a módulosde lógica de proceso y transfiere contenido de campo a la lógica de procesamiento.La lógica de procesamiento real de los programas de aplicación ABAP las ejecutael intérprete ABAP. El procesador de pantalla comunica al procesador ABAPqué subprograma se debe ejecutar según el status de procesamiento de la lógica deproceso.

106 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 121: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Since release 7.0, the ABAP work process has been capable of hosting a Java VMas well. This function has nothing to do with AS Java or the J2EE technology.If this function has be activated in AS ABAP, you see the message type VMC inSM51. For more information about the VM Container see the SAP NetWeaverLibrary under SAP NetWeaver by Key Capability → Application Platform by KeyCapability → Platform-Wide Services → SAP Virtual Machine Container.

El proceso de trabajo de diálogo seleccionado por el despachador realiza primeroun roll in del contexto de usuario. Es decir, se comunican al proceso de trabajo losdatos que contiene el status de procesamiento actual de un programa en ejecución,así como los datos que caracterizan al usuario. A continuación, el proceso detrabajo procesa la solicitud del usuario, que puede implicar, por ejemplo, lasolicitud de datos de la base de datos o de las memorias intermedias de la memoriacompartida. Una vez que el proceso de trabajo de diálogo ha procesado el pasode diálogo, el proceso de trabajo devuelve el resultado, realiza un roll backdel contexto de usuario a la memoria compartida y se encuentra nuevamentedisponible para una nueva solicitud de usuario de la cola de solicitudes. Elresultado se transfiere al SAP GUI y el usuario visualiza la nueva pantalla.

Memory management and the roll-in/roll-out process:

The memory management system differentiates between main memory areas thatare available exclusively to one particular work process, and memory areas thatcan be used by all work processes. The memory space used exclusively by a workprocess stores session-specific data that must be kept for longer than the durationof a work step. This data is automatically made available to the process at the startof a dialog step (rolled in) and saved at the end of the dialog step (rolled out). Thisdata includes data that characterizes the user (user context), such as authorizations,administrative information, and other data for the ABAP and screen processorsthat has been collected in previous dialog steps for the active transaction. Thereare also additional memory areas for all processes in the shared memory for,among other things, the factory calendar and screen, table, and program buffers.

Interfaz de base de datos de AS ABAP

This section should give the participants an understanding of ABAP Open SQLas platform-independent SQL. It should be pointed out to them that their owndevelopments will loose their platform independence if they use ABAP NativeSQL.

Actualmente, para gestionar cantidades considerables de datos se utilizan casisiempre sistemas de gestión de bases de datos relacionales (RDBMS). Un RDBMSgraba los datos y las relaciones entre ellos en forma de tablas bidimensionales.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 107

Page 122: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Son conocidos por su simplicidad lógica. La definición de los datos, de las tablas yde las relaciones entre las tablas tiene lugar a nivel de base de datos en el catálogode la base de datos (Dictionary ABAP) del RDBMS.

Dentro del lenguaje de programación ABAP de SAP, se puede utilizar ABAP OpenSQL (SQL = Structured Query Language, lenguaje de consulta de bases de datos)para acceder a los datos de aplicación de la base de datos, independientementedel RDBMS que se utilice. La interfaz de base de datos, que forma parte decualquier proceso de trabajo de AS ABAP, traduce las sentencias de Open SQLdesde ABAP a las sentencias SQL correspondientes a la base de datos específicautilizada (Native SQL). De este modo, posibilita que los programas ABAP seanindependientes de base de datos.

Nota: ABAP Open SQL es un lenguaje de consulta de bases de datosbasado en el estándar SQL (ISO) que también contiene ampliaciones queno se incluyen en el estándar.

Al interpretar sentencias ABAP del Open SQL, la interfaz de base de datosde SAP verifica la sintaxis de dichas sentencias ABAP y asegura la utilizaciónóptima de las memorias de SAP locales en la memoria compartida del servidorde aplicación. En estas memorias intermedias se almacenan los datos que lasaplicaciones requieren con más frecuencia, de modo que para leerlos ya no esnecesario acceder de nuevo al servidor de la base de datos. En particular, todoslos datos técnicos, tales como programas ABAP, los dynpros y la información delDictionary ABAP así como varios parámetros de administración de empresas,permanecen normalmente inalterados en un sistema operacional y son por lo tantoideales para grabar en memoria intermedia.

Gráfico 37: Flujo de consulta en base de datos

108 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 123: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Además, los comandos de native SQL se pueden utilizar directamente en ABAP,es decir, sin utilizar las memorias intermedias locales y sin necesidad de que lainterfaz de base de datos interprete los comandos. Puede hacerlo incluyendo loscomandos en un paréntesis EXEC SQL. - END EXEC. en el programa ABAP.El intérprete ABAP no verifica la sintaxis de ningún comando dentro de esteparéntesis. Si utiliza native SQL, ya no es posible actualizar la independencia deplataforma de los programas afectados.

If there is more than one instance then there is also more than one buffer. You maytherefore need synchronize buffers from time to time. At this point you havethe option of discussing the problems with the buffer synchronization: Whatcan cause inconsistent buffers? How often should you synchronize the buffers?What possible solutions are there? (Only buffer data that is changed rarely andalso read frequently, if at all.) Who decides whether and which table contentsare buffered? The developer!

Procesamiento de solicitudes de diálogoLa ejecución de solicitudes de diálogo tiene las siguientes características:

• Se asigna un paso de diálogo de programa a un proceso de trabajo de diálogoespecífico durante la ejecución.

• Los pasos de diálogo individuales de un programa que consisten en variaspantallas se pueden ejecutar mediante distintos procesos de trabajo dediálogo durante el tiempo de ejecución del programa. Esto se llamamultiplexación de procesos de trabajo.

• Un proceso de trabajo de diálogo procesa secuencialmente pasos de diálogopara varios usuarios y programas.

Esto se ilustra en la siguiente figura:

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 109

Page 124: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Gráfico 38: Multiplexación de procesos de trabajo de diálogo

Los programas de aplicación SAP diferencian entre la interacción de usuario yla lógica de procesamiento. Las acciones del usuario se realizan técnicamentemediante pantallas, también llamadas dynpros (de "programas dinámicos"),que consisten en una imagen de pantalla y la lógica de proceso subyacente. Elprocesador de dynpro del proceso de pantalla ejecuta la lógica de proceso depantalla del programa de aplicación, llama a módulos de lógica de procesamientoy transfiere contenido de campo a la lógica de procesamiento. Además, la mismalógica de flujo de pantallas está dividida en PBO (Process Before Output, procesoantes de la salida), que se procesa antes de enviar la imagen de pantalla, y PAI(Process After Input, proceso después de la entrada), que se procesa después deuna interacción de usuario en la pantalla. La parte PAI de un paso de diálogopertenece lógicamente a la imagen de pantalla precedente, mientras que la partePBO pertenece lógicamente a la imagen de pantalla subsiguiente. La lógica deprocesamiento real de los programas ABAP la ejecuta el intérprete ABAP. Elprocesador de pantalla comunica al procesador ABAP qué subprograma se debeejecutar según el status de procesamiento de la lógica de proceso.

Si, durante un paso de diálogo, es necesario intercambiar datos con la base dedatos o las memorias intermedias, este intercambio tendrá lugar a través de lainterfaz de base de datos, que permitirá el acceso a las tablas de base de datos, alos programas ABAP o al Dictionary ABAP, entre otros.

110 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 125: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

If appropriate, you can roughly calculate, together with the participants, how manydialog processes can usefully be configured in an SAP system (taking into accountthe number of active users, the average processing time for a dialog step in thesystem and the frequency with which users send requests to the system).

Procesamiento de transacciones en AS ABAP

This section is supposed to explain the difference between a database transactionand the transaction in AS ABAP. Building on the participants’ knowledge of workprocess multiplexing, you need to clarify that an ABAP transaction can consist ofseveral database transactions. You can use this lesson to prepare participants forthe introduction of the SAP lock concept and asynchronous updates and explainthe background to these two concepts.

La transacción de término

You need to explain the ACID concept. You may find it helpful to illustrate yourexplanation using a transaction of your choice. The ACID concept is not an SAPinvention but a general requirement for transactional systems.

Las transacciones son unidades de proceso agrupadas para brindar unidadesespecíficas. Tienen cuatro características principales. Las iniciales de estas cuatrocaracterísticas juntas forman el acrónimo ACAD.

• Atómica• Consistente• Aislada• Duradera

Atómica significa que una transacción es completamente exitosa o no tiene ningúnefecto. Si un sistema orientado a transacción deja de funcionar, asegúrese de quelos resultados parciales e inconsistentes no estén almacenados.

Consistente significa que el status de sistema cambia de uno que es exacto yconsistente en términos empresariales a otro que también es exacto y consistenteen términos empresariales.

Aislada significa que las modificaciones realizadas dentro de una transacción sólopueden ser visualizadas por otras transacciones, incluso por las que se ejecutansimultáneamente, tras la confirmación final (“commit”).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 111

Page 126: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Los resultados de una transacción son duraderos porque, tras la confirmaciónfinal, se almacenan permanentemente en la base de datos.

Transacciones de base de datos y transacciones ABAPCada proceso de trabajo está conectado a un interlocutor de comunicacionesespecífico a nivel de base de datos durante el tiempo de ejecución de unainstancia SAP. Los procesos de trabajo no pueden intercambiar interlocutores decomunicaciones en tiempo de ejecución. Por este motivo, un proceso de trabajosólo puede realizar modificaciones en la base de datos dentro de una transacciónde base de datos.

Una transacción de base de datos es, de acuerdo con el principio ACAD, unasecuencia indivisible de operaciones de base de datos, al principio y al final dela cual el set de datos de la base de datos debe ser consistente. El principio y elfinal de una transacción de base de datos están definidos por un comando commit(“commit en base de datos”) al sistema de base de datos. Durante una transacciónde base de datos (entre dos comandos commit), el mismo sistema de base de datosgarantiza que el set de datos sea consistente. El propio sistema de base de datos seencarga de la tarea de restablecer el set de datos a su estado anterior después deque una transacción finalice con un error (“anular actualización”).

Las transacciones empresariales son unidades de procesamiento agrupadas paraproporcionar una función específica; estas unidades de procesamiento ejecutanmodificaciones en la base de datos que son consistentes y que tienen sentido entérminos empresariales. Ejemplos típicos son las actualizaciones en el Debe yel Haber, que sólo tienen sentido juntas, o la creación de pedidos de materialjunto a la reserva de los materiales relevantes. Asimismo, una transacción ASABAP se define como un proceso empresarial no divisible que debe ejecutarsecompletamente o no ejecutarse. Las transacciones AS ABAP se implementancomo secuencias de pasos de diálogo relacionados lógicamente, que sonconsistentes en términos empresariales. Cada paso de diálogo de usuario estárepresentado por una imagen de pantalla.

112 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 127: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Gráfico 39: Relación entre transacciones de base de datos y transaccionesSAP

Las transacciones SAP no se desarrollan necesariamente en un único procesode trabajo de diálogo. Dentro de una transacción que modifica datos de labase de datos, el usuario solicita modificaciones en la base de datos mediantelas pantallas individuales visualizadas. Una vez completada la transacción, elresultado de las modificaciones debe ser un status de base de datos consistente.Los pasos de diálogo individuales pueden ser procesados por distintos procesosde trabajo (multiplexación de procesos de trabajo), y cada proceso de trabajotrata secuencialmente pasos de diálogo para aplicaciones no relacionadas. Lasaplicaciones cuyos pasos de diálogo son ejecutados uno tras otro por el mismoproceso de trabajo no se pueden ejecutar dentro de la misma transacción de basede datos si no están relacionadas entre sí. Por este motivo, un proceso de trabajodebe iniciar una nueva transacción de base de datos para cada paso de diálogo.

La relación entre transacciones de base de datos y transacciones SAP se ilustra enel gráfico “Relación entre transacciones de base de datos y transacciones SAP”.

Gestión de bloqueos

You need to demonstrate to the participants the need for a lock mechanism toachieve data consistency at the database level, and also that the lock managementprovided by database management systems is not sufficient. You need to introducethe participants to transactions SM12 and SM04.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 113

Page 128: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Para garantizar la consistencia de datos dentro de un sistema SAP, debe asegurarsede que no se puede acceder a los registros de datos ni éstos se pueden modificarpor parte de varios usuarios simultáneamente. Para ello, el sistema SAP cuentacon su propio concepto de gestión de bloqueos.

Desde la perspectiva de una base de datos, cada paso de diálogo forma una unidadfísica y lógica: la transacción de base de datos. La gestión de bloqueos debase de datos sólo puede coordinar este tipo de transacción de base de datos.Desde el punto de vista de SAP, sin embargo, esto no es suficiente, puesto que lastransacciones SAP, que están formadas a partir de una secuencia de pasos detrabajo relacionados lógicamente que son consistentes en términos empresariales,están formadas generalmente por varios pasos de diálogo. Los sistemas SAP debentener su propia gestión de bloqueos. Esto se implementa utilizando el procesode trabajo de cola. De este modo también se garantiza que la independencia deplataforma de la gestión de bloqueos esté actualizada.

El concepto de bloqueo SAP se basa en el principio que los programas SAPrealizan entradas de bloqueo para que los registros de datos se procesen en unatabla de bloqueo. Sólo se pueden realizar entradas de bloqueo si todavía no existeninguna que se deba bloquear para las entradas de tabla.

El proceso de trabajo de cola gestiona el bloqueo lógico de las transaccionesSAP en la tabla de bloqueo. La tabla de bloqueo está situada en la memoriaprincipal de la instancia con el proceso de trabajo de cola.

Nota: La instancia cuya memoria principal contiene la tabla de bloqueotambién se conoce como servidor de cola.

114 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 129: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Gráfico 40: Gestión de bloqueos en AS ABAP

Si un usuario desea modificar el acceso a datos, el proceso de trabajo de diálogoen ejecución solicita un bloqueo (para ello, el programador de la aplicación debeprogramar esta solicitud explícitamente).

When a lock object is successfully activated in the ABAP Dictionary, the systemgenerates an ENQUEUE function module and a DEQUEUE function modulewith the respective name:

ENQUEUE_<Sperrobjektname>

DEQUEUE_<Sperrobjektname>

The developer then uses these function modules in the application program torequest and release locks.

Si se procesa una solicitud de diálogo en el servidor de cola, el proceso de trabajode diálogo puede acceder directamente a la tabla de bloqueo. Entonces, verifica sise puede generar un nuevo bloqueo; es decir, si existe una colisión con bloqueosya establecidos. Si es posible establecer un bloqueo, el proceso de trabajo dediálogo lo crea y se proporciona la clave del bloqueo al usuario (propietario delbloqueo). La clave del bloqueo se mantiene en el contexto del usuario en lamemoria compartida.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 115

Page 130: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Si el proceso de trabajo de diálogo que procesa la solicitud de usuario y el procesode trabajo de cola no se ejecutan en la misma instancia, ambos se comunicanentre sí a través del servidor de mensajes. En este caso, la solicitud de bloqueo sereenvía del proceso de trabajo de diálogo al proceso de trabajo de cola a travésde los despachadores y del servidor de mensajes. El proceso de trabajo de colaverifica entonces si es posible establecer un bloqueo. En este caso, la solicitud debloqueo se reenvía del proceso de trabajo de diálogo al proceso de trabajo de colaa través de los despachadores y del servidor de mensajes.

Cuando se solicita el bloqueo, el sistema hace una verificación para determinarsi el bloqueo solicitado es problemático en entradas existentes de la tabla debloqueo. Si la tabla de bloqueo ya contiene entradas correspondientes, se rechazala solicitud de bloqueo. A continuación, el programa de aplicación informa alusuario de que actualmente no se puede ejecutar la operación solicitada.

In order for the system to execute lock requests, the lock object must be defined inthe ABAP Dictionary. The lock object contains one or more tables whose entriesare to be locked. You can define a lock mode for a lock object.

El programador de la aplicación puede elegir entre distintos modos de bloqueo:

• Bloqueos contra escritura (modo de bloqueo Exclusivo); los datosbloqueados los puede tratar únicamente un usuario. Se rechazan todas lassolicitudes de otro bloqueo contra escritura y contra lectura. Un bloqueocontra escritura protege los objetos bloqueados de todos los demás tiposde transacciones. Únicamente el mismo propietario del bloqueo puedeestablecer el bloqueo de nuevo (compactar).

• Bloqueos contra lectura (modo de bloqueo Compartido); varios usuariostienen acceso de lectura a los datos bloqueados simultáneamente. Se aceptanlas solicitudes de bloqueos de lectura adicionales, incluso si provienen deotros usuarios. Se rechaza un bloqueo contra escritura.

• Bloqueos contra escritura ampliados (modo de bloqueo eXclusivo noacumulativo); mientras los bloqueos contra escritura pueden ser solicitadosy liberados sucesivamente por la misma transacción, un bloqueo contraescritura ampliado sólo puede ser solicitado una vez, incluso por una mismatransacción. Se rechaza el resto de solicitudes de bloqueos.

• Bloqueos optimistas (modo de bloqueo Optimista); los bloqueos optimistasresponden al principio como bloqueos contra lectura y se pueden modificar abloqueos contra escritura. Los bloqueos optimistas se establecen si el usuariovisualiza los datos en modo de modificación. Los bloqueos optimistasde un mismo objeto no colisionan. Si el usuario desea grabar los datos(modificados), es necesario modificar el bloqueo optimista por un bloqueocontra escritura (modo E). (No funciona si alguien ha establecido un bloqueono optimista en el objeto anteriormente). Los otros bloqueos optimistasdel objeto se borran en el proceso.

116 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 131: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Los bloqueos fijados por un programa de aplicación son liberados por el mismoprograma de aplicación o por el programa de actualización una vez modificada labase de datos. Los bloqueos transferidos a un proceso de trabajo de actualizaciónde esta forma también se escriben en un fichero a nivel de sistema operativo y, poreste motivo, se pueden recuperar si el servidor de cola deja de funcionar.

La transacción SM12 (Herramientas → Administración → Monitor → Entradasbloqueo) visualiza los bloqueos establecidos actualmente. Si un bloqueo ya hasido heredado al proceso de actualización, también se ha fijado el indicador decopia de seguridad. Un bloqueo así también se incluirá de nuevo en la tabla debloqueos después de reanudar el servidor de cola.

For older releases (< 7.0), SM12 displayed the locks set by the update workprocess in blue. With SAP NetWeaver AS ABAP 7.00, you can display thedetails on the lock entry in transaction SM12. If the backup flag is set here, thiscorresponds to the earlier blue locks.

Existen básicamente dos modos de borrar bloqueos realizados por usuarios:

• Cerrar la sesión del usuario en el resumen de usuario (transacción SM04o Herramientas → Administración → Monitor → Supervisar sistema →Resumen de usuario)

• Borrar manualmente las entradas de bloqueo en SM12

El primer método (cerrar la sesión del usuario) también tiene como resultadoque el propietario original del bloqueo abandona la sesión, liberando todos losbloqueos establecidos; el segundo método (borrar manualmente mediante SM12)simplemente borra la entrada de bloqueo de la tabla de bloqueo. De este modo,teóricamente se permite a varios usuarios modificar los mismos registros de datossimultáneamente.

Atención: Antes de borrar los bloqueos utilizando la transacción SM04,los administradores del sistema deben verificar, en primer lugar, si elusuario que tiene el bloqueo todavía está en el sistema. Sólo se debenborrar entradas de bloqueo con la transacción SM12 si el propietario delbloqueo ya no está dentro del sistema pero todavía es el propietario delbloqueo (por ejemplo, si la conexión entre SAP GUI y el sistema SAP seha roto porque el usuario ha apagado su ordenador front end sin salirdel sistema).

At this point you could show the participants the existing lock entries intransaction SM12 (these locks could, for example, have resulted from user databeing changed in SU01). It may also be helpful to draw the participants’ attentionto the consequences of deleting a lock entry manually. If you also demonstratedeleting a user session in SM04, you must draw the participants’ attention to the

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 117

Page 132: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

fact that – if they do this themselves – they must never delete the sessions of usersparticipating in other courses who are also logged on to the same training system.You can check this in the system log (SM21).

Servidor de posición en cola independiente / Ser-vicios centrales ABAPPor razones de alta disponibilidad, el proceso de trabajo de cola junto al servidorde mensajes ABAP también se puede desvincular de la instancia central e instalarcomo una instancia de servicios centrales ABAP (ASCS). Para obtener másdetalles, vaya a la biblioteca de SAP NetWeaver: SAP NetWeaver por capacidadclave → Plataforma de aplicación por capacidad clave → Tecnología ABAP →Tecnología cliente/servidor → El concepto de bloqueo SAP (BC-CST-EQ) →Servidor de posición en cola independiente

ActualizaciónEn el sistema SAP, un proceso empresarial se asigna mediante una transacciónSAP que puede contener varias modificaciones de pantalla (por ejemplo, lacreación de un pedido). Las modificaciones de datos resultantes de este proceso sedeben ejecutar completamente o no ejecutarse en la base de datos. Si la operaciónfinaliza durante la transacción o se produce un error, la transacción no deberealizar ninguna modificación en la base de datos. El sistema de actualizaciónSAP, descrito a continuación, se encarga de ello.

El sistema de actualización también ofrece más seguridad, mejor rendimientoy más posibilidades de restablecimiento en la ejecución de modificaciones enla base de datos.

118 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 133: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Gráfico 41: El principio de las actualizaciones asincrónicas

El sistema de actualización es una tecnología que permite a las transaccionesSAP librarse de las modificaciones de la base de datos que requieren muchotiempo. Éstas se llevan a cabo asincrónicamente en procesos de trabajo deactualización especiales. También evita los problemas de rechazo de repeticionesprovocados por la diferencia en la concepción de la unidad de trabajo lógica(LUW) en una transacción SAP y en la base de datos.

Si, durante un proceso de trabajo de diálogo, los datos almacenados temporalmentepara su procesamiento se transfieren a un proceso de trabajo de actualización paraseguir procesándolo, el proceso de trabajo de diálogo no espera a que se completela solicitud de actualización: la actualización es asincrónica (no simultánea). Elproceso de actualización asincrónico se ilustra en el gráfico “El principio de lasactualizaciones asincrónicas”.

La parte de diálogo se completa con el comando ABAP COMMIT WORK; laparte de actualización de la transacción se inicia: el servidor de actualizacióntransfiere la solicitud de actualización a un proceso de trabajo de actualización.Aquí, cada paso de diálogo corresponde a una transacción de base de datos (quese ejecuta o bien completamente o no se ejecuta en la base de datos, y allí secompleta con un comando COMMIT). La parte de actualización de la transacciónSAP se ejecuta en una transacción de base de datos. Sólo entonces se copian losdatos a las tablas de aplicación.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 119

Page 134: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Gráfico 42: El proceso de actualización asincrónico

Si los usuarios desean modificar un registro de datos en una transacción SAP,deben llamar la transacción correspondiente en el diálogo, realizar las entradascorrespondientes en las pantallas y, a continuación, iniciar el proceso deactualización grabando los datos. Este proceso desencadena los siguientes pasos:

1. El programa bloquea el registro de datos para otros usuarios. Esto selleva acabo dirigiendo el proceso de trabajo de cola (utilizando el servidorde mensajes si procede). El proceso de trabajo de cola realiza la entradarelevante en la tabla de bloqueo o (si otro usuario ya ha bloqueado losdatos) informa al usuario de que el registro de datos no se puede modificaractualmente.

2. Si el proceso de trabajo de cola tiene éxito al escribir la entrada de bloqueoen la tabla de bloqueo, transfiere la clave de bloqueo creada al usuario, elprograma lee el registro que se debe modificar desde la base de datos y elusuario puede modificar el registro en la imagen de pantalla de la transacciónSAP.

3. En el proceso de trabajo de diálogo activo, el programa llama a un módulode funciones mediante CALL FUNCTION ... IN UPDATE TASK y escribe laorden de transporte a las tablas de actualización de base de datos. Éstas tablastambién se denominan tablas VB*, puesto que sus nombres comienzan por“VB”. Actúan como memoria temporal y almacenan los datos que se debenmodificar hasta que se puedan recopilar y escribir en las tablas de aplicaciónde la base de datos (en una transacción de base de datos individual).

120 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 135: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

4. Al final de la parte de diálogo de la transacción (por ejemplo, cuando elusuario graba los datos, posiblemente tras completar otros pasos de diálogo),el programa inicia el cierre de la transacción con la expresión COMMITWORK. El proceso de trabajo encargado de tratar el paso de diálogo activocompleta la cabecera de actualización y desencadena un proceso de trabajode actualización.

5. Sobre la base de la información (clave de la orden de actualización, clave debloqueo) transferida del proceso de trabajo de diálogo, el proceso de trabajode actualización lee los registros log que pertenecen a esta transacción SAPa partir de las tablas VB*.

6. El proceso de trabajo de actualización transfiere las modificaciones marcadasy recopiladas en las tablas VB* a la base de datos como una orden detransporte, y evalúa la respuesta de la base de datos. Si las modificaciones sehan escrito correctamente en las tablas de destino, el proceso de trabajo deactualización desencadena un commit de base de datos después de la últimamodificación y borra las entradas de las tablas VB*. Si se produce un error,el proceso de trabajo de actualización desencadena un rollback de base dedatos, deja los registros log en las tablas VB* y los marca como defectuosos.

7. Se reinicializan las entradas de bloqueo de la tabla de bloqueo.

Behind the VB* tables, there are BHDR (update headers), VBMOD (updatemodules), VBDATA (update data) and VBERROR (possible error information); thetable structures can be displayed using the ABAP Dictionary (transaction SE11).

You could at this point demonstrate asynchronous updates on the system. Todo this, open two sessions and arrange them next to each other on the screen:in one session, call the process overview transaction SM50 (if your system hasseveral instances, make sure that you are logged on to the instance on whichthe update work process is configured). In the other session, in transactionSA38, call report VBTST300 (update test program) with parameters U (update),no. of COMMIT WORKS = 1, No. of func. per update = 5000 (leave the otherparameters unchanged) . Once you have pressed the Execute pushbutton, go tothe session with the process overview and keep refreshing it to show that a dialog

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 121

Page 136: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

work process is active to start with. Once the dialog part is finished, the message“update test finished” is displayed in the SA38 session, and the update part of thetransaction starts in SM50 in the UPD process.

Nota: El programador de la aplicación decide si utilizar actualizacionesasincrónicas y cuándo hacerlo mientras programa la transacción. Ademásde la actualización asincrónica, existen otras técnicas de actualización(por ejemplo, sincrónica o local).

Para seguir incrementando el rendimiento, los programadores de laaplicación pueden configurar varios tipos de actualizaciones:

• actualizaciones V1 principales, críticas en el tiempo. Son relevantespara objetos con una función de control en el sistema SAP, comomodificar el material de almacén o crear un pedido.

• actualizaciones V2 secundarias, no críticas en el tiempo, quedependen de las actualizaciones V1. Éstas son, por ejemplo,actualizaciones puramente estadísticas como el cálculo de resultados.

• actualizaciones no críticas en el tiempo que se recopilan y procesanen un momento posterior (ejecución colectiva).

Los módulos V1 de una transacción SAP se procesan secuencialmente enun único proceso de trabajo de actualización. Si su sistema SAP tieneun proceso de trabajo para actualizaciones V2 (tipo UP2), los módulosV2 sólo se actualizarán allí. Una vez completado el procesamientocorrectamente, el proceso de trabajo de actualización V1 libera de nuevolos bloqueos relevantes. Esto significa que los procesos de trabajode actualización “normales” se encuentran disponibles de nuevo másrápidamente para las actualizaciones V1 críticas en el tiempo, y que lasentradas de bloqueo relevantes se borran antes. Si no ha configuradoningún proceso de trabajo de actualización V2, el proceso de trabajo V1se encargará de tratar todas las actualizaciones.

En la ejecución colectiva, los módulos no se actualizan automáticamente;sólo si un informe especial (informe RSM13005) desencadena laactualización. Entonces se recopilan, se agregan y se actualizan todas lasllamadas de los módulos de funciones simultáneamente. De este modo, setratan como los módulos de actualización V2.

Si se produce un error durante una actualización, finalizará el procesamiento delcomponente de actualización activo. Es posible avisar automáticamente a losusuarios por correo urgente cuando se cancela una actualización.

Si un proceso de trabajo de diálogo se cancela cuando se escriben datos a las tablasVB*, éstas contendrán datos que no se actualizarán. Estas entradas se puedenborrar automáticamente al reiniciar el sistema o borrarse manualmente. Las tablasde aplicación no sufren modificación alguna.

122 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 137: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Una actualización asincrónica se puede cancelar por varias razones. Si, porejemplo, se realizan varios intentos para indicar el mismo registro de datos(mediante inserción) en una tabla, se desencadena la condición de excepción“Clave duplicada” en la codificación, puesto que ya existe una entrada en latabla con esa clave. Por este motivo, no es posible escribir el registro de datoscorrespondiente en la base de datos más de una vez.

At this point you could show the participants how the SAP system reacts when anupdate terminates (if you have made the preparations described at the beginning ofthis lesson). To do this, call report VBTST300 in transaction SA38 with parametersU (=update), No. of COMMIT WORKS = 1, No. of func. per update = 1 (leave theother parameters unchanged). This updates the database and should run withoutany problems.

Then you can call the same program with the same parameters (except with Iinstead of U). The program will now try to insert an entry in the database thatalready exists there. As a result, at the next user interaction after you run theprogram (you may need to wait a second!), the system sends an express documentwith the title “Update was terminated”. This is a message from the update workprocess. Once you have received the message, you can display the update recordthat caused the error in SM13; you also have the option of branching from here tothe short dump. You may find that several defective update records are displayedin SM13, since several courses may be using the same system simultaneously.

Atención: You can use this demonstration to create defective updaterecords that the participants can then display in the exercises.

Cuando una actualización se cancela, el sistema envía un correo urgente al usuarioque lanzó la actualización. El responsable del sistema es quien debe intervenirentonces e iniciar los pasos adicionales. La transacción SM13 (solicitudes deactualización) pone a disposición del responsable del sistema herramientas deanálisis para tratar actualizaciones canceladas. Una vez que se ha corregido elerror que causó la cancelación (por ejemplo, la reparación de los daños en elhardware) el usuario final debe reiniciar el procesamiento.

ImprimirLos sistemas SAP proporcionan una amplia variedad de opciones para representardatos de tipo empresarial y de otros tipos. Estos datos, creados y formateados enun paso de diálogo, se pueden enviar a impresoras y a otras interfaces de salida(fax, correo electrónico, etc.). Primero se debe configurar una impresora en elsistema antes de poder llamarse.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 123

Page 138: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Puede seleccionar una impresora que ya haya sido configurada seleccionando elicono de impresión (Ctrl + P), y a continuación usar la ayuda F4. Generalmente,se configura una impresora estándar como predeterminada en su perfil de usuario.

Una vez configurada la impresora, el sistema SAP dispone de toda la informaciónnecesaria para crear una orden SPOOL.

Una orden SPOOL contiene información acerca de los datos a emitir, de suformato y del modelo de impresora utilizado. La orden SPOOL generada sealmacena en el TemSe (temporary sequential file, fichero secuencial temporal).

Consejo: Las órdenes SPOOL pueden crearse mediante procesos detrabajo de diálogo o mediante procesos de trabajo de fondo. Los procesosde trabajo SPOOL no crean órdenes SPOOL.

Gráfico 43: Imprimir en AS ABAP

Show how a spool request and an output request are generated.

In a transaction with list output (such as SM50) choose Print (Ctrl+P). In thefollowing dialog window, choose an output device such as LP01 and chooseContinue. Confirm the dialog box.

You have now created a spool request.

124 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 139: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

On this screen, choose System → Own Spool Requests. Information on the spoolrequest you have just created (and poss. others as well) is displayed. To view theoutput requests for a spool request, select the spool request and click the Outputrequests (F5) pushbutton. The message you receive for your spool request is “Listcontains no data”. Go back to the previous screen and choose Print directly foryour spool request. This creates an output request that you can now display.

Tal y como puede ver en el gráfico Proceso SPOOL en un sistema SAP,un proceso de trabajo SPOOL formatea los datos especificados en la ordenSPOOL y crea una orden de salida. La orden de salida contiene todos los datosen un formato adecuado a la impresora. Estos datos pueden transferirse a unproceso SPOOL de sistema operativo localmente (en el mismo ordenador) o bienremotamente (mediante una conexión de red).

Nota: En un sistema SAP, la conexión entre un proceso de trabajo SPOOLy el proceso SPOOL de sistema operativo se conoce como el método deacceso. Existen más métodos de acceso de los que se muestran arriba.Estos son dos de los métodos de acceso más utilizados para conectarimpresoras a sistemas SAP. En este contexto, remoto o local no se refiere ala ubicación física de la salida, sino al sitio donde se “conecta” el procesode trabajo SPOOL al proceso SPOOL de sistema operativo.

En cuanto al proceso de impresión, se consigue el mejor rendimiento enviandolos datos a imprimir al sistema operativo tan pronto como sea posible. Esto seefectúa mediante el método de acceso local. A continuación, el sistema operativorealiza todas las tareas restantes, como las colas y la transferencia de datos a laimpresora seleccionada.

Consejo: Un pequeño pero indispensable requisito para imprimir desdelos sistemas SAP es que cada impresora seleccionable permita imprimir anivel de sistema operativo.

Puede visualizar sus propias órdenes SPOOL y de salida mediante Sistema →Órdenes SPOOL propias (transacción SP02).

Mediante Sistema → Perfil de usuario → Datos propios (código de transacciónSU3) puede especificar sus opciones personales para imprimir en la etiquetaOpciones predeterminadas en la sección Control SPOOL.

Course ADM100 provides additional information on printing an also on setting upprinters in AS ABAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 125

Page 140: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Ejecución en proceso de fondoLa ejecución en proceso de fondo de SAP es un método para automatizar lastareas rutinarias y optimizar el uso de los recursos informáticos de SAP de suorganización. En la ejecución en proceso de fondo, se suministran instrucciones alsistema R/3 para que ejecute programas para usted. Puede utilizar la ejecución enproceso de fondo para ejecutar programas largos o que requieren muchos recursosen horas bajas. Puede utilizarlo para asignar al sistema la tarea para ejecutarinformes y programas. No existe ninguna presión en los recursos de diálogo y losinformes que se ejecutan en proceso de fondo no están sujetos a las restriccionesde tiempo de ejecución del procesamiento de diálogo (finalización del programatras un tiempo de ejecución de diez minutos).

La separación de la ejecución en proceso de fondo en procesos de trabajoespeciales le ofrece una dimensión adicional para separar la ejecución en procesode fondo y el trabajo interactivo. Normalmente, la ejecución en proceso de fondoy el trabajo interactivo del sistema tienen lugar a distintas horas. Por ejemplo,el sistema se utiliza interactivamente durante el día, y la ejecución en procesode fondo tiene lugar durante la noche. Puede utilizar los procesos de trabajode fondo para separar la ejecución en proceso de fondo y el trabajo interactivotambién por servidores, puesto que los jobs de fondo sólo se ejecutan en servidoresque ofrezcan ejecución en proceso de fondo.

Gráfico 44: Planificación de tareas de fondo (jobs)

126 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 141: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

First of all, show how an ABAP program is executed in the dialog: Starttransaction SA38 and run program RSUSR000. A list of all users who are loggedon is output (see also AL08). Then use SA38 to schedule the same program in thebackground.

Display the job using System→Own Jobs and then call up the spool list for the job.

El usuario final puede planificar generalmente que el programa se inicie en procesode fondo como job de la transacción de aplicación. Entonces, el job “espera” elmomento de ejecución planificado en la tabla de planificación de jobs. Si llegala hora y existen procesos de trabajo de fondo disponibles, el planificador deprocesos de fondo distribuye el job a un proceso de trabajo de fondo y lo ejecuta.El usuario puede visualizar el resultado en la transacción de aplicación o, encaso de programas de generación de listas, puede visualizar la orden SPOOLcorrespondiente al job (consulte la sección Impresión). Para visualizar los jobspropios, seleccione Sistema → Jobs propios (código de transacción SMX).

La administración del sistema y la preparación del trabajo tienen acceso a unaherramienta para la planificación de distintos tipos de tareas de fondo con latransacción SM36 (Herramientas → CCMS → Ejecución en proceso de fondo→ Definir jobs). La supervisión de jobs por todo el sistema tiene lugar con latransacción SM37 (Herramientas → CCMS → Ejecución en proceso de fondo→ Jobs - Resumen y administración).

Para la planificación y la supervisión de tareas de fondo de todo el sistema, puedeutilizar la Planificación central de procesos SAP (SAP CPS) y otros productos conlicencia de los interlocutores de SAP.

Course ADM100 provides further insight into background processing.

Comunicación mediante el gatewayCada instancia de un sistema AB ABAP contiene un gateway. Éste se utiliza paraestablecer la comunicación entre los procesos de trabajo de distintas instanciaso sistemas SAP, así como también entre procesos de trabajo y programasexternos. El lector de gateway (generalmente denominado sólo gateway) es elproceso principal del sistema de gateway. El despachador lo inicia y lo verificaperiódicamente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 127

Page 142: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Gráfico 45: Comunicación por gateway

The graphic illustrates various possible communication channels. But it can alsobe interpreted this way: The non-SAP system starts a business process and queriesdata from the SAP CRM system, this in turn queries data from an SAP ECC. Theresponse it returned in the same way.

En la comunicación entre instancias de un sistema o varios sistemas mediante unallamada de función remota (RFC) o CPIC, el gateway siempre está implicado. Siun proceso de trabajo de diálogo debe establecer una conexión RFC a un sistemaremoto en el contexto de una solicitud, por ejemplo, para traer datos de cliente,utiliza el gateway, que se encarga entonces de la comunicación con el sistemaremoto. A continuación, el gateway reenvía la solicitud al gateway del sistemaremoto. El gateway remoto transfiere la solicitud al despachador. A su vez,éste reenvía la solicitud a uno de sus procesos de trabajo, el cual se comunicadirectamente con “su” gateway.

Por este motivo, es el gateway el que siempre recibe las conexiones RFC deentrada. Las conexiones de salida son iniciadas por el proceso de trabajo.

In transaction SMGW, the connections of the gateway can be monitored. Installinga standalone gateway is also possible. This is sometimes required for integratingnon-SAP applications.

128 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 143: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

Procesamiento de solicitudes WebLas solicitudes Web son recibidas por el Internet Communication Manager(ICM). Estas solicitudes HTTP(S) pueden procesarse o bien en el proceso detrabajo ABAP (por ejemplo, aplicaciones Web Dynpro ABAP) o bien reenviarse aAS Java en un sistema AS ABAP+Java (por ejemplo, aplicaciones Web DynproJava). El ICM puede utilizar la dirección URL para decidir hacia dónde reenviarla solicitud (si no puede responder a ella desde su caché).

Gráfico 46: Procesar una solicitud Web

As a demonstration, you can call up the URL of the ICM in the browser.The ULR is http://<computer name>:<ICM-HTTP-Port>. For example:http://twdf1234.wdf.sap.corp:8000. By default, the ICM HTTP port is 80$$,whereby $$ is the instance number. If no port answers the ICM you can look upthe port under parameter icm/server_port_0 SMICM via Goto→ Parameter →Display.

Call up the URL http://<Computer>:<Port>/sap/public/info (calls an ABAPfunction module) and then http://<Computer>:<Port> (call up the AS Javahomepage). This is an easy way to demonstrate the distribution of requests viathe ICM.

Si la solicitud está dirigida al entorno de tiempo de ejecución Java, se envía aldespachador Java (2b), el cual la reenvía a un proceso de servidor Java (3b). Acontinuación, el proceso de servidor Java consulta el esquema Java de la base dedatos, si procede, y utiliza el proceso de despachador Java para enviar la respuestade nuevo al ICM. Finalmente, el ICM envía la respuesta desde el sistema SAPal usuario que envió la solicitud (5).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 129

Page 144: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

In contrast to ABAP, where there are different types of work processes (dialog,update, background...) for different types of tasks, the Java server process offersseveral services simultaneously (for example, HTTP provider service, JDBCconnector service, locking adapter service). Based on the type of user request,the Java dispatcher for an instance selects a Java server process on which the“appropriate” services are configured.

Si la solicitud está dirigida al entorno de tiempo de ejecución ABAP, el ICM lareenvía al despachador ABAP (2a), el cual la trata como una solicitud SAP GUItípica (véase la sección anterior). El proceso de trabajo que procesa la petición secomunica entonces directamente con el ICM (4a). El ICM devuelve la respuestaal usuario que envió la solicitud (5).

If, at this point, participants ask whether in the case of several instances, severalserver/port combinations must also be released for external access, you can referto the SAP Web Dispatcher. The SAP Web dispatcher (or another load balancer)is used to distribute HTTP requests across all instances of an SAP system. It isthe central point of entry to the SAP system from the internet. For each incomingrequest, it must decide on the instance to which it forwards the request. Thearchitecture and configuration of the SAP Web dispatcher are discussed in courseADM102.

130 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 145: 119167612 taw10-01-es

TAW10_1 Lección: Procesos AS ABAP

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.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 131

Page 146: 119167612 taw10-01-es

Capítulo 3: El núcleo del sistema TAW10_1

Resumen de la lección

Ahora podrá:• Comprender cómo funciona el AS ABAP• Enumerar los procesos AS ABAP y describir su finalidad• Describir cómo se procesan las solicitudes a AS ABAP

132 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 147: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Estructurar configuraciones cliente/servidor• Nombrar los procesos del Servidor de aplicación SAP NetWeaver• Definir el término instancia y reconocer las características de una instancia

central• Comprender cómo funciona el AS ABAP• Enumerar los procesos AS ABAP y describir su finalidad• Describir cómo se procesan las solicitudes a AS ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 133

Page 148: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

134 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 149: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

113Examine sus conocimientos

1. ¿Cuáles son las ventajas de una configuración cliente/servidor de tres niveles,en comparación con una configuración de uno o dos niveles?

Seleccione la(s) respuesta(s) correcta(s).□ A Posibilidad de ampliar simplificada□ B Administración simplificada□ C Posibilidad de distribución de carga□ D Ninguno de los anteriores

2. ¿Qué proceso AS ABAP recibe la solicitud del usuario?Seleccione la(s) respuesta(s) correcta(s).□ A Proceso de trabajo□ B despachador□ C Proceso de servidor□ D SAP GUI

3. ¿Qué tipos de proceso de trabajo hay en un sistema AS ABAP?Seleccione la(s) respuesta(s) correcta(s).□ A Proceso de trabajo de diálogo□ B Servidor de mensajes□ C Proceso de trabajo de actualización□ D Internet Communication Manager (ICM)□ E Proceso de trabajo de fondo□ F Proceso de trabajo de cola□ G Proceso de trabajo SPOOL

4. ¿Cuáles de los siguientes procesos pertenecen a AS Java?Seleccione la(s) respuesta(s) correcta(s).□ A Servidor (proceso)□ B Internet Communication Manager (ICM)□ C Software Deployment Manager (SDM)□ D despachador□ E Java Connector (JCo)

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 135

Page 150: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

114Respuestas

1. ¿Cuáles son las ventajas de una configuración cliente/servidor de tres niveles,en comparación con una configuración de uno o dos niveles?

Respuesta: A, C

El hecho de implementar una capa de hardware adicional para procesosde aplicación facilita la adaptación de un sistema SAP, si la cantidad deusuarios cambia (posibilidad de ampliar), y la asignación de grupos deusuarios a servidores de aplicación específicos (vista orientada al software),(distribución de carga). Sin embargo, la capa de hardware adicional noreduce la carga de trabajo administrativa.

2. ¿Qué proceso AS ABAP recibe la solicitud del usuario?

Respuesta: B

El despachador recibe la solicitud del usuario en el AS ABAP y la transfiere aun proceso de trabajo disponible. El programa de presentación de SAP, SAPGUI, no forma parte del servidor de aplicación (vista orientada al software),y el proceso de servidor es un proceso AS Java.

3. ¿Qué tipos de proceso de trabajo hay en un sistema AS ABAP?

Respuesta: A, C, E, F, G

En teoría, todos los procesos anteriores se pueden configurar en un ASABAP. Sin embargo, no todos los procesos anteriores son procesos detrabajo. El servidor de mensajes y el proceso ICM no son procesos de trabajo.

4. ¿Cuáles de los siguientes procesos pertenecen a AS Java?

Respuesta: A, C, D

El ICM no es un proceso de AS Java, sino un proceso de AS ABAP. El JavaConnector forma parte del AS Java, pero no es un proceso independiente.

136 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 151: 119167612 taw10-01-es

Capítulo 4115 Tecnologías de la comunicación y la

integración

The participants are confronted with a very large number of new terms in thisunit, and it is your job, as the instructor, to make sense of these terms and,above all, to set priorities. RFC is still the primary technology used for SAPsystem connections, although new options for linking systems are increasingin significance. XML data exchange between companies by means of HTTP,cross-system workflow scenarios, and custom-built Web applications are amongthe topics that are attracting ever more attention from customers.

Resumen del capítuloHay un amplio abanico de métodos para conectar sistemas SAP con otros sistemasy optimizar procesos dentro de un sistema. Muchas de las tecnologías disponiblesse presentan brevemente en esta unidad, con lo que debería hacerse una idea delos múltiples usos de cada una de ellas.

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

• Nombrar varios procesos empresariales de todo el sistema• Explicar las ideas que respaldan el concepto ALE• Enumerar varias tecnologías de interfaz utilizadas por los sistemas SAP• Describir el proceso de una Remote Function Call• Explicar la importancia y la utilización de objetos empresariales y sus BAPIs• Realizar una Remote Function Call• Explicar la evolución desde SAP R/3 a SAP ERP y la Enterprise SOA• Describir la importancia de los servicios Web dentro de la Enterprise SOA• Explicar los servicios Web• Describir UDDI y WSDL

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 137

Page 152: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Contenido del capítuloLección: Procesos empresariales de todo el sistema... . . . . . . . . . . . . . . . . . . .139Lección: Remote Function Calls y BAPIs... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145

Ejercicio 4: Remote Function Calls y BAPIs ... . . . . . . . . . . . . . . . . . . . . . . . . .153Lección: Arquitectura orientada a servicios de empresa (EnterpriseSOA) ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .158Lección: Servicios Web ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .167

138 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 153: 119167612 taw10-01-es

TAW10_1 Lección: Procesos empresariales de todo el sistema

Lección:116

Procesos empresariales de todo el sistemaDuración de la lección: 30 Minutos

Resumen de la lecciónEste módulo trata los puntos básicos del concepto de Application Link Enabling(ALE).

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

• Nombrar varios procesos empresariales de todo el sistema• Explicar las ideas que respaldan el concepto ALE

This lesson aims to give the participants an understanding of the significance ofcross-system business processes and the need to link them using ALE.

Ejemplo empresarialSu empresa quiere implementar un escenario de venta por Internet en el contextode la solución SAP CRM.

La importancia de los procesos empresariales de todoel sistemaVamos a empezar definiendo los procesos empresariales de todo el sistema,utilizando situaciones comunes como ejemplos.

Por ejemplo, puede darse el caso de que, dentro de una empresa, el sistema derecursos humanos esté separado del resto del sistema de software empresarial.Obviamente, los sistemas no pueden estar completamente separados, dado queel sistema contable necesita los datos del salario de los empleados. En estasituación, necesita procesos empresariales de todo el sistema para intercambiar losdatos relevantes.

Los procesos empresariales de todo el sistema se utilizan, por ejemplo, si dosempresas colaboran estrechamente y mandan órdenes conjuntas a un proveedor.Los sistemas IT empresariales de las empresas necesitan comunicarse entre sí paraconsolidar las cantidades que quieren ordenar. En este caso, el proceso empresarialno sólo va más allá de los límites del sistema, sino de los límites de la empresa.

Un ejemplo adicional es la transferencia de una cantidad limitada de datosespecíficos, por ejemplo, la transferencia electrónica de datos de extractos decuenta desde un banco a una empresa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 139

Page 154: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Los desarrollos recientes sugieren que la importancia de los procesos empresarialesde todo el sistema seguirá creciendo rápidamente.

Application Link Enabling (ALE)Application Link Enabling es una manera de crear y operar aplicacionesdistribuidas. El concepto básico de Application Link Enabling es garantizar elfuncionamiento de una infraestructura de sistema distribuida e integrada. Estoimplica un intercambio de mensajes controlados empresarialmente, utilizandodatos consistentes entre sistemas de aplicación sin conexión fija. La integración delas aplicaciones no se efectúa mediante una base de datos central, sino mediante lacomunicación sincrónica y asincrónica.

Los sistemas que utilizan ALE para intercambiar datos pueden estar ubicadosen la misma empresa o pueden pertenecer a diferentes empresas. Una delas características de ALE es que distintos sistemas se enlazan en términosempresariales a través de una transferencia de datos segura y consistente.

Gráfico 47: Distribución de procesos empresariales utilizando ALE

También se podría describir ALE como el conjunto de los siguientes elementos:quién intercambia qué datos, cuándo, con quién y a través de qué medios.

140 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 155: 119167612 taw10-01-es

TAW10_1 Lección: Procesos empresariales de todo el sistema

Por lo tanto, la implementación de ALE requiere que se aclaren los siguientespuntos detalladamente:

1. Identificación del proceso empresarial y de los objetos involucrados2. Identificación de la información que se quiere transmitir3. Especificación del formato de los datos que van a transferirse4. Aclaración de qué tecnología de transferencia va a utilizarse5. Especificación de la clase de transferencia6. Especificación del destino de la transferencia de datos

La siguiente tabla contiene ejemplos para implementar ALE:

Sincronización de datos en el proceso empresarial: un ejemplo

Proceso Ventas por Internet con SAP CRM

Identificación de lainformación que sequiere transmitir

Datos de orden del sistema SAP CRM, que debentransmitirse a un ERP back end

Formato de los datos Formato IDoc

Tecnología detransferencia

por RFC

Clase de transferencia asincrónicamente, cada 60 segundos

Objetivo Ofrecer bienes o servicios para la venta en Internet

Los datos se identifican a menudo dentro del sistema SAP, utilizando un objetoempresarial y sus Business Application Programming Interfaces (BAPIs). UnaBAPI es un método de un objeto empresarial, por ejemplo, el registro maestro demateriales. Un método permitido podría ser la creación o modificación de losdatos maestros de material. Las BAPIs suelen permitirle tratar todos los datosque pertenecen al objeto.

El formato IDoc describe la estructura de “documentos intermedios”. Hay variostipos de formatos IDoc para diferentes tipos de datos por intercambiar. De maneraalternativa, también puede utilizar ALE para transferir datos en un formato XMLautorizado.

Puede seleccionar su tecnología de transferencia de datos preferida en lasrestricciones impuestas por el sistema. Por ejemplo, puede transferir datosmediante Remote Function Call (RFC) o utilizando HTTP o HTTPS.

Existen dos tipos básicos de transferencia: sincrónica y asincrónica. Unatransferencia sincrónica significa que los datos se transfieren en el momento de lacreación o modificación. Puede iniciar transferencias asincrónicas en intervalos desu elección.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 141

Page 156: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Hay muy pocas restricciones en los sistemas que pueden enlazarse. Los sistemasimplicados deben tener la capacidad técnica de recibir las comunicaciones(habilitado para RFC, habilitado para HTTP) e interpretar el formato transferido(IDoc, XML). Los sistemas SAP de distintas liberaciones se pueden enlazarmediante ALE.

142 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 157: 119167612 taw10-01-es

TAW10_1 Lección: Procesos empresariales de todo el sistema

Discusión con moderadorThe aim of this discussion is to make customers aware of cross-system businessprocesses in their own companies.

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.

Which cross-system business processes do you (the participants) use?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 143

Page 158: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Resumen de la lección

Ahora podrá:• Nombrar varios procesos empresariales de todo el sistema• Explicar las ideas que respaldan el concepto ALE

Más información

• BIT300 y BIT350 son cursos de formación más avanzados sobre ALE.• Puede obtener información adicional sobre ALE en el SAP Service

Marketplace, utilizando el alias /ibf (y, a continuación, en Ibf en detalle =>Escenarios de integración).

144 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 159: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

Lección:121

Remote Function Calls y BAPIsDuración de la lección: 30 Minutos

Resumen de la lecciónEste módulo ofrece un resumen de las tecnologías de interfaz disponibles en elsistema SAP, centrándose en la importancia de las RFCs y las BAPIs.

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

• Enumerar varias tecnologías de interfaz utilizadas por los sistemas SAP• Describir el proceso de una Remote Function Call• Explicar la importancia y la utilización de objetos empresariales y sus BAPIs• Realizar una Remote Function Call

This lesson gives the participants an overview of the various interface technologiesavailable. You need a thorough understanding of RFCs (transactions SE37 andSM59), and of the BOR and BAPIs.

Ejemplo empresarialNecesita integrar aplicaciones existentes con aplicaciones SAP. Las interfacesdisponibles en el sistema estándar son especialmente interesantes aquí.

Resumen de interfacesLos sistemas SAP tienen interfaces en distintos niveles de comunicación. Éstascubren desde opciones de conexión altamente técnicas, por ejemplo, utilizandoel protocolo TCP/IP o CPI-C, a interfaces altamente especializadas diseñadaspara objetos empresariales, como las BAPIs o la interfaz IDoc utilizadas en elentorno ALE. Todas las interfaces superiores, es decir, aquellas que tienen accesoa objetos o a procesos empresariales, utilizan la misma tecnología, la RemoteFunction Call (RFC).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 145

Page 160: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Gráfico 48: Tecnologías de interfaz utilizadas en sistemas SAP

Los sistemas SAP utilizan las tecnologías de interfaz enumeradas en el gráficosuperior:

• ALE: Application Link Enabling• BAPI: Business Application Programming Interface• CPI-C: Common Program Interface Communication• EDI: Electronic Data Interchange• HTTP: HyperText Transfer Protocol• LU 6.2: Logical Unit tipo 6.2• RFC: Remote Function Call• OLE: Object Linking and Embedding• SMTP: Simple Mail Transfer Protocol• SOAP: Simple Object Access Protocol• TCP/IP: Transmission Control Protocol / Internet Protocol• XML: Extensible Markup Language

Remote Function CallLa interfaz Remote Function Call es un protocolo de interfaz SAP basado enCPI-C y TCP/IP. Simplifica la programación de los procesos de comunicaciónentre diferentes sistemas. Las RFCs le permiten llamar y ejecutar funcionesdefinidas previamente en un sistema remoto, o dentro del mismo sistema. LasRFCs gestionan el proceso de comunicación, la transferencia de parámetros y eltratamiento de errores.

146 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 161: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

RFC describe una interfaz, no el lenguaje de programación en el que se ejecuta lafunción. También puede utilizar RFCs para llamar funciones en sistemas externos.El procedimiento de comunicación RFC entre dos sistemas SAP es que el sistemaque llama utiliza una definición RFC en el sistema llamado para tener acceso auna función específica.

Esta función acostumbra a ser un módulo de función con capacidad remota. Segúnla liberación, también puede utilizar RFC para llamar funciones en sistemas SAPR/2.

Gráfico 49: Posibilidades de conexión RFC

Si quiere iniciar programas externos de manera remota, necesita una interfaz RFCfuera del sistema SAP. Podría ser, por ejemplo, un simple fichero DLL. Cadainterfaz RFC es bidireccional, de manera que los programas externos tambiénpueden utilizar RFC para tener acceso a funciones en sistemas SAP.

Nota: Todos los módulos de funciones (incluidos aquellos que tienencapacidad remota) se crean, junto con sus parámetros de importación yexportación, utilizando el Function Builder. Puede llamar el FunctionBuilder a través de Herramientas → Workbench ABAP → Desarrollo →Function Builder o utilizando el código de transacción SE37.

Para llamar un módulo RFC desde un sistema SAP, necesita conocer losparámetros de importación y exportación (definidos en el Function Builder), ydebe haber una conexión técnica entre los dos sistemas. Esta conexión se conocecomo conexión RFC o destino RFC.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 147

Page 162: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Puede gestionar sus conexiones RFC a través de Herramientas → Administración→ Administración → Red → Destinos RFC o utilizando la transacción SM59.

Gráfico 50: Remote Function Call en detalle

En el gráfico superior puede ver, en el lado izquierdo, el sistema de llamada,en el que se ha creado un destino RFC llamado DEST. Un destino RFC enla transacción SM59 no debería confundirse con un sistema SAP, ya que unaconexión RFC sólo puede señalar a un mandante específico en un sistema SAP.Por ello también se denominan conexiones entre sistemas lógicos; este término seutiliza sobre todo en el entorno ALE.

Esto también significa que puede tener al menos tantas conexiones RFC entre dossistemas como mandantes en el sistema destino. Dado que puede especificar unusuario de inicio para el destino en cada conexión RFC, también puede teneracceso a mandantes en el sistema destino varias veces, por ejemplo con unusuario de entrada al sistema diferente cada vez. Si necesita una conexión RFCbidireccional entre dos sistemas, es decir, que el sistema llamado también puedaejecutar módulos RFC en el sistema que llama, entonces debe configurar unasegunda conexión RFC equivalente en el sistema llamado.

Consejo: Cuando define destinos RFC, las conexiones RFC se

• direccionan a un mandante, cuando señalan a un sistema SAP• accesible desde todos los mandantes en el sistema

148 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 163: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

En ABAP, utiliza RFC para llamar a un módulo de funciones en otro sistema,de la siguiente manera:

CALL FUNCTION <Name>

DESTINATION <Ziel>

EXPORTING ...

IMPORTING ...

Se nombra la función que se debe ejecutar en el sistema destino. El nombre deldestino debe hacer referencia a una de las conexiones RFC disponibles. Cuandocrea una conexión RFC, puede especificar datos logon para el sistema destino; sino lo hace, debe indicar parámetros de entrada al sistema cuando inicia RFC.Exporting y Importing se utilizan para transmitir parámetros a la funcióndestino y para recibir los parámetros devueltos. La función llamada en el sistemadestino se ejecuta utilizando el ID de usuario indicado para la conexión.

Nota: También puede crear conexiones RFC para las cuales el usuariodel usuario que realiza la llamada se utilice en el sistema destino. Estosignifica que hay distintos usuarios que pueden utilizar la misma conexiónen el sistema destino. Este procedimiento también se denomina RFC deconfianza. Es, por supuesto, un requisito previo, que se creen usuariosidénticos en los sistemas fuente y destino. La RFC de confianza se explicaen el curso ADM960 - Seguridad en entornos de sistema SAP.

La RFC se ha convertido en la interfaz más importante del entorno SAP. Algunosmódulos RFC especiales que siguen ciertas convenciones también se conocencomo BAPIs (Business Application Programming Interfaces).

BOR y BAPIsUna Business Application Programming Interface (BAPI) es una interfaz deprogramación estandarizada que facilita el acceso interno y externo a procesosy datos empresariales en sistemas SAP. Las BAPIs se definen en el BusinessObject Repository como métodos de objetos empresariales SAP, y permitenuna vista orientada a objetos de los datos empresariales en un sistema SAP. Lasfunciones que pueden llamarse mediante BAPIs se implementan y almacenannormalmente en el Function Builder de Workbench ABAP como módulos defunciones habilitadas para RFC. Puede visualizar un resumen de BAPI disponibleen el BOR, por ejemplo, activando el pulsador del Business Object Repositoryen el Business Object Builder (Herramientas → Workbench ABAP → Desarrollo→ Business Object Builder), transacción SWO1. Puede tener acceso al BORutilizando directamente el código de transacción BAPI.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 149

Page 164: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Gráfico 51: BOR y BAPIs

Las BAPIs, que representan métodos para objetos empresariales en un sistemaSAP, se utilizan en varios contextos. Aquí se enumeran posibles usos de las BAPIs:

• Para enlazar procesos empresariales entre límites de sistema (por ejemplo,utilizando ALE)

• Utilizadas por SAP para integrar varias soluciones en el framework de SAPBusiness Suite

• Para conectar un sistema SAP a Internet• Utilizadas junto con SAP Business Workflow• Para conectar con programas externos

150 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 165: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

You must make sure beforehand that you are familiar with the execution ofthe following demonstration. If possible, avoid executing this function usingthe dummy RFC connection “NONE”; instead, with the participants, create aconnection in transaction SM59. You could also prepare this beforehand.

Consejo: This demonstration consists of two parts that the participantswill then do themselves in the exercises. The first part concerns itself witha simple presentation of the BOR using a documentation call for a BAPIas an example. The second part is rather more complex, as it introducesBAPI usage with the Function Builder.

1. Follow the path mentioned above for the BOR, or call transaction BAPIdirectly.

2. Choose the Alphabetical tab page.3. Search for the business object “USER”.4. From the BAPIs available for this business object, select the “Change” BAPI.5. Display the documentation for this BAPI.6. Now switch to the USER.Display BAPI. Go to the Tools tab page and

choose the Function Builder. Then choose Display.

You can now see the source code for the BAPI in the Function Builder.

7. Press Test/Execute (or the F8 key).

Specify NONE as the RFC target system entry; this refers to your own system.Enter your own user name. Choose Execute (or the F8 key). As a result, youruser data, requested by the RFC from the BAPI, is displayed.

8. Once you have confirmed this screen, the result screen for the query isdisplayed. You can view the return code and the response time for your query.This response time includes the time you took to view the user data display.

Nota: Las BAPIs se crean y se prueban de la misma manera que otrosmódulos de funciones, utilizando el Function Builder, transacción SE37,y a continuación se definen como BAPIs en el BOR.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 151

Page 166: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

152 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 167: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

127 Ejercicio 4: Remote Function Calls yBAPIsDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Entender cómo se utilizan las BAPIs

Ejemplo empresarialNecesita datos de otro sistema.

Datos del sistemaSistema: The training system assigned to you (such as I30)Mandante: The client assigned to you (such as 802)ID de usuario: The user name that you have given the participants(such as SAPTEC-##)Clave de acceso: The password that you have given the participants forthe relevant user.Parametrizaciones del sistema: None

Tarea: Utilización de una BAPIUtilice una BAPI para visualizar los datos de dirección para su usuario en elsistema.

1. Inicie la transacción de resumen para el Business Object Repository.

2. Busque el método USER.Change. Visualice la documentación para estemétodo.

3. Llame el Function Builder para el método USER.Display. Ahora puede verel código fuente para la BAPI en el Function Builder.

4. Ejecute esta BAPI para su usuario con el destino RFC NONE.

5. Una vez que ha confirmado la ventana de diálogo, se muestra la imagen deresultados para la consulta. Puede ver el código de retorno y el tiempo derespuesta para su consulta.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 153

Page 168: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

ResultadoEn este ejemplo, el parámetro para export para el lado que llama fue elusuario “del otro sistema”, el parámetro para import fue el recibo de laventana de diálogo. Desde el punto de vista de la función llamada, elparámetro para import fue el nombre de usuario, y el parámetro para exportfue la ventana de diálogo.

154 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 169: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

Solución 4: Remote Function Calls yBAPIsTarea: Utilización de una BAPIUtilice una BAPI para visualizar los datos de dirección para su usuario en elsistema.

1. Inicie la transacción de resumen para el Business Object Repository.

a) Seleccione Herramientas → Workbench ABAP → Desarrollo →Business Object Builder y seleccione Business Object Repository(transacción BAPI). Si sigue el acceso vía menús Business ObjectBuilder, seleccione BAPI en la ventana de diálogo.

2. Busque el método USER.Change. Visualice la documentación para estemétodo.

a) Utilice la etiqueta Alfabético y busque el objeto empresarial Usuario.

Entre las BAPIs disponibles para este objeto empresarial, seleccione laBAPI USER.Change. Utilice la etiqueta apropiada a fin de visualizar ladocumentación para esta BAPI en la parte derecha de la pantalla.

3. Llame el Function Builder para el método USER.Display. Ahora puede verel código fuente para la BAPI en el Function Builder.

a) Cambie a la BAPI USER.Display. Seleccione la etiqueta Herramientas,y después Function Builder. A continuación, seleccione Visualizar.

4. Ejecute esta BAPI para su usuario con el destino RFC NONE.

a) Presione Probar/Ejecutar (F8).

Especifique NONE como entrada del sistema de destino RFC; estohace referencia a su propio sistema. Indique su nombre de usuarioen la pantalla de consultas. Seleccione Ejecutar. Como resultado, semuestran sus datos de usuario, solicitados por RFC desde BAPI.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 155

Page 170: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

5. Una vez que ha confirmado la ventana de diálogo, se muestra la imagen deresultados para la consulta. Puede ver el código de retorno y el tiempo derespuesta para su consulta.

a) El código de retorno para su consulta se visualiza como valor para elparámetro para export Retorno.

ResultadoEn este ejemplo, el parámetro para export para el lado que llama fue elusuario “del otro sistema”, el parámetro para import fue el recibo de laventana de diálogo. Desde el punto de vista de la función llamada, elparámetro para import fue el nombre de usuario, y el parámetro paraexport fue la ventana de diálogo.

156 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 171: 119167612 taw10-01-es

TAW10_1 Lección: Remote Function Calls y BAPIs

Resumen de la lección

Ahora podrá:• Enumerar varias tecnologías de interfaz utilizadas por los sistemas SAP• Describir el proceso de una Remote Function Call• Explicar la importancia y la utilización de objetos empresariales y sus BAPIs• Realizar una Remote Function Call

Más informaciónPara obtener información acerca de interfaces adicionales, vaya a la siguientedirección: https://service.sap.com/connectors.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 157

Page 172: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Lección:131

Arquitectura orientada a servicios de empresa(Enterprise SOA)Duración de la lección: 30 Minutos

Resumen de la lecciónEste módulo pretende destacar las principales diferencias entre las soluciones desoftware SAP R/3 y SAP ERP, así como también la importancia de la arquitecturaorientada a servicios de empresa (Enterprise SOA).

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

• Explicar la evolución desde SAP R/3 a SAP ERP y la Enterprise SOA• Describir la importancia de los servicios Web dentro de la Enterprise SOA

The instructor should be familiar with all links (and their content) on the ServiceMarketplace mentioned in this lesson.

Ejemplo empresarialDesea comprender el desarrollo de SAP R/3 después de SAP ERP y la EnterpriseSOA para poder utilizar plenamente las ventajas que éstos le ofrecen a su empresa.

Planificación de los recursos empresariales hasta lafechaCon el software ERP, es decir, el software para controlar y tratar procesosde empresa, SAP ha fijado estándares a nivel mundial. La idea central delsoftware, concretamente el tratamiento en tiempo real de diferentes procesosempresariales en una empresa y su implementación en las exitosas solucionesSAP R/2 y SAP R/3, ha convertido a SAP en una empresa activa a nivel mundial.SAP R/3 fue complementado con otras soluciones de SAP, como SAP CRM, SAPSCM y SAP SRM.

En los años anteriores, SAP ha aumentado considerablemente el valor de su propiaplataforma de aplicación y ha consolidado esta plataforma con el SAP NetWeaver,que combina los fundamentos técnicos de todas las soluciones SAP.

Con SAP NetWeaver, todas las futuras aplicaciones SAP (incluida laaplicación/solución SAP ERP 6.0, por ejemplo) contienen las funciones básicas,incluidas aquéllas de otros componentes; por ejemplo, funciones del BusinessInformation Warehouse.

158 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 173: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura orientada a servicios de empresa (Enterprise SOA)

El desarrollo de SAP R/2 después de SAP R/3 y otras soluciones de los añosanteriores se caracterizaron por distintos factores.

Diferencias fundamentales, y también características comunes de SAP R/2 ySAP R/3

• En común: tratamiento en tiempo real de procesos empresariales• En común: uso de ABAP como lenguaje de programación, optimizado para

la implementación en software empresarial• En común: características en constante aumento (durante el período de

actualización) gracias a las funciones recientes creadas por SAP• En común: capacidad de ajuste de procesos asignados a actividades

específicas de empresa• En común: toda la información en una base de datos central• Diferencia: sistema basado en host respecto a sistema basado en cliente

servidor

Así, el cambio de SAP R/2 a SAP R/3 (y otro “nuevo” software de SAP) significóbásicamente un cambio en la infraestructura técnica y en el diseño de la interfazde usuario. Sin embargo, las aplicaciones se desarrollaron fundamentalmente “dela misma manera”. ¿Y ahora?

Planificación de los recursos empresariales y laEnterprise SOA en el futuro

Con SAP ERP 6.0, SAP está dando los primeros pasos hacia aplicacionesempresariales que se fundamentan en una Enterprise SOA.

Las tareas que los sistemas SAP R/3 y otro software de SAP realizan en empresasde todo el mundo deben seguir realizándose evidentemente en el futuro. Estosignifica que la Enterprise SOA no realizará cambios básicos en estos procesos.¿Cuáles son las principales características de una Enterprise SOA?

En la arquitectura cliente servidor habitual, los datos de proceso empresarialestán en la base de datos del sistema, los procesos de aplicación funcionan enservidores de aplicación y están disponibles a través de interfaces predefinidas.Los procesos empresariales que no pertenecen al entorno SAP clásico se puedenintegrar con mayor facilidad a través de interfaces. Los procesos están integradosmuy a menudo a través de “integradores humanos”. Para ello, los empleados deuna empresa deben saber cuándo deben llamar a los distintos sistemas para laactualización de datos en los procesos empresariales de la empresa.

Distintas aplicaciones empresariales intercambian datos directamente a través dela base de datos. Por ejemplo, una transacción financiera puede tener acceso, bajociertas circunstancias, a una tabla relacionada con recursos humanos en la quelos datos se actualizaron a partir de una transacción de recursos humanos poco

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 159

Page 174: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

antes. Sin embargo, en el contexto de Enterprise SOA, la aplicación financierasolicitaría los datos de recursos humanos a través de una interfaz específica deaplicación a aplicación (A2A), y no recuperaría simplemente los datos de la basede datos con un acceso SQL.

Por el contrario, en la Enterprise SOA, existen interfaces de usuario basadas enfunciones que actúan como puntos centrales de entrada para que los empleadosde la empresa realicen su trabajo utilizando diferentes aplicaciones en distintossistemas. Los nuevos pasos de proceso ofrecidos como Servicios empresariales,y cuyos datos se pueden grabar en bases de datos completamente diferentes, sepueden integrar utilizando estándares generales en el mundo de procesos de laempresa con un mínimo esfuerzo. Con la ayuda de definiciones de proceso de todoel sistema y del control de procesos a través de workflow, la cantidad de trabajo delos “integradores humanos” se puede reducir.

The central idea of ESOA is that data and application functions can be mergedto create reusable enterprise services. To achieve this, ESOA is modeled onthe lean manufacturing model used in the automotive industry. There, leanmanufacturing means that subsystems of automobiles (brakes, drive axle, motor,steering mechanism) are standardized in such a way that they can be used and puttogether by different manufacturers. This means that the components of a carno longer have to originate exclusively from the respective manufacturer. LeanManufacturing not only applies to the automobile industry, but it is very advancedthere.

From an IT point of view, ESOA should place a company in a similar positionto an automobile manufacturer. The intricate web of applications that has beenimplemented corresponds to the thousands of components in conventionalautomobile production, while the components of an ESOA platform mirror thestandardized components in the automotive industry.

The IT industry is only in its beginnings here. Components, which deserve thisname rudimentarily (as not completely standardized) exist mainly for basictechnologies, for example, the relational databases or technologies for web serversand browsers. As an example of the only rudimentary “componentization”, youcan mention that databases, despite all common factors, e.g. in SQL dialect or inthe way in which procedures are composed, can still be very different.

160 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 175: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura orientada a servicios de empresa (Enterprise SOA)

Gráfico 52: Arquitectura cliente/servidor vs. Enterprise SOA

Los pasos individuales dentro de un servicio empresarial pueden enlazarsemediante interfaces estandarizadas especialmente desarrolladas. Esto implicainterfaces de aplicación a aplicación (A2A), empresa a empresa (B2B) y deinterfaz de usuario (UI). Las interfaces A2A hacen referencia a enlaces dentro deuna aplicación empresarial, las interfaces B2B hacen referencia a enlaces entredistintas aplicaciones empresariales. Estas interfaces diseñadas conforman elnúcleo actual de la Enterprise SOA.

Todos los requisitos para la aplicación empresarial se desarrollan de maneradescendente sobre la base del modelado de componentes, incluidas las interfacesA2A y B2B necesarias. El objetivo en este caso es que no haya funciones en elsistema que no tengan su origen en el modelo.

Las interfaces resultantes del modelado se pueden implementar utilizandoprotocolos estandarizados. A pesar de que es una simplificación importante, lasimplementaciones técnicas de las interfaces con protocolos estándar son conocidascomo servicios Web. ¿Qué es un servicio Web en comparación con un servicioempresarial?

Enterprise SOA is often mistakenly thought of as the result of Web services.However, this is an oversimplification and virtually incorrect. The core ofEnterprise SOA is a model design of the necessary functions, including therequired A2A, B2B and UI interfaces or services. From a technical perspective,it could also involve a Web service. In theory, the system should only contain

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 161

Page 176: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

business functions that arise from the modeling. This is an ideal state that couldnever be achieved in practice, because ad hoc programming and adjustmentswill always be necessary.

Furthermore, there is a practical necessity to link to external applications thatare not specified in detail in the modeling. The interfaces necessary for thiscase could be referred to as application-to-external interfaces (A2X) but theyare generally known as Web services. This involves the detailed description ofan API. A classic example would be an ABAP BAPI. You could almost say thatan A2X Web service contradicts the Enterprise SOA’s model design because theWeb service can be used to implement links to external business functions thatwere not planned in the model but that are necessary. This contradiction is both anopportunity and a challenge at the same time.

SAP Business ByDesign – the SAP software for small and mid-sized companies –was based on Enterprise SOA from the start. The SAP Business Suite, on the otherhand, is “only” service enabled. The necessary enterprise services are providedvia the Enterprise Services Repository in XI’s Integration Repository. SAP ERPwas not Enterprise SOA from the start, it has become so by evolution.

To summarize again: the essence of Enterprise SOA is based on modeling theapplication with the special A2A, B2B and UI interfaces or services resultingfrom the modeling. The fact that Web services are also technically used here isof secondary importance. Enterprise SOA and the use of Web services shouldnever be thought of as synonymous.

The instructor can develop the following table. It should aid participants tounderstand Enterprise SOA in relation to ALE.

ALE distribution model corresponds to ... Enterprise SOA

Business process corresponds to ... Enterprise Service

Remote Function Call (RFC) corresponds to ... B2B and Web service

ALE was, in a way, always Enterprise SOA but with SAP techniques. The “true”Enterprise SOA uses open standards.

Los servicios empresariales describen la mayor lógica empresarial. Un servicioempresarial no se dedica a funciones detalladas, sino a un proceso completoespecífico de fábrica que puede consistir en numerosos y pequeños pasosindividuales. Todo el conjunto de acciones forman el servicio empresarial,que proporciona por lo tanto una lógica de proceso empresarial orientada alcontexto. Los servicios Web, en cambio, son pequeñas aplicaciones modularesque se ejecutan dentro del framework de tecnologías de Internet y que se llamannormalmente como funciones detalladas dentro de aplicaciones o de servicios

162 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 177: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura orientada a servicios de empresa (Enterprise SOA)

empresariales. Se acordaron estándares para describir la llamada de servicios Web.(Web Service Description Language (WSDL), Simple Object Access Protocol(SOAP), Universal Description, Discovery, e Integration (UDDI)).

Gráfico 53: Enterprise SOA y servicios Web

Consejo: Encontrará más información sobre servicios Web enhttp://www.w3c.org/2002/ws.

Enterprise SOA se puede caracterizar utilizando las siguientes ideas clave:

Características de la Enterprise SOA (ESOA)

• Una aplicación Enterprise SOA generalmente se utiliza en todos los sistemas.• Una aplicación Enterprise SOA se crea en ABAP o en Java.• Por lo general, una aplicación Enterprise SOA no tiene base de datos

“propia”.• Las nuevas funciones se ingresan “fuera” de los sistemas existentes (para

aplicaciones Enterprise SOA).

La disponibilidad de servicios empresariales ofrece numerosas opciones nuevas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 163

Page 178: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Los servicios empresariales permiten...

• ... la creación eficiente de nuevas aplicaciones sin tener que modificar elsistema subyacente.

• ... una flexibilidad muy elevada en la configuración de procesosempresariales, también “en ejecución”.

• ... la creación simplificada de aplicaciones que utilizan las funciones devarios sistemas.

SAP ofrecerá ampliamente las funciones de sus propios productos de softwarecomo servicios empresariales y diseñará nuevas aplicaciones adicionales sobre labase de éstas. Al mismo tiempo, aquí tendrá la oportunidad de diseñar y utilizarnuevos y flexibles procesos empresariales en todos los sistemas sin tener queintervenir en sus sistemas empresariales. Por supuesto, la Enterprise SOA tambiénle ofrece nuevas posibilidades, como el enlace de funciones de los sistemas SAPcon las funciones de empresa o servicios Web de otros proveedores a través deInternet.

164 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 179: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura orientada a servicios de empresa (Enterprise SOA)

Discusión con moderadorNo facilitated discussion

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.

No questions

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 165

Page 180: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Resumen de la lección

Ahora podrá:• Explicar la evolución desde SAP R/3 a SAP ERP y la Enterprise SOA• Describir la importancia de los servicios Web dentro de la Enterprise SOA

Más información

• http://service.sap.com/erp• http://www.sap.com/germany/plattform/enterprisesoa/index.epx

166 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 181: 119167612 taw10-01-es

TAW10_1 Lección: Servicios Web

Lección:137

Servicios WebDuración de la lección: 30 Minutos

Resumen de la lecciónEste módulo le proporciona una introducción al tema de los servicios Web.

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

• Explicar los servicios Web• Describir UDDI y WSDL

Web Services are modular function programs that can be combined flexibly. WebServices, together with WSDL, can be described as software interfaces, ratherthan web-capable applications. However, Web services can also be used from theWeb browser, but this on its own is not their main characteristic. In the instructor’sdemo the Web service system information, for example, is called up in an ABAPprogram. SAP prefers the development of enterprise services that can be the totalor combination of individual Web services. Flexible, modular programming willcomplement monolithic software architectures to a great extent in the future, atleast according to consulting companies based on current surveys.

Ejemplo empresarialSu empresa desea desarrollar técnicamente servicios online mediante los serviciosWeb.

Servicios Web: Breve introducciónEl SAP NetWeaver Application Server también es una plataforma de desarrollopara servicios Web. Un servicio Web es un servicio que proporcionafundamentalmente una interfaz de programa (API). En la práctica, el servicio Webse pone a disposición a través de protocolos de Internet, y la aplicación en la cualse basa funciona generalmente mediante un navegador Web, aunque esta no seala definición real de un servicio Web.

Los servicios Web son la base técnica para hacer directamente disponiblesfunciones individuales de una aplicación. Aquí, la función existente de unaaplicación puede dirigirse a través de protocolos de acceso estandarizados, y elcontenido también se puede intercambiar de forma estructurada. De este modo,las funciones multiaplicaciones, que SAP vende como unidades completas parael proceso empresarial con el nombre de Packaged Composite Application (SAPxApps) también se pueden desarrollar de forma flexible. La combinación de varios

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 167

Page 182: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

servicios granulares, en el sentido de escenarios empresariales autocontenidos,se llama servicio empresarial. En el SAP NetWeaver Application Server seimplementan los estándares básicos siguientes para servicios Web:

• eXtensible Markup Language (XML)• Simple Object Access Protocol (SOAP)

SOAP describe un protocolo que se puede utilizar para llamar servicios Weben infraestructuras distribuidas de sistemas. SOAP utiliza HTTP comoprotocolo de transporte. Los mensajes SOAP tienen una cabecera con lainformación adicional y un cuerpo con el mensaje real.

• Web Service Description Language (WSDL)

WSDL es un metalenguaje que se utiliza para describir la función de unservicio Web. Las funciones, los parámetros, y en particular los códigosde retorno, se describen en forma legible por máquina. WSDL estáestandarizado por el World Wide Web Consortium (W3C); consulte lasiguiente URL: http://www.w3c.org/TR/wsdl.html

• Universal Description, Discovery, and Integration (UDDI) es un servicio dedirectorio para servicios Web dinámicos. A través de una interfaz SOAP seproporciona un directorio de servicios Web. La información está resaltada enpáginas blancas, amarillas y verdes. Puede encontrar más información acercade UDDI en: http://www.uddi.org. SAP también opera un servidor UDDI enhttp://uddi.sap.com, en el cual se pueden registrar y buscar servicios Web.

Servicios Web y el SAP NetWeaver Application ServerLos servicios Web ya se pueden desarrollar en el sistema SAP a partir dellanzamiento SAP NetWeaver Application Server 6.20; sin embargo, lasherramientas de desarrollo se han ampliado considerablemente para el lanzamiento6.40. Por consiguiente, un módulo de funciones existente, apto para la conexiónremota desde el Function Builder, se puede transformar (transacción SE37) en unservicio Web. Un servicio Web es un módulo que se puede utilizar flexiblementeen distintas aplicaciones. El creador publica el servicio en un directorio UDDIaccesible públicamente. De este modo, el cliente puede buscar directamenteservicios Web en el directorio UDDI.

For reasons of clarity, the demo scenario does not go into how Web services arepublished in a UDDI directory.

168 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 183: 119167612 taw10-01-es

TAW10_1 Lección: Servicios Web

Gráfico 54: Esquema de un escenario de servicio Web

Técnicamente, una vez definido un servicio Web, puede llamarse de distintasformas. Por ejemplo, puede llamarse desde un programa ABAP o desde unBusiness Server Page.

The instructor can present the Web service ZSYSINFO as a demonstration; thisservice shows you the following system data: SID, host name of the DB server andoperating system of the DB server. This Web Service can be called up from a) theABAP program ZSYSINFO and b) from the Business Server Page ZSYSINFO. TheBSP is not public, please logon with the group user SAPTEC-##.

A continuación, se muestra cómo se crea un servicio Web a partir de un módulo defunciones ABAP compatible con RFC.

Precise instructions on how to set up the Web service are not necessary inSAPTEC, as the Web service has already been set up in the training system.However, if you the instructor are interested in this topic, you can look at theSAPNW and BC416 courses or the online documentation for the necessary setupprocedures.

All important details should be mentioned here, so that the settings can also bechecked in case of errors. The Web service ZSYSINFO was created in transactionSE37 (display mode: Utilities → Other Utilities → Generate Web Service →From Function Module) for function module RFC_SYSTEM_INFO. The virtualinterface is called Z_WS_INTF_SYSINFO. In transaction SICF, you can displaythe ICF node <localhost>/sap/bc/srt/rfc/sap/ZSYSINFO generated for the Webservice or activate it manually, if necessary (however, it is not possible to test the

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 169

Page 184: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Web service from SICF because default.htm is expected as the start page hereand not start.htm, as implemented). The WSDL file is generated in transactionWSADMIN (highlight Web Service and choose the path Web Service → WSDL(where SAP Features can be included in the WSDL file; in some cases, it may benecessary to log on to the SAP system again here). The following are entered intransaction SE80: client proxy object ZWS_CO_ZSYSINFO (if necessary, underthe local objects of the internal user; using the right-hand mouse button, clickthe path Create → Enterprise Service/WebService → Proxy Object as sourceURL/HTTP Definition and enter the URL of the WSDL page), the ABAP programZSYSINFO and the Business Server Page ZSYSINFO. In transaction LPCONFIG,the logical port ZSYSINFO for proxy class ZWS_CO_SYSINFO is defined andactivated as a default port.

• El proveedor de servicios genera el servicio Web a partir de un módulo defunciones, por ejemplo. También se generan una URL y el fichero WSDL.

• La persona que solicita el servicio crea un objeto proxy que hace referencia ala URL del servicio Web. A continuación, se genera una clase ABAP quecoincide con el objeto proxy, y se asigna un puerto lógico.

• El objeto proxy se escribe y se integra en un programa ejecutable (porejemplo, en ABAP) y se llama allí.

170 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 185: 119167612 taw10-01-es

TAW10_1 Lección: Servicios Web

Discusión con moderadorShow the significance of Web services for the future IT landscape and for futurebusiness scenarios.

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.

Do you intend to use Web services soon? What implementation options do yousee for Web services in your company?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 171

Page 186: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

Resumen de la lección

Ahora podrá:• Explicar los servicios Web• Describir UDDI y WSDL

172 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 187: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Nombrar varios procesos empresariales de todo el sistema• Explicar las ideas que respaldan el concepto ALE• Enumerar varias tecnologías de interfaz utilizadas por los sistemas SAP• Describir el proceso de una Remote Function Call• Explicar la importancia y la utilización de objetos empresariales y sus BAPIs• Realizar una Remote Function Call• Explicar la evolución desde SAP R/3 a SAP ERP y la Enterprise SOA• Describir la importancia de los servicios Web dentro de la Enterprise SOA• Explicar los servicios Web• Describir UDDI y WSDL

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 173

Page 188: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

174 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 189: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

143Examine sus conocimientos

1. Application Link Enabling (ALE) le permite:

Seleccione la(s) respuesta(s) correcta(s).□ A Intercambiar datos sólo entre sistemas SAP, mientras tengan el

mismo status de liberación□ B Intercambiar datos más allá de los límites de sistema, pero sólo

para aplicaciones SAP□ C Intercambiar datos entre empresas colaboradoras, utilizando

ciertos formatos y tecnologías□ D La comunicación entre diferentes sistemas de su infraestructura

de sistema□ E Actualizar sus datos de orden utilizando la BAPI apropiada, sólo

una vez cada 24 horas

2. Las siguientes interfaces u opciones de comunicación son compatibles conlos sistemas SAP:Seleccione la(s) respuesta(s) correcta(s).□ A HTTP (HyperText Transfer Protocol)□ B SMTP (Simple Mail Transfer Protocol)□ C RFC (Remote Function Call)□ D BAPIs (Business Application Programming Interfaces)□ E XDTP (Extended Data Transfer Protocol)□ F STP (SAP Transfer Protocol)

3. Puede utilizar BAPIs para:Seleccione la(s) respuesta(s) correcta(s).□ A Solicitar datos desde un sistema SAP□ B Transmitir datos a un sistema SAP□ C Transferir imágenes de pantalla SAP a aplicaciones de terceros

(como Microsoft Word)□ D Acceder a procesos empresariales en sistemas SAP

4. Puede tener acceso a BAPIs en sistemas SAP mediante una interfaz RFC.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 175

Page 190: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

5. Las Business Programming Interfaces son módulosde especializados. Se tiene acceso a ellos utilizando lainterfaz . Se crean y gestionan utilizando elBuilder.Rellene los espacios en blanco para completar las frases.

176 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 191: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

145Respuestas

1. Application Link Enabling (ALE) le permite:

Respuesta: C, D

ALE es un método de alto rendimiento para intercambiar datos entresistemas. Estos sistemas pueden estar ubicados en la misma empresa, opueden estar distribuidos entre varias empresas. Los datos se transfieren porRFC en un formato definido previamente. La clase de transferencia puedeser sincrónica o asincrónica.

2. Las siguientes interfaces u opciones de comunicación son compatibles conlos sistemas SAP:

Respuesta: A, B, C, D

Desde un sistema SAP, puede comunicarse con otros sistemas utilizando, porejemplo HTTP, SMTP, RFC, o BAPIs. XDTP y STP no existen.

3. Puede utilizar BAPIs para:

Respuesta: A, B, D

Puede utilizar BAPIs para acceder a procesos empresariales en un sistemaSAP y para solicitar y transferir datos entre sistemas. Las funciones GUI nose pueden transferir a productos de terceros.

4. Puede tener acceso a BAPIs en sistemas SAP mediante una interfaz RFC.

Respuesta: Correcto

Las BAPIs no son nada más que módulos de funciones especiales concapacidad remota. Por ello también puede tenerse acceso a ellas medianteRFCs.

5. Las Business Application Programming Interfaces son módulos de funcionesespecializados. Se tiene acceso a ellos utilizando la interfaz RFC. Se crean ygestionan utilizando el Function Builder.

Respuesta: Application, funciones, RFC, Function

Puede iniciar el Business Object Repository utilizando el código detransacción BAPI, y el Function Builder utilizando el código de transacciónSE37.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 177

Page 192: 119167612 taw10-01-es

Capítulo 4: Tecnologías de la comunicación y la integración TAW10_1

178 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 193: 119167612 taw10-01-es

Capítulo 5147 Flujo de un programa ABAP

See introductory instructor’s note in the lesson.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Describir la arquitectura del Servidor de aplicación SAP NetWeaver• Describir cómo el sistema de tiempo de ejecución ABAP ejecuta un

programa de diálogo simple

Contenido del capítuloLección: Arquitectura de sistema y programas ABAP ... . . . . . . . . . . . . . . . . . .180

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 179

Page 194: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

Lección:148

Arquitectura de sistema y programas ABAPDuración de la lección: 20 Minutos

Resumen de la lecciónEn esta lección aprenderá cómo el Servidor de aplicación SAP NetWeaver ejecutaun diálogo simple.

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

• Describir la arquitectura del Servidor de aplicación SAP NetWeaver• Describir cómo el sistema de tiempo de ejecución ABAP ejecuta un

programa de diálogo simple

The idea is to give the participants a first impression of how the ABAP runtimesystem works, using two demonstration programs, and at the same time explainat what time during the course the individual aspects should be discussed inmore detail.

Ejemplo empresarialSu tarea es explicar la arquitectura del Servidor de aplicación SAP NetWeaver, asícomo la ejecución de programas ABAP.

180 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 195: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Arquitectura de sistema y programa ABAP

Gráfico 55: Arquitectura de cliente/servidor del Servidor de aplicaciónSAP NetWeaver

El Servidor de aplicación SAP NetWeaver posee una arquitectura modular quesigue el principio cliente/servidor orientado al software.

En el Servidor de aplicación SAP NetWeaver, es posible asignar presentaciones,lógica de aplicación y almacenamiento de datos a distintos sistemas. Sirve de basepara la posibilidad de ampliar del sistema.

El nivel inferior es el nivel de base de datos. Aquí, los datos se gestionan conla ayuda de un sistema de gestión de base de datos relacional (RDBMS). Estosdatos, a parte de datos de aplicación, incluyen los programas y los metadatos querequiere el sistema SAP para su autogestión.

Los programas ABAP se ejecutan en el nivel de servidor de aplicación, es decir,tanto las aplicaciones proporcionadas por SAP como las que desarrolla el usuario.Los programas ABAP leen datos de la base de datos, los procesan y almacenandatos nuevos allí si es necesario.

El tercer nivel es el nivel de servidor de presentación. Este nivel contiene lainterfaz de usuario, desde donde cualquier usuario puede acceder al programa,introducir datos nuevos y recibir los resultados de un proceso de trabajo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 181

Page 196: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

La distribución técnica del software es independiente de su ubicación física enel hardware. Verticalmente, todos los niveles se pueden instalar encima de otrosen un equipo, o cada nivel en un equipo independiente. Horizontalmente, losservidores de presentación y aplicación se pueden dividir en cualquier cantidad deequipos. Sin embargo, la distribución horizontal de componentes de base de datosdepende del tipo de base de datos instalada.

Gráfico 56: Extracto de un programa ABAP

Podemos simplificar este gráfico para la mayoría de los temas que se tratarándurante este curso. Nuestro interés principal durante este curso será la interacciónentre un usuario y un programa ABAP.

Los procesos exactos que forman parte del proceso de planificación de usuarios enun servidor de aplicación son secundarios para comprender cómo se escribe unprograma ABAP. Por este motivo, trabajaremos con un gráfico simplificado queno muestra explícitamente el despachador ni el proceso de trabajo. Sin embargo,ampliaremos algunas diapositivas para incluir estos detalles en el caso de que seanrelevantes para la programación ABAP.

Los programas ABAP se procesan en el servidor de aplicación. El diseño dediálogos de usuario y de accesos a base de datos tiene una especial importanciaa la hora de escribir programas de aplicación.

En la siguiente sección, analizaremos el proceso básico que tiene lugar al ejecutarun programa ABAP. Para ello, utilizaremos un programa con el que el usuariopuede introducir el ID de una compañía aérea (como “LH”) y ver la informacióndetallada de la compañía aérea que se muestra como resultado.

182 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 197: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Execute the transaction BC400RCAR here. Do not discuss the source code of theunderlying program BC400_GSD_CARRIER at this point.

Gráfico 57: Visualización para el usuario

La mayoría de los usuarios únicamente están interesados en el proceso empresarialy en cómo se introducen y se visualizan los datos. Los aspectos técnicos delprograma tienen menos importancia. No es necesario que los usuarios conozcan elflujo de proceso concreto de un programa ABAP. El sistema SAP representa una"caja negra" para ellos.

Por el contrario, los programadores deben comprender tanto la interacción entrelos niveles de servidor como el flujo de proceso al ejecutar programas para poderdesarrollar sus propios programas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 183

Page 198: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

Gráfico 58: Interacción entre niveles de servidor y flujo de programa

Cuando el usuario realiza una acción, por ejemplo selecciona Intro, una teclade función, una función de menú o un pulsador, el control pasa del servidor depresentación al servidor de aplicación.

Si se activa otro diálogo de usuario dentro del programa ABAP, el sistematransmite la pantalla y el control vuelve al servidor de presentación.

Normalmente, los programas no están formados por un único bloque, sino porvarias unidades. Esto se conoce como modularización. Varias de esas unidadesde modularización se pueden utilizar en más de un programa, por esta razón, confrecuencia se les llama unidades de reutilización. Un buen programa debe tenercomo mínimo los accesos a la base de datos encapsulados en dichas unidades dereutilización. Esto crea una división entre el diseño del diálogo de usuario y losaccesos de la base de datos. De este modo, es posible utilizar los mismos accesosa la base de datos desde distintos diálogos de usuario.

Now show the source code for the program BC400_GSD_CARRIER. Point outthe method call, double-click to navigate to the method and show the SELECTstatement there.

184 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 199: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Flujo de trabajo de un programa con pantalla deselección y lista

Gráfico 59: Inicio de programa

Siempre que un usuario inicia sesión en el sistema, aparece una pantalla. Desdeesta pantalla, el usuario puede iniciar un programa ABAP mediante el accesovía menús.

Gráfico 60: El sistema carga el contexto de programa

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 185

Page 200: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

En este caso, el sistema carga primero el contexto de programa en el servidor deaplicación. El contexto de programa contiene áreas de memoria para variables yobjetos de datos complejos, información acerca de las pantallas de diálogos deusuario y bloques de procesamiento ABAP. El sistema de tiempo de ejecuciónobtiene toda esta información de programa desde el Repository, que es una parteespecial de la base de datos.

El programa de muestra contiene una pantalla de selección como el diálogo deusuario, una variable y una estructura como objetos de datos, y un bloque deprocesamiento ABAP. La lista que muestra los datos se crea dinámicamentedurante el tiempo de ejecución.

El sistema de tiempo de ejecución ABAP controla el flujo de programasubsiguiente.

Gráfico 61: El sistema de tiempo de ejecución envía la pantalla de selección

Como el programa contiene una pantalla de selección, el sistema de tiempo deejecución ABAP lo envía al servidor de presentación. El servidor de presentacióncontrola el flujo de programa mientras el usuario no ha terminado de introducir losdatos en los campos de entrada.

Las pantallas de selección permiten a los usuarios introducir los criterios deselección requeridos para que el programa continúe.

186 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 201: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Gráfico 62: Los valores de entrada se insertan en objetos de datos

Cuando el usuario finaliza la introducción de datos en la pantalla de selección,puede seguir desencadenando el procesamiento del programa mediante laselección de Ejecutar.

Los datos introducidos se colocan automáticamente en sus objetos de datoscorrespondientes del programa, y el sistema de tiempo de ejecución ABAPcontinúa con el control del procesamiento.

En nuestro ejemplo simple del programa sólo existe un bloque de procesamientoABAP. El sistema de tiempo de ejecución ABAP desencadena el procesamientosecuencial de este bloque de procesamiento ABAP.

Si las entradas realizadas por el usuario no son del tipo correcto, se desencadenaautomáticamente un mensaje de error. El usuario deberá corregir sus entradas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 187

Page 202: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

Gráfico 63: Carga de unidad de reutilización

Se realiza la llamada a una unidad de reutilización en el bloque de procesamientoque encapsula el acceso a la base de datos. La unidad de reutilización es un bloquede procesamiento especial en un programa individual. El ejemplo real muestraun método en una clase global. Cuando se llama la unidad de reutilización, elprograma que la contiene también se lee desde el Repository y se carga en elservidor de aplicación.

Gráfico 64: Se llama la unidad de reutilización

188 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 203: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

En la llamada, los datos requeridos se transfieren al programa llamado y, después,se ejecuta la unidad de reutilización. La ejecución es sincrónica, es decir queel programa que llama se espera hasta que la unidad de reutilización se hayaprocesado completamente.

Gráfico 65: El programa solicita registros de datos de la base de datos

En el programa de ejemplo, se ha programado acceso de sólo lectura en la unidadde reutilización. Asimismo, la información acerca de la tabla de base de datos a laque se debe acceder y la fila de la tabla que se debe leer se pasan a la base de datos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 189

Page 204: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

Gráfico 66: La base de datos proporciona los registros de datos

La base de datos devuelve al programa el registro de datos solicitado y el sistemade tiempo de ejecución se encarga de colocar los datos en los objetos de datosadecuados.

Si se accede a un registro individual, generalmente el objeto de datos es unaestructura que contiene componentes relevantes para todos los campos requeridosde la base de datos.

Gráfico 67: La unidad de reutilización devuelve los datos

190 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 205: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Esta acción concluye el procesamiento de la unidad de reutilización y el control sedevuelve al programa de llamada, que se reanuda inmediatamente después de lallamada. Cuando el sistema abandona la unidad de reutilización, los datos leídosanteriormente de la base de datos se escriben en un objeto de datos correspondienteal programa de llamada, desde donde se podrán seguir procesando.

Gráfico 68: El sistema de tiempo de ejecución envía la lista

Después de la llamada a la unidad de reutilización, el bloque de procesamientoABAP recibe sentencias de estructuración de la lista en la que se visualizaráel resultado. Al finalizar el bloque de procesamiento, el sistema de tiempo deejecución envía la lista en forma de pantalla al servidor de presentación.

Show the source code for the program BC400_GSD_CARRIER again and pointout how the user dialogs are structured with the PARAMETERS and WRITEstatements.

Depending on the level of knowledge the participants already have, you coulddemonstrate the dialog transaction BC400MCAR here too (module poolSAPMBC400_GSD_CARRIER). This transaction implements the same businessapplication, but with the aid of dynpros. Show that although the user dialog isstructured in a different way, the fundamental principle remains the same. Aboveall, the reuse unit for the database access is the same. Show the source code forthe PAI module in dynpro 100 for this.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 191

Page 206: 119167612 taw10-01-es

Capítulo 5: Flujo de un programa ABAP TAW10_1

Discusión con moderadorAny questions can now be discussed.

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.

192 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 207: 119167612 taw10-01-es

TAW10_1 Lección: Arquitectura de sistema y programas ABAP

Resumen de la lección

Ahora podrá:• Describir la arquitectura del Servidor de aplicación SAP NetWeaver• Describir cómo el sistema de tiempo de ejecución ABAP ejecuta un

programa de diálogo simple

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 193

Page 208: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Describir la arquitectura del Servidor de aplicación SAP NetWeaver• Describir cómo el sistema de tiempo de ejecución ABAP ejecuta un

programa de diálogo simple

Más información... Consulte el artículo “Resumen de los componentes del programa de aplicación”en la documentación online.

194 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 209: 119167612 taw10-01-es

Capítulo 6161 Introducción al Workbench ABAP

See the introductory instructor notes in the lessons.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Describir la estructura del Repository• Nombrar y utilizar las herramientas de búsqueda del Repository• Utilizar el Object Navigator para visualizar objetos de Repository• Nombrar y usar las utilidades para el correcto desarrollo de software• Crear paquetes• Crear programas• Crear transacciones

Contenido del capítuloLección: Repository y Object Navigator .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .197Lección: Desarrollo de programas y organización de desarrollos.. . . . . . .208

Procedimiento: Creación de paquetes ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .212Procedimiento: Creación de un programa ABAP ... . . . . . . . . . . . . . . . . . . .216Procedimiento: Crear transacciones... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .225Procedimiento: Agregado de transacciones a sus favoritospersonales... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .226Ejercicio 5: Organización de desarrollos .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .229Ejercicio 6: Desarrollo de un programa ABAP sencillo .. . . . . . . . . . . . . . .233

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 195

Page 210: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Ejercicio 7: Creación de transacciones... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237

196 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 211: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

Lección:162

Repository y Object NavigatorDuración de la lección: 45 Minutos

Resumen de la lecciónEste módulo contiene una breve descripción del Repository y un pequeño resumende los componentes más importantes delWorkbench ABAP. Asimismo, presenta elObject Navigator como una herramienta de desarrollo central.

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

• Describir la estructura del Repository• Nombrar y utilizar las herramientas de búsqueda del Repository• Utilizar el Object Navigator para visualizar objetos de Repository

In this lesson, two different aspects should be considered: On the one hand, theparticipants are confronted by many new SAP-specific terms very quickly. On theother hand, they also learn how to handle the search tools of the ABAP Workbench.Both aspects affect the whole of the remainder of the course: Terms and workingtechniques constantly come up during the course.

Ejemplo empresarialDebe describir la estructura del Repository, utilizar las herramientas adecuadaspara buscar objetos de Repository y analizar su estructura.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 197

Page 212: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Introducción al Repository

Gráfico 69: Capacidad del Repository para todos los mandantes

El Repository consiste en todos los objetos de desarrollo del sistema: programas,módulos de funciones, definiciones de tablas de base de datos, etc. En elRepository existen objetos proporcionados por SAP, así como objetos definidospor el cliente. El Repository se encuentra en la base de datos y es siempreindependiente del mandante, lo que significa que se puede acceder a un objeto deRepository desde cualquier mandante, y tiene la misma apariencia en todos losmandantes del sistema.

Igual que el Repository, la base de datos también contiene datos de aplicación yde Customizing que normalmente son específicos de un mandante. Esto significaque cada registro de datos se asigna a un mandante particular y generalmentesólo pueden leerlo y modificarlo los usuarios que han entrado al sistema en estemandante concreto.

198 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 213: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

Gráfico 70: Estructura del Repository

El Repository está subdividido de acuerdo con los componentes de aplicación.

Dentro de un componente de aplicación (p. ej., MM), existen varios paquetes quecontienen objetos relevantes para una subdivisión lógica más detallada.

Siempre que se crea un objeto de Repository, debe asignarse a un paquete.

Es posible que algunos objetos de Repository tengan subobjetos que, a su vez,sean objetos de Repository. Además, los objetos de Repository pueden hacerreferencia a otros objetos de Repository.

Herramientas de búsqueda del RepositoryEl Sistema de Información del Repository es adecuado para la búsqueda aleatoria(es decir, no específica de aplicación) de objetos del Repository, como todos losprogramas de un programador determinado o todos los módulos de funcionesmodificados después de una fecha concreta.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 199

Page 214: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 71: Sistema de Información del Repository

Puede acceder al Sistema de Información del Repository desde el menú SAPEasy Access si selecciona Herramientas → Workbench ABAP → Resumen →Sistema de Información. Al hacer doble clic sobre un tipo de objeto determinado,aparecerá una pantalla de selección que le permitirá restringir la búsqueda.

Gráfico 72: Jerarquía de aplicaciones SAP

200 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 215: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

La jerarquía de aplicaciones se utiliza para la búsqueda específica de aplicaciónpara los objetos de Repository. Allí se encuentra representada la jerarquía delos componentes de aplicación en forma de estructura de árbol. Desde el menúSAP Easy Access, puede pasar fácilmente a la jerarquía de aplicaciones SAPseleccionando Herramientas → Workbench ABAP → Resumen → Jerarquía deaplicaciones → SAP. Al desplegar un nodo de componente, se visualizan todoslos paquetes que tiene asignados dicho componente. Ahora puede seleccionarcualquier subárbol mediante el botón Seleccionar y navegar directamente alSistema de Información del Repository mediante el botón Sistema de información.El sistema recuerda todos los paquetes relevantes de los subárboles seleccionadosy los introduce automáticamente en la pantalla de selección del sistema deinformación. Esto permite realizar una búsqueda en las aplicaciones seleccionadaspreviamente.

Trabajar con el Object Navigator

Gráfico 73: Herramientas de Workbench ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 201

Page 216: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

El Workbench ABAP incluye todas las herramientas necesarias para crear y tratarobjetos de Repository. Estas herramientas cubren todo el ciclo de desarrollo delsoftware. Las más importantes son:

• El Editor ABAP para tratar el código fuente• El Dictionary ABAP para tratar definiciones de tabla de base de datos, tipos

de datos centrales, etc.• El Screen Painter para configurar pantallas (pantallas junto a funciones para

diálogos de usuario)• El Menu Painter para diseñar interfaces de usuario (barra de menús,

barra de herramientas estándar, barra de herramientas de aplicaciones,parametrizaciones de teclas de función)

• El Function Builder para actualizar módulos de funciones• El Generador de clases para actualizar clases e interfaces globales

Puede llamar cada una de estas herramientas explícitamente y, a continuación,cargar un objeto de Repository para procesarlo. Sin embargo, es mucho máselegante y conveniente acceder a ellos mediante el Object Navigator. Puedetener una lista de los objetos de Repository necesarios en esta herramienta dedesarrollo central. Para tratar a cualquiera de ellos, sólo debe hacer doble clic yseleccionarlo. Automáticamente se llamará a la herramienta correspondiente, queincluirá el Repository seleccionado para visualizar o tratar.

Gráfico 74: Formato de pantalla del Object Navigator

202 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 217: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

La pantalla del Object Navigator está dividida en dos áreas:

• El área de navegación para visualizar una lista de objetos jerárquica• Un área de herramientas para visualizar y tratar un objeto de desarrollo

mediante la herramienta adecuada

Puede visualizar u ocultar el área de navegación (“ Pantalla completaactivada/desactivada ”).

En ambas áreas puede seleccionar las funciones mediante un menú contextual,al que puede acceder haciendo clic con el botón secundario del ratón. Elmenú contextual ofrece solamente las funciones diseñadas para el objetocorrespondiente.

Gráfico 75: Trabajo con el área de navegación

Las listas de objetos se visualizan en el área de navegación. Por ejemplo, sielige visualizar un paquete aquí, se mostrará una lista con todos los objetos deRepository que pertenezcan al paquete especificado.

Si hace doble clic en un objeto de la lista, podrá visualizarlo o tratarlo.

Puede navegar entre las listas de objetos que se han visualizado anteriormente enla sesión de Object Navigator actual (flechas azules).

Puede añadir objetos de uso frecuente a sus favoritos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 203

Page 218: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 76: Funciones del área de herramientas

En el área de herramientas se muestra un objeto de Repository en la herramientacorrespondiente.

Puede navegar entre los objetos que se han visualizado anteriormente en la sesiónde Object Navigator actual (flechas azules).

Además, también puede visualizar una subventana con el historial de navegaciónprevia. Al hacer doble clic en un objeto en el historial de navegación, éste sevisualizará en el área de herramientas.

204 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 219: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

Gráfico 77: Sincronización de las áreas de navegación y de herramientas

La navegación en el área de navegación es independiente de la navegación en elárea de herramientas. Esto permite utilizar ambas áreas de forma flexible.

En caso necesario, puede sincronizar ambas áreas como se describe a continuación:

• Puede visualizar un objeto en el área de herramientas haciendo doble clicen el área de navegación o utilizando la función correspondiente del menúcontextual del objeto.

• Puede visualizar la lista de objetos de un objeto que se esté tratando en el áreade herramientas mediante Visualizar lista de objetos en el área de navegación.

Para crear un objeto nuevo, puede usar el menú contextual para un tipo deobjeto de la lista de objetos correspondiente. De forma alternativa, puede usar lospulsadores Tratar objeto u Otro objeto... para crear los objetos que desee.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 205

Page 220: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Discusión con moderadorAny questions can now be discussed.

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

See list of objectives

206 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 221: 119167612 taw10-01-es

TAW10_1 Lección: Repository y Object Navigator

Resumen de la lección

Ahora podrá:• Describir la estructura del Repository• Nombrar y utilizar las herramientas de búsqueda del Repository• Utilizar el Object Navigator para visualizar objetos de Repository

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 207

Page 222: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Lección:172

Desarrollo de programas y organización de desarrollosDuración de la lección: 95 Minutos

Resumen de la lecciónEn este módulo aprenderá a crear nuevos objetos de Repository, paquetesespeciales, programas y códigos de transacción. También aprenderá cómo se usanlas órdenes de transporte del Workbench ABAP en el entorno SAP para organizarproyectos de desarrollo y garantizar el transporte consistente de modificaciones alos sistemas productivos.

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

• Nombrar y usar las utilidades para el correcto desarrollo de software• Crear paquetes• Crear programas• Crear transacciones

We believe that you learn how to work with the development environment mosteffectively by doing actual development.

Ejemplo empresarialComo parte de un proyecto de desarrollo, debe crear un nuevo paquete y un nuevoprograma ABAP, y ponerlo a disposición de los usuarios a modo de código detransacción.

208 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 223: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Organización de desarrollos

Gráfico 78: Transporte de objetos de desarrollo

Los proyectos de desarrollo se llevan a cabo en un sistema de desarrollo. Losobjetos de desarrollo tratados o creados en un proyecto se transportan a sistemassubsiguientes (sistema de test y/o producción) al finalizar el proyecto. Al inicio deun proyecto de desarrollo, el gestor de proyectos crea una orden de transporte,en la cual nombra a los empleados del proyecto, en el Transport Organizer odirectamente en elWorkbench ABAP. A continuación, el Transport Organizer creauna tarea para cada empleado del proyecto en la orden de transporte.

Al tratar o crear un objeto de desarrollo, el empleado relevante lo asigna a la ordende transporte. El objeto se indica en la tarea del empleado. Por consiguiente,todos los objetos de repository en los que trabaja un empleado durante un proyectode desarrollo se recopilan en su tarea.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 209

Page 224: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 79: Organización de un proyecto de desarrollo en la orden detransporte

La organización de un proyecto de desarrollo mediante una orden de transporteofrece las siguientes ventajas:

• Cada empleado puede realizar un seguimiento y verificar sus actividadesespecíficas dentro del proyecto.

• Todos los empleados implicados en el proyecto pueden procesar los objetosde desarrollo respectivos. Para los programadores que no pertenecen alequipo del proyecto, los objetos de repository permanecen bloqueados hastala finalización del proyecto (=cuando se libera la orden de transporte).

• El transporte conjunto de los objetos de desarrollo procesados en elproyecto en el momento de finalización del proyecto (= liberación de laorden de transporte) se garantiza automáticamente asignando los objetos ala orden de transporte. La ruta de transporte de los paquetes implicados (enlos que ha tenido lugar el desarrollo) especifica a qué sistema subsiguiente setransportan.

A diferencia de los paquetes que distinguen entre objetos de Repository de unaforma lógica y funcional, las órdenes de transporte hacen referencia al proyectoy, por este motivo, delimitan los objetos por un período de tiempo. Porconsiguiente, aunque un programa siempre pertenece sólo a un paquete, puedepertenecer a distintos proyectos (en momentos distintos).

210 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 225: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Show the request that was created for the course as an example.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 211

Page 226: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

175Creación de paquetes

1. Navegue hasta Object Navigator. Tiene dos opciones:

a) En el área de navegación, seleccione el tipo de objeto Paquete e indiqueel nombre del paquete en el campo de entrada que aparece a continuación.(Asegúrese de respetar las convenciones del área de nombres del cliente).Seleccione Intro. Si el paquete especificado no existe todavía, el sistemaabre un diálogo para crear un paquete.

b) Seleccione Tratar objeto en la pantalla inicial del Object Navigator. En laventana de diálogo, busque la opción de especificar un paquete e indique elnombre del paquete. A continuación, haga clic en el pulsador para crear elobjeto (F5).

Consejo: En SAP R/3 release 4.6, los paquetes todavía se llamanclases de desarrollo. Sin embargo, se controlan de una forma casiidéntica a la descrita aquí. Existe una pequeña limitación para elrelease 4.6a/b: La única opción que tiene para crear una clase dedesarrollo es la que se describe en 1b).

2. Cree los atributos del paquete que se deben crear.

Gráfico 80: Parametrizar atributos de paquete (ejemplo)

Los atributos tienen el significado siguiente (puede obtener informacióndetallada mediante el campo de ayuda, pulsador F1):

Continúa en la página siguiente

212 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 227: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Componente de aplicaciónDetermine la ubicación del paquete dentro de la jerarquíade aplicaciones especificando el componente de aplicacióncorrespondiente.

componente de softwarePara los desarrollos de cliente, indique PÁGINA INICIAL comocomponente de software.

Capa de transporteSi ejecuta sus propios desarrollos, debe configurar una capa detransporte para los desarrollos de cliente y especificarla aquí. La capade transporte determina si los objetos del paquete se deben transportara un sistema subsiguiente y, si es así, a cuál.

Tipo de paquetePuede seleccionar entre tres tipos de paquete:

• Paquete estándar (puede contener objetos de Repository y otrospaquetes)

• Paquete principal (puede contener solamente otros paquetes)• Paquete de estructura (puede contener solamente paquetes

principales)

Gráfico 81: Especificar una ruta de transporte

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 213

Page 228: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

3. Asigne el paquete a una orden de transporte.

Puede visualizar todas las órdenes de transporte en las que tiene una tareamediante el pulsador Mis tareas. Simplemente seleccione la solicitudrelevante con doble clic.

Gráfico 82: Asignar una orden de transporte

Nota: El sistema se encarga de la asignación exacta de su tarea.

Consejo: Todos los objetos de repository que se crean o semodifican se deben asignar a la orden de transporte del proyectocorrespondiente. En este curso de formación, se ha creado una ordende transporte para el proyecto “Ejercicios para los participantes dela formación BC400”. Cada grupo del curso tiene una tarea dentrode su orden de transporte.

Create a package with the name ZBC400_00 and assign it to a new, small changerequest with 2 tasks.

Then you can do the corresponding exercise.

214 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 229: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Desarrollo de programas ABAPEn esta sección aprenderá a crear programas y transacciones en el WorkbenchABAP. También conocerá la finalidad de la activación del programa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 215

Page 230: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

178Creación de un programa ABAP

1. Navegue hasta Object Navigator. Hay tres opciones disponibles:

a) En el área de navegación, seleccione el tipo de objeto Programa e indiqueel nombre del programa en el campo de entrada que aparece a continuación.(Respete las convenciones del área de nombres del cliente). Confirme conIntro. Si el programa no existe, el sistema abre el diálogo que le permitecrear uno.

b) Visualice el paquete en el que desea crear el programa. Puede pasar aldiálogo para crear un programa mediante el menú contextual del paquete oel nodo Programas.

c) Seleccione el pulsador Tratar objeto en la pantalla inicial del ObjectNavigator. En la ventana de diálogo, busque la opción para especificar unprograma e indique el nombre del programa. A continuación, haga clic en elpulsador para crear el objeto (F5).

2. En este curso de formación, elimine el indicador Con Include TOP. (En casocontrario, el código fuente se distribuirá por varios programas).

3. Cambie el título por un texto breve autoexplicativo y, en este curso,seleccione siempre Programa ejecutable como tipo de programa. El restode atributos de programa son opcionales. Consulte la ayuda F1 para másdetalles.

Gráfico 83: Creación de un programa ABAP

216 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 231: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Introducción al lenguaje de programación ABAP

El lenguaje de programación ABAP...

• Es tipificado• Permite aplicaciones multilingüe• Permite el acceso SQL• Se ha ampliado como lenguaje orientado a objetos• Es independiente de la plataforma• Es compatible con versiones posteriores

Está diseñado especialmente para aplicaciones empresariales basadas en diálogo.

Para admitir el procesamiento de datos específico de tipo, se admiten lasconversiones de tipo y el casting de tipo.

Si utiliza elementos de texto traducibles, podrá desarrollar aplicacionesmultilingüe.

El Open SQL estándar incrustado en ABAP permite el acceso directo a la basede datos.

Objeto ABAP es la ampliación del lenguaje de programación ABAP orientado aobjetos.

La sintaxis ABAP es independiente de la plataforma Esto significa que siempretiene el mismo significado o función, independientemente del sistema de basede datos relacional y del sistema operativo de la aplicación y del servidor depresentación.

Las aplicaciones implementadas en ABAP también funcionarán en versionesfuturas (compatibilidad ascendente del lenguaje).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 217

Page 232: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 84: Sintaxis ABAP general I

En general, se aplica lo siguiente a la sintaxis ABAP:

• Los programas ABAP se componen de frases individuales (sentencias).• La primera palabra de una sentencia se llama palabra clave ABAP.• Cada sentencia finaliza con un punto.• Las palabras siempre deben estar separadas por un espacio como mínimo.• Las sentencias se pueden sangrar según desee.• El sistema de tiempo de ejecución ABAP no distingue entre mayúsculas y

minúsculas en palabras clave, adiciones y operandos.

Consejo: Aunque el sistema de tiempo de ejecución ABAP no distingueentre mayúsculas y minúsculas, se ha establecido la escritura de laspalabras clave y sus adiciones en mayúsculas, y de los operandosen minúsculas. En este curso también utilizaremos esta forma derepresentación.

Para la sangría y la conversión de mayúsculas/minúsculas, puede utilizar elPretty Printer (el botón etiquetado de forma correspondiente en el Editor).Puede utilizar el siguiente acceso vía menús en el Object Navigator pararealizar una parametrización específica de usuario para el Pretty Printer:Herramientas → Parametrización → Editor ABAP → Pretty Printer.

218 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 233: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Gráfico 85: Sintaxis ABAP general II

• Las sentencias pueden ocupar más de una línea.• Puede haber varias sentencias en una misma línea (pero no es recomendable).• El sistema de tiempo de ejecución ABAP reconoce las líneas que comienzan

con un asterisco * en la primera columna como líneas de comentario y lasignora.

• Las comillas dobles " (“comillas invertidas”) indican que el resto de unalínea es un comentario.

Puede combinar varias sentencias consecutivas con un inicio idéntico y crearuna sentencia encadenada:

• Escriba la parte inicial idéntica de los registros seguida por dos puntos.• Después de los dos puntos, realice una lista de las partes finales de las

sentencias (separadas por comas).• Se permiten espacios en blanco y saltos de línea antes y después de los

separadores (dos puntos, comas, puntos).

Consejo: Tenga en cuenta que esta forma breve representa solamenteuna forma de sintaxis simplificada y no proporciona ninguna mejora enel rendimiento. Por otro lado, el sistema de tiempo de ejecución ABAPprocesa cada una de las sentencias individualmente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 219

Page 234: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 86: Documentación de palabras clave en el Editor ABAP

Existen varias formas de navegar a la documentación de una sentencia ABAP:

• La tecla F1 lleva directamente a la documentación de la sentencia en la queestá situado el cursor.

• El pulsador i con la descripción Ayuda de... abre una ventana de diálogodonde puede indicar la sentencia ABAP requerida.

Create a small WRITE ’Hello World’ program. Assign it to your demo packageand to the small demo request. You can use this program to demonstrate thefollowing topics such as “active/inactive source”.

El Editor ABAPExisten varios editores que puede utilizar para desarrollar programas ABAP,dependiendo del release y del nivel de Support Package. La elección del editor esespecífica del usuario y se realiza en el Object Navigator mediante el siguienteacceso vía menús: Utilidades → Parametrización → Editor ABAP.

El editor más reciente (Editor Front-End (nuevo)) ofrece varias opciones nuevasy funciones adicionales fáciles de utilizar en comparación con el editor clásico(Editor Front-End (anterior)). Se desarrolló para SAP NetWeaver 7.0. Tambiénpuede importarse por medio de Support Package para SAP Web Application Server6.40 y SAP Web Application Server 6.20 (SP 18 o SP 59).

220 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 235: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Gráfico 87: Editor ABAP anterior

Gráfico 88: El nuevo editor ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 221

Page 236: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Estas son algunas de las opciones importantes que ofrece el nuevo editor:

• Puede elegir varios colores de visualización para distintos objetos del códigofuente.

• Cada usuario puede parametrizar las fuentes y los tamaños de fuente.• Los bloques de código fuente (loops, bifurcaciones condicionales) se pueden

comprimir para mejorar la vista general.• Puede utilizar marcadores para encontrar más fácilmente los puntos

relevantes del código fuente.• La visualización de los números de línea y el anidamiento actual mejora la

orientación.• Al escribir algunos caracteres, el editor sugiere automáticamente palabras

completas para las palabras clave ABAP y los objetos de datos. De estemodo, se reduce considerablemente la cantidad real de letras a indicar.

Activación de programas

Gráfico 89: Objetos de desarrollo activos e inactivos

Siempre que cree un objeto de desarrollo o lo modifique y lo guarde, el sistemaalmacena primero solamente una versión inactiva en el Repository.

A continuación, dispone de una versión activa y una versión inactiva del objeto.Al final del desarrollo del objeto, debe activar la “versión de edición” inactiva delobjeto. Esta versión se convierte entonces en la nueva versión activa del objeto.

222 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 237: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Tenga en cuenta que la liberación de la solicitud y, por consiguiente, el transportede los objetos desarrollados, sólo son posibles si se han activado todos los objetosde la solicitud.

Si el programa está disponible en ambas versiones (activa e inactiva), puedecambiar entre las visualizaciones de las dos versiones mediante el botóncorrespondiente del editor.

Al activar un programa, el sistema visualiza una lista de los objetos inactivosque ha procesado: su pool de trabajo. Seleccione los objetos que desee activarcon la transacción de activación actual.

La activación de un objeto incluye las siguientes funciones:

• Guardar el objeto como versión inactiva• Verificar la sintaxis o la consistencia de la versión inactiva• Sobrescribir la versión activa anterior con la versión inactiva (sólo después

de una comprobación positiva)• Generar el objeto de tiempo de ejecución relevante para ejecuciones

posteriores, si el objeto es un programa.

Gráfico 90: Generación de objetos de tiempo de ejecución

Al generar un objeto de desarrollo, el sistema crea un objeto de tiempo de ejecuciónindependiente (compilación LOAD) y lo almacena en el Repository. Esta versióngenerada es la versión que se ejecuta (interpreta) en tiempo de ejecución.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 223

Page 238: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Si el programa dispone tanto de una versión inactiva como de una versión activa,puede hacer que ambas versiones se ejecuten de la forma siguiente:

• Si inicia el programa mediante el menú contextual del área de navegación o através de una transacción, se utilizará la versión activa. Esto significa que seejecutará el LOAD generado para la última activación.

• Por el contrario, si inicia la versión inactiva cargada en el editor mediante elpulsador F8, se generará un objeto de tiempo de ejecución y se ejecutará.

De este modo, es posible continuar con el desarrollo de un objeto de repositorysin modificar el status de sistema actual. Todas las modificaciones realizadasen el objeto de desarrollo son “visibles” en todo el sistema únicamente cuandoel objeto está activado.

Demonstrate the above contents with the program you created earlier and allowthe participants to do the corresponding exercise afterwards.

Creación de transaccionesSólo se pueden incluir transacciones en un menú de rol y en los favoritos deusuario. Por lo tanto, si desea colocar un programa en una de estas ubicaciones,debe crear una transacción que lo represente e integrarla en el menú. Tambiénpuede iniciar el programa indicando el código de transacción en el campo decomandos.

224 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 239: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

187Crear transacciones

1. En el Object Navigator, visualice la lista de objetos de su programa.

2. En el área de navegación, utilice el menú contextual del programa paraseleccionar Crear → Transacción.

3. Indique el código de transacción requerido. (Asegúrese de respetar lasconvenciones del área de nombres del cliente).

Asígnele un texto breve y seleccione la etiqueta Programa y Pantalla deselección (transacción de informe) .

4. En la pantalla siguiente, indique el nombre del programa y seleccioneTransacción de usuario profesional.

En GUI activado, fije el indicador SAP GUI para Windows.

Gráfico 91: Creación de una transacción

5. Grabe la transacción.

6. Puesto que cada transacción es un objeto de Repository, debe asignarla a unpaquete y a una orden de transporte en las pantallas siguientes.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 225

Page 240: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

188Agregado de transacciones a sus favoritos personales

1. Navegue hasta la pantalla inicial (menú SAP Easy Access).

2. En el menú contextual Favoritos, seleccione Insertar transacción.

3. En la ventana de diálogo que aparece, indique el código de transacciónrequerido.

Gráfico 92: Inserción de un código de transacción en los Favoritospersonales

ResultadoEl texto breve de la transacción aparece en Favoritos, ahora ya puede iniciar elprograma correspondiente con un doble clic.

Create a transaction for your example program and add it to your personalfavorites.

Make the participants do the corresponding exercise.

Cierre de proyectos de desarrolloCuando un empleado de proyecto ha completado la tarea de desarrollo requerida,realiza un control de calidad y libera la tarea dentro de la orden de transporte.

226 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 241: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Gráfico 93: El programador libera su tarea

Las entradas del objeto correspondiente, así como los bloqueos de modificacióndel objeto por parte de terceras partes que se establecieron automáticamente alinicio del proyecto, se transfieren de la tarea a la solicitud.

Sin embargo, todos los empleados del proyecto podrán seguir tratando estosobjetos.

Una vez liberadas todas las tareas de una orden de transporte, el gestor deproyectos lleva a cabo el último control de calidad de los objetos y libera la ordende transporte. Así se concluye el proyecto.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 227

Page 242: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Gráfico 94: Cierre del proyecto liberando la solicitud (gestor de proyectos)

Al liberar la solicitud, se eliminan todos los bloqueos de objetos que pertenecena la solicitud.

Se exportan las copias de los objetos desarrollados al directorio de transportepropio del sistema, donde permanecerán hasta que el administrador del sistema lasimporte a su sistema destino.

Se guarda otra copia de los objetos de desarrollo exportados en la base de datosde versión propia del sistema.

Release your Little Demo Request.

228 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 243: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

191 Ejercicio 5: Organización de desarrollosDuración del ejercicio: 5 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear paquetes• Asignar cambios realizados en objetos de Repository a una orden de

transporte

Ejemplo empresarialUsted es el programador de un grupo de líneas aéreas y le encargan la tarea dedesarrollar programas de evaluación para varias compañías aéreas.

Para agrupar los objetos de Repository de forma lógica y transportarlos, debecrear un paquete.

Tarea 1:Entre al sistema de formación.

1. Primero entre al sistema operativo y, a continuación, al sistema de formación.Para ello, utilice el mandante, el nombre de usuario y la clave de accesoinicial que le ha proporcionado el instructor.

2. Indique una nueva clave de acceso personal.

Tarea 2:Cree un paquete con el nombre ZBC400_##, en el que ## es el número de grupoque le ha proporcionado su instructor.

1. Abra el Object Navigator y cree un paquete allí.

2. En la ventana de diálogo que aparece, escriba una breve descripción delpaquete. Asigne el paquete al componente de aplicación CA y al componentede software HOME. Acepte el valor por defecto de todos los otros camposde entrada de la ventana de diálogo.

3. En la siguiente ventana de diálogo, asigne el paquete a una orden detransporte. Utilice la orden de transporte en la que el instructor ha creado unatarea para su usuario.

Consejo: Para determinar la solicitud, seleccione el pulsadorSolicitudes propias.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 229

Page 244: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

ResultadoHa creado correctamente su propio paquete. Asigne a este paquete todos losobjetos de Repository que cree en los próximos ejercicios y utilice la mismaorden de transporte en todos los casos.

230 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 245: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Solución 5: Organización de desarrollosTarea 1:Entre al sistema de formación.

1. Primero entre al sistema operativo y, a continuación, al sistema de formación.Para ello, utilice el mandante, el nombre de usuario y la clave de accesoinicial que le ha proporcionado el instructor.

a) Realice este paso de la forma habitual.

2. Indique una nueva clave de acceso personal.

a) Realice este paso de la forma habitual.

Tarea 2:Cree un paquete con el nombre ZBC400_##, en el que ## es el número de grupoque le ha proporcionado su instructor.

1. Abra el Object Navigator y cree un paquete allí.

a) Realice este paso como se describe en el manual de participantes.

2. En la ventana de diálogo que aparece, escriba una breve descripción delpaquete. Asigne el paquete al componente de aplicación CA y al componentede software HOME. Acepte el valor por defecto de todos los otros camposde entrada de la ventana de diálogo.

a) Realice este paso como se describe en el manual de participantes.

3. En la siguiente ventana de diálogo, asigne el paquete a una orden detransporte. Utilice la orden de transporte en la que el instructor ha creado unatarea para su usuario.

Consejo: Para determinar la solicitud, seleccione el pulsadorSolicitudes propias.

a) Realice este paso como se describe en el manual de participantes.

ResultadoHa creado correctamente su propio paquete. Asigne a este paquetetodos los objetos de Repository que cree en los próximos ejercicios yutilice la misma orden de transporte en todos los casos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 231

Page 246: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

232 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 247: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

195 Ejercicio 6: Desarrollo de un programaABAP sencilloDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear, tratar, guardar y procesar programas ABAP• Verificar la sintaxis correcta de los programas ABAP• Probar y activar programas ABAP

Ejemplo empresarialSe dispone a crear un programa ABAP que permita la entrada de usuario simple ydevuelva información a una pantalla.

Tarea 1:En el paquete, cree un programa ejecutable con el nombre ZBC400_##_HELLO.

1. Cree el programa ZBC400_##_HELLO sin “Include TOP”.

2. Asegúrese de que en la siguiente ventana de diálogo se propone el tipo deprograma correcto Programa ejecutable, y fije el status del programa enun valor significativo.

Tarea 2:Edite el programa. Permita que el usuario indique un nombre en la pantalla deselección que aparecerá posteriormente en la lista, junto con el texto “Hello”.

1. Defina un campo de entrada (parámetro) en la pantalla de selección:

PARAMETERS pa_name TYPE string.

2. Implemente la salida de cualquier texto de la lista, por ejemplo, el texto“Hello World!”. Para ello, utilice la sentencia ABAP WRITE.

3. Asegúrese de que el siguiente resultado se muestre en una línea nueva(sentencia NEW-LINE).

4. A continuación, implemente la salida del texto “Hello” y la salida del nombreque ha indicado el usuario. En lugar de utilizar dos sentencias distintas,utilice una sentencia encadenada.

5. Verifique si existen errores de sintaxis en el programa. Efectúe un test delprograma y actívelo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 233

Page 248: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Solución 6: Desarrollo de un programaABAP sencilloTarea 1:En el paquete, cree un programa ejecutable con el nombre ZBC400_##_HELLO.

1. Cree el programa ZBC400_##_HELLO sin “Include TOP”.

a) Realice este paso como se describe en el manual de participantes.

2. Asegúrese de que en la siguiente ventana de diálogo se propone el tipo deprograma correcto Programa ejecutable, y fije el status del programa enun valor significativo.

a) Realice este paso como se describe en el manual de participantes. Fijeel status de programa en Programa de test.

Tarea 2:Edite el programa. Permita que el usuario indique un nombre en la pantalla deselección que aparecerá posteriormente en la lista, junto con el texto “Hello”.

1. Defina un campo de entrada (parámetro) en la pantalla de selección:

PARAMETERS pa_name TYPE string.

a) Consulte el extracto del código fuente de la solución modelo.

2. Implemente la salida de cualquier texto de la lista, por ejemplo, el texto“Hello World!”. Para ello, utilice la sentencia ABAP WRITE.

a) Consulte el extracto del código fuente de la solución modelo.

3. Asegúrese de que el siguiente resultado se muestre en una línea nueva(sentencia NEW-LINE).

a) Consulte el extracto del código fuente de la solución modelo.

4. A continuación, implemente la salida del texto “Hello” y la salida del nombreque ha indicado el usuario. En lugar de utilizar dos sentencias distintas,utilice una sentencia encadenada.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

234 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 249: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

5. Verifique si existen errores de sintaxis en el programa. Efectúe un test delprograma y actívelo.

a) Realice este paso como se describe en el manual de participantes.Utilice los pulsadores Verificar (Ctrl+F2), Dirigir (F8) yActivar (Ctrl+F3).

ResultadoExtracto del código fuente de la solución modelo:

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

*& Report BC400_GSS_HELLO

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

REPORT bc400_gss_hello.

PARAMETERS: pa_name TYPE string.

WRITE 'Hello World!'.

NEW-LINE.

WRITE: 'Hello',

pa_name.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 235

Page 250: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

236 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 251: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

199 Ejercicio 7: Creación de transaccionesDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear transacciones• Definir códigos de transacción como favoritos personales

Ejemplo empresarialLos usuarios de su empresa deberían poder iniciar sus programas ABAP comotransacciones o definirlos como favoritos personales.

Tarea 1:Cree una transacción de informe (nombre sugerido: ZBC400_##_HELLO) conla que podrá iniciar el programa ejecutable ZBC400_##_HELLO.

1. Cree la nueva transacción en el paquete. Haga una breve descripción yseleccione el tipo de transacción adecuado (iniciar objeto).

2. Consulte el programa que se va a ejecutar. Seleccione la clasificación detransacción correcta y asegúrese de que está activada para GUI.

3. Grabe la transacción y verifíquela.

4. Confirme que el programa se puede iniciar indicando el código de transacciónen el campo de comandos.

Tarea 2:Incluya la nueva transacción en sus favoritos personales en el menú SAP EasyAccess.

1. Abra el menú SAP Easy Access , seleccione la función Insertar transacciónen Favoritos e indique el código de transacción.

2. Ejecute el programa haciendo doble clic en la nueva entrada de favoritos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 237

Page 252: 119167612 taw10-01-es

Capítulo 6: Introducción al Workbench ABAP TAW10_1

Solución 7: Creación de transaccionesTarea 1:Cree una transacción de informe (nombre sugerido: ZBC400_##_HELLO) conla que podrá iniciar el programa ejecutable ZBC400_##_HELLO.

1. Cree la nueva transacción en el paquete. Haga una breve descripción yseleccione el tipo de transacción adecuado (iniciar objeto).

a) Asegúrese de seleccionar Programa y Pantalla de selección(transacción de informe) como objeto inicial.

2. Consulte el programa que se va a ejecutar. Seleccione la clasificación detransacción correcta y asegúrese de que está activada para GUI.

a) Realice este paso como se describe en el manual de participantes.Asegúrese de que la transacción está clasificada como Transacción deusuario profesional y fíjela como activada para GUI, al menos paraSAP GUI para Windows.

3. Grabe la transacción y verifíquela.

a) Para ello, utilice los pulsadores y .

4. Confirme que el programa se puede iniciar indicando el código de transacciónen el campo de comandos.

a) Realice este paso de la forma habitual.

Tarea 2:Incluya la nueva transacción en sus favoritos personales en el menú SAP EasyAccess.

1. Abra el menú SAP Easy Access , seleccione la función Insertar transacciónen Favoritos e indique el código de transacción.

a) Realice este paso como se describe en el manual de participantes.

2. Ejecute el programa haciendo doble clic en la nueva entrada de favoritos.

a) Realice este paso de la forma habitual.

238 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 253: 119167612 taw10-01-es

TAW10_1 Lección: Desarrollo de programas y organización de desarrollos

Resumen de la lección

Ahora podrá:• Nombrar y usar las utilidades para el correcto desarrollo de software• Crear paquetes• Crear programas• Crear transacciones

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 239

Page 254: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Describir la estructura del Repository• Nombrar y utilizar las herramientas de búsqueda del Repository• Utilizar el Object Navigator para visualizar objetos de Repository• Nombrar y usar las utilidades para el correcto desarrollo de software• Crear paquetes• Crear programas• Crear transacciones

Más información... Consulte la documentación online de cada herramienta.

240 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 255: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

203Examine sus conocimientos

1. Los objetos de Repository no son específicos de mandante.

Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

2. Los objetos de cliente se pueden incluir en paquetes SAP.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

3. ¿Qué dos herramientas se utilizan para buscar objetos de Repository?¿Cuándo se debe utilizar cada herramienta?

4. Debe crear un nuevo programa de aplicación para cada lenguaje utilizadoen el sistema.Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

5. ¿Qué es una sentencia encadenada?

6. ¿Cuándo se desencadena el transporte de objetos de desarrollo para unaorden de transporte?Seleccione la(s) respuesta(s) correcta(s).□ A Al guardar un objeto□ B Al activar un objeto□ C Al liberar una tarea□ D Al liberar una orden

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 241

Page 256: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

204Respuestas

1. Los objetos de Repository no son específicos de mandante.

Respuesta: Falso

Los objetos de Repository son aptos para todos los mandantes y se puedenutilizar en todo el sistema.

2. Los objetos de cliente se pueden incluir en paquetes SAP.

Respuesta: Falso

Los objetos de cliente se deben asignar a paquetes de cliente.

3. ¿Qué dos herramientas se utilizan para buscar objetos de Repository?¿Cuándo se debe utilizar cada herramienta?

Respuesta: El Sistema de Información del Repository (para búsquedasindependientes de aplicación) y la Jerarquía de aplicaciones SAP (parabúsquedas relativas a la aplicación)

4. Debe crear un nuevo programa de aplicación para cada lenguaje utilizadoen el sistema.

Respuesta: Falso

Sólo es necesario traducir los textos que pertenecen al programa. Este temase explicará más adelante durante la sesión de formación.

5. ¿Qué es una sentencia encadenada?

Respuesta: Es una forma abreviada de notación para varias sentencias quecomienzan igual.

6. ¿Cuándo se desencadena el transporte de objetos de desarrollo para unaorden de transporte?

Respuesta: D

242 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 257: 119167612 taw10-01-es

Capítulo 7205 Elementos básicos del lenguaje ABAP

See the introductory instructor notes in the lessons.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Definir objetos de datos elementales (variables simples)• Utilizar sentencias ABAP básicas con objetos de datos elementales• Ejecutar y analizar programas en modo debugging

Contenido del capítuloLección: Trabajo con objetos de datos elementales ... . . . . . . . . . . . . . . . . . . . .244

Ejercicio 8: Sentencias ABAP básicas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .271Ejercicio 9: Debugging de sentencias en objetos de datoselementales ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 243

Page 258: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Lección:206

Trabajo con objetos de datos elementalesDuración de la lección: 75 Minutos

Resumen de la lecciónEn este módulo se familiarizará con la diferencia entre tipos de datos y objetosde datos (primero, sólo los elementales), y aprenderá a definirlos y a utilizarlosen un programa. También aprenderá algunas sentencias ABAP básicas. Además,aprenderá cómo usar el ABAP Debugger para analizar el flujo de un programa.

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

• Definir objetos de datos elementales (variables simples)• Utilizar sentencias ABAP básicas con objetos de datos elementales• Ejecutar y analizar programas en modo debugging

This lesson discusses basic terms and concepts that are the same in all modernprogramming languages. The aim is to emphasize the ABAP-specific aspects.

However, it could be that your participants’ level of knowledge is less thanrequired. In this case, you will have to proceed more slowly in this lesson.

This lesson offers a basic introduction to working with the ABAP Debugger,knowledge which is then gradually supplemented with other aspects (such asmodularization, call stack, structure contents, and internal tables) in the lessonsthat follow.

Ejemplo empresarialDebe utilizar variables en sus programas y tratarlos con sentencias simples.

Además, desea utilizar el ABAP Debugger para buscar los errores semánticosde sus programas.

Tipos de datos y objetos de datosUna descripción variable formal se denomina tipo de datos. Por el contrario, unavariable o constante definida concretamente mediante un tipo de datos se llamaobjeto de datos.

Utilización de los tipos de datosEl siguiente gráfico muestra cómo se pueden utilizar los tipos de datos:

244 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 259: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 95: Utilización de los tipos de datos

Definición de objetos de datosEl tipo de un objeto de datos define sus propiedades técnicas (y posiblementetambién las semánticas).

Definición de parámetros de interfazEl tipo de un parámetro de interfaz determina el tipo del parámetro real quese transfiere al llamar la unidad de modularización.

Definición de campos de entrada/salidaEl tipo de un campo de entrada/salida puede proporcionar informaciónadicional a las características técnicas, como la ayuda de entrada de valory de campo.

En este módulo nos centraremos en la utilización de tipos para definir variablesinternas de programa.

Tipos estándar ABAPVeamos primero los tipos estándar ABAP predefinidos por SAP (tiposimplementados). Están divididos en dos grupos: Tipos completos e incompletos.

Los tipos estándar ABAP implementados están completos. Esto significa que yacontienen una especificación de longitud fija específica del tipo:

Tipos estándar ABAP completos

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 245

Page 260: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

DTipo para fecha (D), formato: AAAAMMDD, longitud 8 (fija)

TTipo para hora (T), formato: HHMMSS, longitud 6 (fija)

ITipo para entero (I), longitud 4 (fija)

FTipo para número de punto flotante (F), longitud 8 (fija)

STRINGTipo para cadena de caracteres de longitud dinámica

XSTRINGTipo para secuencia de bytes de longitud dinámica (cadena heXadecimal)

Los siguientes tipos estándar no contienen una longitud fija (incompletos). Sise utilizan para definir objetos de datos, será necesario seguir especificando lalongitud de la variable.

Tipos estándar ABAP incompletos

CTipo para cadena de caracteres (Carácter) para la que se debe especificar lalongitud fija

NTipo para cadena de caracteres numérica (carácter Numérico) para la quese debe especificar la longitud fija

XTipo para secuencia de bytes (cadena heXadecimal) para la que se debeespecificar la longitud fija

PTipo para número empaquetado (número emPaquetado) para el que se debeespecificar la longitud fija.(En la definición de un número empaquetado, es posible que también seespecifique la cantidad de puntos decimales).

Para obtener más información acerca de tipos ABAP predefinidos, consulte ladocumentación de palabras clave de las sentencias TYPES o DATA.

246 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 261: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Tipos de datos localesMediante los tipos estándar, puede declarar tipos de datos locales en elprograma, que pueden ser más completos o más complejos que los tipos estándarsubyacentes. Los tipos de datos locales sólo existen en el programa en cuestión y,por consiguiente, sólo se pueden utilizar allí. La declaración se realiza mediante lasentencia TYPES.

Gráfico 96: Declaración de tipos locales

Consejo: Existe una sintaxis alternativa para especificar la longitud conel suplemento LENGTH que encontrará con frecuencia en programasantiguos. Aquí, la longitud se especifica entre paréntesis directamentedespués del nombre del tipo. Entre los ejemplos se incluyen:

TYPES gty_c_type(3) TYPE c. TYPES gty_p_type(3)TYPE p DECIMALS 2.

Para mejorar la legibilidad del programa, no utilice más esta sintaxisobsoleta.

Tipos de datos globalesUno de los tipos de datos definidos en el Dictionary ABAP se llama global,puesto que se puede utilizar en todo el sistema (es decir, en todo el sistema SAPen cuestión).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 247

Page 262: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 97: Tipos de datos globales del Dictionary

En este módulo sólo describiremos los elementos de datos y los utilizaremoscomo tipos de campos. Los tipos de datos globales restantes se utilizarán mástarde en este curso.

Definición de objetos de datos variablesEn el módulo anterior hemos visto que existen tres categorías de tipos de datos entotal: estándar, local y global.

Ahora queremos utilizar estos tipos para definir variables (objetos de datos).

248 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 263: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 98: Definición de objetos de datos

Los objetos de datos siempre se definen con la palabra clave DATA. Puede utilizarun tipo estándar, un tipo local o un tipo global ABAP para indicar un objeto dedatos.

Puede consultar un objeto de datos ya definido al definir variables adicionales(suplemento LIKE).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 249

Page 264: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 99: Ejemplos de definición de objetos de datos elementales

Puede utilizar el suplemento VALUE para asignar previamente el valor de unobjeto de datos elemental.

Consejo: En la sentencia DATA, también tiene la opción de especificar lalongitud entre paréntesis después del nombre de la variable, por ejemplo:

DATA gd_myvar(15) TYPE c. DATA gd_myvar_p(4) TYPEp DECIMALS 2.

Aquí también se recomienda utilizar el suplemento LENGTH por motivosde legibilidad.

Si falta la especificación de longitud de una definición de variable, se establece unalongitud por defecto para el tipo estándar (incompleto) (longitud 1 para los tipos C,N y X, y longitud 8 para el tipo P). Si también falta esta especificación por defecto,se utiliza el tipo estándar C. Por lo tanto, la sentencia "DATA gd_myvar." sinespecificación de tipo ni longitud define una variable de tipo C con longitud 1.

Consejo: Para mejorar la legibilidad, intente evitar esta opción deespecificación de un tipo o una longitud implícitos.

Para obtener más detalles, consulte la documentación de palabras clave de lassentencias TYPES o DATA.

250 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 265: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Literales, constantes y símbolos de texto

Gráfico 100: Literales y constantes (objetos de datos fijos)

Los objetos de datos fijos tienen un valor fijo, que se establece al escribir el textofuente y no se puede modificar durante el tiempo de ejecución. Los literales ylos constantes pertenecen a los objetos de datos fijos.

Puede utilizar los literales para especificar valores fijos en sus programas. Existenliterales numéricos (especificados sin comillas) y literales de texto (especificadoscon comillas). En la figura anterior se muestran algunos ejemplos de literales.

Los constantes se definen mediante la sentencia CONSTANTS. Su tipo se definede forma similar a la definición de objetos de datos elementales. El suplementoVALUE es obligatorio para los constantes. Así es como se define el valor delos constantes.

Consejo: Si es posible, evite completamente el uso de literales al usarsentencias. En su lugar, utilice constantes y símbolos de texto. Estofacilitará considerablemente la actualización del programa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 251

Page 266: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 101: Símbolos de texto

Un principio muy importante en el desarrollo ABAP es el plurilingüismo. Estosignifica que, cuando se visualizan textos en la interfaz de usuario, se tiene encuenta el idioma de trabajo del usuario actual. La utilización de literales de textoen este contexto es crítica, puesto que el literal sólo existe en una versión delcódigo fuente y, por este motivo, es independiente del lenguaje.

Por lo tanto, debería crear únicamente textos dependientes del idioma comoliterales de texto con finalidad de test. Para programas productivos que debenpoder ejecutarse en varios idiomas de trabajo, el lenguaje de programación ABAPproporciona los llamados símbolos de texto.

Los símbolos de texto pertenecen a un programa en particular y se pueden utilizardirectamente en el mismo. Están almacenados fuera del código fuente en su propioobjeto de Repository, el pool de textos del programa. Los símbolos de texto sepueden traducir a varios idiomas, y se puede almacenar cada uno con un indicadorde idioma en el pool de textos (consulte el gráfico anterior). Si el programa accedea un símbolo de texto durante su ejecución, el sistema considera automáticamenteel idioma de trabajo del usuario y suministra el texto en el idioma correspondiente.

Un símbolo de texto se identifica mediante un ID alfanumérico de trescaracteresxxx .

Para utilizar un símbolo de texto en su programa, debe asignarlo comoTEXT-xxx , donde xxx representa los tres caracteres del ID de símbolo de texto.

252 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 267: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Para especificar un símbolo de texto de forma más intuitiva, también puedeutilizar la siguiente sintaxis en lugar de TEXT-xxx: '...'(xxx) . Aquí,'...' debe ser el texto del símbolo de texto en el idioma original del programa.

Existen dos opciones para definir símbolos de texto para un programa:

• Desde el Editor ABAP, seleccione Pasar a → Elementos de texto →Símbolos de texto, o

• Especifique el símbolo de texto en el código fuente mediante la sintaxisdescrita arriba y haga doble clic en su ID. (Navegación hacia delante).

Para traducir los símbolos de texto del programa, seleccione Pasar a →Traducción desde el menú, en el Editor ABAP.

Consejo: Recuerde que también debe activar los elementos de texto.

Comparación: Tipos de datos locales y globales

Gráfico 102: Tipos de datos locales vs. globales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 253

Page 268: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Los tipos de datos locales sólo se pueden utilizar en el programa en el que estándefinidos. Los tipos de datos globales, por el contrario, se pueden utilizar en todoel sistema. Además, también tienen las siguientes ventajas:

• El hecho de que los tipos globales se puedan usar en todo el sistemaincrementa la consistencia del mismo, y la posibilidad de reutilización reducela cantidad de actualizaciones necesarias.

• En el Dictionary ABAP, tiene la opción de generar una referencia deutilización para un tipo de datos global. En la referencia de utilización seenumeran los objetos de Repository que utilizan el tipo de datos en cuestión.

• Además de la información técnica, los tipos de datos globales también puedencontener la información semántica correspondiente a las descripcionesempresariales de los objetos que se van a definir. También se pueden utilizarpara diseñar visualizaciones de pantalla (por ejemplo, la descripción brevede la izquierda del campo de entrada).

Los tipos de datos locales sólo se deben utilizar si se usan exclusivamente en elprograma donde están definidos y si la información semántica no influye en ladefinición de los objetos de datos correspondientes.

Sentencias ABAP básicasEn esta sección, aprenderá a rellenar con datos los objetos de datos elementales ya realizar cálculos en ABAP. También verá una introducción a las construccionesque puede utilizar para controlar el flujo del programa dependiendo del contenidode los objetos de datos.

254 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 269: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Asignaciones de valor

Gráfico 103: Asignaciones de valor

Al iniciar el programa, se carga el contexto del programa en una memoria delservidor de aplicación, y se pone la memoria a disposición de los objetos dedatos definidos en el programa. Cada objeto de datos elemental se preasigna alvalor inicial específico del tipo, excepto si se ha fijado un valor distinto medianteel suplemento VALUE.

Puede utilizar el suplemento MOVE para transferir el contenido de un objeto dedatos a otro objeto de datos. Las dos variantes de sintaxis siguientes tienen elmismo efecto:

• MOVE gd_var1 TO gd_var2.

• gd_var2 = gd_var1.

Si ambos objetos de datos gd_var1 y gd_var2 son de tipos diferentes,existe un conflicto de tipos. En este caso, si existe una regla de conversión,se realiza automáticamente una conversión de tipo de datos. Para obtenerinformación detallada acerca de las copias y las reglas de conversión, consulte ladocumentación de palabras clave de la sentencia MOVE.

La sentencia CLEAR reinicializa el contenido de un objeto de datos al valorinicial ligado al tipo. Para obtener información detallada acerca de los valoresiniciales de un tipo en particular, consulte la documentación de palabras clavede la sentencia CLEAR.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 255

Page 270: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Cálculos y expresiones aritméticas

Gráfico 104: Cálculos

En ABAP, puede programar expresiones aritméticas hasta cualquier nivel deanidamiento. Las operaciones válidas incluyen:

• + Suma• - Resta• * Multiplicación• / División• ** Exponenciación• DIV división integral sin resto• MOD Resto después de la división integral

Atención: Los paréntesis y los operadores son palabras clave ABAP y,por este motivo, se deben separar de otras palabras por un espacio comomínimo.

Varias funciones de distintos tipos de datos están predefinidas en el entorno detiempo de ejecución ABAP. Por ejemplo, la siguiente sentencia proporciona lalongitud real del contenido de una variable de carácter.

gd_length = STRLEN( gd_cityfrom ) .

En el caso de las funciones, el paréntesis de apertura es parte del nombre de lafunción. El resto debe estar separado por un espacio como mínimo.

256 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 271: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

En general, se aplican las reglas algebraicas estándar a la secuencia detratamiento: Primero vienen las expresiones entre paréntesis, a continuaciónlas funciones, luego las potencias, después las multiplicaciones/divisiones, y alfinal las sumas/restas.

Para obtener información detallada acerca de las operaciones y funcionesdisponibles, consulte la documentación de palabras clave de la sentencia

COMPUTE.

Bifurcaciones condicionales y expresiones lógicas

Gráfico 105: Bifurcaciones condicionales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 257

Page 272: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

En ABAP existen dos formas de ejecutar distintas secuencias de sentencias, segúndeterminadas condiciones:

• En la construcción IF puede definir cualquier expresión lógica comocondición de verificación. Si se cumple la condición, el sistema ejecutael bloque de sentencias correspondiente. De lo contrario, se verifica lacondición especificada en la siguiente bifurcación ELSEIF (es posibleincluir varias bifurcaciones). Si no se cumple ninguna de las condicionesespecificadas, se ejecuta la bifurcación ELSE, si es que existe. Lasbifurcaciones ELSEIF y ELSE son opcionales. Para obtener más informaciónacerca de cómo formular una expresión lógica, consulte la documentaciónde palabras clave de la sentencia IF.

• Puede utilizar la construcción CASE para distinguir los casos de formaclara. El contenido del campo especificado en la parte CASE se verificacon respecto a los objetos de datos listados en la bifurcación WHEN paracomprobar si coinciden. Si el contenido del campo coincide, se procesa elbloque de sentencias correspondiente. Si ninguna comparación coincide,el sistema ejecuta la bifurcación OTHERS si está disponible. Excepto laprimera bifurcación WHEN, todos los otros suplementos son opcionales.

En ambas construcciones, la verificación de condiciones o de coincidencias seproduce secuencialmente de forma descendente. Tan pronto como se ejecute elbloque de secuencias de una bifurcación, el sistema pasará inmediatamente aENDIF o ENDCASE.

Consejo: Si desea implementar verificaciones de semejanza entre uncampo y valores diferentes, debe usar preferentemente la construcciónCASE en lugar de la sentencia IF, ya que es más transparente y rindemejor.

A continuación se muestran varios ejemplos simples de utilización de la sentenciaIF.

258 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 273: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 106: Ejemplos: Sentencia IF

Las negaciones se formulan generalmente situando el operador NOT antes de laexpresión lógica. Cuando niegue la consulta IS INITIAL, puede utilizar laconsulta especial IS NOT INITIAL.

Consejo: La formulación IF NOT var IS INITIAL también estápermitida, pero no es tan legible y, por lo tanto, debe evitarse.

Las estructuras IF y CASE pueden anidarse de la manera que desee. Debeasegurarse de que la lógica de todas las estructuras sea correcta. En particular, lasestructuras interiores deben cerrarse correctamente antes de que el sistema regresea la lógica externa, por ejemplo:

IF <log. condition1>. ... IF <log. condition2>. ... ENDIF.ENDIF.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 259

Page 274: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Loops

Gráfico 107: Loops

Existen cuatro construcciones de loop en ABAP. En los loops DO y WHILE, elcampo de sistema SY-INDEX contiene el número de ejecución del loop actual.Por lo tanto, consultar este campo del sistema sólo tiene sentido dentro de un loop.En los loops anidados, SY-INDEX contiene siempre el número de ejecución deloop del loop en el que está situado.

Loops incondicionales/controlados por índiceEl bloque de sentencia entre DO y ENDDO se ejecuta de forma continuahasta que se abandona el loop mediante sentencias de terminación comoEXIT. También tiene la opción de especificar el número máximo deejecuciones de loop; en caso contrario es posible que el resultado sea unloop sin fin.

Loops controlados por la cabeceraEl bloque de sentencia entre WHILE y ENDWHILE se ejecuta de formacontinua hasta que no se cumpla la condición especificada. Siempre severifica la condición antes de ejecutar el bloque de sentencias.

Loops de lecturaPuede utilizar el loop SELECT para leer varias entradas de una tabla debase de datos sucesivamente. En una tabla interna (variable de tabla en elprograma), la misma función de lectura se implementa con el loop LOOP.

260 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 275: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Campos de sistemaEn las secciones anteriores, se han presentado varios objetos de datos que puedenutilizarse en el código fuente ABAP sin necesidad de declararlos explícitamentepor adelantado (por ejemplo, sy-datum, sy-index). El sistema de tiempo deejecución utiliza estos campos de sistema para suministrar información alprograma de aplicación acerca del status de sistema real. En el siguiente gráfico seilustran varios campos de sistema interesantes:

Gráfico 108: Algunos campos de sistema interesantes

En las lecciones siguientes se tratarán otros campos de sistema. Encontrará unalista completa de los campos de sistema en la documentación de palabras clavebajo el término“Campos de sistema”.

Atención: Para acceder a los campos de sistema de sus programas, utiliceel acceso de sólo lectura.

El acceso de escritura puede causar pérdidas de información importante dealgunas partes del programa relacionadas. Además, usted no tiene ningúncontrol sobre cuándo el sistema de tiempo de ejecución ABAP cambia denuevo el contenido y sobrescribe los valores que usted ha fijado.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 261

Page 276: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 109: Código de retorno de una sentencia ABAP

Uno de los campos de sistema más importantes es el campo sy-subrc. Conmuchas sentencias, el sistema de tiempo de ejecución ABAP rellena este campocon el código de retorno correspondiente para indicar si la sentencia se haejecutado correctamente. El valor cero significa que la secuencia se ha ejecutadocorrectamente. Lea la documentación de palabras clave de las sentenciascorrespondientes para averiguar si se fija este valor de retorno y cómo se llevaa cabo en casos individuales.

This is a good point to carry out the first exercise in this lesson (“calculatorexercise”)

262 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 277: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Mensajes de diálogo

Gráfico 110: Mensajes de diálogo

La sentencia MESSAGE se utiliza para enviar mensajes de diálogo a los usuariosde un programa. Al hacer esto, debe especificar el número de mensaje de tresdígitos y la clase de mensaje.

El número y la clase de mensaje identifican claramente el mensaje que sedebe visualizar. El tipo de mensaje se utiliza para especificar dónde se debevisualizar el mensaje. Puede realizar un test del comportamiento de visualizaciónde los distintos tipos de mensaje mediante el programa de demostraciónDEMO_MESSAGES que se suministra con el sistema estándar SAP.

Si el mensaje especificado contiene variables, les puede suministrar valores desu programa mediante el suplemento WITH. Entonces, en lugar de las variablesaparecerán los valores transferidos en el texto de mensaje visualizado.

Para obtener más información acerca de las alternativas sintácticas de la sentenciaMESSAGE, consulte la documentación de palabras clave correspondiente.

If you have used a WRITE statement to output an error message in one of theprograms you created previously, you can now replace this with MESSAGE, withmessages 050 and 051 from the message class BC400, for example. Use messagetype i and explain that this can be improved later on using event control.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 263

Page 278: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Trabajo con el ABAP Debugger

Gráfico 111: Ejecutar un programa en modo debugging

The program BC400_DED_DEBUGGER from the package BC400 is a suitablechoice for demonstrating debugging. Alternatively, you can also debug a programwith a selection screen, in order to activate the Debugger after the selection screenusing /h.

Existen diversas opciones para iniciar un programa en modo debugging desdeObject Navigator:

a) En el área de navegación del programa seleccionado, seleccione Ejecutar →Debugging del menú contextual.

b) En el área del editor, seleccione la línea de programa solicitada desde la cualdesea realizar el proceso de debugging. Seleccione el pulsador Fijar/Borrarbreakpoint. A continuación, inicie el programa seleccionando F8 o en el área denavegación mediante el menú contextual Ejecutar → Directo. (La parametrizaciónde un breakpoint descrita anteriormente en el editor sólo es posible para loscódigos fuente activos).

264 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 279: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 112: Cambio al modo debugging en tiempo de ejecución

Si desea “depurar” una función determinada de un programa, primero inicieel programa sin el debugger y, a continuación, cambie al modo de depuracióninmediatamente antes de ejecutar la función (p. ej. pulsador). Existen dos modosde hacerlo:

a) Seleccione Sistema → Utilidades → Debugging ABAP (o pantalla).

b) Indique /h en el campo de comandos de la barra de herramientas estándar ypulse Intro.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 265

Page 280: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 113: ABAP Debugger: paso individual y contenidos de campo

En el debugger, puede seleccionar el procesamiento en pasos individuales paraejecutar el programa sentencia por sentencia. Además, puede visualizar objetosde datos y su contenido actual en la pantalla de variables. Simplemente indiqueallí el nombre del objeto de datos o cópielo haciendo doble clic en los objetos dedatos correspondientes del código fuente.

En SAP Web Application Server 6.40 y versiones anteriores sólo está disponible eldebugger clásico. En las versiones posteriores puede utilizar tanto el debuggernuevo como el clásico. Puede cambiar fácilmente del ABAP Debugger nuevoal clásico durante la depuración seleccionando Debugger → Cambiar al ABAPDebugger clásico en el menú.

En el debugger clásico puede visualizar el contenido de hasta ocho objetos dedatos. Para ello, proceda como lo haría con el nuevo debugger.

266 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 281: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 114: ABAP Debugger: Breakpoints

En el nuevo debugger, puede fijar un breakpoint con un solo clic antes de lalínea en el código fuente (en el debugger clásico se realiza con un doble clic).También puede fijar un breakpoint para sentencias ABAP específicas: Breakpoints→ Breakpoint en → Sentencia. Si selecciona Continuar, se ejecuta el programahasta el siguiente breakpoint.

Los breakpoints fijados son válidos únicamente para la sesión de depuraciónactual. Sin embargo, si pulsa Guardar, los breakpoints permanecerán en su sitiodurante la sesión SAP actual.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 267

Page 282: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 115: ABAP Debugger: Seguimiento de modificaciones de datos

LosWatchpoints son breakpoints que dependen del contenido del campo.

Si fija un watchpoint sin especificar un operador relacional/valor comparativoen un campo y selecciona Continuar, el programa se ejecutará hasta que semodifique el contenido del campo.

Sin embargo, si ha especificado el operador relacional y el valor comparativo,al seleccionar Continuar el programa se ejecutará hasta que se cumpla la condiciónespecificada.

En el debugger clásico puede fijar un máximo de sólo 10 watchpoints. Sinembargo, los puede enlazar del mismo modo que en el nuevo debugger con unoperador lógico (AND u OR).

268 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 283: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Gráfico 116: ABAP Debugger: Modificación del contenido del campo

Si desea modificar el contenido de un campo durante la depuración, haga dobleclic en el icono del lápiz en la pantalla de variables. El valor estará listo para laentrada. Modifique el valor del campo y confírmelo seleccionando INTRO. Elvalor se ha modificado mientras se ejecutaba el debugger.

En el debugger clásico puede modificar el contenido directamente en la vistade campo. A continuación, debe hacer clic en el icono del lápiz para aceptar elvalor modificado.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 269

Page 284: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Gráfico 117: Funciones adicionales del nuevo debugger

Se han incorporado varias funciones útiles al nuevo debugger (la mayoría, sinembargo, se incorporaron por primera vez con el SAP NetWeaver release 7.0).En el Object Navigator puede determinar qué debugger desea utilizar de formaestándar seleccionando Utilidades → Opciones → Editor ABAP → Debugging.

The participants should do the debugger exercise here.

270 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 285: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

233 Ejercicio 8: Sentencias ABAP básicasDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Definir objetos de datos elementales• Asignar valores• Implementar bifurcaciones condicionales• Realizar cálculos

Ejemplo empresarialSe dispone a crear un programa ABAP simple para los cuatro tipos básicos decálculo. Debe poder indicar los valores y el operador aritmético en una pantalla deselección. El resultado debe visualizarse en una lista.

Modelo:

Ninguno

Solución:

BC400_DOS_COMPUTE

Tarea 1:Cree un programa.

1. Cree el programa ejecutable ZBC400_##_COMPUTE sin ningún IncludeTOP y asígnelo a su paquete.

Tarea 2:Defina una pantalla de selección con tres parámetros de entrada.

1. Defina dos parámetros de entrada para enteros como operandos (nombressugeridos: pa_int1, pa_int2) y un operador aritmético de un carácter delongitud (nombre sugerido:pa_op). Utilice la palabra clave PARAMETERSde ABAP para ello.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 271

Page 286: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Tarea 3:Implemente los tipos de cálculo básicos y emita el resultado en una lista.

1. Cree un objeto de datos elemental (nombre sugerido: gv_result) mediantela sentencia DATA para el resultado de cálculos. Defínalo como un tipo denúmero empaquetado de 16 dígitos de longitud y dos posiciones decimales.

2. Calcule el resultado según el operador aritmético especificado. Utilice lasentencia CASE para distinguir los casos.

3. Presente el resultado en una lista mediante la sentencia WRITE. Si deseapresentar textos durante el proceso, asegúrese de que esos textos se puedantraducir y se visualicen como dependientes de idioma.

Consejo: Cree símbolos de texto y utilícelos en lugar de literales.

Tarea 4:Corrija los errores que puedan surgir.

1. Visualice un mensaje de error en la lista si el usuario especifica un operadoraritmético no válido. Utilice la sentencia IF para verificar. Utilice un textotraducible.

2. Visualice un mensaje de error en la lista si el usuario intenta dividir por cero.

Tarea 5:Active y realice un test del programa.

1. Active su programa.

2. Realice un test de su programa.

272 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 287: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Solución 8: Sentencias ABAP básicasTarea 1:Cree un programa.

1. Cree el programa ejecutable ZBC400_##_COMPUTE sin ningún IncludeTOP y asígnelo a su paquete.

a) Realice este paso del mismo modo que en los ejercicios anteriores.

Tarea 2:Defina una pantalla de selección con tres parámetros de entrada.

1. Defina dos parámetros de entrada para enteros como operandos (nombressugeridos: pa_int1, pa_int2) y un operador aritmético de un carácter delongitud (nombre sugerido:pa_op). Utilice la palabra clave PARAMETERSde ABAP para ello.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 3:Implemente los tipos de cálculo básicos y emita el resultado en una lista.

1. Cree un objeto de datos elemental (nombre sugerido: gv_result) mediantela sentencia DATA para el resultado de cálculos. Defínalo como un tipo denúmero empaquetado de 16 dígitos de longitud y dos posiciones decimales.

a) Consulte el extracto del código fuente de la solución modelo.

2. Calcule el resultado según el operador aritmético especificado. Utilice lasentencia CASE para distinguir los casos.

a) Consulte el extracto del código fuente de la solución modelo.

3. Presente el resultado en una lista mediante la sentencia WRITE. Si deseapresentar textos durante el proceso, asegúrese de que esos textos se puedantraducir y se visualicen como dependientes de idioma.

Consejo: Cree símbolos de texto y utilícelos en lugar de literales.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 273

Page 288: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Tarea 4:Corrija los errores que puedan surgir.

1. Visualice un mensaje de error en la lista si el usuario especifica un operadoraritmético no válido. Utilice la sentencia IF para verificar. Utilice un textotraducible.

a) Consulte el extracto del código fuente de la solución modelo.

2. Visualice un mensaje de error en la lista si el usuario intenta dividir por cero.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 5:Active y realice un test del programa.

1. Active su programa.

a) En la barra de herramientas Editor ABAP seleccione el pulsador .

2. Realice un test de su programa.

a) En la barra de herramientas Editor ABAP seleccione el pulsador .

b) Indique valores en los parámetros de la pantalla de selección yseleccione .

c) Verifique el resultado. Verifique también la emisión de mensaje encaso de error.

ResultadoExtracto del código fuente de la solución modelo:*&---------------------------------------------------------------------*

*& Report BC400_DOS_COMPUTE

*&

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

*&

*& Simple calculator

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

REPORT bc400_dos_compute.

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

DATA gv_result TYPE p LENGTH 16 DECIMALS 2.

Continúa en la página siguiente

274 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 289: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 ).

CASE pa_op.

WHEN '+'.

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

ENDCASE.

WRITE: 'Result'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE 'No division by zero!'(dbz).

ELSE.

WRITE 'Invalid operator!'(iop).

ENDIF.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 275

Page 290: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

276 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 291: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

239 Ejercicio 9: Debugging de sentencias enobjetos de datos elementalesDuración del ejercicio: 25 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Ejecutar un programa en el debugger• Fijar breakpoints en el debugger• Fijar breakpoints dependientes del contenido (watchpoints)• Modificar el contenido de campo durante la depuración

Ejemplo empresarialLe suministran un programa en el que debe utilizar el debugger para tratar elcomportamiento semántico.

Tarea 1:Ejecute el programa BC400_DED_DEBUG_EXERCISE en modo debugging yrastree el contenido de GV_COUNT.

1. Inicie el programa BC400_DED_DEBUG_EXERCISE en modo debuggingmediante la lista de objetos del Object Navigator.

2. Primero, verifique el contenido de los objetos de datos del programa en elinicio. Para ello, incluya todos los objetos de datos definidos en el programay en el campo de sistema SY-INDEX en la vista variable. Observe tambiénla escritura de los campos.

Tarea 2:Analice el loop WHILE fijando breakpoints y realizando un seguimiento delcontenido de GV_COUNT y SY-INDEX.

1. Siga el flujo de programa en pasos individuales hasta haber pasado dos vecespor el loop WHILE. En cada caso, realice un seguimiento de cómo cambia elcontenido del campo.

2. Fije un breakpoint en la sentencia que asigne un nuevo valor al objeto dedatos GV_COUNT. Seleccione Continuar para reiniciar el programa yobservar los cambios en el contenido del campo. Repita el último paso hastaque el programa haya realizado su curso y se visualice la lista.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 277

Page 292: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

3. Ejecute el programa de nuevo en modo debugging. Ahora, analice lasmodificaciones del objeto de datos GV_COUNT creando un watchpoint parael campo. Seleccione Continuar para reiniciar el programa y observar loscambios en el contenido de los objetos de datos y del campo de sistemaSY-INDEX.

Tarea 3:Analice los loops DO anidados fijando un breakpoint en las sentencias WRITEy EXIT.

1. Reinicie el programa en modo debugging. Fije breakpoints en todaslas sentencias WRITE y EXIT del programa (seleccione Breakpoints →Breakpoint en → Breakpoint en sentencia). Analice cómo se modifica elcontenido de los contadores de loops GV_IDX_OUTER y GV_IDX_INNER,la información que se muestra y cuándo se muestra.

2. ¿Qué efecto tiene la sentencia EXIT en un loop?

Tarea 4:Utilice la opción del debugger para modificar el flujo del programa de manera quetambién se ejecute la última sentencia del programa.

1. Ejecute la última sentencia del programa. Utilice la opción de cambiar elcontenido de objetos de datos en modo debugging.

278 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 293: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Solución 9: Debugging de sentencias enobjetos de datos elementalesTarea 1:Ejecute el programa BC400_DED_DEBUG_EXERCISE en modo debugging yrastree el contenido de GV_COUNT.

1. Inicie el programa BC400_DED_DEBUG_EXERCISE en modo debuggingmediante la lista de objetos del Object Navigator.

a) Visualice el programa en el Object Navigator, haga clic con el botónderecho en el programa y seleccione Ejecutar.

b) De forma alternativa, puede fijar un breakpoint en la primera secuenciaejecutable del editor.

2. Primero, verifique el contenido de los objetos de datos del programa en elinicio. Para ello, incluya todos los objetos de datos definidos en el programay en el campo de sistema SY-INDEX en la vista variable. Observe tambiénla escritura de los campos.

a) En el código fuente del debugger, haga doble clic en cada uno delos campos GV_COUNT, GV_IDX_INNER, GV_IDX_OUTER ySY-INDEX. Desplácese hacia la derecha de la visualización variablepara visualizar los tipos de campo.

Tarea 2:Analice el loop WHILE fijando breakpoints y realizando un seguimiento delcontenido de GV_COUNT y SY-INDEX.

1. Siga el flujo de programa en pasos individuales hasta haber pasado dos vecespor el loop WHILE. En cada caso, realice un seguimiento de cómo cambia elcontenido del campo.

a) Puede llevar a cabo el análisis de pasos individuales seleccionandoDebugger → Paso individual, el pulsador , o la tecla F5.

2. Fije un breakpoint en la sentencia que asigne un nuevo valor al objeto dedatos GV_COUNT. Seleccione Continuar para reiniciar el programa yobservar los cambios en el contenido del campo. Repita el último paso hastaque el programa haya realizado su curso y se visualice la lista.

a) Haga clic una vez en la primera columna en frente de la asignación devalor para fijar un breakpoint aquí.

b) Seleccione Debugger → Continuar del menú, el pulsador , o F8.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 279

Page 294: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

3. Ejecute el programa de nuevo en modo debugging. Ahora, analice lasmodificaciones del objeto de datos GV_COUNT creando un watchpoint parael campo. Seleccione Continuar para reiniciar el programa y observar loscambios en el contenido de los objetos de datos y del campo de sistemaSY-INDEX.

a) Para acceder al debugger, repita el primer paso de este ejercicio.

b) Coloque el cursor en el objeto de datos GV_COUNT del código fuentevisualizado en el debugger. Haga clic en el pulsador Watchpoint yconfirme el cuadro de diálogo que aparece con .

c) Para reiniciar el programa, seleccione Continuar.

Tarea 3:Analice los loops DO anidados fijando un breakpoint en las sentencias WRITEy EXIT.

1. Reinicie el programa en modo debugging. Fije breakpoints en todaslas sentencias WRITE y EXIT del programa (seleccione Breakpoints →Breakpoint en → Breakpoint en sentencia). Analice cómo se modifica elcontenido de los contadores de loops GV_IDX_OUTER y GV_IDX_INNER,la información que se muestra y cuándo se muestra.

a) Para acceder al debugger, proceda de la forma anterior.

b) En el debugger, seleccione Breakpoints → Breakpoint en → Breakpointen sentencia e indique la sentencia WRITE en la ventana de diálogoque aparece. Confirme la ventana de diálogo que aparece con .

c) Seleccione Continuar y analice el flujo de programa.

2. ¿Qué efecto tiene la sentencia EXIT en un loop?

Respuesta: La sentencia EXIT hace que el sistema deje de procesar elloop DO actual.

Continúa en la página siguiente

280 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 295: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con objetos de datos elementales

Tarea 4:Utilice la opción del debugger para modificar el flujo del programa de manera quetambién se ejecute la última sentencia del programa.

1. Ejecute la última sentencia del programa. Utilice la opción de cambiar elcontenido de objetos de datos en modo debugging.

a) Fije un breakpoint en la última sentencia IF y seleccione Continuarpara ejecutar el programa hasta este punto.

b) Incluya el campo GV_IDX_INNER en la vista variable. Haga doble

clic en el icono de la vista variable. Modifique el valor del campode 6 a 5 y confirme el cambio seleccionando Intro.

c) Reinicie el programa seleccionando Paso individual o Continuar.

Nota: De forma alternativa, también puede ejecutar la últimasentencia mediante la función Pasar a sentencia. En el mododebugging, sitúe el cursor en esta línea de cualquier evento yseleccione Debugger → Pasar a sentencia.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 281

Page 296: 119167612 taw10-01-es

Capítulo 7: Elementos básicos del lenguaje ABAP TAW10_1

Resumen de la lección

Ahora podrá:• Definir objetos de datos elementales (variables simples)• Utilizar sentencias ABAP básicas con objetos de datos elementales• Ejecutar y analizar programas en modo debugging

282 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 297: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Definir objetos de datos elementales (variables simples)• Utilizar sentencias ABAP básicas con objetos de datos elementales• Ejecutar y analizar programas en modo debugging

Más información... Consulte la documentación online de las sentencias ABAP relevantes.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 283

Page 298: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

284 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 299: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

247Examine sus conocimientos

1. ¿Qué tipos estándar ABAP son numéricos?

2. ¿Es posible definir otros tipos además de los tipos estándar? Si es así,¿dónde?

3. ¿Qué palabra clave ABAP se utiliza para definir tipos locales?

4. ¿En qué campo de sistema se encuentra el contador de loops para los loopsDO y WHILE, respectivamente?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 285

Page 300: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

248Respuestas

1. ¿Qué tipos estándar ABAP son numéricos?

Respuesta: I, F, P

N no es un tipo numérico, sino el tipo para cadenas de caracteres que puedencontener sólo números decimales.

2. ¿Es posible definir otros tipos además de los tipos estándar? Si es así,¿dónde?

Respuesta: Sí, en el Dictionary ABAP (tipos globales) y en el programa(tipos locales).

3. ¿Qué palabra clave ABAP se utiliza para definir tipos locales?

Respuesta: TYPES

4. ¿En qué campo de sistema se encuentra el contador de loops para los loopsDO y WHILE, respectivamente?

Respuesta: SY-INDEX

286 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 301: 119167612 taw10-01-es

Capítulo 8249 Modularización

See the introductory instructor notes in the lessons.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Nombrar las técnicas de modularización básicas• Definir subrutinas• Llamar subrutinas• Analizar la ejecución de subrutinas en modo debugging• Buscar módulos de funciones• Obtener información acerca de la funcionalidad y el uso de módulos de

funciones• Llamar módulos de funciones en su programa• Crear un grupo de funciones• Crear un módulo de funciones• Explicar el rol de los BAPI e identificar sus propiedades especiales• Explicar los términos básicos de la programación orientada a objetos• Adquirir información acerca de la función y el uso de clases globales y sus

métodos• Llamar métodos de clases globales en los programas• Crear clases globales• Crear e implementar métodos simples en clases globales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 287

Page 302: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

• Describir cómo se definen, se implementan y se utilizan las clases locales

Contenido del capítuloLección: Modularización: fundamentos y resumen ... . . . . . . . . . . . . . . . . . . . . .289Lección: Modularización con subrutinas... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .298

Ejercicio 10: Subrutinas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .313Lección: Modularización con módulos de funciones ... . . . . . . . . . . . . . . . . . . . .320

Ejercicio 11: Uso de un módulo de funciones ... . . . . . . . . . . . . . . . . . . . . . . .339Ejercicio 12: Creación de un grupo de funciones ... . . . . . . . . . . . . . . . . . . .347Ejercicio 13: Creación y utilización de un módulo de funciones ... . .349

Lección: Modularización con métodos de clases globales ... . . . . . . . . . . . . .356Ejercicio 14: Uso de métodos estáticos globales ... . . . . . . . . . . . . . . . . . . .373Ejercicio 15: Creación de clases globales ... . . . . . . . . . . . . . . . . . . . . . . . . . . .379Ejercicio 16: Creación y utilización de métodos estáticos globales .381

Lección: Modularización con métodos de clases locales (presentaciónpreliminar).. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .388

288 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 303: 119167612 taw10-01-es

TAW10_1 Lección: Modularización: fundamentos y resumen

Lección:251

Modularización: fundamentos y resumenDuración de la lección: 10 Minutos

Resumen de la lecciónEn este módulo aprenderá por qué tiene sentido almacenar partes de programas enunidades de modularización. También obtendrá un resumen de las opciones demodularización de los programas ABAP.

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

• Nombrar las técnicas de modularización básicas

Participants with programming experience should have no problems with thislesson. It is often the case, however, that some participants are unfamiliar withthe idea and advantages of modularization units. This lesson is aimed at thoseparticipants. The instructor should therefore ascertain at the start of this lessonwhether a basic introduction is practical or necessary.

Ejemplo empresarialUn empleado de gestión de calidad ha descubierto que muchas partes delprograma se repiten con frecuencia. Su tarea consiste en averiguar qué técnicas demodularización se pueden implementar.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 289

Page 304: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Técnica de modularización

Gráfico 118: Opciones de utilización de unidades de modularización

Una unidad de modularización es una parte de un programa en la que seencapsula una función concreta. Una parte del código fuente se almacena en unmódulo para mejorar la transparencia del programa y para poder usar la funcióncorrespondiente del programa varias veces sin tener que volver a implementar elcódigo fuente entero en cada ocasión (consulte el gráfico anterior).

El resultado obtenido cuando un programa pasa a estar más orientado a lasfunciones es la mejora de la transparencia: el programa divide la tarea globalen subfunciones, que son responsabilidad de las unidades de modularizacióncorrespondientes.

La modularización facilita la actualización de programas, ya que permite quelas modificaciones se realicen únicamente en la función, o las correcciones enlas unidades de modularización respectivas, y no en varios puntos del programaprincipal. Asimismo, también le permite procesar una llamada “como unidad”en el debugger durante la ejecución del programa y visualizar posteriormente elresultado. De este modo, resulta mucho más fácil encontrar el origen del error.

290 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 305: 119167612 taw10-01-es

TAW10_1 Lección: Modularización: fundamentos y resumen

Modularización de programa local

Gráfico 119: Modularización de programa local

At this point, do not answer questions from the participants regarding the actualimplementation in detail. A precise explanation of the syntax and so on is providedin another lesson. In principle, it is also possible to call a subroutine of an externalprogram (see the online documentation for external program calls). You shouldnot explain this technique in detail in order to avoid confusion. If participantsnevertheless address this issue, refer them to the online documentation. Youshould also point out that this technique contradicts the principle of encapsulatingdata and functions and should therefore not be used.

Existen dos técnicas para la modularización de programa local en el lenguaje deprogramación ABAP:

• Subrutinas, también conocidas como rutinas form• Métodos en clases locales

Con ambas técnicas de modularización local, las unidades de modularizaciónsólo están disponibles en el programa en el que se implementaron. Para llamarel módulo local, no es necesario cargar ningún otro programa en el contexto deusuario en tiempo de ejecución. Las clases locales, los métodos y las subrutinas

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 291

Page 306: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

pueden tener el mismo nombre en diferentes programas sin causar conflictos.Esto se debe a que el código fuente de los programas se trata por separado en lamemoria principal del servidor de aplicación.

Consejo: Para razones históricas, es técnicamente posible llamar unasubrutina también desde otro programa. Sin embargo, no se recomiendautilizar esta opción, ya que esta técnica contradice el principio deencapsulación de datos y funciones.

Modularización global

Gráfico 120: Modularización global

Give just a general description of the techniques here too. A precise explanationwill be provided in another lesson.

También existen dos técnicas para la modularización global en el lenguaje deprogramación ABAP:

• Módulos de funciones que están organizados en grupos de funciones• Métodos en clases globales

292 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 307: 119167612 taw10-01-es

TAW10_1 Lección: Modularización: fundamentos y resumen

Cualquier número indefinido de programas puede utilizar simultáneamentelas unidades de modularización definidas globalmente. Las unidadesde modularización definidas globalmente se almacenan centralmente en elRepository y se cargan cuando son necesarias (es decir, cuando se llaman) enel contexto del programa de llamada.

Encapsulación de datos

Gráfico 121: Separación de datos

This slide shows the encapsulation of data using a function group and a globalclass, since data can be encapsulated most effectively with them. Point out,however, that the local modularization techniques encapsulate data too. A detailedexplanation of this will be given in another lesson.

Lo ideal es que las unidades de modularización a las que se llama no usen losobjetos de datos del programa de llamada directamente. Y viceversa: el programade llamada no debería modificar directamente los datos de las unidades demodularización. Este principio se conoce como encapsulación de datos.

La encapsulación de datos supone una ayuda importante a la hora de desarrollarun código fuente transparente y actualizable. Hace que sea más fácil comprenderen qué partes del programa se ha modificado el contenido de los objetos de datos.Además, garantiza que los datos de las unidades de modularización se modifiquende modo coherente si, por ejemplo, el contenido de varios objetos de datos dentrode una unidad de modularización son dependientes mutuamente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 293

Page 308: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Tomaremos como ejemplo una unidad de modularización en la que se procesa unaserie de documentos factura. El hecho de registrar números de factura diferentespara posiciones de factura que van juntas podría tener consecuencias graves. Sifuera posible acceder desde el exterior a las posiciones de factura individuales,esto es lo que sucedería. Entonces sería difícil para los responsables de la unidadde modularización determinar la causa de la inconsistencia de datos.

Transportes de datos, parámetros e interfaz

Gráfico 122: Transportes de datos entre el programa y la unidad demodularización

The interface and signature are illustrated by means of the function group andglobal class on this slide too. You should point out, however, that the techniquesof local modularization also have an interface or signature. A detailed explanationof this will be given in another lesson.

Los parámetros se utilizan para intercambiar datos entre el programa y elmódulo. El número total de parámetros de una unidad de modularización se llamainterfaz o firma. Los parámetros disponibles se determinan al definir la unidadde modularización. Los parámetros se diferencian en función de si se utilizanpara pasar datos a la unidad de modularización (importar parámetros), para

294 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 309: 119167612 taw10-01-es

TAW10_1 Lección: Modularización: fundamentos y resumen

devolver datos de la unidad de modularización al programa de llamada (exportarparámetros) o para pasar datos a la unidad de modularización y devolverlosdespués de su modificación (modificar parámetros).

Consejo: Con las subrutinas (rutinas form), sólo están disponibles losparámetros de modificación y de utilización muy especializados, lo querestringe considerablemente las opciones de control del transporte dedatos. Esta es otra razón de peso para utilizar las clases locales en lamodularización de programas locales siempre que sea posible.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 295

Page 310: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Discusión con moderadorHere you have an opportunity to explain any open issues that remain.

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

See list of objectives

296 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 311: 119167612 taw10-01-es

TAW10_1 Lección: Modularización: fundamentos y resumen

Resumen de la lección

Ahora podrá:• Nombrar las técnicas de modularización básicas

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 297

Page 312: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Lección:257

Modularización con subrutinasDuración de la lección: 60 Minutos

Resumen de la lecciónEn este módulo aprenderá a emplear subrutinas en programas ABAP. Además,conocerá cómo utilizar la interfaz de una subrutina para pasar parámetros y cómousar los distintos tipos de transferencia.

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

• Definir subrutinas• Llamar subrutinas• Analizar la ejecución de subrutinas en modo debugging

Modularization with subroutines is one of the oldest programming techniquesin ABAP. It has a whole range of shortcomings, in particular when used toencapsulate data and pass parameters. It is therefore important to point out tothe participants that they should not create subroutines in new programs if itcan be avoided. They should use local classes for local modularization instead.Nevertheless, you should still explain the basic required knowledge in this lessonand practice how to create and use subroutines. There are still a large number ofold programs in which subroutines were used for modularization. The participantswill not be able to understand these programs unless they know something aboutsubroutines.

Ejemplo empresarialNecesita estructurar su programa y encapsular el código fuente para que se ejecutevarias veces en una subrutina.

298 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 313: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Modularización interna de programas con subrutinas

Gráfico 123: Ejemplo simple de una subrutina

Show the example on the slide in a simple report and call the list output severaltimes.

If you have any participants on the course who have already heard of includetechnology and want to know more about it, you can explain it briefly. However,you should emphasize that the main program and relevant includes are interpretedas a large single program for the ABAP interpreter at runtime.

Una subrutina es una unidad de modularización dentro de un programa. Para elintérprete ABAP, siempre forma parte del programa principal. En el ejemploanterior no se utilizan parámetros, por este motivo la llamada a la subrutina seestructura de manera muy sencilla. Una subrutina utiliza normalmente valores deobjetos de datos y también los devuelve. El siguiente gráfico demuestra cómo sepueden utilizar estas variables en la subrutina.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 299

Page 314: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Definición de parámetros para subrutinas

Gráfico 124: Transferencia de parámetros: visibilidad de variables globales

Si las variables se definen en el programa principal, se pueden ver globalmentedentro del programa y se pueden modificar en cualquier punto del mismo. Estosignifica que las subrutinas que se definen dentro del programa principal tambiénlas pueden modificar.

300 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 315: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Gráfico 125: Transferencia de parámetros: definición de una interfaz

Puede tratar todas las variables (globales) definidas en el programa principal desdeuna subrutina. Sin embargo, para llamar una subrutina con distintos objetos dedatos para cada situación, se utilizan variables en la subrutina en lugar de variablesglobales. Las variables se sustituyen por las variables globales requeridas alllamar la subrutina. Estas variables se llaman parámetros formales y juntasforman la interfaz de subrutina. Es necesario declarar la interfaz en el momentode definir la subrutina.

Al llamar la subrutina, se deben especializar los parámetros formales mediante lasvariables globales correspondientes (parámetros reales) para hacer referencia alprocesamiento de subrutina con las variables reales. Esta asignación de parámetrosreales a parámetros formales al llamar una subrutina se llama transferencia deparámetros.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 301

Page 316: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 126: Formas de transferir parámetros de interfaz

La forma en la que se transfieren estas variables de programa principal a losparámetros formales de la subrutina se denomina el tipo de transferencia y seespecifica en cada parámetro de la interfaz de la subrutina.

Existen tres tipos de transferencia para subrutinas:

llamar por valorSe realiza una copia del parámetro real. Esta copia se asigna al parámetroformal. Por este motivo, todas las asignaciones de valores al parámetroformal correspondiente hacen referencia únicamente a la copia del parámetroreal y no al original.Este tipo de transferencia se utiliza para poner a disposición de la subrutina elvalor de una variable global (en forma de una copia de variable) sin permitirla modificación de la variable global respectiva (protegiendo el original). Sinembargo, tenga en cuenta que la creación de copias, especialmente paratablas internas de gran volumen, puede llevar mucho tiempo.

302 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 317: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

llamar por valor y resultadoCon este tipo de transferencia pasa lo mismo que con “llamar por valor”. Sinembargo, en el final regular de la subrutina, el valor modificado hasta estepunto de la copia se vuelve a escribir en el original. Si el programa finalizaprematuramente por una sentencia STOP o un mensaje de usuario de tipo E,se elimina el restablecimiento del valor.Este tipo de transferencia se utiliza para transferir el valor de una variableglobal a la subrutina y para volver a escribir en el original el valor finalcompletamente procesado de la copia. Sin embargo, tenga en cuenta que lacreación de copias y el hecho de volver a registrar valores puede llevar muchotiempo, especialmente en el caso de tablas internas de volumen considerable.

llamar por referenciaEl parámetro real se asigna directamente al parámetro formal. Esto significaque las asignaciones de valores al parámetro formal se llevan a cabodirectamente en el parámetro real.Este tipo de transferencia se utiliza en caso de querer ejecutar elprocesamiento de subrutinas directamente en el parámetro real especificado.Es una manera útil de evitar la creación de copias de tablas internas devolumen considerable, que consume mucho tiempo.

Gráfico 127: Definición y llamada de subrutinas

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 303

Page 318: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Estructura de una subrutina

• Una subrutina se introduce con FORM.• El nombre y la interfaz de la subrutina se especifican después de FORM.• A continuación, figuran las sentencias de la subrutina.• La sentencia ENDFORM concluye la subrutina.

En la definición de interfaz se crea una lista de los parámetros formales de lasubrutina (aquí: f1, f2, f3) y se escriben si es necesario. Se debe escribir el tipo detransferencia requerido para cada parámetro:

llamar por valorSe crea una lista de cada uno de los parámetros formales que deba tener eltipo de transferencia “Llamar por valor” (aquí: f1) con el prefijo VALUE enUSING . (Consulte el gráfico anterior para conocer la sintaxis).

llamar por valor y resultadoSe crea una lista de cada uno de los parámetros formales que deba tenerel tipo de transferencia “Llamar por valor y resultado” (aquí: f2) con elprefijo VALUE en CHANGING . (Consulte el gráfico anterior para conocerla sintaxis).

llamar por referenciaSe crea una lista de cada uno de los parámetros formales que deba tener el tipode transferencia “Llamar por referencia” (aquí: f3) sin el prefijo VALUE enCHANGING . (Consulte el gráfico anterior para conocer la sintaxis).

Consejo: Un parámetro sin el prefijo VALUE, pero situado en lasección USING , también tiene el tipo de transferencia “Llamar porreferencia”. Sin embargo, esta sintaxis de declaración sólo tienesentido en el caso de los parámetros formales que se transfieren atablas internas mayores, que no se deben modificar en la subrutina(documentación mediante USING), sino que se deben transferirmediante “Llamar por referencia” para evitar la realización de copiasque requiere mucho tiempo.

Al llamar la subrutina, los parámetros reales que se transferirán sin el prefijoVALUE están especificados en USING o CHANGING. El orden de especificacióndetermina su asignación a los parámetros formales. En el ejemplo del gráficoanterior, a se transfiere a f1, b a f2 y c a f3.

304 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 319: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Gráfico 128: Tipificación de los parámetros de interfaz

As a demonstration here, enhance the calculator with a percentage calculationfunction (see model solution BC400_MOS_SUBROUTINE). The participantswill reproduce this later in an exercise.

Un parámetro formal se tipifica generalmente si se hace mediante TYPE ANY ,o no se tipifica en absoluto. Los parámetros reales de cualquier tipo se puedentransferir a un parámetro de este tipo. En tiempo de ejecución, se determina el tipode parámetro real y se asigna al parámetro formal (herencia de tipo) cuando sellama la subrutina. Sin embargo, si las sentencias de la subrutina no son adecuadaspara el tipo heredado, puede producirse un error de tiempo de ejecución(conflicto de tipo). Por lo tanto, sólo se debe utilizar la tipificación genérica si eltipo del parámetro real aún no está determinado al crear el programa o si puedevariar durante el tiempo de ejecución (programación dinámica).

Para implementar la tipificación concreta de un parámetro formal se especifica untipo global o integrado en el suplemento TYPE. Al hacerlo, se determina que sólose puedan transferir a la subrutina los parámetros reales del tipo especificado. Laverificación de sintaxis detecta cualquier violación de la consistencia de tipo entrelos parámetros formales y reales. Esto incrementa la estabilidad del programa, yaque previene los conflictos de tipo en sentencias dentro de la subrutina.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 305

Page 320: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Si tipifica con los tipos estándares P, N, C o X, la característica “ longitud decampo ” que falta sólo se transfiere del parámetro real al parámetro formal entiempo de ejecución. Con estos tipos se consigue la tipificación completa (es decir,incluida la longitud de campo) al definir y especificar tipos definidos localmente.

Consejo: Las estructuras y las tablas internas se explicarán más adelanteen otro módulo. Los parámetros formales para este tipo de objetos dedatos se deben tipificar siempre para poder acceder a sus componentesdentro de la subrutina.

Gráfico 129: Tipificación del parámetro de interfaz para estructuras y tablasinternas

306 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 321: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Objetos de datos locales y globales

Gráfico 130: Visibilidad de objetos de datos globales y locales

Las variables definidas en el programa principal son objetos de datos globales.Son visibles (se puede acceder a ellas) en todo el programa principal y en cualquiersubrutina llamada.

Las variables definidas dentro de una subrutina son locales porque sólo existen enla subrutina relevante, igual que los parámetros formales. El espacio de memoriade los parámetros formales y los objetos de datos locales sólo se asigna al llamarla subrutina y se libera de nuevo después de la ejecución.

Los parámetros formales y los objetos de datos locales de una subrutina nopueden tener el mismo nombre. Si existe un objeto de datos global con elmismo nombre que un parámetro formal o un objeto de datos local, el parámetroformal o el objeto de datos local se trata dentro de la subrutina, y el objeto dedatos global se trata fuera de la subrutina. Este proceso se llama regla muestra:Dentro de la subrutina, el objeto de datos local “ es la muestra ” del global conel mismo nombre.

You have the opportunity to show the demo program BC400_MOD_LO-CAL_VARIABLES and debug it here. Demonstrate how in the first case it ispossible to access the global data object directly, and in the second case how theglobal data object is shadowed.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 307

Page 322: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Para etiquetar claramente sus objetos de programa internos debe, por ejemplo, usarlos siguientes prefijos para subrutinas:

g... para “objetos de datos globales”p... para “utilizar parámetros”c... para “cambiar parámetros”l... para “objetos de datos globales”

Gráfico 131: Ejemplo de sintaxis: variables auxiliares locales para redondeo

En el ejemplo de sintaxis anterior, el resultado del cálculo del porcentaje deberíaredondearse internamente hasta el número entero más cercano con un decimal,pero aparece con dos decimales.

Para ello, se crea una variable local con sólo un decimal y primero se almacenael resultado del cálculo allí. El sistema de tiempo de ejecución redondeaautomáticamente el resultado hasta el número entero más próximo de acuerdo conel número disponible de decimales. Al copiar el resultado en el parámetro deretorno, se añade solamente un cero para el segundo decimal.

308 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 323: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Llamada de subrutinas

Gráfico 132: Implementación de una llamada de subrutina

La sentencia PERFORM para llamar una subrutina puede generarse en su códigofuente. Primero defina la subrutina y, a continuación, guarde el programa principal.La subrutina recién definida aparece en el área de navegación. Arrástrela ymuévala hacia el punto de llamada necesario de su programa. Suéltela en estepunto. Ahora, todo lo que debe hacer es sustituir los parámetros formales delcódigo fuente generado por los parámetros reales correspondientes.

(De forma alternativa, también puede implementar la generación de la llamadamediante el pulsador “ Patrón ” del Editor ABAP).

La ventaja de generar la llamada es que de este modo es imposible olvidar omezclar parámetros.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 309

Page 324: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Unidades de modularización en el debugger

Gráfico 133: Subrutinas en modo debugging

Si la sentencia actual es una llamada de subrutina, puede ejecutar toda la subrutinasin detenerse seleccionando Ejecutar . El procesamiento sólo se detiene una vezcompletada la subrutina.

Por otro lado, puede utilizar el Paso individual para detenerse en la primerasentencia de la subrutina y realizar un seguimiento más detallado de lasoperaciones.

Si la sentencia actual está ubicada en una subrutina, puede ejecutar el resto de lasubrutina sin detenerse seleccionando Volver . El procesamiento sólo se detieneuna vez completada la subrutina.

Todas las funciones de control del debugger (paso individual, ejecutar, volver ycontinuar) también están disponibles en el ABAP Debugger clásico con el mismosignificado.

310 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 325: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Gráfico 134: Debugging: pila de llamada

En la etiqueta Estándar del debugger puede visualizar desde qué programas se hallamado la subrutina. La herramienta para ello es la Pila de llamadas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 311

Page 326: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

312 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 327: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

271 Ejercicio 10: SubrutinasDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear subrutinas• Utilizar la interfaz de subrutina para transferir datos

Ejemplo empresarialModifique el programa de cálculo para los tipos de cálculo básicos de manera quepueda realizar otro cálculo distinto (cálculo de porcentaje) en una subrutina.

Modelo:

BC400_DOS_COMPUTE

Solución:

BC400_MOS_SUBROUTINE

Tarea 1:Copie el programa ZBC400_##_COMPUTE o el modelo y asígnele el nombreZBC400_##_SUBROUTINE.

1. Copie su programa o el modelo.

Tarea 2:Cree una subrutina (nombre sugerido: CALC_PERCENTAGE) que lleve acabo un cálculo de porcentaje mediante dos parámetros de entrada y devuelva elresultado. El valor del primer parámetro se debe determinar como un porcentajedel segundo parámetro si el valor del segundo representa 100%.

1. Al final del programa, cree una subrutina para el cálculo de porcentajes.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 313

Page 328: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

2. Defina dos parámetros USING para transferir los operandos (nombresugerido: PV_ACT y PV_MAX), así como un parámetro CHANGINGpara devolver el resultado (nombre sugerido: CV_RESULT). Tipifiquelos parámetros de forma apropiada a los objetos de datos globalescorrespondientes del programa principal.

Consejo: No puede utilizar la tipificación implícita para losparámetros de retorno (TYPE p LENGTH 16 DECIMALS 2).En lugar de ello, declare un tipo de programa local al inicio delprograma con la sentencia TYPES. A continuación, podrá utilizarlopara el parámetro real y el parámetro formal.

3. Implemente el cálculo de porcentaje en la subrutina. Asegúrese de evitar elerror de dividir entre cero. En este caso, emita un texto de advertencia enla lista.

Tarea 3:Amplíe el programa principal de forma que pueda llamar una nueva subrutina si elusuario indica el operador aritmético “%”.

1. Amplíe la estructura IF o CASE con una bifurcación que se procese cuandoel parámetro contenga el valor “%”.

2. En esta bifurcación, llame la subrutina y suministre parámetros reales yadecuados a los parámetros formales.

Consejo: Genere la llamada de subrutina mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

Tarea 4:Realice un test y depure el programa.

1. Ejecute el programa y verifique el resultado.

2. Siga el flujo del programa con el Debugger. Utilice las teclas de función olos pulsadores para omitir la subrutina o salir de ella.

314 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 329: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Solución 10: SubrutinasTarea 1:Copie el programa ZBC400_##_COMPUTE o el modelo y asígnele el nombreZBC400_##_SUBROUTINE.

1. Copie su programa o el modelo.

a) Visualice su modelo en el área de navegación del Object Navigator.

b) Haga clic en el programa seleccionado para abrir el menú contextual yseleccione Copiar....

c) Indique el nombre del programa de destino en la ventana de diálogosiguiente y confirme su entrada con Copiar.

d) Seleccione todas las partes del programa mediante el pulsador yconfirme la selección con Copiar.

e) Asigne este programa a su paquete y a su solicitud de la forma habitual.

Tarea 2:Cree una subrutina (nombre sugerido: CALC_PERCENTAGE) que lleve acabo un cálculo de porcentaje mediante dos parámetros de entrada y devuelva elresultado. El valor del primer parámetro se debe determinar como un porcentajedel segundo parámetro si el valor del segundo representa 100%.

1. Al final del programa, cree una subrutina para el cálculo de porcentajes.

a) Consulte el extracto del código fuente de la solución modelo.

2. Defina dos parámetros USING para transferir los operandos (nombresugerido: PV_ACT y PV_MAX), así como un parámetro CHANGINGpara devolver el resultado (nombre sugerido: CV_RESULT). Tipifiquelos parámetros de forma apropiada a los objetos de datos globalescorrespondientes del programa principal.

Consejo: No puede utilizar la tipificación implícita para losparámetros de retorno (TYPE p LENGTH 16 DECIMALS 2).En lugar de ello, declare un tipo de programa local al inicio delprograma con la sentencia TYPES. A continuación, podrá utilizarlopara el parámetro real y el parámetro formal.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 315

Page 330: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

3. Implemente el cálculo de porcentaje en la subrutina. Asegúrese de evitar elerror de dividir entre cero. En este caso, emita un texto de advertencia enla lista.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 3:Amplíe el programa principal de forma que pueda llamar una nueva subrutina si elusuario indica el operador aritmético “%”.

1. Amplíe la estructura IF o CASE con una bifurcación que se procese cuandoel parámetro contenga el valor “%”.

a) Consulte el extracto del código fuente de la solución modelo.

2. En esta bifurcación, llame la subrutina y suministre parámetros reales yadecuados a los parámetros formales.

Consejo: Genere la llamada de subrutina mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 4:Realice un test y depure el programa.

1. Ejecute el programa y verifique el resultado.

a) Realice este paso de la forma habitual.

2. Siga el flujo del programa con el Debugger. Utilice las teclas de función olos pulsadores para omitir la subrutina o salir de ella.

a) Realice este paso tal como se describe en los materiales del curso.

ResultadoExtracto del código fuente:

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

*& Report BC400_MOS_SUBROUTINE *

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

REPORT bc400_mos subroutine.

TYPES gty_result TYPE p LENGTH 16 DECIMALS 2.

Continúa en la página siguiente

316 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 331: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

DATA gv_result TYPE gty_result.

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 OR

pa_op = '%' ).

CASE pa_op.

WHEN '+'.

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

WHEN '%'.

PERFORM calc_percentage

USING

pa_int1

pa_int2

CHANGING

gv_result.

ENDCASE.

WRITE: 'Result:'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE: 'No division by zero!'(dbz).

ELSE.

WRITE: 'Invalid operator!'(iop).

ENDIF.

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

*& Form calc_percentage

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

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 317

Page 332: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

* calculate percentage value

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

* -->PV_ACT actual value

* -->PV_MAX maximum value

* <--CV_RESULT result

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

FORM calc_percentage USING pv_act TYPE i

pv_max TYPE i

CHANGING cv_result TYPE gty_result.

*Simple Error Handling

IF pv_max = 0.

cv_result = 0.

WRITE 'Error in percentage calculation'(epc).

ELSE.

*Calculate result

cv_result = pv_act / pv_max * 100.

ENDIF.

ENDFORM. " calc_percentage

318 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 333: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con subrutinas

Resumen de la lección

Ahora podrá:• Definir subrutinas• Llamar subrutinas• Analizar la ejecución de subrutinas en modo debugging

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 319

Page 334: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Lección:278

Modularización con módulos de funcionesDuración de la lección: 80 Minutos

Resumen de la lecciónEn este módulo aprenderá a buscar módulos de funciones, a analizar sus interfacesy su documentación, y a realizar tests de las funciones que contienen. Asimismo,aprenderá a utilizar módulos de funciones existentes en sus programas y conocerálo que debe hacer para corregir y controlar errores. Finalmente, creará módulosde funciones y encapsulará funciones en los mismos, que podrá reutilizarposteriormente en otros programas.

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

• Buscar módulos de funciones• Obtener información acerca de la funcionalidad y el uso de módulos de

funciones• Llamar módulos de funciones en su programa• Crear un grupo de funciones• Crear un módulo de funciones• Explicar el rol de los BAPI e identificar sus propiedades especiales

The following procedure is possible with the system demo:

You can use the described search function to search for the function module forcalculating the percentage value. Using this function module as an example, youcan discuss topics such as the interface definition, documentation and testing.You should then show how the function module is called and how exceptionsare handled.

Finally, create a function group and create and implement the function modulefor calculating the percentage.

Atención: A new feature of this release is the creation of a function groupand a function module.

Ejemplo empresarialNecesita una función para su programa que puede que esté disponible en forma demódulo de funciones, y desea utilizar este módulo en su programa si es posible.

320 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 335: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Si la función todavía no existe o no cumple todos los requisitos, creará su propiogrupo de funciones y un módulo de funciones.

Trabajar con módulos de funciones

Gráfico 135: Grupo de funciones

Un módulo de funciones es una subrutina con la función correspondiente quese almacena centralmente en la biblioteca de funciones del sistema SAP. Cadamódulo de funciones tiene una interfaz con parámetros que importan o exportandatos. La finalidad principal al usar los módulos de funciones es la posibilidad dereutilización. Por este motivo, pertenecen a los componentes de reutilización.

Los módulos de funciones se asignan a grupos de funciones. Cada grupode funciones es una colección de módulos de funciones que tienen funcionessimilares y/o procesan los mismos datos.

Un grupo de funciones puede contener los mismos componentes que un programaejecutable. Esto incluye:

Objetos de datosSon globales en relación al grupo de funciones, es decir, son visibles paratodos los módulos de funciones del grupo, que pueden modificarlos.

SubrutinasSe pueden llamar imágenes desde todos los módulos de funciones del grupo.

PantallasSe pueden llamar imágenes desde todos los módulos de funciones del grupo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 321

Page 336: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 136: Módulo de funciones

Las propiedades de un módulo de funciones incluyen, entre otros, una brevedescripción y el grupo de funciones al que pertenece.

Como en el caso de las subrutinas, un módulo de funciones puede contener supropio tipo local y sus propias definiciones de objetos de datos. Sólo se puedenvisualizar dentro del módulo de funciones.

La interfaz de un módulo de funciones puede contener los siguientes elementos:

• Parámetro para import: los valores o las variables del programa dellamada se pueden transferir a los parámetros al llamar el módulo defunciones. No es necesario suministrar datos a los parámetros opcionalesdurante la llamada.

• Parámetro para export: el programa de llamada acepta la salida delmódulo de funciones mediante la asignación de una “variable receptora”a un parámetro para export. Los parámetros de exportación son siempreopcionales.

• Parámetro changing: las variables del programa de llamada que modificael módulo de funciones se pueden transferir a los parámetros changing.

• Excepciones: el módulo de funciones puede causarlas en determinadassituaciones de error. Proporcionan información sobre el error deprocesamiento del módulo. El programa de llamada debe controlar lasexcepciones.

En general, los parámetros de interfaz se asignan a tipos del Dictionary ABAP.

322 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 337: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Gráfico 137: Objetos de datos dentro de un grupo de funciones

Si un programa llama un módulo de funciones, se carga todo el grupo de funcionescorrespondiente y se ejecuta el módulo de funciones. El grupo de funcionespermanece cargado en la memoria de trabajo hasta que se cierra el programa dellamada. De este modo, al llamar otro módulo de funciones de este grupo, elmódulo se procesa sin necesidad de volverse a cargar y con los mismos datosglobales del grupo de funciones.

De este modo, si se llama un módulo de funciones que escribe valores en los datosglobales del grupo de funciones, el resto de módulos de funciones del mismo grupopuede acceder a estos datos si se les llama en la misma ejecución de programa.

Aparte de los datos globales de este grupo de funciones, un módulo de funcionestambién puede acceder a sus objetos de datos definidos localmente, así como a susparámetros de interfaz. Los últimos se utilizan para aceptar datos o devolverlos alprograma de llamada.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 323

Page 338: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Búsqueda de módulos de funciones

Gráfico 138: Búsqueda de módulos de funciones

El gráfico anterior describe varios escenarios de búsqueda:

• Puede utilizar la búsqueda relativa a la aplicación a través de la jerarquíade aplicaciones siempre que desee buscar módulos de funciones dentro deuno o más componentes de aplicación.

• La búsqueda libre a través del Sistema de Información del Repository seutiliza para buscar módulos de funciones independientes de los componentesde aplicación.

• La búsqueda relativa al programa se utiliza si se llama el módulo defunciones que está buscando desde un programa existente.

Una vez encontrado un módulo de funciones, primero debe determinar si se haliberado (atributos del módulo de funciones). Sólo tiene el derecho de admitir ypermitir la compatibilidad ascendente con módulos de funciones liberados. Lerecomendamos que utilice únicamente módulos de funciones liberados.

Utilice la documentación del módulo de funciones para obtener más informacióngeneral y sobre su funcionalidad.

324 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 339: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Interfaz del módulo de funciones

Gráfico 139: Interfaz del módulo de funciones

La interfaz del módulo de funciones consiste en los parámetros para import, paraexport, parámetros changing y las excepciones.

Igual que con las subrutinas, puede distinguir entre transferir por valor y transferirpor referencia.

Es necesario suministrar datos a los parámetros no opcionales al llamar el módulode funciones. Para conocer qué parámetros adicionales deben transferirse ycuándo, consulte la documentación del módulo de funciones y la documentaciónde los parámetros de interfaz.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 325

Page 340: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Documentación y test

Gráfico 140: Entorno de documentación y test

Es necesario documentar los módulos de funciones destinados y liberados parael uso en otros programas. Se distingue entre la documentación del módulode funciones, que describe la función del módulo, y la documentación deparámetro, que le informa de cómo se utilizan los parámetros individuales olas excepciones.

Puede acceder a la documentación de módulo de funciones seleccionando elpulsador Documentación módulo F. Los enlaces que se encuentran aquí le llevarána la documentación de parámetro (sólo en modo de visualización). También puedeacceder a la documentación de parámetro seleccionando el pulsador de la columnaTexto explicativo del parámetro respectivo. La “luz verde” indica si se ha creadodocumentación para el parámetro.

Si todavía no está seguro de si el módulo de funciones realiza exactamente loque usted quiere, puede probarlo en el entorno de test antes de instalarlo enel programa. Una plantilla de entrada le permite especificar valores para losparámetros para import y los parámetros changing. También puede cambiar almodo debugging. Los valores de los parámetros para export y los parámetroschanging se listan después de la ejecución.

Si el módulo de funciones desencadena una excepción a causa de una situación deerror, se muestra, si procede, con su texto de mensaje.

326 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 341: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

También se visualiza el tiempo de ejecución. Estos valores están sujetos a lasmismas restricciones que el análisis de tiempo de ejecución. Por este motivo,debería repetir los test varias veces usando los mismos datos.

Además, puede almacenar datos de test en un directorio de datos de test y crearsecuencias de test.

Llamada de módulos de funciones

Gráfico 141: Llamada de un módulo de funciones

Los módulos de funciones se llaman mediante la sentencia CALL FUNCTION. Elnombre del módulo de funciones le sigue en mayúsculas delimitado por comillassimples.

En el bloque EXPORTING , el sistema transfiere valores a los parámetros paraimport del módulo de funciones.

En el bloque IMPORTING de la llamada, los parámetros reales se asignan a losparámetros para export. Puede utilizarlos para acceder a los resultados de lallamada.

Desde la perspectiva del programa de llamada, se exportan los valores a losparámetros para import del módulo de funciones y se importan los valores paralas variables receptoras que se asignan a los parámetros para export del módulode funciones.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 327

Page 342: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

En la sintaxis de llamada, debe especificar siempre el nombre del parámetro deinterfaz (parámetro formal) en el lado izquierdo de la asignación de parámetro,y el objeto de datos o el valor del programa de llamada (parámetro real) en ellado derecho.

Gráfico 142: Crear un código fuente para una llamada de módulo defunciones

Para evitar errores ortográficos, utilice el pulsador Patrón para generar la llamadacuando la implemente en el código fuente. Como alternativa, puede visualizar elgrupo de funciones en el área de navegación y arrastrar y soltar el módulo defunciones en el área del editor para generar la llamada en el código fuente.

Esto genera toda la sintaxis de llamada, es decir, se listan todos los parámetros ylas excepciones de la interfaz. La información opcional se señala como comentarioen la llamada.

A continuación, debe rellenar los parámetros reales y, si es necesario, implementarel control de excepciones.

328 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 343: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Tratamiento de excepciones

Gráfico 143: Tratar excepciones

You can use the function module shown in the graphic in your demo program forcalculating powers. You will find it in the function group BC400_MOS (packageBC400).

Si se producen errores de aplicación al procesar un módulo de funciones (porejemplo, un valor no es adecuado para el cálculo), el módulo de funciones emite laexcepción correspondiente. Este hecho provoca que se cancele el procesamientodel módulo de funciones y que el sistema vuelva al programa de llamada. Si laexcepción se encuentra en la lista (corregida) en el bloque EXCEPTIONS de lallamada, el código de retorno especificado se introduce en el campo de sistemasy-subrc del programa de llamada. Si este campo se verifica después de la llamada,se puede determinar si se emitió la excepción y, si procede, qué excepción, parapoder reaccionar de forma adecuada. Si el módulo de funciones no emitió ningunaexcepción, el sy-subrc del programa de llamada se establece en cero.

También tiene la opción de fijar un código de retorno explícitamente paraalgunas de las posibles excepciones y otro distinto para todas las excepciones nomencionadas. Para ello, realice una lista de la excepción formal OTHERS conel código de retorno deseado.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 329

Page 344: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

En la llamada, debería interceptar todas las excepciones y hacer que el programareaccionara ante ellas. Si se emite una excepción y no se intercepta, se produce unerror de tiempo de ejecución.

The participants should do the exercise on using an existing function module here.

Creación de grupos de funciones y módulos defuncionesEn esta sección aprenderá a crear un módulo de funciones, a definir su interfazy a implementar el código fuente. Como cada módulo de funciones se debeincluir en un grupo de funciones, primero aprenderá a crear un nuevo grupo defunciones si es necesario.

Crear grupos de funciones

Gráfico 144: Creación de un grupo de funciones

330 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 345: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Para crear un grupo de funciones, proceda del siguiente modo:

1. Seleccione la lista de objetos para un grupo de funciones en el ObjectNavigator.

2. Indique el nombre del nuevo grupo de funciones y seleccione INTRO oel pulsador Visualizar. Asegúrese de que utiliza el área de nombres delcliente en el proceso.

Aparece una ventana de diálogo que le pregunta si desea crear el nuevogrupo de funciones.

3. Haga clic en Sí para confirmar.

Aparece una ventana de diálogo con los atributos del grupo de funciones.

4. Escriba un texto breve y guárdelo seleccionando el pulsador Guardar.5. Asigne el grupo de funciones a un paquete y una corrección de la forma

habitual en las ventanas de diálogo que siguen.

Now allow the participants to do the exercise on creating a function group.

Creación de módulos de funciones

Gráfico 145: Creación de un módulo de funciones

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 331

Page 346: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Para crear el módulo de funciones, proceda del siguiente modo:

1. Decida en qué grupo de funciones desea crear el nuevo módulo de funciones.2. Visualice la lista de objetos del grupo de funciones en el área de navegación

del Object Navigator.3. En la estructura de árbol, abra el menú contextual del grupo de funciones y

seleccione Crear → Módulo de funciones.

Aparece una ventana de diálogo con los atributos del módulo de funciones.

4. Indique un nombre y un texto breve para el módulo de funciones. Asegúresede utilizar el área de nombres de cliente para los módulos de funciones (losmódulos de funciones de cliente empiezan por “Z_” o “Y_”).

5. Seleccione el pulsador Guardar para guardar sus entradas.6. Si es necesario, asigne el módulo de funciones a un paquete y una corrección

en las ventanas de diálogo que siguen.

Gráfico 146: Edición del código fuente

Después de definir los parámetros IMPORTING y EXPORTING correspondientes,puede pasar a la etiqueta Código fuente para implementar las funciones delmódulo de funciones.

Consejo: Tenga en cuenta que el Function Builder crea automáticamenteel bloque de comentarios que se encuentra directamente debajo de lapalabra clave FUNCTION y lo modifica cuando se realizan cambios enlos parámetros.

332 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 347: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

The participants should do the exercise on creating and using their own functionmodule here.

Trabajar con BAPIs

Gráfico 147: Business objects y BAPIs

El Business Object Repository (BOR) del sistema SAP contiene businessobjects. Hablando técnicamente, un business object es una clase y correspondea una tabla o a una jerarquía de tablas SAP. Un business object tiene BAPIs(Business Application Programming Interfaces) como métodos. Puede utilizarestas BAPIs para acceder a las tablas correspondientes. Es decir, una BAPI es unaforma de acceder a datos del sistema SAP.

Las BAPIs existen generalmente para funciones básicas de un business object,como:

• Crear un objeto• Recuperar los atributos de un objeto• Modificar los atributos de un objeto• Listar los objetos

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 333

Page 348: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Las funciones de una BAPI se encapsulan en un módulo de funciones que se puedellamar de forma remota. Por este motivo, tanto programas ABAP del mismosistema SAP como programas externos pueden llamarlas.

Gráfico 148: Uso de BAPIs

El gráfico anterior muestra cómo se pueden utilizar las BAPIs.

Existen métodos estándares en forma de BAPIs con nombres estandarizados.Algunas de las BAPIs más importantes se listan aquí.

BAPIs estándar

GetListDevuelve una lista de objetos disponibles que cumplen los criterios deselección especificados.

GetDetailDevuelve información detallada (atributos) de un objeto (es necesarioespecificar la clave completa).

Create, Change, Delete, CancelPermite crear, modificar y borrar objetos

AddItem, RemoveItemAñade y elimina subobjetos (por ejemplo, un elemento de una orden)

334 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 349: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Gráfico 149: BAPI Explorer

Puede utilizar el BAPI Explorer para listar business objects así como las BAPIscorrespondientes de cada aplicación. Para llamar el BAPI Explorer utiliceel siguiente acceso vía menú SAP Easy Access: Herramientas → BusinessFramework → BAPI Explorer o la transacción BAPI.

Una vez encontrado el business object o BAPI requerido, puede visualizar losdetalles relevantes en el lado derecho de la pantalla seleccionando la BAPI.Puede navegar hacia su pantalla con el Function Builder haciendo doble clic enel módulo de funciones visualizado.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 335

Page 350: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 150: Propiedades de un módulo de funciones BAPI

Los módulos de funciones para BAPIs deben cumplir los siguientes requisitostécnicos:

• Convención para fijar nombres BAPI_<business_ob-ject_name>_<method_name>

• Capacidad remota• No contener ni diálogos de usuario ni mensajes• Los parámetros de interfaz están tipificados con componentes de estructuras

del Dictionary ABAP creados para esta BAPI. (Prefijo de nombre para estasestructuras: BAPI_)

• No pueden contener parámetros changing hasta el release 4.6• No emitir excepciones: Se informa de los errores al usuario mediante el

parámetro para export especial RETURN.

336 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 351: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Gráfico 151: Llamada BAPI en un programa ABAP

Si desea utilizar una BAPI dentro del sistema SAP, debe llamar directamente elmódulo de funciones relevante. Tenga en cuenta las restricciones mencionadasanteriormente.

Consejo: Las interfaces BAPI se crean de acuerdo con requisitos dellamada “externos”, es decir, llamadas de un sistema externo. Por estemotivo, se espera recibir las cantidades en un formato externo con 4 ó9 decimales. Durante la llamada, los importes se deben transferir a lainterfaz en un formato convertido de forma adecuada, incluso si la monedacorrespondiente no tiene decimales.

Para realizar esta conversión o reconversión, puede utilizar los módulosde funciones del grupo de funciones BACV (paquete SBF_BAPI).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 337

Page 352: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

338 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 353: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

297 Ejercicio 11: Uso de un módulo defuncionesDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Buscar un módulo de funciones en el Repository• Utilizar un módulo de funciones

Ejemplo empresarialDebe utilizar un módulo de funciones definido globalmente en su programa paracalcular potencias.

Modelo:

BC400_MOS_SUBROUTINE

Solución:

BC400_MOS_FUNCTION_MODULE_1

Tarea 1:Busque un módulo de funciones para calcular potencias y descubra más acerca desu interfaz y su función.

1. Busque un módulo de funciones en el Repository que calcule el resultadode un número base y un exponente.

2. Analice la interfaz del módulo de funciones y lea la documentacióncorrespondiente.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 339

Page 354: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

3. ¿Qué parámetros se deben transferir con la llamada? ¿Cómo estántipificadas? ¿Qué restricciones se aplican al ámbito de valores?

4. ¿Qué parámetro contiene el resultado del cálculo y cómo está tipificado?

5. ¿Qué excepciones puede emitir el módulo de funciones y a qué errores serefieren estas excepciones?

excepción Situación de error

6. Realice un test del módulo de funciones.

Tarea 2:Copie su programa ZBC400_##_SUBROUTINE o el modelo de copia en el nuevonombre ZBC400_##_FUNCTION_MODULE e implemente una llamada demódulo de funciones en el evento que el usuario indique el operador “P”.

1. Copie su programa o el modelo.

2. Amplíe la estructura IF o CASE correspondiente con una bifurcación que seprocese cuando el parámetro correspondiente contenga el valor “P”.

3. Llame el módulo de funciones de esta bifurcación de procesamiento.Transfiera dos valores introducidos por el usuario y reciba el resultado.

Consejo: Genere la llamada de módulo de funciones mediante lafunción de arrastrar y soltar en el área de navegación o medianteel pulsador Patrón.

Continúa en la página siguiente

340 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 355: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

4. Evalúe todas las excepciones que se produzcan y emita un texto explicativoen la lista de resultados.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 341

Page 356: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Solución 11: Uso de un módulo defuncionesTarea 1:Busque un módulo de funciones para calcular potencias y descubra más acerca desu interfaz y su función.

1. Busque un módulo de funciones en el Repository que calcule el resultadode un número base y un exponente.

a) Realice este paso como se describe en el manual de participantes.Busque en el Sistema de Información de Repository módulos defunciones que contengan el término “potencia” en el texto breve, porejemplo.

Consejo: Si las opciones descritas no llevan a unmódulo de funciones apropiado (Patrón o Sistema deInformación de Repository), utilice el módulo de funcionesBC400_MOS_POWER.

2. Analice la interfaz del módulo de funciones y lea la documentacióncorrespondiente.

a) Realice este paso como se describe en el manual de participantes.

3. ¿Qué parámetros se deben transferir con la llamada? ¿Cómo estántipificadas? ¿Qué restricciones se aplican al ámbito de valores?

Respuesta: El parámetro iv_power es opcional; por este motivo no esnecesario especificarlo (se calcula la raíz cuadrada del número).Los parámetros iv_base e iv_power son números enteros.El parámetro iv_power no puede tener un valor mayor de 4.

4. ¿Qué parámetro contiene el resultado del cálculo y cómo está tipificado?

Respuesta: El parámetro ev_result es un número empaquetado con 31 cifras,dos de las cuales son decimales.

5. ¿Qué excepciones puede emitir el módulo de funciones y a qué errores serefieren estas excepciones?

excepción Situación de error

POWER_VALUE_TOO_HIGH Exponente demasiado elevado (>4)

RESULT_VALUE_TOO_HIGH Resultado demasiado elevado

Continúa en la página siguiente

342 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 357: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

6. Realice un test del módulo de funciones.

a) Realice este paso como se describe en el manual de participantes.

Tarea 2:Copie su programa ZBC400_##_SUBROUTINE o el modelo de copia en el nuevonombre ZBC400_##_FUNCTION_MODULE e implemente una llamada demódulo de funciones en el evento que el usuario indique el operador “P”.

1. Copie su programa o el modelo.

a) Realice este paso de la forma habitual.

2. Amplíe la estructura IF o CASE correspondiente con una bifurcación que seprocese cuando el parámetro correspondiente contenga el valor “P”.

a) Consulte el extracto del código fuente de la solución modelo.

3. Llame el módulo de funciones de esta bifurcación de procesamiento.Transfiera dos valores introducidos por el usuario y reciba el resultado.

Consejo: Genere la llamada de módulo de funciones mediante lafunción de arrastrar y soltar en el área de navegación o medianteel pulsador Patrón.

a) Consulte el extracto del código fuente de la solución modelo.

4. Evalúe todas las excepciones que se produzcan y emita un texto explicativoen la lista de resultados.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto del código fuente:

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

*& Report BC400_MOS_FUNCTION_MODULE_1 *

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

REPORT bc400_mos_function_module_1 .

TYPES gty_result TYPE p LENGTH 16 DECIMALS 2.

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 343

Page 358: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

DATA gv_result TYPE gty_result.

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 OR

pa_op = '%' OR

pa_op = 'P' ).

CASE pa_op.

WHEN '+'.

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

WHEN '%'.

PERFORM calc_percentage

USING

pa_int1

pa_int2

CHANGING

gv_result.

WHEN 'P'.

CALL FUNCTION 'BC400_MOS_POWER'

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result

EXCEPTIONS

power_value_too_high = 1

result_value_too_high = 2

OTHERS = 3.

CASE sy-subrc.

WHEN 0.

* no action needed

WHEN 1.

WRITE 'Max value of power is 4'(mvp).

WHEN 2.

WRITE 'Result value too high'(rvh).

Continúa en la página siguiente

344 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 359: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

WHEN 3.

WRITE 'Unknown error'(uer).

ENDCASE.

ENDCASE.

WRITE: 'Result:'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE: 'No division by zero!'(dbz).

ELSE.

WRITE: 'Invalid operator!'(iop).

ENDIF.

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

*& Form calc_percentage

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

* calculate percentage value

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

* -->PV_ACT actual value

* -->PV_MAX maximum value

* <--CV_RESULT result

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

FORM calc_percentage USING pv_act TYPE i

pv_max TYPE i

CHANGING cv_result TYPE gty_result.

*Simple Error Handling

IF pv_max = 0.

cv_result = 0.

WRITE 'WARNING!!! Error in percentage calculation'(epc).

ELSE.

*Calculate result

cv_result = pv_act / pv_max * 100.

ENDIF.

ENDFORM. " calc_percentage

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 345

Page 360: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

346 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 361: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

305 Ejercicio 12: Creación de un grupo defuncionesDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear grupos de funciones

Ejemplo empresarialSu empresa quiere desarrollar una aplicación en la cual se utilicen varias funcionesen distintos programas.

Le encargan la implementación de las funciones de cálculo. Usted decideprogramarlas como un grupo de funciones con módulos de funciones. Laimplementación de este proyecto se llevará a cabo en este ejercicio y en elejercicio siguiente de esta unidad.

Modelo:

Ninguno

Solución:

BC400_MOS (grupo de funciones)

Tarea:Cree un grupo de funciones.

1. Cree el grupo de funciones ZBC400_##_COMP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 347

Page 362: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Solución 12: Creación de un grupo defuncionesTarea:Cree un grupo de funciones.

1. Cree el grupo de funciones ZBC400_##_COMP.

a) Realice este paso como se describe en el manual de participantes.

348 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 363: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

307 Ejercicio 13: Creación y utilización de unmódulo de funcionesDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear y utilizar un módulo de funciones

Ejemplo empresarialQuiere crear un nuevo módulo de funciones global para calcular valoresporcentuales. Esto está pensado para sustituir la subrutina de un ejercicio anterior.

Modelo:

BC400_MOS_FUNCTION_MODULE_1 (programa)

Solución:

BC400_MOS_FUNCTION_MODULE_2 (programa)BC400_MOS_PERCENTAGE (módulo de funciones)

Tarea 1:En el grupo de funciones definido en el último ejercicio (ZBC400_##_COMP), creeun módulo de funciones con el nombre Z_BC400_##_COMP_PERCENTAGEque se pueda utilizar para calcular valores porcentuales.

1. Cree el módulo de funciones.

2. Actualice la interfaz para el módulo de funciones.

Para ello, cree los parámetros siguientes y tipifíquelos con los elementos dedatos especificados:

Nombre de parámetro Tipo deparámetro

Elemento de datos

iv_max Importar BC400_MAX

iv_act Importar BC400_ACT

ev_percentage Exportar BC400_PERC

3. Cree una excepción que se emita si el resultado de los valores transferidos esuna división entre cero (nombre sugerido: DIVISION_BY_ZERO).

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 349

Page 364: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

4. Implemente el módulo de funciones. Utilice la subrutina del modelo paraorientarse. Si se produce un error, emita la excepción en lugar de emitirun texto de error.

Consejo: Para emitir la excepción, utilice la sentencia ABAPRAISE <exception_name>..

Tarea 2:Copie el programa ZBC400_##_FUNCTION_MODULE o la plantilla de copia alnuevo nombre ZBC400_##_FUNCTION_MODULE_2 y sustituya la llamada desubrutina por una llamada del nuevo módulo de funciones.

1. Copie el programa.

2. Elimine la llamada de subrutina e implemente una llamada para el nuevomódulo de funciones en su lugar.

Consejo: Genere la llamada de módulo de funciones mediante lafunción de arrastrar y soltar en el área de navegación o medianteel pulsador Patrón.

3. Controle la excepción y emita un texto correspondiente si se produce un error.

350 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 365: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Solución 13: Creación y utilización de unmódulo de funcionesTarea 1:En el grupo de funciones definido en el último ejercicio (ZBC400_##_COMP), creeun módulo de funciones con el nombre Z_BC400_##_COMP_PERCENTAGEque se pueda utilizar para calcular valores porcentuales.

1. Cree el módulo de funciones.

a) Realice este paso como se describe en el manual de participantes.

2. Actualice la interfaz para el módulo de funciones.

Para ello, cree los parámetros siguientes y tipifíquelos con los elementos dedatos especificados:

Nombre de parámetro Tipo deparámetro

Elemento de datos

iv_max Importar BC400_MAX

iv_act Importar BC400_ACT

ev_percentage Exportar BC400_PERC

a) Realice este paso como se describe en el manual de participantes.

3. Cree una excepción que se emita si el resultado de los valores transferidos esuna división entre cero (nombre sugerido: DIVISION_BY_ZERO).

a) Realice este paso como se describe en el manual de participantes.

4. Implemente el módulo de funciones. Utilice la subrutina del modelo paraorientarse. Si se produce un error, emita la excepción en lugar de emitirun texto de error.

Consejo: Para emitir la excepción, utilice la sentencia ABAPRAISE <exception_name>..

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 351

Page 366: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Tarea 2:Copie el programa ZBC400_##_FUNCTION_MODULE o la plantilla de copia alnuevo nombre ZBC400_##_FUNCTION_MODULE_2 y sustituya la llamada desubrutina por una llamada del nuevo módulo de funciones.

1. Copie el programa.

a) Realice este paso de la forma habitual.

2. Elimine la llamada de subrutina e implemente una llamada para el nuevomódulo de funciones en su lugar.

Consejo: Genere la llamada de módulo de funciones mediante lafunción de arrastrar y soltar en el área de navegación o medianteel pulsador Patrón.

a) Consulte el extracto del código fuente de la solución modelo.

3. Controle la excepción y emita un texto correspondiente si se produce un error.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto del código fuente del programa:

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

*& Report BC400_MOS_FUNCTION_MODULE_2 *

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

REPORT bc400_mos_function_module_2 .

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

DATA gv_result TYPE p LENGTH 16 DECIMALS 2.

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 OR

pa_op = '%' OR

pa_op = 'P' ).

CASE pa_op.

WHEN '+'.

Continúa en la página siguiente

352 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 367: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

WHEN 'P'.

CALL FUNCTION 'BC400_MOS_POWER'

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result

EXCEPTIONS

power_value_too_high = 1

result_value_too_high = 2

OTHERS = 3.

CASE sy-subrc.

WHEN 0.

* no action needed

WHEN 1.

WRITE 'Max value of power is 4'(mvp).

WHEN 2.

WRITE 'Result value too high'(rvh).

WHEN 3.

WRITE 'Unknown error'(uer).

ENDCASE.

WHEN '%'.

CALL FUNCTION 'BC400_MOS_PERCENTAGE'

EXPORTING

iv_act = pa_int1

iv_max = pa_int2

IMPORTING

ev_percentage = gv_result

EXCEPTIONS

division_by_zero = 1

OTHERS = 2.

IF sy-subrc <> 0.

WRITE 'Error in Function Module'(efm).

ENDIF.

ENDCASE.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 353

Page 368: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

WRITE: 'Result:'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE: 'No division by zero!'(dbz).

ELSE.

WRITE: 'Invalid operator!'(iop).

ENDIF.

Extracto del código fuente del módulo de funciones:

FUNCTION BC400_MOS_PERCENTAGE.

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(IV_ACT) TYPE BC400_ACT

*" REFERENCE(IV_MAX) TYPE BC400_MAX

*" EXPORTING

*" REFERENCE(EV_PERCENTAGE) TYPE BC400_PERC

*" EXCEPTIONS

*" DIVISION_BY_ZERO

*"----------------------------------------------------------------------

*Error handling

IF iv_max = 0.

ev_percentage = 0.

RAISE division_by_zero.

ELSE.

*Calculate result

ev_percentage = iv_act / iv_max * 100.

ENDIF.

ENDFUNCTION.

354 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 369: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con módulos de funciones

Resumen de la lección

Ahora podrá:• Buscar módulos de funciones• Obtener información acerca de la funcionalidad y el uso de módulos de

funciones• Llamar módulos de funciones en su programa• Crear un grupo de funciones• Crear un módulo de funciones• Explicar el rol de los BAPI e identificar sus propiedades especiales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 355

Page 370: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Lección:314

Modularización con métodos de clases globalesDuración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo le presentamos otra técnica de modularización para todos losprogramas: la llamada de métodos de clases globales. De manera similar a losgrupos de funciones y módulos de funciones, primero se busca, se analiza, serealizan test y se utilizan clases y métodos existentes. A continuación, en un pasoadicional crearemos una clase global con un método simple.

Tenga en cuenta que este módulo no está destinado a proporcionar una ampliaintroducción a la programación con ABAP orientada a objetos. Sólo es necesarioque se familiarice con los términos básicos de la programación orientada a objetospara poder utilizar las funciones de las clases globales existentes en sus programas.

El curso BC401 - Objetos ABAP ofrece una introducción sistemática a laprogramación orientada a objetos con objetos ABAP.

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

• Explicar los términos básicos de la programación orientada a objetos• Adquirir información acerca de la función y el uso de clases globales y sus

métodos• Llamar métodos de clases globales en los programas• Crear clases globales• Crear e implementar métodos simples en clases globales

Object-oriented terminology will only be introduced at a level that is absolutelynecessary for using existing global classes.

At this point, it is certainly worth mentioning the follow-up course BC401, whichprovides a complete introduction to object orientation.

Ejemplo empresarialEn su programa necesita una función que puede que ya exista en forma de métodode clase global. Desea implementar este método en el programa.

Si la función todavía no existe o no cumple todos los requisitos, creará su propiométodo y clase global.

356 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 371: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Principios de la programación orientada a objetosAntes de poder utilizar clases y métodos globales, necesitamos conocer algunos delos términos básicos de la programación orientada a objetos.

Clases, atributos y métodos

Gráfico 152: Representación de una clase global

En una de las lecciones anteriores se han presentado los grupos de funcionesque ponen a disposición las unidades de reutilización en forma de módulos defunciones.

En el curso de ampliaciones orientadas a objetos de ABAP, se presentaronlas clases globales que ofrecen funciones de una manera similar en forma demétodos. Igual que los módulos de funciones, los métodos también tienen unainterfaz, conocida como firma, que incluye parámetros para import, para export,parámetros changing y excepciones.

Además de los métodos, las clases también tienen otros componentes. Entre otrascosas, también contienen objetos de datos globales, conocidos como atributos.Del mismo modo que se puede acceder a los objetos de datos globales desdetodos los módulos de funciones del grupo, todos los métodos de una clase puedenacceder a los atributos de esa clase.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 357

Page 372: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Encapsulado de datos, componentes públicos y privados

Gráfico 153: Ejemplo de las opciones de acceso de una clase global

Respecto a los grupos de funciones, sabemos que los objetos de datos quecontienen no son visibles fuera del grupo. Esto se denomina encapsulación dedatos en el grupo de funciones.

También los atributos se encapsulan generalmente en la clase, y por este motivosólo se pueden leer o modificarse con métodos de la misma clase.

Al contrario que los módulos de funciones, las clases también permiten hacer quealgunos atributos específicos sean visibles para los usuarios de la clase. Por estemotivo, se distingue entre atributos públicos y privados.

Esta distinción se puede aplicar a los métodos además de a los atributos. Mientrasque todos los módulos de funciones se pueden llamar desde fuera del grupo defunciones, sólo los métodos públicos se encuentran disponibles fuera de la clase.Únicamente otros métodos de la misma clase pueden llamar métodos privados;por este motivo, se parecen más en este aspecto a las subrutinas (para rutinas) deun grupo de funciones.

358 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 373: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Instanciación múltiple de clases

Gráfico 154: Clases y objetos

La mayor diferencia entre clases globales y grupos de funciones es que un grupode funciones con sus objetos de datos globales sólo puede cargarse una vez en elcontexto de programa para cada programa principal, mientras que una clase globalse puede cargar tantas veces como lo desee. Esto se conoce como instanciaciónmúltiple de la clase. En la práctica, significa que los valores de los objetos dedatos globales de un grupo de funciones son los mismos para todas las llamadas demódulos de funciones. Por el contrario, una clase puede tener varias instancias(también conocidas como objetos), cada una de las cuales se almacena porseparado en el contexto del programa principal. Por este motivo, cada instanciapuede tener distintos valores de atributo. Por consecuencia, un método observadistintos valores en los atributos, dependiendo de la instancia para la cual se hallamado.

Debe generar una instancia de clase explícitamente en el código fuente ABAPmediante la sentencia CREATE OBJECT .

Componentes de instancia y componentes estáticosLos atributos que pueden tener un valor distinto para cada instancia se conocencomo atributos de instancia, para poder distinguirlos de los atributos estáticos(o atributos de clase). Los atributos estáticos sólo existen una vez para cadacontexto de programa, independientemente del número de instancias de claseque se generen durante la ejecución del programa. Si los métodos de instancia

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 359

Page 374: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

acceden a un atributo estático, todas las instancias visualizan el mismo valor. Y lomás importante, un método de instancia puede modificar el valor y el resto de lasinstancias visualizarán el nuevo valor.

También con los métodos se distingue entre métodos estáticos y métodos deinstancia. La diferencia principal es que sólo se puede llamar un método deinstancia si previamente se ha generado una instancia de clase. Por el contrario,los métodos estáticos se pueden llamar sin instanciación previa de la clase.

Consejo: Este curso se centra principalmente en los métodos estáticos. Elcurso 401 - Objetos ABAP ofrece una introducción sistemática y completadel trabajo con métodos de instancia.

Uso de métodos de clases globalesComo en el caso de otros objetos de Repository, la visualización y el procesamientode clases globales se incorpora en el Object Navigator. Como siempre, dispone devarias opciones para abrir una clase global: En el área de navegación, por ejemplo,seleccione Clase/Interfaz e indique el nombre de la clase en el campo de entradadirectamente debajo del nombre. Por supuesto, también puede visualizar primerola lista de objetos de un paquete y, a continuación, hacer doble clic en el nombrede la clase requerida en el subnodo Biblioteca de clases → Clases.

Atributos de clases globales

Gráfico 155: Definición de atributos

360 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 375: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Seleccione la ficha Atributos para abrir la lista de las definiciones de atributos dela clase. Si únicamente desea utilizar la clase, sólo son de su interés los atributosidentificados como “públicos”. Puede hacerles referencia directamente fuera dela clase.

Métodos y firma

Gráfico 156: Definición de métodos

Seleccione la fichaMétodos para abrir la lista de todas las definiciones de métodosde la clase. También con los métodos, sólo serán de su interés las entradasidentificadas como “públicas”. Sólo estos métodos se pueden llamar externamente.El resto de los métodos se utilizan para la modularización dentro de la clase global.

Si un método está identificado como “método estático”, se puede llamardirectamente sin necesidad de generar primero una instancia de la clase (véase másadelante). Por otro lado, con los “métodos de instancia”, debe generar primero unainstancia y, a continuación, llamar el método específicamente para esta instancia.En circunstancias normales, el método de instancia accederá a los atributos deinstancia que contienen diferentes valores para las distintas instancias.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 361

Page 376: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 157: Parámetros de método

Existe una ventana independiente para visualizar los parámetros de un método.Para acceder a ella, sitúe el cursor en el método requerido y haga clic en elpulsador Parámetro desde la lista de métodos. Al contrario que con los módulosde función, no existe una lista independiente para los parámetros para export, paraimport y los parámetros changing. En su lugar, el tipo de parámetro se indica enla columna Tipo.

362 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 377: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Gráfico 158: Excepciones de método

También debe navegar a una ventana de visualización independiente paravisualizar las excepciones de un método. Para acceder a ella, sitúe el cursor en elmétodo requerido y haga clic en el pulsador Excepciones desde la lista de métodos.

Con el Basis release 6.10, se ha introducido un nuevo concepto de excepcionesen ABAP, el denominado excepciones basadas en clases. El control de estasexcepciones es muy distinto del control de las excepciones clásicas de los módulosde funciones. Un método puede emitir o sólo excepciones basadas en clase nuevaso sólo excepciones clásicas. No es posible mezclar ambos conceptos. Una casillade selección le muestra qué concepto de excepción utiliza el método respectivo.

Mientras el método de excepción clásico le permite seleccionar cualquieridentificador de excepción, con el nuevo concepto de excepción debe especificarlos nombres de clases especiales, las llamadas clases de excepción.

Consejo: El concepto de excepción basada en clases también se encuentradisponible para módulos de funciones.

Documentación y testCon la documentación de clase global, se distingue entre la documentación declases en conjunto y la documentación de componentes individuales.

Puede acceder a la documentación de clase seleccionando el pulsadorDocumentación de clase. Para consultar la documentación de un método o atributoindividuales, navegue hasta la lista correspondiente, seleccione el componenterequerido con el cursor y, a continuación, presione el pulsador Documentación.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 363

Page 378: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 159: El entorno de test del generador de clases

Puede realizar test de clases globales activas:

El almacenamiento temporal se asigna a los componentes de la clase. Paralos componentes estáticos se asigna inmediatamente, mientras que para loscomponentes de instancia se asigna después de seleccionar el pulsador Instancia.

El sistema enumera únicamente los componentes públicos. Es posible realizar testde los métodos mediante el icono Ejecutar método.

Si desea realizar un test de un método estático no es necesario que genere unainstancia. Debería ser posible ejecutar el método estático inmediatamente.

Si existen parámetros para import, aparecerán en la pantalla después de elegirEjecutar.

Después de haber suministrado valores a los parámetros, puede realizar un test delmétodo y se mostrará el resultado del parámetro para export.

Llamado de métodos estáticos

You should definitely demonstrate the following editing options.

Show both possibilities: Drag and drop and the Pattern button.

364 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 379: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Gráfico 160: Llamadas de método mediante la función de arrastrar y soltar

Los métodos se llaman mediante la sentencia ABAP CALL METHOD. Despuésde esto, se especifica el método. Aquí es necesario distinguir entre un método deinstancia y un método estático. Con los métodos estáticos, esta especificacióncomprende el nombre de la clase y el nombre del método, separados por el llamadoselector de componente estático “=>” (flecha de dos puntas).

Entonces, los parámetros se transfieren de una forma muy similar a la llamadade módulo de funciones tanto en un bloque EXPORTING como un bloqueIMPORTING.

Igual que con los módulos de funciones, tiene varias opciones para generar lallamada de método. Le recomendamos utilizar estas opciones para evitar erroresortográficos.

En el área de navegación, seleccione un nombre de método y arrástrelo al área detratamiento manteniendo pulsado el botón izquierdo del ratón. En la sentencia quese genera de este modo, sólo necesita agregar el parámetro real.

De manera alternativa, también puede pulsar el botón Patrón. En Patrón deObjetos ABAP, encontrará la opción Llamar método. Indique aquí la clase enClase/Interfaz y el nombre del método en Método. Con los métodos estáticos, noes necesario rellenar el campo Instancia.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 365

Page 380: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Tratamiento de excepcionesLos métodos pueden emitir o bien excepciones clásicas o bien excepciones másmodernas basadas en clase. Las excepciones clásicas se controlan del mismomodo que los módulos de funciones.

Tratar excepciones clásicas

cl_bc400_compute=>get_power

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result

EXCEPTIONS

POWER_VALUE_TOO_HIGH = 1

RESULT_VALUE_TOO_HIGH = 2.

CASE sy-subrc.

WHEN 0.

WRITE gv_result.

WHEN 1.

WRITE 'Max Value for Power is 4'.

WHEN 2.

WRITE 'Result value was too high'.

ENDCASE.

En el bloque EXCEPTIONS de la llamada de método, se asigna un código deretorno a la excepción. Cuando el método termina con esta excepción clásica, estecódigo de retorno se sitúa en el campo de sistema sy-subrc. Si se realiza unaconsulta de sy-subrc, el programa de llamada puede reaccionar a la excepción.

En comparación, el control de las excepciones basadas en clase es mucho máscompleja:

Tratar excepciones basadas en clases

TRY.

cl_bc400_compute=>get_power

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result.

WRITE gv_result.

366 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 381: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

CATCH cx_bc400_power_too_high .

WRITE 'Max Value for Power is 4'.

CATCH cx_bc400_result_too_high .

WRITE 'Result value was too high'.

ENDTRY.

La llamada se debe ubicar entre las sentencias TRY. y ENDTRY. (consultemás arriba). Así, la excepción real se controla en un bloque de procesamientoque empieza por la sentencia CATCH <exception class>., donde<exception class> representa la clase de excepción que se tratará. Si la excepcióncorrespondiente se emite en algún punto del bloque TRY-ENDTRY, se termina elprocesamiento y el sistema bifurca directamente al bloque CATCH relevante.

Gráfico 161: Control de excepciones con clases de excepción

Si genera las llamadas de método mediante la función arrastrar y soltar o mediantePatrón, también se generan las sentencias para el control de las excepcionesbasadas en clases. Así, sólo necesita transformar estas sentencias en un comentarioe implementar los bloques CATCH.

Nota: Las excepciones basadas en clases ofrecen una gran variedad deopciones distintas y, por este motivo, son más potentes y versátiles que lasexcepciones clásicas. En este curso, nos limitaremos al “control mínimo”de excepciones basadas en clases. Los otros aspectos se discutirán en elcurso BC401 - Objetos ABAP, por ejemplo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 367

Page 382: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

This is a good place to ask the participants to do the exercise on using staticmethods of global classes.

Generar instancias y llamar métodos de instancia

Gráfico 162: Creación de objetos y llamada de métodos

Como las instancias no tienen nombres, debe definir variables de referenciapara poder generar las clases de instancias y dirigirse a ellas. Existen punterosque pueden dirigirse a las instancias correspondientes. Cada variable de referenciatiene un nombre que se puede utilizar para dirigirse a la instancia correspondiente.

Las variables de referencia se definen mediante:

DATA reference_name TYPEREF TO class_name.

Al iniciar el programa, una variable de referencia todavía tiene su valor inicial (“no señala a ninguna instancia ”). Una vez utilizada para crear una instancia, ya notiene el valor inicial y señala a esa instancia.

Puede utilizar la sentencia

CREATE OBJECT reference_name.

368 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 383: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

para generar una instancia de la clase que se ha especificado en la definición delas variables de referencia. Después de ello, la variable de referencia señala a lainstancia recién creada.

Cuando utilice CREATE OBJECT, es posible que deba suministrar datos a losparámetros para import del método especial CONSTRUCTOR . Este métodoespecial se ejecuta automáticamente directamente después de la creación de lainstancia. Con sus parámetros para import, actualiza los atributos correspondientesde la nueva instancia.

Los métodos de una instancia se llaman mediante la sentencia

CALL METHOD reference_name->method_name.

A diferencia de cuando llama un módulo de funciones, aquí no es suficiente conespecificar sólo el nombre de método. Debe especificar también la instanciarelevante, porque es posible que el programa tenga varias instancias de esa clase.

Show the global class CL_BC400_COMPUTE_INST and describe its use inprogram BC400_MOD_GLOBAL_CLASS_INST here. If you have time, andthe participants have understood the subject matter well, you can of coursedemonstrate how it is used too.

Crear clases globales y métodos estáticosEn esta sección, basándose en un ejemplo sencillo, aprenderá a crear una claseglobal con un método para encapsular una función para su reutilización. Aquí noslimitaremos a crear un método estático.

Point out that the advantages of using methods instead of function modules canonly really be seen when you use specific, object-oriented techniques too, suchas multiple instantiation, for example. Due to time constraints, we will limitourselves to creating static methods.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 369

Page 384: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Crear clases globales

Gráfico 163: Creación de clases globales en el Object Navigator

Para crear una clase global, abra el menú contextual del paquete en el área denavegación y seleccione Crear → Biblioteca de clases → Clase. Indique elnombre de la clase, una breve descripción y otras propiedades en la ventana dediálogo que aparece. Después de guardar sus entradas, asígnela a una correcciónde la forma habitual.

Como alternativa, en el área de navegación puede seleccionar Clase / Interfaz dela lista desplegable, indicar el nombre de la nueva clase en el campo de debajo delnombre y seleccionar Visualizar. Confirme que desea crear esta nueva clase.

This is a good place to ask the participants to do the exercise on creating a globalclass.

Crear un método estáticoPara crear el método estático, sólo necesita introducir el nombre del mismo en lalista de métodos. Puede actualizar la visibilidad y el tipo de método (estático o deinstancia) mediante la ayuda para entradas correspondiente.

370 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 385: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Para crear un parámetro para un método, bifurque de la forma habitual hacia lalista de parámetros del método correspondiente. Cambie al modo de modificacióne indique el nombre del parámetro en la lista. Utilice la ayuda para entradas paraactualizar el tipo de parámetro (para import, para export, etc.) y especifique untipo asociado.

Gráfico 164: Llamada del editor del código fuente

Para implementar el código fuente de un método, seleccione el método en la listade métodos y el pulsador Código fuente. Implemente el código fuente entre lassentencias METHOD <method_name>. y ENDMETHOD. de la forma habitual.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 371

Page 386: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 165: Visualización de la firma en el editor de código fuente

Puede visualizar la firma del método mientras trata el código fuente. Para ello,seleccione el pulsador Firma (véase gráfico).

This is a good place to ask the participants to do the exercise on creating andusing a static method.

372 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 387: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

331 Ejercicio 14: Uso de métodos estáticosglobalesDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Llamar un método estático de una clase global

Ejemplo empresarialDesea utilizar un método estático de una clase global para calcular potencias. Esteejercicio está pensado para sustituir la llamada de módulo de funciones de unejercicio anterior.

Modelo:

BC400_MOS_FUNCTION_MODULE_2 (programa)

Solución:

BC400_MOS_GLOBAL_CLASS_1 (programa)

Tarea 1:Abra la clase global CL_BC400_COMPUTE y familiarícese con la interfaz y elalcance de las funciones del método o métodos que contenga.

1. Analice la interfaz del método get_power y lea la documentación acercade la clase.

2. Realice un test del método estático get_power.

Tarea 2:Haga una copia del programa ZBC400_##_FUNCTION_MODULE_2 o de laplantilla de copia con el nuevo nombre ZBC400_##_GLOBAL_CLASS_1 ysustituya la llamada de módulo de funciones al cálculo de potencias por unallamada al método get_power.

1. Copie su programa o el modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 373

Page 388: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

2. Elimine la llamada del módulo de funciones BC400_MOS_POWER eimplemente una llamada del método cl_bc400_compute=>get_power enel mismo lugar.

Consejo: Genere la llamada de método mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

3. Controle las excepciones y emita un texto relevante si se produce un error.

374 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 389: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Solución 14: Uso de métodos estáticosglobalesTarea 1:Abra la clase global CL_BC400_COMPUTE y familiarícese con la interfaz y elalcance de las funciones del método o métodos que contenga.

1. Analice la interfaz del método get_power y lea la documentación acercade la clase.

a) Realice este paso tal como se describe en los materiales del curso.

2. Realice un test del método estático get_power.

a) Realice este paso tal como se describe en los materiales del curso.

Tarea 2:Haga una copia del programa ZBC400_##_FUNCTION_MODULE_2 o de laplantilla de copia con el nuevo nombre ZBC400_##_GLOBAL_CLASS_1 ysustituya la llamada de módulo de funciones al cálculo de potencias por unallamada al método get_power.

1. Copie su programa o el modelo.

a) Realice este paso de la forma habitual.

2. Elimine la llamada del módulo de funciones BC400_MOS_POWER eimplemente una llamada del método cl_bc400_compute=>get_power enel mismo lugar.

Consejo: Genere la llamada de método mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

a) Consulte el extracto del código fuente de la solución modelo.

3. Controle las excepciones y emita un texto relevante si se produce un error.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto del código fuente:

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

*& Report BC400_MOS_GLOBAL_CLASS_1 *

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

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 375

Page 390: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

REPORT bc400_mos_global_class_1 .

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

DATA gv_result TYPE p LENGTH 16 DECIMALS 2.

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 OR

pa_op = '%' OR

pa_op = 'P' ).

CASE pa_op.

WHEN '+'.

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

WHEN 'P'.

TRY.

CALL METHOD cl_bc400_compute=>get_power

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result.

CATCH cx_bc400_power_too_high .

WRITE 'Max value of Power is 4'(mvp).

CATCH cx_bc400_result_too_high .

WRITE 'Result value was too high'(rvh).

ENDTRY.

WHEN '%'.

CALL FUNCTION 'BC400_MOS_PERCENTAGE'

EXPORTING

iv_act = pa_int1

iv_max = pa_int2

Continúa en la página siguiente

376 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 391: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

IMPORTING

ev_percentage = gv_result

EXCEPTIONS

division_by_zero = 1

OTHERS = 2.

IF sy-subrc <> 0.

WRITE 'Error in Function Module'(efm).

ENDIF.

ENDCASE.

WRITE: 'Result:'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE: 'No division by zero!'(dbz).

ELSE.

WRITE: 'Invalid operator!'(iop).

ENDIF.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 377

Page 392: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

378 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 393: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

337 Ejercicio 15: Creación de clases globalesDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear una clase global

Ejemplo empresarialSu empresa quiere desarrollar una aplicación en la cual se utilicen varias funcionesen distintos programas.

Le encargan la implementación de las funciones de cálculo. Usted decideprogramarlas como una clase global con métodos estáticos. La implementaciónde este proyecto se llevará a cabo en este ejercicio y en el ejercicio siguiente deesta unidad.

Modelo:

Ninguno

Solución:

CL_BC400_MOS_COMPUTE (clase global)

Tarea:Cree una clase global.

1. Cree la clase global ZCL_##_COMPUTE y actívela.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 379

Page 394: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Solución 15: Creación de clases globalesTarea:Cree una clase global.

1. Cree la clase global ZCL_##_COMPUTE y actívela.

a) Abra el Object Navigator (transacción SE80).

b) En el área de navegación, seleccione Clase / Interfaz de la listadesplegable e indique el nombre de la nueva clase en el campo de abajo.

c) Seleccione Visualizar.

d) En la ventana de diálogo modal que aparece, confirme que desea crearuna nueva clase.

e) A continuación, escriba un texto breve que explique la función de estaclase en el campo Descripción.

f) No realice más entradas y confirme la descripción seleccionandoGuardar.

g) En la ventana de diálogo que aparece, asigne la clase al paquete y a lasolicitud de Workbench que le ha asignado el instructor de la formahabitual.

h) Active la clase global mediante el pulsador .

380 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 395: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

339 Ejercicio 16: Creación y utilización demétodos estáticos globalesDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear un método estático global

Ejemplo empresarialDesea utilizar métodos estáticos globales para calcular potencias y porcentajes.Estos métodos están pensados para sustituir las llamadas de módulo de funcionesde un ejercicio anterior. Para ello, es necesario crear un nuevo método de cálculode porcentajes.

Modelo:

BC400_MOS_GLOBAL_CLASS_1 (programa)

Solución:

BC400_MOS_GLOBAL_CLASS_2 (programa)CL_BC400_MOS_COMPUTE (clase global)

Tarea 1:Cree un método estático para calcular potencias en la clase global que ha definidoen el ejercicio anterior. Utilice el módulo de funciones que hasta ahora ha servidocomo modelo de copia para orientarse.

1. Cree el método estático GET_PERCENTAGE en la claseZCL_##_COMPUTE.

2. Cree parámetros para el método. Se deben transferir dos parámetros almétodo para el cálculo y se devuelve un parámetro como resultado. Utiliceel módulo de funciones que se va a sustituir para orientarse.

3. Implemente el código fuente del método estático GET_PERCENTAGE.Utilice el módulo de funciones que se va a sustituir para orientarse tambiénaquí.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 381

Page 396: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Tarea 2:Haga una copia del programa ZBC400_##_GLOBAL_CLASS_1 o de la plantillade copia con el nuevo nombre ZBC400_##_GLOBAL_CLASS_2, y sustituyala llamada de módulo de funciones al cálculo de porcentaje por una llamada alnuevo método.

1. Copie el programa.

2. Elimine la llamada del módulo de funciones e implemente una llamada parael nuevo método en el mismo lugar.

Consejo: Genere la llamada de método mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

382 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 397: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Solución 16: Creación y utilización demétodos estáticos globalesTarea 1:Cree un método estático para calcular potencias en la clase global que ha definidoen el ejercicio anterior. Utilice el módulo de funciones que hasta ahora ha servidocomo modelo de copia para orientarse.

1. Cree el método estático GET_PERCENTAGE en la claseZCL_##_COMPUTE.

a) Visualice la clase global en modo de modificación.

b) Pase a la etiqueta Métodos e indique el nombre del nuevo método en lacolumna Métodos.

c) En la columna Tipo, seleccione Método estático de la ayuda paraentradas.

d) En la columna Visibilidad, seleccione Pública de la ayuda paraentradas.

e) Escriba un texto explicativo en la columna Descripción.

2. Cree parámetros para el método. Se deben transferir dos parámetros almétodo para el cálculo y se devuelve un parámetro como resultado. Utiliceel módulo de funciones que se va a sustituir para orientarse.

a) Seleccione el método GET_PERCENTAGE con un clic del ratón.

b) Seleccione Parámetros.

c) Defina los siguientes parámetros:

Nombre de parámetro Tipo deparámetro

Elemento de datos

iv_act Importar BC400_ACT

iv_max Importar BC400_MAX

ev_percentage Exportar BC400_PERC

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 383

Page 398: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

3. Implemente el código fuente del método estático GET_PERCENTAGE.Utilice el módulo de funciones que se va a sustituir para orientarse tambiénaquí.

a) Cambie a la lista de métodos y seleccione el método haciendo clic en él.

b) Seleccione Código fuente.

c) Implemente la función como se especifica en la solución modelo parael método GET_PERCENTAGE.

Tarea 2:Haga una copia del programa ZBC400_##_GLOBAL_CLASS_1 o de la plantillade copia con el nuevo nombre ZBC400_##_GLOBAL_CLASS_2, y sustituyala llamada de módulo de funciones al cálculo de porcentaje por una llamada alnuevo método.

1. Copie el programa.

a) Realice este paso de la forma habitual.

2. Elimine la llamada del módulo de funciones e implemente una llamada parael nuevo método en el mismo lugar.

Consejo: Genere la llamada de método mediante la función dearrastrar y soltar en el área de navegación o mediante el pulsadorPatrón.

a) Consulte el extracto del código fuente de la solución modelo.

ResultadoExtracto del código fuente:

REPORT BC400_MOS_GLOBAL_CLASS_1.

PARAMETERS:

pa_int1 TYPE i,

pa_op TYPE c LENGTH 1,

pa_int2 TYPE i.

DATA gv_result TYPE p LENGTH 16 DECIMALS 2.

IF ( pa_op = '+' OR

pa_op = '-' OR

pa_op = '*' OR

pa_op = '/' AND pa_int2 <> 0 OR

Continúa en la página siguiente

384 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 399: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

pa_op = '%' OR

pa_op = 'P' ).

CASE pa_op.

WHEN '+'.

gv_result = pa_int1 + pa_int2.

WHEN '-'.

gv_result = pa_int1 - pa_int2.

WHEN '*'.

gv_result = pa_int1 * pa_int2.

WHEN '/'.

gv_result = pa_int1 / pa_int2.

WHEN 'P'.

TRY.

CALL METHOD cl_bc400_compute=>get_power

EXPORTING

iv_base = pa_int1

iv_power = pa_int2

IMPORTING

ev_result = gv_result.

CATCH cx_bc400_power_too_high .

WRITE 'Max value of Power is 4'(mvp).

CATCH cx_bc400_result_too_high .

WRITE 'Result value was too high'(rvh).

ENDTRY.

WHEN '%'.

CALL METHOD cl_bc400_mos_compute=>get_percentage

EXPORTING

iv_act = pa_int1

iv_max = pa_int2

IMPORTING

ev_percentage = gv_result.

ENDCASE.

WRITE: 'Result:'(res), gv_result.

ELSEIF pa_op = '/' AND pa_int2 = 0.

WRITE: 'No division by zero!'(dbz).

ELSE.

WRITE: 'Invalid operator!'(iop).

ENDIF.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 385

Page 400: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Extracto del código fuente del método:

METHOD GET_PERCENTAGE.

*Simple error handling

IF iv_max = 0.

ev_percentage = 0.

ELSE.

*Calculate result

ev_percentage = iv_occ / iv_max * 100.

ENDIF.

ENDMETHOD.

386 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 401: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases globales

Resumen de la lección

Ahora podrá:• Explicar los términos básicos de la programación orientada a objetos• Adquirir información acerca de la función y el uso de clases globales y sus

métodos• Llamar métodos de clases globales en los programas• Crear clases globales• Crear e implementar métodos simples en clases globales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 387

Page 402: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Lección:346

Modularización con métodos de clases locales(presentación preliminar)Duración de la lección: 15 Minutos

Resumen de la lecciónEn este módulo se ofrece una breve presentación preliminar sobre cómo las claseslocales permiten utilizar técnicas de programación orientadas a objetos para lamodularización interna de programas.

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

• Describir cómo se definen, se implementan y se utilizan las clases locales

The topic of local classes should merely be outlined in brief in this lesson. It playsno further role in BC400. Local classes are dealt with comprehensively in thecourse BC401. If the participants have any more detailed questions, you shoulddraw their attention to this course and the online documentation.

For the demonstration, use the executable program BC400_MOD_LO-CAL_CLASS. Use this example to discuss the syntax of the class definition andimplementation, and execute the program in the Debugger. If the participantshave shown a good grasp of the subject and sufficient time remains, you couldpre-program a corresponding program.

Ejemplo empresarialDesea encapsular una función en un método estático de una clase local.

Definición y utilización de clases localesEn los módulos anteriores, ha aprendido a definir y a utilizar clases locales.En este módulo se muestra la definición y la utilización de clases locales. Lasclases locales se llaman así porque sólo se pueden utilizar localmente dentro delprograma en el cual se definen.

Consejo: Este tema se trata aquí de forma superficial, puesto que no tienerelevancia para el resto del curso. Para más información sobre la definiciónde las clases locales, consulte el curso “BC401 – Objetos ABAP”.

388 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 403: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases locales (presentación preliminar)

La diferencia principal entre las clases globales y las clases locales se encuentraen la manera en la que se definen: Mientras las clases globales se actualizancon una herramienta especial (generador de clases), las clases locales se creandirectamente en el código fuente del programa principal respectivo.

Gráfico 166: Definición de una clase local

El gráfico le muestra cómo crear una clase local en el código fuente del programa.Se distingue entre dos bloques: La definición y la implementación de la clase.La descripción de los atributos y las firmas de los métodos están situadas en elbloque de definiciones, mientras que el bloque de implementación sólo contiene elcódigo fuente de los métodos.

Las sentencias CLASS y ENDCLASS son sentencias declaradas únicamente enel programa. De la misma manera que la sentencia TYPES define tipos de datoslocales, la sentencia CLASS... ENDCLASS define tipos de objeto locales.

El bloque de definiciones está dividido en varias secciones, en las cuales se definenlos componentes públicos y privados ( PUBLIC SECTION. o PRIVATESECTION. ).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 389

Page 404: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Gráfico 167: Sintaxis para métodos estáticos

El gráfico muestra una representación esquemática de la definición y laimplementación de un método estático público. El método es público porque ladefinición está situada en la sección PUBLIC SECTION. de la clase. Paradefinir un método de instancia en contraposición a un método estático, se deberíautilizar la sentencia METHODS en lugar de CLASS-METHODS.

Los métodos tienen una firma (parámetros y excepciones de interfaz) que lespermite recibir valores cuando se les llama y devolver valores al programade llamada. Los métodos pueden tener cualquier número de parámetrosIMPORTING, EXPORTING y CHANGING. Todos los parámetros se puedentransferir como valores o como referencias.

Nota: Un valor de retorno de método se puede definir mediante elparámetro RETURNING. Siempre debe transferirse como valor. En estecaso, no podrá definir parámetros EXPORTING ni CHANGING. Poreste motivo, el parámetro RETURNING se puede utilizar para definirmétodos funcionales. Esta opción se explica con más detalle en el curso“BC401 – Objetos ABAP”.

Todos los parámetros de entrada (parámetros IMPORTING y CHANGING)se pueden definir como parámetros opcionales en la declaración, mediante lossuplementos OPTIONAL o DEFAULT. No es necesario transferir estos parámetrosal llamar el objeto. El suplemento DEFAULT permite especificar un valor inicial.

390 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 405: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases locales (presentación preliminar)

Gráfico 168: Implementación y uso de un método estático

El ejemplo de sintaxis muestra cómo se define una clase local con un métodoestático (sección superior derecha) y cómo se implementa el método (seccióninferior derecha).

En la sección de la izquierda se muestra la llamada del método estático desde elprograma principal. Como verá, la llamada es idéntica a una llamada de métodoestático de una clase global.

Puede definir la clase local directamente en el bloque de definiciones del programaprincipal o en un include.

Consejo: La clase local se debe definir en la secuencia antes de la llamada.Aquí la clase local tiene un comportamiento distinto a una subrutina. Lasubrutina también se puede definir después de la llamada.

At this point, you can also discuss the differences between local and global classeswith regard to integration in SE80 (for example, the drag and drop method cannotbe used ... ).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 391

Page 406: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

Discusión con moderadorExplain the difference between global and local classes.

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

See list of objectives

392 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 407: 119167612 taw10-01-es

TAW10_1 Lección: Modularización con métodos de clases locales (presentación preliminar)

Resumen de la lección

Ahora podrá:• Describir cómo se definen, se implementan y se utilizan las clases locales

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 393

Page 408: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Nombrar las técnicas de modularización básicas• Definir subrutinas• Llamar subrutinas• Analizar la ejecución de subrutinas en modo debugging• Buscar módulos de funciones• Obtener información acerca de la funcionalidad y el uso de módulos de

funciones• Llamar módulos de funciones en su programa• Crear un grupo de funciones• Crear un módulo de funciones• Explicar el rol de los BAPI e identificar sus propiedades especiales• Explicar los términos básicos de la programación orientada a objetos• Adquirir información acerca de la función y el uso de clases globales y sus

métodos• Llamar métodos de clases globales en los programas• Crear clases globales• Crear e implementar métodos simples en clases globales• Describir cómo se definen, se implementan y se utilizan las clases locales

Más información... Consulte la documentación online de cada herramienta.

394 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 409: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

353Examine sus conocimientos

1. ¿Para qué se debe utilizar la técnica de subrutina?

Seleccione la(s) respuesta(s) correcta(s).□ A Para mejorar el rendimiento□ B Para obtener una mejor visión general de la disposición del

programa□ C Para encapsular una función que se necesita varias veces dentro

de un programa para uso múltiple□ D Para implementar el mantenimiento centralizado de una función

dentro de un programa□ E Para hacer que una función esté disponible en todo el sistema

2. ¿Por qué se deben transferir parámetros a subrutinas?Seleccione la(s) respuesta(s) correcta(s).□ A Principalmente, para transferir entradas de usuario a la subrutina□ B Para mejorar el rendimiento□ C Para obtener más flexibilidad en la subrutina□ D Para obtener más estabilidad en la subrutina

3. ¿Qué sentencia ABAP se utiliza para definir o llamar una subrutina?

4. ¿Cuáles de las siguientes afirmaciones acerca de subrutinas son correctas?Seleccione la(s) respuesta(s) correcta(s).□ A Al llamar una rutina, es necesario transferir variables o

literales como parámetros reales a los parámetros formalescorrespondientes.

□ B Al llamar una rutina, es importante controlar los nombres igualesde parámetros formales y parámetros reales.

□ C El método de transferencia de un parámetro formal se estableceen la definición de la subrutina.

□ D Existen dos métodos de transferencia distintos para los parámetrosformales.

□ E Los parámetros USING sin el suplemento VALUE son parámetrosde "llamar por referencia".

□ F Las tablas internas de gran volumen se deben transferir a lasubrutina mediante un parámetro "llamar por valor".

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 395

Page 410: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

5. ¿Qué es un módulo de funciones?

6. ¿Qué sentencia se utiliza para llamar una subrutina?

7. ¿Cuáles de las siguientes afirmaciones acerca de módulos de funciones soncorrectas?Seleccione la(s) respuesta(s) correcta(s).□ A Al llamar un módulo de funciones, todos los parámetros para

import, para export y los parámetros CHANGING se debenrellenar con datos.

□ B Al llamar un módulo de funciones, siempre se deben interceptar ycontrolar todas las excepciones. En caso contrario, se produce unerror de tiempo de ejecución si el módulo de funciones emite unaexcepción no corregida.

□ C Al llamar un módulo de funciones, los parámetros IMPORT selistan con el suplemento IMPORTING y los parámetros EXPORTcon el suplemento EXPORTING.

□ D Al llamar un módulo de funciones, los parámetros IMPORT selistan con el suplemento EXPORTING y los parámetros EXPORTcon el suplemento IMPORTING.

396 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 411: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

355Respuestas

1. ¿Para qué se debe utilizar la técnica de subrutina?

Respuesta: B, C, D

Una función suministrada para su uso en todo el sistema no se debeimplementar en forma de subrutina de programa local, sino en forma demódulo de funciones, puesto que el módulo de funciones dispone de unafunción de búsqueda.

2. ¿Por qué se deben transferir parámetros a subrutinas?

Respuesta: C

3. ¿Qué sentencia ABAP se utiliza para definir o llamar una subrutina?

Respuesta: Definición: FORM ... ENDFORM.

Llamada: PERFORM

4. ¿Cuáles de las siguientes afirmaciones acerca de subrutinas son correctas?

Respuesta: A, C, E

5. ¿Qué es un módulo de funciones?

Respuesta: Una función que se almacena centralmente en el sistema SAP,de manera que todos los programas del sistema pueden utilizarla.

6. ¿Qué sentencia se utiliza para llamar una subrutina?

Respuesta: CALL FUNCTION

7. ¿Cuáles de las siguientes afirmaciones acerca de módulos de funciones soncorrectas?

Respuesta: B, D

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 397

Page 412: 119167612 taw10-01-es

Capítulo 8: Modularización TAW10_1

398 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 413: 119167612 taw10-01-es

Capítulo 9357 Objetos de datos complejos

See introductory instructor’s note in the lesson.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Definir objetos de datos estructurados (variables de estructura)• Utilizar sentencias ABAP básicas para objetos de datos estructurados• Analizar objetos de datos estructurados en modo debugging• Definir tablas internas• Utilizar sentencias ABAP básicas con tablas internas• Analizar tablas internas en modo debugging

Contenido del capítuloLección: Trabajo con estructuras ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .400

Ejercicio 17: Trabajo con estructuras ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .407Lección: Uso de tablas internas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .414

Ejercicio 18: Uso de tablas internas ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .433

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 399

Page 414: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Lección:358

Trabajo con estructurasDuración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo seguiremos con la definición de objetos de datos estructurados(variables de estructura) y su análisis mediante el ABAP Debugger. Tambiénaprenderá a utilizar sentencias ABAP básicas para objetos de datos estructurados.

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

• Definir objetos de datos estructurados (variables de estructura)• Utilizar sentencias ABAP básicas para objetos de datos estructurados• Analizar objetos de datos estructurados en modo debugging

Structure variables in the program are simply “records” in other programminglanguages. The advantage of ABAP is that you can use global structure types(dictionary structures) to define uniform structure variables in different programs.This should be emphasized as a strength of the ABAP language.

Ejemplo empresarialSe dispone a procesar sus primeras estructuras de datos propias y a buscar erroressemánticos en los programas mediante el ABAP Debugger.

400 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 415: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

Trabajo con estructuras

Gráfico 169: Definición de estructuras con tipos globales

En ABAP, puede definir objetos de datos estructurados (llamados variables deestructura o simplemente estructuras). Esto permite combinar valores que vanjuntos de forma lógica en un objeto de datos. Las estructuras se pueden anidar.Esto significa que los componentes pueden estar formados por varias estructuraso incluso por tablas internas.

Las variables de estructura se definen en el programa del mismo modo que losobjetos de datos elementales con la sentencia DATA. Al fijar los tipos, puedeconsultar

• una estructura en el Dictionary ABAP (tipo de estructura global) o• un tipo de estructura declarado de modo local en el programa

Consejo: En el contexto de modelación de datos y acceso a la base dedatos, posteriormente le presentaremos otros objetos del Dictionary ABAPque se pueden utilizar como tipos de estructuras globales al tipificarestructuras. Estos objetos son la “tabla transparente” y la “vista de base dedatos”.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 401

Page 416: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Limit your demos to local structure types and Dictionary structures. It is importantthat the participants are first introduced to transparent tables and database views inthe relevant unit, initially as descriptions of database objects. Emphasis should notbe placed on their use as data types. The reason for this is the aim of separatingdatabase accesses from the processing and representation of data in the remainderof the program.

El gráfico siguiente muestra la definición de una variable de estructura medianteun tipo de estructura declarado de forma local.

Gráfico 170: Definición de estructuras con tipos locales

Puede utilizar la sentencia TYPES para definir tipos de estructura locales. Aquí,los componentes están delimitados por

TYPES: BEGIN OF structure_name,

... ,

END OF structure_name.

Puede asignar cualquier tipo a cada componente mediante el suplemento TYPE.Para obtener más información, consulte la documentación de palabra clave de lasentencia TYPES.

Los objetos de datos se definen del modo habitual.

En caso necesario, también puede definir directamente un objeto de datosestructurado. Para ello, sólo debe sustituir la palabra clave principal TYPES porDATA.

DATA: BEGIN OF structure_name,

... ,

402 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 417: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

END OF structure_name.

Gráfico 171: Acceder a componentes de estructura

Los componentes de una estructura siempre se dirigen mediante un guión:structure_name-component_name.

Consejo: En principio, la sintaxis ABAP permite que los nombres deobjetos de datos contengan guiones (como DATA h-var TYPE cLENGTH 5.). Sin embargo, para evitar confusiones con los componentesde estructura dirigidos, debe evitar utilizar guiones como parte del nombre.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 403

Page 418: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Gráfico 172: Copia de componentes de estructura con el mismo nombre

La sentencia MOVE-CORRESPONDING copia el contenido de la estructura fuenteen la estructura de destino de a un componente por vez. Aquí, sólo se considerandisponibles los componentes que tienen el mismo nombre tanto en la estructurafuente como en la de destino. El resto de componentes de las estructuras no semodifican.

Las asignaciones de valores individuales se pueden ejecutar mediante MOVE.

404 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 419: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

Gráfico 173: Estructuras en modo Debugging

Puede realizar un seguimiento del contenido de campo de una estructura en eldebugger indicando primero el nombre de la estructura en el área Variable 1 ocopiándolo del código fuente con un doble clic sobre él. Puede visualizar elcomponente de la estructura haciendo clic en el nombre de la estructura en el áreaVariable. Además, puede configurar un área de visualización para la estructuraen uno de los desktops.

Haga doble clic para visualizar una estructura variable en el clásico ABAPDebugger . Un doble clic en la estructura del código fuente, la copia en la vista decampo. Un doble clic en la vista de campo lo lleva a la visualización de estructura,donde podrá leer el nombre, el contenido y el tipo de los componentes individuales.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 405

Page 420: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

406 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 421: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

363 Ejercicio 17: Trabajo con estructurasDuración del ejercicio: 35 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Utilizar la sentencia ABAP MOVE-CORRESPONDING para asignar

valores entre estructuras.• Utilizar el ABAP Debugger para realizar un seguimiento del flujo de datos y

comprender las conexiones entre los bloques de procesamiento.

Ejemplo empresarialDesea gestionar una cantidad de datos procedente de varias estructuras en unagran estructura del programa ABAP.

Modelo:

Ninguno

Solución:

BC400_STS_STRUCTURE

Tarea 1:Cree un programa y defina una pantalla de selección para indicar una compañíaaérea, un número de vuelo y la fecha de vuelo.

1. Cree el programa ejecutable ZBC400_##_STRUCTURE sin ningún includeTOP. Asigne el programa al paquete y a la orden de transporte.

2. Defina las opciones de entrada para compañía aérea (nombre sugerido:pa_car), número de vuelo (nombre sugerido: pa_con) y fecha de vuelo(nombre sugerido: pa_date). Al tipificar los campos de entrada, consulte loscampos adecuados del tipo de estructura del Dictionary BC400_S_FLIGHT.

Tarea 2:Cree dos estructuras basadas en tipos del Dictionary para obtener datos en una faseposterior, y una para la estructura destinada a la salida definida por un tipo local.

1. Defina dos estructuras en el programa con referencia al tipo de estructuradel Dictionary BC400_S_CARRIER (nombre sugerido: gs_carrier) yBC400_S_FLIGHT (nombre sugerido: gs_flight).

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 407

Page 422: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

2. Defina una tercera estructura que combine todos los campos de lasdos estructuras anteriores. El tipo de referencia debería implementarselocalmente en el programa (nombre sugerido: gty_s_carrierflight).Utilice la sentencia TYPES para la definición. Ahora, utilice este tipo deestructura local para definir una variable de estructura (nombre sugerido:gs_carrierflight).

Consejo: De forma alternativa, puede definir la estructuradirectamente mediante DATA sin usar la sentencia TYPES.

Tarea 3:Obtenga los datos del vuelo de la fecha de vuelo indicada, con información acercade la compañía aérea seleccionada. Presente estos datos en una lista sencilla.

1. Para obtener los datos, utilice los métodos GET_CARRIER y GET_FLIGHTde la clase CL_BC400_FLIGHTMODEL. Incluya los métodos en elprograma mediante la función arrastrar y soltar, y suministre el tipo de datoscorrecto a la firma de los métodos. Aquí, los parámetros de entrada de lapantalla de selección sirven de parámetros para import y las dos primerasestructuras sirven de parámetros para export.

2. Combine los datos recibidos de las primeras dos estructuras en la estructurade salida. Para ello, utilice la sentencia MOVE-CORRESPONDING.

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

4. (OPCIONAL) Suprima la salida a la lista si no se encontró ningún vuelo.En su lugar, emita un mensaje breve de gestión de errores de los métodosutilizando la sentencia WRITE.

Consejo: Puede verificar con IS INITIAL si la estructura desalida contiene datos.

Tarea 4:Ejecute el programa y verifique el resultado.

1. Verifique el contenido de todas las estructuras en el ABAP Debugger. Realicetambién un test en caso de que no se encuentren datos de vuelo.

408 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 423: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

Solución 17: Trabajo con estructurasTarea 1:Cree un programa y defina una pantalla de selección para indicar una compañíaaérea, un número de vuelo y la fecha de vuelo.

1. Cree el programa ejecutable ZBC400_##_STRUCTURE sin ningún includeTOP. Asigne el programa al paquete y a la orden de transporte.

a) Realice este paso de la forma habitual.

2. Defina las opciones de entrada para compañía aérea (nombre sugerido:pa_car), número de vuelo (nombre sugerido: pa_con) y fecha de vuelo(nombre sugerido: pa_date). Al tipificar los campos de entrada, consulte loscampos adecuados del tipo de estructura del Dictionary BC400_S_FLIGHT.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 2:Cree dos estructuras basadas en tipos del Dictionary para obtener datos en una faseposterior, y una para la estructura destinada a la salida definida por un tipo local.

1. Defina dos estructuras en el programa con referencia al tipo de estructuradel Dictionary BC400_S_CARRIER (nombre sugerido: gs_carrier) yBC400_S_FLIGHT (nombre sugerido: gs_flight).

a) Consulte el extracto del código fuente de la solución modelo.

2. Defina una tercera estructura que combine todos los campos de lasdos estructuras anteriores. El tipo de referencia debería implementarselocalmente en el programa (nombre sugerido: gty_s_carrierflight).Utilice la sentencia TYPES para la definición. Ahora, utilice este tipo deestructura local para definir una variable de estructura (nombre sugerido:gs_carrierflight).

Consejo: De forma alternativa, puede definir la estructuradirectamente mediante DATA sin usar la sentencia TYPES.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 409

Page 424: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Tarea 3:Obtenga los datos del vuelo de la fecha de vuelo indicada, con información acercade la compañía aérea seleccionada. Presente estos datos en una lista sencilla.

1. Para obtener los datos, utilice los métodos GET_CARRIER y GET_FLIGHTde la clase CL_BC400_FLIGHTMODEL. Incluya los métodos en elprograma mediante la función arrastrar y soltar, y suministre el tipo de datoscorrecto a la firma de los métodos. Aquí, los parámetros de entrada de lapantalla de selección sirven de parámetros para import y las dos primerasestructuras sirven de parámetros para export.

a) Consulte el extracto del código fuente de la solución modelo.

2. Combine los datos recibidos de las primeras dos estructuras en la estructurade salida. Para ello, utilice la sentencia MOVE-CORRESPONDING.

a) Consulte el extracto del código fuente de la solución modelo.

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

a) Consulte el extracto del código fuente de la solución modelo.

4. (OPCIONAL) Suprima la salida a la lista si no se encontró ningún vuelo.En su lugar, emita un mensaje breve de gestión de errores de los métodosutilizando la sentencia WRITE.

Consejo: Puede verificar con IS INITIAL si la estructura desalida contiene datos.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 4:Ejecute el programa y verifique el resultado.

1. Verifique el contenido de todas las estructuras en el ABAP Debugger. Realicetambién un test en caso de que no se encuentren datos de vuelo.

a) Fije un breakpoint de sesión en el Editor ABAP y ejecute el programadirectamente mediante la tecla .

ResultadoExtracto del código fuente: BC400_STS_STRUCTURE

REPORT bc400_sts_structure.

PARAMETERS: pa_car TYPE bc400_s_flight-carrid,

Continúa en la página siguiente

410 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 425: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

pa_con TYPE bc400_s_flight-connid,

pa_date TYPE bc400_s_flight-fldate.

DATA: gs_carrier TYPE bc400_s_carrier,

gs_flight TYPE bc400_s_flight.

TYPES: BEGIN OF gty_s_carrierflight,

carrid TYPE bc400_s_flight-carrid,

connid TYPE bc400_s_flight-connid,

fldate TYPE bc400_s_flight-fldate,

seatsmax TYPE bc400_s_flight-seatsmax,

seatsocc TYPE bc400_s_flight-seatsocc,

percentage TYPE bc400_s_flight-percentage,

carrname TYPE bc400_s_carrier-carrname,

currcode TYPE bc400_s_carrier-currcode,

url TYPE bc400_s_carrier-url,

END OF gty_s_carrierflight.

DATA: gs_carrierflight TYPE gty_s_carrierflight.

* Get data

TRY.

CALL METHOD cl_bc400_flightmodel=>get_flight

EXPORTING

iv_carrid = pa_car

iv_connid = pa_con

iv_fldate = pa_date

IMPORTING

es_flight = gs_flight.

CALL METHOD cl_bc400_flightmodel=>get_carrier

EXPORTING

iv_carrid = pa_car

IMPORTING

es_carrier = gs_carrier.

CATCH cx_bc400_no_data .

WRITE: 'No data found!'(ndf).

CATCH cx_bc400_no_auth .

WRITE: 'No authority for this carrier!'(nau).

ENDTRY.

* Fill gs_carrierflight

MOVE-CORRESPONDING gs_carrier TO gs_carrierflight.

MOVE-CORRESPONDING gs_flight TO gs_carrierflight.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 411

Page 426: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

IF gs_carrierflight IS NOT INITIAL.

WRITE: / gs_carrierflight-carrid,

gs_carrierflight-connid,

gs_carrierflight-fldate,

gs_carrierflight-carrname,

gs_carrierflight-currcode,

gs_carrierflight-seatsmax,

gs_carrierflight-seatsocc,

gs_carrierflight-percentage, '%',

gs_carrierflight-url.

ENDIF.

412 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 427: 119167612 taw10-01-es

TAW10_1 Lección: Trabajo con estructuras

Resumen de la lección

Ahora podrá:• Definir objetos de datos estructurados (variables de estructura)• Utilizar sentencias ABAP básicas para objetos de datos estructurados• Analizar objetos de datos estructurados en modo debugging

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 413

Page 428: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Lección:370

Uso de tablas internasDuración de la lección: 90 Minutos

Resumen de la lecciónEn este módulo aprenderá a definir tablas internas y a utilizarlas en programasABAP. A continuación, analizará las tablas internas en el ABAP Debugger entiempo de ejecución.

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

• Definir tablas internas• Utilizar sentencias ABAP básicas con tablas internas• Analizar tablas internas en modo debugging

The participants’ understanding of this lesson will depend on their previousexperience. The concept of internal tables does not exist in any of the othercommon programming languages in this form. You should certainly emphasizethat this extremely useful concept is one of the many strengths of ABAP.

Ejemplo empresarialSe dispone a utilizar variables de tabla como almacenamiento de datos en susprogramas y a buscar errores semánticos en los mismos mediante el ABAPDebugger.

414 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 429: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Uso de tablas internas

Gráfico 174: Tablas internas: opciones de utilización

Una tabla interna es un objeto de datos en el que se pueden mantener variosregistros de datos estructurados de forma idéntica en tiempo de ejecución (variablede tabla). El número de registros de datos está restringido únicamente por lacapacidad de instalaciones específicas de sistema.

El sistema de tiempo de ejecución ABAP gestiona dinámicamente el tamaño dela tabla interna. Esto significa que usted como programador no necesita realizarningún trabajo relativo a la gestión de la memoria.

Los sets de datos individuales en una tabla interna se llaman filas de tabla oentradas de tabla.

Por esta razón, los componentes individuales de una fila se llaman campos ocolumnas de la tabla interna.

El tipo de fila de una tabla interna se puede especificar mediante cualquier tipode datos y describe la estructura de fila de las entradas de tabla.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 415

Page 430: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Por este motivo, las tablas internas son un simple modo de procesamiento degrandes sets de datos de manera estructurada. Los usos típicos incluyen:

• Retener datos de tablas de base de datos o ficheros secuenciales para suprocesamiento posterior

• Formatear datos para presentarlos en pantalla o imprimirlos (p. ej., ordenar)• Formatear datos para utilizar otros servicios (por ejemplo, para método,

módulo de funciones o llamadas de subrutina)

Gráfico 175: Atributos de tablas internas

Las propiedades siguientes especifican una tabla interna completamente:

Tipo de líneaEl tipo de línea describe la estructura de las filas de la tabla. Generalmentese especifica un tipo de estructura para ello. Sin embargo es posible utilizartodos los tipos de datos.

ClaveLa clave de una tabla interna consiste en los campos clave incluyendo suorden. La secuencia de los campos clave se utiliza, entre otras cosas, paraordenar según las claves. Dependiendo del tipo de acceso, la clave se puededefinir como única o no única. Unicidad significa que una combinacióndeterminada de campos clave sólo puede aparecer una vez dentro de la tabla.

Tipo de tablaPuede elegir entre tres tipos de tablas diferentes: Estándar , clasificada yde claves de control . Según el tipo de acceso utilizado, debería utilizarel tipo de tabla apropiado para la definición para permitir el acceso dealto rendimiento. El siguiente gráfico ilustra la selección del tipo de tablaapropiado.

416 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 431: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Gráfico 176: Atributos y uso de los tipos de tabla

El acceso a una entrada de tabla mediante el número de fila correspondiente sellama acceso a índice.

Por el contrario, si se accede a una entrada indicando un valor clave, se llama alacceso mediante clave.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 417

Page 432: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

En función del tipo de acceso utilizado, se debe elegir la clase de tabla másapropiada de las tres siguientes para permitir accesos de alto rendimiento:

• En las tablas estándar, la numeración de filas (índice) se actualizainternamente. Tanto el acceso a índice como el acceso mediante clave sonposibles.

Seleccione este tipo de tabla si utiliza el índice principalmente para acceder ala tabla interna.

• En las tablas clasificadas, los registros de datos se ordenan automáticamentepor clave de manera ascendente. Aquí, el índice se actualiza tambiéninternamente. Tanto el acceso a índice como el acceso mediante clave sonposibles.

Elija esta clase de tabla si normalmente accede a la tabla interna con la clave,o bien si desea que la tabla se ordene automáticamente por clave.

• Con las tablas de claves de control, los registros de datos se gestionan parael acceso clave rápido mediante el procedimiento de claves de control. Aquíse requiere una clave única. En las tablas de claves de control, sólo sonposibles los accesos mediante clave.

Elija este tipo de tabla si la tabla interna es muy grande y desea accedera ella solamente por clave.

Consejo: En este curso sólo utilizaremos tablas estándar. Sin embargo,exceptuando unos pocos casos especiales, la sintaxis es idéntica para lostres tipos de tabla.

418 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 433: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Gráfico 177: Definición de tablas internas con tipos globales

El tipo de una tabla interna se llama tipo de tabla. Los tipos de tabla se puedendefinir globalmente en el Dictionary ABAP o localmente en un programa. En lafigura de arriba se muestra un tipo de tabla declarado en el Dictionary ABAP, asícomo la definición interna de programa de una variable de tabla con referencia altipo de tabla.

Para obtener información detallada acerca de la declaración de tipos de tablaglobales en el Dictionary ABAP, consulte la documentación online. Puede accedera ella mediante el botón de la pantalla o en la sección de actualización deltipo de tabla.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 419

Page 434: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Gráfico 178: Definición de tablas internas con tipos locales

En el gráfico anterior se muestra un tipo de tabla declarado localmente en elprograma, así como la definición interna de una variable de tabla del programacon referencia al tipo de tabla declarado localmente.

Cuando cree una lista de los campos clave en el tipo de tabla, tenga en cuenta quela secuencia importa para determinados tipos de procesamiento (como “ordenarpor clave”). Para obtener información detallada acerca de declarar tipos de tablaslocales, consulte la documentación de palabra clave de la sentencia TYPES.

Consejo: Como alternativa, también puede definir una tabla internadirectamente para declarar un tipo de tabla local: Lo único que debehacer para esto es usar DATA , en lugar de TYPES.

Atención: Un error común de principiante consiste en la sintaxissiguiente:

DATA gt_itab TYPE TABLE OF <Table type> .

El resultado de esto sería una definición de una tabla interna con filas que,a su vez, son tablas internas (del tipo de tabla especificado).

En las definiciones previas de tablas internas, siempre se utilizan los objetos deldiccionario: O bien un tipo de tabla (BC400_T_FLIGHTS) o como mínimoun tipo de estructura (BC400_S_FLIGHT). El gráfico siguiente muestra unadefinición de tabla “independiente”:

420 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 435: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Gráfico 179: Definición independiente de tablas internas

Esto permite implementar tablas internas con cualquier clase de estructura sin quesea necesario consultar los tipos de diccionario existentes.

En el siguiente gráfico se muestra de nuevo un resumen de posibles definicionesde tablas internas:

Gráfico 180: Posibles definiciones de tablas internas

La forma breve de una definición de tabla ilustrada más arriba utilizaimplícitamente los valores por defecto siguientes:

Tipo de tabla: estándar (por defecto)Unicidad de la clave: No única (opción únicamente para una tabla estándar)

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 421

Page 436: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Clave de tabla: Clave por defecto (Todos los campos de tabla no numéricosson campos clave)

Consejo: Puesto que la clave por defecto generalmente no se puedeutilizar de un modo significativo, sólo debería usarla para definir una tablainterna, si no necesita la clave para procesar su tabla.

Gráfico 181: Acceso a registros individuales (resumen)

En la mayoría de los casos, requiere una variable de estructura para elprocesamiento de registros individuales de una tabla interna que debe definirsepara que tenga elmismo tipo que el tipo de línea de la tabla interna. Esta variablede estructura se conoce como el área de trabajo. En el gráfico anterior se ilustrael procesamiento de una tabla interna mediante el área de trabajo correspondiente.

APPENDAñade el contenido de una estructura a una tabla interna. Esta operación sepuede utilizar únicamente con tablas estándares.

INSERTInserta el contenido de una estructura a una tabla interna.

READ TABLECopia el contenido de una fila de tabla a una estructura.

MODIFYSobrescribe una fila de tabla interna con el contenido de una estructura.

422 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 437: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

DELETEBorra una fila de una tabla interna.

COLLECTAcumula el contenido de una estructura de fila de una tabla interna que tienela misma clave. Al hacerlo, sólo se añaden los campos no clave. Es decir,que esta sentencia sólo se puede utilizar para tablas cuyos campos no claveson todos numéricos.

Para obtener información detallada acerca de las sentencias ABAP descritas aquí,consulte la documentación de palabra clave relevante.

Gráfico 182: Procesamiento de sets de registros (resumen)

LOOP AT . . . ENDLOOPEl loop LOOP sitúa las filas de una tabla interna en la estructura especificadaen la cláusula INTO de a una por vez. Dentro del loop LOOP, el contenidoactual de la estructura se puede mostrar o modificar y volver a escribir enla tabla.

DELETEBorra todas las filas de la tabla interna que cumplen con la condición lógica<condition>.

INSERT LINES OFCopia el contenido de varias filas de una tabla interna a otra tabla interna.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 423

Page 438: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

APPEND LINES OFAñade el contenido de varias filas de una tabla interna a otra tabla estándar.

Para obtener información detallada acerca de las sentencias ABAP descritas aquí,consulte la documentación de palabra clave relevante.

A continuación, se muestran algunos ejemplos actuales de sintaxis para lassentencias más comunes.

Gráfico 183: Ejemplo de sintaxis: inserción de una fila

Puede insertar una fila en una tabla interna si escribe los datos del registrocorrespondiente en el área de trabajo preparada y, a continuación, la inserta en latabla interna con una sentencia INSERT.

Con tablas estándares, este contenido se añade; con tablas clasificadas, la fila seinserta en el sitio correcto con referencia a los campos clave; y en las tablas declaves de control, se inserta de acuerdo con un algoritmo de control.

424 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 439: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Gráfico 184: Ejemplo de sintaxis: salida de una tabla interna fila por fila

Puede leer y tratar el contenido de una tabla interna fila por fila mediante un loop<LOOP. Dentro de una ejecución de búsqueda, el campo de sistema sy-tabixcontiene el número de fila de la entrada de tabla actual.

En nuestro ejemplo, todas las filas de la tabla interna se procesan consecutivamentey se emiten mediante la sentencia WRITE.

Si desea modificar el contenido de la fila de tabla actual con una transferencia deloop, modifique primero la copia de la fila en el área de trabajo y, a continuación,vuelva a escribirla en la línea de tabla actual mediante la sentencia MODIFY.La sintaxis para ello es:

MODIFY itab FROM wa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 425

Page 440: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Gráfico 185: Ejemplo de sintaxis: leer por índice

En el loop LOOP, puede restringir el acceso a filas específicas mediante elsuplemento FROM-TO. En el ejemplo de arriba, el sistema sólo procesa lasprimeras cinco filas de la tabla interna consecutivamente.

Puede utilizar la sentencia READ TABLE para leer un registro individual. Utiliceel suplemento INDEX para especificar el número de fila del registro requerido.

Tenga en cuenta que en ambos ejemplos del gráfico anterior se utiliza un índice.Esto es posible únicamente con tablas de índice (es decir, estándar y clasificada).

426 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 441: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Gráfico 186: Ejemplo de sintaxis: lectura por clave

En el loop LOOP, puede restringir el acceso a filas específicas mediante elsuplemento WHERE. En el ejemplo de arriba, el sistema sólo procesa las filas detablas internas en las cuales el campo CARRID tiene el valor LH.

Consejo: Con respecto al requisito de tiempo de ejecución, el tipo másadecuado para esta clase de procesamiento es una tabla clasificada con elcampo CARRID como primer campo clave.

Puede utilizar la sintaxis READ TABLE en el gráfico anterior para leer una filaespecífica de la tabla interna. En este caso, debe especificar el valor de clavecompleto de la entrada para leer después del suplemento WITH TABLE KEY.El código de retorno sy-subrc sólo se fija a cero si se ha encontrado una filacorrespondiente en la tabla interna.

Consejo: Respecto al requisito de tiempo de ejecución, una tabla declaves de control es más apropiada para este tipo de acceso si disponede un set de datos grande.

Tenga en cuenta que con el suplemento <WITH TABLE KEY, es necesarioproporcionar datos a todos los campos clave. Si desea limitar los campos, debeutilizar el suplemento WITH KEY.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 427

Page 442: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Gráfico 187: Ejemplo de sintaxis: ordenación y eliminación de contenido

Las tablas estándar y de claves de control se pueden ordenar de forma ascendenteo descendente por clave de tabla o columnas mediante la sentencia SORT. Si no seespecifica ASCENDING ni DESCENDING como orden de clasificación de uncampo, éste se ordena de forma descendente por defecto.

Las reglas de ordenación específicas de idioma también se pueden tener en cuenta,en caso necesario:

Puede utilizar el suplemento opcional AS TEXT para implementar la ordenaciónlexicográfica. En un entorno de habla alemana, por ejemplo, esto significa que la“ä” viene antes que la “b”, y no después de la “z”, como ocurriría en el caso deuna ordenación no lexicográfica.

Si utiliza el suplemento STABLE, que también es opcional, el orden relativode los registros de datos que tienen claves de ordenación idénticas permaneceráintacto durante la ordenación.

Para obtener más detalles, consulte la documentación de palabra clave de lasentencia SORT.

Puede utilizar las siguientes sentencias para borrar el contenido de tabla:

REFRESHEsto borra todo el contenido de la tabla interna. Una parte de la memoriautilizada previamente permanece disponible para futuras inserciones.

428 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 443: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

CLEARCon las tablas internas sin línea de cabecera (todas las que se han definidoanteriormente en el curso), la sentencia CLEAR tiene el mismo efecto queREFRESH.Por el contrario, para las tablas internas con una línea de cabecera (consulte acontinuación), únicamente inicializa la línea de cabecera.

FREEEsto borra todo el contenido de la tabla interna y libera la memoria utilizadapreviamente. La sentencia FREE se utiliza para tablas internas que ya se hanevaluado y ya no se requieren en el transcurso del programa. Esto provocaque la memoria asignada previamente pero ya no necesaria vuelva a estardisponible.

Debug the program BC400_TSD_ITAB_SORT in the package BC400.

Gráfico 188: Tablas internas en modo debugging

En el debugger, puede realizar un seguimiento de una tabla interna si indica elnombre de la tabla en el área Variable 1 y, a continuación, bifurca a la visualizaciónde tabla mediante un doble clic.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 429

Page 444: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

De forma alternativa, puede seleccionar la etiqueta Tabla y especificar elnombre de la tabla en el campo Tabla interna. De este modo, puede llegar a lavisualización del contenido de la tabla pulsando la tecla Intro. Además, puedeconfigurar un área para visualizar una tabla interna en uno de los desktops.

Para visualizar una tabla interna en el clásico ABAP Debugger , se proporcionauna clave con la etiqueta “Tabla”. Igual que con el debugger, sin embargo,también puede navegar a esta pantalla mediante doble clic.

Gráfico 189: Comparación: tablas internas con y sin líneas de cabecera

When you discuss the header line, make it very clear why this is no longersupposed to be used. Explain, however, that it still appears in older programs,which is why it is useful to know about it nonetheless.

Con el suplemento WITH HEADER LINE en la definición de una tabla interna,tiene la opción de crear una tabla con una línea de cabecera. Una vez hechoesto, se crea automáticamente un área de trabajo (fila de cabecera que se ajusta ala tabla), por lo cual no es necesaria ninguna definición adicional de la misma.Esto también simplifica la sintaxis de los comandos de tabla, puesto que el sistema

430 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 445: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

siempre hace referencia al área de trabajo generado automáticamente, que yano se debe especificar explícitamente por este motivo. A pesar de las ventajasmencionadas, ya no queremos utilizar tablas con líneas de cabecera porque:

• El área de trabajo generado automáticamente tiene el mismo nombre que latabla interna, lo que no contribuye a hacer inteligible el programa.

• Las tablas con líneas de cabecera no están permitidas en las áreas siguientes:

– Objetos de datos anidados (estructuras y tablas internas que tienentablas internas como componentes)

– Objetos ABAP (extensión de ABAP orientada a objetos).

Sólo mencionamos las tablas internas con líneas de cabecera porque algunosprogramas antiguos todavía los utilizan y es posible que deba trabajar conprogramas de este tipo alguna vez. Por este motivo, a continuación se muestra unalista de más particularidades de la línea de cabecera:

Si una tabla interna con una línea de cabecera se llama itab, entonces se utilizael campo de tabla itab- para dirigirse al campo correspondientes en el área detrabajo.

Puede dirigirse al cuerpo de la tabla con itab[] .

El siguiente ejemplo ilustra la situación mencionada más arriba:

DATA itab1 TYPE TABLE OF scarr WITH HEADER LINE.

DATA itab2 LIKE itab1.

itab1 = itab2 . Sólo operaciones con líneas de cabecera.

itab1[] = itab2[] . Operaciones con cuerpos de tabla

La siguiente sintaxis, muy antigua, también define una tabla interna con línea decabecera, a pesar de que no se indica específicamente.

DATA: BEGIN OF itab OCCURS n,

field1 TYPE ... ,

field2 TYPE ... ,

... ,

END OF itab.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 431

Page 446: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

432 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 447: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

389 Ejercicio 18: Uso de tablas internasDuración del ejercicio: 25 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Buscar tipos apropiados en el Dictionary ABAP• Definir tablas internas basadas en un tipo de tabla global• Procesar el contenido de tablas internas mediante un loop

Ejemplo empresarialDesea transferir datos de conexiones de vuelos de una tabla de base de datos a unatabla interna (como almacenamiento temporal) y emitirlos en una lista.

Modelo:

Ninguno

Solución:

BC400_ITS_ITAB_LOOP

Tarea 1:Cree un programa y defina una tabla interna para conexiones de vuelos dentrode la misma.

1. Cree el programa ejecutable ZBC400_##_ITAB_LOOP sin ningún “includeTOP”. Asigne el programa al paquete y a la orden de transporte.

2. Para guardar datos de conexiones de vuelos en la memoria intermedia, lerecomendamos que defina la tabla interna de manera que el tipo de línea seacompatible con el tipo de estructura BC400_S_CONNECTION.

En el Dictionary ABAP, busque todos los tipos de tabla que cumplen estacondición.

Consejo: Visualice la estructura BC400_S_CONNECTIONdel Dictionary ABAP (debe situar el cursor en el nombre de laestructura). Allí, utilice el pulsador adecuado para listar lareferencia de utilización de BC400_S_CONNECTION. (Presteatención a la selección correcta al desencadenar la referencia deutilización)

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 433

Page 448: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

3. Defina una tabla interna (nombre sugerido: gt_connections) basada en unode los tipos de tabla global encontrados.

4. Defina un área de trabajo apropiada para la tabla interna (nombre sugerido:gs_connection).

Tarea 2:Rellene la tabla interna y emita el contenido en una lista.

1. Obtenga los datos de conexiones de vuelos llamando al métodoGET_CONNECTIONS de la clase CL_BC400_FLIGHTMODEL.Seleccione la tabla interna que haya definido como parámetro transferido.

2. Si no encuentra ninguna conexión de vuelos, emita un breve mensaje en lalista. Para ello, utilice la gestión de errores de la llamada de método.

3. Utilice la sentencia LOOP para emitir en una lista los datos de la tabla internaalmacenados en la memoria intermedia.

4. (OPCIONAL) Utilice la sentencia SORT para ordenar la tabla interna deforma ascendente según la hora de salida antes de que se emitan los datos enla lista.

Tarea 3:Ejecute el programa y verifique el resultado.

1. Compruebe la presentación de la tabla interna en la lista. Utilice tambiénpara ello el ABAP Debugger.

434 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 449: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Solución 18: Uso de tablas internasTarea 1:Cree un programa y defina una tabla interna para conexiones de vuelos dentrode la misma.

1. Cree el programa ejecutable ZBC400_##_ITAB_LOOP sin ningún “includeTOP”. Asigne el programa al paquete y a la orden de transporte.

a) Realice este paso de la misma forma que antes.

2. Para guardar datos de conexiones de vuelos en la memoria intermedia, lerecomendamos que defina la tabla interna de manera que el tipo de línea seacompatible con el tipo de estructura BC400_S_CONNECTION.

En el Dictionary ABAP, busque todos los tipos de tabla que cumplen estacondición.

Consejo: Visualice la estructura BC400_S_CONNECTIONdel Dictionary ABAP (debe situar el cursor en el nombre de laestructura). Allí, utilice el pulsador adecuado para listar lareferencia de utilización de BC400_S_CONNECTION. (Presteatención a la selección correcta al desencadenar la referencia deutilización)

a) Realice este paso de la forma en que se describe.

3. Defina una tabla interna (nombre sugerido: gt_connections) basada en unode los tipos de tabla global encontrados.

a) Consulte el extracto del código fuente de la solución modelo.

4. Defina un área de trabajo apropiada para la tabla interna (nombre sugerido:gs_connection).

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 2:Rellene la tabla interna y emita el contenido en una lista.

1. Obtenga los datos de conexiones de vuelos llamando al métodoGET_CONNECTIONS de la clase CL_BC400_FLIGHTMODEL.Seleccione la tabla interna que haya definido como parámetro transferido.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 435

Page 450: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

2. Si no encuentra ninguna conexión de vuelos, emita un breve mensaje en lalista. Para ello, utilice la gestión de errores de la llamada de método.

a) Consulte el extracto del código fuente de la solución modelo.

3. Utilice la sentencia LOOP para emitir en una lista los datos de la tabla internaalmacenados en la memoria intermedia.

a) Consulte el extracto del código fuente de la solución modelo.

4. (OPCIONAL) Utilice la sentencia SORT para ordenar la tabla interna deforma ascendente según la hora de salida antes de que se emitan los datos enla lista.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

436 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 451: 119167612 taw10-01-es

TAW10_1 Lección: Uso de tablas internas

Tarea 3:Ejecute el programa y verifique el resultado.

1. Compruebe la presentación de la tabla interna en la lista. Utilice tambiénpara ello el ABAP Debugger.

a) Fije un breakpoint de sesión en el Editor ABAP y ejecute el programadirectamente mediante la tecla .

ResultadoExtracto del código fuente: BC400_ITS_ITAB_LOOP

REPORT bc400_its_itab_loop.

DATA: gt_connections TYPE bc400_t_connections,

gs_connection TYPE bc400_s_connection.

* Get data

TRY.

CALL METHOD cl_bc400_flightmodel=>get_connections

IMPORTING

et_connections = gt_connections.

CATCH cx_bc400_no_data .

WRITE: / 'No data found!'(ndf).

ENDTRY.

SORT gt_connections ASCENDING BY deptime.

* Output

LOOP AT gt_connections INTO gs_connection.

WRITE: / gs_connection-carrid,

gs_connection-connid,

gs_connection-cityfrom,

gs_connection-airpfrom,

gs_connection-cityto,

gs_connection-airpto,

gs_connection-fltime,

gs_connection-deptime,

gs_connection-arrtime.

ENDLOOP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 437

Page 452: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

Resumen de la lección

Ahora podrá:• Definir tablas internas• Utilizar sentencias ABAP básicas con tablas internas• Analizar tablas internas en modo debugging

438 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 453: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Definir objetos de datos estructurados (variables de estructura)• Utilizar sentencias ABAP básicas para objetos de datos estructurados• Analizar objetos de datos estructurados en modo debugging• Definir tablas internas• Utilizar sentencias ABAP básicas con tablas internas• Analizar tablas internas en modo debugging

Más información... Consulte la documentación online de las sentencias ABAP relevantes.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 439

Page 454: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

440 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 455: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

397Examine sus conocimientos

1. ¿En qué elementos del Dictionary ABAP se puede fijar el tipo para unaestructura variable dentro del programa?

Seleccione la(s) respuesta(s) correcta(s).□ A Elemento de datos□ B Dominio□ C Estructura□ D Tipo de tabla

2. ¿Qué campos se tienen en cuenta en la sentenciaMOVE-CORRESPONDING donde se deben especificar dos estructuras?

3. ¿Qué es una tabla interna?Seleccione la(s) respuesta(s) correcta(s).□ A Tabla de base de datos□ B Tabla de Excel□ C Variable en un programa ABAP□ D Tabla que se incrusta en otra tabla

4. ¿Con qué palabra reservada definiría una tabla interna?

5. ¿Qué tres especificaciones se requieren en la definición de una tabla interna?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 441

Page 456: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

6. ¿Qué tres clases de tablas internas están disponibles para influenciar elrendimiento del sistema en el acceso a tablas?

7. ¿Qué es un tipo de tabla?Seleccione la(s) respuesta(s) correcta(s).□ A Una tabla interna□ B Descripción de una tabla interna□ C Descripción de una tabla de base de datos□ D La especificación "STANDARD"/"SORTED"/"HASHED" para

una tabla interna

8. BC400_S_BOOKING es una estructura de diccionario.

¿Qué sintaxis utiliza para crear una tabla interna con la misma estructuraque BC400_S_BOOKING?Seleccione la(s) respuesta(s) correcta(s).□ A DATA gt_itab TYPE bc400_s_booking.□ B DATA gt_itab TYPE TABLE OF bc400_s_booking.□ C DATA gt_itab TYPE LINE OF bc400_s_booking.□ D DATA gt_itab LIKE bc400_s_booking.

9. ¿Qué sintaxis utiliza para crear un área de trabajo para una tabla internaya definida con el nombre “itab”?

10. ¿Qué sentencia recupera un registro individual de una tabla interna?Seleccione la(s) respuesta(s) correcta(s).□ A SELECT ... ENDSELECT□ B SELECT

SINGLE□ C READ TABLE□ D GET□ E FETCH

442 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 457: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

11. ¿Las tablas internas con filas de cabecera deberían utilizarse todavía enprogramación?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 443

Page 458: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

400Respuestas

1. ¿En qué elementos del Dictionary ABAP se puede fijar el tipo para unaestructura variable dentro del programa?

Respuesta: C

2. ¿Qué campos se tienen en cuenta en la sentenciaMOVE-CORRESPONDING donde se deben especificar dos estructuras?

Respuesta: Los campos que se encuentran en ambas estructuras y tienen elmismo nombre.

3. ¿Qué es una tabla interna?

Respuesta: C

4. ¿Con qué palabra reservada definiría una tabla interna?

Respuesta: DATA

Una tabla interna es una variable y las variables se definen mediante DATA.

5. ¿Qué tres especificaciones se requieren en la definición de una tabla interna?

Respuesta: Tipo de fila, clave y clase de tabla interna

6. ¿Qué tres clases de tablas internas están disponibles para influenciar elrendimiento del sistema en el acceso a tablas?

Respuesta: STANDARD, SORTED y HASHED

7. ¿Qué es un tipo de tabla?

Respuesta: B

8. BC400_S_BOOKING es una estructura de diccionario.¿Qué sintaxis utiliza para crear una tabla interna con la misma estructuraque BC400_S_BOOKING?

Respuesta: B

444 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 459: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

9. ¿Qué sintaxis utiliza para crear un área de trabajo para una tabla internaya definida con el nombre “itab”?

Respuesta: DATA gs LIKE LINE OF gt_itab.

10. ¿Qué sentencia recupera un registro individual de una tabla interna?

Respuesta: C

11. ¿Las tablas internas con filas de cabecera deberían utilizarse todavía enprogramación?

Respuesta: No, la información proporcionada sobre el tema es únicamentecon fines de comprensión de programas antiguos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 445

Page 460: 119167612 taw10-01-es

Capítulo 9: Objetos de datos complejos TAW10_1

446 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 461: 119167612 taw10-01-es

Capítulo 10403 Modelado y obtención de datos

See the introductory instructor notes in the lessons.

Resumen del capítuloEn el resumen de la unidad se muestra una lista de las lecciones individualesque la componen.

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

• Explicar el propósito y los beneficios de utilizar un modelo de datos en eldesarrollo de la aplicación

• Describir el modelo de datos de vuelo SAP• Describir el significado y la estructura de una tabla transparente• Listar distintos métodos para buscar tablas de base de datos relevantes• Acceso de lectura al programa para las columnas y filas específicas dentro de

una tabla de base de datos determinada• Listar distintos métodos para leer accesos a varias tablas de base de datos• Explicar el concepto de autorización SAP• Implementar verificaciones de autorización

Contenido del capítuloLección: Modelado de datos y tablas transparentes del DictionaryABAP ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .449

Ejercicio 19: Análisis de tablas transparentes en el DictionaryABAP... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .459

Lección: Lectura de tablas de base de datos ... . . . . . . . . . . . . . . . . . . . . . . . . . . . .465

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 447

Page 462: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Ejercicio 20: Obtención de datos mediante acceso a registroindividual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .487Ejercicio 21: Obtención de datos mediante un loop SELECT ... . . . . .493Ejercicio 22: (Opcional) Obtención de datos por acceso en masa(Array Fetch) .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .501

Lección: Verificación de autorización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .508Ejercicio 23: Verificación de autorización ... . . . . . . . . . . . . . . . . . . . . . . . . . . . .515

448 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 463: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Lección:404

Modelado de datos y tablas transparentes delDictionary ABAPDuración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo obtendrá información general acerca de la modelación de datos.Es necesario realizarla antes del desarrollo de la aplicación. También aprenderácómo se definen y se describen las tablas de base de datos en el Dictionary ABAP.

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

• Explicar el propósito y los beneficios de utilizar un modelo de datos en eldesarrollo de la aplicación

• Describir el modelo de datos de vuelo SAP• Describir el significado y la estructura de una tabla transparente

Up to now, the participants know the ABAP Dictionary simply as a collection ofglobal data types. In this lesson you will be introduced to its role as a maintenanceand management tool for database objects (tables).

Ejemplo empresarialDesea desarrollar un programa que acceda a las tablas de la base de datos. Paraello, necesita conocer el modelo de datos subyacente y la estructura de las tablasde base de datos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 449

Page 464: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Modelación de datos

Gráfico 190: Modelación de datos

En el desarrollo de software de aplicaciones empresariales, las partes del mundoreal se deben representar en forma de datos. Aquí, una unidad empresarialrepresenta a una entidad. Estas entidades están interrelacionadas, y esta relaciónse fija en el modelo de datos subyacente. También nos referimos a un modelode relación de entidad (ERM).

Este modelo de datos se utiliza como la base de la implementación de definicionesde tabla apropiadas (tablas transparentes) incluyendo sus relaciones con las otrasen el Dictionary ABAP.

Al activar las definiciones de tabla, las tablas de base de datos correspondientesse crean automáticamente en la base de datos. Los datos de aplicación realesse indican en esas tablas más adelante.

450 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 465: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Gráfico 191: Modelo de datos de vuelo para los cursos de formación ABAP

Los cursos de formación ABAP, la documentación online y la documentación depalabras clave ABAP utilizan el mismo modelo de datos de vuelo como ejemplo.Los objetos de Repository para el modelo de datos de vuelo se encuentran enel paquete SAPBC_DATAMODEL.

En el contexto de este curso, es suficiente mostrar un simple extracto de estemodelo de datos: Si unos clientes de una agencia de viajes desean viajar de unsitio a otro, solicitan a la agencia de viajes que los informe de lo siguiente:

• ¿Qué conexión ofrece el mejor vuelo y el más directo?• ¿Cuáles son los horarios de vuelo aceptables en el día de viaje propuesto?• En caso que, dependiendo de las condiciones individuales, exista una

solución ideal, como el vuelo más barato, la conexión más rápida, unaconexión con una hora de llegada determinada.

La perspectiva difiere de la de una agencia de viajes: En el modelo de datosdesignado para gestionar los datos requeridos, los datos se almacenan en tablassegún los criterios técnicos en una base de datos central. La cantidad de datosalmacenados supera con creces los requisitos de un cliente.

Para ello, necesita poder compilar los datos para cumplir con los requisitosindividuales del cliente utilizando los programas de aplicación.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 451

Page 466: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 192: Modelo de datos relacional

El modelo de datos de vuelo contiene entidades para toda la informaciónempresarial que están conectadas de modo lógico, por ejemplo:

• Ciudades• Aeropuertos• Compañías aéreas• Trayectos de vuelo• Vuelos• . . .

Estas entidades están todas relacionadas entre ellas de formas determinadas:

• Cada horario de vuelos contiene exactamente una compañía aérea, unaeropuerto de salida y un aeropuerto de destino.

• Cada vuelo reservable pertenece siempre a exactamente un horario de vueloexistente.

• Se pueden realizar asignaciones entre ciudades y aeropuertos cercanos.

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

452 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 467: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Gráfico 193: Implementación mediante tablas transparentes

Por cada entidad fijada en el modelo de datos, el programador crea una tablatransparente en el Dictionary ABAP. Se trata únicamente de una descripciónindependiente de plataforma de una tabla de base de datos, no de la mismatabla de base de datos. Sin embargo, al activar la tabla transparente, se creaautomáticamente una tabla con el mismo nombre en la base de datos.

Una tabla transparente contiene distintos campos (columnas) que le permitenalmacenar y gestionar registros de datos de forma estructurada. Debe declararlos campos de tabla como campos clave si su contenido se debe utilizar para laidentificación única de registros de datos dentro de la tabla de base de datos. Laclave de una tabla (clave de tabla) consiste en campos clave. También se conocecomo clave primaria. Los registros de datos de una misma tabla deben ser únicosrespecto a los valores de clave primaria. El valor clave de un registro de datos esun ID único dentro de la tabla.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 453

Page 468: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Tablas transparentes

Gráfico 194: Estructura técnica de una tabla transparente

En el Dictionary ABAP, una tabla transparente es una descripción implementadade la tabla de base de datos correspondiente que contiene los datos de aplicaciónreales. Los campos de la tabla transparente forman las columnas del mismonombre de la tabla de base de datos correspondiente. Los elementos de datos,con los que ya está familiarizado como tipos de datos elementales, se utilizangeneralmente para describir los campos individuales. Los mismos elementos dedatos hacen referencia a dominios por sus propiedades técnicas.

454 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 469: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Gráfico 195: Tablas transparentes en el Dictionary ABAP

Igual que la lista de campos, las tablas transparentes contienen otra informaciónrequerida para crear una tabla con el mismo nombre en la base de datos y describirsus propiedades completamente:

• La determinación de la clave para la tabla de base de datos (campos clave)• Las propiedades técnicas requeridas por la base de datos para crear la tabla

de base de datos (tamaño previsto, frecuencia de acceso prevista)• Opciones para tecnologías que pueden acelerar el acceso a la tabla de base de

datos (índices secundarios, almacenamiento en memoria intermedia)

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 455

Page 470: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 196: Estructuras en el Dictionary ABAP

A primera vista, la definición de una tabla transparente parece muy similar a ladefinición del tipo de datos global. En realidad, las tablas transparentes se puedenutilizar en programación del mismo modo que los tipos de estructura, por ejemplopara definir un objeto de datos estructurado (variable de estructura), para tipificarun parámetro de interfaz, o como tipo de línea de un tipo de tabla global o local.Sin embargo, aquí sólo es importante la lista de campos. Las otras propiedadesde la tabla transparente, como la definición clave o las propiedades técnicas, sonirrelevantes cuando se utiliza como tipo de datos.

456 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 471: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Gráfico 197: Tabla transparente como tipo de datos ABAP

Consejo: En programas anteriores, se utilizaban libremente las tablastransparentes como tipos de datos. Actualmente recomendamos que seutilicen sólo directamente en conexión con el acceso a la base de datos.Sobre todo, las tablas transparentes no se deberían utilizar en el procesode definición de interfaces de usuario. El problema aquí es la dependenciainvoluntaria entre la definición de los objetos o interfaces de base de datosy la interfaz de usuario.

Igual que las propiedades adicionales relativas a la base de datos, existe otradiferencia entre las tablas transparentes y los tipos de estructura:

Una tabla transparente siempre es una lista de campos elementales, mientras quelos componentes de un tipo de estructura pueden estructurarse de nuevo por simismos (estructuras anidadas). El componente de una estructura puede tipificarsecon un tipo de tabla (estructuras profundas).

If you have time, create a transparent table in the ABAP Dictionary with, forexample, CARRID (data element S_CARR_ID) as a key field and SEATSMAX(data element S_SEATSMAX) as an additional non-key field. Point out that thestructure of a database table is maintained using the Data Dictionary and that thisis automatically converted on the database, without having to program Native

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 457

Page 472: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

SQL statements. Maintain the technical settings, activate the transparent table, andmake some entries using SE16. Make it clear that everything that is created in theData Dictionary is known across the entire system.

458 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 473: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

413 Ejercicio 19: Análisis de tablastransparentes en el Dictionary ABAPDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Analizar las propiedades de tablas transparentes en el Dictionary ABAP• Utilizar el Browser de datos para obtener una visión general del contenido de

la tabla

Ejemplo empresarialDesea familiarizarse con el modelo de datos de vuelo. Para ello, debe analizaralgunas de las tablas transparentes relevantes en el Dictionary ABAP y visualizarel contenido con el Browser de datos.

Tarea 1:Examine las propiedades de la tabla de base de datos SPFLI y analice el nombre ylos tipos de datos de los campos de tabla.

1. Visualice la tabla transparente relevante.

2. La tabla tiene campos, de los cuales se indican como camposclave. Los campos de hora de salida y de hora de llegada se llaman

y .Rellene los espacios en blanco para completar las frases.

3. ¿Cuál es la longitud de los campos del punto de salida (CITYFROM) y dedestino (CITYTO)? ¿Por qué tienen las mismas propiedades técnicas?

Tarea 2:Busque el modelo de datos de vuelo en otras tablas de base de datos. Aprovecheque las tablas transparentes relevantes se encuentran en el mismo paquete.

1. En el área de navegación del Object Navigator, liste todas las tablastransparentes que pertenezcan al mismo paquete que SPFLI.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 459

Page 474: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

2. ¿En qué tabla de base de datos están situados los datos de cliente del vuelo?¿Cuál es el nombre del campo del nombre de un cliente del vuelo?

Tarea 3:Averigüe el número de cliente del vuelo del cliente “SAP AG”. Determine elnúmero de vuelos para los que el cliente “SAP AG” tiene una reserva. Encuentreel vuelo más inmediato, determine el punto de salida y el de destino, y si el vueloya está completo.

1. Utilice el Browser de datos para visualizar el contenido de la tabla de basede datos SCUSTOM para el cliente “SAP AG”.

2. ¿Cuál es el número de cliente del vuelo de “SAP AG”?

3. Visualice el contenido de la tabla de base de datos SBOOK para determinarel número de reservas del cliente “SAP AG” y para encontrar el vuelo másinmediato.

4. ¿Qué campos se pueden utilizar para identificar el vuelo correspondientede forma única?

5. Utilice el contenido de la tabla de base de datos SPFLI para determinar elpunto de salida y el destino del vuelo encontrado.

6. ¿El vuelo está completo?

460 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 475: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

Solución 19: Análisis de tablastransparentes en el Dictionary ABAPTarea 1:Examine las propiedades de la tabla de base de datos SPFLI y analice el nombre ylos tipos de datos de los campos de tabla.

1. Visualice la tabla transparente relevante.

a) Seleccione el pulsador Otro objeto ....

b) Seleccione la etiqueta Diccionario.

c) En Tabla de base de datos, introduzca los nombres de las tablas yseleccione Visualizar.

2. La tabla tiene 16 campos, 3 de los cuales se indican como campos clave.Los campos de hora de salida y de hora de llegada se llaman DEPTIME yARRTIME.

Respuesta: 16, 3, DEPTIME, ARRTIME

3. ¿Cuál es la longitud de los campos del punto de salida (CITYFROM) y dedestino (CITYTO)? ¿Por qué tienen las mismas propiedades técnicas?

Respuesta: Los campos tienen una longitud de 20 caracteres. Tienen lasmismas propiedades técnicas porque hacen referencia al mismo dominio,S_CITY.

Tarea 2:Busque el modelo de datos de vuelo en otras tablas de base de datos. Aprovecheque las tablas transparentes relevantes se encuentran en el mismo paquete.

1. En el área de navegación del Object Navigator, liste todas las tablastransparentes que pertenezcan al mismo paquete que SPFLI.

a) Encontrará el nombre del paquete en la etiqueta Propiedades de la tablatransparente (SAPBC_DATAMODEL).

b) En el área de navegación, abra la lista de objetos de este paquete delmodo habitual. Encontrará la tabla transparente en el nodo Objetos dediccionario → Tablas de base de datos.

Consejo: Puede acceder a la lista de objetos más rápidamentey sin el nombre del paquete seleccionando el pulsadorVisualizar lista de objetos de la visualización de tabla de basede datos SPFLI.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 461

Page 476: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

2. ¿En qué tabla de base de datos están situados los datos de cliente del vuelo?¿Cuál es el nombre del campo del nombre de un cliente del vuelo?

Respuesta: Los datos del cliente del vuelo están situados en la tablaSCUSTOM; el nombre del cliente se encuentra en el campo de tabla NAME.

Tarea 3:Averigüe el número de cliente del vuelo del cliente “SAP AG”. Determine elnúmero de vuelos para los que el cliente “SAP AG” tiene una reserva. Encuentreel vuelo más inmediato, determine el punto de salida y el de destino, y si el vueloya está completo.

1. Utilice el Browser de datos para visualizar el contenido de la tabla de basede datos SCUSTOM para el cliente “SAP AG”.

a) Abra la tabla transparente SCUSTOM en el Object Navigator como loha hecho antes.

b) Seleccione el pulsador Contenido para bifurcar hacia el Browserde datos.

c) Ingrese el nombre de cliente como selección y pulse Ejecutar.

2. ¿Cuál es el número de cliente del vuelo de “SAP AG”?

Respuesta: El número de cliente de vuelo de “SAP AG” es “00000001”.

3. Visualice el contenido de la tabla de base de datos SBOOK para determinarel número de reservas del cliente “SAP AG” y para encontrar el vuelo másinmediato.

a) Proceda de forma similar al paso anterior para visualizar el contenidode la tabla de base de datos SBOOK. Especifique el número de clientede vuelo para limitar el contenido.

b) El número de reservas encontradas (“aciertos”) se especifica en la barrade título de la pantalla.

c) Ordene la visualización de acuerdo con la fecha del vuelo, paradeterminar la reserva más inmediata.

Consejo: Como los datos se regeneran antes de cada curso deformación, no es posible realizar ninguna sentencia generalrespecto al vuelo más inmediato en un momento determinado.

Continúa en la página siguiente

462 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 477: 119167612 taw10-01-es

TAW10_1 Lección: Modelado de datos y tablas transparentes del Dictionary ABAP

4. ¿Qué campos se pueden utilizar para identificar el vuelo correspondientede forma única?

Respuesta: Los campos clave necesarios son Mandante (MANDT), IDde compañía aérea (CARRID), Número de conexión (CONNID) y Fechade vuelo (FLDATE).

5. Utilice el contenido de la tabla de base de datos SPFLI para determinar elpunto de salida y el destino del vuelo encontrado.

a) Al visualizar los datos, limite el ID de compañía aérea y el número devuelo al vuelo encontrado anteriormente.

b) Encontrará el punto de salida y el destino en los campos CITYFROMy CITYTO, y los aeropuertos de salida y de llegada en los camposAIRPFROM y AIRPTO.

6. ¿El vuelo está completo?

a) Visualice el contenido de la tabla de base de datos SFLIGHT.

b) Limite la visualización al ID de compañía aérea, número de vuelo yfecha del vuelo determinado anteriormente.

c) Encontrará el número de asientos ocupados y el número máximo deasientos disponibles en los campos SEATSOCC y SEATSMAX.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 463

Page 478: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Resumen de la lección

Ahora podrá:• Explicar el propósito y los beneficios de utilizar un modelo de datos en el

desarrollo de la aplicación• Describir el modelo de datos de vuelo SAP• Describir el significado y la estructura de una tabla transparente

464 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 479: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Lección:419

Lectura de tablas de base de datosDuración de la lección: 90 Minutos

Resumen de la lecciónEn esta lección aprenderá cómo obtener información en tablas de base de datosy cómo leer datos de las mismas. También obtendrá una visión general de lastécnicas que le permiten acceder a múltiples tablas de base de datos.

Esta lección finaliza con una nota acerca de los accesos a base de datos queinician el cambio.

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

• Listar distintos métodos para buscar tablas de base de datos relevantes• Acceso de lectura al programa para las columnas y filas específicas dentro de

una tabla de base de datos determinada• Listar distintos métodos para leer accesos a varias tablas de base de datos

Those participants that already have experience with platform-specific SQLstatements (especially with porting problems) will be particularly enthused aboutABAP Open SQL.

Ejemplo empresarialNecesita evaluar datos de tablas de base de datos. Como no existen componentesde reutilización adecuados para acceder a las tablas de base de datos que desealeer, las implementará usted mismo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 465

Page 480: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Obtención de datos

Gráfico 198: Acceso a base de datos (arquitectura)

SQL es la abreviatura de Structured Query Language, un lenguaje que permitedefinir, modificar y leer el acceso a las tablas de base de datos.

Cualquier sistema de base de datos relacional dispone de un native SQL, quelamentablemente es específico de base de datos. Es decir que un programa ABAPcon sentencias native SQL no se puede utilizar sin restricciones en todos lossistemas SAP (a causa de los distintos sistemas de base de datos de los diferentessistemas SAP).

Por el contrario, Open SQL es un estándar SQL independiente de la base dedatos definido por SAP para el lenguaje ABAP. Las sentencias Open SQL seconvierten dinámicamente en las sentencias de Native SQL correspondientes delsistema de base de datos utilizado actualmente, de manera que son independientesde la base de datos. Estas sentencias permiten al programador de ABAP un accesouniforme a los datos, independientemente del sistema de base de datos instalado.

466 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 481: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 199: Buscar tablas de base de datos

En el gráfico anterior se muestran las opciones para buscar las tablas de base dedatos requeridas.

Naturalmente, también puede ejecutar una búsqueda libre mediante el Sistemade información de Repository.

Antes de que su programa acceda directamente a las tablas de base de datos,debería buscar componentes de reutilización encargados del proceso de lectura. Elgráfico siguiente proporciona un resumen de las rutinas de lectura suministradaspor SAP que puede utilizar en su programa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 467

Page 482: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 200: Componentes de reutilización para la obtención de datos

Existen cuatro tipos de componentes de reutilización que encapsulan los accesos ala base de datos:

• Bases de datos lógicas

(= programas de obtención de datos que leen datos de tablas que van juntasde manera jerárquica)

• Módulos de funciones

(= subrutinas almacenadas en la biblioteca de funciones del sistema SAPcon funciones encapsuladas, como leer de tablas relacionadas de manerajerárquica)

• BAPIs

(= métodos de Business Objects con función de lectura, por ejemplo)

• Métodos de clases globales

Para obtener información detallada acerca de la búsqueda y la utilización de basesde datos lógicas, consulte la documentación online de “entorno de programacióny de tiempo de ejecución ABAP”, sección “acceso a base de datos ABAP” oel curso BC405.

La información acerca de las otras tres técnicas está disponible en las unidadesrelevantes.

468 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 483: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Si no existen componentes de reutilización disponibles para la selección de datos,deberá implementar el acceso de lectura usted mismo. Se recomienda encapsularel acceso por sí mismo en un componente de reutilización, es decir, crear módulosde funciones o métodos de clases globales.

Gráfico 201: Acceso de lectura a base de datos (resumen)

La sentencia de Open SQL SELECT se utiliza para programar el acceso de lecturaa la base de datos. La sentencia SELECT contiene una serie de cláusulas, cada unade las cuales tiene una tarea distinta:

• Entre otras cosas, la cláusula SELECT describe los campos que se puedenleer.

• La cláusula FROM nombra la fuente (tabla o vista de base de datos) desde lacual se deben seleccionar los datos.

• La cláusula INTO determina la variable de destino en la cual se debencolocar los datos seleccionados.

• La cláusula WHERE especifica las columnas de la tabla que se debenseleccionar.

Para obtener información acerca de otras cláusulas, consulte la documentación depalabra clave de la sentencia SELECT.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 469

Page 484: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 202: Lectura de registros individuales

La sentencia SELECT SINGLE permite leer un registro individual de latabla de base de datos. Para garantizar un acceso único, todos los campos clavedeben estar rellenados con la cláusula WHERE. El campo de mandante es unaexcepción: Si no se especifica, se aplica el mandante actual. (Recuerde que unmandante sólo se puede especificar en la sentencia SELECT en combinacióncon el suplemento CLIENT SPECIFIED. En el transcurso de esta lección seproporcionan más detalles sobre este tema).

El asterisco * sirve para especificar que se deben leer todos los campos de la filade tabla seleccionados. Si desea una selección específica de columnas, puedeenumerar los campos requeridos en lugar de *. En el siguiente gráfico se muestracómo hacerlo.

La cláusula INTO sirve para especificar la variable de destino en la cual se debecopiar el registro de datos. Justificada en la izquierda, el área de destino se debeestructurar como la fila de la tabla o los campos requeridos especificados de la fila.

Si el sistema encuentra un registro apropiado, el valor de retorno SY-SUBRCes igual a 0.

470 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 485: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 203: Estructura de destino correspondiente de la lista de campos

Si desea leer sólo una selección determinada de campos de la fila de la tabla,puede especificarla como lista de campos dentro de la sentencia SELECT (comose describe en el gráfico anterior). A continuación, debe nombrar una variable deestructura de destino en la cláusula INTO que tenga la misma estructura quela lista de campos (al menos al principio), es decir, que contenga los campos dela lista en el mismo orden. Sólo es necesario que coincidan los tipos de campocorrespondientes. Los nombres de los campos de estructura de destino no setendrán en cuenta.

Una alternativa para especificar la estructura de destino es listar los campos dedestino correspondientes en la cláusula INTO.

INTO (field_1, ... , field_n)

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 471

Page 486: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 204: Campos de la estructura de destino con los mismos nombresque los de la lista de campos

Si desea utilizar una variable de estructura para recibir el registro de lectura, quetiene campos con el mismo nombre que los campos de la lista de destino, perocon una estructura distinta (campos adicionales, orden de campos distinto), tienesentido utilizar el suplemento CORRESPONDING FIELDS OF. De este modo,sólo se rellenan en el área de destino los campos del mismo nombre. Asegúresede que los tipos de campo correspondientes también son los mismos; en casocontrario (como en la sentencia MOVE), tendrá lugar una conversión (complicada)y es posible que se transporten datos incompletos (causados por bloqueos) a loscampos de destino.

Las ventajas de esta variante son:

• La estructura de destino no debe estar justificada a la izquierda del mismomodo que la lista de campos.

• Esta construcción es fácil de actualizar, puesto que la extensión de la listade campos o de la estructura de destino no requiere la realización de otrasmodificaciones en el programa, siempre que exista un campo de la estructuracon el mismo nombre (y si es posible, del mismo tipo también).

At this point you can already ask the participants to do the exercise on singlerecord access (SELECT SINGLE).

472 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 487: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 205: Lectura de varias filas mediante un loop

Puede utilizar el SELECT loop que se muestra arriba para leer varias filas de unatabla de base de datos sucesivamente en el programa.

La cláusula WHERE determina las líneas que se leen en la estructura de destino yque se procesan mediante el bloque de sentencias especificado en el cuerpo delloop. Es posible conectar varias condiciones lógicas dentro de la cláusula WHEREde forma lógica mediante AND u OR.

La base de datos suministra los datos a la interfaz de base de datos del servidor deaplicación en paquetes. A continuación, el bloque de procesamiento especificadocopia los registros en el área de destino fila por fila para el procesamiento.

El loop se abandona automáticamente una vez leídas y evaluadas todas las filasrequeridas.

El valor de retorno se debe consultar después del loop SELECT (es decir, despuésde la sentencia ENDSELECT). SY-SUBRC tiene el valor 0 si el sistema ha leídocomo mínimo una fila. En este caso, SY-DBCNT contiene el número de registrosleídos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 473

Page 488: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 206: Lectura de varias filas mediante Array Fetch

Puede utilizar el suplemento INTO TABLE para copiar la parte seleccionada dela base de datos en una tabla interna directamente, en lugar de fila por fila. Estatécnica se conoce como array fetch. Es una técnica de alto rendimiento pararellenar una tabla interna con entradas de una tabla de basa de datos, puesto que eltransporte de datos se realiza en bloques y no por filas.

Como Array Fetch no es un tipo de procesamiento de loop, no se requiere ni sepermite una sentencia ENDSELECT .

Del mismo modo que las variantes SELECT tratadas anteriormente, la tablainterna especificada como de destino en Array Fetch se debe estructurar conjustificación a la izquierda como la lista de campos. Si una tabla interna no cumpleeste requisito, debe utilizar el suplemento INTO CORRESPONDING FIELDSOF TABLE , en lugar de INTO TABLE . Allí, las columnas de base de datosespecificadas en la lista de campos se copian en las columnas de la tabla internaque tienen los mismos nombres. Aquí, asegúrese de que los tipos de campo delas columnas correspondientes coinciden, para evitar conversiones complejas yposiblemente datos incompletos en la tabla de destino.

Con el array fetch, se sobrescribe el contenido que pueda tener la tabla interna.Si en lugar de esto desea añadir filas, puede utilizar el suplemento APPENDINGTABLE.

El valor de SY-SUBRC es cero si se ha copiado como mínimo un registro en latabla interna. SY-DBCNT contiene entonces el número de filas leídas.

474 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 489: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 207: Lectura de datos de tablas específicas de mandante

Una tabla de base de datos se denomina específica de mandante si tiene uncampo de mandante (tipo de datos CLNT) como primera columna clave y contieneentradas específicas de mandante.

Si selecciona datos de tablas específicas de mandante sin especificar el mandante,sólo se leen los registros de datos del mandante actual. (El mandante actual setransfiere al sistema de base de datos, donde tiene lugar la obtención de datos.)

Si desea leer datos de un mandante especificado explícitamente, debe especificarel mandante en cuestión en la cláusula WHERE. Sin embargo, tenga en cuentaque esto sólo es posible si utiliza el suplemento CLIENT SPECIFIED despuésde la cláusula FROM.

Puesto que la lectura de todos los mandantes raramente se solicita en la prácticay no es relevante en el contexto de este curso, el campo de mandante se sueleomitir en las presentaciones.

This is a good time to carry out the exercise on the SELECT loop. Participantswho have less difficulty working with internal tables may wish to try the optionalexercise on the Array Fetch.

You should at least show this superior performance alternative to the secondexercise to illustrate the use of the Array Fetch in practice (function moduleBC400_DDS_FLIGHTLIST_GET_OPT).

Aspectos del rendimiento en el acceso a base de datosEn la mayoría de los casos, el acceso a la base de datos supone una exigenciaconsiderable para el requisito de tiempo de ejecución de una aplicación ABAP.Para no sobrecargar innecesariamente el sistema y minimizar el tiempo de esperadel usuario, preste especial atención a los requisitos de tiempo de ejecución

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 475

Page 490: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

concretamente durante el acceso a la base de datos. En Open SQL, hay un ampliorango de tecnologías que le permiten optimizar el requisito de tiempo de ejecución.Algunas de ellas se tratarán brevemente en la sección siguiente.

It is not particularly beneficial to deal with performance issues relating to databaseaccess in detail in an introductory training course. However, the participantsshould at least have been introduced to the terms and basic concepts. The mainaim is to make them aware of the problem. You should therefore try to avoidgoing into too much detail. You can, of course, refer them to the training coursesBC430 and BC402.

índice secundario

Gráfico 208: Acceso mediante campos clave

Toda base de datos gestiona registros de una tabla de base de datos basada enel contenido de campos clave. Si el acceso a la base de datos está restringidopara todos o para los primeros campos clave, la base de datos puede alcanzar losregistros de datos requeridos con rapidez y eficacia.

476 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 491: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 209: Acceso mediante campos no clave

Si el acceso a la base de datos está dirigido a campos que no pertenecen a laclave de tabla (campos no clave), el principio de gestión de pedidos interna no sepuede utilizar para el acceso rápido. En el peor escenario, se deberán buscar lasentradas requeridas en toda la tabla o, como mínimo, en gran parte de ella. Estose denomina búsqueda secuencial y puede provocar tiempos de espera largospara acceder a la base de datos.

Nota: En la ilustración, los registros de la tabla de base de datos seordenan y se almacenan de acuerdo con el campo clave. Algunos sistemasde base de datos realmente funcionan así. Entre otros, no se ordenan losregistros de datos en sí. En lugar de esto, se crea un índice con los camposclave que se denomina índice primario. Este hecho no tiene relevanciapara lo que se explica en este tema.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 477

Page 492: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 210: Acceso mediante índice secundario

Si se accede con frecuencia a una tabla de base de datos mediante una seleccióndeterminada, se debe definir un índice secundario con los campos contenidos enla selección para acelerar los accesos correspondientes.

El índice secundario es una pequeña tabla independiente que incluye el contenidode los campos del índice y una referencia a los registros relevantes para cadaregistro de la tabla de base de datos actual. Si los campos de la selección coincidencon los campos del índice secundario (alineados a la izquierda y continuos,como mínimo), la base de datos busca primero dentro del índice secundario y, acontinuación, lee los registros de datos correspondientes a través de la referencia.

Cree un índice secundario en modo de visualización para la tabla transparenterelevante en el Dictionary ABAP con el pulsador Índices. Cuando active el índice,se creará el índice secundario en la base de datos.

478 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 493: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

La utilización y el modo de uso de un índice secundario durante el acceso a base dedatos dependen de una función del sistema de base de datos llamado optimizadorde base de datos. En Open SQL no es ni posible ni necesario desencadenar el usode un índice secundario especificándolo explícitamente en la sentencia SELECT.

Consejo: Al seleccionar tablas específicas de mandante, el mandante setransmite siempre a la base de datos (en otras palabras, siempre formaparte de la selección). Así, tiene sentido incluir el campo de mandante a lahora de definir un índice también para esas tablas. En tiempo de ejecución,esto se puede utilizar para limitar la búsqueda en la base de datos al bloquede mandante relevante mediante el índice secundario.

Memoria intermedia de tabla SAP

Gráfico 211: Acceso mediante la memoria intermedia de tabla SAP

Con la obtención de datos, se requiere una mayor proporción de tiempo paratransferir los datos del servidor de base de datos al servidor de aplicación. Si losdatos se leen con frecuencia pero rara vez se modifican, puede reducir el tiempode ejecución almacenando los datos en la memoria intermedia del servidor deaplicación.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 479

Page 494: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Cómo almacenar los datos en memoria intermedia y si se puede hacer es unadecisión que se realiza de manera independiente para cada tabla, ya que dependede la frecuencia de lectura o modificación de los datos. La parametrización de lamemoria intermedia se define en las tablas transparentes del Dictionary ABAP(pulsador Parametrizaciones técnicas).

Show the technical settings for table SPFLI.

Atención: La decisión acerca de si la tabla de base de datos sepuede almacenar no es tan simple como parece y deberían realizarlaprogramadores de SAP con experiencia conjuntamente con eladministrador del sistema. La memoria intermedia de tabla SAP esindependiente para cada servidor de aplicación. Si un sistema incluyevarias aplicaciones, un mecanismo de sincronización especial garantizaque, después de realizar los cambios en la base de datos, se invalide elcontenido correspondiente de la memoria intermedia. Sin embargo, lasdemoras temporales en el proceso de sincronización significan que duranteun breve período de tiempo se pueden estar leyendo datos antiguos de lamemoria intermedia. Esto se debe tener en cuenta al tomar una decisiónacerca del almacenamiento en memoria intermedia.

Si un programa ABAP lee una tabla almacenada en memoria intermedia, lainterfaz de base de datos intenta primero obtener los datos requeridos de lamemoria intermedia de tabla SAP. De este modo se acelera el acceso en un factorentre 10 y 100 en contraste con leer datos de la base de datos. El incrementopreciso de la velocidad depende de la estructura de la tabla y de la configuraciónexacta del sistema.

Si los datos requeridos no se encuentran todavía en la memoria intermedia de tablaSAP, se accede a la base de datos. Entonces, los datos de lectura se transfieren dela interfaz de base de datos y se almacenan en la memoria intermedia de tabla SAP.

Consejo: Existen variantes y suplementos para la sentencia SELECTque causan que los datos se lean directamente desde la base de datos,independientemente de la parametrización de la memoria intermedia.Este acceso se llama bypass de la memoria intermedia. Esta clase deacceso puede causar problemas de rendimiento con tablas almacenadas enmemoria intermedia y debe evitarse.

Leer de varias tablas de base de datosA menudo existe la necesidad de leer y visualizar datos de distintas tablas.

480 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 495: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

En general, la técnica con el mejor rendimiento es la implementación medianteuna unión de tablas.

A continuación, se leerán y se presentarán los registros SPFLI a modo de ejemplo.Para cada registro se debe mostrar también el nombre largo de la compañía aérearespectiva, almacenada en SCARR. En el siguiente gráfico se muestra la creaciónlógica de la unión de tablas correspondiente, desde la cual puede seleccionar todoslos datos requeridos mediante la sentencia SELECT.

Gráfico 212: Ejemplo de una unión de tablas

Emphasize that it is possible to achieve the desired result using a loop on SPFLIwith a SELECT SINGLE on SCARR for each loop pass, but that the performanceof this technique is very poor where large datasets are concerned.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 481

Page 496: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 213: Entradas para definir una unión de tablas

Debe especificar tres cosas al definir una unión de tablas:

• Unir tablas

¿A qué tablas de base de datos se debe acceder?

• Condición de enlace

¿Cuál es la condición bajo la cual se resumen en un registro de unión losregistros correspondientes de las tablas unidas?

• Columnas de unión

¿Qué columnas de las tablas unidas deben estar disponibles en la unión detablas?

482 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 497: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Gráfico 214: Opciones de implementación para uniones de tablas

Existen dos opciones para implementar una unión de tablas:

• En el Dictionary ABAP, cree una vista de base de datos que corresponda auna unión de tablas y selecciónela de la misma en su programa.

Para obtener información detallada, consulte la documentación online delWorkbench ABAP, en la sección Dictionary ABAP.

• En su programa, seleccione desde una unión que se defina allí (uniónABAP). En tiempo de ejecución, el sistema genera dinámicamente unaconsulta de base de dados apropiada en la interfaz de base de datos.

Para obtener más información, consulte la documentación de palabra clavede la cláusula FROM de la sentencia SELECT.

Consejo: Una unión de tablas es una vista de las tablas de base de datosrelevantes y no contiene los datos correspondientes de forma redundante.Los datos se leen desde las tablas de base de datos correspondientesmediante la selección de una unión.

En una unión se pueden unir más de dos tablas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 483

Page 498: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Show the online documentation for the SELECT-> FROM clause, in whichthe ABAP join is explained. If there is enough time, you can create a databaseview in the Dictionary with a view of SCARR and SPFLI. To do so, enter bothtables and choose the Relationships function. Select the relationship betweenSCARR and SPFLI. The join condition is suggested automatically. Select someview fields under VIEW Fields. To do so, choose the “table fields” button.However, be sure to select the complete SPFLI key with the client field and thefield SCARR-CARRNAME. To avoid warnings during activation, you shouldoverwrite the default maintenance status with “restricted display/maintenance”.Activate the database view and write a small program with a SELECT on yourview. Make it clear that the data is retrieved from the database tables SPFLI andSCARR according to the view definition and is not, for example, held redundantlyin the view.

Accesos de modificación a base de datos(presentación preliminar)

Gráfico 215: Accesos de modificación a base de datos

Además de la sentencia SELECT, Open SQL también contiene las sentenciasUPDATE, INSERT, DELETE y MODIFY. Sin embargo, los accesos demodificación de la base de datos que son posibles de este modo no se deberíanutilizar sin conocer el concepto de transacción SAP, puesto que podrían causarinconsistencias de datos.

El concepto de transacción SAP se enseña en el curso TAW11.

484 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 499: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Consejo: The key points of the above slide are to point out that datainconsistencies can be caused when the above statements are usedinappropriately and to mention course TAW11 in which the SAPtransaction concept is taught.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 485

Page 500: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

486 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 501: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

439 Ejercicio 20: Obtención de datos medianteacceso a registro individualDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Crear un grupo de funciones• Crear un módulo de funciones• Leer de la base de datos mediante el acceso a registro individual

Ejemplo empresarialDesea desarrollar un programa en el cual se lean los datos de una única conexiónde vuelos desde la base de datos. Encapsule el acceso a la base de datos requeridocon el acceso a registro individual en un módulo de funciones, de manera quepueda reutilizarlo.

Modelo:

Ninguno

Solución:

BC400_DDS (grupo de funciones)BC400_DDS_CONNECTION_GET (módulo de funciones)

Tarea 1:Cree un grupo de funciones.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice la interfazdel módulo de funciones de manera que importe un ID de compañía aérea y unnúmero de conexión de vuelos, y que devuelva los datos de la conexión de vuelos.Cree también una excepción para el caso que no se encuentren datos.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_CONNECTION_GET).

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 487

Page 502: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

2. Cree un parámetro para export para los datos detallados de una conexión devuelos (nombre sugerido: ES_CONNECTION). Asigne al parámetro el tipode estructura de diccionario BC400_S_CONNECTION.

3. Cree un parámetro para import separado para el ID de compañía aérea y elnúmero de conexión (nombres sugeridos: IV_CARRID y IV_CONNID).Para la tipificación, seleccione componentes apropiados del tipo de estructurade diccionario BC400_S_CONNECTION.

4. Cree una excepción (clásica) (nombre sugerido: NO_DATA).

Tarea 3:En el código fuente del módulo de funciones, implemente un acceso a registroindividual a la tabla de base de datos SPFLI. Para ello, utilice los parámetros deinterfaz del módulo de funciones. Presente una excepción si no se encuentrandatos para la selección.

1. Implemente un acceso a registro individual (SELECT SINGLE) a la tablade base de datos SPFLI que rellene con valores el parámetro para exportdel módulo de funciones. Realice una lista de todos los campos de tablaque aparecen como componentes en el parámetro para export. Asegúresede que el orden de los campos coincide con el orden de los componentesde estructura.

2. Aplique una condición de selección (cláusula WHERE) a la sentenciaSELECT. Para ello, utilice ambos parámetros para import del módulo defunciones.

3. Presente la excepción para el módulo de funciones si el acceso a la base dedatos no devuelve datos (sy-subrc <> 0).

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

2. Pruebe su módulo de funciones.

488 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 503: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Solución 20: Obtención de datos medianteacceso a registro individualTarea 1:Cree un grupo de funciones.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

a) En el área de navegación, abra el menú contextual del paquete yseleccione Crear → Grupo de funciones.

b) Ingrese el nombre del grupo de funciones y un texto breve, y seleccioneGrabar.

c) Asigne el grupo de funciones al paquete y a la solicitud de la formahabitual.

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice la interfazdel módulo de funciones de manera que importe un ID de compañía aérea y unnúmero de conexión de vuelos, y que devuelva los datos de la conexión de vuelos.Cree también una excepción para el caso que no se encuentren datos.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_CONNECTION_GET).

a) En el área de navegación, abra el menú contextual de su grupo defunciones y seleccione Crear → Módulo de funciones.

b) Ingrese el nombre del módulo de funciones y un texto breve, yseleccione Grabar.

2. Cree un parámetro para export para los datos detallados de una conexión devuelos (nombre sugerido: ES_CONNECTION). Asigne al parámetro el tipode estructura de diccionario BC400_S_CONNECTION.

a) Abra la etiqueta Exportar. Indique el nombre del parámetro y el tipode datos.

3. Cree un parámetro para import separado para el ID de compañía aérea y elnúmero de conexión (nombres sugeridos: IV_CARRID y IV_CONNID).Para la tipificación, seleccione componentes apropiados del tipo de estructurade diccionario BC400_S_CONNECTION.

a) Abra la etiqueta Importar. Indique el nombre de los parámetros y lostipos de datos.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 489

Page 504: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

4. Cree una excepción (clásica) (nombre sugerido: NO_DATA).

a) Abra la etiqueta Excepciones. Indique el nombre de la excepción y untexto breve. No debe seleccionar el campo Clases de excepciones.

Tarea 3:En el código fuente del módulo de funciones, implemente un acceso a registroindividual a la tabla de base de datos SPFLI. Para ello, utilice los parámetros deinterfaz del módulo de funciones. Presente una excepción si no se encuentrandatos para la selección.

1. Implemente un acceso a registro individual (SELECT SINGLE) a la tablade base de datos SPFLI que rellene con valores el parámetro para exportdel módulo de funciones. Realice una lista de todos los campos de tablaque aparecen como componentes en el parámetro para export. Asegúresede que el orden de los campos coincide con el orden de los componentesde estructura.

a) Consulte el extracto del código fuente de la solución modelo.

2. Aplique una condición de selección (cláusula WHERE) a la sentenciaSELECT. Para ello, utilice ambos parámetros para import del módulo defunciones.

a) Consulte el extracto del código fuente de la solución modelo.

3. Presente la excepción para el módulo de funciones si el acceso a la base dedatos no devuelve datos (sy-subrc <> 0).

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

Continúa en la página siguiente

490 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 505: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

2. Pruebe su módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

b) Introduzca valores en los parámetros para import y pulse .

c) Verifique el resultado.

Consejo: Verifique también que se muestra la excepción si seproduce un error.

ResultadoExtracto del código fuente de la solución modelo:

FUNCTION BC400_DDS_CONNECTION_GET .

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(IV_CARRID) TYPE BC400_S_FLIGHT-CARRID

*" REFERENCE(IV_CONNID) TYPE BC400_S_FLIGHT-CONNID

*" EXPORTING

*" REFERENCE(ES_CONNECTION) TYPE BC400_S_CONNECTION

*" EXCEPTIONS

*" NO_DATA

*"----------------------------------------------------------------------

SELECT SINGLE carrid connid cityfrom airpfrom

cityto airpto fltime deptime arrtime

FROM spfli

INTO es_connection

WHERE carrid = iv_carrid

AND connid = iv_connid.

IF sy-subrc <> 0.

RAISE no_data.

ENDIF.

ENDFUNCTION.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 491

Page 506: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

492 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 507: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

445 Ejercicio 21: Obtención de datos medianteun loop SELECTDuración del ejercicio: 25 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Leer de la base de datos mediante un loop de SELECT• Rellenar una tabla interna por registro

Ejemplo empresarialDesea desarrollar un programa en el cual se lean todas las horas de vuelo para unaconexión de vuelos individual desde la base de datos. Encapsule el acceso a labase de datos requerido mediante un loop de SELECT en un módulo de funciones,de manera que pueda reutilizarlo.

Modelo:

Ninguno

Solución:

BC400_DDS (grupo de funciones)BC400_DDS_FLIGHTLIST_GET (módulo de funciones)

Tarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice la interfazdel módulo de funciones de manera que importe un ID de compañía aérea y unnúmero de conexión de vuelos, y que devuelva una lista de las horas de vuelo.Cree también una excepción para el caso que no se encuentren datos.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_FLIGHTLIST_GET).

2. Cree un parámetro para export para la lista de fechas de vuelos (nombresugerido: ET_FLIGHTS). Asigne al parámetro el tipo de tabla deDictionary BC400_T_FLIGHTS.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 493

Page 508: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

3. Cree un parámetro para import separado para el ID de compañía aérea y elnúmero de conexión (nombres sugeridos: IV_CARRID y IV_CONNID).Para tipificar, seleccione componentes apropiados del tipo de estructuraBC400_S_FLIGHT (tipo de línea del tipo de tabla BC400_T_FLIGHTS).

4. Cree una excepción (clásica) (nombre sugerido: NO_DATA).

Tarea 3:En el código fuente del módulo de funciones, implemente un loop SELECT a latabla de base de datos SPFLI. Asegúrese de que el parámetro para export delmódulo de funciones se rellena con una fila nueva en cada transferencia de loop.Presente una excepción si no se encuentran datos para la selección.

1. Declare un objeto de datos local y estructurado en el módulo de funciones(nombre sugerido: ls_flight) que se pueda utilizar como área de trabajo parael parámetro para export (tabla interna).

2. Implemente un loop SELECT en la tabla de base de datos SFLIGHT querellene el objeto de datos locales con valores en cada transferencia de loop.Liste todos los campos de tabla que aparecen como componentes en el tipode línea del parámetro para export. Asegúrese de que el orden de los camposcoincide con el orden de los componentes de estructura.

3. Aplique una selección de condición (cláusula WHERE) a la sentenciaSELECT. Para ello, utilice ambos parámetros para import del módulo defunciones.

4. Utilice el objeto de datos local para añadir una nueva línea al parámetro paraexport para cada transferencia de loop (sentencia APPEND).

Calcule previamente el uso de cada registro de datos como porcentaje dentrodel loop (componente de estructura PERCENTAGE). Para ello, utilice elnúmero máximo de asientos y el número de asientos ocupados (componentesde estructura SEATSMAX y SEATSOCC).

5. Asegúrese de que el parámetro para export no contenga datos antes de laprimera transferencia de loop.

Consejo: Si fija la llamada por valor para el parámetro para export,el parámetro será inicial antes de cada llamada de módulo defunciones. Sin embargo, con los parámetros de tipo de tabla, serecomienda la llamada por transferencia por motivos de rendimiento.En este caso, el parámetro para export puede contener ya datos si elmódulo de funciones es llamado con un parámetro real no inicial.

6. Presente la excepción para el módulo de funciones si el acceso a la base dedatos no devuelve datos (sy-subrc <> 0).

Continúa en la página siguiente

494 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 509: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

7. (OPCIONAL) Después de haber llamado correctamente la sentenciaSELECT, clasifique la lista de vuelos en orden descendente de acuerdo conel porcentaje de utilización antes de devolver los datos.

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

2. Pruebe su módulo de funciones.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 495

Page 510: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Solución 21: Obtención de datos medianteun loop SELECTTarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

a) En el área de navegación, abra el menú contextual del paquete yseleccione Crear → Grupo de funciones.

b) Ingrese el nombre del grupo de funciones y un texto breve, y seleccioneGrabar.

c) Asigne el grupo de funciones al paquete y a la solicitud de la formahabitual.

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice la interfazdel módulo de funciones de manera que importe un ID de compañía aérea y unnúmero de conexión de vuelos, y que devuelva una lista de las horas de vuelo.Cree también una excepción para el caso que no se encuentren datos.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_FLIGHTLIST_GET).

a) En el área de navegación, abra el menú contextual de su grupo defunciones y seleccione Crear → Módulo de funciones.

b) Ingrese el nombre del módulo de funciones y un texto breve, yseleccione Grabar.

2. Cree un parámetro para export para la lista de fechas de vuelos (nombresugerido: ET_FLIGHTS). Asigne al parámetro el tipo de tabla deDictionary BC400_T_FLIGHTS.

a) Abra la etiqueta Exportar. Indique el nombre del parámetro y el tipode datos.

3. Cree un parámetro para import separado para el ID de compañía aérea y elnúmero de conexión (nombres sugeridos: IV_CARRID y IV_CONNID).Para tipificar, seleccione componentes apropiados del tipo de estructuraBC400_S_FLIGHT (tipo de línea del tipo de tabla BC400_T_FLIGHTS).

a) Abra la etiqueta Importar. Indique el nombre de los parámetros y lostipos de datos.

Continúa en la página siguiente

496 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 511: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

4. Cree una excepción (clásica) (nombre sugerido: NO_DATA).

a) Abra la etiqueta Excepciones. Indique el nombre de la excepción y untexto breve. No seleccione el campo Clases de excepciones.

Tarea 3:En el código fuente del módulo de funciones, implemente un loop SELECT a latabla de base de datos SPFLI. Asegúrese de que el parámetro para export delmódulo de funciones se rellena con una fila nueva en cada transferencia de loop.Presente una excepción si no se encuentran datos para la selección.

1. Declare un objeto de datos local y estructurado en el módulo de funciones(nombre sugerido: ls_flight) que se pueda utilizar como área de trabajo parael parámetro para export (tabla interna).

a) Declare el objeto de datos bien con referencia directa al tipo de línea(tipo de estructura de diccionario BC400_S_FLIGHT) o bien relativaal parámetro para export (LIKE LINE OF). Consulte el extracto delcódigo fuente de la solución modelo.

2. Implemente un loop SELECT en la tabla de base de datos SFLIGHT querellene el objeto de datos locales con valores en cada transferencia de loop.Liste todos los campos de tabla que aparecen como componentes en el tipode línea del parámetro para export. Asegúrese de que el orden de los camposcoincide con el orden de los componentes de estructura.

a) Consulte el extracto del código fuente de la solución modelo.

3. Aplique una selección de condición (cláusula WHERE) a la sentenciaSELECT. Para ello, utilice ambos parámetros para import del módulo defunciones.

a) Consulte el extracto del código fuente de la solución modelo.

4. Utilice el objeto de datos local para añadir una nueva línea al parámetro paraexport para cada transferencia de loop (sentencia APPEND).

Calcule previamente el uso de cada registro de datos como porcentaje dentrodel loop (componente de estructura PERCENTAGE). Para ello, utilice elnúmero máximo de asientos y el número de asientos ocupados (componentesde estructura SEATSMAX y SEATSOCC).

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 497

Page 512: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

5. Asegúrese de que el parámetro para export no contenga datos antes de laprimera transferencia de loop.

Consejo: Si fija la llamada por valor para el parámetro para export,el parámetro será inicial antes de cada llamada de módulo defunciones. Sin embargo, con los parámetros de tipo de tabla, serecomienda la llamada por transferencia por motivos de rendimiento.En este caso, el parámetro para export puede contener ya datos si elmódulo de funciones es llamado con un parámetro real no inicial.

a) Sentencia CLEAR. Consulte el extracto del código fuente de la soluciónmodelo.

6. Presente la excepción para el módulo de funciones si el acceso a la base dedatos no devuelve datos (sy-subrc <> 0).

a) Consulte el extracto del código fuente de la solución modelo.

7. (OPCIONAL) Después de haber llamado correctamente la sentenciaSELECT, clasifique la lista de vuelos en orden descendente de acuerdo conel porcentaje de utilización antes de devolver los datos.

a) Sentencia SORT. Consulte el extracto del código fuente de la soluciónmodelo.

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

2. Pruebe su módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

b) Introduzca valores en los parámetros para import y pulse .

c) Verifique el resultado.

Consejo: Verifique también que se muestra la excepción si seproduce un error.

ResultadoExtracto del código fuente de la solución modelo:

FUNCTION bc400_dds_flightlist_get .

Continúa en la página siguiente

498 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 513: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(IV_CARRID) TYPE BC400_S_FLIGHT-CARRID

*" REFERENCE(IV_CONNID) TYPE BC400_S_FLIGHT-CONNID

*" EXPORTING

*" REFERENCE(ET_FLIGHTS) TYPE BC400_T_FLIGHTS

*" EXCEPTIONS

*" NO_DATA

*"----------------------------------------------------------------------

DATA ls_flight TYPE bc400_s_flight.

CLEAR et_flights.

SELECT carrid connid fldate seatsmax seatsocc

FROM sflight

INTO ls_flight

WHERE carrid = iv_carrid

AND connid = iv_connid.

ls_flight-percentage = ls_flight-seatsocc / ls_flight-seatsmax * 100.

APPEND ls_flight TO et_flights.

ENDSELECT.

IF sy-subrc <> 0.

RAISE no_data.

ELSE.

SORT et_flights BY percentage DESCENDING.

ENDIF.

ENDFUNCTION.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 499

Page 514: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

500 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 515: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

453 Ejercicio 22: (Opcional) Obtención dedatos por acceso en masa (Array Fetch)Duración del ejercicio: 25 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Leer de la base de datos mediante Array Fetch• Rellenar una tabla interna completamente

Ejemplo empresarialDesea desarrollar un programa en el cual se lean todos los datos de vuelo para unaconexión de vuelos individual desde la base de datos. Encapsule el acceso a labase de datos requerido mediante Array Fetch en un módulo de funciones, demanera que pueda reutilizarlo.

Modelo:

BC400_DDS (grupo de funciones)BC400_DDS_FLIGHTLIST_GET (módulo de funciones)

Solución:

BC400_DDS (grupo de funciones)BC400_DDS_FLIGHTLIST_GET_OPT (módulo de funciones)

Tarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

Tarea 2:Copie el módulo de funciones BC400_DDS_FLIGHTLIST_GET delgrupo de funciones BC400_DDS o su propio módulo de funcionesZ_BC400_##_FLIGHTLIST_GET con un nombre nuevo en su propio módulode funciones.

1. Copie el módulo de funciones (nombre nuevo:Z_BC400_##_FLIGHTLIST_GET_OPT)

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 501

Page 516: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Tarea 3:Primero, transforme el loop SELECT en un comentario y sustitúyalo por unacceso a base de datos en el que el parámetro para export del módulo de funciones(tabla interna) se rellene directamente con datos (Array Fetch). A continuación,implemente un loop a través de la tabla interna para calcular el porcentaje deutilización de cada hora de vuelo.

1. Transforme todo el loop SELECT de SELECT a ENDSELECT en uncomentario.

2. Sustituya el loop SELECT con un Array Fetch que rellene directamente elparámetro para export del módulo de funciones. Utilice la misma lista decampos y la condición WHERE que para el loop SELECT.

3. Implemente un loop a través de la tabla interna (LOOP ... ENDLOOP). Elloop sólo debe ejecutarse si el acceso a la base de datos devuelve datos.Utilice el objeto de datos estructurado local como área de trabajo y calcule elporcentaje de utilización dentro del loop como antes.

4. Utilice la sentencia MODIFY para escribir la línea modificada de nuevo enla tabla interna del loop después del cálculo.

Utilice el suplemento TRANSPORTING percentage para actualizarúnicamente el campo modificado.

Utilice el suplemento INDEX sy-tabix para modificar la línea actual.

Consejo: El suplemento INDEX sy-tabix es opcional dentrode un LOOP. Sin embargo, para que el código fuente sea másinteligible, es recomendable no usarlo.

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

2. Pruebe su módulo de funciones.

502 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 517: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Solución 22: (Opcional) Obtención dedatos por acceso en masa (Array Fetch)Tarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

a) En el área de navegación, abra el menú contextual del paquete yseleccione Crear → Grupo de funciones.

b) Ingrese el nombre del grupo de funciones y un texto breve, y seleccioneGrabar.

c) Asigne el grupo de funciones al paquete y a la solicitud de la formahabitual.

Tarea 2:Copie el módulo de funciones BC400_DDS_FLIGHTLIST_GET delgrupo de funciones BC400_DDS o su propio módulo de funcionesZ_BC400_##_FLIGHTLIST_GET con un nombre nuevo en su propio módulode funciones.

1. Copie el módulo de funciones (nombre nuevo:Z_BC400_##_FLIGHTLIST_GET_OPT)

a) En el área de navegación, visualice el grupo de funciones que contieneel módulo de funciones que se debe copiar.

b) Abra el menú contextual del módulo de funciones y seleccione Copiar.

c) Ingrese el nombre del nuevo módulo de funciones, así como el grupode funciones donde se debe crear, y seleccione Copiar.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 503

Page 518: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Tarea 3:Primero, transforme el loop SELECT en un comentario y sustitúyalo por unacceso a base de datos en el que el parámetro para export del módulo de funciones(tabla interna) se rellene directamente con datos (Array Fetch). A continuación,implemente un loop a través de la tabla interna para calcular el porcentaje deutilización de cada hora de vuelo.

1. Transforme todo el loop SELECT de SELECT a ENDSELECT en uncomentario.

a) Seleccione el área correspondiente en el editor.

b) Abra el menú contextual de esta área y, dependiendo del editor fijado,seleccione Comentario o Formato → Líneas de comentario.

Como alternativa, puede utilizar la combinación de teclas Ctrl + <en ambos editores.

2. Sustituya el loop SELECT con un Array Fetch que rellene directamente elparámetro para export del módulo de funciones. Utilice la misma lista decampos y la condición WHERE que para el loop SELECT.

a) Consulte el extracto del código fuente de la solución modelo.

3. Implemente un loop a través de la tabla interna (LOOP ... ENDLOOP). Elloop sólo debe ejecutarse si el acceso a la base de datos devuelve datos.Utilice el objeto de datos estructurado local como área de trabajo y calcule elporcentaje de utilización dentro del loop como antes.

a) Consulte el extracto del código fuente de la solución modelo.

4. Utilice la sentencia MODIFY para escribir la línea modificada de nuevo enla tabla interna del loop después del cálculo.

Utilice el suplemento TRANSPORTING percentage para actualizarúnicamente el campo modificado.

Utilice el suplemento INDEX sy-tabix para modificar la línea actual.

Consejo: El suplemento INDEX sy-tabix es opcional dentrode un LOOP. Sin embargo, para que el código fuente sea másinteligible, es recomendable no usarlo.

a) Consulte el extracto del código fuente de la solución modelo.

Continúa en la página siguiente

504 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 519: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

2. Pruebe su módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

b) Introduzca valores en los parámetros para import y pulse .

c) Verifique el resultado.

Consejo: Verifique también que se muestra la excepción si seproduce un error.

ResultadoExtracto del código fuente de la solución modelo:

FUNCTION bc400_dds_flightlist_get_opt .

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(IV_CARRID) TYPE BC400_S_FLIGHT-CARRID

*" REFERENCE(IV_CONNID) TYPE BC400_S_FLIGHT-CONNID

*" EXPORTING

*" REFERENCE(ET_FLIGHTS) TYPE BC400_T_FLIGHTS

*" EXCEPTIONS

*" NO_DATA

*"----------------------------------------------------------------------

DATA ls_flight TYPE bc400_s_flight.

* SELECT carrid connid fldate seatsmax seatsocc

* FROM sflight

* INTO ls_flight

* WHERE carrid = iv_carrid

* AND connid = iv_connid.

*

* ls_flight-percentage = ls_flight-seatsocc / ls_flight-seatsmax * 100.

* APPEND ls_flight TO et_flights.

* ENDSELECT.

SELECT carrid connid fldate seatsmax seatsocc

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 505

Page 520: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

FROM sflight

INTO TABLE et_flights

WHERE carrid = iv_carrid

AND connid = iv_connid.

IF sy-subrc <> 0.

RAISE no_data.

ELSE.

LOOP AT et_flights INTO ls_flight.

ls_flight-percentage = ls_flight-seatsocc / ls_flight-seatsmax * 100.

MODIFY et_flights FROM ls_flight

INDEX sy-tabix

TRANSPORTING percentage.

ENDLOOP.

SORT et_flights BY percentage DESCENDING.

ENDIF.

ENDFUNCTION.

506 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 521: 119167612 taw10-01-es

TAW10_1 Lección: Lectura de tablas de base de datos

Resumen de la lección

Ahora podrá:• Listar distintos métodos para buscar tablas de base de datos relevantes• Acceso de lectura al programa para las columnas y filas específicas dentro de

una tabla de base de datos determinada• Listar distintos métodos para leer accesos a varias tablas de base de datos

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 507

Page 522: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Lección:460

Verificación de autorizaciónDuración de la lección: 45 Minutos

Resumen de la lecciónEn esta lección aprenderá por qué es útil una verificación de autorización y cómoincluirla en sus programas.

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

• Explicar el concepto de autorización SAP• Implementar verificaciones de autorización

For didactic reasons, this important topic has been placed in the context of dataretrieval. It is very important that the participants understand the authorizationconcept and authorization check and can use them in their programs.

You should also point out that implementing an authorization check using thecorresponding program attribute is too inflexible and should only be used insimple cases.

Implement an authorization concept for the flight data model (authorization objectS_CARRID). Use the pattern pushbutton in the ABAP Editor.

Double-click on the authorization object in the AUTHORITY CHECK statementto show how to find out the permissible activities for an object.

Implement the authorization check for easier reuse in a function module of thesame function group that also contains the accesses to the database tables of theflight data model. Make it clear to the participants that database accesses andrelevant authorization checks are grouped together in this way.

Show how you can check the entries (for example, activities) in the functionmodule.

Finally, show how to search for authorization objects in the Repository InformationSystem.

Ejemplo empresarialLas verificaciones de autorización son necesarias en sus programas para protegerlos datos del acceso no autorizado.

508 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 523: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

Verificaciones de autorizaciónLos datos críticos y las partes del alcance de función del sistema SAP debenprotegerse del acceso no autorizado. Debe implementar verificaciones deautorización en su programa para que el usuario sólo pueda acceder a áreas paralas cuales está autorizado. El gráfico siguiente ilustra el concepto de autorizaciónde SAP.

Gráfico 216: El concepto de autorización de SAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 509

Page 524: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 217: Objetos de autorización y autorizaciones (ejemplo)

Los objetos de autorización se pueden definir dentro de las clases de objeto.Cuando define un objeto de autorización, debe especificar los campos apropiados(sin valores). Se crea una autorización real asignando a continuación valores aesos campos. Esta autorización se puede integrar en el registro maestro delusuario mediante un perfil de autorización.

Es posible crear varias autorizaciones distintas (para la integración en distintosregistros maestros del usuario) para un objeto de autorización.

510 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 525: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

Gráfico 218: Verificación de autorización (principio)

En tiempo de ejecución, puede utilizar la sentencia AUTHORITY-CHECK paraverificar si el usuario actual dispone de la autorización requerida para ejecutar lafunción en su registro maestro de usuario. Según el resultado de la verificación(sy-subrc), puede continuar con su programa según corresponda:

sy-subrc = 0: El usuario tiene la autorización requerida para la funciónEjecutar (por ejemplo SELECT).Otro resultado: Autorización no disponible -> Nota apropiada para elusuario, por ejemplo.

Consejo: Igual que la técnica descrita, también tiene la posibilidadde controlar el acceso a programas enteros y a transacciones mediantelas autorizaciones. Sin embargo, el programador debería considerarestas verificaciones como suplementos y no como sustituciones para laverificación de autorización explícita.

En circunstancias normales, la definición de objetos de autorización es parte dela modelación de datos y de la creación de tablas de base de datos. Como eneste curso accedemos a un modelo de datos existente, utilizamos el objeto deautorización S_CARRID que pertenece a este modelo de datos.

La implementación del concepto de autorización es una de las tareas delprogramador que programa el acceso a las tablas de base de datos.

Los pasos siguientes, como definir autorizaciones y perfiles y designar los registrosmaestros de usuario, pertenecen a las tareas del administrador.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 511

Page 526: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 219: Visualización de objetos de autorización

Antes de poder implementar la verificación de autorización requerida en suprograma, debe determinar la estructura (los campos) del concepto de autorizaciónrespectivo. Un objeto suele consistir en el campo ACTVT (actividad) y en otrocampo que especifica el tipo de datos que se debe proteger (p. ej., número dematerial, compañía aérea, etc.) Los valores de estos campos de autorizaciónespecifican lo que el usuario está autorizado a hacer.

Puede visualizar un objeto de autorización directamente en el Workbench ABAP(por ejemplo, mediante el pulsador Otro objeto ..., o la etiqueta Otro). Tambiénpuede utilizar la transacción SU21. También obtendrá un resumen de todos losobjetos de autorización creados en el sistema.

El siguiente gráfico muestra cómo se implementa una verificación de autorización.

512 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 527: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

Gráfico 220: Verificación de autorización (ejemplo de sintaxis)

Para la verificación de autorización del programa, especifique la autorizaciónque se debe verificar en el registro maestro del usuario actual. La autorizaciónse especifica con el objeto de autorización, sus campos, así como los valores decampo apropiados. Consulte la sintaxis en el gráfico anterior.

En el ejemplo, existe una verificación de si el usuario tiene la autorización parael objeto S_CARRID, en el que el campo CARRID (compañía aérea) contienela compañía aérea introducida por el usuario y el campo ACTVT (actividad)contiene el valor "03" (visualización).

Después de la sentencia AUTHORITY-CHECK, debe verificar el código de retornosy-subrc y supervisar el tratamiento posterior de su programa según corresponda.

Consejo: Si no desea verificar un campo, no lo ingrese en la sentenciaAUTHORITY-CHECK, o no ingrese DUMMY como valor de campo.DUMMY es una descripción predefinida que se introduce sin comillas.

Un ejemplo de verificación de campo suprimido: Al llamar una operaciónde modificación, el sistema siempre debe verificar inmediatamente si elusuario tiene autorización de modificación para cualquier compañíaaérea. Si la verificación falla, se debe mostrar inmediatamente un mensajeapropiado al usuario. Una verificación así se puede implementar con lasintaxis siguiente:

AUTHORITY-CHECK OBJECT 'S_CARRID'

ID 'CARRID' DUMMY

ID 'ACTVT' FIELD '02'.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 513

Page 528: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Gráfico 221: Implementación de verificaciones de autorización en programas

Para evitar errores ortográficos en nombres de objetos y de campos, debe tenerla sentencia AUTHORITY-CHECK generada en su código fuente mediante elbotón Patrón . Después de esto, actualice los valores de campo e implemente laevaluación de sy-subrc.

Now ask the participants to carry out the exercise.

514 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 529: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

467 Ejercicio 23: Verificación de autorizaciónDuración del ejercicio: 10 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Implementar verificaciones de autorización

Ejemplo empresarialDesea desarrollar un programa en el cual se lean los datos del modelo de vuelodesde la base de datos. El acceso a los datos de este modelo se controla medianteautorizaciones del objeto de autorización S_CARRID. Para ello, necesita realizaruna verificación de autorización. Para hacer que la verificación de autorización sepueda reutilizar, encapsúlela en un módulo de funciones.

Modelo:

Ninguno

Solución:

BC400_DDS_AUTH_CHECK (módulo de funciones)

Tarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice lainterfaz del módulo de funciones de manera que importe un ID de compañía aéreay una actividad para la verificación de autorización. Cree dos excepciones para laconfirmación: una para cuando no exista ninguna autorización y otra para cuandoel autor de la llamada haya especificado una actividad no válida.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_AUTH_CHECK).

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 515

Page 530: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

2. Cree un parámetro para import separado para el ID de compañía aérea yla actividad (nombres sugeridos: IV_CARRID y IV_ACTIVITY). Paratipificar el elemento de datos, seleccione S_CARR_ID y ACTIV_AUTH.

Consejo: Los elementos de datos correctos se definen en el objetode autorización. Para hacerlo, abra el objeto de autorizaciónS_CARRID en modo de visualización y seleccione la ayuda paraentradas (ayuda F4) para uno de los campos de autorización. Aquíencontrará el elemento de datos relevante (segunda columna) decada campo de autorización (primera columna).

3. Cree dos excepciones (clásicas) (nombres sugeridos: NO_AUTH yWRONG_ACTIVITY).

Tarea 3:Implemente una verificación de autorización en el código fuente para el objetode autorización S_CARRID. Emita una excepción si

• la autorización no existe

• el autor de la llamada no ha especificado ninguna de las actividadesrelevantes.

1. Implemente una verificación de autorización para el objeto de autorizaciónS_CARRID. Suministre los parámetros para import del módulo de funcionesa los campos de autorización. Evalúe el valor de retorno (sy-subrc) y emitauna excepción si falta la autorización.

Consejo: Debería usar la función Patrón, puesto que la verificaciónde autorización es muy intolerante con los errores tipográficos y loserrores con el uso de mayúsculas/minúsculas.

2. Antes de la verificación de autorización, asegúrese de que el autor de lallamada ha especificado sólo una de las actividades relevantes. En casonecesario, emita una excepción.

Consejo: Las actividades relevantes se definen en el objeto deautorización. Para hacerlo, abra el objeto de autorización en modode visualización y seleccione el pulsador Actividades permitidasubicado en la parte inferior de la pantalla.

Continúa en la página siguiente

516 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 531: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

2. Pruebe su módulo de funciones.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 517

Page 532: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

Solución 23: Verificación de autorizaciónTarea 1:Cree un grupo de funciones si no existe ninguno todavía.

1. Cree un nuevo grupo de funciones en el paquete (nombre sugerido:ZBC400_##).

a) En el área de navegación, abra el menú contextual del paquete yseleccione Crear → Grupo de funciones.

b) Ingrese el nombre del grupo de funciones y un texto breve, y seleccioneGrabar.

c) Asigne el grupo de funciones al paquete y a la solicitud de la formahabitual.

Tarea 2:Cree un nuevo módulo de funciones en el grupo de funciones. Actualice lainterfaz del módulo de funciones de manera que importe un ID de compañía aéreay una actividad para la verificación de autorización. Cree dos excepciones para laconfirmación: una para cuando no exista ninguna autorización y otra para cuandoel autor de la llamada haya especificado una actividad no válida.

1. Cree un nuevo módulo de funciones en su grupo de funciones (nombresugerido: Z_BC400_##_AUTH_CHECK).

a) En el área de navegación, abra el menú contextual de su grupo defunciones y seleccione Crear → Módulo de funciones.

b) Ingrese el nombre del módulo de funciones y un texto breve, yseleccione Grabar.

2. Cree un parámetro para import separado para el ID de compañía aérea yla actividad (nombres sugeridos: IV_CARRID y IV_ACTIVITY). Paratipificar el elemento de datos, seleccione S_CARR_ID y ACTIV_AUTH.

Consejo: Los elementos de datos correctos se definen en el objetode autorización. Para hacerlo, abra el objeto de autorizaciónS_CARRID en modo de visualización y seleccione la ayuda paraentradas (ayuda F4) para uno de los campos de autorización. Aquíencontrará el elemento de datos relevante (segunda columna) decada campo de autorización (primera columna).

a) Abra la etiqueta Importar. Indique el nombre de los parámetros y lostipos de datos.

Continúa en la página siguiente

518 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 533: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

3. Cree dos excepciones (clásicas) (nombres sugeridos: NO_AUTH yWRONG_ACTIVITY).

a) Abra la etiqueta Excepciones. Indique los nombres de las excepcionesy un texto breve. No fije el indicador Clases de excepciones.

Tarea 3:Implemente una verificación de autorización en el código fuente para el objetode autorización S_CARRID. Emita una excepción si

• la autorización no existe

• el autor de la llamada no ha especificado ninguna de las actividadesrelevantes.

1. Implemente una verificación de autorización para el objeto de autorizaciónS_CARRID. Suministre los parámetros para import del módulo de funcionesa los campos de autorización. Evalúe el valor de retorno (sy-subrc) y emitauna excepción si falta la autorización.

Consejo: Debería usar la función Patrón, puesto que la verificaciónde autorización es muy intolerante con los errores tipográficos y loserrores con el uso de mayúsculas/minúsculas.

a) Consulte el extracto del código fuente de la solución modelo.

2. Antes de la verificación de autorización, asegúrese de que el autor de lallamada ha especificado sólo una de las actividades relevantes. En casonecesario, emita una excepción.

Consejo: Las actividades relevantes se definen en el objeto deautorización. Para hacerlo, abra el objeto de autorización en modode visualización y seleccione el pulsador Actividades permitidasubicado en la parte inferior de la pantalla.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 4:Active y realice un test del módulo de funciones.

1. Active el módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 519

Page 534: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

2. Pruebe su módulo de funciones.

a) En la barra de herramientas Function Builder, seleccione el pulsador .

b) Introduzca valores en los parámetros para import y pulse .

c) Verifique el resultado.

Consejo: Verifique también que se muestra la excepción si seproduce un error.

ResultadoExtracto del código fuente de la solución modelo:

FUNCTION bc400_dds_auth_check.

*"----------------------------------------------------------------------

*"*"Lokale Schnittstelle:

*" IMPORTING

*" REFERENCE(IV_CARRID) TYPE S_CARR_ID

*" REFERENCE(IV_ACTIVITY) TYPE ACTIV_AUTH

*" EXCEPTIONS

*" NO_AUTH

*" WRONG_ACTIVITY

*"----------------------------------------------------------------------

CASE iv_activity.

WHEN '01' OR '02' OR '03'.

AUTHORITY-CHECK OBJECT 'S_CARRID'

ID 'CARRID' FIELD iv_carrid

ID 'ACTVT' FIELD iv_activity.

IF sy-subrc <> 0.

RAISE no_auth.

ENDIF.

WHEN OTHERS.

RAISE wrong_activity.

ENDCASE.

ENDFUNCTION.

520 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 535: 119167612 taw10-01-es

TAW10_1 Lección: Verificación de autorización

Resumen de la lección

Ahora podrá:• Explicar el concepto de autorización SAP• Implementar verificaciones de autorización

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 521

Page 536: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Explicar el propósito y los beneficios de utilizar un modelo de datos en el

desarrollo de la aplicación• Describir el modelo de datos de vuelo SAP• Describir el significado y la estructura de una tabla transparente• Listar distintos métodos para buscar tablas de base de datos relevantes• Acceso de lectura al programa para las columnas y filas específicas dentro de

una tabla de base de datos determinada• Listar distintos métodos para leer accesos a varias tablas de base de datos• Explicar el concepto de autorización SAP• Implementar verificaciones de autorización

Más información... Consulte la documentación online de las sentencias ABAP relevantes en elDictionary ABAP.

522 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 537: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

475Examine sus conocimientos

1. Puede definir variables en el programa con tipos del Dictionary (elementosdescriptivos)

Diga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

2. Las tablas de base de datos se almacenan junto a su contenido en elDictionary ABAPDiga si estas afirmaciones son correctas o falsas.□ Correcto□ Falso

3. ¿Cómo se llama la descripción de una base de datos del Dictionary ABAPy qué nombre tiene?

4. ¿Qué se define con la sentencia "DATA myvar TYPE dbtab." si dbtabes una tabla transparente?Seleccione la(s) respuesta(s) correcta(s).□ A Una copia de la tabla de base de datos dbtab□ B Una tabla interna con la misma estructura que la tabla de base

de datos dbtab□ C Una tabla interna con el mismo contenido que la tabla de base

de datos dbtab□ D Una variable de estructura con la misma estructura que una fila

dbtab

5. ¿Por qué en general se debe usar "Open SQL" en lugar de "Native SQL"para acceder a bases de datos?

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 523

Page 538: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

6. ¿Qué sentencia se utiliza para leer un único registro de una tabla de basede datos?

7. ¿Es necesario especificar la limitación de mandante en la cláusula WHEREde una sentencia SELECT si la tabla de base de datos que se va a leer tiene elcampo de mandante?

8. ¿Cómo se llama la técnica de alto rendimiento que se debe utilizar paracargar el contenido de una tabla de base de datos a una tabla interna?

9. ¿En qué campo de sistema se encuentra el número de registros leídosmediante SELECT?Seleccione la(s) respuesta(s) correcta(s).□ A SY-SUBRC□ B SY-TABIX□ C SY-DBCNT□ D SY-INDEX

10. ¿Qué técnica debe utilizarse para leer registros relacionados de varias tablasde base de datos? El rendimiento de esta técnica es significativamente mejoral de las sentencias SELECT anidadas.

524 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 539: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

11. ¿Cuáles de las siguientes afirmaciones acerca de las verificaciones deautorización son correctas?Seleccione la(s) respuesta(s) correcta(s).□ A La sentencia SELECT ya tiene integrada la verificación de

autorización correspondiente.□ B La sentencia SELECT funciona sin problemas, incluso si el

usuario no tiene la autorización adecuada para el proceso delectura.

□ C Para proteger los datos del acceso no deseado, es necesarioimplementar una verificación de autorización en el programa.

□ D Siempre se debe implementar una verificación de autorizaciónen el programa.

12. ¿Qué sentencia ABAP se utiliza para implementar una verificación deautorización y dónde se encuentra el resultado de la verificación?

13. ¿Cuáles de las siguientes afirmaciones acerca de la autorización y lasverificaciones de autorización son correctas?Seleccione la(s) respuesta(s) correcta(s).□ A Un objeto de autorización tiene campos y valores de campo.□ B Una autorización es una característica real de un objeto de

autorización, es decir, un objeto de autorización con valores decampo.

□ C Existen objetos de autorización en el registro maestro de usuario.□ D Existen autorizaciones en el registro maestro de usuario.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 525

Page 540: 119167612 taw10-01-es

Examine sus conocimientos TAW10_1

478Respuestas

1. Puede definir variables en el programa con tipos del Dictionary (elementosdescriptivos)

Respuesta: Correcto

Puede usar los tipos del Dictionary para tipificar variables.

2. Las tablas de base de datos se almacenan junto a su contenido en elDictionary ABAP

Respuesta: Falso

Sólo las descripciones de tablas de base de datos se almacenan en elDictionary ABAP.

3. ¿Cómo se llama la descripción de una base de datos del Dictionary ABAPy qué nombre tiene?

Respuesta: Una descripción de tabla en el Dictionary ABAP se llama tablatransparente. Tiene el mismo nombre que la tabla de base de datos.

4. ¿Qué se define con la sentencia "DATA myvar TYPE dbtab." si dbtabes una tabla transparente?

Respuesta: D

La sintaxis especificada define sólo una variable de estructura, puestoque una tabla transparente se especifica por el tipo. Esta tabla describebásicamente la estructura de filas de la base de datos correspondiente.

5. ¿Por qué en general se debe usar "Open SQL" en lugar de "Native SQL"para acceder a bases de datos?

Respuesta: Porque Open SQL es independiente del sistema de base de datosrelacional utilizado.

6. ¿Qué sentencia se utiliza para leer un único registro de una tabla de basede datos?

Respuesta: SELECT SINGLE

526 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 541: 119167612 taw10-01-es

TAW10_1 Examine sus conocimientos

7. ¿Es necesario especificar la limitación de mandante en la cláusula WHEREde una sentencia SELECT si la tabla de base de datos que se va a leer tiene elcampo de mandante?

Respuesta: No; si falta la limitación de mandante, sólo se leen los registrosdel mandante que ejecuta, es decir, el mandante desde el que se llama elprograma.

8. ¿Cómo se llama la técnica de alto rendimiento que se debe utilizar paracargar el contenido de una tabla de base de datos a una tabla interna?

Respuesta: Array Fetch

9. ¿En qué campo de sistema se encuentra el número de registros leídosmediante SELECT?

Respuesta: C

10. ¿Qué técnica debe utilizarse para leer registros relacionados de varias tablasde base de datos? El rendimiento de esta técnica es significativamente mejoral de las sentencias SELECT anidadas.

Respuesta: Unión de tablas

11. ¿Cuáles de las siguientes afirmaciones acerca de las verificaciones deautorización son correctas?

Respuesta: B, C

12. ¿Qué sentencia ABAP se utiliza para implementar una verificación deautorización y dónde se encuentra el resultado de la verificación?

Respuesta: AUTHORITY-CHECK / SY-SUBRC

13. ¿Cuáles de las siguientes afirmaciones acerca de la autorización y lasverificaciones de autorización son correctas?

Respuesta: B, D

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 527

Page 542: 119167612 taw10-01-es

Capítulo 10: Modelado y obtención de datos TAW10_1

528 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 543: 119167612 taw10-01-es

Capítulo 11481 ABAP Open SQL

ABAP Open SQL plays a central role in developing high-performanceapplications. This unit takes a detailed look.

This unit is based strongly on the corresponding topics in course BC490 - ABAPPerformance Tuning and supplements the information from the preceding unit.In this course, we will concentrate on the things that developers should knowbefore they start a development project. with the aim of detecting and avoidingperformance problems early on, during the development phase.

Resumen del capítuloEn esta unidad, también presentaremos las sentencias ABAP Open SQL y lasexaminaremos en función de los aspectos de rendimiento.

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

• Utilizar de manera eficaz sentencias SQL importantes• Optimizar la lógica de aplicación para obtener el mejor rendimiento posible

Contenido del capítuloLección: ABAP Open SQL: optimización de sentencias... . . . . . . . . . . . . . . . .530

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 529

Page 544: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Lección:482

ABAP Open SQL: optimización de sentenciasDuración de la lección: 40 Minutos

Resumen de la lecciónEn esta lección se aborda de manera detallada la optimización de la lógica deaplicación en general y el uso correcto de importantes sentencias SQL muyutilizadas.

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

• Utilizar de manera eficaz sentencias SQL importantes• Optimizar la lógica de aplicación para obtener el mejor rendimiento posible

Make liberal use of demonstrations to loosen up the presentation. Give theparticipants the opportunity to practice and verify what you have explained.Encourage discussion! Point out that there is no such thing as a 100% solution.There are often practical uses for even the most improbable strategy.When indoubt, always program and test different strategies!

Ejemplo empresarialEl Sr. Jones, desarrollador de software en una importante empresa que utiliza SAP,debe desarrollar una nueva aplicación empresarial para analizar datos en masa.Es consciente de que la lectura de datos es una operación crítica en tiempo deejecución. Por tanto, el Sr. Jones desea beneficiarse de las funciones ABAP OpenSQL para optimizar las sentencias SQL en su aplicación.

530 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 545: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

Sentencias SQL: conceptos básicos

Gráfico 222: Optimización de la lógica de aplicación

El uso correcto del comando SELECT es crucial para la optimización delrendimiento de la lógica de aplicación. También deben optimizarse otrassentencias SQL, así como también la lógica global del programa.

Tanto la ejecución de múltiples lecturas de los mismos datos como el uso desentencias idénticas requieren un procesamiento intensivo e innecesario, por loque deben evitarse siempre que sea posible. En su lugar, puede grabar los datos entablas internas de la memoria intermedia o en tablas de base de datos en general.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 531

Page 546: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Gráfico 223: Sentencias idénticas y estructuradas de manera idéntica

El uso de sentencias SELECT idénticas no es muy recomendable debido a quedeben leerse los mismos registros de datos varias veces. En tal caso, debe utilizarestrategias de grabado en la memoria intermedia. Como muestra el ejemploanterior, el uso de sentencias SELECT de estructura idéntica (con diferentecontenido de literales de string o variables) también exige un alto rendimiento, locual es innecesario. En el ejemplo, parte de la tabla de base de datos SFLIGHTpuede grabarse en la memoria intermedia en una tabla interna y los accesosposteriores a los resultados pueden proceder de dicha tabla interna. Tambiénes posible grabar datos en la memoria interna en forma global. ABAP presentauna variedad de técnicas de programación para tal fin, por ejemplo, objetoscompartidos a partir de 6.40 de SAP Web AS.

532 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 547: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

Gráfico 224: Condición WHERE ausente

En el primer ejemplo, se especifica una sentencia SQL sin una condición WHERE.Sentencias similares a ésta pueden tener efectos importantes en el rendimientoglobal de un sistema SAP. En general, las sentencias SQL que implican datosmaestros y datos de transacción no deben formularse nunca sin una condiciónWHERE selectiva. En el segundo ejemplo, la sentencia CHECK se utiliza parafiltrar registros de datos, pero después de que se hayan transferido al servidor deaplicación. Por consiguiente, se han leído muchos registros de la tabla SBOOK(los cuales tendrían que transportarse a través de la red a una arquitectura desistemas de tipo mandante/servidor de tres niveles) y luego se han descartado en lacláusula SELECT. Esto requiere mucho trabajo de procesamiento que influye en elrendimiento de la red, la base de datos y el sistema en general.

Para reducir el número de registros de datos que deben transferirse, debeespecificar una cláusula WHERE lo suficientemente selectiva en cada sentenciaSQL. Una sentencia SELECT sin una condición WHERE indica un error dediseño en el programa. Especialmente a la hora de seleccionar en grandes tablasde transacciones importantes (como BKPF, BSEG, COBK, COEP, LIPK, MKPF,VBAK y VBAP) debe asegurarse de que el número de registros seleccionados noes demasiado grande o incluso se mantiene constante en el tiempo.

Las sentencias SELECT que devuelven aproximadamente la misma cantidad dedatos con el paso del tiempo también se denominan condiciones WHERE estables.Si el número de registros de datos leídos aumenta rápidamente con el tiempo, lasentencia se considera inestable. Por consiguiente, debe dar preferencia siempre alas cláusulas WHERE. Por ejemplo, una consulta de RESERVED o CANCELLEDen la tabla SBOOK sería relativamente estable en comparación con las consultas

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 533

Page 548: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

de CARRID o CONNID. Debido a que esta tabla contiene reservas, es previsibleque su tamaño aumente rápidamente con el paso del tiempo. Por el contrario,el número de registros cancelados o reservados no crecería tan rápidamente.El marcador RESERVED se elimina durante una reserva, por ejemplo, lo cualsignifica que el número de registros leídos en un acceso con RESERVED =’X’ permanecerá relativamente constante, haciendo que RESERVED = ’X’ seconvierta en una condición WHERE estable.

Gráfico 225: Preferencia del uso de índices

Propicie el uso de índices. Si los campos de índice se completan con valores deizquierda a derecha, la base de datos puede obtener resultados de manera másrápida, ya que se necesita menos trabajo de búsqueda. La existencia de huecosvacíos al final del índice (es decir, los campos situados más a la derecha) no es tanimportante como si estuvieran al inicio.

Si faltan campos importantes en el índice, el sistema deberá leer un importantenúmero de bloques de índice/tabla que afectará de manera significativa alrendimiento. En algunos casos, el optimizador de base de datos puede inclusoomitir la búsqueda de índice y, en su lugar, leer toda la tabla de base de datossecuencialmente (FULL TABLE SCAN).

534 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 549: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

Gráfico 226: Condición SELECT: lista de campos o *

Si utiliza SELECT *, a menudo se transfieren más datos de los necesariosdel servidor de base de datos al servidor de aplicación. Si sólo necesita elcontenido de unas pocas columnas, siempre debe especificar los campos detabla individualmente en una lista de campos. Si permite reducir el número decampos que se van a seleccionar, la lista de campos siempre resulta útil. En elprimer ejemplo, lea todas las columnas de la tabla y transfiéralas al servidor deaplicación, aunque sólo sean necesarias algunas columnas. En consecuencia, eltrabajo de transferencia aumenta de acuerdo con la cantidad de datos transferidos.El suplemento INTO CORRESPONDING FIELDS OF del segundo ejemplocopia el contenido del campo a los campos de destino con los mismos nombres.Esta operación de copia requiere más rendimiento que la copia alineada a laizquierda en el área de trabajo o en la tabla interna correspondiente medianteINTO o INTO TABLE. Lo mismo se aplica a APPENDING CORRESPONDINGFIELDS OF y APPENDING TABLE.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 535

Page 550: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Gráfico 227: Cumplimentación de tablas internas con Array Fetch

El mismo número de registros de datos debe transferirse del servidor de basede datos al servidor de aplicación para un loop del SELECT y un array fetch.Debido a que la transferencia siempre se realiza en bloques de 32 K, se requiereel mismo trabajo de transferencia (número de fetch) para ambas variantes. Elarray fetch es preferible al loop del SELECT, ya que los registros se transfierenmediante el registro desde la interfaz de base de datos al programa ABAP en elloop del SELECT, mientras que los registros se transmiten al programa ABAPen un bloque con array fetch.

536 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 551: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

Gráfico 228: Uso de UP TO n ROWS

Existen dos modos de leer un número fijo de registros: Puede transferir losregistros al servidor de aplicación y descartar los que no sean necesarios en elloop del SELECT. El mejor método, sin embargo, es utilizar SELECT UP TOn ROWS y transferir sólo el número deseado de registros de datos de la base dedatos a la aplicación. En la primera versión, el campo de sistema SY-DBCNT seconsulta en el loop del SELECT, que se cancela al leer un determinado númerode registros de datos. En consecuencia, el último bloque de 32 K transferidopuede transferirse por completo sin que sea necesario. En la segunda versión, siespecifica explícitamente UP TO n ROWS, sólo se leen y transfieren las entradasrequeridas de la base de datos a la interfaz de la base de datos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 537

Page 552: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Gráfico 229: Agregación

Puede utilizar las funciones de agregación (COUNT, SUM, MAX, MIN, AVG)para realizar cálculos en la base de datos. Sin embargo, esto sólo es útil si reducesignificativamente el número de registros de datos que se van a transferir.

En el primer ejemplo, una sentencia ABAP LOOP se ejecuta en una tabla internapara la agregación. No obstante, primero debe leerse cada registro que cumpla lacondición WHERE de la base de datos. El resultado se calcula en el LOOP.

En el segundo ejemplo, el resultado se calcula directamente en la base de datos ysólo se transfieren los registros de resultados.

Consejo: Por consiguiente, se puede utilizar cualquier estrategia. Tendráque decidir la estrategia más adecuada según el caso.

Tenga en cuenta además que las funciones de agregación siempre ignoran lasmemorias intermedias de tablas de SAP (esto puede ser una desventaja si estáninvolucradas tablas en la memoria intermedia).

Cuando utilice la función de agregación AVG, debe utilizar el tipo de datos F(número de coma flotante) para el campo de destino. Si utiliza la función deagregación SUM, debe usar un tipo de datos para el campo de destino que seamayor al tipo de datos del campo fuente para evitar desbordamientos.

Para obtener más información sobre el uso de funciones de agregación, consultela documentación.

538 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 553: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

Acceso a varias tablasA menudo es necesario leer datos relacionados de varias tablas. A continuación,encontrará varias técnicas que pueden utilizarse para estos accesos. JOIN y VIEWson, definitivamente, las más importantes.

JOIN y VIEWPara leer datos distribuidos en varias tablas, debe crear un vínculo entre las tablasfuncionalmente dependientes. El operador lógico de base de datos correspondientese denomina JOIN.

Puede utilizar VIEWS del Dictionary ABAP o joins ABAP para implementarun operador JOIN.

En teoría, también puede utilizar sentencias SELECT anidadas para implementarun join. Si utiliza sentencias SELECT anidadas, sin embargo, debe prever unempeoramiento del rendimiento, especialmente si la tabla externa contiene unimportante número de entradas. Como puede observar en el resultado del SQLaclaratorio, se lee un registro de la tabla interna para cada registro de la tablaexterna. En lugar de las sentencias SELECT anidadas, utilice una de las técnicasanteriormente enumeradas para leer en más de una tabla de base de datos. Acontinuación se abordan las vistas de base de datos y joins de ABAP Open SQL.

Gráfico 230: Sentencias SELECT anidadas y formación de join

Para implementar un join, puede utilizar vistas de base de datos como vistas delDictionary ABAP o joins ABAP tal como se ha ilustrado anteriormente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 539

Page 554: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Atributos y beneficios de las vistas de base de datos

• También puede utilizar vistas en otros programas.• Existen referencias de utilización y funciones de búsqueda (SE84 / SE81)

para buscar rápidamente las vistas existentes.• Al igual que las tablas de base de datos, puede grabar vistas (opciones

técnicas) en la memoria intermedia.• Los campos comunes en ambas tablas (campos de join) sólo se transfieren

una vez de la base de datos al servidor de aplicación.• La vista se implementa en el Dictionary ABAP como un join interno. Esto

significa que no se transfiere ningún dato si la tabla interna no contieneninguna entrada que corresponda a la tabla externa.

• Si, por ejemplo, no desea utilizar una conexión interna para leer una tablade texto (que no puede gestionar situaciones en las que los resultados deconexión no contengan ningún registro, ya que no existe ninguna entrada enun determinado lenguaje), utilice left outer join de ABAP (consulte LeftOuter Join).

Gráfico 231: Ejemplo: Inner/Outer Join

Generalmente puede derivar la lógica de INNER JOIN y OUTER JOIN del setde resultados previsto.

INNER JOIN corresponde al set de resultados que sólo tiene en cuenta losregistros de la tabla externa para el que existen registros de datos adecuados en latabla interna (a la izquierda en el ejemplo anterior).

540 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 555: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

LEFT OUTER JOIN corresponde al set de resultados que contiene todos losregistros de la tabla externa, independientemente de si existen o no registrosadecuados en la tabla interna. En caso negativo, los campos de la tabla internase establecen en valores ZERO en el set de resultados. Las tablas involucradasen un JOIN se denominan tablas básicas. El resultado de un join puede ser unaproyección (selección de columna) o una selección (selección de línea). Comono todas las bases de datos compatibles con SAP soportan la sintaxis estándarpara condiciones ON, la sintaxis restringida debe utilizarse para asegurar quesólo se permitan JOINS que devuelvan el mismo conjunto de resultados en todoslos sistemas de bases de datos.

Restricciones para Outer Join

• Sólo puede tener una tabla o una vista a la derecha del operador JOIN. Nopuede tener otra expresión JOIN.

• Sólo se puede utilizar AND como operador lógico en una condición ON.• Toda comparación en la condición ON debe contener un campo de la tabla

de la derecha.• Ninguno de los campos de la tabla de la derecha puede aparecer en las

condiciones WHERE de LEFT OUTER JOIN.• Para obtener más información sobre la implementación de funciones JOIN,

consulte la documentación de ABAP.

Gráfico 232: Ejemplo: Inner Join ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 541

Page 556: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Una desventaja del uso de joins ABAP es que la sentencia es más compleja queuna vista del Dictionary ABAP, donde la sintaxis de la sentencia SELECT (enconcreto, la cláusula FROM) corresponde a un acceso de tabla normal.

Tenga en cuenta también que los joins ABAP siempre omiten la memoriaintermedia de tablas, lo cual es una desventaja sólo para los joins que afecten atablas grabadas en la memoria intermedia. .

Consejo: Una desventaja de los joins ABAP y las vistas del DictionaryABAP es que los datos redundantes de la tabla externa aparecen en el setde resultados si existe una relación 1:n entre la tabla externa y la interna.Esto puede aumentar considerablemente la cantidad de datos transferidosde la base de datos. Por este motivo, debe utilizar un campo conun join para identificar sólo los campos que realmente necesita. Eltiempo de ejecución de formación de un join depende en gran medida deloptimizador de base de datos, especialmente cuando el join afecta a variastablas. No obstante, generalmente es más rápido que utilizar sentenciasSELECT anidadas.

We recommend performing the exercise with the joins in the next part. Theparticipants can choose whether they want to create a join or a view in the DDIC.Because a triple join will probably overwhelm many of the participants, refer themto the documentation, which contains perfect example coding.

The documentation contains an example of a triple join in the FROM clause ofthe SELECT statement.

Consejo: Do not provide any analysis or comments about the join, as thisis exactly what the participants are supposed to do! You should merelylead the participants to the conclusion and let them work out the solutionfor themselves.

The result of the JOIN in the SQL trace will amaze the group; when youdiscuss the exercise, be sure to focus on the reduction in the number ofdata packages that resulted from the JOIN!

It is also possible to build a Dictionary view instead of the join. In theory,the view should offer the same performance.

542 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 557: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

SUBSELECT y SUBQUERY

Gráfico 233: Subselect / Subquery

Un subquery es un query en una sentencia SELECT, UPDATE o DELETE. Seformula en la cláusula WHERE o HAVING para verificar si los datos de diversastablas o vistas de base de datos poseen determinados atributos.

Una sentencia SELECT con un subquery tiene una sintaxis más restringida queuna sentencia SELECT sin un subquery: SELECT … FROM dbtab [WHERE...] [GROUP BY ...] [HAVING ...].

Si el subquery devuelve exactamente un valor, se pueden utilizar los operadoresde comparación habituales además de LIKE y BETWEEN. Si un subquery seutiliza con un operador de comparación en lugar de con EXISTS, la cláusulaSELECT del subquery sólo podrá contener una sola columna, que puede ser uncampo en la tabla de base de datos o una expresión de agregación. En el segundoejemplo anterior, se supone que el subquery debe devolver varias líneas, cada unacon un valor. Si desea comparar todos los valores devueltos, debe utilizar IN.Los subqueries cuya condición WHERE contenga campos del query principal sedenominan subqueries correlativos. Si los subqueries están anidados, cada unopuede utilizar todos los campos de los subqueries de nivel superior en la jerarquía.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 543

Page 558: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Por lo tanto, debería formular subqueries positivos siempre que sea posible. Lasformulaciones negativas pueden tener como resultado un análisis de base de datosque afectará al rendimiento en caso de que no haya un índice adecuado.

Consejo: En muchos casos, puede utilizar también un join para obtener elresultado deseado de un subquery; normalmente el join resulta más fácilde leer. No es posible realizar sentencias globales sobre el rendimientode los subqueries. Si desea utilizar subqueries, asegúrese de probarlosglobalmente de antemano.

Por supuesto, evitar en primer lugar los accesos a base de datos es el modo máseficaz de reducir la carga en la base de datos. Puede hacerlo tomando el contenidode tabla leído y grabándolo en una tabla interna (con el tipo CLASIFICADAo DE CONTROL DE CLAVES, si es posible). En muchos casos, la lógica deaplicación no permite el uso de joins. Si todavía necesita leer datos de variastablas, puede utilizar una tabla interna independiente para grabar los datos leídosen la memoria intermedia.

Lectura según demanda y grabación en memoria intermedia

Gráfico 234: Lectura según demanda y grabación en memoria intermedia

544 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 559: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

En el ejemplo anterior, la intención es leer los datos adecuados de SCUSTOM(datos maestros de cliente) de la tabla SBOOK dentro de un loop SELECT.Puede conseguirlo con una sentencia SELECT SINGLE o una rutina de lectura.Si utiliza SELECT SINGLE en esta constelación, ejecutaría sentencias SQLidénticas. Por tanto, debe encapsular la lectura de registros de datos SCUSTOMen una rutina de lectura. En el ejemplo anterior, el contenido de tabla leído deSCUSTOM se graban en la memoria intermedia en una tabla interna. Antes deacceder a la base de datos, el sistema verifica si la entrada de tabla correspondienteya se ha leído. La información sobre la inexistencia de entradas adecuadas en labase de datos también se graba en la memoria intermedia de la tabla interna (en elcampo EXIST). Si la información se graba en la memoria intermedia del programay no es necesario reutilizarla, la rutina de lectura puede ser una subrutina. Sidesea grabar en la memoria intermedia una sesión interna para varios programas(secuencia de llamadas), debe utilizar un módulo de funciones. En consecuencia,la grabación en la memoria intermedia del contenido de la tabla puede ser unaherramienta muy eficaz.

We recommend performing the “read on demand” exercise in the next part.Discuss the slide beforehand.

Repeat the exercise, and then discuss the various options for accessingmultiple tables (including the buffering options) with the group.

Consejo: Different results may occur depending on the training system,data volume, and data distribution. This is not a problem, however; infact, it is intended, because you will discuss and appraise the possiblescenarios with the group afterwards.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 545

Page 560: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Suplemento ... FOR ALL ENTRIES

Gráfico 235: SELECT ... FORALL ENTRIES

SELECT .. FOR ALL ENTRIES se creó en OPEN SQL en un momento enel que aún no era posible realizar joins de base de datos (no lo admitían todoslos sistemas de gestión de bases de datos aprobados por SAP). La conexiónentre las tablas de base de datos internas y externas se crea en ABAP. Si deseasustituir sentencias SELECT con FOR ALL ENTRIES, sólo se eliminan elanidado y sus desventajas parcialmente. En general, agrupe las sentenciasSELECT internas en paquetes, por ejemplo, de 5 sentencias cada uno. Se reduciráel trabajo de transferencia necesario y se evitarán sentencias SQL idénticas. Lasecuencia de acceso se define en la codificación ABAP igual que en las sentenciasSELECT anidadas. Tal como se ha mencionado anteriormente, si utiliza FORALL ENTRIES, debe asegurarse de que la tabla principal no esté vacía nicontenga ninguna entrada duplicada. Como en el caso de las sentencias SELECTanidadas, la decisión de si se realiza una INNER JOIN o OUTER JOIN también selleva a cabo en ABAP para SELECT .. FOR ALL ENTRIES. Si desea leergrandes volúmenes de datos, sólo en casos excepcionales, debe utilizar FORALL ENTRIES.

546 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 561: 119167612 taw10-01-es

TAW10_1 Lección: ABAP Open SQL: optimización de sentencias

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.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 547

Page 562: 119167612 taw10-01-es

Capítulo 11: ABAP Open SQL TAW10_1

Resumen de la lección

Ahora podrá:• Utilizar de manera eficaz sentencias SQL importantes• Optimizar la lógica de aplicación para obtener el mejor rendimiento posible

548 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 563: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Utilizar de manera eficaz sentencias SQL importantes• Optimizar la lógica de aplicación para obtener el mejor rendimiento posible

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 549

Page 564: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

550 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 565: 119167612 taw10-01-es

Capítulo 12499 Pantalla de selección

For the presentation of this unit, you should know the sequence of the ABAPevents such as INITIALIZATION, START-OF-SELECTION and so on.

Resumen del capítuloEn esta unidad, se presentan los comandos ABAP para generar una pantallade selección, así como también otras adiciones y técnicas. Se analizanlos eventos ABAP que pertenecen a la pantalla de selección (como ATSELECTION-SCREEN). La creación de variantes también se trata así como lamodificación dinámica de pantallas de selección.

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

• Explicar el objetivo de las pantallas de selección• Crear campos de entrada con PARAMETERS• Crear campos de entrada con SELECT-OPTIONS• Diseñar la pantalla de selección• Definir pantallas de selección adicionales• Definir subscreens• Definir una ficha en una pantalla de selección• Implementar verificaciones de entrada para las pantallas de selección• Crear variantes para una pantalla de selección• Crear pulsadores en la pantalla de selección• Programar cambios en la pantalla de selección en el tiempo de ejecución

Contenido del capítuloLección: Generación y diseño de la pantalla de selección ... . . . . . . . . . . . . .553

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 551

Page 566: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Ejercicio 24: Generación y diseño de la pantalla de selección... . . . .571Lección: Verificaciones de entrada y variantes ... . . . . . . . . . . . . . . . . . . . . . . . . . .580

Procedimiento: Creación de variantes con el cálculo de fechadinámico ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .586Ejercicio 25: Verificaciones de entrada y variantes ... . . . . . . . . . . . . . . . . .587

Lección: Pantalla de selección: modificaciones en tiempo deejecución. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .592

Ejercicio 26: Pantalla de selección: modificaciones en tiempo deejecución. .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .597

552 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 567: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Lección:501

Generación y diseño de la pantalla de selecciónDuración de la lección: 40 Minutos

Resumen de la lecciónEn esta lección aprenderá cómo crear y diseñar una pantalla de selección ycómo verificar las entradas. Finalmente, aprenderá cómo se pueden cambiar loselementos de pantalla en tiempo de ejecución.

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

• Explicar el objetivo de las pantallas de selección• Crear campos de entrada con PARAMETERS• Crear campos de entrada con SELECT-OPTIONS• Diseñar la pantalla de selección• Definir pantallas de selección adicionales• Definir subscreens• Definir una ficha en una pantalla de selección

Ejemplo empresarialUsted es programador en ABC Travel. Su gerente desea ver los datos de vuelopara ABC Airways. Su tarea es escribir un programa con una pantalla de selecciónfácil de usar para cumplir con los requisitos del gerente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 553

Page 568: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Resumen de la pantalla de selección

Gráfico 236: Pantalla de selección: resumen

Las pantallas de selección funcionan como la interfaz entre el programa y elusuario, y se utilizan para limitar la cantidad de datos que se leerán desde la basede datos.

Puede usar los elementos lingüísticos declarativos PARAMETERS ySELECT-OPTIONS para generar una pantalla de selección por defecto (pantalla1000) con campos listos para la entrada.

Las bases de datos lógicas proporcionan pantallas de selección cuya aparienciaconcreta depende del nombre del nodo especificado (NODES <name>).(Consulte la unidad “Bases de datos lógicas” para obtener más detalles). Lasversiones de la pantalla de selección ofrecen un subconjunto de la pantalla deselección por defecto.

Además de la pantalla de selección por defecto, puede crear pantallas de selecciónadicionales usando SELECTION-SCREEN BEGIN OF ... y llamarlasmediante CALL SELECTION-SCREEN.

Cree variantes para grabar valores de la pantalla de selección que se utilizanrepetidamente. La variante puede recuperarse para utilizarse cuando sea necesaria.Si un informe se ejecuta con una pantalla de selección en el proceso de fondo, serequiere una variante.

554 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 569: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Creación de campos en la pantalla de selección

Gráfico 237: Declaración de campos con PARAMETERS

La sentencia PARAMETERS es un elemento lingüístico declarativo. Como en elcaso de la sentencia DATA, puede declarar parámetros con TYPE o LIKE. Elsistema genera campos listos para la entrada en la pantalla de selección. Losnombres de los campos PARAMETERS pueden tener una longitud de hasta ochocaracteres. Puede actualizar textos de selección usando el acceso vía menús Pasara → Elementos de texto → Textos de selección.

Con el suplemento DEFAULT <wert>, puede establecer un valor por defectopara una sentencia PARAMETERS. Si asigna una MEMORY ID <pid>, elsistema recupera el valor actual de la memoria SAP y le da salida en la pantallaautomáticamente. La memoria SAP es un área de memoria específica del usuariodonde se guardan valores de datos simples (por ejemplo, la clave para unaaerolínea) para parámetros SET/GET mientras dure una sesión de usuario. Losparámetros SET/GET se identifican por nombre (longitud máxima 20 caracteres).Puede descubrir el nombre de un parámetro SET/GET relevante consultando laInformación técnica en un campo de salida mediante Ayuda(F1) → Informacióntécnica. En el campo ID de parámetro, encontrará el nombre del parámetroSET/GET como se propone en el elementos de datos que se está utilizando.

Si declara campos obligatorios (suplemento OBLIGATORY), los usuarios nopueden salir de la pantalla de selección hasta que estos campos contengan entradas.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 555

Page 570: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

La verificación automática realizada por el Dictionary ABAP se desactivapor defecto para las pantallas de selección de informes. Sin embargo, si hacereferencia a un objeto de Dictionary que tiene una clave externa establecida,VALUE CHECK asegura que se realiza la verificación de la validez de las entradas.

Puede generar parámetros como casillas de selección (AS CHECKBOX). Comoresultado, se crea un campo de un carácter que contiene (space) o “X”. Puedeevaluar el contenido de las casillas de selección en estructuras IF/ENDIF.

Además, puede generar un grupo de botones de selección para la pantalla deselección usando el suplemento RADIOBUTTON GROUP <grp>. El nombre<grp> de un grupo de botones de selección puede tener un máximo de cuatrocaracteres. Únicamente un botón de selección por grupo puede estar activo; puedeevaluarse en el procesamiento de programas. Puede evaluar el contenido de losbotones de selección mediante una estructura de control CASE/ENDCASE. Elbotón de selección que elige tiene el valor “X”, todos los demás tienen el valor(space). Si no ha asignado un valor a ninguno de los botones de selección,el sistema automáticamente seleccionará el primer botón de selección cuandomuestre la pantalla de selección.

Puede usar el suplemento MODIF ID <mod> para simplificar las modificacionesdinámicas de la pantalla de selección (para obtener más información, consulte launidad “Pantalla de selección: modificaciones en tiempo de ejecución”).

Gráfico 238: Selecciones con SELECT-OPTIONS

SELECT-OPTIONS es un elemento lingüístico declarativo con la mismarestricción de caracteres (ocho caracteres) que PARAMETERS. A diferencia dePARAMETERS, SELECT-OPTIONS permite diferentes valores y seleccionescomplejas, en lugar de solamente un único campo de entrada.

556 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 571: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

SELECT-OPTIONS genera una tabla interna <seltab> con una estructuraestándar y una línea de cabecera. La tabla tiene cuatro columnas: sign (indicadorque significa incluido o sólo), option (operador relacional), low (límite inferior)yhigh (límite superior). Al igual que con PARAMETERS, puede actualizar lostextos de selección usando el acceso vía menús Pasar a → Elementos de texto→ Textos de selección.

Después del parámetro FOR, puede especificar el campo con el que el sistemadebe verificar las entradas de selección. Debe declarar el campo, por ejemplo, enuna sentencia DATA o NODES. Tanto el campo alto como el bajo (high y low)heredan los atributos del campo al que se hace referencia.

Todas las líneas de la tabla de selección <seltab> formulan una condiciónmediante un operador relacional. Los siguientes valores son posibles:

Posibles valores para SIGN y OPTION

Valor Significado

I IncluirSIGN

E Excluir

EQ Igual

NE No igual

LE Menos o igual

LT Menor que

GE Mayor o igual

GT Mayor que

BT Entre

NB No entre

CP Contiene patrón

OPTION

NP Contiene patrón no

El set de selección S está formado por incluye todo (I1, ..., In) menos excluye todo(E1, ..., Em). Si no se ingresa ningún valor en el objeto SELECT-OPTIONS, elsistema regresa todas las líneas de la base de datos (“Nada es todo”).

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 557

Page 572: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 239: SELECT-OPTIONS con criterios de selección múltiple

Cuando el usuario realiza entradas en un objeto SELECT-OPTIONS , el sistemaproporciona la tabla interna automáticamente.

Para cambiar las entradas por defecto para los campos de tabla sign y option,elija Editar → Opciones de selección. El sistema ofrece todas las alternativasapropiadas para la selección. Si el semáforo está en verde para Seleccionar,hay una I (inclusión) en la columna SIGN, mientras que la luz roja indica E(exclusión).

Para borrar una tabla de entrada, elija Editar → Borrar criterio de selección.

Todos los criterios de selección pueden utilizarse para realizar seleccionesmúltiples, a menos que se defina lo contrario. Si las selecciones múltiples estánpresentes, el color de la flecha cambia de blanco a verde.

558 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 573: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Gráfico 240: Sintaxis de la sentencia SELECT-OPTIONS

Los suplementos de la sentencia SELECT-OPTIONS son:

• DEFAULT le permite establecer valores por defecto para los parámetroslow o low y high. Puede utilizar OPTION y SIGN para determinar valorespor defecto para option y sign que difieren de los valores por defecto.

• Si asigna una MEMORY ID <pid>, el sistema recupera el valor actual dela memoria SAP, le da salida en la pantalla y lo escribe nuevamente cuandosale de la pantalla (se incluyen los cambios que pudiera haber hecho).

• LOWER CASE suprime la conversión de la entrada en mayúsculas, siemprey cuando el dominio lo permita o la tipificación se haya realizado en el tipoC de ABAP.

• OBLIGATORY genera un campo de entrada requerido. Aparece una marcade verificación en el campo de entrada en la pantalla de selección, y elusuario debe ingresar un valor.

• NO-EXTENSION suprime la opción de selección múltiple.• NO INTERVALS suprime el límite superior del intervalo

(<seltab>-high) en la pantalla de selección. Puede utilizar la pantallaadicional Selección múltiple para ingresar intervalos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 559

Page 574: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Asignación dinámica previa de la pantalla de selección

Gráfico 241: Eventos ABAP en el entorno de la pantalla de selección

El evento LOAD-OF-PROGRAM se ejecuta si el código de la máquina está cargadoen la memoria principal, es decir, justo al comienzo de la ejecución del programa.Por ahora, los valores por defecto de los campos de entrada no se han evaluado.Por lo tanto, no se recomienda la asignación dinámica previa de los camposde entrada en este momento, ya que los valores por defecto sobrescribirían lasasignaciones previas.

AT SELECTION-SCREEN OUTPUT se ejecuta inmediatamente antes de que sevisualice la pantalla de selección, mientras que AT SELECTION-SCREEN seejecuta inmediatamente después de que se visualice la pantalla de selección.Como la pantalla de selección se puede visualizar varias veces (para INTRO, porejemplo), el sistema también puede procesar esos bloques de evento muchas veces.

560 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 575: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Gráfico 242: Inicialización de la pantalla de selección

El sistema sólo procesa el evento INITIALIZATION una vez en cada programaejecutable. Durante este evento, puede proporcionar valores por defecto para loscampos de la pantalla de selección de un informe, así como también aquéllos paraun base de datos lógica. Puede usar Ayuda F1 (Ayuda técnica) para determinarlos nombres de los campos de selección si se conecta una base de datos lógicacon el programa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 561

Page 576: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 243: Relleno de las tablas internas con líneas de cabecera

La sentencia SELECT-OPTIONS <sel_opt> FOR <data_object> siem-pre genera una tabla interna con una línea de cabecera. En realidad, esto creados objetos de datos: el cuerpo de una tabla llamado <sel_opt> y un área detrabajo línea de cabecera), también llamada <sel_opt>. Rellene el área detrabajo <sel_opt> con valores adecuados, luego use el comando APPEND<sel_opt> para agregarlo al cuerpo de la tabla como una línea distinta.

En la pantalla de selección también se pueden agregar valores en el evento ATSELECTION-SCREEN OUTPUT. Este evento sucede justo antes de que sevisualice la pantalla de selección y se puede ejecutar varias veces.

562 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 577: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Diseño de la pantalla de selección

Gráfico 244: Diseño de la pantalla de selección I

Puede usar la sentencia SELECTION-SCREEN para diseñar la presentación de lapantalla de selección.

Puede usar el suplemento BEGIN OF BLOCK <block> para agrupar elementosde la pantalla relacionados lógicamente y WITH FRAME, con el objetivo deenmarcarlos. Los marcos pueden anidarse hasta alcanzar una profundidad máximade cinco.

Por razones de accesibilidad, debe asignarle una cabecera al bloque. El títulose puede declarar como text-xxx o como un nombre de campo de hasta ochocaracteres. En el segundo caso, el texto se establece en tiempo de ejecuciónen el evento INITIALIZATION. Antes de diseñar una pantalla de selección,debe familiarizarse con las pautas de diseño de pantallas que se muestran en latransacción BIBS.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 563

Page 578: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 245: Diseño de la pantalla de selección II

Puede mostrar diversos parámetros y comentarios en la misma línea de la pantalla.Para hacerlo, debe incluirlos entre SELECTION-SCREEN BEGIN OF LINE ySELECTION-SCREEN END OF LINE. El suplemento COMMENT le permiteincluir textos.

Los textos comentarios siempre deben tener un formato (posición y longitud desalida). La posición se puede determinar usando un campo de datos o pos_low,o bien pos_high. Los últimos dos son las posiciones para los límites superiorese inferiores del campo SELECT-OPTIONS en la pantalla de selección.

El suplemento <COMMENT ... FOR FIELD <f> hace que el sistemaautomáticamente muestre la ayuda F1 del campo <f> para el texto comentario y elparámetro. Si oculta el parámetro (variante de selección: atributo invisible), eltexto de comentario también se oculta.

Puede usar POSITION <pos> para ubicar el cursor en una línea para la próximasalida (sólo en BEGIN OF LINE ... END OF LINE).

At this point, you should be able to complete task 1 from the exercise that belongsto this unit.

564 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 579: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Creación de pantallas de selección adicionales

Gráfico 246: CALL SELECTION-SCREEN

Puede usar varias pantallas de selección en un programa. La pantalla deselección estándar siempre tiene el número 1000. Puede definir otras pantallas deselección usando SELECTION-SCREEN BEGIN OF SCREEN <nnnn> ySELECTION-SCREEN END OF SCREEN <nnnn>. En las sentencias BEGIN... END, declara las selecciones requeridas mediante SELECT-OPTIONS yPARAMETERS. Esta selección se llama mediante CALL SELECTION-SCREEN<nnnn>. Una pantalla de selección debe tener un número de pantalla que seamenor que 1000.

El sistema ahora controla la devolución de la pantalla de selección, es decir, notiene que programarla mediante LEAVE SCREEN, por ejemplo (como sucede conCALL SCREEN). El programa continúa con la próxima sentencia luego de lallamada. El campo de sistema sy-subrc contiene 0 si el usuario elige Ejecutar oF8. Si el usuario elige Cancelar o Salir, sy-subrc contiene el valor 4.

También puede agregar valores por defecto en las pantallas de selecciónadicionales en INITIALIZATION.

Utilice el campo de sistema sy-dynnr en los eventos de la pantalla de selecciónpara determinar qué pantalla se está procesando.

También puede seleccionar una ventana de selección como una ventana de diálogomodal. Utilice la siguiente sintaxis:

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 565

Page 580: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

CALL SELECTION-SCREEN <nnnn> STARTING AT<left_col> <upper_row> ENDING AT <right_col><lower_row>. <left_col> y <upper_row> son las coordenadas de laesquina superior izquierda de la pantalla, <right_col> y <lower_row> sonlas coordenadas de la esquina inferior derecha.

Demo: Report SAPBC405_SSCD_CALL_SEL_SCREEN

Etiquetas de la pantalla de selecciónAhora puede visualizar controles de fichas en las pantallas de selección. Lepermiten crear grupos de campos lógicos y facilitan el uso de las pantallas deselección grandes.

Gráfico 247: Controles de fichas en la pantalla de selección

Para una pantalla de selección con controles de fichas, debe definir:

• Un área subscreen en la pantalla de selección para ajustar el control de fichas• Los títulos de las etiquetas individuales• Pantallas de selección como subscreens para los títulos de las etiquetas

individuales.

566 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 581: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Gráfico 248: Pantallas de selección como Subscreens

Como las pantallas de selección pueden definirse como subscreens, puedeincluirlas en cualquier otra pantalla, especialmente en etiquetas. El sistemaprocesa los eventos ABAP AT SELECTION-SCREEN OUTPUT y ATSELECTION-SCREEN para cada subscreen, además de procesar la pantallade selección circundante. Utilice las variables del sistema sy-dynnr paradeterminar qué pantalla (pantalla de selección o subscreen) se está procesandoactualmente.

Una pantalla de selección puede procesarse como una subscreen de la siguientemanera:

SELECTION-SCREEN BEGIN OF SCREEN <dynnr> AS SUBSCREEN

[NESTING LEVEL <m>] [NO INTERVALS].

....

SELECTION-SCREEN END OF SCREEN <dynnr>.

Suplementos opcionales:

[NESTING LEVEL <m>]: el nivel de anidamiento NESTINGLEVEL reduce aun más el tamaño de la subscreen. Puede utilizarlo para evitarque las barras de desplazamiento aparezcan cuando use la subscreen en un controlde fichas en la pantalla de selección, y la ficha ya tiene un marco. Si el controlde fichas no tiene un marco, use NESTING LEVEL 0. Para cada marco que seencuentre alrededor del control de fichas, aumente NESTING LEVEL en 1.

[NO INTERVALS] Esta opción oculta los campos HIGH para todos los criteriosde selección definidos que usan SELECT-OPTIONS en la pantalla.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 567

Page 582: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 249: Definición de fichas en la pantalla de selección

Una subscreen para un control de fichas se define en una pantalla de selecciónde la siguiente manera:

SELECTION-SCREEN BEGIN OF TABBED BLOCK <blockname>FOR <n> LINES.

SELECTION-SCREEN END OF BLOCK <blockname>

La altura del área subscreen en líneas se define con <n>.

Las etiquetas individuales se definen de la siguiente manera:

SELECTION-SCREEN TAB (max_length) <name> USER-COMMAND<ucomm> [DEFAULT[PROGRAM <prog>] SCREEN <dynnr>].

Si usa el suplemento DEFAULT, también debe usar el suplemento SCREEN. Elsuplemento PROGRAM es opcional. Sólo lo necesitará si la pantalla procede deotro programa.

Puede posponer la especificación del enlace entre el título de la etiqueta y lapantalla de selección hasta el tiempo de ejecución. También puede modificaruna asignación existente en tiempo de ejecución. Para ello, rellene la estructura<blockname>. Ésta se crea de forma automática para cada bloque de fichas. Laestructura tiene el mismo nombre que el bloque de fichas y contiene los camposprog, dynnr y activetab.

568 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 583: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Elija nombres de variable para tab1, tab2 y tab3. Estas variables no se declaran deindividualmente porque forman parte del control de fichas.

Para el evento AT SELECTION-SCREEN, la variable de sistemasy-ucomm contiene el comando de usuario declarado para la etiqueta actualmenteseleccionada (aquí, COMM1, COMM2 o COMM3).

At this point, you should be able to complete task 2 from the exercise that belongsto this unit.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 569

Page 584: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

570 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 585: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

519 Ejercicio 24: Generación y diseño de lapantalla de selecciónDuración del ejercicio: 60 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Definir opciones de selección• Definir parámetros• Diseñar la pantalla de selección• Predefinir la pantalla de selección (opcional)

Ejemplo empresarialUsted es programador en ABC Travel. Su tarea consiste en añadir varios campos ala pantalla de selección de un informe existente, crear una ficha y ajustar objetode retención en consecuencia.

Tarea 1:Amplíe el programa ZBC401_##_MAIN o copie la solución modeloSAPBC405_INTS del ejercicio anterior.

Solución modelo para la tarea: SAPBC405_SSCS_1A.

Cree una pantalla de selección

1. Cree un SELECT-OPTION para la compañía aérea. Tome el valor deintervalo más bajo de SAP Memory.

Cree un SELECT-OPTION para el número de conexión de vuelos.

Cree un criterio de selección para la fecha de vuelo. Suprima la opción deselección múltiple para la fecha de vuelo.

2. Cree un grupo de tres botones de selección con la siguiente funcionalidad:

Botón Función

1 Consulte todos los vuelos.

2 Consulte sólo los vuelos nacionales.

3 Consulte sólo los vuelos internacionales.

Las parametrizaciones por defecto deben ser para vuelos internacionales.

Proporcione un marco para el grupo de botones de selección.Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 571

Page 586: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

3. Asegúrese de que se consulten sólo los registros de datos solicitados de labase de datos.

Para ello, suplemente la WHERE cláusula de la SELECT sentencia con lascondiciones que se obtienen de estas selecciones.

Consejo: Necesita las distintas SELECT sentencias conWHERE condiciones diferentes. Puede asignar la condiciónnacional/internacional directamente en la base de datos:countryto = dv_flights~countryfr o countryto <>dv_flights~countryfr. Se usa un guión ondulado (~) paradirigirse al campo de la base de datos.

4. Opcional: Programe una asignación previa compleja para la compañíaaérea, como AA para QF, pero no AZ.

5. Active y realice un test del programa.

Tarea 2:Integre las etiquetas

Solución modelo para la tarea: SAPBC405_SSCS_1A.

1. Cree la pantalla de selección 1100 como una subscreen y visualice loscriterios de selección de la compañía aérea y el número de conexión en estapantalla.

Cree la pantalla de selección 1200 como una subscreen y visualice loscriterios de selección para la fecha de vuelo aquí.

Cree una pantalla de selección 1300 como una subscreen e integre losbotones de selección aquí.

2. Cree un tabbed block en la pantalla de selección.

Visualice cada subscreen en su propia ficha con las siguientes etiquetas:

Ficha Título de la etiqueta Subscreen

1 Conexiones de vuelo 1100

2 Fecha de vuelo 1200

3 Tipo de vuelo 1300

3. Opcional: Asegúrese de que se visualice la etiqueta principal en el sistemala primera vez que muestre la página de selección

572 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 587: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Solución 24: Generación y diseño de lapantalla de selecciónTarea 1:Amplíe el programa ZBC401_##_MAIN o copie la solución modeloSAPBC405_INTS del ejercicio anterior.

Solución modelo para la tarea: SAPBC405_SSCS_1A.

Cree una pantalla de selección

1. Cree un SELECT-OPTION para la compañía aérea. Tome el valor deintervalo más bajo de SAP Memory.

Cree un SELECT-OPTION para el número de conexión de vuelos.

Cree un criterio de selección para la fecha de vuelo. Suprima la opción deselección múltiple para la fecha de vuelo.

a) Revise la solución al final del ejercicio.

Para buscar los parámetros SET/GET apropiados para la compañíaaérea, haga doble clic en la variable de referencia donde se declara laopción de selección, luego haga doble clic en la clase (dv_flights) yposteriormente, en el elemento de datos (S_CARR_ID) en el campoCARRID. Finalmente, en la visualización de elementos de datos, vayaa la pestaña Más características.

2. Cree un grupo de tres botones de selección con la siguiente funcionalidad:

Botón Función

1 Consulte todos los vuelos.

2 Consulte sólo los vuelos nacionales.

3 Consulte sólo los vuelos internacionales.

Las parametrizaciones por defecto deben ser para vuelos internacionales.

Proporcione un marco para el grupo de botones de selección.

a) Revise la solución al final del ejercicio.

3. Asegúrese de que se consulten sólo los registros de datos solicitados de labase de datos.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 573

Page 588: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Para ello, suplemente la WHERE cláusula de la SELECT sentencia con lascondiciones que se obtienen de estas selecciones.

Consejo: Necesita las distintas SELECT sentencias conWHERE condiciones diferentes. Puede asignar la condiciónnacional/internacional directamente en la base de datos:countryto = dv_flights~countryfr o countryto <>dv_flights~countryfr. Se usa un guión ondulado (~) paradirigirse al campo de la base de datos.

a) Revise la solución al final del ejercicio.

4. Opcional: Programe una asignación previa compleja para la compañíaaérea, como AA para QF, pero no AZ.

a) Revise la solución al final del ejercicio.

5. Active y realice un test del programa.

a) Pulse Ctrl + F3 y luego F8.

Tarea 2:Integre las etiquetas

Solución modelo para la tarea: SAPBC405_SSCS_1A.

1. Cree la pantalla de selección 1100 como una subscreen y visualice loscriterios de selección de la compañía aérea y el número de conexión en estapantalla.

Cree la pantalla de selección 1200 como una subscreen y visualice loscriterios de selección para la fecha de vuelo aquí.

Cree una pantalla de selección 1300 como una subscreen e integre losbotones de selección aquí.

a) Revise la solución al final del ejercicio.

2. Cree un tabbed block en la pantalla de selección.

Visualice cada subscreen en su propia ficha con las siguientes etiquetas:

Ficha Título de la etiqueta Subscreen

1 Conexiones de vuelo 1100

2 Fecha de vuelo 1200

3 Tipo de vuelo 1300

a) Revise la solución al final del ejercicio.Continúa en la página siguiente

574 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 589: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

3. Opcional: Asegúrese de que se visualice la etiqueta principal en el sistemala primera vez que muestre la página de selección

a) Revise la solución al final del ejercicio.

ResultadoPrograma principalINCLUDE: bc405_sscs_1btop,

sapbc405_sscs_1be01.

Incluye TOP

REPORT bc405_sscs_1b.

* Workarea for data fetch

DATA: wa_flight type dv_flights.

*=============================

* Begin of new or changed code

*=============================

* Constant for CASE statement

CONSTANTS mark VALUE 'X'.

* Selections for connections

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.

SELECT-OPTIONS: so_car FOR wa_flight-carrid MEMORY ID car,

so_con FOR wa_flight-connid.

SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.

SELECT-OPTIONS so_fdt FOR wa_flight-fldate NO-EXTENSION.

SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter

SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.

SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.

PARAMETERS: pa_all RADIOBUTTON GROUP rbg1,

pa_nat RADIOBUTTON GROUP rbg1,

pa_int RADIOBUTTON GROUP rbg1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK radio.

SELECTION-SCREEN END OF SCREEN 1300.

SELECTION-SCREEN BEGIN OF TABBED BLOCK airlines

FOR 5 LINES.

SELECTION-SCREEN TAB (20) tab1 USER-COMMAND conn

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 575

Page 590: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

DEFAULT SCREEN 1100.

SELECTION-SCREEN TAB (20) tab2 USER-COMMAND date

DEFAULT SCREEN 1200.

SELECTION-SCREEN TAB (20) tab3 USER-COMMAND type

DEFAULT SCREEN 1300.

SELECTION-SCREEN END OF BLOCK airlines .

*===========================

* End of new or changed code

*===========================

Incluye E01

*=============================

* Begin of new or changed code

*=============================

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

*& Event INITIALIZATION

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

INITIALIZATION.

* Initialize select-options for CARRID" OPTIONAL

MOVE: 'AA' TO so_car-low,

'QF' TO so_car-high,

'BT' TO so_car-option,

'I' TO so_car-sign.

APPEND so_car.

CLEAR so_car.

MOVE: 'AZ' TO so_car-low,

'EQ' TO so_car-option,

'E' TO so_car-sign.

APPEND so_car.

* Set texts for tabstrip pushbuttons

tab1 = 'Connections'(tl1).

tab2 = 'Date'(tl2).

tab3 = 'Type of flight'(tl3).

* Set second tab page as initial tab

airlines-activetab = 'DATE'.

airlines-dynnr = '1200'.

*===========================

* End of new or changed code

*===========================

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

Continúa en la página siguiente

576 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 591: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

*& Event START-OF-SELECTION

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

START-OF-SELECTION.

*=============================

* Begin of new or changed code

*=============================

* Checking the output parameters

CASE mark.

WHEN pa_all.

* Radiobutton ALL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt.

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

WHEN pa_nat.

* Radiobutton NATIONAL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

AND countryto = dv_flights~countryfr.

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 577

Page 592: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

WHEN pa_int.

* Radiobutton INTERNATIONAL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

AND countryto <> dv_flights~countryfr.

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

ENDCASE.

*===========================

* End of new or changed code

*===========================

578 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 593: 119167612 taw10-01-es

TAW10_1 Lección: Generación y diseño de la pantalla de selección

Resumen de la lección

Ahora podrá:• Explicar el objetivo de las pantallas de selección• Crear campos de entrada con PARAMETERS• Crear campos de entrada con SELECT-OPTIONS• Diseñar la pantalla de selección• Definir pantallas de selección adicionales• Definir subscreens• Definir una ficha en una pantalla de selección

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 579

Page 594: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Lección:528

Verificaciones de entrada y variantesDuración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo, ampliará sus conocimiento sobre cómo se implementan lasverificaciones de entrada para la pantalla de selección. También aprenderá a hacerque los campos seleccionados estén preparados para las entradas si se presenteun mensaje de error o de advertencia.

Además, en este módulo se introducen las variantes. Éstas permiten que losvalores que se introducen una vez en la pantalla de selección se vuelvan a usarincontables veces.

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

• Implementar verificaciones de entrada para las pantallas de selección• Crear variantes para una pantalla de selección

Ejemplo empresarialUsted es programador en ABC Travel. Su gestor desea obtener informaciónvaliosa sobre los vuelos de ABC Airways con destino a una ciudad en particular.Si el usuario selecciona una ciudad hacia donde ABC Airways no tiene vuelos, elsistema arroja un mensaje de error. Para esto, debe escribir un programa utilizandouna pantalla de selección fácil de usar que contenga una verificación de entradacorrespondiente.

580 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 595: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

Verificaciones de entrada

Gráfico 250: Verificaciones de entrada: AT SELECTION SCREEN

La evaluación de las entradas de pantalla se lleva a cabo en el evento ATSELECTION-SCREEN. Si se muestra un mensaje de error o de advertenciadurante este evento, el sistema prepara todos los campos de pantalla de selecciónpara la entrada.

Al utilizar el suplemento ON <f> bzw. ON <seltab>, hace referencia aselecciones específicas. Sólo estas selecciones están preparadas para la entradacuando se produce un error.

El evento AT SELECTION-SCREEN ON BLOCK <block> está disponiblepara que verifique las combinaciones de entradas de un grupo lógico. Los camposen este bloque están preparados para la entrada cuando se emite un mensaje deerror.

El evento AT SELECTION-SCREEN ON END OF <seltab> pertenece alprocesamiento PAI de la pantalla de selección para selecciones múltiples.

Puede realizar verificaciones de entrada para los criterios de selección de una basede datos lógica utilizada y para sus propias selecciones específicas de programa.

Demo: SAPBC405_SSCD_EVENT_ORDER

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 581

Page 596: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 251: Ayuda general y Ayuda para entradas (F1 y F4)

Puede programar su propia ayuda F1 (ayuda general) y ayuda F4 (ayuda paraentradas) para los eventos AT SELECTION-SCREEN ON HELP-REQUEST yAT SELECTION-SCREEN ON VALUE-REQUEST. La ayuda F1 puedehacer referencia a los parámetros individuales o a una tabla de selección(seltab). Si especifica el nombre de un SELECT-OPTIONS, recibirá ayudaparaseltab-low y seltab-high.

Debe especificar el campo de intervalo inferior o el superior como referencia parauna ayuda F4 de una opción de selección.

Luego de colocar el cursor y utilizar la tecla F1 o F4, el sistema desencadena elevento apropiado.

El suplemento ON VALUE-REQUEST muestra el botón pulsador para la ayuda F4en el campo correspondiente.

Consejo: La ayuda F1 y la ayuda F4 generalmente se almacenan en elDiccionario. Esto es conveniente para el programador, ya que así nodeberá preocuparse por la obtención de datos reales de la ayuda de entraday la transferencia del valor seleccionado al campo de entrada.

Estas ayudas F1 y F4 ofrecen al usuario un diseño uniforme para todoslos programas.

582 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 597: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

Demo: Reports SAPBC405_SSCD_F1 and SAPBC405_SSCD_F4.

Variantes

Gráfico 252: Pantalla de selección: Variantes I

Los usuarios pueden crear un número de variantes (pantalla de selección)cualquiera para un programa. Las variantes se asignan de forma exclusiva en elprograma y no pueden compartirse con otros programas.

La creación de variantes es útil si se inicia frecuentemente un programa con elmismo set de selecciones o se ejecuta un programa de fondo.

Si selecciona Iniciar con variante en los atributos del programa, el sistema obligaal usuario a seleccionar una variante cuando se ejecuta el programa.

Si el programa utiliza varias pantallas de selección, puede crear una variante paratodas las pantallas de selección o individualmente para cada pantalla de selección.

Convenciones para fijar nombres y variantes de transporte

SAP&xxx se suministran con el sistema SAP.

CUS&xxx son creadas por el cliente.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 583

Page 598: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Las variantes que siguen estas convenciones para fijar nombres son independientesdel mandante y se transportan automáticamente con el informe. Si no se siguenestas convenciones para fijar nombres, debe agregarse una entrada para una orden(tarea) de la lista de objetos. Para hacerlo, seleccione Pasar a → Variantes parapasar del editor ABAP a la actualización de variantes e ingresar las variantes quese transportarán a través de Utilidades → Orden de transporte.

Pantalla de selección: Variantes II

Atributos

Variante: Sólo para el procesamiento de fondo

Proteger variantes

Mostrar sólo en catálogo

Variante del sistema (transporte automático)

Atributos de campo: Campo de entrada requerido

Desactivar los parámetros SET/GET

Grabar el campo sin valores

Variable de selección

Ocultar el campo "PARA"

Ocultar campo

Proteger campo

Se le solicita que asigne un nombre y una descripción para cada variante. Pordefecto, las variantes están disponibles para el procesamiento en línea y defondo. También puede definir una variante exclusivamente para el uso con elprocesamiento de fondo.

Puede proteger la variante misma, y los criterios de selección individual ylos parámetros contra cambios no autorizados. Si selecciona Sólo mostrar encatálogo, esta variante no se mostrará en la ayuda general para valores (F4); sólose mostrará en el catálogo. El catálogo de variante es parte de ABAP Workbenchy, por lo tanto, sólo los programadores de ABAP pueden acceder (y no los usuariosnormales del programa). Encontrará el catálogo de variantes (un resumen detodas las variantes existentes) del editor de ABAP en Pasar a → Variantes y, a suvez, en Variantes → Catálogo.

La clase de selección se determina en su declaración (clase S paraSELECT-OPTIONS, clase P para PARAMETERS). Si selecciona Seleccionesprotegidas, no se prepararán los campos para entrada. Puede utilizar el atributoocultar para ocultar las selecciones que no se requieren y esto da como resultadouna pantalla de selección más ordenada.

584 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 599: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

Al utilizar las variables de selección, existen tres formas básicas de suministrar losvalores a las selecciones en el tiempo de ejecución:

• de la tabla TVARVC (clase T): Puede definir permanentemente las variablescon los valores de esta tabla; el sistema utiliza los nombres de la variablepara recuperar el valor en el tiempo de ejecución.

• Puede ofrecer los campos de fechas con los datos mediante el cálculodinámico (clase D), por ejemplo, la fecha actual o el mes actual.

• Con las variables específicas de usuario (clase B), aquí debe declarar laselección con el suplemento MEMORY ID <pid>.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 585

Page 600: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

534Creación de variantes con el cálculo de fecha dinámico

Consejo: Esto describe el procedimiento para SAP NetWeaver7.0. Aunque la idea del cálculo de fecha dinámico era similar enversiones recientes, el procedimiento era algo distinto.

1. Cree las variantes y pase a los atributos de variante.

2. Utilice la ayuda F4 para definir la clase de variable de selección (atributo deVariable de selección) para el cálculo de fecha dinámico D.

3. Utilice F4 para definir el nombre de la variable (atributo Nombre devariable), como Mes actual con el cálculo de fecha dinámico para elintervalo de tiempo.

Create a variant for any report that contains a selection with a date. For example,you can use the report SAPBC405_SSCD_VARIANTS – it contains two selectionscreens.

To read variant contents from the TVARVC table, you must maintainsuitable entries there beforehand. You can use subsidiary reportSAPBC405_SSCD_FILL_TVARVC to do that.

586 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 601: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

535 Ejercicio 25: Verificaciones de entrada yvariantesDuración del ejercicio: 20 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Inicializar y verificar la pantalla de selección• Crear variantes

Ejemplo empresarialExtender su registro de datos de vuelo: Si selecciona los Vuelos domésticos,también debe especificar un país para limitar la cantidad de vuelos. Programe unaverificación de entrada correspondiente para la pantalla de selección.

Tarea:Amplíe el programa ZBC401_##_MAIN o copie la solución modeloSAPBC405_SSCS_1B del ejercicio anterior.

Solución modelo para la tarea: SAPBC405_SSCS_2.

Añada un parámetro adicional y una verificación de entrada a la pantalla deselección.

1. En la tercera etiqueta, cree un parámetro adicional del código de país al quehace referencia wa_flight-countryfr y pida al usuario que registre unvalor allí si selecciona vuelos domésticos. Para este caso, amplíe la cláusulaWHERE del SELECCIONAR relevante.

2. Muestre el mensaje de error 003 en la clase de mensaje BC405 si el usuarioseleccionó vuelos domésticos y el parámetro de entrada para el país es inicial.Si se produce un error, sólo el grupo de botones de selección y el parámetrode país deben estar listos para la entrada.

3. Cree una variante V##. Utilice el cálculo de fecha dinámica (variable deselección) y asegúrese de que se utilice el mes actual para la fecha de vuelo.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 587

Page 602: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Solución 25: Verificaciones de entrada yvariantesTarea:Amplíe el programa ZBC401_##_MAIN o copie la solución modeloSAPBC405_SSCS_1B del ejercicio anterior.

Solución modelo para la tarea: SAPBC405_SSCS_2.

Añada un parámetro adicional y una verificación de entrada a la pantalla deselección.

1. En la tercera etiqueta, cree un parámetro adicional del código de país al quehace referencia wa_flight-countryfr y pida al usuario que registre unvalor allí si selecciona vuelos domésticos. Para este caso, amplíe la cláusulaWHERE del SELECCIONAR relevante.

a) Revise la solución al final de la tarea.

2. Muestre el mensaje de error 003 en la clase de mensaje BC405 si el usuarioseleccionó vuelos domésticos y el parámetro de entrada para el país es inicial.Si se produce un error, sólo el grupo de botones de selección y el parámetrode país deben estar listos para la entrada.

a) Revise la solución al final de la tarea.

3. Cree una variante V##. Utilice el cálculo de fecha dinámica (variable deselección) y asegúrese de que se utilice el mes actual para la fecha de vuelo.

a) Cree la variante V## de la pantalla de selección usando Grabar comovariante.

b) Seleccione el campo de entrada Fecha de vuelo de la pantalla deselección 1200.

c) Seleccione el valor D del atributo Variable de selección para el campode entrada seleccionado.

d) Seleccione el valor Mes actual del atributo Variable de selecciónpara el campo de entrada seleccionado.

ResultadoPrograma principal

Sin cambios.

Include TOP

REPORT bc405_sscs_2.

* Workarea for data fetch

Continúa en la página siguiente

588 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 603: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

DATA: wa_flight TYPE dv_flights.

* Constant for CASE statement

CONSTANTS mark VALUE 'X'.

* Selections for connections

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.

SELECT-OPTIONS: so_car FOR wa_flight-carrid,

so_con FOR wa_flight-connid.

SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.

SELECT-OPTIONS so_fdt FOR wa_flight-fldate NO-EXTENSION.

SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter

SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.

*=============================

* Begin of new or changed code

*=============================

* Output parameter

SELECTION-SCREEN BEGIN OF BLOCK param.

*===========================

* End of new or changed code

*===========================

SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.

PARAMETERS: pa_all RADIOBUTTON GROUP rbg1,

pa_nat RADIOBUTTON GROUP rbg1,

pa_int RADIOBUTTON GROUP rbg1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK radio.

*=============================

* Begin of new or changed code

*=============================

PARAMETERS: pa_ctry LIKE wa_flight-countryfr.

SELECTION-SCREEN END OF BLOCK param.

*===========================

* End of new or changed code

*===========================

SELECTION-SCREEN END OF SCREEN 1300.

Include E01

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 589

Page 604: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

*=============================

* Begin of new or changed code

*=============================

*&

*& Event AT SELECTION-SCREEN ON BLOCK PARAM

*&

AT SELECTION-SCREEN ON BLOCK param.

* check country for national flights is not empty

CHECK pa_nat = 'X' AND pa_ctry = space.

MESSAGE e003(bc405).

*===========================

* End of new or changed code

*===========================

START-OF-SELECTION.

...

* Radiobutton NATIONAL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

AND countryto = dv_flights~countryfr

*=============================

* Begin of new or changed code

*=============================

AND countryto = pa_ctry.

*===========================

* End of new or changed code

*===========================

590 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 605: 119167612 taw10-01-es

TAW10_1 Lección: Verificaciones de entrada y variantes

Resumen de la lección

Ahora podrá:• Implementar verificaciones de entrada para las pantallas de selección• Crear variantes para una pantalla de selección

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 591

Page 606: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Lección:540

Pantalla de selección: modificaciones en tiempo deejecución.Duración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo, verá cómo pueden cambiarse las propiedades de un elemento depantalla de selección (por ejemplo, un campo de entrada) en el tiempo de ejecucióncomo “listo para la entrada y listo para la salida” a “listo para la salida”. En estecontexto, también verá cómo se crean los pulsadores en la pantalla de selección.

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

• Crear pulsadores en la pantalla de selección• Programar cambios en la pantalla de selección en el tiempo de ejecución

Ejemplo empresarialUsted es programador en ABC Travel. Su jefe desea que modifique el informe delos datos de vuelo de modo que algunos campos de selección puedan visualizarseen la pantalla de selección sólo si son solicitados y no están visibles siempre.Usted es responsable de esta tarea.

592 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 607: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

Generación de pulsadores en la pantalla de selección

Gráfico 253: Generación de pulsadores en la pantalla de selección

Puede generar pulsadores en la pantalla de selección. Use la declaraciónSELECTION-SCREEN PUSHBUTTON ... . para hacerlo. Tenga en cuentaque, por defecto, el pulsador no se ubica en una línea nueva. Para tener un saltode línea explícito, combine su especificación de posición con una barra diagonal,por ejemplo /1(20).

Se deben especificar un nombre y un comando de usuario para el pulsador.

El texto que debe aparecer en el pulsador debe actualizarse de forma separada. Parahacerlo, se utilizan símbolos de texto que se asignan a INITIALIZATION delpulsador. De forma alternativa, también se puede utilizar el módulo de funcionesICON_CREATE para generar un texto o un ícono.

Si un usuario selecciona un pulsador, se desencadenará el comando de usuarioasignado a éste y se ubicará en el campo sscrfields-ucomm . Por lo tanto,se debe incluir la declaración TABLES sscrfields en el programa.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 593

Page 608: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Gráfico 254: Eventos ABAP para la pantalla de selección frente a Eventosde la pantalla

Las pantallas de selección son pantallas especiales generadas por el sistemaque sólo se deben a declaraciones ABAP. En una programación de pantallanormal, para cada pantalla, existen dos puntos en el tiempo en los que se puedeimplementar la lógica de flujo.

• Proceso antes de la salida (PBO) inmediatamente antes de la visualizaciónde pantalla

• Proceso después de la salida (PBO) inmediatamente después de lavisualización de pantalla

Los equivalentes para estos eventos en la pantalla de selección son:

• Proceso antes de salida (PBO): AT SELECTION-SCREEN OUTPUT

• Proceso después de la entrada (PAI): AT SELECTION-SCREEN

594 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 609: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

Gráfico 255: Evaluación de pulsadores en la pantalla de selección

El comando de usuario se fija en el campo sscrfields-ucomm en elPAI de la pantalla de selección. El PAI se asigna mediante el evento ATSELECTION-SCREEN .

Por lo tanto, puede determinar qué pulsador seleccionó el usuario y reaccionar deacuerdo a esto en la aplicación. Lo ideal sería observarlo a causa de una distinciónde casos en una declaración CASE.

Modificación de la pantalla de selección en el tiempode ejecución

Gráfico 256: Visualización y ocultamiento de los campos de selección

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 595

Page 610: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Cada campo de la pantalla de selección tiene una entrada en la tabla del sistemaSCREEN. Puede cambiar los contenidos de esta tabla.

Puede ocultar los campos de selección asignando el valor 0 al atributoSCREEN-ACTIVE. Puede controlar qué campos se deben ocultar usando elnombre de campo o el nombre de grupo.

Para la preparación para los status de entrada de los campos, debe asignar un valoral campo screen-input.

Gráfico 257: LOOP EN LA PANTALLA

Cada campo en la pantalla de selección tiene un nombre, por ejemplo,so_car-low y so_car-high para low o el campo high deSELECT-OPTIONS so_car.

Puede dirigirse a estos campos dentro de LOOP AT SCREEN ...ENDLOOP usando sus nombres (campo screen-name) y visualizarlos uocultarlos en la pantalla de selección en el tiempo de ejecución. Deben visualizarseu ocultarse en el PBO de la pantalla de selección. Éste se asigna mediante elevento AT SELECTION-SCREEN OUTPUT.

Para no tener la necesidad de dirigirse a cada campo individual, puede combinarlas selecciones y crear los denominados grupos de modificación. Se asignael nombre de un grupo de modificación a la declaración PARAMETERS oSELECT-OPTIONS con el suplemento MODIF ID <xxx>.

596 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 611: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

545 Ejercicio 26: Pantalla de selección:modificaciones en tiempo de ejecución.Duración del ejercicio: 40 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Definir pulsadores en una pantalla de selección• Evaluar los pulsadores• Mostrar y ocultar las selecciones dinámicas

Ejemplo empresarialUsted es programador en ABC Travel. Los usuarios de su programa para informesde datos de vuelo también desearían seleccionar vuelos de las ciudades de salida yllegada, en caso de que necesario. Sin embargo, las opciones de selección debenocultarse únicamente si así se lo requiere por medio de un pulsador para crear unapantalla de selección más clara.

Tarea:Amplíe el programa ZBC405_##_SOL o copie el programa SAPBC405_SSCS_2.

Solución modelo: SAPBC405_SSCS_3

1. Cree dos opciones de selección más en la subscreen 1100: Ciudad desalida y ciudad de llegada (con referencia a wa_flight-cityfrom /wa_flight-cityto). Puede enmarcar las selecciones y asignarle untítulo al marco. Ajuste los accesos a las bases de datos.

2. En la opción de selección so_con (número de conexión), se debevisualizar un pulsador. Éste debe mostrar el texto “Ocultar detalles” comoparametrización por defecto.

Si el usuario selecciona el pulsador “Ocultar detalles”, el sistema ocultarála Ciudad de salida y la Ciudad de llegada. Ahora, el pulsador mostrará“Mostrar detalles”.

Si el usuario selecciona el pulsador en estado “Mostrar detalles”, los camposocultos deben ser nuevamente visibles.

Nota:

Debe utilizar los eventos INITIALIZATION, AT SELECTION-SCREEN yAT SELECTION-SCREEN OUTPUT.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 597

Page 612: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

Solución 26: Pantalla de selección:modificaciones en tiempo de ejecución.Tarea:Amplíe el programa ZBC405_##_SOL o copie el programa SAPBC405_SSCS_2.

Solución modelo: SAPBC405_SSCS_3

1. Cree dos opciones de selección más en la subscreen 1100: Ciudad desalida y ciudad de llegada (con referencia a wa_flight-cityfrom /wa_flight-cityto). Puede enmarcar las selecciones y asignarle untítulo al marco. Ajuste los accesos a las bases de datos.

a) Revise la solución al final de la tarea.

2. En la opción de selección so_con (número de conexión), se debevisualizar un pulsador. Éste debe mostrar el texto “Ocultar detalles” comoparametrización por defecto.

Si el usuario selecciona el pulsador “Ocultar detalles”, el sistema ocultarála Ciudad de salida y la Ciudad de llegada. Ahora, el pulsador mostrará“Mostrar detalles”.

Si el usuario selecciona el pulsador en estado “Mostrar detalles”, los camposocultos deben ser nuevamente visibles.

Nota:

Debe utilizar los eventos INITIALIZATION, AT SELECTION-SCREEN yAT SELECTION-SCREEN OUTPUT.

a) Revise la solución al final de la tarea.

ResultadoPrograma principal

Sin cambios.

Include TOP

REPORT bc405_sscs_3.

* Workarea for data fetch

DATA: wa_flight TYPE dv_flights.

* Constant for CASE statement

CONSTANTS mark VALUE 'X'.

*=============================

* Begin of new or changed code

Continúa en la página siguiente

598 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 613: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

*=============================

* Structure for pushbutton command

TABLES: sscrfields.

DATA: switch TYPE n VALUE '1'.

*===========================

* End of new or changed code

*===========================

* Selections for connections

SELECTION-SCREEN BEGIN OF SCREEN 1100 AS SUBSCREEN.

SELECT-OPTIONS: so_car FOR wa_flight-carrid,

so_con FOR wa_flight-connid.

*=============================

* Begin of new or changed code

*=============================

SELECTION-SCREEN SKIP 2.

SELECTION-SCREEN PUSHBUTTON pos_low(20) push_det

USER-COMMAND details.

SELECTION-SCREEN SKIP.

SELECTION-SCREEN BEGIN OF BLOCK bl_det

WITH FRAME TITLE text-tld.

SELECT-OPTIONS:

so_start FOR wa_flight-cityfrom MODIF ID det,

so_dest FOR wa_flight-cityto MODIF ID det.

SELECTION-SCREEN END OF BLOCK bl_det.

*===========================

* End of new or changed code

*===========================

SELECTION-SCREEN END OF SCREEN 1100.

* Selections for flights

SELECTION-SCREEN BEGIN OF SCREEN 1200 AS SUBSCREEN.

SELECT-OPTIONS so_fdt FOR wa_flight-fldate NO-EXTENSION.

SELECTION-SCREEN END OF SCREEN 1200.

* Output parameter

SELECTION-SCREEN BEGIN OF SCREEN 1300 AS SUBSCREEN.

SELECTION-SCREEN BEGIN OF BLOCK param WITH FRAME

TITLE text-tl3.

SELECTION-SCREEN BEGIN OF BLOCK radio WITH FRAME.

PARAMETERS:

all RADIOBUTTON GROUP rbg1,

national RADIOBUTTON GROUP rbg1,

internat RADIOBUTTON GROUP rbg1 DEFAULT 'X'.

SELECTION-SCREEN END OF BLOCK radio.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 599

Page 614: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

PARAMETERS: country LIKE wa_flight-countryfr.

SELECTION-SCREEN END OF BLOCK param.

SELECTION-SCREEN END OF SCREEN 1300.

SELECTION-SCREEN BEGIN OF TABBED BLOCK airlines

FOR 10 LINES.

SELECTION-SCREEN TAB (20) tab1 USER-COMMAND conn

DEFAULT SCREEN 1100.

SELECTION-SCREEN TAB (20) tab2 USER-COMMAND date

DEFAULT SCREEN 1200.

SELECTION-SCREEN TAB (20) tab3 USER-COMMAND type

DEFAULT SCREEN 1300.

SELECTION-SCREEN END OF BLOCK airlines .

Include E01

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

*& Event INITIALIZATION

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

INITIALIZATION.

* Initialize select-options for CARRID" OPTIONAL

MOVE: 'AA' TO so_car-low,

'QF' TO so_car-high,

'BT' TO so_car-option,

'I' TO so_car-sign.

APPEND so_car.

CLEAR so_car.

MOVE: 'AZ' TO so_car-low,

'EQ' TO so_car-option,

'E' TO so_car-sign.

APPEND so_car.

* Set texts for tabstrip pushbuttons

tab1 = 'Connections'(tl1).

tab2 = 'Date'(tl2).

tab3 = 'Type of flight'(tl3).

* Set second tab page as initial tab

airlines-activetab = 'DATE'.

airlines-dynnr = '1200'.

*=============================

* Begin of new or changed code

*=============================

* Text for pushbuttons

Continúa en la página siguiente

600 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 615: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

push_det = 'Hide details'(p02).

*===========================

* End of new or changed code

*===========================

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

*& Event START-OF-SELECTION

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

START-OF-SELECTION.

* Checking the output parameters

CASE mark.

WHEN all.

* Radiobutton ALL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

*=============================

* Begin of new or changed code

*=============================

AND cityfrom IN so_start

AND cityto IN so_dest.

*===========================

* End of new or changed code

*===========================

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

WHEN national.

* Radiobutton NATIONAL is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

*=============================

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 601

Page 616: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

* Begin of new or changed code

*=============================

AND cityfrom IN so_start

AND cityto IN so_dest

*===========================

* End of new or changed code

*===========================

AND countryto = dv_flights~countryfr

AND countryto = country.

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

WHEN internat.

* Radiobutton INTERNAT is marked

SELECT * FROM dv_flights INTO wa_flight

WHERE carrid IN so_car

AND connid IN so_con

AND fldate IN so_fdt

*=============================

* Begin of new or changed code

*=============================

AND cityfrom IN so_start

AND cityto IN so_dest

*===========================

* End of new or changed code

*===========================

AND countryto <> dv_flights~countryfr.

WRITE: / wa_flight-carrid,

wa_flight-connid,

wa_flight-fldate,

wa_flight-countryfr,

wa_flight-cityfrom,

wa_flight-airpfrom,

Continúa en la página siguiente

602 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 617: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

wa_flight-countryto,

wa_flight-cityto,

wa_flight-airpto,

wa_flight-seatsmax,

wa_flight-seatsocc.

ENDSELECT.

ENDCASE.

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

*& Event AT SELECTION-SCREEN ON BLOCK PARAM

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

AT SELECTION-SCREEN ON BLOCK param. " OPTIONAL

* check country for national flights is not empty

CHECK national = 'X' AND country = space.

MESSAGE e003(bc405).

*=============================

* Begin of new or changed code

*=============================

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

*& Event at selection-screen output

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

AT SELECTION-SCREEN OUTPUT.

CASE sy-dynnr.

WHEN 1100.

LOOP AT SCREEN.

IF screen-group1 = 'DET'.

screen-active = switch.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

IF switch = '1'.

push_det = text-p02.

ELSE.

push_det = text-p01.

* clear additional select-options to avoid unwanted

* influence at selection from database

REFRESH: so_start,

so_dest.

ENDIF.

ENDCASE.

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

*& Event at selection-screen

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 603

Page 618: 119167612 taw10-01-es

Capítulo 12: Pantalla de selección TAW10_1

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

AT SELECTION-SCREEN.

* Evaluate pushbutton command

CASE sscrfields-ucomm.

WHEN 'DETAILS'.

CHECK sy-dynnr = 1100.

IF switch = '1'.

switch = '0'.

ELSE.

switch = '1'.

ENDIF.

ENDCASE.

*===========================

* End of new or changed code

*===========================

604 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 619: 119167612 taw10-01-es

TAW10_1 Lección: Pantalla de selección: modificaciones en tiempo de ejecución.

Resumen de la lección

Ahora podrá:• Crear pulsadores en la pantalla de selección• Programar cambios en la pantalla de selección en el tiempo de ejecución

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 605

Page 620: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Explicar el objetivo de las pantallas de selección• Crear campos de entrada con PARAMETERS• Crear campos de entrada con SELECT-OPTIONS• Diseñar la pantalla de selección• Definir pantallas de selección adicionales• Definir subscreens• Definir una ficha en una pantalla de selección• Implementar verificaciones de entrada para las pantallas de selección• Crear variantes para una pantalla de selección• Crear pulsadores en la pantalla de selección• Programar cambios en la pantalla de selección en el tiempo de ejecución

606 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 621: 119167612 taw10-01-es

Capítulo 13555 Llamadas de programa y gestión de

almacenamiento de datos

Now we’re getting down to business! How are programs held in memory atruntime? How is data transferred back and forth between programs?

To take advantage of all the possibilities provided in ABAP, and avoid undesiredside-effects, developers have to know exactly how ABAP programs are executedand which options are available for exchange data between programs.

In this lesson, you explain how internal and external sessions are created andterminated in the application server when programs are started and stopped. Inthis context, you will also describe the memory model. You should also mentionABAP memory and SAP memory at this point.

Loading programs into program groups is important for understanding establishedprograms (example: VA01, module pool SAPMV45A). Here, at the latest, thebenefits of modern programming approaches for delimiting data (and otherfeatures) should become clear.

The transfer of data between programs is dealt with in another section.

Resumen del capítuloLas aplicaciones raramente constan de un solo programa. ¿Qué ocurre cuando elprograma A llama a otro programa? ¿Cómo se llama al programa adicional?¿Existen diferencias entre los diferentes tipos de programas? Responderemos aestas preguntas en la primera parte de esta unidad.

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

• Explicar cómo se llaman los programas dentro de otros programas• Describir las diversas opciones para intercambiar datos entre programas• Explicar cómo se gestiona la memoria en la máquina virtual de ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 607

Page 622: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Contenido del capítuloLección: Llamados de programa y gestión de almacenamiento dedatos ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .609

Ejercicio 27: Memoria ABAP... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .631

608 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 623: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Lección:556

Llamados de programa y gestión de almacenamientode datosDuración de la lección: 40 Minutos

Resumen de la lecciónEn este módulo, enumeraremos las opciones para llamar programas. Tambiénexaminaremos las posibilidades que ofrece ABAP para el intercambio de datosentre programas.

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

• Explicar cómo se llaman los programas dentro de otros programas• Describir las diversas opciones para intercambiar datos entre programas• Explicar cómo se gestiona la memoria en la máquina virtual de ABAP

Complex ABAP applications only rarely consist of just one program. In mostcases, several different programs are called, which exchange data with one another.It is important to understand how memory is managed in ABAP programs, inorder to ensure a proper application flow: How are sessions opened? How andwhen are they closed? And so on...

It is also important to know about the options for passing data between theseprogram units. This lesson is dedicated to ABAP memory and SAP memory;cross-user storage methods are discussed in another lesson.

Ejemplo empresarialEl Sr. Jiménez es un desarrollador de software de una importante empresaque desarrolla aplicaciones empresariales de propiedad en ABAP. Se le haencargado el desarrollo de una aplicación nueva y flexible para reservar vuelos.Para modularizar su aplicación lo máximo posible, el Sr. Jiménez crea variosprogramas ABAP. Como resultado, algunos programas deben llamarse dentro deotros programas. Cuando el Sr. Jiménez haya aprendido cómo se pueden llamarlos programas dentro de otros programas ABAP, podrá utilizar estas llamadasde programa de manera eficaz e implementar la transferencia de datos entre losprogramas correctamente.

Llamadas de programa sincrónicasABAP presenta dos opciones para ejecutar un programa dentro de otroprograma: las declaraciones SUBMIT y CALL TRANSACTION (o LEAVE TOTRANSACTION). Las dos declaraciones tienen distintos efectos: En la última, el

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 609

Page 624: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

programa de llamada finaliza tan pronto como se inicia el programa llamado. Enla última, el programa de llamada espera hasta que el programa llamado finaliza yla ejecución del programa de llamada continúa con la declaración después de lallamada de programa. Por tanto, se distingue entre los siguientes términos:

InsertarLa lógica de proceso del programa de llamada se pausa durante la ejecucióndel programa llamado. Una vez que ha finalizado el programa llamado,continúa el programa de llamada.

Nuevo inicioEl programa de llamada se cancela y el programa llamado se inicia.

Gráfico 258: Llamadas de programa sincrónicas

You can use the program SAPBC414D_CALLTECHNIQUES (transaction codeBC414D_CALL) to demonstrate the options for program and transaction callsdescribed here.

Los programas completos dentro de una única sesión de usuario sólo sepueden ejecutar secuencialmente. Esta técnica también se denomina llamadassecuenciales. Si desea ejecutar actividades en paralelo, debe usar módulos defunciones.

Nota: Encontrará más información acerca de esta técnica en otroscursos de formación, y sobre la declaración CALL FUNCTION ...STARTING NEW TASK ... en la documentación de palabras claveABAP.

610 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 625: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 259: Llamada de un programa ejecutable

Para iniciar un programa ejecutable (tipo 1), utilice la declaración SUBMIT. Siutiliza el suplemento VIA SELECTION-SCREEN, se muestra la imagen deselección estándar del programa llamado (si la hay).

Si utiliza el suplemento AND RETURN, el sistema reanuda el proceso con laprimera declaración del programa de llamada después de la declaración SUBMITuna vez que haya finalizado el programa llamado.

Nota: Para obtener más información sobre la declaración SUBMIT,consulte la documentación de palabras clave ABAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 611

Page 626: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Gráfico 260: Llamada de una transacción

Si utiliza la declaración LEAVE TO TRANSACTION 'T_CODE' , el sistemacancela el programa actual e inicia la transacción con el código de transacciónT_CODE. La declaración es el equivalente a registrar /NT_CODE en el campode comando.

Mediante la declaración CALL TRANSACTION 'T_CODE' , puede insertar unprograma que tenga un código de transacción.

Puede utilizar la declaración LEAVE PROGRAM para forzar la cancelación de unprograma. Para casos en los que esta sentencia se ejecuta en un programa llamadomediante CALL TRANSACTION 'T_CODE' o

SUBMIT prog_name AND RETURN, continúe con la siguiente declaración después de esta llamada.

En el resto de los casos, el usuario regresa al menú de aplicación desde el queinició el programa.

Si utiliza el suplemento ... AND SKIP FIRST SCREEN , el sistema nomuestra el contenido de la primera imagen en la transacción.

Atención: Sin embargo, procesa la lógica de proceso.

612 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 627: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Si inició una transacción usando CALL TRANSACTION 'T_CODE' y esatransacción utiliza técnicas de actualización, puede usar el suplemento UPDATE... para especificar la técnica de actualización (asincrónica [por defecto],sincrónica o local) que el programa debe usar.

Nota: Para obtener más información, consulte el curso de formaciónBC414 (Programación de actualizaciones de la base de datos) y labiblioteca SAP.

Gestión de la memoria de trabajoEl modo en que la memoria principal está organizada desde el punto de vista delprograma se puede representar en el siguiente modelo simple:

Gráfico 261: Modelo de memoria lógica

Existe una diferencia entre las sesiones interna y externa:

• Generalmente, una sesión externa corresponde a una ventana SAPGUI.Puede crear una nueva sesión con Sistema –> Nueva sesión, o llamando/OT_CODE . Puede tener hasta seis sesiones externas abiertas a la vez enuna sesión terminal.

• Las sesiones externas están subdivididas en sesiones internas (colocadas enuna pila). Cada programa que se inicia ocupa su propia sesión interna. Cadasesión externa puede contener hasta nueve sesiones internas.

Los datos de un programa están visibles sólo en una sesión interna. En general, lavisibilidad de los datos está limitada al programa relevante.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 613

Page 628: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Respuesta de las sesiones internas a llamadas de programaEn esta sección se ilustra cómo cambia la pila en un modo externo con diversasllamadas de programa. El punto inicial para el primer caso es la ejecución delas declaraciones

SUBMIT ... AND RETURNo CALL TRANSACTION en un programa:

Inserción de un programa

Gráfico 262: Antes de la inserción de un programa

Al insertar un programa, el sistema crea una sesión interna nueva que contiene elnuevo contexto del programa. La nueva sesión se coloca en la pila. El contextodel programa de la llamada permanece en la pila.

614 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 629: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 263: Ejecución del programa insertado

Cuando finaliza el programa llamado, se elimina su sesión interna (primera de lapila). El procesamiento se reanuda en la sesión interna que le sigue en alturaen la pila.

Gráfico 264: Tras la finalización del programa insertado

Inicio de un nuevo programa ejecutableAl finalizar un programa e iniciar uno nuevo, existe una diferencia entre llamarun programa ejecutable y llamar una transacción, en lo que respecta a las áreasde memoria.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 615

Page 630: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

El punto inicial para el segundo caso es la ejecución de una declaraciónSUBMIT en un programa:

Gráfico 265: Antes de iniciar un nuevo programa ejecutable

Si llama un programa ejecutable mediante su nombre (y finaliza el programa dellamada), el sistema destruye la sesión interna del programa que está cancelando(la primera de la pila). El sistema crea una nueva sesión interna que contiene elcontexto del programa llamado. La nueva sesión se coloca en la pila. Se conservacualquier contexto de programa que previamente se haya creado. Por tanto, laprimera sesión interna de la pila se reemplaza en última instancia.

616 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 631: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 266: Ejecución del nuevo programa ejecutable

Inicio de una nueva transacciónEl punto inicial para el tercer caso es la ejecución de una declaración LEAVETO TRANSACTION en un programa:

Gráfico 267: Antes de iniciar una nueva transacción

Si inicia un programa mediante su código de transacción, se destruyen todas lassesiones internas de la pila. El sistema crea una nueva sesión interna que contieneel contexto del programa llamado.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 617

Page 632: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Gráfico 268: Ejecución de la nueva transacción

Esto significa que se inicializa la pila completa de sesiones internas, es decir, seinicializa la memoria ABAP tras la llamada.

Grupos de programasEn un módulo anterior, hemos tratado la visibilidad de definiciones de datos enun programa ABAP. Vimos que es posible distinguir entre variables globalesy locales. En esta sección, investigaremos cómo actúa el sistema cuando unprograma llama una subrutina de un segundo programa.

By the end of this section, the participants should be aware of the hazards ofexternal subroutine calls.

Use program SAPBC402_PGCAD_CALLER to demonstrate program groups.This program makes two subroutine calls and sends one screen in each subroutine.The first called program, SAPBC402_PGCAD_CALLED_TYPE_1 sends screen100 of the calling program(!), and the data is represented correctly. Althoughthe second called program (SAPBC402_PGCAD_CALLED_TYPE_F) is alsoa type 1 program, the introductory statement is “FUNCTION-POOL” – withactually causes a new program group (“additional program group”) to be openedwithin the internal session. The called screen is actually the one from the calledprogram; however, no data is displayed, because the TABLES structure is onlyvisible within a program group.

Debug the program call. In the conventional debugger, you can display all theprograms that are loaded into the active internal session with menu path Goto –>Status Display –> Loaded Programs. The In Group with... column indicates the

618 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 633: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

program group to which each program belongs. You can see that the first calledprogram is loaded in a group with the calling program, but the second programopens a new program group (no entry in the In Group with... column).

Therefore, function module calls provide a way to cleanly separate programgroups (similar to classes).

Gráfico 269: Grupos de programas en una sesión interna

Cuando el sistema inicia una sesión interna, siempre crea el grupo de programasprincipal. Cualquier número de grupos de programas adicionales se puede creartambién en la misma sesión interna. Cada grupo de programas tiene exactamenteun programa principal. Cuando se llama una subrutina (externa), el programaprincipal de esta subrutina se carga en el grupo de programas del programa dellamada.

Los desarrolladores deben prestar atención a dos aspectos:

• Todos los programas de un grupo de programas comparten las áreas detrabajo de la interfaz declaradas con TABLAS TABLES, NODES y COMMONPART.

• En un grupo de programas, CALL SCREEN sólo se puede utilizar parallamar imágenes del programa principal.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 619

Page 634: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Gráfico 270: Grupo de programas principal/adicional

Si se llama un módulo de funciones (CALL FUNCTION) de un grupo de funcioneso de un método (CALL METHOD) de una definición de clase que aún no se hancargado, se crea un grupo de programas adicional.

Atención: Para ser exactos, el tipo de programa (se puede definir en losatributos de programa) no es el factor decisivo en el hecho de si unallamada de subrutina externa abre un nuevo grupo de programas. Ladeclaración que inicia el programa es el factor decisivo. (Si se inicia unprograma de tipo 1 con la declaración FUNCTION-POOL, se abre ungrupo de programas adicional de todas maneras, como se puede ver en elDebugger.)

Resumen: En general, si se utilizan llamadas de subrutinas externas, siempreexiste el riesgo de que las definiciones de datos de un programa se compartirá conotros programas. Aunque puede para para algunos casos excepcionales, debeevitarlo siempre que sea posible en los aspectos de encapsulación y facilidadde mantenimiento.

Transferencia de datosEn relación con el debate sobre el modo de iniciar programas dentro de otrosprogramas de la sección anterior, a continuación examinaremos cómo se puedenintercambiar datos entre programas.

620 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 635: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Existen diversas formas de pasar datos entre programas que se ejecutan encontextos de programa independientes (sesiones internas). De estos métodos, noobstante, sólo presentaremos aquéllos que son independientes de la plataforma yque sólo intercambian datos temporales.

Resumen de las opciones de transferencia de datos

Gráfico 271: Transferencia de datos entre programas: Resumen

Puede utilizar las siguientes técnicas (entre otras) para el traspaso de datos:

• La interfaz del programa llamado (generalmente una pantalla de selecciónestándar)

• Memoria ABAP• Memoria SAP• Tablas de bases de datos• Archivos locales en el servidor de presentación

En esta sección sólo trataremos las tres primeras técnicas ya que son las únicasque cumplen nuestro requisito de transitoriedad. Para obtener informaciónadicional sobre el traspaso de datos mediante tablas de base de datos o la memoriaintermedia compartida, consulte la información sobre declaraciones EXPORT eIMPORT de la documentación de palabras clave ABAP.

Para obtener información adicional sobre la transferencia de datos entre unprograma ABAP y su servidor de presentación, consulte la documentación demódulos de funcionesWS_UPLOAD yWS_DOWNLOAD. Para ello, tambiénpuede utilizar los métodos de clase CL_GUI_FRONTEND_SERVICES.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 621

Page 636: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Traspaso de datos mediante la interfaz del programa

You can use the program SAPBC414D_DATATRANSFER (transaction codeBC414D_DATATRANSFER) to demonstrate the data transfer for program andtransaction calls.

Gráfico 272: Traspaso de datos mediante la interfaz del programa

Al llamar programas ABAP que tienen una pantalla de selección estándar, puedepasar datos para los campos de entrada en la llamada. Existen dos formas derealizar esta tarea:

• Especificando una variante para la pantalla de selección cuando llama elprograma

• Especificando valores específicos para campos de entrada cuando llamael programa

622 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 637: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 273: Asignación previa de campos de entrada

El suplemento WITH en la sentencia SUBMIT permite asignar valores a loscampos en una pantalla de selección estándar. Los operadores relacionales EQ,NE, ... y los operadores de inclusión I y E tienen los mismos significados que lasopciones de selección.

Si desea establecer varias selecciones para una opción de selección, puede utilizartambién el tipo RANGE en lugar de suplementos WITH individuales. Así se creauna tabla de selección que puede rellenar como si fuera una opción de selección.Luego debe pasar la tabla completa al programa ejecutable.

Si desea ver la pantalla de selección estándar cuando se llama el programa, utiliceel suplemento VIA SELECTION-SCREEN.

Utilice la estructura de la declaración en el Editor ABAP para insertar una llamadade programa mediante SUBMIT. La estructura proporciona automáticamente losnombres de los parámetros y las opciones de selección disponibles en la imagende selección estándar.

Consejo: Para obtener más información sobre el uso de variantes y otrasvariantes de sintaxis del suplemento WITH, consulte la información sobrela declaración SUBMIT de la documentación de palabras clave ABAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 623

Page 638: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Traspaso de datos mediante una tabla interna aliniciar una transacción

Gráfico 274: Traspaso de datos mediante una tabla interna

Al llamar una transacción mediante la declaración CALL TRANSACTION'T_CODE' USING bi_itab, puede ejecutar la transacción T_CODE usandolos valores de la tabla interna bi_itab en los campos de la pantalla. Esta tablainterna debe tener la estructura BDCDATA y rellenarse en consecuencia.

El suplemento MODE permite especificar si el contenido de la pantalla debemostrarse (el valor de propuesta es A), sólo si se produce un error (E) o en ningúncaso (N).

Puede utilizar el suplemento MESSAGES INTO para especificar una tablainterna en la que deben escribirse los mensajes del sistema. La tabla internacorrespondiente debe tener el tipo de estructura global BDCMSGCOLL.

Puede saber si la transacción se ejecutó correctamente desde el código de retorno(SY-SUBRC).

Esta técnica puede ser útil si:

• Está procesando en diálogo, pero los campos de entrada no se han rellenadocon parámetros GET.

• Desea procesar la transacción “de fondo”. En este caso, normalmente deberápasar también los códigos de función de la tabla.

624 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 639: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 275: Campos del tipo global BDCDATA

Cumplimentación de la tabla interna en formato de batch input:

• Cada pantalla que desee rellenar y procesar automáticamente en latransacción debe identificarse mediante una línea en la que únicamente serellenan los campos PROGRAM, DYNPRO y DYNBEGIN.

• Después del registro que identifica la pantalla, utilice un nuevo registroBDCDATA para cada registro que desee rellenar. Estos registros utilizan loscampos FNAM y FVAL. Puede completar los siguientes campos:

– Campos de entrada/salida (con datos)– Campo de comando BDC_OKCODE (con un código de función)– Campo para posicionar el cursor BDC_CURSOR (con un nombre de

campo)

Esta técnica es además uno de los posibles modos de transferir datos de sistemasdistintos de SAP. Al hacerlo, debe rellenarse por completo la tabla interna con laestructura BDCDATA.

Para obtener más información, consulte el curso de formación BC420(Transferencia de datos) y la biblioteca SAP.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 625

Page 640: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Gráfico 276: Transferencia de datos mediante una tabla interna: Ejemplode aplicación

El ejemplo anterior muestra la transacción de ejemplo BC402_CALD_CTA_Udel paquete BC402. Cuando el usuario crea una nueva entrada de cliente, elprograma llama la transacción BC402_CALD_CRE_CUST. Esta transacción noha implementado la importación de la memoria ABAP y sus campos de entrada nose han fijado como parámetros GET. Los datos del cliente, por tanto, se transfierenmediante una tabla interna y se procesan de manera “invisible”.

Si la operación es satisfactoria, el nuevo registro de cliente se puede introduciren la lista de espera. A continuación, se ilustra la tabla interna cumplimentadaen formato BDCDATA.

En el tiempo de ejecución, CURRENT_NAME indica el nombre de cliente delcampo de entrada y CURRENT_CITY indica la ciudad. Direccione el campo decomando mediante BDC_OKCODE. Aquí debe registrar el código de función queel usuario desencadena al elegir una tecla de función, un pulsador o una entrada demenú durante el proceso de diálogo (o al ingresar un código directamente en elcampo de comandos).

Memoria ABAP y memoria SAPA menudo es necesario transferir datos entre dos programas diferentes. Sinembargo, no siempre es posible especificar estos datos como un suplemento en lallamada de programa. En tales casos, puede utilizar la memoria SAP y la memoriaABAP para transferir datos entre programas:

626 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 641: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Gráfico 277: Margen de memoria ABAP y memoria SAP

• La memoria SAP es un área de memoria específica del usuario paraalmacenar valores de campo. Por tanto, no resulta útil para el traspaso dedatos entre sesiones internas.

Los valores de la memoria SAP se conservan durante la sesión terminal deusuario. La memoria SAP se puede utilizar entre las sesiones en la mismasesión terminal. Todas las sesiones externas de una sesión de usuariopueden acceder a la memoria SAP.

Puede utilizar el contenido de la memoria SAP como valores de propuestapara los campos de pantalla.

• La memoria ABAP también es específica del usuario. Existe una memoriaABAP local para cada sesión externa. Puede utilizarla para intercambiarcualquier objeto de datos ABAP (campos, estructuras, tablas internas,objetos complejos) entre las sesiones internas de cualquier sesión externa.

Cuando el usuario sale de una sesión externa (/i en el campo de comando), lamemoria ABAP correspondiente se inicializa o se libera automáticamente.

Memoria ABAPLa declaración EXPORT ... TO MEMORY copia cualquier número de objetosde datos ABAP con sus valores actuales (cluster de datos) en la memoria ABAP. Elsuplemento ID (longitud máxima de 60 caracteres) permite identificar diferentesclústeres.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 627

Page 642: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Gráfico 278: Traspaso de datos mediante la memoria ABAP

Si utiliza una nueva declaración EXPORT TO MEMORY para un cluster de datosexistente, ésta sobrescribe la declaración antigua. La declaración IMPORT ...FROM MEMORY ID ... permite copiar datos de la memoria ABAP en loscampos correspondientes de su programa ABAP.

También puede restringir la selección a una parte del cluster de datos en ladeclaración IMPORT. Las variables en las que desea leer datos del cluster de lamemoria ABAP deben tener los mismos tipos tanto en programas de exportacióncomo de importación.

Utilice la declaración FREE MEMORY ID ... para liberar un cluster de datosexplícitamente.

Atención: Al llamar programas mediante códigos de transacción, sólopuede utilizar la memoria ABAP para traspasar datos a la transacción enel caso de inserción (CALL TRANSACTION).

628 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 643: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Memoria SAP

Gráfico 279: Traspaso de parámetros mediante la memoria SAP

Puede definir áreas de memoria (parámetros) en la memoria SAP de diversasmaneras:

• Al crear campos de entrada/salida con referencia al ABAP Dictionary. Éstostoman los nombres de parámetro de los elementos de datos a los que hacenreferencia.

Como alternativa, puede registrar un nombre en los atributos de los camposde entrada/salida. Luego puede decidir si las entradas del campo debentransferirse al parámetro (SET) o si el campo de entrada debe rellenarsecon el valor del parámetro (GET).

Para obtener los nombres de los parámetros asignados a los campos deentrada, visualice la ayuda de campo con la tecla (F1) y seleccione Datostécnicos.

• También puede rellenar las áreas de memoria directamente con la declaraciónSET PARAMETER ID 'PAR_ID' FIELD var. y leerlas con ladeclaración GET PARAMETER ID 'PAR_ID' FIELD var..

• Por último, puede definir parámetros en el Object Navigator y dejar queel usuario los rellene con valores.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 629

Page 644: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

630 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 645: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

577 Ejercicio 27: Memoria ABAPDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Utilizar SUBMIT para llamar un (reporte de) programa• Utilizar la memoria ABAP para intercambiar datos entre programas

Ejemplo empresarialUn programa existente selecciona datos basado en las entradas del usuario y losmuestra en una lista. Desea llamar este programa dentro de otro programa yutilizar la memoria ABAP para devolver los datos seleccionados a la aplicación dellamada.

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 1:Preparación

1. Copie el programa SAPBC402_RUNS_BOOKINGS. Asigne el nombreZBC402_##_SUBMIT_CALLED al programa copiado.

Tarea 2:Modifique el programa.

1. Desactive las líneas de programa que se utilizan para mostrar los datos. Ensu lugar, almacene los datos seleccionados en una tabla interna.

2. Amplíe el programa de manera que la tabla interna se exporte a la memoriaABAP tras una selección de datos correcta. Para hacerlo, asigne un IDadecuado para su cluster de datos (nombre sugerido: BC402_##_SBOOK).

En caso de que no se lea ningún dato, asegúrese de que el cluster de datosestá liberado.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 631

Page 646: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Tarea 3:Llame el programa.

1. Cree un nuevo programa ejecutable con el nombre ZBC402_##_SUB-MIT_CALLER.

2. Implemente una llamada del programa ZBC402_##_SUBMIT_CALLED.Asegúrese de el programa se haya insertado, es decir, tras su finalización, elcontrol debe volver al programa de llamada.

3. Facilite los siguientes valores en la pantalla de selección del programa dellamada:

Número de cliente "0033".

Reservas de vuelos en los últimos 180 días.

Consejo: Utilice objetos de datos elementales adecuados para elintervalo de datos de reserva que previamente rellenará según lafecha actual (campo de sistema SY-DATUM).

4. Una vez que se haya ejecutado el programa insertado, importe los datos de lamemoria ABAP y muéstrelos. Si ocurre un error, responda con el mensaje deerror 361 de la clase de mensaje BC402.

632 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 647: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Solución 27: Memoria ABAPTarea 1:Preparación

1. Copie el programa SAPBC402_RUNS_BOOKINGS. Asigne el nombreZBC402_##_SUBMIT_CALLED al programa copiado.

a) Proceda de la manera habitual.

Tarea 2:Modifique el programa.

1. Desactive las líneas de programa que se utilizan para mostrar los datos. Ensu lugar, almacene los datos seleccionados en una tabla interna.

a) Consulte el extracto del código fuente de la solución modelo.

2. Amplíe el programa de manera que la tabla interna se exporte a la memoriaABAP tras una selección de datos correcta. Para hacerlo, asigne un IDadecuado para su cluster de datos (nombre sugerido: BC402_##_SBOOK).

En caso de que no se lea ningún dato, asegúrese de que el cluster de datosestá liberado.

a) Consulte el extracto del código fuente de la solución modelo.

Tarea 3:Llame el programa.

1. Cree un nuevo programa ejecutable con el nombre ZBC402_##_SUB-MIT_CALLER.

a) Proceda de la manera habitual.

2. Implemente una llamada del programa ZBC402_##_SUBMIT_CALLED.Asegúrese de el programa se haya insertado, es decir, tras su finalización, elcontrol debe volver al programa de llamada.

a) Implemente una declaración SUBMIT. Utilice el suplemento ANDRETURN.

Consulte el extracto del código fuente de la solución modelo.

3. Facilite los siguientes valores en la pantalla de selección del programa dellamada:

Número de cliente "0033".

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 633

Page 648: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

Reservas de vuelos en los últimos 180 días.

Consejo: Utilice objetos de datos elementales adecuados para elintervalo de datos de reserva que previamente rellenará según lafecha actual (campo de sistema SY-DATUM).

a) Consulte el extracto del código fuente de la solución modelo.

4. Una vez que se haya ejecutado el programa insertado, importe los datos de lamemoria ABAP y muéstrelos. Si ocurre un error, responda con el mensaje deerror 361 de la clase de mensaje BC402.

a) Consulte el extracto del código fuente de la solución modelo.

Resultado

Extracto del código fuente:SAPBC402_PGCS_SUBMIT_CALLED

REPORT sapbc402_pgcs_submit_called.

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

TYPES:

ty_t_sbook TYPE STANDARD TABLE OF sbook

WITH NON-UNIQUE DEFAULT KEY.

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

DATA:

gt_sbook TYPE ty_t_sbook,

wa_sbook LIKE LINE OF gt_sbook.

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

PARAMETERS:

pa_cust TYPE sbook-customid.

SELECT-OPTIONS:

so_odate FOR wa_sbook-order_date.

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

START-OF-SELECTION.

SELECT *

FROM sbook

INTO TABLE gt_sbook

WHERE customid = pa_cust

AND order_date IN so_odate.

Continúa en la página siguiente

634 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 649: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

IF sy-subrc <> 0.

MESSAGE s038(bc402).

* Zu dieser Selektion existieren keine Daten (Bitte Neueingabe)

FREE MEMORY ID 'BC402_SBOOK'.

* ENDIF.

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

*END-OF-SELECTION.

* LOOP AT gt_sbook INTO wa_sbook.

*

* WRITE: /

* wa_sbook-carrid,

* wa_sbook-connid,

* wa_sbook-fldate,

* wa_sbook-bookid,

* wa_sbook-customid,

* wa_sbook-luggweight,

* wa_sbook-wunit.

*

* ENDLOOP.

ELSE.

EXPORT it_sbook FROM gt_sbook

TO MEMORY ID 'BC402_SBOOK'.

ENDIF.

Extracto del código fuente:SAPBC402_PGCS_SUBMIT_CALLER

REPORT sapbc402_pgcs_submit_caller.

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

TYPES:

ty_t_sbook TYPE STANDARD TABLE OF sbook

WITH NON-UNIQUE DEFAULT KEY.

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

DATA:

it_sbook TYPE ty_t_sbook,

wa_sbook LIKE LINE OF it_sbook,

fromdate TYPE sbook-order_date,

todate TYPE sbook-order_date.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 635

Page 650: 119167612 taw10-01-es

Capítulo 13: Llamadas de programa y gestión de almacenamiento de datos TAW10_1

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

START-OF-SELECTION.

fromdate = sy-datum - 180.

todate = sy-datum.

SUBMIT sapbc402_pgcs_submit_called AND RETURN

WITH pa_cust EQ '0033'

WITH so_odate BETWEEN fromdate AND todate.

IMPORT it_sbook TO it_sbook

FROM MEMORY ID 'BC402_SBOOK'.

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

IF sy-subrc <> 0.

MESSAGE e361(bc402).

ELSE.

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

LOOP AT it_sbook INTO wa_sbook.

WRITE: /

wa_sbook-carrid,

wa_sbook-connid,

wa_sbook-fldate,

wa_sbook-bookid,

wa_sbook-customid,

wa_sbook-luggweight,

wa_sbook-wunit.

ENDLOOP.

ENDIF.

Discusión con moderadorReinforcement

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.

Which options are available for passing data between programs?

636 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 651: 119167612 taw10-01-es

TAW10_1 Lección: Llamados de programa y gestión de almacenamiento de datos

Resumen de la lección

Ahora podrá:• Explicar cómo se llaman los programas dentro de otros programas• Describir las diversas opciones para intercambiar datos entre programas• Explicar cómo se gestiona la memoria en la máquina virtual de ABAP

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 637

Page 652: 119167612 taw10-01-es

Resumen del capítulo TAW10_1

Resumen del capítuloAhora podrá:• Explicar cómo se llaman los programas dentro de otros programas• Describir las diversas opciones para intercambiar datos entre programas• Explicar cómo se gestiona la memoria en la máquina virtual de ABAP

638 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 653: 119167612 taw10-01-es

Capítulo 14585 Nuevas herramientas de prueba

The most important lesson in this unit undoubtedly concerns the Code Inspector,the purpose of which is usually self-explanatory. By contrast, more focus must beplaced on the checkpoints and ABAP Unit features.

Resumen del capítuloEsta unidad brinda una introducción al Code Inspector, una nueva forma deverificación de programa que supera la verificación de sintaxis extendida.

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

• Analizar programas utilizando Code Inspector• Describir los atributos más importantes de Code Inspector• Definir inspecciones

Contenido del capítuloLección: Code Inspector .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .640

Ejercicio 28: Code Inspector .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .647

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 639

Page 654: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Lección:586

Code InspectorDuración de la lección: 30 Minutos

Resumen de la lecciónEn este módulo, aprenderá sobre Code Inspector, el cual puede utilizarse parallevar a cabo verificaciones estáticas e integrales del programa con SAP WebApplication Server 6.20 y versiones posteriores. Realizará inspecciones estándare inspecciones autodefinidas.

(Code Inspector ya estaba disponible con funciones limitadas en SAP R/3 4.6C.Consulte la nota SAP 543359 para obtener detalles).

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

• Analizar programas utilizando Code Inspector• Describir los atributos más importantes de Code Inspector• Definir inspecciones

In this lesson, you introduce the Code Inspector as another analysis tool. Discussthe extended syntax check, to which the Code Inspector is a natural enhancement,in this context too.

You can start code inspections from within the Editor. In addition, you can alsocall transaction code SCI directly to define your own (mass) inspections. Theparticipants will define their own inspections in the exercise.

Ejemplo empresarialSu empresa está implementando un importante proyecto de desarrollo ABAP.Usted es miembro de un equipo de proyectos y es responsable de la estabilidad demuchas aplicaciones, así como también del uso de las declaraciones esenciales.Code Inspector es una herramienta que permite examinar declaraciones críticasen el código fuente. Utilice Code Inspector para garantizar que los programasdesarrollados sean compatibles con las directrices internas.

IntroducciónCode Inspector le permite verificar el rendimiento, la seguridad y los errores desemántica típicos en sus programas (o sets de programas). A continuación, seenumeran algunos de los criterios de control para cada uno de estos aspectos conel objeto de explicarlos de manera más detallada:

640 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 655: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

rendimiento¿Se utilizan índices para el acceso a la base de datos?¿Se ha incluido alguna declaración SELECT en los loops?

Seguridad¿Se accede a otros mandantes dentro del programa?¿Se utilizan elementos dinámicos en la declaración SELECT?

Errores de semántica típicos¿Se verifica el campo sy-subrc después de cada declaraciónAUTHORITY-CHECK?¿Realmente se especifica un mandante en la declaración CLIENTSPECIFIED?¿Se envían varios mensajes (de error) tipo E de manera consecutiva?

Llamada de Code InspectorExisten varias formas distintas de llamar Code Inspector.

Gráfico 280: Llamada de Code Inspector directamente desde el Editor ABAP

El gráfico muestra una posibilidad. Elija el acceso vía menús Programa →Verificar → Code Inspector para llamar Code Inspector e iniciar una inspecciónestándar. Se obtiene el mismo resultado cuando se inicia Code Inspector desde elmenú contextual en la lista de objetos.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 641

Page 656: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Gráfico 281: Resultados de la inspección

Como resultado de la inspección, recibirá una lista de errores y mensajes deadvertencia. El botón del mensaje muestra una descripción detallada de loserrores, además de sugerencias para la mejora. Al hacer doble clic en el texto delerror se muestra la declaración del programa correspondiente.

A veces es práctico, o incluso imprescindible, escribir en el código fuente ABAPque Code Inspector realiza una consulta, como una llamada de transacción.Al igual que con la verificación de sintaxis extendida, puede proporcionar unpseudocomentario "#EC * para dichos comandos.

Con una verificación estándar llamada desde el Editor, Code Inspector utiliza unavariante de verificación por defecto en la cual están predefinidas las verificacionespor realizar. Esta variante de verificación por defecto contiene:

Variante de verificación por defecto

• Verificación de sintaxis ampliada• Verificación de declaraciones esenciales (como llamadas C o Native SQL)• Verificaciones de rendimiento seleccionadas

Puede sobrescribir esta variante de verificación por defecto creando una nueva conel nombre DEFAULT. Sin embargo, tenga en cuenta que esta nueva variante deverificación sustituirá la variante estándar de su usuario (en todos los mandantes).

642 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 657: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

Si elimina la variante de verificación por defecto, se utiliza automáticamentela variante estándar para futuras verificaciones. Por este motivo, siempre debedefinir sus propias variantes de verificación en lugar de sobrescribir la variantepor defecto.

Definición de variantes de verificación, sets de objetose inspeccionesPara definir verificaciones personalizadas, inicie Code Inspector con el código detransacción SCI o siga el acceso vía menús Herramientas → ABAP Workbench →Test → Code Inspector. La pantalla inicial contiene tres áreas:

Gráfico 282: Definición de inspecciones complejas en la transacción SCI

Variante de verificaciónDetermina las verificaciones que se deben llevar a cabo, por ejemplo, lasconvenciones de programación o la verificación de rendimiento.

set de objetosDetermina qué objetos (de Repository) se deben verificar.

InspecciónNombre de la verificación real. Si desea grabar la inspección y los resultadosde ésta, o ejecutarla de fondo, debe asignarle un nombre. Si no registra unnombre para la inspección, no se grabarán los resultados.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 643

Page 658: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Normalmente, una inspección utiliza una variante de verificación y un set deobjetos definidos previamente. Sin embargo, también es posible crear sets deobjetos y variantes de verificación temporales que sólo sean válidos para unainspección, y que no se puedan reutilizar en otras inspecciones.

Consejo: Puede definir variantes de verificación, set de objetos einspecciones como locales (relacionadas con el usuario) o globales(públicas). Utilice el pulsador situado junto a cada campo de entradapara alternar entre estas dos categorías. Tenga en cuenta que los objetosprivados son sólo para uso personal, mientras que los objetos públicosestán disponibles para todos los usuarios del sistema.

Una variante de verificación consta de una o varias categorías de verificaciónque, a su vez, constan de una o más verificaciones (inspecciones) sencillas. Estasverificaciones sencillas se pueden parametrizar, por ejemplo, con una palabraclave o un indicador para un aspecto parcial específico de la verificación. Enla mayoría de los casos, las verificaciones sencillas sólo investigan un tipo deobjeto específico, como la "Verificación de atributos de tabla", que sólo examinatablas DDIC.

Gráfico 283: Creación de una variante de verificación

644 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 659: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

Las verificaciones simples se asignan a diversas categorías de verificación. Lascategorías de verificación más importantes son las siguientes:

• Las verificaciones generales contienen el formato de datos, como la lista denombres de tablas de declaraciones SELECT

• Las verificaciones de rendimiento contienen verificaciones de rendimientoy utilización de recursos, como el

– análisis de la condición WHERE para SELECT / UPDATE y DELETE– Declaraciones SELECT que omiten la memoria intermedia de la tabla– acceso de bajo rendimiento a tablas internas

• Las verificaciones de seguridad contienen verificaciones de sentenciascríticas, consultas de todos los mandantes y verificaciones de autoridadinsuficientes

• La generación/verificación de sintaxis contiene la verificación de sintaxisABAP, una verificación extendida de programa y la generación

• Las convenciones de programación contienen verificaciones de convencionespara fijar nombres

• Las funciones de búsqueda contienen búsquedas para tokens (palabras) ydeclaraciones en el código fuente ABAP

Important: You should run through the demo before the course begins to makesure that the check variant DEFAULT has been defined in such a way that it findsthe errors in the demo program.

Demo: Copy, activate and analyze the program SAPDNW7AW_CODE_INSP_D1.(It is not possible to check an SAP system in a customer system.) It contains arange of questionable ABAP commands. Perform an inspection directly from theABAP Editor by choosing Program → Check → Code Inspector.

Start transaction SCI. First carry out an anonymous ad-hoc run. Then define anobject set, a check variant (including the search pattern *TODO* and all tests forthe extended program check) and an inspection. Carry out the inspection.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 645

Page 660: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

646 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 661: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

593 Ejercicio 28: Code InspectorDuración del ejercicio: 30 Minutos

Objetivos de los ejerciciosAl finalizar este ejercicio podrá:• Realizar una inspección mediante Code Inspector• Crear muchas variantes de verificación y usarlas en inspecciones

Ejemplo empresarialEl usuario está desarrollando una aplicación importante en ABAP. Para realizar unseguimiento de los factores críticos del programa más allá de la verificación desintaxis convencional, utilice Code Inspector.

Tarea 1:Copie y ejecute el programa de referencia.

1. Copie el programa SAPDNW7AW_CODE_INSP_T1 y llámeloZDNW7AW_CODE_INSP_S_##. (## indica el número de grupo de dosdígitos).

2. Active su copia, llame el programa y lea el código fuente para familiarizarsecon la manera en que trabaja el programa.

Tarea 2:Realice la verificación de programas ampliada.

1. En primer lugar, realice la verificación de programas ampliada clásica en elABAP Workbench. Observe la lista de resultados.

Tarea 3:Realice la verificación de Code Inspector con la variante de verificación pordefecto.

1. Realice una verificación con Code Inspector en la ABAP Workbench. Elresultado ya debería revelar los aciertos de código fuente más notables queen la verificación de programas ampliada.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 647

Page 662: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Tarea 4:Realice la verificación de Code Inspector con su propia variante deverificación.

1. Cree una variante de verificación local (específica del usuario) y asígneleel nombre ZDNW7AW_##. (## indica el número de grupo de dos dígitos).Desea que la variante realice las siguientes verificaciones:

Todas las verificaciones de rendimiento

Todas las verificaciones de seguridad

La verificación de sintaxis ampliada completa

Se deben buscar todos los comentarios para la cadena de caracteres TODO.

2. Cree un set de objeto local (específico del usuario) y asígnele el nombreZDNW7AW_##. Este set de objetos debe contener todos los objetos delpaquete ZDNW7AW_##.

3. Cree una inspección local (específica del usuario) y asígnele el nombreZDNW7AW_##.

Defina la inspección de manera tal que se verifique el set de objetos y seutilice la variante de verificación.

4. Realice la inspección y analice los resultados.

5. Evalúe los resultados y corrija el programa ZDNW7AW_CODE_INSP_S_##.

Luego, realice la verificación nuevamente con Code Inspector.

648 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 663: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

Solución 28: Code InspectorTarea 1:Copie y ejecute el programa de referencia.

1. Copie el programa SAPDNW7AW_CODE_INSP_T1 y llámeloZDNW7AW_CODE_INSP_S_##. (## indica el número de grupo de dosdígitos).

a) Realice este paso de la forma habitual.

Encontrará el programa en el paquete DNW7AW.

2. Active su copia, llame el programa y lea el código fuente para familiarizarsecon la manera en que trabaja el programa.

a) Realice este paso de la forma habitual.

Tarea 2:Realice la verificación de programas ampliada.

1. En primer lugar, realice la verificación de programas ampliada clásica en elABAP Workbench. Observe la lista de resultados.

a) Cuando el programa se visualiza en el Workbench, seleccionePrograma → Verificar → Verificación de programas ampliada. Elijatodas las verificaciones que el sistema le ofrezca. Para iniciar laverificación, presione F8.

Tarea 3:Realice la verificación de Code Inspector con la variante de verificación pordefecto.

1. Realice una verificación con Code Inspector en la ABAP Workbench. Elresultado ya debería revelar los aciertos de código fuente más notables queen la verificación de programas ampliada.

a) Cuando se muestre el programa en el área de herramientas deWorkbench, seleccione Programa → Verificar → Code Inspector. Abrala carpeta de visualización de resultados y obsérvelos.

Continúa en la página siguiente

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 649

Page 664: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Tarea 4:Realice la verificación de Code Inspector con su propia variante deverificación.

1. Cree una variante de verificación local (específica del usuario) y asígneleel nombre ZDNW7AW_##. (## indica el número de grupo de dos dígitos).Desea que la variante realice las siguientes verificaciones:

Todas las verificaciones de rendimiento

Todas las verificaciones de seguridad

La verificación de sintaxis ampliada completa

Se deben buscar todos los comentarios para la cadena de caracteres TODO.

a) Inicie la transacción SCI.

b) Ingrese el nombre ZDNW7AW_## para la variante de verificación yseleccione Crear ( ).

c) Seleccione los tests correspondientes.

Encontrará la verificación de sintaxis ampliada en la carpetaGeneración/Verificación de sintaxis. Para seleccionar todas lasopciones, seleccione Lista de verificaciones.

Para buscar TODO, abra la carpeta Func.de búsqueda y seleccioneBúsqueda de tokens de ABAP. Para ver los detalles de la funciónde búsqueda, seleccione . En la siguiente pantalla, seleccioneComentarios y defina *TODO* como la cadena de búsqueda.

Grabe su variante de verificación.

2. Cree un set de objeto local (específico del usuario) y asígnele el nombreZDNW7AW_##. Este set de objetos debe contener todos los objetos delpaquete ZDNW7AW_##.

a) En la pantalla inicial para la transacción SCI, ingrese elnombreZDNW7AW_## para el set de objetos y seleccione Crear ( ).

3. Cree una inspección local (específica del usuario) y asígnele el nombreZDNW7AW_##.

Defina la inspección de manera tal que se verifique el set de objetos y seutilice la variante de verificación.

a) Registre el nombre ZDNW7AW_## para la inspección y seleccioneCrear ( ).

Registre el set de objetos y la variante de verificación en los camposcorrespondientes.

Continúa en la página siguiente

650 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 665: 119167612 taw10-01-es

TAW10_1 Lección: Code Inspector

4. Realice la inspección y analice los resultados.

a) Para realizar la inspección, presione F8. Analice los resultados quese muestran en la pantalla.

5. Evalúe los resultados y corrija el programa ZDNW7AW_CODE_INSP_S_##.

Luego, realice la verificación nuevamente con Code Inspector.

a) Consulte la solución modelo SAPDNW7AW_CODE_INSP_S1.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 651

Page 666: 119167612 taw10-01-es

Capítulo 14: Nuevas herramientas de prueba TAW10_1

Resumen de la lección

Ahora podrá:• Analizar programas utilizando Code Inspector• Describir los atributos más importantes de Code Inspector• Definir inspecciones

652 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 667: 119167612 taw10-01-es

TAW10_1 Resumen del capítulo

Resumen del capítuloAhora podrá:• Analizar programas utilizando Code Inspector• Describir los atributos más importantes de Code Inspector• Definir inspecciones

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 653

Page 668: 119167612 taw10-01-es

Resumen del curso TAW10_1

Resumen del cursoAhora podrá:

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

Más informaciónPuede encontrar información adicional acerca de los temas tratados en este cursode formación en:

• cursos de administración del sistema más avanzados;• la Biblioteca SAP;• la base de datos de SAP Notes;• el SAP Service Marketplace;• la página de inicio de SAP.

654 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 669: 119167612 taw10-01-es

GlosarioABAP

ABAP (Advanced Business Application Programming) is a programminglanguage developed by SAP.

Access MethodThe access method describes the connection between a spool work processand the operating system spool.

ALEApplication Link Enabling: technology to create and operate distributedapplications.

BAPIA Business Application Programming Interface is a standardizedprogramming interface that facilitates internal and external access to businessprocesses and data in SAP systems.

BORThe Business Object Repository gives you an overview of the businessobjects in an SAP system, and functions for managing them.

BufferArea in the main memory of an instance in which data frequently used byapplications can be temporarily stored.

Central systemThe central system is an SAP system where the central instance, centralservices instance (only for Java AS) and the database are installed on thesame computer.

clientA client usually represents a company in an SAP system. This means that ifan SAP system has several clients, then several companies can be representedand simultaneously active in that system. The client has a corresponding keyfield in the tables of the database for that SAP system. If you are logged onto a specific client, then you can only access data for that client. Clientstherefore correspond to independent business entities.

ClientSoftware component that uses the services provided by a server(software-oriented view) or work station for which the server providesresources (hardware-oriented view).

Command fieldYou can start applications directly by entering the transaction code in thecommand field.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 655

Page 670: 119167612 taw10-01-es

Glosario TAW10_1

CPI-CCommon Program Interface Communication describes the exchange of databetween different programs. Data “packed” in CPI-C can be transferred usingvarious technical protocols, such as TCP/IP or LU6.2.

Database InterfaceComponent of a work process that connects it to the database. The databaseinterface translates ABAP Open SQL into database-specific SQL, therebyenabling communication with the database.

Database transactionNon-divisible sequence of database operations, that must be either executedcompletely, ending with a database commit, or not at all.

DIAGDynamic Information and Action Gateway: Protocol for communicationbetween SAP GUI and the application server (also known as the SAP GUIprotocol).

EDIEDI: Electronic Data Interchange. The electronic exchange of structured data,such as business documents, between domestic and international companiesusing a variety of hardware, software and communication services. For thispurpose, the data involved is formatted according to predefined standards.You can configure EDI using ALE.

Enqueue ServerEnqueue server is a possible description for the instance of an SAP system onwhich the enqueue work process manages the lock table.

Enterprise Service-Oriented ArchitectureEnterprise service-oriented architecture: Provision of application functions inthe form of enterprise services. These are web services that can be combinedand used for business purposes.

F1 HelpYou can use the F1 key to display an explanation of fields, menus, functionsand system messages. The F1 help also displays technical information onthe relevant field.

F4 HelpThe F4 help displays input help (possible values) for a field that is readyfor input.

favoriteFavorites’ lists can be compiled by SAP users and typically contain frequentlyused transaction codes and web links. A favorite allows you to call up afunction directly without additional navigation.

field groupA field group comprises a set of related screen elements, for example, allcheckboxes in one selection.

Gateway (Reader)Interface for communication between SAP systems.

656 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 671: 119167612 taw10-01-es

TAW10_1 Glosario

HTTPWorld Wide Web (WWW) application protocol. The HyperText TransferProtocol (HTTP) controls communication between the Web browser (theHTTP client) and the Web server (the HTTP server).

IDocIntermediate document: SAP standard format for electronic data interchangebetween systems.

instanceAdministrative unit in which components of an SAP system that provide oneor more services are grouped together. The offered services of an instancesare started, stopped and monitored together. You use a common instanceprofile to set parameters of all the components of an instance. An instanceruns on one physical computer, but there can be multiple instances on onecomputer. An instance is identified by the system ID (SID) and the instancenumber.

Internet Communication ManagerThe Internet Communication Manager (ICM) is the component in the SAParchitecture that allows the SAP system to communicate directly with theInternet.

Lock modeStatus that determines whether a user has exclusive access to a data record, orwhether access is shared with other users.

lock tableThe lock table is a table in the main memory of the enqueue server, whichcontains information about which locks currently exist. For each lock thatit exists, it shows the owner, the lock mode, the name, and the fields of thelocked table.

LU6.2Logical Unit Type 6.2: SNA protocol for program-to-programcommunication. SNA (System Network Architecture) prescribes the logicalstructures, formats and logs for the transfer of data within a network.

Message ServerIndependent program that maintains a list of all instances in an SAP system.The message server determines which instance a user logs on to and organizescommunication between instances.

Native SQL (ABAP)Database language that enables the use of database-specific SQL statementsin an ABAP program.

OLEObject Linking and Embedding is supported by SAP systems. Theinformation required by the OLE interface is transferred using RFC toOLE-enabled applications outside the SAP system.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 657

Page 672: 119167612 taw10-01-es

Glosario TAW10_1

Open SQL (ABAP)SAP-specific range of SQL statements. ABAP Open SQL allows you to avoidconflicts between database tables and makes ABAP programs independentof the database system used.

Output RequestAn output request contains the data from a spool request in a format for aparticular printer model.

Ramp-upMarket introduction process of new products or new releases of SAP software

Release to CustomerDate that marks the initial availability of a new release for customers and thestart of the restricted shipment phase.

Restricted Shipment PhaseFirst delivery phase for a new release. In the phase, the number of customersusing the new release is increased in a controlled fashion.

RFCThe Remote Function Call (RFC) is an SAP interface protocol based onCPI-C. It simplifies the programming of communication processes betweensystems.

RoleA role is a collection of activities that a person performs to participate in oneor more business scenarios in an organization. You access the transactions,reports, Web-based applications and other objects contained in roles throughuser menus.

SAP Business SuiteThe SAP Business Suite includes a complete package of open enterpriseapplications that link all parties involved, information and processes, andtherefore improve the effectiveness of your business relationships.

SAP Easy AccessSAP Easy Access is the default initial screen in SAP systems. The left sideof the screen contains a tree hierarchy of the menus available to you in theSAP system; you can use the right side of the screen to display a graphic,such as your company logo.

SAP GUISAP Graphical User Interface; program, which the user can use to exchangeinformation with the ABAP SAP system. You can use the user interface tochoose commands, start programs, display files and execute other options bypressing function keys or selecting menu options.

SAP GUI for HTMLSAP GUI that runs in the Web browser and generates HTML pagesdynamically on the basis of SAP screens. Requires the Internet TransactionServer as part of AS ABAP.

SAP GUI for JavaPlatform-independent SAP GUI, requires a Java environment.

658 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 673: 119167612 taw10-01-es

TAW10_1 Glosario

SAP GUI for WindowsA SAP GUI implementation in a Windows environment.

SAP LogonWhen you call up the SAP Logon, it displays a list of SAP systems for whichyou can start the logon process. This list is taken from the information in a fileon the front end: saplogon.ini. This file is usually centrally preconfigured andprovided for end users. During logon, the SAP Logon program also enableslogon load balancing using the resources available for the system selected.

SAP NetWeaverSAP NetWeaver is SAP’s integration and application platform. It is thetechnical basis for almost all SAP applications at the moment.

SAP NetWeaver Business IntelligenceProvides comprehensive analytical functions with optionally installablebusiness content.

SAP NetWeaver MDMSAP Master Data Management provides functions for integrated, centralmaster data administration in a company.

SAP NetWeaver MobileSAP NetWeaver Mobile serves as the universal platform for companymobility and supports SAP solutions for Mobile Business.

SAP NoteAn SAP Note is a text containing information for a particular question,problem situation, or system message, that can occur in connection to yourwork in the system. All SAP notes are available in an online database,and can be called by customers from there. An example of a possiblequestion could be: “Which database versions of database XY are released incombination with my SAP system release?”

SAP systemAn SAP system can be, for example, an SAP ECC 6.0, an SAP BW, or anSAP CRM system. SAP systems for m the central components of the SAPBusiness Suite.

ServerSoftware component that provides a service (software-oriented view) orcentral computer within a network that provides resources for the individualwork-station computers (hardware-oriented view).

Shared MemoryMain memory area that is accessible for all work processes of an instance.

SMTPSMTP: Simple Mail Transfer Protocol. SMTP is the most commonly usedprotocol for transmitting e-mails on the Internet. The e-mail program passesthe e-mail to an SMTP server, which then transfers it to the recipient’s mailserver. In SAP systems, the ICM has now taken on the role of the mail server.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 659

Page 674: 119167612 taw10-01-es

Glosario TAW10_1

SOAPSOAP: Simple Object Access Protocol. For an exact and current definition ofthe current SOAP standard, see http://www.w3.org

spool requestA spool request contains information about data to be output, its formatting,and the printer model used.

task handlerThe task handler coordinates processes and manages resources within a workprocess.

TCOTotal cost of ownership

TCP/IPThe Transmission Control Protocol/Internet Protocol, developed in 1969,describes a procedure for transferring data between computers. It is thestandard protocol for Internet data transfer.

Transaction (AS ABAP)An ABAP transaction describes a logically complete action in an AS ABAPsystem. From the user’s point of view, a transaction represents a unit (forexample, creating a list of a certain type of customer, changing a customer’saddress, creating a flight reservation for a customer, or executing a program).

transaction codeA transaction code (also known as a TCode) is a sequence of characters thatidentifies a transaction in the SAP system. A transaction code may contain upto 20 characters and must always begin with a letter. Permitted charactersare letters from A to Z, numbers from 0 to 9, and the underscore. To call upa transaction, enter the transaction code into the OK Code field and chooseENTER.

Unrestricted shipment phaseSecond delivery phase for new software releases, in which all customerscan request the new software.

User Master RecordThe user master record contains the definition of a particular user in theclient. Some of the fields are name, first name, initial password and phonenumber. The user master record is used to create the user context (see: usercontext) when a user logs on to the system.

VB* tablesUpdate tables; the data to be changed is stored here until the full set can becollected and written to the final database tables (within a single databasetransaction).

660 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 675: 119167612 taw10-01-es

ÍndiceAABAP, 83ACAD, 111Acceso a índice, 417Activa, 222Activar, 223Actualización, 118Actualización asincrónica,119

Actualizaciones V1, 122Actualizaciones V2, 122APPEND, 422Área de trabajo, 422AS ABAP, 45, 83, 95AS Java, 83, 95AT SELECTION-SCREENOUTPUT, 562

AUTHORITY CHECK, 511,641

Autorización, 510Auxiliar de rendimiento, 67Ayuda de la aplicación, 67Ayuda F1, 66, 582Ayuda F4, 67BBAPI, 141, 333, 468

BAPIs estándar, 334BAPI Explorer, 335base de datos, 450Base de datos lógica, 468Biblioteca SAP, 68, 70bifurcaciones

condicionales, 258Botones de selección, 556breakpoint, 264, 267Business Object, 141, 333Business Object Repository,333

CCálculo, 256CALL FUNCTION, 327CALL METHOD, 369

CHANGING, 390EXPORTING, 390IMPORTING, 390

CALL SELECTION-SCREEN, 565

Campo clave, 453campo de comandos, 66campo de sistema, 261

SY-DBCNT, 473–474SY-INDEX, 260SY-SUBRC, 262

Campos de entradarequeridos, 555

Capa de transporte, 213CASE, 258Casillas de selección, 556Clase de objeto, 510clase global

test, 364CLASS, 389clave de tabla, 453clave primaria, 453CLEAR, 255, 429Code Inspector, 640código de transacción

BAPI, 149Buscar, 53SM04, 97SM12, 117SM13, 123SM50, 96SM51, 96SM59, 148SU3, 125

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 661

Page 676: 119167612 taw10-01-es

Índice TAW10_1

Código de transacciónSM36, 127SM37, 127SMX, 127SP02, 125SWO1, 149

Cola de solicitudes, 105COLLECT, 423Comentario, 219Componente de aplicación,199

Componente de estructura,403

Componentes de reutilización,467

COMPUTE, 256Concepto de cliente/servidor,84

Conflicto de tipos, 255Constante, 251CONSTANTES, 251

suplemento VALUE, 251Constructor, 369CONSTRUCTOR, 369controlador de tareas, 106Conversión de tipo de datos,255

CREATE OBJECT, 368Customizing, 67DDATA, 249, 402, 420

suplemento BEGIN-OF,402suplemento LIKE, 249suplemento VALUE, 250TYPE REF TO, 368

DEFAULT, 390Definición BAPI, 149DELETE, 423despachador, 107despachador (ABAP), 90, 105despachador (Java), 94DIAG, 45documentación

palabra clave, 220Documentación

ABAP, 220Documentación ABAP, 220documentación de palabrasclave, 220

documentación online, 70Documento intermedio(IDoc), 141

E"#EC, 642ECC 6.0 (ERP CentralComponent), 159

Ejecución colectiva, 122Ejecución en proceso defondo, 126

Elemento de datos, 555Elementos de pantalla, 53Elementos de texto

símbolos de texto, 252encapsulación, 293encapsulación de datos, 293Enqueue Service (Java), 94Enterprise JavaBeans, 83Enterprise SOA (ESOA), 163entidad, 450entrada obligatoria, 67ERM, 450estructura

objeto de datos, 401Etiquetas, 566excepción, 329expresión

aritmética, 256FFase de entrega no restringida,21

Fase de entrega restringida, 20Fichas, 566Firma, 390FORM, 304

suplemento CHANGING,304suplemento USING, 304

FREE, 429función

predefinida, 256

662 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 677: 119167612 taw10-01-es

TAW10_1 Índice

STRLEN, 256Function Builder, 147Ggateway, 93Gateway (lector), 127Generar, 223Generar programa, 223Gestión de bloqueos , 114Grupo de funciones, 321grupo de programas

grupo de programasadicional, 618grupo de programasprincipal, 618

Grupos de modificación, 596HHTTP, 141HTTPS, 141IID de parámetro, 66IF, 258Imprimir (AS ABAP), 123Inactiva, 222índice primario, 477índice secundario, 478Información técnica, 67INICIALIZACIÓN, 593INITIALIZATION, 561, 563INSERT, 422, 424Inspección, 643instancia, 87instancia central, 88interfaz

de una subrutina, 301excepción, 322método, 390parámetro changing, 322parámetro para export,322parámetro para import,322subrutina, 301

Interfaz de base de datos ,106, 108

Internet CommunicationManager, 93, 129

JJ2EE, 83Jerarquía de aplicaciones, 201LLiberación al cliente, 20línea de cabecera, 430Literal, 251LOAD-OF-PROGRAM, 560Loop, 260LOOP, 423, 425

cláusula INTO, 423suplemento INDEX, 426suplemento WHERE, 427

LOOP EN LA PANTALLA,596

LLllamar por referencia, 302llamar por valor, 302llamar por valor y resultado,302

Mmandante, 47memoria

Memoria ABAP, 627Memoria SAP, 629

Memoria, 626Memoria intermedia (ASABAP), 108

Memoria SAP, 555, 559Mensaje, 263mensaje de diálogo, 263Menú contextual, 203Menú de usuario basado enroles, 62

MESSAGE, 263suplemento WITH, 263

métodofirma, 390parámetro, 390

Método de acceso, 125modelo de datos, 450modelo de datos de vuelo, 451

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 663

Page 678: 119167612 taw10-01-es

Índice TAW10_1

modelo de entidad-relación,450

MODIFY, 422, 425modo Debugging, 405Modo Debugging, 264modularización

modularización global,293modularización local, 291unidad de modularización,290

Módulo de funciones,321–322, 468

MOVE, 255MOVE-CORRESPONDING,404

múltiples entradas al sistema,48

NNative SQL, 466Native SQL (ABAP), 108Nivel de base de datos, 181Nivel de servidor deaplicación, 181

Nivel de servidor depresentación, 181

Nota SAP, 47Número de pantalla, 565OObject Navigator, 203Objeto de autorización, 510objeto de datos

fijo, 251global, 307local, 307

Objeto de datos, 244estructurado, 401

Objeto de Repositorycrear objeto, 205

Objeto en tiempo deejecución, 223

Open SQL, 466Open SQL (ABAP), 108OPTIONAL, 390Orden de salida, 125

orden de transporte, 209orden SPOOL, 124Ppaquete, 199, 210PARAMETERS, 555parámetro

subrutina, 301parámetro de perfil

rdisp/max_alt_modes, 48parámetro formal, 301

tipificación, 305parámetro real, 301Parámetros, 294Parámetros SET/GET, 555Perfil de autorización, 510Planificación central deprocesos SAP (SAP CentralProcess Scheduling, SAPCPS), 127

Plataforma de aplicación, 158pool de textos, 252pool de trabajo, 223Posibilidad de ampliar, 181Pretty Printer, 218Proceso de servidor, 94Proceso de trabajo , 106, 112Proceso de trabajo deactualización, 90

Proceso de trabajo de cola, 90,114

Proceso de trabajo de diálogo,90

Proceso de trabajo de fondo,90

Proceso de trabajo SPOOL,90

Proceso SPOOL, 123Procesos de trabajo, 90programa

activar, 223pseudocomentario, 642Pulsadores, 593RRamp-up, 21RDBMS, 181

664 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 679: 119167612 taw10-01-es

TAW10_1 Índice

READ TABLE, 422suplemento INDEX, 426suplemento WITH, 427

REFRESH, 428Registro, 401Registro maestro de usuario,48

Regla de conversión, 255regla muestra, 307rendimiento, 645Repository, 198RETURNING, 390RFC, 141, 145Roll in, 107SSAP Business All-in-One, 5SAP Business ByDesign, 5SAP Business One, 4SAP Easy Access, 51SAP ERP 6.0, 159SAP GUI, 44, 46, 105SAP GUI para el entornoJava, 45

SAP GUI para HTML, 45SAP GUI para Windows, 45SAP Java Connector (JCo), 95SAP Logon, 46SAP NetWeaver, 28SCI, 643SELECT, 469SELECT-OPTIONS, 556SELECTION-SCREEN, 563Sentencia encadenada, 219Servicio de mensajes (Java),94

Servicios centrales (instancia),89

Servicios empresariales, 160Servicios Web, 161Servidor de mensajes, 93sesión, 48Símbolos de texto, 252sintaxis ABAP, 217Sistema AS ABAP + Java, 95Sistema central, 89

sistema de gestión de base dedatosrelacional, 181

Sistema info de Repository,199

Software DeploymentManager (SDM), 94

SORT, 428suplemento AS TEXT,428suplemento STABLE, 428

SQL, 466sscrfields, 593Subscreens, 566–567Support Package, 21sy-tabix, 425Ttabla

interna, 415tabla clasificada, 418Tabla de base de datos, 454tabla de bloqueo, 114, 120Tabla de claves de control,418

Tabla estándar, 418tabla interna

acceso a índice, 426acceso mediante clave,427borrar contenido, 428–429clase de tabla, 416clave, 416fila de cabecera, 430insertar filas, 424ordenar entradas, 428propiedades, 416salida fila por fila, 425tipo de datos local, 420tipo de fila, 416tipos de fila, 415

Tabla transparente, 453Tablas VB*, 120Tarea, 209TCP/IP, 145Tecnologías de interfaz, 146TemSe, 124

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 665

Page 680: 119167612 taw10-01-es

Índice TAW10_1

Thurs, 260tipo de datos

global, 247local, 247

Tipo de datos, 244Tipo de tabla, 419TIPOS, 247tokens, 645Transacción (AS ABAP), 112Transacción de base de datos,112, 114

Transacción SAP, 114Transacción SAP (ABAP),112

Transport Organizer, 209Transporte, 584transporte de datos, 294Tratamiento en tiempo real,158

TVARVC, 585TYPES, 402

suplemento BEGIN-OF,402

UUnión de tablas, 481URL

página de inicio de SAPglobal, 16Portal de ayuda de SAP,16, 69

SAP Info, 16SAP Insider Online, 16SAP Service Marketplace,16

VValores por defecto y datospropios, 52

variablereferencia, 368

Variable, 244variable global, 301Variante de verificación, 643Variantes, 583Variantes de pantalla deselección, 583

Ventana de diálogo, modal,565

Verificación de autorización,509

versiónactiva, 222

Versióninactiva, 222

WWatchpoint, 268WHILE, 260XXML, 141

666 © 2010 SAP AG. Reservados todos los derechos. 13-01-2010

Page 681: 119167612 taw10-01-es

FeedbackSAP AG ha tomado todas las medidas posibles en la preparación de este curso paraasegurar la exactitud de los contenidos del mismo así como que esté completo. Sitiene algunas correcciones o sugerencias para mejorarlo, anótelas en los espaciosprevistos para este fin en la evaluación del curso.

13-01-2010 © 2010 SAP AG. Reservados todos los derechos. 667