Está en la página 1de 125

ABAP

Funcionales

1
ndice
Unidad 1 ......................................................................................................................... 4
Introduccin a ABAP Workbench ............................................................... 4
Repositorio Navegador de Objetos ............................................................... 4
Buscar Objetos en el Repositorio. .................................................................. 5
Trabajando con el Navegador de Objetos. ................................................... 6
Desarrollo de Programas y rdenes de Transporte .................................. 8
Creacin de Paquetes (Ex Clase de desarrollo) .......................................... 8
Introduccin al Lenguaje de Programacin ABAP. ................................... 9
Crear un Programa ABAP. .............................................................................. 11
Activacin de Programas ................................................................................ 12
Barra de botos del Editor ABAP .................................................................... 13
Crear Transacciones......................................................................................... 13
Ejercicio 1: Paquete y Orden de Transporte ............................................ 15
Ejercicio 2: Programa ................................................................................. 15
Ejercicio 3: Transaccin............................................................................. 15
Estructura de un Programa ABAP ............................................................ 16
Unidad 2 ....................................................................................................................... 17
Introduccin al Diccionario ABAP ............................................................ 17
Ejercicio 1: Ingresar a la transaccin SE11 y visualizar la tabla SCARR.
...................................................................................................................... 19
Unidad 3 ....................................................................................................................... 20
Introduccin a los Eventos ABAP ............................................................. 20
Unidad 4 ....................................................................................................................... 23
Elementos Bsicos del Lenguaje ABAP ................................................... 23
Trabajando con DATA OBJECTS .................................................................. 23
Data Types y Data Objects .............................................................................. 23
Sentencias bsicas ABAP ............................................................................... 26
Sentencias Condicionales............................................................................... 28
Sentencias LOOPS o repetitivas. .................................................................. 29
Creacin de Mensajes. ..................................................................................... 29
Trabajando con ABAP Debugger ................................................................. 31
Selection Screen ......................................................................................... 32
Declarando campos como parmetros. .................................................... 33
Ejercicio 1: Calculadora ............................................................................. 35
Trabajando con Estructuras ...................................................................... 36
Trabajando con ABAP Debugger ................................................................. 38
Trabajando con Tablas Internas ................................................................ 39
Ejercicio 2: Estructuras y Tablas .............................................................. 48
Unidad 5 ....................................................................................................................... 49
Acceso a Base de Datos ............................................................................ 49
Leyendo Tablas de Base de Datos ............................................................... 49
Obteniendo Informacin .................................................................................. 49
Leyendo Mltiples Tablas de Base de Datos ............................................. 52
Ejercicio 1: Estructuras y Tablas .............................................................. 53
. Unidad 6 ..................................................................................................................... 54
Subrutinas en ABAP ................................................................................... 54

2
Subrutinas ........................................................................................................... 54
Ejercicio 1: Listas - Subrutinas - Eventos ................................................ 59
. Unidad 7 ..................................................................................................................... 60
Procesamiento de Lista Clsica ................................................................ 60
La lista .................................................................................................................. 60
Pantalla de Seleccin ................................................................................. 68
Ventajas de las pantallas de seleccin ..................................................... 68
Declarando Campos con Select Options .................................................... 74
Diseo de pantallas de seleccin con Selection Screen ........................ 76
Authority-Check ................................................................................................. 77
Unidad 8 ....................................................................................................................... 79
Sentencias tiles ABAP ............................................................................. 79
CONCATENATE ................................................................................................. 79
SPLIT ..................................................................................................................... 79
COMMIT WORK .................................................................................................. 80
TRANSLATE ........................................................................................................ 80
CONDENSE ......................................................................................................... 80
UNPACK ............................................................................................................... 81
Unidad 9: Creacin y llamadas a Grupo de Funciones y a Mdulos de
Funciones.

1. Creacin de Grupo de Funciones


2. Creacin de Mdulos de Funciones
3. Implementacin y llamada a Funciones
4. Bapis en SAP
5. RFC: Remote Function Call

Unidad 10: Ampliaciones sobre SAP Standard.

1. User Exit
2. Field Exit
3. Screen Exit
4. BADIS
5. Ampliacin de Tablas SAP
6. Ampliacin del Men SAP

3
Unidad 1
Introduccin a ABAP Workbench

Repositorio Navegador de Objetos

El repositorio consta de todos los objetos de desarrollo del sistema: los programas, mdulos de
funcin, las definiciones de tablas de base de datos y otros objetos.
El Repositorio se utiliza para mantener los objetos definidos por SAP, as como objetos definida
por clientes. El repositorio est en la base de datos y siempre es independiente de mandante,
es decir, un objeto de repositorio puede ser asesado desde cualquier cliente.
Aparte del repositorio, la base de datos tambin contiene tablas de aplicacin y customizing,
que suelen ser especficos del cliente, es decir, que tienen un columna de cliente.

4
El Repositorio es Cross Aplication, o sea que los programas no estn divididos por modulo. La
nica diferencia entre los programas son las tablas de donde toman la informacin.

Buscar Objetos en el Repositorio.


La transaccin para acceder es la SE80.

5
Trabajando con el Navegador de Objetos.

Con el Object browser podemos crear, modificar, borrar, etc. cualquier objeto de SAP. Para
poder acceder ingresamos en la transaccin SE80 y ah oprimimos el botn Browser de
Repository.

Aqu podremos crear todo tipo de objetos abap. Hay que tener en cuenta que cualquier objeto
que se cree tienen que comenzar con la letra Z o Y. La diferencia entre una y la otra es que la
Z se utiliza para transportar ese objeto a produccin y la Y es para programas de prueba que
van a ser borrados.
Para crear cada uno de estos objetos, se puede acceder tambien a una transaccin especifica
por objeto. Estas transacciones son las siguientes:

SE38: ABAP Editor


SE11: ABAP Dictionary
SE51: Screen Painter
SE37: Function Builder

La pantalla del Objeto Navigator se divide en dos reas:


El rea de navegacin para mostrar una lista de objetos jerrquica.

6
Un rea de herramienta para visualizar y editar un objeto mediante el desarrollo de la
herramienta adecuada.
Puede mostrar u ocultar el rea de navegacin. (Pantalla completa on / off).
En ambas reas, usted puede elegir las funciones mediante un men contextual, que
se acceso mediante el botn derecho del ratn. El men contextual ofrece slo las
funciones que han sido diseados para el objeto en cuestin.

7
Desarrollo de Programas y rdenes de Transporte

Los proyectos de desarrollo se llevan a cabo en un sistema de desarrollo. Los objetos de


desarrollo se modifican o crean en un proyecto y son transportados a los sistemas posteriores
(prueba de y / o sistema de produccin) al finalizar el proyecto. En el comienzo de un
desarrollo el director del proyecto crea una solicitud de cambio Orden de transporte, con los
nombres de los que van a participar de ese proyecto. El organizador del transporte crea una
tarea para cada empleado y para cada solicitud de cambio.

Creacin de Paquetes (Ex Clase de desarrollo)

1. Navegue hasta el Navegador de Objetos SE80. Ahora tiene dos opciones:


a) En el rea de navegacin, seleccionar tipo de objeto paquete y entrar en el nombre del
paquete en el campo de abajo. (Asegrese de cumplir con el convenio de espacio de nombres
del cliente.) Luego oprima ENTER. Si el paquete no existe, el sistema nos permitir crearlo.
b) Seleccione Edicin de objetos en la pantalla inicial de la SE80. En el cuadro de dilogo,
Busque la opcin de especificar un paquete y entrar en el nombre del paquete. Despus, haga
clic en el botn para crear el objeto (F5).

8
2. Pasos para crear un paquete: Atributos.

Componente De Aplicacin: Modulo Funcional.


Componente De Software: Siempre poner HOME.
Capa De Transporte: A cada sistema de desarrollo R/3 se asigna una capa de transporte
como capa de transporte estndar. Si se utiliza el control de transporte ampliado, se podrn
asignar capas de transporte estndar diferentes a determinados mandantes.
Se puede definir como mximo un destino de consolidacin por Sistema R/3 y capa de
transporte. Al crear un paquete, se le asigna la capa de transporte del Sistema R/3. Sin
embargo, para asignar a un paquete una capa de transporte que no sea la estndar, se precisa
la autorizacin de gestin del Change and Transport System.

3. Asignarle una Orden de Transporte al paquete:

Introduccin al Lenguaje de Programacin ABAP.

ABAP (Advanced Business Application Programming) es un lenguaje de cuarta generacin,


propiedad de SAP, que se utiliza para programar la mayora de sus productos.
Utiliza sentencias de Open SQL para conectarse con prcticamente cualquier base de datos.
Cuenta con miles de funciones para el manejo de archivos, bases de datos, fechas, etc.
Permite conexiones RFC (Remote Function Calls) para conectar a los sistemas SAP con
cualquier otro sistema o lenguaje de programacin.

ABAP fue desarrollado por SAP como lenguaje de informes para SAP R/2 en los aos 80, una
plataforma que permita a las grandes corporaciones construir aplicaciones de negocios para
gestin de materiales y finanzas. ABAP, muy parecido al COBOL en sus orgenes,
originalmente significaba Allgemeiner Berichtsaufbereitungsprozessor, palabras alemanas para
procesador genrico para la preparacin de informes. En sus inicios ABAP inclua el concepto
de Bases de datos lgicas, que suministraba un alto nivel de abstraccin para el acceso a
bases de datos.
ABAP fue pensado como un lenguaje de programacin para que los usuarios finales pudieran
manipular la informacin, pero el 4GL se fue volviendo demasiado complicado para usuarios
normales, por lo que es necesario programadores experimentados para realizar desarrollos.
ABAP se mantuvo como el lenguaje de desarrollo para la siguiente versin cliente-servidor de
SAP R/3, que fue lanzada al mercado en 1992, en el que casi todo el sistema, menos las
llamadas al sistema bsicas estaban escritas en ABAP. En 1999, con el lanzamiento de la

9
versin 4.6 de R/3, SAP lanz una extensin orientada a objetos denominada ABAP Objects.
La versin ms actual en estos momentos de SAP es la release 6.0.
La ltima plataforma de desarrollo de SAP, NetWeaver, soporta ABAP y Java como lenguajes
de programacin.

La programacin ABAP no distingue entre maysculas y minsculas. Toda palabra reservada


se cierra con un Punto.

El * se usa como comentario al igual que doble comilla. Los dos puntos se usan APRA
informar mas de una cosa con la misma palabra reservada y se va separando con coma.

10
Hay varias variables de sistema las mas importantes son las siguientes:

SY-SUBRC: Determina el estado de finalizacin de una accin.


SY-DATUM: Fecha del da.
SY-UZEIT: Hora del da

Crear un Programa ABAP.

1. Navegue hasta la transaccin SE80. Hay tres opciones disponibles:


a) En el rea de navegacin, elegir el tipo de objeto de programa y entrar el nombre del
programa en el espacio de abajo. (Solo ingresar programas que comiencen con Z o Y)
Confirme con ENTER. Si el programa no existe, el sistema abre un cuadro de dilogo que le
permite crear un programa.
b) Ingrese el Paquete y la orden de transporte correspondiente.

2. Quite el tilde de TOP Include. (De lo contrario, su cdigo fuente se distribuye a varios
programas.)

3. Cambiar el ttulo de texto explicativo y, en este paso, siempre se elige programa ejecutable
como el tipo de programa. Todos los otros programas atributos son opcionales. Consulte la
ayuda en F1 para ms detalles.

11
Activacin de Programas

Los diferentes estados en los que se puede encontrar un programa son Activo, Inactivo,
Inactivo tratado. Tengan en cuenta que cuando un programa esta inactivo siempre van a tener
otro programa es estado Activo.

12
Barra de botos del Editor ABAP

Cambiar De Editable a Visualizacin

Cambiar de Activo a Inactivo

Cambiar de Programa

Chequear Sintaxis

Activar un Programa

Ejecutar un Programa
Tabular el programa y poner en mayscula palabras claves

Crear Transacciones
Una Transaccin es como un acceso directo a un programa. Se ejecutan en el cuadro de
comando y se pueden agregar a favoritos. Se pueden crear desde la transaccin SE80 o la
SE93, de la siguiente manera.

Botn Derecho del


Mouse

13
14
Ejercicio 1: Paquete y Orden de Transporte

1) Crear una Paquete y asociarlo a una Orden de Transporte.

Ejercicio 2: Programa

1) Crear un Programa asociado al Paquete y a la Orden de Tranporte creado


anteriormente. Copiar dentro del programa el cdigo propuesto por el instructor.

Ejercicio 3: Transaccin

2) Crear una Transaccin y asociarla al Programa creado.

15
Estructura de un Programa ABAP

Programa Main:

Report ZCURSOS.

INCLUDE zi_zcursos_top.
INCLUDE zi_zcursos_screen.
INCLUDE zi_zcursos_form.

INITIALIZATION.
..
..

AT SELECTION-SCREEN.
..
..

START-OF-SELECTION.
..
..

16
Unidad 2
Introduccin al Diccionario ABAP
El Diccionario ABAP permite la gestin central de todos los tipo de definiciones utilizadas en el
sistema R / 3.
En el Diccionario de ABAP, puede crear tipos definidos por el usuario (Elementos de datos,
Estructuras y tipos de tabla) para su uso en programas de ABAP o Mdulos de Funcin y en
objetos de base de datos como tablas, ndices y vistas.
El Diccionario ABAP tambin ofrece una serie de servicios que apoyan programa desarrollo.
Por ejemplo, el establecimiento y la liberacin de los cierres, la definicin de un Ayuda de
entrada (F4 de ayuda), y adjuntar una ayuda de campo (Ayuda F1) a un campo de pantalla se
apoyo.

La transaccin para ingresar al diccionario es SE11

17
Tablas y vistas de base de datos puede ser definido en el diccionario ABAP.
Estos objetos son creados en la base de datos. Los cambios en la definicin de una tabla o
vista base de datos son tambin automticamente realizados en la base de datos.

Hay diferentes categoras en el Diccionario ABAP:

Elemento de Datos: Determina la descripcin de un campo.


Estructuras: Son componentes que pueden tener cualquier tipo.
Tipos Tabla: Describen la estructura de una tabla interna.

Ejemplo de Estructuras:

Tabla de Clientes Tabla de Proveedores


Cod. Cliente Cod.Proveedor
.Include Z_DATOS_PERSONALES .Include Z_DATOS_PERSONALES
Antigedad Etc.

Estructura: Z_DATOS_PERSONALES
Nombre
Apellido
Telfono

El Diccionario ABAP esta integrado activamente en el desarrollo y ejecucin


de programas. Cada cambio tiene efecto inmediato en los programas y pantallas ABAP.

18
Ejercicio 1: Ingresar a la transaccin SE11 y visualizar la tabla SCARR.

19
Unidad 3
Introduccin a los Eventos ABAP
ABAP es un lenguaje de programacin estructurado y secuencial. Para poder manejar
diferentes situaciones se encuentran los eventos, del los cuales podemos destacar:

INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION

Cuando se inicia un programa de ABAP, todos los objetos de datos globales de los programas
son los primeros creado en la memoria de trabajo (asignacin de memoria). Despus de eso,
en tiempo de ejecucin se desencadena varios acontecimientos en sucesin. Si existe un
bloque de procesamiento en un evento en el programa, las declaraciones de este bloque se
ejecutan en secuencia.
El orden como se ejecutan es el siguiente:

1. INITIALIZATION

Se utiliza para inicializar o para cargar valores en la pantalla de de seleccin,


previo a que esta sea mostrada. Este proceso se ejecuta desde que se lanzo la
transaccin y hasta que se muestra la pantalla de seleccin.

2. AT SELECTION-SCREEN

Es utilizado para valida los datos ingresados en la pantalla y para validar


niveles de autorizacin. Es lanzado siempre que se oprime ENTER en la
pantalla de seleccin o cuando se oprime F8.

3. START-OF-SELECTION

Es utilizado para la ejecucin completa del programa. Es lanzado luego de


oprimir F8. Es recomendable utilizar Subrutinas para la ejecucin del cdigo.

20
El ejemplo dado a continuacin, contiene una pantalla de seleccin con un campo de entrada
para una fecha.
En circunstancias normales, la fecha actual es la de aparecer como el valor por defecto
(DEFAULT SY-DATUM). Sin embargo, bajo ciertas condiciones (IF) se mostrara el mismo da
de la semana siguiente (pa_date = pa_date + 7.).
En el mismo grfico se muestra cmo el sistema de ejecucin reacciona cuando un bloque
falta. Simplemente, no hay instrucciones ejecutadas por el correspondiente y se continua con el
evento siguiente.

Si no hay ningn evento implementado dentro del programa, asume que todas las sentencias
corresponden al STAR-OF-SELECTION.
Adems de los eventos ya mencionados existen otro que veremos ms adelante en este
mismo manual. Ej. AT LINE-SELECTION, este evento se ejecuta cuando el usuario hace doble
clic en una lista.

21
Este evento puede ser utilizado, por ejemplo, para mostrar la informacin detallada del registro
seleccionado en la lista.
Adems de los eventos ya mencionados, se pueden utilizar otros bloques de procesamiento.
Por ejemplo las Subrutinas (FORM ENDFORM) este bloque es ejecutado por la sentencia
(PERFORM).
El siguiente grafico muestra la estructura general de un programa ABAP:

Report ZCURSOS.

INCLUDE zi_zcursos_top. TYPES:


DATA:

INCLUDE zi_zcursos_screen. PARAMETERS:


SELECT-OPTIONS:

INCLUDE zi_zcursos_form. FORM


ENDFORM.

INITIALIZATION.
..
..

AT SELECTION-SCREEN.
..
..

START-OF-SELECTION.
..
..

22
Unidad 4
Elementos Bsicos del Lenguaje ABAP
Trabajando con DATA OBJECTS

Data Types y Data Objects

El tipo de datos de un objeto define tcnicamente y semnticamente sus atributos.


Vamos a echar un vistazo a los tipos estndar predefinidos por SAP ABAP
(Implementados con TYPES) en primer lugar. Se dividen en dos grupos: tipos completos e
incompletos.
Los siguientes tipos de datos ABAP Standard son completos. Esto significa que ya contienen el
tipo de datos y longitud.

Complete ABAP standard types

D
Type for date(D), format: YYYYMMDD, length 8 (fixed)

T
Type for time (T), format: HHMMSS, length 6 (fixed)

I
Type for integer (I), length 4 (fixed)

F
Type for floating point number (F), length 8 (fixed)

STRING
Type for dynamic length character string

XSTRING
Type for dynamic length byte sequence (HeXadecimal string)

Los siguientes tipos de datos ABAP Standard son incompletos. Esto significa que no contienen
la longitud definida.

C
Type for character string (Character) for which the fixed length is to be
specified

N
Type for numerical character string (Numerical character) for which the
fixed length is to be specified

X
Type for byte sequence (HeXadecimal string) for which the fixed length is
to be specified

23
P
Type for packed number (Packed number) for which the fixed length is
to be specified.
(In the definition of a packed number, the number of decimal points may
also be specified.)

Para ms informacin de los tipos de datos ABAP ir a la documentacin de las sentencias


DATA y TYPES oprimiendo F1 sobre dichas palabras reservadas.

Veamos a continuacin como declarar con TYPES:

Un tipo de datos declarado en el diccionario ABAP es llamado global y puede ser usado por
cualquier programada ABAP.

En este captulo podremos ver como declarar internamente en nuestros programas cada uno
de los tipos de datos.
Los datos tipos de datos globales se podrn ver en el curso de Diccionario de Datos.
Hay 3 tipos de categoras de tipos de datos: Standard, Local y Global.

Los tipos de datos Standard son los vistos anteriormente, Ej type C.


Los tipos de datos Locales son los declarados con TYPES.
Los tipos de datos Globales, son los declarados en el Diccionario SAP.

24
En el siguiente grafico podremos ver la palabra reservada VALUE para inicializar una variable
con un valor predefinido.

Si no ponemos el tipo de datos se asume que es del tipo Standard C.


Si falta la longitud en los tipos de datos standard incompletos asume que es de 1 (un) carcter.

25
Ejemplo: DATA: MYVAR.

En este ejemplo al faltar el tipo de datos y la extensin, se asume un CHAR de 1 carcter.

Constantes: Tipos de datos fijos requieren valores fijos que se deben cargar cuando se
declaran las constantes.
Usted puede definir constantes con la palabra reservada CONSTANTS. Se define de manera
similar a los DATA Elements con el agregado de la palabra VALUE que es un requisito
obligatorio.

Los tipos de datos locales solo pueden ser usadas en el programa que fueron definidas. En
contraposicin los tipos de datos globales pueden ser usados por todo el sistema, adems de
las siguientes ventajas:

Proporcionan la ventaja de la reusabilidad y mantienen la consistencia del sistema.


En el diccionario ABAP usted tiene la opcin de utilizar where-used list para mediante
referencia de utilizacin ver donde se usa.
Se pueden modificar los tipos de datos sin tocar el cdigo ABAP.

Sentencias bsicas ABAP

26
Cuando se inicia el programa, el contexto del programa se carga en un rea de memoria del
servidor de aplicaciones y la memoria se pone a disposicin de los objetos de datos definidos
en el programa. Todos los Data Objects son asignados previamente con el valor inicial del tipo
especfico, excepto si un valor diferente fue pre-asignado mediante la sentencia VALUE.

Usted puede utilizar la instruccin MOVE para transferir el contenido de un objeto de datos a
otro objeto de datos. Los siguientes dos sintaxis tienen el mismo efecto:

MOVE var1 TO var2..


var2 = var1..

En ambos casos los objetos var1 y var2 son de diferentes tipos, por lo tanto podra haber un
conflicto de tipos. En este caso, la conversin de tipos se realiza de forma automtica.

La sentencia CLEAR borra el contenido de la variable.

En ABAP podrs utilizar sentencias aritmticas.

+ SUMA
- RESTA
* Multiplicacin
/ Divisin
** Exponencial

27
Sentencias Condicionales

En ABAP usted tiene 2 maneras de ejecutar diferentes secuencias de sentencias, dependiendo


de las necesidades.

En la construccin IF puede definir cualquier expresiones lgicas como las condiciones


de verificacin. Si se cumple la condicin, el sistema ejecuta el bloque de instrucciones
correspondiente. De lo contrario, la condicin especificada en la rama ELSEIF (varios
son posibles) se comprueba y as sucesivamente. Si ninguna de las condiciones
especificadas se cumplen, entonces el sistema ejecuta la rama ELSE, si est
disponible. ELSEIF y ramas ELSE son opcionales. Para obtener informacin detallada
sobre la formulacin de una expresin lgica consulte la documentacin de la palabra
clave en la instruccin IF.
Usted puede utilizar CASE para distinguir claramente los casos. El contenido del
campo especificado en la parte CASE se compara con los objetos de datos que figuran
en el WHEN para ver si coinciden. Si el contenido de los campos coinciden, el bloque
de instrucciones respectivas se procesa. Si la comparacin es incorrecta, el sistema
ejecuta la rama OTHERS si est disponible. A excepcin del primer WHEN, los dems
son opcionales.

En ambas sentencias la secuencia de comparacin es de arriba hacia abajo. Apenas encuentre


una coincidencia ejecuta esa parte del cdigo y luego salta hasta el ENDIF o el ENDCASE.

28
Sentencias LOOPS o repetitivas.

DO.
IF <condicin>.
EXIT.
ENDIF.
ENDDO.

DO n TIMES.
Sentencias ABAP
ENDIF.

WHILE <condicin>.
Sentencias ABAP
ENDWHILE.

SELECT ... FROM <dbtab> ...


Sentencias ABAP
ENDSELECT.

LOOP AT <Tabla Interna>.


Sentencias ABAP
ENDLOOP.

Hay cuatro construcciones de bucle en ABAP. En la DO y en el WHILE el campo del sistema


SY-INDEX contiene el nmero de vuelta que se est ejecutando. Por lo tanto, consultar este
campo del sistema slo tiene sentido dentro de un bucle. En bucles anidados, SY-INDEX
contiene siempre el nmero de vuelta del bucle en el que se encuentra.

La sentencia DO ENDDO, solo tiene sentido si colocamos la palabra reservada EXIT con
alguna condicin que amerite salir.

La sentencia WHILE ENDWHILE, se va a ejecutar siempre que la condicin sea verdadera,


para salir tendremos que cambiar el valor de la condicin.

La sentencia SELECT y la sentencia LOOP se utilizan para recorrer tablas, la primera tablas de
base de datos y la segunda tablas internas.

Creacin de Mensajes.

Para crear mensajes se utiliza la transaccin SE91. En ella se crea una clase de mensajes y
dentro podremos agregar todos los mensajes que queramos. La idea es no poner los textos de
los mensajes dentro de cdigo sino dentro de esta clase de mensajes en donde tambin se los
puede traducir y que tomen el idioma que el usuario esta logueado.

29
Dentro de nuestro programa ABAP con el botn PATRON podremos agregar nuestro mensaje
en el cdigo.
A continuacin vemos los distintos tipos de mensajes que podemos seleccionar.

30
Usted utiliza la instruccin MENSSAGE para enviar mensajes de dilogo a los usuarios de su
programa. Al hacer esto, debe especificar el nmero de tres dgitos y la clase de mensaje.
Mensaje nmero y clase de mensaje identifica claramente el mensaje que se mostrar.
Se utiliza el tipo de mensaje para indicar qu tipo de mensaje se va a mostrar.

Trabajando con ABAP Debugger

Hay varias maneras de activar el debug:

Colocando un BreakPoint dentro del cdigo de mi programa. Esto nos va a proporcionar que
frene en es punto nuestro programa en tiempo de ejecucin.

Colocando la sentencia /h en el cuadro de comando y dndole ENTER. Esto activa el modo


debug y va a empezar a debuggiar a partir de ese punto.

Ya dentro de la aplicacin para debuguiar podremos utilizar las teclas F5, F6, F7 y F8 para
ejecutar distintos comandos.

31
La tecla F5 nos permite avanzar paso a paso por nuestro cdigo, o sea lnea por lnea de
cdigo.
La tecla F6 nos permite saltear Subrutinas, Mdulos de Funcin, ETC. Aclaro que igual se
ejecutan pero sin que veamos ese cdigo de ejecucin.
La tecla F7 nos permite regresar a la sentencia siguiente a una subrutina o un modulo de
funcin.
La tecla F8 nos permite finalizar la ejecucin o pasar al prximo BreakPoint.

Selection Screen

Figure: Selection Screen: Overview

32
Las pantallas de seleccin sirven como interfaces entre el programa y el usuario. Se utilizan
para limitar la cantidad de informacin a leer de la base de datos.

Usted puede utilizar las palabras reservadas PARAMETERS y SELECT-OPTIONS, para


generar una pantalla de seleccin con parmetros de entrada.

Adems de las pantallas de seleccin por defecto, usted puede crear pantallas de seleccin
usando SELECTION-SCREEN BEGIN OF .... y llamar a esas pantallas usando CALL
SELECTION-SCREEN. Cree las variantes para ahorrar los valores de la pantalla de la
seleccin que se utilizan en varias ocasiones. Estas variantes se pueden recordar para el uso
cuando estn requeridas. Una variante es necesaria si un informe se ejecute en un proceso de
trabajo de fondo.

Declarando campos como parmetros.

La sentencia PARAMETERS se declara en lenguaje elemental. Como con la sentencia DATA,


usted puede declarar los parameters con TYPE o LIKE. El sistema genera un campo de
entrada en la pantalla de seleccin. La cantidad de caracteres en el nombre no puede superar
los 8 caracteres. Los textos de los parmetros de seleccin se modifican en el menu: Pasar A --
> Elementos de Texto --> Textos de Seleccin.

Usted puede colocar valores por default con la sentencia DEFAULT valor. Si asigna una ID
<pid> MEMORIA, el sistema recupera el valor actual de la memoria de SAP y muestra de forma
automtica. Si se declara campos obligatorios con la adicin OBLIGATORY, los usuarios no
pueden salir de la pantalla de seleccin hasta que los valores se han especificado en estos
campos.

El Control automtico por el Diccionario ABAP se apaga para pantalla de seleccin de


informes, de forma predeterminada. Sin embargo, si usted hace una referencia a un objeto de
diccionario que tiene una clave externa definida, con VALUE CHECK har que el diccionario
verifique que la entrada es vlida.

33
Usted puede definir un parmetro como check Box (AS CHECKBOX). Esto crea un campo de
un carcter que puede contener los valores de blanco o X. Usted podr evaluarlos usando las
sentencias IF/ENDIF.

Usted puede tambin definir una serie de botones de radio para una pantalla de la seleccin
con el GRUPO de la adicin RADIOBUTTON GROUP. La longitud mxima del nombre para un
GRUPO de RADIOBUTTON GROUP es cuatro caracteres. Solamente un botn de radio en un
grupo puede ser activo y evaluado durante el proceso del programa. Usted puede evaluar el
contenido de los botones de radio usando las estructuras de control de CASE/ENDCASE.

34
Ejercicio 1: Calculadora

Calculadora con 3 parmetros de seleccin. 2 para el ingreso de nmeros y 1 para el


operando.
Luego con esa informacin imprimimos el resultado de la cuenta.

1) Declarar 3 parmetros de seleccin. 2 de tipo numrico y una alfanumrico.


2) Declarar una variable con 2 decimales para poner el resultado.
3) En la estructura del programa validar que solo se pueda realizar (+ - * /)
4) Imprimir por pantalla un mensaje de error si se ingreso un operando invalido.
5) Validar y dar error en caso de que se quiera realizar una divisin por cero.
6) Realizar la cuenta con un CASE
7) Imprimir el resultado.

