精华内容
下载资源
问答
  • ABAP ALV的总计和小计按钮 转自:http://blog.chinaunix.net/uid-8527621-id-2029549.html 动画: http://blogimg.chinaunix.net/blog/upfile2/080109224128.swf 如果用程序实现: *&-------------------...

    ABAP ALV的总计和小计按钮

     

    转自:http://blog.chinaunix.net/uid-8527621-id-2029549.html

    动画:

    http://blogimg.chinaunix.net/blog/upfile2/080109224128.swf

    如果用程序实现:
    *&---------------------------------------------------------------------*
    *& Report  Z_BARRY_ALV_GRID
    *&
    *&---------------------------------------------------------------------*
    *&  FM方式 ALV 模板
    *&
    *&---------------------------------------------------------------------*
    REPORT  z_barry_alv_subtotal.
    TYPE-POOLS: slis.
    DATA: gd_fieldcat TYPE slis_t_fieldcat_alv.
    DATA: sla TYPE slis_layout_alv ,
          ivariant LIKE disvariant,
          i_repid LIKE sy-repid ,
          i_sort TYPE slis_t_sortinfo_alv WITH HEADER LINE ,
          i_excluding TYPE slis_t_extab.
    DATA: BEGIN OF itab OCCURS 0 .
            INCLUDE STRUCTURE zscm_fee_origin.
    DATA: END OF itab.
    START-OF-SELECTION.
      PERFORM getdata.
      PERFORM outdata.
    *&---------------------------------------------------------------------*
    *&      Form  GETDATA
    *&---------------------------------------------------------------------*
    FORM getdata.
      SELECT * INTO TABLE itab
      FROM zscm_fee_origin.
    ENDFORM.                    " GETDATA
    *&---------------------------------------------------------------------*
    *&      Form  outdata
    *&---------------------------------------------------------------------*
    FORM outdata.
      PERFORM fieldcat_init .
      sla-colwidth_optimize = 'X'.
      sla-zebra             = 'X'.
      i_repid = sy-repid.
     *小计
      CLEAR i_sort.
      i_sort-fieldname = 'BUKRS'.
      i_sort-spos = 1.
      i_sort-up = 'X'.
      i_sort-subtot = 'X'.
      APPEND i_sort.
      CLEAR i_sort.
      i_sort-fieldname = 'WERKS'.
      i_sort-spos = 2.
      i_sort-up = 'X'.
      i_sort-subtot = 'X'.
      APPEND i_sort.
     
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program = i_repid
                it_fieldcat        = gd_fieldcat[]
                it_sort            = i_sort[]
                is_layout          = sla
           TABLES
                t_outtab           = itab
           EXCEPTIONS
                program_error      = 1
                OTHERS             = 2.
    ENDFORM.                    " outdata
    *---------------------------------------------------------------------*
    *       FORM fieldcat_init                                            *
    *---------------------------------------------------------------------*
    FORM fieldcat_init .
      PERFORM frm_catlg_set USING:  'LIFNR'  'LIFNR' ,
                                    'BUKRS'  'BUKRS' ,
                                    'WERKS'  'WERKS' ,
                                    'DJAMON' 'DJAMON',
                                    'SEQ'    'SEQ'   ,
                                    'CPUDT'  'CPUDT' ,
                                    'DMBTRS' 'DMBTRS',
                                    'FEES'   'FEES' .
    ENDFORM.                    "fieldcat_init
    *---------------------------------------------------------------------*
    *       FORM frm_catlg_set                                            *
    *---------------------------------------------------------------------*
    FORM frm_catlg_set USING p_field
                             p_text.
      DATA: ls_fieldcat TYPE slis_fieldcat_alv.
      ls_fieldcat-fieldname     =  p_field.
      ls_fieldcat-seltext_l     =  p_text.
      IF p_field = 'DMBTRS'.
        ls_fieldcat-do_sum = 'X'.
      ENDIF.

      APPEND ls_fieldcat TO gd_fieldcat .
      CLEAR ls_fieldcat .
    ENDFORM.                    "frm_catlg_set

    转载于:https://www.cnblogs.com/xjm123/p/3565620.html

    展开全文
  • Count 计算所有非null的表达式的次数,不要把它sum搞混了,sum是计算的是数字的结果 Sum 反复的迭加表达式当前的值 Average 计算所有标准输入的表达式的平均值。 Lowest 返回标准输入中最低的表达式的值 ...

    程序员零花钱码上赚

     

    以下是一个实际操作的例子,先画好报表之后进行如下操作:

    1、新增

    图1

    2、新增之后如下:

    图2

    3、对新增的variable进行右击重命名

    图3

    4、选中修改后的variable,即S_YBJSL进行设置如下:

    Calculation types计算类型

    Nothing   不是计算类型,它被使用当用户指定内在的表达式时,每条记录将被赋值。

    Count      计算所有非null的表达式的次数,不要把它和sum搞混了,sum是计算的是数字的结果

    Sum 反复的迭加表达式当前的值

    Average   计算所有标准输入的表达式的平均值。

    Lowest    返回标准输入中最低的表达式的值

    Highest    返回标准输入中最高的表达式的值

    StandardDeviation 返回标准输入中规格不同的表达式值standard deviation

    Variance 返回标准输入中不一致的表达式值

    System    不是一种计算方式,也不求表达式的值;使用这个后,报表引擎仅将最后一个变量值放入内存中;它可以用脚本来存储计算结果。.

    图4

    5、将设置好的S_YBJSL选中拖到对应的框内,调整边框即可。

    图5.1

     

    展开全文
  • 总计和小计、逐行累计求和 一、总计和小计使用函数 1、rollup 2、cube 3、grouping 4、grouping sets 5、grouping_id 二、逐行累计求和方法(OVER函数) 1、sum(字段) over(partition by 字段1 order by 字段2....) ...

    一、总计和小计使用函数

    1、rollup

    group by 我们都知道,是一个分组函数,用于针对某一列做分组操作。
    但是当它搭配其他的函数一起使用的时候,就像一对男女孩,撞出不一样的火花。
    rollup(字段1,字段2,…)
    rollup和group by一起使用,可以针对每一个分组返回一个小计行,以及为所有的分组返回一个总计行(一个字段就是返回总计行,多个字段就是返回每一个分组的一个小计行和一个总计行)

    实践是检验真理的唯一标准,那我们来实践一下,我们先来快速创建一个表。有多快,很快很快的那种。

    CREATE TABLE EMP (
      "EMPNO" NUMBER(4) NOT NULL ,
      "ENAME" VARCHAR2(10 BYTE) ,
      "JOB" VARCHAR2(9 BYTE) ,
      "SAL" NUMBER(7,2) ,
      "DEPTNO" NUMBER(2) 
    )
    INSERT INTO "SCOTT"."EMP" VALUES ('1', '张三', '开发', '10000',  '10');
    INSERT INTO "SCOTT"."EMP" VALUES ('2', '李四', '运维', '6000', '20');
    INSERT INTO "SCOTT"."EMP" VALUES ('3', '王五', '测试', '6000',  '30');
    INSERT INTO "SCOTT"."EMP" VALUES ('4', '麻子', '开发', '12000',  '10');
    

    当我们的rollup里面只有一个字段的时候,就返回一个总计行

    select deptno,sum(sal) from emp 
    group by rollup(deptno);
    查询结果:
    10	22000
    20	6000
    30	6000
    	34000
    

    在这里插入图片描述
    当我们传递两个列字段的时候,就会按照第一个字段进行分组,返回一个小计行,最后返回一个总计行

    select ENAME,DEPTNO,sum(sal) from emp group by rollup(ENAME,DEPTNO);
    李四	20	6000
    李四		6000
    麻子	10	12000
    麻子		12000
    王五	30	6000
    王五		6000
    张三	10	10000
    张三		10000
    		34000
    
    select ENAME,DEPTNO,sum(sal) from emp group by rollup(DEPTNO,ENAME);
    麻子	10	12000
    张三	10	10000
    	    10	22000
    李四	20	6000
    	    20	6000
    王五	30	6000
    	    30	6000
    		34000
    

    根据rollup()传入的第一个字段不同,返回的结果是不一样的。我的理解是,rollup()传递多字段的时候,会先对多字段进行分组,然后对第一个字段进行分组,比如上面的ename是第一个字段,多字段分组后就有四种,然后对第一字段分组后还剩四种,并且返回一个小计行,最后返回一个总计行
    在这里插入图片描述
    在这里插入图片描述

    2、cube

    cube()传递一个字段的时候,和rollup是一样的结果

    select DEPTNO,sum(sal) from emp group by cube(DEPTNO) order by deptno;
    10	22000
    20	6000
    30	6000
    	34000
    

    在这里插入图片描述
    但是cube()传递多个字段的时候,就和rollup()不一样了,cube()对多字段的处理是先对所有的多字段进行分组,然后对第一个字段进行分组,再对第二个字段进行分组,意思就是两种分组合起来了,从下面的结果我们就可以看出来,比如第二个字段是deptno,分组后会把相同的10做为一组,所以可以看到根据ename分组会产生一个小计行,再根据deptno分组后产生了一个小计行,最后返回一个总计行。就等于在rollup()的基础上,我们多了几行分组的结果

    select ENAME,DEPTNO,sum(sal) from emp group by cube(ENAME,DEPTNO);
    			34000
    		10	22000
    		20	6000
    		30	6000
    李四		6000
    李四	20	6000
    麻子		12000
    麻子	10	12000
    王五		6000
    王五	30	6000
    张三		10000
    张三	10	10000
    
    select ENAME,DEPTNO,sum(sal) from emp group by cube(DEPTNO,ENAME);
    			34000
    李四		6000
    麻子		12000
    王五		6000
    张三		10000
    		10	22000
    麻子	10	12000
    张三	10	10000
    		20	6000
    李四	20	6000
    		30	6000
    王五	30	6000
    

    在这里插入图片描述
    在这里插入图片描述

    3、grouping

    GROUPING函数可以接受一列,返回0或者1。如果列值为空,那么GROUPING()返回1;如果列值非空,那么返回0。GROUPING只能在使用ROLLUP或CUBE的查询中使用。我的理解就是用来填充使用rollup()和cube()产生的null值

    select grouping(deptno),DEPTNO,sum(sal) from emp group by rollup(DEPTNO) ;
    0	10	22000
    0	20	6000
    0	30	6000
    1		34000
    

    在这里插入图片描述
    我们使用decode函数或case when来填充为null的值。
    DECODE(value,if 条件1,then 值1,if 条件2,then 值2,…,else 其他值)

    select decode(grouping(deptno),1,'总计',DEPTNO) deptno,sum(sal) from emp group by rollup(DEPTNO) ;
    10	22000
    20	6000
    30	6000
    总计	34000
    

    !在这里插入图片描述
    可以看到我们把第一次查询结果中的null填充了一个“总计”,这里使用的是rollup()配合,使用cube()也是一样的。

    4、grouping sets

    grouping sets()传递多字段就是分别对字段进行分组了,产生的结果就是多个字段分别分组后合起来的行。

    select ENAME,DEPTNO,sum(sal) from emp group by grouping sets(ENAME,DEPTNO);
    王五		6000
    李四		6000
    张三		10000
    麻子		12000
    		30	6000
    		20	6000
    		10	22000
    

    在这里插入图片描述
    从结果我们可以看出,分别针对ename分组产生四行结果和对deptno分组产生三行结果。

    5、grouping_id

    grouping_id()配合grouping()函数使用,会根据grouping()的值来决定,比如grouping(字段1)为0,grouping(字段2)为1,则grouping_id(字段1,字段2)的结果就是1,如果grouping(字段1)为1,grouping(字段2)为0,则grouping_id(字段1,字段2)的结果就是2,如果grouping(字段1)为1,grouping(字段2)为1,则grouping_id(字段1,字段2)的结果就是3,

    select ename,deptno,sum(sal),
    grouping(ename),
    grouping(deptno),
    grouping_id(ename,deptno) 
    from emp group by rollup(ename,deptno) ;
    
    李四	20	6000	0	0	0
    李四		6000	0	1	1
    麻子	10	12000	0	0	0
    麻子		12000	0	1	1
    王五	30	6000	0	0	0
    王五		6000	0	1	1
    张三	10	10000	0	0	0
    张三		10000	0	1	1
    			34000	1	1	3
    

    在这里插入图片描述

    二、逐行累计求和方法(OVER函数)

    1、sum(字段) over(partition by 字段1 order by 字段2…)

    over(partition by 字段1 order by 字段2…)
    按字段1指定的字段进行分组排序,或者说按字段字段2的值进行分组排序

    select deptno,sal,
    sum(sal) over (partition by deptno order by deptno) 逐行累计求和
    from emp;
    10	10000	22000
    10	12000	22000
    20	6000	6000
    30	6000	6000
    
    select deptno,sal,
    sum(sal) over ( order by deptno) 逐行累计求和
    from emp
    10	10000	22000
    10	12000	22000
    20	6000	28000
    30	6000	34000
    

    从上面的结果我们可以看出,加了partition by deptno就会根据指定字段分组逐行累加求和,否则全部逐行累加求和。

    展开全文
  • ALV小计和总计

    千次阅读 2011-04-17 10:33:00
    如图,需要在内表中插入一些小计总计等。   *&---------------------------------------------------------------------* *& Report z_barry_sum * *& Barry.bai@sap.com

     
    如图,需要在内表中插入一些小计、总计等。
     
    *&---------------------------------------------------------------------*
    *& Report  z_barry_sum                                                 *
    *& Barry.bai@sap.com                                                   *
    *&---------------------------------------------------------------------*
    REPORT  z_barry_sum              .
    TABLES:hrpy_rgdir,t001,pa0001 .
    TYPE-POOLS: slis.
    DATA:BEGIN OF itab OCCURS 0,
         sachp(20),                                  "部门
         pernr(20),                                  "人员编号
         name(20),                                   "姓名
         month(4),                                  "月份
         bet01 LIKE pa0008-bet01,                    "岗位工资
         bet02 LIKE pa0008-bet01,                    "岗位津贴
         bet03 LIKE pa0008-bet01,                    "灰色收入
       END OF itab .
    DATA: BEGIN OF itab2 OCCURS 0 ,
            sachp(10),                    "部门
            pernr(10),                    "人员编号
            name(10),                     "姓名
            month(4),                     "月份
            trfgr(20),                    "工资等级
            bet01(20),                    "岗位工资
            bet02(20),                    "岗位津贴
            bet03(20),                    "灰色收入
            color(4) ,
          END OF itab2.
    *****************
    DATA : myrepid LIKE sy-repid.  "REPORT NAME
    DATA : allfields TYPE slis_t_fieldcat_alv.
    DATA : wa_allfields TYPE LINE OF slis_t_fieldcat_alv.
    DATA : layout   TYPE slis_layout_alv .
    DATA : ls_event TYPE slis_alv_event.
    DATA : gt_events TYPE slis_t_event.
    *****************
    CONSTANTS: gc_grid_title(30) TYPE c  VALUE '工资个人明细清单'.
    START-OF-SELECTION.
      PERFORM getdata.
      PERFORM fixdata.
    *&---------------------------------------------------------------------*
    *&      Form  getdata
    *&---------------------------------------------------------------------*
    FORM getdata.
      itab-sachp = 'A部门'.
      itab-pernr = '111111'.
      itab-name  = '张三'.
      itab-month = '11'.
      itab-bet01 = '100'.
      itab-bet02 = '120'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-pernr = '222222'.
      itab-name  = '李四'.
      itab-bet01 = '200'.
      itab-bet02 = '210'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-sachp = 'B部门'.
      itab-pernr = '333333'.
      itab-name  = '王麻子'.
      itab-bet01 = '160'.
      itab-bet02 = '120'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-pernr = '444444'.
      itab-name  = '狗剩'.
      itab-bet01 = '500'.
      itab-bet02 = '120'.
      itab-bet03 = '260'.
      APPEND itab.
      itab-sachp = 'C部门'.
      itab-pernr = '555555'.
      itab-name  = '铁蛋'.
      itab-bet01 = '400'.
      itab-bet02 = '220'.
      itab-bet03 = '140'.
      APPEND itab.
    ENDFORM.                    "getdata
    *&---------------------------------------------------------------------*
    *&      Form  fixdata
    *&---------------------------------------------------------------------*
    FORM fixdata.
      SORT itab BY sachp pernr  .
      LOOP AT itab .
        PERFORM fill .
        MOVE-CORRESPONDING itab TO itab2 .
        APPEND itab2.
        CLEAR itab2 .
        itab2-sachp = ' '.
        APPEND itab2 .
        AT END OF sachp.
          SUM.
          PERFORM fill .
          MOVE-CORRESPONDING itab TO itab2.
          itab2-color = 'C300'.
          CONCATENATE itab-sachp '合计' INTO itab2-sachp .
          APPEND itab2 .
          CLEAR itab2 .
          itab2-sachp = ' '.
          APPEND itab2 .
        ENDAT.
        AT LAST .
          SUM.
          PERFORM fill .
          MOVE-CORRESPONDING itab TO itab2.
          itab2-color = 'C310'.
          itab2-sachp = '总计' .
          APPEND itab2 .
        ENDAT.
      ENDLOOP .
      CLEAR wa_allfields.
      PERFORM build_layout USING layout.
      PERFORM display_data .
    ENDFORM.                    "fixdata
    *&---------------------------------------------------------------------*
    *&      Form  display_data
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM display_data .
      wa_allfields-fieldname = 'SACHP'.
      wa_allfields-seltext_l = '部门'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'PERNR'.
      wa_allfields-seltext_l = '人员编号'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'NAME'.
      wa_allfields-seltext_l = '姓名'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'MONTH'.
      wa_allfields-seltext_l = '月份'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
    **
      wa_allfields-fieldname = 'BET01'.
      wa_allfields-seltext_l = '岗位工资'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
    **
      wa_allfields-fieldname = 'BET02'.
      wa_allfields-seltext_l = '岗位津贴'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'BET03'.
      wa_allfields-seltext_l = '灰色收入'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      myrepid = sy-repid.  "REPROT NAME
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = myrepid
          i_grid_title       = '月工资个人明细清单' "TITLE
          is_layout          = layout
          it_events          = gt_events
          i_save             = 'X'
          it_fieldcat        = allfields
        TABLES
          t_outtab           = itab2
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
    ENDFORM .                    "display_data
    *&---------------------------------------------------------------------*
    *&      Form  build_layout
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_LAYOUT   text
    *----------------------------------------------------------------------*
    FORM build_layout USING p_layout TYPE slis_layout_alv.
    *  p_layout-zebra             = 'X'.
      p_layout-colwidth_optimize = 'X'.
      p_layout-info_fieldname = 'COLOR'.
    ENDFORM.                               " BUILD_LAYOUT
    *&---------------------------------------------------------------------*
    *&      Form  FILL
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM fill .
      itab2-sachp = '部门'.
      itab2-pernr = '人员编号'.
      itab2-name  = '姓名'.
      itab2-month = '月份'.
      itab2-bet01 = '岗位工资'.
      itab2-bet02 = '岗位津贴'.
      itab2-bet03 = '灰色收入'.
      itab2-color = 'C100'.
      APPEND itab2 .
      CLEAR itab2 .
    ENDFORM .                    "FILL
     
    效果如下:
     
     
     
    如果有更多的列需要分类小计,如下图:
     
    则可以再加一个AT语句,下面为更改后的程序:
    REPORT  z_barry_sum              .
    TABLES:hrpy_rgdir,t001,pa0001 .
    TYPE-POOLS: slis.
    DATA:BEGIN OF itab OCCURS 0,
         bukrs(10),                                  "公司
         sachp(20),                                  "部门
         pernr(20),                                  "人员编号
         name(20),                                   "姓名
         month(4),                                  "月份
         bet01 LIKE pa0008-bet01,                    "岗位工资
         bet02 LIKE pa0008-bet01,                    "岗位津贴
         bet03 LIKE pa0008-bet01,                    "灰色收入
       END OF itab .
    DATA: BEGIN OF itab2 OCCURS 0 ,
            bukrs(16),                    "公司
            sachp(10),                    "部门
            pernr(10),                    "人员编号
            name(10),                     "姓名
            month(4),                     "月份
            trfgr(20),                    "工资等级
            bet01(20),                    "岗位工资
            bet02(20),                    "岗位津贴
            bet03(20),                    "灰色收入
            color(4) ,
          END OF itab2.
    *****************
    DATA : myrepid LIKE sy-repid.  "REPORT NAME
    DATA : allfields TYPE slis_t_fieldcat_alv.
    DATA : wa_allfields TYPE LINE OF slis_t_fieldcat_alv.
    DATA : layout   TYPE slis_layout_alv .
    DATA : ls_event TYPE slis_alv_event.
    DATA : gt_events TYPE slis_t_event.
    *****************
    CONSTANTS: gc_grid_title(30) TYPE c  VALUE '工资个人明细清单'.
    START-OF-SELECTION.
      PERFORM getdata.
      PERFORM fixdata.
    *&---------------------------------------------------------------------*
    *&      Form  getdata
    *&---------------------------------------------------------------------*
    FORM getdata.
      itab-bukrs = '忽悠公司'.
      itab-sachp = 'A部门'.
      itab-pernr = '111111'.
      itab-name  = '张三'.
      itab-month = '11'.
      itab-bet01 = '100'.
      itab-bet02 = '120'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-bukrs = '炒作公司'.
      itab-pernr = '222222'.
      itab-name  = '李四'.
      itab-bet01 = '200'.
      itab-bet02 = '210'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-bukrs = '忽悠公司'.
      itab-sachp = 'B部门'.
      itab-pernr = '333333'.
      itab-name  = '王麻子'.
      itab-bet01 = '160'.
      itab-bet02 = '120'.
      itab-bet03 = '140'.
      APPEND itab.
      itab-pernr = '444444'.
      itab-name  = '狗剩'.
      itab-bet01 = '500'.
      itab-bet02 = '120'.
      itab-bet03 = '260'.
      APPEND itab.
      itab-sachp = 'C部门'.
      itab-pernr = '555555'.
      itab-name  = '铁蛋'.
      itab-bet01 = '400'.
      itab-bet02 = '220'.
      itab-bet03 = '140'.
      APPEND itab.
    ENDFORM.                    "getdata
    *&---------------------------------------------------------------------*
    *&      Form  fixdata
    *&---------------------------------------------------------------------*
    FORM fixdata.
      SORT itab BY bukrs sachp pernr  .
      LOOP AT itab .
        PERFORM fill .
        MOVE-CORRESPONDING itab TO itab2 .
        APPEND itab2.
        CLEAR itab2 .
    *    APPEND itab2 .
        AT END OF sachp.
          SUM.
          PERFORM fill .
          MOVE-CORRESPONDING itab TO itab2.
          itab2-color = 'C300'.
          CONCATENATE itab-sachp '合计' INTO itab2-sachp .
          APPEND itab2 .
          CLEAR itab2 .
    *      APPEND itab2 .
        ENDAT.
        AT END OF bukrs.
          SUM.
          PERFORM fill .
          MOVE-CORRESPONDING itab TO itab2.
          itab2-color = 'C310'.
          CONCATENATE itab-bukrs '小计' INTO itab2-bukrs .
          APPEND itab2 .
          CLEAR itab2 .
    *      APPEND itab2 .
        ENDAT.
        AT LAST .
          SUM.
          PERFORM fill .
          MOVE-CORRESPONDING itab TO itab2.
          itab2-color = 'C710'.
          itab2-bukrs = '总计' .
          APPEND itab2 .
        ENDAT.
      ENDLOOP .
      CLEAR wa_allfields.
      PERFORM build_layout USING layout.
      PERFORM display_data .
    ENDFORM.                    "fixdata
    *&---------------------------------------------------------------------*
    *&      Form  display_data
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM display_data .
      wa_allfields-fieldname = 'BUKRS'.
      wa_allfields-seltext_l = '公司'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'SACHP'.
      wa_allfields-seltext_l = '部门'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'PERNR'.
      wa_allfields-seltext_l = '人员编号'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'NAME'.
      wa_allfields-seltext_l = '姓名'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'MONTH'.
      wa_allfields-seltext_l = '月份'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
    **
      wa_allfields-fieldname = 'BET01'.
      wa_allfields-seltext_l = '岗位工资'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
    **
      wa_allfields-fieldname = 'BET02'.
      wa_allfields-seltext_l = '岗位津贴'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      wa_allfields-fieldname = 'BET03'.
      wa_allfields-seltext_l = '灰色收入'.
      APPEND wa_allfields TO allfields.
      CLEAR wa_allfields.
      myrepid = sy-repid.  "REPROT NAME
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = myrepid
          i_grid_title       = '月工资个人明细清单' "TITLE
          is_layout          = layout
          it_events          = gt_events
          i_save             = 'X'
          it_fieldcat        = allfields
        TABLES
          t_outtab           = itab2
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
    ENDFORM .                    "display_data
    *&---------------------------------------------------------------------*
    *&      Form  build_layout
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    *      -->P_LAYOUT   text
    *----------------------------------------------------------------------*
    FORM build_layout USING p_layout TYPE slis_layout_alv.
    *  p_layout-zebra             = 'X'.
      p_layout-colwidth_optimize = 'X'.
      p_layout-info_fieldname = 'COLOR'.
    ENDFORM.                               " BUILD_LAYOUT
    *&---------------------------------------------------------------------*
    *&      Form  FILL
    *&---------------------------------------------------------------------*
    *       text
    *----------------------------------------------------------------------*
    FORM fill .
    *  itab2-bukrs = '公司'.
    *  itab2-sachp = '部门'.
    *  itab2-pernr = '人员编号'.
    *  itab2-name  = '姓名'.
    *  itab2-month = '月份'.
    *  itab2-bet01 = '岗位工资'.
    *  itab2-bet02 = '岗位津贴'.
    *  itab2-bet03 = '灰色收入'.
    *  itab2-color = 'C100'.
    *  APPEND itab2 .
    *  CLEAR itab2 .
    ENDFORM .                    "FILL
    展开全文
  • 报表第一页的小计计算当前页面的商品价格总和,总计目前和小计一样是计算截止到当前页面的所有商品的金额和,下图为最后一页: 这下大家明白了吧,就是要实现这样的报表。 废话不多说了,开始讲解我的思路: .....
  • 利用RDLC报表的添加总计功能,可以很方便的给报表添加小计和总计功能。​ 操作步骤如下: 1、设定报表的分组字段,如下图:​ 2、点击行组下面“详细信息”右边的三角箭头,在下拉菜单中选择添加总计-晚于...
  • 首先,要能够总计和小计的话,这一列的字段类型必须是数值类型。 这样的话,就不能通过截取的方式改变不同行的小数位。 以下是两种思路: 1、使用edit_mask,即convert exit,在对应的function module中根据外部...
  • 内表插入小计和总计

    2013-01-08 10:15:49
    如图,需要在内表中插入一些小计总计等。 *&———————————————————————**& Reportz_barry_sum ...
  • 现在汽车仪表大部分的总计里程和小计里程都是显示在屏幕上的,这包括段码屏、点阵屏、TFT彩屏等,虽然显示形式不一样,但是从业务需求和软件应用层的实现策略来讲,原理应该都是通用的。本文不涉及具体车型,仅对...
  • Delphi报表开发ReportMachine的小计和总计的计算 2011年7月2日 分类: Delphi...报表第一页的小计计算当前页面的商品价格总和,总计目前和小计一样是计算截止到当前页面的所有商品的金额和, 下图为最后一页: ...
  • 内表插入小计和总计 如图,需要在内表中插入一些小计总计等。 *&---------------------------------------...
  • 此外,大面包可以从数据透视表的每个轴/级别的总计/小计中计算百分比。 您可以将表中的现有值转换为百分比,但也可以将百分比整齐地添加到数据旁边。 如果不存在所需的(小计总计,则面包将自动添加它们以执行...
  • <p>In woocommerce, I am using the following to remove the shipping block in cart totals section bloc: <pre><code> function disable_shipping_calc_on_cart( $show_shipping ) { if( is_cart() ) { ...
  • <p>Im trying to calculate a subtotal and a total from a series of values stored in an array returned from a mysql database. <p>this i what i have thusfar <pre><code> while($row = mysql_fetch_...
  • 小计 '   else DATE end  , [ CUST-NO ] = case   when grouping ( [ DB-ID ] ) = 1 then ''   when grouping (ENTITY) = 1 then ''   when grouping (DATE) = 1 then ''   when ...
  • rollup,cube子句在ORACLE中可以用来做交叉报表,如:如总计小计类的功能很容易实现;但是必须group by 子句一起使用。举例如下:Oracle的Cube,Rollup子句的用法产生交叉报表的情况,演示一个cu...
  • 点击蓝字关注我们一前言公众号群里面有人在讨论SMARTFORM打印中的小计和总计的实现.好久没有做SMARTFORM了, 所以没有参与讨论. 后来网上查询了一下. 也没有找到很好的解决方...
  • 转载的地址:... 下面是有关的sql:  总计统计-实现N+1条数据显示:: select  decode(grouping(ename) + grouping(job) + grouping(empno),3,'合计',ename) ename, decode(gro

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 205
精华内容 82
关键字:

总计和小计