• Jueves 2 de Mayo de 2024, 09:11

Autor Tema:  Borrar registros de una tabla interna  (Leído 14282 veces)

aladino_01

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Borrar registros de una tabla interna
« en: Miércoles 6 de Agosto de 2008, 15:43 »
0
Hola a todos, necesito borrar algunas lineas de mi tabla interna pero no sé como hacerlo, por favor quién puede ayudarme.

En la tabla tengo los siguientes datos:

Num.   Folio        Destino     Fecha          Movimiento     Tipo Material
  1       M0025      R20105     29.07.2008     621              273.442-1R
   2       M0025      R20105     30.07.2008     622              273.442-1R
   3       M0025      R20105     01.08.2008     621              273.442-1R

   4       P0040       R20105     24.07.2008     621              273.441-1R]
   5       R0011       R20108     27.07.2008     621              273.441-2R
   6       R0011       R20108     30.07.2008     622              273.441-2R
   7       R0011       R20108     01.08.2008     621              273.441-2R

Lo que quiero borrar son los 2 primeros del folio M0025 ya que el movimiento 621 significa salida y el 622 significa retorno, entonces la línea 3 significa que hay salida más no hay retorno y no quiero que se borre, por ejemplo la línea 4 existe salida pero no retorno, que no se borre, en las líneas 5, 6, y 7 aplica la misma regla de las 3 lineas de ariiba.

Por su ayuda muchas gracias.

icedTea

  • Miembro activo
  • **
  • Mensajes: 29
  • Nacionalidad: mx
    • Ver Perfil
    • http://willy-n-billy.blogspot.com
Re: Borrar registros de una tabla interna
« Respuesta #1 en: Viernes 8 de Agosto de 2008, 06:32 »
0
No se si entendí bien.

Si deseas que tu tabla te queda mas o menos así:

   Num. Folio Destino Fecha Movimiento Tipo Material
3 M0025 R20105 01.08.2008 621 273.442-1R
4 P0040 R20105 24.07.2008 621 273.441-1R]
7 R0011 R20108 01.08.2008 621 273.441-2R


Podrías hacer un Loop At, almacenar las llaves en variables y borrar a partir de ellas:

Citar
LOOP AT TablaInterna WHERE Movimiento = '621'.
  Var1 = tablainterna-numero.
  var2=tablainterna-folio.
  "Busca en la tabla interna por ese folio pero con movimiento 622
   DELETE TablaInterna WHERE numero = var1
                                   AND folio = var2
                                   AND movimiento = '622'.
   "Si encontró un movimiento 622 con ese folio, entonces debes borrar tambien el 621
   IF SY-SUBRC = 0.
        DELETE tablainterna WHERE numero = var1
                                       AND folio = var2
                                      AND movimiento = '621'.
  ENDIF.
MODIFY tablainterna.
ENDLOOP.

Codigo sin garantía... jajaj, no tengo un FrontEnd a la mano...
Espero no haberte hecho perder el tiempo, si es que esto no te sirve de nada... talvez no he comprendido bien tu idea... y pues estaría bien un poco mas de información. Creo que si en dado caso te entendí bien la idea, el codigo necesitará algo mas que eso... la verdad no recuerdo bien como va el delete   -_-



Salu2.
« última modificación: Martes 12 de Agosto de 2008, 21:37 por icedTea »

aladino_01

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re: Borrar registros de una tabla interna
« Respuesta #2 en: Viernes 8 de Agosto de 2008, 17:32 »
0
Gracias por tu ayuda, con el código que me has indicado ha salido perfecto, claro haciendo la minima correccion al mismo en cuestión del nombre dde la tabla interna y declarando los campos de VAR1 y VAR2.

Nuevamente muchas gracias.
Saludos.!!