当前位置:网站首页>个人TREE ALV 模版-加快你的开发
个人TREE ALV 模版-加快你的开发
2022-06-27 19:56:00 【Tab Zhu】
个人TREE ALV 模版-加快你的开发
上次发了OO ALV模板(个人OO ALV 模版-加快你的ALV开发)后,小伙伴们用的可舒服的,这次整理下tree alv的模板
1. 我们随便来点数据
SELECT * FROM sflight INTO TABLE @gt_sflight UP TO 50 ROWS.
2. 创建屏幕
这里我们行列给到最大值200255
然后在绘制界面中给一个容器CONTAINER1(长高也是255200,同时给到
)这样容器就会根据你电脑分表率大小自动调节了 对应创建OK_CODE
3. 添加逻辑流
MODULE pbo OUTPUT.
SET PF-STATUS 'MAIN100'.
IF g_alv_tree IS INITIAL.
PERFORM init_tree.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
ASSERT sy-subrc = 0.
ENDIF.
ENDMODULE.
MODULE pai INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
CALL METHOD g_alv_tree->r_container->free.
LEAVE PROGRAM.
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE.
顺便加上Status:
4. Tree ALV 调用示例
输入以下代码,然后直接点击执行程序,我们可以看到一个ALV tree
*&=====================================================================*
*& Created date: 2022.05.11
*& Created by: Tab-Zhu (微信公众号:Tab_JXZHU)
*&---------------------------------------------------------------------*
*& Changed date:
*& Changed by:
*&---------------------------------------------------------------------*
REPORT ztab_test_02.
TYPES: BEGIN OF ty_tree_node,
id TYPE char18,
text TYPE char40,
END OF ty_tree_node.
DATA: g_alv_tree TYPE REF TO zcl_tab_tree_alv.
DATA: gt_sflight TYPE sflight OCCURS 0, "Output-Table
gt_scala TYPE STANDARD TABLE OF ty_tree_node,
ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm, "OK-Code
g_max TYPE i VALUE 255.
START-OF-SELECTION.
SELECT * FROM sflight INTO TABLE @gt_sflight UP TO 50 ROWS.
CHECK sy-subrc EQ 0.
END-OF-SELECTION.
CALL SCREEN 9000.
MODULE pbo OUTPUT.
SET PF-STATUS 'MAIN100'.
IF g_alv_tree IS INITIAL.
PERFORM init_tree.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
ASSERT sy-subrc = 0.
ENDIF.
ENDMODULE. " PBO OUTPUT
MODULE pai INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
CALL METHOD g_alv_tree->r_container->free.
LEAVE PROGRAM.
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE. " PAI INPUT
FORM init_tree.
CREATE OBJECT g_alv_tree.
DATA(ls_alv_tree_head) = VALUE treev_hhdr( heading = '航班' tooltip = '航班'
width = 35 width_pix = space ).
CALL METHOD zcl_tab_tree_alv=>set_default_fieldcat
CHANGING
it_data = gt_sflight
RECEIVING
rt_fieldcat = DATA(lt_fieldcat)
EXCEPTIONS
error_in_get_fieldcat = 1
OTHERS = 2.
IF sy-subrc <> 0.
CLEAR lt_fieldcat[].
ENDIF.
LOOP AT lt_fieldcat ASSIGNING FIELD-SYMBOL(<fs_fcat>).
DATA(lv_tabix) = sy-tabix.
CASE <fs_fcat>-fieldname.
WHEN 'MANDT'.
DELETE lt_fieldcat INDEX lv_tabix.
WHEN 'CARRID'.
<fs_fcat>-outputlen = 10.
WHEN 'CONNID'.
<fs_fcat>-outputlen = 10.
WHEN OTHERS.
ENDCASE.
ENDLOOP.
CALL METHOD g_alv_tree->create_tree_alv
EXPORTING
* iv_repid = SY-CPROG
* iv_screen = '9000'
* iv_item_selection = 'X'
* iv_no_html_header = 'X'
iv_hierarchy_header = ls_alv_tree_head
iv_container_name = 'CONTAINER1'
* iv_variant_handle = '1'
it_fieldcat = lt_fieldcat
i_set_tree_node_form = 'FRM_SET_TREE_NODE_FORM'
* i_set_toolbar_form =
* i_function_selected_form =
* i_dropdown_clicked_form =
* i_checkbox_change_form =
* i_link_click_form =
CHANGING
ct_data = gt_sflight
EXCEPTIONS
create_tree_alv_failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'Create tree alv failed'.
ENDIF.
ENDFORM.
FORM frm_set_tree_node_form
CHANGING cr_alv_tree TYPE REF TO cl_gui_alv_tree
ct_data TYPE STANDARD TABLE.
DATA:lt_data TYPE TABLE OF sflight."inner table structure ex:sflight 以航班表为例子
DATA:ls_output_line TYPE sflight.
DATA:ls_layout_node TYPE lvc_s_layn.
DATA: ls_layout_item TYPE lvc_s_layi,
lt_layout_item TYPE lvc_t_layi.
DATA:lv_top_key TYPE lvc_nkey.
DATA:lv_next_key TYPE lvc_nkey.
DATA:lv_node_text TYPE lvc_value.
lt_data = ct_data.
CHECK lt_data IS NOT INITIAL.
LOOP AT lt_data INTO DATA(ls_data) GROUP BY (
carrid = ls_data-carrid )
ASSIGNING FIELD-SYMBOL(<fs_group>).
"HEADER
"层级名称
lv_node_text = 'LEVEL 1'.
* "选择框
* CLEAR ls_layout_item.
* ls_layout_item-fieldname = cr_alv_tree->c_hierarchy_column_name."层级名称
* ls_layout_item-class = cl_gui_column_tree=>item_class_checkbox.
* ls_layout_item-editable = 'X'.
* APPEND ls_layout_item TO lt_layout_item.
* "设置图标
* CLEAR ls_layout_item.
* ls_layout_item-fieldname = 'STATUS'."对于某个字段设置为图标
* ls_layout_item-t_image = '@[email protected]'."yellow
* APPEND ls_layout_item TO lt_layout_item.
CLEAR ls_output_line.
MOVE-CORRESPONDING <fs_group> TO ls_output_line.
CALL METHOD cr_alv_tree->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child "how to insert the node
i_node_text = lv_node_text "hierarchy node text
* is_node_layout = ls_layout_node "node layout
is_outtab_line = ls_output_line "attributes of the inserted node
* it_item_layout = lt_layout_item "item layout
IMPORTING
e_new_node_key = lv_top_key.
LOOP AT GROUP <fs_group> ASSIGNING FIELD-SYMBOL(<fs_line>).
"item
CLEAR ls_output_line.
MOVE-CORRESPONDING <fs_line> TO ls_output_line.
lv_node_text = 'LEVEL 2'.
CALL METHOD cr_alv_tree->add_node
EXPORTING
i_relat_node_key = lv_top_key "Top key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = lv_node_text
is_outtab_line = ls_output_line
* is_node_layout = ls_layout_node
* it_item_layout = lt_layout_item
IMPORTING
e_new_node_key = lv_next_key.
ENDLOOP.
ENDLOOP.
ENDFORM.
5. 模板代码
下面介绍ZCL_TAB_TREE_ALV代码- 复制可用 小伙伴们可以直接SE24,创建一个类,然后点击基于源代码创建,然后COPY代码即可
*&=====================================================================*
*& Created date: 2022.05.11
*& Created by: Tab-Zhu (微信公众号:Tab_JXZHU)
*&---------------------------------------------------------------------*
*& Changed date:
*& Changed by:
*&---------------------------------------------------------------------*CLASS zcl_tab_tree_alv DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
DATA r_container TYPE REF TO cl_gui_custom_container .
DATA r_alv_tree TYPE REF TO cl_gui_alv_tree .
DATA r_toolbar TYPE REF TO cl_gui_toolbar.
DATA r_line_behaviour TYPE REF TO cl_dragdrop .
DATA r_fav_behaviour TYPE REF TO cl_dragdrop .
DATA m_repid TYPE progname .
DATA:
m_set_toolbar_form TYPE string,
m_set_tree_node_form TYPE string.
DATA:
m_function_selected_form TYPE string,
m_dropdown_clicked_form TYPE string,
m_checkbox_change_form TYPE string,
m_link_click_form TYPE string.
METHODS create_tree_alv
IMPORTING
VALUE(iv_repid) TYPE progname DEFAULT sy-cprog
VALUE(iv_screen) TYPE sy-dynnr DEFAULT '9000'
VALUE(iv_item_selection) TYPE flag DEFAULT 'X'"
VALUE(iv_no_html_header) TYPE flag DEFAULT 'X'"
VALUE(iv_hierarchy_header) TYPE treev_hhdr "树控制:层次结构表头的属性
VALUE(iv_container_name) TYPE c DEFAULT 'CONTAINER'
VALUE(iv_variant_handle) TYPE disvariant-handle DEFAULT '1'
VALUE(it_fieldcat) TYPE lvc_t_fcat OPTIONAL
!i_set_tree_node_form TYPE string
!i_set_toolbar_form TYPE string OPTIONAL
!i_function_selected_form TYPE string OPTIONAL
!i_dropdown_clicked_form TYPE string OPTIONAL
!i_checkbox_change_form TYPE string OPTIONAL
!i_link_click_form TYPE string OPTIONAL
CHANGING
!ct_data TYPE STANDARD TABLE
EXCEPTIONS
create_tree_alv_failed .
CLASS-METHODS set_default_fieldcat
CHANGING
!it_data TYPE STANDARD TABLE
RETURNING
VALUE(rt_fieldcat) TYPE lvc_t_fcat
EXCEPTIONS
error_in_get_fieldcat .
"set toolbar
METHODS set_toolbar
CHANGING
cr_toolbar TYPE REF TO cl_gui_toolbar.
"set tree node
METHODS set_tree_node
CHANGING
!ct_data TYPE STANDARD TABLE
!cr_alv_tree TYPE REF TO cl_gui_alv_tree.
"function_selected 按钮功能
METHODS handle_function_selected FOR EVENT function_selected OF cl_gui_toolbar
IMPORTING fcode.
"dropdown_clicked 功能组
METHODS handle_dropdown_clicked FOR EVENT dropdown_clicked OF cl_gui_toolbar
IMPORTING fcode posx posy.
"checkbox_change 选择框
METHODS handle_checkbox_change FOR EVENT checkbox_change OF cl_gui_alv_tree
IMPORTING checked fieldname node_key.
"link_click 点击链接
METHODS handle_link_click FOR EVENT link_click OF cl_gui_alv_tree
IMPORTING node_key fieldname.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_TAB_TREE_ALV IMPLEMENTATION.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->CREATE_TREE_ALV
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_REPID TYPE PROGNAME (default =SY-CPROG)
* | [--->] IV_SCREEN TYPE SY-DYNNR (default ='9000')
* | [--->] IV_ITEM_SELECTION TYPE FLAG (default ='X')
* | [--->] IV_NO_HTML_HEADER TYPE FLAG (default ='X')
* | [--->] IV_HIERARCHY_HEADER TYPE TREEV_HHDR
* | [--->] IV_CONTAINER_NAME TYPE C (default ='CONTAINER')
* | [--->] IV_VARIANT_HANDLE TYPE DISVARIANT-HANDLE (default ='1')
* | [--->] IT_FIELDCAT TYPE LVC_T_FCAT(optional)
* | [--->] I_SET_TREE_NODE_FORM TYPE STRING
* | [--->] I_SET_TOOLBAR_FORM TYPE STRING(optional)
* | [--->] I_FUNCTION_SELECTED_FORM TYPE STRING(optional)
* | [--->] I_DROPDOWN_CLICKED_FORM TYPE STRING(optional)
* | [--->] I_CHECKBOX_CHANGE_FORM TYPE STRING(optional)
* | [--->] I_LINK_CLICK_FORM TYPE STRING(optional)
* | [<-->] CT_DATA TYPE STANDARD TABLE
* | [EXC!] CREATE_TREE_ALV_FAILED
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD create_tree_alv.
DATA:ls_variant TYPE disvariant.
DATA lt_filedcat TYPE lvc_t_fcat.
m_repid = iv_repid.
CREATE OBJECT r_container
EXPORTING
container_name = iv_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
IF sy-subrc <> 0.
RAISE create_tree_alv_failed.
ENDIF.
CREATE OBJECT r_alv_tree
EXPORTING
parent = r_container
node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
item_selection = iv_item_selection
no_html_header = iv_no_html_header
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
IF sy-subrc <> 0.
RAISE create_tree_alv_failed.
ENDIF.
"字段目录
IF it_fieldcat[] IS NOT INITIAL.
lt_filedcat = it_fieldcat.
ELSE.
CALL METHOD me->set_default_fieldcat
CHANGING
it_data = ct_data
RECEIVING
rt_fieldcat = lt_filedcat
EXCEPTIONS
error_in_get_fieldcat = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE e368(00) WITH 'Failed to get fiedlcat' ''.
ENDIF.
ENDIF.
ls_variant-report = iv_repid.
ls_variant-handle = iv_variant_handle.
ls_variant-username = sy-uname.
DATA lr_data TYPE REF TO data.
FIELD-SYMBOLS <fs_table> TYPE STANDARD TABLE.
CREATE DATA lr_data LIKE ct_data.
ASSIGN lr_data->* TO <fs_table>.
CALL METHOD r_alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = iv_hierarchy_header
is_variant = ls_variant
i_save = 'A'
CHANGING
it_fieldcatalog = lt_filedcat
it_outtab = <fs_table>. "lt_data 必须为空
"get toolbar class
CALL METHOD r_alv_tree->get_toolbar_object
IMPORTING
er_toolbar = r_toolbar.
"set toolbar 设置工具栏
m_set_toolbar_form = i_set_toolbar_form.
CALL METHOD me->set_toolbar
CHANGING
cr_toolbar = r_toolbar.
"set tree node 设置树形结构
m_set_tree_node_form = i_set_tree_node_form.
CALL METHOD me->set_tree_node
CHANGING
cr_alv_tree = r_alv_tree
ct_data = ct_data.
"register events 注册事件
DATA:
lt_events TYPE cntl_simple_events,
ls_events TYPE cntl_simple_event.
CALL METHOD r_alv_tree->get_registered_events
IMPORTING
events = lt_events.
ls_events-eventid = cl_gui_column_tree=>eventid_link_click.
ls_events-appl_event = 'X'.
APPEND ls_events TO lt_events.
ls_events-eventid = cl_gui_column_tree=>eventid_checkbox_change.
ls_events-appl_event = 'X'.
APPEND ls_events TO lt_events.
CALL METHOD r_alv_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
RAISE create_tree_alv_failed.
ENDIF.
*SET EVENT
DEFINE d_set_handler.
IF &1 IS SUPPLIED.
&2 = &1.
SET HANDLER me->&3 FOR &4.
ENDIF.
END-OF-DEFINITION.
d_set_handler:
i_function_selected_form m_function_selected_form handle_function_selected r_toolbar,"按钮功能
i_dropdown_clicked_form m_dropdown_clicked_form handle_dropdown_clicked r_toolbar,"工具栏组合
i_checkbox_change_form m_checkbox_change_form handle_checkbox_change r_alv_tree,"选择框
i_link_click_form m_link_click_form handle_link_click r_alv_tree."点击链接
* SET HANDLER me->click_button_action FOR r_toolbar."按钮功能
* SET HANDLER me->on_dropdown_clicked FOR r_toolbar."工具栏组合
* SET HANDLER me->handle_checkbox_change FOR r_alv_tree."选择框
* SET HANDLER me->on_link_click FOR r_alv_tree."点击链接
CALL METHOD r_alv_tree->update_calculations.
CALL METHOD r_alv_tree->frontend_update.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS
cntl_system_error = 1
cntl_error = 2.
IF sy-subrc NE 0.
RAISE create_tree_alv_failed.
ENDIF.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->HANDLE_CHECKBOX_CHANGE
* +-------------------------------------------------------------------------------------------------+
* | [--->] CHECKED LIKE
* | [--->] FIELDNAME LIKE
* | [--->] NODE_KEY LIKE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD handle_checkbox_change.
PERFORM (m_checkbox_change_form) IN PROGRAM (m_repid) IF FOUND
USING checked fieldname node_key.
*FORM 示例
*FORM m_checkbox_change USING checked
* fieldname
* node_key.
* DATA:
* lv_parent_key TYPE lvc_nkey,
* ls_laci TYPE lvc_s_laci,
* lt_laci TYPE lvc_t_laci,
* lt_children_keys TYPE lvc_t_nkey,
* ls_layout_item TYPE lvc_s_layi,
* lt_layout_item TYPE lvc_t_layi.
* "得到该节点的父节点
* CALL METHOD r_alv_tree->get_parent
* EXPORTING
* i_node_key = node_key
* IMPORTING
* e_parent_node_key = lv_parent_key.
* IF lv_parent_key EQ '&VIRTUALROOT'."根目录
* "该节点的子节点
* CALL METHOD r_alv_tree->get_children
* EXPORTING
* i_node_key = node_key
* IMPORTING
* et_children = lt_children_keys.
* "将该节点下方的
* LOOP AT lt_children_keys INTO DATA(ls_children_key).
* ls_laci-fieldname = cl_alv_tree_base=>c_hierarchy_column_name.
* ls_laci-chosen = checked.
* ls_laci-u_chosen = gc_x.
* CALL METHOD r_alv_tree->change_item
* EXPORTING
* i_node_key = ls_children_key
* i_fieldname = cl_alv_tree_base=>c_hierarchy_column_name
* i_data = ''
* i_u_data = ''
* is_item_layout = ls_laci.
* ENDLOOP.
* "当子节点置空时, 需要将父节点置空
* IF lv_parent_key NE '&VIRTUALROOT' AND checked IS INITIAL.
* ls_laci-fieldname = cl_alv_tree_base=>c_hierarchy_column_name.
* ls_laci-chosen = checked.
* ls_laci-u_chosen = gc_x.
* CALL METHOD r_alv_tree->change_item
* EXPORTING
* i_node_key = lv_parent_key
* i_fieldname = cl_alv_tree_base=>c_hierarchy_column_name
* i_data = ''
* i_u_data = ''
* is_item_layout = ls_laci.
* ENDIF.
* ENDIF.
* CALL METHOD r_alv_tree->frontend_update.
*ENDFORM.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->HANDLE_DROPDOWN_CLICKED
* +-------------------------------------------------------------------------------------------------+
* | [--->] FCODE LIKE
* | [--->] POSX LIKE
* | [--->] POSY LIKE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD handle_dropdown_clicked.
PERFORM (m_dropdown_clicked_form) IN PROGRAM (m_repid) IF FOUND
USING fcode posx posy.
*FORM 示例
*FORM m_dropdown_clicked USING fcode TYPE UI_FUNC
* posx TYPE I
* posy TYPE I.
*-- Fires when a dropdown menu is clicked. After it has been
*-- clicked a context menu is shown beside the button.
* Save x and y position of button for use with context menu
* Create context menu for menu button
* DATA: lo_submenu TYPE REF TO cl_ctmenu.
* DATA: lo_menu TYPE REF TO cl_ctmenu.
* IF lo_menu IS INITIAL.
* CREATE OBJECT lo_menu.
* CASE uv_fcode.
* WHEN 'MENU1'."这个按钮是通过method中 set_toolbar :cr_tree_alv->add_function
* "下拉按钮1
* CALL METHOD lo_menu->add_function
* EXPORTING
* fcode = 'DOWNHU'
* icon = icon_export
* text = 'DOWNLOAD'(088).
* "下拉按钮2
* CALL METHOD lo_menu->add_function
* EXPORTING
* fcode = 'UPHU'
* icon = icon_import
* text = 'UPLOAD'(089).
* WHEN OTHERS.
* ENDCASE.
******如果仍有需要
****** CALL METHOD gr_context_menu->add_separator.
****** create sub menu for the context menu
****** CREATE OBJECT lo_submenu.
****** CALL METHOD lo_submenu->add_function
****** EXPORTING
****** fcode = 'UPMAT'
****** icon = icon_import
****** butn_type = lv_btype
****** text = TEXT-091
****** quickinfo = TEXT-091.
****** CALL METHOD lo_submenu->add_function
****** EXPORTING
****** fcode = 'SUB2'
****** text = 'Do something good'.
*******-- ADD sub menu to the context menu
****** CALL METHOD lo_menu->add_submenu
****** EXPORTING
****** menu = lo_submenu
****** text = 'Do something else.....'.
****** ENDIF.
* CALL METHOD r_toolbar->track_context_menu
* EXPORTING
* context_menu = lo_menu
* posx = posx
* posy = posy.
*ENDFORM.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->HANDLE_FUNCTION_SELECTED
* +-------------------------------------------------------------------------------------------------+
* | [--->] FCODE LIKE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD handle_function_selected.
PERFORM (m_function_selected_form) IN PROGRAM (m_repid) IF FOUND
USING fcode.
*FORM 示例
*FORM m_function_selected USING FCODE TYPE UI_FUNC.
* CASE fcode.
* WHEN 'SELALL'.
*
* WHEN 'DESEL'.
*
* WHEN 'MENU1'
* WHEN OTHERS.
* ENDCASE.
*ENDFORM.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->HANDLE_LINK_CLICK
* +-------------------------------------------------------------------------------------------------+
* | [--->] NODE_KEY LIKE
* | [--->] FIELDNAME LIKE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD handle_link_click.
PERFORM (m_link_click_form) IN PROGRAM (m_repid) IF FOUND USING node_key fieldname.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_TAB_TREE_ALV=>SET_DEFAULT_FIELDCAT
* +-------------------------------------------------------------------------------------------------+
* | [<-->] IT_DATA TYPE STANDARD TABLE
* | [<-()] RT_FIELDCAT TYPE LVC_T_FCAT
* | [EXC!] ERROR_IN_GET_FIELDCAT
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD set_default_fieldcat.
DATA: salv_table TYPE REF TO cl_salv_table.
TRY.
cl_salv_table=>factory( IMPORTING
r_salv_table = salv_table
CHANGING
t_table = it_data[] ).
rt_fieldcat = cl_salv_controller_metadata=>get_lvc_fieldcatalog(
r_columns = salv_table->get_columns( ) " ALV Filter
r_aggregations = salv_table->get_aggregations( ) " ALV Aggregations
).
CATCH cx_root INTO DATA(lx_root).
DATA(lv_text) = lx_root->get_text( ).
RAISE error_in_get_fieldcat.
ENDTRY.
"当你的内表字段不是参考数据库结构/表创建的时候,F4搜索帮助有图标但是无效
"有2种处理方法
"1. F4AVAILABL = abap_false
"2. 加上:REF_TABLE ,REF_FIELD
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->SET_TOOLBAR
* +-------------------------------------------------------------------------------------------------+
* | [<-->] CR_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD set_toolbar.
PERFORM (m_set_toolbar_form) IN PROGRAM (m_repid) IF FOUND
CHANGING cr_toolbar.
*FORM 示例
*FORM m_set_toolbar_form CHANGING cr_toolbar TYPE REF TO cl_gui_toolbar.
* "删除
* CALL METHOD cr_toolbar->delete_button
* EXPORTING
* fcode = cl_gui_alv_tree=>mc_fc_print_back.
*
* "增加按钮
* CALL METHOD cr_toolbar->add_button
* EXPORTING
* fcode = 'EXP'
* icon = icon_expand
* butn_type = lv_btype "0 按钮(正常) 1 菜单和缺省按钮 2 菜单 3 分隔符 4 单选按钮 5 复选框 6 菜单选项
* quickinfo = 'quickinfo'.
*ENDFORM.
ENDMETHOD.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZCL_TAB_TREE_ALV->SET_TREE_NODE
* +-------------------------------------------------------------------------------------------------+
* | [<-->] CT_DATA TYPE STANDARD TABLE
* | [<-->] CR_ALV_TREE TYPE REF TO CL_GUI_ALV_TREE
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD set_tree_node.
PERFORM (m_set_tree_node_form) IN PROGRAM (m_repid) IF FOUND
CHANGING cr_alv_tree ct_data.
*FROM 示例
*FROM m_set_tree_node CHANGING cr_alv_tree TYPE REF TO CL_GUI_ALV_TREE
* ct_data type standard table.
* DATA:lt_data TYPE TABLE OF sflight."inner table structure ex:sflight 以航班表为例子
* DATA:ls_output_line TYPE sflight.
* DATA:ls_layout_node TYPE lvc_s_layn.
* DATA: ls_layout_item TYPE lvc_s_layi,
* lt_layout_item TYPE lvc_t_layi.
* DATA:lv_top_key TYPE lvc_nkey.
* DATA:lv_next_key TYPE lvc_nkey.
* DATA:lv_node_text TYPE lvc_value.
*
* lt_data = ct_data.
*
* CHECK lt_data IS NOT INITIAL.
* LOOP AT lt_data INTO DATA(ls_data) GROUP BY (
* carrid = ls_data-carrid
* connid = ls_data-connid
* fldate = ls_data-fldate )
* ASSIGNING FIELD-SYMBOL(<fs_group>).
*
* "HEADER
* "层级名称
* lv_node_text = 'LEVEL 1'.
* "选择框
* CLEAR ls_layout_item.
* ls_layout_item-fieldname = cr_alv_tree->c_hierarchy_column_name."层级名称
* ls_layout_item-class = cl_gui_column_tree=>item_class_checkbox.
* ls_layout_item-editable = 'X'.
* APPEND ls_layout_item TO lt_layout_item.
*
* "设置图标
* CLEAR ls_layout_item.
* ls_layout_item-fieldname = 'STATUS'."对于某个字段设置为图标
* ls_layout_item-t_image = '@[email protected]'."yellow
* APPEND ls_layout_item TO lt_layout_item.
*
* CALL METHOD cr_alv_tree->add_node
* EXPORTING
* i_relat_node_key = ''
* i_relationship = cl_gui_column_tree=>relat_last_child "how to insert the node
* i_node_text = lv_node_text "hierarchy node text
* is_node_layout = ls_layout_node "node layout
* is_outtab_line = ls_output_line "attributes of the inserted node
* it_item_layout = lt_layout_item "item layout
* IMPORTING
* e_new_node_key = lv_top_key.
* "item
* lv_node_text = 'LEVEL 2'.
* CALL METHOD cr_alv_tree->add_node
* EXPORTING
* i_relat_node_key = lv_top_key "Top key
* i_relationship = cl_gui_column_tree=>relat_last_child
* i_node_text = lv_node_text
* is_outtab_line = ls_output_line
* is_node_layout = ls_layout_node
* it_item_layout = lt_layout_item
* IMPORTING
* e_new_node_key = lv_next_key.
* ENDLOOP.
*ENDFORM.
ENDMETHOD.
ENDCLASS.
希望对大家的开发有帮助哈
更多其他的文章请点击历史记录
边栏推荐
- 记一次List对象遍历及float类型判断大小
- "I make the world cooler" 2022 Huaqing vision R & D product launch was a complete success
- The karsonzhang/fastadmin addons provided by the system reports an error
- 月薪3万的狗德培训,是不是一门好生意?
- Is flush stock trading software reliable?? Is it safe?
- 结构化机器学习项目(一)- 机器学习策略
- Login credentials (cookie+session and token token)
- Acwing weekly contest 57- digital operation - (thinking + decomposition of prime factor)
- netERR_ CONNECTION_ Refused solution
- 结构化机器学习项目(二)- 机器学习策略(2)
猜你喜欢

