Tabellenstruktur erzeugen aus Parameter-Wert

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von Patrick1982 (ForumUser / 28 / 4 / 0 ) »
Moin,

ich habe folgendes Problem:
Und zwar habe ich einen Selection-Screen, auf dem der Anwender den Namen einer beliebigen DB-Tabelle eintragen kann. Also ganz einfach:

Code: Alles auswählen.

PARAMETERS: p_table TYPE tabname.
Im Verarbeitungsblock möchte ich dann eine Struktur aufbauen, die der eingetragenen Tabelle entspricht, also sowas wie

Code: Alles auswählen.

DATA: itab TYPE „Wert aus p_table“.
Nur dass ich hier eben nicht TYPE p_table wählen kann, weil der Datentyp des Parameters natürlich TABNAME und nicht eine Tabellenstruktur ist.

Ich hoffe, ihr habt mein Problem verstanden und eine Lösung für mich.
Besten Dank!
Patrick

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



Re: Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von DeathAndPain (Top Expert / 1795 / 213 / 396 ) »
Deine Antwort ist gut und richtig. Dennoch bin ich neugierig, ob er das immer noch machen möchte, wenn er gelesen hat, wie kompliziert das ist. 😁 Aber geht halt nicht anders. Wenn man den Typ nicht statisch angeben kann, muss man mit Datenreferenzen arbeiten.

Wobei ich persönlich der Meinung bin, dass das in ABAP nicht schön gelöst ist. Verweise auf Speicherbereiche stammen aus der Zeit von Assembler. Selbst Basic hatte sie schon hinter sich gelassen. Da sollte sich eine Abstraktion finden lassen, die es erlaubt, trotzdem mit einem konkret benamten Datenfeld dynamisch deklarierten Typs zu arbeiten, anstatt Referenzen auf Speicherbereiche zu erzeugen, in denen ein Datenobjekt schwebt, das ohne diese Referenzen aufhört zu existieren.

Re: Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
DeathAndPain hat geschrieben:
17.02.2020 13:31
Dennoch bin ich neugierig, ob er das immer noch machen möchte, wenn er gelesen hat, wie kompliziert das ist.
Das ist nicht schwierig sondern 1 Daten- und eine Feldsymboldeklaration und 2 (kurze) Zeilen Code ganz ohne RTTI

Code: Alles auswählen.

REPORT.

DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lt_data> TYPE STANDARD TABLE.

PARAMETERS: tabname TYPE tabname DEFAULT 'T005'.

CREATE DATA lr_data TYPE STANDARD TABLE OF (tabname) WITH NON-UNIQUE DEFAULT KEY.
ASSIGN lr_data->* TO <lt_data>.
BREAK-POINT.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
Patrick1982

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Stimmt! Warum kompliziert, wenn es auch einfach geht...

Re: Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von Patrick1982 (ForumUser / 28 / 4 / 0 ) »
black_adept hat geschrieben:
17.02.2020 13:40
Das ist nicht schwierig sondern 1 Daten- und eine Feldsymboldeklaration und 2 (kurze) Zeilen Code ganz ohne RTTI

Code: Alles auswählen.

REPORT.

DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lt_data> TYPE STANDARD TABLE.

PARAMETERS: tabname TYPE tabname DEFAULT 'T005'.

CREATE DATA lr_data TYPE STANDARD TABLE OF (tabname) WITH NON-UNIQUE DEFAULT KEY.
ASSIGN lr_data->* TO <lt_data>.
BREAK-POINT.
Moin!
Vielen Dank schon mal für diesen tollen Lösungsansatz! Das klappt auch schon fast ganz wunderbar.
Ich habe nach dem selben System auch eine Struktur aufgebaut:

Code: Alles auswählen.

  CREATE DATA lr_table TYPE STANDARD TABLE OF (p_table) WITH NON-UNIQUE DEFAULT KEY.
  ASSIGN lr_table->* TO FIELD-SYMBOL(<lt_table>).

  CREATE DATA lr_structure TYPE (p_table).
  ASSIGN lr_structure->* TO FIELD-SYMBOL(<ls_structure>).
Nun möchte ich in meinem Programm die Struktur füllen und diese dann in die Tabelle schreiben.
Die Struktur kann ich auch ganz easy füllen, aber wenn ich diese dann folgendermaßen in die Tabelle schreiben will:

Code: Alles auswählen.

    APPEND <ls_structure> TO <lt_table>.
Dann erscheint folgender Fehler beim Syntax-Check:
"<LT_TABLE>" ist keine interne Tabelle.
Was mach ich hier falsch?
Vielen Dank,
Patrick

Re: Tabellenstruktur erzeugen aus Parameter-Wert

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Du musst hier leider das Feldsymbol explizit definieren, weil aus dem Kontext heraus der Typ nicht ermittelt werden kann.

Code: Alles auswählen.

field-symbols: <lt_table> type standard table.
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

1
Antw.
1668
Views
Der Parameter NODE enthält einen ungültigen Wert
von Dyrdek » 10.08.2014 14:50 • Verfasst in Web-Dynpro, BSP + BHTML
2
Antw.
1282
Views
Tabellenstruktur
von Ines » 12.10.2006 22:51 • Verfasst in ABAP® für Anfänger
3
Antw.
1688
Views
Tabellenstruktur geändert...
von SAPAlex » 25.04.2008 20:18 • Verfasst in ABAP® für Anfänger
1
Antw.
1681
Views
Tabellenstruktur ändern
von dan » 11.03.2009 16:31 • Verfasst in ABAP® für Anfänger
2
Antw.
1527
Views
Dynamische Tabellenstruktur erstellen
von skill » 13.06.2007 10:19 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 72
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141