ABAP Commit en Programa que llama a FUNCION

Buen día.
La mayoría de las veces que se elabora un programa que actualiza tablas transparentes, no se codifica el COMMIT o ROLLBACK, ya que estos son implícitos, o sea, se ejecutan de manera automática cuando el programa termina.
Pero tengo dudas respecto a esto cuando un programa llama a una función, y esta función realiza actualizaciones a las tablas transparentes. Según yo, creo que debe funcionar igual porque forma parte de una misma sesión, y el commit/rollback se ejecuta cuando termina el programa, pero no estoy seguro.
Alguien me podría aclarar esta duda???
Muchas gracias por sus comentarios.

Hola Marh, uno de los usos de los que yo tengo conocimiento además de refrescar el buffer y actualizar los valores en la base de datos es para cuando utilizas transacciones externas al sistema, o sea, transacciones que no fueron creadas ahí pero que modifican valores en tu sistema SAP vía llamadas de BAPI. Tengo entendido que en estos casos es muy importante hacer uso del Commit.

Aunque si sería bueno que alguien más aclarara la diferencia para los casos dónde sólo se actualice un valor en tabla dentro del mismo sistema, lo que mencionas.

Saludos!

1 me gusta

Hola, cuando llamas una bapi es recomendado el comit debido a que si no es realizado el proceso se que únicamente en memoria y al finalizarlo se pierde la información.

2 Me gusta

Buenta tarde

Como bien dice Jafetlo_Lo y cr7_abraham existen funciones que por si mismas ya tienen el COMMIT implícito y no es necesario usarlo como lo es CREATE_TEXT, pero lo he notado que son a tablas en especifico, en cambio cundo hablamos de BAPIS ejemplo la BAPI_ACC_DOCUMENT_POST al tener un proceso complejo ya que se utiliza para generar pólizas contables, que su creación a nivel BD implica la afectación de mas una tabla, lo que se usa en esta BAPI es que si se llena y regresa un numero de documento no se visualiza este documento en las transacciones estándares, ya que solo existe en memoria intermedia, hasta que realices un COMMIT con la transacción BAPI_TRANSACTION_COMMIT (Bueno yo en lo personal uso la función y le doy un WAIT para garantizar su correcta creación).

Bueno espero con esto quede un poco mas claro.

Saludos

Al menos en mi experiencia, siempre utilizo ROLL BACK Y COMMIT WORK AND WAIT. Tambien lo hago al utilizar BAPIS, recomiendo lo mismo. Si haces un INSERT dentro de un programa pero aun no termina y consultas el registro en la transacción SE16 o SE16N, éste aparecerá; pero si termina el programa desaparece el registro.

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.