爬虫笔记(1)- urllib

《7天学会Go并发编程》第7天 go语言并发编程Atomic原子实战操作含ABA问题

改善深层神经网络:超参数调试、正则化以及优化(三)- 超参数调试、Batch正则化和程序框架

Infiltration learning - problems encountered during SQL injection - explanation of sort=left (version(), 1) - understanding of order by followed by string

YOLOv6:又快又准的目标检测框架开源啦

Exclusive interview with millions of annual salary. What should developers do if they don't fix bugs?

MySQL数据库 实验报告(一)

关于davwa的SQL注入时报错:Illegal mix of collations for operation ‘UNION‘原因剖析与验证

99 multiplication table - C language

管理系统-ITclub(上)
随机推荐
Introduction to MySQL operation (IV) -- data sorting (ascending, descending, and multi field sorting)
解决本地连接不上虚拟机的问题
Use Fiddler to simulate weak network test (2g/3g)
管理系统-ITclub(上)
月薪3万的狗德培训,是不是一门好生意?
Oracle obtains the beginning and end of the month time, and obtains the beginning and end of the previous month time
Stunned! The original drawing function of markdown is so powerful!
Test birds with an annual salary of 50w+ are using this: JMeter script development -- extension function
This set of steps for performance testing using JMeter includes two salary increases and one promotion
YOLOv6:又快又准的目标检测框架开源啦
Learn to go concurrent programming in 7 days go language sync Application and implementation of cond
How to participate in openharmony code contribution
Mysql database experiment report (I)
网易云“情怀”底牌失守
Codeforces Round #717 (Div. 2)
Yarn performance tuning of CDH cluster
[MySQL practice] query statement demonstration
01 golang environment construction
九九乘法表——C语言
结构化机器学习项目(二)- 机器学习策略(2)