Está en la página 1de 5

Documento sin ttulo

Page 1 of 5

Internet Explorer 9
Tus Sitios Favoritos Anclados. Accede instantneamente, Prubalo! Microsoft.com
Anuncios Google

BATCH-INPUTS

8.1. INTRODUCCIN
8.2. FASE DE GENERACIN
8.3. OPERACIONES
8.4. FASE DE PROCESAMIENTO

8.1. INTRODUCCIN:
Un batch-input es un mtodo seguro, fiable y rpido de transferir grandes
cantidades de datos a un sistema SAP, para hacer muchas altas, modificaciones o
borrados. Se simula un proceso on-line (transaccin donde interacciona el usuario),
para someter a los datos a todos los chequeos y validaciones que sufriran si se
metieran manualmente, para salvaguardar la integridad de los mismos (cosa que no
ocurrira con un MODIFY directo a una tabla del D.D., eso es lo importante de los batch
-inputs). Pero en cambio no requieren interaccin.
Hay 2 mtodos de batch-input: clsico y call transaction. En el mtodo clsico
se genera una sesin batch-input. Se tiene un fichero con los datos, y un programa
Abap/4 de conversin que crea la sesin (datos, pantallas, transacciones, comandos, ..
es un juego de datos), que simulan la existencia de un usuario que introducira los
datos), que se almacena y se puede procesar. Este mtodo es asncrono: se procesan
los datos ahora pero se actualizan ms tarde. Permite mltiples transacciones. Se
genera un log para cada sesin, pero no se pueden generar en paralelo desde el mismo
programa (slo puede abrirse un juego de datos cuando se cierra el anterior).
En el mtodo call transaction los datos se crean on-line al ejecutar el programa de
conversin, en lugar de crear una sesin. Es mucho ms rpido, pero poco til para
gran cantidad de datos (se perderan datos si hay errores, pues no se guardan en la
sesin batch-input). Se usa para dar de alta rpidamente pocos datos. Es un mtodo
sncrono, vlido para una transaccin, rpido, pero no se genera log, ni pueden
tratarse errores a posteriori.
El proceso tiene 2 fases:
Fase de Generacin: Un programa abap/4 genera un lote batch-input con los
datos a cargar o modificar (llamado juego de datos). La base de datos todava
no se modifica. Subtareas de esta fase: Anlisis de los datos a transferir (saber
qu datos hay que cargar), generacin de estructuras en D.D. para los nuevos
datos (opcional), creacin de un fichero de texto plano con los datos, desarrollo

http://www.abap.es/centro_Manual_08_Batch_Input.htm

26/05/2011

Documento sin ttulo

Page 2 of 5

de un programa batch-input para la lectura, conversin y procesado de los datos.


En las primeras tareas colabora el cliente.
Fase de Procesamiento:El lote de batch-input se procesa, es decir, se ejecuta
el batch-input (el juego de datos), hacindose efectivas las modificaciones en la
base de datos. Subtareas: Procesado de los datos con el programa batch-input
anterior, lanzamiento del juego de datos (esta tarea no existe con el mtodo call
transaction), anlisis de los resultados y posibles errores (mucho ms sencillo
con el mtodo batch-input clsico).

8.2. FASE DE GENERACIN:


Es necesario codificar un programa Abap/4 de carga para que use, de forma
automtica y con los datos que se deseen, la transaccin SAP que se necesita utilizar
en cada caso para la carga o modificacin masiva de los datos. Pero antes hay que
asegurarse de que no exista ya en SAP un programa estndar (IBIP) que haga lo
mismo, para as usar ste directamente. Se le llama desde la transaccin IBIP. Puede
generarse un juego de datos real, o un testeo con datos de prueba. Necesita como
entrada un fichero de texto con los datos a cargar, con un formato especial dado. Debe
indicarse por qu IBIPs se va pasardo, en orden, y qu transacciones.
La informacin que se requiere conocer para escribir este programa es: identificacin
de la transaccin a usar (para conocer su cdigo, pulsar en cualquier dynpro de la
misma en Sistema Status Datos repository Transaccin), nombre del(os)
programa(s) que ejecuta(n) la transaccin, dynpros (pantallas) que se atraviesan (para
conocer su cdigo, pulsar en cada una de ellas en Sistema Status. Tambin veremos
el nombre del module pool), ylos campos que se utilizan (para conocer sus nombres
tcnicos, situarse sobre ellos y pulsar F1 Datos tcnicos, y leer el nombre de campo
para batch-input).
Para obtener toda esta informacin hay que seguir todos los pasos que hara el
usuario. Hacer una prueba e ir anotando los nombres de los comandos, dynpros, que
se usan. Esto para cada pantalla a procesar. Lo mismo si aparece una ventana de
dilogo (pop-up). El tipo y la longitud de un campo se consigue mirando en la tabla
correspondiente, a la que se llega haciendo doble clic sobre dicho campo. Los cdigos
para pasar de una pantalla a otra pueden ser un ENTER, un botn, Se ven pulsando
F1 Datos tcnicos Cdigo de funcin. Otra forma de conseguir la informacin es
a travs del Screen Painter, viendo la lista de campos de cada dynpro.
En el programa hay que declarar (para ambos mtodos de batch-input) una tabla
interna con una estructura especial para ir guardando en ella toda la informacin
anterior, que estructura los datos a transferir. Es como un registro de todas las
pantallas y campos por los que va a ir avanzando la simulacin de la transaccin. Debe
tener la misma estructura de la estructura SAP delDiccionario de Datos llamada
BDCDATA:
DATA BEGIN OF tabla OCCURS 0.
INCLUDE STRUCTURE BDCDATA.
DATA END OF tabla.

