Está en la página 1de 89

Introduccin ABAP

Alcance
Das 1 y 2
Diccionario de Datos
Das 3 y 4
Introduccin a Programacin ABAP
Da 5
Transacciones interactivas
Da 6 y7
Ejercicios
Evaluacin

Introduccin

Que es ABAP?
Advanced Business Aplication Programing.
El ABAP/4 es un lenguaje de programacin de 4 generacin (4GL)
orientado como su definicin especifica, al desarrollo de aplicaciones de
negocio. Todos los mdulos disponibles en SAP han sido programados en
este lenguaje de programacin.
Adems podemos escribir nuevas aplicaciones en ABAP/4 como
complemento a las ya existentes o como apoyo a la configuracin del
sistema.

Qu es el entorno de Desarrollo ABAP?


Es un conjunto integrado de herramientas de desarrollo, funciones,
lenguaje de programacin, y diccionario de datos agrupados bajo el
nombre genrico de ABAP.
Qu son los objetos de Desarrollo?
Son todos los componentes de una aplicacin ABAP: elementos de
programas, cdigos de programas, transacciones, clases de mensaje,
objetos de diccionario.

Diccionario de Datos

Diccionario de datos
Qu es el Diccionario de Datos ABAP?
Es la utilidad y el almacn central del entorno de desarrollo, y su funcin es
la de proporcionar las definiciones de los datos y las relaciones de la
informacin usada en los mdulos y aplicaciones de R/3.
Cul es la utilidad de un diccionario de datos?
Permite crear, modificar, o borrar definiciones de los datos. Es al mismo
tiempo una gran fuente de informacin, no solo para el entorno si no
tambin para el usuario.

Diccionario de datos
Es un conjunto de registros que se almacenan de forma estructurada.
Es un conjunto de datos organizados de tal forma que mediante un
programa se pueden obtener rpidamente subconjuntos de informacin.
Tradicionalmente se componen de campos, registros y tablas.

SAP y bases de datos

BASE DE DATOS

Componentes del Diccionario de datos

Transaccin SE11

Componentes del Diccionario de datos


Objetos DB

Definicin TIPOS
Estructura

Tabla
interna

Elemento
Datos

Dominio

Tipo Tabla

Vista

Mantenimiento
Tablas

Dominio
Define las caractersticas
permanentes de un campo.
mbito de valores.

Elemento de datos
Asignacin de dominio.
Generalidades para el manejo del campo.
Descripcin.

Campo
Componente bsico de tablas y estructuras.
Asignacin de elemento de datos.

Tabla transparente
Reflejo en la base de datos.
Conjuncin de campos.
Componente bsico de la base de datos.

Generador de mantenimiento
Herramienta que permite la generacin de pantallas para el
mantenimiento bsico de una tabla y/o vista

Ayudas de bsqueda
Son las fuentes de informacin para los
matchcodes.

Estructuras
reas de trabajo dentro de programas.
No existen en la base de datos.

Tipo tabla

Son estructuras bidimensionales.


No existen dentro del manejador de base de datos.
Son una forma fija de tablas de uso en desarrollos.
Se crean con referencia a una estructura o una tabla.

Vista
Es la subconjuncin de una o varias tablas.
Se crea con referencia a tablas planas.
Existe su reflejo dentro del manejador de la base de datos.

Grupos de tipos
Son cdigos de ABAP que definen objetos que despus se pueden
utilizar dentro de los desarrollos como libreras de datos.

Objetos de bloqueo
Tienen por finalidad controlar el acceso concurrente a los datos. El tipo de
bloqueo puede ser:
Compartido (tipo S)
Exclusivo (tipo E)
Exclusivo no acumulado (tipo X)

Preguntas

Ejercicios

Programacin ABAP

Programas ABAP
Programas ABAP
Reporting
Programacin de dialogo
Otras aplicaciones (Interfaz, programas conexin)

Entorno de desarrollo
Para crear un programa se pueden utilizar 2 transacciones:

Editor ABAP SE38

Navegador de objetos SE80

