interne Tabelle als Arbeitsbereich nicht erlaubt?!

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hallo zusammen,

vorweg: ich bin absoluter Neuling auf diesem Gebiet und versuche mich grad in Abap OO und aktuell in ALV-Grid einzuarbeiten.

Nun habe ich folgenden Code:

Code: Alles auswählen.

SELECT * from eban INTO gt_banfl.
Hab natürlich gt_banfl deklariert als TABLE OF eban.

Bei der Syntaxprüfung tritt nun folgender Fehler auf:
Als Arbeitsbereich ist eine interne Tabelle nicht erlaubt.
Hab jetzt das netz einmal umgegraben, aber finde beim besten Willen keine Erklärung warum das nicht funktioniert, zu mal diese Codezeile genau so vorgegeben wird.
Vielleicht kann mir das ja einer von euch erklären?
Bin für jeden Rat dankbar.

Gruß,
Matze
Gruß,
der Matze

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


Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von sv07 (ForumUser / 6 / 0 / 1 ) »
So sollte es funktionieren:

Code: Alles auswählen.

SELECT * FROM eban INTO TABLE gt_banf1

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Hallo,

nein irgendwie nicht. aber zumindest hab ich schonmal eine andere Fehlermeldung :)
Der Arbeitsbereich (bzw. die internen Tabelle) "GT_BANFL" ist nicht
flach oder enthält Referenzen oder interne Tabellen als Komponenten.
hilft das irgendwie weiter?
Gruß,
der Matze

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
wie ist denn bei dir die gt_banfl definiert?
schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »

Code: Alles auswählen.

gt_banfl             TYPE TABLE OF eban.
so :)
Gruß,
der Matze

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von sv07 (ForumUser / 6 / 0 / 1 ) »
Also ich bekomme hier keine Fehlermeldung vom Syntaxchecker:

Code: Alles auswählen.

DATA: gt_banf1 TYPE STANDARD TABLE OF eban.


START-OF-SELECTION.

  SELECT * FROM eban INTO TABLE gt_banf1.

Folgende Benutzer bedankten sich beim Autor sv07 für den Beitrag:
Thanatos82


Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Mit diesen Eingaben funktionierts...

mir ist zwar schleierhaft warum, aber es funktioniert!

Danke für die schnelle Hilfe!
Gruß,
der Matze

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
Thanatos82 hat geschrieben:Mit diesen Eingaben funktionierts...
mir ist zwar schleierhaft warum, aber es funktioniert!
und wie sah der Quellcode bei Dir aus? Ich kann den Fehler nicht so wirklich nachstellen...

wenn ich noch eine Anmerkung loslassen darf: versuch solche Konstrukte wie SELECT * FROM so gut es geht zu vermeiden. Wie viele Felder benötigst du wirklich aus der EBAN? Definiere eine interne Tabelle die nur diese Felder beinhaltet und lese nur die Felder aus

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Thanatos82

schöne Grüße
Alexander

ECC 6.0 EHP 7

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von black_adept (Top Expert / 4089 / 127 / 940 ) »
Alexander D. hat geschrieben:wenn ich noch eine Anmerkung loslassen darf: versuch solche Konstrukte wie SELECT * FROM so gut es geht zu vermeiden. Wie viele Felder benötigst du wirklich aus der EBAN? Definiere eine interne Tabelle die nur diese Felder beinhaltet und lese nur die Felder aus
Dann möchte ich auch eine Anmerkung loslassen. Select * muss nicht vermieden werden - aber du solltest dir halt Gedanken machen ob es der beste Ansatz ist.
Wenn es auf Geschwindigkeit/Speicherverbraucht ankommt ist Alexanders Hinweis Gold wert - aber ich kenne genug andere Situationen, in denen ein Sternchen die Lesbarkeit oder die Erweiterbarkeit eines Programmes durchaus verbessert.
Aber welches Kriterium am Ende das Ausschlaggebende ist, das musst du letztlich selber entscheiden

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

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Thanatos82 (Expert / 699 / 32 / 123 ) »
Ich hatte in der DATA Anweisung das STANDARD nicht drin und im SELECT Aufruf das TABLE nicht.

Die eigene interne Tabelle über eine Struktur anlegen in der nur die Felder die ich brauche definiert sind, richtig?
Gruß,
der Matze

Re: interne Tabelle als Arbeitsbereich nicht erlaubt?!

Beitrag von Alexander D. (Expert / 682 / 30 / 84 ) »
black_adept hat geschrieben:Select * muss nicht vermieden werden - aber du solltest dir halt Gedanken machen ob es der beste Ansatz ist.
Wenn es auf Geschwindigkeit/Speicherverbraucht ankommt ist Alexanders Hinweis Gold wert - aber ich kenne genug andere Situationen, in denen ein Sternchen die Lesbarkeit oder die Erweiterbarkeit eines Programmes durchaus verbessert.
ACK! Auf jeden Fall sollte man beide Wege kennen und sich für einen bewusst entscheiden. Aus meiner Erfahrung gibt es wenige Fälle mit berechtigtem Einsatz von SELECT *, das hängt aber sicherlich auch davon ab wo man ist und was man programmiert :-)
Thanatos82 hat geschrieben:Die eigene interne Tabelle über eine Struktur anlegen in der nur die Felder die ich brauche definiert sind, richtig?
nicht ganz, du kommst auch ohne eine Struktur aus, anbei ein Beispiel:

Code: Alles auswählen.

TYPES: BEGIN OF t_eban,
  banfn TYPE banfn,
  bnfpo TYPE bnfpo,
  ernam TYPE ernam,
  erdat TYPE erdat,
  txz01 TYPE txz01,
  END OF t_eban.

"interne Tabelle über den Typ definieren
DATA: gt_eban TYPE STANDARD TABLE OF t_eban WITH DEFAULT KEY.

"eine WHERE-Bedingung ist hier auch sehr hilfreich, sonst liest man die komplette EBAN!!!
SELECT banfn bnfpo ernam erdat txz01 FROM eban
* WHERE...
  INTO TABLE gt_eban.

Folgende Benutzer bedankten sich beim Autor Alexander D. für den Beitrag:
Thanatos82

schöne Grüße
Alexander

ECC 6.0 EHP 7

Seite 1 von 1

Vergleichbare Themen

2
Antw.
12613
Views
Als Arbeitsbereich ist eine interne Tabelle nicht erlaubt
von Tanega » 02.03.2017 09:48 • Verfasst in ABAP® für Anfänger
2
Antw.
2757
Views
Loop - Arbeitsbereich - Interne Tabelle
von KleinerEisbaer » 09.03.2008 13:46 • Verfasst in ABAP® für Anfänger
2
Antw.
2635
Views
Cluster-Tabelle ist JOIN nicht erlaubt
von cuncon » 20.10.2017 12:05 • Verfasst in ABAP® für Anfänger
9
Antw.
4221
Views
Unicode - Kopieren einer internen Tabelle in Arbeitsbereich
von genua » 26.10.2007 18:05 • Verfasst in ABAP® Core
4
Antw.
1076
Views

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

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