Sei sulla pagina 1di 150

OUTSOURCING

Introduccin a ABAP IV.


Parte I

Visin general del cdigo ABAP y debugging para


facilitar el trabajo de un consultor SAP.
Cristina Roca Muoz Consultora SAP
Curso / Salas Polivalentes 1 y 2 SS Avda. de Bruselas 35 / 19 y 29 Noviembre 2008

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

INDICE

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

Introduccin. Programacin en Abap/4

P rogramming
/
4

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

A dvanced
B usiness
A pplication

Abap/4 es un lenguaje de programacin modular al cual


se le ha incorporado la programacin orientada a
objetos (ABAP Objects).

En sus principios apareci como un sencillo lenguaje


para que los usuarios finales pudieran manipular
informacin.

A partir de la versin 4.5 de SAP se lanz una extensin


orientada a objetos denominada ABAP Objects.

En su nueva plataforma de desarrollo SAP, Netweaver,


SAP soporta ABAP y Java como lenguajes de
programacin.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Introduccin. Programacin en Abap/4

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

Tipos de programas ms usados:


Programa Ejecutable (Report)
Programa de Include
Modulpool
Grupo de funciones
Pool de subrutinas

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

Entorno de Programacin ABAP/4


Editor de ABAP/4- chequeo sintctico

Documentacin On-line

Entorno ABAP/4

ABAP/4 debugging mode


Lneas de cdigo
Ver / Modificar
contenido de campos

VER <tabla>
Datos
Tablas

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Programa

AYUDA <sentencia>

Tipos de programa

Reports

Modulpool
Procesos de actualizacin on-line

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Informes, Procesos batch de actualizacin

Estructura de un Programa
Declaracin de datos

Seleccin de datos

Ejecucin del listado

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Definicin de pantalla

10

Programas Ejecutables. REPORTS (Trans. SE38)


Constituyen el tipo de programa ABAP ms usado. Su
estructura est diseada para facilitar la creacin de
listados.
Estn formados por una pantalla de seleccin (filtrado
de datos) y una salida por pantalla (listado). Tiene un
flujo de ejecucin sencillo basado en eventos que
transcurren secuencialmente.
Todo programa report comienza con la sentencia
REPORT.
Nomenclatura: No tienen una nomenclatura fija, sin
embargo, para programas a medida estos deben
comenzar por Z o Y.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

11

INITIALIZATION.
START OF SELECTION.
END OF SELECTION.
TOP-OF-PAGE.
END-OF-PAGE.
AT LINE-SELECTION.
AT PFxx.
AT USER-COMMAND.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Eventos

12

Programas de Include (Trans. SE38)


Los programas includes constituyen un modo de
encapsular cdigo de modo que sea reutilizable en
distintos programas. Tambin facilita la comprensin de
programas agrupando los distintos eventos, rutinas, etc
en distintos programas de include.
Nomenclatura: Al igual que los programas reports no
tienen una nomenclatura fija, sin embargo, los
programas de include para grupos de funcin y
modulpool siguen una nomenclatura prefijada (se ver
ms adelante). Al igual que para todos los dems
objetos de SAP, a crear includes a medida estos deben
comenzar por Y o Z (a excepcin de modulpool y grupos
de funcin).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

13

MODULPOOL (Trans. SE38 y SE51)


Modulpool es un modo de programacin basado en la
secuencia de ejecucin de screen (pantallas). La
ejecucin comienza en una screen en concreto (llamada
directamente por la transaccin) y la secuencia de
ejecucin las llevan las screen que se llaman
dinmicamente.
Nomenclatura: En nombre de un programa modulpool
comienza por SAPMxxxx siendo xxxx texto libre. Los
programas de include creados para l, comienzan por
Mxxxx. Normalmente se usan nombres como:
MxxxxTOP (datos globales), MxxxxI## (mdulos input),
MxxxxO## (mdulos output), MxxxxF## (rutinas forms).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

14

Grupos de funcin (Trans. SE37)


Un grupo de funcin es un conjunto de mdulos de
funcin que comparten cdigo y datos. Tanto los datos
globales como las rutinas definidas en el programa de
control (del grupo de funcin) son accesibles desde
todos sus mdulos de funcin. Esto nos permite crear
flujos de ejecucin de mdulos de funcin que aada
funcionalidad a los programas que los use, sin que los
datos del grupo de funcin hagan ms complejo el
programa de llamada.
Nomenclatura: En nombre para el programa de control
de un grupo de funcin comienza por SAPLxxxx siendo
xxxx texto libre. Los programas de include creados
para l, comienzan por Lxxxx.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

15

Pool de subrutinas (Trans. SE38)


Como su nombre indica un pool de subrutinas es un
programa que slo contiene rutinas forms. Su principal
finalidad es usar estas rutinas en llamadas dinmicas,
por ejemplo, las transacciones estndar de ventas (SD)
llaman dinmicamente a un pool de subrutinas durante
la impresin de sus formularios.
Hay que destacar el parecido de los grupos de funcin
con los pool de subrutinas, ya que estos son
conceptualmente lo mismo. La diferencia se haya en la
forma de trabajo con estos.
Nomenclatura: No siguen ninguna nomenclatura
especial.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de programas y nomenclatura

16

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

17

Diccionario de Datos
Datos de material en la Base de datos

Cdigo de material Descripcin


A4711/XYZ
B4712/XYZ
C9999/XYZ

tornillo
taladro
martillo

Cantidad
1,100.00
300.00
10.0
0

Precio
1.00
200.00
5.00

Atributos de los campos en el Diccionario de datos (una tabla)

Nombre del campo Formato


Cdigo de material
Descripcin
Cantidad
Precio

Character
Character
Numeric
Numeric

tamao
18
30
7.2
6.
2

*** ***

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

18

Objetos bsicos en el Diccionario

Tabla

utiliza
Elemento
Elementode
deDatos
Datos
utiliza
campo

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Dominio

19

Definicin de una Tabla


Campo 1 Campo 2 Campo 3
2

Tabla

...

Campo n

Campo 2
Change document
Memory ID
Domain name
Key words
Heading

Formato

Tabla de verificacin

Tamao

Conjunto de valores . . .

...

Campo

Elemento de datos

Dominio

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

20

Tipos de tablas

Tablas POOL : Tablas SAP que se guardan junto a


otras tablas SAP en una nica tabla fsica de BDD.
Mejorando el acceso a los registros.

Tablas CLUSTER : Varias tablas que se guardan en


un cluster de BDD. Se guardan registros de varias
tablas SAP con la misma clave cluster, en el mismo
cluster fsico de la base de datos.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tablas TRANSP (transparentes) : Tablas normales


relacionales (SQL).

21

Los datos en el sistema SAP


Datos maestros : Son datos que no se modifican muy a
menudo.
Ej: Materiales, Cuentas, Bancos, Clientes ...

Datos de movimientos : Datos muy voltiles y con gran


volumen de generacin.
Ej: Facturas, Pedidos...
Se suelen guardar en tablas tipo CLUSTER todos ellos con
formato parecido (documentos).
Datos del sistema o de control :
Muchas tablas con pocos datos.
Se suelen guardar en tablas de tipo POOL.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Se almacenarn en tablas transparentes.

22

Tipos

Longitud por
defecto

Posible longitud

Valor inicial

Descripcin

1-32000

ESPACIOS

Texto

0.0E+00

Punto flotante

Entero

1-32000

0000

Texto numrico

1-16

Nmero
Empaquetado

1-29870

x00

Hexadecimal

00000000

Fecha YYYYMMDD

000000

Hora HHMMSS

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tipos de datos

23

Declaracin de tipos y datos

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Uso de tipos predefinidos (abap_types)

24

Declaracin de tipos y datos

Podemos crear nuestros propios tipos de datos


