SlideShare una empresa de Scribd logo
1 de 125
Descargar para leer sin conexión
1
ABAP
Funcionales
2
Índice
Unidad 1 ......................................................................................................................... 4
Introducción 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
Creación de Paquetes (Ex Clase de desarrollo).......................................... 8
Introducción al Lenguaje de Programación ABAP. ................................... 9
Crear un Programa ABAP. .............................................................................. 11
Activación 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: Transacción............................................................................. 15
Estructura de un Programa ABAP ............................................................ 16
Unidad 2 ....................................................................................................................... 17
Introducción al Diccionario ABAP ............................................................ 17
Ejercicio 1: Ingresar a la transacción SE11 y visualizar la tabla SCARR.
...................................................................................................................... 19
Unidad 3 ....................................................................................................................... 20
Introducción a los Eventos ABAP............................................................. 20
Unidad 4 ....................................................................................................................... 23
Elementos Básicos del Lenguaje ABAP................................................... 23
Trabajando con DATA OBJECTS .................................................................. 23
Data Types y Data Objects.............................................................................. 23
Sentencias básicas ABAP............................................................................... 26
Sentencias Condicionales............................................................................... 28
Sentencias LOOPS o repetitivas. .................................................................. 29
Creación de Mensajes...................................................................................... 29
Trabajando con ABAP Debugger................................................................. 31
Selection Screen......................................................................................... 32
Declarando campos como parámetros..................................................... 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 Información.................................................................................. 49
Leyendo Múltiples Tablas de Base de Datos............................................. 52
Ejercicio 1: Estructuras y Tablas .............................................................. 53
. Unidad 6 ..................................................................................................................... 54
Subrutinas en ABAP................................................................................... 54
3
Subrutinas ........................................................................................................... 54
Ejercicio 1: Listas - Subrutinas - Eventos ................................................ 59
. Unidad 7 ..................................................................................................................... 60
Procesamiento de Lista Clásica................................................................ 60
La lista .................................................................................................................. 60
Pantalla de Selección ................................................................................. 68
Ventajas de las pantallas de selección..................................................... 68
Declarando Campos con Select Options .................................................... 74
Diseño de pantallas de selección 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: Creación y llamadas a Grupo de Funciones y a Módulos de
Funciones.
1. Creación de Grupo de Funciones
2. Creación de Módulos de Funciones
3. Implementación 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. Ampliación de Tablas SAP
6. Ampliación del Menú SAP
4
Unidad 1
Introducción a ABAP Workbench
Repositorio Navegador de Objetos
El repositorio consta de todos los objetos de desarrollo del sistema: los programas, módulos de
función, 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 también contiene tablas de aplicación y customizing,
que suelen ser específicos del cliente, es decir, que tienen un columna de cliente.
5
El Repositorio es Cross Aplication, o sea que los programas no están divididos por modulo. La
única diferencia entre los programas son las tablas de donde toman la información.
Buscar Objetos en el Repositorio.
La transacción para acceder es la SE80.
6
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 transacción SE80 y ahí oprimimos el botón 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 producción 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 transacción 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 navegación para mostrar una lista de objetos jerárquica.
7
 Un área de herramienta para visualizar y editar un objeto mediante el desarrollo de la
herramienta adecuada.
Puede mostrar u ocultar el área de navegación. (Pantalla completa on / off).
En ambas áreas, usted puede elegir las funciones mediante un menú contextual, que
se acceso mediante el botón derecho del ratón. El menú contextual ofrece sólo las
funciones que han sido diseñados para el objeto en cuestión.
8
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 producción) 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.
Creación de Paquetes (Ex Clase de desarrollo)
1. Navegue hasta el Navegador de Objetos SE80. Ahora tiene dos opciones:
a) En el área de navegación, seleccionar tipo de objeto paquete y entrar en el nombre del
paquete en el campo de abajo. (Asegúrese 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 Edición de objetos en la pantalla inicial de la SE80. En el cuadro de diálogo,
Busque la opción de especificar un paquete y entrar en el nombre del paquete. Después, haga
clic en el botón para crear el objeto (F5).
9
2. Pasos para crear un paquete: Atributos.
Componente De Aplicación: 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 estándar. Si se utiliza el control de transporte ampliado, se podrán
asignar capas de transporte estándar diferentes a determinados mandantes.
Se puede definir como máximo un destino de consolidación 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 estándar, se precisa
la autorización de gestión del Change and Transport System.
3. Asignarle una Orden de Transporte al paquete:
Introducción al Lenguaje de Programación ABAP.
ABAP (Advanced Business Application Programming) es un lenguaje de cuarta generación,
propiedad de SAP, que se utiliza para programar la mayoría de sus productos.
Utiliza sentencias de Open SQL para conectarse con prácticamente 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 programación.
ABAP fue desarrollado por SAP como lenguaje de informes para SAP R/2 en los años 80, una
plataforma que permitía a las grandes corporaciones construir aplicaciones de negocios para
gestión de materiales y finanzas. ABAP, muy parecido al COBOL en sus orígenes,
originalmente significaba Allgemeiner Berichtsaufbereitungsprozessor, palabras alemanas para
procesador genérico para la preparación de informes. En sus inicios ABAP incluía el concepto
de Bases de datos lógicas, que suministraba un alto nivel de abstracción para el acceso a
bases de datos.
ABAP fue pensado como un lenguaje de programación para que los usuarios finales pudieran
manipular la información, 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 versión 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 básicas estaban escritas en ABAP. En 1999, con el lanzamiento de la
10
versión 4.6 de R/3, SAP lanzó una extensión orientada a objetos denominada ABAP Objects.
La versión más 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 programación.
La programación ABAP no distingue entre mayúsculas y minúsculas. 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.
11
Hay varias variables de sistema las mas importantes son las siguientes:
SY-SUBRC: Determina el estado de finalización de una acción.
SY-DATUM: Fecha del día.
SY-UZEIT: Hora del día
Crear un Programa ABAP.
1. Navegue hasta la transacción SE80. Hay tres opciones disponibles:
a) En el área de navegación, 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 diálogo 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 código fuente se distribuye a varios
programas.)
3. Cambiar el título 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 más detalles.
12
Activación 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.
13
Barra de botos del Editor ABAP
Cambiar De Editable a Visualización
Cambiar de Activo a Inactivo
Cambiar de Programa
Chequear Sintaxis
Activar un Programa
Ejecutar un Programa
Tabular el programa y poner en mayúscula palabras claves
Crear Transacciones
Una Transacción 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 transacción SE80 o la
SE93, de la siguiente manera.
Botón Derecho del
Mouse
14
15
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 código propuesto por el instructor.
Ejercicio 3: Transacción
2) Crear una Transacción y asociarla al Programa creado.
16
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.
…..
…..
17
Unidad 2
Introducción al Diccionario ABAP
El Diccionario ABAP permite la gestión 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 Módulos de Función y en
objetos de base de datos como tablas, índices y vistas.
El Diccionario ABAP también ofrece una serie de servicios que apoyan programa desarrollo.
Por ejemplo, el establecimiento y la liberación de los cierres, la definición de un Ayuda de
entrada (F4 de ayuda), y adjuntar una ayuda de campo (Ayuda F1) a un campo de pantalla se
apoyo.
La transacción para ingresar al diccionario es SE11
18
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 definición de una tabla o
vista base de datos son también automáticamente realizados en la base de datos.
Hay diferentes categorías en el Diccionario ABAP:
Elemento de Datos: Determina la descripción 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
Antigüedad Etc.
Estructura: Z_DATOS_PERSONALES
Nombre
Apellido
Teléfono
El Diccionario ABAP esta integrado activamente en el desarrollo y ejecución
de programas. Cada cambio tiene efecto inmediato en los programas y pantallas ABAP.
19
Ejercicio 1: Ingresar a la transacción SE11 y visualizar la tabla SCARR.
20
Unidad 3
Introducción a los Eventos ABAP
ABAP es un lenguaje de programación 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 (asignación de memoria). Después de eso,
en tiempo de ejecución se desencadena varios acontecimientos en sucesión. 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 selección,
previo a que esta sea mostrada. Este proceso se ejecuta desde que se lanzo la
transacción y hasta que se muestra la pantalla de selección.
2. AT SELECTION-SCREEN
Es utilizado para valida los datos ingresados en la pantalla y para validar
niveles de autorización. Es lanzado siempre que se oprime ENTER en la
pantalla de selección o cuando se oprime F8.
3. START-OF-SELECTION
Es utilizado para la ejecución completa del programa. Es lanzado luego de
oprimir F8. Es recomendable utilizar Subrutinas para la ejecución del código.
21
El ejemplo dado a continuación, contiene una pantalla de selección 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 día
de la semana siguiente (pa_date = pa_date + 7.).
En el mismo gráfico se muestra cómo el sistema de ejecución reacciona cuando un bloque
falta. Simplemente, no hay instrucciones ejecutadas por el correspondiente y se continua con el
evento siguiente.
Si no hay ningún evento implementado dentro del programa, asume que todas las sentencias
corresponden al STAR-OF-SELECTION.
Además de los eventos ya mencionados existen otro que veremos más adelante en este
mismo manual. Ej. AT LINE-SELECTION, este evento se ejecuta cuando el usuario hace doble
clic en una lista.
22
Este evento puede ser utilizado, por ejemplo, para mostrar la información detallada del registro
seleccionado en la lista.
Además 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.
…..
…..
23
Unidad 4
Elementos Básicos del Lenguaje ABAP
Trabajando con DATA OBJECTS
Data Types y Data Objects
El tipo de datos de un objeto define técnicamente y semánticamente sus atributos.
Vamos a echar un vistazo a los tipos estándar 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
24
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 más información de los tipos de datos ABAP ir a la documentación de las sentencias
DATA y TYPES oprimiendo F1 sobre dichas palabras reservadas.
Veamos a continuación 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 capítulo podremos ver como declarar internamente en nuestros programas cada uno
de los tipos de datos.
Los datos tipos de datos globales se podrán ver en el curso de Diccionario de Datos.
Hay 3 tipos de categorías 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.
25
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) carácter.
26
Ejemplo: DATA: MYVAR.
En este ejemplo al faltar el tipo de datos y la extensión, se asume un CHAR de 1 carácter.
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
contraposición los tipos de datos globales pueden ser usados por todo el sistema, además de
las siguientes ventajas:
 Proporcionan la ventaja de la reusabilidad y mantienen la consistencia del sistema.
 En el diccionario ABAP usted tiene la opción de utilizar where-used list para mediante
referencia de utilización ver donde se usa.
 Se pueden modificar los tipos de datos sin tocar el código ABAP.
Sentencias básicas ABAP
27
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 disposición de los objetos de datos definidos
en el programa. Todos los Data Objects son asignados previamente con el valor inicial del tipo
específico, excepto si un valor diferente fue pre-asignado mediante la sentencia VALUE.
Usted puede utilizar la instrucción 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 podría haber un
conflicto de tipos. En este caso, la conversión de tipos se realiza de forma automática.
La sentencia CLEAR borra el contenido de la variable.
En ABAP podrás utilizar sentencias aritméticas.
 + SUMA
 - RESTA
 * Multiplicación
 / División
 ** Exponencial
28
Sentencias Condicionales
En ABAP usted tiene 2 maneras de ejecutar diferentes secuencias de sentencias, dependiendo
de las necesidades.
 En la construcción IF puede definir cualquier expresiones lógicas como las condiciones
de verificación. Si se cumple la condición, el sistema ejecuta el bloque de instrucciones
correspondiente. De lo contrario, la condición 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 información detallada
sobre la formulación de una expresión lógica consulte la documentación de la palabra
clave en la instrucción 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 comparación es incorrecta, el sistema
ejecuta la rama OTHERS si está disponible. A excepción del primer WHEN, los demás
son opcionales.
En ambas sentencias la secuencia de comparación es de arriba hacia abajo. Apenas encuentre
una coincidencia ejecuta esa parte del código y luego salta hasta el ENDIF o el ENDCASE.
29
Sentencias LOOPS o repetitivas.
DO.
IF <condición>.
EXIT.
ENDIF.
ENDDO.
DO n TIMES.
Sentencias ABAP
ENDIF.
WHILE <condición>.
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 número de vuelta que se está ejecutando. Por lo tanto, consultar este
campo del sistema sólo tiene sentido dentro de un bucle. En bucles anidados, SY-INDEX
contiene siempre el número de vuelta del bucle en el que se encuentra.
La sentencia DO ENDDO, solo tiene sentido si colocamos la palabra reservada EXIT con
alguna condición que amerite salir.
La sentencia WHILE ENDWHILE, se va a ejecutar siempre que la condición sea verdadera,
para salir tendremos que cambiar el valor de la condición.
La sentencia SELECT y la sentencia LOOP se utilizan para recorrer tablas, la primera tablas de
base de datos y la segunda tablas internas.
Creación de Mensajes.
Para crear mensajes se utiliza la transacción 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 código sino dentro de esta clase de mensajes en donde también se los
puede traducir y que tomen el idioma que el usuario esta logueado.
30
Dentro de nuestro programa ABAP con el botón PATRON podremos agregar nuestro mensaje
en el código.
A continuación vemos los distintos tipos de mensajes que podemos seleccionar.
31
Usted utiliza la instrucción MENSSAGE para enviar mensajes de diálogo a los usuarios de su
programa. Al hacer esto, debe especificar el número de tres dígitos y la clase de mensaje.
Mensaje número 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 código de mi programa. Esto nos va a proporcionar que
frene en es punto nuestro programa en tiempo de ejecución.
Colocando la sentencia /h en el cuadro de comando y dándole ENTER. Esto activa el modo
debug y va a empezar a debuggiar a partir de ese punto.
Ya dentro de la aplicación para debuguiar podremos utilizar las teclas F5, F6, F7 y F8 para
ejecutar distintos comandos.
32
La tecla F5 nos permite avanzar paso a paso por nuestro código, o sea línea por línea de
código.
La tecla F6 nos permite saltear Subrutinas, Módulos de Función, ETC. Aclaro que igual se
ejecutan pero sin que veamos ese código de ejecución.
La tecla F7 nos permite regresar a la sentencia siguiente a una subrutina o un modulo de
función.
La tecla F8 nos permite finalizar la ejecución o pasar al próximo BreakPoint.
Selection Screen
Figure: Selection Screen: Overview
33
Las pantallas de selección sirven como interfaces entre el programa y el usuario. Se utilizan
para limitar la cantidad de información a leer de la base de datos.
Usted puede utilizar las palabras reservadas PARAMETERS y SELECT-OPTIONS, para
generar una pantalla de selección con parámetros de entrada.
Además de las pantallas de selección por defecto, usted puede crear pantallas de selección
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
selección que se utilizan en varias ocasiones. Estas variantes se pueden recordar para el uso
cuando están requeridas. Una variante es necesaria si un informe se ejecute en un proceso de
trabajo de fondo.
Declarando campos como parámetros.
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 selección. La cantidad de caracteres en el nombre no puede superar
los 8 caracteres. Los textos de los parámetros de selección se modifican en el menu: Pasar A --
> Elementos de Texto --> Textos de Selección.
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
automática. Si se declara campos obligatorios con la adición OBLIGATORY, los usuarios no
pueden salir de la pantalla de selección hasta que los valores se han especificado en estos
campos.
El Control automático por el Diccionario ABAP se apaga para pantalla de selección 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 válida.
34
Usted puede definir un parámetro como check Box (AS CHECKBOX). Esto crea un campo de
un carácter que puede contener los valores de blanco o X. Usted podrá evaluarlos usando las
sentencias IF/ENDIF.
Usted puede también definir una serie de botones de radio para una pantalla de la selección
con el GRUPO de la adición RADIOBUTTON GROUP. La longitud máxima del nombre para un
GRUPO de RADIOBUTTON GROUP es cuatro caracteres. Solamente un botón 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.
35
Ejercicio 1: Calculadora
Calculadora con 3 parámetros de selección. 2 para el ingreso de números y 1 para el
operando.
Luego con esa información imprimimos el resultado de la cuenta.
1) Declarar 3 parámetros de selección. 2 de tipo numérico y una alfanumérico.
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 división por cero.
6) Realizar la cuenta con un CASE
7) Imprimir el resultado.
36
Trabajando con Estructuras
En ABAP, usted puede definir estructuras. Esto le permite combinar variables de
diferentes tipos dentro de una unidad lógica 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.
37
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 información puede oprimir F1
sobre la sentencia TYPES.
También 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 razón usted no debe usar guiones en los nombres.
38
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, haciéndole doble click en la estructura podremos ver su
contenido.
39
Trabajando con Tablas Internas
Una tabla interna es un objeto que puede tener muchos registros de una misma estructura.
La cantidad de información 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
razón 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 típicas incluyen:
 Obtener información de la base de datos.
 Formatear información para una salida de reporte
 Formatear información para otros servicios (Ej. Subrutinas, Módulos de Función, Etc.)
