Vous êtes sur la page 1sur 12

La programación en SAP

LA PROGRAMACIÓN EN UN SISTEMA SAP

APLICACIONES ABAP
Los programas de SAP tienen dos partes muy diferenciadas, el flujo
lógico de pantallas y el flujo lógico del proceso. Para esto último se
usa el lenguaje ABAP que es un lenguaje propietario de SAP. Las
aplicaciones ABAP tan sólo se pueden ejecutar en un servidor SAP, lo
que las hace independientes del hardware y del sistema operativo de
la máquina.

Las pantallas están diseñadas para interactuar con el usuario, se


procesan por el procesador de pantallas e incluyen una máscara y
una lógica. Las pantallas se programan en un lenguaje de
programación similar a ABAP.

El usuario, al interactuar con la pantalla, ejecuta módulos de


programación ABAP. Estos módulos reciben datos de la pantalla, los
procesan y, o bien devuelven otros datos de vuelta a la pantalla, o
interactúan con la base de datos.

Para interactuar con la base de datos SAP tiene un lenguaje


específico llamado OPEN SQL. SAP también permite interactuar con la
base de datos directamente mediante el SQL estándar (con las
variantes propias de la base de datos utilizada).

INTERFACES GRÁFICAS DE USUARIO (SCREENS)


Las pantallas (screens) tienen una máscara que, bien se crea por
defecto, o bien puede ser diseñada por el programador. Las pantallas
generales las diseña el programador mediante el Screen Painter.

Alejandro Torrijos Página 1


La programación en SAP

Antes de desplegarse una pantalla se produce el PBO (Process Before


Output). Cuando el usuario realiza alguna acción se produce el PAI
(Process After Input). El PBO y el PAI son bloques de instrucciones.
En su conjunto forman un diálogo con el usuario. Las instrucciones
más importantes en este lenguaje de pantallas son: MODULE, FIELD,
CHAIN, LOOP... Estas instrucciones tienen como función llamar
módulos (aplicaciones ABAP) y controlar la transferencia de datos
entre la pantalla y la aplicación, por ejemplo asignando valores
introducidos por pantalla a las variables declaradas en una aplicación
ABAP.

Las pantallas de SAP tienen los típicos elementos gráficos (campos,


botones, casillas…). Cada elemento debe tener asignado un nombre y
se almacena en la memoria interna del sistema. Se pueden enlazar
estos elementos con los del diccionario ABAP. El contenido
introducido en estos campos de la pantalla se asigna a las variables
del programa con el mismo nombre.

Cada pantalla activa unos módulos en la aplicación ABAP asociada a


esa pantalla. El PBO de la aplicación prepara los campos de la
pantalla, y el PAI procesa los datos introducidos por el usuario.

PANTALLAS DE SELECCIÓN (SELECTION SCREENS)


Las pantallas de selección sirven para introducir valores, por lo tanto,
se usan fundamentalmente antes de acceder a una base de datos. Se
delaran en la aplicación mediante instrucciones ABAP (PARAMETERS,
SELECT-OPTIONS y SELECTION-SCREEN). El flujo lógico de la
pantalla de selección se crea por defecto.

Los elementos más importantes de una pantalla de selección son los


campos para insertar bien valores individuales, o bien tablas enteras.
Se pueden usar unos valores preseleccionados para estos campos
(variants).

Para activar una pantalla de selección en una aplicación ABAP se usa


la instrucción CALL SELECTION-SCREEN. En ese momento se ejecuta
la pantalla de selección declarada al inicio de la aplicación.

LISTAS
Las listas son pantallas que despliegan datos de forma ordenada. Lo
único que puede enviar un sistema SAP a la cola de impresión son las
listas. Para activar una lista en una aplicación ABAP usamos la

Alejandro Torrijos Página 2


La programación en SAP

instrucción LEAVE TO LIST-PROCESSING. En ese momento se ejecuta


la lista declarada al inicio de la aplicación. El flujo lógico de la pantalla
lo crea el sistema por defecto. Las listas permiten al usuario
interactuar con el sistema (incluso introducir datos). Una sola
aplicación puede desplegar hasta 21 listas principales. Cada lista
principal puede desplegar hasta 20 listas detalladas.

Para configurar una lista usamos las instrucciones WRITE, SKIP,


ULINE, NEW-PAGE… El procesador de listas las interpreta.

LA PROGRAMACIÓN TRADICIONAL ABAP


La estructura de un programa ABAP es la siguiente:

1. Introducción
2. Declaración de variables
3. Módulos de diálogos
4. Bloques de eventos
5. Procedimientos

DECLARACIÓN DE VARIABLES
Primeramente declaramos las variables globales (incluyendo clases,
selection screens…). Los datos globales son visibles para todos los
bloques. Las variables locales se definen dentro de un bloque y son
visibles sólo dentro de ese bloque.

LOS BLOQUES DE PROCESADO


Los bloques se pueden colocar en la aplicación en el orden en que se
desee puesto que no se ejecutan consecutivamente. El código dentro
de un bloque sí se ejecuta de forma estructurada (una instrucción
detrás de otra).

Podemos salir de un bloque mediante la instrucción RETURN. Los


bloques comienzan con una instrucción específica de comienzo de
bloque y terminan implícitamente cuando comienza el siguiente
bloque.

Todas las instrucciones que no sean declarativas deben estar


englobadas en un bloque. Los bloques son los siguientes:

Módulos de diálogo:
Para ejecutar este tipo de bloques usamos la instrucción MODULE y
terminamos con la instrucción ENDMODULE. Este tipo de módulos se

Alejandro Torrijos Página 3


La programación en SAP

crean para cada estado (PBO, PAI…). Los módulos del PBO y del PAI
forman un diálogo (dialog step). Las instrucciones se interpretan por
el procesador de diálogos. Los campos de una pantalla de diálogo
deben tener el mismo nombre que el campo correspondiente de una
aplicación ABAP. Los datos se pasan de un campo a otro.

Bloques de eventos:
Estos bloques se activan bien por medio de acciones que el usuario
realiza en las pantallas, o bien por la propia aplicación ABAP. Estos
bloques están previstos para aquellos eventos en los que queremos
que el sistema reaccione. Esto quiere decir que estos bloques no
siempre se ejecutan en cada aplicación ABAP.

Constructor de programas:
Una vez que el programa se ha almacenado en la memoria del
sistema se ejecuta un bloque llamado LOAD-OF-PROGRAM, que tiene
como función construir el objeto que pretendamos (pantalla, lista…).

Bloques de eventos para pantallas de selección:


Una pantalla de selección tiene fundamentalmente dos partes:

 Process Before Output (PBO)


 Process After Input (PAI).

Podemos crear bloques de código que se activan en el momento en


que el usuario realiza una acción (evento). Los bloques pueden ser:

 AT SELECTION-SCREEN OUTPUT (Se ejecutan durante el PBO)


 AT SELECTION-SCREEN (Se ejecutan durante el PAI)
 AT SELECTION-SCREEN ON… (Se ejecutan durante el PAI)

Por defecto el sistema crea la propia lógica de la pantalla y los


diálogos entre el usuario y la máquina. Los datos se pasan de la
pantalla a la aplicación mediante los campos declarados en el
programa ABAP.

Bloques de eventos para las listas:


Para crear estos bloques usamos instrucciones como WRITE. El
procesador de listas muestra por pantalla la lista y permite al usuario
interactuar con la máquina. El flujo lógico del diálogo se crea por
defecto. Por ejemplo si escribimos en la aplicación la instrucción
WRITE el sistema activa el evento TOP-OF-PAGE. Una vez en la

Alejandro Torrijos Página 4


La programación en SAP

pantalla el usuario puede activar el bloque AT LINE-SELECTION, o el


bloque AT USER-COMAND.

Bloques de eventos para aplicaciones ABAP (reports):


Los programas ejecutables de ABAP están estructurados en función a
una serie de eventos, que provocan que se vayan ejecutando
distintos módulos.

1. Cuando lanzamos una aplicación (evento INICIALIZATION) el


sistema lanza el correspondiente bloque.
2. Si existe un evento de selección de datos por pantalla (AT
SELECTION SCREEN), el control pasa al procesador de
pantallas.
3. Si existe un evento de creación de informes (START-OF-
SELECTION) el control pasa al procesador de informes
(reporting). Con el evento END-OF-SELECTION el control vuelve
al procesador de aplicaciones ABAP.
4. Si existe una base de datos lógica, esta llama a sus
correspondientes bloques.
5. Si se produce un evento de despliegue de un listado (AT LINE-
SELECTION) el control pasa al procesador de listados.
6. Si se declara una pantalla de selección al inicio del programa, el
sistema vuelve a esa pantalla una vez que se ha ejecutado la
aplicación ABAP.