haciendo referencia a tipos ya existentes, como pueden
ser: elementos de datos, tipos tabla, tipos dentro de
grupos de tipos, etc.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Referencia a tipos existentes

25

Declaracin de tipos y datos

Mediante esta adicin se declaran instancias de clases


y referencia a datos que posteriormente se asignarn a
punturos (fields-symbols).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Tipos referencia

26

Declaracin de tipos y datos

Usando la adicin begin of ... end of ... se declaran


estructuras, es decir, tipos que contienen uno o ms
campos.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Tipos estructura

27

Declaracin de tipos y datos

Podemos crear tipos tabla (tablas internas) basadas en


lneas (registros) tipo estructura, instancias de clases,
referencia, etc. Se les puede aplicar una clave (nica o
no), definirlas como tablas ordenadas, etc.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Tipos tabla

28

Declaracin de tipos y datos

Un tipo rango es una clase de tipo que nos permite


definir rangos de valores, siendo estos intervalos,
valores individuales, inclusin y exclusin de valores,
etc.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Declaracin de tipos (Sentencia TYPES)


Tipos rango

29

Declaracin de Variables
Una variable

Una variables no es ms que una zona de memoria


donde se va a almacenar la informacin de una forma
temporal. Para ello SAP utiliza la sentencia DATA.
Tambin nos podremos crear nuestro propios TYPE
de datos. E incluso definir constantes cuyo valor ser
inamovibles a lo largo del programa.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

30

Declaracin de datos
DATA:

Un nombre vlido consta de un mximo de 30 caracteres


(letras, nmeros, caracteres especiales) siendo el primero una
letra.

Los siguientes caracteres especiales no se deben usar:


( ) + * < > . , : / =

SPACE es un campo predefinido.

En una instruccin ABAP/4, el nombre de un parmetro no


debe usarse como nombre de campo.
Un - guin/signo menos indica registro-campo.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

COUNTER
TYPE I,
COUNTER2
TYPE COUNTER,
TEXTO(30)
VALUE Sueo tengo oyes,
START_DATE TYPE D,
SUM1(5)
TYPE P.

31

Declaracin de datos: Uso de las estructuras del


Diccionario de Datos

INCLUDE STRUCTURE <tab>.


REPORT B170D091.
DATA : BEGIN OF TAB OCCURS 5.
INCLUDE STRUCTURE TABNA.
DATA : END OF TAB,
NAME2 LIKE TABNA - NAME1.
TAB-CITY = . . .

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

32

Estructuras de datos
Estructura
ADDRESS
NAME

FIRST NAME

PLACE

STREET

PLACE

STREET

ADDRESS_LIST
Cabecera
NAME

FIRST NAME

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tablas internas

33

Definiendo una tabla interna

REPORT

B170D081.

DATA:

AMOUNT ( 5) TYPE P,
BEGIN OF ADDRESS OCCURS 5,
FLAG TYPE C,
ID
LIKE TABNA-ID,
NAME LIKE TABNA-NAME1,
CITY
LIKE TABNA-CITY,
AMOUNT1 LIKE AMOUNT,
END OF ADDRESS.

MOVE X TO ADDRESS-FLAG.
ADD AMOUNT TO ADDRESS-AMOUNT1.
WRITE: ADDRESS-FLAG, ADDRESS-ID, ADDRESS-AMOUNT1.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DATA: BEGIN OF <tabla> OCCURS <n>, . . . ,


END OF <tabla>.

34

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

35

Reports. Pantallas de seleccin, eventos y otros


PANTALLA DE SELECCIN
Pantallas de seleccin son unas pantallas especiales
definibles en reports, grupos de funcin y modulpools. Se
declaran en la seccin de definiciones globales, y hacen uso
de las sentencias SELECT-OPTIONS, SELECTION-SCREEN y
PARAMETERS.
Se pueden crear tantas pantallas de seleccin como se
quiera, siendo la screen 1000 (reservada para la pantalla de
seleccin por defecto).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

36

Reports. Pantallas de seleccin, eventos y otros


Sentencia SELECTION-SCREEN
Mediante esta sentencia podemos crear pantallas de seleccin,
definir un layout, y otros.
Creacin de pantallas de seleccin

Lneas horizontales
Campos de salida (Informacin)

Pulsadores

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Lneas en blanco

37

Reports. Pantallas de seleccin, eventos y otros


Sentencia SELECTION-SCREEN (continuacin)
Lneas con mltiples
elementos

Creacin de TabScrips
(pestaas)
Pulsadores (dentro de la barra
de pulsadores)

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Creacin de bloques

38

Reports. Pantallas de seleccin, eventos y otros


Sentencia PARAMETERS
Mediante esta sentencia definimos las variables que formarn
parte de la pantalla de seleccin.

Opciones de pantalla

Opciones de valor

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Opciones de tipo

39

Reports. Pantallas de seleccin, eventos y otros


Sentencia SELECT-OPTIONS
Mediante esta sentencia definimos rangos de valores. Nos
posibilita el filtrado de datos por rangos.

Opciones de valor

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Opciones de pantalla

40

Reports. Pantallas de seleccin, eventos y otros


Textos de Seleccin

Si marcamos la casilla
Referencia el texto del campo
de seleccin se recoger
automticamente del elemento de
datos asignado al campo.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Mediante los textos de seleccin le asignamos textos a los


campos de la pantalla de seleccin, es decir, a los parmetros
(PARAMETERS) y los rangos de seleccin (SELECT-OPTIONS).

41

Reports. Pantallas de seleccin, eventos y otros


Mensaje de error en la Pantalla de Seleccin
AT SELECTION-SCREEN
ON
<CAMPO>.

AT SELECTION-SCREEN ON KD_BUKRS.
MESSAGE E . . . .
AT SELECTION-SCREEN ON COUNTRY.
MESSAGE E . . . .

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B190D025 MESSAGE-ID . . . .


TABLES:LFA1,LFB1.
PARAMETERS:COUNTRY . . . .

42

Smbolos de texto
REPORT B170D037.
WRITE : TEXT-001, 10 SY-DATUM...,
Time(002), 10 SY-UZEIT....

Smbolos texto
No
001
002

Texto

Lenguaje E

Date
Time
Date
Time

31.01.1192
13:25:07

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Elementos texto

43

Reports. Pantallas de seleccin, eventos y otros


Ejemplo de pantalla de seleccin

PARAMETERS

BLOQUES

CAMPO DE SALIDA

CHECKBOX

RADIOBUTTON

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SELECT-OPTIONS

44

Reports. Pantallas de seleccin, eventos y otros


EVENTOS DE UN REPORT
El flujo de ejecucin de un report se basa en eventos. Estos
eventos estn preestablecidos por el sistema y son (en orden
de ejecucin):
INITIALIZATION
AT SELECTIONSCREEN OUTPUT
AT SELECTIONSCREEN [INPUT]
START-OFSELECTION
END-OF-SELECTION

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

45

Reports. Pantallas de seleccin, eventos y otros


El evento INITIALIZATION se procesa una nica vez en la
ejecucin de un report. Su momento de ejecucin es justo al
comienzo del report, es decir, nada ms llamarse el report se
ejecuta inmediatamente el evento INITIALIZATION.
Se usa principalmente para informar datos (variables) del
programa que son independientes de los datos de seleccin.
Un uso muy relevante de este evento es informar valores por
defecto para la pantalla de seleccin, valores que nicamente
en tiempo de ejecucin podemos disponer de ellos.
Ejemplo: Si en una pantalla de seleccin aparece el campo
sociedad, queremos proponerle un valor por defecto para este
campo, pero queremos que el valor informado dependa del
usuario; tendremos que usar el evento INITIALIZATION.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

INITIALIZATION

46

