2009-08-27 6 views
2

Ich bin neu in ABAP Codierung und ich bin verwirrt, warum die auskommentierte Abfrage nicht funktioniert.SELECT-Ergebnis dem Feld-Symbol zuweisen


REPORT z_hello_world_local. 

TYPES: BEGIN OF bkpf_type, 
      xblnr   TYPE bkpf-xblnr, 
     END OF bkpf_type. 

DATA: t_bkpf     TYPE TABLE OF bkpf_type. 

FIELD-SYMBOLS: <bkpf>  TYPE bkpf_type. 


*This query does not work? 
*SELECT xblnr 
*  INTO CORRESPONDING FIELDS OF <bkpf> UP TO 1 ROWS 
*  FROM bkpf 
*  WHERE belnr = '1800001017'. 
* ENDSELECT. 
* 
DATA: t_xblnr TYPE bkpf-xblnr. 

*This query works and in my head it is roughly the same thing. 
SELECT SINGLE xblnr 
     INTO t_xblnr 
     FROM bkpf 
     WHERE belnr = '1800001017'. 


write 'Done'. 

Wenn ich den Kommentar gesetzt Abfrage ausführen bekomme ich den Fehler:

Runtime Errors GETWA_NOT_ASSIGNED Date and Time
08/26/2009 19:54:19

Short text Field symbol has not yet been assigned.

Jede Hilfe würde geschätzt.

Antwort

5

Ich denke, die Website versteckt jeden Code zwischen <> findet. Es sieht so aus, als ob Sie ein Feldsymbol deklariert haben, aber ich kann nicht wirklich sehen, wie Sie es benannt haben.

Ich nehme an (basierend auf dem Fehler und den Teilen des Codes, die ich nicht wirklich sehen kann), dass Sie versuchen, Daten direkt in ein Feldsymbol auszuwählen. Das kannst du nicht tun. Ein Feldsymbol ist kein Speicherbereich, es ist (grundsätzlich) ein Zeiger.

Sie eine der folgenden Möglichkeiten tun konnte:

data: wa_bkpf type bkpf_type. 

select xblnr 
    into corresponding fields of wa_xblnr 
    up to 1 rows 
    from bkpf 
    where xblnr = '1800001017'. 
endselect. 

oder

field-symbols: <bkpf> type bkpf_type. 
append initial line to t_bkpf assigning <bkpf>. 
select xlbnr 
    into corresponding fields <bkpf> 
    up to 1 rows 
    from bkpf 
    where xblnr = '1800001017'. 
endselect. 

In diesem Fall müssen Sie das Feld Symbol in eine neue Zeile verweisen, die Sie in die interne Tabelle hinzugefügt haben .

oder

select xblnr 
    into corresponding fields of table t_bkpf 
    from bkpf 
    where xlbnr = '1800001017'. 

In diesem Fall finden Sie alle Dokumente abrufen, die ihnen entsprechen und legen Sie direkt in die interne Tabelle.

+0

Das behebt es, und das macht Sinn. Ich denke, die anfängliche Append-Art teilt einen Teil des Speichers zu, um die Abfrageergebnisse zu setzen. Ich denke, ich habe alle Formatierungsprobleme mit dem Code-Schnipsel behoben, danke, dass ich darauf hingewiesen habe. Danke. –

+0

Ich würde vorschlagen, auf Feldsymbolen ein wenig zu lesen. Wenn Sie ein Neuling sind, bin ich mir fast sicher, dass Sie Feldsymbole für die Mehrheit dessen, was Sie tun müssen, nicht benötigen werden. Wenn sie korrekt verwendet werden, können sie dein Leben viel einfacher machen, aber wenn du es falsch machst, kann es ein Horror sein zu debuggen. – Esti

Verwandte Themen