Feldsymbol auf interne Tabelle

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

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

Feldsymbol auf interne Tabelle

Beitrag von snooze ( / / 0 / 3 ) »
Hi,

ist es möglich ein READ TABLE auf ein Feldsymbol, das auf eine interne Tabelle verweist, durchzuführen?

Code: Alles auswählen.

* i_zztable ist ein Attribut vom Type RefDATA
* dat1 ist ein Importing Methodenparameter vom Type zzdat1.
* dat2 ist ein Returning Methodenparameter vom Type zzdat2.

METHOD get_data.
  FIELD-SYMBOLS:   <itab> TYPE SORTED TABLE.
  IF me->i_zztable IS NOT BOUND.
      DATA: BEGIN OF wa_zztable,
          dat1 TYPE zzdat1,
          dat2 TYPE zzdat2.
      DATA END OF wa_zztable.
      CREATE DATA: me->i_zztable LIKE TABLE OF wa_zztable.
      ASSIGN: me->i_zztable->* TO <itab>.
      SELECT dat1 dat2 FROM zztable
               INTO TABLE <itab>
                    WHERE begda LE sy-datum
                      AND endda GE sy-datum.
  ENDIF.

  ASSIGN: me->i_zztable->* TO <itab>.
  READ TABLE <itab> INTO dat2 WITH KEY
                dat1 = 'key1'
                BINARY SEARCH.
ENDMETHOD.
Der Code läßt sich nicht compilieren. Als Fehlermeldung erhalte ich:
'Der angegebene Typ besitzt keine Struktur und daher auch keine Komponente mit Namen "dat1" '.

Muss ich auf den READ TABLE verzichten und statt dessen ein LOOP verwenden oder gibt es eine Möglichkeit den Compiler zu überzeugen, dass <itab> eine Struktur besitzt?

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


Re: Feldsymbol auf interne Tabelle

Beitrag von eldenio ( / / 0 / 3 ) »
snooze hat geschrieben:Hi,

ist es möglich ein READ TABLE auf ein Feldsymbol, das auf eine interne Tabelle verweist, durchzuführen?
ja, funzt grundsätzlich schon
Der Code läßt sich nicht compilieren. Als Fehlermeldung erhalte ich:
'Der angegebene Typ besitzt keine Struktur und daher auch keine Komponente mit Namen "dat1" '.
da haste doch schon die perfekte fehlerbeschreibung ;)

<itab> ist eine sorted table, hat also folglich keine fest definierte struktur.

wenn du <itab> mit "TYPE tabellentyp" definierst, sollte es keine probleme mit der syntaxprüfung mehr geben.
allerdings mußt du dann aufpassen, dass du dieses feldsymbol nur verwendest, wenn es auch wirklich diese struktur hat.

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Hi snooze,

beim READ muss ABAP doch zumindest wissen, dass das Feld dat1 auch wirklich in der Tabelle drin ist.
Falls du immer dieselbe Struktur hast, definiere dir doch das Feldsymbol als strukturierte Tabelle

Code: Alles auswählen.

TYPES: BEGIN OF ty_zztable, 
          dat1 TYPE zzdat1, 
          dat2 TYPE zzdat2,
        END OF ty_zztable.
TYPES: ty_my_tab TYPE SORTED TABLE OF ty_zztable
                 WITH UNIQUE KEY dat1 dat2. 
z.B. vom type ty_my_tab.

Dann sollte es auch mit dem READ TABLE klappen.

Falls es hingegen voll dynamisch bleiben soll musst du wohl den LOOP AT ... nehmen - die WHERE-Bedingung kann ja dynamisch aufgebaut sein.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Gast ( / / 0 / 3 ) »
black_adept hat geschrieben:Falls es hingegen voll dynamisch bleiben soll musst du wohl den LOOP AT ... nehmen - die WHERE-Bedingung kann ja dynamisch aufgebaut sein.
Wie soll das gehen?

Beitrag von eldenio ( / / 0 / 3 ) »
du kannst den inhalt einer tabelle mit text per klammerung in der where bedinung einfügen.
beim select funktioniert das auf jeden fall, beim loop bin ich mir da nicht ganz sicher...

bsp:

TYPES: BEGIN OF l_where_tab,
line(72) TYPE c,
END OF l_where_tab.

DATA: l_where_tab TYPE TABLE OF l_where_tab.
DATA: l_line(72) TYPE c.

l_line = ' foo = bar '.
APPEND l_line TO l_where_tab.

select * from db_tab into ...
where (l_where_tab).

Beitrag von Asaph (Expert / 580 / 6 / 1 ) »
Hi,

vielleicht so:

Code: Alles auswählen.

    DATA key1(72) VALUE 'dat1'.
    READ TABLE <itab> INTO wa_zztable WITH KEY
                  (key1) = 'key1'
                  BINARY SEARCH.

Andreas

Seite 1 von 1

Vergleichbare Themen

5
Antw.
5837
Views
Feldsymbol -> interne Tabelle
von marcel schmidt » 27.04.2005 14:49 • Verfasst in ABAP® Core
4
Antw.
2052
Views
interne tabelle -> feldsymbol auf felder
von marcel schmidt » 20.05.2005 17:00 • Verfasst in ABAP® Core
4
Antw.
1060
Views
5
Antw.
3977
Views
Feldsymbol auf RANGE-Tabelle
von Erdbaehr » 07.06.2007 07:56 • Verfasst in ABAP Objects®
5
Antw.
2095
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger

Ü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 / 2385
Zeilenumbrüche ersetzen
vor 21 Stunden von ralf.wenzel 6 / 177
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1555

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 / 2385
Zeilenumbrüche ersetzen
vor 21 Stunden von ralf.wenzel 6 / 177
SAP Trial Version für SAP Fiori
vor 2 Tagen von tar 2 / 1555

Unbeantwortete Forenbeiträge

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