ABAP S4新语法汇总

发布时间 2023-07-07 16:39:00作者: perform233
REPORT zreport.
TYPES: BEGIN OF ty_out,
         aufnr   TYPE afpo-aufnr,
         osl     TYPE fins_vocur12,
         collect TYPE fins_vocur12,
       END OF ty_out.
DATA: gt_out TYPE TABLE OF ty_out,
      gs_out TYPE ty_out.


TYPES:BEGIN OF ty_osl,
        aufnr TYPE afpo-aufnr,
        osl   TYPE fins_vocur12,
      END OF ty_osl.

DATA: gt_osl TYPE TABLE OF ty_osl,
      gs_osl TYPE ty_osl.


gs_osl-aufnr = '1001'.
gs_osl-osl   = 2.
APPEND gs_osl TO gt_osl.
CLEAR gs_osl.

gs_osl-aufnr = '1001'.
gs_osl-osl   = 4 .
APPEND gs_osl TO gt_osl.
CLEAR gs_osl.

gs_osl-aufnr = '1002'.
gs_osl-osl   = 4 .
APPEND gs_osl TO gt_osl.
CLEAR gs_osl.

gs_osl-aufnr = '1002'.
gs_osl-osl   = 4 .
APPEND gs_osl TO gt_osl.
CLEAR gs_osl.


gs_out-aufnr = '1001'.
APPEND gs_out TO gt_out.
CLEAR gs_out.
gs_out-aufnr = '1002'.
APPEND gs_out TO gt_out.
CLEAR gs_out.




*新语法汇总
*根据表1的订单号汇总表2 相同订单号的值到表1某个字段
LOOP AT gt_out ASSIGNING FIELD-SYMBOL(<fs_out>).

  <fs_out>-collect = REDUCE #( INIT lv_osl TYPE fins_vocur12
                         FOR ls_osl IN gt_osl
                         WHERE ( aufnr = <fs_out>-aufnr )
                         NEXT lv_osl = lv_osl + ls_osl-osl ).

ENDLOOP.

BREAK-POINT.