ALV双层次列表

程序 利用FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY' 实现 ALV 次列表的功能。 [@more@]

*&---------------------------------------------------------------------*

*& Report ZALV_HIERARCHY

*&

*&---------------------------------------------------------------------*

REPORT ZALV_HIERARCHY.

*----------------------------------------------------------------------*

* TYPE-POOLS

*----------------------------------------------------------------------*

TYPE-POOLS: SLIS.

*----------------------------------------------------------------------*

* DATA

*----------------------------------------------------------------------*

* HEADER

DATA: BEGIN OF GH_HEADER,

ID(4) TYPE N,

NAME(10) TYPE C,

EXPAND TYPE C,

END OF GH_HEADER.

DATA GT_HEADER LIKE TABLE OF GH_HEADER.

* ITEM

DATA: BEGIN OF GH_ITEM,

ID(4) TYPE N,

ABAP(2) TYPE N,

CPP(2) TYPE N,

JAVA(2) TYPE N,

END OF GH_ITEM.

DATA GT_ITEM LIKE TABLE OF GH_ITEM.

DATA:

* Field catalog

GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

* ALV Layout

GH_LAYOUT TYPE SLIS_LAYOUT_ALV,

* key info between HEADER & ITEM output table

GH_KEYINFO TYPE SLIS_KEYINFO_ALV,

* name of HEADER output table

GW_TNAM_HEAD TYPE SLIS_TABNAME,

* name of ITEM output table

GW_TNAM_ITEM TYPE SLIS_TABNAME.

DATA: GW_REPID LIKE SY-REPID.

*----------------------------------------------------------------------*

* INITIALIZATION

*----------------------------------------------------------------------*

INITIALIZATION.

GW_REPID = SY-REPID.

GW_TNAM_HEAD = 'GT_HEADER'.

GW_TNAM_ITEM = 'GT_ITEM'.

* define keyinfo

CLEAR GH_KEYINFO.

GH_KEYINFO-HEADER01 = 'ID'.

GH_KEYINFO-ITEM01 = 'ID'.

*----------------------------------------------------------------------*

* START-OF-SELECTION

*----------------------------------------------------------------------*

START-OF-SELECTION.

PERFORM GET_OUTTAB.

PERFORM SET_FIELDCAT.

PERFORM DISPLAY_ALV.

*&---------------------------------------------------------------------*

*& Form DISPLAY_ALV

*&---------------------------------------------------------------------*

* Hierarchical sequential list output

*----------------------------------------------------------------------*

FORM DISPLAY_ALV.

* make ALV list expandable

GH_LAYOUT-EXPAND_FIELDNAME = 'EXPAND'.

GH_LAYOUT-DETAIL_INITIAL_LINES = 'X'.

* in the beginning,expnad all items

GH_LAYOUT-EXPAND_ALL = 'X'.

CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'

EXPORTING

I_CALLBACK_PROGRAM = GW_REPID

IS_LAYOUT = GH_LAYOUT

IT_FIELDCAT = GT_FIELDCAT

I_TABNAME_HEADER = GW_TNAM_HEAD

I_TABNAME_ITEM = GW_TNAM_ITEM

IS_KEYINFO = GH_KEYINFO

TABLES

T_OUTTAB_HEADER = GT_HEADER

T_OUTTAB_ITEM = GT_ITEM

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

WRITE SY-SUBRC.

ENDIF.

ENDFORM. " DISPLAY_ALV

*&---------------------------------------------------------------------*

*& Form GET_OUTTAB

*&---------------------------------------------------------------------*

* Get data of Output Table

*----------------------------------------------------------------------*

FORM GET_OUTTAB.

* HEADER output table

GH_HEADER-ID = '001'.

GH_HEADER-NAME = 'JONY'.

APPEND GH_HEADER TO GT_HEADER.

GH_HEADER-ID = '002'.

GH_HEADER-NAME = 'SUNNY'.

APPEND GH_HEADER TO GT_HEADER.

* ITEM output table

GH_ITEM-ID = '001'.

GH_ITEM-ABAP = 90.

GH_ITEM-CPP = 90.

GH_ITEM-JAVA = 88.

APPEND GH_ITEM TO GT_ITEM.

GH_ITEM-ID = '002'.

GH_ITEM-ABAP = 96.

GH_ITEM-CPP = 96.

GH_ITEM-JAVA = 96.

APPEND GH_ITEM TO GT_ITEM.

ENDFORM. " GET_OUTTAB

*&---------------------------------------------------------------------*

*& Form SET_FIELDCAT

*&---------------------------------------------------------------------*

* set filed catalog

*----------------------------------------------------------------------*

FORM SET_FIELDCAT.

DATA:

LH_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

* HEADER FIELDS

LH_FIELDCAT-FIELDNAME = 'ID'.

LH_FIELDCAT-SELTEXT_M = 'ID'.

LH_FIELDCAT-TABNAME = GW_TNAM_HEAD.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

LH_FIELDCAT-FIELDNAME = 'NAME'.

LH_FIELDCAT-SELTEXT_M = 'NAME'.

LH_FIELDCAT-TABNAME = GW_TNAM_HEAD.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

LH_FIELDCAT-FIELDNAME = 'EXPAND'.

LH_FIELDCAT-NO_OUT = 'X'.

LH_FIELDCAT-TABNAME = GW_TNAM_HEAD.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

* ITEM FIELDS

CLEAR LH_FIELDCAT.

LH_FIELDCAT-FIELDNAME = 'ABAP'.

LH_FIELDCAT-SELTEXT_M = 'ABAP'.

LH_FIELDCAT-TABNAME = GW_TNAM_ITEM.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

LH_FIELDCAT-FIELDNAME = 'CPP'.

LH_FIELDCAT-SELTEXT_M = 'CPP'.

LH_FIELDCAT-TABNAME = GW_TNAM_ITEM.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

LH_FIELDCAT-FIELDNAME = 'JAVA'.

LH_FIELDCAT-SELTEXT_M = 'JAVA'.

LH_FIELDCAT-TABNAME = GW_TNAM_ITEM.

APPEND LH_FIELDCAT TO GT_FIELDCAT.

ENDFORM. " SET_FIELDCAT

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

转载于:http://blog.itpub.net/238575/viewspace-1006912/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值