*&---------------------------------------------------------------------*
*& Report Z_DONGTAIBIAO
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT z_dongtaibiao.
TYPE-POOLS: slis.
DATA: gt_fcat TYPE lvc_t_fcat,
gh_fcat LIKE LINE OF gt_fcat.
DATA: gt_dyn TYPE REF TO data.
DATA: gh_line TYPE REF TO data.
FIELD-SYMBOLS: <fs_table> TYPE ANY TABLE,
<fs_line> TYPE ANY,
<fs_field> TYPE ANY.
DATA: BEGIN OF it OCCURS 0,
iname(10),
ioo(10),
icc TYPE i,
END OF it.
DATA: BEGIN OF it2 OCCURS 0,
iname(10),
ioo(10),
icc TYPE i,
END OF it2.
START-OF-SELECTION.
it-iname = 'liu'.
it-ioo = 'blue'.
it-icc = 4.
APPEND it.
it-iname = 'liu'.
it-ioo = 'red'.
it-icc = 9.
APPEND it.
it-iname = 'liu'.
it-ioo = 'green'.
it-icc = 5.
APPEND it.
it2-iname = 'liu'.
it2-ioo = 'dog'.
it2-icc = 4.
APPEND it2.
it2-iname = 'liu'.
it2-ioo = 'cat'.
it2-icc = 3.
APPEND it2.
it-iname = 'gao'.
it-ioo = 'blue'.
it-icc = 8.
APPEND it.
it-iname = 'gao'.
it-ioo = 'black'.
it-icc = 6.
APPEND it.
it-iname = 'gao'.
it-ioo = 'yellow'.
it-icc = 2.
APPEND it.
it2-iname = 'gao'.
it2-ioo = 'dog'.
it2-icc = 8.
APPEND it2.
it2-iname = 'gao'.
it2-ioo = 'horse'.
it2-icc = 2.
APPEND it2.
DATA iii TYPE i.
iii = 2.
DATA: BEGIN OF it9 OCCURS 0,
ioo(10),
cc TYPE i,
END OF it9.
LOOP AT it.
it9-ioo = it-ioo.
COLLECT it9.
ENDLOOP.
SORT it9 ASCENDING BY ioo.
LOOP AT it9.
it9-cc = iii.
MODIFY it9.
iii = iii + 1.
ENDLOOP.
DATA: BEGIN OF it8 OCCURS 0,
ioo(10),
cc TYPE i,
END OF it8.
LOOP AT it2.
it8-ioo = it2-ioo.
COLLECT it8.
ENDLOOP.
SORT it8 ASCENDING BY ioo.
LOOP AT it8.
it8-cc = iii.
MODIFY it8.
iii = iii + 1.
ENDLOOP.
DATA: BEGIN OF it7 OCCURS 0,
iname(10),
END OF it7.
LOOP AT it.
it7-iname = it-iname.
COLLECT it7.
ENDLOOP.
LOOP AT it2.
it7-iname = it2-iname.
COLLECT it7.
ENDLOOP.
DATA i_count TYPE i.
gh_fcat-col_pos = 1.
gh_fcat-fieldname = 'item'.
APPEND gh_fcat TO gt_fcat.
i_count = 2.
SORT it9 ASCENDING BY ioo.
LOOP AT it9.
gh_fcat-col_pos = i_count.
gh_fcat-fieldname = it9-ioo.
APPEND gh_fcat TO gt_fcat.
i_count = i_count + 1.
ENDLOOP.
SORT it8 ASCENDING BY ioo.
LOOP AT it8.
gh_fcat-col_pos = i_count.
gh_fcat-fieldname = it8-ioo.
APPEND gh_fcat TO gt_fcat.
i_count = i_count + 1.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fcat
IMPORTING
ep_table = gt_dyn.
ASSIGN gt_dyn->* TO <fs_table>.
CREATE DATA gh_line LIKE LINE OF <fs_table>.
ASSIGN gh_line->* TO <fs_line>.
DATA ii TYPE i.
LOOP AT it7.
ASSIGN COMPONENT 1 OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = it7-iname.
LOOP AT IT WHERE INAME = IT7-INAME.
read table it9 with key
ioo = it-ioo.
ASSIGN COMPONENT it9-cc OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = it-icc.
endloop.
LOOP AT IT2 WHERE INAME = IT7-INAME.
read table it8 with key
ioo = it2-ioo.
ASSIGN COMPONENT it8-cc OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = it2-icc.
endloop.
loop at it9.
read table it with key iname = it7-iname
ioo = it9-ioo.
if sy-subrc <> 0 .
ASSIGN COMPONENT it9-cc OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = ''.
endif.
endloop.
loop at it8.
read table it2 with key iname = it7-iname
ioo = it8-ioo.
if sy-subrc <> 0 .
ASSIGN COMPONENT it8-cc OF STRUCTURE <fs_line> TO <fs_field>.
<fs_field> = ''.
endif.
endloop.
INSERT <fs_line> INTO TABLE <fs_table>.
ENDLOOP.
loop at it.
write:/ it-iname,it-ioo,it-icc.
endloop.
uline.
loop at it2.
write:/ it2-iname,it2-ioo,it2-icc.
endloop.
uline.
uline.
write '科目'.
loop at it9.
write: it9-ioo.
endloop.
loop at it8.
write: it8-ioo.
endloop.
uline.
LOOP AT <fs_table> ASSIGNING <fs_line>.
WRITE: / <fs_line>.
ENDLOOP.