abap training introduction

12
Desarrollo de Aplicaciones ABAP SAP Web AS 6.20 OPEN BUSINESS CONSULTING SOFTWARE SERVICES COMPANY OPEN BUSINESS CONSULTING 2 Desarrollo de Aplicaciones ABAP SAP R/3

Upload: javier-cruz

Post on 05-Jul-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ABAP Training Introduction

Desarrollo de Aplicaciones ABAP SAP Web AS 6.20

OPEN BUSINESS CONSULTING SOFTWARE SERVICES COMPANY

OPEN BUSINESS CONSULTING

2 Desarrollo de Aplicaciones ABAP SAP R/3

Page 2: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 3

Contenido 1 INTRODUCCIÓN AL ENTORNO DE DESARROLLO ABAP.............................................................. 5

1.1 INTRODUCCIÓN A SAP BASIS Y SAP WEB APPLICATION SERVER ....................................................... 5 Descripción orienta a software ........................................................................................................... 5 Descripción lógica orientada a tareas................................................................................................ 6 R/3 y usuarios finales .......................................................................................................................... 7 SAP Web Application Server............................................................................................................... 9

1.2 UN PRIMER PROGRAMA ABAP. INTRODUCCIÓN AL EDITOR ABAP..................................................... 10 Entorno de Desarrollo ABAP (ABAP Workbench). .......................................................................... 10 Un primer programa ABAP .............................................................................................................. 12 Sintaxis y estructura de un programa ejecutable .............................................................................. 14

1.3 INTRODUCCIÓN AL DICCIONARIO ABAP. OPEN SQL........................................................................... 18 ABAP Debugger ................................................................................................................................ 23

OPEN BUSINESS CONSULTING

4 Desarrollo de Aplicaciones ABAP SAP R/3

Page 3: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 5

1 Introducción al entorno de desarrollo ABAP

Contenido:

1.1. Introducción a SAP Basis y SAP Web Application Server. 1.2. Un primer programa ABAP. Introducción al Editor ABAP. 1.3. Introducción al Diccionario ABAP. Sentencias Open SQL. 1.4. SAP List Viewer (ALV). Introducción al Uso de Funciones. 1.5. Resumen

Este primer capítulo ofrece una introducción práctica al entorno de desarrollo ABAP (ABAP Development Workbench) y a su lenguaje de programación ABAP Objects. Trabajando sobre un programa ejemplo introduciremos las principales herramientas y conceptos de desarrollo SAP.

1.1 Introducción a SAP Basis y SAP Web Application Server

El Sistema Base (Basis System) es la plataforma central para todas las aplicaciones SAP R/3. Este apartado describe el Sistema R/3 desde tres aproximaciones diferentes: una descripción orientada a software, un segundo enfoque orientado a tareas (o descripción lógica) y, finalmente, una descripción desde el punto de vista de usuario. También se describe la evolución de la plataforma Basis System a Web Application Server, la plataforma central de SAP NetWeaver.

Descripción orienta a software

SAP R/3 tiene una configuración o arquitectura de cliente servidor a tres niveles (layers): el nivel de base de datos, el nivel de aplicación y el nivel de presentación (ver Fig. 1.).

Fig. 1 Arquitectura cliente-servidor de 3 niveles (layers) de SAP R/3

OPEN BUSINESS CONSULTING

6 Desarrollo de Aplicaciones ABAP SAP R/3

Cada nivel o layer tiene sus componentes software particulares:

• Database layer. Esta capa está constituida por dos componentes: un sistema de base de datos y el RDBMS (Relational Database Management System). Todos los datos de R/3 están almacenados en la base de datos (datos maestros, datos de aplicación, parametrizaciones, códigos ABAP de programas…). SAP R/3 soporta sistemas de base de datos de diferentes proveedores.

• Application layer. Consisten en uno o varios servidores de aplicación y un servidor de mensajes responsable de la comunicación entre los servidores. Este nivel contiene la lógica de la aplicación y procesa las peticiones del usuario.

• Presentation layer. El componente de software SAP GUI (Graphical User Interface) garantiza la interfase con el usuario. Las acciones del usuario (teclado, mouse, lectores…) son recogidas y pasadas al nivel de aplicación.

