abap 中动态表一例
  QxmEyLhwiEt2 2023年11月02日 147 0
*&---------------------------------------------------------------------*
*& 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.
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  QLtA9LK6PyNk   2023年11月02日   70   0   0 queryinsertstructnull2010
QxmEyLhwiEt2