AT SELECTION-SCREEN OUTPUT
El evento AT SELECTION-SCREEN OUTPUT se procesa
justo antes de aparecer la pantalla de seleccin
(posterior al evento INITIALIZATION), y se reprocesa
cada vez que aparece la pantalla de seleccin.
Consideracin: La pantalla de seleccin se llama a s
misma hasta que pulsemos
. Por tanto, este evento
se ejecutar cada vez que vuelva a aparecer la pantalla
de seleccin.
Se usa principalmente para la creacin de pantallas de
seleccin dinmicas. Usando loop at screen podremos
hacer desaparecer campos, hacerlos obligatorios, etc
en tiempo de ejecucin.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Reports. Pantallas de seleccin, eventos y otros

47

AT SELECTION-SCREEN [INPUT]
El evento AT SELECTION-SCREEN INPUT se procesa
justo cuando el usuario actua sobre la pantalla de
seleccin (pulsando enter, ejecutando, etc), igual que
ocurre con el evento anterior se reprocesa con cada
ejecucin de la pantalla de seleccin.
Su uso principal es la validacin de los campos
introducidos en la pantalla de seleccin. Es smamente
importante validar los campos, ya que procesar el report
con valores incorrectos no solo nos hace perder el
tiempo sino que tambin podra ocasionar resultados
inesperados.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Reports. Pantallas de seleccin, eventos y otros

48

START-OF-SELECTION
El evento START-OF-SELECTION se procesa
secuencialmente despus de pulsar ejecutar en la
pantalla de seleccin. En este evento se procesa todo el
cuerpo principal de programa.
Como su nombre indica su principal finalidad es la de
seleccionar y guardar (en datos/tablas internos) los
datos que posteriormente usaremos para el resultado
del programa (listado, batchinput, etc). La cada en
desuso del evento END-OF-SELECTION le proporciona a
este evento todo el peso del cuerpo del programa.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Reports. Pantallas de seleccin, eventos y otros

49

END-OF-SELECTION
El evento END-OF-SELECTION se procesa
secuencialmente despus de finalizar el START-OFSELECTION. En l se debera procesar la informacin
seleccionada en el evento anterior para realizar el
resultado esperado.
Este evento ha cado en desuso principalmente por no
ofrecer una dinmica especial a la ejecucin del
programa.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Reports. Pantallas de seleccin, eventos y otros

50

Reports. Pantallas de seleccin, eventos y otros

REPORT

B170D045.

DATA:

NAME1(25),
SORT_NAME(10),
FIRST_LINE(4)
NEXT_LINE

TYPE N,
TYPE I.

MOVE SAP TO NAME1.


MOVE 5 TO FIRST_LINE.
COMPUTE NEXT_LINE = FIRST_LINE + 1.
SORT_NAME = NAME1.
ADD 1 TO NEXT_LINE.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Asignacin de valores

51

Reports. Pantallas de seleccin, eventos y otros

WRITE XYZ.
WRITE NAME.
WRITE COUNTER.

WRITE : XYZ , NAME,


COUNTER.

ADD 1 TO COUNTER1.
ADD 1 TO COUNTER2.
ADD 1 TO COUNTER3.

ADD 1 TO : COUNTER1,
COUNTER2,
COUNTER3.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Agrupar instrucciones

52

Reports. Pantallas de seleccin, eventos y otros


Sentencias / Comandos
Comentarios

*
*

Nueva Cuenta
Inicializa el campo de totales

CLEAR SUM.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DATA: SUM TYPE P,


Campo de totales
COUNTER TYPE P.

53

Reports. Pantallas de seleccin, eventos y otros

PROGRAM

B170D046.

DATA:

COUNTER TYPE I,
AMOUNT TYPE P VALUE 1000,
SUM
TYPE P,
RESULT TYPE P,
NUMBER(2)
TYPE C VALUE 99,
ROOT
TYPE F.

COMPUTE:

COUNTER = COUNTER + 2,
RESULT = AMOUNT * COUNTER.
SUM = RESULT + NUMBER - COUNTER.
RESULT = COUNTER * ( AMOUNT + NUMBER ).
ROOT = SQRT( NUMBER + COUNTER ).

Operadores
Funciones

+ - / * DIV MOD
SQRT EXP LOG SIN COS STRLEN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Expresiones aritmticas

54

Reports. Pantallas de seleccin, eventos y otros


PROGRAM
DATA: DIFF
DATE_1
DATE_2

B170D047.
TYPE P,
TYPE D,
TYPE D.

DATE_1 = SY-DATUM.
DATE_2 = SY-DATUM.
* Primer da del mes
DATE_2 + 6(2) = 01.
*ltimo da del mes anterior
DATE_2 = DATE_2 - 1.
* Diferencia entre fechas
DIFF = DATE_1 - DATE_2.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Clculos con fechas

55

Reports. Pantallas de seleccin, eventos y otros

REPORT B170D031.
WRITE : *************************************.
SKIP 1.
WRITE : Date, SY-DATUM.
WRITE : Time, SY-UZEIT.
SKIP 2.
WRITE : *************************************.
31.01.1992

--------------------------------------------------------------------------------------------------------------------------------**************************************************************************************************
Date

31.01.1992 Time

14:46:10

**************************************************************************************************

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Instruccin Write

56

Reports. Pantallas de seleccin, eventos y otros

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Especificar formatos

57

Reports. Pantallas de seleccin, eventos y otros

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencias / Comandos
Instrucciones de control

58

Sentencia IF
IF <expresin lgica>.
sentencias
ENDIF.
sentencias
ELSE.
sentencias
ENDIF.
IF < expresin lgica >.
sentencias
ELSEIF < expresin lgica >.
sentencias
ELSE.
sentencias
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

IF < expresin lgica >.

59

Operadores relacionales
Representacin
=

NE

<>

GT

>

GE

>=

LT

<

LE

<=

Igual a
><

Distinto de
Mayor que

=>

Mayor o igual que


Menor que

=<

Menor o igual que

BETWEEN f1 AND f2

Dentro del intervalo (incl.)

IS INITIAL

Es un valor inicial

DATA: START TYPE D,


SUM1 TYPE F,
SUM2
TYPE P.
IF START IS INITIAL . . .
IF SUM1 GT SUM2 . . .
IS SUM1 BETWEEN 0 AND 100 . . .

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

EQ

Significado

60

Comparacin de caracteres
<f1> CO <f2>

contiene slo: f1 contiene slo


caracteres de f2.

ACCOUNT CO 0123456789_
contiene alguno: f1 contiene al menos
un carcter de f2.

<f1> CS <f2>

contiene la cadena: f1 contiene


la cadena f2.

ABCDE CS DE
<f1> CP <f2>

ABXDE CP *B+D*

contiene patrn: f1 corresponde al


modelo f2.
Modelo:
* cualquier cadena
+ cualquier carcter
# smbolo de escape

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

<f1> CA <f2>

61

Expresiones lgicas

COUNTER GE 0

( FLAG1 NE SPACE OR FLAG2 NE SPACE ) AND


COUNTER BETWEEN 0 AND 100
COUNTER EQ 0 AND NOT
( FLAG1 EQ SPACE AND FLAG2 EQ SPACE )

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

COUNTER GT 0 AND
FLAG IS INITIAL

62

La instruccin ON CHANGE OF
ON CHANGE OF <campo>.
TABNA
COUNTRY

PROGRAM
TABLES:

NAME1

Smith

Jones

Young
B170D071.
TABNA.

SELECT * FROM TABNA.


ON CHANGE OF TABNA-COUNTRY.
NEW-PAGE.
ENDON.
WRITE: / TABNA-COUNTRY,
TABNA-NAME1, . . . .

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tabla:

63

Sentencia CASE
CASE COUNTRY.
WHEN D.

