Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Funcionales
1
ndice
Unidad 1 ......................................................................................................................... 4
Introduccin a ABAP Workbench ............................................................... 4
Repositorio Navegador de Objetos ............................................................... 4
Buscar Objetos en el Repositorio. .................................................................. 5
Trabajando con el Navegador de Objetos. ................................................... 6
Desarrollo de Programas y rdenes de Transporte .................................. 8
Creacin de Paquetes (Ex Clase de desarrollo) .......................................... 8
Introduccin al Lenguaje de Programacin ABAP. ................................... 9
Crear un Programa ABAP. .............................................................................. 11
Activacin de Programas ................................................................................ 12
Barra de botos del Editor ABAP .................................................................... 13
Crear Transacciones......................................................................................... 13
Ejercicio 1: Paquete y Orden de Transporte ............................................ 15
Ejercicio 2: Programa ................................................................................. 15
Ejercicio 3: Transaccin............................................................................. 15
Estructura de un Programa ABAP ............................................................ 16
Unidad 2 ....................................................................................................................... 17
Introduccin al Diccionario ABAP ............................................................ 17
Ejercicio 1: Ingresar a la transaccin SE11 y visualizar la tabla SCARR.
...................................................................................................................... 19
Unidad 3 ....................................................................................................................... 20
Introduccin a los Eventos ABAP ............................................................. 20
Unidad 4 ....................................................................................................................... 23
Elementos Bsicos del Lenguaje ABAP ................................................... 23
Trabajando con DATA OBJECTS .................................................................. 23
Data Types y Data Objects .............................................................................. 23
Sentencias bsicas ABAP ............................................................................... 26
Sentencias Condicionales............................................................................... 28
Sentencias LOOPS o repetitivas. .................................................................. 29
Creacin de Mensajes. ..................................................................................... 29
Trabajando con ABAP Debugger ................................................................. 31
Selection Screen ......................................................................................... 32
Declarando campos como parmetros. .................................................... 33
Ejercicio 1: Calculadora ............................................................................. 35
Trabajando con Estructuras ...................................................................... 36
Trabajando con ABAP Debugger ................................................................. 38
Trabajando con Tablas Internas ................................................................ 39
Ejercicio 2: Estructuras y Tablas .............................................................. 48
Unidad 5 ....................................................................................................................... 49
Acceso a Base de Datos ............................................................................ 49
Leyendo Tablas de Base de Datos ............................................................... 49
Obteniendo Informacin .................................................................................. 49
Leyendo Mltiples Tablas de Base de Datos ............................................. 52
Ejercicio 1: Estructuras y Tablas .............................................................. 53
. Unidad 6 ..................................................................................................................... 54
Subrutinas en ABAP ................................................................................... 54
2
Subrutinas ........................................................................................................... 54
Ejercicio 1: Listas - Subrutinas - Eventos ................................................ 59
. Unidad 7 ..................................................................................................................... 60
Procesamiento de Lista Clsica ................................................................ 60
La lista .................................................................................................................. 60
Pantalla de Seleccin ................................................................................. 68
Ventajas de las pantallas de seleccin ..................................................... 68
Declarando Campos con Select Options .................................................... 74
Diseo de pantallas de seleccin con Selection Screen ........................ 76
Authority-Check ................................................................................................. 77
Unidad 8 ....................................................................................................................... 79
Sentencias tiles ABAP ............................................................................. 79
CONCATENATE ................................................................................................. 79
SPLIT ..................................................................................................................... 79
COMMIT WORK .................................................................................................. 80
TRANSLATE ........................................................................................................ 80
CONDENSE ......................................................................................................... 80
UNPACK ............................................................................................................... 81
Unidad 9: Creacin y llamadas a Grupo de Funciones y a Mdulos de
Funciones.
1. User Exit
2. Field Exit
3. Screen Exit
4. BADIS
5. Ampliacin de Tablas SAP
6. Ampliacin del Men SAP
3
Unidad 1
Introduccin a ABAP Workbench
El repositorio consta de todos los objetos de desarrollo del sistema: los programas, mdulos de
funcin, las definiciones de tablas de base de datos y otros objetos.
El Repositorio se utiliza para mantener los objetos definidos por SAP, as como objetos definida
por clientes. El repositorio est en la base de datos y siempre es independiente de mandante,
es decir, un objeto de repositorio puede ser asesado desde cualquier cliente.
Aparte del repositorio, la base de datos tambin contiene tablas de aplicacin y customizing,
que suelen ser especficos del cliente, es decir, que tienen un columna de cliente.
4
El Repositorio es Cross Aplication, o sea que los programas no estn divididos por modulo. La
nica diferencia entre los programas son las tablas de donde toman la informacin.
5
Trabajando con el Navegador de Objetos.
Con el Object browser podemos crear, modificar, borrar, etc. cualquier objeto de SAP. Para
poder acceder ingresamos en la transaccin SE80 y ah oprimimos el botn Browser de
Repository.
Aqu podremos crear todo tipo de objetos abap. Hay que tener en cuenta que cualquier objeto
que se cree tienen que comenzar con la letra Z o Y. La diferencia entre una y la otra es que la
Z se utiliza para transportar ese objeto a produccin y la Y es para programas de prueba que
van a ser borrados.
Para crear cada uno de estos objetos, se puede acceder tambien a una transaccin especifica
por objeto. Estas transacciones son las siguientes:
6
Un rea de herramienta para visualizar y editar un objeto mediante el desarrollo de la
herramienta adecuada.
Puede mostrar u ocultar el rea de navegacin. (Pantalla completa on / off).
En ambas reas, usted puede elegir las funciones mediante un men contextual, que
se acceso mediante el botn derecho del ratn. El men contextual ofrece slo las
funciones que han sido diseados para el objeto en cuestin.
7
Desarrollo de Programas y rdenes de Transporte
8
2. Pasos para crear un paquete: Atributos.
ABAP fue desarrollado por SAP como lenguaje de informes para SAP R/2 en los aos 80, una
plataforma que permita a las grandes corporaciones construir aplicaciones de negocios para
gestin de materiales y finanzas. ABAP, muy parecido al COBOL en sus orgenes,
originalmente significaba Allgemeiner Berichtsaufbereitungsprozessor, palabras alemanas para
procesador genrico para la preparacin de informes. En sus inicios ABAP inclua el concepto
de Bases de datos lgicas, que suministraba un alto nivel de abstraccin para el acceso a
bases de datos.
ABAP fue pensado como un lenguaje de programacin para que los usuarios finales pudieran
manipular la informacin, pero el 4GL se fue volviendo demasiado complicado para usuarios
normales, por lo que es necesario programadores experimentados para realizar desarrollos.
ABAP se mantuvo como el lenguaje de desarrollo para la siguiente versin cliente-servidor de
SAP R/3, que fue lanzada al mercado en 1992, en el que casi todo el sistema, menos las
llamadas al sistema bsicas estaban escritas en ABAP. En 1999, con el lanzamiento de la
9
versin 4.6 de R/3, SAP lanz una extensin orientada a objetos denominada ABAP Objects.
La versin ms actual en estos momentos de SAP es la release 6.0.
La ltima plataforma de desarrollo de SAP, NetWeaver, soporta ABAP y Java como lenguajes
de programacin.
El * se usa como comentario al igual que doble comilla. Los dos puntos se usan APRA
informar mas de una cosa con la misma palabra reservada y se va separando con coma.
10
Hay varias variables de sistema las mas importantes son las siguientes:
2. Quite el tilde de TOP Include. (De lo contrario, su cdigo fuente se distribuye a varios
programas.)
3. Cambiar el ttulo de texto explicativo y, en este paso, siempre se elige programa ejecutable
como el tipo de programa. Todos los otros programas atributos son opcionales. Consulte la
ayuda en F1 para ms detalles.
11
Activacin de Programas
Los diferentes estados en los que se puede encontrar un programa son Activo, Inactivo,
Inactivo tratado. Tengan en cuenta que cuando un programa esta inactivo siempre van a tener
otro programa es estado Activo.
12
Barra de botos del Editor ABAP
Cambiar de Programa
Chequear Sintaxis
Activar un Programa
Ejecutar un Programa
Tabular el programa y poner en mayscula palabras claves
Crear Transacciones
Una Transaccin es como un acceso directo a un programa. Se ejecutan en el cuadro de
comando y se pueden agregar a favoritos. Se pueden crear desde la transaccin SE80 o la
SE93, de la siguiente manera.
13
14
Ejercicio 1: Paquete y Orden de Transporte
Ejercicio 2: Programa
Ejercicio 3: Transaccin
15
Estructura de un Programa ABAP
Programa Main:
Report ZCURSOS.
INCLUDE zi_zcursos_top.
INCLUDE zi_zcursos_screen.
INCLUDE zi_zcursos_form.
INITIALIZATION.
..
..
AT SELECTION-SCREEN.
..
..
START-OF-SELECTION.
..
..
16
Unidad 2
Introduccin al Diccionario ABAP
El Diccionario ABAP permite la gestin central de todos los tipo de definiciones utilizadas en el
sistema R / 3.
En el Diccionario de ABAP, puede crear tipos definidos por el usuario (Elementos de datos,
Estructuras y tipos de tabla) para su uso en programas de ABAP o Mdulos de Funcin y en
objetos de base de datos como tablas, ndices y vistas.
El Diccionario ABAP tambin ofrece una serie de servicios que apoyan programa desarrollo.
Por ejemplo, el establecimiento y la liberacin de los cierres, la definicin de un Ayuda de
entrada (F4 de ayuda), y adjuntar una ayuda de campo (Ayuda F1) a un campo de pantalla se
apoyo.
17
Tablas y vistas de base de datos puede ser definido en el diccionario ABAP.
Estos objetos son creados en la base de datos. Los cambios en la definicin de una tabla o
vista base de datos son tambin automticamente realizados en la base de datos.
Ejemplo de Estructuras:
Estructura: Z_DATOS_PERSONALES
Nombre
Apellido
Telfono
18
Ejercicio 1: Ingresar a la transaccin SE11 y visualizar la tabla SCARR.
19
Unidad 3
Introduccin a los Eventos ABAP
ABAP es un lenguaje de programacin estructurado y secuencial. Para poder manejar
diferentes situaciones se encuentran los eventos, del los cuales podemos destacar:
INITIALIZATION
AT SELECTION-SCREEN
START-OF-SELECTION
Cuando se inicia un programa de ABAP, todos los objetos de datos globales de los programas
son los primeros creado en la memoria de trabajo (asignacin de memoria). Despus de eso,
en tiempo de ejecucin se desencadena varios acontecimientos en sucesin. Si existe un
bloque de procesamiento en un evento en el programa, las declaraciones de este bloque se
ejecutan en secuencia.
El orden como se ejecutan es el siguiente:
1. INITIALIZATION
2. AT SELECTION-SCREEN
3. START-OF-SELECTION
20
El ejemplo dado a continuacin, contiene una pantalla de seleccin con un campo de entrada
para una fecha.
En circunstancias normales, la fecha actual es la de aparecer como el valor por defecto
(DEFAULT SY-DATUM). Sin embargo, bajo ciertas condiciones (IF) se mostrara el mismo da
de la semana siguiente (pa_date = pa_date + 7.).
En el mismo grfico se muestra cmo el sistema de ejecucin reacciona cuando un bloque
falta. Simplemente, no hay instrucciones ejecutadas por el correspondiente y se continua con el
evento siguiente.
Si no hay ningn evento implementado dentro del programa, asume que todas las sentencias
corresponden al STAR-OF-SELECTION.
Adems de los eventos ya mencionados existen otro que veremos ms adelante en este
mismo manual. Ej. AT LINE-SELECTION, este evento se ejecuta cuando el usuario hace doble
clic en una lista.
21
Este evento puede ser utilizado, por ejemplo, para mostrar la informacin detallada del registro
seleccionado en la lista.
Adems de los eventos ya mencionados, se pueden utilizar otros bloques de procesamiento.
Por ejemplo las Subrutinas (FORM ENDFORM) este bloque es ejecutado por la sentencia
(PERFORM).
El siguiente grafico muestra la estructura general de un programa ABAP:
Report ZCURSOS.
INITIALIZATION.
..
..
AT SELECTION-SCREEN.
..
..
START-OF-SELECTION.
..
..
22
Unidad 4
Elementos Bsicos del Lenguaje ABAP
Trabajando con DATA OBJECTS
D
Type for date(D), format: YYYYMMDD, length 8 (fixed)
T
Type for time (T), format: HHMMSS, length 6 (fixed)
I
Type for integer (I), length 4 (fixed)
F
Type for floating point number (F), length 8 (fixed)
STRING
Type for dynamic length character string
XSTRING
Type for dynamic length byte sequence (HeXadecimal string)
Los siguientes tipos de datos ABAP Standard son incompletos. Esto significa que no contienen
la longitud definida.
C
Type for character string (Character) for which the fixed length is to be
specified
N
Type for numerical character string (Numerical character) for which the
fixed length is to be specified
X
Type for byte sequence (HeXadecimal string) for which the fixed length is
to be specified
23
P
Type for packed number (Packed number) for which the fixed length is
to be specified.
(In the definition of a packed number, the number of decimal points may
also be specified.)
Un tipo de datos declarado en el diccionario ABAP es llamado global y puede ser usado por
cualquier programada ABAP.
En este captulo podremos ver como declarar internamente en nuestros programas cada uno
de los tipos de datos.
Los datos tipos de datos globales se podrn ver en el curso de Diccionario de Datos.
Hay 3 tipos de categoras de tipos de datos: Standard, Local y Global.
24
En el siguiente grafico podremos ver la palabra reservada VALUE para inicializar una variable
con un valor predefinido.
25
Ejemplo: DATA: MYVAR.
Constantes: Tipos de datos fijos requieren valores fijos que se deben cargar cuando se
declaran las constantes.
Usted puede definir constantes con la palabra reservada CONSTANTS. Se define de manera
similar a los DATA Elements con el agregado de la palabra VALUE que es un requisito
obligatorio.
Los tipos de datos locales solo pueden ser usadas en el programa que fueron definidas. En
contraposicin los tipos de datos globales pueden ser usados por todo el sistema, adems de
las siguientes ventajas:
26
Cuando se inicia el programa, el contexto del programa se carga en un rea de memoria del
servidor de aplicaciones y la memoria se pone a disposicin de los objetos de datos definidos
en el programa. Todos los Data Objects son asignados previamente con el valor inicial del tipo
especfico, excepto si un valor diferente fue pre-asignado mediante la sentencia VALUE.
Usted puede utilizar la instruccin MOVE para transferir el contenido de un objeto de datos a
otro objeto de datos. Los siguientes dos sintaxis tienen el mismo efecto:
En ambos casos los objetos var1 y var2 son de diferentes tipos, por lo tanto podra haber un
conflicto de tipos. En este caso, la conversin de tipos se realiza de forma automtica.
+ SUMA
- RESTA
* Multiplicacin
/ Divisin
** Exponencial
27
Sentencias Condicionales
28
Sentencias LOOPS o repetitivas.
DO.
IF <condicin>.
EXIT.
ENDIF.
ENDDO.
DO n TIMES.
Sentencias ABAP
ENDIF.
WHILE <condicin>.
Sentencias ABAP
ENDWHILE.
La sentencia DO ENDDO, solo tiene sentido si colocamos la palabra reservada EXIT con
alguna condicin que amerite salir.
La sentencia SELECT y la sentencia LOOP se utilizan para recorrer tablas, la primera tablas de
base de datos y la segunda tablas internas.
Creacin de Mensajes.
Para crear mensajes se utiliza la transaccin SE91. En ella se crea una clase de mensajes y
dentro podremos agregar todos los mensajes que queramos. La idea es no poner los textos de
los mensajes dentro de cdigo sino dentro de esta clase de mensajes en donde tambin se los
puede traducir y que tomen el idioma que el usuario esta logueado.
29
Dentro de nuestro programa ABAP con el botn PATRON podremos agregar nuestro mensaje
en el cdigo.
A continuacin vemos los distintos tipos de mensajes que podemos seleccionar.
30
Usted utiliza la instruccin MENSSAGE para enviar mensajes de dilogo a los usuarios de su
programa. Al hacer esto, debe especificar el nmero de tres dgitos y la clase de mensaje.
Mensaje nmero y clase de mensaje identifica claramente el mensaje que se mostrar.
Se utiliza el tipo de mensaje para indicar qu tipo de mensaje se va a mostrar.
Colocando un BreakPoint dentro del cdigo de mi programa. Esto nos va a proporcionar que
frene en es punto nuestro programa en tiempo de ejecucin.
Ya dentro de la aplicacin para debuguiar podremos utilizar las teclas F5, F6, F7 y F8 para
ejecutar distintos comandos.
31
La tecla F5 nos permite avanzar paso a paso por nuestro cdigo, o sea lnea por lnea de
cdigo.
La tecla F6 nos permite saltear Subrutinas, Mdulos de Funcin, ETC. Aclaro que igual se
ejecutan pero sin que veamos ese cdigo de ejecucin.
La tecla F7 nos permite regresar a la sentencia siguiente a una subrutina o un modulo de
funcin.
La tecla F8 nos permite finalizar la ejecucin o pasar al prximo BreakPoint.
Selection Screen
32
Las pantallas de seleccin sirven como interfaces entre el programa y el usuario. Se utilizan
para limitar la cantidad de informacin a leer de la base de datos.
Adems de las pantallas de seleccin por defecto, usted puede crear pantallas de seleccin
usando SELECTION-SCREEN BEGIN OF .... y llamar a esas pantallas usando CALL
SELECTION-SCREEN. Cree las variantes para ahorrar los valores de la pantalla de la
seleccin que se utilizan en varias ocasiones. Estas variantes se pueden recordar para el uso
cuando estn requeridas. Una variante es necesaria si un informe se ejecute en un proceso de
trabajo de fondo.
Usted puede colocar valores por default con la sentencia DEFAULT valor. Si asigna una ID
<pid> MEMORIA, el sistema recupera el valor actual de la memoria de SAP y muestra de forma
automtica. Si se declara campos obligatorios con la adicin OBLIGATORY, los usuarios no
pueden salir de la pantalla de seleccin hasta que los valores se han especificado en estos
campos.
33
Usted puede definir un parmetro como check Box (AS CHECKBOX). Esto crea un campo de
un carcter que puede contener los valores de blanco o X. Usted podr evaluarlos usando las
sentencias IF/ENDIF.
Usted puede tambin definir una serie de botones de radio para una pantalla de la seleccin
con el GRUPO de la adicin RADIOBUTTON GROUP. La longitud mxima del nombre para un
GRUPO de RADIOBUTTON GROUP es cuatro caracteres. Solamente un botn de radio en un
grupo puede ser activo y evaluado durante el proceso del programa. Usted puede evaluar el
contenido de los botones de radio usando las estructuras de control de CASE/ENDCASE.
34
Ejercicio 1: Calculadora
35
Trabajando con Estructuras
En el programa, las variables de las estructuras son definidas con DATA. Cuando
usted define los tipos de datos con TYPES, puede referenciarlos a:
In the program, structure variables are defined with the DATA statement, in the same
way as elementary data objects. When you set the types, you can refer to
. a Dictionary structure
. a transparent table (that is then used as a structure type) or
. a structure type that is locally declared in the program
El siguiente grafico muestra una WORK AREA declarada del tipo de una estructura
previamente definida con TYPES.
36
Usted puede usar la sentencia TYPES para definir estructuras locales.
BEGIN OF structure_type_name,
... ,
END OF structure_type_name.
Puede asignar cualquier tipo de datos usando TYPE. Para mas informacin puede oprimir F1
sobre la sentencia TYPES.
Tambin puede definir la WorkArea directamente usando DATA:
37
La sentencia MOVE-CORRESPONDING copia el contenido de la estructura de origen a la de
destino un componente a la vez. Solo son considerados los componentes con el mismo
nombre. Para asignar individualmente cada valor se utiliza la sentencia MOVE.
38
Trabajando con Tablas Internas
Una tabla interna es un objeto que puede tener muchos registros de una misma estructura.
La cantidad de informacin que puede tener cada tabla interna est restringida solo por la
capacidad del sistema.
Cada elemento de una tabla interna se lo denomina registro o entrada de una tabla. Por esta
razn cada componente individual en un registro se lo llama campo o columna.
El tipo de registro est definido previamente con DATA o con TYPES.
Las tablas internas, por lo tanto son una forma simple de procesamiento de grandes conjuntos
de datos de manera estructurada. Las aplicaciones tpicas incluyen:
Line type
El tipo de lnea describe la estructura de las filas de la tabla.
Key
La clave de una tabla interna se compone de los campos claves, incluyendo su
ordenamiento.
El orden de los campos clave se utiliza, entre otras cosas, para el ordenamiento segn
sus campos claves.
Table kind
Usted puede elegir entre 3 diferentes tipos de tablas: Standard, Sorted, and
Hashed. Dependiendo el tipo de acceso que utilice, puede ser ms apropiado uno u
otro tipo de tabla.
39
Usted debe elegir este tipo de tabla cuando se utilizan, sobre todo el ndice para acceder a la
tabla interna.
. Con SORT TABLES los registros de datos se ordenan automticamente en orden ascendente
de los campos clave. Tambin en este caso, el ndice se mantiene internamente. Tanto el
ndice y los accesos principales son posibles.
Usted debe elegir este tipo de tabla si todo acceso a la tabla interna con la llave o le gustara
que la tabla se ordenan automticamente por clave.
. Con HASHED TABLES los registros de datos se gestionan clave para un acceso rpido
mediante el procedimiento de hashing. Una clave nica es requerida. Con las tablas hash slo
tiene acceso clave son posibles.
El tipo de datos de una tabla interna es denominado Tipo Tabla. Los tipos de tabla pueden
definirse globalmente en el diccionario de SAP o de forma local en el programa con la
sentencia TYPES. En el grafico anterior podemos ver como declarar una tabla declarada de un
tipo de datos proveniente del diccionario.
En el grafico anterior muestra un tabla interna declarada de forma local. Usted puede definirle
una clave con la sentencia KEY y los campos de la tabla.
40
En el ejemplo dado, declaramos una estructura con campos apuntando al diccionario y con esa
estructura declaramos una tabla interna indicando el tipo de tabla interna (Standard, Sorted,
Hashed).
Cualquiera de los casos descriptos en el grafico anterior declaran una misma tabla interna. Si la
tabla interna es del tipo Standard no es necesario aclararlo.
41
Para el proceso de un solo registro de una tabla interna, siempre necesitara la creacin de una
WorkArea con el mismo formato.
APPEND
Agrega el contenido de una workarea en una tabla interna. Esta operacin solo puede
ser usada en tablas Standard.
INSERT
Inserta el contenido de una WorkArea en una tabla interna.
En el caso de las talas Standard funciona igual que el APPEND ingresando el registro
en la ltima posicin. En el caso de las tablas internas de tipo Sort y Hashed sern
ingresados donde correspondan.
READ
Copia el contenido de un registro de una tabla interna a una WorkArea.
MODIFY
Modifica un registro de una tabla interna con el contenido de una WorkArea.
DELETE
Borra registros de una tabla interna.
COLLECT
Acumula el contenido de una WorkArea en una tabla interna que tengan la misma
clave, en caso contrario inserta el registro.
42
LOOP . . . ENDLOOP
Recorre la tabla interna registro por registro poniendo el resultado en una WorkArea
especificada con la sentencia INTO.
DELETE
Borra los registros de una tabla interna cuando coincide con la condicin.
INSERT
Inserta el contenido de varios registros de una tabla interna a otra cuando se cumple
con la condicin.
APPEND
Agrega los registros de una tabla interna a otra cuando se cumple la condicin y
siempre que tengan el mismo formato.
43
Usted puede insertar un registro en un atabla interna agregando los datos en una WorkArea y
utilizando la sentencia INSERT. Segn el tipo de tabla ser insertado donde corresponda. En la
tablas de tipo Hashed y en las de tipo Standard el Insert funciona como el Append.
Puede leer y editar el contenido de una tabla interna registro por registro usando la sentencia
LOOP. La variable de sistema SY-TABIX contiene el nmero de registro que est trabajando, o
sea la vuelta de loop que corresponda.
El ejemplo del grafico anterior muestra el recorrido de una tabla interna y la impresin de los
datos que se encuentran en la WorkArea con la sentencia WRITE.
Para modificar el contenido de la tabla que est recorriendo, primero modificar la WorkArea y
luego con la sentencia MODIFY modificar la tabla.
44
En el LOOP, usted podr restringir el acceso a ciertos registros usando el agregado de FORM-
TO. En el ejemplo anterior el sistema recorre solo los primeros 5 registros.
Usted puede usar el READ TABLE para leer un solo registro. Usted puede agregar la sentencia
INDEX para especificar el nmero especifico de registro a leer.
En el loop usted podr restringir los accesos usando el agregado WHERE. En el ejemplo
anterior solo recorre los registros en donde carrid sea igual a LH.
Usted puede usar el READ TABLE para leer un registro de una tabla interna. En este caso
usted utiliza la sintaxis WITH TABLE KEY para elegir el registro correcto.
45
REFRESH
Borra el contenido de la tabla interna.
CLEAR
Para tablas sin header line borra el contenido de la tabla. En las que tienen cabecera, borra la
cabecera.
FREE
Borra el contenido de la tabla y tambin el espacio de memoria que ocupa.
46
El CON HEADER LINE adems en la definicin de la tabla interna le da la opcin de crear una
tabla con la lnea de cabecera. Cuando esto se hace un rea de trabajo (lnea de encabezado)
que se adapte a la tabla se crea automticamente de modo que la definicin adicional de la
misma no es necesaria. Esto tambin simplifica la sintaxis de los comandos de tabla, ya que el
sistema siempre se refiere al rea de trabajo generados automticamente, por lo que ya no
tiene que ser especificado explcitamente. A pesar de las ventajas mencionadas ya no desea
utilizar la tabla con lneas de cabecera, porque:
-El rea de trabajo generados automticamente tiene el mismo nombre que la tabla interna,
que no contribuye a hacer que el programa de lectura.
-Tablas con lneas de cabecera no estn permitidos en:
-objetos de datos complejas (estructuras y tablas internas que tienen las tablas internas
como componentes).
- objetos ABAP (objeto de extensin orientadas de ABAP)
Slo mencionar las tablas internas con lneas de encabezado aqu por algunos programas ms
antiguos todava los utilizan y tienes que trabajar con estos programas de vez en cuando. Es
por ello que las particularidades ms de la lnea de cabecera son los siguientes:
Si una tabla interna con la lnea de cabecera se llama ITAB, entonces ITAB-tablefield se utiliza
para abordar el campo correspondiente en el rea de trabajo.
Usted puede abordar el cuerpo de la tabla con ITAB []. El siguiente ejemplo ilustra la situacin
antes mencionada:
La siguiente sintaxis muy antigua tambin define una tabla interna con la lnea de cabecera, a
pesar de que no se indica especficamente.
47
Ejercicio 2: Estructuras y Tablas
**********************************************
48
Unidad 5
Acceso a Base de Datos
Leyendo Tablas de Base de Datos
Obteniendo Informacin
SQL es la abreviatura de (Structured Query Language), un lenguaje que define, cambia, cread
y lee el acceso a Base de datos.
Cada Base de Datos relacional tiene un SQL Nativo, que es especifico para esa base de datos.
En ABAP uno programa en Open SQL, funcionando sobre cualquier base de datos. Open SQL
es convertido dinmicamente a SQL Nativo, evitando problemas con futuros cambios de base
de datos.
El siguiente grafico no muestra de forma genrica como es la sentencia de acceso a Base de
datos.
49
La sentencia SELECT SINGLE sirve para acceder a un solo registro en la base de datos y el
resultado ser guardado en un Work Area o en una variable. Si uno no define el Mandante es
asumido el mandante actual.
Usted puede poner * en lugar de especificar los campos a seleccionar siempre que quiera traer
todas las columnas.
La variable de sistema SY-SUBRC igual a 0 nos indica que se han seleccionado registros de la
base de datos.
Si usted desea seleccionar algunos campos lo podr hacer despus de la sentencia SELECT.
En la clausula INTO tendr que poner una estructura que tenga los campos seleccionados en
el mismo orden. Solo la sentencia CORRESPONDING FIELDS OF machea por nombre de
campo.
En vez de una work Area podr poner nombre de variables de la siguiente manera:
50
En el grafico anterior nos muestra la sentencia INTO CORRESPONDING FIELDS OF con la
cual podremos tener una work area con los campos en distinto orden y machea por nombre de
campo.
Si desea utilizar una WORK AREA para recibir el registro ledo, que tiene campos con los
mismos nombres que los campos en la lista de objetivos, pero tiene una estructura diferente
(campos adicionales, el orden de campos es diferente), tiene sentido utilizar el INTO
CORRESPONDING FIELDS. Esto tiene el efecto de que los nicos campos del mismo nombre,
se llenan en la zona objetivo. Por favor, asegrese de que los tipos de campo correspondientes
son tambin los mismas, porque de lo contrario (como en la declaracin MOVE), una
conversin (complicada) ocurre y es posible que los datos incompletos (causadas por cortes)
pueden ser transportados a los campos .
51
Usted puede usar la sentencia INTO TABLE para copiar los registros seleccionados dentro de
una tabla interna.
Podr agregarse la sentencia INTO CORRESPONDING FIELDS OF para que ingrese la
informacin en los campos del mismo nombre de la tabla interna.
La variable de sistema SY-SUBRC en cero significa que por lo menos un registro fue copiado.
La variable de sistema SY-DBCNT nos dice la cantidad de registros trados de la Base de
Datos.
Una tabla de Base de Datos es llamada CLIENT-SPECIFIC, si tiene el campo (MANDT) como
primer campo clave.
Si usted selecciona informacin de tablas con MANDT sin especificar el mismo, solo la
informacin del mandante en el cual se encuentra ser accedida.
Si una tabla de Base de Datos es frecuentemente accedida por campos que no son claves,
debera definir un ndice secundario por los campos accedidos en orden para agilizar el acceso.
Despus de crear y activar un ndice, la base de datos optimizara automticamente el ndice
cuando un programa es ejecutado, siempre que ayude a la rapidez del acceso.
. Logical databases: Base de datos Lgicas. (Programas de recuperacin de datos que leer los
datos de las tablas que van de la mano jerrquicamente).
52
. BAPIs: Mdulos de Funcin que encapsulan Objetos de Negocio.
-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.
53
. Unidad 6
Subrutinas en ABAP
Subrutinas
Una subrutina es una unidad dentro de la modularizacin del programa donde se encapsula
una funcin en forma de cdigo fuente. Usted saca una parte de un programa a una subrutina
para obtener una mejor visin de conjunto del programa principal y usar la secuencia
correspondiente en diversas ocasiones.
Usando subrutinas significa que su programa se vuelve mas fcil de mantener porque los
cambios de funcionalidad solo tienen que ser aplicados en la subrutina y no en varios puntos
de un programa. Adems puede procesar una subrutina on debugg como una unidad y luego
ver el resultado, haciendo mas fcil encontrar un error.
Como muestra el siguiente grafico, puede llamar n veces a una misma rutina pasndole valores
diferente. Ose variables locales que no quiere que se modifiquen, sino que solo sean utilizadas
o modificadas en la rutina.
54
La asignacin de las variable es uno a uno, pudiendo cambiarle los nombres:
Hay 3 formas de pasar valores a una subrutina: 1) Llamado por valor, 2) Llamada por valor y
resultado y 3) llamado por referencia:
55
La llamada ala subrutina se realiza con la palabra reservada PERFORM. La ejecucin de la
subrutina se realizara entre el FORM y el ENDFORM.
Call by value
La variable F1 es llamada por valor usando el USING y el prefijo VALUE. En este caso los
valores originales de la variable no se ven afectados.
Call by reference
La variable f3 es llamada por referencia sin el prefijo VALUE. Es un puntero a la memoria de la
variable original. En todo momento estoy modificando el valor original de la variable.
56
Se debe especificar el tipo de datos de los objetos que se estn recibiendo. Solo es obligatorio
cuando son tablas o Work Areas.
Se pueden pasar variables, Work Areas y tablas internas. En el siguiente ejemplo se esta
pasando con USING una variable y una tabla interna; y con CHANGING una variable.
57
58
Ejercicio 1: Listas - Subrutinas - Eventos
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.
4) Pantalla:
Declarar un parameter de tipo S_CARR_ID y
Declarar un select-options del tipo wa-connid.
5) Hacer un select a la tabla sflight filtrando con los parmetros de seleccin declarados
anteriormente, colocando el resultado en la tabla interna tambin declarada
anteriormente.
9) Si el usuario realizo un doble click sobre una lnea imprimir la siguiente informacin:
a. La guardada anteriormente con hide ms:
b. Realizar un select a la tabla sbook, filtrada por carrid, connid y fldate. Guardar
dicha informacin en la tabla interna del tipo sbook creada anteriormente.
59
. Unidad 7
Procesamiento de Lista Clsica
La lista
El objetivo principal de una lista es para mostrar los datos con un mnimo de esfuerzos de
programacin. Las listas tambin se adoptarn las necesidades especiales de los datos
empresariales en cuenta:
-Las listas pueden ser diseados en varios idiomas: Los textos y las cabeceras en la lengua de
inicio de sesin cada vez que una traduccin correspondiente est disponible.
- Las listas pueden mostrar los valores monetarios en la moneda correspondiente.
60
Figure: Standard List Functions
Cada lista puede tener una cabecera de lnea nica lista y hasta cuatro lneas de encabezados
de columna. Si no se define cabecera de la lista, el nombre del programa (breve descripcin)
se utiliza como el encabezado.
Para el mantenimiento inicial de los titulos, primero debe activar su programa. A continuacin,
crear la lista mediante la ejecucin del programa. A continuacin, puede mantener los
encabezados directamente encima de la lista mediante el men Sistema Lista Lista de
cabecera.
61
La prxima vez que inicie el programa, aparecer automticamente en la lista. Si desea
cambiar el encabezado de mantenimiento (seguimiento de mantenimiento) , entonces usted
no tiene que comenzar de nuevo el programa y generar la lista. En lugar, a partir del editor en
el que se carga el programa puede llegar al entorno de mantenimiento para el cambio de las
cabeceras seleccionando Pasar a Texto Elementos encabezados Lista .
Para el diseo de textos en la lista del cuerpo en varios idiomas y utilizar el lenguaje
automtico, smbolos de texto se utilizan. Un smbolo de texto se compone de un xxx ID de
tres dgitos alfanumricos, as como un texto traducible y, como los encabezados,
pertenece a los elementos de texto de un programa. Hay dos opciones para definir los
smbolos de texto para su programa:. Desde el Editor de ABAP, seleccione el men Pasar a
Elementos de Texto Texto Smbolos o . direccin que el smbolo de texto en su cdigo
fuente utilizando la sintaxis se describe a continuacin y haga doble clic en su ID (navegacin
hacia delante).
Con el fin de especificar un smbolo de texto ms intuitiva tambin puede utilizar la sintaxis
siguiente en lugar de TEXT-xxx: xxx'...'(). Aqu,'...' debe ser el texto del smbolo de texto en el
idioma original del programa.
Sugerencia: Tenga en cuenta que los elementos de texto tambin tiene que ser activado.
62
Figura: Generacin de un Listado Bsico
Cuando el usuario selecciona una lista de base por medio de doble clic en la tecla F2 o
funcin, el evento ABAP AT-LINE-SELECTION seleccin se ha disparado. Si usted quiere
tener la pantalla del sistema una lista con la informacin requerida detallado (lista interactiva)
como la respuesta a esta accin del usuario, a continuacin, debe implementar esto en su
programa en la forma de un bloque de tratamiento correspondiente. All, usted puede leer los
datos solicitados por el usuario y salida de ellos, con la declaracin ESCRITURA. Los detalles
lista con los datos de salida, que. sobrescribe. la lista de base, se genera automticamente. Al
63
pulsar el botn con la flecha. Verde. o la tecla de funcin F3, el usuario puede volver a la lista
de base y elegir otra fila.
El grfico anterior muestra el valor de SY-lsind y como se establece en cada caso: Cada
seleccin de filas aumenta automticamente sy-lsind por 1, cada regresar a la lista anterior se
reduce el nivel SY-lsind en 1. Hasta 20 niveles de lista son posibles.
Una declaracin WRITE se ejecuta siempre en el nivel actual lista. Si no se genera la lista de
detalles de una seleccin de filas en el bloque de conducto AT, SY-lsind se reduce
automticamente a uno. Posteriormente, el sistema muestra el mismo nivel en que la seleccin
se llev a cabo la fila.
64
Figura: Ejemplo de sintaxis simple
El grfico anterior muestra un ejemplo de aplicacin de un programa con una lista bsica y una
lista de detalles:
- Las conexiones de vuelo con datos detallados se debe mostrar en la lista bsica. Se trata de
leer desde una tabla de base de datos SPFLI.
- En la lista de detalles, los planes de vuelo para la conexin de vuelo seleccionado debe
aparecer con los datos detallados correspondientes. Estos se leen de la tabla de base de datos
SFLIGHT. Con el fin de poder seleccionar la informacin pertinente para la lista de detalles
cuando una fila de lista de base se selecciona la fila seleccionada o por lo menos los valores
65
clave de la fila debe estar disponible para el evento AT LINE-SELECTION. Los grficos
siguientes muestran cmo se puede implementar.
Con el fin de poder tener acceso a los principales valores de la fila seleccionada cuando
una fila de lista de base se selecciona, usted tiene que aplicar el siguiente concepto:
- Para cada fila lista bsica, los valores clave de inters se almacenan en el rea HIDE
dentro del programa.
- Cuando se selecciona una fila los datos que se ha ocultado para esa fila particular, se
pondr a disposicin de nuevo.
El registro especfico de los valores fundamentales en el mbito HIDE ocurre por medio de la
declaracin HIDE (aqu: HIDE: wa_spfli-carrid, wa_spfli-connid.), Que debe ser ejecutado
inmediatamente despus de la generacin de cada fila lista de base. Cuando se selecciona
la fila, los valores clave de inters son transportados de regreso a los campos de origen (en
este caso-wa_spfli carrid y wa_spfli connid-) y el evento AT LINE-La seleccin se ha disparado.
El siguiente grfico ilustra este.
66
Figura: Flujo de datos para la seleccin de fila
Sugerencia: las listas de los detalles no han fijado encabezados estndar como listas bsicas,
ya que pueden variar de forma dinmica. Por lo tanto, puede que tenga que aplicar sus propias
cabeceras utilizando instrucciones WRITE.
67
Pantalla de Seleccin
Ventajas de las pantallas de seleccin
En general, las pantallas de seleccin se utilizan para introducir criterios de seleccin para la
seleccin de datos. Por ejemplo, si el programa crea una lista de datos de una tabla de base de
datos muy grandes, a menudo tiene sentido para el usuario para seleccionar los registros de
datos que realmente requiere la lectura y slo los de la base de datos. Adems de reducir el
requisito de memoria, esto tambin reduce la carga de
red.
68
La pantalla de seleccin tiene las siguientes funciones estndar:
- El sistema verifica los tipos de forma automtica: Si el usuario escribe algo que no se
corresponde con el tipo del campo de entrada, la interfaz grfica de usuario SAP lo ignorar,
por lo que ni siquiera van a aparecer en la pantalla de seleccin.
- Adems de las entradas solo valor (PARAMETERS), tambin se puede aplicar selecciones
complejas (SELECT-OPTIONS) en la pantalla de seleccin. El usuario puede entonces
introducir intervalos, las condiciones comparativas o incluso los patrones como las
restricciones.
- La ayuda del elemento de datos de bsqueda para mostrar las posibles entradas se
pueden llamar con el F4 (Ayuda para entradas) la tecla de funcin.
El grfico anterior ilustra el uso de selection options, que permiten entradas complejas. Cada
pantalla de seleccin contiene un icono de informacin (tambin conocido como una ayuda "en
pantalla" icono). Seleccione este icono para mostrar informacin adicional.
69
Figura: Informacin sobre Tipos Semntica Mundial en la pantalla de seleccin
70
En la pantalla de seleccin, los nombres de los campos de entrada aparecen como su
descripcin de forma predeterminada. Sin embargo, puede reemplazarlos por los textos de
seleccin correspondientes, que luego se puede traducir a los idiomas ms que usted
requiere. En tiempo de ejecucin, los textos de seleccin son mostrados en la lengua de inicio
de sesin del usuario (automtica de idioma).
Al igual que los encabezados de la lista y los smbolos de texto, textos de seleccin pertenecen
a los elementos de texto del programa. Desde el Editor de ABAP, seleccione el men Ir GoTo
Text ElementsSelection Texts para su mantenimiento. Puede implementar su traduccin
con el men Ir .Traduccin (GoTo Translation.).
Figura: Variantes
Las pantallas de seleccin efectuada son las variantes del programa. Despus de que el
programa ha sido iniciado, el usuario puede cargar variantes a la pantalla de seleccin
respectivo para facilitar repetidas o casi idnticos entradas idnticas. Usted tiene que
incluir una variante cuando se programa un programa de ABAP en corrida de fondo, si el
programa tiene una pantalla de seleccin, como entradas de usuario no son posibles en el
fondo.
Si las variantes ya han sido definidos para un programa, a continuacin, un pulsador adicional
aparece en la pantalla de seleccin con la bandera de texto. Variante conseguir ..... Este botn
se enumeran las variantes definidas para la seleccin.
Con el fin de poder definir sus propias variantes, el usuario debe contar con la autorizacin
correspondiente (en el sistema de produccin). Pero tambin puede definir variantes en el
sistema de desarrollo y luego los han transportado al sistema de produccin. Variantes con el
prefijo de nombre 'CUS &' son variantes del sistema. Son transportados como objetos del
repositorio comn y no especfica del cliente. Todas las otras variantes son especfica del
cliente y debe ser transportado por separado. Desde el Editor de ABAP, seleccione el men Ir
variantes (GoTo Variants) para ir a la variante de la gestin de su programa, donde se
puede realizar en marcha para su mantenimiento siga variantes con respecto a los valores y
atributos. All, elija el men Herramientas Transporte Solicitud (Tools Transport Request)
para especificar las variantes para ser transportado, as como solicitar una. El transporte pasa
cuando la solicitud se libera.
Para obtener ms informacin sobre las variantes, elija el botn de informacin sobre atributos
de la variante en la pantalla a fin de mantener sus atributos de la variante.
71
Opciones de entrada en la pantalla de seleccin
Una variable de entrada se define en la misma forma que una variable ordinaria. La nica
diferencia es que la palabra clave Parmetros se utiliza en lugar de datos.
Una asignacin de valores por defecto por medio de la adicin DEFAULT o el valor de
asignacin antes de mostrar la pantalla de seleccin (inicializacin) se muestra en la pantalla
de seleccin como un valor predeterminado que se puede sobrescribir. Si el usuario introduce
un valor y elige Ejecutar, los valores de entrada se transfieren a la validez interna y, por
ejemplo, se puede utilizar para restringir la seleccin de base de datos.
72
opciones de seleccin se determinarn en el momento de usar el nombre SELECT-OPTIONS
PARA data_object.
entradas del usuario son transportados a la tabla interna generada automticamente cuando se
selecciona Ejecutar. Este cuadro siempre tiene cuatro columnas: signo, opcin, de bajo y
alto. Lo anterior muestra grfica, que se crean entradas para los que la entrada del usuario:
-Si "LH" se introduce, se genera una fila con los valores "I" (inclusive), "EQ" (igual), "LH" y del
Espacio.
- Si el intervalo de "AA" a "DL" se introduce, se genera una fila con los valores "I" (inclusive),
"BT" (entre), "AA" y "DL.
- Si "BA" se introduce como el valor nico que se excluye, se genera una fila con los valores "E"
(exclusivo), "EQ" (igual), "BA" y del Espacio.
La tabla interna llena los criterios de seleccin se inscriben pueden ser utilizados para la
seleccin de bases de datos, como se ilustra en el grfico. El contenido de la tabla se interpreta
de la siguiente manera:
Si i_1, ... , Y I_n E_1, ... , Son los e_m incluido / condiciones exclusivas de la tabla interna, la
condicin de compuestos siguientes se utiliza para limitar la seleccin de datos:
( I_1 OR ... OR I_n ) AND ( NOT E_1 ) AND ... AND (NOT E_m )
Si la tabla est vaca porque no hay restricciones, las condiciones en que se aplica siempre en
el campo respectivo.
Para definir una opcin de seleccin, los mismos tres particularidades de aplicacin a la
declaracin parmetros (vase ms arriba).
Screen
Figura: En el evento AT SELECTION-SCREEN
73
Declarando Campos con Select Options
The SELECT-OPTIONS keyword is a declarative language element with the same eight-
character naming restriction as PARAMETERS. Unlike thePARAMETERS keyword, SELECT-
OPTIONS permits a range of values and complex selections instead of just a single input-
ready field.
The SELECT-OPTIONS keyword generates an internal table <seltab> with a standard structure
and a header line. This table has four columns: sign, option, low, and high. Just as with
PARAMETERS, you can maintain the selection text using the menu path Goto Text elements
Selection texts.
Use the addition FOR to specify the field against which the system should check selection
entries. This field must be declared in a DATA or TABLES statement. Both high and low fields
inherit the attributes of the referenced field.
Each line of the selection table <seltab> formulates a condition using one of the following
relational operators:
. SIGN: I (Include), E (Exclude)
. OPTION: EQ, NE, LE, LT, GE, GT, BT (Between), NB (Not Between), CP (Contains Pattern),
NP (Contains Pattern not)
The selection set is the union of all includes (I1,..., In) minus the union of all excludes (E1, ...,
Em). If no values are entered in the SELECT-OPTIONS object, all rows are returned from the
database.
74
Figure: SELECT-OPTIONS with Multiple Selection Criteria
When the user makes entries in a SELECT-OPTIONS object, the system automatically
populates the internal table.
To change the default entries for table fields SIGN and OPTION, choose menu Edit Selection
options., the system offers alternatives appropriate for the selection. If the traffic signal icon is
green during Select, there is an (I)nclusive in the sign column. A red light indicates (E)xclude.
To delete a table entry, use the menu Edit Delete selection criterion.
Each selection criterion can be used to make multiple selections unless otherwise defined. If
multiple selections are present, the color of the arrow changes from white to green.
. DEFAULT enables you to set default values for low or low and high parameters. You can use
OPTION and SIGN to set default values for option and sign , which differ from the normal
default <value> addition.
You can set a default value for a SELECT-OPTIONS keyword with the DEFAULT <value>
addition. If you assign a MEMORY ID <pid>, the system retrieves the current value from the
SAP system memory and displays it automatically. LOWER CASE suppresses conversion of
the entry to upper case. This addition is not permitted for Dictionary fields, because the attribute
set in the Dictionary takes precedence.
75
. OBLIGATORY generates a mandatory field. A question mark is displayed in the entry field in
the selection screen and the user should enter a value.
. NO INTERVALS suppresses the seltab-high (upper interval limit) entry on the selection
screen. You can use the additional screen, Multiple selection, to specify ranges.
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.
You can display multiple parameters and comments on the same line on the screen.
76
To do so, you need to enclose the parameters between the SELECTION-SCREEN BEGIN OF
LINE and SELECTION-SCREEN END OF LINE statements. The COMMENT parameter
enables you to include text in the line.
Comment text must always have a format (position and output length). The position can be set
using a data field or pos_low or pos_high. The latter are low and high positions for the SELECT-
OPTIONS field on the selection screen.
Adding COMMENT ... FOR FIELD <f> ensures that F1 Help for the field <f> is displayed for the
comment text and the parameter. If you hide the parameter (selection variant: attribute
invisible), the comment text is also hidden.
You can use POSITION <pos> to set the cursor for the next output position (only within ...
BEGIN OF LINE ... END OF LINE).
Authority-Check
En la pantalla de la seleccin EN el acontecimiento AT SELECTION-SCREEN estn ambos
accionados cerca el elegir Enter tan bien como ejecute (F8). Despus de que se haya
procesado el bloque de proceso correspondiente, se acciona el acontecimiento siguiente de
START-OF-SELECTION y el proceso relevante comenzado, si ejecute fue utilizado. Sin
embargo, si Enter fue elegido, la pantalla de la seleccin se exhibe otra vez.
77
Figura: Dilogos de error en AT-SELECCIN DE PANTALLA
78
Unidad 8
Sentencias tiles ABAP
CONCATENATE
Definicin
Se utiliza para concatenar varios campos alfanumricos en uso solo.
Sintaxis:
CONCATENATE <c1> ... <cn> INTO <campo> [ SEPARATED BY <s> ].
Esta sentencia concatena los campos campos <c1> ... <cn> en el campo <campo>. Los
espacios en blanco se ignoran
durante la operacin.
Con la clusula SEPARATED BY se puede especificar un campo alfanumrico (el campo <s>)
que ser utilizado
como separador entre los campos <c1> ... <cn>. Si el resultado de la concatenacin entra en el
campo <campo>,
SY-SUBRC = 0, si por el contrario, es necesario el truncamiento, SY-SUBRC = 4.
Ejemplo 1:
DATA: ONE(10) VALUE 'Ivan',
TWO(3) VALUE ' Rodrigo',
THREE(10) VALUE ' Baos',
NAME(20).
CONCATENATE ONE TWO THREE INTO NAME.
La variable NAME valdra: IvanRodrigoBaos
Ejemplo 2:
DATA: ONE(10) VALUE 'Ivan',
TWO(3) VALUE 'Rodrigo',
THREE(10) VALUE 'Baos',
NAME(20),
SEPARATOR(4) VALUE 'GAUSS'.
CONCATENATE SPACE ONE TWO THREE INTO NAME
SEPARATED BY SPACE.
La variable NAME valdra: Ivan Rodrigo Baos.
SPLIT
Definicin
Divide un campo alfanumrico en varios campos, gracias a algn separador.
Sintaxis:
SPLIT <campo> AT <delimitador> INTO <c1> ... <cn>.
Esta sentencia utiliza el campo indicado en <delimitador> para separar los campos <c1> ...
<cn> el contenido del
campo <campo>. Si no hay especificado los suficientes campos para poder separar todo el
contenido del campo
<campo>, sobre el ltimo se rellena el resto del campo <campo>. Si todos los campos destino
son lo suficientemente
grandes como para almacenar las partes de <campo>, SY-SUBRC vale 0. En caso contrario
SY-SUBRC vale 4.
Tambin se puede situar las partes del campo que se quiere separar en una tabla interna con
el siguiente formato:
SPLIT <campo> AT <delimitador> INTO TABLE <tabla>.
79
Por cada parte del campo <campo el sistema aade una nueva lnea en la tabla interna
<tabla>.
Ejemplo 1:
DATA: NAMES(30) VALUE 'Charly, John, Peter',
ONE(10),
TWO(10),
DELIMITER(2) VALUE ','.
SPLIT NAMES AT DELIMITER INTO ONE TWO.
ONE valdr "Charly" y TWO tendr el valor "John ".
Ejemplo 2:
DATA: BEGIN OF ITAB OCCURS 10,
WORD(20),
END OF ITAB.
SPLIT 'STOP Two STOP Three STOP ' AT 'STOP' INTO TABLE ITAB.
La tabla interna tendr tres lneas, la primera en blanco, la segunda contiene "Two" y la tercera
contiene "Three".
COMMIT WORK
Definicin
A veces es necesario asegurarse que los cambios en la base de datos se han realizado, antes
de continuar con el
proceso. Por el contrario, a veces es necesario deshacer algunos cambios realizados en la
base de datos. Para confirmar
los cambios realizados sobre la base de datos se utiliza la sentencia COMMIT WORK
Sintaxis:
COMMIT WORK [ AND WAIT ].
para deshacer los cambios realizados en la base de datos se utiliza la sentencia ROLLBACK
WORK. Estas sentencias
tienen un papel importante en la programacin de transacciones de dilogo.
Con la clusula AND WAIT, el programa se para hasta que la tarea de actualizacin termina. Si
la actualizacin es
satisfactoria, SY-SUBRC vale 0, en caso contrario, SY-SUBRC toma un valor distinto de 0.
TRANSLATE
Definicin
Se utiliza para convertir caracteres de mayscula a minscula o viceversa, o para realizar
sustituciones de caracteres a
travs de ciertas reglas.
Sintaxis:
TRANSLATE <campo> TO { UPPER | LOWE } CASE.
Con la opcin UPPER, las letras minsculas de <campo> se convierten en maysculas. Y con
la opcin LOWER las
letras maysculas se convierten en minsculas.
Para utilizar reglas de conversin se utiliza la siguiente sintaxis.
TRANSLATE <campo> USING <regla>.
Esta sentencia reemplaza todos los caracteres de <campo> que cumplan la regla de
sustitucin <regla>. La regla de
sustitucin contiene pares de letras, la primera de ellas indica el carcter a sustituir, la segunda
indica el carcter de
sustitucin. <regla> puede ser una variable.
CONDENSE
Definicin
Para borrar espacios en blanco superfluos en campos alfanumricos.
80
Sintaxis:
CONDENSE <campo> [ NO-GAPS ].
Borra cualquier secuencia de espacios en blanco, dejando slo uno que exista entre palabras
existentes en <campo>.
Los espacios en blanco por la izquierda tambin desaparecen.
Con la clusula NO-GAPS todos los espacios en blanco desaparecen.
Ejemplo 1:
DATA: BEGIN OF NAME,
TITLE(8), VALUE 'Dr.',
FIRST_NAME(10), VALUE 'Michael',
SURNAME(10), VALUE 'Hofmann',
END OF NAME.
CONDENSE NAME.
WRITE NAME.
La salida en pantalla sera: Dr. Michael Hofmann
Ejemplo 2:
DATA: BEGIN OF NAME,
TITLE(8), VALUE 'Dr.',
FIRST_NAME(10), VALUE 'Michael',
SURNAME(10), VALUE 'Hofmann',
END OF NAME.
CONDENSE NAME NO-GAPS.
La variable NAME valdra: Dr.MichaelHofmann
UNPACK
Definicin
Desempaqueta el contenido de un campo sobre otro.
Sintaxis:
UNPACK <campo1> TO <campo2>.
Desempaqueta el campo <campo1> en el campo <campo2>. Es la operacin contraria a la
sentencia PACK.
Ejemplo:
DATA: P_FIELD(2) TYPE P VALUE 103,
C_FIELD(4) TYPE C.
UNPACK P_FIELD TO C_FIELD.
P_FIELD: P'103C' -> C_FIELD: C'0103'.
81
Unit 9
Modulo de funciones
Mdulos de funcin son procedimientos especiales que son visibles de forma global y que se
puede llamar desde otros programas ABAP. Slo pueden ser definidas y aplicadas de
programas especiales de ABAP, denominados grupos de funciones.
Screens
Grupos de funcin puede contener pantallas, que permite encapsular los cuadros de dilogo de
usuario en los mdulos de funcin.
Remote capability
Mdulos de funcin se puede llamar por sistemas externos (Remote Function Call).
Update
Algunos mdulos de funcin (mdulos de actualizacin) puede ser utilizado para las
actualizaciones. No se ejecutan directamente cuando se le llama, sino que al final de la unidad
lgica de trabajo (LUW).
Asynchronous execution
Mdulos de funcin se ejecuta en paralelo en un proceso de trabajo por separado. El
programa de llamada no espera hasta que la transformacin del mdulo de funciones se
haya completado.
82
Presionando Si, retorna:
exporting depende de donde me encuentro. exporting es lo que mando e importing es lo que envo, en
invocacin de la funcin es abreves.
En importing puedo declarar una tabla (TYPE tabla del diccionario). en la solapa tabla tengo el problema
que no se si es de entrada o salida.
83
Grupo de funciones
Es un repositorio que agrupa funciones y que se utiliza principalmente para compartir
subrutinas y declaraciones de variables entre las distintas funciones pertenecientes al grupo.
Grupos de funciones no son programas ejecutables, es decir, no se puede iniciar con los
cdigos de operacin o por sus nombres. Sirven exclusivamente como programas principales
de los mdulos de funcin. En la mayora de los casos, un grupo de funciones contiene varios
mdulos de funcin que realizan funciones relacionadas o actuar en los mismos datos.
Aparte de los mdulos de funcin, los grupos de funcin tambin puede contener los siguientes
elementos:
Estos elementos pueden ser utilizados por todos los mdulos de funcin en el grupo de
funciones.
84
Para crear un grupo de funciones, debemos seleccionar en el men de la transaccin SE37 la
ruta Goto/Functions Groups/Create Group
Aqu ingresaremos el nombre de nuestro grupo de funcin y presionamos el botn Save como
vemos a continuacin:
85
Ejercicio 1: Crear un Grupo de Funciones
Objetivos del Ejercicio
Despus de completar este ejercicio usted va a poder:
. Crear un grupo de funciones
Tarea:
Crear un Grupo de Funciones
1. Crear el grupo de funciones ZBC402_##_CONN.
Para crear un mdulo de funcin accedemos a la transaccin SE37. All escribiremos el nombre de
nuestra funcin y presionaremos el boton Create
Attributes: aqu especificamos la descripcin de la funcin y el tipo de funcin que puede ser Normal,
RFC o Update module.
86
Import: aqu especificamos los parmetros de salida de la funcin
Paso por valor: los parmetros formales son creados como copias de los parmetros actuales. Los
cambios en los parmetros formales no afectan a los parmetros actuales.
Paso por referencia: solo la direccin de los parmetros actuales se transfieren a los parmetros
formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si
cambiamos los parmetros formales, el contenido del campo del programa que hace la llamada tambin
cambia.
87
Changing: aqu especificamos los parmetros de salida que cambiarn de valor con la ejecucin de la
funcin.
Exceptions: aqu especificamos las excepciones de la funcin. Una excepcin es un error que se produce
al ejecutar la funcin y que ha sido catalogado cuando se creo el mdulo de funcin de modo de poder
identificar rpidamente el motivo del error
Documentacion
88
Estructura del grupo de funciones
Programa principal, SAPL<fgrp>, merely contains INCLUDE statements for the following include
programs:
. TOP include
Include L<fgrp>TOP contendra las declaraciones de variable globales.
. U includes
Include L<fgrp>UXX contendra los includes L<fgrp>U01, L<fgrp>U02, ... .
Estos contendran el codigo adicionado en cada modulo de funciones
. F includes
Include L<fgrp>F01, L<fgrp>F02, ... puede ser utilizado para generar subrrutinas
. O includes
Include L<fgrp>O01, L<fgrp>O02, ... Utilizado para PBO
. I includes
The include programs L<fgrp>I01, L<fgrp>I02, ... Utilizado para PAI
89
Ejercicio 2: Crear un Modulo de Funciones
Tarea 1:
Preparacin
1. Desplegar una modulo de funciones existente con la Transaccin SE37 y Familiarizarse con los tipos
de parmetros de la interface.
2. Si no ha creado aun el grupo de funciones crearlo en este momento.
Tarea 2:
Crear un modulo de funciones para la lista de vuelos
1. Crear un Nuevo modulo de funciones y nombrarlo Z_BC402_##_GET_CONN_LIST en el grupo de
funciones creado anteriormente.
2. Definir un parmetro de entrada para ciudades de origen y destino departure and destination cities.
Elegir los mismos tipos de datos que en las tablas correspondientes.
Tiene sentido crear los parmetros opcionales?
Elija si los parmetros a transferir van a ser por parmetros o por valor?
3. Defina un parmetro de salida para la lista de vuelos. Utilice un tipo de tabla apropiada para el
parmetro.
4. Ingrese la documentacin necesaria para el modulo de funciones, para los parmetros y par alas
excepciones.
90
Llamado de modulo de funciones:
91
Tomando las exepciones
WHEN 1.
WHEN 2.
WHEN 3.
Tarea 1:
1. Crear una tabla interna en el Top de la funcin y luego llenarla con un Select.
2. Crear una subrutina en la funcin en donde manipularemos los resultados obtenidos para solo devolver
algunos
Tarea 2: (Opcional)
1. Si la tabla se encuentra vaca generar una excepcin para este caso.
92
Qu es un mdulo de funcin RFC?
Un mdulo de funcin RFC consiste en una llamada a una funcin que existe en un sistema distinto al del
programa que la llama. El objetivo principal de las RFC es acceder a otros ambientes para obtener datos.
La comunicacin puede darse entre sistemas Sap o entre un sistema Sap y otro sistema que no sea Sap.
Para llamar a una funcin RFC se debe agregar la clasula DESTINATION al momento de declarar la
funcin, como vemos en el siguiente ejemplo.
Una funcin RFC se crea de la misma manera que se crea un funcin. Se accede a la transaccin SE37 y
se completan los mismos parmetros que completamos para crear una funcin a excepcin de que se debe
seleccionar en la solapa de Atributos la opcin Remote Enabled Module.
Los parmetros que se crean en una funcin RFC no se pueden pasar por Referencia, deben pasarse por
valor. Esto se logra tildando el check Pass value para cada parmetro en las solapas IMPORT, EXPORT y
CHANGING.
93
RFC( Remote Function Call ) en SAP R/3
Esta tecnologa se usa para comunicar entornos diferentes que pueden ser del mismo o de
tipos diferentes, otra forma de realizar conexin entre procesos es por medido del uso de las
tecnologas OLE.
Opciones de seguridad
Trusted system: si no(marcar este)
SNC act inact(marcar este)
Acceso a sistema
Idioma: ES
Mandante: 0400
Usuario: IDUSUARIO
Clave acceso: **********
Usuario actual( desmarcado )
Clave acceso no codificada( desmarcado )
Forma de ejecucion
FUNCTION Z_UAX_RFC.
94
SELECT * FROM ZUAXRFC INTO TABLE TAB_ZUAXRFC.
ENDFUNCTION.
REPORT ZUAXRFC.
* --------------------------------------------------------------------
* --------------------------------------------------------------------
* Programa : zuaxrfc
* autor : Francisco Reyes
* fecha : 13 de abril del 2000
* objetivo : Probar comunicacin RFC
* --------------------------------------------------------------------
* tablas usadas por el proceso
* tabla descripcin
* zuaxrfc tabla de prueba para comunicacin rfc
* --------------------------------------------------------------------
* Descripcin del proceso
* 1.- Crea tabla interna en funcin de la tabla ZUAXRFC
* 2.- Llama la funcin rfc z_uax_rfc que le devuelve la tabla tab_zuaxxrfc
* 3.- Actualiza la tabla zuaxrfc de la maquina destino en funcin de los datos recibidos de la
funcin rfc
* --------------------------------------------------------------------
* --------------------------------------------------------------------
DATA: BEGIN OF TAB_ZUAXRFC OCCURS 0.
INCLUDE STRUCTURE ZUAXRFC.
DATA: END OF TAB_ZUAXRFC.
95
Business Application Programming Interface( BAPIs ) de SAP R/3
Las BAPI's son funciones que sirven para realizar acciones sobre los objetos de negocios de
SAP. Son en realidad mtodos de los objetos de negocios, y gracias a ellos podemos realizar
cargas evitando utilizar Batch Inputs por Call Transaction.
Bsicamente son funciones como cualquier otra funcin en ABAP, as que poseen las mismas
caractersticas: parmetros de entrada, de salida, tablas, excepciones...
Por lo general cuando se hace un modificacin de un objeto con una BAPI es necesario realizar
un COMMIT explcito mediante la funcin BAPI_TRANSACTION_COMMIT. Si quieren probar si
una funcin les sirve para cargar algn dato en particular, pueden utilizar la transaccin SE37 e
ir al men Mdulo de Funciones->Verificar->Secuencias Test. All se pueden encadenar
funciones, de manera de poder ejecutar primero la BAPI y despus la funcin
BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es
cargado por la BAPI que estn probando.
Las BAPIs son mtodos estandarizados de los Objetos de Negocio Sap R/3, que permiten la
integracin de los componentes de software de los clientes y de terceros. Algunas de las
ventajas de usar BAPIs son:
.- Es un Estndar de Negocio
.- Es un Estndar Consensuado
.- Garantiza estabilidad y compatibilidad futura
.- Garantiza orientacin a objetos
.- Independencia de entorno (apertura)
96
Unidad 10
Ampliaciones en SAP
ndice:
1) Qu son las ampliaciones? Ventajas y Desventajas 98
2) Tipos de ampliaciones 98
3) User Exit 99
3.1) Ventajas .............................................................................................. 100
3.2) Desventajas ........................................................................................ 100
3.3) Pasos para realizar un User Exit ...................................................... 100
4) Field Exit 104
4.1) Ventajas .............................................................................................. 104
4.2) Desventajas ........................................................................................ 104
4.3) Pasos para realizar un Field Exit ...................................................... 104
5) Screen Exit 108
5.1) Ventajas .............................................................................................. 108
5.2) Desventajas ........................................................................................ 109
5.3) Pasos para realizar un Screen Exit .................................................. 109
6) Menu Exit 112
6.1) Ventajas .............................................................................................. 112
6.2) Desventajas ........................................................................................ 112
6.3) Pasos para realizar un Menu Exit ..................................................... 112
7) Include en tablas transparentes 117
8.1) Ventajas .............................................................................................. 117
8.2) Desventajas ........................................................................................ 117
8.3) Pasos para realizar un Include a Tabla Transparente .................... 118
8) Transacciones relacionadas 122
97
Qu son las ampliaciones? Ventajas y Desventajas
Las ampliaciones son diferentes herramientas que presenta SAP para realizar
mejoras, modificaciones o agregados a un programa, en general un programa estndar.
Algunos programas estndares estn preparados como para agregarles
funcionalidad nueva a la existente. En algunos casos se puede validar campos de alguna
dynpro en particular; agregar campos a una pantalla con cdigo que permita tratar esos
datos nuevos; agregar una nueva opcin dentro de un men o agregar campos a tablas
estndares.
Las ampliaciones se generan y codifican en mdulos a parte del cdigo estndar,
con lo cual no se necesita modificarlo, manteniendo la funcionalidad original y el buen
funcionamiento.
Ventajas:
Permite modificar ciertos programas para adaptarlo a necesidades particulares de
la empresa, agregando nuevas caractersticas a las existentes.
Permite realizar mejoras a un programa sin modificar el cdigo original del
mismo, manteniendo el buen funcionamiento y las caractersticas que tena.
Los cambios toman efecto con slo transportar los nuevos objetos.
Desventajas:
No siempre se pueden hacer todas las modificaciones de manera satisfactoria, ya
que la mayora de las ampliaciones estn preparadas para una determinada tarea
y momento dentro de la ejecucin de un programa.
No todos los programas estndares estn preparados para agregar ampliaciones.
Por ejemplo todos los programas no tienen User Exit.
Tipos de ampliaciones
En SAP existen varios tipos de ampliaciones, que son utilizadas de acuerdo al
tipo de mejora que se quiera desarrollar, cada una con sus particularidades que sern
explicadas en detalle ms adelante.
User Exit
Field Exit
98
Los Field Exit se utilizan para relacionar un campo de una dynpro de un
determinado programa con un mdulo de funcin, donde generalmente es
utilizado para validar ciertos campos de la pantalla.
Screen Exit
Menu Exit
Keyword Exit
User Exit
Un User Exit, o tambin llamado Customer Exit, es un punto dentro de un
programa en donde se puede llamar a un programa propio. Los User Exit se programan
en mdulos de funciones definidos de acuerdo al programa al cual va a ser referido.
Algunos programas estndares tienen dentro de su cdigo, llamadas a mdulos
de funciones que pueden ser modificados por el programador.
Los User Exit son llamados dentro de los programas estndares por un nmero.
Este nmero es la terminacin del nombre del mdulo de funcin que est asociado al
programa. En la tabla MODSAP se encuentran todos los mdulos de funcin que se
utilizan para User Exit.
99
Los mdulos de funcin tienen una nomenclatura estndar: EXIT_nombre del
programa_nmero de funcin. Ejemplo: EXIT_SAPMV45A_002.
Por ejemplo el programa SAPMV45A llama al mdulo de funcin
EXIT_SAPMV45A_003 pasndole ciertos parmetros y tomando otros como resultado
de la ejecucin del mismo.
Lo importante de esto es saber si sirve para lo que se quiere hacer. Saber cundo
se ejecuta, qu datos utiliza, qu hace luego con los datos que devuelve. No siempre
pueden ser utilizados los User Exits como se pretende ya que no cumple con todas las
condiciones que se quiere.
3.1) Ventajas
El User Exit es una buena herramienta para agregar funcionalidad nueva a un
programa estndar como puede ser una validacin o la ejecucin de rutinas de
control sin modificar el cdigo original.
Para transportar y activar los User Exit es suficiente con el Include nuevo
nicamente, sin tocar el programa original.
3.2) Desventajas
No siempre se ajusta el User Exit a las necesidades del programador ya que los
objetos que importa o exporta son fijos y pueden no tener todos los objetos que
se requieren.
No existe una bsqueda de User Exit por programa con una aclaracin amplia de
su utilizacin, para buscarlos hay que realizar una bsqueda del string CALL
CUSTOMER-FUNCTION dentro del programa control estndar y su
funcionamiento se prueba sin saber exactamente si es el correcto para lo que se
quiere hacer.
100
(Ejemplo EXIT_SAPMV45A_003). El campo NAME nos dir la ampliacin que la
contiene.
Si tampoco se conoce el mdulo de funcin especfico, debe buscarse en el
cdigo del programa estndar las llamadas a funciones de usuario, que generalmente
estn como CALL CUSTOMER-FUNCTION 001. El nmero del final puede ir
cambiando si presenta ms de una llamada, es decir varios User Exit.
Una vez que se tiene el nombre de la ampliacin, en este ejemplo V45A0003,
colocarlo en el campo Ampliacin de la transaccin SMOD y presionar Visualizar.
En este caso existen dos mdulos de funcin. Cada uno va a ser ejecutado en
algn momento determinado de la ejecucin del programa al cual pertenecen, en este
caso SAPMV45A.
101
3) Una vez que ya se sabe qu modulo de funcin usar se debe hacer doble clic
sobre el mismo y derivar a otra pantalla, en la cual se puede ver qu objetos importa y
exporta esta funcin, como as tambin las tablas que importa y que pueden
modificarse, los cuales se utilizarn en el cdigo fuente.
En la solapa Cd.fte. se encuentra un Include Z que se utiliza para agregar el
cdigo del usuario. Si este Include no existe al hacer doble clic sobre el mismo pedir al
usuario que le asigne una orden de transporte para poder generarlo. Una vez creado es
posible codificar utilizando todos los objetos que figuren en la solapa de Import,
Modific., y Tablas, pudiendo devolver resultados modificando los objetos que se
encuentran en las solapas Export, Modif. y Tablas.
102
5) En la seccin Asignacin Ampliacin se colocan todas las ampliaciones que
integrarn el proyecto. Simplemente se completa cada lnea con una ampliacin.
6) El ltimo paso a seguir es activar el proyecto con todas sus ampliaciones. Para
esto se debe presionar el botn Componentes ir al men Proyecto y seleccionar la
opcin Activar.
103
Field Exit
Los Field Exit se utilizan para relacionar un campo de una dynpro de un
determinado programa con un cdigo de programa o mejor dicho con una funcin. El
nexo de unin entre la funcin y el campo es a travs del elemento de datos de dicho
campo.
Los Field Exit generalmente se utilizan para validar los campos de una dynpro
sin modificar el cdigo fuente del programa en el cual est funcionando. Su codificacin
se realiza aparte. El Field Exit se codifica por elemento de datos y luego se asocia a un
programa y a una dynpro en particular. El cdigo es ejecutado automticamente al dar
ENTER sobre la dynpro que tiene el campo especfico, al pasar de pantalla (o salir de la
pantalla) o en algunos casos al presionar el botn Grabar de la dynpo.
En la transaccin SE37, biblioteca de funciones, y colocando field_exit_* y
luego pulsando F4 nos saldrn todos los Field Exit del sistema.
Una de las desventajas del Field Exit es que no se puede hacer un DEBUG al
cdigo, la forma de hacerlo es ir colocando mensajes (MESSAGE) dentro del cdigo
para ir viendo por donde pasa dentro del cdigo y qu valores est manejando.
4.1) Ventajas
Facilita la validacin de campos en un programa estndar sin modificar el
cdigo original.
Puede utilizarse el mismo cdigo para varias transacciones.
Se puede aplicar globalmente (para todos los programas) o para determinados
programas y dynpro que se le asignen.
4.2) Desventajas
Toma de la dynpro (Import) un solo valor, que es el del campo al cual hace
referencia, por lo que no se pueden utilizar tablas internas especficas del
programa estndar en el cdigo del Field Exit.
El mismo cdigo del Field Exit tiene que servir para todos los programas que se
quieran utilizar, por lo que se tiene que especificar en el cdigo que accin
tomar de acuerdo al programa en el cual se est ejecutando.
No es posible hacer un Debug del cdigo del Field Exit de forma directa, a
travs de un Breakpoint. Para esto se utilizan mensajes de error para ir viendo
que valores va tomando los diferentes objetos (variables, tablas, etc.) y por
donde va pasando dentro del cdigo del Field Exit.
104
2) En esta transaccin se encuentran todos los Field Exits del sistema, pudiendo ver
tambin si estn activados a nivel Global (para todas las transacciones) o tienen algn
programa y dynpro asignados.
3) Para crear un nuevo Field Exit se debe ir al men Exit campo y seleccionar la
opcin Crear. All pedir el elemento de datos al cual estar relacionado el Field Exit.
Este elemento de datos debe ser el mismo que tiene el campo de la dynpro al cul se
quiere relacionar.
105
4) Al colocar el elemento de datos y dar ENTER aparece la dynpro de biblioteca de
funciones (SE37) con la funcin FIELD_EXIT_CHARG_D, del elemento de datos que
se quiere crear.
106
5) Una vez creado va a aparecer en la pantalla de la transaccin PRFB. Para poder
codificar seleccionar el check box correspondiente al elemento y presionar el botn
Tratar MF. ste derivar a la transaccin SE37 para poder modificar la funcin.
Este mdulo de funcin tiene la particularidad de tener un parmetro de Import o
entrada y uno de Export o salida. El parmetro de entrada es INPUT y contendr el valor
del campo al cual se ha asignado el Field Exit (recordar que un Field Exit se relaciona
con un elemento de datos y con un programa y dynpro).
El parmetro de salida OUTPUT es el valor que tomar el campo al salir del
Field Exit.
Si en la funcin no se quiere modificar el campo donde esta colocado el Field
Exit entonces al principio de todo se debe escribir: OUTPUT = INPUT para devolver el
mismo valor que se ingres.
Dentro del mdulo de funcin slo se pueden trabajar con estos parmetros, pero
si se quiere obtener valores de otros campos de la dynpro se puede utilizar otros Field
Exits en los cuales se utilizar el comando SET PARAMETER para poder grabar en
memoria al valor del campo y utilizarlo en el Field Exit anterior tomndolo de memoria
con GET PARAMETER.
Otra opcin es utilizar la Funcin GET_DYNP_VALUE para obtener valores de
otros campos de la dynpro.
107
Este esta pantalla se solicita el nombre del programa y la dynpro. Se pueden
asignar varios programas y dynpro al mismo Field Exit.
Otra de las desventajas del Field Exit, adems del que se puede hacer un Debug
es que el mismo mdulo de funcin debe servir para todos los programas, por lo que si
debe funcionar para varios programas se debe preguntar dentro del mismo cdigo, en
qu programa o transaccin se encuentra para actuar de una forma u otra.
7) El ltimo paso es activar el Field Exit, para esto se debe seleccionar el elemento
de datos correspondiente, ir al men Exit campo y presionar la opcin Activar.
Screen Exit
Un Screen Exit se utiliza para agregar nuevos elementos a una dynpro de un
programa estndar, ya sean campos, textos, botones, etc. Los Screen Exits son
definidos en reas especiales llamadas Subscreens.
Al igual que los User Exits, no todas las dynpro estndares tienen subscreen para
poder introducir cambios. Los Screen Exits tambin se incluyen dentro de
ampliaciones o enhancements.
5.1) Ventajas
Permite agregar funcionalidad a un programa incluyendo nuevos elementos a
una dynpro estndar tales como textos, campos, botones, etc.
No altera la funcionalidad del programa estndar original.
108
5.2) Desventajas
No todos los programas estndares tienen Screen Exit como para realizar estas
mejoras.
El espacio que se destina para la subscreen nueva es limitado, por lo que no se
pueden agregar campos indiscriminadamente en la pantalla.
Si se hace doble clic sobre la ampliacin se pasa a la pantalla que detalla los
componentes del mismo. En este caso existen dos User Exit y tres Screen Exit.
En la seccin mbitos dynpros se ubican los Screen Exits, detallando el
programa, dynpro y rea que llama al Screen Exit y el programa y dynpro que va a
contener la subscreen nueva.
109
2) Una vez que se determina cul es la dynpro a crear se ejecuta la transaccin
SE80 y se completa el nombre del programa que va a tener la subscreen. Por ejemplo
SAPLXQQM.
110
Para crear la nueva dynpro hacer clic derecho sobre el objeto principal, en este
caso XQQM y seleccionar Crear / Dynpro. All pedir el nmero de dynpro a crear. En
este caso la 0100. Se completa la descripcin de la dynpro y en Tipo de dynpro se debe
colocar Subscreen.
3) Dentro de esta nueva dynpro se podrn colocar nuevos elementos que integrarn
la dynpro estndar que la llamar. La programacin de la misma se realizar a travs del
PAI y PBO de la dynpro subscreen y en algunos casos dentro de los mdulos de
funcin (User Exit) que contiene la ampliacin que incluye el Screen Exit en cuestin.
En el ejemplo seran EXIT_SAPMIWO0_008 y EXIT_SAPMIWO0_009.
4) Una vez terminado, se debe activar el proyecto y sus componentes para que
tome efecto la llamada al Screen Exit junto con su lgica de procesamiento. Para esto se
debe ir a la transaccin CMOD, presionar el botn Componentes para ver todos los
componentes que tiene el proyecto y elegir dentro del Men Proyecto la opcin Activar.
111
Menu Exit
La ampliacin de tipo Menu Exit permite agregar una transaccin dentro de un
men estndar de SAP. Estas transacciones pueden estar vinculadas a algn
determinado programa pero sern ubicadas dentro del men SAP, en una posicin
especfica.
6.1) Ventajas
Poder agregar programas Z dentro de un men estndar de SAP sin tener que
estar ubicndolo dentro del men, a travs de la transaccin SE43, tan slo con
crear la transaccin y asignarle un programa.
6.2) Desventajas
No se puede cambiar el cdigo de la transaccin que vincula el Menu Exit.
Son limitados los Menu Exits disponibles por SAP y ya tienen asignados lugares
especficos dentro del men.
112
2) Al entrar, ir a la pantalla de Asignacin ampliacin y completar con las
ampliaciones que se desean incluir. Por ejemplo CUST6, que contiene el Menu Exit
MENUS000 con el cdigo de transaccin +C06. Luego grabar.
4) Luego hay que crear la transaccin especfica para incluirla en el men de SAP.
Esto se hace en la transaccin SE93, en este ejemplo el cdigo de la transaccin es
+C06. Todas las transacciones utilizadas para Menu Exit empiezan con +.
113
5) Luego aparecer una pantalla preguntando que tipo de transaccin se desea
crear. Para este ejemplo se utilizar la opcin Programa y dynpro (transaccin de
dilogo).
6) All se deber completar con el nombre del programa y dynpro inicial que tendr
la nueva transaccin. Luego grabarla.
114
7) Por ltimo queda por cambiar la descripcin de la transaccin para que aparezca
en el men con un nombre apropiado. En la transaccin SE43 se debe completar el
Men mbito al cual pertenece el Menu Exit, que se determinar del nombre del
componente de la ampliacin. En el ejemplo el componente se llama MENUS000. Por
lo tanto el Men mbito es S000.
115
8) All hay que presionar el botn Modificar y en la pantalla siguiente Modif. A
continuacin se debe buscar el nuevo Men y presionar el botn Modificar nodo para
poder cambiarle la descripcin del men.
116
Include en tablas transparentes
Los Include en tablas transparentes son otro de los tipos de ampliaciones
utilizados en SAP, en este caso para poder agregar nuevos campos a tablas transparentes
estndares, como tambin a tablas Z.
Como SAP no permite agregar campos a las tablas transparentes estndares, se
ofrece la solucin de anexar una estructura Z a la tabla. Para ello se debe crear primero
una estructura Z con los campos deseados y luego se hace un Append a la tabla. Luego
de esto se puede grabar o consultar a los nuevos campos de la tabla transparente como
cualquier otro campo estndar.
8.1) Ventajas
Permite ampliar una tabla estndar agregando nuevos campos ante la necesidad
del negocio.
8.2) Desventajas
Es un poco tedioso borra campos del Include o borra totalmente el Include a la
tabla, ya que debe adaptarse la tabla a los cambios.
117
8.3) Pasos para realizar un Include a Tabla Transparente
1) Abrir la tabla transparente a la cual se quiere agregar los campos adicionales. En
este caso la tabla MARA.
118
3) En la pantalla siguiente se completan los campos de la estructura con sus
elementos de datos, luego debe activarse. Solicitar una clase desarrollo y una orden de
transporte. Adems debe activarse la tabla transparente.
Una vez activado aparecen los nuevos campos en la tabla transparente a la cual
se le agreg la estructura.
119
En la transaccin SE14 se completa el campo Objeto con el nombre de la tabla a
la cual se le agreg el Include y se presiona el botn Tratar.
120
En la pantalla principal de la SE14 se debe presionar el botn Activar y adaptar
base de datos. Una vez completado el proceso se debe activar la estructura.
En el caso de que se quisiera quitar por completo el Include con todos sus
campos en la transaccin SE11, se debe completar el campo Tabla base de datos con el
nombre de la estructura y presionar el botn Borrar (Icono Tacho de basura). All
aparecer un mensaje de advertencia diciendo que se borrar la estructura Append y que
luego se debe adaptar la tabla en la cual se hace referencia. Para continuar presionar el
botn Borrar.
121
Transacciones relacionadas
SMOD Ampliaciones SAP (User Exit, Screen Exit, Menu Exit, Include en
Tablas transparentes)
SE80 Object Navigator (User Exit, Screen Exit, BTE, Menu Exit)
122
Enhancement-Point
Con todo esto se puede ver que tenemos casi a nuestra disposicin todo el cdigo de
cualquier programa.
123
Una vez marcados todos los puntos de ampliacin, solo tenemos que ponernos encima
de la lnea deseada y seleccionamos:
Tratar -> Operaciones ampliacin -> Crear
124
125