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