35
Trabajando con Estructuras

En ABAP, usted puede definir estructuras. Esto le permite combinar variables de


diferentes tipos dentro de una unidad lgica denominada estructura. Esto significa que
los componentes o variables pueden ser parte de una estructure e incluso de una tabla
interna.

En el programa, las variables de las estructuras son definidas con DATA. Cuando
usted define los tipos de datos con TYPES, puede referenciarlos a:

Elementos de datos del diccionario.


A una tabla transparente
A una estructura
A tipos de datos declarados localmente en el programa

In the program, structure variables are defined with the DATA statement, in the same
way as elementary data objects. When you set the types, you can refer to

. a Dictionary structure
. a transparent table (that is then used as a structure type) or
. a structure type that is locally declared in the program

El siguiente grafico muestra una WORK AREA declarada del tipo de una estructura
previamente definida con TYPES.

36
Usted puede usar la sentencia TYPES para definir estructuras locales.

BEGIN OF structure_type_name,
... ,
END OF structure_type_name.

Puede asignar cualquier tipo de datos usando TYPE. Para mas informacin puede oprimir F1
sobre la sentencia TYPES.
Tambin puede definir la WorkArea directamente usando DATA:

DATA: BEGIN OF structure_name,


... ,
END OF structure_name.

Los componentes de la estructura son accedidos utilizando el -.


Por esta razn usted no debe usar guiones en los nombres.

37
La sentencia MOVE-CORRESPONDING copia el contenido de la estructura de origen a la de
destino un componente a la vez. Solo son considerados los componentes con el mismo
nombre. Para asignar individualmente cada valor se utiliza la sentencia MOVE.

Trabajando con ABAP Debugger


Cuando estamos en modo debugg, hacindole doble click en la estructura podremos ver su
contenido.

38
Trabajando con Tablas Internas
Una tabla interna es un objeto que puede tener muchos registros de una misma estructura.
La cantidad de informacin que puede tener cada tabla interna est restringida solo por la
capacidad del sistema.
Cada elemento de una tabla interna se lo denomina registro o entrada de una tabla. Por esta
razn cada componente individual en un registro se lo llama campo o columna.
El tipo de registro est definido previamente con DATA o con TYPES.
Las tablas internas, por lo tanto son una forma simple de procesamiento de grandes conjuntos
de datos de manera estructurada. Las aplicaciones tpicas incluyen:

Obtener informacin de la base de datos.


Formatear informacin para una salida de reporte
Formatear informacin para otros servicios (Ej. Subrutinas, Mdulos de Funcin, Etc.)

Las siguientes propiedades definen una tabla interna por completo:

Line type
El tipo de lnea describe la estructura de las filas de la tabla.

Key
La clave de una tabla interna se compone de los campos claves, incluyendo su
ordenamiento.
El orden de los campos clave se utiliza, entre otras cosas, para el ordenamiento segn
sus campos claves.

Table kind
Usted puede elegir entre 3 diferentes tipos de tablas: Standard, Sorted, and
Hashed. Dependiendo el tipo de acceso que utilice, puede ser ms apropiado uno u
otro tipo de tabla.

. Con STANDARD TABLES la fila de numeracin (ndice) se mantiene internamente.


Tanto el ndice y los accesos principales son posibles.

39
Usted debe elegir este tipo de tabla cuando se utilizan, sobre todo el ndice para acceder a la
tabla interna.

. Con SORT TABLES los registros de datos se ordenan automticamente en orden ascendente
de los campos clave. Tambin en este caso, el ndice se mantiene internamente. Tanto el
ndice y los accesos principales son posibles.
Usted debe elegir este tipo de tabla si todo acceso a la tabla interna con la llave o le gustara
que la tabla se ordenan automticamente por clave.

. Con HASHED TABLES los registros de datos se gestionan clave para un acceso rpido
mediante el procedimiento de hashing. Una clave nica es requerida. Con las tablas hash slo
tiene acceso clave son posibles.

El tipo de datos de una tabla interna es denominado Tipo Tabla. Los tipos de tabla pueden
definirse globalmente en el diccionario de SAP o de forma local en el programa con la
sentencia TYPES. En el grafico anterior podemos ver como declarar una tabla declarada de un
tipo de datos proveniente del diccionario.

En el grafico anterior muestra un tabla interna declarada de forma local. Usted puede definirle
una clave con la sentencia KEY y los campos de la tabla.

40
En el ejemplo dado, declaramos una estructura con campos apuntando al diccionario y con esa
estructura declaramos una tabla interna indicando el tipo de tabla interna (Standard, Sorted,
Hashed).

Cualquiera de los casos descriptos en el grafico anterior declaran una misma tabla interna. Si la
tabla interna es del tipo Standard no es necesario aclararlo.

41
Para el proceso de un solo registro de una tabla interna, siempre necesitara la creacin de una
WorkArea con el mismo formato.

APPEND
Agrega el contenido de una workarea en una tabla interna. Esta operacin solo puede
ser usada en tablas Standard.

INSERT
Inserta el contenido de una WorkArea en una tabla interna.
En el caso de las talas Standard funciona igual que el APPEND ingresando el registro
en la ltima posicin. En el caso de las tablas internas de tipo Sort y Hashed sern
ingresados donde correspondan.

READ
Copia el contenido de un registro de una tabla interna a una WorkArea.

MODIFY
Modifica un registro de una tabla interna con el contenido de una WorkArea.

DELETE
Borra registros de una tabla interna.

COLLECT
Acumula el contenido de una WorkArea en una tabla interna que tengan la misma
clave, en caso contrario inserta el registro.

42
LOOP . . . ENDLOOP
Recorre la tabla interna registro por registro poniendo el resultado en una WorkArea
especificada con la sentencia INTO.

DELETE
Borra los registros de una tabla interna cuando coincide con la condicin.

INSERT
Inserta el contenido de varios registros de una tabla interna a otra cuando se cumple
con la condicin.

APPEND
Agrega los registros de una tabla interna a otra cuando se cumple la condicin y
siempre que tengan el mismo formato.

43
Usted puede insertar un registro en un atabla interna agregando los datos en una WorkArea y
utilizando la sentencia INSERT. Segn el tipo de tabla ser insertado donde corresponda. En la
tablas de tipo Hashed y en las de tipo Standard el Insert funciona como el Append.

Puede leer y editar el contenido de una tabla interna registro por registro usando la sentencia
LOOP. La variable de sistema SY-TABIX contiene el nmero de registro que est trabajando, o
sea la vuelta de loop que corresponda.
El ejemplo del grafico anterior muestra el recorrido de una tabla interna y la impresin de los
datos que se encuentran en la WorkArea con la sentencia WRITE.
Para modificar el contenido de la tabla que est recorriendo, primero modificar la WorkArea y
luego con la sentencia MODIFY modificar la tabla.

MODIFY itab FROM wa.

44
En el LOOP, usted podr restringir el acceso a ciertos registros usando el agregado de FORM-
TO. En el ejemplo anterior el sistema recorre solo los primeros 5 registros.

Usted puede usar el READ TABLE para leer un solo registro. Usted puede agregar la sentencia
INDEX para especificar el nmero especifico de registro a leer.

En el loop usted podr restringir los accesos usando el agregado WHERE. En el ejemplo
anterior solo recorre los registros en donde carrid sea igual a LH.

Usted puede usar el READ TABLE para leer un registro de una tabla interna. En este caso
usted utiliza la sintaxis WITH TABLE KEY para elegir el registro correcto.

La variable de sistema SY-SUBRC se setea en cero cuando se ha encontrado un registro.

La tablas de tipo Standard y Hashed pueden ser ordenadas de forma ascendente o


descendente por cualquier columna utilizando la sentencia SORT. Si no se especifica forma de
ordenamiento el mismo es de forma ascendente.

45
REFRESH
Borra el contenido de la tabla interna.

CLEAR
Para tablas sin header line borra el contenido de la tabla. En las que tienen cabecera, borra la
cabecera.

FREE
Borra el contenido de la tabla y tambin el espacio de memoria que ocupa.

En el debug, usted puede monitorear el contenido de una tabla interna.

46
El CON HEADER LINE adems en la definicin de la tabla interna le da la opcin de crear una
tabla con la lnea de cabecera. Cuando esto se hace un rea de trabajo (lnea de encabezado)
que se adapte a la tabla se crea automticamente de modo que la definicin adicional de la
misma no es necesaria. Esto tambin simplifica la sintaxis de los comandos de tabla, ya que el
sistema siempre se refiere al rea de trabajo generados automticamente, por lo que ya no
tiene que ser especificado explcitamente. A pesar de las ventajas mencionadas ya no desea
utilizar la tabla con lneas de cabecera, porque:
-El rea de trabajo generados automticamente tiene el mismo nombre que la tabla interna,
que no contribuye a hacer que el programa de lectura.
-Tablas con lneas de cabecera no estn permitidos en:
-objetos de datos complejas (estructuras y tablas internas que tienen las tablas internas
como componentes).
- objetos ABAP (objeto de extensin orientadas de ABAP)

Slo mencionar las tablas internas con lneas de encabezado aqu por algunos programas ms
antiguos todava los utilizan y tienes que trabajar con estos programas de vez en cuando. Es
por ello que las particularidades ms de la lnea de cabecera son los siguientes:
Si una tabla interna con la lnea de cabecera se llama ITAB, entonces ITAB-tablefield se utiliza
para abordar el campo correspondiente en el rea de trabajo.

Usted puede abordar el cuerpo de la tabla con ITAB []. El siguiente ejemplo ilustra la situacin
antes mencionada:

DATA itab1 TYPE TABLE OF scarr WITH HEADER LINE.


DATA itab2 LIKE itab1.
itab1 = itab2 . Slo las operaciones con lneas de cabecera!
itab1[] = itab2[] . Las operaciones con cuerpo tabla

La siguiente sintaxis muy antigua tambin define una tabla interna con la lnea de cabecera, a
pesar de que no se indica especficamente.

DATA: BEGIN OF itab OCCURS n,


field1 TYPE ... ,
field2 TYPE ... ,
... ,
END OF itab.

47
Ejercicio 2: Estructuras y Tablas

1) Declarar un parmetro de seleccin del tipo scarr-carrid.


2) Declarar una tabla interna del tipo Tipo tabla SPFLI_TAB
3) Declarar una wa del tipo spfli.
4) Declarar una wa del tipo scarr.

**********************************************

5) Levantar un registro de la tabla scarr filtrado por el parmetro de seleccin y poner


los valores en la estructura del mismo tipo creada anteriormente.
6) Listar los campos carrid, carrname y url de esa estructura.
7) Levantar la informacin de la tabla spfli y cargarla en la tabla interna creada
anteriormente.
8) Listar la tabla interna. Elegir los campos a listar.
9) Copiar con MOVE-CORRESPONDING de WA_SCARR a otra estructura con
menos campos.

48
Unidad 5
Acceso a Base de Datos
Leyendo Tablas de Base de Datos

Obteniendo Informacin

SQL es la abreviatura de (Structured Query Language), un lenguaje que define, cambia, cread
y lee el acceso a Base de datos.
Cada Base de Datos relacional tiene un SQL Nativo, que es especifico para esa base de datos.
En ABAP uno programa en Open SQL, funcionando sobre cualquier base de datos. Open SQL
es convertido dinmicamente a SQL Nativo, evitando problemas con futuros cambios de base
de datos.
El siguiente grafico no muestra de forma genrica como es la sentencia de acceso a Base de
datos.

SELECT: describe que campos de la tabla van a ser ledos.


FROM: Indicamos el nombre de la tabla que a va ser accedida.
INTO: determina la Variable, Work Area o tabla Interna en donde guardaremos la informacin
que obtendremos de la Base de Datos.
WHERE: sirve para filtrar la informacin que queremos traer de la base de datos.

49
La sentencia SELECT SINGLE sirve para acceder a un solo registro en la base de datos y el
resultado ser guardado en un Work Area o en una variable. Si uno no define el Mandante es
asumido el mandante actual.
Usted puede poner * en lugar de especificar los campos a seleccionar siempre que quiera traer
todas las columnas.
La variable de sistema SY-SUBRC igual a 0 nos indica que se han seleccionado registros de la
base de datos.

Si usted desea seleccionar algunos campos lo podr hacer despus de la sentencia SELECT.
En la clausula INTO tendr que poner una estructura que tenga los campos seleccionados en
el mismo orden. Solo la sentencia CORRESPONDING FIELDS OF machea por nombre de
campo.
En vez de una work Area podr poner nombre de variables de la siguiente manera:

INTO (field_1, ... , field_n)

50
En el grafico anterior nos muestra la sentencia INTO CORRESPONDING FIELDS OF con la
cual podremos tener una work area con los campos en distinto orden y machea por nombre de
campo.
Si desea utilizar una WORK AREA para recibir el registro ledo, que tiene campos con los
mismos nombres que los campos en la lista de objetivos, pero tiene una estructura diferente
(campos adicionales, el orden de campos es diferente), tiene sentido utilizar el INTO
CORRESPONDING FIELDS. Esto tiene el efecto de que los nicos campos del mismo nombre,
se llenan en la zona objetivo. Por favor, asegrese de que los tipos de campo correspondientes
son tambin los mismas, porque de lo contrario (como en la declaracin MOVE), una
conversin (complicada) ocurre y es posible que los datos incompletos (causadas por cortes)
pueden ser transportados a los campos .

51
Usted puede usar la sentencia INTO TABLE para copiar los registros seleccionados dentro de
una tabla interna.
Podr agregarse la sentencia INTO CORRESPONDING FIELDS OF para que ingrese la
informacin en los campos del mismo nombre de la tabla interna.
La variable de sistema SY-SUBRC en cero significa que por lo menos un registro fue copiado.
La variable de sistema SY-DBCNT nos dice la cantidad de registros trados de la Base de
Datos.

Una tabla de Base de Datos es llamada CLIENT-SPECIFIC, si tiene el campo (MANDT) como
primer campo clave.
Si usted selecciona informacin de tablas con MANDT sin especificar el mismo, solo la
informacin del mandante en el cual se encuentra ser accedida.

Si una tabla de Base de Datos es frecuentemente accedida por campos que no son claves,
debera definir un ndice secundario por los campos accedidos en orden para agilizar el acceso.
Despus de crear y activar un ndice, la base de datos optimizara automticamente el ndice
cuando un programa es ejecutado, siempre que ayude a la rapidez del acceso.

El ndice primario, consiste en todos los campos claves de la tabla, y es creado


automticamente. Optimiza todos los acceso que se realicen por todos o por parte de la clave.

Leyendo Mltiples Tablas de Base de Datos

Hay a menudo un requisito para leer datos de diferentes tablas y mostrarlo.

Hay cuatro formas para acceder a la informacin usando componentes reusables:

. Logical databases: Base de datos Lgicas. (Programas de recuperacin de datos que leer los
datos de las tablas que van de la mano jerrquicamente).

. Function modules: Mdulos de Funciones. Son subrutinas guardadas en el sistema SAP


