2009-08-27 40 views
2

私はABAPコーディングに新しく、なぜコメントアウトされたクエリが機能しないのか混乱しています。フィールドシンボルにSELECT結果を割り当てます


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'. 

私がコメントアウトクエリを実行すると、私はエラーを取得する:

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

Short text Field symbol has not yet been assigned.

任意の助けをいただければ幸いです。

答えて

5

私はサイトが<の間にあるコードを隠していると思います。フィールドシンボルを宣言したように見えますが、名前を実際に表示することはできません。

フィールドシンボルに直接データを選択しようとしていると想定しています(私が実際に見ることができないエラーとコードに基づいて)。あなたはそれをすることはできません。フィールドシンボルはメモリ領域ではなく、(基本的に)ポインタです。あなたは、次のいずれかの操作を実行でき

:この場合

data: wa_bkpf type bkpf_type. 

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

または

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. 

を、あなたが内部テーブルに追加した新しい行にフィールドシンボルを指しています。この場合

または

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

、あなたは一致するすべてのドキュメントを取得し、あなたの内部テーブルに直接それらを配置します。

+0

これで修正されています。それは意味があります。私は、最初の種類のメモリの一部を割り当てて、クエリの結果を格納すると思います。 コードスニペットの問題をすべて解決したと思います。 ありがとうございます。 –

+0

フィールドシンボルについても少し読んでみることをお勧めします。あなたが初心者の場合は、あなたがしなければならないものの大半にフィールドシンボルを必要としないと私は確信しています。正しく使えば、あなたの人生をはるかに簡単にすることができますが、間違ってしまうとデバッグに恐怖を感じることがあります。 – Esti

関連する問題