WHEN GB.
WHEN OTHERS.
ENDCASE.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

WHEN USA.

64

Bucle DO

DO <n> TIMES.

ENDDO.

SY-INDEX

ndice del bucle

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

sentencias

65

Bucle WHILE
WHILE <expresin lgica>.
sentencias

SY-INDEX

ndice del bucle

WHILE COUNTER > 0.


SUBTRACT 1 FROM COUNTER.
ENDWHILE.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ENDWHILE.

66

Sentencia CHECK
CHECK <expresin lgica>.

WHILE COUNTER GT 0.
sentencias
CHECK FLAG NE SPACE.
sentencias
ENDWHILE.
2. CHECK fuera de un bucle.
sentencias
CHECK <condicin>.
sentencias

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

1. CHECK dentro de un bucle.

67

Sentencia EXIT
EXIT.
1. EXIT dentro de un bucle.
sentencias
IF COUNTER GE 100.
EXIT.
ENDIF.
sentencias
ENDDO.
2. EXIT fuera de un bucle.
sentencias
IF . . . .
EXIT.
ENDIF.
sentencias

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DO.

68

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

69

MDULOS DE FUNCIN (Trans. SE37)


Como habamos descrito en el tipo de programas grupo
de funciones, en este grupo se definen los mdulos de
funcin. Estas funciones son accesibles desde cualquier
programa usando la sentencia CALL FUNCTION y es una
forma efectiva de modularizar cdigo.
El que dentro de un grupo de funcin todas sus
funciones tengan acceso a los mismos datos globales
los otorgan de un gran dinamismo. En ejemplo de ello
son las funciones messages_initialize, message_store y
messages_show; siendo estas tres funciones
integrantes del mismo grupo de funcin y cuya
utilizacin sigue un patrn establecido.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Modularizacin en Abap/4: Mdulos de funcin

70

Modularizacin en Abap/4: Mdulos de funcin


INTERFAZ DE UN MDULO DE FUNCIN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PARMETROS IMPORT:
Son los valores de entrada a la funcin, pueden ser o no
opcionales (en caso de serlo se le propondr un valor por
defecto).

71

Modularizacin en Abap/4: Mdulos de funcin


INTERFAZ DE UN MDULO DE FUNCIN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PARMETROS EXPORT:
Son los valores de salida (respuesta) de la funcin.

72

Modularizacin en Abap/4: Mdulos de funcin


INTERFAZ DE UN MDULO DE FUNCIN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PARMETROS MODIF (CHANGING):


Son los valores de entrada y salida, se espera que tenga unos
valores durante la llamada a la funcin y que estos valores
cambien durante su proceso.

73

Modularizacin en Abap/4: Mdulos de funcin


INTERFAZ DE UN MDULO DE FUNCIN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PARMETROS TABLES:
Son parmetros de entrada y salida de tablas. El uso de
parmetros tables est cayendo en desuso debido a la mayor
coherencia de usar parmetros import/export de tipo tabla. Sin
embargo, continua su uso por compatibilidad de programas
antiguos.

74

Modularizacin en Abap/4: Mdulos de funcin


INTERFAZ DE UN MDULO DE FUNCIN

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

EXCEPTIONS:
Las excepciones son los errores que devuelve la funcin.
Dentro de la funcin mediante la sentencia RAISE se devuelve
una excepcin que se traduce en un sy-subrc distinto a 0 en el
programa de llamada.

75

Modularizacin en Abap/4: Mdulos de funcin


LLAMADA A UN MDULO DE FUNCIN

Un parmetro import de un mdulo de funcin ser exporting


en la llamada, igual pasa para parmetros export.
Existe una muy amplia biblioteca de funciones estndar que se
pueden usar en nuestros desarrollos a medida, especialmente
las funciones de acceso remoto BAPIs.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SENTENCIA CALL FUNCTION


Mediante la sentencia call function hacemos una llamada a un
mdulo de funcin existente en el sistema. La sintaxis de la
sentencia es:

76

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

77

SUBRUTINAS FORMs
Una rutina form es un modo de modularizacin y
encapsulamiento de cdigo muy til en el desarrollo de
un programa. La principal diferencia con los mdulos de
funcin es que su finalidad no es la creacin de
bibliotecas sino ordenar y simplificar el cdigo de un
programa.
La sentencia form define una subrutina y la sentencia
perform realiza la llamada a la misma. Igual que los
mdulos de funcin las subrutinas usan parmetros de
llamada y devuelta, que hacen posible la reutilizacin de
cdigo.
Tambin son usadas las subrutinas con fines de
ordenacin del cdigo. Por ejemplo, dentro del evento
start-of-selection podramos encontrarnos nicamente
la llamada a subrutinas rutina_seleccin,
rutina_proceso, rutina_log_del_proceso.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Modularizacin en Abap/4: Rutinas form

78

Modularizacin en Abap/4: Rutinas form


IMPLEMENTACIN DE UNA SUBRUTINA

Los parmetros tables son de entrada y salida y constituyen


tablas (en desuso), using son parametros de entrada (value)
(por valor) o de entrada y salida (sin value) (por referencia),
changing son valores de entrada y salida que tambin pueden
ser por valor o por referencia, raising son excepciones
devueltas por la subrutina.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SENTENCIA FORM
Mediante la sentencia form implementaremos una subrutina en
ABAP. La sintaxis de la sentencia es:

79

Modularizacin en Abap/4: Rutinas form


LLAMADA A UNA SUBRUTINA

Los parmetros se usan de igual modo que en la


implementacin a excepcin de los raising que no es necesario
replicarlos en la llamada.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SENTENCIA PERFORM
Mediante la sentencia perform realizamos una llamada a una
subrutina en ABAP. La sintaxis de la sentencia es:

80

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

81

Acceso a la base de datos


Sentencia SELECT
La sentencia SELECT se usa para acceder a los datos de la base
de datos, permitiendo adems acceder a ms de una tabla
mediante join (inner/left outer).

Entre la sentencia SELECT y ENDSELECT se crea un bucle que


se procesa por cada registro encontrado en la tabla.
Podemos acceder a un nico registro SELECT SINGLE, recoger
todos los registros resultantes en una tabla INTO TABLE
(APPENDING TABLE), ordenar los registros resultantes ORDER
BY, etc.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

82

Sentencia Select

Diccionario

Definicin

Base de
Datos

Datos

List
Listado

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SELECT . . .

83

84

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Sentencia SELECT

Sentencias

ENDSELECT.
IF SY-SUBRC NE 0.
Sentencias
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT
B170D062.
TABLES:
TABNA.
SELECT * FROM TABNA
WHERE COUNTRY = USA.

85

Ejemplo: Acceso simple


REPORT B170D141.
TABLES: TABNA.

IF SY-SUBRC = 0.
WRITE: TABNA-COUNTRY, TABNA-ID,
TABNA-NAME1.
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SELECT SINGLE * FROM TABNA


WHERE COUNTRY EQ D
AND ID EQ 00000002.

86

Ejemplo: Bucle con restricciones

SELECT * FROM TABNA


WHERE COUNTRY EQ USA
AND ID BETWEEN 00000001 AND 00000010.
WRITE:/TABNA-COUNTRY, TABNA-ID,
TABNA-NAME1.
ENDSELECT.
IF SY-SUBRC > 0.
WRITE:/ No hay datos que cumplan las restricciones!.
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D142.
TABLES: TABNA.

87

Sintaxis: Select
SELECT * FROM <table>
WHERE <campo tabla 1> < operador relacional > < campo 1>
AND
<campo tabla 2> < operador relacional > < campo 2>
<campo tabla n> < operador relacional > < campo n>

ENDSELECT.
<operador relacional>:
EQ
GE
LE

=
>=
<=

NE
GT
LT

