Dynamische Variablennamen

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

Dynamische Variablennamen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Guten Tag,

ist es möglich, Variablennamen dynamisch zur Laufzeit zu generieren und diesen anschließend Werte zuzuweisen? In einer LOOP-Schleife erzeuge ich bspw. eine weitere gefilterte ITAB namens LT_PART, deren Inhalt in eine Variable übertragen werden soll, die den Namen der Tabelle und den Schleifenzähler enthält. Quasi so hier:

Code: Alles auswählen.

data(|LT_PART_{ l_tabix }|) = LT_PART[].
Die Variable soll anschließend also LT_PART_01", "LT_PART_02" usw. lauten und den Inhalt der jeweils pro Schleife gefilterten Tabelle LT_PART enthalten. Im Bsp. hier enthält <ex_tab> den Inhalt von LT_PART, ich benötige aber den Inhalt von LT_PART pro Schleife in LT_PART_01, _02, _03 bzw. <LT_PART_01, _02, _03> usw. statt in <ex_tab>.

Code: Alles auswählen.

DATA lt_part type t_type.
FIELD-SYMBOLS <ex_tab> TYPE any. 
DATA dref TYPE REF TO data.

CREATE DATA dref TYPE t_type. 

DATA(ex_tab) = |LT_PART_{ l_tabix }|.
ASSIGN dref->* TO <ex_tab>.
<ex_tab> = lt_part.
Den dynamischen ITAB-Namen samt Inhalt benötige ich später wieder an einer anderen Stelle.

Vielen Dank.

sapdepp

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


Re: Dynamische Variablennamen

Beitrag von black_adept (Top Expert / 3950 / 105 / 886 ) »
Moin sapdepp,

definiere dir eine Struktur mit 2 Feldern:Name type string/char und r_inhalt type ref to data und einen Tabellentyp der auf diesen Strukturtyp zeigt. Damit solltest du das machen können, was du oben beschreibst.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Dynamische Variablennamen

Beitrag von sapdepp (Specialist / 210 / 35 / 2 ) »
Vielen Dank. Du meinst so hier? Habe gerade kein SAP. Könnte aber ggf. knallen, wegen tiefer vs. flacher Struktur. Kann nicht probieren gerade.

Code: Alles auswählen.

DATA: BEGIN OF ls_struc,
        name     TYPE string,
        r_inhalt TYPE REF TO data,
      END OF ls_struc.

TYPES ty_struc_t LIKE TABLE OF ls_struc.
DATA lt_struc TYPE ty_struc_t.

FIELD-SYMBOLS <ex_tab> TYPE any.

Code: Alles auswählen.

CREATE DATA ls_struc-r_inhalt TYPE TABLE OF t_type.
ASSIGN ls_struc-r_inhalt->* TO <ex_tab>.
<ex_tab> = lt_part.
ls_struc-name = |LT_PART_{ l_tabix }|.
ls_struc-r_inhalt = <ex_tab>.
APPEND ls_struc TO lt_struc.
VG
sapdepp

Re: Dynamische Variablennamen

Beitrag von a-dead-trousers (Top Expert / 4287 / 214 / 1142 ) »
Das ist ... ganz falsch.

Hier nur grob umrissen:

Code: Alles auswählen.

TYPES: BEGIN OF ty_struc,
        name     TYPE string,
        r_inhalt TYPE REF TO data,
      END OF ty_struc.
TYPES ty_struc_t TYPE STANDARD TABLE OF ty_struc WITH DEFAULT KEY.
DATA lt_struc TYPE ty_struc_t.
FIELD-SYMBOL: <lt_table> TYPE STANDARD TABLE. "<-- Wichtiges Casting für den generischen Tabellenzugriff

* Eine neue "Tabelle" erzeugen und befüllen
DATA: r_table TYPE REF TO data.
CREATE DATA r_table TYPE STANDARD TABLE OF t000 WITH DEFAULT KEY.
ASSIGN r_table->* TO <lt_table>.
SELECT * FROM t000 INTO CORRESPONDING FIELDS OF TABLE <lt_table>.
APPEND VALUE #( name = 'LT_PART_01' r_inhalt = r_table ) TO lt_struc.

* Auf eine "Tabelle" zugreifen und Inhalte ausgeben
READ TABLE lt_struc ASSIGNING FIELD-SYMBOL(<ls_struc>)
  WITH KEY name = 'LT_PART_01'.
IF sy-subrc EQ 0.
  ASSIGN <ls_struc>-r_inhalt->* TO <lt_table>.
  LOOP AT <lt_table> ASSIGNING FIELD-SYMBOL(<la_line>).
    ASSIGN COMPONENT 'MANDT' OF STRUCTURE <la_line> TO FIELD-SYMBOL(<ld_mandt>).
    WRITE <ld_mandt>.
  ENDLOOP.
ENDIF.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 2):
sapdeppIcke0801

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

Seite 1 von 1

Vergleichbare Themen

0
Antw.
910
Views
Dynamische Variablennamen?
von mbecker » 23.03.2009 12:16 • Verfasst in ABAP® für Anfänger
3
Antw.
1897
Views
tabellennamen und Variablennamen ändern
von kaim77 » 26.02.2013 16:47 • Verfasst in ABAP® für Anfänger
3
Antw.
1834
Views
Dynamische SQL
von Gabriel99 » 22.06.2015 17:59 • Verfasst in ABAP® für Anfänger
2
Antw.
2238
Views
Dynamische Referenz
von sapnup » 24.10.2016 13:07 • Verfasst in ABAP® für Anfänger
4
Antw.
2897
Views
Dynamische Feldzuweisung
von SAP_ENTWICKLER » 06.12.2017 15:45 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

CDS VIEWS aufsummieren von Werte
vor 4 Stunden von ZF_SAPler 3 / 38
Artikel automatisch in va01
vor 3 Tagen von wreichelt 2 / 55
langtexte beim Fertigungsauftrag
vor 3 Tagen von ByteMeBaby 7 / 6428
Updates der Daten, Fehlermeldung
vor 4 Tagen von Egzon gelöst 1 / 76

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.

Aktuelle Forenbeiträge

CDS VIEWS aufsummieren von Werte
vor 4 Stunden von ZF_SAPler 3 / 38
Artikel automatisch in va01
vor 3 Tagen von wreichelt 2 / 55
langtexte beim Fertigungsauftrag
vor 3 Tagen von ByteMeBaby 7 / 6428
Updates der Daten, Fehlermeldung
vor 4 Tagen von Egzon gelöst 1 / 76

Unbeantwortete Forenbeiträge

Updates der Daten, Fehlermeldung
vor 4 Tagen von Egzon 1 / 76
Zwischensumme Adobe Forms
letzen Monat von Lucyalison 1 / 310