ABAP开发如何动态的实现任意表的ALV显示
在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
總結
以上是生活随笔為你收集整理的ABAP开发如何动态的实现任意表的ALV显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BASIS--如何删除开发用户的开发Ke
- 下一篇: SAP PP生产订单相关信息的获取