Los campos que componen esta tabla / estructura son 5: PROGRAM (8 caracteres.
Nombre del module pool de la transaccin), DYNPRO (4 caracteres. Su nmero),
DYNBEGIN(1 carcter. Una 'X' indica nueva pantalla), FNAM(35 caracteres. Nombre
del campo de la pantalla), FVAL (80 caracteres. Valor para dicho campo de la pantalla).
Hay que guardar una entrada por cada dynpro, rellenando PROGRAM, DYNPRO y
DYNBEGIN, y luego usar APPEND. Y por cada campo de pantalla que se use en la
transaccin hay que guardar otra entrada, rellenando los campos FNAM y FVAL, y
luego usar APPEND o COLLECT.
Relleno de esta tabla: Para indicar nueva pantalla (o la primera), guardar el nombre
del programa (en PROGRAM), n dynpro (en DYNPRO) y X en DYNBEGIN (los otros
2 campos en blanco) Y para cada campo de esa pantalla rellenar su nombre tcnico (en
FNAM) y su valor (en FVAL), que es uno de los datos a transferir al sistema. En la
ltima entrada de por cada pantalla (salvo la ltima) se guarda el comando

http://www.abap.es/centro_Manual_08_Batch_Input.htm

26/05/2011

Documento sin ttulo

Page 3 of 5

BDC_OKCODE en FNAM, y en FVAL el cdigo para pasar a la pantalla siguiente, como


EXIT, /2 (para F2), ...
Tras cada APPEND tabla hay que hacer un CLEAR tabla, para no dejar valores basura
para la siguiente entrada. Caso especial: campos repetidos varias veces en una
dynpro (tienen el mismo nombre). Para especificar qu campo concreto se debe
rellenar, indicar entre parntesis el n de lnea donde est. Ejemplo: MOVE sbookconnid(3) TO tabla-fnam. Conviente crear una subrutina para rellenar la tabla.
Llamada tpica:
PERFORM llenardynpro USING 'SAPM38M' '0100' 'X'.

Ejemplo de tabla.
PROGRAM

DYNPRO

DYNBEGIN

SAPM38M

0100

SAPM38M

0200

FNAM

FVAL

RS38M-program

ZBCA07F1

BDC_OKCODE

'/2'

...

...

...

...

8.3. OPERACIONES:
Abrir sesin:Para abrir o crear una sesin de batch-input (es decir, crear un
juego de datos nuevo, vaco) se usa el mdulo de funcin BDC_OPEN_GROUP.
En el include BDCRECXX hay subrutinas como la OPEN_GROUP ya preparadas
que llaman a estas funciones. En el programa no se puede abrir otra sesin si
hay alguna ya abierta. Hay que usarlo antes de insertar ningn dato.

CALL FUNCTION 'BDC_OPEN_GROUP'


* EXPORTING
*
CLIENT
=
"mandante sobre el que se ejecutar el batch-input.
*
GROUP
=
"nombre de sesin, con el que se identifica el juego de dat
*
HOLDDATE
=
"no se ejecutar la sesin batch-input hasta la fecha indic
*
KEEP
=
"si es 'X', la sesin ser retenida, (podr ser borrada por
*
USER
=
"usuario propietario de la sesin
* EXCEPTIONS
*
CLIENT_INVALID
= 1
"mandante incorrecto
*
DESTINATION_INVALID = 2
*
GROUP_INVALID
= 3
*
HOLDDATE_INVALID
= 4
*
INTERNAL_ERROR
= 5
*
QUEUE_ERROR
= 6
"error de bloqueo
*
RUNNING
= 7
.

http://www.abap.es/centro_Manual_08_Batch_Input.htm

26/05/2011

Documento sin ttulo

Page 4 of 5

Insertar datos:El mdulo de funcin BDC_INSERT guarda en el juego de datos


el contenido de la tabla interna de estructura de BDCDATA, una vez rellena. Hay
que realizar esta operacin una vez por cada transaccin a almacenar.

*
*

*
*
*
*
*

CALL FUNCTION 'BDC_INSERT'


EXPORTING
TCODE
TABLES
dynprotab
EXCEPTIONS
INTERNAL_ERROR
NOT_OPEN
QUEUE_ERROR
TCODE_INVALID
.

