ALV小结之三:多层显示ALV

ALV实现多层显示,先看效果图:

11377579_200906040912131.jpg

源码如下:

TABLES : aufk,
         afih.

TYPE-POOLS: slis.

DATA: BEGIN OF headertab OCCURS 0,
       aufnr LIKE aufk-aufnr,
       auart LIKE aufk-auart,
       autyp LIKE aufk-autyp,
      END OF headertab.

DATA: BEGIN OF itemtab OCCURS 0,
        aufnr LIKE afih-aufnr,
        equnr LIKE afih-equnr,
        iwerk LIKE afih-iwerk,
        ilart LIKE afih-ilart,
        qmnum LIKE afih-qmnum,
      END OF itemtab.

DATA: i_fieldcat TYPE slis_t_fieldcat_alv.
DATA: v_repid LIKE sy-repid.
DATA: g_tabname_header TYPE slis_tabname,
      g_tabname_item   TYPE slis_tabname,
      gs_keyinfo TYPE slis_keyinfo_alv.

START-OF-SELECTION.
  v_repid = sy-repid.
  PERFORM. get_data.
  PERFORM. set_alv_layout.
  PERFORM. dis_alv_grid.

*&---------------------------------------------------------------------*
*&      Form  get_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
FORM. get_data .
  SELECT * FROM aufk INTO CORRESPONDING FIELDS OF  TABLE headertab
  WHERE auart = 'PM01' AND autyp = '30'.
  IF sy-subrc = 0.
    SELECT * FROM afih AS a INTO CORRESPONDING FIELDS OF TABLE itemtab
    FOR ALL ENTRIES IN headertab WHERE a~aufnr = headertab-aufnr.
  ENDIF.
ENDFORM.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  set_alv_layout
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
FORM. set_alv_layout .
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
     EXPORTING
       i_program_name               =  v_repid
       i_internal_tabname           = 'HEADERTAB'
*     I_STRUCTURE_NAME             =
*     I_CLIENT_NEVER_DISPLAY       = 'X'
       i_inclname                   = v_repid
       i_bypassing_buffer           = 'X'
       i_buffer_active              = ' '
     CHANGING
       ct_fieldcat                  = i_fieldcat
     EXCEPTIONS
       inconsistent_interface       = 1
       program_error                = 2
       OTHERS                       = 3
             .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               =  v_repid
      i_internal_tabname           = 'ITEMTAB'
*     I_STRUCTURE_NAME             =
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_inclname                   = v_repid
      i_bypassing_buffer           = 'X'
      i_buffer_active              = ' '
    CHANGING
      ct_fieldcat                  = i_fieldcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  gs_keyinfo-header01 = 'AUFNR'.
  gs_keyinfo-item01   = 'AUFNR'.
  g_tabname_header = 'HEADERTAB'.
  g_tabname_item   = 'ITEMTAB'.
ENDFORM.                    " set_alv_layout
*&---------------------------------------------------------------------*
*&      Form  dis_alv_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  --&gt  p1        text
*  *----------------------------------------------------------------------*
FORM. dis_alv_grid .
  CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
     EXPORTING
*     I_INTERFACE_CHECK              = ' '
       i_callback_program             = v_repid
*     I_CALLBACK_PF_STATUS_SET       = ' '
*     I_CALLBACK_USER_COMMAND        = ' '
*     IS_LAYOUT                      =
       it_fieldcat                    = i_fieldcat
*     IT_EXCLUDING                   =
*     IT_SPECIAL_GROUPS              =
*     IT_SORT                        =
*     IT_FILTER                      =
*     IS_SEL_HIDE                    =
*     I_SCREEN_START_COLUMN          = 0
*     I_SCREEN_START_LINE            = 0
*     I_SCREEN_END_COLUMN            = 0
*     I_SCREEN_END_LINE              = 0
*     I_DEFAULT                      = 'X'
       i_save                         = 'A'
*     IS_VARIANT                     =
*     IT_EVENTS                      =
*     IT_EVENT_EXIT                  =
       i_tabname_header               = g_tabname_header
       i_tabname_item                 = g_tabname_item
*     I_STRUCTURE_NAME_HEADER        =
*     I_STRUCTURE_NAME_ITEM          =
       is_keyinfo                     = gs_keyinfo
*     IS_PRINT                       =
*     IS_REPREP_ID                   =
       i_bypassing_buffer             = 'X'
       i_buffer_active                = ' '
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER        =
*     ES_EXIT_CAUSED_BY_USER         =
     TABLES
       t_outtab_header                = headertab
       t_outtab_item                  = itemtab
   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.                    " dis_alv_grid

 

fj.png11.jpg

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/11377579/viewspace-604983/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/11377579/viewspace-604983/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值