La distribución del software R/3 en tres capas implica que también la carga del sistema está distribuida, mejorando su rendimiento. Esta distribución de software puede ser implementada con diferentes configuraciones hardware, utilizando diferentes servidores, dependiendo de la naturaleza y tamaño de la empresa. El sistema R/3 es fácilmente escalable.

La separación entre los niveles de aplicación y de presentación tiene sus consecuencias en el diseño y programación de aplicaciones ABAP (programación de diálogo, tratamiento de ficheros, jobs en fondo, controles…). Remarcaremos las consecuencias cuando sea necesario.

Descripción lógica orientada a tareas

La Fig. 2 es una representación del Sistema Base como plataforma central de R/3, con sus componentes lógicos: el Kernel (núcleo) y Servicios Base, el entorno de desarrollo ABAP (ABAP Workbench) y los componentes de presentación.

Fig. 2 Componentes lógicos del Sistema Base

Page 4: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 7

• Kernel y Servicios Base. Constituyen el entorno de ejecución (runtime environment) de todas las aplicaciones R/3. Este entorno está programado principalmente en C y C++ y, algunas partes, en ABAP. Las principales tareas de estos componentes son

− Plataforma de ejecución (máquina virtual) para todas las aplicaciones R/3 − Administración de usuarios y procesos (sistema operativo) − Acceso a la Base de Datos a través del RDBMS − Comunicación con otros sistemas externos (R/3 y no R/3) − Tareas de Administración y Monitorización del Sistema

Los componentes del Kernel y Servicios Base permiten la instalación y ejecución de R/3 sobre diferentes plataformas hardware, sistemas de base de datos y sistemas operativos.

• Entorno de Desarrollo ABAP (ABAP Workbench). Es un completo entorno de desarrollo para aplicaciones escritas en lenguaje ABAP. El propio entorno de desarrollo está escrito en ABAP. Ofrece diferentes herramientas para crear, editar, testear y organizar desarrollos en ABAP.

• Componentes de Presentación. Los componentes de presentación son responsables de la interface gráfica con el usuario y la integración con otros componentes del servidor de presentación (por ejemplo, hojas de cálculo y procesadores de texto).

R/3 y usuarios finales

Los componentes descritos anteriormente son transparentes al usuario final. Éste sólo visualiza las pantallas generadas por el servidor de presentación.

Para acceder a SAP R/3, el usuario debe iniciar la utilidad SAP Logon (Fig. 3). Tras elegir el sistema R/31, SAP Logon conecta con un servidor de aplicación e inicia un SAPgui que presenta la pantalla de entrada (Fig. 6).

Fig. 3 Pantalla SAP Logon

1 En una instalación, existen diferentes sistemas R/3 destinados a diferentes usos: desarrollo, test y productivo.

OPEN BUSINESS CONSULTING

8 Desarrollo de Aplicaciones ABAP SAP R/3

Fig. 4 Pantalla de acceso a SAP R/3

Tras la conexión, el sistema muestra una ventana R/3 en la pantalla (Fig. 5). Dentro de SAPgui, esta ventana R/3 se identifica como una sesión. El usuario puede llegar a abrir hasta cinco sesiones distintas dentro de una misma conexión. Diferentes sesiones permiten ejecutar distintas aplicaciones R/3 en paralelo y son independientes entre sí.

Fig. 5 Pantalla inicial R/3. Sesión R/3.

Dentro de una sesión, el usuario puede ejecutar aplicaciones que llaman a nuevas ventanas (ventanas pop-up de diálogo…). Estas ventanas pertenecen a la misma sesión inicial, no son independientes. El concepto de sesión es relevante en programación en relación al uso y gestión de diferentes tipos de memoria. Por supuesto, un usuario puede iniciar otro SAPgui con una nueva conexión a R/3. Las diferentes conexiones son independientes entre sí.

Page 5: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 9

SAP Web Application Server

Fig. 6 Evolución de SAP R/3 Basis a SAP Web AS

OPEN BUSINESS CONSULTING

10 Desarrollo de Aplicaciones ABAP SAP R/3

1.2 Un Primer Programa ABAP. Introducción al Editor ABAP.

En las próximas secciones crearemos un programa ejemplo que nos permitirá introducir diferentes conceptos del lenguaje ABAP y herramientas del entorno de desarrollo. Este primer programa mostrará una pantalla de selección de datos al usuario, leerá datos de la base de datos en función de la selección entrada y generará un listado.

Entorno de Desarrollo ABAP (ABAP Workbench).

ABAP Objects2 es un lenguaje diseñado específicamente para la programación de aplicaciones SAP. El lenguaje ABAP permite al desarrollador centrarse en las tareas lógicas del programa o aplicación sin tener que preocuparse de los aspectos técnicos de la arquitectura R/3.

Un programa o aplicación ABAP tiene en general varios componentes (código fuente, screens, funciones, declaraciones externas como tablas y estructuras, interfases gráficas con el usuario…). En el entorno de desarrollo (Development Workbench), se utilizan diferentes herramientas para crear y mantener cada uno de estos componentes.

El Diccionario ABAP permite definir y mantener tablas de la base de datos y otros objetos relacionados (objetos de bloqueo, vistas de tablas, ayudas de búsqueda, objetos de autorización…). Por otro lado, el Screen Painter y el Menu Painter son herramientas de desarrollo que permiten definir ventanas (screens) y menus que constituyen las interfases gráficas con el usuario. Por supuesto, el Editor ABAP permite mantener código fuente de los desarrollos.

Cuando mantenemos una aplicación ABAP, el sistema edita la herramienta específica para el mantenimiento de cada componente concreto. Esto es, sistema navega entre cada una de las herramientas de desarrollo. El sistema incluso abre la herramienta necesaria (forward navegation) cuando indicamos que deseamos crear un nuevo componente, por ejemplo, en la creación de una nueva screen desde el código fuente de un programa.

Cada herramienta de desarrollo puede ser llamada directamente mediante su transacción. Una transacción es un código, como SE38, SE11, SE37…, que llama a una aplicación SAP directamente. Podemos hacer visibles los códigos de transacción en el menú SAP si, desde el menú inicial, seleccionamos: Extras → Settings y activamos ‘Display technical names’.

2 ABAP corresponde a las iniciales de Advanced Business Application Programming.

El lenguaje de programación ABAP empezó a desarrollarse durante la década 1980. Su uso original fue el desarrollo de reports en SAP R/2, una plataforma SAP sobre arquitectura mainframe para grandes corporaciones. Inicialmente este prototipo de lenguaje recibió el nombre de ABAP, acrónimo correspondiente a la abreviación alemana Allgemeiner Berichtsaufbereitungsprozessor (generic report preparation processor). ABAP fue uno de los primeros lenguajes en incluir el concepto de Base de Datos Lógica (Logical Databases, LDBs) que proporciona un alto nivel de abstracción de la base de datos.

Con la nueva arquitectura cliente-servidor SAP R/3 (1992), ABAP se mantuvo con el lenguaje de programación para el desarrollo de aplicaciones SAP. Durante la década 1990, nuevas aplicaciones estándares SAP fueron escritas en ABAP. En 2001, excepto algunas funcionalidades básicas, todo R/3 estaba escrito en ABAP.

A partir de la versión 4.5 (1999), la inclusión de una extensión orienta a objetos hizó renombrar el lenguaje con el nombre de ABAP Objects. La versión 4.6 completó las características propias de la programación orientada a objetos: herencia (inheritance), interfases anidadas (nested interfaces) y la invocación dinámica de métodos. SAP NetWeaver, la más reciente plataforma SAP, soporta el desarrollo en ABAP Objects y en Java.

Page 6: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 11

Requisitos para utilizar las transacciones del entorno de desarrollo ABAP:

Autorización como desarrollador SAP

Clave de desarrollador (registro en SAPNet)

La clave de desarrollador permite asociar el desarrollador a cualquier cambio de un objeto original SAP.

