PDA

Ver la Versión Completa : Update de dos tablas.


X200
29/11/10, 19:57:25
Tengo dos tablas, la cual una es hija de la otra, a ambas les quiero updatear sus campos mediante la introduccion de valores atraves de parametros. Las dos tablas estan conectadas por un campo. Pero cuando realizo el update tan solo me actualiza los datos de la tabla padre y no de la hija. Entonces mi duda es ¿Por que sucede esto?.

A continuación les escribo un ejemplo del codigo que he creado:

* Defino los parametros que se van a insertar

PARAMETERS:

dato1 TYPE tabla1-dato1,
dato2 TYPE tabla1-dato2,
dato3 TYPE tabla2-dato3,
dato4 TYPE tabla2-dato4.

* Defino el workarea y la tabla interna con las que voy a trabajar.

DATA: itab_1 TYPE STANDARD TABLE OF tabla1.
DATA: wa_1 TYPE tabla1.
DATA: itab_2 TYPE STANDARD TABLE OF tabla2.
DATA: wa_2 TYPE tabla2.

* Asigno los parametros al workarea.

wa_1-dato1 = dato1.
wa_1-dato2 = dato2.
wa_2-dato3 = dato3.
wa_2-dato4 = dato4.

* Append a la tabla interna

APPEND wa_1 to itab_1.
APPEND wa_2 to itab_2.

* Update de ambas tablas.

UPDATE tabla1 FROM TABLE itab_1.
UPDATE tabla2 FROM TABLE itab_2.

Desde ya muchas gracias.

jtristan
30/11/10, 05:43:50
Faltaría ver como cargas los itab. Al hace el update, o le indicas el índice del registro que quieres modificar y los campos que vas a modificar, o le pasas el work area, donde los campos clave coincidan con alguna de la b.d.

Un saludo.

X200
30/11/10, 13:26:01
No entiendo muy bien a lo que te refieres. Si te refieres a hacer el update directamente desde el workarea.

UPDATE tabla2 FROM wa_2.

Ya lo he intentado, pero sigue sin dar resultado. Digamos lo raro de todo esto es que el UPDATE de la tabla 1, funciona asi como lo he puesto, pero el segundo UPDATE según el DEBUG me arroja un sy-subrc = 4, es decir como sino hubiera encontrado la key, cuando claramente esta ahi. Por lo que siempre que ejecuto me modifica la primer tabla, pero no la segunda.

Saludos

mysmb2
30/11/10, 13:41:55
Si el UPDATE de da sy-subrc = 4 tenes algún campo clave mal informado o bien te falta alguna rutina de conversión que tenga alguno de los campos. Para verificar esto hace un select en vez de un UPDATE con los mismos campos haber si te trae el registro.

Saludos!

Dennis Urbano E.
30/11/10, 14:23:40
Si los datos del update a tabla2 es dependiente de los datos del update de tabla1 quizas solo necesitas ponerle un commit work despues del primero update y por ahi que es mejor un commit work and wait .. pruebas y pasas la voz =D

X200
30/11/10, 16:26:18
Finalmente encontre el error, al no revisar bien la tabla con la que trabajaba, no me di cuenta que uno de los parametros que ingresaba en la segunda tabla tambien estaba como Key. Entonces cuando ingresaba los parametros y ponia un distinto valor, nunca encontraba el registro para updatear.

Gracias a todos por su ayuda.