usando la encapsulacin de funcionalidad.

52
. BAPIs: Mdulos de Funcin que encapsulan Objetos de Negocio.

. Methods of global classes: Mtodos de Clases Globales.

La informacin correspondiente a estas 4 formas se vern en las unidades correspondientes,


mas adelante.

Si no hay reutilizacin de componentes utilizables disponibles para su seleccin de datos,


usted tiene que aplicar el mismo acceso de lectura. Implementando TABLE JOIN.

Figura: Ejemplo de un Table Join

Hay 2 opciones para implementar un Join entre tablas:

-En el Diccionario ABAP, usted puede crear una vista de Base de Datos.
-En un programa usted utiliza la sentencia Select con el agregado de INNER JOIN.

Ejercicio 1: Estructuras y Tablas

1) Terminar con el ejercicio de la Unidad 4.

53
. Unidad 6
Subrutinas en ABAP
Subrutinas

Una subrutina es una unidad dentro de la modularizacin del programa donde se encapsula
una funcin en forma de cdigo fuente. Usted saca una parte de un programa a una subrutina
para obtener una mejor visin de conjunto del programa principal y usar la secuencia
correspondiente en diversas ocasiones.

Usando subrutinas significa que su programa se vuelve mas fcil de mantener porque los
cambios de funcionalidad solo tienen que ser aplicados en la subrutina y no en varios puntos
de un programa. Adems puede procesar una subrutina on debugg como una unidad y luego
ver el resultado, haciendo mas fcil encontrar un error.

Como muestra el siguiente grafico, puede llamar n veces a una misma rutina pasndole valores
diferente. Ose variables locales que no quiere que se modifiquen, sino que solo sean utilizadas
o modificadas en la rutina.

54
La asignacin de las variable es uno a uno, pudiendo cambiarle los nombres:

Hay 3 formas de pasar valores a una subrutina: 1) Llamado por valor, 2) Llamada por valor y
resultado y 3) llamado por referencia:

55
La llamada ala subrutina se realiza con la palabra reservada PERFORM. La ejecucin de la
subrutina se realizara entre el FORM y el ENDFORM.

Call by value
La variable F1 es llamada por valor usando el USING y el prefijo VALUE. En este caso los
valores originales de la variable no se ven afectados.

Call by value and result


La variable F2 es llamado por valor y resultado usando el CHANCHING y el prefijo VALUE. En
este caso se pasa el valor de la variable se modifica en la subrutina y luego es devuelto el valor
modificado.

Call by reference
La variable f3 es llamada por referencia sin el prefijo VALUE. Es un puntero a la memoria de la
variable original. En todo momento estoy modificando el valor original de la variable.

56
Se debe especificar el tipo de datos de los objetos que se estn recibiendo. Solo es obligatorio
cuando son tablas o Work Areas.

Existen la variables globales y locales en un programa. La globales son las declaradas en el


TOP y pueden ser usadas en cualquier parte del programa, y las locales son las declaradas en
una subrutina. Naces cuando la rutina se ejecuta y mueren cuando esta termina.

Se pueden pasar variables, Work Areas y tablas internas. En el siguiente ejemplo se esta
pasando con USING una variable y una tabla interna; y con CHANGING una variable.

57
58
Ejercicio 1: Listas - Subrutinas - Eventos

1) Declarar un tipo estructura con los siguientes campos:


carrid TYPE sflight-carrid,
connid
fldate
seatsmax
seatsocc
seatsocc_b
seatsmax_f
seatsocc_f
percentage(2) TYPE p DECIMALS 2,

Cada uno de estos tiene su tipo con el mismo nombre en la tabla del DD sflight.

2) Declarar una work area del tipo antes creado y otra de tipo sbook.

3) Declarar 2 tablas internas de los tipos de estructuras declarados anteriormente.

4) Pantalla:
Declarar un parameter de tipo S_CARR_ID y
Declarar un select-options del tipo wa-connid.

5) Hacer un select a la tabla sflight filtrando con los parmetros de seleccin declarados
anteriormente, colocando el resultado en la tabla interna tambin declarada
anteriormente.

6) Por cada loop endloop imprimir por pantalla la siguiente informacin:

En el campo de la estructura percentage calcular el porcentaje de ocupacin del avin.


(seatsocc_b + seatsmax_f + seatsocc_f) / seatsmax

Imprimir: carrid, connid, fldate, seatsocc, seatsmax, percentage,'%'.

7) Y guardar con HIDE la siguiente info:


carrid, connid, fldate

8) Si en el select no se encontr ningn dato, imprimir un mensage advirtiendo eso.

9) Si el usuario realizo un doble click sobre una lnea imprimir la siguiente informacin:
a. La guardada anteriormente con hide ms:

b. Realizar un select a la tabla sbook, filtrada por carrid, connid y fldate. Guardar
dicha informacin en la tabla interna del tipo sbook creada anteriormente.

c. Imprimir los siguientes datos loopeando la tabla

bookid, customid, custtype, class, order_date, smoker, cancelled.

59
. Unidad 7
Procesamiento de Lista Clsica
La lista

El objetivo principal de una lista es para mostrar los datos con un mnimo de esfuerzos de
programacin. Las listas tambin se adoptarn las necesidades especiales de los datos
empresariales en cuenta:
-Las listas pueden ser diseados en varios idiomas: Los textos y las cabeceras en la lengua de
inicio de sesin cada vez que una traduccin correspondiente est disponible.
- Las listas pueden mostrar los valores monetarios en la moneda correspondiente.

Las siguientes opciones estn disponibles cuando se programa una lista:


- Pantalla: Se puede aadir colores e iconos.
- Impresoras .
- Internet / Intranet: El sistema es capaz de convertir automticamente a formato HTML.
- Guardar: Le permite guardar listas en el sistema SAP, as como exterior (para su
posterior procesamiento, por ejemplo, el uso de programas de hoja de clculo).

60
Figure: Standard List Functions

La lista estndar de interfaz grfica de usuario ofrece al usuario varias funciones:


Usted puede utilizar el Pintor Men para adaptar la lista predeterminada de interfaz a tus
propias necesidades.
La Interfaz de usuario. leccin proporciona ms informacin sobre este.

Figure: List and Column Headers

Cada lista puede tener una cabecera de lnea nica lista y hasta cuatro lneas de encabezados
de columna. Si no se define cabecera de la lista, el nombre del programa (breve descripcin)
se utiliza como el encabezado.

Para el mantenimiento inicial de los titulos, primero debe activar su programa. A continuacin,
crear la lista mediante la ejecucin del programa. A continuacin, puede mantener los
encabezados directamente encima de la lista mediante el men Sistema Lista Lista de
cabecera.

61
La prxima vez que inicie el programa, aparecer automticamente en la lista. Si desea
cambiar el encabezado de mantenimiento (seguimiento de mantenimiento) , entonces usted
no tiene que comenzar de nuevo el programa y generar la lista. En lugar, a partir del editor en
el que se carga el programa puede llegar al entorno de mantenimiento para el cambio de las
cabeceras seleccionando Pasar a Texto Elementos encabezados Lista .

Figura: capacidades multilinges de las listas

Los elementos de texto de un programa - se incluyen tambin en la cabecera - se puede


traducir a diferentes idiomas. Cuando un usuario ejecuta un programa, los elementos
pertinentes de texto siempre se muestra automticamente en el idioma de inicio de sesin
del usuario (automtica de idioma).

Se trata de traducir los elementos de texto de su programa de elegir el men Ir Traduccin


de la ABAP-Editor.

Para el diseo de textos en la lista del cuerpo en varios idiomas y utilizar el lenguaje
automtico, smbolos de texto se utilizan. Un smbolo de texto se compone de un xxx ID de
tres dgitos alfanumricos, as como un texto traducible y, como los encabezados,
pertenece a los elementos de texto de un programa. Hay dos opciones para definir los
smbolos de texto para su programa:. Desde el Editor de ABAP, seleccione el men Pasar a
Elementos de Texto Texto Smbolos o . direccin que el smbolo de texto en su cdigo
fuente utilizando la sintaxis se describe a continuacin y haga doble clic en su ID (navegacin
hacia delante).

Desde su programa, la direccin en un smbolo de texto con texto-xxx. En tiempo de ejecucin


el texto se inserta en la lengua de inicio de sesin del usuario si existe la traduccin
correspondiente (ver. Traduccin de los elementos de texto. Arriba).

Con el fin de especificar un smbolo de texto ms intuitiva tambin puede utilizar la sintaxis
siguiente en lugar de TEXT-xxx: xxx'...'(). Aqu,'...' debe ser el texto del smbolo de texto en el
idioma original del programa.
Sugerencia: Tenga en cuenta que los elementos de texto tambin tiene que ser activado.

62
Figura: Generacin de un Listado Bsico

Lo anterior muestra grfica de la generacin de la lista bsica como introduccin a la lista de


detalles. Adems de la instruccin WRITE, tambin puede utilizar SKIP y Uline a la estructura
de la lista. Consulte la documentacin de la palabra clave de ABAP para estos dos
estados.

Figura: Generacin de una lista de detalles

Cuando el usuario selecciona una lista de base por medio de doble clic en la tecla F2 o
funcin, el evento ABAP AT-LINE-SELECTION seleccin se ha disparado. Si usted quiere
tener la pantalla del sistema una lista con la informacin requerida detallado (lista interactiva)
como la respuesta a esta accin del usuario, a continuacin, debe implementar esto en su
programa en la forma de un bloque de tratamiento correspondiente. All, usted puede leer los
datos solicitados por el usuario y salida de ellos, con la declaracin ESCRITURA. Los detalles
lista con los datos de salida, que. sobrescribe. la lista de base, se genera automticamente. Al

63
pulsar el botn con la flecha. Verde. o la tecla de funcin F3, el usuario puede volver a la lista
de base y elegir otra fila.

Sugerencia: Si un bloque de AT LINE-SELECCIN se implementa en el programa, a


continuacin, un botn con el smbolo de la lupa tambin aparece encima de la lista. Marcado
de la fila de la lista y luego elegir este botn tiene el mismo efecto que hacer doble clic en la
lista de fila.

Listas Figura: Generacin de varios detalles

La seleccin de filas en la lista de detalles tambin desencadena el evento AT LINE-


SELECTION. Esto significa que el bloque de procesamiento correspondiente en el programa se
ejecuta en este caso tambin. Por lo tanto usted debe ser capaz de determinar dentro de este
bloque en el que la lista de la seleccin de la fila actual se hizo para que pueda reaccionar
adecuadamente. Usted puede utilizar el campo del sistema SY-lsind para ello. Este campo
muestra la lista actual nivel: .0. de la lista bsica, .1. para la lista de los primeros detalles, y
as sucesivamente.

El grfico anterior muestra el valor de SY-lsind y como se establece en cada caso: Cada
seleccin de filas aumenta automticamente sy-lsind por 1, cada regresar a la lista anterior se
reduce el nivel SY-lsind en 1. Hasta 20 niveles de lista son posibles.

El valor de SY-lsind se debe utilizar para controlar el procesamiento en el bloque de AT LINE-


seleccin (por ejemplo, por medio de una instruccin CASE).

Una declaracin WRITE se ejecuta siempre en el nivel actual lista. Si no se genera la lista de
detalles de una seleccin de filas en el bloque de conducto AT, SY-lsind se reduce
automticamente a uno. Posteriormente, el sistema muestra el mismo nivel en que la seleccin
se llev a cabo la fila.

64
Figura: Ejemplo de sintaxis simple

El programa de ejemplo anterior tiene la siguiente funcin:


- En la lista bsica, el texto. Bsica lista. es la salida seguido por el sy-lsind valor actual de 0.. -
- Cuando una fila est seleccionada lista de base, el texto .1 er detalles lista. aparece en la lista
se detallan seguida de la SY-lsind valor actual de 1.
- Cuando el usuario selecciona una fila de la lista de detalles, l o ella recibe una lista de
detalles segunda en la que el texto .2 lista de detalles. aparece seguido por el valor actual de
la SY-lsind 2.
- Si una lnea de la lista de detalles es segundo seleccionado, SY-lsind se incrementa a 3, pero
no hay una lista ms informacin se genera. Por lo tanto sy-lsind se reduce automticamente
en 1 y la lista de detalles segunda se muestra de nuevo.

Figura: Ejemplo de aplicacin de una lista de detalles

El grfico anterior muestra un ejemplo de aplicacin de un programa con una lista bsica y una
lista de detalles:
- Las conexiones de vuelo con datos detallados se debe mostrar en la lista bsica. Se trata de
leer desde una tabla de base de datos SPFLI.
- En la lista de detalles, los planes de vuelo para la conexin de vuelo seleccionado debe
aparecer con los datos detallados correspondientes. Estos se leen de la tabla de base de datos
SFLIGHT. Con el fin de poder seleccionar la informacin pertinente para la lista de detalles
cuando una fila de lista de base se selecciona la fila seleccionada o por lo menos los valores

65
clave de la fila debe estar disponible para el evento AT LINE-SELECTION. Los grficos
siguientes muestran cmo se puede implementar.

Figura: Almacenamiento en bfer de datos especficos de fila en el rea Ocultar

Con el fin de poder tener acceso a los principales valores de la fila seleccionada cuando
una fila de lista de base se selecciona, usted tiene que aplicar el siguiente concepto:
- Para cada fila lista bsica, los valores clave de inters se almacenan en el rea HIDE
dentro del programa.
- Cuando se selecciona una fila los datos que se ha ocultado para esa fila particular, se
pondr a disposicin de nuevo.

El registro especfico de los valores fundamentales en el mbito HIDE ocurre por medio de la
declaracin HIDE (aqu: HIDE: wa_spfli-carrid, wa_spfli-connid.), Que debe ser ejecutado
inmediatamente despus de la generacin de cada fila lista de base. Cuando se selecciona
la fila, los valores clave de inters son transportados de regreso a los campos de origen (en
este caso-wa_spfli carrid y wa_spfli connid-) y el evento AT LINE-La seleccin se ha disparado.
El siguiente grfico ilustra este.

Sugerencia: Usted no tiene a la salida de los campos HIDE con la declaracin de


escribir primero. Esto significa: para cada fila de lista de base, tambin puede
almacenar informacin que no aparece en la lista bsica en el rea HIDE por medio de
la declaracin HIDE. El campo HIDE tambin puede ser un "plano" estructura.

66
Figura: Flujo de datos para la seleccin de fila

Sugerencia: las listas de los detalles no han fijado encabezados estndar como listas bsicas,
ya que pueden variar de forma dinmica. Por lo tanto, puede que tenga que aplicar sus propias
cabeceras utilizando instrucciones WRITE.

El siguiente grfico muestra la totalidad AT LINE-SELECTION bloque del programa de ejemplo.


En este bloque, bsicamente de datos (en este caso los horarios de vuelo) se lee y la
produccin por medio de los valores HIDE que se han transportado a los campos de origen.

Figura: Fragmento de cdigo fuente (Ejemplo de Aplicacin)

