Evitar dump al hacer commit o rollback en una función

En ocasiones puedes obtener un dump (error de tiempo de ejecución) en SAP cuando se ejecuta una función en modo update task y esta misma hace un rollback o commit, si te sucede esto veras un error con la siguiente descripción:
Texto breve
Non-update function module called for update

¿Qué ha sucedido?
Error in the ABAP Application Program

The current ABAP program «ZTEST» had to be terminated because it has
come across a statement that unfortunately cannot be executed.

A function module was called incorrectly.

Anál.errores
The function module «ZTMP» was called with the addition
«… IN UPDATE TASK».

However, it is not flagged in the Function Library as
executable in the update task.
Mensaje de error dump al hacer commit o rollback en funcion

Solución al problema.

Lo que ha sucedido en este caso es que hemos llamado una funcion de esta forma:

call function 'ZTMP' in update task
    exporting
    prueba        = 'X'.

Y dentro de la función hacemos internamente un commit o un rollback.

Para solucionar el problema debemos agregar en la función una validación para determinar si debemos o no hacer un commit o rollback determinado si la función fue llamada en modo IN UPDATE TASK, usando la funcion de SAP TH_IN_UPDATE_TASK

DATA: lv_in_update TYPE i.

CALL FUNCTION 'TH_IN_UPDATE_TASK'
  IMPORTING
    in_update_task = lv_in_update.

"Verificamos si podemos hacer el update
IF lv_in_update = 1.
  "Funcion llamada in update task
  "No hacer COMMIT o ROLLBACK !!!
ELSE.
  "No se ha llamado in update task
  "Hacer COMMIT o ROLLBACK si es necesario
ENDIF.

5 Comments

  1. esto es lo que me dice To process the problem further, contact you SAP system
    administrator.

    Using Transaction ST22 for ABAP Dump Analysis, you can look
    at and manage termination messages, and you can also
    keep them for a long time.

  2. ejecute de esta manera y el error continua abra alguna manera de solucionarlo

    1. El problema debe ser otro, puedes ver mas detalles e incluso la linea que genero el error en la transaccion ST22

  3. Para utilizar la opción de ‘IN UPDATE TASK’, es necesario que en el atributo del Function Module tenga activada la opción de Modulo actualización ya que si no lo tiene marca este DUMP

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *