Hallo Allerseits,
ich bastle momentan an einem Programm das in OO geschrieben ist, aber folgendes Problem würde auch beim prozeduralen Stil auftreten.
Bin in ABAP leider noch nicht so fit und fange an zu verzweifeln
Als Beispiel können wir das Flugdatenmodell nehmen.
ich habe das ganze mal zum testen als einfachen Report versucht, und rufe im Laufe des Reports folgendes Unterprogramm auf
Code: Alles auswählen.
FORM SELECT_TABLES_FROM_DB.
LOOP AT it_tables INTO wa_tables.
gv_tablename = wa_tables-tabname.
gv_tablenumber = wa_tables-tabnumb.
PERFORM SELECT_DB_TABLE.
ENDLOOP.
ENDFORM. "SELECT_TABLES_FROM_DB
In "it_tables" stehen Tabellennamen, denen auch eine Nummer zugewiesen ist.
Nehmen wir an es wären scarr (1); spfli (2) & sflight (3).
Jetz soll generisch jede Tabelle aus der Datenbank gelesen werden.
Code: Alles auswählen.
FORM SELECT_DB_TABLE.
CREATE DATA it_db_table TYPE STANDARD TABLE OF (gv_tablename).
ASSIGN it_db_table->* TO <it_db_table>.
SELECT * FROM (gv_tablename) INTO TABLE <it_db_table>
WHERE carrid IN so_carrid.
Das funktioniert soweit ganz gut, allerdings überschreibt er jedes mal <it_db_table>, so dass sie am Ende nur die Daten von "scarr" behinhaltet, ich wollte aber für jede Tabelle ein eigenes Ergebnis haben.
Habe deswegen Folgendes dazu geschrieben:
Code: Alles auswählen.
CASE gv_tablenumber.
WHEN 1.
ASSIGN it_db_table->* TO <it_table_1>.
MOVE <it_db_table> TO <it_table_1>.
WHEN 2.
ASSIGN it_db_table->* TO <it_table_2>.
MOVE <it_db_table> TO <it_table_2>.
WHEN 3.
ASSIGN it_db_table->* TO <it_table_3>.
MOVE <it_db_table> TO <it_table_3>.
ENDCASE.
ENDFORM.
Ist zwar nicht so schön, aber es funktioniert soweit.
Sinn sollte halt sein, dass ich jegliche Tabellennamen in die "it_tables" eintragen kann.
Wenn jemand hier schon eine Ahnung hat, wie man das sauberer machen könnte, wäre ich bereits sehr dankbar.
Mein eigentliches Problem liegt aber im Folgenden:
Ich will im Laufe des Programms auf bestimmte Teile dieser Feldsymbole zugreifen, bzw den Inhalt aus der Tabelle auf die sie zeigen. Dies ist aber nicht möglich, weil sie nicht mehr "assigned" sind.
Könnt ihr mir an diesem Punkt vielleicht helfen?
Ich will mir eben keine festdefinierte Tabellen erzeugen, sondern wenn möglich alles nur über solche Feldsymbole und Referenzen laufen lassen.
Wie ich das ganze nachher in Methoden verpacke ist dann hoffe ich mal das kleinere Übel.
Vielen Dank schon mal im voraus
& viele Grüße.