Cómo crear y testear secuencias de funciones en ABAP con el Function Builder
Aprenda con un ejemplo paso a paso cómo crear y testear secuencias de funciones en ABAP para que operen como una unidad, a través del Funtion Module Test Sequence, parte del Function Builder.
Cuando se está desarrollando en ABAP, en determinadas situaciones resulta necesario ejecutar dos o más funciones en secuencia. La idea en estos casos es que las funciones secuenciadas operen como una unidad, de manera que el output de la precendente sirva de input a la siguiente, y se garantice la ejecución conjunta de las mismas para llegar al resultado deseado.
Entre inumerables ejemplos, un caso clásico son las actualizaciones a las bases de datos. Por ejemplo, si se utiliza una BAPI para dar un alta en una base de datos NO se verá el registro agregado hasta que otra BAPI que ejecute un COMMIT. Si la aplicación requiere la disponibilidad inmediata del registro puede asegurarse la secuencia de BAPIS utilizando una secuencia de funciones que incluya primero el alta, e inmediatamente, el COMMIT.
La transacción SE37 (Function Builder) ofrece la herramienta “Test Sequence” que permite armar y “Testear” secuencias de funciones con este fin.
Explicamos en este tip cómo utilizar Function Module Test Sequence con un ejemplo paso a paso.
Ejemplo de Function Module Test Sequence
Se ejemplificará ese escenario en este tip mediante de BAPIS, utilizando un caso bastante emblemático, que son los cambios a las bases de datos. La idea es dar de alta un registro a una base de datos y hacerlo inmediatamente disponible a la aplicación.
Para ello, se requerirán dos BAPIs en secuencia:
- BAPI_FLCUST_CREATEFROMDATA (que dará de alta un cliente)
- BAPI_TRANSACTION_COMMIT.
En este caso, si se ejecuta sólo BAPI_FLCUST_CREATEFROMDATA, los cambios realizados por la misma, no serían inmediatamente visibles a la aplicación en curso. Las altas a una base de datos NO se reflejan en forma inmediata, sino recién cuando se halla ejecutado el COMMIT de dicha operación. Por lo tanto, para que el registro se haga visible, se requiere la ejecución exitosa de toda la secuencia de funciones, como si fueran una unidad.
Pasos para testear la ejecución de dos BAPIS de forma secuencial:
1) Acceder a la transacción SE37. Una vez allí, seleccionar de la barra de menú de SAP, la opción Function Module, luego “Test” y finalmente “Test Sequences”.
2) En la ventana de selección se ingresan las dos BAPIS a secuenciar, en este caso BAPI_FLCUST_CREATEFROMDATA y BAPI_TRANSACTION_COMMIT, obviamente en el orden deseado.
3) Al aceptar con Execute, el sistema abrirá la Initial Screen para esta función.
Debemos a esta altura ingresar los parámetros para la función, que en este caso serán los campos necesarios para el alta de un cliente. Desde la Initial Screen, utilizando el ícono "Details View Edit" se abre la interfaz del "Structure Editor", donde se procederá a completar los datos.
En la pantalla de Structure Editor es conveniente presionar las teclas SHIFT + F7 para tener una mejor visión (vertical!) de los datos y que el ingreso sea más sencillo, como se muestra en la figura anterior.
Para este ejemplo sólo se completan los datos correspondientes a CUSTNAME (Nombre del cliente), STREET (Calle), COUNTR (País) y CUSTTYPE (Tipo de cliente) (Sólo valor B o P).
Finalizada la entrada de datos con el icono de “Aceptar”, se desplegará el registro con los datos de testeo cargados, tal como vemos a continuación. Desde acá, se debe regresar a la Initial Screen de la función, utlizando el botón señalado en la misma figura.
4) Luego desde la Inicial Screen, se procede a su ejecución a través de la tecla F8 (o el ícono correspodiente)
Completada la ejecución, el sistema volverá a la Initial Screen. Sin embargo, se observará en la zona de tablas, la referencia a una nueva entrada con un mensaje. El número ("1" en este caso) informa cuántos mensajes o advertencias se han generado como resultado de la ejecución. Para acceder a la interfaz con el resultado de la ejecución, se deberá hacer click sobre esta referencia (ver figura siguiente).
Allí, se puede verificar que la primera BAPI ejecutada en la secuencia haya operado correctamente, es decir, que el registro haya sido dado de alta. Aparecerá el mensaje correspondiente indicando que el cliente (JUAN LOPEZ) ha sido creado, como se muestra en la figura:
5) Para continuar el procedimiento debemos regresar hasta la Initial Screen de la segunda BAPI (BAPI_TRANSACTION_COMMIT). Presionar el botón "Atrás" dos veces para continuar con el procedimiento.
6) Se observa en la Inicial Screen para esta BAPI , que no hay parámetros para ingresar, ya que el resultado de la ejecución de la primera BAPI está sirviendo como input para esta otra. En la posición del cursor colocar una “x” y luego presionar F8 para ejecutar:
7) Al igual que en el caso anterior, el sistema nos llevará a la pantalla de resultados una vez completada.
De esta manera se ha creado una nueva entrada para el cliente ingresado recientemente en la tabla SCUSTOM utilizando la BAPI BAPI_FLCUST_CREATEFROMDATA para la creación del cliente y BAPI_TRANSACTION_COMMIT para que sea grabada en la Base de Datos.
Para tener en cuenta …
- Si se desea comprobar que luego de la ejecución de las dos BAPIs mencionadas en secuencia, se ha creado efectivamente el nuevo registro en la tabla SCUSTOM, chequear por medio de la transacción SE11 dicha tabla.
- Si se ejecutara sólamente la BAPI BAPI_FLCUST_CREATEFROMDATA (sin realizar la acción de Commit), al chequear la tabla SCUSTOM, se comprobará que el registro cargado por la primera BAPI, no fue grabado en la base de datos.
Especialista ABAP |
Especialista ABAP |
Copyright 2012 - Teknoda S.A.
IMPORTANTE: “Notas técnicas de SAP ABAP" se envía con frecuencia variable y sin cargo como servicio a nuestros clientes SAP. Contiene notas/tutoriales/artículos técnicos desarrollados en forma totalmente objetiva e independiente. Teknoda es una organización de servicios de tecnología informática y NO comercializa hardware, software ni otros productos. |