W Pub: ABAP Cursosentenciadelete

<html>

<head>

<title>DELETE</title>

</head>

<BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000">

<p align="left">⚠ &lt;b&gt;<span class="titulo">DELETE</span>⚠ &lt;/b&gt;</p>

<p align="left">⚠ &lt;b&gt;Definicin⚠ &lt;/b&gt;</p>

<p align="left">Para borrar lneas de una tabla interna contamos

  con la sentencia DELETE. Varios formatos de la sentencia nos permiten borrar 
  lneas de una forma diferente.</p>

<p align="left">⚠ &lt;b&gt;Sintaxis:⚠ &lt;/b&gt;</p>

<pre>DELETE <tabla>.</pre>

<p>El sistema slo puede procesar esta sentencia dentro de un

  bucle ⚠ &lt;a href="loop_endloop.htm" tppabs="loop_endloop.htm"&gt;LOOP .. ENDLOOP⚠ &lt;/a&gt;. La sentencia DELETE borra 
  la lnea que estemos tratando en el bucle.</p>

<pre>DELETE <tabla> INDEX <ndice>.</pre>

<ul>

  <li>Con la clusula INDEX, el sistema borra la lnea con el 
    ndice <ndice> en la tabla interna <tabla>. Despus de borrar 
    la lnea, el ndice de la siguiente lnea es decrementado en 1. Si la operacin 
    es completada, la variable SY-SUBRC vale 0. Si la lnea con el ndice <ndice> 
    no existe, SY-SUBRC vale 4.</li>

</ul>

<pre>DELETE ADJACENT DUPLICATE ENTRIES FROM <tabla> [ COMPARING <c> ].</pre>

<p>Esta sentencia borra todas las entradas duplicada adyacentes

  de una tabla interna. Dos lneas se consideran duplicadas si cumplen uno de 
  los siguientes criterios de comparacin:</p>

<ul>

  <li>Sin la clusula COMPARING, el contenido de los campos claves 
    estndar deben ser iguales.</li>
  <li>Con la clusula COMPARING con el formato siguiente: COMPARING 
    <c1> <c2> .... El contenidos de los campos ( c1, c2 ....) debe 
    ser igual. Tambin se puede especificar el nombre de los campos que hay que 
    comparar en tiempo de ejecucin utilizando la siguiente sintaxis: (<campo>). 
    La variable <campo> contiene el nombre de la variable que se va a comparar. 
    Si en el momento de procesar la sentencia DELETE, <campo> est vaco, 
    el sistema la ignora. Si contiene el nombre invlido, se produce un error 
    en tiempo de ejecucin.</li>
  <li>Con la clusula COMPARING con el siguiente formato: COMPARING 
    ALL FIELDS, el contenido de todos los campos debe ser igual.</li>

</ul>

<p>Si el sistema borra al menos una lnea de la tabla la variable

  SY-SUBRC valdr 0 si no borra ninguna lnea, SY-SUBRC valdr 4. Es recomendable 
  que la tabla interna este ordenada antes de ejecutar esta sentencia.</p>

<pre>DELETE <TABLA> [ FROM <n1> ] [ TO <n2> ] [ WHERE <condicin> ].</pre>

<p>Sentencia utilizada para borrar registros de una tabla de la

  base de datos. Con esta sentencia se puede borrar una o varias lneas de una 
  tabla. Slo se pueden borrar lneas de una tabla a travs de una vista si sta 
  slo hace referencia a una nica tabla.</p>

<p>Se debe indicar al menos una de las tres clusulas.</p>

<ul>

  <li>Si utilizamos la sentencia sin la clusula WHERE, el sistema 
    borrar todas las lneas de la tabla <tabla> cuyo ndice est comprendido 
    entre <n1> y <n2>.</li>
  <li>Si no utilizamos la clusula FROM, el sistema borrar desde 
    la primera lnea.</li>
  <li>Si no utilizamos la clusula TO, el sistema borrar hasta 
    la ltima lnea.</li>
  <li>Con la clusula WHERE el sistema slo borrar aquellas lnea 
    de la tabla <tabla> que cumplen la condicin especificada en <condicin>. 
    En <condicin> se puede utilizar cualquier expresin lgica. El primer 
    operando debe ser un componente de la estrucutra de lnea de la tabla interna. 
    Si el sistema borra al menos una lnea la variable SY-SUBRC valdr 0, si no 
    borra ninguna valdr 4.</li>

