欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

alv tree 总结

发布时间:2025/3/20 34 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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 总结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。