Sie sind auf Seite 1von 14

Batch inputs 1-14

Leccin 1

Tratamiento de sesiones Batch input

El batch input nace de la necesidad de introducir datos en una transaccin dentro


del repositorio de SAP, emulando acciones que un usuario debera hacer en cada
una de las pantallas que se le presentan, por lo que, en resumen es una
herramienta muy til que sirve para cargar en una transaccin cualquiera, datos de
forma masiva asegurndose, eso si, de que los chequeos y controles que la
transaccin hace por defecto se cumplan consiguiendo la integridad de los datos.

Por ejemplo, tenemos una transaccin (la xk01) en la cual se tienen que rellenar
una gran cantidad de datos y en muchas pantallas diferentes.

Rellenar cada campo de forma manual sera demasiado tedioso y desesperante. Un


batch input rellena todos esos datos en todas las pantallas automticamente.

La tcnica se basa en la repeticin de una accin mediante una grabacin para que
el programa conozca lo que tendr que hacer tantas veces como campos tenga que
rellenar. O lo que es lo mismo, se rellenan estos campos UNA SOLA VEZ mientras
el programa va grabando y memorizando los pasos del proceso.

Batch inputs 2-14


Digamos que se le va indicando lo que va a tener que hacer l automticamente
repetidamente.

Para ello, se recomienda generar un archivo externo que contenga los datos a
cargar, por ejemplo un archivo Excel, de tal forma que, el programa cargue esos
datos en una tabla interna y cuando el proceso del BATCH INPUT as lo requiera se
vayan cogiendo de sta.

El rea del Batch input est disponible desde cualquier punto de SAP ya que est en
el men System (accesible desde cualquier transaccin).
SystemServicesBatch Input.

O directamente con sus transacciones:


Sessions SM35

Batch inputs 3-14


Log SM35P

Recorder SHDB

Dada la austeridad que tan bien caracterizan a estas transacciones, lo mejor es


generar un ejemplo en que se manejen los principales comandos de las mismas
para as entenderlas y poder ponerlas en prctica. Para ello, tomaremos como
ejemplo la transaccin xk01.

Lo primero que se debe hacer es familiarizarse o conocer bien que datos se quieren
usar y los pasos a seguir siguiendo siempre un orden lgico as como realizar
varios ejemplos con los datos de los que disponemos y grabar siempre la sesin
con el mximo nmero de campos a rellenar.

Batch inputs 4-14


Una vez ya familiarizados con la transaccin, procedemos a iniciar la transaccin
SM35 (Sessions)

En la que se pueden ver todos los batch inputs que se han procesado hasta este
mismo momento.
Para comenzar con la grabacin se presiona Grabacin y Grabacin nueva.

Batch inputs 5-14


En el campo grabacin se le ha de dar un nombre identificativo ya que es el que
aparecer en la lista general. En Cd.transaccin se indica la transaccin objeto de
la grabacin, siguiendo con el ejemplo xk01, y se presiona INTRO.
A partir de aqu se inicia la transaccin y el programa estar atento en todo
momento a cada interaccin que se tiene con la transaccin y todo queda grabado
y registrado.

Tal y como se ha hecho en las pruebas, se debe rellenar los datos de las pantallas
con al mayor nmero de campos a rellenar as como pantallas, para emular el
ejemplo ms completo posible.

Batch inputs 6-14


Es primordial rellenar siempre todos los campos obligatorios o se generara un error
no controlado. Respecto al resto de los datos, se le puede introducir cualquier
cosa, ya que lo que interesa es la accin de rellenar un campo u otro para que el
programa lo conozca, no los datos en s.
Una vez rellenados los campos queda un cdigo similar al que se muestra:

Si todo es correcto slo falta pulsar el botn de grabar (icono con forma de
disquete). Automticamente salta una pantalla donde se muestra todas las

Batch inputs 7-14


interacciones que se ha efectuado con la transaccin desde que se empez la
grabacin (en este caso, un total de 12 lneas)
La primera lnea indica que transaccin se ha elegido para la grabacin.
La segunda indica el cdigo de la primera pantalla que ha aparecido al darle a
iniciar grabacin
De la tercera a la 5 indica todas las acciones realizadas en la pantalla, en este caso
la posicin del cursor, el cdigo del return y el valor que ha tomado el campo
RF02K-KTOKK.
Lo mismo ocurre con las lneas que estn entre la 6 y la 12.
Una vez revisado que los datos que aparece son correctos y conforme a lo que sera
la prueba ms general se presiona el botn de grabar para que guarde el cdigo
generado que servir de muestra.
Se genera (en caso de no tenerlo ya) un archivo externo que contenga los datos
que se van a usar revisando cuidadosamente de que por lo menos contenga los
campo obligatorios. Hay que recordar que, el estndar de SAP recomienda que el
archivo externo, en caso de ser un Excel est guardado delimitado por
tabulaciones.

Desde la pantalla de seleccin de las grabaciones, se selecciona la que se ha creado


para tal fin.

Batch inputs 8-14


El siguiente paso es generar el programa para lo cual se presiona en el botn
programa y se introduce el nombre el nombre del programa que se desee, por
ejemplo ZEJEMPLO1, recordando as, como ya bien sabemos que los nombres de
programas propios han de empezar por Z o por Y.

Batch inputs 9-14


Una vez en este punto, ya se tiene un programa totalmente ejecutable que tiene la
siguiente forma.

Hay que recordar siempre que lo que se nos ofrece es una solucin especfica y en
bruto, quedando a cargo del programador cosas como utilizar el pretty printer para
resaltar las palabras claves y por supuesto modificar los valores puestos por defecto
por los valores propios del fichero masivo que se ha creado para tal fin.