PROCEDIMIENTOS
Los procedimientos son bloques que contienen una interfaz y un área
local de datos. Podemos encontrar los siguientes tipos:

Subrutinas:
Las subrutinas en una aplicación ABAP se lanzan con la instrucción

PERFORM…ENDPERFORM.

La subrutina puede ser interna, es decir, parte de un mismo


programa, o bien externa, es decir, que forma parte de otro
programa.

Si la subrutina es interna puede acceder a las variables globales del


programa. Si es externa le podemos pasar parámetros. Una subrutina
puede lanzar a su vez la ejecución de nuevas subrutinas de forma
recursiva.
Alejandro Torrijos Página 5
La programación en SAP

Funciones:
Las funciones son módulos externos con una interfaz definida. Para
lanzar una función en ABAP usamos la instrucción

CALL FUNCTION…ENDFUNCTION.

En un sistema SAP las funciones sólo se pueden crear mediante una


aplicación específica llamada Function Builder. Las funciones siempre
deben están dentro de un grupo (function group).

Métodos:
Los métodos en la programación orientada a objetos son el
equivalente a las funciones, pero dentro de las clases. Al igual que las
funciones tienen una interfaz definida. Para lanzar un método en una
aplicación ABAP usamos la instrucción

CALL METHOD…ENDMETHOD.

Los métodos sólo pueden definirse dentro de la implementación de


una clase. Esto se puede hacer de forma global para todo el sistema
(mediante una aplicación específica llamada Class Builder), o bien
localmente dentro de una aplicación ABAP.

Los métodos incorporan los atributos de su clase, y los parámetros


que les pasemos a través de su interfaz.

TIPOS DE PROGRAMAS EN UN SISTEMA SAP


El sistema va ejecutando los distintos bloques de código en una
secuencia determinada. Cada aplicación ABAP tiene asignado un tipo
(se incluye entre los atributos iniciales del programa). Hay siete tipos
de programas:

1. Programas ejecutables
2. Módulos (Module Pools)
3. Grupos de funciones
4. Clases (Class Pools)
5. Interfaces (Interface Pools)
6. Subrutinas (Subroutine Pools)
7. Includes (Inlcude Pools)

Cada tipo de programa tiene unos atributos técnicos específicos.

Alejandro Torrijos Página 6


La programación en SAP

Para ejecutar el primer bloque de una aplicación ABAP primero hay


que lanzarla desde el sistema. Este primer bloque puede lanzar un
segundo bloque o bien devolver el control al sistema. Algunos
programas son lanzados automáticamente por el sistema y funcionan
en el background. Lo normal es que sea el usuario el que lance una
aplicación ABAP a través de una interfaz externa a la aplicación, bien
insertando el código de la transacción en el campo correspondiente,
bien a través de un menú. El código de la transacción es un nombre
de hasta veinte caracteres.

Para ejecutar un programa podemos usar las instrucciones

 CALL TRANSACTION
 LEAVE TO TRANSACTION

Programas ejecutables:
Para crear programas ejecutables usamos el editor de ABAP. Un
programa ejecutable puede incluir todos los tipos de bloques (excepto
funciones). Para lanzar un programa ejecutable usamos la instrucción
SUBMIT.

Los distintos bloques de la aplicación se van ejecutando


automáticamente en una secuencia predefinida. En ocasiones el
usuario puede introducir parámetros a través de una pantalla. A
continuación la aplicación procesa los datos, realiza la búsqueda en la
base de datos y muestra el resultado por la pantalla. Nuevas acciones
del usuario pueden iniciar el proceso de nuevo.

El sistema permite al usuario trabajar con una base de datos lógica


(es decir un programa especial que representa de forma más clara la
base de datos física, que puede estar fragmentada en diversos
componentes repartidos físicamente en distintos lugares).

Los programas ejecutables están diseñados para mostrar informes, es


decir para leer datos de una base de datos y mostrarlos por pantalla.
Por eso también se les conoce como informes (reports). Todos los
programas ejecutables comienzan con la instrucción REPORT.

El programador puede determinar los eventos y variar la lógica


preestablecida, por ejemplo mostrando los datos en un formato de
pantalla en lugar de un listado.

Alejandro Torrijos Página 7


La programación en SAP

El programa ejecutable más sencillo debe contener al menos un


