[51465] in SAPr3-news
Re: Interne Tabelle mit Kopf dynamisch deklarieren?
daemon@ATHENA.MIT.EDU (Alfred Bayer)
Thu Sep 16 03:09:29 2004
To: sapr3-news@mit.edu
Date: Thu, 16 Sep 2004 09:09:25 +0200
From: "Alfred Bayer" <Alfred.Bayer@siemens.com>
Message-ID: <1095318565.264877@nbgm66x>
"Stefan Bauer" <s.bauer@softhome.net> wrote
> Hallo zusammen,
>
> ich bastele da an einem Problem.
>
> Ich selektiere eine Tabelle dynamisch in eine (dynamische) interne
> Tabelle. Das klappt auch.
> Diese interne Tabelle soll aber per TRANSFER in ein Dataset geschrieben
> werden. Hier erhalte ich immer die Meldung, dass meine interne Tabelle
> keinen Kopf hat und dies deshalb nicht möglich ist.
> Nun könnte ich meine interne Tabelle in ein weitere schieben, die ein
> Feld mit Typ C und 8000 Stellen hat. Aber da muss es doch noch was
> anderes geben, oder?
>
> Hier noch ein Schnipsel aus meinem Coding:
> CREATE DATA data_ref TYPE TABLE OF (iliste-tab) .
> ASSIGN data_ref->* TO <tab1>.
> SELECT * FROM (iliste-tab) INTO TABLE <tab1>
> WHERE vbeln = ibel-vbeln AND posnr = ibel-posnr.
> * TRANSFER data_ref TO dsn.
>
Auszug aus der Online-Doku zu "TRANSFER":
Das Datenobjekt f wird in eine sequentielle Datei ausgegeben, deren Name in
dsn steht, wobei dsn als Feld oder Literal angegeben werden kann. ...
f kann ein Feld, ein String oder eine Struktur sein.
Ein Syntaxfehler wird ausgelöst, wenn f als tiefe Struktur oder Referenz
definiert ist.
*** Interne Tabellen müssen daher immer Zeile zeilenweise übertragen werden,
zum Beispiel in einer LOOP-Schleife. ***
Wenn ich's richtig verstehe dann zeigt dein FIELD-SYMBOL
auf die komplette Tabelle, nicht auf eine Zeile, richtig?
Lösung wurde IMHO bereits im anderem Posting geschrieben:
LOOP mit TRANSFER der einzelnen Zeile.
HTH
Alfred.