Lesen itab mit dynamischen Schlüssel-Spezifikationen
Ich versuche, herauszufinden, einen Weg, um Lesen einer internen Tabelle muss dynamisch erstellt werden. Ich habe das folgenden report füllt eine dynamische interne Tabelle mit Daten. In der letzten Zeile versuche ich zu Lesen, es mit einem Schlüssel (mandt
zum Beispiel). Das problem ist, dass ich die Fehlermeldung "den angegebenen Typ hat keine Struktur und daher auch keine Komponente namens MANDT".
Habe ich ausgetestet, und ich kann sehen, dass wurde erfolgreich aufgefüllt und die Struktur der Tabelle (Feldnamen) sind korrekt. Das problem stellt sich, wenn ich versuche zu Lesen, die Tabelle in einen Arbeitsbereich. Vielleicht im tun, das falsch, aber es scheint wie etwas, das sollte möglich sein, todo, und ich habe das Gefühl, Im fehlt etwas klein.
Der Grund, warum ich versuche dies heraus, dass ich gefunden habe, identisch wählt, passiert in einem Programm und möchten Puffer-Datensätze in den Speicher und Lesen Sie von dort aus zu vermeiden, die DB zugreift. Dies ist einfach zu implementieren, jedoch habe ich nicht getan, wenn die Tabelle where
- Klausel und into
- Klausel von OPEN SQL-Anweisung, die ich versuche zu optimieren Sie sind dynamisch.
Cheers.
DATA: t681_rep TYPE TABLE OF t681 , wa_681 LIKE LINE OF t681_rep,
tabref TYPE REF TO data , waref TYPE REF TO data.
FIELD-SYMBOLS: <any_tab> TYPE ANY TABLE,
<any_wa> TYPE ANY,
<var1> TYPE ANY.
"fill t681_rep
SELECT *
FROM t681
INTO TABLE t681_rep
UP TO 1 ROWS WHERE kotab = 'A002'.
READ TABLE t681_rep INTO wa_681 WITH KEY kotab = 'A002'.
IF sy-subrc = 0.
"if A002 is found create a table of that type and fill it
CREATE DATA tabref TYPE TABLE OF (wa_681-kotab).
ASSIGN tabref->* TO <any_tab>.
SELECT * UP TO 10 ROWS
FROM (wa_681-kotab)
INTO TABLE <any_tab>.
ENDIF.
CREATE DATA waref TYPE a002.
ASSIGN waref->* TO <any_wa>.
READ TABLE <any_tab> ASSIGNING <any_wa> WITH KEY mandt = '800'. <- problem area
IF sy-subrc = 0.
"do stuff with <any_wa>...
ENDIF.
InformationsquelleAutor B. Bowles | 2012-05-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Brauchen Sie nur den Namen des Feldes in Klammern.
Etwas scheint zu fehlen, der Kommentar...
InformationsquelleAutor Bryan Cain
Sie versuchen, Sie zu schlagen, eine Datenbank, in der Effizienz, ist es ein schießender Kampf.
Gehen Sie einfach auf SE11, wählen Sie die Tabelle, gehen auf technische Einstellungen, und ändern Sie die technischen Einstellungen ( Pufferung & Pufferung Typ ), die Sie nicht benötigen ein Objekt, Modifikation der Schlüssel für dieses. Sie können auch sicherstellen, dass in der Kategorie Größe ist korrekt.
InformationsquelleAutor tomdemuyt
AFAIK, du musst es tun die 'long way round':
InformationsquelleAutor Smigs
Können Sie verwenden, RTT, um die Tabelle der Tasten.
InformationsquelleAutor René
InformationsquelleAutor Sendil