Interne Tabelle dynamisch erzeugen

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
9 Beiträge • Seite 1 von 1
9 Beiträge Seite 1 von 1

Interne Tabelle dynamisch erzeugen

Beitrag von Der Formulator (ForumUser / 34 / 8 / 0 ) »
Hallo,

ich habe folgendes Problem:

ich möchte in meinem Report eine Struktur erzeugen, die alle Felder der folgenden internen Tabelle beinhaltet:
Zeile POS FIELD
1 01 POSNR
2 02 MAKTX
3 03 MATNR
4 04 PZN
5 05 BATCH
6 06 LFIMG

Ich weiß, dass ich mit CREATE DATA jedes einzelne Feld bei einem LOOP erzeugen kann. Aber dann hätte ich - in diesem Fall ja nur die 6 einzelnen Felder.

Ich brauche aber eine Struktur, die den vertikalen Inhalt der Spalte FIELD horizontal darstellt, also so:

STRUC
POSNR MAKTX MATNR PZN BATCH LFIMG

Geht das?

Der Inhalt der internen Tabelle ist natürlich nicht immer gleich :-)

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


Re: Interne Tabelle dynamisch erzeugen

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Moin Forumulator,
wenn du eine Struktur hast, welche eine Obermenge der Felder besitzt welche du am Ende in der reduzierten Struktur haben willst ist das simpel.

Code: Alles auswählen.

REPORT.

DATA: ls_mara TYPE t005t,  " Struktur mit Obermenge der Felder, die in der Zielstruktur vorhanden sein sollen
      lr_data TYPE REF TO data.

DATA(lt_components) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_data( ls_mara ) )->get_components( ).
DELETE lt_components WHERE name <> 'SPRAS' " Nur diese 3 Komponenten erhalten
                       AND name <> 'LAND1'
                       AND name <> 'LANDX'.
DATA(lo_descr_reduced) = cl_abap_structdescr=>create( lt_components ).
CREATE DATA lr_data TYPE HANDLE lo_descr_reduced.
ASSIGN lr_data->* TO FIELD-SYMBOL(<ls_reduced_line>).
BREAK-POINT.

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Der Formulator (ForumUser / 34 / 8 / 0 ) »
Wenn ich LT_COMPONENTS kopiere bevor ich lösche und die Kopie leere,
dann kann ich doch anstatt LT_COMPONENT zu löschen die Datensätze zu den benötigten Feldern an die leere LT_COMPONENTS anhängen.
Somit hätte ich am Ende eine LT_COMPONENTS mit den gewünschten Feldern in der richtigen Reihenfolge... Soweit die Theorie.

Das probiere ich gleich mal aus!

Danke black_adept

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Der Formulator (ForumUser / 34 / 8 / 0 ) »
Hat fast geklappt.

Ich habe tatsächlich eine Struktur erzeugt, die nur die gewünschten Felder in der richtigen Reihenfolge enthält.

Jetzt habe ich nur ein Problem, wenn ich zu der Struktur auch noch eine interne Tabelle anlegen will deren Aufbau genau so aussieht. Also in diesem Fall eine Tabelle zu <ls_reduced_line>.

DATA(lo_descr_reduced) = cl_abap_structdescr=>create( lt_components ).
CREATE DATA lr_data TYPE HANDLE lo_descr_reduced.
ASSIGN lr_data->* TO FIELD-SYMBOL(<ls_reduced_line>).


Ich habe folgende Datendeklarationen gemacht:

DATA: gr_position TYPE REF TO data.
FIELD-SYMBOLS: <lfs_position> TYPE table.


und folgendes Coding eingefügt:

CREATE DATA gr_position TYPE (<ls_position>).
ASSIGN gr_position->* TO <lfs_position>.


Es kommt aber immer zu einem Dump, weil LS_POSITION nur zeichenartig sein darf...
01.jpg

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Der Formulator (ForumUser / 34 / 8 / 0 ) »
DATA(lo_tabledescr) = cl_abap_tabledescr=>create(
p_line_type = lo_descr_reduced
p_table_kind = cl_abap_tabledescr=>tablekind_std
p_unique = abap_false ).

* create data object
CREATE DATA lr_table TYPE HANDLE lo_tabledescr.
ASSIGN lr_table->* TO <lt_position>.

So klappt es...

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Zu diesem Thema habe ich mal eine kleine Sammlung hier angelegt.
gruß Jens

Folgende Benutzer bedankten sich beim Autor Tron für den Beitrag:
Der Formulator

<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Der Formulator (ForumUser / 34 / 8 / 0 ) »
Cool,

schade, dass man sich in diesem Forum nicht mehr registrieren kann...

Re: Interne Tabelle dynamisch erzeugen

Beitrag von Tron (Top Expert / 1327 / 35 / 332 ) »
Moin.
Der Formulator hat geschrieben:
25.10.2021 12:55
schade, dass man sich in diesem Forum nicht mehr registrieren kann...
In "diesem" Forum kann man sich nur deshalb nicht registrieren, weil ich diese option "disabled" habe. 😉
Ich müßte zuvor das Rechtesystem überarbeiten und da hatte ich noch keine Zeit zu.
gruß Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Interne Tabelle dynamisch erzeugen

Beitrag von DeathAndPain (Top Expert / 1941 / 257 / 412 ) »
Umm... mit dem komischen HANDLE-Schlüsselwort habe ich noch nie gearbeitet. In meiner Naivität würde ich sagen, dass Dein ursprünglicher Ansatz funktioniert hätte, Formulator, wenn Du anstelle von

CREATE DATA gr_position TYPE (<ls_position>).

einfach

CREATE DATA gr_position LIKE <ls_position>.

geschrieben hättest. Du hast zwar nirgends beschrieben, was <ls_position> eigentlich ist und wo es herkommt, aber dem Dump zufolge scheint es ja vom Typ Deiner gewünschten Struktur gewesen zu sein.

Seite 1 von 1

Vergleichbare Themen

12
Antw.
8038
Views
dynamisch interne Tabelle füllen
von LittleT » 03.04.2007 15:27 • Verfasst in ABAP® für Anfänger
8
Antw.
5394
Views
Interne Tabelle dynamisch generieren
von inab » 22.10.2008 10:19 • Verfasst in ABAP Objects®
5
Antw.
2898
Views
Interne Tabelle dynamisch anzeigen
von Embryo » 24.01.2013 10:38 • Verfasst in ABAP® für Anfänger
2
Antw.
4901
Views
Interne Tabelle dynamisch typisieren
von McQueenSix » 23.12.2016 14:07 • Verfasst in ABAP® Core
3
Antw.
3466
Views
Interne Tabelle dynamisch füllen
von stas » 27.10.2007 10:41 • Verfasst in ABAP® Core

Ü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

Aktuelle Forenbeiträge

Dialog-Container mit Toolbar/Status
vor einer Stunde von DeathAndPain gelöst 20 / 2398
Zeilenumbrüche ersetzen
vor 22 Stunden von ralf.wenzel 6 / 184
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1560

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

Dialog-Container mit Toolbar/Status
vor einer Stunde von DeathAndPain gelöst 20 / 2398
Zeilenumbrüche ersetzen
vor 22 Stunden von ralf.wenzel 6 / 184
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1560

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 2 Tagen von Bright4.5 1 / 626
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2253
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8841