at end of和at last是使用


*&---------------------------------------------------------------------*
*& Report  Z_SIMPLE_ITAB
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  z_simple_itab.

type-pools:
  slis.

types:
  begin of ty_tab,
    accn type char8,
    desc type char10,
    janu(7)  type decimals 2,
    febr(7)  type decimals 2,
    marc(7)  type decimals 2,
    total(7) type decimals 2,
  end of ty_tab.

data:
  it_tab type standard table of ty_tab,
  it_alv like it_tab with header line,
  wa_tab type ty_tab.
data:
  l_string type string,
  l_janu(7) type decimals 2,
  l_febr(7) type decimals 2,
  l_marc(7) type decimals 2,
  l_total(7) type decimals 2.

data:
  i_fieldcat_alv type slis_t_fieldcat_alv,
  i_fieldcat type slis_fieldcat_alv,
  i_layout type slis_layout_alv,
  w_repid like sy-repid.

start-of-selection.
  perform getdata.
  perform layout_build.
  perform fieldcat_build.
  perform alv_display_data.

*&---------------------------------------------------------------------*
*&      Form  GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form GETDATA .
*添加内表数据-----------------------------

  wa_tab-accn = '10000001'.
  wa_tab-desc = '科目01'.
  wa_tab-janu = '100.01'.
  wa_tab-febr = '89.23'.
  wa_tab-marc = '100.01'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000002'.
  wa_tab-desc = '科目02'.
  wa_tab-janu = '23.45'.
  wa_tab-febr = '56.23'.
  wa_tab-marc = '23.45'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000003'.
  wa_tab-desc = '科目03'.
  wa_tab-janu = '52.36'.
  wa_tab-febr = '45.26'.
  wa_tab-marc = '52.36'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000004'.
  wa_tab-desc = '科目04'.
  wa_tab-janu = '63.25'.
  wa_tab-febr = '56.24'.
  wa_tab-marc = '63.25'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000001'.
  wa_tab-desc = '科目01'.
  wa_tab-janu = '45.26'.
  wa_tab-febr = '52.36'.
  wa_tab-marc = '45.26'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000003'.
  wa_tab-desc = '科目03'.
  wa_tab-janu = '39.56'.
  wa_tab-febr = '63.25'.
  wa_tab-marc = '39.56'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000001'.
  wa_tab-desc = '科目01'.
  wa_tab-janu = '78.37'.
  wa_tab-febr = '45.26'.
  wa_tab-marc = '56.24'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000003'.
  wa_tab-desc = '科目03'.
  wa_tab-janu = '15.1'.
  wa_tab-febr = '39.56'.
  wa_tab-marc = '52.36'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000002'.
  wa_tab-desc = '科目02'.
  wa_tab-janu = '45.15'.
  wa_tab-febr = '78.37'.
  wa_tab-marc = '63.25'.
  append wa_tab to it_tab.
  clear wa_tab.
  wa_tab-accn = '10000003'.
  wa_tab-desc = '科目03'.
  wa_tab-janu = '89.36'.
  wa_tab-febr = '23.45'.
  wa_tab-marc = '45.26'.
  append wa_tab to it_tab.
  clear wa_tab.
  sort it_tab by accn.

  LOOP AT it_tab into wa_tab.
    l_string = wa_tab-desc.
    at end of accn.
      sum.
      wa_tab-desc = l_string.
      append wa_tab to it_alv.
    endat.
  ENDLOOP.
  LOOP AT it_alv.
    it_alv-total = it_alv-janu + it_alv-febr + it_alv-marc.
    modify it_alv.
    at last.
      sum.
      l_janu = it_alv-janu.
      l_febr = it_alv-febr.
      l_marc = it_alv-marc.
      l_total = it_alv-total.
    endat.
  ENDLOOP.
  it_alv-accn = '总计'.
  it_alv-desc = ''.
  it_alv-janu = l_janu.
  it_alv-febr = l_febr.
  it_alv-marc = l_marc.
  it_alv-total = l_total.

  append it_alv.
endform.                    " GETDATA
*&---------------------------------------------------------------------*
*&      Form  LAYOUT_BUILD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form LAYOUT_BUILD .
  i_layout-colwidth_optimize = 'X'.
  w_repid = sy-repid.
endform.                    " LAYOUT_BUILD
*&---------------------------------------------------------------------*
*&      Form  FIELDCAT_BUILD
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form FIELDCAT_BUILD .
  refresh i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'ACCN'.
  i_fieldcat-seltext_s = '科目'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'DESC'.
  i_fieldcat-seltext_s = '描述'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'JANU'.
  i_fieldcat-seltext_s = '一月'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'FEBR'.
  i_fieldcat-seltext_s = '二月'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'MARC'.
  i_fieldcat-seltext_s = '三月'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
  i_fieldcat-fieldname = 'TOTAL'.
  i_fieldcat-seltext_s = 'Total'.
  append i_fieldcat to i_fieldcat_alv.
  clear i_fieldcat.
endform.                    " FIELDCAT_BUILD
*&---------------------------------------------------------------------*
*&      Form  ALV_DISPLAY_DATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form ALV_DISPLAY_DATA .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM                = w_repid
      IS_LAYOUT                         = i_layout
      IT_FIELDCAT                       = i_fieldcat_alv[]

    TABLES
      t_outtab                          = it_alv[]
    EXCEPTIONS
      PROGRAM_ERROR                     = 1
      OTHERS                            2
            .
  IF sy-subrc <> 0.
   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
           WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


endform.                    " ALV_DISPLAY_DATA
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值