bloque de procesado (el bloque START-OF-SELECTION). Los
programas ejecutables no requieren diálogo con el usuario. Los
ejecutables son los encargados de enviar datos a los programas que
se ejecutan en el background.

Si se le ha asignado un código de transacción un programa puede


lanzarse usando este código en lugar del nombre.

Módulos (Module Pool):


Los módulos están pensados para diálogos largos con el usuario
donde se usan numerosas pantallas. Los módulos se crean mediante
la instrucción PROGRAM en el editor de ABAP. Pueden incluir
cualquier tipo de bloque. Tan sólo se controlan desde las pantallas.
Se lanzan mediante el código de la transacción correspondiente, que
enlaza la pantalla inicial del módulo con la aplicación correspondiente.
El resto de las pantallas deben ser definidas con el editor de pantallas
(screen painter).

El proceso es el siguiente:

1. Cuando escribimos el código de la transacción el sistema


despliega la pantalla inicial.
2. Se inicia el módulo de diálogo de la aplicación ABAP.

A partir de este momento el flujo lógico del módulo puede mostrar


más pantallas, llamar a otros módulos, bloques, etcétera.

Funciones:
Las funciones son programas almacenados en el sistema que se
pueden ejecutar desde cualquier aplicación ABAP. Se declaran
mediante la instrucción FUNCTION-POOL. Las funciones pueden
incluir cualquier tipo de bloque. La función puede incluir sus propias
pantallas.

La herramienta Fucntion Builder permite crear funciones y grupos de


funciones desde el banco de trabajo (Workbench) de ABAP.

Clases:
Las clases sólo pueden contener métodos. Se declaran con la
instrucción CLASS-POOL y pueden contener una sola clase global y
cuantas clases locales sean necesarias.

Alejandro Torrijos Página 8


La programación en SAP

Se pueden asignar códigos de transacción a los métodos dentro de


una clase global, con lo que, al lanzarlos mediante el código,
implícitamente se crea un objeto de esa clase.

Para crear una clase podemos usar la herramienta Class Builder del
banco de trabajo (Workbench).

Interfaces:
Las interfaces no pueden incluir ni pantallas ni bloques. Son tan sólo
una declaración de clase que puede ser implementada en cualquier
otra clase (local o global). Se declaran mediante la instrucción
INTERFACE-POOL y se crean mediante el Class Builder del
Workbench.

Subrutinas:
Las subrutinas se crean en el editor de código ABAP y se declaran
mediante la instrucción PROGRAM. Los pools de subrutinas no pueden
incluir pantallas (tan sólo subrutinas).

Includes:
Los programas include no son ejecutables (no ocupan espacio en la
memoria). Tan sólo son instrucciones que sirven para cargar librerías
de código ABAP. Estas librerías se pueden llamar desde cualquier
programa ABAP mediante la instrucción INCLUDE.

Los includes están más pensados para agrupar variables o bloques


del mismo tipo en un solo grupo.

Tipos.
Los pools de tipos se crean en el Diccionario ABAP y se declaran con
la instrucción TYPE-POOL. No pueden incluir ni pantallas ni bloques de
procesado. Tan solo son contenedores de tipos de datos globales para
usar en cualquier aplicación ABAP.

LA PROGRAMACIÓN DE DIÁLOGOS
Al estar SAP dividido en tres capas, el control va pasando de una
capa a otra. Si se está ejecutando una pantalla el control lo tiene el
procesador de pantallas. Cuando los datos introducidos por el usuario
son procesados por la aplicación ABAP el control pasa al procesador
de ABAP.

El proceso es el siguiente:

Alejandro Torrijos Página 9


La programación en SAP

1. El dispatcher recibe del usuario una petición de ejecutar un


diálogo y dirige esta petición a un proceso que esté libre. El
proceso enlaza el diálogo con su contexto (almacenado en la
memoria compartida) antes de ejecutarlo. A continuación se
libera el proceso.
2. El dispatcher recibe una nueva petición y de otro usuario y
repite el proceso anterior.

Un programa puede tener varios diálogos y cada uno es


independiente del resto. El dispatcher intenta asignar siempre el
mismo proceso a una aplicación con distintos diálogos.

Dispatching:
Un proceso sólo puede hacer cambios en una única base de datos
lógica o LUW (Logical Unit of Work). Es decir los contenidos de la
base de datos deben ser consistentes de principio a fin de la
operación.

Para indicar que ya no es necesaria esta consistencia el proceso debe


