2017-06-22 67 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

這一切都歸結到你如何定義你的內部表it_zfi_vbrp_bseg_1

對於COLLECT工作,你需要用字符類型鍵,然後填充字段類型定義它:

數據:開始it_zfi_vbrp_bseg_1發生0, werks type werks, month(2)type c, dmbtr type dmbtr, it_zfi_vbrp_bseg_1的結尾。

這將工作。

這不會:

數據:開始的it_zfi_vbrp_bseg_1發生0 包括結構VBRP。 data:monat type monat, dmbtr type dmbtr, it_zfi_vbrp_bseg的結尾。

閱讀COLLECT的幫助並相應地定義您的彙總表。

+0

先生對不起,這是什麼意思在幾個月(2)類型c?那有什麼用? – user7806296

+1

不正確。 'COLLECT'語句完全適用於'n'類型的'monat'類型。 – Suncatcher

1

假設,你已經擴展標準bsegmonat場,那麼你應該這樣做:

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聲明你應該聲明工作區,以便所有非關鍵字段都是數字。關鍵字段(即使它是隱式關鍵字)可以是任何類型的,而不是Ray所說的。 N類型也行。
  3. DELETE ADJACENT DUPLICATES在這裏是多餘的,因爲在COLLECT(它通過主鍵求和)之後,你將不會有任何嘟嘟聲。