jueves, 29 de noviembre de 2012

Realizar un Batch Input Manual

Hoy les hablaré acerca de los Batch Input, primeramente abordaremos su definición, usos, ventajas y desventajas.

Un Batch Input es una forma segura y confiable de transferir cantidades de datos en masa al sistema SAP, tanto para dar alta como modificar y borrar datos, mediante la simulación Online de algún proceso o transacción propia del sistema.

El uso principal para esto, es evitar realizar de forma manual algún proceso de grandes cantidades de datos.

Ventajas:
  • Forma segura (Contiene las validaciones necesarias en caso de ser una transacción estandar del sistema).
  • Grandes cantidades de datos.
  • Pueden integrarse varios procesos en un solo programa ABAP.
Desventajas:
  • Al ser Online puede ser un proceso lento, comparando con (Direct Inputs, LSMW)
  • Sí se aplica un parche al módulo, puede causar problemas por algún cambio de la transacción usada.
  • Sí existe un cambio de configuración en transacción usada, puede afectar al batch input.
En otras palabras y dando una definición sencilla, el batch input toma una simulación de alguna transacción dentro del sistema y tiene la capacidad de procesarla cuantas veces quiera uno.

Ahora les explicaré de forma breve el proceso de creación de un Batch Input.

Paso 1. Grabación de Transacción (Es preferente, que esta grabación sea hecha por un consultor o una persona que conozca de forma integral la transacción a usar).
Imagen 1, SHDB Grabación Nueva.
  • Entrar a SHDB.
  • Elegir Grabación Nueva.
  • Llenar campos necesarios (Imagen 1).
  • En este momento la transacción comenzará a ejecutarse y tendran que llenar todo lo necesario en ella.










Paso 2. Llenar el catalogo para ejecución de transacción desde nuestro programa ABAP, esto se realiza llenando la estructura: BDCDATA, esta estructura tiene los campos:
      • PROGRAM BCD Modulpool
      • DYNPRO BDC Número de Dynpro
      • DYNBEGIN BCD Inicial un Dynpro
      • FNAM Nombre campo
      • FVAL BDC Valor del campo
Para poder usarlos en nuestro programa deben ser declarados, yo recomiendo usar tablas sin cabecera, y aparte usar una estructura, como lo realizo aquí:

dataWA_BDCDATA type bdcdata,         "Declaro la linea o estructura del tipo tabla BDCDATA       TI_BDCDATA type table of bdcdata.  "Declaro la tabla tipo BDCDATA

Para llenar esta estructura yo utilizo el siguiente código:
form batch_encabezado using p_program p_dynpro p_dynbegin. "Llenar encabezado   clear wa_bdcdata.   wa_bdcdata-program p_program.                     "entrego el nombre del programa a usar   wa_bdcdata-dynpro p_dynpro.                        " entrego el numero de dynpro usado   wa_bdcdata-dynbegin p_dynbegin.                " entrego el valor 'X' para indicar que es una nueva pantalla   insert wa_bdcdata into TABLE ti_bdcdata.endform.                    " BATCH_ENCABEZADO 
form batch_body using p_fnam p_fval .      "Llenar Cuerpo   clear wa_bdcdata.   wa_bdcdata-fnam p_fnam.                                 "entrego el nombre del campo sobre el dynpro   wa_bdcdata-fval p_fval.                                     "entrego el valor del campo a ingresarse   insert wa_bdcdata into TABLE ti_bdcdata.endform.                    " BATCH_BODY
Con lo anterior tan solo tengo que llamar mediante un Perform (llamada de una subrutina) e ingresar los valores conseguidos mediante la grabación, un ejemplo es:
perform batch_encabezado using 'PROGRAMA' 'DYNPRO' 'X'.                    "Entra a programa y dynpro.  perform batch_body using 'BDC_OKCODE' '/00'.                              "Codigo Ok_Code a ejecutar
 perform batch_body using 'BDC_CURSOR' 'BR_BUKRS-LOW'.      " En donde Posiciona el Cursor
perform batch_body using 'BR_BUKRS-LOW' P_BUKRS.  "lleno el campo con el valor de P_BUKRS el cual es una variable
Paso 3. Ejecutar el Call Transacion.
Esta instrucción es básicamente para llamar una transacción con diferentes opciones de ejecución, mas información para utilizarla en el (ENLACE).

La forma básica de utilizarla es Call Transaction 'Transaction Code' Using TI_BDCDATA MODE 'TIPO_MODO'

  • En "Transacción" debe de ir el código de transacción, este puede ser un campo o entre comillas simples se puede usar directamente el código como 'F.80'.
  • En Using se usa la tabla que contiene la grabación con los datos para la ejecución del Batch Input.
  • En Mode se utiliza el modo a ejecutar. 
Valores posibles del MODE:
  • A = Mostrar Paso a Paso.
  • E = Mostrar solo cuando haya errores.
  • N = No mostrar nada mientras se ejecuta.
Yo personalmente, prefiero este tipo de Batch Inputs de forma Manual, ya que podemos tener un control preciso de lo que se agrega y tenemos mas flexibilidad que el crearlos de forma automática.

Espero les sea de ayuda esta información, cualquier duda háganla mediante comentarios.

No hay comentarios:

Publicar un comentario