Ver la Versión Completa : 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
26/05/09, 15:36:03
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.
sigue igual , cambie la forma de declaracion pero el mismo error , es como si no existiera
luis999
26/05/09, 17:07:49
Has declarado las tablas que usas:
tables: PA0001, Pa0185.
Estas seguro que existe la PA9111?
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
zonanet
26/05/09, 17:20:37
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
luis999
26/05/09, 17:23:35
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
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
camaron
26/05/09, 20:14:10
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,
ya resolvi , gracias por la ayuda a todos.
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
www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web