67
Pantalla de Seleccin
Ventajas de las pantallas de seleccin

Figura: Arquitectura y efectos de seleccin de pantalla

En general, las pantallas de seleccin se utilizan para introducir criterios de seleccin para la
seleccin de datos. Por ejemplo, si el programa crea una lista de datos de una tabla de base de
datos muy grandes, a menudo tiene sentido para el usuario para seleccionar los registros de
datos que realmente requiere la lectura y slo los de la base de datos. Adems de reducir el
requisito de memoria, esto tambin reduce la carga de
red.

Figura: Pantalla de seleccin de atributos

68
La pantalla de seleccin tiene las siguientes funciones estndar:

-Textos sobre la pantalla de seleccin (textos de seleccin) se puede mantener en varios


idiomas. En tiempo de ejecucin de los textos se muestran automticamente en el idioma de
inicio de sesin del usuario. (Automtica del idioma)

- El sistema verifica los tipos de forma automtica: Si el usuario escribe algo que no se
corresponde con el tipo del campo de entrada, la interfaz grfica de usuario SAP lo ignorar,
por lo que ni siquiera van a aparecer en la pantalla de seleccin.

- Adems de las entradas solo valor (PARAMETERS), tambin se puede aplicar selecciones
complejas (SELECT-OPTIONS) en la pantalla de seleccin. El usuario puede entonces
introducir intervalos, las condiciones comparativas o incluso los patrones como las
restricciones.

- Si el campo de entrada se define mediante un elemento de diccionario (por ejemplo, datos de


elementos), entonces el campo de la documentacin (documentacin del elemento de datos)
se pueden mostrar en el campo de entrada, utilizando la F1 (Ayuda para entradas) la tecla de
funcin.

- La ayuda del elemento de datos de bsqueda para mostrar las posibles entradas se
pueden llamar con el F4 (Ayuda para entradas) la tecla de funcin.

- Usted puede ahorrar fcilmente completado pantallas de seleccin de variantes para su


reutilizacin o el uso en el fondo la operacin.

Figura: Uso de las opciones de seleccin

