2017-06-22 12 views
0

こんにちはABAPユーザー同じフィールドのデータをどのようなプロセスで収集できるか尋ねたいと思いますか?私がやりたいすべて同じ日付に属しdmbtr内のデータをまとめるか、収集するためにある、(日付フィールドmonat)(コードを植えることWERKS)同じフィールドでデータを集計または収集するにはどうすればよいですか?

it_zfi_vbrp_bseg_1-num3 = it_zfi_vbrp_bseg_1-werks. 

it_zfi_vbrp_bseg_1-num2 = it_zfi_vbrp_bseg_1-dmbtr. 

COLLECT it_zfi_vbrp_bseg_1. 

DELETE ADJACENT DUPLICATES FROM it_zfi_vbrp_bseg_1 COMPARING ALL FIELDS. 

Sort it_zfi_vbrp_bseg_1 by werks. 

LOOP AT it_zfi_vbrp_bseg_1 into wa_zfi_vbrp_bseg_1 WHERE monat = '01'. 

    IF wa_zfi_vbrp_bseg_1-werks EQ '4030'. 

     WRITE:/, AT pos wa_zfi_vbrp_bseg_1-dmbtr. 

    ENDIF. 

ENDLOOP. 

私のコードの連中内の任意の設定?

データ:

+0

具体的な月または毎月のデータを要約したいですか? – Suncatcher

+0

はい、私はそれを作ることができますか? – user7806296

+0

はい、何ですか?どちらのオプションはどれですか? – Suncatcher

答えて

-1

このすべては、あなたの内部テーブルに動作するCOLLECTについてはit_zfi_vbrp_bseg_1

どう定義するかに降りてくる、あなたがパックされたフィールドタイプに続く文字型のキーとそれを定義する必要がありit_zfi_vbrp_bseg_1が発生するのを開始0、 werks、 月(2)タイプc、 dmbtrタイプdmbtr、 end of it_zfi_vbrp_bseg_1。

これは動作します。

これはしません:

データ:it_zfi_vbrp_bseg_1の開始0 を発生するが、構造VBRPが含まれます。 データ:モナトタイプモナト、 dmbtrタイプdmbtr、 end of it_zfi_vbrp_bseg。

COLLECTのヘルプを読み、それに応じて要約テーブルを定義してください。

+0

これで申し訳ありませんが何ヶ月で何を意味するのですか(2)タイプc?その使用は何ですか? – user7806296

+1

本当ではありません。 'COLLECT'文は' n '型の 'monat'型で完全に動作します。 – Suncatcher

1

と仮定は、あなたはすでに、あなたはこのように行う必要があり、monat分野で標準bsegテーブルを拡張:あなたの不正なコードにノートの

TYPES: BEGIN OF ty_zfi_vbrp_bseg_1, 
     werks TYPE bseg-werks, 
     monat TYPE monat, 
     dmbtr TYPE bseg-dmbtr, 
     END OF ty_zfi_vbrp_bseg_1. 

DATA: it_zfi_vbrp_bseg_1 TYPE TABLE OF ty_zfi_vbrp_bseg_1, 
     is_zfi_vbrp_bseg_1 TYPE ty_zfi_vbrp_bseg_1. 

SELECT werks, monat, dmbtr 
INTO TABLE @DATA(lt_bseg) 
FROM bseg 
WHERE werks = '4030'. 

* summation of months 
LOOP AT lt_bseg ASSIGNING FIELD-SYMBOL(<fs_line>). 
    CLEAR: is_zfi_vbrp_bseg_1. 
    MOVE-CORRESPONDING <fs_line> TO is_zfi_vbrp_bseg_1. 
    COLLECT is_zfi_vbrp_bseg_1 INTO it_zfi_vbrp_bseg_1. 
ENDLOOP. 

* output the results 
LOOP AT it_zfi_vbrp_bseg_1 ASSIGNING FIELD-SYMBOL(<zfi_line>). 
    IF <zfi_line>-werks EQ '4030'. 
     WRITE:/<zfi_line>-werks, <zfi_line>-monat, <zfi_line>-dmbtr. 
    ENDIF. 
ENDLOOP. 

カップル:

  1. COLLECTは次のように動作しません。単一のステートメントであり、ループで実行する必要があります。
  2. COLLECTステートメントを合計するには、キー以外のすべてのフィールドが数値になるように作業領域を宣言する必要があります。キーフィールド(たとえキーが暗黙的であっても)は、レイが言ったのとは対照的に、どんなタイプでもかまいません。 NタイプもOKです。
  3. DELETE ADJACENT DUPLICATESは、COLLECT(これは主キーで合計します)の後にはダップを持たないため、ここでは冗長です。
関連する問題