La clave de desarrollador se obtiene en el SSCR (Service SAP Software Change Registration), donde también se registran todos los objetos estándares SAP de una instalación que se modifican. El acceso a SSCR requiere de usuario y password que el Administrador del sistema SAP dispone. Se accede al servicio SSCR a través de la dirección: http://service.sap.com/SSCR.

Registro de un desarrollador en el SSCR

OPEN BUSINESS CONSULTING

12 Desarrollo de Aplicaciones ABAP SAP R/3

Un primer programa ABAP

Tcode: SE38 Editor ABAP Menu: Tools → ABAP Workbench → Development → ABAP Editor

El Editor ABAP nos permite crear y modificar el código fuente de las aplicaciones ABAP. Para diferenciar los programas estándares propios de los desarrollados por el cliente, SAP sigue una convención de nombre (namespace): los programas de cliente deben empezar por ‘Z’ (o ‘Y’). Convenciones de nombres similares se aplican a todos los objetos de cliente (consultar documentación SAP para detalles).

Fig. 7 Pantalla inicial del Editor ABAP

Al crear un programa nuevo, con , nos aparece una ventana de diálogo en la que debemos informar los atributos del programa (Fig. 8).

Fig. 8 Atributos de un programa ABAP

Page 7: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 13

Tras dar un título a nuestro primer programa, debemos informar el atributo ‘Tipo’. El tipo de un programa determina su forma de operar (la forma de ser llamado, de poder ser incluido o no en otros componentes…). Para nuestra primera tarea debemos seleccionas ‘Programa ejecutable’.

Fig. 9 Tipos de programas

El status de un programa puede ser utilizado por el administrador del sistema para limitar ciertos tratamientos sobre los programa. Debemos elegir por defecto ‘Programa productivo’. El campo aplicación es un campo informativo que permite clasificar los programas por área funcional. Los demás valores por defecto (fixed point arithmetic, unicote checks active…) no deberían cambiarse.

Tras grabar los atributos, no aparece una ventana (Fig. 10) en la que debemos asignar el programa a un paquete (package, una evolución del concepto ‘clase de desarrollo’ en versiones SAP anteriores). El package organiza los programas y, en general, todos los objetos SAP en áreas de desarrollo y determina también sus atributos de transporte3.

Fig. 10 Asignación a un paquete (clase de desarrollo en versiones anteriores).

Aquí marcamos el programa como ‘Objeto Local’ (paquete $TMP). Los objetos locales no se transportan. Si eligiésemos otro paquete, el sistema nos mostraría otra pantalla para seleccionar o crear una orden de transporte. El programa puede reasignarse a otro paquete con posterioridad, siempre que no se haya transportado ya a otro mandante.

Tras estos pasos, el Editor nos permite mantener el código fuente de nuestro primer programa.

3 Como hemos comentado anteriormente, en una configuración típica se dispone de sistemas distintos para desarrollo, pruebas y gestión productiva. El entorno de desarrollo dispone de herramientas para gestionar el transporte de objetos desarrollados entre estos sitemas (ver apartado 1.6).

OPEN BUSINESS CONSULTING

14 Desarrollo de Aplicaciones ABAP SAP R/3

Sintaxis y estructura de un programa ejecutable

Fig. 11 Editor ABAP. Mantenimiento de código fuente.

El código fuente de la Fig. 11 nos da algunos ejemplos de sintaxis ABAP. Claramente se puede distinguir entre comentarios y sentencias. Podemos introducir un comentario en el código con sólo añadir el símbolo (*) al inicio de la línea. Si a lo largo de una línea introducimos el símbolo (“), lo que queda a derecha de (“) se interpreta como un comentario.

Una sentencia ABAP tiene una estructura simple. Básicamente consta de:

KEYWORD < variables , operadores, valores adicionales del keyword…> .

Todas las sentencias ABAP empiezan con una palabra clave (keyword) y terminan con un punto. No existen limitaciones especiales en relación al formato de estas instrucciones dentro del código fuente: una línea puede contener varias sentencias y una sentencia puede abarcar más de una línea de código. Los elementos de una sentencia deben estar separados al menos por un espacio en blanco.

En nuestro programa, REPORT <program_name>, es una sentencia en la que el comando REPORT define el código como un programa ejecutable.

