ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
ABAP Basico para Consultores Funcionales
Funcionales
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.
2.
3.
4.
5.
User Exit
Field Exit
Screen Exit
BADIS
Ampliacin de Tablas SAP
Ampliacin del Men SAP
Unidad 1
Introduccin a ABAP Workbench
Repositorio Navegador de Objetos
El repositorio consta de todos los objetos de desarrollo del sistema: los programas, mdulos de
funcin, las definiciones de tablas de base de datos y otros objetos.
El Repositorio se utiliza para mantener los objetos definidos por SAP, as como objetos definida
por clientes. El repositorio est en la base de datos y siempre es independiente de mandante,
es decir, un objeto de repositorio puede ser asesado desde cualquier cliente.
Aparte del repositorio, la base de datos tambin contiene tablas de aplicacin y customizing,
que suelen ser especficos del cliente, es decir, que tienen un columna de cliente.
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.
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:
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:
SY-SUBRC: Determina el estado de finalizacin de una accin.
SY-DATUM: Fecha del da.
SY-UZEIT: Hora del da
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
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 2: Programa
1) Crear un Programa asociado al Paquete y a la Orden de Tranporte creado
anteriormente. Copiar dentro del programa el cdigo propuesto por el instructor.
Ejercicio 3: Transaccin
2) Crear una Transaccin y asociarla al Programa creado.
15
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
Ejemplo de Estructuras:
Tabla de Clientes
Cod. Cliente
.Include Z_DATOS_PERSONALES
Antigedad
Tabla de Proveedores
Cod.Proveedor
.Include Z_DATOS_PERSONALES
Etc.
Estructura: Z_DATOS_PERSONALES
Nombre
Apellido
Telfono
18
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
20
El ejemplo dado a continuacin, contiene una pantalla de seleccin con un campo de entrada
para una fecha.
En circunstancias normales, la fecha actual es la de aparecer como el valor por defecto
(DEFAULT SY-DATUM). Sin embargo, bajo ciertas condiciones (IF) se mostrara el mismo da
de la semana siguiente (pa_date = pa_date + 7.).
En el mismo grfico se muestra cmo el sistema de ejecucin reacciona cuando un bloque
falta. Simplemente, no hay instrucciones ejecutadas por el correspondiente y se continua con el
evento siguiente.
Si no hay ningn evento implementado dentro del programa, asume que todas las sentencias
corresponden al STAR-OF-SELECTION.
Adems de los eventos ya mencionados existen otro que veremos ms adelante en este
mismo manual. Ej. AT LINE-SELECTION, este evento se ejecuta cuando el usuario hace doble
clic en una lista.
21
Este evento puede ser utilizado, por ejemplo, para mostrar la informacin detallada del registro
seleccionado en la lista.
Adems de los eventos ya mencionados, se pueden utilizar otros bloques de procesamiento.
Por ejemplo las Subrutinas (FORM ENDFORM) este bloque es ejecutado por la sentencia
(PERFORM).
El siguiente grafico muestra la estructura general de un programa ABAP:
Report ZCURSOS.
INCLUDE zi_zcursos_top.
TYPES:
DATA:
INCLUDE zi_zcursos_screen.
PARAMETERS:
SELECT-OPTIONS:
INCLUDE zi_zcursos_form.
FORM
ENDFORM.
INITIALIZATION.
..
..
AT SELECTION-SCREEN.
..
..
START-OF-SELECTION.
..
..
22
Unidad 4
Elementos Bsicos del Lenguaje ABAP
Trabajando con DATA OBJECTS
Data Types y Data Objects
El tipo de datos de un objeto define tcnicamente y semnticamente sus atributos.
Vamos a echar un vistazo a los tipos estndar predefinidos por SAP ABAP
(Implementados con TYPES) en primer lugar. Se dividen en dos grupos: tipos completos e
incompletos.
Los siguientes tipos de datos ABAP Standard son completos. Esto significa que ya contienen el
tipo de datos y longitud.
C
Type for character string (Character) for which the fixed length is to be
specified
N
Type for numerical character string (Numerical character) for which the
fixed length is to be specified
X
Type for byte sequence (HeXadecimal string) for which the fixed length is
to be specified
23
P
Type for packed number (Packed number) for which the fixed length is
to be specified.
(In the definition of a packed number, the number of decimal points may
also be specified.)
Para ms informacin de los tipos de datos ABAP ir a la documentacin de las sentencias
DATA y TYPES oprimiendo F1 sobre dichas palabras reservadas.
Veamos a continuacin como declarar con TYPES:
Un tipo de datos declarado en el diccionario ABAP es llamado global y puede ser usado por
cualquier programada ABAP.
En este captulo podremos ver como declarar internamente en nuestros programas cada uno
de los tipos de datos.
Los datos tipos de datos globales se podrn ver en el curso de Diccionario de Datos.
Hay 3 tipos de categoras de tipos de datos: Standard, Local y Global.
Los tipos de datos Standard son los vistos anteriormente, Ej type C.
Los tipos de datos Locales son los declarados con TYPES.
Los tipos de datos Globales, son los declarados en el Diccionario SAP.
24
En el siguiente grafico podremos ver la palabra reservada VALUE para inicializar una variable
con un valor predefinido.
25
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:
+
*
/
**
SUMA
RESTA
Multiplicacin
Divisin
Exponencial
27
Sentencias Condicionales
28
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.
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.
Usted puede utilizar las palabras reservadas PARAMETERS y SELECT-OPTIONS, para
generar una pantalla de seleccin con parmetros de entrada.
Adems de las pantallas de seleccin por defecto, usted puede crear pantallas de seleccin
usando SELECTION-SCREEN BEGIN OF .... y llamar a esas pantallas usando CALL
SELECTION-SCREEN. Cree las variantes para ahorrar los valores de la pantalla de la
seleccin que se utilizan en varias ocasiones. Estas variantes se pueden recordar para el uso
cuando estn requeridas. Una variante es necesaria si un informe se ejecute en un proceso de
trabajo de fondo.
33
Usted puede definir un parmetro como check Box (AS CHECKBOX). Esto crea un campo de
un carcter que puede contener los valores de blanco o X. Usted podr evaluarlos usando las
sentencias IF/ENDIF.
Usted puede tambin definir una serie de botones de radio para una pantalla de la seleccin
con el GRUPO de la adicin RADIOBUTTON GROUP. La longitud mxima del nombre para un
GRUPO de RADIOBUTTON GROUP es cuatro caracteres. Solamente un botn de radio en un
grupo puede ser activo y evaluado durante el proceso del programa. Usted puede evaluar el
contenido de los botones de radio usando las estructuras de control de CASE/ENDCASE.
34
Ejercicio 1: Calculadora
Calculadora con 3 parmetros de seleccin. 2 para el ingreso de nmeros y 1 para el
operando.
Luego con esa informacin imprimimos el resultado de la cuenta.
1) Declarar 3 parmetros de seleccin. 2 de tipo numrico y una alfanumrico.
2) Declarar una variable con 2 decimales para poner el resultado.
3) En la estructura del programa validar que solo se pueda realizar (+ - * /)
4) Imprimir por pantalla un mensaje de error si se ingreso un operando invalido.
5) Validar y dar error en caso de que se quiera realizar una divisin por cero.
6) Realizar la cuenta con un CASE
7) Imprimir el resultado.
35
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
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
38
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.
MODIFY itab FROM wa.
44
En el LOOP, usted podr restringir el acceso a ciertos registros usando el agregado de FORMTO. En el ejemplo anterior el sistema recorre solo los primeros 5 registros.
Usted puede usar el READ TABLE para leer un solo registro. Usted puede agregar la sentencia
INDEX para especificar el nmero especifico de registro a leer.
En el loop usted podr restringir los accesos usando el agregado WHERE. En el ejemplo
anterior solo recorre los registros en donde carrid sea igual a LH.
Usted puede usar el READ TABLE para leer un registro de una tabla interna. En este caso
usted utiliza la sintaxis WITH TABLE KEY para elegir el registro correcto.
La variable de sistema SY-SUBRC se setea en cero cuando se ha encontrado un registro.
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:
DATA itab1 TYPE TABLE OF scarr WITH HEADER LINE.
DATA itab2 LIKE itab1.
itab1 = itab2 . Slo las operaciones con lneas de cabecera!
itab1[] = itab2[] . Las operaciones con cuerpo tabla
La siguiente sintaxis muy antigua tambin define una tabla interna con la lnea de cabecera, a
pesar de que no se indica especficamente.
DATA: BEGIN OF itab OCCURS n,
field1 TYPE ... ,
field2 TYPE ... ,
... ,
END OF itab.
47
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
51
Usted puede usar la sentencia INTO TABLE para copiar los registros seleccionados dentro de
una tabla interna.
Podr agregarse la sentencia INTO CORRESPONDING FIELDS OF para que ingrese la
informacin en los campos del mismo nombre de la tabla interna.
La variable de sistema SY-SUBRC en cero significa que por lo menos un registro fue copiado.
La variable de sistema SY-DBCNT nos dice la cantidad de registros trados de la Base de
Datos.
Una tabla de Base de Datos es llamada CLIENT-SPECIFIC, si tiene el campo (MANDT) como
primer campo clave.
Si usted selecciona informacin de tablas con MANDT sin especificar el mismo, solo la
informacin del mandante en el cual se encuentra ser accedida.
Si una tabla de Base de Datos es frecuentemente accedida por campos que no son claves,
debera definir un ndice secundario por los campos accedidos en orden para agilizar el acceso.
Despus de crear y activar un ndice, la base de datos optimizara automticamente el ndice
cuando un programa es ejecutado, siempre que ayude a la rapidez del acceso.
El ndice primario, consiste en todos los campos claves de la tabla, y es creado
automticamente. Optimiza todos los acceso que se realicen por todos o por parte de la clave.
52
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
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
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
59
Unidad 7
El objetivo principal de una lista es para mostrar los datos con un mnimo de esfuerzos de
programacin. Las listas tambin se adoptarn las necesidades especiales de los datos
empresariales en cuenta:
-Las listas pueden ser diseados en varios idiomas: Los textos y las cabeceras en la lengua de
inicio de sesin cada vez que una traduccin correspondiente est disponible.
- Las listas pueden mostrar los valores monetarios en la moneda correspondiente.
Las siguientes opciones estn disponibles cuando se programa una lista:
- Pantalla: Se puede aadir colores e iconos.
- Impresoras .
- Internet / Intranet: El sistema es capaz de convertir automticamente a formato HTML.
- Guardar: Le permite guardar listas en el sistema SAP, as como exterior (para su
posterior procesamiento, por ejemplo, el uso de programas de hoja de clculo).
60
61
62
63
pulsar el botn con la flecha. Verde. o la tecla de funcin F3, el usuario puede volver a la lista
de base y elegir otra fila.
Sugerencia: Si un bloque de AT LINE-SELECCIN se implementa en el programa, a
continuacin, un botn con el smbolo de la lupa tambin aparece encima de la lista. Marcado
de la fila de la lista y luego elegir este botn tiene el mismo efecto que hacer doble clic en la
lista de fila.
64
65
clave de la fila debe estar disponible para el evento AT LINE-SELECTION. Los grficos
siguientes muestran cmo se puede implementar.
66
67
Pantalla de Seleccin
Ventajas de las pantallas de seleccin
68
69
70
Figura: Variantes
Las pantallas de seleccin efectuada son las variantes del programa. Despus de que el
programa ha sido iniciado, el usuario puede cargar variantes a la pantalla de seleccin
respectivo para facilitar repetidas o casi idnticos entradas idnticas. Usted tiene que
incluir una variante cuando se programa un programa de ABAP en corrida de fondo, si el
programa tiene una pantalla de seleccin, como entradas de usuario no son posibles en el
fondo.
Para definir las variantes especficas-programa por iniciar el programa, completando la
pantalla de seleccin y guardarlo (botn de disco). Tambin puede definir los diferentes
atributos de la variante.
Si las variantes ya han sido definidos para un programa, a continuacin, un pulsador adicional
aparece en la pantalla de seleccin con la bandera de texto. Variante conseguir ..... Este botn
se enumeran las variantes definidas para la seleccin.
Con el fin de poder definir sus propias variantes, el usuario debe contar con la autorizacin
correspondiente (en el sistema de produccin). Pero tambin puede definir variantes en el
sistema de desarrollo y luego los han transportado al sistema de produccin. Variantes con el
prefijo de nombre 'CUS &' son variantes del sistema. Son transportados como objetos del
repositorio comn y no especfica del cliente. Todas las otras variantes son especfica del
cliente y debe ser transportado por separado. Desde el Editor de ABAP, seleccione el men Ir
variantes (GoTo Variants) para ir a la variante de la gestin de su programa, donde se
puede realizar en marcha para su mantenimiento siga variantes con respecto a los valores y
atributos. All, elija el men Herramientas Transporte Solicitud (Tools Transport Request)
para especificar las variantes para ser transportado, as como solicitar una. El transporte pasa
cuando la solicitud se libera.
Para obtener ms informacin sobre las variantes, elija el botn de informacin sobre atributos
de la variante en la pantalla a fin de mantener sus atributos de la variante.
71
72
Screen
Figura: En el evento AT SELECTION-SCREEN
73
74
75
. OBLIGATORY generates a mandatory field. A question mark is displayed in the entry field in
the selection screen and the user should enter a value.
. NO-EXTENSION suppresses multiple single or multiple range selections.
. NO INTERVALS suppresses the seltab-high (upper interval limit) entry on the selection
screen. You can use the additional screen, Multiple selection, to specify ranges.
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 SELECTOPTIONS 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
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:
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
82
exporting depende de donde me encuentro. exporting es lo que mando e importing es lo que envo, en
invocacin de la funcin es abreves.
En importing puedo declarar una tabla (TYPE tabla del diccionario). en la solapa tabla tengo el problema
que no se si es de entrada o salida.
83
Grupo de funciones
Es un repositorio que agrupa funciones y que se utiliza principalmente para compartir
subrutinas y declaraciones de variables entre las distintas funciones pertenecientes al grupo.
Grupos de funciones no son programas ejecutables, es decir, no se puede iniciar con los
cdigos de operacin o por sus nombres. Sirven exclusivamente como programas principales
de los mdulos de funcin. En la mayora de los casos, un grupo de funciones contiene varios
mdulos de funcin que realizan funciones relacionadas o actuar en los mismos datos.
Cuando un programa ABAP llama a un mdulo de funciones, el grupo de funcin
correspondiente se carga en la sesin de residente, donde permanece hasta que el programa
de llamada termina. Si el programa llama a los mdulos de varias funciones del mismo grupo
de funciones (o la misma funcin que el mdulo varias veces) de forma consecutiva, el grupo
de funciones slo se carga durante la primera llamada.
84
Aqu ingresaremos el nombre de nuestro grupo de funcin y presionamos el botn Save como
vemos a continuacin:
85
Attributes: aqu especificamos la descripcin de la funcin y el tipo de funcin que puede ser Normal,
RFC o Update module.
86
Paso por valor: los parmetros formales son creados como copias de los parmetros actuales. Los
cambios en los parmetros formales no afectan a los parmetros actuales.
Paso por referencia: solo la direccin de los parmetros actuales se transfieren a los parmetros
formales. Dentro de la subrutina, se trabaja con el campo del programa que hace la llamada. Si
cambiamos los parmetros formales, el contenido del campo del programa que hace la llamada tambin
cambia.
87
Changing: aqu especificamos los parmetros de salida que cambiarn de valor con la ejecucin de la
funcin.
Tables: aqu especificamos las tablas que se utilizan en la funcin.
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
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
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
91
92
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
Destino RFC
ZUAXRFC
Tipo Conexion
3( Conexion R/3 )
Distribucion carga
Si
Maquina destino
No. Sistema
00
Opciones de seguridad
Trusted system: si
no(marcar este)
SNC
act
inact(marcar este)
Descripcion: Conexion con la maquina productiva
Acceso a sistema
Idioma:
ES
Mandante:
0400
Usuario:
IDUSUARIO
Clave acceso: **********
Usuario actual( desmarcado )
Clave acceso no codificada( desmarcado )
2.- Crear grupo de funciones
Grupo funciones: ZUAXRFC
Descripcion:
Lectura de la tabla ZUAXRFC en produccion
Aplicacion:
F( contabilidad financiera )
Tablas: parametro tabla
estructura referencia
TAB_ZUAXRFC
ZUAXRFC
Forma de ejecucion
Remote Function Call soportado( marcar este )
Inicio inmediato( marcar este )
3.- Crear funcin( pertenece al grupo ZUAXRFC )
FUNCTION Z_UAX_RFC.
94
95
Bsicamente son funciones como cualquier otra funcin en ABAP, as que poseen las mismas
caractersticas: parmetros de entrada, de salida, tablas, excepciones...
Por lo general cuando se hace un modificacin de un objeto con una BAPI es necesario realizar
un COMMIT explcito mediante la funcin BAPI_TRANSACTION_COMMIT. Si quieren probar si
una funcin les sirve para cargar algn dato en particular, pueden utilizar la transaccin SE37 e
ir al men Mdulo de Funciones->Verificar->Secuencias Test. All se pueden encadenar
funciones, de manera de poder ejecutar primero la BAPI y despus la funcin
BAPI_TRANSACTION_COMMIT para probar si efectivamente el dato que necesitan cargar es
cargado por la BAPI que estn probando.
Ventajas de usar BAPI
Las BAPIs son mtodos estandarizados de los Objetos de Negocio Sap R/3, que permiten la
integracin de los componentes de software de los clientes y de terceros. Algunas de las
ventajas de usar BAPIs son:
.- Es un Estndar de Negocio
.- Es un Estndar Consensuado
.- Garantiza estabilidad y compatibilidad futura
.- Garantiza orientacin a objetos
.- Independencia de entorno (apertura)
Usar BAPIs en programas de aplicacin
Actualmente una BAPI puede ser invocada de dos formas diferentes:
.- Llamar la BAPI en el repositorio
.- Hacer llamada RFC a la funcin que implementa la BAPI
Listado de BAPIs SAP:
BAPI de creacin de Pedidos de Venta:
BAPI de creacin de Pedidos de Compra:
BAPI de Verificacin de Facturas:
BAPI de facturacin:
Bapi de Movimiento de mercancias:
BAPI modificacin Pedido de ventas:
BAPI_SALESORDER_CREATEFROMDAT2
BAPI_PO_CREATE
BAPI_INCOMINGINVOICE_CREATE
BAPI_BILLINGDOC_CREATEMULTIPLE
BAPI_GOODSMVT_CREATE
BAPI_SALESORDER_CHANGE
96
Unidad 10
Ampliaciones en SAP
ndice:
1)
2)
3)
97
Ventajas:
Permite modificar ciertos programas para adaptarlo a necesidades particulares de
la empresa, agregando nuevas caractersticas a las existentes.
Permite realizar mejoras a un programa sin modificar el cdigo original del
mismo, manteniendo el buen funcionamiento y las caractersticas que tena.
Los cambios toman efecto con slo transportar los nuevos objetos.
Desventajas:
No siempre se pueden hacer todas las modificaciones de manera satisfactoria, ya
que la mayora de las ampliaciones estn preparadas para una determinada tarea
y momento dentro de la ejecucin de un programa.
No todos los programas estndares estn preparados para agregar ampliaciones.
Por ejemplo todos los programas no tienen User Exit.
Tipos de ampliaciones
En SAP existen varios tipos de ampliaciones, que son utilizadas de acuerdo al
tipo de mejora que se quiera desarrollar, cada una con sus particularidades que sern
explicadas en detalle ms adelante.
User Exit
Un User Exit es un punto dentro de un programa en donde se puede
invocar a un programa propio agregando una funcionalidad nueva al programa
original.
Field Exit
98
Screen Exit
Un Screen Exit se utiliza para agregar nuevos elementos a una dynpro de
un programa estndar, ya sea campos, textos, botones, etc. Los Screen Exits son
definidos en reas especiales llamadas Subscreens.
Menu Exit
Un Menu Exit permite agregar una transaccin dentro de un men
estndar de SAP.
Keyword Exit
Los Keyword Exit permiten cambiar la descripcin breve de un elemento
de datos, sus etiquetas o denominaciones y la documentacin que presenta SAP
al presionar F1 sobre el elemento de datos.
User Exit
Un User Exit, o tambin llamado Customer Exit, es un punto dentro de un
programa en donde se puede llamar a un programa propio. Los User Exit se programan
en mdulos de funciones definidos de acuerdo al programa al cual va a ser referido.
Algunos programas estndares tienen dentro de su cdigo, llamadas a mdulos
de funciones que pueden ser modificados por el programador.
Los User Exit son llamados dentro de los programas estndares por un nmero.
Este nmero es la terminacin del nombre del mdulo de funcin que est asociado al
programa. En la tabla MODSAP se encuentran todos los mdulos de funcin que se
utilizan para User Exit.
99
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
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
2)
Presionando el botn Componentes (o habiendo seleccionado la opcin
Componentes de la pantalla anterior), se visualizarn todos los mdulos de funciones
que contiene esta ampliacin.
En este caso existen dos mdulos de funcin. Cada uno va a ser ejecutado en
algn momento determinado de la ejecucin del programa al cual pertenecen, en este
caso SAPMV45A.
101
3)
Una vez que ya se sabe qu modulo de funcin usar se debe hacer doble clic
sobre el mismo y derivar a otra pantalla, en la cual se puede ver qu objetos importa y
exporta esta funcin, como as tambin las tablas que importa y que pueden
modificarse, los cuales se utilizarn en el cdigo fuente.
En la solapa Cd.fte. se encuentra un Include Z que se utiliza para agregar el
cdigo del usuario. Si este Include no existe al hacer doble clic sobre el mismo pedir al
usuario que le asigne una orden de transporte para poder generarlo. Una vez creado es
posible codificar utilizando todos los objetos que figuren en la solapa de Import,
Modific., y Tablas, pudiendo devolver resultados modificando los objetos que se
encuentran en las solapas Export, Modif. y Tablas.
4)
Una vez terminada la codificacin, la ampliacin debe activarse e incluirse en un
proyecto. Los proyectos son creados en la transaccin CMOD. All se debe generar un
proyecto Z en el cual se incluirn las ampliaciones que se desee.
102
5)
En la seccin Asignacin Ampliacin se colocan todas las ampliaciones que
integrarn el proyecto. Simplemente se completa cada lnea con una ampliacin.
6)
El ltimo paso a seguir es activar el proyecto con todas sus ampliaciones. Para
esto se debe presionar el botn Componentes ir al men Proyecto y seleccionar la
opcin Activar.
103
Field Exit
Los Field Exit se utilizan para relacionar un campo de una dynpro de un
determinado programa con un cdigo de programa o mejor dicho con una funcin. El
nexo de unin entre la funcin y el campo es a travs del elemento de datos de dicho
campo.
Los Field Exit generalmente se utilizan para validar los campos de una dynpro
sin modificar el cdigo fuente del programa en el cual est funcionando. Su codificacin
se realiza aparte. El Field Exit se codifica por elemento de datos y luego se asocia a un
programa y a una dynpro en particular. El cdigo es ejecutado automticamente al dar
ENTER sobre la dynpro que tiene el campo especfico, al pasar de pantalla (o salir de la
pantalla) o en algunos casos al presionar el botn Grabar de la dynpo.
En la transaccin SE37, biblioteca de funciones, y colocando field_exit_* y
luego pulsando F4 nos saldrn todos los Field Exit del sistema.
Una de las desventajas del Field Exit es que no se puede hacer un DEBUG al
cdigo, la forma de hacerlo es ir colocando mensajes (MESSAGE) dentro del cdigo
para ir viendo por donde pasa dentro del cdigo y qu valores est manejando.
4.1) Ventajas
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.
6)
Una vez terminada la codificacin se debe asignar un programa y dynpro al Field
Exit (si no se quiere hacer Global para todos los programas).
Para eso se debe ir a la pantalla de administracin de Field Exit (CMOD PRFB), seleccionar el Field Exit y presionar el botn Asignar proa./dynpro.
107
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
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.
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
112
2)
Al entrar, ir a la pantalla de Asignacin ampliacin y completar con las
ampliaciones que se desean incluir. Por ejemplo CUST6, que contiene el Menu Exit
MENUS000 con el cdigo de transaccin +C06. Luego grabar.
.
3)
4)
Luego hay que crear la transaccin especfica para incluirla en el men de SAP.
Esto se hace en la transaccin SE93, en este ejemplo el cdigo de la transaccin es
+C06. Todas las transacciones utilizadas para Menu Exit empiezan con +.
113
5)
Luego aparecer una pantalla preguntando que tipo de transaccin se desea
crear. Para este ejemplo se utilizar la opcin Programa y dynpro (transaccin de
dilogo).
6)
All se deber completar con el nombre del programa y dynpro inicial que tendr
la nueva transaccin. Luego grabarla.
114
7)
Por ltimo queda por cambiar la descripcin de la transaccin para que aparezca
en el men con un nombre apropiado. En la transaccin SE43 se debe completar el
Men mbito al cual pertenece el Menu Exit, que se determinar del nombre del
componente de la ampliacin. En el ejemplo el componente se llama MENUS000. Por
lo tanto el Men mbito es S000.
115
8)
All hay que presionar el botn Modificar y en la pantalla siguiente Modif. A
continuacin se debe buscar el nuevo Men y presionar el botn Modificar nodo para
poder cambiarle la descripcin del men.
9)
116
8.1) Ventajas
Permite ampliar una tabla estndar agregando nuevos campos ante la necesidad
del negocio.
8.2) Desventajas
117
2)
Luego se debe presionar el botn Estr.append para agregar una estructura
nueva a la tabla transparente. Esta estructura va a ser completada con los campos que se
desee y la tabla transparente va a tomar todos los campos de la estructura como propios.
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
120
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
Se puede insertar codigo en distintos puntos del programa estandar
- Donde se declaran las tablas.
- Dentro de cada estructura de las tablas internas para insertar nuevos campos.
- En modulos de funciones.
- Al principio y al final de cada FORM.
Con todo esto se puede ver que tenemos casi a nuestra disposicin todo el cdigo de
cualquier programa.
Para ello vamos a:
Tratar -> Operaciones ampliacin -> Insertar puntos de ampliacin implcitos
123
Una vez marcados todos los puntos de ampliacin, solo tenemos que ponernos encima
de la lnea deseada y seleccionamos:
Tratar -> Operaciones ampliacin -> Crear
124
125