El grfico anterior ilustra el uso de selection options, que permiten entradas complejas. Cada
pantalla de seleccin contiene un icono de informacin (tambin conocido como una ayuda "en
pantalla" icono). Seleccione este icono para mostrar informacin adicional.

69
Figura: Informacin sobre Tipos Semntica Mundial en la pantalla de seleccin

Si un campo de entrada se escribe con un elemento de dato, la siguiente informacin


semntica adicional est disponible en la pantalla de seleccin:
- La etiqueta del campo a largo del elemento de datos se puede copiar para describir el
campo de entrada en la pantalla de seleccin (seleccin de texto). (Vase el grfico
siguiente). La documentacin del elemento de datos est disponible automticamente como
una ayuda de entrada (ayuda F1).
- Si ayuda de busqueda est relacionada con el elemento de datos, est disponible como una
ayuda de entrada (ayuda F4).
(Una ayuda de bsqueda es un objeto independiente diccionario que muestra una lista de
posibles valores de entrada para el usuario (posiblemente con otra informacin), de la que
puede seleccionar uno para la entrada.)

Si el campo de entrada se escribe con un campo de estructura que se define a su vez se


utiliza un elemento de datos, entonces antes descrita informacin semntica del elemento de
datos est disponible en la pantalla de seleccin. Si el campo de la estructura tambin se copia
en un buscar ayuda, entonces esto. Sobrescribe. la ayuda de bsqueda del elemento de datos.

Para obtener ms informacin, consulte la documentacin en lnea para el Diccionario ABAP.

Figura: Seleccin de Textos

70
En la pantalla de seleccin, los nombres de los campos de entrada aparecen como su
descripcin de forma predeterminada. Sin embargo, puede reemplazarlos por los textos de
seleccin correspondientes, que luego se puede traducir a los idiomas ms que usted
requiere. En tiempo de ejecucin, los textos de seleccin son mostrados en la lengua de inicio
de sesin del usuario (automtica de idioma).

Al igual que los encabezados de la lista y los smbolos de texto, textos de seleccin pertenecen
a los elementos de texto del programa. Desde el Editor de ABAP, seleccione el men Ir GoTo
Text ElementsSelection Texts para su mantenimiento. Puede implementar su traduccin
con el men Ir .Traduccin (GoTo Translation.).

Si el campo de entrada se escribe directamente o indirectamente con un elemento de datos,


puede copiar el nombre del campo a largo de uno de los textos guardados en el diccionario (.
Diccionario de referencia.). Esto le proporciona una opcin fcil para la normalizacin de los
textos.

Figura: Variantes

Las pantallas de seleccin efectuada son las variantes del programa. Despus de que el
programa ha sido iniciado, el usuario puede cargar variantes a la pantalla de seleccin
respectivo para facilitar repetidas o casi idnticos entradas idnticas. Usted tiene que
incluir una variante cuando se programa un programa de ABAP en corrida de fondo, si el
programa tiene una pantalla de seleccin, como entradas de usuario no son posibles en el
fondo.

Para definir las variantes especficas-programa por iniciar el programa, completando la


pantalla de seleccin y guardarlo (botn de disco). Tambin puede definir los diferentes
atributos de la variante.

Si las variantes ya han sido definidos para un programa, a continuacin, un pulsador adicional
aparece en la pantalla de seleccin con la bandera de texto. Variante conseguir ..... Este botn
se enumeran las variantes definidas para la seleccin.

Con el fin de poder definir sus propias variantes, el usuario debe contar con la autorizacin
correspondiente (en el sistema de produccin). Pero tambin puede definir variantes en el
sistema de desarrollo y luego los han transportado al sistema de produccin. Variantes con el
prefijo de nombre 'CUS &' son variantes del sistema. Son transportados como objetos del
repositorio comn y no especfica del cliente. Todas las otras variantes son especfica del
cliente y debe ser transportado por separado. Desde el Editor de ABAP, seleccione el men Ir
variantes (GoTo Variants) para ir a la variante de la gestin de su programa, donde se
puede realizar en marcha para su mantenimiento siga variantes con respecto a los valores y
atributos. All, elija el men Herramientas Transporte Solicitud (Tools Transport Request)
para especificar las variantes para ser transportado, as como solicitar una. El transporte pasa
cuando la solicitud se libera.

Para obtener ms informacin sobre las variantes, elija el botn de informacin sobre atributos
de la variante en la pantalla a fin de mantener sus atributos de la variante.

71
Opciones de entrada en la pantalla de seleccin

Figura: un solo valor de entrada (Declaracin PARMETROS)

Lo anterior muestra el uso de grficos y el comportamiento en tiempo de ejecucin de una


variable de entrada se define mediante una instruccin PARMETROS. Una vez ms, la
definicin de dicha variable de entrada crea una variable en el sistema e, implcitamente,
genera una pantalla de seleccin con una opcin de entrada correspondiente.

Una variable de entrada se define en la misma forma que una variable ordinaria. La nica
diferencia es que la palabra clave Parmetros se utiliza en lugar de datos.

Usted tiene que considerar tres caractersticas:


- El nombre de la variable de entrada puede ser de hasta ocho caracteres de longitud.
- No puede ser escrita con la F tipos estndar, cuerda y XSTRING.
- La asignacin de un valor predeterminado no se implementa con la adicin de valor, pero con
la adicin DEFAULT.

Una asignacin de valores por defecto por medio de la adicin DEFAULT o el valor de
asignacin antes de mostrar la pantalla de seleccin (inicializacin) se muestra en la pantalla
de seleccin como un valor predeterminado que se puede sobrescribir. Si el usuario introduce
un valor y elige Ejecutar, los valores de entrada se transfieren a la validez interna y, por
ejemplo, se puede utilizar para restringir la seleccin de base de datos.

Figura: Introduccin de restricciones complejas (la instruccin SELECT-OPTIONS)

72
opciones de seleccin se determinarn en el momento de usar el nombre SELECT-OPTIONS
PARA data_object.

Norma, donde nombre es el nombre de la opcin de seleccionar y data_object es una variable


ya definida. Esta definicin crea una tabla interna con el nombre especificado en el programa
(en este caso so_car) y genera una pantalla de seleccin con una opcin de entrada para
limitar la variable especificada (en este caso-wa_spfli carrid).

entradas del usuario son transportados a la tabla interna generada automticamente cuando se
selecciona Ejecutar. Este cuadro siempre tiene cuatro columnas: signo, opcin, de bajo y
alto. Lo anterior muestra grfica, que se crean entradas para los que la entrada del usuario:

-Si "LH" se introduce, se genera una fila con los valores "I" (inclusive), "EQ" (igual), "LH" y del
Espacio.
- Si el intervalo de "AA" a "DL" se introduce, se genera una fila con los valores "I" (inclusive),
"BT" (entre), "AA" y "DL.
- Si "BA" se introduce como el valor nico que se excluye, se genera una fila con los valores "E"
(exclusivo), "EQ" (igual), "BA" y del Espacio.

La tabla interna llena los criterios de seleccin se inscriben pueden ser utilizados para la
seleccin de bases de datos, como se ilustra en el grfico. El contenido de la tabla se interpreta
de la siguiente manera:
Si i_1, ... , Y I_n E_1, ... , Son los e_m incluido / condiciones exclusivas de la tabla interna, la
condicin de compuestos siguientes se utiliza para limitar la seleccin de datos:

( I_1 OR ... OR I_n ) AND ( NOT E_1 ) AND ... AND (NOT E_m )

Si la tabla est vaca porque no hay restricciones, las condiciones en que se aplica siempre en
el campo respectivo.

Sugerencia: El operador IN tambin se puede utilizar en expresiones lgicas: SI-


wa_spfli carrid EN so_car.

Para definir una opcin de seleccin, los mismos tres particularidades de aplicacin a la
declaracin parmetros (vase ms arriba).

Si la tabla interna de la opcin de seleccin se rellena con la adicin DEFAULT o APPEND


declaracin antes de la pantalla de seleccin (inicializacin, su contenido se muestra en la
pantalla de seleccin tal como se sugiere las condiciones que se pueden sobrescribir.

Para ms detalles, consulte la documentacin de la palabra clave para SELECT- OPTIONS.


Evento despus de la Seleccin

Screen
Figura: En el evento AT SELECTION-SCREEN

73
Declarando Campos con Select Options

Figure: Selections with SELECT-OPTIONS

The SELECT-OPTIONS keyword is a declarative language element with the same eight-
character naming restriction as PARAMETERS. Unlike thePARAMETERS keyword, SELECT-
OPTIONS permits a range of values and complex selections instead of just a single input-
ready field.

The SELECT-OPTIONS keyword generates an internal table <seltab> with a standard structure
and a header line. This table has four columns: sign, option, low, and high. Just as with
PARAMETERS, you can maintain the selection text using the menu path Goto Text elements
Selection texts.

Use the addition FOR to specify the field against which the system should check selection
entries. This field must be declared in a DATA or TABLES statement. Both high and low fields
inherit the attributes of the referenced field.

Each line of the selection table <seltab> formulates a condition using one of the following
relational operators:
. SIGN: I (Include), E (Exclude)
. OPTION: EQ, NE, LE, LT, GE, GT, BT (Between), NB (Not Between), CP (Contains Pattern),
NP (Contains Pattern not)

The selection set is the union of all includes (I1,..., In) minus the union of all excludes (E1, ...,
Em). If no values are entered in the SELECT-OPTIONS object, all rows are returned from the
database.

74
Figure: SELECT-OPTIONS with Multiple Selection Criteria

When the user makes entries in a SELECT-OPTIONS object, the system automatically
populates the internal table.

To change the default entries for table fields SIGN and OPTION, choose menu Edit Selection
options., the system offers alternatives appropriate for the selection. If the traffic signal icon is
green during Select, there is an (I)nclusive in the sign column. A red light indicates (E)xclude.

To delete a table entry, use the menu Edit Delete selection criterion.
Each selection criterion can be used to make multiple selections unless otherwise defined. If
multiple selections are present, the color of the arrow changes from white to green.

Figure: Syntax of the SELECT-OPTIONS Statement

Additions to the SELECT-OPTIONS statements are:

. DEFAULT enables you to set default values for low or low and high parameters. You can use
OPTION and SIGN to set default values for option and sign , which differ from the normal
default <value> addition.
You can set a default value for a SELECT-OPTIONS keyword with the DEFAULT <value>
addition. If you assign a MEMORY ID <pid>, the system retrieves the current value from the
SAP system memory and displays it automatically. LOWER CASE suppresses conversion of
the entry to upper case. This addition is not permitted for Dictionary fields, because the attribute
set in the Dictionary takes precedence.

75
. OBLIGATORY generates a mandatory field. A question mark is displayed in the entry field in
the selection screen and the user should enter a value.

. NO-EXTENSION suppresses multiple single or multiple range selections.

. NO INTERVALS suppresses the seltab-high (upper interval limit) entry on the selection
screen. You can use the additional screen, Multiple selection, to specify ranges.

Diseo de pantallas de seleccin con Selection Screen

Figure: Designing the Selection Screen I

You can use the SELECTION-SCREEN keyword to design the layout of the selection screen.

You can group screen elements that logically belong together using the extension BEGIN OF
BLOCK <block> . You can place a frame around the screen elements using WITH FRAME.
You can nest frames to a maximum depth of five.

You can assign a title to the block only if you use a frame. You can declare the title as either
text-xxx or a field name with maximum length of eight characters. In the second case, you set
the text at runtime in the INITIALIZATION event. Before designing a selection screen, you
should become familiar with the screen design guidelines listed in transaction BIBS.

Figure: Designing the Selection Screen II

You can display multiple parameters and comments on the same line on the screen.

76
To do so, you need to enclose the parameters between the SELECTION-SCREEN BEGIN OF
LINE and SELECTION-SCREEN END OF LINE statements. The COMMENT parameter
enables you to include text in the line.

Comment text must always have a format (position and output length). The position can be set
using a data field or pos_low or pos_high. The latter are low and high positions for the SELECT-
OPTIONS field on the selection screen.

Adding COMMENT ... FOR FIELD <f> ensures that F1 Help for the field <f> is displayed for the
comment text and the parameter. If you hide the parameter (selection variant: attribute
invisible), the comment text is also hidden.

You can use POSITION <pos> to set the cursor for the next output position (only within ...
BEGIN OF LINE ... END OF LINE).

Authority-Check
En la pantalla de la seleccin EN el acontecimiento AT SELECTION-SCREEN estn ambos
accionados cerca el elegir Enter tan bien como ejecute (F8). Despus de que se haya
procesado el bloque de proceso correspondiente, se acciona el acontecimiento siguiente de
START-OF-SELECTION y el proceso relevante comenzado, si ejecute fue utilizado. Sin
embargo, si Enter fue elegido, la pantalla de la seleccin se exhibe otra vez.

77
Figura: Dilogos de error en AT-SELECCIN DE PANTALLA

Inmediatamente antes de procesar el AT SELECTION-SCREEN bloque, las entradas de


usuario se transfiere automticamente a las variables correspondientes en el programa. Por lo
tanto, tiene sentido para la aplicacin requiere comprobaciones de autorizacin de entrada y en
este bloque de tratamiento. Si el resultado de verificacin es negativa, slo tiene que enviar un
mensaje de error al usuario y tener la pantalla de seleccin de muestra de nuevo. El usuario
tiene entonces la opcin de hacer nuevas entradas. Por el contrario, un mensaje de error en el
START-OF-SELECTION bloque se mostrar en el programa de terminacin.

El siguiente grfico ilustra un simple programa de ejemplo con el cheque de autorizacin y de


dilogo de error en la pantalla de seleccin.

Figura: Ejemplo de Sintaxis: Consulte con autorizacin de dilogo de error

Informacin adicional se puede encontrar en la documentacin de palabras clave. "


SELECTION-SCREEN.

78
Unidad 8
Sentencias tiles ABAP

CONCATENATE
Definicin
Se utiliza para concatenar varios campos alfanumricos en uso solo.
Sintaxis:
CONCATENATE <c1> ... <cn> INTO <campo> [ SEPARATED BY <s> ].
Esta sentencia concatena los campos campos <c1> ... <cn> en el campo <campo>. Los
espacios en blanco se ignoran
durante la operacin.
Con la clusula SEPARATED BY se puede especificar un campo alfanumrico (el campo <s>)
que ser utilizado
como separador entre los campos <c1> ... <cn>. Si el resultado de la concatenacin entra en el
campo <campo>,
SY-SUBRC = 0, si por el contrario, es necesario el truncamiento, SY-SUBRC = 4.

Ejemplo 1:
DATA: ONE(10) VALUE 'Ivan',
TWO(3) VALUE ' Rodrigo',
THREE(10) VALUE ' Baos',
NAME(20).
CONCATENATE ONE TWO THREE INTO NAME.
La variable NAME valdra: IvanRodrigoBaos

Ejemplo 2:
DATA: ONE(10) VALUE 'Ivan',
TWO(3) VALUE 'Rodrigo',
THREE(10) VALUE 'Baos',
NAME(20),
SEPARATOR(4) VALUE 'GAUSS'.
CONCATENATE SPACE ONE TWO THREE INTO NAME
SEPARATED BY SPACE.
La variable NAME valdra: Ivan Rodrigo Baos.

SPLIT
Definicin
Divide un campo alfanumrico en varios campos, gracias a algn separador.
Sintaxis:
SPLIT <campo> AT <delimitador> INTO <c1> ... <cn>.
Esta sentencia utiliza el campo indicado en <delimitador> para separar los campos <c1> ...
<cn> el contenido del
campo <campo>. Si no hay especificado los suficientes campos para poder separar todo el
contenido del campo
<campo>, sobre el ltimo se rellena el resto del campo <campo>. Si todos los campos destino
son lo suficientemente
grandes como para almacenar las partes de <campo>, SY-SUBRC vale 0. En caso contrario
SY-SUBRC vale 4.
Tambin se puede situar las partes del campo que se quiere separar en una tabla interna con
el siguiente formato:
SPLIT <campo> AT <delimitador> INTO TABLE <tabla>.

79
Por cada parte del campo <campo el sistema aade una nueva lnea en la tabla interna
<tabla>.
Ejemplo 1:
DATA: NAMES(30) VALUE 'Charly, John, Peter',
ONE(10),
TWO(10),
DELIMITER(2) VALUE ','.
SPLIT NAMES AT DELIMITER INTO ONE TWO.
ONE valdr "Charly" y TWO tendr el valor "John ".

Ejemplo 2:
DATA: BEGIN OF ITAB OCCURS 10,
WORD(20),
END OF ITAB.
SPLIT 'STOP Two STOP Three STOP ' AT 'STOP' INTO TABLE ITAB.
La tabla interna tendr tres lneas, la primera en blanco, la segunda contiene "Two" y la tercera
contiene "Three".

COMMIT WORK
Definicin
A veces es necesario asegurarse que los cambios en la base de datos se han realizado, antes
de continuar con el
proceso. Por el contrario, a veces es necesario deshacer algunos cambios realizados en la
base de datos. Para confirmar
los cambios realizados sobre la base de datos se utiliza la sentencia COMMIT WORK
Sintaxis:
COMMIT WORK [ AND WAIT ].
para deshacer los cambios realizados en la base de datos se utiliza la sentencia ROLLBACK
WORK. Estas sentencias
tienen un papel importante en la programacin de transacciones de dilogo.
Con la clusula AND WAIT, el programa se para hasta que la tarea de actualizacin termina. Si
la actualizacin es
satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0.

TRANSLATE
Definicin
Se utiliza para convertir caracteres de mayscula a minscula o viceversa, o para realizar
sustituciones de caracteres a
travs de ciertas reglas.
Sintaxis:
TRANSLATE <campo> TO { UPPER | LOWE } CASE.
Con la opcin UPPER, las letras minsculas de <campo> se convierten en maysculas. Y con
la opcin LOWER las
letras maysculas se convierten en minsculas.
Para utilizar reglas de conversin se utiliza la siguiente sintaxis.
TRANSLATE <campo> USING <regla>.
Esta sentencia reemplaza todos los caracteres de <campo> que cumplan la regla de
sustitucin <regla>. La regla de
sustitucin contiene pares de letras, la primera de ellas indica el carcter a sustituir, la segunda
indica el carcter de
sustitucin. <regla> puede ser una variable.

CONDENSE
Definicin
Para borrar espacios en blanco superfluos en campos alfanumricos.

80
Sintaxis:
CONDENSE <campo> [ NO-GAPS ].
Borra cualquier secuencia de espacios en blanco, dejando slo uno que exista entre palabras
existentes en <campo>.
Los espacios en blanco por la izquierda tambin desaparecen.
Con la clusula NO-GAPS todos los espacios en blanco desaparecen.

Ejemplo 1:
DATA: BEGIN OF NAME,
TITLE(8), VALUE 'Dr.',
FIRST_NAME(10), VALUE 'Michael',
SURNAME(10), VALUE 'Hofmann',
END OF NAME.
CONDENSE NAME.
WRITE NAME.
La salida en pantalla sera: Dr. Michael Hofmann

Ejemplo 2:
DATA: BEGIN OF NAME,
TITLE(8), VALUE 'Dr.',
FIRST_NAME(10), VALUE 'Michael',
SURNAME(10), VALUE 'Hofmann',
END OF NAME.
CONDENSE NAME NO-GAPS.
La variable NAME valdra: Dr.MichaelHofmann

UNPACK
Definicin
Desempaqueta el contenido de un campo sobre otro.
Sintaxis:
UNPACK <campo1> TO <campo2>.
Desempaqueta el campo <campo1> en el campo <campo2>. Es la operacin contraria a la
sentencia PACK.
Ejemplo:
DATA: P_FIELD(2) TYPE P VALUE 103,
C_FIELD(4) TYPE C.
UNPACK P_FIELD TO C_FIELD.
P_FIELD: P'103C' -> C_FIELD: C'0103'.

81
Unit 9
Modulo de funciones
Mdulos de funcin son procedimientos especiales que son visibles de forma global y que se
puede llamar desde otros programas ABAP. Slo pueden ser definidas y aplicadas de
programas especiales de ABAP, denominados grupos de funciones.

Screens
Grupos de funcin puede contener pantallas, que permite encapsular los cuadros de dilogo de
usuario en los mdulos de funcin.
Remote capability
Mdulos de funcin se puede llamar por sistemas externos (Remote Function Call).
Update
Algunos mdulos de funcin (mdulos de actualizacin) puede ser utilizado para las
actualizaciones. No se ejecutan directamente cuando se le llama, sino que al final de la unidad
lgica de trabajo (LUW).
Asynchronous execution
Mdulos de funcin se ejecuta en paralelo en un proceso de trabajo por separado. El
programa de llamada no espera hasta que la transformacin del mdulo de funciones se
haya completado.

Testeo modulo de funciones standard


TRX: SE37

Modulo Funciones POPUP_TO_CONFIRM -> Ejecutar

82
Presionando Si, retorna:

Presionando No, retorna:

exporting depende de donde me encuentro. exporting es lo que mando e importing es lo que envo, en
invocacin de la funcin es abreves.

En importing puedo declarar una tabla (TYPE tabla del diccionario). en la solapa tabla tengo el problema
que no se si es de entrada o salida.

83
Grupo de funciones
Es un repositorio que agrupa funciones y que se utiliza principalmente para compartir
subrutinas y declaraciones de variables entre las distintas funciones pertenecientes al grupo.

Grupos de funciones no son programas ejecutables, es decir, no se puede iniciar con los
cdigos de operacin o por sus nombres. Sirven exclusivamente como programas principales
de los mdulos de funcin. En la mayora de los casos, un grupo de funciones contiene varios
mdulos de funcin que realizan funciones relacionadas o actuar en los mismos datos.

Cuando un programa ABAP llama a un mdulo de funciones, el grupo de funcin


correspondiente se carga en la sesin de residente, donde permanece hasta que el programa
de llamada termina. Si el programa llama a los mdulos de varias funciones del mismo grupo
de funciones (o la misma funcin que el mdulo varias veces) de forma consecutiva, el grupo
de funciones slo se carga durante la primera llamada.

Logical View of a Function Group

Aparte de los mdulos de funcin, los grupos de funcin tambin puede contener los siguientes
elementos:

. Datos declaraciones (objetos de datos globales)


. Subrutinas
. Pantallas

Estos elementos pueden ser utilizados por todos los mdulos de funcin en el grupo de
funciones.

84
Para crear un grupo de funciones, debemos seleccionar en el men de la transaccin SE37 la
ruta Goto/Functions Groups/Create Group

O tambien se puede hacer desde la TRX SE80

Aqu ingresaremos el nombre de nuestro grupo de funcin y presionamos el botn Save como
vemos a continuacin:

85
Ejercicio 1: Crear un Grupo de Funciones
Objetivos del Ejercicio
Despus de completar este ejercicio usted va a poder:
. Crear un grupo de funciones

Tarea:
Crear un Grupo de Funciones
1. Crear el grupo de funciones ZBC402_##_CONN.

Creando Modulo de Funciones:


SE37 -> crear O tambien por SE80

Para crear un mdulo de funcin accedemos a la transaccin SE37. All escribiremos el nombre de
nuestra funcin y presionaremos el boton Create

Attributes: aqu especificamos la descripcin de la funcin y el tipo de funcin que puede ser Normal,
RFC o Update module.

86
Import: aqu especificamos los parmetros de salida de la funcin

Export: aqu especificamos los parmetros de entrada de la funcin

Paso por valor: los parmetros formales son creados como copias de los parmetros actuales. Los
cambios en los parmetros formales no afectan a los parmetros actuales.

Paso por referencia: solo la direccin de los parmetros actuales se transfieren a los parmetros
formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si
cambiamos los parmetros formales, el contenido del campo del programa que hace la llamada tambin
cambia.

87
Changing: aqu especificamos los parmetros de salida que cambiarn de valor con la ejecucin de la
funcin.

Tables: aqu especificamos las tablas que se utilizan en la funcin.

Source Code: aqu pondremos el cdigo Abap de la funcin.

Exceptions: aqu especificamos las excepciones de la funcin. Una excepcin es un error que se produce
al ejecutar la funcin y que ha sido catalogado cuando se creo el mdulo de funcin de modo de poder
identificar rpidamente el motivo del error

Documentacion

88
Estructura del grupo de funciones

Programa principal, SAPL<fgrp>, merely contains INCLUDE statements for the following include
programs:

. TOP include
Include L<fgrp>TOP contendra las declaraciones de variable globales.

. U includes
Include L<fgrp>UXX contendra los includes L<fgrp>U01, L<fgrp>U02, ... .
Estos contendran el codigo adicionado en cada modulo de funciones

. F includes
Include L<fgrp>F01, L<fgrp>F02, ... puede ser utilizado para generar subrrutinas

. O includes
Include L<fgrp>O01, L<fgrp>O02, ... Utilizado para PBO

. I includes
The include programs L<fgrp>I01, L<fgrp>I02, ... Utilizado para PAI

89
Ejercicio 2: Crear un Modulo de Funciones

Objetivos del Ejercicio


Despus de completar este ejercicio usted va a poder:
. Crear un Modulo de Funciones
. Definir las interfaces del modulo de funciones
. Documentar un modulo de funciones

Tarea 1:
Preparacin
1. Desplegar una modulo de funciones existente con la Transaccin SE37 y Familiarizarse con los tipos
de parmetros de la interface.
2. Si no ha creado aun el grupo de funciones crearlo en este momento.

Tarea 2:
Crear un modulo de funciones para la lista de vuelos
1. Crear un Nuevo modulo de funciones y nombrarlo Z_BC402_##_GET_CONN_LIST en el grupo de
funciones creado anteriormente.
2. Definir un parmetro de entrada para ciudades de origen y destino departure and destination cities.
Elegir los mismos tipos de datos que en las tablas correspondientes.
Tiene sentido crear los parmetros opcionales?
Elija si los parmetros a transferir van a ser por parmetros o por valor?
3. Defina un parmetro de salida para la lista de vuelos. Utilice un tipo de tabla apropiada para el
parmetro.
4. Ingrese la documentacin necesaria para el modulo de funciones, para los parmetros y par alas
excepciones.

CREAR modulo de funciones Z_BC402_46_get_conn_list

e implementarlo, ver ZSAP_P_46_GRF01

90
Llamado de modulo de funciones:

Boton PATTERN, llamamos POPUP_TO_CONFIRM

91
Tomando las exepciones

se borra el IF y se pone case sy-subrc.

WHEN 1.

WHEN 2.

WHEN 3.

Ejercicio 4: Usando declaraciones globales en un grupo de funciones.


Objetivos del Ejercicio
Despus de completar este ejercicio usted va a poder:
. Usar declaraciones globales
. Entender como es el procesamiento de un modulo de funciones
. Testiar secuencial mente mdulos de Funciones

Tarea 1:
1. Crear una tabla interna en el Top de la funcin y luego llenarla con un Select.
2. Crear una subrutina en la funcin en donde manipularemos los resultados obtenidos para solo devolver
algunos

Tarea 2: (Opcional)
1. Si la tabla se encuentra vaca generar una excepcin para este caso.

92
Qu es un mdulo de funcin RFC?

Un mdulo de funcin RFC consiste en una llamada a una funcin que existe en un sistema distinto al del
programa que la llama. El objetivo principal de las RFC es acceder a otros ambientes para obtener datos.

La comunicacin puede darse entre sistemas Sap o entre un sistema Sap y otro sistema que no sea Sap.

Para llamar a una funcin RFC se debe agregar la clasula DESTINATION al momento de declarar la
funcin, como vemos en el siguiente ejemplo.

Cmo crear una RFC?

Una funcin RFC se crea de la misma manera que se crea un funcin. Se accede a la transaccin SE37 y
se completan los mismos parmetros que completamos para crear una funcin a excepcin de que se debe
seleccionar en la solapa de Atributos la opcin Remote Enabled Module.

Los parmetros que se crean en una funcin RFC no se pueden pasar por Referencia, deben pasarse por
valor. Esto se logra tildando el check Pass value para cada parmetro en las solapas IMPORT, EXPORT y
CHANGING.

93
RFC( Remote Function Call ) en SAP R/3

Esta tecnologa se usa para comunicar entornos diferentes que pueden ser del mismo o de
tipos diferentes, otra forma de realizar conexin entre procesos es por medido del uso de las
tecnologas OLE.

Pasos del Proceso

1.- Crear destino


2.- Crear grupo de funciones
3.- Crear funcion
4.- Crear programa usuario de la funcion

1.- Crear Destino( se usa transaccion SM59 )

Nodo Conexiones R/3( se hace en la maquina destino )

Nombre conexin ZUAXRFC...Conexion con maquina de produccion


Destino RFC ZUAXRFC
Tipo Conexion 3( Conexion R/3 )
Distribucion carga Si No( marcar este )
Maquina destino Direccion IP de maquina fuente
No. Sistema 00

Opciones de seguridad
Trusted system: si no(marcar este)
SNC act inact(marcar este)

Descripcion: Conexion con la maquina productiva

Acceso a sistema

Idioma: ES
Mandante: 0400
Usuario: IDUSUARIO
Clave acceso: **********
Usuario actual( desmarcado )
Clave acceso no codificada( desmarcado )

2.- Crear grupo de funciones

Grupo funciones: ZUAXRFC


Descripcion: Lectura de la tabla ZUAXRFC en produccion
Aplicacion: F( contabilidad financiera )
Tablas: parametro tabla estructura referencia
TAB_ZUAXRFC ZUAXRFC

Forma de ejecucion

Remote Function Call soportado( marcar este )


Inicio inmediato( marcar este )

3.- Crear funcin( pertenece al grupo ZUAXRFC )

FUNCTION Z_UAX_RFC.

94
SELECT * FROM ZUAXRFC INTO TABLE TAB_ZUAXRFC.
ENDFUNCTION.

4.- Crear PROGRAMA( llama la funcin Z_UAX_RFC )

REPORT ZUAXRFC.
* --------------------------------------------------------------------
* --------------------------------------------------------------------
* Programa : zuaxrfc
* autor : Francisco Reyes
* fecha : 13 de abril del 2000
* objetivo : Probar comunicacin RFC
* --------------------------------------------------------------------
* tablas usadas por el proceso
* tabla descripcin
* zuaxrfc tabla de prueba para comunicacin rfc
* --------------------------------------------------------------------
* Descripcin del proceso
* 1.- Crea tabla interna en funcin de la tabla ZUAXRFC
* 2.- Llama la funcin rfc z_uax_rfc que le devuelve la tabla tab_zuaxxrfc
* 3.- Actualiza la tabla zuaxrfc de la maquina destino en funcin de los datos recibidos de la
funcin rfc
* --------------------------------------------------------------------
* --------------------------------------------------------------------
DATA: BEGIN OF TAB_ZUAXRFC OCCURS 0.
INCLUDE STRUCTURE ZUAXRFC.
DATA: END OF TAB_ZUAXRFC.

CALL FUNCTION 'Z_UAX_RFC' DESTINATION 'ZUAXRFC'


TABLES TAB_ZUAXRFC = TAB_ZUAXRFC

MODIFY ZUAXRFC FROM TAB_ZUAXRFC.

95
Business Application Programming Interface( BAPIs ) de SAP R/3

Las BAPI's son funciones que sirven para realizar acciones sobre los objetos de negocios de
SAP. Son en realidad mtodos de los objetos de negocios, y gracias a ellos podemos realizar
cargas evitando utilizar Batch Inputs por Call Transaction.

Bsicamente son funciones como cualquier otra funcin en ABAP, as que poseen las mismas
caractersticas: parmetros de entrada, de salida, tablas, excepciones...

Por lo general cuando se hace un modificacin de un objeto con una BAPI es necesario realizar
un COMMIT explcito mediante la funcin BAPI_TRANSACTION_COMMIT. Si quieren probar si
una funcin les sirve para cargar algn dato en particular, pueden utilizar la transaccin SE37 e
ir al men Mdulo de Funciones->Verificar->Secuencias Test. All se pueden encadenar
funciones, de manera de poder ejecutar primero la BAPI y despus la funcin
BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es
cargado por la BAPI que estn probando.

Ventajas de usar BAPI

Las BAPIs son mtodos estandarizados de los Objetos de Negocio Sap R/3, que permiten la
integracin de los componentes de software de los clientes y de terceros. Algunas de las
ventajas de usar BAPIs son:

.- Es un Estndar de Negocio
.- Es un Estndar Consensuado
.- Garantiza estabilidad y compatibilidad futura
.- Garantiza orientacin a objetos
.- Independencia de entorno (apertura)

Usar BAPIs en programas de aplicacin

Actualmente una BAPI puede ser invocada de dos formas diferentes:

.- Llamar la BAPI en el repositorio


.- Hacer llamada RFC a la funcin que implementa la BAPI

Listado de BAPIs SAP:

BAPI de creacin de Pedidos de Venta: BAPI_SALESORDER_CREATEFROMDAT2


BAPI de creacin de Pedidos de Compra: BAPI_PO_CREATE
BAPI de Verificacin de Facturas: BAPI_INCOMINGINVOICE_CREATE
BAPI de facturacin: BAPI_BILLINGDOC_CREATEMULTIPLE
Bapi de Movimiento de mercancias: BAPI_GOODSMVT_CREATE
BAPI modificacin Pedido de ventas: BAPI_SALESORDER_CHANGE

96
Unidad 10
Ampliaciones en SAP
ndice:
1) Qu son las ampliaciones? Ventajas y Desventajas 98
2) Tipos de ampliaciones 98
3) User Exit 99
3.1) Ventajas .............................................................................................. 100
3.2) Desventajas ........................................................................................ 100
3.3) Pasos para realizar un User Exit ...................................................... 100
4) Field Exit 104
4.1) Ventajas .............................................................................................. 104
4.2) Desventajas ........................................................................................ 104
4.3) Pasos para realizar un Field Exit ...................................................... 104
5) Screen Exit 108
5.1) Ventajas .............................................................................................. 108
5.2) Desventajas ........................................................................................ 109
5.3) Pasos para realizar un Screen Exit .................................................. 109
6) Menu Exit 112
6.1) Ventajas .............................................................................................. 112
6.2) Desventajas ........................................................................................ 112
6.3) Pasos para realizar un Menu Exit ..................................................... 112
7) Include en tablas transparentes 117
8.1) Ventajas .............................................................................................. 117
8.2) Desventajas ........................................................................................ 117
8.3) Pasos para realizar un Include a Tabla Transparente .................... 118
8) Transacciones relacionadas 122