Un programa ejecutable tiene la siguiente estructura general:

REPORT <program_name>. Declaraciones globales Lógica de proceso

La parte de declaraciones globales contiene todas aquellas definiciones y declaraciones que son válidas y visibles a todo el programa

La parte de lógica de proceso está dividida en bloques de proceso. Las sentencias dentro de un bloque de proceso se ejecutan de manera secuencial. Sin embargo, la secuencia de los bloques de proceso en el código fuente no determina el orden de ejecución de estos bloques. El orden de ejecución es determinado y gestionado por el entorno de ejecución ABAP (ABAP runtime environment).

Page 8: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 15

Las palabras claves (keywords) de una sentencia ABAP pueden ser de diferentes tipos:

• Declarativos: DATA, TYPES, TABLES, PARAMETERS, CONSTANTS… • De modularización: definen bloques de proceso dentro de un programa ABAP.

Podemos distinguir entre: - De definición: definen rutinas, módulos de función, módulos, métodos…

FORM … ENDFORM, FUNCTION … ENDFUNCTION, MODULE … ENDMODULE, El bloque de proceso finaliza con la sentencia-END.

- Eventos: AT SELECTION SCREEN, START-OF-SELECTION, AT USER-COMMAND… El bloque de proceso finaliza cuando se inicia el siguiente bloqueo (por ejemplo, otro evento), no existe sentencia especial de finalización.

• De control: controlan el flujo de ejecución dentro de un bloque. Ej.: IF, CASE, LOOP… • De llamada: llaman bloques de proceso del mismo u otros programas. Ejemplos:

PERFORM, CALL, SUBMIT, LEAVE TO … • Operacionales: procesan datos. Ejemplos: MOVE, ADD, WRITE, CONCATENATE… • Open SQL: SELECT, UPDATE, DELETE, MODIFY…

Podemos crear un primer programa para aprender cómo se activa y ejecuta un programa. Completamos el programa con el código de la Fig. 12 . Este código simplemente genera una pantalla de selección en la que se pide al usuario que informe un valor para la variable p_text (sentencia PARAMETERS) y, a continuación, muestra por pantalla el valor introducido (sentencia WRITE).

Fig. 12 Código fuente del programa ejemplo

Tras completar el código fuente4, debemos realizar las siguientes acciones para permitir la ejecución (activación) de nuestro programa:

• Chequeo de sintaxis . El chequeo identifica errores de sintaxis en el código y nos propone correcciones.

4 El formato del código puede homogeneizarse con la función ‘Pretty Printer’. Experimentar con diferentes formatos mediante Utilities → Settings y ejecutar ‘Pretty Printer’ (siempre después del chequeo sintáctico).

OPEN BUSINESS CONSULTING

16 Desarrollo de Aplicaciones ABAP SAP R/3

• Activación del código . Tras una modificación, la activación hace visible el nuevo código a todos los usuarios. El sistema sólo ejecuta la última versión activa del programa. La activación chequea la sintaxis del código y graba el programa.

Fig. 13 Selección de componentes a activar

• Ejecución o F8. Ejecuta el programa (icono en la pantalla inicial del Editor).

Fig. 14 Pantalla inicial de selección

La ejecución de nuestro programa ejemplo, Fig. 144, nos muestra que la sentencia PARAMETERS <parámetro> no sólo ha declarado un variable global (p_text) sino que además ha definido (a través del runtime environment) toda una pantalla de selección inicial sin necesidad de programación adicional. Esta pantalla de selección contiene menús, teclas de función y campos input. Más adelante crearemos nuestras propias screens y veremos cómo debemos crear todos estos elementos (menús, teclas, campos…) con la herramientas propias del Workbecnh: Scren Painter y Menu Painter.

La denominación de los campos en una pantalla de selección puede mantenerse con elementos de texto siguiendo el menú desde el editor Goto → Texts elements →Selection texts (ver Fig. 15).

Fig. 15 Textos de la pantalla de selección

Page 9: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 17

Fig. 16 Mantenimiento de los textos de la pantalla de selección

