2

コメントアウトされたクエリが機能しない理由について混乱しています。


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

コメントアウトされたクエリを実行すると、エラーが発生します。

ランタイムエラーGETWA_NOT_ASSIGNED日付と時刻2009年8月26日
19:54:19

ショートテキストフィールドシンボルはまだ割り当てられていません。

このランタイムエラーが発生するのはなぜですか?

4

1 に答える 1

6

(エラーと実際には見えないコードに基づいて) データをフィールド シンボルに直接選択しようとしていると思います。そんなことはできません。フィールドシンボルはメモリ領域ではなく、(基本的に) ポインタです。

次のいずれかを行うことができます。

data: wa_bkpf type bkpf_type.

select xblnr
  into corresponding fields of wa_bkpf
  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'.

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

于 2009-08-27T12:40:59.017 に答える