<>
>
<

=>
=<
><

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

AND

88

Sintaxis: Intervalos, instruccin LIKE, listas.


SELECT * FROM <tabla> WHERE <campo tabla>
BETWEEN <campo 1> AND <campo 2>
LIKE <con % y _ masked literal>
IN (<campo 1>, <campo 2>, . . . , <campo n>)

SELECT * FROM T001


WHERE BUKRS LIKE 0000_
AND BUTXT LIKE SAP%.
WRITE:/ T001.
ENDSELECT.
IF SY-SUBRC NE 0.
WRITE No hay datos que cumplan las
restricciones!
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D143.
TABLES: T001.

89

Ejemplo:Instruccin LIKE

SELECT * FROM T001


WHERE BUKRS LIKE 0000_
AND BUTXT LIKE SAP%.
WRITE:/ T001.
ENDSELECT.
IF SY-SUBRC NE 0.
WRITE No hay datos que cumplan las restricciones:
ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D143.
TABLES: T001.

90

Definiendo una estructura

REPORT
DATA:

B170D081.
AMOUNT(5) TYPE P,
BEGIN OF ADDRESS,
FLAG TYPE C,
ID
LIKE TABNA-ID,
NAME LIKE TABNA-NAME1,
CITY
LIKE TABNA-CITY,
AMOUNT1 LIKE AMOUNT,
END OF ADDRESS.

MOVE X TO ADDRESS-FLAG.
ADD AMOUNT TO ADDRESS-AMOUNT1.
WRITE: ADDRESS-FLAG, ADDRESS-ID,
ADDRESS-AMOUNT1.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DATA: BEGIN OF <nombre>, <declaracin de campo(s)>,


END OF <nombre>.

91

Copia de campo a campo


MOVE-CORRESPONDING <f1> TO <f2>.

TYPE C,
LIKE TABNA-ID,
LIKE TABNA-NAME1,
LIKE TABNA-CITY,

CLEAR ADDRESS.
MOVE-CORRESPONDING TABNA TO ADDRESS.
TABNA

ID

NAME1

CITY

X
ADDRESS

FLAG

ID

NAME

CITY

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D082.
TABLES: TABNA.
DATA:
BEGIN OF ADDRESS,
FLAG
ID
NAME
CITY
. . . ,
END OF ADDRESS.

92

Acceso a la base de datos


Inner/Left Outer Join

Si queremos acceder a los datos de cabecera y ctas. de mayor


para documento contable, realizaramos un join entre las tablas
BKPF y BSIS; realizando la unin entre los campos bukrs, gjahr
y belnr.
Inner Join es un modo de unin en el que solo tendremos los
resultados si en todas las tablas tenemos al menos un registro
correcto; Left Outer Join nos ofrece todos los registros de
todas las tablas que cumplan las condiciones, aunque haya
registros de una tabla que no unan con las otras tablas, estos
registros aparecern.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Es muy til (y ptimo) el acceder mediante join a registros de


varias tablas. La sintaxis para realizar un join es:

93

Acceso a la base de datos


Sentencia INSERT
La sentencia INSERT se usa para insertar registros en una tabla
de la base de datos.

Hay que considerar que no siempre vamos a poder insertar un


registro en una tabla, por ejemplo, si intentamos insertar un
registro donde los campos clave coinciden con un registro ya
existente en la tabla, la sentencia nos devolver un sy-subrc
distinto a 0.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

94

Acceso a la base de datos


Sentencia UPDATE
La sentencia UPDATE se usa para modificar el valor de campos
(no clave) de una tabla.

Dentro de set podemos realizar clculos entre campos de la


tabla y expresiones sencillas.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

95

Acceso a la base de datos


Sentencia MODIFY
La sentencia MODIFY se usa para modificar todos los campos
no clave de un registro. A diferencia del update en modify no
podemos especificar qu campos queremos modificar, con lo
que la modificacin es masiva de todos los campos.

El workarea origen tendr la misma estructura de campos que


la tabla y contendr los campos clave informados. El registro
de la tabla modificado ser el que tenga los campos clave igual
que el workarea, en caso de no existir ese registro, el registro
se crear en la tabla (igual que si hubieramos realizado un
insert).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

96

Acceso a la base de datos


Sentencia DELETE
La sentencia DELETE se usa para eliminar registros de una
tabla de la base de datos.

Nos devolvera un sy-subrc distinto a 0 si no existe el registro a


borrar, es decir, la combinacin de campos clave del source no
existe en la tabla.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

97

DESARROLLO DE REPORTS

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tratamiento de tablas internas

98

Rellenando una tabla interna - I

Pas
D
USA
GB
D
GB
A

Ventas
400,000
1,000,000
500,000
7,800,000
50,000
140,000

Lnea de cabecera
1
2
3
APPEND <tabla> SORTED BY <campo>.
4
5
Pas
Ventas
6
D
400,000
Lnea de cabecera
7
1
D
7,800,000
2
USA
1,000,000
3
GB
500,000
4
A
140,000
5
GB
50,000
6
7

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

APPEND <tabla>.

99

Rellenando una tabla Interna - II

REPORT B170D084.
SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO TAB.
APPEND TAB SORTED BY SALES.
ENDSELECT.

TABNA-COUNTRY,
TABNA-ID,
TABNA-SALES,

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D083.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
ID
LIKE
SALES
LIKE
END OF TAB.
SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO TAB.
APPEND TAB.
ENDSELECT.

100

Condensando datos en una tabla Interna

Pas
D
USA
GB
D

Ventas (Tipo P)
400,000
Lnea de cabecera
1
1,000,000
2
500,000
3
8,200,000
7,800,000
4
5
REPORT B170D085.
6
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 10,
7

COUNTRY LIKE TABNA-COUNTRY,


SALES
LIKE TABNA-SALES
END OF TAB.
SELECT * FROM TABNA.
MOVE-CORRESPONDING TABNA TO TAB.
COLLECT TAB.
ENDSELECT.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

COLLECT <tabla>.

101

Ordenando una tabla Interna


REPORT
B170D086.
TABLES:
TABNA.
DATA: BEGIN OF TAB OCCURS 10,
COUNTRY
LIKE
ID
LIKE
NAME1
LIKE
SALES
LIKE
END OF TAB.

TABNA-COUNTRY,
TABNA-ID,
TABNA-NAME1,
TABNA-SALES,

* Una vez que la tabla est llena, se ordena segn el orden de las columnas
SORT TAB.
* O se ordena por unas columnas determinadas:
SORT TAB BY COUNTRY NAME1.
* O se ordena en orden Ascendente o Descendente:
SORT TAB BY COUNTRY
ASCENDING
NAME1
DESCENDING.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SORT <tabla> BY <campo1> <campo 2> . . .

102

Tratamiento de una tabla Interna

REPORT B170D087.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.

LIKE
LIKE
LIKE
LIKE

TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,

LOOP AT TAB.
WRITE: / SY-TABIX, TAB-COUNTRY, TAB-CITY, . . . .
ENDLOOP.
LOOP AT TAB WHERE COUNTRY BETWEEN A AND D.
WRITE: /TAB-COUNTRY, TAB-CITY, . . . .
ENDLOOP.

SY-TABIX

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

LOOP AT <tabla>. . . . ENDLOOP.

103

REPORT B180D06B.
TABLES: TABNA.
DATA: BEGIN OF TAB OCCURS 200.
INCLUDE STRUCTURE TABNA.
DATA: END OF TAB.
* atencin al aadido para un INCLUDE.
SELECT * FROM TABNA INTO TABLE TAB
WHERE COUNTRY = USA.
LOOP AT TAB.
WRITE: /TAB-COUNTRY,
TAB-ID,
TAB-NAME1.
END LOOP.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Lectura de tablas de la Base de datos mediante


