Struktur dynamisch bearbeiten

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

Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Hallo zusammen,
ich habe ein folgendes Problem, vllt. hat jemand von euch was ähnliches schon mal bearbeitet.

ich habe verschiedene Strukturen mit den Daten zur Verfügung. Einige Felder dieser Strukturen brauche ich auch für meine Prüfungen.

d.h. es soll der Typ einer Struktur dynamisch erkannt werden, dann über diese Struktur loopen und alle Felder in eine iTab : Feldname in die Spalte "FELDNAME" und inhalt dieses Feldes in die Spalte "FELDINHALT" der internen Tabelle speichern.

Ich habe über RTTI Klassen schon mal gelesen und ausprobiert. leider komme ich nicht weiter, bzw. die Komponenten einer Struktur ermitteln klappt es, aber weiter in die tiefe Strukturen spricngen und weiter bearbeiten nicht gescahfft. ich denke es ist mit einem Rekursiven Aufruf einer Methode klappen soll. Habe aber leider keine Erfahrung damit.

meine Probleme:
- mindestens ein Feld dieser Struktur ist von dem Typ Tabellentyp oder Struktur. d.h. in der Loop-Schleife diese Strukturen durchgehen und in die iTab speichern.
- wenn ein Feld vom Typ eine Tabelle ist, dann sollen diese Felder auch in iTab übernommen werden. dann werden in der iTab zwei gleiche Feldnamen auftauchen.

aber das ist eigentlich auch nicht schlimm...

Also eine Bitte, hat jemand einen Beispiel vllt. oder eine Lösung, wie ich über eine Struktur dynamisch loopen kann bis alle Felder ermittel werden und in eine iTab gespeichert werden?

Vielen Dank!
Gruß

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


Re: Struktur dynamisch bearbeiten

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Was willst du denn machen? Serialisierung einer evtl. auch tiefen Struktur?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Struktur dynamisch bearbeiten

Beitrag von ralf.wenzel (Top Expert / 3776 / 176 / 262 ) »
Das ist eigentlich nicht so schwer. Du schreibst eine Methode, die per RTTI die Komponenten ausliest und als Tabelle zurückgibt und die sich selbst aufruft (mit jedem einzelnen Komponentennamen). Das ist das, was du mit rekursivem Aufruf meintest. Hab ich schon gemacht, funktioniert.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Struktur dynamisch bearbeiten

Beitrag von tofralu (ForumUser / 36 / 1 / 3 ) »
Hallo..

Wenn es nur das ist:
d.h. es soll der Typ einer Struktur dynamisch erkannt werden, dann über diese Struktur loopen und alle Felder in eine iTab : Feldname in die Spalte "FELDNAME" und inhalt dieses Feldes in die Spalte "FELDINHALT" der internen Tabelle speichern.

Warum arbeitest du dann nicht mit Feldsymbolen und weist den Type "Any" aus?

Re: Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
black_adept hat geschrieben:Was willst du denn machen? Serialisierung einer evtl. auch tiefen Struktur?
ja so eine Art... eine Struktur mit evtl. tiefen Strukturen in eine interne Tabelle klopfen.

Re: Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
ralf.wenzel hat geschrieben:Das ist eigentlich nicht so schwer. Du schreibst eine Methode, die per RTTI die Komponenten ausliest und als Tabelle zurückgibt und die sich selbst aufruft (mit jedem einzelnen Komponentennamen). Das ist das, was du mit rekursivem Aufruf meintest. Hab ich schon gemacht, funktioniert.


Ralf
gibt es vllt. eine Methode? oder Beispiel Koding?

Re: Struktur dynamisch bearbeiten

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Z.B. die Klasse cl_abap_structdescr

Beispielcoding:

Code: Alles auswählen.


* Struktur holen
cl_abap_structdescr=>describe_by_name( )
* Dann die komponente
 lo_struct->get_components( ).

Z.B. Neue Komponente erzeugen
        ls_comp-name =  'CELL'.
        ls_comp-type ?= cl_abap_datadescr=>describe_by_name( 'LVC_T_STYL' ).
* Hinzufügen
        APPEND ls_comp TO me->lt_comp.
* Die neue Struktur erzeugen
        lo_struc_new = cl_abap_structdescr=>create( me->lt_comp ).
Nachtrag
Dient nur als Beispiel

Grüße 4Byte
Es gibt 10 Menschen die binär verstehen :)

Re: Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
4byte hat geschrieben:Z.B. die Klasse cl_abap_structdescr

Beispielcoding:

Code: Alles auswählen.


* Struktur holen
cl_abap_structdescr=>describe_by_name( )
* Dann die komponente
 lo_struct->get_components( ).

Z.B. Neue Komponente erzeugen
        ls_comp-name =  'CELL'.
        ls_comp-type ?= cl_abap_datadescr=>describe_by_name( 'LVC_T_STYL' ).
* Hinzufügen
        APPEND ls_comp TO me->lt_comp.
