3

次の構文エラーが発生します。

「IT_COMBINE」はヘッダー行のないテーブルであるため、「EBELN」と呼ばれるコンポーネントはありません。

「対応するフィールドに」を使用しようとしましたが、うまくいきません。

私のコード:

  19   Data it_combine type standard table of ty_combine.
  ...
  32    select ebeln lifnr ekorg bsart ekgrp
  33      into table it_po
  34       from ekko
  35         where ebeln = it_combine-ebeln. " <=== SYNTAX ERROR
  ...   
4

2 に答える 2

4

内部テーブルをヘッダ行で宣言していない場合、内部テーブルの項目を直接使用することはできません。

コードを変更するには2つの可能性があります。

  1. 35行目でフィールドebelnを呼び出しました。19行目でヘッダー行を使用してit_combineを宣言していないため、このようにit_combine-ebelnを使用することはできません。代わりに、作業領域を宣言する必要があります

    Data wa_combine type ty_combine. 
    

35行目の作業領域を次のように使用します。

Loop at it_combine into wa_combine .
 select ebeln lifnr ekorg bsart ekgrp
   into table it_po
    from ekko
      where ebeln = wa_combine-ebeln.
End Loop.

2ヘッダー行を使用して内部テーブルを宣言する必要があります

 Data it_combine type standard table of ty_combine with header line.

ヘッダー行と作業領域に関する簡単な説明については、Sapヘルプドキュメントを参照してください。

于 2012-08-09T04:56:32.687 に答える
4

ステートメント "SELECT" に追加 "FOR ALL ENTRIES IN" を使用することもできます。

SELECT DISTINCT ebeln netwr werks INTO TABLE it_combine
  FROM ekpo
  WHERE netwr IN s_netwr. "in is only for select options

  CHECK it_combine[] IS NOT INITIAL. " not empty, obligatory

 SELECT ebeln lifnr ekorg bsart ekgrp
  INTO TABLE it_po  
  FROM ekko FOR ALL ENTRIES IN it_combine
  WHERE ebeln = it_combine-ebeln.

「ヘッダー行付き」または追加の作業領域 - 不要

また、OOP コンテキストでは「with header line」を使用することはできません。

于 2012-08-09T19:57:33.920 に答える