"cdigo de la transaccin a ejecutar pop_local

"tabla interna con estructura BDCDATA

=
=
=
=

1
2
3
4

Cerrar sesin:Una vez completado el lote de batch-input, se cierra la sesin con


el mdulo de funcin BDC_CLOSE_GROUP, una vez transferidos todos los datos
al juego de datos.

*
*
*
*

CALL FUNCTION 'BDC_CLOSE_GROUP'


EXCEPTIONS
NOT_OPEN
= 1
QUEUE_ERROR
= 2
OTHERS
= 3
.

CALL TRANSACTION cdigo USING bdc_tabla [ MODEA | E | N ] [ UPDATES


| A | L ][ MESSAGESINTO tabla_mensajes ].
Para el mtodo call transaction se usa esta sentencia Abap/4.
Parmetros:
MODE: Indica el tipo de ejecucin: A (en visible. Se ven todas las pantallas por
las que se pasa. til para testeo), E (visualizacin slo errores), N (invisible).
UPDATE: Tipo de actualizacin: A (asncrono), S (sncrono: no continua el
proceso hasta que no se actualiza la base de datos), L (local).
MESSAGES INTO: Consigue que todos los mensajes que apareceran al hacer la
transaccin manualmente (pero que no se ven en batch-input) se guarden en la
tabla indicada, para luego mostrarlos o procesarlos (para poder conocer qu
errores se han producido). Necesita una tabla interna con la estructura de
BDCMSGCDL. Campos de esa tabla: MSGTYP (tipo del mensaje), MSGID (clase
del mensaje), MSGVi (parmetro & nmero i), MSGNR (nmero de mensaje).
8.4. FASE DE PROCESAMIENTO:
La transaccin que procesa los lotes de batch-input es la SM35, o bien
por men: Sistema Servicios Batch-input Tratar. Con esta
transaccin pueden consultarse, eliminarse y procesarse (haciendo doble
clic en ella) todas las sesiones batch-input (los juegos de datos, que
pueden ser: a procesar, errneos, procesados, en tratamiento y en
background). Otra manera de lanzar sesiones batch-input es ejecutar el
report RSBDCSUB. Con l es posible procesar un batch-input justo
despus de ser generado, llamando a este report con los parmetros
adecuados desde el mismo programa abap/4 que ha generado el lote.

http://www.abap.es/centro_Manual_08_Batch_Input.htm

26/05/2011

Documento sin ttulo

Page 5 of 5

Antes de procesar una sesin de batch-input puede comprobarse si los


datos de entrada y la secuencia de pantallas programada es la esperada.
Para ello, desde la transaccin SM35 elegir la sesin a analizar y Pasar a
Anlisis Juego de datos. Con doble clic en cada una de las dynpros
pueden visualizarse stas.
Log: Cuando el sistema ejecuta un batch-input, se va generando un log
con el resultado de cada transaccin individual. Se guarda la hora de inicio
de la sesin, la hora de inicio de cada transaccin, los mensajes que se
generan (los mismos que si se hiciera la transaccin on-line). Al final se
generan unas estadsticas: nmero de transacciones que componen el
lote, n de ellas procesadas con xito y n de ellas errneas.
Cancelarejecucin: Por el men Sistema Servicios Batch-Input
Cancelar se puede finalizar la ejecucin de un batch-input (no hay otra
forma). Se continuara sta con Siguiente transaccin.
Cada de sesin: Si se cae el sistema durante la ejecucin de un batchinput, al rearrancarlo aparecer ste como procesando, pero no est
haciendo nada, aunque tampoco hemos perdido los datos. Hay que liberar
la sesin, yendo a la transaccin SM35, indicar la sesin en cuestin y
elegir Juego de datos Liberar. Entonces ya pueden ejecutarse las
transacciones que resten.
Tipos de procesamiento de un batch-input:
Visible: Se procesa cada transaccin viendo todas las dynpros por
las que se pasa. Hay que pulsar ENTER para pasar de una a otra.
Se pueden modificar los valores que automticamente se van
introduciendo en los campos. Se puede saltar alguna transaccin
que no se desee procesar (poniendo /N en la barra de comandos),
o bien para retrasar su ejecucin.
Invisible: El proceso se hace de forma transparente al usuario, en
background, sin mostrar ninguna pantalla. Se debe esperar a que
acabe la ejecucin, o bien cancelar sta. Para ver el resultado se
debe consultar el log (que tambin se puede ver mientras se est
procesando el juego de datos).
Visualizacin slo errores: El batch-input se ejecuta en modo
invisible salvo cuando se produzca un error: entonces se detiene el
proceso en la dynpro que contiene el campo errneo, para as poder
corregirlo manualmente, o cancelar esa transaccin individual. Tras
esto, continua el proceso en modo invisible (hasta el siguiente error,
o hasta acabar).

http://www.abap.es/centro_Manual_08_Batch_Input.htm

26/05/2011

También podría gustarte