Programas ABAP
Tipos de instrucciones
Declarativos
Eventos
Control
Operativos
Tipos de Datos
Campos de base de datos
Literales
Variables internas

Tipos de datos
Se pueden utilizar
TIPOS

DESCRIPCION

LONG. POR
DEFECTO

POSIBLE
LONGITUD

VALOR
INICIAL

Texto

1-32000

Espacios

Punto flotante

Entero

Texto numrico

1-32000

0000

Nmero empaquetado

1-16

Hexadecimal

1-29870

x00

Fecha YYYYMMDD

00000000

Hora HHMMSS

000000

Instrucciones Declarativas
Definicin
Data
Types
Constants
Tables
Parmetros
Parameters
Select-options
Selection-screen

Variables
Se declaran variables del report con la sentencia DATA. Si no se indica lo
contrario las variables sern del tipo carcter (Texto) y la longitud 1.
DATA g_test.

Con el parmetro TYPE podemos utilizar otros tipos de datos.


DATA l_num_car(5) TYPE n.
DATA l_numero(2) TYPE p.
DATA l_fecha_limite TYPE d.

Con el parmetro LIKE podemos declarar una variable con los mismos
atributos de longitud y tipo que una variable de base de datos
DATA l_acreedor LIKE lfa1-lifnr.

Con el parmetro VALUE podemos inicializar la variable con un valor


distinto al que tiene por defecto.
DATA l_bukrs TYPE char4 VALUE 1000.

Variables
Un registro de datos es un conjunto de campos relacionados lgicamente
en una estructura.
TYPES: BEGIN OF proveedor,
lifnr LIKE lfa1-lifnr,
name1 LIKE lfa1-name1,
ciudad TYPE char20,
fecha TYPE d,
END OF proveedor.

Tambin usaremos la instruccin DATA para declarar tablas internas


DATA it_proveedor TYPE TABLE OF proveedor.
DATA it_lfa1 TYPE TABLE OF lfa1.

Posteriormente el acceso a los campos del registro de datos ser mediante


un espacio de trabajo del mismo tipo de la tabla:
DATA wa_lfa1 TYPE lfa1.
WRITE wa_lfa1-lifnr.

Variables
Tambin se realizan las declaraciones que hacen referencia a las tablas
internas del Diccionario de datos mediante la sentencia TABLES.
TABLES lfa1.

La instruccin CONSTANTS se utiliza para declarar datos constantes en el


programa.
CONSTANTS c_period TYPE numc4 VALUE 2012.

Parmetros
Para declarar los parmetros de la interfaz del usuario de un programa se
utiliza la sentencia PARAMETERS.
Parmetro de captura:
PARAMETERS p_lifnr TYPE char10.
SELECT-OPTIONS p_lifnr FOR lfa1-lifnr.
Parmetro de opciones:
PARAMETERS p_opt1 RADIOBUTTON GROUP gpo1 DEFAULT 'X'.
Casilla de seleccin:
PARAMETERS p_test AS CHECKBOX.
Lista de valores:
PARAMETERS p_list TYPE zlist AS LISTBOX
VISIBLE LENGTH 20.

Personalizar apariencia
La sentencia SELECTION-SCREEN se usa para cambiar la apariencia de
la pantalla de seleccin. Permite colocar marcos, bloques, reorganizar los
distintos elementos.
BEGIN OF BLOCK bloque : Sirve para crear bloques de elementos
de pantalla (para agruparlos), los cuales se pueden anidar. La opcin WITH
FRAME se usa para crear un marco visible que engloba el bloque.
Con TITLE se aade un ttulo identificativo en el marco creado. El bloque
se cierra con END OF BLOCK, poniendo el mismo nombre para el bloque
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-t01.
PARAMETERS p_msg1 RADIOBUTTON GROUP gpo1 DEFAULT 'X'.
PARAMETERS p_msg2 RADIOBUTTON GROUP gpo1.
SELECTION-SCREEN END OF BLOCK blk1.

Personalizar apariencia

BEGIN OF LINE y END OF LINE: Estas dos opciones engloban un