97
Qu son las ampliaciones? Ventajas y Desventajas
Las ampliaciones son diferentes herramientas que presenta SAP para realizar
mejoras, modificaciones o agregados a un programa, en general un programa estndar.
Algunos programas estndares estn preparados como para agregarles
funcionalidad nueva a la existente. En algunos casos se puede validar campos de alguna
dynpro en particular; agregar campos a una pantalla con cdigo que permita tratar esos
datos nuevos; agregar una nueva opcin dentro de un men o agregar campos a tablas
estndares.
Las ampliaciones se generan y codifican en mdulos a parte del cdigo estndar,
con lo cual no se necesita modificarlo, manteniendo la funcionalidad original y el buen
funcionamiento.

Ventajas:
Permite modificar ciertos programas para adaptarlo a necesidades particulares de
la empresa, agregando nuevas caractersticas a las existentes.
Permite realizar mejoras a un programa sin modificar el cdigo original del
mismo, manteniendo el buen funcionamiento y las caractersticas que tena.
Los cambios toman efecto con slo transportar los nuevos objetos.

Desventajas:
No siempre se pueden hacer todas las modificaciones de manera satisfactoria, ya
que la mayora de las ampliaciones estn preparadas para una determinada tarea
y momento dentro de la ejecucin de un programa.
No todos los programas estndares estn preparados para agregar ampliaciones.
Por ejemplo todos los programas no tienen User Exit.

Tipos de ampliaciones
En SAP existen varios tipos de ampliaciones, que son utilizadas de acuerdo al
tipo de mejora que se quiera desarrollar, cada una con sus particularidades que sern
explicadas en detalle ms adelante.

User Exit

Un User Exit es un punto dentro de un programa en donde se puede


invocar a un programa propio agregando una funcionalidad nueva al programa
original.

Field Exit

98
Los Field Exit se utilizan para relacionar un campo de una dynpro de un
determinado programa con un mdulo de funcin, donde generalmente es
utilizado para validar ciertos campos de la pantalla.

Screen Exit

Un Screen Exit se utiliza para agregar nuevos elementos a una dynpro de


un programa estndar, ya sea campos, textos, botones, etc. Los Screen Exits son
definidos en reas especiales llamadas Subscreens.

Menu Exit

Un Menu Exit permite agregar una transaccin dentro de un men


estndar de SAP.

Business Transaction Events (BTE)

Un BTE (Business Transaction Events) es un evento dentro de una


transaccin que se puede utilizar validar datos o para el agregado de Mdulos de
Funcin.

Include o Append a tablas transparentes

Los Include en tablas transparentes permiten agregar nuevos campos a


tablas transparentes estndares, como tambin a tablas Z.

Keyword Exit

Los Keyword Exit permiten cambiar la descripcin breve de un elemento


de datos, sus etiquetas o denominaciones y la documentacin que presenta SAP
al presionar F1 sobre el elemento de datos.

User Exit
Un User Exit, o tambin llamado Customer Exit, es un punto dentro de un
programa en donde se puede llamar a un programa propio. Los User Exit se programan
en mdulos de funciones definidos de acuerdo al programa al cual va a ser referido.
Algunos programas estndares tienen dentro de su cdigo, llamadas a mdulos
de funciones que pueden ser modificados por el programador.
Los User Exit son llamados dentro de los programas estndares por un nmero.
Este nmero es la terminacin del nombre del mdulo de funcin que est asociado al
programa. En la tabla MODSAP se encuentran todos los mdulos de funcin que se
utilizan para User Exit.

99
Los mdulos de funcin tienen una nomenclatura estndar: EXIT_nombre del
programa_nmero de funcin. Ejemplo: EXIT_SAPMV45A_002.
Por ejemplo el programa SAPMV45A llama al mdulo de funcin
EXIT_SAPMV45A_003 pasndole ciertos parmetros y tomando otros como resultado
de la ejecucin del mismo.

CALL CUSTOMER-FUNCTION '003'


EXPORTING
XVBAK = VBAK
XVBUK = VBUK
XKOMK = LVS_KOMK
IMPORTING
LVF_SUBRC = LVF_SUBRC
TABLES
XVBKD = XVBKD
XVBFA = XVBFA
XVBAP = XVBAP
XVBUP = XVBUP.

Lo importante de esto es saber si sirve para lo que se quiere hacer. Saber cundo
se ejecuta, qu datos utiliza, qu hace luego con los datos que devuelve. No siempre
pueden ser utilizados los User Exits como se pretende ya que no cumple con todas las
condiciones que se quiere.

3.1) Ventajas
El User Exit es una buena herramienta para agregar funcionalidad nueva a un
programa estndar como puede ser una validacin o la ejecucin de rutinas de
control sin modificar el cdigo original.
Para transportar y activar los User Exit es suficiente con el Include nuevo
nicamente, sin tocar el programa original.

3.2) Desventajas
No siempre se ajusta el User Exit a las necesidades del programador ya que los
objetos que importa o exporta son fijos y pueden no tener todos los objetos que
se requieren.
No existe una bsqueda de User Exit por programa con una aclaracin amplia de
su utilizacin, para buscarlos hay que realizar una bsqueda del string CALL
CUSTOMER-FUNCTION dentro del programa control estndar y su
funcionamiento se prueba sin saber exactamente si es el correcto para lo que se
quiere hacer.

3.3) Pasos para realizar un User Exit

1) Ir a la transaccin SMOD, que es la que maneja las ampliaciones en SAP. En


esta transaccin se debe completar el nombre de la ampliacin que contiene el mdulo
de funcin a utilizar por el User Exit.
Si no se conoce el nombre an, hay que ir a la transaccin SE16, con la tabla
MODSAP, campo MEMBER completar con el nombre del mdulo de funcin a buscar

100
(Ejemplo EXIT_SAPMV45A_003). El campo NAME nos dir la ampliacin que la
contiene.
Si tampoco se conoce el mdulo de funcin especfico, debe buscarse en el
cdigo del programa estndar las llamadas a funciones de usuario, que generalmente
estn como CALL CUSTOMER-FUNCTION 001. El nmero del final puede ir
cambiando si presenta ms de una llamada, es decir varios User Exit.
Una vez que se tiene el nombre de la ampliacin, en este ejemplo V45A0003,
colocarlo en el campo Ampliacin de la transaccin SMOD y presionar Visualizar.

2) Presionando el botn Componentes (o habiendo seleccionado la opcin


Componentes de la pantalla anterior), se visualizarn todos los mdulos de funciones
que contiene esta ampliacin.

En este caso existen dos mdulos de funcin. Cada uno va a ser ejecutado en
algn momento determinado de la ejecucin del programa al cual pertenecen, en este
caso SAPMV45A.

101
3) Una vez que ya se sabe qu modulo de funcin usar se debe hacer doble clic
sobre el mismo y derivar a otra pantalla, en la cual se puede ver qu objetos importa y
exporta esta funcin, como as tambin las tablas que importa y que pueden
modificarse, los cuales se utilizarn en el cdigo fuente.
En la solapa Cd.fte. se encuentra un Include Z que se utiliza para agregar el
cdigo del usuario. Si este Include no existe al hacer doble clic sobre el mismo pedir al
usuario que le asigne una orden de transporte para poder generarlo. Una vez creado es
posible codificar utilizando todos los objetos que figuren en la solapa de Import,
Modific., y Tablas, pudiendo devolver resultados modificando los objetos que se
encuentran en las solapas Export, Modif. y Tablas.

4) Una vez terminada la codificacin, la ampliacin debe activarse e incluirse en un


proyecto. Los proyectos son creados en la transaccin CMOD. All se debe generar un
proyecto Z en el cual se incluirn las ampliaciones que se desee.

102
5) En la seccin Asignacin Ampliacin se colocan todas las ampliaciones que
integrarn el proyecto. Simplemente se completa cada lnea con una ampliacin.

6) El ltimo paso a seguir es activar el proyecto con todas sus ampliaciones. Para
esto se debe presionar el botn Componentes ir al men Proyecto y seleccionar la
opcin Activar.