Las siguientes propiedades definen una tabla interna por completo:
Line type
El tipo de línea 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 según
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 más apropiado uno u
otro tipo de tabla.
. Con STANDARD TABLES la fila de numeración (índice) se mantiene internamente.
Tanto el índice y los accesos principales son posibles.
40
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 automáticamente en orden ascendente
de los campos clave. También 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 gustaría
que la tabla se ordenan automáticamente por clave.
. Con HASHED TABLES los registros de datos se gestionan clave para un acceso rápido
mediante el procedimiento de hashing. Una clave única es requerida. Con las tablas hash sólo
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.
41
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.
42
Para el proceso de un solo registro de una tabla interna, siempre necesitara la creación de una
WorkArea con el mismo formato.
APPEND
Agrega el contenido de una workarea en una tabla interna. Esta operación 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 posición. En el caso de las tablas internas de tipo Sort y Hashed serán
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.
43
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 condición.
INSERT
Inserta el contenido de varios registros de una tabla interna a otra cuando se cumple
con la condición.
APPEND
Agrega los registros de una tabla interna a otra cuando se cumple la condición y
siempre que tengan el mismo formato.
44
Usted puede insertar un registro en un atabla interna agregando los datos en una WorkArea y
utilizando la sentencia INSERT. Según 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 número 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 impresión 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.
45
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 número 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.
46
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 también el espacio de memoria que ocupa.
En el debug, usted puede monitorear el contenido de una tabla interna.
47
El CON HEADER LINE además en la definición de la tabla interna le da la opción de crear una
tabla con la línea de cabecera. Cuando esto se hace un área de trabajo (línea de encabezado)
que se adapte a la tabla se crea automáticamente de modo que la definición adicional de la
misma no es necesaria. Esto también simplifica la sintaxis de los comandos de tabla, ya que el
sistema siempre se refiere al área de trabajo generados automáticamente, por lo que ya no
tiene que ser especificado explícitamente. A pesar de las ventajas mencionadas ya no desea
utilizar la tabla con líneas de cabecera, porque:
-El área de trabajo generados automáticamente tiene el mismo nombre que la tabla interna,
que no contribuye a hacer que el programa de lectura.
-Tablas con líneas de cabecera no están permitidos en:
-objetos de datos complejas (estructuras y tablas internas que tienen las tablas internas
como componentes).
- objetos ABAP (objeto de extensión orientadas de ABAP)
Sólo mencionar las tablas internas con líneas de encabezado aquí por algunos programas más
antiguos todavía los utilizan y tienes que trabajar con estos programas de vez en cuando. Es
por ello que las particularidades más de la línea de cabecera son los siguientes:
Si una tabla interna con la línea 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 situación
antes mencionada:
DATA itab1 TYPE TABLE OF scarr WITH HEADER LINE.
DATA itab2 LIKE itab1.
itab1 = itab2 . Sólo las operaciones con líneas de cabecera!
itab1[] = itab2[] . Las operaciones con cuerpo tabla
La siguiente sintaxis muy antigua también define una tabla interna con la línea de cabecera, a
pesar de que no se indica específicamente.
DATA: BEGIN OF itab OCCURS n,
field1 TYPE ... ,
field2 TYPE ... ,
... ,
END OF itab.
48
Ejercicio 2: Estructuras y Tablas
1) Declarar un parámetro de selección 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 parámetro de selección 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 información 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.
49
Unidad 5
Acceso a Base de Datos
Leyendo Tablas de Base de Datos
Obteniendo Información
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 dinámicamente a SQL Nativo, evitando problemas con futuros cambios de base
de datos.
El siguiente grafico no muestra de forma genérica como es la sentencia de acceso a Base de
datos.
SELECT: describe que campos de la tabla van a ser leídos.
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 información
que obtendremos de la Base de Datos.
WHERE: sirve para filtrar la información que queremos traer de la base de datos.
50
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 después 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)
51
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 leído, 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, asegúrese de que los tipos de campo correspondientes
son también los mismas, porque de lo contrario (como en la declaración MOVE), una
conversión (complicada) ocurre y es posible que los datos incompletos (causadas por cortes)
pueden ser transportados a los campos .
52
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
información 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 traídos 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 información de tablas con MANDT sin especificar el mismo, solo la
información 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,
debería definir un índice secundario por los campos accedidos en orden para agilizar el acceso.
Después de crear y activar un índice, la base de datos optimizara automáticamente 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
automáticamente. Optimiza todos los acceso que se realicen por todos o por parte de la clave.
Leyendo Múltiples 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 información usando componentes reusables:
. Logical databases: Base de datos Lógicas. (Programas de recuperación de datos que leer los
datos de las tablas que van de la mano jerárquicamente).
. Function modules: Módulos de Funciones. Son subrutinas guardadas en el sistema SAP
usando la encapsulación de funcionalidad.
53
. BAPIs: Módulos de Función que encapsulan Objetos de Negocio.
. Methods of global classes: Métodos de Clases Globales.
La información correspondiente a estas 4 formas se verán en las unidades correspondientes,
mas adelante.
Si no hay reutilización de componentes utilizables disponibles para su selección 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.
54
. Unidad 6
Subrutinas en ABAP
Subrutinas
Una subrutina es una unidad dentro de la modularización del programa donde se encapsula
una función en forma de código fuente. Usted saca una parte de un programa a una subrutina
para obtener una mejor visión de conjunto del programa principal y usar la secuencia
correspondiente en diversas ocasiones.
Usando subrutinas significa que su programa se vuelve mas fácil de mantener porque los
cambios de funcionalidad solo tienen que ser aplicados en la subrutina y no en varios puntos
de un programa. Además puede procesar una subrutina on debugg como una unidad y luego
ver el resultado, haciendo mas fácil encontrar un error.
Como muestra el siguiente grafico, puede llamar n veces a una misma rutina pasándole valores
diferente. Ose variables locales que no quiere que se modifiquen, sino que solo sean utilizadas
o modificadas en la rutina.
55
La asignación 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:
56
La llamada ala subrutina se realiza con la palabra reservada PERFORM. La ejecución 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.
57
Se debe especificar el tipo de datos de los objetos que se están 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.
58
59
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 parámetros de selección declarados
anteriormente, colocando el resultado en la tabla interna también declarada
anteriormente.
6) Por cada loop endloop imprimir por pantalla la siguiente información:
En el campo de la estructura percentage calcular el porcentaje de ocupación del avión.
(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ó ningún dato, imprimir un mensage advirtiendo eso.
9) Si el usuario realizo un doble click sobre una línea imprimir la siguiente información:
a. La guardada anteriormente con hide más:
b. Realizar un select a la tabla sbook, filtrada por carrid, connid y fldate. Guardar
dicha información 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.
60
. Unidad 7
Procesamiento de Lista Clásica
La lista
El objetivo principal de una lista es para mostrar los datos con un mínimo de esfuerzos de
programación. Las listas también se adoptarán las necesidades especiales de los datos
empresariales en cuenta:
-Las listas pueden ser diseñados en varios idiomas: Los textos y las cabeceras en la lengua de
inicio de sesión cada vez que una traducción correspondiente está disponible.
- Las listas pueden mostrar los valores monetarios en la moneda correspondiente.
Las siguientes opciones están disponibles cuando se programa una lista:
- Pantalla: Se puede añadir colores e iconos.
- Impresoras .
- Internet / Intranet: El sistema es capaz de convertir automáticamente 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 cálculo).
61
Figure: Standard List Functions
La lista estándar de interfaz gráfica 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. lección proporciona más información sobre este.
Figure: List and Column Headers
Cada lista puede tener una cabecera de línea única lista y hasta cuatro líneas de encabezados
de columna. Si no se define cabecera de la lista, el nombre del programa (breve descripción)
se utiliza como el encabezado.
Para el mantenimiento inicial de los titulos, primero debe activar su programa. A continuación,
crear la lista mediante la ejecución del programa. A continuación, puede mantener los
encabezados directamente encima de la lista mediante el menú Sistema → Lista → Lista de
cabecera.
62
La próxima vez que inicie el programa, aparecerá automáticamente 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 multilingües de las listas
Los elementos de texto de un programa - se incluyen también en la cabecera - se puede
traducir a diferentes idiomas. Cuando un usuario ejecuta un programa, los elementos
pertinentes de texto siempre se muestra automáticamente en el idioma de inicio de sesión
del usuario (automática de idioma).
Se trata de traducir los elementos de texto de su programa de elegir el menú Ir → Traducción
de la ABAP-Editor.
Para el diseño de textos en la lista del cuerpo en varios idiomas y utilizar el lenguaje
automático, símbolos de texto se utilizan. Un símbolo de texto se compone de un xxx ID de
tres dígitos alfanuméricos, así como un texto traducible y, como los encabezados,
pertenece a los elementos de texto de un programa. Hay dos opciones para definir los
símbolos de texto para su programa:. Desde el Editor de ABAP, seleccione el menú Pasar a →
→ Elementos de Texto Texto Símbolos o . dirección que el símbolo de texto en su código
fuente utilizando la sintaxis se describe a continuación y haga doble clic en su ID (navegación
hacia delante).
Desde su programa, la dirección en un símbolo de texto con texto-xxx. En tiempo de ejecución
el texto se inserta en la lengua de inicio de sesión del usuario si existe la traducción
correspondiente (ver. Traducción de los elementos de texto. Arriba).
Con el fin de especificar un símbolo de texto más intuitiva también puede utilizar la sintaxis
siguiente en lugar de TEXT-xxx: xxx'...'(). Aquí,'...' debe ser el texto del símbolo de texto en el
idioma original del programa.
Sugerencia: Tenga en cuenta que los elementos de texto también tiene que ser activado.
63
Figura: Generación de un Listado Básico
Lo anterior muestra gráfica de la generación de la lista básica como introducción a la lista de
detalles. Además de la instrucción WRITE, también puede utilizar SKIP y Uline a la estructura
de la lista. Consulte la documentación de la palabra clave de ABAP para estos dos
estados.
Figura: Generación de una lista de detalles
Cuando el usuario selecciona una lista de base por medio de doble clic en la tecla F2 o
función, el evento ABAP AT-LINE-SELECTION selección se ha disparado. Si usted quiere
tener la pantalla del sistema una lista con la información requerida detallado (lista interactiva)
como la respuesta a esta acción del usuario, a continuación, 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 declaración ESCRITURA. Los detalles
lista con los datos de salida, que. sobrescribe. la lista de base, se genera automáticamente. Al
64
pulsar el botón con la flecha. Verde. o la tecla de función F3, el usuario puede volver a la lista
de base y elegir otra fila.
Sugerencia: Si un bloque de AT LINE-SELECCIÓN se implementa en el programa, a
continuación, un botón con el símbolo de la lupa también aparece encima de la lista. Marcado
de la fila de la lista y luego elegir este botón tiene el mismo efecto que hacer doble clic en la
lista de fila.
Listas Figura: Generación de varios detalles
La selección de filas en la lista de detalles también desencadena el evento AT LINE-
SELECTION. Esto significa que el bloque de procesamiento correspondiente en el programa se
ejecuta en este caso también. Por lo tanto usted debe ser capaz de determinar dentro de este
bloque en el que la lista de la selección 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 básica, .1. para la lista de los primeros detalles, y
así sucesivamente.
El gráfico anterior muestra el valor de SY-lsind y como se establece en cada caso: Cada
selección de filas aumenta automáticamente 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-
selección (por ejemplo, por medio de una instrucción CASE).
Una declaración WRITE se ejecuta siempre en el nivel actual lista. Si no se genera la lista de
detalles de una selección de filas en el bloque de conducto AT, SY-lsind se reduce
automáticamente a uno. Posteriormente, el sistema muestra el mismo nivel en que la selección
se llevó a cabo la fila.
65
Figura: Ejemplo de sintaxis simple
El programa de ejemplo anterior tiene la siguiente función:
- En la lista básica, el texto. Básica 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 línea de la lista de detalles es segundo seleccionado, SY-lsind se incrementa a 3, pero
no hay una lista más información se genera. Por lo tanto sy-lsind se reduce automáticamente
en 1 y la lista de detalles segunda se muestra de nuevo.
Figura: Ejemplo de aplicación de una lista de detalles
El gráfico anterior muestra un ejemplo de aplicación de un programa con una lista básica y una
lista de detalles:
- Las conexiones de vuelo con datos detallados se debe mostrar en la lista básica. Se trata de
leer desde una tabla de base de datos SPFLI.
- En la lista de detalles, los planes de vuelo para la conexión 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 información pertinente para la lista de detalles
cuando una fila de lista de base se selecciona la fila seleccionada o por lo menos los valores
66
clave de la fila debe estar disponible para el evento AT LINE-SELECTION. Los gráficos
siguientes muestran cómo se puede implementar.
Figura: Almacenamiento en búfer de datos específicos 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 básica, los valores clave de interés 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 disposición de nuevo.
El registro específico de los valores fundamentales en el ámbito HIDE ocurre por medio de la
declaración HIDE (aquí: HIDE: wa_spfli-carrid, wa_spfli-connid.), Que debe ser ejecutado
inmediatamente después de la generación de cada fila lista de base. Cuando se selecciona
la fila, los valores clave de interés 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 selección se ha disparado.
El siguiente gráfico ilustra este.
Sugerencia: Usted no tiene a la salida de los campos HIDE con la declaración de
escribir primero. Esto significa: para cada fila de lista de base, también puede
almacenar información que no aparece en la lista básica en el área HIDE por medio de
la declaración HIDE. El campo HIDE también puede ser un "plano" estructura.
67
Figura: Flujo de datos para la selección de fila
Sugerencia: las listas de los detalles no han fijado encabezados estándar como listas básicas,
ya que pueden variar de forma dinámica. Por lo tanto, puede que tenga que aplicar sus propias
cabeceras utilizando instrucciones WRITE.
El siguiente gráfico muestra la totalidad AT LINE-SELECTION bloque del programa de ejemplo.
En este bloque, básicamente de datos (en este caso los horarios de vuelo) se lee y la
producción por medio de los valores HIDE que se han transportado a los campos de origen.
Figura: Fragmento de código fuente (Ejemplo de Aplicación)
68
Pantalla de Selección
Ventajas de las pantallas de selección
Figura: Arquitectura y efectos de selección de pantalla
En general, las pantallas de selección se utilizan para introducir criterios de selección para la
selección 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 sólo los de la base de datos. Además de reducir el
requisito de memoria, esto también reduce la carga de
red.
Figura: Pantalla de selección de atributos
69
La pantalla de selección tiene las siguientes funciones estándar:
-Textos sobre la pantalla de selección (textos de selección) se puede mantener en varios
idiomas. En tiempo de ejecución de los textos se muestran automáticamente en el idioma de
inicio de sesión del usuario. (Automática del idioma)
- El sistema verifica los tipos de forma automática: Si el usuario escribe algo que no se
corresponde con el tipo del campo de entrada, la interfaz gráfica de usuario SAP lo ignorará,
por lo que ni siquiera van a aparecer en la pantalla de selección.
- Además de las entradas solo valor (PARAMETERS), también se puede aplicar selecciones
complejas (SELECT-OPTIONS) en la pantalla de selección. 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 documentación (documentación del elemento de datos)
se pueden mostrar en el campo de entrada, utilizando la F1 (Ayuda para entradas) la tecla de
función.
- La ayuda del elemento de datos de búsqueda para mostrar las posibles entradas se
pueden llamar con el F4 (Ayuda para entradas) la tecla de función.
- Usted puede ahorrar fácilmente completado pantallas de selección de variantes para su
reutilización o el uso en el fondo la operación.
Figura: Uso de las opciones de selección
El gráfico anterior ilustra el uso de selection options, que permiten entradas complejas. Cada
pantalla de selección contiene un icono de información (también conocido como una ayuda "en
pantalla" icono). Seleccione este icono para mostrar información adicional.
70
Figura: Información sobre Tipos Semántica Mundial en la pantalla de selección
Si un campo de entrada se escribe con un elemento de dato, la siguiente información
semántica adicional está disponible en la pantalla de selección:
- La etiqueta del campo a largo del elemento de datos se puede copiar para describir el
campo de entrada en la pantalla de selección (selección de texto). (Véase el gráfico
siguiente). La documentación del elemento de datos está disponible automáticamente 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 búsqueda es un objeto independiente diccionario que muestra una lista de
posibles valores de entrada para el usuario (posiblemente con otra información), 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 información semántica del elemento de
datos está disponible en la pantalla de selección. Si el campo de la estructura también se copia
en un buscar ayuda, entonces esto. Sobrescribe. la ayuda de búsqueda del elemento de datos.
Para obtener más información, consulte la documentación en línea para el Diccionario ABAP.
Figura: Selección de Textos
71
En la pantalla de selección, los nombres de los campos de entrada aparecen como su
descripción de forma predeterminada. Sin embargo, puede reemplazarlos por los textos de
selección correspondientes, que luego se puede traducir a los idiomas más que usted
requiere. En tiempo de ejecución, los textos de selección son mostrados en la lengua de inicio
de sesión del usuario (automática de idioma).
Al igual que los encabezados de la lista y los símbolos de texto, textos de selección pertenecen
a los elementos de texto del programa. Desde el Editor de ABAP, seleccione el menú Ir GoTo
→ Text Elements→Selection Texts para su mantenimiento. Puede implementar su traducción
con el menú Ir →.Traducción (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 opción fácil para la normalización de los
textos.
Figura: Variantes
Las pantallas de selección efectuada son las variantes del programa. Después de que el
programa ha sido iniciado, el usuario puede cargar variantes a la pantalla de selección
respectivo para facilitar repetidas o casi idénticos entradas idénticas. Usted tiene que
incluir una variante cuando se programa un programa de ABAP en corrida de fondo, si el
programa tiene una pantalla de selección, como entradas de usuario no son posibles en el
fondo.
Para definir las variantes específicas-programa por iniciar el programa, completando la
pantalla de selección y guardarlo (botón de disco). También puede definir los diferentes
atributos de la variante.
Si las variantes ya han sido definidos para un programa, a continuación, un pulsador adicional
aparece en la pantalla de selección con la bandera de texto. Variante conseguir ..... Este botón
se enumeran las variantes definidas para la selección.
Con el fin de poder definir sus propias variantes, el usuario debe contar con la autorización
correspondiente (en el sistema de producción). Pero también puede definir variantes en el
sistema de desarrollo y luego los han transportado al sistema de producción. Variantes con el
prefijo de nombre 'CUS &' son variantes del sistema. Son transportados como objetos del
repositorio común y no específica del cliente. Todas las otras variantes son específica 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 gestión 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 más información sobre las variantes, elija el botón de información sobre atributos
de la variante en la pantalla a fin de mantener sus atributos de la variante.
72
Opciones de entrada en la pantalla de selección
Figura: un solo valor de entrada (Declaración PARÁMETROS)
Lo anterior muestra el uso de gráficos y el comportamiento en tiempo de ejecución de una
variable de entrada se define mediante una instrucción PARÁMETROS. Una vez más, la
definición de dicha variable de entrada crea una variable en el sistema e, implícitamente,
genera una pantalla de selección con una opción 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 Parámetros se utiliza en lugar de datos.
Usted tiene que considerar tres características:
- El nombre de la variable de entrada puede ser de hasta ocho caracteres de longitud.
- No puede ser escrita con la F tipos estándar, cuerda y XSTRING.
- La asignación de un valor predeterminado no se implementa con la adición de valor, pero con
la adición DEFAULT.
Una asignación de valores por defecto por medio de la adición DEFAULT o el valor de
asignación antes de mostrar la pantalla de selección (inicialización) se muestra en la pantalla
de selección 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 selección de base de datos.
Figura: Introducción de restricciones complejas (la instrucción SELECT-OPTIONS)
73
opciones de selección se determinarán en el momento de usar el nombre SELECT-OPTIONS
PARA data_object.
Norma, donde nombre es el nombre de la opción de seleccionar y data_object es una variable
ya definida. Esta definición crea una tabla interna con el nombre especificado en el programa
(en este caso so_car) y genera una pantalla de selección con una opción de entrada para
limitar la variable especificada (en este caso-wa_spfli carrid).
entradas del usuario son transportados a la tabla interna generada automáticamente cuando se
selecciona Ejecutar. Este cuadro siempre tiene cuatro columnas: signo, opción, de bajo y
alto. Lo anterior muestra gráfica, 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 selección se inscriben pueden ser utilizados para la
selección de bases de datos, como se ilustra en el gráfico. 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
condición de compuestos siguientes se utiliza para limitar la selección de datos:
( I_1 OR ... OR I_n ) AND ( NOT E_1 ) AND ... AND (NOT E_m )
Si la tabla está vacía porque no hay restricciones, las condiciones en que se aplica siempre en
el campo respectivo.
Sugerencia: El operador IN también se puede utilizar en expresiones lógicas: SI-
wa_spfli carrid EN so_car.
Para definir una opción de selección, los mismos tres particularidades de aplicación a la
declaración parámetros (véase más arriba).
Si la tabla interna de la opción de selección se rellena con la adición DEFAULT o APPEND
declaración antes de la pantalla de selección (inicialización, su contenido se muestra en la
pantalla de selección tal como se sugiere las condiciones que se pueden sobrescribir.
Para más detalles, consulte la documentación de la palabra clave para SELECT- OPTIONS.
Evento después de la Selección
Screen
Figura: En el evento AT SELECTION-SCREEN
74
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.
75
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.
76
. 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.
Diseño de pantallas de selección 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.
77
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 selección EN el acontecimiento AT SELECTION-SCREEN están ambos
accionados cerca el elegir Enter tan bien como ejecute (F8). Después 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 selección se exhibe otra vez.
78
Figura: Diálogos de error en AT-SELECCIÓN DE PANTALLA
Inmediatamente antes de procesar el AT SELECTION-SCREEN bloque, las entradas de
usuario se transfiere automáticamente a las variables correspondientes en el programa. Por lo
tanto, tiene sentido para la aplicación requiere comprobaciones de autorización de entrada y en
este bloque de tratamiento. Si el resultado de verificación es negativa, sólo tiene que enviar un
mensaje de error al usuario y tener la pantalla de selección de muestra de nuevo. El usuario
tiene entonces la opción de hacer nuevas entradas. Por el contrario, un mensaje de error en el
START-OF-SELECTION bloque se mostrará en el programa de terminación.
El siguiente gráfico ilustra un simple programa de ejemplo con el cheque de autorización y de
diálogo de error en la pantalla de selección.
Figura: Ejemplo de Sintaxis: Consulte con autorización de diálogo de error
Información adicional se puede encontrar en la documentación de palabras clave. "
SELECTION-SCREEN.
79
Unidad 8
Sentencias Útiles ABAP
CONCATENATE
Definición
Se utiliza para concatenar varios campos alfanuméricos 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 operación.
Con la cláusula SEPARATED BY se puede especificar un campo alfanumérico (el campo <s>)
que será utilizado
como separador entre los campos <c1> ... <cn>. Si el resultado de la concatenación 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 ' Baños',
NAME(20).
CONCATENATE ONE TWO THREE INTO NAME.
La variable NAME valdría: IvanRodrigoBaños
Ejemplo 2:
DATA: ONE(10) VALUE 'Ivan',
TWO(3) VALUE 'Rodrigo',
THREE(10) VALUE 'Baños',
NAME(20),
SEPARATOR(4) VALUE 'GAUSS'.
CONCATENATE SPACE ONE TWO THREE INTO NAME
SEPARATED BY SPACE.
La variable NAME valdría: Ivan Rodrigo Baños.
SPLIT
Definición
Divide un campo alfanumérico en varios campos, gracias a algún 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.
También 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>.
80
Por cada parte del campo <campo el sistema añade una nueva línea 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 líneas, la primera en blanco, la segunda contiene "Two" y la tercera
contiene "Three".
COMMIT WORK
Definición
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 programación de transacciones de diálogo.
Con la cláusula AND WAIT, el programa se para hasta que la tarea de actualización termina. Si
la actualización es
satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0.
TRANSLATE
Definición
Se utiliza para convertir caracteres de mayúscula a minúscula o viceversa, o para realizar
sustituciones de caracteres a
través de ciertas reglas.
Sintaxis:
TRANSLATE <campo> TO { UPPER | LOWE } CASE.
Con la opción UPPER, las letras minúsculas de <campo> se convierten en mayúsculas. Y con
la opción LOWER las
letras mayúsculas se convierten en minúsculas.
Para utilizar reglas de conversión se utiliza la siguiente sintaxis.
TRANSLATE <campo> USING <regla>.
Esta sentencia reemplaza todos los caracteres de <campo> que cumplan la regla de
sustitución <regla>. La regla de
sustitución contiene pares de letras, la primera de ellas indica el carácter a sustituir, la segunda
indica el carácter de
sustitución. <regla> puede ser una variable.
CONDENSE
Definición
Para borrar espacios en blanco superfluos en campos alfanuméricos.
81
Sintaxis:
CONDENSE <campo> [ NO-GAPS ].
Borra cualquier secuencia de espacios en blanco, dejando sólo uno que exista entre palabras
existentes en <campo>.
Los espacios en blanco por la izquierda también desaparecen.
Con la cláusula 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 sería: 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 valdría: Dr.MichaelHofmann
UNPACK
Definición
Desempaqueta el contenido de un campo sobre otro.
Sintaxis:
UNPACK <campo1> TO <campo2>.
Desempaqueta el campo <campo1> en el campo <campo2>. Es la operación 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'.
82
Unit 9
Modulo de funciones
Módulos de función son procedimientos especiales que son visibles de forma global y que se
puede llamar desde otros programas ABAP. Sólo pueden ser definidas y aplicadas de
programas especiales de ABAP, denominados grupos de funciones.
Screens
Grupos de función puede contener pantallas, que permite encapsular los cuadros de diálogo de
usuario en los módulos de función.
Remote capability
Módulos de función se puede llamar por sistemas externos (Remote Function Call).
Update
Algunos módulos de función (módulos de actualización) puede ser utilizado para las
actualizaciones. No se ejecutan directamente cuando se le llama, sino que al final de la unidad
lógica de trabajo (LUW).
Asynchronous execution
Módulos de función se ejecuta en paralelo en un proceso de trabajo por separado. El
programa de llamada no espera hasta que la transformación del módulo de funciones se
haya completado.
Testeo modulo de funciones standard
TRX: SE37
Modulo Funciones “POPUP_TO_CONFIRM” -> Ejecutar
83
Presionando Si, retorna:
Presionando No, retorna:
exporting depende de donde me encuentro. exporting es lo que mando e importing es lo que envío, en
invocación de la función 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.
84
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
códigos de operación o por sus nombres. Sirven exclusivamente como programas principales
de los módulos de función. En la mayoría de los casos, un grupo de funciones contiene varios
módulos de función que realizan funciones relacionadas o actuar en los mismos datos.
Cuando un programa ABAP llama a un módulo de funciones, el grupo de función
correspondiente se carga en la sesión de residente, donde permanece hasta que el programa
de llamada termina. Si el programa llama a los módulos de varias funciones del mismo grupo
de funciones (o la misma función que el módulo varias veces) de forma consecutiva, el grupo
de funciones sólo se carga durante la primera llamada.
Logical View of a Function Group
Aparte de los módulos de función, los grupos de función también puede contener los siguientes
elementos:
. Datos declaraciones (objetos de datos globales)
. Subrutinas
. Pantallas
Estos elementos pueden ser utilizados por todos los módulos de función en el grupo de
funciones.
85
Para crear un grupo de funciones, debemos seleccionar en el menú de la transacción 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 función y presionamos el botón Save como
vemos a continuación:
86
Ejercicio 1: Crear un Grupo de Funciones
Objetivos del Ejercicio
Después 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 módulo de función accedemos a la transacción SE37. Allí escribiremos el nombre de
nuestra función y presionaremos el boton Create
Attributes: aquí especificamos la descripción de la función y el tipo de función que puede ser Normal,
RFC o Update module.
87
Import: aquí especificamos los parámetros de salida de la función
Export: aquí especificamos los parámetros de entrada de la función
Paso por valor: los parámetros formales son creados como copias de los parámetros actuales. Los
cambios en los parámetros formales no afectan a los parámetros actuales.
Paso por referencia: solo la dirección de los parámetros actuales se transfieren a los parámetros
formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si
cambiamos los parámetros formales, el contenido del campo del programa que hace la llamada también
cambia.
88
Changing: aquí especificamos los parámetros de salida que cambiarán de valor con la ejecución de la
función.
Tables: aquí especificamos las tablas que se utilizan en la función.
Source Code: aquí pondremos el código Abap de la función.
Exceptions: aquí especificamos las excepciones de la función. Una excepción es un error que se produce
al ejecutar la función y que ha sido catalogado cuando se creo el módulo de función de modo de poder
identificar rápidamente el motivo del error
Documentacion
89
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
90
Ejercicio 2: Crear un Modulo de Funciones
Objetivos del Ejercicio
Después 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:
Preparación
1. Desplegar una modulo de funciones existente con la Transacción SE37 y Familiarizarse con los tipos
de parámetros 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 parámetro 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 parámetros opcionales?
Elija si los parámetros a transferir van a ser por parámetros o por valor?
3. Defina un parámetro de salida para la lista de vuelos. Utilice un tipo de tabla apropiada para el
parámetro.
4. Ingrese la documentación necesaria para el modulo de funciones, para los parámetros y par alas
excepciones.
CREAR modulo de funciones Z_BC402_46_get_conn_list
e implementarlo, ver ZSAP_P_46_GRF01
91
Llamado de modulo de funciones:
Boton PATTERN, llamamos POPUP_TO_CONFIRM
92
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
Después de completar este ejercicio usted va a poder:
. Usar declaraciones globales
. Entender como es el procesamiento de un modulo de funciones
. Testiar secuencial mente módulos de Funciones
Tarea 1:
1. Crear una tabla interna en el Top de la función y luego llenarla con un Select.
2. Crear una subrutina en la función en donde manipularemos los resultados obtenidos para solo devolver
algunos
Tarea 2: (Opcional)
1. Si la tabla se encuentra vacía generar una excepción para este caso.
93
Qué es un módulo de función RFC?
Un módulo de función RFC consiste en una llamada a una función 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 comunicación puede darse entre sistemas Sap o entre un sistema Sap y otro sistema que no sea Sap.
Para llamar a una función RFC se debe agregar la claúsula DESTINATION al momento de declarar la
función, como vemos en el siguiente ejemplo.
Cómo crear una RFC?
Una función RFC se crea de la misma manera que se crea un función. Se accede a la transacción SE37 y
se completan los mismos parámetros que completamos para crear una función a excepción de que se debe
seleccionar en la solapa de Atributos la opción Remote Enabled Module.
Los parámetros que se crean en una función RFC no se pueden pasar por Referencia, deben pasarse por
valor. Esto se logra tildando el check Pass value para cada parámetro en las solapas IMPORT, EXPORT y
CHANGING.
94
RFC( Remote Function Call ) en SAP R/3
Esta tecnología se usa para comunicar entornos diferentes que pueden ser del mismo o de
tipos diferentes, otra forma de realizar conexión entre procesos es por medido del uso de las
tecnologías 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 conexión 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 función( pertenece al grupo ZUAXRFC )
FUNCTION Z_UAX_RFC.
95
SELECT * FROM ZUAXRFC INTO TABLE TAB_ZUAXRFC.
ENDFUNCTION.
4.- Crear PROGRAMA( llama la función Z_UAX_RFC )
REPORT ZUAXRFC.
* --------------------------------------------------------------------
* --------------------------------------------------------------------
* Programa : zuaxrfc
* autor : Francisco Reyes
* fecha : 13 de abril del 2000
* objetivo : Probar comunicación RFC
* --------------------------------------------------------------------
* tablas usadas por el proceso
* tabla descripción
* zuaxrfc tabla de prueba para comunicación rfc
* --------------------------------------------------------------------
* Descripción del proceso
* 1.- Crea tabla interna en función de la tabla ZUAXRFC
* 2.- Llama la función rfc z_uax_rfc que le devuelve la tabla tab_zuaxxrfc
* 3.- Actualiza la tabla zuaxrfc de la maquina destino en función de los datos recibidos de la
función 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.
96
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 métodos de los objetos de negocios, y gracias a ellos podemos realizar
cargas evitando utilizar Batch Inputs por Call Transaction.
Básicamente son funciones como cualquier otra función en ABAP, así que poseen las mismas
características: parámetros de entrada, de salida, tablas, excepciones...
Por lo general cuando se hace un modificación de un objeto con una BAPI es necesario realizar
un COMMIT explícito mediante la función BAPI_TRANSACTION_COMMIT. Si quieren probar si
una función les sirve para cargar algún dato en particular, pueden utilizar la transacción SE37 e
ir al menú Módulo de Funciones->Verificar->Secuencias Test. Allí se pueden encadenar
funciones, de manera de poder ejecutar primero la BAPI y después la función
BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es
cargado por la BAPI que estén probando.
Ventajas de usar BAPI
Las BAPIs son métodos estandarizados de los Objetos de Negocio Sap R/3, que permiten la
integración de los componentes de software de los clientes y de terceros. Algunas de las
ventajas de usar BAPIs son:
.- Es un Estándar de Negocio
.- Es un Estándar Consensuado
.- Garantiza estabilidad y compatibilidad futura
.- Garantiza orientación a objetos
.- Independencia de entorno (apertura)
Usar BAPIs en programas de aplicación
Actualmente una BAPI puede ser invocada de dos formas diferentes:
.- Llamar la BAPI en el repositorio
.- Hacer llamada RFC a la función que implementa la BAPI
Listado de BAPIs SAP:
BAPI de creación de Pedidos de Venta: BAPI_SALESORDER_CREATEFROMDAT2
BAPI de creación de Pedidos de Compra: BAPI_PO_CREATE
BAPI de Verificación de Facturas: BAPI_INCOMINGINVOICE_CREATE
BAPI de facturación: BAPI_BILLINGDOC_CREATEMULTIPLE
Bapi de Movimiento de mercancias: BAPI_GOODSMVT_CREATE
BAPI modificación Pedido de ventas: BAPI_SALESORDER_CHANGE
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales

Más contenido relacionado

La actualidad más candente

Encumbrance accounting in oracle ebs r12
Encumbrance accounting in oracle ebs r12Encumbrance accounting in oracle ebs r12
Encumbrance accounting in oracle ebs r12Sam Elrashedy
 
Oracle R12 Cash Management New Features
Oracle R12 Cash Management New FeaturesOracle R12 Cash Management New Features
Oracle R12 Cash Management New FeaturesSanjay Challagundla
 
Oracle Accounting reporting sequences
Oracle Accounting reporting sequencesOracle Accounting reporting sequences
Oracle Accounting reporting sequencesAli Ibrahim
 
Oracle EBS HRMS SETUP
Oracle EBS HRMS SETUPOracle EBS HRMS SETUP
Oracle EBS HRMS SETUPHussain Abbas
 
Oracle Fixed assets ivas
Oracle Fixed assets ivasOracle Fixed assets ivas
Oracle Fixed assets ivasAli Ibrahim
 
Sales Order needs to be automatically reserved, shipped & invoiced without an...
Sales Order needs to be automatically reserved, shipped & invoiced without an...Sales Order needs to be automatically reserved, shipped & invoiced without an...
Sales Order needs to be automatically reserved, shipped & invoiced without an...Ahmed Elshayeb
 
Sap Fico Configuration Material
Sap Fico Configuration MaterialSap Fico Configuration Material
Sap Fico Configuration MaterialNaina Mohamed
 
Oracle Applications - R12 Approvals Management Engine - AME Training
Oracle Applications - R12 Approvals Management Engine - AME TrainingOracle Applications - R12 Approvals Management Engine - AME Training
Oracle Applications - R12 Approvals Management Engine - AME TrainingDharmalingam Kandampalayam Shanmugam
 
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bit
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bitOracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bit
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bitMohammed Raouf
 
Sap Purchase Order Workflow
Sap Purchase Order WorkflowSap Purchase Order Workflow
Sap Purchase Order WorkflowArghadip Kar
 
Creating business group in oracle apps
Creating business group in oracle appsCreating business group in oracle apps
Creating business group in oracle appsGurpreet singh
 
Cash management configue doc v1
Cash management   configue doc v1Cash management   configue doc v1
Cash management configue doc v1Hari Krishna
 
Fb08 individual document reversal
Fb08 individual document reversalFb08 individual document reversal
Fb08 individual document reversalFarooq Wangde
 
Creación la estructura organizacional en la Ventas y Distribución (SD)
Creación la estructura organizacional en la  Ventas y Distribución (SD)Creación la estructura organizacional en la  Ventas y Distribución (SD)
Creación la estructura organizacional en la Ventas y Distribución (SD)judadd
 

La actualidad más candente (20)

Encumbrance accounting in oracle ebs r12
Encumbrance accounting in oracle ebs r12Encumbrance accounting in oracle ebs r12
Encumbrance accounting in oracle ebs r12
 
Oracle R12 Cash Management New Features
Oracle R12 Cash Management New FeaturesOracle R12 Cash Management New Features
Oracle R12 Cash Management New Features
 
Oracle Accounting reporting sequences
Oracle Accounting reporting sequencesOracle Accounting reporting sequences
Oracle Accounting reporting sequences
 
Oracle EBS HRMS SETUP
Oracle EBS HRMS SETUPOracle EBS HRMS SETUP
Oracle EBS HRMS SETUP
 
Oracle Fixed assets ivas
Oracle Fixed assets ivasOracle Fixed assets ivas
Oracle Fixed assets ivas
 
Sales Order needs to be automatically reserved, shipped & invoiced without an...
Sales Order needs to be automatically reserved, shipped & invoiced without an...Sales Order needs to be automatically reserved, shipped & invoiced without an...
Sales Order needs to be automatically reserved, shipped & invoiced without an...
 
Summary Account R12 General Ledger
Summary Account R12 General LedgerSummary Account R12 General Ledger
Summary Account R12 General Ledger
 
Sap Fico Configuration Material
Sap Fico Configuration MaterialSap Fico Configuration Material
Sap Fico Configuration Material
 
Oracle Applications - R12 Approvals Management Engine - AME Training
Oracle Applications - R12 Approvals Management Engine - AME TrainingOracle Applications - R12 Approvals Management Engine - AME Training
Oracle Applications - R12 Approvals Management Engine - AME Training
 
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bit
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bitOracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bit
Oracle R12.1 Full & Tips Installation on Windows Server 2008 64/32 bit
 
Sla and cost acctg
Sla and cost acctgSla and cost acctg
Sla and cost acctg
 
Sap Purchase Order Workflow
Sap Purchase Order WorkflowSap Purchase Order Workflow
Sap Purchase Order Workflow
 
Oracle HRMS Document R12.
Oracle HRMS Document R12.Oracle HRMS Document R12.
Oracle HRMS Document R12.
 
Creating business group in oracle apps
Creating business group in oracle appsCreating business group in oracle apps
Creating business group in oracle apps
 
Oracle hrms bg setup examples
Oracle hrms bg setup examplesOracle hrms bg setup examples
Oracle hrms bg setup examples
 
Cash management configue doc v1
Cash management   configue doc v1Cash management   configue doc v1
Cash management configue doc v1
 
Bapi step-by-step
Bapi step-by-stepBapi step-by-step
Bapi step-by-step
 
Fb08 individual document reversal
Fb08 individual document reversalFb08 individual document reversal
Fb08 individual document reversal
 
Oracle fixed assets
Oracle fixed assetsOracle fixed assets
Oracle fixed assets
 
Creación la estructura organizacional en la Ventas y Distribución (SD)
Creación la estructura organizacional en la  Ventas y Distribución (SD)Creación la estructura organizacional en la  Ventas y Distribución (SD)
Creación la estructura organizacional en la Ventas y Distribución (SD)
 

Destacado

SAP FI AP: End User Guide for Beginners
SAP FI AP: End User Guide for BeginnersSAP FI AP: End User Guide for Beginners
SAP FI AP: End User Guide for Beginnerssapdocs. info
 
Variant Configuration in SAP PP: Beginner's Guide
Variant Configuration in SAP PP: Beginner's GuideVariant Configuration in SAP PP: Beginner's Guide
Variant Configuration in SAP PP: Beginner's Guidesapdocs. info
 
SAP Basis Training Material | www.sapdocs.info
SAP Basis Training Material | www.sapdocs.infoSAP Basis Training Material | www.sapdocs.info
SAP Basis Training Material | www.sapdocs.infosapdocs. info
 
SAP SD Certification (C_TSCM62_66) Preparation Training Notes
SAP SD Certification (C_TSCM62_66) Preparation Training NotesSAP SD Certification (C_TSCM62_66) Preparation Training Notes
SAP SD Certification (C_TSCM62_66) Preparation Training Notessapdocs. info
 
SAP FI AP: Configuration & End User Guide
SAP FI AP: Configuration & End User GuideSAP FI AP: Configuration & End User Guide
SAP FI AP: Configuration & End User Guidesapdocs. info
 
SAP PM Training Manual - www.sapdocs.info
SAP PM Training Manual - www.sapdocs.infoSAP PM Training Manual - www.sapdocs.info
SAP PM Training Manual - www.sapdocs.infosapdocs. info
 
LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)sapdocs. info
 
SAP FI Asset Accounting: End User Guide for Beginners
SAP FI Asset Accounting: End User Guide for BeginnersSAP FI Asset Accounting: End User Guide for Beginners
SAP FI Asset Accounting: End User Guide for Beginnerssapdocs. info
 
SAP PM Master Data Training Guide
SAP PM Master Data Training GuideSAP PM Master Data Training Guide
SAP PM Master Data Training Guidesapdocs. info
 
SAP FI-AP TCODES & MENU PATHS
SAP FI-AP TCODES & MENU PATHSSAP FI-AP TCODES & MENU PATHS
SAP FI-AP TCODES & MENU PATHSsapdocs. info
 
SAP MM Configuration - Real Project Documentation
SAP MM Configuration - Real Project DocumentationSAP MM Configuration - Real Project Documentation
SAP MM Configuration - Real Project Documentationsapdocs. info
 
SAP FICO BBP Sample Document PDF NEW!
SAP FICO BBP Sample Document PDF NEW!SAP FICO BBP Sample Document PDF NEW!
SAP FICO BBP Sample Document PDF NEW!sapdocs. info
 
Authorisation Concept In SAP | http://sapdocs.info
Authorisation Concept In SAP | http://sapdocs.infoAuthorisation Concept In SAP | http://sapdocs.info
Authorisation Concept In SAP | http://sapdocs.infosapdocs. info
 
SAP PP MRP Guide for Beginners
SAP PP MRP Guide for BeginnersSAP PP MRP Guide for Beginners
SAP PP MRP Guide for Beginnerssapdocs. info
 
SAP Configuration Guide for Functional Modules (Based on IDES)
SAP Configuration Guide for Functional Modules (Based on IDES)SAP Configuration Guide for Functional Modules (Based on IDES)
SAP Configuration Guide for Functional Modules (Based on IDES)sapdocs. info
 
SAP FI-AR TCODES & MENU PATHS
SAP FI-AR TCODES & MENU PATHSSAP FI-AR TCODES & MENU PATHS
SAP FI-AR TCODES & MENU PATHSsapdocs. info
 
SAP FI AR: End User Guide for Beginners
SAP FI AR: End User Guide for BeginnersSAP FI AR: End User Guide for Beginners
SAP FI AR: End User Guide for Beginnerssapdocs. info
 
SAP HR Time Management User Guide | www.sapdocs.info
SAP HR Time Management User Guide | www.sapdocs.infoSAP HR Time Management User Guide | www.sapdocs.info
SAP HR Time Management User Guide | www.sapdocs.infosapdocs. info
 
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infoVariant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infosapdocs. info
 
SAP PP End User Document - www.sapdocs.info
SAP PP End User Document - www.sapdocs.infoSAP PP End User Document - www.sapdocs.info
SAP PP End User Document - www.sapdocs.infosapdocs. info
 

Destacado (20)

SAP FI AP: End User Guide for Beginners
SAP FI AP: End User Guide for BeginnersSAP FI AP: End User Guide for Beginners
SAP FI AP: End User Guide for Beginners
 
Variant Configuration in SAP PP: Beginner's Guide
Variant Configuration in SAP PP: Beginner's GuideVariant Configuration in SAP PP: Beginner's Guide
Variant Configuration in SAP PP: Beginner's Guide
 
SAP Basis Training Material | www.sapdocs.info
SAP Basis Training Material | www.sapdocs.infoSAP Basis Training Material | www.sapdocs.info
SAP Basis Training Material | www.sapdocs.info
 
SAP SD Certification (C_TSCM62_66) Preparation Training Notes
SAP SD Certification (C_TSCM62_66) Preparation Training NotesSAP SD Certification (C_TSCM62_66) Preparation Training Notes
SAP SD Certification (C_TSCM62_66) Preparation Training Notes
 
SAP FI AP: Configuration & End User Guide
SAP FI AP: Configuration & End User GuideSAP FI AP: Configuration & End User Guide
SAP FI AP: Configuration & End User Guide
 
SAP PM Training Manual - www.sapdocs.info
SAP PM Training Manual - www.sapdocs.infoSAP PM Training Manual - www.sapdocs.info
SAP PM Training Manual - www.sapdocs.info
 
LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)
 
SAP FI Asset Accounting: End User Guide for Beginners
SAP FI Asset Accounting: End User Guide for BeginnersSAP FI Asset Accounting: End User Guide for Beginners
SAP FI Asset Accounting: End User Guide for Beginners
 
SAP PM Master Data Training Guide
SAP PM Master Data Training GuideSAP PM Master Data Training Guide
SAP PM Master Data Training Guide
 
SAP FI-AP TCODES & MENU PATHS
SAP FI-AP TCODES & MENU PATHSSAP FI-AP TCODES & MENU PATHS
SAP FI-AP TCODES & MENU PATHS
 
SAP MM Configuration - Real Project Documentation
SAP MM Configuration - Real Project DocumentationSAP MM Configuration - Real Project Documentation
SAP MM Configuration - Real Project Documentation
 
SAP FICO BBP Sample Document PDF NEW!
SAP FICO BBP Sample Document PDF NEW!SAP FICO BBP Sample Document PDF NEW!
SAP FICO BBP Sample Document PDF NEW!
 
Authorisation Concept In SAP | http://sapdocs.info
Authorisation Concept In SAP | http://sapdocs.infoAuthorisation Concept In SAP | http://sapdocs.info
Authorisation Concept In SAP | http://sapdocs.info
 
SAP PP MRP Guide for Beginners
SAP PP MRP Guide for BeginnersSAP PP MRP Guide for Beginners
SAP PP MRP Guide for Beginners
 
SAP Configuration Guide for Functional Modules (Based on IDES)
SAP Configuration Guide for Functional Modules (Based on IDES)SAP Configuration Guide for Functional Modules (Based on IDES)
SAP Configuration Guide for Functional Modules (Based on IDES)
 
SAP FI-AR TCODES & MENU PATHS
SAP FI-AR TCODES & MENU PATHSSAP FI-AR TCODES & MENU PATHS
SAP FI-AR TCODES & MENU PATHS
 
SAP FI AR: End User Guide for Beginners
SAP FI AR: End User Guide for BeginnersSAP FI AR: End User Guide for Beginners
SAP FI AR: End User Guide for Beginners
 
SAP HR Time Management User Guide | www.sapdocs.info
SAP HR Time Management User Guide | www.sapdocs.infoSAP HR Time Management User Guide | www.sapdocs.info
SAP HR Time Management User Guide | www.sapdocs.info
 
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.infoVariant Configurition in SAP: Beginners Guide | www.sapdocs.info
Variant Configurition in SAP: Beginners Guide | www.sapdocs.info
 
SAP PP End User Document - www.sapdocs.info
SAP PP End User Document - www.sapdocs.infoSAP PP End User Document - www.sapdocs.info
SAP PP End User Document - www.sapdocs.info
 

Similar a ABAP Basico para Consultores Funcionales

Fwpa doc-desarrollo
Fwpa doc-desarrolloFwpa doc-desarrollo
Fwpa doc-desarrollociriako
 
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaManual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaAngel De las Heras
 
Adobe Actionscript 3.0
Adobe Actionscript 3.0Adobe Actionscript 3.0
Adobe Actionscript 3.0Berthamazon
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Epo 450 product_guide_es-es
Epo 450 product_guide_es-esEpo 450 product_guide_es-es
Epo 450 product_guide_es-esPablo
 
Autocad aca user_guide_spanish
Autocad aca user_guide_spanishAutocad aca user_guide_spanish
Autocad aca user_guide_spanishRig Faby
 
AutoCAD Architecture 2011 Manual de Usuario
AutoCAD Architecture 2011 Manual de UsuarioAutoCAD Architecture 2011 Manual de Usuario
AutoCAD Architecture 2011 Manual de UsuarioRichard Muyulema Erazo
 
Macros excel
Macros excelMacros excel
Macros excelFraneles
 
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2ventura1993
 
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0KathaBCN
 
Manual autocad architecture 2009
Manual autocad architecture 2009Manual autocad architecture 2009
Manual autocad architecture 2009gluiss
 

Similar a ABAP Basico para Consultores Funcionales (20)

Fwpa doc-desarrollo
Fwpa doc-desarrolloFwpa doc-desarrollo
Fwpa doc-desarrollo
 
Vb net telematic
Vb net telematicVb net telematic
Vb net telematic
 
Open xava manual
Open xava manualOpen xava manual
Open xava manual
 
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaManual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
 
Manual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuelaManual de programacion_con_robots_para_la_escuela
Manual de programacion_con_robots_para_la_escuela
 
manual de Usuario Calener.pdf
manual de Usuario Calener.pdfmanual de Usuario Calener.pdf
manual de Usuario Calener.pdf
 
manual de Usuario Calener.pdf
manual de Usuario Calener.pdfmanual de Usuario Calener.pdf
manual de Usuario Calener.pdf
 
Adobe Actionscript 3.0
Adobe Actionscript 3.0Adobe Actionscript 3.0
Adobe Actionscript 3.0
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Manual de visual basic.net
Manual de visual basic.netManual de visual basic.net
Manual de visual basic.net
 
Epo 450 product_guide_es-es
Epo 450 product_guide_es-esEpo 450 product_guide_es-es
Epo 450 product_guide_es-es
 
Autocad aca user_guide_spanish
Autocad aca user_guide_spanishAutocad aca user_guide_spanish
Autocad aca user_guide_spanish
 
AutoCAD Architecture 2011 Manual de Usuario
AutoCAD Architecture 2011 Manual de UsuarioAutoCAD Architecture 2011 Manual de Usuario
AutoCAD Architecture 2011 Manual de Usuario
 
Macros excel
Macros excelMacros excel
Macros excel
 
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2
Pdm115 guia lab04a_sq_lite_android_2015_preliminar_v2
 
Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0Programacion.con.adobe.action.script.3.0
Programacion.con.adobe.action.script.3.0
 
Manual autocad architecture 2009
Manual autocad architecture 2009Manual autocad architecture 2009
Manual autocad architecture 2009
 

Más de sapdocs. info

SAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.infoSAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.infosapdocs. info
 
SAP CO Configuration Guide - Exclusive Document
SAP CO Configuration Guide - Exclusive DocumentSAP CO Configuration Guide - Exclusive Document
SAP CO Configuration Guide - Exclusive Documentsapdocs. info
 
ABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infoABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infosapdocs. info
 
Exclusive SAP Basis Training Book | www.sapdocs.info
Exclusive SAP Basis Training Book | www.sapdocs.infoExclusive SAP Basis Training Book | www.sapdocs.info
Exclusive SAP Basis Training Book | www.sapdocs.infosapdocs. info
 
SAP Plant Maintenance Training Material | www.sapdocs.info
SAP Plant Maintenance Training Material | www.sapdocs.infoSAP Plant Maintenance Training Material | www.sapdocs.info
SAP Plant Maintenance Training Material | www.sapdocs.infosapdocs. info
 
SAP FICO General Ledger EndUser Training | www.sapdocs.info
SAP FICO General Ledger EndUser Training | www.sapdocs.infoSAP FICO General Ledger EndUser Training | www.sapdocs.info
SAP FICO General Ledger EndUser Training | www.sapdocs.infosapdocs. info
 
HR ABAP Technical Overview | http://sapdocs.info/
HR ABAP Technical Overview | http://sapdocs.info/HR ABAP Technical Overview | http://sapdocs.info/
HR ABAP Technical Overview | http://sapdocs.info/sapdocs. info
 
SAP Accounts Reveivable Introduction | http://sapdocs.info
SAP Accounts Reveivable Introduction | http://sapdocs.infoSAP Accounts Reveivable Introduction | http://sapdocs.info
SAP Accounts Reveivable Introduction | http://sapdocs.infosapdocs. info
 
SAP Accounts Reveivable Functions | http://sapdocs.info
SAP Accounts Reveivable Functions | http://sapdocs.infoSAP Accounts Reveivable Functions | http://sapdocs.info
SAP Accounts Reveivable Functions | http://sapdocs.infosapdocs. info
 
SAP Accounts Reveivable Financial Transaction | http://sapdocs.info
SAP Accounts Reveivable Financial Transaction | http://sapdocs.infoSAP Accounts Reveivable Financial Transaction | http://sapdocs.info
SAP Accounts Reveivable Financial Transaction | http://sapdocs.infosapdocs. info
 
SAP Accounts Reveivable Customer Master | http://sapdocs.info
SAP Accounts Reveivable Customer Master | http://sapdocs.infoSAP Accounts Reveivable Customer Master | http://sapdocs.info
SAP Accounts Reveivable Customer Master | http://sapdocs.infosapdocs. info
 
SAP Accounts Reveivable SAP Documents | http://sapdocs.info
SAP Accounts Reveivable SAP Documents | http://sapdocs.infoSAP Accounts Reveivable SAP Documents | http://sapdocs.info
SAP Accounts Reveivable SAP Documents | http://sapdocs.infosapdocs. info
 
SAP Accounts Payable Payment | http://sapdocs.info
SAP Accounts Payable Payment | http://sapdocs.infoSAP Accounts Payable Payment | http://sapdocs.info
SAP Accounts Payable Payment | http://sapdocs.infosapdocs. info
 

Más de sapdocs. info (13)

SAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.infoSAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
SAP ECC 6.0 PM Configuration Manual - www.sapdocs.info
 
SAP CO Configuration Guide - Exclusive Document
SAP CO Configuration Guide - Exclusive DocumentSAP CO Configuration Guide - Exclusive Document
SAP CO Configuration Guide - Exclusive Document
 
ABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.infoABAP for Beginners - www.sapdocs.info
ABAP for Beginners - www.sapdocs.info
 
Exclusive SAP Basis Training Book | www.sapdocs.info
Exclusive SAP Basis Training Book | www.sapdocs.infoExclusive SAP Basis Training Book | www.sapdocs.info
Exclusive SAP Basis Training Book | www.sapdocs.info
 
SAP Plant Maintenance Training Material | www.sapdocs.info
SAP Plant Maintenance Training Material | www.sapdocs.infoSAP Plant Maintenance Training Material | www.sapdocs.info
SAP Plant Maintenance Training Material | www.sapdocs.info
 
SAP FICO General Ledger EndUser Training | www.sapdocs.info
SAP FICO General Ledger EndUser Training | www.sapdocs.infoSAP FICO General Ledger EndUser Training | www.sapdocs.info
SAP FICO General Ledger EndUser Training | www.sapdocs.info
 
HR ABAP Technical Overview | http://sapdocs.info/
HR ABAP Technical Overview | http://sapdocs.info/HR ABAP Technical Overview | http://sapdocs.info/
HR ABAP Technical Overview | http://sapdocs.info/
 
SAP Accounts Reveivable Introduction | http://sapdocs.info
SAP Accounts Reveivable Introduction | http://sapdocs.infoSAP Accounts Reveivable Introduction | http://sapdocs.info
SAP Accounts Reveivable Introduction | http://sapdocs.info
 
SAP Accounts Reveivable Functions | http://sapdocs.info
SAP Accounts Reveivable Functions | http://sapdocs.infoSAP Accounts Reveivable Functions | http://sapdocs.info
SAP Accounts Reveivable Functions | http://sapdocs.info
 
SAP Accounts Reveivable Financial Transaction | http://sapdocs.info
SAP Accounts Reveivable Financial Transaction | http://sapdocs.infoSAP Accounts Reveivable Financial Transaction | http://sapdocs.info
SAP Accounts Reveivable Financial Transaction | http://sapdocs.info
 
SAP Accounts Reveivable Customer Master | http://sapdocs.info
SAP Accounts Reveivable Customer Master | http://sapdocs.infoSAP Accounts Reveivable Customer Master | http://sapdocs.info
SAP Accounts Reveivable Customer Master | http://sapdocs.info
 
SAP Accounts Reveivable SAP Documents | http://sapdocs.info
SAP Accounts Reveivable SAP Documents | http://sapdocs.infoSAP Accounts Reveivable SAP Documents | http://sapdocs.info
SAP Accounts Reveivable SAP Documents | http://sapdocs.info
 
SAP Accounts Payable Payment | http://sapdocs.info
SAP Accounts Payable Payment | http://sapdocs.infoSAP Accounts Payable Payment | http://sapdocs.info
SAP Accounts Payable Payment | http://sapdocs.info
 

ABAP Basico para Consultores Funcionales

  • 2. 2 Índice Unidad 1 ......................................................................................................................... 4 Introducción 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 Creación de Paquetes (Ex Clase de desarrollo).......................................... 8 Introducción al Lenguaje de Programación ABAP. ................................... 9 Crear un Programa ABAP. .............................................................................. 11 Activación 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: Transacción............................................................................. 15 Estructura de un Programa ABAP ............................................................ 16 Unidad 2 ....................................................................................................................... 17 Introducción al Diccionario ABAP ............................................................ 17 Ejercicio 1: Ingresar a la transacción SE11 y visualizar la tabla SCARR. ...................................................................................................................... 19 Unidad 3 ....................................................................................................................... 20 Introducción a los Eventos ABAP............................................................. 20 Unidad 4 ....................................................................................................................... 23 Elementos Básicos del Lenguaje ABAP................................................... 23 Trabajando con DATA OBJECTS .................................................................. 23 Data Types y Data Objects.............................................................................. 23 Sentencias básicas ABAP............................................................................... 26 Sentencias Condicionales............................................................................... 28 Sentencias LOOPS o repetitivas. .................................................................. 29 Creación de Mensajes...................................................................................... 29 Trabajando con ABAP Debugger................................................................. 31 Selection Screen......................................................................................... 32 Declarando campos como parámetros..................................................... 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 Información.................................................................................. 49 Leyendo Múltiples Tablas de Base de Datos............................................. 52 Ejercicio 1: Estructuras y Tablas .............................................................. 53 . Unidad 6 ..................................................................................................................... 54 Subrutinas en ABAP................................................................................... 54
  • 3. 3 Subrutinas ........................................................................................................... 54 Ejercicio 1: Listas - Subrutinas - Eventos ................................................ 59 . Unidad 7 ..................................................................................................................... 60 Procesamiento de Lista Clásica................................................................ 60 La lista .................................................................................................................. 60 Pantalla de Selección ................................................................................. 68 Ventajas de las pantallas de selección..................................................... 68 Declarando Campos con Select Options .................................................... 74 Diseño de pantallas de selección 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: Creación y llamadas a Grupo de Funciones y a Módulos de Funciones. 1. Creación de Grupo de Funciones 2. Creación de Módulos de Funciones 3. Implementación 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. Ampliación de Tablas SAP 6. Ampliación del Menú SAP
  • 4. 4 Unidad 1 Introducción a ABAP Workbench Repositorio Navegador de Objetos El repositorio consta de todos los objetos de desarrollo del sistema: los programas, módulos de función, 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 también contiene tablas de aplicación y customizing, que suelen ser específicos del cliente, es decir, que tienen un columna de cliente.
  • 5. 5 El Repositorio es Cross Aplication, o sea que los programas no están divididos por modulo. La única diferencia entre los programas son las tablas de donde toman la información. Buscar Objetos en el Repositorio. La transacción para acceder es la SE80.
  • 6. 6 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 transacción SE80 y ahí oprimimos el botón 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 producción 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 transacción 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 navegación para mostrar una lista de objetos jerárquica.
  • 7. 7  Un área de herramienta para visualizar y editar un objeto mediante el desarrollo de la herramienta adecuada. Puede mostrar u ocultar el área de navegación. (Pantalla completa on / off). En ambas áreas, usted puede elegir las funciones mediante un menú contextual, que se acceso mediante el botón derecho del ratón. El menú contextual ofrece sólo las funciones que han sido diseñados para el objeto en cuestión.
  • 8. 8 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 producción) 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. Creación de Paquetes (Ex Clase de desarrollo) 1. Navegue hasta el Navegador de Objetos SE80. Ahora tiene dos opciones: a) En el área de navegación, seleccionar tipo de objeto paquete y entrar en el nombre del paquete en el campo de abajo. (Asegúrese 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 Edición de objetos en la pantalla inicial de la SE80. En el cuadro de diálogo, Busque la opción de especificar un paquete y entrar en el nombre del paquete. Después, haga clic en el botón para crear el objeto (F5).
  • 9. 9 2. Pasos para crear un paquete: Atributos. Componente De Aplicación: 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 estándar. Si se utiliza el control de transporte ampliado, se podrán asignar capas de transporte estándar diferentes a determinados mandantes. Se puede definir como máximo un destino de consolidación 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 estándar, se precisa la autorización de gestión del Change and Transport System. 3. Asignarle una Orden de Transporte al paquete: Introducción al Lenguaje de Programación ABAP. ABAP (Advanced Business Application Programming) es un lenguaje de cuarta generación, propiedad de SAP, que se utiliza para programar la mayoría de sus productos. Utiliza sentencias de Open SQL para conectarse con prácticamente 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 programación. ABAP fue desarrollado por SAP como lenguaje de informes para SAP R/2 en los años 80, una plataforma que permitía a las grandes corporaciones construir aplicaciones de negocios para gestión de materiales y finanzas. ABAP, muy parecido al COBOL en sus orígenes, originalmente significaba Allgemeiner Berichtsaufbereitungsprozessor, palabras alemanas para procesador genérico para la preparación de informes. En sus inicios ABAP incluía el concepto de Bases de datos lógicas, que suministraba un alto nivel de abstracción para el acceso a bases de datos. ABAP fue pensado como un lenguaje de programación para que los usuarios finales pudieran manipular la información, 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 versión 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 básicas estaban escritas en ABAP. En 1999, con el lanzamiento de la
  • 10. 10 versión 4.6 de R/3, SAP lanzó una extensión orientada a objetos denominada ABAP Objects. La versión más 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 programación. La programación ABAP no distingue entre mayúsculas y minúsculas. 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.
  • 11. 11 Hay varias variables de sistema las mas importantes son las siguientes: SY-SUBRC: Determina el estado de finalización de una acción. SY-DATUM: Fecha del día. SY-UZEIT: Hora del día Crear un Programa ABAP. 1. Navegue hasta la transacción SE80. Hay tres opciones disponibles: a) En el área de navegación, 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 diálogo 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 código fuente se distribuye a varios programas.) 3. Cambiar el título 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 más detalles.
  • 12. 12 Activación 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.
  • 13. 13 Barra de botos del Editor ABAP Cambiar De Editable a Visualización Cambiar de Activo a Inactivo Cambiar de Programa Chequear Sintaxis Activar un Programa Ejecutar un Programa Tabular el programa y poner en mayúscula palabras claves Crear Transacciones Una Transacción 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 transacción SE80 o la SE93, de la siguiente manera. Botón Derecho del Mouse
  • 14. 14
  • 15. 15 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 código propuesto por el instructor. Ejercicio 3: Transacción 2) Crear una Transacción y asociarla al Programa creado.
  • 16. 16 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. ….. …..
  • 17. 17 Unidad 2 Introducción al Diccionario ABAP El Diccionario ABAP permite la gestión 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 Módulos de Función y en objetos de base de datos como tablas, índices y vistas. El Diccionario ABAP también ofrece una serie de servicios que apoyan programa desarrollo. Por ejemplo, el establecimiento y la liberación de los cierres, la definición de un Ayuda de entrada (F4 de ayuda), y adjuntar una ayuda de campo (Ayuda F1) a un campo de pantalla se apoyo. La transacción para ingresar al diccionario es SE11
  • 18. 18 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 definición de una tabla o vista base de datos son también automáticamente realizados en la base de datos. Hay diferentes categorías en el Diccionario ABAP: Elemento de Datos: Determina la descripción 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 Antigüedad Etc. Estructura: Z_DATOS_PERSONALES Nombre Apellido Teléfono El Diccionario ABAP esta integrado activamente en el desarrollo y ejecución de programas. Cada cambio tiene efecto inmediato en los programas y pantallas ABAP.
  • 19. 19 Ejercicio 1: Ingresar a la transacción SE11 y visualizar la tabla SCARR.
  • 20. 20 Unidad 3 Introducción a los Eventos ABAP ABAP es un lenguaje de programación 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 (asignación de memoria). Después de eso, en tiempo de ejecución se desencadena varios acontecimientos en sucesión. 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 selección, previo a que esta sea mostrada. Este proceso se ejecuta desde que se lanzo la transacción y hasta que se muestra la pantalla de selección. 2. AT SELECTION-SCREEN Es utilizado para valida los datos ingresados en la pantalla y para validar niveles de autorización. Es lanzado siempre que se oprime ENTER en la pantalla de selección o cuando se oprime F8. 3. START-OF-SELECTION Es utilizado para la ejecución completa del programa. Es lanzado luego de oprimir F8. Es recomendable utilizar Subrutinas para la ejecución del código.
  • 21. 21 El ejemplo dado a continuación, contiene una pantalla de selección 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 día de la semana siguiente (pa_date = pa_date + 7.). En el mismo gráfico se muestra cómo el sistema de ejecución reacciona cuando un bloque falta. Simplemente, no hay instrucciones ejecutadas por el correspondiente y se continua con el evento siguiente. Si no hay ningún evento implementado dentro del programa, asume que todas las sentencias corresponden al STAR-OF-SELECTION. Además de los eventos ya mencionados existen otro que veremos más adelante en este mismo manual. Ej. AT LINE-SELECTION, este evento se ejecuta cuando el usuario hace doble clic en una lista.
  • 22. 22 Este evento puede ser utilizado, por ejemplo, para mostrar la información detallada del registro seleccionado en la lista. Además 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. ….. …..
  • 23. 23 Unidad 4 Elementos Básicos del Lenguaje ABAP Trabajando con DATA OBJECTS Data Types y Data Objects El tipo de datos de un objeto define técnicamente y semánticamente sus atributos. Vamos a echar un vistazo a los tipos estándar 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
  • 24. 24 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 más información de los tipos de datos ABAP ir a la documentación de las sentencias DATA y TYPES oprimiendo F1 sobre dichas palabras reservadas. Veamos a continuación 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 capítulo podremos ver como declarar internamente en nuestros programas cada uno de los tipos de datos. Los datos tipos de datos globales se podrán ver en el curso de Diccionario de Datos. Hay 3 tipos de categorías 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.
  • 25. 25 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) carácter.
  • 26. 26 Ejemplo: DATA: MYVAR. En este ejemplo al faltar el tipo de datos y la extensión, se asume un CHAR de 1 carácter. 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 contraposición los tipos de datos globales pueden ser usados por todo el sistema, además de las siguientes ventajas:  Proporcionan la ventaja de la reusabilidad y mantienen la consistencia del sistema.  En el diccionario ABAP usted tiene la opción de utilizar where-used list para mediante referencia de utilización ver donde se usa.  Se pueden modificar los tipos de datos sin tocar el código ABAP. Sentencias básicas ABAP
  • 27. 27 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 disposición de los objetos de datos definidos en el programa. Todos los Data Objects son asignados previamente con el valor inicial del tipo específico, excepto si un valor diferente fue pre-asignado mediante la sentencia VALUE. Usted puede utilizar la instrucción 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 podría haber un conflicto de tipos. En este caso, la conversión de tipos se realiza de forma automática. La sentencia CLEAR borra el contenido de la variable. En ABAP podrás utilizar sentencias aritméticas.  + SUMA  - RESTA  * Multiplicación  / División  ** Exponencial
  • 28. 28 Sentencias Condicionales En ABAP usted tiene 2 maneras de ejecutar diferentes secuencias de sentencias, dependiendo de las necesidades.  En la construcción IF puede definir cualquier expresiones lógicas como las condiciones de verificación. Si se cumple la condición, el sistema ejecuta el bloque de instrucciones correspondiente. De lo contrario, la condición 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 información detallada sobre la formulación de una expresión lógica consulte la documentación de la palabra clave en la instrucción 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 comparación es incorrecta, el sistema ejecuta la rama OTHERS si está disponible. A excepción del primer WHEN, los demás son opcionales. En ambas sentencias la secuencia de comparación es de arriba hacia abajo. Apenas encuentre una coincidencia ejecuta esa parte del código y luego salta hasta el ENDIF o el ENDCASE.
  • 29. 29 Sentencias LOOPS o repetitivas. DO. IF <condición>. EXIT. ENDIF. ENDDO. DO n TIMES. Sentencias ABAP ENDIF. WHILE <condición>. 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 número de vuelta que se está ejecutando. Por lo tanto, consultar este campo del sistema sólo tiene sentido dentro de un bucle. En bucles anidados, SY-INDEX contiene siempre el número de vuelta del bucle en el que se encuentra. La sentencia DO ENDDO, solo tiene sentido si colocamos la palabra reservada EXIT con alguna condición que amerite salir. La sentencia WHILE ENDWHILE, se va a ejecutar siempre que la condición sea verdadera, para salir tendremos que cambiar el valor de la condición. La sentencia SELECT y la sentencia LOOP se utilizan para recorrer tablas, la primera tablas de base de datos y la segunda tablas internas. Creación de Mensajes. Para crear mensajes se utiliza la transacción 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 código sino dentro de esta clase de mensajes en donde también se los puede traducir y que tomen el idioma que el usuario esta logueado.
  • 30. 30 Dentro de nuestro programa ABAP con el botón PATRON podremos agregar nuestro mensaje en el código. A continuación vemos los distintos tipos de mensajes que podemos seleccionar.
  • 31. 31 Usted utiliza la instrucción MENSSAGE para enviar mensajes de diálogo a los usuarios de su programa. Al hacer esto, debe especificar el número de tres dígitos y la clase de mensaje. Mensaje número 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 código de mi programa. Esto nos va a proporcionar que frene en es punto nuestro programa en tiempo de ejecución. Colocando la sentencia /h en el cuadro de comando y dándole ENTER. Esto activa el modo debug y va a empezar a debuggiar a partir de ese punto. Ya dentro de la aplicación para debuguiar podremos utilizar las teclas F5, F6, F7 y F8 para ejecutar distintos comandos.
  • 32. 32 La tecla F5 nos permite avanzar paso a paso por nuestro código, o sea línea por línea de código. La tecla F6 nos permite saltear Subrutinas, Módulos de Función, ETC. Aclaro que igual se ejecutan pero sin que veamos ese código de ejecución. La tecla F7 nos permite regresar a la sentencia siguiente a una subrutina o un modulo de función. La tecla F8 nos permite finalizar la ejecución o pasar al próximo BreakPoint. Selection Screen Figure: Selection Screen: Overview
  • 33. 33 Las pantallas de selección sirven como interfaces entre el programa y el usuario. Se utilizan para limitar la cantidad de información a leer de la base de datos. Usted puede utilizar las palabras reservadas PARAMETERS y SELECT-OPTIONS, para generar una pantalla de selección con parámetros de entrada. Además de las pantallas de selección por defecto, usted puede crear pantallas de selección 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 selección que se utilizan en varias ocasiones. Estas variantes se pueden recordar para el uso cuando están requeridas. Una variante es necesaria si un informe se ejecute en un proceso de trabajo de fondo. Declarando campos como parámetros. 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 selección. La cantidad de caracteres en el nombre no puede superar los 8 caracteres. Los textos de los parámetros de selección se modifican en el menu: Pasar A -- > Elementos de Texto --> Textos de Selección. 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 automática. Si se declara campos obligatorios con la adición OBLIGATORY, los usuarios no pueden salir de la pantalla de selección hasta que los valores se han especificado en estos campos. El Control automático por el Diccionario ABAP se apaga para pantalla de selección 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 válida.
  • 34. 34 Usted puede definir un parámetro como check Box (AS CHECKBOX). Esto crea un campo de un carácter que puede contener los valores de blanco o X. Usted podrá evaluarlos usando las sentencias IF/ENDIF. Usted puede también definir una serie de botones de radio para una pantalla de la selección con el GRUPO de la adición RADIOBUTTON GROUP. La longitud máxima del nombre para un GRUPO de RADIOBUTTON GROUP es cuatro caracteres. Solamente un botón 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.
  • 35. 35 Ejercicio 1: Calculadora Calculadora con 3 parámetros de selección. 2 para el ingreso de números y 1 para el operando. Luego con esa información imprimimos el resultado de la cuenta. 1) Declarar 3 parámetros de selección. 2 de tipo numérico y una alfanumérico. 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 división por cero. 6) Realizar la cuenta con un CASE 7) Imprimir el resultado.
  • 36. 36 Trabajando con Estructuras En ABAP, usted puede definir estructuras. Esto le permite combinar variables de diferentes tipos dentro de una unidad lógica 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.
  • 37. 37 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 información puede oprimir F1 sobre la sentencia TYPES. También 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 razón usted no debe usar guiones en los nombres.
  • 38. 38 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, haciéndole doble click en la estructura podremos ver su contenido.
  • 39. 39 Trabajando con Tablas Internas Una tabla interna es un objeto que puede tener muchos registros de una misma estructura. La cantidad de información 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 razón 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 típicas incluyen:  Obtener información de la base de datos.  Formatear información para una salida de reporte  Formatear información para otros servicios (Ej. Subrutinas, Módulos de Función, Etc.) Las siguientes propiedades definen una tabla interna por completo: Line type El tipo de línea 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 según 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 más apropiado uno u otro tipo de tabla. . Con STANDARD TABLES la fila de numeración (índice) se mantiene internamente. Tanto el índice y los accesos principales son posibles.
  • 40. 40 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 automáticamente en orden ascendente de los campos clave. También 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 gustaría que la tabla se ordenan automáticamente por clave. . Con HASHED TABLES los registros de datos se gestionan clave para un acceso rápido mediante el procedimiento de hashing. Una clave única es requerida. Con las tablas hash sólo 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.
  • 41. 41 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.
  • 42. 42 Para el proceso de un solo registro de una tabla interna, siempre necesitara la creación de una WorkArea con el mismo formato. APPEND Agrega el contenido de una workarea en una tabla interna. Esta operación 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 posición. En el caso de las tablas internas de tipo Sort y Hashed serán 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.
  • 43. 43 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 condición. INSERT Inserta el contenido de varios registros de una tabla interna a otra cuando se cumple con la condición. APPEND Agrega los registros de una tabla interna a otra cuando se cumple la condición y siempre que tengan el mismo formato.
  • 44. 44 Usted puede insertar un registro en un atabla interna agregando los datos en una WorkArea y utilizando la sentencia INSERT. Según 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 número 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 impresión 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.
  • 45. 45 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 número 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.
  • 46. 46 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 también el espacio de memoria que ocupa. En el debug, usted puede monitorear el contenido de una tabla interna.
  • 47. 47 El CON HEADER LINE además en la definición de la tabla interna le da la opción de crear una tabla con la línea de cabecera. Cuando esto se hace un área de trabajo (línea de encabezado) que se adapte a la tabla se crea automáticamente de modo que la definición adicional de la misma no es necesaria. Esto también simplifica la sintaxis de los comandos de tabla, ya que el sistema siempre se refiere al área de trabajo generados automáticamente, por lo que ya no tiene que ser especificado explícitamente. A pesar de las ventajas mencionadas ya no desea utilizar la tabla con líneas de cabecera, porque: -El área de trabajo generados automáticamente tiene el mismo nombre que la tabla interna, que no contribuye a hacer que el programa de lectura. -Tablas con líneas de cabecera no están permitidos en: -objetos de datos complejas (estructuras y tablas internas que tienen las tablas internas como componentes). - objetos ABAP (objeto de extensión orientadas de ABAP) Sólo mencionar las tablas internas con líneas de encabezado aquí por algunos programas más antiguos todavía los utilizan y tienes que trabajar con estos programas de vez en cuando. Es por ello que las particularidades más de la línea de cabecera son los siguientes: Si una tabla interna con la línea 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 situación antes mencionada: DATA itab1 TYPE TABLE OF scarr WITH HEADER LINE. DATA itab2 LIKE itab1. itab1 = itab2 . Sólo las operaciones con líneas de cabecera! itab1[] = itab2[] . Las operaciones con cuerpo tabla La siguiente sintaxis muy antigua también define una tabla interna con la línea de cabecera, a pesar de que no se indica específicamente. DATA: BEGIN OF itab OCCURS n, field1 TYPE ... , field2 TYPE ... , ... , END OF itab.
  • 48. 48 Ejercicio 2: Estructuras y Tablas 1) Declarar un parámetro de selección 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 parámetro de selección 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 información 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.
  • 49. 49 Unidad 5 Acceso a Base de Datos Leyendo Tablas de Base de Datos Obteniendo Información 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 dinámicamente a SQL Nativo, evitando problemas con futuros cambios de base de datos. El siguiente grafico no muestra de forma genérica como es la sentencia de acceso a Base de datos. SELECT: describe que campos de la tabla van a ser leídos. 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 información que obtendremos de la Base de Datos. WHERE: sirve para filtrar la información que queremos traer de la base de datos.
  • 50. 50 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 después 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)
  • 51. 51 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 leído, 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, asegúrese de que los tipos de campo correspondientes son también los mismas, porque de lo contrario (como en la declaración MOVE), una conversión (complicada) ocurre y es posible que los datos incompletos (causadas por cortes) pueden ser transportados a los campos .
  • 52. 52 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 información 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 traídos 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 información de tablas con MANDT sin especificar el mismo, solo la información 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, debería definir un índice secundario por los campos accedidos en orden para agilizar el acceso. Después de crear y activar un índice, la base de datos optimizara automáticamente 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 automáticamente. Optimiza todos los acceso que se realicen por todos o por parte de la clave. Leyendo Múltiples 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 información usando componentes reusables: . Logical databases: Base de datos Lógicas. (Programas de recuperación de datos que leer los datos de las tablas que van de la mano jerárquicamente). . Function modules: Módulos de Funciones. Son subrutinas guardadas en el sistema SAP usando la encapsulación de funcionalidad.
  • 53. 53 . BAPIs: Módulos de Función que encapsulan Objetos de Negocio. . Methods of global classes: Métodos de Clases Globales. La información correspondiente a estas 4 formas se verán en las unidades correspondientes, mas adelante. Si no hay reutilización de componentes utilizables disponibles para su selección 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.
  • 54. 54 . Unidad 6 Subrutinas en ABAP Subrutinas Una subrutina es una unidad dentro de la modularización del programa donde se encapsula una función en forma de código fuente. Usted saca una parte de un programa a una subrutina para obtener una mejor visión de conjunto del programa principal y usar la secuencia correspondiente en diversas ocasiones. Usando subrutinas significa que su programa se vuelve mas fácil de mantener porque los cambios de funcionalidad solo tienen que ser aplicados en la subrutina y no en varios puntos de un programa. Además puede procesar una subrutina on debugg como una unidad y luego ver el resultado, haciendo mas fácil encontrar un error. Como muestra el siguiente grafico, puede llamar n veces a una misma rutina pasándole valores diferente. Ose variables locales que no quiere que se modifiquen, sino que solo sean utilizadas o modificadas en la rutina.
  • 55. 55 La asignación 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:
  • 56. 56 La llamada ala subrutina se realiza con la palabra reservada PERFORM. La ejecución 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.
  • 57. 57 Se debe especificar el tipo de datos de los objetos que se están 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.
  • 58. 58
  • 59. 59 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 parámetros de selección declarados anteriormente, colocando el resultado en la tabla interna también declarada anteriormente. 6) Por cada loop endloop imprimir por pantalla la siguiente información: En el campo de la estructura percentage calcular el porcentaje de ocupación del avión. (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ó ningún dato, imprimir un mensage advirtiendo eso. 9) Si el usuario realizo un doble click sobre una línea imprimir la siguiente información: a. La guardada anteriormente con hide más: b. Realizar un select a la tabla sbook, filtrada por carrid, connid y fldate. Guardar dicha información 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.
  • 60. 60 . Unidad 7 Procesamiento de Lista Clásica La lista El objetivo principal de una lista es para mostrar los datos con un mínimo de esfuerzos de programación. Las listas también se adoptarán las necesidades especiales de los datos empresariales en cuenta: -Las listas pueden ser diseñados en varios idiomas: Los textos y las cabeceras en la lengua de inicio de sesión cada vez que una traducción correspondiente está disponible. - Las listas pueden mostrar los valores monetarios en la moneda correspondiente. Las siguientes opciones están disponibles cuando se programa una lista: - Pantalla: Se puede añadir colores e iconos. - Impresoras . - Internet / Intranet: El sistema es capaz de convertir automáticamente 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 cálculo).
  • 61. 61 Figure: Standard List Functions La lista estándar de interfaz gráfica 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. lección proporciona más información sobre este. Figure: List and Column Headers Cada lista puede tener una cabecera de línea única lista y hasta cuatro líneas de encabezados de columna. Si no se define cabecera de la lista, el nombre del programa (breve descripción) se utiliza como el encabezado. Para el mantenimiento inicial de los titulos, primero debe activar su programa. A continuación, crear la lista mediante la ejecución del programa. A continuación, puede mantener los encabezados directamente encima de la lista mediante el menú Sistema → Lista → Lista de cabecera.
  • 62. 62 La próxima vez que inicie el programa, aparecerá automáticamente 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 multilingües de las listas Los elementos de texto de un programa - se incluyen también en la cabecera - se puede traducir a diferentes idiomas. Cuando un usuario ejecuta un programa, los elementos pertinentes de texto siempre se muestra automáticamente en el idioma de inicio de sesión del usuario (automática de idioma). Se trata de traducir los elementos de texto de su programa de elegir el menú Ir → Traducción de la ABAP-Editor. Para el diseño de textos en la lista del cuerpo en varios idiomas y utilizar el lenguaje automático, símbolos de texto se utilizan. Un símbolo de texto se compone de un xxx ID de tres dígitos alfanuméricos, así como un texto traducible y, como los encabezados, pertenece a los elementos de texto de un programa. Hay dos opciones para definir los símbolos de texto para su programa:. Desde el Editor de ABAP, seleccione el menú Pasar a → → Elementos de Texto Texto Símbolos o . dirección que el símbolo de texto en su código fuente utilizando la sintaxis se describe a continuación y haga doble clic en su ID (navegación hacia delante). Desde su programa, la dirección en un símbolo de texto con texto-xxx. En tiempo de ejecución el texto se inserta en la lengua de inicio de sesión del usuario si existe la traducción correspondiente (ver. Traducción de los elementos de texto. Arriba). Con el fin de especificar un símbolo de texto más intuitiva también puede utilizar la sintaxis siguiente en lugar de TEXT-xxx: xxx'...'(). Aquí,'...' debe ser el texto del símbolo de texto en el idioma original del programa. Sugerencia: Tenga en cuenta que los elementos de texto también tiene que ser activado.
  • 63. 63 Figura: Generación de un Listado Básico Lo anterior muestra gráfica de la generación de la lista básica como introducción a la lista de detalles. Además de la instrucción WRITE, también puede utilizar SKIP y Uline a la estructura de la lista. Consulte la documentación de la palabra clave de ABAP para estos dos estados. Figura: Generación de una lista de detalles Cuando el usuario selecciona una lista de base por medio de doble clic en la tecla F2 o función, el evento ABAP AT-LINE-SELECTION selección se ha disparado. Si usted quiere tener la pantalla del sistema una lista con la información requerida detallado (lista interactiva) como la respuesta a esta acción del usuario, a continuación, 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 declaración ESCRITURA. Los detalles lista con los datos de salida, que. sobrescribe. la lista de base, se genera automáticamente. Al
  • 64. 64 pulsar el botón con la flecha. Verde. o la tecla de función F3, el usuario puede volver a la lista de base y elegir otra fila. Sugerencia: Si un bloque de AT LINE-SELECCIÓN se implementa en el programa, a continuación, un botón con el símbolo de la lupa también aparece encima de la lista. Marcado de la fila de la lista y luego elegir este botón tiene el mismo efecto que hacer doble clic en la lista de fila. Listas Figura: Generación de varios detalles La selección de filas en la lista de detalles también desencadena el evento AT LINE- SELECTION. Esto significa que el bloque de procesamiento correspondiente en el programa se ejecuta en este caso también. Por lo tanto usted debe ser capaz de determinar dentro de este bloque en el que la lista de la selección 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 básica, .1. para la lista de los primeros detalles, y así sucesivamente. El gráfico anterior muestra el valor de SY-lsind y como se establece en cada caso: Cada selección de filas aumenta automáticamente 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- selección (por ejemplo, por medio de una instrucción CASE). Una declaración WRITE se ejecuta siempre en el nivel actual lista. Si no se genera la lista de detalles de una selección de filas en el bloque de conducto AT, SY-lsind se reduce automáticamente a uno. Posteriormente, el sistema muestra el mismo nivel en que la selección se llevó a cabo la fila.
  • 65. 65 Figura: Ejemplo de sintaxis simple El programa de ejemplo anterior tiene la siguiente función: - En la lista básica, el texto. Básica 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 línea de la lista de detalles es segundo seleccionado, SY-lsind se incrementa a 3, pero no hay una lista más información se genera. Por lo tanto sy-lsind se reduce automáticamente en 1 y la lista de detalles segunda se muestra de nuevo. Figura: Ejemplo de aplicación de una lista de detalles El gráfico anterior muestra un ejemplo de aplicación de un programa con una lista básica y una lista de detalles: - Las conexiones de vuelo con datos detallados se debe mostrar en la lista básica. Se trata de leer desde una tabla de base de datos SPFLI. - En la lista de detalles, los planes de vuelo para la conexión 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 información pertinente para la lista de detalles cuando una fila de lista de base se selecciona la fila seleccionada o por lo menos los valores
  • 66. 66 clave de la fila debe estar disponible para el evento AT LINE-SELECTION. Los gráficos siguientes muestran cómo se puede implementar. Figura: Almacenamiento en búfer de datos específicos 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 básica, los valores clave de interés 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 disposición de nuevo. El registro específico de los valores fundamentales en el ámbito HIDE ocurre por medio de la declaración HIDE (aquí: HIDE: wa_spfli-carrid, wa_spfli-connid.), Que debe ser ejecutado inmediatamente después de la generación de cada fila lista de base. Cuando se selecciona la fila, los valores clave de interés 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 selección se ha disparado. El siguiente gráfico ilustra este. Sugerencia: Usted no tiene a la salida de los campos HIDE con la declaración de escribir primero. Esto significa: para cada fila de lista de base, también puede almacenar información que no aparece en la lista básica en el área HIDE por medio de la declaración HIDE. El campo HIDE también puede ser un "plano" estructura.
  • 67. 67 Figura: Flujo de datos para la selección de fila Sugerencia: las listas de los detalles no han fijado encabezados estándar como listas básicas, ya que pueden variar de forma dinámica. Por lo tanto, puede que tenga que aplicar sus propias cabeceras utilizando instrucciones WRITE. El siguiente gráfico muestra la totalidad AT LINE-SELECTION bloque del programa de ejemplo. En este bloque, básicamente de datos (en este caso los horarios de vuelo) se lee y la producción por medio de los valores HIDE que se han transportado a los campos de origen. Figura: Fragmento de código fuente (Ejemplo de Aplicación)
  • 68. 68 Pantalla de Selección Ventajas de las pantallas de selección Figura: Arquitectura y efectos de selección de pantalla En general, las pantallas de selección se utilizan para introducir criterios de selección para la selección 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 sólo los de la base de datos. Además de reducir el requisito de memoria, esto también reduce la carga de red. Figura: Pantalla de selección de atributos
  • 69. 69 La pantalla de selección tiene las siguientes funciones estándar: -Textos sobre la pantalla de selección (textos de selección) se puede mantener en varios idiomas. En tiempo de ejecución de los textos se muestran automáticamente en el idioma de inicio de sesión del usuario. (Automática del idioma) - El sistema verifica los tipos de forma automática: Si el usuario escribe algo que no se corresponde con el tipo del campo de entrada, la interfaz gráfica de usuario SAP lo ignorará, por lo que ni siquiera van a aparecer en la pantalla de selección. - Además de las entradas solo valor (PARAMETERS), también se puede aplicar selecciones complejas (SELECT-OPTIONS) en la pantalla de selección. 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 documentación (documentación del elemento de datos) se pueden mostrar en el campo de entrada, utilizando la F1 (Ayuda para entradas) la tecla de función. - La ayuda del elemento de datos de búsqueda para mostrar las posibles entradas se pueden llamar con el F4 (Ayuda para entradas) la tecla de función. - Usted puede ahorrar fácilmente completado pantallas de selección de variantes para su reutilización o el uso en el fondo la operación. Figura: Uso de las opciones de selección El gráfico anterior ilustra el uso de selection options, que permiten entradas complejas. Cada pantalla de selección contiene un icono de información (también conocido como una ayuda "en pantalla" icono). Seleccione este icono para mostrar información adicional.
  • 70. 70 Figura: Información sobre Tipos Semántica Mundial en la pantalla de selección Si un campo de entrada se escribe con un elemento de dato, la siguiente información semántica adicional está disponible en la pantalla de selección: - La etiqueta del campo a largo del elemento de datos se puede copiar para describir el campo de entrada en la pantalla de selección (selección de texto). (Véase el gráfico siguiente). La documentación del elemento de datos está disponible automáticamente 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 búsqueda es un objeto independiente diccionario que muestra una lista de posibles valores de entrada para el usuario (posiblemente con otra información), 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 información semántica del elemento de datos está disponible en la pantalla de selección. Si el campo de la estructura también se copia en un buscar ayuda, entonces esto. Sobrescribe. la ayuda de búsqueda del elemento de datos. Para obtener más información, consulte la documentación en línea para el Diccionario ABAP. Figura: Selección de Textos
  • 71. 71 En la pantalla de selección, los nombres de los campos de entrada aparecen como su descripción de forma predeterminada. Sin embargo, puede reemplazarlos por los textos de selección correspondientes, que luego se puede traducir a los idiomas más que usted requiere. En tiempo de ejecución, los textos de selección son mostrados en la lengua de inicio de sesión del usuario (automática de idioma). Al igual que los encabezados de la lista y los símbolos de texto, textos de selección pertenecen a los elementos de texto del programa. Desde el Editor de ABAP, seleccione el menú Ir GoTo → Text Elements→Selection Texts para su mantenimiento. Puede implementar su traducción con el menú Ir →.Traducción (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 opción fácil para la normalización de los textos. Figura: Variantes Las pantallas de selección efectuada son las variantes del programa. Después de que el programa ha sido iniciado, el usuario puede cargar variantes a la pantalla de selección respectivo para facilitar repetidas o casi idénticos entradas idénticas. Usted tiene que incluir una variante cuando se programa un programa de ABAP en corrida de fondo, si el programa tiene una pantalla de selección, como entradas de usuario no son posibles en el fondo. Para definir las variantes específicas-programa por iniciar el programa, completando la pantalla de selección y guardarlo (botón de disco). También puede definir los diferentes atributos de la variante. Si las variantes ya han sido definidos para un programa, a continuación, un pulsador adicional aparece en la pantalla de selección con la bandera de texto. Variante conseguir ..... Este botón se enumeran las variantes definidas para la selección. Con el fin de poder definir sus propias variantes, el usuario debe contar con la autorización correspondiente (en el sistema de producción). Pero también puede definir variantes en el sistema de desarrollo y luego los han transportado al sistema de producción. Variantes con el prefijo de nombre 'CUS &' son variantes del sistema. Son transportados como objetos del repositorio común y no específica del cliente. Todas las otras variantes son específica 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 gestión 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 más información sobre las variantes, elija el botón de información sobre atributos de la variante en la pantalla a fin de mantener sus atributos de la variante.
  • 72. 72 Opciones de entrada en la pantalla de selección Figura: un solo valor de entrada (Declaración PARÁMETROS) Lo anterior muestra el uso de gráficos y el comportamiento en tiempo de ejecución de una variable de entrada se define mediante una instrucción PARÁMETROS. Una vez más, la definición de dicha variable de entrada crea una variable en el sistema e, implícitamente, genera una pantalla de selección con una opción 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 Parámetros se utiliza en lugar de datos. Usted tiene que considerar tres características: - El nombre de la variable de entrada puede ser de hasta ocho caracteres de longitud. - No puede ser escrita con la F tipos estándar, cuerda y XSTRING. - La asignación de un valor predeterminado no se implementa con la adición de valor, pero con la adición DEFAULT. Una asignación de valores por defecto por medio de la adición DEFAULT o el valor de asignación antes de mostrar la pantalla de selección (inicialización) se muestra en la pantalla de selección 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 selección de base de datos. Figura: Introducción de restricciones complejas (la instrucción SELECT-OPTIONS)
  • 73. 73 opciones de selección se determinarán en el momento de usar el nombre SELECT-OPTIONS PARA data_object. Norma, donde nombre es el nombre de la opción de seleccionar y data_object es una variable ya definida. Esta definición crea una tabla interna con el nombre especificado en el programa (en este caso so_car) y genera una pantalla de selección con una opción de entrada para limitar la variable especificada (en este caso-wa_spfli carrid). entradas del usuario son transportados a la tabla interna generada automáticamente cuando se selecciona Ejecutar. Este cuadro siempre tiene cuatro columnas: signo, opción, de bajo y alto. Lo anterior muestra gráfica, 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 selección se inscriben pueden ser utilizados para la selección de bases de datos, como se ilustra en el gráfico. 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 condición de compuestos siguientes se utiliza para limitar la selección de datos: ( I_1 OR ... OR I_n ) AND ( NOT E_1 ) AND ... AND (NOT E_m ) Si la tabla está vacía porque no hay restricciones, las condiciones en que se aplica siempre en el campo respectivo. Sugerencia: El operador IN también se puede utilizar en expresiones lógicas: SI- wa_spfli carrid EN so_car. Para definir una opción de selección, los mismos tres particularidades de aplicación a la declaración parámetros (véase más arriba). Si la tabla interna de la opción de selección se rellena con la adición DEFAULT o APPEND declaración antes de la pantalla de selección (inicialización, su contenido se muestra en la pantalla de selección tal como se sugiere las condiciones que se pueden sobrescribir. Para más detalles, consulte la documentación de la palabra clave para SELECT- OPTIONS. Evento después de la Selección Screen Figura: En el evento AT SELECTION-SCREEN
  • 74. 74 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.
  • 75. 75 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.
  • 76. 76 . 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. Diseño de pantallas de selección 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.
  • 77. 77 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 selección EN el acontecimiento AT SELECTION-SCREEN están ambos accionados cerca el elegir Enter tan bien como ejecute (F8). Después 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 selección se exhibe otra vez.
  • 78. 78 Figura: Diálogos de error en AT-SELECCIÓN DE PANTALLA Inmediatamente antes de procesar el AT SELECTION-SCREEN bloque, las entradas de usuario se transfiere automáticamente a las variables correspondientes en el programa. Por lo tanto, tiene sentido para la aplicación requiere comprobaciones de autorización de entrada y en este bloque de tratamiento. Si el resultado de verificación es negativa, sólo tiene que enviar un mensaje de error al usuario y tener la pantalla de selección de muestra de nuevo. El usuario tiene entonces la opción de hacer nuevas entradas. Por el contrario, un mensaje de error en el START-OF-SELECTION bloque se mostrará en el programa de terminación. El siguiente gráfico ilustra un simple programa de ejemplo con el cheque de autorización y de diálogo de error en la pantalla de selección. Figura: Ejemplo de Sintaxis: Consulte con autorización de diálogo de error Información adicional se puede encontrar en la documentación de palabras clave. " SELECTION-SCREEN.
  • 79. 79 Unidad 8 Sentencias Útiles ABAP CONCATENATE Definición Se utiliza para concatenar varios campos alfanuméricos 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 operación. Con la cláusula SEPARATED BY se puede especificar un campo alfanumérico (el campo <s>) que será utilizado como separador entre los campos <c1> ... <cn>. Si el resultado de la concatenación 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 ' Baños', NAME(20). CONCATENATE ONE TWO THREE INTO NAME. La variable NAME valdría: IvanRodrigoBaños Ejemplo 2: DATA: ONE(10) VALUE 'Ivan', TWO(3) VALUE 'Rodrigo', THREE(10) VALUE 'Baños', NAME(20), SEPARATOR(4) VALUE 'GAUSS'. CONCATENATE SPACE ONE TWO THREE INTO NAME SEPARATED BY SPACE. La variable NAME valdría: Ivan Rodrigo Baños. SPLIT Definición Divide un campo alfanumérico en varios campos, gracias a algún 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. También 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>.
  • 80. 80 Por cada parte del campo <campo el sistema añade una nueva línea 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 líneas, la primera en blanco, la segunda contiene "Two" y la tercera contiene "Three". COMMIT WORK Definición 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 programación de transacciones de diálogo. Con la cláusula AND WAIT, el programa se para hasta que la tarea de actualización termina. Si la actualización es satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0. TRANSLATE Definición Se utiliza para convertir caracteres de mayúscula a minúscula o viceversa, o para realizar sustituciones de caracteres a través de ciertas reglas. Sintaxis: TRANSLATE <campo> TO { UPPER | LOWE } CASE. Con la opción UPPER, las letras minúsculas de <campo> se convierten en mayúsculas. Y con la opción LOWER las letras mayúsculas se convierten en minúsculas. Para utilizar reglas de conversión se utiliza la siguiente sintaxis. TRANSLATE <campo> USING <regla>. Esta sentencia reemplaza todos los caracteres de <campo> que cumplan la regla de sustitución <regla>. La regla de sustitución contiene pares de letras, la primera de ellas indica el carácter a sustituir, la segunda indica el carácter de sustitución. <regla> puede ser una variable. CONDENSE Definición Para borrar espacios en blanco superfluos en campos alfanuméricos.
  • 81. 81 Sintaxis: CONDENSE <campo> [ NO-GAPS ]. Borra cualquier secuencia de espacios en blanco, dejando sólo uno que exista entre palabras existentes en <campo>. Los espacios en blanco por la izquierda también desaparecen. Con la cláusula 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 sería: 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 valdría: Dr.MichaelHofmann UNPACK Definición Desempaqueta el contenido de un campo sobre otro. Sintaxis: UNPACK <campo1> TO <campo2>. Desempaqueta el campo <campo1> en el campo <campo2>. Es la operación 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'.
  • 82. 82 Unit 9 Modulo de funciones Módulos de función son procedimientos especiales que son visibles de forma global y que se puede llamar desde otros programas ABAP. Sólo pueden ser definidas y aplicadas de programas especiales de ABAP, denominados grupos de funciones. Screens Grupos de función puede contener pantallas, que permite encapsular los cuadros de diálogo de usuario en los módulos de función. Remote capability Módulos de función se puede llamar por sistemas externos (Remote Function Call). Update Algunos módulos de función (módulos de actualización) puede ser utilizado para las actualizaciones. No se ejecutan directamente cuando se le llama, sino que al final de la unidad lógica de trabajo (LUW). Asynchronous execution Módulos de función se ejecuta en paralelo en un proceso de trabajo por separado. El programa de llamada no espera hasta que la transformación del módulo de funciones se haya completado. Testeo modulo de funciones standard TRX: SE37 Modulo Funciones “POPUP_TO_CONFIRM” -> Ejecutar
  • 83. 83 Presionando Si, retorna: Presionando No, retorna: exporting depende de donde me encuentro. exporting es lo que mando e importing es lo que envío, en invocación de la función 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.
  • 84. 84 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 códigos de operación o por sus nombres. Sirven exclusivamente como programas principales de los módulos de función. En la mayoría de los casos, un grupo de funciones contiene varios módulos de función que realizan funciones relacionadas o actuar en los mismos datos. Cuando un programa ABAP llama a un módulo de funciones, el grupo de función correspondiente se carga en la sesión de residente, donde permanece hasta que el programa de llamada termina. Si el programa llama a los módulos de varias funciones del mismo grupo de funciones (o la misma función que el módulo varias veces) de forma consecutiva, el grupo de funciones sólo se carga durante la primera llamada. Logical View of a Function Group Aparte de los módulos de función, los grupos de función también puede contener los siguientes elementos: . Datos declaraciones (objetos de datos globales) . Subrutinas . Pantallas Estos elementos pueden ser utilizados por todos los módulos de función en el grupo de funciones.
  • 85. 85 Para crear un grupo de funciones, debemos seleccionar en el menú de la transacción 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 función y presionamos el botón Save como vemos a continuación:
  • 86. 86 Ejercicio 1: Crear un Grupo de Funciones Objetivos del Ejercicio Después 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 módulo de función accedemos a la transacción SE37. Allí escribiremos el nombre de nuestra función y presionaremos el boton Create Attributes: aquí especificamos la descripción de la función y el tipo de función que puede ser Normal, RFC o Update module.
  • 87. 87 Import: aquí especificamos los parámetros de salida de la función Export: aquí especificamos los parámetros de entrada de la función Paso por valor: los parámetros formales son creados como copias de los parámetros actuales. Los cambios en los parámetros formales no afectan a los parámetros actuales. Paso por referencia: solo la dirección de los parámetros actuales se transfieren a los parámetros formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si cambiamos los parámetros formales, el contenido del campo del programa que hace la llamada también cambia.
  • 88. 88 Changing: aquí especificamos los parámetros de salida que cambiarán de valor con la ejecución de la función. Tables: aquí especificamos las tablas que se utilizan en la función. Source Code: aquí pondremos el código Abap de la función. Exceptions: aquí especificamos las excepciones de la función. Una excepción es un error que se produce al ejecutar la función y que ha sido catalogado cuando se creo el módulo de función de modo de poder identificar rápidamente el motivo del error Documentacion
  • 89. 89 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
  • 90. 90 Ejercicio 2: Crear un Modulo de Funciones Objetivos del Ejercicio Después 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: Preparación 1. Desplegar una modulo de funciones existente con la Transacción SE37 y Familiarizarse con los tipos de parámetros 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 parámetro 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 parámetros opcionales? Elija si los parámetros a transferir van a ser por parámetros o por valor? 3. Defina un parámetro de salida para la lista de vuelos. Utilice un tipo de tabla apropiada para el parámetro. 4. Ingrese la documentación necesaria para el modulo de funciones, para los parámetros y par alas excepciones. CREAR modulo de funciones Z_BC402_46_get_conn_list e implementarlo, ver ZSAP_P_46_GRF01
  • 91. 91 Llamado de modulo de funciones: Boton PATTERN, llamamos POPUP_TO_CONFIRM
  • 92. 92 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 Después de completar este ejercicio usted va a poder: . Usar declaraciones globales . Entender como es el procesamiento de un modulo de funciones . Testiar secuencial mente módulos de Funciones Tarea 1: 1. Crear una tabla interna en el Top de la función y luego llenarla con un Select. 2. Crear una subrutina en la función en donde manipularemos los resultados obtenidos para solo devolver algunos Tarea 2: (Opcional) 1. Si la tabla se encuentra vacía generar una excepción para este caso.
  • 93. 93 Qué es un módulo de función RFC? Un módulo de función RFC consiste en una llamada a una función 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 comunicación puede darse entre sistemas Sap o entre un sistema Sap y otro sistema que no sea Sap. Para llamar a una función RFC se debe agregar la claúsula DESTINATION al momento de declarar la función, como vemos en el siguiente ejemplo. Cómo crear una RFC? Una función RFC se crea de la misma manera que se crea un función. Se accede a la transacción SE37 y se completan los mismos parámetros que completamos para crear una función a excepción de que se debe seleccionar en la solapa de Atributos la opción Remote Enabled Module. Los parámetros que se crean en una función RFC no se pueden pasar por Referencia, deben pasarse por valor. Esto se logra tildando el check Pass value para cada parámetro en las solapas IMPORT, EXPORT y CHANGING.
  • 94. 94 RFC( Remote Function Call ) en SAP R/3 Esta tecnología se usa para comunicar entornos diferentes que pueden ser del mismo o de tipos diferentes, otra forma de realizar conexión entre procesos es por medido del uso de las tecnologías 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 conexión 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 función( pertenece al grupo ZUAXRFC ) FUNCTION Z_UAX_RFC.
  • 95. 95 SELECT * FROM ZUAXRFC INTO TABLE TAB_ZUAXRFC. ENDFUNCTION. 4.- Crear PROGRAMA( llama la función Z_UAX_RFC ) REPORT ZUAXRFC. * -------------------------------------------------------------------- * -------------------------------------------------------------------- * Programa : zuaxrfc * autor : Francisco Reyes * fecha : 13 de abril del 2000 * objetivo : Probar comunicación RFC * -------------------------------------------------------------------- * tablas usadas por el proceso * tabla descripción * zuaxrfc tabla de prueba para comunicación rfc * -------------------------------------------------------------------- * Descripción del proceso * 1.- Crea tabla interna en función de la tabla ZUAXRFC * 2.- Llama la función rfc z_uax_rfc que le devuelve la tabla tab_zuaxxrfc * 3.- Actualiza la tabla zuaxrfc de la maquina destino en función de los datos recibidos de la función 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.
  • 96. 96 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 métodos de los objetos de negocios, y gracias a ellos podemos realizar cargas evitando utilizar Batch Inputs por Call Transaction. Básicamente son funciones como cualquier otra función en ABAP, así que poseen las mismas características: parámetros de entrada, de salida, tablas, excepciones... Por lo general cuando se hace un modificación de un objeto con una BAPI es necesario realizar un COMMIT explícito mediante la función BAPI_TRANSACTION_COMMIT. Si quieren probar si una función les sirve para cargar algún dato en particular, pueden utilizar la transacción SE37 e ir al menú Módulo de Funciones->Verificar->Secuencias Test. Allí se pueden encadenar funciones, de manera de poder ejecutar primero la BAPI y después la función BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es cargado por la BAPI que estén probando. Ventajas de usar BAPI Las BAPIs son métodos estandarizados de los Objetos de Negocio Sap R/3, que permiten la integración de los componentes de software de los clientes y de terceros. Algunas de las ventajas de usar BAPIs son: .- Es un Estándar de Negocio .- Es un Estándar Consensuado .- Garantiza estabilidad y compatibilidad futura .- Garantiza orientación a objetos .- Independencia de entorno (apertura) Usar BAPIs en programas de aplicación Actualmente una BAPI puede ser invocada de dos formas diferentes: .- Llamar la BAPI en el repositorio .- Hacer llamada RFC a la función que implementa la BAPI Listado de BAPIs SAP: BAPI de creación de Pedidos de Venta: BAPI_SALESORDER_CREATEFROMDAT2 BAPI de creación de Pedidos de Compra: BAPI_PO_CREATE BAPI de Verificación de Facturas: BAPI_INCOMINGINVOICE_CREATE BAPI de facturación: BAPI_BILLINGDOC_CREATEMULTIPLE Bapi de Movimiento de mercancias: BAPI_GOODSMVT_CREATE BAPI modificación Pedido de ventas: BAPI_SALESORDER_CHANGE