tablas internas.

104

REPORT B170D08A.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.
. . . .

AT
ATFIRST.
FIRST.

LIKE
LIKE
LIKE
LIKE

TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,

ENDAT.
ENDAT.
AT
NEW
<campo>.
AT NEW <campo>. SUM
SUM. . . . . .
ENDAT.
ENDAT.
AT
END
OF
<campo>.
AT END OF <campo>. SUM
SUM. . . . . .
ENDAT.
ENDAT.
AT
LAST.
SUM.
AT LAST.
SUM. . . . .
ENDAT.
ENDAT.

SORT TAB BY COUNTRY CITY.


LOOP AT TAB.
AT NEW COUNTRY.
NEW-PAGE.
WRITE: TAB-COUNTRY.
ULINE. /(3). SKIP.

ENDAT.
WRITE: / TAB-CITY, TAB-NAME1, TAB-SALES.

AT END OF CITY.
ULINE. /(3). SKIP.

ENDAT.
AT END OF COUNTRY.
SUM.
WRITE: / TAB-COUNTRY, TAB-SALES UNDER TAB-SALES.

ENDAT.
ENDLOOP.

SUM
SUM . . . . . .

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Control Breaks

105

Leyendo un registro de una tabla interna.


READ TABLE <tabla> . . . .

LIKE
LIKE
LIKE
LIKE

TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,

CLEAR TAB.
MOVE D TO TAB-COUNTRY.
MOVE ABC TO TAB-NAME1.
READ TABLE TAB.
IF SY-SUBRC NE 0.
READ TABLE TAB WITH KEY D Berlin.
READ TABLE TAB WITH KEY USA BINARY SEARCH.
TAB_INDEX = SY-TABIX + 1.
READ TABLE TAB INDEX TAB_INDEX.
IF SY-SUBRC = 0.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT B170D08D.
TABLES: TABNA.
DATA:
BEGIN OF TAB OCCURS 5,
COUNTRY
CITY
NAME1
SALES
END OF TAB.
TAB_INDEX TYPE I.
. . . .

106

Modificando una tabla interna


INDEX <i>.
INDEX <i>.
INDEX <i>.

REPORT B170D08E.
TABLES: TABNA.
DATA: BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
TABNA-COUNTRY,
CITY
LIKE
TABNA-CITY,
NAME1 LIKE
TABNA-NAME1,
SALES LIKE
TABNA-SALES,
END OF TAB.
. . . .
READ TABLE TAB INDEX 1.
MOVE ABC TO TAB-NAME1.
MODIFY TAB INDEX SY-TABIX.
IF SY-SUBRC NE 0, . . . ENDIF.
INSERT TAB INDEX 1.
DELETE TAB INDEX TAB_INDEX.
IF SY-SUBRC NE 0. . . . ENDIF.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

INSERT <tabla>
MODIFY <tabla>
DELETE <tabla>

107

Modificando una tabla interna


REPORT

B170D08H.

LOOP AT <tabla>.

MODIFY

<tabla>.

DELETE

<tabla>.

ENDLOOP.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

INSERT <tabla>.

108

Borrando una tabla Interna


CLEAR <tabla>.
Inicializa la cabecera

La tabla no se modifica.

Borra todas las lneas


No libera espacio
almacenamiento
Se libera mem. paginamiento
FREE <tabla>.
Borra todas las lneas
Libera espacio almacenamiento

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REFRESH <tabla>.

109

Obtener informacin de una tabla interna

REPORT
B170D08F.
TABLES:
TABNA.
DATA: BEGIN OF TAB OCCURS 5,
COUNTRY
LIKE
CITY
LIKE
NAME1
LIKE
SALES
LIKE
END OF TAB.
LINE_COUNT TYPE I.
OCCURS_COUNT TYPE I.

TABNA-COUNTRY,
TABNA-CITY,
TABNA-NAME1,
TABNA-SALES,
Contiene num. lneas
Contiene num. ln. reserv.

DESCRIBE TABLE TAB


LINES LINE_COUNT
OCCURS OCCURS_COUNT. El valor ser 5

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DESCRIBE TABLE <tabla> LINES <lcnt> OCCURS <ocnt>.

110

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DESARROLLO DE REPORTS
Subrutinas

111

Introduccin a Subrutinas
PROGRAM RSDEM001

Calculate Tax

PROGRAM RSDEM002

Llamada a calculate_tax

Calculate Tax
Subrutina
Calculate_tax

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Llamada a calculate_tax

112

Subrutinas: Transferencia de valores


PROGRAM RSDEM000.

1
a2

a1

a3

Llamada a calculate_tax
Transferir valores de los campos a1 a2
Obtener el valor del campo a3
Parmetros Actuales
a1
1
Parmetros formales

a2

a3

Paso de parmetros
1

f1

f2

99

2
f3

subrutina calculate_tax
f1

f2

f3

f3 = f1 + f2...........

Paso por Valor

Paso por referencia

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

99

113

DESARROLLO DE REPORTS

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Diseo de listados

114

Formato de Pgina

REPORT B190D033
LINE-SIZE
LINE-COUNT
PAGE-COUNT

132
65(2)
20.

132
1
2
3 ... MAX. DE 20 PAGINAS
65

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT <nombre>
LINE-SIZE <n>.
LINE-COUNT <m(p)>
PAGE-COUNT <o>.

115

Opciones de edicin

WRITE <campo> <opcin1> <opcin2> . . .

B190D032.

WRITE: BSIK-BELNR,
BSIK-BLDAT DD/MM/YYYY,
BSIK-DMBTR CURRENCY LOCAL,
SY-WAERS,
BSIK-WRBTR CURRENCY SY-WAERS NO-ZERO.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

REPORT

116

Campos del sistema usados para la


Generacin de listados
Ttulo del Report

SY-PAGCT

Nmero Max. de pginas

SY-PAGNO

Nmero actual de pgina

SY-LINCT

Nmero de lneas

SY-LINNO

Nmero de lnea actual

SY-LINSZ

Tamao de lnea

SY-COLNO

Nmero de columna actual

SY-SROWS

Lneas en pantalla

SY-COLS

Columnas en pantalla

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SY-TITLE

117

Sentencias para el diseo de listados

NEW-LINE.

SKIP TO LINE <n>.

POSITION <n>.

NEW-PAGE.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

SKIP <n>.

118

DESARROLLO DE REPORTS

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Tratamiento de ficheros

119

Lectura de ficheros

FOR INPUT
IN BINARY MODE
IN TEXT MODE

READ DATASET <fichero> INTO <registro> LENGTH <longitud>

CLOSE DATASET <fichero>

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

OPEN DATASET <nombre del fichero>

120

Escritura de ficheros

TRANSFER <registro> TO <fichero>

CLOSE DATASET <fichero>

FOR OUTPUT
FOR APPENDING
IN BINARY MODE
IN TEXT MODE

LENGTH <longitud>

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

OPEN DATASET <nombre del fichero>

121

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

122

Listas. Simples, interactivas y ALV


Listas Simples
Los listados simples de SAP se basan en la sentencia WRITE y
provocan una salida por pantalla (estilo texto) muy sencillo e
imprimible.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

123

Listas. Simples, interactivas y ALV


Listas Simples (continuacin)
Como hemos podido ver estos listados tienen un layout bastante
sencillo aunque eficaz. En la barra de pulsadores se le pueden
agregar distintas herramientas como ordenacin, totales, etc.
aunque estas herramientas se han de programar a parte.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

124

Listas. Simples, interactivas y ALV


Listas interactivas
Basados en los listados simples (clsicos) y haciendo uso de
las sentencias WRITE y HIDE, podemos guardar informacin
asociados a las lneas del informe. Esta informacin nos
servir con distintas finalidades, como navegar a otros
informes, modificar en listado, etc.
El layout del informe no cambia y sigue siendo sencillo,
igualmente no hay que olvidar que estos listados son fciles
de programar y muy efectivos.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

125

Listas. Simples, interactivas y ALV


Listas ALV
Basados en la programacin a objetos (ABAP Objects) son los
listados de nueva generacin y ofrecen una cantidad ingente de
herramientas ya includas en la clase (cl_gui_alv_grid).

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

126

Listas. Simples, interactivas y ALV


Listas ALV (continuacin)
Con un layout amigable y ptimo los listados ALV estn
dejando obsoleto el uso de listados clsicos (ya sean
interactivos o no). La programacin de un ALV puede llegar a
ser muy sencilla, y al ser muy ampliable nos permite obtener
todo tipo de resultados.
Incluso se pueden realizar listados ALV editables, es decir,
listados donde podremos insertar valores.
Para la creacin de ALV, adems de la clase ya mencionada
cl_gui_alv_grid existe un mdulo de funcin
reuse_alv_grid_display que nos facilita el uso de ALV sin tener
que usar programacin a objetos.
Estos listados pueden ser totalmente interactivos y al estar
basados en programacin a objetos (eventos) podemos tener
un control total de la informacin y resultados obtenidos. Sin
ningn tipo de esfuerzo adicional tendremos herramientas de
ordenacin, totales/subtotales, incluso presentar la informacin
en excel, word, etc.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

127

Transacciones

Las Transacciones son mtodos abreviados de llamar a los programas o en el


caso de los ModulPool, son la nica forma de llamarlos. Adems estas se
utilizan para hacer de intermediario entre los mens y los programas.

Report Asignandola a un report el usuario podr llamar a nuestro


programa sin conocer su verdadero nombre, as mismo cuando podremos
colgar nuestros programas en mens.
De Variantes Cuando un programa ya tiene una serie de variantes
guardadas, podemos llamarlo de una forma transparente mediante esta
opcin.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Dilogo Esta es la nica forma de poder ejecutar un programa de tipo


"M" (ModulPool).

Men rea Si nuestra transaccin es un men de area, desde aqu nos va


a enlazar con l.
Parmetros Esta va a ser una transaccin para hacer una especie de
miniBacth-Input, ya que podemos indicar los campos de la dynpro que vamos128

Fundamentos de la programacin Objetos de


desarrollo
Programas

Modulpools

Dynpros
Lgica

de proceso

Status

de superficie

Funciones
Transacciones
Mens

de ambito

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Modulos

129

Transacciones - II

PBO

STATUS de
SUPERFICIE

PAI

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Lgica de proceso

130

Transacciones - III
Lgica de proceso
STATUS 001

PBO

Program
a

Titulos

Teclas de funciones

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PAI

131

Modulpool

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Un Modul Pool es un programa interactivo que contiene ms de una pantalla de interaccin o contiene elementos complejos
del tipo tablas y pestaas o incluso que su disposicin no cumple las normas de los parameters y los select-options. Adems
estos programas constan de una flow-logic diferente al tradicional.
Un Modul Pool se basa en la antigua tcnica de los pantallazos, es decir, se ejecuta un cdigo antes de mostrar la pantalla, se
muestra la pantalla y por ltimo cuando el usuario ha acabado con la pantalla (ha pulsado una tecla de funcin) el control se
devuelve otra vez al programa. Esto sigue hasta un bucle infinito, hasta que se le diga a la pantalla que no se muestre mas.
Esto procresos pre-post-pantalla se conocen con el nombre de PBO (Process Before Output) y PAI (Process After Input).
Estos dos procesos son la lgica de las pantallas. Ya se ver que cuando se cree el Flow-Logic de la pantalla nos los crea
automticamente. Para ello SAP utiliza las sentencias process, el process acaba cuando comienza otro process. Adems
dentro de estas sentencias no se puede escribir ABAP estandar, sino que tienen que utilizarse otro sublenguaje (mismo
ABAP) que slo va a ser utilizado aqui.
Como en los process slo estn pensados para controlar la lgica de las pantallas, slo utilizaremos directivas de pantallas,
tales como:
FIELD, nos permite acceder a un campo.
CHAIN, agrupador.
MODULE, llama a un grupo de funciones.
Estas son las directivas fciles, ya veremos que para poder utilizar subscreens utilizaremos directivas del tipo
CALL SUBSCREEN o tambin, para poder utilizar las tables control utilizaremos los LOOP.
En definitiva, en los Modul Pool se utiliza un pseudo-cdigo asociado a sus pantallas y que luego se convertir en ABAP
puro y su funcionamiento es mediante dos procesos, un pre-pantalla, donde tendremos la opcin de rellenar los campos de
pantalla y un post-pantalla donde seremos capaz de leer los datos que el usuario ha llenado.

132

Process

Sentencia de evento que indica el inicio del proceso PBO. Sentencia de evento que indica el inicio del proceso PAI.
Sentencia de evento que marca el inicio del proceso donde se definen las ayudas no estndar de campos. Sentencia de evento
que marca el inicio del proceso donde se definen los posibles valores para un campo.
Sintaxis:
PROCESS BEFORE OUTPUT.
El proceso PBO se suele utilizar para iniciar los campo de la pantalla, posicionar el cursor, mostrar o esconder campo o
cambiar los atributos de los campos dinmicamente.
PROCESS AFTER INPUT.
El proceso PAI se suele utilizar para validar las entradas realizadas por el usuario, procesar la posicin del cursor o procesar
las funciones activadas.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F1 estando el cursor sobre algn campo de la pantalla. Si el evento se
define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la programa en la transaccin.
PROCESS ON HELP-RESQUEST.
Este evento se procesa si el usuario pulsa la tecla F4 estando el cursor sobre algn campo de la pantalla. Si el evento se
define el campo en cuestin (sentencia FIELD), la ayuda que aparece ser la programa en la transaccin.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

PROCESS
Definicin

133

Una funcin de SAP es como una API de windows, puede considerarse como un trozo de cdigo fuente
independiente que se llama para realizar ciertas tares y obtener un resultado con ella. Un ejemplo claro puede
ser el que tenemos en pantalla, convertir una moneda que tenemos en una tabla a moneda local, de esta forma
en nuestro cdigo no hace falta volver a picar este cdigo, simplemente se hace una llamada a la funcin y
obtenemos el resultado.
Una funcin consta de cuatro partes, que en verdad son cinco.
Un Grupo de Funciones: Es aquel que nos agrupa todas las funciones de un mismo tipo, por ejemplo,
todas las conversiones de monedas, temperaturas, pesos, podrian estar agrupadas en un grupo conocido
como "UNIDADES".
Interface, no es ms que una forma rpida de crear la funcin y de definir todos los parmetros que va
a utilizar, tanto de entrada como de salida, as como las excepciones de error.
El Texto fuente como su nombre indica es la codificacin propia en ABAP.
Cuando se crea un grupo de funciones o se aade una funcin al grupo hay algo que siempre tienen en
comn, que son los datos globales, en dichos datos definimos vas variables, tablas y estructuras
comunes para todas las funciones del grupo.
Y por ltimo, el programa principal es aquel que alberga a todas las llamadas de todas las funciones.
Una de las ventajas de las funciones es que se pueden "testear" sin tener que hacer un programa, ya que SAP
nos brinda la posibilidad de ello.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Funciones

134

Caractersticas de Mdulos de Funciones


1.

Grupo de funciones ADRS

Utilizacin *

Mdulo de funcin F1

Mdulo de funcin F2

Mdulo de funcin F3

Mdulo de funcin F4

Grupo de funciones F0004


Mdulo de funcin F5

Grupo de funciones RPNA


Mdulo de funcin F7
Mdulo de funcin F9