Para ello, se genera, por ejemplo, una tabla interna con la siguiente estructura (tal
y como se ha declarado en la Excel.

TYPE: BEGIN OF ty_tabla,


Nombre(30) TYPE c,
Conbus(2) TYPE c,
Pais(2) TYPE c,
Idioma(2) TYPE c,
END OF ty_tabla.

DATA: lt_tabla TYPE TABLE OF ty_tabla,


lwa_tabla LIKE LINE OF lt_tabla.

Batch inputs 10-14


Tambin hay que declarar dos parmetros, uno para mostrar el nombre del usuario
con el que se ha idenficidado en SAP y el siguiente para la ruta del archivo con los
datos.

PARAMETERS: p_user LIKE apqi-userid OBLIGATORY DEFAULT sy-uname, "user


p_fich LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:\datos.txt'.

Dentro del START OF SELECTION se llama a una funcin de upload para cargar
los datosllamaremos a la funcin UPLOAD que ser la encargada de pasar los
datos de nuestro archivo a la tabla interna lt_tabla que se ha declarado:
START-OF-SELECTION.
CALL FUNCTION 'UPLOAD'
EXPORTING filename = p_fich
filetype = 'DAT'
TABLES data_tab = lt_tabla
EXCEPTIONS conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4.
Con los datos ya cargados en la tabla interna lt_tabla hay que generar un loop
para recorrer los datos.
PERFORM open_group.
Hay que recordar que la lnea 1 del Excel es la cabecera que se le ha puesto.
LOOP AT lt_tabla INTO lwa_tabla FROM 2.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
El valor del campo 'RF02K-KTOKK en este caso se toma como algo fijo, y podra
sustituirse por una constante.
PERFORM bdc_field USING 'RF02K-KTOKK' 'zzgz'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LFA1-SPRAS'.
PERFORM bdc_field USING 'BDC_OKCODE' '=UPDA'.
PERFORM bdc_field USING 'LFA1-NAME1' lwa_tabla-nombre.
PERFORM bdc_field USING 'LFA1-SORTL' lwa_tabla-conbus.

Batch inputs 11-14


PERFORM bdc_field USING 'LFA1-LAND1' lwa_tabla-pais.
PERFORM bdc_field USING 'LFA1-SPRAS' lwa_tabla-idioma.
PERFORM bdc_transaction USING 'XK01'.
ENDLOOP.
PERFORM close_group.
Quedando el cdigo final de la siguiente forma:
REPORT zejemplo1 NO STANDARD PAGE HEADING LINE-SIZE 255.
INCLUDE bdcrecx1.
TYPE: BEGIN OF ty_tabla,
Nombre(30) TYPE c,
Conbus(2) TYPE c,
Pais(2) TYPE c,
Idioma(2) TYPE c,
END OF ty_tabla.
DATA: lt_tabla TYPE TABLE OF ty_tabla,
lwa_tabla LIKE LINE OF lt_tabla.
PARAMETERS:p_user LIKE apqi-userid OBLIGATORY DEFAULT sy-uname, "user
p_fich LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:\datos.txt'.
START-OF-SELECTION.
CALL FUNCTION 'UPLOAD'
EXPORTING filename = p_fich
filetype = 'DAT'
TABLES data_tab = lt_tabla
EXCEPTIONS conversion_error = 1
invalid_table_width = 2
invalid_type = 3
no_batch = 4.
PERFORM open_group.
LOOP AT lt_tabla INTO lwa_tabla FROM 2.
PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF02K-KTOKK'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RF02K-KTOKK' 'zzgz'.
PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR' 'LFA1-SPRAS'.

Batch inputs 12-14


PERFORM bdc_field USING 'BDC_OKCODE' '=UPDA'.
PERFORM bdc_field USING 'LFA1-NAME1' lwa_tabla-nombre.
PERFORM bdc_field USING 'LFA1-SORTL' lwa_tabla-conbus.
PERFORM bdc_field USING 'LFA1-LAND1' lwa_tabla-pais.
PERFORM bdc_field USING 'LFA1-SPRAS' lwa_tabla-idioma.
PERFORM bdc_transaction USING 'XK01'.
ENDLOOP.
PERFORM close_group.

Si se activa y ejecuta el programa, la pantalla principal muestra el siguiente


aspecto:

En nombre del juego de se indica un nombre cualquiera, y se marca la opcin


Conservar juego de dat para que posteriormente, si ha habido cualquier error se
pueda recuperar.

Si todo ha funcionado correctamente debera aparecer una pantalla como la


siguiente:

Batch inputs 13-14


En este punto slo queda ejecutar el batch input desde la transaccin SM35 y
ejecutar el batch input.
Dentro de la transaccin sm35 se puede apreciar el proceso listo para ejecutarse.

En la fase de test es conveniente ejecutarlo en modo visible para ver paso a paso
cmo se rellenan las pantallas con los datos, y cuando se est seguro de que todo
est correcto se recomienda ejecutarlo en modo visualizar slo errores o invisible
dependiendo de lo delicado que sea el proceso.
Si no ha habido ningn error se puede ver que el proceso ha pasado a la pestaa
de Procesado, y la carga de todos los datos se ha completado.
Para ver el resultado se puede ejecutar la transaccin xk03 comprobar que se han
cargado los datos correctamente.

Quedando con esta comprobacin por completado el proceso de batch input.

Batch inputs 14-14

Das könnte Ihnen auch gefallen