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.
Ejemplo de Function Module Test Sequence
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.
Para realizar este ejemplo debemos seguir los siguientes pasos:
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 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.
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.
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 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.