alv tree 总结
- 基礎數據聲明
??????????DATA: gc_custome_control_name TYPE scrfname , "控件名稱g_alv_tree TYPE REF TO cl_gui_alv_tree, " alv tree gr_container TYPE REF TO cl_gui_custom_container, "容器gr_alvgrid1 TYPE REF TO cl_gui_alv_grid, " alvgr_alvgrid2 TYPE REF TO cl_gui_alv_grid, " alvgs_layout TYPE lvc_s_layo, "格式gt_fieldcat1 TYPE lvc_t_fcat, "ALV字段wa_fieldcat1 TYPE lvc_s_fcat,gt_fieldcat2 TYPE lvc_t_fcat,wa_fieldcat2 TYPE lvc_s_fcat.DATA: l_hierarchy_header TYPE treev_hhdr. "ALVTREE heardDATA: l_top_key TYPE lvc_nkey,l_first_key TYPE lvc_nkey. DATA: l_node_text TYPE lvc_value.DATA: BEGIN OF it_order OCCURS 0, " 定義顯示ALVtree列表 內表carrid LIKE scarr-carrid, "值l_key TYPE lvc_nkey, " 節點END OF it_order.DATA: event_receiver1 TYPE REF TO lcl_tree_event_receiver. " 事件定義 DATA: event_receiver2 TYPE REF TO lcl_tree_event_receiver. " 事件定義??
?
- 獲取ALV TREE 列表的值
SELECT carridFROM scarrINTO CORRESPONDING FIELDS OF TABLE it_orderWHERE carrid IN s_carrid.
- 類定義:
CLASS lcl_tree_event_receiver DEFINITION.PUBLIC SECTION.METHODS handle_node_double_click "節點雙擊事件FOR EVENT node_double_click OF cl_gui_alv_treeIMPORTING node_key sender.METHODS handle_double_click "ALV雙擊事件FOR EVENT double_click OF cl_gui_alv_gridIMPORTING e_row e_column. ENDCLASS. ??
- 類實現
CLASS lcl_tree_event_receiver IMPLEMENTATION.METHOD handle_node_double_click.READ TABLE it_order WITH KEY l_key = node_key INTO it_order.so_carr = it_order-carrid.IF sy-subrc = 0.SELECT a~carrnameb~connid b~countryfr b~cityfrom b~airpfrom b~countrytob~cityto b~airpto b~fltime b~deptime b~arrtime b~distanceINTO CORRESPONDING FIELDS OF TABLE it_mainFROM scarr AS a INNER JOIN spfli AS b ON a~carrid = b~carridWHERE a~carrid = it_order-carrid .SORT it_main BY carrid connid.DELETE ADJACENT DUPLICATES FROM it_main COMPARING ALL FIELDS.CALL METHOD gr_alvgrid1->refresh_table_display. "ALV數據更新CALL METHOD gr_alvgrid2->refresh_table_display. "ALV數據更新CALL METHOD cl_gui_cfw=>flush. "同步ENDIF.ENDMETHOD. "handle_node_double_clickMETHOD handle_double_click.READ TABLE it_main INDEX e_row-index INTO wa_main."獲取數據(同上類似)CALL METHOD gr_alvgrid2->refresh_table_display. "更新表CALL METHOD cl_gui_cfw=>flush.ENDMETHOD.
- 屏幕PBO, MODULE status_0100 OUTPUT 中,創建TREE 、ALV
?? IF g_alv_tree IS INITIAL.PERFORM build_tree. "創建TREEENDIF.PERFORM register_events. "注冊事件CALL METHOD g_alv_tree->frontend_update. "wait for automatic flush at end of pbo endformCALL METHOD cl_gui_cfw=>flush.IF gr_alvgrid1 IS INITIAL. "創建ALVPERFORM build_alv.ENDIF.
- 事件注冊
FORM register_events .DATA: lt_events TYPE cntl_simple_events,l_event TYPE cntl_simple_event,l_event_receiver TYPE REF TO lcl_tree_event_receiver.CALL METHOD g_alv_tree->get_registered_eventsIMPORTINGevents = lt_events.l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.APPEND l_event TO lt_events.CALL METHOD g_alv_tree->set_registered_eventsEXPORTINGevents = lt_eventsEXCEPTIONScntl_error = 1cntl_system_error = 2illegal_event_combination = 3.IF sy-subrc <> 0.MESSAGE x208(00) WITH 'ERROR'.ENDIF.CREATE OBJECT l_event_receiver.SET HANDLER l_event_receiver->handle_node_double_click FOR g_alv_tree. ENDFORM. " register_events
- 創建TREE
?FORM build_tree .gc_custome_control_name = 'TREE'. "跟屏幕定義相同CREATE OBJECT gr_containerEXPORTINGcontainer_name = gc_custome_control_name.CREATE OBJECT g_alv_treeEXPORTINGparent = gr_container "容器名稱node_selection_mode = cl_gui_column_tree=>node_sel_mode_singleitem_selection = 'X'no_html_header = 'X'.l_hierarchy_header-heading = '航線承運人ID'(300).l_hierarchy_header-tooltip = 'Flights in a month'(400).l_hierarchy_header-width = 40.l_hierarchy_header-width_pix = ' '.CALL METHOD g_alv_tree->set_table_for_first_displayEXPORTING= l_hierarchy_headerCHANGINGit_outtab = it_ss[]it_fieldcatalog = gt_fieldcat4.CALL METHOD g_alv_tree->add_nodeEXPORTINGi_relat_node_key = ''i_relationship = cl_gui_column_tree=>relat_last_childi_node_text = '航線承運人ID'IMPORTINGe_new_node_key = l_top_key.LOOP AT it_order.l_node_text = it_order-carrid.CALL METHOD g_alv_tree->add_nodeEXPORTINGi_relat_node_key = l_top_keyi_relationship = cl_gui_column_tree=>relat_last_childi_node_text = l_node_textIMPORTINGe_new_node_key = l_first_key.it_order-l_key = l_first_key.MODIFY it_order.CLEAR it_order.ENDLOOP. ENDFORM. " build_tree
- 創建ALV
總結
以上是生活随笔為你收集整理的alv tree 总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAP销售发票同步产生会计凭证的两种做法
- 下一篇: 库存管理-历史库存和收发存系列-MB5B