103
Field Exit
Los Field Exit se utilizan para relacionar un campo de una dynpro de un
determinado programa con un cdigo de programa o mejor dicho con una funcin. El
nexo de unin entre la funcin y el campo es a travs del elemento de datos de dicho
campo.
Los Field Exit generalmente se utilizan para validar los campos de una dynpro
sin modificar el cdigo fuente del programa en el cual est funcionando. Su codificacin
se realiza aparte. El Field Exit se codifica por elemento de datos y luego se asocia a un
programa y a una dynpro en particular. El cdigo es ejecutado automticamente al dar
ENTER sobre la dynpro que tiene el campo especfico, al pasar de pantalla (o salir de la
pantalla) o en algunos casos al presionar el botn Grabar de la dynpo.
En la transaccin SE37, biblioteca de funciones, y colocando field_exit_* y
luego pulsando F4 nos saldrn todos los Field Exit del sistema.
Una de las desventajas del Field Exit es que no se puede hacer un DEBUG al
cdigo, la forma de hacerlo es ir colocando mensajes (MESSAGE) dentro del cdigo
para ir viendo por donde pasa dentro del cdigo y qu valores est manejando.

4.1) Ventajas
Facilita la validacin de campos en un programa estndar sin modificar el
cdigo original.
Puede utilizarse el mismo cdigo para varias transacciones.
Se puede aplicar globalmente (para todos los programas) o para determinados
programas y dynpro que se le asignen.

4.2) Desventajas
Toma de la dynpro (Import) un solo valor, que es el del campo al cual hace
referencia, por lo que no se pueden utilizar tablas internas especficas del
programa estndar en el cdigo del Field Exit.
El mismo cdigo del Field Exit tiene que servir para todos los programas que se
quieran utilizar, por lo que se tiene que especificar en el cdigo que accin
tomar de acuerdo al programa en el cual se est ejecutando.
No es posible hacer un Debug del cdigo del Field Exit de forma directa, a
travs de un Breakpoint. Para esto se utilizan mensajes de error para ir viendo
que valores va tomando los diferentes objetos (variables, tablas, etc.) y por
donde va pasando dentro del cdigo del Field Exit.

4.3) Pasos para realizar un Field Exit

1) El primer paso para realizar un Field Exit es ir a la transaccin CMOD (Gestin


de proyectos de ampliaciones SAP) y ejecutar la transaccin PRFB dentro de la CMOD,
sin anteponer /N.

104
2) En esta transaccin se encuentran todos los Field Exits del sistema, pudiendo ver
tambin si estn activados a nivel Global (para todas las transacciones) o tienen algn
programa y dynpro asignados.

3) Para crear un nuevo Field Exit se debe ir al men Exit campo y seleccionar la
opcin Crear. All pedir el elemento de datos al cual estar relacionado el Field Exit.
Este elemento de datos debe ser el mismo que tiene el campo de la dynpro al cul se
quiere relacionar.

Este dato se obtiene presionando la tecla F1 sobre el campo de la dynpro y luego


presionando el botn Informacin tcnica .

105
4) Al colocar el elemento de datos y dar ENTER aparece la dynpro de biblioteca de
funciones (SE37) con la funcin FIELD_EXIT_CHARG_D, del elemento de datos que
se quiere crear.

Al presionar el botn Crear aparece una nueva pantalla en la cual se debe


colocar un Grupo de funciones y un Texto breve del Field Exit.

106
5) Una vez creado va a aparecer en la pantalla de la transaccin PRFB. Para poder
codificar seleccionar el check box correspondiente al elemento y presionar el botn
Tratar MF. ste derivar a la transaccin SE37 para poder modificar la funcin.
Este mdulo de funcin tiene la particularidad de tener un parmetro de Import o
entrada y uno de Export o salida. El parmetro de entrada es INPUT y contendr el valor
del campo al cual se ha asignado el Field Exit (recordar que un Field Exit se relaciona
con un elemento de datos y con un programa y dynpro).
El parmetro de salida OUTPUT es el valor que tomar el campo al salir del
Field Exit.
Si en la funcin no se quiere modificar el campo donde esta colocado el Field
Exit entonces al principio de todo se debe escribir: OUTPUT = INPUT para devolver el
mismo valor que se ingres.
Dentro del mdulo de funcin slo se pueden trabajar con estos parmetros, pero
si se quiere obtener valores de otros campos de la dynpro se puede utilizar otros Field
Exits en los cuales se utilizar el comando SET PARAMETER para poder grabar en
memoria al valor del campo y utilizarlo en el Field Exit anterior tomndolo de memoria
con GET PARAMETER.
Otra opcin es utilizar la Funcin GET_DYNP_VALUE para obtener valores de
otros campos de la dynpro.

6) Una vez terminada la codificacin se debe asignar un programa y dynpro al Field


Exit (si no se quiere hacer Global para todos los programas).
Para eso se debe ir a la pantalla de administracin de Field Exit (CMOD -
PRFB), seleccionar el Field Exit y presionar el botn Asignar proa./dynpro.

107
Este esta pantalla se solicita el nombre del programa y la dynpro. Se pueden
asignar varios programas y dynpro al mismo Field Exit.
Otra de las desventajas del Field Exit, adems del que se puede hacer un Debug
es que el mismo mdulo de funcin debe servir para todos los programas, por lo que si
debe funcionar para varios programas se debe preguntar dentro del mismo cdigo, en
qu programa o transaccin se encuentra para actuar de una forma u otra.

7) El ltimo paso es activar el Field Exit, para esto se debe seleccionar el elemento
de datos correspondiente, ir al men Exit campo y presionar la opcin Activar.

Screen Exit
Un Screen Exit se utiliza para agregar nuevos elementos a una dynpro de un
programa estndar, ya sean campos, textos, botones, etc. Los Screen Exits son
definidos en reas especiales llamadas Subscreens.
Al igual que los User Exits, no todas las dynpro estndares tienen subscreen para
poder introducir cambios. Los Screen Exits tambin se incluyen dentro de
ampliaciones o enhancements.

5.1) Ventajas
Permite agregar funcionalidad a un programa incluyendo nuevos elementos a
una dynpro estndar tales como textos, campos, botones, etc.
No altera la funcionalidad del programa estndar original.

108
5.2) Desventajas
No todos los programas estndares tienen Screen Exit como para realizar estas
mejoras.
El espacio que se destina para la subscreen nueva es limitado, por lo que no se
pueden agregar campos indiscriminadamente en la pantalla.

5.3) Pasos para realizar un Screen Exit


1) Crear un proyecto en la transaccin CMOD. A este proyecto Z se le agregar la
ampliacin que contiene el Screen Exit. Para eso se debe entrar desde la CMOD con la
opcin Asignacin ampliaciones cliente o presionar el botn Asignacin ampliacin.
Por ejemplo la ampliacin QQMA0001.

Si se hace doble clic sobre la ampliacin se pasa a la pantalla que detalla los
componentes del mismo. En este caso existen dos User Exit y tres Screen Exit.
En la seccin mbitos dynpros se ubican los Screen Exits, detallando el
programa, dynpro y rea que llama al Screen Exit y el programa y dynpro que va a
contener la subscreen nueva.

109
2) Una vez que se determina cul es la dynpro a crear se ejecuta la transaccin
SE80 y se completa el nombre del programa que va a tener la subscreen. Por ejemplo
SAPLXQQM.

110
Para crear la nueva dynpro hacer clic derecho sobre el objeto principal, en este
caso XQQM y seleccionar Crear / Dynpro. All pedir el nmero de dynpro a crear. En
este caso la 0100. Se completa la descripcin de la dynpro y en Tipo de dynpro se debe
colocar Subscreen.

Luego se graba, colocando una orden de transporte y as aparecer la nueva


dynpro en la lista de objetos del programa.

3) Dentro de esta nueva dynpro se podrn colocar nuevos elementos que integrarn
la dynpro estndar que la llamar. La programacin de la misma se realizar a travs del
PAI y PBO de la dynpro subscreen y en algunos casos dentro de los mdulos de
funcin (User Exit) que contiene la ampliacin que incluye el Screen Exit en cuestin.
En el ejemplo seran EXIT_SAPMIWO0_008 y EXIT_SAPMIWO0_009.

4) Una vez terminado, se debe activar el proyecto y sus componentes para que
tome efecto la llamada al Screen Exit junto con su lgica de procesamiento. Para esto se
debe ir a la transaccin CMOD, presionar el botn Componentes para ver todos los
componentes que tiene el proyecto y elegir dentro del Men Proyecto la opcin Activar.

111
Menu Exit
La ampliacin de tipo Menu Exit permite agregar una transaccin dentro de un
men estndar de SAP. Estas transacciones pueden estar vinculadas a algn
determinado programa pero sern ubicadas dentro del men SAP, en una posicin
especfica.

6.1) Ventajas
Poder agregar programas Z dentro de un men estndar de SAP sin tener que
estar ubicndolo dentro del men, a travs de la transaccin SE43, tan slo con
crear la transaccin y asignarle un programa.

6.2) Desventajas
No se puede cambiar el cdigo de la transaccin que vincula el Menu Exit.
Son limitados los Menu Exits disponibles por SAP y ya tienen asignados lugares
especficos dentro del men.

6.3) Pasos para realizar un Menu Exit


1) Crear un proyecto a travs de la transaccin CMOD. Poner un nombre y
presionar el botn Crear.

112
2) Al entrar, ir a la pantalla de Asignacin ampliacin y completar con las
ampliaciones que se desean incluir. Por ejemplo CUST6, que contiene el Menu Exit
MENUS000 con el cdigo de transaccin +C06. Luego grabar.

3) El paso siguiente es activar el proyecto, en la seccin Componentes.

4) Luego hay que crear la transaccin especfica para incluirla en el men de SAP.
Esto se hace en la transaccin SE93, en este ejemplo el cdigo de la transaccin es
+C06. Todas las transacciones utilizadas para Menu Exit empiezan con +.

113
5) Luego aparecer una pantalla preguntando que tipo de transaccin se desea
crear. Para este ejemplo se utilizar la opcin Programa y dynpro (transaccin de
dilogo).

6) All se deber completar con el nombre del programa y dynpro inicial que tendr
la nueva transaccin. Luego grabarla.

114
7) Por ltimo queda por cambiar la descripcin de la transaccin para que aparezca
en el men con un nombre apropiado. En la transaccin SE43 se debe completar el
Men mbito al cual pertenece el Menu Exit, que se determinar del nombre del
componente de la ampliacin. En el ejemplo el componente se llama MENUS000. Por
lo tanto el Men mbito es S000.

115
8) All hay que presionar el botn Modificar y en la pantalla siguiente Modif. A
continuacin se debe buscar el nuevo Men y presionar el botn Modificar nodo para
poder cambiarle la descripcin del men.

9) Una vez terminado aparecer en el men de SAP.

116
Include en tablas transparentes
Los Include en tablas transparentes son otro de los tipos de ampliaciones
utilizados en SAP, en este caso para poder agregar nuevos campos a tablas transparentes
estndares, como tambin a tablas Z.
Como SAP no permite agregar campos a las tablas transparentes estndares, se
ofrece la solucin de anexar una estructura Z a la tabla. Para ello se debe crear primero
una estructura Z con los campos deseados y luego se hace un Append a la tabla. Luego
de esto se puede grabar o consultar a los nuevos campos de la tabla transparente como
cualquier otro campo estndar.

8.1) Ventajas
Permite ampliar una tabla estndar agregando nuevos campos ante la necesidad
del negocio.

8.2) Desventajas
Es un poco tedioso borra campos del Include o borra totalmente el Include a la
tabla, ya que debe adaptarse la tabla a los cambios.

117
8.3) Pasos para realizar un Include a Tabla Transparente
1) Abrir la tabla transparente a la cual se quiere agregar los campos adicionales. En
este caso la tabla MARA.

2) Luego se debe presionar el botn Estr.append para agregar una estructura


nueva a la tabla transparente. Esta estructura va a ser completada con los campos que se
desee y la tabla transparente va a tomar todos los campos de la estructura como propios.

All aparecer una pantalla preguntando el nombre de la estructura que se desea


crear, en este caso ZAPPENDMARA.

118
3) En la pantalla siguiente se completan los campos de la estructura con sus
elementos de datos, luego debe activarse. Solicitar una clase desarrollo y una orden de
transporte. Adems debe activarse la tabla transparente.

Una vez activado aparecen los nuevos campos en la tabla transparente a la cual
se le agreg la estructura.

De esta manera tambin se pueden agregar campos a la estructura sin ninguna


restriccin, incorporndolos a la vez a la tabla transparente a la cual se le agreg el
Append.
5) Si se desean quitar campos de la estructura, se deben borrar de la estructura,
grabarla y luego ir a la transaccin SE14 para ajustar la tabla transparente a los cambios
realizados.

119
En la transaccin SE14 se completa el campo Objeto con el nombre de la tabla a
la cual se le agreg el Include y se presiona el botn Tratar.

120
En la pantalla principal de la SE14 se debe presionar el botn Activar y adaptar
base de datos. Una vez completado el proceso se debe activar la estructura.
En el caso de que se quisiera quitar por completo el Include con todos sus
campos en la transaccin SE11, se debe completar el campo Tabla base de datos con el
nombre de la estructura y presionar el botn Borrar (Icono Tacho de basura). All
aparecer un mensaje de advertencia diciendo que se borrar la estructura Append y que
luego se debe adaptar la tabla en la cual se hace referencia. Para continuar presionar el
botn Borrar.

Por lo tanto despus se debe ir a la transaccin SE14 y adaptar la tabla


transparente (MARA) como se explic anteriormente.

121
Transacciones relacionadas

SMOD Ampliaciones SAP (User Exit, Screen Exit, Menu Exit, Include en
Tablas transparentes)

CMOD Gestin de proyectos de ampliaciones SAP (User Exit, Field Exit,


Screen Exit, Menu Exit, Include en Tablas transparentes)

PRFB Field Exit para los elementos de datos (Field Exit)

SPRO Customizing (BTE)

SE37 Biblioteca de funciones (Field Exit, BTE)

SE93 Actualizar transaccin (Menu Exit)

SE43 Actualizar men de mbito (Menu Exit)

SE14 Diccionario ABAP Utilidad para base de datos (Include en tablas


transparentes)

SE80 Object Navigator (User Exit, Screen Exit, BTE, Menu Exit)

SE11 Diccionario ABAP

122
Enhancement-Point

Se puede insertar codigo en distintos puntos del programa estandar

- Donde se declaran las tablas.


- Dentro de cada estructura de las tablas internas para insertar nuevos campos.
- En modulos de funciones.
- Al principio y al final de cada FORM.

Con todo esto se puede ver que tenemos casi a nuestra disposicin todo el cdigo de
cualquier programa.

Para ello vamos a:

Tratar -> Operaciones ampliacin -> Insertar puntos de ampliacin implcitos

123
Una vez marcados todos los puntos de ampliacin, solo tenemos que ponernos encima
de la lnea deseada y seleccionamos:
Tratar -> Operaciones ampliacin -> Crear

124
125

También podría gustarte