Estos elementos de texto pueden también traducirse a diferentes idiomas. Para ello, desde la pantalla de mantenimiento de los textos (Fig. 15) seleccionar Goto → Translation.

Tras introducir un valor y ejecutar el programa, observamos que la sentencia WRITE ha creado también una ventana (list screen) con su propia interfase gráfica de usuario (GUI, graphical user interface): un output específicos y un menú con funciones predeterminadas.

Fig. 17 List screen del programa ejemplo

Entre las funciones implementadas de manera inmediata por el runtime environment se encuentra la posibilidad de grabar la lista a ficheros de diferente formatos, imprimir la lista y la utilidad de búsqueda de textos (Fig. 18).

Fig. 18 Búsqueda de textos (strings) en listas ABAP

OPEN BUSINESS CONSULTING

18 Desarrollo de Aplicaciones ABAP SAP R/3

1.3 Introducción al Diccionario ABAP. Open SQL.

En esta sección introduciremos más funciones a nuestros programas. Crearemos un programa que nos permita hacer listado de datos de la base de datos según una selección entrada por el usuario. Esta tarea nos permitirá introducir el Diccionario ABAP y las primeras sentencias Open SQL.

A lo largo de este curso utilizaremos el ‘Modelo de Vuelos’ como datos de prueba. Este modelo representa un sistema de reservas de vuelos en el que intervienen diferentes compañías aéreas (ver Apéndice A). Básicamente el modelo consta de varias tablas relacionales con los datos de las compañías aéreas (tabla SCARR), los vuelos (tabla SFLIGHT), los horarios y conexiones de estos vuelos (tabla SPFLI), las reservas (tabla SBOOK) y otras tablas auxiliares.

En nuestro programa listaremos los diferentes vuelos de una compañía aérea (parámetro de selección). En nuestro modelo, estos datos están contenidos en la tabla de vuelos SFLIGHT.

Tcode: SE11 Diccionario ABAP Menu: Tools → ABAP Workbench → Development → ABAP Dictionary

Desde el Diccionario ABAP, pueden mantenerse de forma centralizada todos los objetos de la base de datos del entorno de programación: tablas, estructuras, vistas (definición lógica de campos de una o varias tablas), elementos de datos, dominios, objetos de bloqueo, ayudas de búsqueda…

Fig. 19 Diccionario ABAP. Pantalla Inicial

El Diccionario ABAP es visible a todas las herramientas del entorno de desarrollo ABAP (Editor, Screen Painter , Editor de Funciones…). De este modo, es posible y, de hecho, muy útil implementar las declaraciones de un programa en base a campos y tablas del Diccionario (ver más adelante).

Page 10: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 19

Fig. 20 Campos de la tabla de vuelos SFLIGHT

Desde la ventana de mantenimiento de las tablas (Fig. 20) es posible visualizar el contenido de las mismas (menú Utilities →Table contents → Display). La transacción SE16 (Data Browser) permite la misma funcionalidad de forma directa.

Fig. 21 Contenido parcial de la tabla de vuelo SFLIGHT

Si deseamos generar un listado de la tabla SFLIGHT en función de una compañía aérea seleccionable por el usuario deberemos:

1.- Declarar adecuadamente los campos a utilizar 2.- Introducir sentencias de lectura de la base datos (Open SQL) 3.- Listar el contenido de nuestra selección

En los próximos capítulos estudiaremos con detalle todas las sentencias que permiten implementar las tareas anteriores y otras más. Con la intención de tener un primer contacto con las sentencias ABAP más básicas, comentaremos el código del la Fig. 22.

OPEN BUSINESS CONSULTING

20 Desarrollo de Aplicaciones ABAP SAP R/3

Fig. 22 Código fuente del programa ZEBCR_TEST_01

En el código anterior podemos apreciar la siguiente estructura:

- Una parte de declaraciones en la que se definen la tabla interna it_sflight, la estructura wa_sflight y el parámetro p_carrid (sentencia que generará la correspondiente pantalla de selección).

- A continuación se ha programado (en un mismo bloque de proceso) la lectura de datos de la tabla SFLIGHT con su volcado en la tabla interna it_sflight y, finalmente, la salida por pantalla de una lista con cuatro campos relevantes.

