borrar registros de tabla interna, urgente

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • ALNICO
    Senior Member
    • may
    • 107

    #1

    borrar registros de tabla interna, urgente

    saludos a todos amigos , tengo un problema que no he podido resolver por mi propia cuenta , tengo una tabla interna ZTEP luego de la lleno , quiero filtrarla , lei que puedo usar la sentencia delete from where , pero cada vez que la trato de compilar me aparece este error

    The dictionary structure or table ZTEP does not exist or is not active , alguien me puede ayudar o decirme que pasa .


    esta es la tabla y como la declaro:

    DATA: BEGIN OF REG,


    fili type PA0001-bukrs,
    anom type PA0001-abkrs,
    nper1 type PA9111-pernr,
    ced type Pa0185-icnum,
    nom type PA0001-ename,
    perf type PA9111-perfil,
    freg1 type PA9111-finimedemb,
    mtot type PA9111-mtunico,
    ptot type PA9111-porsmn,
    int type ZINT_EVAL-intereses,
    mot type Z9HRMOTEMB-dsmotemb,
    stat type Z9HRTSTEMB-tstatus,
    cedb type PA9111-nbbenfr,
    nomb type PA9111-cibenfr,
    trib1 type PA9111-tribunal,
    nofic1 type PA9111-numofic,
    fofc type PA9111-fofc,
    numfs type PA9111-numofcsup,
    statu type PA9111-status,
    FC TYPE PA9111-begda,
    FF TYPE PA9111-ENDDA,
    CM TYPE PA9111-CODMOTIVO,

    END OF REG.



    DATA: BEGIN OF ZTEP OCCURS 0.
    INCLUDE STRUCTURE REG.
    DATA END OF ZTEP.
  • luis999
    Member
    • jun
    • 82

    #2
    Hola, lo puedes declarar asi:

    TYPES: BEGIN OF REG,

    fili like PA0001-bukrs,
    anom like PA0001-abkrs,
    nper1 like PA9111-pernr,
    ced like Pa0185-icnum,
    nom like PA0001-ename,
    perf like PA9111-perfil,
    freg1 like PA9111-finimedemb,
    mtot like PA9111-mtunico,
    ptot like PA9111-porsmn,
    int like ZINT_EVAL-intereses,
    mot like Z9HRMOTEMB-dsmotemb,
    stat like Z9HRTSTEMB-tstatus,
    cedb like PA9111-nbbenfr,
    nomb like PA9111-cibenfr,
    trib1 like PA9111-tribunal,
    nofic1 like PA9111-numofic,
    fofc like PA9111-fofc,
    numfs like PA9111-numofcsup,
    statu like PA9111-status,
    FC like PA9111-begda,
    FF like PA9111-ENDDA,
    CM like PA9111-CODMOTIVO,

    END OF REG.

    DATA: ZTEP TYPE STANDARD TABLE OF REG WITH HEADER LINE.

    Comentario

    • ALNICO
      Senior Member
      • may
      • 107

      #3
      sigue igual

      sigue igual , cambie la forma de declaracion pero el mismo error , es como si no existiera

      Comentario

      • luis999
        Member
        • jun
        • 82

        #4
        Has declarado las tablas que usas:

        tables: PA0001, Pa0185.

        Estas seguro que existe la PA9111?

        Comentario

        • ALNICO
          Senior Member
          • may
          • 107

          #5
          si de eso estoy seguro , ya lo verifique , lo que no entiendo es porque no hace el delete de la tabla interna pero si hace el

          DELETE ADJACENT DUPLICATES FROM ZTEP. de la misma tabla

          Comentario

          • zonanet
            Senior Member
            • mar
            • 195

            #6
            Hola ALNICO:

            Lo que pasa es que la instrucción Delete FROM WHERE es sólo para tablas transparentes, osea tablas del diccionario y base de datos, no así para las tablas internas, lo que puedes hacer es recorrer tu tabla con un loop y mediante una condición borrar el registro.

            Loop at IT.
            If...
            delete IT.
            endif.
            endloop.

            Saludos

            Comentario

            • luis999
              Member
              • jun
              • 82

              #7
              Ah ya entiendo tu problema, lo que sucede es que el DELETE FROM WHERE se usa para tablas de base de datos y no para tablas internas.

              Si quieres borrar las filas de un tabla interna tienes que usar:

              DELETE <TABLA> INDEX <INDICE>

              Ahora el DELETE ADJACENT DUPLICATES FROM ZTEP que mencionas tambien se aplica para tablas internas.

              Espero que te sirva

              Originalmente publicado por ALNICO
              si de eso estoy seguro , ya lo verifique , lo que no entiendo es porque no hace el delete de la tabla interna pero si hace el

              DELETE ADJACENT DUPLICATES FROM ZTEP. de la misma tabla

              Comentario

              • camaron
                Junior Member
                • jul
                • 14

                #8
                Hola ALNICO:

                declara tu tabla interna asi:

                TYPES: BEGIN OF REG,

                fili like PA0001-bukrs,
                anom like PA0001-abkrs,
                nper1 like PA9111-pernr,
                ced like Pa0185-icnum,
                nom like PA0001-ename,
                perf like PA9111-perfil,
                freg1 like PA9111-finimedemb,
                mtot like PA9111-mtunico,
                ptot like PA9111-porsmn,
                int like ZINT_EVAL-intereses,
                mot like Z9HRMOTEMB-dsmotemb,
                stat like Z9HRTSTEMB-tstatus,
                cedb like PA9111-nbbenfr,
                nomb like PA9111-cibenfr,
                trib1 like PA9111-tribunal,
                nofic1 like PA9111-numofic,
                fofc like PA9111-fofc,
                numfs like PA9111-numofcsup,
                statu like PA9111-status,
                FC like PA9111-begda,
                FF like PA9111-ENDDA,
                CM like PA9111-CODMOTIVO,

                END OF REG.

                ****declara otra con la estructura de la anterior asi, en esta tabla guardas tus datos:

                DATA: ZTEP TYPE TABLE OF REG .


                ***hace la logica para llenar tu tabla interna

                ***elimina los registros que quieras sin utilizar la palabra from

                DELETE ZTEP WHERE (condición).

                ****o si quieres eliminar los duplicados


                DELETE ADJACENT DUPLICATES FROM ZTEP COMPARING nom.


                espero te sirva,

                Saludos,

                Comentario

                • ALNICO
                  Senior Member
                  • may
                  • 107

                  #9
                  ya resolvi , gracias por la ayuda a todos.

                  Comentario

                  • uo4396
                    Member
                    • ago
                    • 90

                    #10
                    Delete from where se utiliza para tablas de diccioario. Por eso te dice que no existe esa tabla en el diccionario.
                    Tú deberías utilizar DELETE TU_TABLA_INTERNA WHERE condicion.

                    Saludos

                    Comentario

                    Trabajando...