Probleme mit dynamischen Tabellennamen

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

Probleme mit dynamischen Tabellennamen

Beitrag von DerDom (ForumUser / 6 / 0 / 0 ) »
Hi allerseits, ich habe zu ähnlichen Problemen bereits ne Menge Postings gelesen und entweder passten diese nicht ganz auf mein Problem oder ich hab es nicht ganz verstanden, deswegen frage ich jetzt einfach mal in die Runde.
Ich baue einen Selektionsbildschirm, der mir Informationen aus der Tabelle DD02L anzeigt, und zwar Tabellennamen in einem ausgewählten Bereich und die Zahl ihrer Einträge. Die Namen sind nicht das Problem, die erhalte ich durch dieses Select:

Code: Alles auswählen.

DATA tabnamefield(30) TYPE c.
PARAMETERS: num_res TYPE i DEFAULT 50.
SELECT-OPTIONS tabnsel FOR nameintv.
DATA entries TYPE i.

SELECT tabname BYPASSING BUFFER
  FROM dd02l
  INTO tabnamefield
  UP TO num_res ROWS
  WHERE tabname IN tabnsel.
Dieses Select steht in dem Start-Of-Selection-Block, und funktioniert auch einwandfrei. Ich möchte nun aber auch die Anzahl der Zeilen jeder gefundenen Tabelle in einer Liste ausgeben und dachte naiv, das ginge so:

Code: Alles auswählen.

 SELECT COUNT(*)
    FROM (tabnamefield)
    INTO entries.
In dem Start-Of-Selection-Block steht hinter den beiden Selects eine Write Anweisung um die Werte auszudrucken:

Code: Alles auswählen.

IF colorchc = 'X'.
  colorchc = ' '. WRITE: / tabnamefield, entries.
ELSE.
  colorchc = 'X'. WRITE: / tabnamefield COLOR
  COL_HEADING, entries COLOR COL_HEADING.
ENDIF.
Wenn ich dieses Programm starte, erhalte ich einen Kurzdump, mit der Meldung " " ist im Abap-Dictionary nicht als Tabelle oder View deklariert. tabnamefield hat im Debugger aber eindeutig den richtigen Namen als Wert.
Was mache ich falsch? Hat da schon mal einer den selben Fehler gehabt?

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


Beitrag von Jupp (ForumUser / 47 / 0 / 2 ) »
In DD02l sind verschiedene Tabellenklassen abgelegt, vielleicht liegts ja daran.

Wenn der Select sich aus DD02l eine Struktur holt, dann macht das select count nicht allzuviel Sinn.
Always Better Alternatives Possible.

Beitrag von DerDom (ForumUser / 6 / 0 / 0 ) »
Hm, könnte sein. Ich vermute aber, daß das From nicht mit einer Variablen klar kommt. Ich hab mir mal die SE16 genauer angesehen und SAP hat das Problem auch umgangen. Die erstellen jedesmal das Programm neu und lassen den Tabellennamen fest in den Quellcode reinschreiben. Da steht dann immer der aktuelle Tabellenname in Klartext, keine Variable in Sicht.

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi,
...
SELECT COUNT(*)
FROM (tabnamefield)
INTO entries.

funktioniert bei mir einwandfrei:

was steht zum Zeitpunkt des selects in der variablen
tabnamefield ?



lg Andreas

Beitrag von DerDom (ForumUser / 6 / 0 / 0 ) »
Da steht laut Debugger ein vollkommen korrekter Name einer Tabelle drin, als Dump bekomme ich aber ein ",#>>PD... (und weitere Sonderzeichen)" ist im ABAP-Dictionary nicht als Tabelle oder View deklariert.
Ich habe inzwischen ein Programm von SAP gefunden, das im Prinzip das selbe macht, nur den Tabellennamen der gezählt werden soll nicht aus DD02L zieht, sondern als Selektion einer Liste. Das Programm sieht so aus

Code: Alles auswählen.

DATA: tabname TYPE tabname,
count TYPE i.

START-OF-SELECTION.
  WRITE: / 'SPFLI', / 'SFLIGHT', / 'SBOOK'.

AT LINE-SELECTION.
  READ CURRENT LINE line value INTO tabname.

  SELECT COUNT(*)  FROM (tabname) INTO count.

  WRITE: / 'The table', tabname(7), 'contains',
  count, 'entries'.
Typ meiner Variable habe ich inzwischen angepasst, so dass bei mir nur noch folgendes passiert:

Code: Alles auswählen.

SELECT tabname
  FROM dd02l
  INTO tabname
  UP TO num_res ROWS
  WHERE tabname IN tabnsel.


    SELECT COUNT(*)
    FROM (tabname)
    INTO entries.
Ich verstehs nicht. Der Debugger zeigt mir die selben Typen, Inhalte und Werte an, wie in dem Programm von SAP, trotzdem fliegt mir das immer um die Ohren.

Beitrag von DerDom (ForumUser / 6 / 0 / 0 ) »
Ah, ich habs. In DD02L sind nicht nur die Namen von Tabellen sondern auch von Strukturen gespeichert. Gibt man in der From-Klausel den Namen einer Strukur an, gibt das die Exception. Ich hab das Problem umgangen, indem ich noch prüfe, ob in der Spalte TABCLASS TRANSP steht, also so:

Code: Alles auswählen.

SELECT tabname
FROM dd02l
INTO tabname
UP TO num_res ROWS
WHERE tabname IN tabnsel 
   AND dd02l~tabclass = 'TRANSP'.


SELECT COUNT(*)
FROM (tabname)
INTO entries.

Beitrag von Investigator ( / / 0 / 3 ) »
Jo, nur: das konnte man schon im Posting von Jupp 3 Stunden früher lesen. :roll:
In DD02l sind verschiedene Tabellenklassen abgelegt, vielleicht liegts ja daran.

Wenn der Select sich aus DD02l eine Struktur holt, dann macht das select count nicht allzuviel Sinn.
[/quote]

Beitrag von DerDom (ForumUser / 6 / 0 / 0 ) »
Stimmt. Und nun hab ich es auch schon verstanden :?

Seite 1 von 1

Vergleichbare Themen

10
Antw.
21205
Views
exec sql mit dynamischen Tabellennamen
von mailmal » 30.05.2005 16:29 • Verfasst in ABAP® Core
8
Antw.
3906
Views
Tabellennamen herausfinden
von MichaelP » 10.05.2005 15:05 • Verfasst in ABAP® für Anfänger
2
Antw.
2986
Views
Tabellennamen herausfinden
von Franky » 07.09.2011 14:40 • Verfasst in ABAP® für Anfänger
3
Antw.
2174
Views
tabellennamen und Variablennamen ändern
von kaim77 » 26.02.2013 16:47 • Verfasst in ABAP® für Anfänger
6
Antw.
2654
Views
Internen Tabellennamen dynamisch im Loop setzen
von kaim77 » 31.10.2018 11:52 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 7 Stunden von black_adept 2 / 62
Programm anlegen mit Vorlage
vor 13 Stunden von DeathAndPain 2 / 113
IT0024 Qualifikationen CP-ID
vor 14 Stunden von DeathAndPain 2 / 352
BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84

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

Regex in where
vor 7 Stunden von black_adept 2 / 62
Programm anlegen mit Vorlage
vor 13 Stunden von DeathAndPain 2 / 113
IT0024 Qualifikationen CP-ID
vor 14 Stunden von DeathAndPain 2 / 352
BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84

Unbeantwortete Forenbeiträge

BUSOBJEKT zu CMIS PHIO ermitteln
vor 15 Stunden von snooga87 1 / 84
aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9821