![](/cvo_files/imgs_sap_abap/logos/logo_cvo_academy_it.png)
✒️ABAP Las subrutinas y la grabación de datos de un BI
ABAP Las subrutinas y la grabación de datos de un BI
![ABAP Las subrutinas y la grabación de datos de un BI ABAP Las subrutinas y la grabación de datos de un BI](https://www.cvosoft.com/cvo_files/imgs_sap_abap/og-images/117.jpg)
SUBRUTINAS Y GRABACION DE DATOS DE UN BI
UTILIZACIÓN DE SUBRUTINAS EN UN BATCH INPUT
Para hacer más simple la creación de un Batch Input, vamos a utilizar la subrutina BDC_FIELD, que nos van a permitir modularizar los programas.
NOTA: MODULARIZAR, se llama asi a la acción de pasar el código de un programa a subrutinas, para mejorar la lectura y mantenimiento futuro del mismo.
*&---------------------------------------------------------------------*
*& Form bdc_field
*&---------------------------------------------------------------------*
FORM bdc_field USING dyn_begin TYPE c
campo1
campo2.
CLEAR st_bdc_data.
IF dyn_begin = 'X'.
st_bdc_data-program = campo1.
st_bdc_data-dynpro = campo2.
st_bdc_data-dynbegin = dyn_begin.
ELSE.
st_bdc_data-fnam = campo1.
st_bdc_data-fval = campo2.
ENDIF.
APPEND st_bdc_data TO ti_bdc_data.
ENDFORM. " bdc_field
Si cambiamos el código de la unidad anterior, utilizando la subrutina BDC_FIELD, quedaría asi:
*--------------------------------------------------------------------*
START-OF-SELECTION.
*--------------------------------------------------------------------*
* Ingreso a la Primer pantalla y presiono boton de mantenimiento
PERFORM bdc_field USING 'X' 'SAPMSVMA' '0100'.
PERFORM bdc_field USING ' ' 'VIEWNAME' 'ZTABLA_USUARIOS'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=UPD'.
* Presiono boton de nuevas entradas
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=NEWL'.
* Cargo datos del usuario
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-DNI' st_usuarios-dni.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-NOMBRE_APE' st_usuarios-nombre_ape.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-ESTADO_USU' st_usuarios-estado_usu.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-DIRECCION' st_usuarios-direccion.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-CODIGO_POSTAL' st_usuarios-codigo_postal.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-FECHA_NAC' st_usuarios-fecha_nac.
PERFORM bdc_field USING ' ' 'ZTABLA_USUARIOS-ESTADO_CIVIL' st_usuarios-estado_civil.
* Grabo los Registros
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=SAVE'.
* Cierro la segunda pantalla
PERFORM bdc_field USING 'X' 'SAPLZTABLA_USUARIOS' '0001'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '=ENDE'.
* Cierro la primer pantalla
PERFORM bdc_field USING 'X' 'SAPMSVMA' '0100'.
PERFORM bdc_field USING ' ' 'BDC_OKCODE' '/EENDE'.
Como vemos es muy importante realizar la modularización.
¿CÓMO OBTENER LOS DATOS NECESARIOS PARA LA CARGA DE LA TABLA BDCDATA?
Vamos a explicar cómo obtener los valores que cargamos en la tabla interna BDCDATA. Para ello, tomamos el ejemplo de la carga de la tabla BDCDATA, que vimos en la lección anterior.
Vamos a entrar a la transacción SM30, y recuperar los datos correspondientes a la primer pantalla. Existen varias formas de obtener información de una pantalla. Ellas son:
- Parándonos sobre un campo de entrada de datos, presionamos F1: Presionamos F1 posicionando el cursor del mouse sobre el campo.
Y luego hacemos click en el botón de Información técnica:
Y veremos una ventana de diálogo con información relevante para el armado de la tabla BDCDATA, como es el nombre del programa, el nombre de la dynpro y el nombre del campo.
- Parándonos sobre un botón de la pantalla presionamos F1: Presionamos sobre el botón F1.
Y veremos una ventana de diálogo con el nombre del programa y el código de función correspondiente al botón.
- En todas las pantallas de de SAP, podemos visualizar en el extremo inferior derecho de las mismas, diferentes datos de la pantalla.
GRABACIÓN DE UN BATCH INPUT
Otra forma más eficiente de obtener los datos para la carga de la tabla BDCDATA, consiste en realizar una grabación de los pasos que hacemos en la ejecución de las transacciones, mediante la transacción SM35.
NOTA: La transacción SM35, conocida como la GRABADORA, es utilizada para realizar la grabación de las sesiones de Batch Input que nos serán de gran utilidad a la hora de desarrollar nuestros programas.
Para realizar la grabación, presionamos el botón Grabacion (Recording):
Luego el botón Grabación nueva (New Recording):
Y en la siguiente ventana asignamos un nombre a la grabación, escribimos el nombre de la transacción y presionamos iniciar grabación.
Luego seguiremos la secuencia de las pantallas hasta generar un registro en la tabla ZTABLA_USUARIOS, que finaliza presionando el botón grabar y saliendo de la transacción. Después de esto, veremos una pantalla con la grabación.
NOTA: Cuando estamos haciendo una grabación en la transacción SM35 y queremos ver el resultado de la misma, debemos presionar el botón grabar o el botón exit de la pantalla.
Si nos fijamos, la tabla con las columnas que visualizamos en la grabación tiene la misma estructura que la tabla BDCDATA.
Luego si presionamos el botón grabar, la grabación quedará almacenada en el sistema para consultarla mientras hacemos el Batch Input. También es posible exportarla a un archivo o importar de un archivo una grabación.
AUDIO: Tengamos en cuenta algunas consideraciones al usar la transacción SM35: los eventos que se ejecutan al presionar F1 y F4 no se registran, tampoco los errores o warnings. En las pantallas los movimientos con la barra de desplazamiento, tampoco se registran en la grabación.
Por último, si volvemos para atrás, presionando el botón Back de la pantalla, veremos la grabación que acabamos de crear con cierta información de la misma.
Podremos ejecutar la grabación cuantas veces queramos, presionando el botón procesar y seleccionando la grabación de la pantalla. También es posible modificar una grabación creada para volver a ejecutarla.
 
 
 
Sobre el autor
Publicación académica de Alexander Castellanos, en su ámbito de estudios para la Carrera Consultor ABAP.
Alexander Castellanos
Profesión: Ingeniero de Sistemas - Colombia - Legajo: JS42A
✒️Autor de: 67 Publicaciones Académicas
🎓Egresado del módulo:
Certificación Académica de Alexander Castellanos