Code: Alles auswählen.
DATA: BEGIN OF ls_fliste,
type TYPE irgendas_kundeneigenes,
fname TYPE fieldname,
END OF ls_fliste,
lt_fliste LIKE TABLE OF ls_fliste.
FIELD-SYMBOLS: <fname>." TYPE fieldname.
LOOP AT it_tabelle. "Hist. bedingt: Mit Kopfzeile
LOOP AT lt_fliste INTO ls_fliste
WHERE typ = '5'. "angenommener Feldinhalt 'MATNR'
concatenate 'IT_TABELLE-' ls-fliste-fname into ls_fliste-fname.
"Führt zum Feldinhalt 'IT_TABELLE-MATNR'
ASSIGN table field (ls_fliste-fname) TO <fname>. "sy-subrc = 4
CLEAR <fname>. "Feld IT_TABELLE-MATNR soll gelöscht werden
"(....)
ENDLOOP.
ENDLOOP
Dieser Zusatz schränkt den Suchbereich, in dem nach dem in (name) angegebenen Datenobjekt gesucht wird (siehe unten), auf die mit TABLES deklarierten Schnittstellen-Arbeitsbereiche der aktuellen Programmgruppe ein.
Ich bin ein Oberpenner. Danke schön. Ich verspreche auch, wieder mehr zu schlafen, wenn das Projekt vorbei istHelmutB hat geschrieben:wieso ASSIGN TABLE FIELD ? Ich würde ASSIGN verwenden, dann sollte es gehen.
Code: Alles auswählen.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE 'IT_TABELLE' TO <fname>.
Weil die Feldnamen in der ITAB stehen. Es geht ja nicht darum, das Feld MATNR zu löschen, sondern 20 Felder, die in einer Customizingtabelle zum Löschen eingetragen werdenDeathGuardian hat geschrieben:Und wieso nicht einfachCode: Alles auswählen.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE 'IT_TABELLE' TO <fname>.
Dann ist der Vorschlag von DeathGuardian doch immer noch gut und Perfomanter, weil das Conactenate wegfällt, mit einer Constante für den Tabellennamen wird es zudem besser wartbar:ralf.wenzel hat geschrieben:Weil die Feldnamen in der ITAB stehen. Es geht ja nicht darum, das Feld MATNR zu löschen, sondern 20 Felder, die in einer Customizingtabelle zum Löschen eingetragen werden
Code: Alles auswählen.
CONSTANTS c_tabname TYPE c LENGTH 25 VALUE 'IT_TABELLE' .
LOOP AT it_tabelle.
LOOP AT lt_fliste INTO ls_fliste. "WHERE nach belieben
ASSIGN (ls_fliste-fname) OF STRUCTURE c_tabname TO <fname>.
CLEAR <fname>.
ENDLOOP.
ENDLOOP.