Conviene remarcar los siguientes detalles:

1. El Diccionario ABAP permite declarar de forma simple diferentes elementos del programa: tablas internas, estructuras y parámetros (utilizando la opción LIKE en la sentencia de declaración).

2. Referenciar las declaraciones al Diccionario es una buena práctica ya que el programa gana mucha flexibilidad. Posteriores modificaciones en el Diccionario no requieren modificar el código del programa.

Page 11: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 21

3. Referencias a objetos del Diccionario aporta funcionalidades añadidas como ayudas de valores posibles y chequeos de valores permitidos (ver Fig. 23).

Fig. 23 Valores posibles. Funcionalidad añadida al referenciar a tablas del Diccionario.

4. En declaraciones con referencia al Diccionario es una buena práctica nombrar los diferentes elementos de forma sencilla e inteligente: it_sflight = tabla interna con estructura de la tabla SFLIGHT, p_carrid = parámetro con estructura del elemento de datos CARRID, g_carrid = global data con estructura del elemento de datos CARRID …

5. La sentencia SELECT permite leer datos de la base de datos (FROM dbtable), según condiciones (WHERE …) y volcar los datos en un contendor apropiado (INTO…).

Open SQL

Open SQL es un subconjunto del lenguaje estándar SQL para bases de datos, adaptado al entorno de desarrollo ABAP. Con Open SQL podemos leer y modificar tablas de la base de datos (SELECT, INSERT, UPDATE, MODIFY, DELETE…).

Una sentencia SELECT típica de lectura de una tabla BD tiene la siguiente sintaxis5:

SELECT seleccion FROM fuente [ INTO destino ] [ WHERE condición ].

[ENDSELECT]. 5 Para consultar la sintaxis y las posibles opciones de cualquier palabra clave (KEYWORD) es suficiente, desde el código fuente, posicionar el cursor sobre la palabra clave y seleccionar F1 (ver Fig. 24).

OPEN BUSINESS CONSULTING

22 Desarrollo de Aplicaciones ABAP SAP R/3

Fig. 24 ABAP Keyword Documentación. Posicionando el curso sobre cualquier palabra clave del código y seleccionando F1 obtenemos la documentación sobre su sintaxis y opciones.

Nota: Aunque algunas sentencias Open SQL permiten modificar tablas de diccionario directamente (UPDATE, MODIFY, DELETE…), es una mala práctica modificar tablas estándares SAP directamente desde programas con estas instrucciones. Las sentencias anteriores no realizan ninguna verificación de la consistencia final de la base de datos (tampoco verifican autorizaciones). Existen diferentes técnicas para mantener la base de datos estándares SAP (uso de BAPIs, batch inputs…).

Como resultado de la ejecución del programa ejemplo nos aparece una lista no formateada (no hemos utilizado opciones de formato en la sentencia WRITE). La opción FORMAT en la sentencia WRITE permite formatear listados y obtener listas similares a la mostrada en la Fig. 21).

Fig. 25 Listado resultado del programa ZEBCR_TEST_01.

Page 12: ABAP Training Introduction

OPEN BUSINESS CONSULTING

Desarrollo de Aplicaciones ABAP SAP R/3 23

ABAP Debugger

El debugging (depuración) de un programa es una herramienta muy útil para determinar errores de ejecución en un programas o para estudiar en detalle el comportamiento de programas del sistema.

El debugging permite ejecutar paso a paso ‘F5’ (o por bloques de proceso ‘F6’) un programa y visualizar el contenido de campos, tablas internas, variables de sistema … También pueden modificarse valores durante la ejecución para estudiar sus efectos. El debugging se puede activar:

• Introduciendo BREAK-POINTS en el código fuente (keyword o icono ). • Activando el debugger indicando /h en el campo OK_CODE y ejecutando el programa

Fig. 26 Activación del modo debugging antes de la ejecución

Fig. 27 ABAP Debugger

OPEN BUSINESS CONSULTING

24 Desarrollo de Aplicaciones ABAP SAP R/3

Fig. 28 ABAP Debugger permite chequear rápidamente las lecturas BD.