Você está na página 1de 15

Batch Input (online ofline archivos .

prn)
La funcin que tiene el batch input (Ingreso de datos), es como su nombre lo indica, el ingreso de datos a las tablas Z, o standard de SAP. Como se sabe a las tablas standares de SAP, no se le puede hacer un append directamente, ya que algunos datos que se agreguen en una tabla, podrian ser necesitados en otra. Para realizar el ingreso de datos, se utilizan transacciones (por ejemplo SOAD), las cuales se encargan de realizar las modificaciones a las tablas. Para poder realizar un ingreso de datos de forma automtica, existen funciones, y transacciones que nos facilitan los cdigos (SE35). Existen dos formas de realizar un BI: Online (en el momento) y Offline (en otro momento). Paso a paso para realizar el ingreso de datos. 1. Conocer la transaccion en la que se va a hacer el ingreso de datos. a) Pedir instrucciones de como utilizarla si no se conoce. b) Completar los datos necesarios. 2. Crear un nuevo recording. El recording es una simulacion de la utilizacion de la transaccion deseada, que al final muestra en una tabla los code de todos los botones presionados y/o campos completados en la transaccion. a) Ir a la transaccion SM35 b) Una vez ahi, crear el recording presionando el botn recording c) Presionar el botn d) Nos aparecer esta pantalla:

Nombre del recording

Codigo de transaccion (Zejemplo)

Presionar aceptar Nos aparecer la pantalla de la transaccion elegida. Seguimos los pasos de la transaccion, y al finalizar nos aparecer la tabla con los codes correspondientes.

Por ltimo guardamos los datos.

Con estos datos, podemos comenzar a programar el BI.

Para ello vamos a la transaccion SE38 y creamos un reporte ZbatchInput. Antes necesitamos saber si el BI va a ser OnliNe o Offline. La nica diferencia (en modo programacin) que tienen estos modos son las funciones que se colocan al principio y al final del reporte. Primero se declara la tabla donde se almacenaran los datos del programa tales como nombre etc.

*Estructura con los datos del programa. DATA: BEGIN OF BDC_TAB OCCURS 5. INCLUDE STRUCTURE BDCDATA. DATA: END OF BDC_TAB.

Se declara la estructura que almacenar los errores producidos en el programa.


*Estructura con mensajes de error y otros DATA: ITAB TYPE TABLE OF BDCMSGCOLL.

Se declara la tabla interna con los datos a ingresar en el BI. Esta tabla debe tener una estructura igual a los campos a ingresar en el BI.
*Tabla con los datos a pasar por el BI. DATA: BEGIN OF TABLA OCCURS 5, Nombre(20), " CLiente Fecha(10). DATA:END OF TABLA.

Como nuestro ejemplo va a ser online, no se coloca ninguna instruccion al comienzo. Tendremos que llenar nuestra tabla con datos. Una vez terminado con esto se llama al perform que es el encargado de hacer el Batch Input. PERFORM generate_bdc.
*Genera la estructura con los datos del programa PERFORM generate_bdc.

Implementacin de performs En este perform lo que hacemos es copiar lo que obtuvimos en el recording.
*&---------------------------------------------------------------------* *& Form GENERATE_BDC *&---------------------------------------------------------------------* Form GENERATE_BDC. Loop at TABLA. REFRESH BDC_TAB. PERFORM FILL_BDC_TAB USING: 'X' 'SAPMZEJEMPLO' '0100',OBTENIDO EN EL RECORDiNG ' ' 'BDC_OKCODE' '=ALCL', 'X' 'SAPMZEJEMPLO' '0200', ' ' 'BDC_OKCODE' '=APPEND', ' ' 'ZCLIENTES-KUNNR' '1111111', "TABLA-KUNNR, ' ' 'ZCLIENTES-RAZON' 'fdadasd', "TABLA-RAZON, ' ' 'ZCLIENTES-OBSERVACIONES' 'sdASAsA'. "TABLA-OBS. *Online CALL TRANSACTION 'ZEJEMPLO' USING bdc_tab. ENDLOOP. ENDFORM.

El siguiente perform es el encargado de ejecutar el Batch Input.


*&---------------------------------------------------------------------* *& Form FILL_BDC_TAB *&---------------------------------------------------------------------* FORM FILL_BDC_TAB USING DYNBEGIN NAME VALUE. IF DYNBEGIN = 'X'. CLEAR BDC_TAB. MOVE: NAME TO BDC_TAB-PROGRAM, VALUE TO BDC_TAB-DYNPRO, 'X' TO BDC_TAB-DYNBEGIN. APPEND BDC_TAB. ELSE. CLEAR BDC_TAB. MOVE: NAME TO BDC_TAB-FNAM, VALUE TO BDC_TAB-FVAL. APPEND BDC_TAB. ENDIF. ENDFORM. " FILL_BDC_TAB

