您的位置:首页 > 其它

ABAP开发如何动态的实现任意表的ALV显示

2015-07-13 14:58 246 查看
在ABAP开发中如何动态的实现任意表的ALV的显示,以下是具体操作步骤:

第一部分:程序框架

REPORT ZALV_20090304_EVENT.

INCLUDE ZALV_DATA_INTI.

INCLUDE ZALV_EVENT_F01.

START-OF-SELECTION.

PERFORM SUB_ALV_DATA_GET.



第二部分:INCLUDE ZALV_DATA_INTI.

TYPE-POOLS:ABAP.

PARAMETERS P_NAME TYPE OBJNAME.

DATA LT_TABLE TYPE TABLE OF DFIES.

DATA LS_TABLE TYPE DFIES.

CALL FUNCTION 'DDIF_NAMETAB_GET'

EXPORTING

TABNAME = P_NAME

TABLES

* X031L_TAB =

DFIES_TAB = LT_TABLE

EXCEPTIONS

NOT_FOUND = 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.

DATA LR_STRUC TYPE REF TO CL_ABAP_STRUCTDESCR.

DATA LR_TABLE TYPE REF TO CL_ABAP_TABLEDESCR.

DATA LR_TYPE TYPE REF TO CL_ABAP_TYPEDESCR.

DATA LR_DATA TYPE REF TO CL_ABAP_DATADESCR.

DATA L_STRING TYPE STRING.

DATA LT_COMP TYPE ABAP_COMPONENT_TAB.

DATA LS_COMP LIKE LINE OF LT_COMP.

DATA E_WA TYPE REF TO DATA.

DATA E_TABLE TYPE REF TO DATA.

FIELD-SYMBOLS TYPE STANDARD TABLE.

FIELD-SYMBOLS TYPE ANY.

LOOP AT LT_TABLE INTO LS_TABLE.

CONCATENATE LS_TABLE-TABNAME '-' LS_TABLE-FIELDNAME INTO L_STRING.

* L_STRING = LS_COMP-NAME.

LS_COMP-NAME = LS_TABLE-FIELDNAME.

CALL METHOD CL_ABAP_DATADESCR=>DESCRIBE_BY_NAME

EXPORTING

P_NAME = L_STRING

RECEIVING

P_DESCR_REF = LR_TYPE

EXCEPTIONS

TYPE_NOT_FOUND = 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.

LS_COMP-TYPE ?= LR_TYPE.

APPEND LS_COMP TO LT_COMP.

CLEAR LS_COMP.

ENDLOOP.

CALL METHOD CL_ABAP_STRUCTDESCR=>CREATE

EXPORTING

P_COMPONENTS = LT_COMP

RECEIVING

P_RESULT = LR_STRUC

.

CALL METHOD CL_ABAP_TABLEDESCR=>CREATE

EXPORTING

P_LINE_TYPE = LR_STRUC

RECEIVING

P_RESULT = LR_TABLE

.

CREATE DATA E_WA TYPE HANDLE LR_STRUC.

CREATE DATA E_TABLE TYPE HANDLE LR_TABLE.

ASSIGN E_WA->* TO .

ASSIGN E_TABLE->* TO .

第三部分:INCLUDE ZALV_EVENT_F01.

FORM SUB_ALV_DATA_GET .

SELECT * INTO CORRESPONDING FIELDS OF TABLE FROM (P_NAME).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

I_STRUCTURE_NAME = P_NAME

TABLES

T_OUTTAB =

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. " SUB_ALV_DATA_GET
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: