Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Versin 2.0
Xioma Centroamrica
2009
______________________________________________________________________________________
Xioma Consulting 1
Introduccin
Capa de Aplicacin: Es en esta capa donde se ejecuta ABAP, tanto las aplicaciones
desarrollas por SAP como las desarrolladas por los usuarios. Desde esta capa ABAP envia y
recibe datos a la capa de base de datos.
______________________________________________________________________________________
Xioma Consulting 3
Composicin de un programa ABAP
Cdigo fuente
Contiene todas las sentencias ABAP.
Pantallas
Contiene toda la disposicin de pantallas y la lgica de flujo asociada a las mismas.
Normalmente se crea la disposicin de pantallas utilizando una herramienta llamada screen
painter o desde el ABAP Workbench. Sin embargo existen pantallas especiales, como el
selection screen y los reportes, que poseen una disposicin y lgica que se controla
nicamente a travs de sentencias ABAP.
Interfase
Contiene todas las opciones de los mens, la barra estndar de herramientas, la barra
de herramientas de aplicacin y los botones. Contiene tambin los ttulos y status.
Elementos de Texto
Estos son dependientes del idioma. Puede ser traducidos directamente desde la
herramienta de mantenimiento de textos o utilizando una herramienta especial de
traduccin.
Documentacin
La documentacin es dependiente del idioma. Es importante recordar escribir la
documentacin orientada al usuario. En caso de querer documentar cdigo, se hace a travs
de comentarios en el cdigo directamente.
Variantes
Las variantes permiten predefinir valores en la pantalla de seleccin (selection
screen) de los programas. Esto suele ser muy til durante los periodos de prueba o para la
ejecucin de tareas repetitivas.
______________________________________________________________________________________
Xioma Consulting 4
Editor
El editor ABAP se invoca a travs de la transaccin SE38, o por la ruta del men SAP
HERRAMIENTAS->WORKBENCH ABAP->DESARROLLO->SE38 - EDITOR ABAP.
Imagen Inicial
En la imagen inicial del editor se indica el nombre del programa que se desea tratar, y cuenta
con las siguientes opciones en la barra de herramientas:
______________________________________________________________________________________
Xioma Consulting 5
1. Verificar
Esta opcin se encarga de revisar la sintaxis del programa.
2. Activar
La activacin ejecuta una revisin sintctica, almacena y posteriormente deja
disponible al programa para ser ejecutado en el ambiente del R/3.
3. Ejecutar
Ejecuta el programa.
4. Referencia de Utilizacin
Las referencias de utilizacin sirven para identificar otros objetos del
ambiente que utilicen el programa indicado.
5. Anlisis de Entorno
Verifica todos los objetos de repositorio a la cual se les hace referencia dentro del
programa.
6. Manual Online
Invoca la ayuda de ABAP disponible en lnea en el sistema.
______________________________________________________________________________________
Xioma Consulting 6
7. Borrar
Elimina el programa, y otros componentes que formen parte del mismo de serle
indicado.
8. Copiar
Crea una copia del programa con otro nombre.
9. Renombrar
Cambia el nombre del programa.
10. Debugging
Ejecuta el programa a travs del de la herramienta de Debugging
______________________________________________________________________________________
Xioma Consulting 7
11. Con Variante
Ejecuta el programa con una variante creada con la opcin de variantes.
12. Variantes
Crea una variante para el programa, siempre y cuando el programa reciba algn tipo
de parmetro de entrada.
______________________________________________________________________________________
Xioma Consulting 8
13. Crear
Crea el programa e invoca el editor de cdigo.
14. Visualizar
Invoca el editor de cdigo en modo de solo visualizacin.
15. Modificar
Invoca el editor de cdigo para modificar un programa que ya existe.
______________________________________________________________________________________
Xioma Consulting 9
Editor de Cdigo
El editor de Cdigo es el ambiente donde se encuentran las herramientas bsicas de
desarrollo y donde se introduce el cdigo ABAP.
1. Objeto Anterior
Se desplaza al objeto anterior cuando existe ms de un objeto en la lista de objetos.
2. Objeto Siguiente
Se desplaza al objeto siguiente en la lista de objetos cuando existe ms de un objeto en la
lista de objetos.
______________________________________________________________________________________
Xioma Consulting
10
5. Otro Objeto
sta opcin permite cambiar el objeto actual por otro que se desee editar. Se divide en varias
categoras de las cuales las ms importantes son: diccionario de datos, bibliotecas de clases,
programa y grupo de funciones.
6. Verificar
sta opcin se encarga de revisar la sintaxis del programa.
7. Activar
La activacin ejecuta una revisin sintctica, almacena y posteriormente deja disponible al
programa para ser ejecutado en el ambiente del R/3.
8. Verificar (Ejecutar)
Ejecuta el programa.
9. Referencia de Utilizacin
Las referencias de utilizacin sirven para identificar otros objetos del ambiente que utilicen
el programa indicado.
______________________________________________________________________________________
Xioma Consulting
11
12. Imagen Completa
Muestra la ventana del objeto en revisin maximizada.
13. Ayuda
Invoca la ayuda del sistema.
15. Patrn
Inserta una plantilla a partir de la lnea actual. Sobre todo en el caso de la invocacin de
funciones o la invocacin del mtodo de un objeto, sta funcin puede ser de gran utilidad para
conocer los parmetros que pueden ser utilizados.
______________________________________________________________________________________
Xioma Consulting
12
Creacin de un nuevo programa
Los programas en SAP que no pertenecen al estndar deben iniciar su nombre con la letra Z,
distinguindose as los programas de usuarios.
En la imagen inicial se digita el nombre del programa y se utiliza el botn CREAR. En ste
momento se deben llenar las propiedades bsicos del programa en la ventana de atributos.
Entre los tipos de programa que se pueden crear, estn los siguientes:
1. Programa ejecutable
Estos son los programas que pueden iniciarse directamente sin cdigo de transaccin
y en fondo, desde la transaccin SE38 o la SA38.
4. Pool de subrutinas
Contiene partes de programa (FORM) que pueden ser invocadas desde instrucciones
PERFORM externas.
5. Grupo de funciones
6. Pool de interfaces
7. Pool de clases
Las clases de desarrollo agrupan a los objetos que pertenecen al ABAP Workbench. La asignacin
a una clase de desarrollo se indica en el catlogo de objetos. Los objetos locales pertenecen a la
clase de desarrollo $TMP (Objeto Local) y no son transportables.
______________________________________________________________________________________
Xioma Consulting
14
Una vez seleccionada la clase de desarrollo, si sta no es local, el sistema procede a solicitar
una orden de transporte vlida a la que se encontrar atado el programa. Esta puede ser una orden
ya existente o una orden nueva. Las rdenes de transporte pueden ser revisadas y editadas por
medio de la transaccin SE09.
______________________________________________________________________________________
Xioma Consulting
15
Programa Hola Mundo
Los programas tipo REPORT son el tipo ms bsico, y se utilizan primordialmente para la
generacin de reportes, batch inputs 3 e interfases. Un ejemplo de un programa tipo REPORT es el
siguiente:
Todos los programas ejecutables deben iniciar con la instruccin REPORT <Nombre del
programa>, el parmetro adicional NO STARNDARD PAGE HEADING elimina del reporte la
lnea que imprime el ttulo del reporte.
Para imprimir un texto en la pantalla se utiliza la instruccin WRITE <string>. Una vez
finalizado el programa es necesario activarlo y posteriormente puede ser ejecutado .
Con la opcin de visualizacin se puede ver la lista objetos locales y aquellos que se
encuentren en una orden de transporte esperando a ser liberados. Las rdenes que pertenecen a la
clase Workbench incluyen todos los objetos relacionados con el desarrollo de aplicaciones. En el
caso de las rdenes de Customizing, stas contienen a los objetos generados por los cambios en la
parametrizacin del sistema.
Existen dos estados posibles para las ordenes, las liberadas que son aquellas ordenes que
estn listas para ser transportadas a otro mandante y las modificables que son aquellas ordenes que
estn esperando una liberacin. Las rdenes liberadas pueden ser visualizadas desde una fecha
especfica.
______________________________________________________________________________________
Xioma Consulting
17
Para liberar la orden, se debe liberar primero todas las tareas incluidas en la orden de
transporte y posteriormente la orden. Se libera un objeto a la vez, seleccionndolo y pulsando el
botn LIBERAR DIRECTAMENTE . Solamente se pueden liberar las ordenes propias, por lo
que si fuera necesario liberar una tarea o una orden que perteneciera a otro usuario es necesario
reasignarla utilizando el botn MODIFICAR TITULAR .
______________________________________________________________________________________
Xioma Consulting
18
Eventos
LOAD-OF-PROGRAM
Este evento se ejecuta justamente despus de que el sistema ha cargado un
programa de tipo 1, M, F o S en memoria. Siendo este bloque ejecutado nicamente
una vez por cada programa en cada sesin interna.
INITIALIZATION
Este evento se ejecuta antes de que se muestre la pantalla de seleccin.
Normalmente es utilizado para inicializar valores clave para la ejecucin del
programa.
Sintaxis:
INITIALIZATION.
<inicializacin de variables>
Ejemplo:
PARAMETERS QUAL_DAY TYPE D DEFAULT SY-DATUM.
INITIALIZATION.
QUAL_DAY+6(2) = '01'.
QUAL_DAY = QUAL_DAY - 1.
START-OF-SELECTION
Se puede interpretar como el evento principal y es ejecutado justo despus
del evento SELECTION-SCREEN.
Sintaxis:
START-OF-SELECTION.
<Cdigo a ejecutar>
END-OF-SELECTION.
Ejemplo:
START-OF-SELECTION.
END-OF-SELECTION.
______________________________________________________________________________________
Xioma Consulting
19
END-OF-SELECTION
Se procesa despus de que toda la informacin se ha ledo, y justo antes de
que se muestre la impresin del reporte.
TOP-OF-PAGE
Se ejecuta antes de que se imprima informacin en la primera pgina de un
reporte. De esta forma permite la creacin de una cabecera definida por el
programador siempre que se haya suprimido la cabecera estndar (REPORT
<NOMBRE> NO STANDARD PAGE HEADING).
AT SELECTION-SCREEN
Este evento solamente tiene sentido en los reportes. El evento se disparar
una vez que se haya procesado la pantalla de seleccin. En el caso que se genere un
error todos los campos presentes en la pantalla de seleccin estarn disponibles
nuevamente para recibir datos.
Sintaxis:
AT SELECTION-SCREEN.
<Cdigo>.
Ejemplo:
Parameters: numero(2).
AT SELECTION-SCREEN.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
20
Definicin de Datos
Tipos de Datos
Definicin de Tipos
Ejemplos:
______________________________________________________________________________________
Xioma Consulting
21
Comentarios
Ejemplos:
*-------------------------------------------------------
* Autor:
* Fecha de creacin
* Fecha de Modificacin
*-------------------------------------------------------
Variables
Ejemplos:
DATA Nombre(40).
______________________________________________________________________________________
Xioma Consulting
22
Constantes
Ejemplos:
Field Symbols
Los field symbols son nombres simblicos a los que se les asigna un rea de
memoria durante el tiempo de ejecucin. Se pueden utilizar en lugar de objetos de datos en
las sentencias de ABAP.
Para crear un field symbol se utiliza la siguiente sintaxis:
Sintaxis:
Sintaxis:
Ejemplo:
FIELD-SYMBOLS:
<E1>.
START-OF-SELECTION.
<E1> = '19751130'.
WRITE
FECHA.
______________________________________________________________________________________
Xioma Consulting
23
Creacin de textos
Se puede crear textos dependientes del idioma o smbolos de texto para todos los
programas ABAP. Se asigna un cdigo de tres dgitos <xxx> a cada smbolo de texto. Para
accesarlo en el programa se utiliza de la siguiente manera:
Sintaxis:
text-<xxx>.
Ejemplo:
WRITE text-t01.
Parmetros
Parameters
La instruccin PARAMETERS crea una variable de entrada con las mismas
caractersticas que la instruccin DATA.
Sintaxis:
PARAMETERS <param>.
Ejemplos:
PARAMETERS Nombre(40).
Select-Options
Select-options indica un parmetro de tipo especial (RANGES) que permite
que el usuario defina un conjunto de valores para el parmetro.
______________________________________________________________________________________
Xioma Consulting
24
Controles de Seleccin de Pantalla
Recuadros y Ttulos
Sintaxis:
<Parmetros>
Ejemplo:
Report Zejemplo.
*Ejemplo 1
PARAMETERS: P_PARA(20).
*Ejemplo 2
*Ejemplo 3
______________________________________________________________________________________
Xioma Consulting
25
SELECT-OPTIONS: S_FECHA3 FOR SY-DATUM.
PARAMETERS: P_PARA3(20).
INITIALIZATION.
______________________________________________________________________________________
Xioma Consulting
26
Agrupacin de temes
Sintaxis:
Ejemplos:
REPORT EJEMPLO2.
______________________________________________________________________________________
Xioma Consulting
27
REPORT EJEMPLO2.
PARAMETERS: P_PARAM1(10).
SELECTION-SCREEN COMMENT (15) W_NOMBRE.
SELECTION-SCREEN ULINE (10).
SELECTION-SCREEN PUSHBUTTON (10) W_BOTON
USER-COMMAND UCOM.
INITIALIZATION.
W_NOMBRE = Comentario.
W_BOTON = Botn.
______________________________________________________________________________________
Xioma Consulting
28
Posicionamiento de temes
Dentro del conjunto de instrucciones posibles para la adicin BEGIN OF
LINE se encuentra la opcin POSITION. sta opcin se utiliza para definir la
posicin en la lnea definida por el BEGIN OF LINE.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
29
Subrayado
Sintaxis:
Ejemplos:
PARAMETERS:
P_PARAM1(10).
SELECTION-SCREEN
ULINE
11(3).
PARAMETERS:
P_PARAM2(10).
SELECTION-SCREEN
ULINE
26(3).
PARAMETERS:
P_PARAM3(10).
______________________________________________________________________________________
Xioma Consulting
30
Comentarios
Sintaxis:
Ejemplo:
INITIALIZATION.
W_NOMBRE = Comentario.
INITIALIZATION.
W_NOMBRE = Comentario.
______________________________________________________________________________________
Xioma Consulting
31
Botones
Los botones son utilizados para ejecutar una funcin del usuario dentro del
cdigo para interactuar dinmicamente con el usuario.
Sintaxis:
Ejemplo:
TABLES: SSCRFIELDS.
INITIALIZATION.
W_BUTTON
=
'Botn'.
AT SELECTION-SCREEN.
IF
SSCRFIELDS-UCOMM
=
'UCOM'.
MESSAGE
S333(S1)
WITH
'Se
ha
oprimido
el
botn'.
ENDIF.
Puede notarse en el ejemplo que el botn puede existir por si mismo dado
que es un campo de entrada. Cuando se hace click sobre el botn, el campo del
sistema SSRFIELDS-UCOMM obtiene el valor del valor que se le ha asignado al
botn en su definicin. Entonces se puede hacer una evaluacin de este campo en el
evento SELECTION-SCREEN para poder determinar si un ste fue o no oprimido y
ejecutar el cdigo que corresponde.
______________________________________________________________________________________
Xioma Consulting
32
Botones en la Barra de Herramientas
Sintaxis:
SELECTION-SCREEN
FUNCTION
KEY
<nmero>.
Ejemplo:
TABLES: SSCRFIELDS.
SELECTION-SCREEN SKIP 9.
______________________________________________________________________________________
Xioma Consulting
33
Al ejecutar el programa, el campo SSCRFIELDS-FUNCTXT_01se asocia al
botn 1 de la barra de herramientas en el evento de inicializacin. Este valor es
entonces desplegado en el botn en tiempo de ejecucin. Se puede asociar el campo
FUNCTXT_02 al botn dos, y as sucesivamente hasta el botn cinco.
______________________________________________________________________________________
Xioma Consulting
34
Lneas en Blanco
Sintaxis:
Ejemplo:
SELECTION-SCREEN SKIP 9.
INITIALIZATION.
W_BUTTON
=
'Botn
1'.
W_BUTTO2
=
'Botn
2'.
______________________________________________________________________________________
Xioma Consulting
35
Variables de Ambiente (SY)
SY es una estructura que contiene las variables de ambiente que se modifican en tiempo de
ejecucin por el sistema mientras se ejecuta un programa. No es necesario definir la estructura y
sta estar disponible desde cualquier parte de un programa.
El siguiente cuadro describe los campos que pueden resultar de uso ms frecuente:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
36
Operadores Aritmticos
La suma
Ejemplo:
A = A + 1.
ADD 1 to A.
La Resta
Ejemplo:
A = A 1.
SUBSTRACT 1 TO A.
La Multiplicacin
Ejemplo:
A = A * 2.
MULTIPLY A BY 2.
______________________________________________________________________________________
Xioma Consulting
37
La Divisin
Ejemplo:
A = A / 2.
DIVIDE A BY 2.
El exponente
Ejemplo:
A = A ** 2.
______________________________________________________________________________________
Xioma Consulting
38
Instrucciones de Decisin
Las instrucciones de decisin evalan una expresin y en base al valor de verdad que tenga
dicha expresin se ejecuta el cdigo que corresponda..
Los operadores lgicos sirven para definir relaciones entre expresiones generando de
esta manera nuevos valores de verdad. En la lgica Booleana solamente existen dos valores:
VERDADERO o FALSO. Los operadores que existen en ABAP son los siguientes: AND,
OR y NOT. Estos operadores respetan las reglas de la lgica Booleana.
AND
Valor 1 Valor 2 Resultado
Verdadero Verdadero Verdadero
Verdadero Falso Falso
Falso Verdadero Falso
Falso Falso Falso
Es posible agrupar las expresiones encerrndolas entre parntesis. Los valores y campos
deben separarse utilizando espacios en blanco.
Ejemplo:
Incorrecto:
Correcto:
f1 EQ f2 AND ( f3 EQ f4 ).
______________________________________________________________________________________
Xioma Consulting
39
OPERADORES RELACIONALES
Los operadores relacionales sirven para determinar el valor de verdad entre dos
operndos. En ABAP existen los siguientes:
IF
IF evala una expresin lgica. En caso que el valor de la expresin sea verdadera,
ejecuta el cdigo que contiene su bloque, de lo contrario continua con el cdigo siguiente.
El bloque debe cerrarse con la instruccin ENDIF.
Sintaxis:
IF <expresin>.
<Cdigo>.
ENDIF.
Ejemplo:
IF A GT 10.
ENDIF. Comparacin de 10
IF A GT 10.
IF A LT 20.
ELSE (ELSEIF)
Las sentencias que se coloquen despus del ELSE, sern ejecutadas solo si la
expresin en la sentencia IF no se cumple. Si se desea hacer otra verificacin si la primera
no se cumple, se recomienda utilizar ELSEIF. Se puede colocar tantos ELSEIF como se
necesiten.
______________________________________________________________________________________
Xioma Consulting
40
Sintaxis:
IF
<expresin>.
<Cdigo>.
ELSE.
<Cdigo>.
ENDIF.
IF
<expresin>.
<Cdigo>.
ELSEIF.
<Cdigo>.
ELSEIF.
<Cdigo>.
ELSE.
<Cdigo>.
ENDIF.
Ejemplo:
IF
A
LT
20.
WRITE:/
A
es
menor
que
20.
ELSEIF
A
GT
50.
WRITE:/
A
es
mayor
que
50.
ELSE.
WRITE:/
A
es
mayor
o
igual
a
20
y
menor
que
50.
ENDIF.
CASE
Dependiendo del valor del campo, se ejecutarn diferentes bloques de sentencias de
ejecucin. Con la instruccin WHEN especificas las condiciones que se quieren evaluar
sobre dicho campo.
Sintaxis:
CASE
f.
WHEN
f11
OR
f12
...
OR
f1n.
...
WHEN
f21
OR
f22
...
OR
f2m.
...
WHEN
OTHERS.
.
.
.
ENDCASE.
Ejemplo:
CASE
A.
WHEN
1
OR
2.
WRITE:/
A
es
igual
a
1
o
a
2.
WHEN
3.
WRITE:/
A
es
igual
a
3.
WHEN
OTHERS.
WRITE:/
A
tiene
un
valor
diferente
a
1,2
o
3.
ENDCASE.
______________________________________________________________________________________
Xioma Consulting
41
Instrucciones de Iteracin
A continuacin instrucciones que permiten ejecutar un bloque de sentencias de forma
repetitiva, ya sea por cantidad de veces determinada o hasta que se cumpla cierta expresin lgica.
DO
Sintaxis:
1. DO
N
TIMES. Permite hacer iteraciones de forma limitada.
2. ...
VARYING
f FROM
f1
NEXT
f2. Permite hacer iteraciones entre f1 hasta f2.
Ejemplo:
DO.
WRITE:
/
'SY-INDEX
-
Begin:',
(3)
SY-INDEX.
IF
SY-INDEX
=
10.
EXIT.
ENDIF.
WRITE:
'End:',
(3)
SY-INDEX.
ENDDO.
WHILE
Repite las sentencias encerradas entre el WHILE y el ENDWHILE, mientras se
cumpla la expresin lgica asociada.
Sintaxis:
WHILE
<expresin>.
<Cdigo>.
ENDWHILE.
Ejemplo:
SEARCH_ME
=
23.
WHILE
NUMBER
<>
SEARCH_ME.
ADD
1
TO
NUMBER.
WRITE:
/
NUMBER.
ENDWHILE.
______________________________________________________________________________________
Xioma Consulting
42
CHECK
Verifica que la expresin lgica subsecuente es verdadera. Si es as, pasa a la
siguiente sentencia, pero si no, sale de la iteracin, si se encuentra en un DO, WHILE,
LOOP o SELECT, o sale de la rutina, si se encuentra en un FORM, FUNCTION y
MODULE.
Sintaxis:
CHECK <expresin>.
Ejemplo:
DO.
Contador
=
contador
+
1.
CHECK
contador
LT
10.
ENDDO.
EXIT
Permite salir de la iteracin, si se encuentra en un DO, WHILE, LOOP o SELECT, o
sale de la rutina, si se encuentra en un FORM, FUNCTION y MODULE.
Sintaxis:
EXIT.
Ejemplo:
DO.
Contador
=
contador
+
1.
IF
contador
GT
9.
EXIT.
ENDIF.
ENDDO.
______________________________________________________________________________________
Xioma Consulting
43
Despliegue
Existen dos maneras de enviar la informacin en SAP hacia la pantalla y/o impresora. La
ms elaborada es la elaboracin de formularios (va Smartforms o SAPScript) y la otra por medio
de reportes que se construyen utilizando nicamente instrucciones de ABAP. Las ms utilizadas
para generar estos reportes se describen a continuacin.
WRITE
Despliega un valor en la pantalla o en su defecto puede utilizarse para trasladar un
valor entre variables (incluso de diferente tipo).
Sintaxis:
WRITE
<posicin>
<(tamao)>
<variable/constante>.
Ejemplo:
Write
Hola
Mundo!.
FORMAT
Se utiliza para modificar el formato de salida de los textos en el reporte controlando
el color del fondo del texto y la intensidad del mismo.
Sintaxis:
FORMAT
<adicin>
<ON/OFF>.
Ejemplo:
FORMAT
INTENSIFIED
ON
COLOR
=
5.
WRITE
'Marca
el
texto
con
verde
oscuro'.
FORMAT
INTENSIFIED
OFF
COLOR
=
5.
WRITE
'Marca
el
texto
con
verde
claro'.
ULINE
Esta sentencia imprime una lnea continua por todo el ancho de la salida del reporte.
Sintaxis:
ULINE.
Ejemplo:
WRITE:
/
SY-ULINE(80).
______________________________________________________________________________________
Xioma Consulting
44
SKIP
Permite saltar n lneas en una salida de reporte. Si no se indica la cantidad de lneas,
solo saltar una lnea.
Sintaxis:
SKIP
[N].
Ejemplo:
SKIP
5.
STRINGS
En ABAP un string es una cadena de caracteres que se almacenan en una variable vectorial
donde la primera posicin ser la cero. Se puede usar el tipo STRING para definir un string de
longitud indefinida, as como darle una longitud fija al definirlo como tipo C (char).
Ejemplo:
Substrings
Para manipular el contenido de un string se utiliza el smbolo + para indicar el
desplazamiento en el string (de izquierda a derecha) y entre parntesis el tamao del
substring.
Ejemplo:
Fruta
=
descripcin+0(7).
*
Fruta
obtiene
el
valor
Manzanas.
Fruta
=
descripcin+9(5).
*
Fruta
obtiene
el
valor
Peras.
IF
descripcin+9(5)
EQ
Peras.
Descripcin+9(5)
=
Fresa.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
45
Concatenate
Permite concatenar cadenas de caracteres de distintas variables o textos.
Ejemplo:
DATA:
ONE(10)
VALUE
'
John
',
TWO(3)VALUE
'F.',
THREE(10)
VALUE
'
Kennedy',
NAME(20),
FIRST
TYPE
STRING.
Condense
Permite desplazar toda la cadena de caracteres que se encuentre en una variable
hacia el lado izquierdo, eliminando todos los espacios que ese encuentren antes del primer
carcter.
Sintaxis:
CONDENSE
f1.
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
46
Replace
Se utiliza REPLACE para reemplazar una ocurrencia dentro de una cadena de
caracteres. Una vez que la instruccin encuentra la primera ocurrencia, la reemplaza. En
ese momento finaliza la bsqueda. En la variable SY-SUBRC se retorna el valor 0 si el
reemplazo fue exitoso 4 en caso de que no lo fuera.
Sintaxis:
Ejemplo:
DATA FIELD(10).
MOVE 'ABCB' TO FIELD.
REPLACE 'B' WITH 'string' INTO field.
STRLEN
Esta funcin calcula el tamao de un string y lo retorna a una variable.
Sintaxis:
STRLEN( <variable> ).
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
47
Otras Instrucciones
CLEAR
Permite inicializar una variable con los valores iniciales.
Sintaxis:
CLEAR <variable>.
MOVE
Mueve el contenido de una variable a otra, sin modificar el contenido de la variable
original. No necesariamente la variable de destino es del mismo tipo que la variable de
origen.
Sintaxis:
Ejemplo:
MOVE
A
TO
B.
MOVE
A+0(1)
TO
C.
Esto es equivalente a:
B
=
A.
C
=
A+0(1).
MESSAGE
Enva un mensaje al usuario debidamente clasificado en el repositorio de SAP que
aparece en la parte inferior de la ventana, contempla los tipos W (advertencia), E (error), S
(mensaje), A (Abortar transaccin), X(Salir con un mensaje de dump), I (informativo) .
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
48
La administracin de las clases de mensajes se realizan a travs de la transaccin
SE91.
______________________________________________________________________________________
Xioma Consulting
49
Se selecciona y se asigna el nuevo objeto su respectivo paquete y orden de
transporte.
______________________________________________________________________________________
Xioma Consulting
50
Procedimientos y Funciones
Los procedimientos son subprogramas que se utilizan para modulizar una aplicacin. El uso
de los mismos hace que los programas sean ms entendibles. En ABAP los procedimientos reciben
y retornan valores por medio de parmetros. Los procedimientos pueden definirse en cualquier
parte del cdigo ABAP.
Las funciones son similares a los procedimientos, pero se comportan como una caja
4
negra . Su definicin es global en el sistema, por lo cual no es necesario definirlas en el programa.
Las funciones en ABAP se manipulan por medio de la transaccin SE37 5. Existen ya una cantidad
considerable de funciones estndar definidas en el sistema y que estn disponibles para el
desarrollador.
FORM
Sintaxis:
<Cdigo>.
ENDFORM.
Ejemplo:
FORM
WELCOME.
WRITE
/
'Hello
world'.
ENDFORM.
ENDFORM. "suma
4 Caja negra es un trmino que se utiliza para referirse a un sistema que recibe una entrada y retorna una salida,
pero del cual se desconoce su mecanismo interno.
5 La utilizacin de la SE37 esta contemplada en este manual mas adelante
______________________________________________________________________________________
Xioma Consulting
51
PERFORM
Sirve para realizar la invocacin de un procedimiento.
Sintaxis:
PERFORM
<procedimiento>
USING
<variables
de
entrada>
CHANGING
<variables
de
salida>.
Ejemplo:
PERFORM
suma
USING
2
3
CHANGING
total.
CALL
Este comando invoca a una funcin. Normalmente es ms sencillo utilizar la opcin
de PATRON en el editor ABAP (SE38) para seleccionar del pool de funciones la funcin
que se desea utilizar, y ste genera el CALL con los parmetros de entrada y salida.
Sintaxis:
CALL
<funcin>
<IMPORTING
param
1
=
valor
1
param
n
=
valor
n>
<EXPORTING
param
1
=
valor
1
param
n
=
valor
n>.
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
52
Solamente se debe escribir el nombre de la funcin que deseamos invocar en nuestro
programa. En este caso utilizaremos la funcin creada anteriormente (ZF_FUNCION1).
* IMPORTING
* E_VERME =
CHANGING
ERROR =
MESSAGE =
* EXCEPTIONS
* EXCEP1 = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
ENDIF.
Una vez cargada la estructura en nuestro programa, se deben colocar, a la derecha del
igual = los valores que sern enviados a la funcin y las variables en las que se recibirn
los resultados. Los parmetros opcionales pueden ser omitidos comentando la lnea con un
asterisco (*).
______________________________________________________________________________________
Xioma Consulting
53
SUBMIT
Sintaxis:
SUBMIT <REPORT>
<VIA SELECTION-SCREEN>
<AND RETURN>.
Ejemplo:
SUBMIT REPORT01
VIA SELECTION-SCREEN.
INCLUDES
Los programas includes se utilizan para modularizar los programas ABAP y crear
bloques de cdigo reutilizables. Estos programas no son ejecutables por si mismos y no
necesitan de ninguna sentencia de inicializacin.
Para crear un programa tipo include se puede utilizar la transaccin SE38 o desde el
ABAP Workbench (SE80) . Se de indicar en el tipo que el programa es de include.
______________________________________________________________________________________
Xioma Consulting
54
Los programas tipo include puede ser muy tiles cuando se desea crear librerias de
procedimientos, macros, definicin de datos, etc.
Sintaxis:
Ejemplo:
INCLUDE ZINC_EJEMPLO.
______________________________________________________________________________________
Xioma Consulting
55
Estructuras de Datos
Registros
Un registro se puede definir como una variable subdividida en varios campos. Para acceder
a cada campo se utiliza el nombre del registro, el smbolo - y el nombre del campo.
Para definir el registro se utiliza la instruccin DATA con la opcin BEGIN OF.
Sintaxis:
Ejemplo:
Start-of-Selection.
Camisa-NrMaterial
=
60001.
Camisa-color
=
1.
Color
Blanco
Camisa-Talla
=
M.
Camisa-Precio
=
4000.
Camisa-PrecioUSD
=
Camisa-Precio
/
TipoCambio.
______________________________________________________________________________________
Xioma Consulting
56
MOVE-CORRESPONDING
Sintaxis:
Ejemplo:
origen-campo1
=
'Hola'.
origen-campo2
=
'Mundo!'.
origen-campo3
=
1701.
origen-campo4
=
'NCC'.
destino-campo8 = 'NCC-74656'.
______________________________________________________________________________________
Xioma Consulting
57
Tablas Internas
Las tablas internas se utilizan para almacenar los datos provenientes de la base de datos o de
informacin que ha sido generada en tiempo de ejecucin. Se puede definir dos tipos de tablas
internas:
Sintaxis:
Ejemplo:
Start-of-Selection.
Camisa-NrMaterial
=
60001.
Camisa-color
=
1.
Color
Blanco
Camisa-Talla
=
M.
Camisa-Precio
=
4000.
Camisa-PrecioUSD
=
Camisa-Precio
/
TipoCambio.
APPEND
Camisa.
Sintaxis:
DATA:
<ITAB>
[LIKE
|
TYPE]
<estructura>
[OCCURS
<n>]
WITH
HEADER
LINE.
Ejemplos:
______________________________________________________________________________________
Xioma Consulting
58
Sin Cabecera: Es un tipo de tabla interna que esta compuesto nicamente de cuerpo y
su definicin se hace con respecto a un tipo definido previamente o a una estructura ya
existente. Sin embargo es necesario definir un registro de cabecera para poder agregar o
leer registros de la tabla.
Sintaxis:
Ejemplo:
Start-of-selection.
C_Miembro-Nombre = Jose.
C_Miembro-Edad = 20.
Append C_miembro to Miembro.
Las tablas internas pueden ser de 3 tipos: estndar (que son las que tratamos en este
manual), Sorted y Hashed. Estos tres tipos de tablas puede ser declarados de la siguiente manera:
______________________________________________________________________________________
Xioma Consulting
59
Existen varias instrucciones que se utilizan para la manipulacin de las tablas internas, a
continuacin se van a describir las ms comunes.
Refresh
Borra todo el contenido de la tabla interna.
Sintaxis:
REFRESH <ITAB>.
Append
Agrega un registro a una tabla interna con los valores que se encuentren en la
cabecera o en un registro que corresponda con la estructura de la tabla.
Sintaxis:
Ejemplo:
APPEND C_Miembro TO Personas.
Delete
Esta instruccin borra un registro de la tabla interna.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
60
Modify
Se utiliza para actualizar los cambios realizados al registro de la cabecera en
la tabla interna.
Sintaxis:
MODIFY <ITAB>.
Collect
El COLLECT asume que todos los valores alfanumricos de izquierda a
derecha, hasta conseguir un valor numrico, son la llave de la tabla interna. Y
empieza a acumular los valores numricos que se encuentran a la derecha de la llave.
Si el registro no existe lo agrega a la tabla interna.
Sintaxis:
COLLECT <ITAB>.
Ejemplo:
COMPANY-NAME
=
'Duck'.
COMPANY-SALES
=
10.
COLLECT
COMPANY.
COMPANY-NAME
=
'Tiger'.
COMPANY-SALES
=
20.
COLLECT
COMPANY.
COMPANY-NAME
=
'Duck'.
COMPANY-SALES
=
30.
COLLECT
COMPANY.
Describe
La funcin de esta instruccin es obtener el nmero de registros que contiene
una tabla interna y almacenarlo en una variable.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
61
SORT
Se utiliza SORT para ordenar una tabla interna indicndole que campos debe
asumir como referencia para dicho ordenamiento.
Sintaxis:
Ejemplo:
SORT
camisa.
*Aqu
al
no
indicarle
criterios
la
ordena
por
todos
los
campos
*exceptuando
los
de
tipo:
I,
F
y
P
de
forma
ascendente.
LOOP
Esta instruccin permite recorrer una tabla interna para acceder a todo su
contenido o puede ser utilizado con ciertas condiciones para obtener informacin
especfica.
Sintaxis:
LOOP
AT
<ITAB>
[INTO
<variable>]
[WHERE
<condiciones>]
[FROM
<ndice
1>
TO
<ndice
2>].
.
<Cdigo>.
.
ENDLOOP.
Ejemplos:
______________________________________________________________________________________
Xioma Consulting
62
READ
El Read nos permite acceder a un registro de la tabla interna a travs de un
ndice o de una llave.
Sintaxis:
READ
TABLE
<ITAB>
INTO
<variable>
[WITH
TABLE
KEY
<campo>
=
<valor>]
[INDEX
<ndice>].
Ejemplos:
READ
TABLE
ITAB
INTO
WA_ITAB
WITH
TABLE
KEY
CAMPO1
=
100
CAMPO2
=
ALFA
CAMPO3
=
SY-DATUM.
IF
SY-SUBRC
EQ
0.
WRITE
WA_ITAB-CAMPO4.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
63
Rangos
Campo Descripcin
LOW Valor de la cota inferior, el tipo de este campo se
define al definir el rango.
HIGH Valor de la cota superior, el tipo de este campo se
define al definir el rango.
SIGN Indica que operador relacional (EQ,LT,BT,...) define
el comportamiento del subrango.
OPTION Indica si el subrango es inclusivo o exclusivo. Los
valores son: I (Inclusivo) y E (exclusivo)
Sintaxis:
RANGES: <nombre> FOR <Tipo>.
Ejemplo:
FECHA-LOW
=
200510010.
FECHA-HIGH
=
''.
FECHA-SIGN
=
'EQ'.
FECHA-OPTION
=
'E'.
APPEND
FECHA.
FECHA-LOW
=
20051001.
FECHA-HIGH
=
20051201.
FECHA-SIGN
=
'BT'.
FECHA-OPTION
=
'I'.
APPEND
FECHA.
IF
SY-DATUM
IN
FECHA.
WRITE:/'El
da
de
hoy
esta
entre
el
1ero
de
octubre',
'
y
el
1ero
de
diciembre.'.
WRITE:/'Y
no
es
10
de
octubre'.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
64
Tablas Transparentes
Una tabla transparente es aquella tabla que, estando definida en el diccionario de datos, tiene
una relacin uno a uno contra su equivalente en la base de datos (mismo nombre de tabla, mismos
nombres de campos y mismo nmero de registros). El diccionario de datos puede ser definido
como una interfase a datos (informacin, programas, pantallas, etc) que son independientes de la
plataforma que se este usando, y que se encuentran almacenados en una base de datos (Oracle, SQL
Server, Informix, etc). En SAP existen otros tipos de tablas en el diccionario como las Pooled
tables y las Cluster tables.
SE11/SE16
Existe en SAP dos formas de acceder al diccionario de datos, la transaccin SE16 que se
utiliza para visualizar datos en las tablas del diccionario, y la SE11 que contiene todas las
herramientas necesarias para manipular el diccionario de datos.
______________________________________________________________________________________
Xioma Consulting
65
FIG. de la transaccin SE11.
______________________________________________________________________________________
Xioma Consulting
66
Es necesario indicar una descripcin para la tabla, adems de especificar la
clase de entrega con el valor A para indicar que la tabla es de tipo aplicacin
(especficamente para almacenar datos maestros y movimientos).
Seguidamente se deben definir los campos de la tabla transparente, para ello
se selecciona la pestaa etiquetada como Campos.
En esta parte se indican todos los campos que se utilizaran. Para agregar
campos en una lnea determinada se puede utilizar el botn de agregar o en caso
de que se quiera eliminar una lnea se selecciona y se oprime el botn de eliminar
campo .
La columna llamada Tipo campo sirve para indicar uno de los tipos ya
definidos en el sistema, del cual tomar las caractersticas el campo de la tabla que
se esta creando. Por ejemplo en el cuadro anterior se puede observar que el campo
NOMBRE toma el tipo CHAR20 que es un tipo definido en el sistema como de 20
caracteres. Es posible definir nuevos tipos en el diccionario, o bien se puede utilizar
el botn Elemento datos/Tipo directo para poder agregar una definicin
personalizada.
Una vez que se han definido todos los campos que tendr la tabla, es
importante asignar cual es la tabla de referencia o verificacin que puedan tener
valores como moneda y cantidad. En algunos casos, como la moneda, establecer
esta relacin es obligatorio.
______________________________________________________________________________________
Xioma Consulting
67
En el cuadro anterior TCURC-WAERS hace referencia al tipo de moneda que
utiliza el campo SALARIO.
Una vez definido todo esto, hace es necesario definir la configuracin bsica
en las opciones tcnicas de la tabla oprimiendo el botn correspondiente en la barra
de herramientas. En esa opcin es necesario definir los parmetros de memoria
lgicos. La clase de datos indica en el sistema administrador de bases de datos a que
mbito fsico al que pertenece la tabla. En el caso de la seleccin APPL0, indica que
pertenece al mbito de datos maestros. La categora de tamao se refiere a la
cantidad de espacio que debe reservar por bloque la base de datos, esta opcin se
considera dependiendo del volumen de informacin que se almacenar en la tabla.
______________________________________________________________________________________
Xioma Consulting
68
Para finalizar se almacenan estas modificaciones y se retorna a la pantalla
principal, donde se puede realizar una verificacin de la definicin de la tabla
utilizando el botn verificar . Para que la tabla pueda ser accesada en el sistema
es necesaria activarla utilizando el botn de activacin (ste botn realiza la
verificacin, guarda los cambios y finalmente activa el objeto en el sistema).
TABLES
Se utiliza para declarar las tablas del diccionario de datos que se desean
utilizar en un programa.
Sintaxis:
TABLES:
<tabla
1>,
<tabla
2>,
,
<tabla
N>.
Ejemplo:
TABLES:
T001,
MARA.
______________________________________________________________________________________
Xioma Consulting
69
Insert
Para aadir registro a registro o varios registros a la vez. En los dos casos se
puede usar la orden INSERT pero con diferentes opciones.
REGISTRO A REGISTRO
Sintaxis:
VARIOS REGISTROS.
Se puede guardar una tabla interna en una tabla de diccionario con una sola
instruccin sin tener que hacer ningn ciclo.
Sintaxis:
Delete
Con sta instruccin se borran los registros de la tabla. Existen tres formas
distintas para hacerlo.
UN SOLO REGISTRO.
Sintaxis:
VARIOS REGISTROS
Sintaxis:
Sintaxis:
______________________________________________________________________________________
Xioma Consulting
70
UPDATE
Actualiza una tabla del diccionario y puede ser utilizado de tres formas
diferentes.
UN SOLO REGISTRO
Para modificar un slo registro utilizamos la orden UPDATE.
Sintaxis:
Sintaxis:
En el SET se colocan los campos a modificar con sus nuevos valores, o sea,
S1 a Sn pudindose desglosar de la siguiente manera:
f = n
f = f+g
f = fg
______________________________________________________________________________________
Xioma Consulting
71
Elementos de datos.
______________________________________________________________________________________
Xioma Consulting
72
______________________________________________________________________________________
Xioma Consulting
73
Dominios
El dominio es una agrupacin de propiedades formales de campos, tales como tipo de datos
y cantidad de posiciones del campo. Define principalmente el mbito de valores para todos los
campos que hacen referencia al dominio, de tal forma que al cambiar la definicin de un dominio
todos los elementos de datos relacionados cambian automticamente.
En la definicin de un dominio se puede introducir una rutina de conversin para los datos
de este dominio. Con esto lo que se consigue es que la introduccin o salida de datos se hagan con
un formato determinado a partir de otro formato de datos. Por ejemplo, el cdigo de los materiales
tienen el dominio MATNR el cual se tienen las siguientes rutinas de conversin :
Estas rutinas almacenan los datos aadindoles ceros hasta completar 18 posiciones.
Se debe indicar para el dominio una descripcin, un tipo de datos (que proviene de los tipos
de datos que existen en el sistema, una cantidad de posiciones. Tambin es posible indicar los
atributos de salida, los cuales van a determinar la longitud que puede desplegar el dominio, si existe
una rutina de conversin de datos, si es un valor numrico indicar si es posible que represente
valores negativos y si es un valor de texto si es posible que contenga letras minsculas.
______________________________________________________________________________________
Xioma Consulting
74
En la pestaa de mbito se definen los valores posibles que puede tomar el dominio, o los
rangos en los que puede estar. Igualmente puede hacerse referencia a una tabla que contenga esos
valores.
Al finalizar la definicin del rango, este debe ser activado para que pueda ser utilizado en el
sistema.
______________________________________________________________________________________
Xioma Consulting
75
Vistas de Base de Datos
Una vista es una visin lgica de una ms tablas, es decir, no se almacena fsicamente,
sino que se deriva de una o ms tablas. Para crear una vista se utiliza la transaccin SE11.
Siempre que sea posible es importante tomar campos que sean parte de la llave primaria
para establecer la relacin entre las tablas, y siempre indicar el campo MANDT en tablas que son
dependientes de mandante.
Con el boton RELACIONES es posible invocar relaciones predefinidas en el sistema para
las tablas que se hayan indicado.
En la pestaa de campos de vista se han de seleccionar cuales son los campos que se desean
mostrar y con que nombres han de aparecer.
______________________________________________________________________________________
Xioma Consulting
76
En la pestaa condiciones de seleccin se determinan una serie de condiciones bsicas para
filtrar los resultados de la seleccin.
______________________________________________________________________________________
Xioma Consulting
77
Estructuras
Las estructuras son objetos de datos globales en el sistema que estan formados por varios
campos. Sin embargo no permiten el almacenamiento de informacin en la base de datos. Su
creacin es a travs de la transaccin SE11.
______________________________________________________________________________________
Xioma Consulting
78
Las estructuras no son objetos dependientes de mandante, por lo que no es importante
declarar el campo MANDT, igualmente no requieren de la definicin de llaves.
Ayudas de Bsqueda
______________________________________________________________________________________
Xioma Consulting
79
El campo mtodo de seleccin indica cual tabla del diccionario contiene los datos sobre los
cuales se basa la propuesta. Los parametros indican los campos que deben salir y el orden en que
han de ser desplegados. El check de import indica que el campo es relevante para la seleccin de la
ayuda de bsqueda, el check de export indica que el parmetro es de salida y debe indicarse al
menos uno. P.I indica el orden de las columnas en la ventana de seleccin y PosS el orden en la
ventana de filtros.
______________________________________________________________________________________
Xioma Consulting
80
Vista de Actualizacin
Las vistas de actualizacin se generan desde la transaccin SE11. Se debe seleccionar la
tabla transparente a la que se le desea crear la vista de actualizacin, y en el men seleccionar
Utilidades->Generador actualiz tab. Es importante que la tabla en las opciones de entrega permita
la actualizacin y que con anterioridad se tenga claro cual es el grupo de funciones que se utilizar
para generar la vista. La creacin de grupos de funciones ser explicada ms adelante.
______________________________________________________________________________________
Xioma Consulting
81
Para realizar la edicin o inclusin de registros se debe utilizar la transaccin SM30. Y
oprimir el botn Actualizar.
______________________________________________________________________________________
Xioma Consulting
82
En la siguiente imagen se muestra como se despliega el contenido de la tabla transparente.
Los ttulos que aparecen sobre las columnas son derivados de los elementos de texto de cada
campo. Si un campo no tuviese asignado un elemento de texto se mostraria nicamente el smbolo
+.
Las vistas de actualizacin son muy tiles para crear dilogos de parametrizacin y pueden
ser asignadas a transacciones mediante la transaccin SE93.
______________________________________________________________________________________
Xioma Consulting
83
Transferencia de Datos
Normalmente en SAP las transferecias de datos estan relacionadas con la necesidad de
establecer una interfase con algn sistema externo. Las ms comunes se establecen por medio de
Idocs, funciones RFC y por medio de archivos planos. En esta seccin se explicar sta ltima.
Transferencia Local
La transferencia de archivos planos de manera local se refiere a la creacin o lectura
de archivos en el servidor SAP. Se suele establecer una ruta donde se colocan los archivos
de entrada y los archivos de salida, que posteriormente pueden ser extrados por el medio
del sistema operativo o por medio de FTP.
En este caso siempre es necesario realizar una apertura del archivo, luego ejecutar la
transferencia del contenido y finalmente cerrar el archivo.
Open dataset
Esta instruccin hace la apertura del archivo. De ser xitoso la instruccin
retornar 0 en la variable SY-SUBRC, sino retornar 8. El mximo de archivos que
pueden estar abiertos en una sesin es de 100.
Sintaxis:
OPEN
DATASET
<dataset>
FOR
{INPUT
|
OUTPUT
|
APPENDING
|
UPDATE}
IN
{BINARY
MODE
|
TEXT
MODE}
ENCODING
DEFAULT.
Close dataset
Close dataset cierra un archivo.
Sintaxis:
CLOSE
DATASET
<dataset>.
Transfer
La instruccin TRANSFER envia el contenido de un objeto de datos a un
dataset abierto.
Sintaxis:
TRANSFER
<Objeto
de
datos>
TO
<DATASET>.
Ejemplo:
DATA:
file
TYPE
string
VALUE
`test.dat`.
______________________________________________________________________________________
Xioma Consulting
84
Read Dataset
READ permite la lectura de un dataset abierto. En la variable SY-SUBRC
queda el valor 0 despues de una lectura exitosa y 4 cuando se ley el ltimo registro
del archivo o si se trata de leer despus del EOF.
Sintaxis:
Ejemplo:
DATA:
file
TYPE
string
VALUE
`test.dat`,
Line
type
string.
Delete Dataset
Se utiliza para eliminar un archivo. No requiere de un OPEN, y
retornar 0 si logro borrar el archivo 4 en caso de no lograrlo.
Sintaxis:
______________________________________________________________________________________
Xioma Consulting
85
Transferencia Remota
En el caso de la transferencia remota, se asume que la creacin de los archivos o la
carga de los mismos se hace desde la terminal desde la cual se esta ejecutando el SAP GUI.
Para esto se utilizan funciones de SAP que se hacen cargo de la apertura, lectura y cierre de
los archivos dejando el contenido de stos en una tabla interna.
GUI_DOWNLOAD.
Esta funcin carga el contenido de un archivo plano a una tabla interna. Los
parmetros ms importantes son:
FILENAME: Debe ser de tipo string y determina el nombre del dataset.
FILETYPE: Determina el tipo de archivo.
WRITE_FIELD_SEPARATOR: Permite indicar si es un archivo tipo PRN.
DATA_TAB: Indica cual es la tabla interna.
Ejemplo:
TABLES
DATA_TAB
=
ITAB
EXCEPTIONS
FILE_WRITE_ERROR
=
1
NO_BATCH
=
2
GUI_REFUSE_FILETRANSFER
=
3
INVALID_TYPE
=
4
NO_AUTHORITY
=
5
UNKNOWN_ERROR
=
6
HEADER_NOT_ALLOWED
=
7
SEPARATOR_NOT_ALLOWED
=
8
FILESIZE_NOT_ALLOWED
=
9
HEADER_TOO_LONG
=
10
DP_ERROR_CREATE
=
11
DP_ERROR_SEND
=
12
DP_ERROR_WRITE
=
13
UNKNOWN_DP_ERROR
=
14
ACCESS_DENIED
=
15
DP_OUT_OF_MEMORY
=
16
DISK_FULL
=
17
DP_TIMEOUT
=
18
FILE_NOT_FOUND
=
19
DATAPROVIDER_EXCEPTION
=
20
CONTROL_FLUSH_ERROR
=
21
OTHERS
=
22.
IF SY-SUBRC <> 0.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
86
GUI_UPLOAD.
Esta funcin carga el contenido de un archivo plano a una tabla interna. Los
parmetros ms importantes son:
FILENAME: Debe ser de tipo string y determina el nombre del dataset.
FILETYPE: Determina el tipo de archivo.
WRITE_FIELD_SEPARATOR: Permite indicar si es un archivo tipo PRN.
DATA_TAB: Indica cual es la tabla interna.
Ejemplo:
TABLES
DATA_TAB
=
ITAB
EXCEPTIONS
FILE_OPEN_ERROR
=
1
FILE_READ_ERROR
=
2
NO_BATCH
=
3
GUI_REFUSE_FILETRANSFER
=
4
INVALID_TYPE
=
5
NO_AUTHORITY
=
6
UNKNOWN_ERROR
=
7
BAD_DATA_FORMAT
=
8
HEADER_NOT_ALLOWED
=
9
SEPARATOR_NOT_ALLOWED
=
10
HEADER_TOO_LONG
=
11
UNKNOWN_DP_ERROR
=
12
ACCESS_DENIED
=
13
DP_OUT_OF_MEMORY
=
14
DISK_FULL
=
15
DP_TIMEOUT
=
16
OTHERS
=
17
IF SY-SUBRC <> 0.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
87
Open SQL
El Structured Query Language (SQL) se ha convertido en uno de los lenguajes
computacionales ms populares, y es utilizado para crear, modificar y obtener informacin de los
sistemas administradores de base de datos relacionales. ABAP cuenta con una serie de
adaptaciones que provienen de este lenguaje para facilitar la manipulacin de la informacin en su
base de datos, incluso permite invocar SQL nativo desde su cdigo en caso de ser estrictamente
necesario.
Select
Esta es una de las instrucciones ms importantes en el lenguaje, y es la que permite
la manipulacin de la informacin de la base de datos. El select se comporta como una
instruccin de iteracin, correspondiendo cada ciclo con uno de los registros seleccionados
en la ejecucin. Si la bsqueda fue exitosa SY-SUBRC obtiene el valor de cero.
Sintaxis:
Ejemplo:
ENDSELECT. ztest
Where
La opcin WHERE en el SELECT sirve para especificar un filtro en la seleccin de
informacin
Sintaxis:
<cdigo>.
ENDSELECT.
Ejemplo:
ENDSELECT. ztest
______________________________________________________________________________________
Xioma Consulting
88
Single
La opcin Single trae nicamente el primer registro de la tabla que cumpla con las
condiciones del Select. Al utilizar esta opcin no es necesario utilizar el ENDSELECT.
Sintaxis:
Ejemplo:
Into
Coloca los valores de los campos indicados en los que indique el into.
Sintaxis:
<cdigo>
ENDSELECT.
Ejemplo:
Order by
Esta opcin indica en el select de que manera debe ordenar la informacin que se
obtiene con la consulta. Es importante recordar que el campo por el cual se realizar el
ordenamiento debe estar incluido en los campos que se estn seleccionando en la consulta.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
89
Join
Se utiliza para realizar enlaces dinmicos a travs de instrucciones del lenguaje
ABAP.
Inner Join
De esta manera se enlazan dos tablas por medio de n campos, donde la interseccin
de ambas tablas genera una nueva tabla por medio de los campos comunes establecidos. En
el siguiente ejemplo el join se establece a travs del campo D.
Sintaxis:
Ejemplo:
F~CONNID = P~CONNID
______________________________________________________________________________________
Xioma Consulting
90
WHERE P~CITYFROM = 'FRANKFURT'
ENDSELECT.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
91
SBOOK~FLDATE SBOOK~CARRID SBOOK~CONNID SBOOK~BOOKID
BOOKING-BOOKID)
SBOOK~FLDATE = '19971015'
ORDER BY SCUSTOM~NAME SBOOK~FLDATE.
BOOKING-BOOKID.
ENDSELECT.
______________________________________________________________________________________
Xioma Consulting
92
ABAP List Viewer (ALV)
Esta funcin permite mostrar el contenido de una tabla en formato ALV Grid. Es
importante conocer algunos de sus parmetros ms importantes a la hora ajustar la
visualizacin del ALV segn lo que se necesite.
Campos ms comunes:
______________________________________________________________________________________
Xioma Consulting
93
IT_LAYOUT: (Especificacin del formato de la lista)
Campos ms comunes:
COLWIDTH_OPTIMIZE: optimizacin del ancho de la columna
ZEBRA: filas en formato de zebra
F2CODE: cdigo para ejecutar codigo con F2
EDIT: para editar
KEY: columna marcada como llave
NO_VLINE: columnas separadas por espacio
NO_HLINE: filas separadas por espacio
Campos ms comunes:
NAME: nombre del tipo de evento (top of page, end of list)
FORM: nombre de la subrutina q se desea invocar
Campos ms comunes:
FIELDNAME: campo q se desea ordenar
TABNAME: nombre de la tabla interna
UP: indicador de orden ascendente
DOWN: indicador de orden descendente
SUBTOT: para mostrar subtotales
______________________________________________________________________________________
Xioma Consulting
94
Como subir una imagen
______________________________________________________________________________________
Xioma Consulting
95
Muestra la informacin
Se regresar a la OAOR pero esta vez no se inserta la clave del objeto, de ese modo se pueden ver las
imagenes que han sido cargadas.
______________________________________________________________________________________
Xioma Consulting
96
Aqui se verifica que la imagen si se encuentra en el servidor
______________________________________________________________________________________
Xioma Consulting
97
Creacin de un ALV simple
Type-pools: slis.
tables: rseg.
form fieldcat.
clear fieldcat.
fieldcat-fieldname = 'BELNR'.
fieldcat-tabname = 'TAB_ARSEG'.
fieldcat-ref_tabname = 'RSEG'.
fieldcat-ref_fieldname = 'BELNR'.
______________________________________________________________________________________
Xioma Consulting
98
fieldcat-hotspot = X.
fieldcat-col_pos = 1.
fieldcat-key = X.
clear fieldcat.
fieldcat-fieldname = 'GJAHR'.
fieldcat-tabname = 'TAB_ARSEG'.
fieldcat-ref_tabname = 'RSEG'.
fieldcat-ref_fieldname = 'GJAHR'.
fieldcat-hotspot = X.
fieldcat-col_pos = 2.
fieldcat-key = X.
append fieldcat to gt_fieldcat.
clear fieldcat.
fieldcat-fieldname = 'BUZEI'.
fieldcat-tabname = 'TAB_ARSEG'.
fieldcat-ref_tabname = 'RSEG'.
fieldcat-ref_fieldname = 'BUZEI'.
fieldcat-seltext_s = 'factura'.
fieldcat-seltext_m = 'factura'.
fieldcat-seltext_l = 'factura'.
fieldcat-col_pos = 3.
fieldcat-key = X.
append fieldcat to gt_fieldcat.
clear fieldcat.
fieldcat-fieldname = 'MENGE'.
fieldcat-tabname = 'TAB_ARSEG'.
fieldcat-ref_tabname = 'RSEG'.
fieldcat-ref_fieldname = 'MENGE'.
fieldcat-col_pos = 4.
fieldcat-do_sum = X.
append fieldcat to gt_fieldcat.
end form.
form layout.
*** gd_layout-colwitdh_optimize = X.
gd_layout-zebra = X.
end form.
form header_and_footer.
______________________________________________________________________________________
Xioma Consulting
99
x_footer type slis_listheader,
clear gt_header[].
clear x_heading.
x_heading-typ = 'H'.
x_heading-info = 'Encabezado'.
append x_heading to gt_header.
clear gt_footer[].
clear x_footer.
x_footer-typ = 'S'.
x_footer-KEY = 'Footer: '.
x_footer-info = 'Ejemplo Pie de Pagina'.
append x_footer to gt_footer.
x_event-name = slis_ev_top_of_page.
x_event-form = 'TOP_OF_PAGE'.
x_event-name = slis_ev_end_of_list.
x_event-form = 'END_OF_LIST'.
endform.
form sort_alv.
clear gt_sort.
gt_sort-fieldname = 'gjahr'.
______________________________________________________________________________________
Xioma Consulting
100
gt_sort-subtot = X.
gt_sort-comp = X.
gt_sort-up = X.
endform.
form TOP_OF_PAGE.
exporting
it_list_commentary = gt_header.
endform.
form END_OF_LIST.
exporting
it_list_commentary = gt_footer
endform.
START-OF-SELECTION.
______________________________________________________________________________________
Xioma Consulting
101
i_buffer_active = space
i_callback_program = sy-repid
* i_callback_user_command =
* i_structure_name =
it_sort = it_sort
is_layout = gd_layout
it_events = t_event
it_fieldcat = gt_fieldcat[]
tables
t_outtab = TAB_ARSEG
exceptions
program_error = 1
others = 2.
______________________________________________________________________________________
Xioma Consulting
102
Depuracin (Debugger)
Modos de Visualizacin
Campos: Esta opcin proporciona el contenido de hasta ocho campos. El contenido de los
tres campos ms importantes del sistema se visualiza siempre.
Tablas: Visualiza el contenido de una tabla interna. Esta opcin permite visualizar y
corregir las entradas en una tabla interna.
Llamadas: Esta opcin visualiza el evento actual y las llamadas hasta el breakpoint actual.
La tlima llamada activa es desplegada al principio de la lista; las llamadas anteriores se
enumeran en orden cronolgico inverso. Cuando un evento (por ejemplo, START-OF-
SELECTION) concluye, se elimina de la visualizacin.
Opciones: Visualiza las configuraciones actuales del debugger. Se pueden cambiar las
configuraciones seleccionandolas.
______________________________________________________________________________________
Xioma Consulting
103
Recorriendo el cdigo fuente
Single Step: Utilice esta opcin para ejecutar el programa lnea por lnea.
Execute: Tambin permite ejecutar el programa lnea por lnea pero en caso de
encontrar una subrutina o una funcin se ejecuta en un solo paso.
______________________________________________________________________________________
Xioma Consulting
104
Visualiza el contenido del campo en formato hexadecimal.
______________________________________________________________________________________
Xioma Consulting
105
Header Line: Si la tabla interna tiene una lnea de la cabecera, es indicado por este
icono. Si se le da doble click al icono, el sistema abre la visualizacin estructurada del
campo.
Breakpoints
IF SY-SUBRC NE 0.
BREAK-POINT.
ENDIF.
IF SY-SUBRC NE 0.
BREAK <nombre_usuario>.
endif.
botn .
Watchpoints
Si se desea interrumpir un programa cuando el contenido de un campo o de una
estructura cambia, se puede utilizar un watchpoint. Es posible fijar hasta cinco watchpoints,
incluyendo los watchpoints para los strings.
______________________________________________________________________________________
Xioma Consulting
106
Para crearlos se hace de la siguiente forma
______________________________________________________________________________________
Xioma Consulting
107
Creacin de Funciones
Las funciones son similares a los procedimientos, pero como ya se mencion anteriormente
se comportan como una caja negra. Su definicin es global en el sistema, por lo cual no es
necesario definirlas en el programa. Las funciones en ABAP se manipulan por medio de la
transaccin SE37. Existen ya una cantidad considerable de funciones estndar definidas en el
sistema y que estn disponibles para el desarrollador.
A continuacin se explicarn los pasos necesarios para crear una funcin. Primero se deber
crear un grupo de funciones y luego se crear la funcin.
______________________________________________________________________________________
Xioma Consulting
108
Para crear un grupo de funciones se utiliza el men principal con la opcin Pasar a
> Gestin gr. funciones > Crear grupo
En esta pantalla se debe ingresar el nombre del grupo de funciones, una descripcin
breve y el responsable.
______________________________________________________________________________________
Xioma Consulting
109
Creacin de una funcin
Luego se coloca el Grupo de Funciones dentro del cual estar la funcin y una
descripcin breve. Se indicar el grupo de funciones ZGRUPO_PRUEBA creado en el paso
anterior.
______________________________________________________________________________________
Xioma Consulting
110
Una vez colocados los datos se da click en Grabar.
______________________________________________________________________________________
Xioma Consulting
111
- Importing
Estos son los parmetros de entrada de la funcin. Cuando la funcin es invocada, un
parmetro actual vlido debe ser especificado para cada parmetro importing que no sea
opcional. El valor que se les transfiere en la invocacin no cambia durante la ejecucin de la
funcin.
______________________________________________________________________________________
Xioma Consulting
112
- Exporting
Estos son los parmetros de salida de la funcin. Cuando se invoca la funcin, un
parmetro actual puede ser especificado para cada parmetro exporting. El contenido del
parmetro exporting es transferido al parmetro actual si la ejecucin de la funcin finaliza
sin errores.
______________________________________________________________________________________
Xioma Consulting
113
- Changing
Estos son parmetros tanto de entrada como de salida. Cuando la funcin es
invocada, un parmetro actual vlido debe ser especificado para cada parmetro changing
que no sea opcional. El contenido del parmetro changing es transferido al parmetro actual
si la ejecucin de la funcin finaliza sin errores.
- Tables
Igual que los parmetros changing, estos son parmetros tanto de entrada como de
salida, pero solo pueden ser usados para transferir tablas estndar con header line. En este
ejemplo no utilizaremos este tipo de parmetro.
______________________________________________________________________________________
Xioma Consulting
114
- Exceptions
Se utilizan para capturar un tipo de error especfico durante el tiempo de ejecucin,
de tal manera que se produzca un dump (error fatal) que cancele bruscamente la ejecucin
de la funcin.
______________________________________________________________________________________
Xioma Consulting
115
- Cdigo Fuente
Aqu se escribe el cdigo de la funcin.
En este ejemplo la funcin lo nico que hace es devolver el stock disponible para un
material que se encuentra en un lote, una ubicacin, un centro y un almacn. Si no se
encuentra el material, la funcin devuelve un mensaje de error.
______________________________________________________________________________________
Xioma Consulting
116
BAPIs
Una BAPI (Business Application Programming Interface) es una funcin de SAP que
permite llevar a cabo una tarea funcional. Por ejemplo, una BAPI puede decir la disponibilidad de
un material, crear un pedido o incluso un documento financiero.
Existen una gran cantidad de BAPIs disponibles para que sean utilizados por los
desarrolladores, de ah su nombre que viene del viejo concepto de API (Application Programming
Interface). Su aparicin en SAP R/3 fu a partir de la versin 3.1 y se hizo para permitir la
integracin de software entre SAP R/3 y otros fabricantes de software. El nmero total de BAPIs se
ha ido incrementando con la liberacin de nuevas versiones de SAP R/3.
Los objetos contenidos en el repositorio encapsulan los datos y procesos. De esta forma el
acceso a los datos y procesos, por agentes externos, es permitido solo mediante mtodos
especficos; representados estos por su BAPI correspondiente. De esto ltimo se desprende que una
BAPI no es ms que un mtodo de un Objeto de Negocio de SAP R/3. Por ejemplo, la
funcionalidad implementada para el objeto tipo "Customer" incluye una verificacin para la
existencia del cliente. De esta forma el tipo de objeto "Customer" posee una BAPI llamada
"Customer.CheckExistence".
Para que un programa de aplicacin sea capaz de usar la BAPI de un mtodo, solo necesita saber
como invocar el mtodo; es necesario conocer la definicin de la interface del mtodo. La interfase
de una BAPI se define por:
______________________________________________________________________________________
Xioma Consulting
117
Para conocer los parmetros que utiliza una BAPI especfica se puede hacer de las
siguientes maneras:
1. Ingresando a la transaccin BAPI.
______________________________________________________________________________________
Xioma Consulting
118
2. Ingresando a la Transaccin SE37.
En la actualidad las BAPIs del sistema SAP R/3 se implementan como mdulos de
funciones que se tratan con el Function Builder del Workbench ABAP. Cada mdulo de funcin
que da soporte a una BAPI debe cumplir los requisitos siguientes:
______________________________________________________________________________________
Xioma Consulting
119
Ventajas de usar BAPIs
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 )
*
Fecha
de
documento
lw_goodsmvt_header-doc_date
=
SY-DATUM.
*
tipo
de
movimiento
lw_goodsmvt_item-move_type
=
c_move_type.
*
codigo
de
material
lw_goodsmvt_item-MATERIAL
=
WG_M.
*
Material
Receptor
lw_goodsmvt_item-MOVE_MAT
=
WG_M.
tables
goodsmvt_item
=
lt_goodsmvt_item
return
=
t_return.
IF
SY-SUBRC
NE
0.
"Si
no
hubo
errores
WL_RETURN-TYPE
=
'S'.
MESSAGE
ID
'S1'
TYPE
'S'
NUMBER
'333'
WITH
'Creado
Doc
material:
'
l_materialdocument
'Ao:
'
l_matdocumentyear.
______________________________________________________________________________________
Xioma Consulting
120
BATCH INPUTS
La creacin de Batch Inputs no es ms que un proceso automtico que permite usar un guin
para ejecutar transacciones de forma masiva. Cuando se habla de Bacth-Input se puede estar
refiriendo a un fichero plain-text que necesita que un programa standard (o propio) recoja dicha
informacin, o un programa que simula el proceso de llenado de las pantallas como si el usuario
estuviese delante.
______________________________________________________________________________________
Xioma Consulting
121
1. Ingresar los datos necesarios:
a. Material: (si es nmero externo colocar el cdigo, si es nmero interno el sistema lo
dar automticamente) Para este caso es externo.
b. Ramo: Ramo de la empresa (en este caso es Alimentos)
c. Tipo de material: es el tipo de material que vamos a crear ( en este caso es
Salchicha)
______________________________________________________________________________________
Xioma Consulting
122
2. Dar Enter
3. En la siguiente pantalla seleccionar las vistas que se van a crear para este material. Para este
ejemplo sern las de Datos bsicos 1 y 2.
______________________________________________________________________________________
Xioma Consulting
123
4. Dar Enter o clic en
______________________________________________________________________________________
Xioma Consulting
124
6. Dar Enter
______________________________________________________________________________________
Xioma Consulting
125
8. Dar Enter para la siguiente pantalla:
9. Dar click en la opcin Si para el mensaje que indica que se ha creado el material.
______________________________________________________________________________________
Xioma Consulting
126
Click en Guardar y volver a la transaccin SHDB donde aparece el ejemplo
______________________________________________________________________________________
Xioma Consulting
127
Se introduce la descripcin
Y por ltimo click en para que genere el cdigo que se va a utilizar en el programa
principal.
______________________________________________________________________________________
Xioma Consulting
128
Bases de Datos Lgicas
Las bases de datos lgicas son programas especiales ABAP que recuperan datos y los hacen
disponibles para programas de uso. El empleo ms comn de bases de datos lgicas es leer
informacin de la base de datos y unirlos a programas ejecutables ABAP.
Sin embargo, desde la versin 4.5A, tambin ha sido posible llamar bases de datos lgicas
que usan el mdulo de funcin LDB_PROCESS. Esto le permite llamar varias bases de datos
lgicas de cualquier programa ABAP. Es tambin posible llamar una base de datos lgica ms de
una vez en un programa.
Adems de permitir leer datos de la base de datos, las bases de datos lgicas tambin
son utilizadas para las siguientes tareas:
Lectura de los mismos datos para varios programas: Los programas individuales no
necesitan conocer la estructura exacta de las tablas de base de datos relevantes (y menos sus
llaves forneas).
Definicin de la misma interfaz de usuario para varios programas: Las Bases de datos
lgicas tienen una pantalla de seleccin establecida. Por lo tanto, todos los programas que
usan la base de datos lgica tienen la misma interfaz de usuario.
Mejor funcionamiento: Si se quiere mejorar los tiempos de respuesta, las bases de datos
lgicas le permiten tomar un nmero de medidas para lograrlo (por ejemplo, el uso JOINS
en vez de SELECT anidados).
______________________________________________________________________________________
Xioma Consulting
129
Creacin de una base de datos lgica (SE36)
1)Al hacer login en la aplicacin, en la barra de men, click en herramientas -> Workbench
ABAP -> Desarrollo -> Entorno de Programacin -> Bases Datos Lgicas.
______________________________________________________________________________________
Xioma Consulting
130
2)Directamente mediante la transaccin SE36.
______________________________________________________________________________________
Xioma Consulting
131
Se introduce la descripcin de la base de datos lgica
Se coloca el nombre del nodo raz, la descripcin y se especifica el tipo de nodo, para
este caso el nodo raz se llamara ZTESTUDIANTES
______________________________________________________________________________________
Xioma Consulting
132
Aparece la base de datos lgica con el nico nodo creado hasta el momento
______________________________________________________________________________________
Xioma Consulting
133
Se repite el proceso con todos los nodos q se van a insertar y al final quedara la base de
datos lgica de la siguiente forma
Por ser la primera vez, nos va a mostrar la siguiente pantalla donde se marca para cuales
nodos se quiere que hayan delimitaciones opcionales y SELECT-OPTIONS
______________________________________________________________________________________
Xioma Consulting
134
De esta forma se crea el include de los SELECT-OPTIONS en donde se cambian los ?
que se generan automticamente por los nombres que se desean, para el ejemplo se
crearon 3: S_EST(estudiantes), S_MAT(cursos) y S_PROF(profesores).
______________________________________________________________________________________
Xioma Consulting
135
Se genera el programa automticamente con dos includes principales
Donde el include TOP contiene la declaracin de las tablas que se insertaron como
nodos
______________________________________________________________________________________
Xioma Consulting
136
Y el include NXXX contiene los includes de cada nodo insertado en la base de datos
lgica.
En donde cada include creado por nodo van a haber dos FORMS generados
automticamente y que se pueden modificar dependiendo de lo que se requiera, se puede
ver el caso del include para el nodo ZTESTUDIANTES
______________________________________________________________________________________
Xioma Consulting
137
Importante: el FORM PUT_ZTESTUDIANTES tiene la siguiente lnea:
PUT ZTESTUDIANTES.
GET ZTESTUDIANTES.
Despus de modificar los includes para cada nodo, se regresa a la pantalla principal y se
da click en para modificar el texto de los SELECT-OPTIONS que se crearon
anteriormente
______________________________________________________________________________________
Xioma Consulting
138
Creacin del programa (SE38)
Ahora se procede a crear el programa ejecutable para unirlo con la base de datos
lgica.
______________________________________________________________________________________
Xioma Consulting
139
En los atributos del programa se coloca la descripcin del mismo, adems se escoge el tipo
(Programa Ejecutable) y lo mas importante se introduce el nombre de la Base de datos
lgica que se creo anteriormente (ZLDB_EXAMPLE02)
______________________________________________________________________________________
Xioma Consulting
140
Y as se vera el programa al momento de ejecutarlo (con los SELECT-OPTIONS que se
crearon en la base de datos lgica)
Funcin LDB_PROCESS
El mdulo de funciones permite que se llame una base de datos lgica directamente
en el mismo modo interno. Los registros ledos por la base de datos lgica se traspasan a las
subrutinas CALLBACK indicadas.
______________________________________________________________________________________
Xioma Consulting
141
A pesar de que se pueden llamar diferentes bases de datos lgicas anidadas de la
forma que se desee, existen las siguientes restricciones en cuanto al procesamiento de la
misma base de datos lgica:
1) No se puede volver a llamar la misma base de datos lgica mientras no est finalizada otra
ejecucin (excepcin LDB_ALREADY_RUNNING).
2) Se puede llamar varias veces consecutivamente la misma base de datos lgica cuando est
prevista para ello (excepcin LDB_NOT_REENTRANT). Que est prevista para ello
significa que el programa de base de datos contiene una subrutina (LDB_PROCESS_INIT)
que prepara la base de datos lgica para un paso posterior.
VARIANT: nombre de una variante que pertenece al programa de base de datos de la base
de datos lgica. Se corresponde con el suplemento USING SELECTION-SET en SUBMIT.
______________________________________________________________________________________
Xioma Consulting
142
La regulacin en caso de conflicto es idntica a SUBMIT: las delimitaciones
almacenadas en la variante VARIANT se sobrescriben con las indicadas de forma explcita
en SELECTIONS. De forma similar, las delimitaciones opcionales archivadas en la variante
se sobrescriben con las traspasadas de forma explcita en EXPRESSIONS.
______________________________________________________________________________________
Xioma Consulting
143
El siguiente es un ejemplo del uso de la funcion LDB_PROCESS llamando a la base de
datos logica ZLD_EXAMPLE02
REPORT ZLDB_PRUEBA01.
TABLES ZTESTUDIANTES.
*** FORM's que se ejecutan una vez que se llama la LDB ***
CALLBACK_WA-LDBNODE = 'ZTESTUDIANTES'.
CALLBACK_WA-GET = X.
CALLBACK_WA-GET_LATE = X.
CALLBACK_WA-CB_PROG = SY-REPID.
CALLBACK_WA-CB_FORM = 'CALLBACK_ZTESTUDIANTES'.
CLEAR CALLBACK_WA.
CALLBACK_WA-LDBNODE = 'ZTNOTAS'.
CALLBACK_WA-GET = X.
CALLBACK_WA-CB_PROG = SY-REPID.
CALLBACK_WA-CB_FORM = 'CALLBACK_ZTNOTAS'.
______________________________________________________________________________________
Xioma Consulting
144
***S_EST es el SELECT-OPTIONS creado en ZLD_EXAMPLE02***
SELTAB_WA-KIND = 'S'.
SELTAB_WA-SELNAME = 'S_EST'.
LOOP AT SL_EST.
ENDLOOP.
EXPORTING
**********Nombre de base de datos logica que se creo**********
LDBNAME = 'ZLDB_EXAMPLE02'
EXPRESSIONS = TEXPR
FIELD_SELECTION = FSEL
TABLES
CALLBACK = CALLBACK
SELECTIONS = SELTAB
EXCEPTIONS
LDB_NOT_REENTRANT = 1
LDB_INCORRECT = 2
LDB_ALREADY_RUNNING = 3
LDB_ERROR = 4
LDB_SELECTIONS_ERROR = 5
LDB_SELECTIONS_NOT_ACCEPTED = 6
VARIANT_NOT_EXISTENT = 7
VARIANT_OBSOLETE = 8
VARIANT_ERROR = 9
FREE_SELECTIONS_ERROR = 10
CALLBACK_NO_EVENT = 11
CALLBACK_NODE_DUPLICATE = 12
______________________________________________________________________________________
Xioma Consulting
145
OTHERS = 13.
IF SY-SUBRC <> 0.
ENDIF.
WA TYPE ZTESTUDIANTES
EVT TYPE C
CHECK TYPE C.
CASE EVT.
WHEN 'G'.
ULINE.
WHEN 'L'.
ULINE.
ENDCASE.
ENDFORM.
WA TYPE ZTNOTAS
EVT TYPE C
CHECK TYPE C.
WRITE: / WA-ZNOTA.
ENDFORM.
______________________________________________________________________________________
Xioma Consulting
146
Objetos de autorizacin
Creacin de un objeto de autorizacin (SU21)
Para crear un objeto de autorizacin se utiliza la transaccin SU21. A travs de esta
transaccin se pueden crear, visualizar o modificar dichos objetos que, como se explic
anteriormente, son verificados a travs de la instruccin Authority-check. Estos objetos se
suelen agrupar por clases.
Para crear el nuevo objeto es necesario seleccionar la clase en la cual se debe incluir,
a travs de un doble click. En caso de querer crear una clase nueva se da click en el botn
donde se indicara el nombre de la clase y la descripcin. Una vez dentro de la clase se
utiliza de nuevo el botn para crear el nuevo objeto de autorizacin.
______________________________________________________________________________________
Xioma Consulting
147
Creacin de la clase
Los objetos de autorizacin estan compuestos por el nombre del objeto, una
descripcin, la clase a la que pertenecen y los mbitos de autorizacin correspondientes.
Estos ltimos definen el comportamiento del objeto y estan determinados por un elemento
de datos y un dominio (pueden ser creados nuevos mbitos por medio de la transaccin
SU20).
______________________________________________________________________________________
Xioma Consulting
148
Es usual utilizar un mbito que determine las acciones que se pueden ejercer sobre el
objeto que se desea evaluar en el authority-check. El mbito ACTVT permite definir estas
acciones.
______________________________________________________________________________________
Xioma Consulting
149
Una vez finalizado el proceso se visualiza el nuevo registro en el listado de objetos.
______________________________________________________________________________________
Xioma Consulting
150
Authority-check
Sintaxis:
Ejemplo:
AT SELECTION-SCREEN.
ENDIF.
______________________________________________________________________________________
Xioma Consulting
151
Objetos de Bloqueo
SAP puede sincronizar el acceso simultneo de varios usuarios a los mismos datos con un
mecanismo de bloqueo. Cuando se programan las transacciones interactivas, los bloqueos son
fijados y lanzados llamando funciones de bloqueo y desbloqueo. Estas funciones se generan
automticamente al crear los objetos de bloqueo en el diccionario de ABAP.
Bloquear campos
Los argumentos a bloquear de una tabla en el objeto de bloqueo consisten en los
campos llave de la tabla.
Los campos a bloquear de ese objeto de bloqueo son usados como parmetros de
entrada en las funciones de bloqueo y desbloqueo. Cuando se llaman estas funciones, las
filas de la tabla son especificadas definiendo valores en estos campos. Estos valores pueden
tambin ser genricos. Los campos del bloqueo definen qu subconjunto de las filas de la
tabla debe ser bloqueado.
______________________________________________________________________________________
Xioma Consulting
152
Crear un Objeto de Bloqueo
Para crear un objeto de bloqueo se utiliza la transaccin SE11.
______________________________________________________________________________________
Xioma Consulting
153
Permitir RFC:
Dependencias
En caso de que active permitir RFC para un objeto de bloqueo existente, deber
asegurarse de que la llamada de los mdulos de funciones generados se efecte con
parmetros adecuados al tipo. Antes de activar el objeto de bloqueo con la nueva opcin,
debera verificar todos los programas que utilicen los mdulos de funciones en cuestin.
En el siguiente Tab se encuentran las Tablas a utilizar. En un objeto de bloqueo se
indicarn las tablas en las que deben bloquearse registros con una orden de bloqueo.
______________________________________________________________________________________
Xioma Consulting
154
Tabla primaria
Modo de bloqueo
Proteccin de lectura: Varios usuarios pueden tener acceso de slo lectura a los mismos
datos simultneamente. No obstante, en el momento en que un usuario pase a tratar los
datos, stos quedarn bloqueados para los dems usuarios. Las peticiones de nuevas
protecciones de lectura se aceptarn incluso si stas provienen de otros usuarios. Las
protecciones de escritura sern rechazadas.
Tablas secundarias
______________________________________________________________________________________
Xioma Consulting
155
Nombre de parmetro bloqueo
Indicador Pond
En caso de que este indicador est marcado para el campo, se incluir como
parmetro en los mdulos de funciones generados durante la activacin del objeto de
bloqueo.
Estos parmetros sirven para la transmisin de la llave a bloquear o para el control
del comportamiento de bloqueo en la transmisin del valor inicial.
El indicador se fija por defecto. En caso de no necesitar el parmetro de bloqueo en
los mdulos de funciones generados, se puede desmarcar. En este caso, en relacin a este
parmetro, se bloquear siempre de forma genrica.
______________________________________________________________________________________
Xioma Consulting
156
Parmetros de las funciones
______________________________________________________________________________________
Xioma Consulting
157
Control de transmisin de bloqueos
El parmetro _COLLECT controla si la peticin de bloqueo o desbloqueo debe ser
realizada directamente o si debe primero ser escrito al contenedor local de bloqueos (las
peticiones de bloqueo y desbloqueo pueden ser almacenados en un contenedor local de
bloqueos y ser enviados juntos invocando la funcin FLUSH_ENQUEUE). Este parmetro
puede tener los valores siguientes:
Siempre que se usa el modo X del bloqueo (ampliar el bloqueo en escritura), los
bloqueos no se deben enviar al contenedor local de bloqueos si hay asignados muchos
bloqueos para determinada tabla. En este caso, habr una prdida considerable en
funcionamiento en comparacin con la transmisin directa de bloqueos.
______________________________________________________________________________________
Xioma Consulting
158
Campos de referencia para los objetos de bloqueo RFC activados
El tipo de una funcin RFC debe ser definido completamente.
Los parmetros de la funcin tienen los siguientes campos de referencia para los
objetos RFC:
Al seleccionar el modo exclusivo de bloqueo hace que los datos puedan ser vistos y
modificados solo por el usuario que lo esta invocando.
Cuando se activa el objeto de bloqueo, los mdulos siguientes de la funcin se
generan de su definicin:
* ENQUEUE_E_BOOKING (ejecuta el bloqueo)
* DEQUEUE_E_BOOKING (libera el bloqueo)
______________________________________________________________________________________
Xioma Consulting
159
La funcin ENQUEUE_E_BOOKING se invoca de la siguiente manera:
Con esta llamada, el vuelo LH 400 del 29 de noviembre de 1998 esta bloqueado de
manera exclusiva (modo E de bloqueo) en la tabla SFLIGHT junto con todas las
reservaciones incorporadas a la tabla SBOOK para este vuelo (puesto que el valor inicial 0
se transfiere para BOOKID y CUSTOMID). El bloqueo se enva al programa de
actualizacin (_SCOPE = `2'). Si hay un conflicto de bloqueos, se hace otra tentativa de fijar
el bloqueo despus de cierto tiempo (_WAIT = `X').
El bloqueo puede ser quitado invocando la funcin DEQUEUE_E_BOOKING:
______________________________________________________________________________________
Xioma Consulting
160
ABAP Development Workbench
El ABAP development workbench es una aplicacin que rene prcticamente todas las
herramientas tcnicas del entorno de SAP para dar soporte al desarrollo eficiente de aplicaciones
empresariales de gran escala a travs del ambiente distribuido de cliente/servidor en el R/3.
Esta integracin permite una mayor agilidad durante el desarrollo y el mantenimiento de las
aplicaciones.
El repositorio de R/3 contiene todos los objetos de desarrollo, por ejemplo programas,
definiciones de la base de datos y tipos de datos globales. Es por esto que los objetos de desarrollo
suelen ser conocidos como objetos del repositorio, y estos objetos son independientes del mandate.
El repositorio de R/3 se encuentra organizado por aplicacin, y cada una de estas se encuentra
dividida en subdivisiones lgicas llamadas clases de desarrollo (paquetes). Cada vez que se crea un
nuevo objeto de desarrollo, ste debe ser asignado a un paquete.
______________________________________________________________________________________
Xioma Consulting
161
MIME Repository
Repository Browser
Este repositorio representa una herramienta que se utiliza para editar todos los
objetos de desarrollo, tales como la edicin de programas ABAP, creacin de transacciones,
aplicaciones de dilogo, funciones, etc
Tag Browser
Transport Organizer
El organizador de transportes brinda la funcionalidad para la creacin,
documentacin y liberacin de ordenes de transporte durante todo el perodo de
parametrizacin y desarrollo, as como posteriormente para la reorganizacin del entorno de
desarrollo. Las herramientas que posee estas orientadas especficamente a los equipos de
desarrollo y a los administradores de la implementacin.
______________________________________________________________________________________
Xioma Consulting
162
Aplicaciones de dilogo
______________________________________________________________________________________
Xioma Consulting
163
Process Before Output (PBO)
El PBO se procesa inmediatamente antes de que la disposicin de pantalla
sea mostrada, de tal forma que se pueden invocar todas las rutinas que se requieran
para inicializar los campos y/o variables.
MODULE
Dentro de los eventos PBO y PAI se deben crear bloques de cdigo llamados
mdulos, estos son las subrutinas que contienen el cdigo que controla el programa.
Sintaxis:
Ejemplo:
PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
MODULE USER_COMMAND_0100.
*&------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
______________________________________________________________________________________
Xioma Consulting
164
*&------------------------------------------*
* text
*-------------------------------------------*
MODULE USER_COMMAND_0100 INPUT.
....
....
ENDMODULE. " USER_COMMAND_0100 INPUT
Para el caso del AT EXIT COMMAND la funcin que se utilice debe ser de
tipo E6 y debe estar en el PAI. En caso de existir varios AT EXIT COMMAND,
solo se ejecutar el primero.
FIELD
Esta instruccin puede ser utilizada en cualquiera de los cuatro bloques de la
lgica de procesos (PAI, PBO, POH y POV), sin embargo no tiene efecto alguno en
el bloque PBO. Su funcin es regular el envio de informacin entre el DYNPRO y
el programa ABAP. Se utiliza en conjunto con la instruccin MODULE cuando se
desea condicionar un mdulo a ejecutar para un campo especfico.
Sintaxis:
FIELD <campo> MODULE <mdulo> {ON INPUT}
| {ON REQUEST}
| {ON {CHAIN-INPUT}|{CHAIN-REQUEST}}
| {AT CURSOR-SELECTION}.
CHAIN
El LOOP en la lgica de proceso sirve para interar en una tabla interna que se
encuentre atada a un objeto en el DYNPRO. Por ejemplo a un TABLE CONTROL
(GRID). Permitiendo as que se puedan evaluar los valores de la tabla interna.
Otros Atributos:
DYNPRO Siguiente: Indica cual es el siguiente DYNPRO que ha de
ejecutarse al finalizar el actual. Puede invocarse a s mismo para mantenerse
en un DYNPRO y cambiarse en tiempo de ejecucin con la instruccin SET
SCREEN. En caso de hacer un SET SCREEN 0 se finaliza el programa (en
caso de estar en el DYNPRO principal) o al DYNPRO anterior.
______________________________________________________________________________________
Xioma Consulting
167
Lista de Elementos: Esta pesataa contiene todos los atributos de los diferentes
objetos o elementos que existen en la pantalla.
______________________________________________________________________________________
Xioma Consulting
170
Creacin de transacciones (SE93)
La transaccin SE93 permite la definicin de una transaccin que puede ser colocada
en el men de SAP o ejecutada directamente desde la lnea de comando del SAP GUI. Las
transacciones pueden entenderse como accesos directos a los programas que existen en el sistema.
Todas las transacciones creadas por un usuario han de inciar por Z, y son objetos independientes del
mandante.
______________________________________________________________________________________
Xioma Consulting
171
Al crear una nueva transaccin, estas pueden ser de 5 tipos:
Los mens (tambin llamados Status GUI) permiten al usuario ejecutar funciones de
un programa desde la barra de herramientas o la barra de mens. Estos mens son
invocados desde el PBO en la lgica de proceso.
Al crear un men se debe indicar el programa al que pertenece y el nombre del status
(men).
______________________________________________________________________________________
Xioma Consulting
172
Existen 3 bloques principales que son:
1. La barra de men: Contiene todas las opciones del men para el dynpro.
2. La barra de pulsadores: Define todos los botones que se encuentran en la barra de
pulsadores.
3. Teclas de funcin: Asigna el la funcin para las teclas de funcin y sus
respectivas combinaciones con otras teclas. Tambin contiene la asignacin de
los botones estndar de la barra de herramientas del GUI.
Una vez que el men ha sido creado y activado, debe ser invocado por cdigo de la
siguientes manera:
MODULE STATUS_0100.
MODULE USER_COMMAND_0100.
*&------------------------------------------------------------
-
*& Module STATUS_0100 OUTPUT
*&------------------------------------------------------------
-* text
*-------------------------------------------------------------
-
MODULE STATUS_0100 OUTPUT.
*&------------------------------------------------------------
-
*& Module STATUS_0100 OUTPUT
*&------------------------------------------------------------
-* text
*-------------------------------------------------------------
-
MODULE STATUS_0100 OUTPUT.
...
ENDMODULE.
CALLSCREEN
Esta sentencia llama a un DYNPRO por su nmero. Es posible especificar las
coordenadas donde ha de aparecer.
Sintaxis:
CALL SCREEN dynnr
______________________________________________________________________________________
Xioma Consulting
174
SET TITLEBAR
En tiempo de ejecucin esta instruccin establece el ttulo que ha de desblegar el
GUI para el DYNPRO actual. El nombre del ttulo actual queda almacenado en la variable
de ambiente SY-TITLE. Es importante considerar que el ttulo ha de ser establesido en el
PBO, de no ser definido ninguno la palabra SAP es desplegada en la barra de ttulos.
Adems el mximo de caracteres que se soporta es de 70, y cualquier cadena superior a sta
longitud ser truncada. Los ttulos puede ser editados mediante la transaccin SE41 y la
opcin Lista de Ttulos.
Sintaxis:
LOOP AT SCREEN.
La tabla de ambiente SCREEN almancena los atributos de los diferentes objetos que
se encuentran en el canvas del DYNPRO. Para recorrer la tabla se utiliza la instruccin
LOOP. Sin embargo la tabla SCREEN es una tabla sin cabecera y sobre la cual no es
posible realizar un filtro a travs de la adicin WHERE. Por lo tanto ha de ser recorrida
totalmente y filtrada mediante un IF o un CASE. Los campos en la tabla son los siguientes:
Componente Atributo
NAME Nombre
GROUP1 Grupo 1
GROUP2 Grupo 2
GROUP3 Grupo 3
GROUP4 Grupo 4
REQUIRED Campo Obligatorio
INPUT Posible para entrada
OUTPUT Campo de Salida
INTENSIFIED Campo intensificado
INVISIBLE Elemento invisible
LENGHT Tamao visible
ACTIVE Campo activo
DISPLAY_3D Tipo de caja
VALUE_HELP Ayuda
REQUEST Existe entrada
VALUE_IN_COMBO Existe valor en lista
Syntaxis:
...
ENDLOOP.
______________________________________________________________________________________
Xioma Consulting
175
Al realizar un loop por los diferentes elementos que se encuentran en la pantalla es
posible cambiar los atributos de la siguiente manera en el PBO:
LOOP AT SCREEN.
IF screen-name = 'VAL'.
screen-required = '1'.
screen-intensified = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDMODULE.
SET CURSOR
Durante el proceso del bloque PBO la instruccin SET CURSOR permite que el
cursor se posicione en una ubicacin del DYNPRO.
Sintaxis:
Ejemplo:
______________________________________________________________________________________
Xioma Consulting
176
Bibliografa
http://en.wikipedia.org/wiki/ABAP
de Bruyn, Gareth M. PRIMA TECH. 1999. Advanced ABAP Programming for SAP.
______________________________________________________________________________________
Xioma Consulting
177