Una vez activado el reporte, lo ejecutamos, y aparecer la siguiente pantalla, a la que solo debemos hacer click en aceptar.

OK-Code

Aceptar

Repetimos ese paso en todas las pantallas que se nos presenten hasta finalizar el BI. Como dijimos antes se puede hacer un BI Offline, con solo ingresar unas funciones ms. Despues de declarar todas las tablas, y antes de generar la estructura se ingresa este llamado a funcin:
*Para BI Offline CALL FUNCTION 'BDC_OPEN_GROUP' EXPORTING client = sy-mandt "Mandante group = 'Alta nombres' "Nombre a aparecer en la lista user = sy-uname "Nombre de usuario keep = 'X'.

Luego de generar la estructura se ingresa el cierre del BI.


* Cierre del Batch Input CALL FUNCTION 'BDC_CLOSE_GROUP'.

En el form Generate_BDC se ingresa el llamado a funcin BDC_INSERT

*Offline CALL FUNCTION 'BDC_INSERT' EXPORTING TCODE = 'ZEJEMPLO' TABLES DYNPROTAB = BDC_TAB.

Al activar y ejecutar este reporte, no aparecer niguna pantalla, ya que la sesion de BI se almacen en una especie de cola, en la transaccion SM35.

Para ejecutarla solo hay que seleccionarla, y presionar el botn Process. Aparecer esta pantalla, en la que tendremos que presionar nuevamente el botn process.

y se guimos los mismos pasos de antes. Presionamos aceptar hasta que se complete el ingreso de datos. Una vez finalizado, y si no hay ningn error aparecer esta pantalla.

Finalizar

Presionamos el botn Exit batch input para poder finalizar. Se preguntarn cual es la utilidad ... Obviamente hasta ahora tenemos que cargar la tabla con los datos de forma manual. Lo que

SAP nos ofrece es por ejemplo cargar la tabla con informacin almacenada en ur archivo de excel. El mismo tiene que tener extensin .prn Formatted Text (Space o Tab delimeted)

El archivo estar compuesto por los campos necesarios. El largo de estos tendr que coincidir con el definido en el diccionario de datos (cantidad de caracteres). No olvidarse de cargar tambien la columnos MANDT. Por ejemplo para la tabla Zlibros el archivo podra contener lo siguiente...

Para llenar una tabla a partir de un archivo .prn se usa el siguiente perform...
*&---------------------------------------------------------------------* *& Form abre_archivo

*&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * --> p1 text * <-- p2 text *----------------------------------------------------------------------* FORM abre_archivo. data: inte type i. call function 'UPLOAD' exporting CODEPAGE = ' ' filename = 'c:\zlistalibros.prn' IMPORTING FILELENGTH = inte tables data_tab = tabla exceptions conversion_error =1 file_open_error =2 file_read_error =3 invalid_table_width =4 invalid_type =5 no_batch =6 unknown_error =7 gui_refuse_filetransfer = 8 others = 9. endform.

Les ofrecemos un ejemplo de un Batch Input que se podr utilizar como plantilla bsica el siguiente archivo

SAP batchinput builder. Sirve para realizar un Batchinput automticamente, es decir, sin codificar nada. Lo primero que haremos ser entrar a la transaccin SM35, records.

Aqu nos dirigimos a

. Nos llevara a la siguiente pantalla.

y presionamos el botn Le ponemos un nombre a nuestra grabacin y donde dice TRANSACTION CODE Agregamos nuestra transaccin asociada al batch input.

y presionamos Start Recording.

Aparecer nuestra transaccin, que, en este ejemplo lo que hace es levantar un archivo excel de la ruta especificada ( c:\entrada.prn), y lo devuelve en un archivo de texto (c:\salida.txt) a la vez que agrega los datos del archivo a una tabla. Debemos seguir los pasos de nuestra transaccin y al finalizarla, veremos algo similar a la pantalla siguiente.

guardamos y presionamos Seleccionamos nuestra grabacin y presionamos

En la pantalla emergente le damos un nombre a nuestro programa y tildamos la casilla Transfer from recording..

y por ltimo presionamos

,y lo grabamos en Local object.

y nos crear el reporte automticamente.

ejecutamos y aparecer la siguiente pantalla.

elegimos Call transaction y en donde dice Run mode, si ponemos A, mostrar todas las poantallas, y si ponemos N , lo har en background.