bloque de sentencias declarativas (PARAMETERS, SELECTOPTIONS y/o SELECTION-SCREEN) que aparecern en la misma lnea
de la pantalla de seleccin, en lugar de en columna.
SELECTION-SCREEN: BEGIN OF LINE,
COMMENT 1(15) txparam.
PARAMETERS p_param TYPE c LENGTH 20.
SELECTION-SCREEN: COMMENT 40(40) p_descr,
END OF LINE.

SKIP [ n ]: Produce n lneas en blanco (una por defecto).


SELECTION-SCREEN SKIP 2.

Personalizar apariencia
FUNCTION KEY se usa para crear iconos en el men o barra de
herramientas. Se pueden activar hasta 5 de ellos. Se decide cul ha
pulsado el usuario chequeando el campo del sistema SY-UCOMM en el
evento AT SELECTION-SCREEN.
Varaibles requeridas:
TYPE-POOLS icon.
TABLES sscrfields.
DATA btn_function TYPE smp_dyntxt.
SELECTION-SCREEN: FUNCTION KEY 1.
INITIALIZATION.
btn_function-icon_id
= icon_CANCEL.
btn_function-quickinfo = 'Cancelar'.
btn_function-icon_text = 'Cancelar'.
sscrfields-functxt_01 = btn_function.

Personalizar Apariencia
PUSHBUTTON : Sirve para crear iconos en la propia pantalla de
seleccin. Con la opcin USER-COMMAND se le asocia un cdigo de
funcin.
SELECTION-SCREEN: BEGIN OF LINE,
PUSHBUTTON 2(10) btn_push USER-COMMAND fcode,
POSITION 1.
SELECTION-SCREEN END OF LINE.

COMMENT : Permite incluir comentarios en la pantalla de seleccin


(textos, labels).
SELECTION-SCREEN:

BEGIN OF LINE,
COMMENT 40(40) p_descr,
END OF LINE.

ULINE : Permite dibujar lneas horizontales (con subrayados). Se


