运用类CL_SALV_TABLE实现alv
?
??REPORT??ZPRO_DAVID_ALV_CL.
*----------------------------------------------------------------------*
*???????CLASS?lcl_report?DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_REPORT?DEFINITION.
?PUBLIC?SECTION.
*----------------------------------------------------------------------*
*?Final?Output?Table
*----------------------------------------------------------------------*
????TYPES:?BEGIN?OF?TY_MARA,
????????????MATNR?TYPE?MATNR,
????????????ERSDA?TYPE?ERSDA,
????????????MATKL?TYPE?MATKL,
????????????MTART?TYPE?MTART,
????????????LVORM?TYPE?LVORM,
???????????END?OF?TY_MARA.
???DATA:?O_ALV?TYPE?REF?TO?CL_SALV_TABLE,??????????????"?ALV?Reference
??????????T_MARA?TYPE?STANDARD?TABLE?OF?TY_MARA.
*----------------------------------------------------------------------*
*?Methods?to?Fetch?Data?and?Generate?Output
*----------------------------------------------------------------------*
????METHODS:?GET_DATA,??????????????????????????????????"Data?Selection
?????????????GENERATE_OUTPUT.???????????????????????????"Generating?Output??PRIVATE?SECTION.
*----------------------------------------------------------------------*
*?Methods?to?Set?PF-Status,?Header?and?Footer
*----------------------------------------------------------------------*
????METHODS:?SET_PF_STATUS
??????????????????CHANGING
??????????????????????CO_ALV?TYPE?REF?TO?CL_SALV_TABLE,?"?Default?Pf?Status
????????????????SET_TOP_OF_PAGE
??????????????????CHANGING
??????????????????????CO_ALV?TYPE?REF?TO?CL_SALV_TABLE,?"?Set?Top?of?page
???????????????SET_END_OF_PAGE
??????????????????CHANGING
??????????????????????CO_ALV?TYPE?REF?TO?CL_SALV_TABLE.?"?Set?End?of?page
????ENDCLASS.
"lcl_report?DEFINITION*----------------------------------------------------------------------*
*???????CLASS?lcl_report?IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS?LCL_REPORT?IMPLEMENTATION.
*----------------------------------------------------------------------*
*?Data?selection
*----------------------------------------------------------------------*
??METHOD?GET_DATA.
????SELECT?MATNR?ERSDA?MATKL?MTART?LVORM?INTO?TABLE?T_MARA
???????????FROM?MARA?UP?TO?20?ROWS.
??ENDMETHOD.
"get_data*----------------------------------------------------------------------*
*?Generating?Output
*----------------------------------------------------------------------*
??METHOD?GENERATE_OUTPUT.
*Exception?Class
????DATA:?LC_MSG?TYPE?REF?TO?CX_SALV_MSG.
*----------------------------------------------------------------------*
*?We?are?calling?the?static?Factory?method?which?will?give?back
*?the?ALV?object?reference.
*----------------------------------------------------------------------*
????TRY.
????????CALL?METHOD?CL_SALV_TABLE=>FACTORY
??????????IMPORTING
????????????R_SALV_TABLE?=?O_ALV
??????????CHANGING
????????????T_TABLE??????=?T_MARA.
??????CATCH?CX_SALV_MSG?INTO?LC_MSG?.
????ENDTRY.
************************************************************************
*?In?this?area?we?will?call?the?methods?which?will?set?the
*?different?properties?to?the?ALV
************************************************************************
*?Calling?Set?PF?status?method
????CALL?METHOD?SET_PF_STATUS
??????CHANGING
????????CO_ALV?=?O_ALV.???????"set_end_of_page*?Calling?the?top?of?page?method
????CALL?METHOD?SET_TOP_OF_PAGE
??????CHANGING
????????CO_ALV?=?O_ALV.
*?Calling?the?End?of?page?method
????CALL?METHOD?SET_END_OF_PAGE
??????CHANGING
????????CO_ALV?=?O_ALV.
************************************************************************
*?Displaying?the?ALV
*?Here?we?will?call?the?DISPLAY?method?to?get?the?output?on?the?screen
************************************************************************
????O_ALV->DISPLAY(?).
??ENDMETHOD.????????????????????"generate_output************************************************************************
*????In?this?area?we?will?implement?the?methods?which?are?defined?in
*????the?class?definition
************************************************************************
*?Setting?Default?PF-Status
??METHOD?SET_PF_STATUS.
????DATA:?LO_FUNCTIONS?TYPE?REF?TO?CL_SALV_FUNCTIONS_LIST.
*?Default?functions
????LO_FUNCTIONS?=?CO_ALV->GET_FUNCTIONS(?).
????LO_FUNCTIONS->SET_DEFAULT(?ABAP_TRUE?).
??ENDMETHOD.????????????????????"set_pf_status
*?Setting?Top_of_page
??METHOD?SET_TOP_OF_PAGE.
????DATA:?LO_HEADER?TYPE?REF?TO?CL_SALV_FORM_LAYOUT_GRID,
??????????LO_H_LABEL?TYPE?REF?TO?CL_SALV_FORM_LABEL,
??????????LO_H_FLOW??TYPE?REF?TO?CL_SALV_FORM_LAYOUT_FLOW.
*?Header?object
????CREATE?OBJECT?LO_HEADER.
*----------------------------------------------------------------------*
*?To?create?a?Label?or?Flow?we?have?to?specify?the?target
*?row?and?column?number?where?we?need?to?set?up?the?output
*?text.
*----------------------------------------------------------------------*
*?Information?in?Bold
????LO_H_LABEL?=?LO_HEADER->CREATE_LABEL(?ROW?=?1?COLUMN?=?1?).
????LO_H_LABEL->SET_TEXT('Header?of?the?ALV?Output?in?Bold').
*?Information?in?tabular?format
????LO_H_FLOW?=?LO_HEADER->CREATE_FLOW(?ROW?=?2?COLUMN?=?1?).
????LO_H_FLOW->CREATE_TEXT(?TEXT?=?'This?is?text?of?flow?in?Header'?).
????LO_H_FLOW?=?LO_HEADER->CREATE_FLOW(?ROW?=?3?COLUMN?=?1?).
????LO_H_FLOW->CREATE_TEXT(?TEXT?=?'Date?of?List?Generation'?).
????LO_H_FLOW?=?LO_HEADER->CREATE_FLOW(?ROW?=?3?COLUMN?=?2?).
????LO_H_FLOW->CREATE_TEXT(?TEXT?=?sy-datum?).
*?Set?the?top?of?list?using?the?header?for?Online
????CO_ALV->SET_TOP_OF_LIST(?LO_HEADER?).
*?Set?the?top?of?list?using?the?header?for?Print
????CO_ALV->SET_TOP_OF_LIST_PRINT(?LO_HEADER?).??ENDMETHOD.????????????????????"set_top_of_page
*?Setting?End_Of_page
??METHOD?SET_END_OF_PAGE.
????DATA:?LO_FOOTER??TYPE?REF?TO?CL_SALV_FORM_LAYOUT_GRID,
??????????LO_F_LABEL?TYPE?REF?TO?CL_SALV_FORM_LABEL,
??????????LO_F_FLOW??TYPE?REF?TO?CL_SALV_FORM_LAYOUT_FLOW.
*?Footer?Object
????CREATE?OBJECT?LO_FOOTER.
*?Information?in?Bold
????LO_F_LABEL?=?LO_FOOTER->CREATE_LABEL(?ROW?=?1?COLUMN?=?1?).
????LO_F_LABEL->SET_TEXT('Footer?of?the?ALV?in?Bold').
*?Tabular?Information
????LO_F_FLOW?=?LO_FOOTER->CREATE_FLOW(?ROW?=?2?COLUMN?=?1?).
????LO_F_FLOW->CREATE_TEXT(?TEXT?=?'This?is?text?of?flow?in?footer'?).
*?Set?the?end?of?list?using?the?header?for?Online
????CO_ALV->SET_END_OF_LIST(?LO_FOOTER?).
*?Set?the?End?of?list?using?the?header?for?Print
????CO_ALV->SET_END_OF_LIST_PRINT(?LO_FOOTER?).
??ENDMETHOD.????????????????????"set_end_of_page
??ENDCLASS.
"lcl_report?IMPLEMENTATION*----------------------------------------------------------------------*
START-OF-SELECTION.
*----------------------------------------------------------------------*
??DATA:?LO_REPORT?TYPE?REF?TO?LCL_REPORT.
??CREATE?OBJECT?LO_REPORT.
??LO_REPORT->GET_DATA(?).
??LO_REPORT->GENERATE_OUTPUT(?).
?
除此外,還可以和Container結合起來一起用:
?DATA:?GR_TABLE???TYPE?REF?TO?CL_SALV_TABLE.
?DATA:?GR_REPORT?TYPE?REF?TO?LCL_REPORT?.
?DATA:?CONTAINER1?TYPE?REF?TO?CL_GUI_CUSTOM_CONTAINER.
?CREATE?OBJECT?CONTAINER1
?????EXPORTING
???????CONTAINER_NAME?=?'CONTMARA'.
??TRY.
???????CL_SALV_TABLE=>FACTORY(
?????????EXPORTING
???????????R_CONTAINER????=?CONTAINER1
???????????CONTAINER_NAME?=?'CONTMARA'
?????????IMPORTING
???????????R_SALV_TABLE???=?GR_TABLE
?????????CHANGING
???????????T_TABLE????????=?T_MARA?).
?????CATCH?CX_SALV_MSG.?????????????????????????????????"#EC?NO_HANDLER
???ENDTRY.
????create?object?GR_REPORT.
??????GR_REPORT->SET_PF_STATUS(?CHANGING?CO_ALV?=??GR_TABLE?).
??????GR_REPORT->SET_TOP_OF_PAGE(?CHANGING?CO_ALV?=??GR_TABLE?).
?????GR_REPORT->SET_COLUMNS(?CHANGING?CO_ALV?=??GR_TABLE?).
?????GR_TABLE->DISPLAY(?).
?
總結
以上是生活随笔為你收集整理的运用类CL_SALV_TABLE实现alv的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Function实现ALV Table六
- 下一篇: [SAP PI]ECC系统接收财务凭证I