</ul>

<pre>DELETE {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ FROM <rea> ].</pre>

<ul>

  <li>Con la clusula FROM, la lnea que se borra es la que coincide 
    con la clave primara del rea <rea>. Sin la clusula FROM, la lnea 
    que se borra es la que coincide con la clave primaria del rea de trabajo 
    de la tabla tabla></li>
  <li>El rea de trabajo <rea> debe tener al menos, la 
    longitud de la clave primaria. Si se borra al menos una lnea de la tabla 
    la variable SY-SUBRC valdr 0, si no se borra ninguna valdr 4.</li>
  <li>Con la especificacin dinmica de la tabla, la clusula 
    FROM es obligatoria.</li>

</ul>

<pre>DELETE FROM {<tabla> | (<campo>) } [ CLIENT SPECIFIED ] [ WHERE <condicin> ].</pre>

<ul>

  <li>Esta variante nos permite borrar una o varias lneas de 
    la tabla <tabla> en funcin de las especificaciones de la clusula WHERE. 
    Dicha clusula tiene las mismas opciones que las vistas para la sentencia 
    ⚠ &lt;a href="select_endselect.htm" tppabs="select_endselect.htm"&gt;SELECT⚠ &lt;/a&gt;. Si no especificamos la clusula 
    WHERE, todas las lneas de la tabla se borran. <tabla> debe estar declarada 
    con la sentencia ⚠ &lt;a href="tables.htm" tppabs="tables.htm"&gt;TABLES⚠ &lt;/a&gt;.</li>
  <li>La variable del sistema SY-DBCNT contiene el nmero de lneas 
    borrar. Si se borra al menos una lnea de la tabla la variable SY-SUBRC valdr 
    0, si no se borra ninguna valdr 4.</li>

</ul>

<p>Hay que vigilar mucho con la clusula WHERE para no borrar

  toda la tabla o lneas que no deseamos borrar. La nica forma de recuperar lo 
  borrada es restaurar el backup de la base de datos.</p>

<pre>DELETE {<tabla> | (<tabla>) } [ CLIENT SPECIFIED ] FROM TABLE <tabla-interna>.</pre>

<p>Con esta variante se puede borrar lnea de una tabla de diccionario,

  basndose las lneas de una tabla interna. <tabla> y (<tabla>) sirve 
  para especificar el nombre de la tabla de forma esttica o dinmica. Esta sentencia 
  borra aquellas lneas de la tabla cuya clave primaria coincida con la definida 
  en una lnea de la tabla interna. La tabla interna debe tener la longitud de 
  la clave primaria de la tabla. Si el sistema no puede borrar ninguna entrada 
  de la tabla porque no coincide ninguna clave primaria, el sistema continua con 
  la siguiente lnea de la tabla interna. Si todas las lneas de la tabla interna 
  se procesan, SY-SUBRC vale 0, en caso contrario vale 4. SY-DBCNT nos indica 
  el nmero de lneas borradas. Si la tabla interna esta vaca, SY-SUBRC y SY-DBCNT 
  valen 0.</p>

<p>⚠ &lt;b&gt;Ejemplo 1:⚠ &lt;/b&gt;</p>

<pre>DATA: BEGIN OF NAMETAB OCCURS 100,

        NAME(30) TYPE C,       END OF NAMETAB.

...

DELETE NAMETAB FROM 5 TO 36 WHERE NAME CA 'ABC'.</pre>

<p>⚠ &lt;b&gt;Vease tambin:⚠ &lt;/b&gt; ⚠ &lt;a href="modify.htm" tppabs="modify.htm"&gt;MODIFY⚠ &lt;/a&gt;, ⚠ &lt;a href="append.htm" tppabs="append.htm"&gt;APPEND⚠ &lt;/a&gt;,

  ⚠ &lt;a href="insert.htm" tppabs="insert.htm"&gt;INSERT⚠ &lt;/a&gt;.</p>

</body>

</html>