Wie Field Symbol für Struktur generisch typisieren?

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Wie Field Symbol für Struktur generisch typisieren?

Beitrag von Michael71 (ForumUser / 17 / 5 / 0 ) »
Hallo zusammen,

ich möchte einen Loop über eine unbekannte Tabelle machen, die ich einem Unterprogramm übergebe.

Mit dem RTTI habe ich im Unterprogramm die Struktur ermittelt. (Instanz der Klasse "cl_abap_structdescr").

Im Unterprogramm benötige ich für den Loop einen Arbeitsbereich.
Den habe ich wie folgt eingerichtet!

FIELD-SYMBOLS: <Zeile> type any.
create data ln_tocsv type handle lr_strucdescr. "(cl_abap_structdescr)

* Dereferenzierte Strukturvariable dem Feldsymbol zuweisen.
assign ln_tocsv->* to <zeile>. "lt Debugger ist ln_tocsv eine Struktur vom Typ der übergebenen Tabelle.

Loop at lt_tocsv assigning <zeile>.
Write: / <zeile>-carrid. "Einfaches Beispiel -> Hier soll noch viel generischer Code entstehen.
endloop.

Ich teste das Unterprogramm mit der Tabelle SPFLI.
Wenn ich das Feld-Symbol mit type SPFLI typisiere funktioniert es.
Wenn ich es generisch mit type ANY typisiere, erhalte ich bei der Aktivierung die Fehlermeldung "Das Datenobjekt "<ZEILE>" besitzt keine Struktur und daher auch keine Komponente mit Namen "CARRID".

Ich würde nun gerne wissen wie ich vorgehen muss, damit es ohne Angabe einer bestimmten Struktur funktioniert oder anders gefragt,
wie lautet die "richtige" FIELD-SYMBOLS Anweisung?

Da mir die Hilfe nicht weiterhilft, wende ich mich an Euch.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Wie Field Symbol für Struktur generisch typisieren?

Beitrag von a-dead-trousers (Top Expert / 4287 / 214 / 1142 ) »
hi!

Du brauchst

Code: Alles auswählen.

ASSIGN COMPONENT ... OF STRUCTURE ... TO ...
und das je Feld das du bearbeiten/ausgeben möchtest.

In deinem Fall

Code: Alles auswählen.

FIELD-SYMBOLS: <feld> TYPE any. "Zusätzliches Feldsymbol

...

ASSIGN COMPONENT 'CARRID' OF STRUCTURE <zeile> TO <feld>.
WRITE: / <feld>.
Nähere Infos zum Befehl findest du in der ABAP-Hilfe.

lg ADT
Zuletzt geändert von a-dead-trousers am 14.02.2012 16:43, insgesamt 2-mal geändert.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Michael71

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Wie Field Symbol für Struktur generisch typisieren?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
<zeile>-carrid ist eben alles andere als generisch.

Code: Alles auswählen.

FIELD-SYMBOLS: <zeile> TYPE data.
FIELD-SYMBOLS: <feld> TYPE simple.

...
ASSIGN ln_tocsv->* TO <zeile>.
...
" Hier geht statt Literal auch eine zeichenartige Variable (Type C oder STRING):
ASSIGN COMPONENT 'CARRID' OF STRUCTURE <zeile> TO <feld>.
WRITE: / <feld>.
" oder über alle Komponenten:
DO.
  ASSIGN COMPONENT sy-index OF STRUCTURE <zeile> TO <feld>.
  IF sy-subrc NE 0.
    EXIT.
  ENDIF.
  WRITE: / <feld>.
ENDDO.
Natürlich funktioniert das Beispiel auch, wenn man beide FIELD-SYMBOLS mit Bezug auf TYPE any typisiert.
Ich nehme aber lieber eine möglichst restriktive Typisierung.

Wenn Deine Struktur keine Struktur ist, die nur Einzel-Komponenten enthält, die per WRITE ausgegeben werden können, wird es noch etwas komplexer.

Frank

OK, da war ich wohl etwas zu langsam...

Folgende Benutzer bedankten sich beim Autor Frank Dittrich für den Beitrag:
Michael71


Re: Wie Field Symbol für Struktur generisch typisieren?

Beitrag von Michael71 (ForumUser / 17 / 5 / 0 ) »
Danke für die schnellen Antworten.

Mit Euren Tipps habe ich jetzt auch die entsprechende Doku gefunden.

Seite 1 von 1

Vergleichbare Themen

10
Antw.
3061
Views
Probleme mit Field Symbol
von Kenny » 03.04.2013 17:11 • Verfasst in ABAP® für Anfänger
3
Antw.
2904
Views
Dump bei Field-symbol
von tho_died » 24.06.2008 14:43 • Verfasst in ABAP® für Anfänger
8
Antw.
21632
Views
Field-Symbol und löschen von Tabellenzeilen
von UserBC » 07.12.2008 21:11 • Verfasst in ABAP® für Anfänger
2
Antw.
2343
Views
IMPORT FROM MEMORY mit Field-Symbol
von Somani » 09.09.2013 17:14 • Verfasst in ABAP® Core
1
Antw.
1271
Views
Field-Symbol als Importing Parameter
von tekko » 12.06.2021 18:23 • Verfasst in ABAP Objects®

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.