MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Viejo 02/09/10, 10:35:48
educun educun is offline
Junior Member
 
Fecha de Ingreso: may 2006
Mensajes: 13
Error DBIF_RSQL_SQL_ERROR. SAP RH.

Hola a todos,
tengo un problema con el acceso a una tabla.
Lanzamos un programa, que on-line funciona y para pocos empleados en fondo tambien, pero cuando lo lanzamos para muchos empleado, nos da este dump.
Errores tiempo ejec. DBIF_RSQL_SQL_ERROR
Excepción CX_SY_OPEN_SQL_DB

Notas para corregir errores
Database error text........: "[1205] Transaction (Process ID 239) was
deadlocked on lock resources with another process and has been chosen as the
deadlock victim. Rerun the transaction."
Internal call code.........: "[RSQL/DELE//IECI/HR_FM_TD07 ]"
Please check the entries in the system log (Transaction SM21).

Detalle del codigo.
DELETE FROM /ieci/hr_fm_td07
WHERE ejercicio = pnpbegda(4) AND
version = p_versi AND
pernr = pnppernr-low.


A ver si me podeis ayudar, que estoy un poco estancado.

Muchas gracias.
Enrique.
Responder Con Cita
  #2  
Viejo 02/09/10, 10:58:34
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Lo que te esta diciendo es que estas intentando borrar un registro que esta bloqueado por otra transaccion
Responder Con Cita
  #3  
Viejo 02/09/10, 11:18:04
educun educun is offline
Junior Member
 
Fecha de Ingreso: may 2006
Mensajes: 13
Teoricamente no se esta lanzando nada mas que los jobs de ese programa.
Y cada Job es de un empleado diferente, por lo que borra registros diferentes.

A no ser que este equivocado, entiendo que pueden acceder a la tabla varios procesos a la vez a borrar diferentes registros.
Por eso, no entiendo que se esten bloqueando registros.

Puede ser cosa de la declaración de la tabla. Es que no se que mirar.

Gracias.
Responder Con Cita
  #4  
Viejo 02/09/10, 15:13:36
ballan ballan is offline
Senior Member
 
Fecha de Ingreso: oct 2006
Mensajes: 671
Pues aparentemente eso es lo que te esta diciendo el dump

Al ser procesos que corren en fondo es un poco complicado determinar quien lo bloquea pero se puede hacer

Voy a dar por supuesto que el programa es Z y lo puedes modificar, de no ser asi tendxriamos que buscar otra opcion

Antes del fragmento de codigo

Detalle del codigo.
DELETE FROM /ieci/hr_fm_td07
WHERE ejercicio = pnpbegda(4) AND
version = p_versi AND
pernr = pnppernr-low.

Tendrias que añadir un bucle como el siguiente

data: lv_exit.
do.
if not lv_exit is initial.
exit.
endif.
enddo.

Asi cuando lanzes el proceso se quedaba en un bucle infinito

Despues vas a la transaccion sm50 y te fijas en cual es el proceso correspondiente al programa que lanzaste (fijate en los procesos que tienen tu usuario) seleccionas el proceso y vas al menu
Programa/modo -> programa -> debugging

Te saltara el debugging justo en el bucle, si marcas la variable lv_exit con una 'X' o lo que sea saldras del bucle, situate justo antes del delete

ANTES de hacer el delete vete a la transaccion SM12y ahi te apareceran todos los bloqueos existentes en el sistema

Si ves que aparece un bloqueo para esa tabla podras ver algo mas de informacion adicional, a que hora se hizo, que usuario, etc y quiza pueda arrojarte algo de luz
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 04:19:33.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web