Вроде все по науке... а не выходит.
Code:
*&---------------------------------------------------------------------*
*& Report Z_TREE *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT Z_TREE.
INCLUDE <ICON>.
TYPES: BEGIN OF ALV_TREE_TAB,
field01(10),
field02(10),
field03(10),
END OF ALV_TREE_TAB.
DATA:
ALV_TREE_TAB TYPE STANDARD TABLE OF ALV_TREE_TAB,
ALV_TREE_TAB_line LIKE LINE OF ALV_TREE_TAB,
ALV_FC TYPE LVC_T_FCAT,
ALV_FC_line LIKE LINE OF ALV_FC,
ALV_HIERARCHY_HEAD TYPE TREEV_HHDR,
ALV_LYOUT_NODE TYPE LVC_S_LAYN,
ALV_last_key TYPE LVC_NKEY,
ALV_TREE TYPE REF TO CL_GUI_ALV_TREE,
CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
SET SCREEN 0001.
*&---------------------------------------------------------------------*
*& Form ALV_FILL_TREE_TAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ALV_FILL_TREE_TAB.
CLEAR ALV_TREE_TAB[].
CLEAR ALV_TREE_TAB_line.
ALV_TREE_TAB_line-field01 = '1.1'.
ALV_TREE_TAB_line-field02 = '1.2'.
ALV_TREE_TAB_line-field03 = '1.3'.
APPEND ALV_TREE_TAB_line TO ALV_TREE_TAB.
CLEAR ALV_TREE_TAB_line.
ALV_TREE_TAB_line-field01 = '2.1'.
ALV_TREE_TAB_line-field02 = '2.2'.
ALV_TREE_TAB_line-field03 = '2.3'.
APPEND ALV_TREE_TAB_line TO ALV_TREE_TAB.
CLEAR ALV_TREE_TAB_line.
ALV_TREE_TAB_line-field01 = '3.1'.
ALV_TREE_TAB_line-field02 = '3.2'.
ALV_TREE_TAB_line-field03 = '3.3'.
APPEND ALV_TREE_TAB_line TO ALV_TREE_TAB.
CLEAR ALV_TREE_TAB_line.
ALV_TREE_TAB_line-field01 = '4.1'.
ALV_TREE_TAB_line-field02 = '4.2'.
ALV_TREE_TAB_line-field03 = '4.3'.
APPEND ALV_TREE_TAB_line TO ALV_TREE_TAB.
ENDFORM. "ALV_FILL_TREE_TAB
*&---------------------------------------------------------------------*
*& Form ALV_BUILD_FC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ALV_BUILD_FC.
CLEAR ALV_FC[].
CLEAR ALV_FC_line.
ALV_FC_line-fieldname = 'FIELD01'.
ALV_FC_line-outputlen = 8.
ALV_FC_line-scrtext_s = 'Поле1'.
APPEND ALV_FC_line TO ALV_FC.
CLEAR ALV_FC_line.
ALV_FC_line-fieldname = 'FIELD02'.
ALV_FC_line-outputlen = 8.
ALV_FC_line-scrtext_s = 'Поле2'.
APPEND ALV_FC_line TO ALV_FC.
CLEAR ALV_FC_line.
ALV_FC_line-fieldname = 'FIELD03'.
ALV_FC_line-outputlen = 8.
ALV_FC_line-scrtext_s = 'Поле3'.
APPEND ALV_FC_line TO ALV_FC.
ENDFORM. "ALV_BUILD_FC
*&---------------------------------------------------------------------*
*& Form ALV_ADD_NODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM ALV_ADD_NODE USING
TAB_line TYPE ALV_TREE_TAB
p_relat_key TYPE lvc_nkey
CHANGING
p_node_key TYPE lvc_nkey.
CALL METHOD ALV_TREE->ADD_NODE
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD
is_outtab_line = TAB_line
i_node_text = 'asadasd'
IMPORTING
e_new_node_key = p_node_key.
ENDFORM. "ALV_ADD_NODE
*&---------------------------------------------------------------------*
*& Module PBO_0001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PBO_0001 OUTPUT.
SET PF-STATUS '0001'.
IF CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT CUSTOM_CONTAINER
EXPORTING
container_name = 'CUSTOM_CONTAINER'.
CREATE OBJECT ALV_TREE
EXPORTING
parent = CUSTOM_CONTAINER
node_selection_mode = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
item_selection = 'X'
no_html_header = 'X'
no_toolbar = 'X'.
PERFORM ALV_BUILD_FC.
ALV_HIERARCHY_HEAD-heading = 'Ключевой столбец'(300).
ALV_HIERARCHY_HEAD-tooltip = ''.
ALV_HIERARCHY_HEAD-width = 35.
ALV_HIERARCHY_HEAD-width_pix = ''.
CALL METHOD ALV_TREE->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
is_hierarchy_header = ALV_HIERARCHY_HEAD
CHANGING
it_fieldcatalog = ALV_FC
it_outtab = ALV_TREE_TAB.
PERFORM ALV_FILL_TREE_TAB.
ВОТ ИЗ ЭТОГО ЦИКЛА ПРОГРАММА НЕ ВЫХОДИТ, А ЗАВИСАЕТ НАВЕЧНО! ДАЖЕ В ДАМП НЕ СВАЛИВАЕТСЯ.... Почему?Code:
LOOP AT ALV_TREE_TAB INTO ALV_TREE_TAB_line.
PERFORM ALV_ADD_NODE USING
ALV_TREE_TAB_line
ALV_last_key
CHANGING
ALV_last_key.
ENDLOOP.
CALL METHOD ALV_TREE->FRONTEND_UPDATE.
ENDIF.
ENDMODULE. " PBO_0001 OUTPUT
*&---------------------------------------------------------------------*
*& Module PAI_USER_COMMAND_0001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE PAI_USER_COMMAND_0001 INPUT.
DATA pai_ucomm_0001 LIKE SY-ucomm.
pai_ucomm_0001 = SY-ucomm.
CASE pai_ucomm_0001.
WHEN 'CANCEL'.
CALL METHOD CUSTOM_CONTAINER->FREE.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " PAI_USER_COMMAND_0001 INPUT