Está en la página 1de 6

[Año]

DOCUMENTACIÓN – MODIFICAR REGISTROS EN


BASE DE DATOS

Curso – ABAP Open SQL


LOGALISAP
1

Contents
1. Sintaxis .................................................................................................................................................................2
1.1. Efecto ...........................................................................................................................................................2
1.2. Comportamiento de las variables del sistema..........................................................................................2
2. CLIENT SPECIFIED.................................................................................................................................................3
3. MODIFY dbtab – target .......................................................................................................................................3
4. MODIFY dbtab – source ......................................................................................................................................4
4.1. FROM wa .....................................................................................................................................................4
4.2. FROM TABLE itab ........................................................................................................................................5

ABAP Open SQL logalisap.com


2

1. Sintaxis

MODIFY target FROM source.

1.1. Efecto

La instrucción MODIFY inserta una o más filas especificadas en el origen en


la tabla de base de datos especificada en el destino o sobrescribe las filas
existentes.

1.2. Comportamiento de las variables del sistema

La instrucción UPDATE establece los valores de los campos del sistema SY-
SUBRC y SY-DBCNT.

- 0 cuando se declaró un área de trabajo en origen, se insertó o modificó


la fila especificada. Cuando se especificó una tabla interna en el origen,
se insertaron todas las líneas especificadas, se modificaron o la tabla
interna es vacía.

- 2 cuando se especificó una estructura de tipo LOB (Large Object) y los


componentes de identificador no LOB (los demás campos que no son
objetos grandes) no se modificaron en base de datos.

- 4 cuando se especificó un área de trabajo en el origen, no se procesaron


filas o cuando se especificó una tabla interna en el origen, no todas las
filas especificadas se procesaron porque ya hay una fila con el mismo
índice secundario único en la tabla de base de datos.

La instrucción MODIFY establece en la variable del sistema SY-DBCNT el


número de filas modificadas. Si se produce un desbordamiento porque el
número o filas es mayor que 2.147.483.647, SY-DBCNT se establece en -1. Si
SY-SUBRC es 2, SY-DBCNT también se establece en el valor -1.

ABAP Open SQL logalisap.com


3

2. CLIENT SPECIFIED

Si se utiliza la adición CLIENT SPECIFIED, se respeta el ID del mandante


especificado en la fuente. Sin la adición CLIENT SPECIFIED, el entorno de
ejecución ABAP no pasa el ID del mandante especificado en el origen al
sistema de base de datos, sino que pasa el ID del mandante actual en su
lugar.

3. MODIFY dbtab – target

... dbtab|(dbtab_syntax) [CLIENT SPECIFIED]

Las entradas del “target” determinan, de forma estática o dinámica, la tabla


de la base de datos o la vista a la que se accede y el control del manejo del
mandante.

Sólo se pueden especificar las vistas que hacen referencia a una tabla de
base de datos única y cuyo estado en el diccionario ABAP permite cambios.

En lugar de la especificación estática, se puede especificar un objeto de


datos entre paréntesis dbtab_syntax, que debe contener el nombre de la
tabla de base de datos o la vista cuando se ejecuta la sentencia. Para el
objeto de datos dbtab_syntax se puede especificar un objeto de datos de
tipo carácter o una tabla estándar sin claves de tabla secundaria. La sintaxis
en dbtab_syntax no es, como en ABAP Editor, sensible a mayúsculas y
minúsculas.

ABAP Open SQL logalisap.com


4

4. MODIFY dbtab – source

4.1. FROM wa

Cuando se especifica un área de trabajo wa se busca una fila en la


tabla de base de datos que tenga el mismo contenido en la clave
principal que la parte de inicio correspondiente al wa. Si no se
encuentra esta fila, se inserta una nueva fila de acuerdo con las
mismas reglas que para la instrucción INSERT. Si se encuentra una
fila, se sobrescribe de acuerdo con las mismas reglas que para la
instrucción UPDATE.

Si el cambio conduce a una entrada doble en un índice secundario


único, no se ejecuta y la variable del sistema SY-SUBRC se establece
en 4.

El manejo automático del mandante se realiza por defecto, lo que


significa que no se tiene en cuenta un identificador del mandante
especificado en el wa; el mandante actual se utiliza en su lugar. El
contenido de wa no se ve afectado.

Notas:

- El área de trabajo wa debe declararse siempre con referencia a la


tabla de base de datos o a la vista en el Diccionario ABAP.

- Si la tabla o vista de la base de datos se especifica estáticamente,


la especificación del área de trabajo que utiliza FROM wa se
puede omitir usando la sentencia TABLES. El sistema
complementa la instrucción MODIFY implícitamente para incluir la
adición FROM dbtab.

ABAP Open SQL logalisap.com


5

4.2. FROM TABLE itab

Si se especifica una tabla interna, el sistema procesa todas las filas de


la tabla interna. El tipo de fila de la tabla interna debe cumplir los
requisitos previos para su uso en sentencias de Open SQL.

Si el cambio a una fila en la tabla interna lleva a una entrada doble en


un índice secundario único, la fila correspondiente no se inserta y la
variable del sistema SY-SUBRC se establece en 4. Si la tabla interna
está vacía, no se procesan filas y SY-SUBRC se establece en 0. El
campo del sistema SY-DBCNT siempre se establece en el número de
filas que se procesaron realmente.

ABAP Open SQL logalisap.com

También podría gustarte