puede asociar la lnea a un grupo de modificacin (como el resto de
elementos de la pantalla de seleccin
SELECTION-SCREEN ULINE.

Instrucciones de Eventos
Eventos
Initialization
At selection-screen
Start-of-selection

Eventos
El evento INITIALIZATION se ejecuta siempre antes de que aparezca la
pantalla de seleccin, una sola vez. Se usa para inicializar parmetros y
criterios de seleccin.
PARAMETERS p_fecha TYPE d DEFAULT sy-datum.
INITIALIZATION.
ADD 1 TO p_fecha.

AT SELECTION-SCREEN es un bloque de proceso que se activa mientras


se procesa la pantalla de seleccin, o bien despus de sta. Segn sus
parmetros, se activar cuando el usuario realice cierta accin en la
pantalla de seleccin.
AT SELECTION-SCREEN.
IF p_bukrs IS NOT INITIAL.
MOVE 1 TO l_validate.
ENDIF.

Eventos
START-OF-SELECTION.
Bloque de proceso que se ejecutar tras procesar la pantalla de seleccin,
y antes de acceder a las tablas de la base de datos lgica. En este evento
tiene lugar la seleccin de datos por parte del usuario y la ejecucin de la
funcionalidad principal del programa.
START-OF-SELECTION.
WRITE p_fecha.

Instrucciones Operativas
Asignacin de valores
MOVE
MOVE-CORRESPONDING
CLEAR

Operaciones Aritmticas
ADD TO , SUBSTRACT FROM,
MULTIPLY BY y DIVIDE BY
DIV, MOD, STRLEN.

Procesamiento de Textos

SHIFT
REPLACE
TRANSLATE
SEARCH
CONCATENATE
CONDENSE

Presentacin de datos
WRITE

Variables del Sistema


Estructura SYST

Asignacin de valores
La instruccin MOVE realiza un transporte del contenido una variable a
otra.
MOVE l_var1 TO l_var2.

Tambin es posible referenciar o asignar valores a una parte de la variable


utilizando el offset.
VARIABLE+offset(longitud)
DATA: l_var1 TYPE char7 VALUE 'ABCDEFG',
l_var2 TYPE char7.
MOVE L_var1+2(4) TO var2.
Resultado: CDEF.

Asignacin de valores
La instruccin MOVE-CORRESPONDING realiza el contenido de una
estructura a otra de aquellos campos que tengan idntico nombre.
MOVE-CORRESPONDING wa_lfa1 TO wa_tbl_report.

Para inicializar las variables utilizamos la sentencia CLEAR.


CLEAR: l_count,
wa_lfa1,
it_lfa1[].

Operaciones aritmticas
Los operadores aritmticos en ABAP son
Suma
a = b + c
ADD b TO c

Resta
a = b - c
SUBTRACT b FROM c

Multiplicacin
a = b * c
MULTIPLY b BY c

Divisin entera
a = b DIV c

Resto de la divisin entera


a = b MOD c

Exponente
a = b ** c

Longitud de una variable


a = STRLEN(b)

Divisin
a = b / c
DIVIDE b BY c

Procesamiento de Textos
Para realizar un desplazamiento del contenido de un campo utilizamos
SHIFT.

SHIFT <campo> BY <n> PLACES


Variantes:
SHIFT campo BY 2 PLACES
Ejemplo: campo = HOLA
Resultado: campo = LA
DATA campo TYPE CHAR10.
SHIFT campo RIGHT DELETING TRAILING space.
Ejemplo: campo = ABCDE

Resultado: campo =
ABCDE
SHIFT campo LEFT DELETING LEADING space.
Ejemplo: campo =
ABCDE
Resultado: campo = ABCDE

Procesamiento de Textos
Podemos reemplazar el contenido de ciertos campos con la instruccin
REPLACE.
REPLACE <cadena1> WITH <cadena2> INTO <campo>.

Existe otra instruccin de sustitucin, TRANSLATE.


Convierte a Maysculas
TRANSLATE <campo> TO UPPER CASE.

Convierte a Minsculas
TRANSLATE <campo> TO LOWER CASE.
La instruccin SEARCH busca una cadena dentro de un campo o una tabla.
SEARCH <campo>/<tabla> FOR <cadena>.

Procesamiento de Textos
Para borrar los blancos de una cadena utilizaremos CONDENSE.
CONDENSE <campo> [NO-GAPS].
Esta instruccin borra todos los blancos que se encuentren comenzando la
cadena por la izquierda y en caso de encontrar series de blancos intermedios
dejar nicamente uno por serie
La clusula NO-GAPS borra todos los blancos estn donde estn.
Para unir el contenido de dos o mas campos en otra variable se utiliza la
sentencia CONCATENATE.
CONCATENATE campo1 campo2 campoN INTO campo_texto
[SEPARATED BY SPACE].
La clusula SPACE puede ser sustituida por otro carcter separador de los
contenidos. SEPARATED BY ,.

Elementos de Textos y Mensajes


Elementos de Textos
Mensajes
Informacin
Error
Advertencia
Dump

Elementos de Textos
Los elementos de texto pueden ser ttulos de reports, cabeceras de
reports, textos de seleccin y textos numerados.
Con los Ttulos y Cabeceras podemos tratar el ttulo, cabeceras de
report y cabeceras de columna que saldrn por pantalla e impresora.
Con los Textos de seleccin trataremos los comentarios que
acompaan a los parmetros del tipo PARAMETERS o SELECT-OPTIONS.
Con los Textos numerados podemos utilizar constantes de tipo texto
sin necesidad de declararlas en el cdigo del programa. Los nombres de
las constantes sern TEXT-nnn, donde nnn es un nmero de tres dgitos.
Adems podemos mantener los textos numerados en varios idiomas.

Mensajes
Para visualizar un mensaje utilizamos la sentencia MESSAGE.
MESSAGE texto TYPE t.
Donde T es el tipo de mensaje:
A = Cancelacin.
E = Error. Es necesaria una correccin de los datos.
I = Informacin. Mensaje meramente informativo. El proceso
continuar con un ENTER.
S = Confirmacin. Informacin en la pantalla siguiente.
W = Warning. Nos da un aviso. Podemos cambiar los datos o
pulsar ENTER para continuar.
X = Dump
Podemos acompaar los mensajes de parmetros variables
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

Instrucciones de Control
Condiciones
IF..
ELSEIF..ELSE..
ENDIF.
CASE..
WHEN.. OTHERWISE..
ENDCASE.
CHECK.

Expresiones lgicas y Operadores


Las expresiones lgicas tpicas son de la forma
Operando1 Operador Operando2
Operadores para todo tipo de datos:
EQ , = (Igual)
NE , <> (Diferente)
LT , <
(Menor que)
LE , <= (Menor o igual que)
GT , > (Mayor que)
GE , >= (Mayor o igual que)

Operadores
Para tipos alfanumricos y numricos:
CO (contiene slo ...)
CN (no contiene slo ...)
CA (contiene algn ...)
NA (no contiene algn ...)
CS (contiene el string ...)
NS (no contiene el string ...)
CP (contiene el patrn ...)
NP (no contiene el patrn ...).
Operaciones lgicas especiales:
Rango: Operando1 BETWEEN Operando2 AND Operando3.

Operadores
Valor inicial:
Operando IS INITIAL.
Para saber si el valor de operando es el inicial por defecto o no. Para
nmeros el valor inicial es 0; para caracteres y cadenas es SPACE
IF l_bukrs IS INITIAL.

Criterio de seleccin:
Operando IN criterio_seleccin.
Para saber si el valor de operando est dentro o no del criterio
especificado. Muy usado en los CHECK y en los SELECT ... WHERE ... El
criterio de seleccin recoge la informacin que el usuario ha introducido en
un SELECT-OPTION
CHECK l_month IN p_period.

Condiciones
Las sentencias IF..., ELSE, ENDIF... Son utilizadas comprobar si se
cumple una condicin antes depasar a la siguiente instruccin.
IF l_import EQ 100.
ADD l_import TO g_total.
ELSEIF l_import EQ 50.
SUBTRACT l_import FROM g_total.
ELSE.
CONTINUE.
ENDIF.

Las sentencias CASE se utilizan para comprobar si se cumple una


condicin mediante un bloque de instrucciones.
CASE l_import.
WHEN 100.
ADD l_import TO g_total.
WHEN 50 .
SUBTRACT l_import FROM g_total.
WHEN OTHERS.
CONTINUE.
ENDCASE.

Instrucciones de Control

Control
DO..ENDDO.
WHILE..ENDWHILE.
CONTINUE
EXIT

Instrucciones de Control
La instruccin DO permite ejecutar un bloque de instrucciones tantas veces
como se especifique.
DO <n> TIMES.
...
ENDDO.

En la variable del sistema SY-INDEX tendremos un contador del nmero


de repeticiones.

La instruccin WHILE permite ejecutar un bloque de instrucciones mientras


se cumpla una condicin.
WHILE <condicin>.
...
ENDWHILE.

Sentencias de Control
Sentencias utilizadas para terminar el procesamiento de un bucle o
proceso.
La instruccin: CHECK <cond>.
Realiza un chequeo de <cond> de forma que si dentro de un bucle la condicin es
falsa, saltar todas las instrucciones que siguen al CHECK e iniciar la siguiente
pasada al bucle.

La instruccin : EXIT.
Dentro de un bucle saldr del bucle y fuera de un bucle saldr del programa. Si la
instruccin EXIT est dentro de varios bucles anidados, nicamente saldr del
bucle en proceso.

La instruccin : STOP.
Con STOP finalizaremos el report (programa) en ejecucin, pero antes
ejecutaremos el evento END-OF-SELECTION.

La instruccin: LEAVE.
Con LEAVE finalizaremos el report (programa) en ejecucin, sin ejecutar el evento
END-OF-SELECTION

Tablas Internas
Manejo de tablas internas
Append
Collect
Loop AT..EndLoop
Read table
Insert
Modify
Delete

Tablas internas
La utilidad principal de las tablas internas es guardar una coleccin de
registros de datos de la misma estructura en memoria sin necesidad de
acceder a la base de datos y poder realizar operaciones diversas con este
conjunto de informacin.
Declaracin de tablas internas y lneas de encabezado o rea de trabajo:
DATA it_lfa1 TYPE TABLE OF lfa1.
DATA wa_lfa1 TYPE lfa1.

Llenado de Tablas
APPEND Aade un registro a una tabla interna con los valores que
tengamos en el rea de trabajo.
APPEND wa_lfa1 TO it_lfa1.

COLLECT Aade o suma la lnea de cabecera. Sumar los campos de


tipo P,F,I, si existe una lnea en la tabla con campos idnticos (tipo C) a los
del rea de trabajo.
COLLECT wa_lfa1 INTO it_lfa1.
El problema de esta instruccin es que es bastante lenta. Se puede
por las instrucciones READ e INSERT o MODIFY.

sustituir

Llenado de Tablas
Podemos llenar una tabla interna con el contenido de una tabla de base de
datos. Siempre que la tabla interna tenga la misma estructura que la tabla de
base de datos.
SELECT * APPENDING TABLE it_lfa1
FROM lfa1.
[WHERE <condicin>]
[ORDER BY <campo>]
[GROUP BY <campo>]

Procesamiento de Tablas
Podemos recorrer una tabla interna con la instruccin LOOP ... ENDLOOP.
LOOP AT it_lfa1 INTO wa_lfa1.
....
ENDLOOP.

Podemos restringir el proceso de una tabla con una condicin WHERE.


Si no existe ningn registro de la tabla que cumpla la condicin
especificada en la clusula WHERE, la variable del sistema SY-SUBRC
ser distinta que 0.
Dentro del LOOP la variable SY-TABIX contiene el ndice de la entrada
que est procesando en ese momento

Lectura de Tabla Interna


Podemos buscar un registro concreto en una tabla sin necesidad de
recorrerla a travs de la sentencia READ TABLE.
READ TABLE it_lfa1 INTO wa_lfa1
WITH KEY lifnr = '10001'.

El resultado de la bsqueda lo tendremos en SY-SUBRC.


Si SY-SUBRC = 0 la bsqueda ha sido positiva.
Si SY-SUBRC <> 0 no ha encontrado el registro solicitado.
Es posible una bsqueda an ms rpida con una bsqueda binaria
adicionando la sentencia BINARY SEARCH.
Una lectura directa de un registro de la tabla la podemos realizar con:
READ TABLE it_lfa1 INTO wa_lfa1
INDEX 4.

Modificacin de Tabla Interna


Una vez llena la tabla interna tenemos la posibilidad de modificar los datos
con una serie de sentencias ABAP/4.
MODIFY: Podemos sobreescribir el contenido de la entrada <i> con el
contenido de la lnea de cabecera.
MODIFY it_lfa1 FROM wa_lfa1.
Variantes:
INDEX <n>. Para especificar la lnea en la tabla que se desea
modificar
TRANSPORTING <campos>. Especifica los campos que se requieren
afectar con la modificacin.
MODIFY it_lfa1 FROM wa_lfa1 INDEX 3 TRANSPORTING name1.

Modificacin de Tabla Interna


La sentencia INSERT aade una nueva entrada a la tabla con el contenido
de la lnea de cabecera, en la posicin indicada <i>.
INSERT wa_lfa1 INTO it_lfa1 INDEX 1.

Para eliminar una entrada de la tabla utilizamos la sentencia DELETE.


DELETE it_lfa1 INDEX 1.

La sentencia FREE Libera el espacio ocupado por una tabla en memoria.


FREE it_lfa1.

Tratamiento Tablas Internas


Para clasificar una tabla interna utilizamos SORT.
SORT <tabla_interna> BY <campo1> ....<campo n>.
SORT it_lfa1 BY lifnr.
Si no se indica lo contrario la ordenacin por defecto es ascendente.
SORT ... ASCENDING. o DESCENDING

Para obtener el total de registros de una tabla interna:


DESCRIBE TABLE it_lfa1 LINES l_count.

Tablas del Diccionario de datos


Manejo de tablas fsicas
Select
Insert
Modify
Delete

Instrucciones SQL de ABAP


ABAP/4 tiene un subconjunto de sentencias SQL para su aplicacin sobre
tablas de la base de datos SAP.
Estas son:
SELECT, INSERT, UPDATE, MODIFY, DELETE

Adems de las variables del sistema:


SY-SUBRC: Cdigo de retorno de una operacin.
SY-DBCNT: Cantidad de registros afectados por la operacin
procesada.

Seleccin de registros
La sentencia SELECT ser la instruccin fundamental para leer
informacin de la base de datos.
Lectura de un nico registro :
SELECT SINGLE * INTO wa_lfa1
FROM lfa1
WHERE lifnr EQ '10001' .

Como realizamos la bsqueda de un registro, en la condicin slo


podremos utilizar la igualdad y el operador AND, ya que especificaremos
toda la clave del registro.
Si SY-SUBRC = 0 Registro encontrado. Resultado en rea de trabajo.
Si SY-SUBRC = 4 No existe el registro buscado.

Seleccin de registros
Podemos leer una tablas de base de datos y simultneamente llenar una
tabla interna con el resultado de la lectura.

SELECT * INTO TABLE it_lfa1


FROM lfa1.
( WHERE <cond> )
Si queremos que respete los registros que tena la tabla interna antes de
realizar el SELECT tendremos que utilizar :
SELECT * APPENDING TABLE it_lfa1
FROM lfa1.
( WHERE <cond> )

Insertar registros
La sentencia INSERT permite introducir registros sencillos o el contenido
de una tabla interna en una base de datos SAP.
INSERT INTO lfa1 VALUES wa_lfa1.
INSERT lfa1 FROM TABLE it_lfa1.

Si SY-SUBRC = 0 Registro insertado.


Si SY-SUBRC > 0 La clave del registro que queramos insertar ya exista en la
tabla.
Si existe algn registro en la base de datos con clave igual a
algn registro de la tabla Interna, se producir un error de
ejecucin del programa.

Actualizar registros
La sentencia UPDATE permite modificar el contenido de uno o varios
registros y desde una tabla interna.
UPDATE lfa1 FROM wa_lfa1.
UPDATE lfa1 FROM TABLE it_lfa1.

Si queremos modificar el contenido de ms de un registro a la vez:


UPDATE lfa1 SET land1 = 'PAN' WHERE land1 EQ MX'.

Si el sistema no puede actualizar un registro, el proceso no finalizar sino


que continuar con el siguiente registro.
Si SY-SUBRC = 0 Todos los registros modificados.
Si SY-SUBRC = 4 No todos los registros han sido modificados.
En SY-DBCNT Tendremos la cantidad de registros modificados.

Modificar registros
La sentencia MODIFY se utilizar cuando no estemos seguros si utilizar un
INSERT o un UPDATE. Es decir, cuando no sepamos con certeza si un
registro existe o no, para modificarlo o aadirlo.
MODIFY lfa1 FROM wa_lfa1.
MODIFY lfa1 FROM TABLE it_lfa1.

Eliminar registros
Para realizar borrados de datos se aplica la sentencia DELETE.

DELETE lfa1 FROM wa_lfa1.


Borrar el registro que especifiquemos en el rea de trabajo.

Para borrar ms de un registro (todos los que cumplan una cierta


condicin).

DELETE FROM lfa1 WHERE land1 EQ PAN.


Podemos borrar de BDD todos los registros de una tabla interna.

DELETE lfa1 FROM TABLE it_lfa1.


Si SY-SUBRC = 0 Todos los registros han sido borrados.
Si SY-SUBRC = 4 No todos los registros han sido borrados.
En SY-DBCNT Tendremos la cantidad de registros borrados.

Rutinas
Subrutinas
Funciones

Subrutinas
Son unidades de modularizacin que permiten segregar un grupo de lineas
de cdigo del resto, y lo ejecutamos en un momento determinado.
Existen 3 tipos de subrutinas o subprogramas.
Internas : El Subprograma y la llamada a ste estn en el mismo
programa.
Externas : El Subprograma y la llamada a ste estn en programas
distintos.
Biblioteca de funciones (Mdulos de funcin) : Funciones externas al
programa con interface de llamada claramente definido.

Subrutinas
Llamada a un procedimiento o subprograma.
PERFORM <modulo>.

Declaracin de una Rutina:


FORM <modulo>
.... Subprograma.
ENDFORM.

El programa principal y el procedimiento se podrn comunicar mediante


parmetros.
PERFORM <modulo> USING var1 var2 ...
FORM <modulo> USING var1 var2 ...
.... Subprograma.
ENDFORM.

Tambin es posible pasar como parmetro tablas internas.


PERFORM <modulo> TABLES <intab> USING <var1> <var2>.
FORM <modulo> TABLES <intab> USING <var1> <var2>.
ENDFORM.

Con la clusula STRUCTURE podemos pasar la estructura de una tabla,


entonces podemos acceder a campos de una tabla pasada como
parmetro con :
PERFORM <modulo> TABLES <intab> USING <var1> <var2>.
FORM <modulo> TABLES <intab> STRUCTURE <estructura>
USING <var1> <var2>.
ENDFORM.

Mdulo de Funciones
Los mdulos de funcin son mdulos especiales guardados en una
librera central, y agrupados por la funcin que realizan. Principalmente se
caracterizan por un interface definido y porque realizan tratamiento de
excepciones.
Donde en el EXPORTING especificamos los parmetros de entrada, en
el IMPORTING(opcional) el resultado o retorno de la funcin y en
TABLES(opcional) las tablas que se utilizan como parmetros.
Los mdulos de funcin tambin se caracterizan por realizar un
tratamiento de excepciones. En el interface de los mdulos de funcin se
indican los valores de excepciones para el retorno del mdulo, que
posteriormente con el SY-SUBRC se pueden comprobar.
El cdigo de la funcin puede activar excepciones mediante las
instrucciones: MESSAGE .... RAISING <excepcion>.

Preguntas

Programacin Interactiva

La programacin Interactiva esta conformada por:


Una pantalla (dynpro)
Procesamiento lgico ABAP/4 (ModulPool)
Una transaccin para la ejecucin del proceso lgico.

ModulPool
En la programacin Interactiva se trabaja con ModulPool, el cual es un
programa ABAP conocido como tipo M y controla el flujo de la transaccin y
realiza las acciones necesarias para cumplir la funcionalidad de la
transaccin. Estos programas solo permiten sentencias INCLUDE. Al
menos existirn 3 Includes:
Un TOP para las variables globales, tablas, , etc.
Un PBO para los procesos PBO (Process Before Output:
Procesos que se ejecutan siempre antes de que la pantalla sea
desplegada.
Un PAI para los procesos PAI(Process After Input: Procesos
que se ejecutan una vez que el usuario ha elegido la accin a
realizar.

Dynpros
Una dynpro se define como un conjunto de elementos que tiene por
finalidad obtener interfaces para que el usuario realice diversas
operaciones.
El Screen Painter y el Menu Painter se utilizan para crear y disear
plantillas de pantalla y programas de pantalla.
Objetos disponibles:

Campo de Texto
Campo de Entrada / Salida
Casilla de seleccin
Botn de seleccin
Pulsador
Control de fichas
Marco
rea subscreen
Control Tabla

Dynpros
Se componen de:
Diseo
PBO
Mdulos
Status
Ttulo
PAI
Existen 3 tipos de dynrpos:
Pantallas
Sub-screens
Ventanas dilogo modal

Transacciones
Los Programas tipo Module Pool nicamente son
ejecutables a travs de una Transaccin:
Programa y Dynpro.

Ejercicios

Evaluacin

También podría gustarte