terminar con un DATABASE COMMIT. Es decir, durante el tiempo en
que dura la edición de una base de datos ésta se cierra (locking).
También se debe restaurar la base de datos en caso en que el
proceso termine en un error (rollback).

Dado que distintos procesos pueden estar trabajando con la misma


base de datos a un tiempo se deben implementar mecanismos que
aseguren la consistencia de la base de datos. Por eso un proceso abre
un LUW para cada diálogo. Al final del diálogo el proceso manda una
instrucción COMMIT para ejecutar los cambios en la base de datos.
Esta instrucción es implícita puesto que no hay que escribirla en la
aplicación.

Esto implica que la base de datos tan sólo puede estar abierta
(cerrada al resto de los usuarios) durante un máximo de un diálogo
(dialogue step). Si una actualización de una base de datos se basa en
más de un diálogo estos deben de ejecutarse juntos. Esto se hace en
una sección de la aplicación llamada un SAP LUW.

Alejandro Torrijos Página 10


La programación en SAP

LAS APLICACIONES ABAP


Los programas ABAP se almacenan en el Repository, es decir en la
memoria compartida. Para su mantenimiento se usa el editor de
código ABAP que hay en el Workbench.

El editor de ABAP:
Para abrir el editor de código hay tres posibilidades:

 Desde el navegador (Object Navigator): Tecleando la


transacción SE80 y buscando el objeto dentro de Repository.
 Desde el menú, desplegando la opción TOOLS – ABAP
WORKBENCH – DEVELOPMENT – ABAP EDITOR, o bien
tecleando la transacción SE38.
 Haciendo dos veces click sobre el objeto del Repository, lo que
se llama FORWARD NAVIGATION.

El nombre de los programas:


Tienen hasta un máximo de treinta caracteres. No se pueden usar
puntos, comas, espacios, paréntesis, apóstrofes, comillas, signo
igual, acentos, porcentaje o asteriscos.

Atributos de un programa ABAP:


El atributo más importante es el tipo (type), que determina como se
va a ejecutar un programa. Podemos obtener una lista de todos los
tipos posibles con F4. Un programa debe estar asignado a una
aplicación y a una base de datos lógica.

 Título (title): Incluye el título y una descripción del programa.


 Mainteinance language: Se rellena automáticamente con el
logon lenguaje. Se puede cambiar.
 Type: El tipo de programa puede ser ejecutable, módulo,
subrutina o include.
 Status: Por ejemplo ‘test’.
 Application: Por ejemplo ‘FINANCIAL ACCOUNTING’.
 Authoritation group: La autorización incluye bien S_DEVELOP
(desarrollo y ejecución), bien S_PROGRAM (mantenimiento), o
los dos.
 Package: Todos los objetos asignados a un mismo paquete se
agrupan en una única orden de transporte. Si un objeto se
asigna al paquete $TMP son privados (locales) y no se pueden
transportar a otros sistemas. Una vez asignado un objeto a un
package ya no se puede cambiar.
Alejandro Torrijos Página 11
La programación en SAP

 Logical Database: La base de datos de donde el programa


ejecutable leerá los datos.
 Selection Screen Version: Si no se asigna otra el sistema utiliza
la base de datos lógica para crear una pantalla por defecto.
Para asignar otra debemos introducir el número de la pantalla
(menor de 1000) y debe estar relacionado con la misma base
de datos lógica.
 Editor lock: Impide que otros usuarios puedan modificar o
borrar este programa.
 Fixed point arithmetic: El sistema redondea los campos de tipo
P al número de decimales declarado. Los decimales se separan
siempre con un punto de la parte entera. Es recomendable que
esta opción esté siempre asignada a un programa.
 Start using variant: Rellena los campos de una pantalla con los
valores prefijados.

La estructura de un programa ABAP:


La secuencia lógica de los distintos bloques es tan sólo recomendada
por razones de claridad ya que los bloques son independientes unos
de otros.

1. La frase introductoria, normalmente REPORT y el nombre del


programa. En el caso de módulos o subrutinas comienza con la
palabra PROGRAM y el nombre del programa.
2. Declaración de datos (DATA). Incluye las pantallas de selección
(selection screens), clases locales, interfaces y clases globales.
3. Lógica: La lógica del programa son los diferentes bloques con
sus correspondientes instrucciones en cada bloque.
4. Subrutinas: son los procedimientos internos.

Alejandro Torrijos Página 12

Vous aimerez peut-être aussi