Abap 如何汇总或收集同一字段的数据?

Abap 如何汇总或收集同一字段的数据?,abap,internal-tables,Abap,Internal Tables,您好,ABAP用户,我想问一下,我可以采取什么流程来收集同一字段的数据?我所要做的就是汇总或收集dmbtr中属于同一日期的数据,日期字段monat werks to plant codes 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 DUPL

您好,ABAP用户,我想问一下,我可以采取什么流程来收集同一字段的数据?我所要做的就是汇总或收集dmbtr中属于同一日期的数据,日期字段monat werks to plant codes

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.

“我的代码”中有任何配置吗?

这一切都取决于如何定义内部表it_zfi_vbrp_bseg_1

要使COLLECT正常工作,需要使用字符类型键和压缩字段类型来定义它:

数据:它的开始发生在0, 沃克斯型沃克斯, month2 c型, dmbtr型dmbtr, 到此为止

那就行了

这不会:

数据:它的开始发生在0。 包括结构vbrp。 数据:monat类型monat, dmbtr型dmbtr, 到此为止


阅读有关相应地收集和定义汇总表的帮助。

假设您已经使用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.
错误代码的几个注意事项:

COLLECT不像单个语句那样工作,应该在循环中执行。 要使用COLLECT语句求和,您应该声明工作区,以便所有非键字段都是数字。键字段即使是隐式键也可以是任何类型,这与Ray所说的相反。N类型也可以。 删除相邻的重复项在这里是多余的,因为在COLLECT之后,通过主键进行求和,就不会有任何重复项。
你想总结一个具体月份的数据,还是每个月的数据=分组?是的,先生,我怎么做?是的,什么?这两个选项中的哪一个?请提供一个完整的示例,而不仅仅是一些随机代码截取。对不起,先生,我的意思是每个月总结一次。先生,对不起,关于这一点,您的意思是什么?那有什么用?不是真的。COLLECT语句将完美地与具有n类型的monat类型一起工作。