2011-08-30 9 views
5

que tienen una declaración UPDATE en ABAP que se parece a:Actualización Declaración en ABAP no trabajar

UPDATE zicstt099 FROM TABLE lt_zicstt099

La actualización está fallando cada vez con sy-subrc eq 4.

La tabla de base de datos ZICSTT099 tiene tres claves principales: WEB_USER_ID & EMAIL_ID junto con MANDT campo.

Estoy tratando de cambiar el valor EMAIL_ID pero el mismo no se está actualizando.

Amablemente ayuda.

Respuesta

7

No puede cambiar los campos de clave principal utilizando las sentencias UPDATE <target> FROM <wa>. y UPDATE <target> FROM TABLE <itab>., ya que utilizan la clave principal para buscar el (los) registro (s) que deben actualizar.

Utilice la instrucción UPDATE <target> SET <set1> ... WHERE ... en su lugar.

Puede encontrar los detalles aquí: http://help.sap.com/abapdocu_70/en/ABAPUPDATE_SOURCE.htm#&[email protected]@

0

no se puede 'cambiar' campos clave de bases de datos. Puede eliminar su entrada original e insertar una nueva con otra clave. Pero no puedes cambiar un campo clave. (No puedo verificar la real, si modify lo está haciendo por sí mismo

Si tiene que cambiar un campo clave, usted debe pensar en su base de datos definición

Más sobre el cambio de campos clave:.. Can we update primary key values of a table?

+2

Esto está mal, al menos en Open SQL. Vea la documentación citada por René. – vwegert

0

Si sy-subrc = 4, no se pudo cambiar al menos una línea, porque no se encontró la línea adecuada o porque el cambio generaría una línea que lleva a entradas dobles en la clave principal o un índice secundario único en la tabla de la base de datos.

ACTUALIZACIÓN ACTUAL establece sy-dbcnt a la cantidad de líneas modificadas.

-1

hi i trató de crear la tabla con sus llaves como se ha mencionado, te aconsejo utilizar la siguiente sintaxis

update lt_zicstt099 set email_id = 'some value' where WEB_USER_ID = 'some web id'. 

Para comprobar si la tabla se actualiza puede utilizar sy-dbcnt a conocer el número de líneas actualizadas si todavía tiene problemas, por favor comente a continuación