Dynamisch erzeugte ITAB, ASSIGN, wie kriege ich die Struktur

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

Dynamisch erzeugte ITAB, ASSIGN, wie kriege ich die Struktur

Beitrag von enneos (ForumUser / 4 / 0 / 0 ) »
Hallo,

ich habe eine Struktur und eine zugehörige interne Tabelle dynmisch erzeugt, da die Felder erst zur Laufzeit festliegen (kein einfacher DDIC-Bezug möglich), und zwar so:

"GENERATE SUBROUTINE POOL lit_src NAME lva_subpool MESSAGE lva_msg."

LIT_SRC enthält dabei das Coding, das vereinfacht so aussieht:
(app ist ein Makro zum APPEND an LIT_SRC)

app 'REPORT dummy.'.
app 'FORM createtab CHANGING po_wa po_it.'.
app ''DATA: BEGIN OF lwa_wrk.'.
* Jetzt die dynamischen Felder:
LOOP AT it_lnart INTO lva_lnart.
CLEAR lva_line.
CONCATENATE 'DATA:' lva_lnart 'TYPE vgwrt.'
INTO lva_line SEPARATED BY space.
app lva_line.
ENDLOOP.
* Der Rest des Unterprogramm-Codings:
app 'DATA: END OF lwa_wrk.'.
app 'DATA: rf_wrk TYPE REF TO DATA.'.
app 'DATA: rf_tab TYPE REF TO DATA.'.
app 'CREATE DATA rf_wrk LIKE lwa_wrk.'.
app 'CREATE DATA rf_tab LIKE TABLE OF lwa_wrk.'.
app 'po_wa = rf_wrk.'.
app 'po_it = rf_tab.'.
app 'ENDFORM.'.

Dann kommt:

"PERFORM createtab IN PROGRAM (lva_subpool) CHANGING lwa_wrk lit_tab.

(LWA_WRK und LIT_TAB sind vom TYPE REF TO DATA)

nun noch:

ASSIGN lwa_wrk->* TO <fs_wrk>.
ASSIGN lit_tab->* TO <fs_tab>.

und ich habe die Struktur im Feldsymbol <fs_wrk> (TYPE ANY)
und die Tabelle im Feldsymbol <fs_tab> (TYPE TABLE).

Jetzt kommt mein Problem:
Obwohl ich im Debugger jedes einzelne Feld sehe, kann ich die einzelnen Felder der Struktur nicht über <fs_wrk>-feld1 usw. ansprechen.

Ich weiß, dass ich über "ASSIGN COMPONENT x ..." da rankomme,
da ich aber auch ein SORT auf die Tabelle machen will und deren Feldkatalog manipulieren will (Tabelle wird im ALV ausgegeben), wäre ein direkter Feldzugriff schon besser.
Irgendwie habe ich das Gefühl, dass das nicht mehr kompliziert sein kann,
aber irgendwie sehe ich den Wald vor lauter Bäumen nicht.

Wer kann helfen?
Vielen Dank!

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo enneos,

da Du das Feldsymbol generisch (TYPE ANY) angelegt hast, sagst Du ja, dass Du nicht weißt, wie die eventuelle Struktur aussieht. Daher weiß es der Compiler noch weniger.

Um Deinen Sort zu machen, musst Du die dynamische Form mit SORT itab BY (lt_sort). benutzen, in dem Du die Feldnamen in eine Tabelle füllst (siehe Doku zu SORT).

Und der Zugriff auf die einzelnen Felder ist tatsächlich nur über ASSIGN COMPONENT möglich.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von pohlmann-schwarza (ForumUser / 91 / 0 / 0 ) »
Hi Leute, ich habe genau das gleiche Problem.
Sollte es nicht irgendwie möglich sein über ein Casting auf die Komponenten zuzugreifen?

In etwa so:
ASSIGN lwa_wrk->* TO <fs_wrk> CASTING LIKE ???.


Ich würde gern die Workarea füllen um dann damit in der Tabelle zu suchen.


Viele Grüße
Michael

Seite 1 von 1

Vergleichbare Themen

2
Antw.
6899
Views
describe_by_name für dynamisch erzeugte ITAB
von Der Formulator » 12.11.2021 15:07 • Verfasst in ABAP® Core
8
Antw.
4432
Views
Select/Endselect in dynamisch erzeugte itab
von nickname8 » 20.07.2015 13:15 • Verfasst in ABAP® für Anfänger
6
Antw.
4155
Views
Zugriff auf dynamisch erzeugte Spaltennamen einer ITAB
von Akatash » 15.09.2017 12:09 • Verfasst in ABAP® für Anfänger
4
Antw.
9229
Views
Dynamisch erzeugte Tabelle füllen
von reinhold_j » 16.05.2006 13:18 • Verfasst in ABAP Objects®
2
Antw.
4298
Views
Dynamisch erzeugte Tabelle erweitern
von ewx » 18.01.2007 14:57 • Verfasst in ABAP Objects®

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1777
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

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

Hilfe zum FB MATERIAL_MAINTAIN_DARK
Gestern von black_adept gelöst 8 / 1777
HR-Entgeltnachweis
vor 2 Tagen von ChrisB 4 / 2319

Unbeantwortete Forenbeiträge

Export von Spools in XLSX
vor 4 Tagen von abapamateur 1 / 352
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 947
MS-Word als Editor
letzen Monat von tekko 1 / 4463