ABAP REDUCE 汇总内表数字型字段的和

 SELECT多个字段单独汇总数据到变量

 SELECT SUMZSJCLYL ),SUMZSJYWCGL FROM ZFIT_KO_HIS
  WHERE AUFNR EQ @I_AUFNR
  INTO (@E_MENGE,@E_MENGE_SUM). 


取数代替LOOP

      <f_data_sum>-menge_sj reduce menge_dinit lv_p->for gw_alv_data1 in gt_alv_data1
                              where bukrs <f_data_sum>-bukrs
                              and     setname <f_data_sum>-setname
                              and     subsetname <f_data_sum>-subsetname
                              and     aufnr <f_data_sum>-aufnr )
                              next + gw_alv_data1-menge ). 

DATA:BEGIN OF ls_data,
       a    TYPE char1,
       b    TYPE numc2,
     END OF ls_data,
     lt_data LIKE TABLE OF ls_data.

lt_data = VALUE #( ( a = 'A' b = 10 )
                   ( a = 'B' b = 30 )
                   ( a = 'C' b = 50 ) ) .

DATA(lv_sum) = REDUCE #( INIT sum TYPE menge_d"定义求和的字段SUM类型QUAN,名字随便
                       FOR ls_wa IN lt_data "创建一个工作区ls_wa对应内表
                       WHERE ( a = 'A' OR a = 'B' ) "汇总如果有条件,可以添加汇总条件
                       NEXT sum = sum + ls_wa-b )."把值和工作区wa取的值相加
WRITE lv_sum.


关键词: ABAP

网友评论

发表评论