Utilizacin F
Mdulo de funcin F6

Utilizacin P
Mdulo de funcin F8

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Mdulos
Mdulosde
defunciones
funciones

Son subrutinas con


- una interfaz definida claramente
- comprobacin de tipos por parmetros
- proceso de excepciones
2. Son localizables en una biblioteca de funciones

135

Llamada a un Mdulo de funcin


REPORT B170D10A.

CALL FUNCTION STRING_SPLIT


EXPORTING
STRING = TEXT
DELIMITER = .
IMPORTING
HEAD = HEAD
TAIL = TEXT2.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

DATA: TEXT(20), HEAD(20),


TEXT2(20).

136

Descripcin del Interfaz

REPORT RSDEM000.
....
DATA:

TEXT(20), HEAD(20).

CALL FUNCTION STRING_SPLIT


EXPORTING
STRING = TEXT
IMPORTING
HEAD = HEAD.

Defecto
valor
-

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ABAP/4 funcin STRING_SPLIT


parmetros de entrada
Campo de referencia/
estructura
DELIMITER
STRING
parmetros de salida
Campo de Referencia/
estructura
HEAD
TAIL
Tabla parmetros
Referencia estructura

137

Proceso de excepciones
ABAP/4 funcin STRING_SPLIT (Documentacin)
Texto corto
Parmetros
Significado
..........
..........
..........

FUNCTION STRING_SPLIT. . . .
IF . . .
RAISE NOT_FOUND.
ENDIF.
...
CALL FUNCTION STRING_SPLIT
EXPORTING
IMPORTINGHEAD
EXCEPTIONS
CASE SY-SUBRC.
WHEN 1 . . .
WHEN 2 . . .
WHEN 3 . . .
ENDCASE.

DELIMITER = -
STRING
= TEXT
= HEAD
TAIL
= TEXT2
NOT _FOUND
NOT_VALID = 2
OTHERS

= 1
= 3.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Excepciones
NOT_FOUND
NOT_VALID
TOO_LONG

138

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

139

Clases de mensajes
Clases de mensajes
Las clases de mensajes (transaccin SE91) son una
herramienta de SAP que nos permite el mantenimiento de
mensajes en SAP. Estos mensajes son traducibles a distintos
idiomas.
La generacin de clases de mensajes es el modo ptimo de
mantener los mensajes de error, informacin, aviso, etc que
queramos ofrecer al usuario en nuestras transacciones.
Una clase de mensajes puede contener hasta 1000 mensajes,
con lo que son un agrupador de mensajes. Estos mensajes se
distinguen entre s por su ndice (numrico de 3 cifras), y son
usados en programas mediante la sentencia message. Adems
se le puede insertar un texto explicativo a un mensaje, este
texto libre puede insertar toda la informacin que queramos
ofrecer al usuario sobre dicho mensaje.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

140

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

141

Ejemplos
Ejemplos de programas
SAP contiene todo un cmulo de ejemplos de programas, de
ergomona, de rendimiento y de control. Accesibles desde la
transaccin SE38-Entorno-Ejemplos, o bien, mediante
transacciones directas.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

142

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

143

Gestin de versiones
Gestin de versiones
A diferencia de otras herramientas (y lenguajes) de
programacin, SAP viene incorporado con toda una gestin de
versiones para todos sus objetos, ya sean, programas, tablas,
clases, mdulos de funcin, etc.
Mediante la gestin de versiones podemos comparar versiones,
volver a versiones anteriores, etc. La gestin de versiones es
accesible desde cualquiera de las transacciones de
mantenimiento de programas (SE38), diccionario (SE11), etc en
el men de utilidades-versiones.
Esta herramienta nos previene de la prdida de versiones de
programas, y nos limita el trabajo de gestion en nuestros
proyectos.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

144

Introduccin. Programacin en Abap/4


Tipos de programas y nomenclatura
Declaracin de tipos y datos
Reports. Pantallas de seleccin, eventos y otros
Modularizacin en Abap/4
Mdulos de funcin
Rutinas form
Acceso a la base de datos
Listas. Simples, interactivas y ALV
Clases de mensajes
Ejemplos
Gestin de versiones
Procesos de carga masivos. BatchInput, BAPIs, LSMW

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

ndice

145

Procesos de carga masivos. BatchInput, BAPIs,


LSMW
Procesos de carga masivos
En cualquier proyecto de SAP e incluso en mantenimientos
se hace obligatoria la carga de datos desde el sistema
antiguo. SAP ofrece para ello gran variedad de herramientas,
aunque nos centraremos en las ms usadas recientemente:
batchinput, BAPIs y la transaccin LSMW.
Tambin existen directinput, transaccin mass, y otras
herramientas, aunque el uso de stas estn cayendo en
desuso, o bien, tienen otra finalidad principal.
En este apartado de la asignatura nicamente vamos a
presentar estas herramientas sin entrar en el detalle de su
utilizacin.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

146

Procesos de carga masivos. BatchInput, BAPIs,


LSMW
BATCHINPUT
Los batchinput o juegos de datos (accesibles mediante la
transaccin SM35) constituyen una herramienta clsica pero
muy poderosa de SAP. Los batchinput son un modo de
procesar transacciones usando un ciclo previamente
establecido, es decir, al procesar un batchinput ste entrar
en transacciones, informar campos, introducir comandos
(pulsar botones, etc), y navegar entre las pantallas de dicha
transaccin, hasta realizar un proceso, es decir, actualizar
(grabar) los datos en el sistema. Todo esto lo har por s
mismo sin necesidad de ningn tipo de interaccin por parte
del usuario, incluso se pueden (mayormente se deben)
ejecutar en proceso fondo.
Estos batchinput se crean durante la ejecucin de programas
que establecen cul va a ser la transaccin, los campos
informados (valores includos) y la navegacin entre
pantallas. El juego de datos se crea en momento de ejecucin
y no es posible acceder a los datos de la transaccin destino
sin el uso de la base de datos.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

147

Procesos de carga masivos. BatchInput, BAPIs,


LSMW
BAPIs
Las BAPIs (Businnes Application Programming Interface)
forman parte de un conjunto de herramientas creadas por SAP
para interconectar SAP con sistemas externos. Por ejemplo, es
posible crear documentos contables en SAP desde una
herramienta externa usando una BAPI.
Las BAPIs son accesibles mediante la transaccin BAPI, y
aunque su finalidad principal no es la carga masiva de datos en
el sistema, estos mdulos de funcin son accesibles tambin
desde nuestros programas en ABAP. Podemos usar BAPIs para
crear documentos contables, para realizar facturas, entradas de
mercancas, etc, siendo totalmente coherentes con las base de
datos (SAP es quien informa los datos), y adems nos
devuelven todos los mensajes generados por la BAPI.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

148

La transaccin LSMW (Legacy System Migration Workbech)


es una potente herramienta SAP pensada exclusivamente
para la migracin de datos de un sistema antiguo (externo)
a SAP.
Especificando que objetos queremos migrar (por ejemplo,
clientes), y creando un mapeo de los datos orgenes con
los campos destino, la transaccin LSMW se basa en
batchinput, directinput y IDOCs para cargar estos datos en
el sistema.
Las cargas de objetos se agrupan en proyectos y
subproyectos de migracin especificando qu objetos
vamos a migrar.

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Procesos de carga masivos. BatchInput, BAPIs,


LSMW
Transaccin LSMW

149

Avda. de Bruselas 35
28108 Alcobendas,
Madrid Espaa
T +34 91 480 50 00
F +34 91 480 50 80
www.indra.es

INTRODUCCIN DE CODIGO ABAP PARA CONSULTORES

Cristina Roca Muoz


Servicios de Outsourcing
croca@indra.es

150

Potrebbero piacerti anche