*&---------------------------------------------------------------------**& 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 p decimals 2,
febr(7) type p decimals 2,
marc(7) type p decimals 2,
total(7) type p 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 p decimals 2,
l_febr(7) type p decimals 2,
l_marc(7) type p decimals 2,
l_total(7) type p 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