3

DB テーブル ( mara、makt、marc、mard ) から詳細を取得するために 5 つのパラメーターを使用しています。

 PARAMETERS :number TYPE matnr MATCHCODE OBJECT MAT1 ,
             type TYPE MTART MATCHCODE OBJECT H_T134 ,
             sector TYPE MBRSH MATCHCODE OBJECT H_T137 ,
             group TYPE MATKL MATCHCODE OBJECT H_T023 ,
             unit TYPE MEINS MATCHCODE OBJECT H_T006 .

まず、選択クエリを使用してMARAテーブルからデータを取得しようとしました。特定のレコードを取得するには、WHERE条件を使用する必要があります。しかし、私は状態の部分で混乱します。INITIAL条件を使用して、どのパラメーターに値があるかを確認できます。

ただし、2/3/4/5 パラメータに値が含まれる可能性があります。ケースごとに、選択クエリを作成する必要があります (そうすると、パフォーマンスの問題が発生します)、または選択クエリで動的条件部分を使用する方法はありますか?

4

2 に答える 2

5

使用できますSELECT-OPTIONS

TABLES MARA.  

SELECT-OPTIONS:
  s_matnr FOR mara-matnr MATCHCODE OBJECT MAT1 ,
  s_mtart FOR mara-MTART MATCHCODE OBJECT H_T134 ,
  s_mbrsh FOR mara-MBRSH MATCHCODE OBJECT H_T137 ,
  s_matkl FOR mara-MATKL MATCHCODE OBJECT H_T023 ,
  s_meins FOR mara-MEINS MATCHCODE OBJECT H_T006 .

* [...]  

SELECT * FROM MARA where 
  matnr in s_matnr and
  mtart in s_mtart and
  mbrsh in s_mbrsh and
  matkl in s_matkl and
  meins in s_meins.

これを行うと、選択画面でデータの複数の値と範囲が許可されます。

parameter-command のような単一の値が必要な場合は、次の追加オプションを設定する必要がありSELECT-OPTIONます。

  • NO INTERVALS単一の値のみを許可する
  • NO-EXTENSION 値を 1 つだけ許可します。
  • OBLIGATORY空の値が許可されていない場合(私があなたの質問を理解している限り、あなたは反対の状況にあるので、それは必要ありません).

したがって、あなたの選択は次のとおりです。

SELECT-OPTIONS:
  s_matnr FOR mara-matnr NO-EXTENSION NO INTERVALS,
  s_mtart FOR mara-MTART NO-EXTENSION NO INTERVALS,
  s_mbrsh FOR mara-MBRSH NO-EXTENSION NO INTERVALS,
  s_matkl FOR mara-MATKL NO-EXTENSION NO INTERVALS,
  s_meins FOR mara-MEINS NO-EXTENSION NO INTERVALS.

述べる:

  • MARATABLEを使用する場合はとして定義する必要がありますSELECT-OPTIONS
  • 本当に必要MATCHCODE OBJECTですか?通常、 を使用すると、FOR(データ要素/ドメインを介して) 正しいマッチコード オブジェクトが既に定義されています。

免責事項:

  • SAP システムをまだ利用できないため、コードに構文エラーが含まれている可能性があります。-明日確認します。
于 2012-05-15T17:50:12.293 に答える
4

select-optionsこれを行う最も簡単な方法は、代わりに使用することだと思います。その後、クエリの式で select-option 値を使用できinます。
そうすれば、値が空の場合は自動的に無視されるため (クエリで空のパラメーターを使用した場合には発生しません)、WHERE可能な組み合わせごとに個別の式を作成する必要はありません。例:

tables: mara.
select-options number for mara-matnr matchcode object mat1 no-extension no intervals.
select-options type for mara-mtart matchcode object h_t134 no-extension no intervals.
select-options sector for mara-mbrsh matchcode object h_t137 no-extension no intervals.
select-options group for mara-matkl matchcode object h_t023 no-extension no intervals.
select-options unit for mara-meins matchcode object h_t006 no-extension no intervals.

select distinct mara~matnr makt~maktx marc~werks mard~lgort into table ta_materials
  from mara
  inner join makt on makt~matnr = mara~matnr
  inner join marc on marc~matnr = mara~matnr
  inner join mard on mard~matnr = mara~matnr
  where makt~spras = sy-langu and
        mara~matnr in number and
        mara~mtart in type and
        mara~mbrsh in sector and
        mara~matkl in group and
        mara~meins in unit
  order by mara~matnr.

およびオプションはno-extensionno intervalsselect-option を画面上のパラメーターのように (多かれ少なかれ) 動作させます。

于 2012-05-15T17:51:08.593 に答える