* Die neue Struktur erzeugen
        lo_struc_new = cl_abap_structdescr=>create( me->lt_comp ).
Nachtrag
Dient nur als Beispiel

Grüße 4Byte
hi,
ja es werden mit dieser Methode erstmal alle Komponente einer Struktur ermittelt, und diese können dann in die iTab übernommen werden. ist ok.
ABER..
wenn ein Feld vom Typ eine tiefe Struktur ist, d.h. es soll dann über diese Struktur weitere Schleife laufen... usw. und hier habe ich ein Problem.. entweder kann man x-mal die Loop Schleifen einbauen, oder rekursive arbeiten... aber dafür habe ich keinen Beispiel gefunden.. :(

Re: Struktur dynamisch bearbeiten

Beitrag von 4byte (Specialist / 124 / 37 / 35 ) »
Na der rekursive Aufruf waäre dann ungefährt so:

Code: Alles auswählen.

method get_struct
*Hole die Komponenten der Struktur
--> Siehe mein erster beitrag
*Hat die Struktur eine Komponente die wieder eine Struktur hat? 
Ich Meine hierfür gibt es Fubas, die dir den Typ der Kopmponente holen. Weis ich grad nicht auswendig
*Wenn ja dann Aufruf der Methode get_struct
me->get_struct(importing is_struct)
*Wenn Nein Abbruch --> Kein rekursiver Aufruf mehr  

endmethod
Ich hoffe ich hab dich richtig verstanden :wink:
Es gibt 10 Menschen die binär verstehen :)

Re: Struktur dynamisch bearbeiten

Beitrag von Icke0801 (Specialist / 126 / 97 / 7 ) »
isp hat geschrieben: hi,
ja es werden mit dieser Methode erstmal alle Komponente einer Struktur ermittelt, und diese können dann in die iTab übernommen werden. ist ok.
ABER..
wenn ein Feld vom Typ eine tiefe Struktur ist, d.h. es soll dann über diese Struktur weitere Schleife laufen... usw. und hier habe ich ein Problem.. entweder kann man x-mal die Loop Schleifen einbauen, oder rekursive arbeiten... aber dafür habe ich keinen Beispiel gefunden.. :(
https://www.tricktresor.de/blog/laufzei ... e-tabelle/
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Re: Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Icke0801 hat geschrieben:
isp hat geschrieben: hi,
ja es werden mit dieser Methode erstmal alle Komponente einer Struktur ermittelt, und diese können dann in die iTab übernommen werden. ist ok.
ABER..
wenn ein Feld vom Typ eine tiefe Struktur ist, d.h. es soll dann über diese Struktur weitere Schleife laufen... usw. und hier habe ich ein Problem.. entweder kann man x-mal die Loop Schleifen einbauen, oder rekursive arbeiten... aber dafür habe ich keinen Beispiel gefunden.. :(
https://www.tricktresor.de/blog/laufzei ... e-tabelle/
Danke. Diese Lösung geht aber auf die Bretter, sobald ein Feld als Tabellentyp typisiert ist.

Re: Struktur dynamisch bearbeiten

Beitrag von Icke0801 (Specialist / 126 / 97 / 7 ) »
isp hat geschrieben:
Danke. Diese Lösung geht aber auf die Bretter, sobald ein Feld als Tabellentyp typisiert ist.
Ich hab grad kein System.
Was sagt der debugger?
--
Grüße aus der Endlosschleife
-= Icke =-
abapTools

Re: Struktur dynamisch bearbeiten

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
vllt. hilft es jemandem auch weiter....
ich habe diese Lösung umgesetzt und dann an meine Bedürfnisse angepasst:
https://sapinsider.wispubs.com/Assets/A ... hrough-RFC

Re: Struktur dynamisch bearbeiten

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Moin isp,

wenn es "nur" um eine Serialisierung bzw. spätere Deserialisierung geht: Nimm die von SAP angebotene ID-Transformation ( --> der Blog von ewx : https://www.tricktresor.de/blog/serialize-me/ )
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

0
Antw.
1261
Views
wie kann ich diese Struktur bearbeiten in OO??
von mazu » 19.12.2007 13:11 • Verfasst in ABAP Objects®
4
Antw.
4051
Views
Feldzugriff auf Struktur dynamisch gestalten
von JohnLocklay » 07.11.2017 11:57 • Verfasst in ABAP® Core
6
Antw.
1724
Views
Struktur dynamisch auslesen / schreiben
von Ingo » 04.08.2021 09:52 • Verfasst in ABAP® Core
36
Antw.
3572
Views
FuBA die Struktur mitgeben (dynamisch)
von L0w-RiDer » 27.03.2019 16:13 • Verfasst in ABAP® für Anfänger
3
Antw.
4288
Views
Dynamisch Struktur und Tabelle generieren und füllen
von Kresiquadratur » 16.07.2007 14:32 • Verfasst in ABAP® für Anfänger

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.