viernes, 9 de noviembre de 2012

Ejemplo básico de ABAP

El propósito de este post es mostrarles el camino, paso a paso, para iniciarse en el mundo SAP y lógicamente la programación en ABAP, un lenguaje de cuarta generación orientado al desarrollo de aplicaciones y reportes empresariales. Evidentemente en este artículo no se va a detallar todos los conceptos técnicos y muchos serán pasados por alto o se harán descripciones breves pues la gran mayoría de personas que lean este post son gente que está dando sus primeros pasos, así que no tiene sentido profundizar en conceptos que se aprenderán en el camino.
Bien, ahora debo indicar que para poder desarrollar este ejemplo debemos contar con algún entorno SAP, ya sea una instalación de prueba personal o el de alguna empresa para la cual laboremos. En otro post detallaré la manera de cómo conseguir una instalación doméstica de SAP (minisap).
SAP trabaja en base a transacciones. Existen muchas de ellas ypueden servirnos para, entre otras cosas, generar facturas, ordenes de compra, control de stock, etc. Una de las más importantes es el diccionario de datos, al cual accedemos a través de la transacción SE11 tal como se muestra en la Figura 1. Escribimos el código de la transacción y a continuación presionamos la tecla enter.
Figura 1. Transacción SE11 para el acceso al diccionario de datos de SAP.
En esta transacción podemos gestionar tablas, vistas, etc. a través de la interfaz que se muestra en la Figura 2. Con fines académicos SAP nos brinda tablas de un sistema de vuelos que ya vienen con datos desde el momento de la instalación de NetWeaver.

Figura 2. Diccionario de datos de SAP.
Entonces lo que debemos hacer es ingresar el nombre de la tabla de conexiones de vuelos: SPFLI en la ventana de la Figura 2 y hacer clic en el botón  Visualizar . Esto nos llevará a la ventana de la Figura 3 en donde podemos visualizar la estructura de la tabla de conexiones de vuelo.

Figura 3. Estructura de la tabla de conexiones de vuelo
Para observar el contenido de esta tabla debemos hacer clic en el botón , que se encuentra en la parte superior. Esto nos llevará a la ventana de la Figura 4. En esta ventana podemos personalizar nuestra consulta ingresando una serie de parámetros.

Figura 4. Pantalla se selección de la tabla SPFLI.
En nuestro caso por defecto la ejecutaremos sin parámetros haciendo clic en el botón , lo que nos llevará a la ventana de la Figura 5.

Figura 5. Datos de conexiones de vuelo.
Ahora que conocemos un poco la tabla de conexiones de vuelos, podemos crear nuestro primer programa en ABAP que haga una consulta sencilla a esta tabla y nos devuelva un registros. Para esto abrimos un nuevo modo utilizando el comando /n seguido de la transacción utilizada para la creación de programas: SE38, tal como se muestra en la Figura 6.

Figura 6. Transacción SE38 utilizada para la creación de programas.
A continuación se nos mostrará la ventana de la Figura 7 en donde debemos escribir el nombre de nuestro programa. Les comento que el nombre del programa debe empezar con Z o con Y pues en caso contrario SAP no nos permitirá crearlo. Una vez ingresado el nombre, hacemos clic en el botón Crear.
Figura 7. Ventana utilizada para creación de programas.
Al crear el programa, SAP nos mostrará la ventana de la Figura 8 en donde solo será necesario indiciar el nombre del programa y el tipo: Programa ejecutable. 

Figura 8. Ventana de atributos del programa.
Por último nos aparecerá la ventana de la Figura 9, en donde solo debemos indicarle que el programa creado será un objeto local ya que de este modo no se va a generar órdenes de transporte (este tema será tratado en otro post).

Figura 9. Ventana de atributos del objeto.
Hecho esto, SAP nos mostrará el editor de texto de la Figura 10 en donde podremos editar nuestro programa utilizando ABAP.

Figura 10. Editor ABAP.
En esta ventana debemos escribir nuestro programa. Para este caso escribiremos un programa que ejecute un SELECT a la tabla de conexiones de vuelo y nos filtre solo un registro por ID de la compañía de vuelos. Declaramos la variable wa_spfli la tendrá la misma estructura que la tabla spfli. Esto se logra mediante la palabra reservada LIKE. Adicionalmente declaramos un parámetro de la pantalla se selección (como la mostrada en la Figura 4) con la palabra reservada PARAMETERS. Con la sentencia SELECT SINGLE le indicamos a SAP que nos devuelva solo un registro. INTO CORRESPONDING FIELDS OF indica que cada celda de la tabla SPFLI se va a situar en su columna correspondiente de nuestra tabla WA_SPFLI. La cláusula WHERE tiene la misma función que en SQL estándar. Y la sentencia WRITE sirve para mostrar el resultado de nuestra consulta en pantalla.

REPORT  Z_PRIMER_PROGRAMA.

***********************
* DECLARACIÓN DE DATOS
***********************

* EL WORK ÁREA REPRESENTA LA ESTRUCTURA DE UNA TABLA
DATA WA_SPFLI LIKE SPFLI.
PARAMETERS PA_CARR LIKE SPFLI-CARRID.

SELECT SINGLE CARRID CONNID CITYFROM CITYTO FROM SPFLI INTO CORRESPONDING FIELDS OF WA_SPFLI WHERE CARRID = PA_CARR.

WRITE: WA_SPFLI-CARRID COLOR COL_KEY,
WA_SPFLI-CONNID COLOR COL_KEY,
WA_SPFLI-CITYFROM, WA_SPFLI-CITYTO.
Una vez terminada la edición de nuestro programa, debemos activarlo haciendo clic en el botón . Hecho esto nos aparecerá la ventana de la Figura 11 en donde debemos confirmar el programa que deseamos activar seleccionándolo y presionando Enter.

Figura 11. Ventana de activación de programas.
Luego de activarlo presionamos F8 para ejecutar nuestro programa y nos mostrará la ventana de la Figura 12.
Figura 12. Ejecución de nuestro primer programa en SAP.
Para seleccionar una compañía aérea hacemos clic en el botón  y se desplegará la ventana de la Figura 13. Hacemos doble clic en cualquier registro y automáticamente se pasará el registro a la ventana de la Figura 12.
Figura 13. Lista de compañías aéreas.
Luego de esto presionamos F8 para ejecutar nuestro programa y obtendremos como resultado una pantalla similar al mostrado en la Figura 14.

Figura 14. Resultado de la ejecución de nuestro primer programa en SAP.
Como podemos ver el lenguaje ABAP maneja las consultas a base de datos de manera similar a un gestor de base de datos que utilice el estándar SQL. Espero que este ejemplo les sea de utilidad y próximamente estaré publicando más artículos relacionados a SAP.

Hasta la próxima.

1 comentarios:

Marcelo dijo...

Que buen Ejemplo Rolando, bien explicado y bien detallado.
Saludos
Marcelo Moyano

Publicar un comentario