ALV 容器备忘录
DATA?:
*ALV?字段
*??IT_SORT???????TYPE?LVC_T_SORT,
??I_FCAT1???????TYPE?LVC_T_FCAT,
??I_FCAT2???????TYPE?LVC_T_FCAT,
*?容器名稱
??GV_CNAME1?????TYPE?SCRFNAME?VALUE?'CONTAINER1',
??GV_CNAME2?????TYPE?SCRFNAME?VALUE?'CONTAINER2',
*?容器對象
??GV_CONTAINER1?TYPE?REF?TO?CL_GUI_CUSTOM_CONTAINER,
??GV_CONTAINER2?TYPE?REF?TO?CL_GUI_CUSTOM_CONTAINER,
*?ALV對象
??GV_ALV1???????TYPE?REF?TO?CL_GUI_ALV_GRID,
??GV_ALV2???????TYPE?REF?TO?CL_GUI_ALV_GRID,
*?ALV布局
??GV_LAYOUT1????TYPE?LVC_S_LAYO,
??GV_LAYOUT2????TYPE?LVC_S_LAYO.
*&---------------------------------------------------------------------*
*&??????Module??INITIAL_CONTAINER??OUTPUT
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
MODULE?INITIAL_CONTAINER?OUTPUT.
??IF?GV_ALV1?IS?INITIAL.
????IF?NOT?GV_CONTAINER1?IS?INITIAL.
??????CALL?METHOD?GV_CONTAINER1->FREE
????????EXCEPTIONS
??????????CNTL_SYSTEM_ERROR?=?1
??????????CNTL_ERROR????????=?2.
*????IF?SY-SUBRC?<>?0.
*????ENDIF.
????ENDIF.
????CLEAR?GV_CONTAINER1.
????CLEAR?GV_ALV1.
????CREATE?OBJECT?GV_CONTAINER1
??????EXPORTING
????????CONTAINER_NAME??????????????=?GV_CNAME1
??????EXCEPTIONS
????????CNTL_ERROR??????????????????=?1
????????CNTL_SYSTEM_ERROR???????????=?2
????????CREATE_ERROR????????????????=?3
????????LIFETIME_ERROR??????????????=?4
????????LIFETIME_DYNPRO_DYNPRO_LINK?=?5.
*創建ALV容器
????CREATE?OBJECT?GV_ALV1
??????EXPORTING
????????I_PARENT??????????=?GV_CONTAINER1
??????EXCEPTIONS
????????ERROR_CNTL_CREATE?=?1
????????ERROR_CNTL_INIT???=?2
????????ERROR_CNTL_LINK???=?3
????????ERROR_DP_CREATE???=?4.
*ALV的設置
????PERFORM?FRM_ALV_LIST1.
*AVL的顯示
????CALL?METHOD?GV_ALV1->SET_TABLE_FOR_FIRST_DISPLAY
??????EXPORTING
????????IS_LAYOUT?????????????????????=?GV_LAYOUT1
????????I_SAVE????????????????????????=?'A'
??????CHANGING
????????IT_OUTTAB?????????????????????=?GT_TCITEM[]
????????IT_FIELDCATALOG???????????????=?I_FCAT1
*???????IT_SORT???????????????????????=?IT_SORT
??????EXCEPTIONS
????????INVALID_PARAMETER_COMBINATION?=?1
????????PROGRAM_ERROR?????????????????=?2
????????TOO_MANY_LINES????????????????=?3
????????OTHERS????????????????????????=?4.
??ELSE.
*刷新
????CALL?METHOD?GV_ALV1->REFRESH_TABLE_DISPLAY.
??ENDIF.
??IF?GV_ALV2?IS?INITIAL.
????IF?NOT?GV_CONTAINER2?IS?INITIAL.
??????CALL?METHOD?GV_CONTAINER2->FREE
????????EXCEPTIONS
??????????CNTL_SYSTEM_ERROR?=?1
??????????CNTL_ERROR????????=?2.
*????IF?SY-SUBRC?<>?0.
*????ENDIF.
????ENDIF.
????CLEAR?GV_CONTAINER2.
????CLEAR?GV_ALV2.
????CREATE?OBJECT?GV_CONTAINER2
??????EXPORTING
????????CONTAINER_NAME??????????????=?GV_CNAME2
??????EXCEPTIONS
????????CNTL_ERROR??????????????????=?1
????????CNTL_SYSTEM_ERROR???????????=?2
????????CREATE_ERROR????????????????=?3
????????LIFETIME_ERROR??????????????=?4
????????LIFETIME_DYNPRO_DYNPRO_LINK?=?5.
*創建ALV容器
????CREATE?OBJECT?GV_ALV2
??????EXPORTING
????????I_PARENT??????????=?GV_CONTAINER2
??????EXCEPTIONS
????????ERROR_CNTL_CREATE?=?1
????????ERROR_CNTL_INIT???=?2
????????ERROR_CNTL_LINK???=?3
????????ERROR_DP_CREATE???=?4.
*ALV的設置
????PERFORM?FRM_ALV_LIST2.
*AVL的顯示
????CALL?METHOD?GV_ALV2->SET_TABLE_FOR_FIRST_DISPLAY
??????EXPORTING
????????IS_LAYOUT?????????????????????=?GV_LAYOUT2
????????I_SAVE????????????????????????=?'A'
??????CHANGING
????????IT_OUTTAB?????????????????????=?GT_FJDJ[]
????????IT_FIELDCATALOG???????????????=?I_FCAT2
??????EXCEPTIONS
????????INVALID_PARAMETER_COMBINATION?=?1
????????PROGRAM_ERROR?????????????????=?2
????????TOO_MANY_LINES????????????????=?3
????????OTHERS????????????????????????=?4.
*????--Creating?an?instance?for?the?event?handler
*????CREATE?OBJECT?GR_EVENT_HANDLER?.
*????--Registering?handler?methods?to?handle?ALV?Grid?events
*????SET?HANDLER?GR_EVENT_HANDLER->HANDLE_DOUBLE_CLICK?FOR?GV_ALV2.
??ELSE.
*刷新
????CALL?METHOD?GV_ALV2->REFRESH_TABLE_DISPLAY.
??ENDIF.
ENDMODULE.
*&---------------------------------------------------------------------*
*&??????Form??FRM_FREE_CONTAINER
*&---------------------------------------------------------------------*
*???????text
*----------------------------------------------------------------------*
*??-->??p1????????text
*??<--??p2????????text
*----------------------------------------------------------------------*
FORM?FRM_FREE_CONTAINER?.
*?Free?the?object?of?container
??IF??NOT?GV_CONTAINER1?IS?INITIAL
???OR?NOT?GV_CONTAINER2?IS?INITIAL.
????CALL?METHOD?GV_CONTAINER1->FREE
??????EXCEPTIONS
????????CNTL_SYSTEM_ERROR?=?1
????????CNTL_ERROR????????=?2.
????CALL?METHOD?GV_CONTAINER2->FREE
??????EXCEPTIONS
????????CNTL_SYSTEM_ERROR?=?1
????????CNTL_ERROR????????=?2.
????CLEAR:
??????????GV_CONTAINER1,
??????????GV_CONTAINER2,
??????????GV_ALV1,
??????????GV_ALV2.
??ENDIF.
ENDFORM.????????????????????"?FRM_FREE_CONTAINER
總結
- 上一篇: 8、Power Map—实例:制作独立播
- 下一篇: 9、Power Map—应用拾取坐标系统