Попытался как можно проще описать создание ALV Tree.
Для начала, нужно создать экран, например 0100. Поместить на экран «Спец. упр. элемент» т.е. контейнер и назвать его, например CONT. Далее зайти в логику экрана и активировать там модули PBO и PAI.
 Должно получится это:
Дальше нужно создать GUI-статус, с одной кнопкой назад и назвать его, например MAIN1.
Теперь все проще, копируйте текст программы к себе и активируйте. По коду есть комментарии, которые должны помочь сориентироваться.
report  ztest_tree.
data: g_alv_tree         type ref to cl_gui_alv_tree,
      g_custom_container type ref to cl_gui_custom_container.
data: gt_sflight type sflight occurs 0,      "Выходная таблица данных
      g_max      type i value 255.
call screen '0100'.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
module status_0100 output.
  set pf-status 'MAIN1'.
  if g_alv_tree is initial.
    perform init_tree.
  endif.
endmodule.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  INIT_TREE
*&---------------------------------------------------------------------*
form init_tree .
* 1. Создаем ALV Tree Control.
* создаем контейнер, помещаем в него ALV Tree
  data: l_tree_container_name(30) type c.
  l_tree_container_name = 'CONT'.
  create object g_custom_container
    exporting
      container_name              = l_tree_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.
    message x208(00) with 'ERROR'(100).
  endif.
  create object g_alv_tree
    exporting
      parent                      = g_custom_container
      node_selection_mode         = cl_gui_column_tree=>node_sel_mode_single
      item_selection              = 'X'
      no_html_header              = 'X'
      no_toolbar                  = ''
    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.
    message x208(00) with 'ERROR'.
  endif.
* 2. Создаем заголовок иерархии
  data l_hierarchy_header type treev_hhdr.
  perform build_hierarchy_header changing l_hierarchy_header.
* 3. Создаем пустой Tree Control
  call method g_alv_tree->set_table_for_first_display
    exporting
      i_structure_name    = 'SFLIGHT'
      is_hierarchy_header = l_hierarchy_header
    changing
      it_outtab           = gt_sflight. "таблица должна быть пустая !
* 4. Создаем узлы и уровни (заполнение дерева происходит именно тут)
  perform create_hierarchy.
* * 5. Отправим данные в alv-tree
  call method g_alv_tree->frontend_update.
endform.                    " INIT_TREE
*&---------------------------------------------------------------------*
*&      Form  BUILD_HIERARCHY_HEADER
*&---------------------------------------------------------------------*
*       Заполняем свойства заголовка иерархии
*----------------------------------------------------------------------*
form build_hierarchy_header changing
                               p_hierarchy_header type treev_hhdr.
  p_hierarchy_header-heading = ' Список узлов'.
  p_hierarchy_header-t_image = '@BV@'. "иконка вверху списка узлов
  p_hierarchy_header-tooltip = 'Всплывающая подсказка'.
  p_hierarchy_header-width   = 30.     "ширина списка узлов
endform.                    " BUILD_HIERARCHY_HEADER
*&---------------------------------------------------------------------*
*&      Form  CREATE_HIERARCHY
*&---------------------------------------------------------------------*
*       Создание узлов и иерархии
*----------------------------------------------------------------------*
form create_hierarchy .
  data: ls_sflight type sflight,
        l2_sflight type sflight,
      lsum_sflight type sflight,
        lt_sflight type sflight occurs 0.
  data: p_relat_key type lvc_nkey,
        l_node_text type lvc_value,
         p_node_key type lvc_nkey
        .
  "Выбираем данные
  select * from sflight into table lt_sflight up to g_max rows.
  "Выполняем сортировку по полю которое будет узлом/ключом
  sort  lt_sflight by carrid.
  loop at lt_sflight into ls_sflight.
    on change of ls_sflight-carrid.
      "Т.к. я планирую в заголовке узла так же выводить данные
      "то для красоты буду выводить там суммы по carrid
      "в принципе, это можно и не делать <<<
      at new carrid.
        sum.
        move ls_sflight to lsum_sflight.
      endat.
      ">>>
      "выберем название узла
      select single carrname
        from scarr
        into l_node_text
        where
        carrid eq ls_sflight-carrid.
      "создаем узел
      call method g_alv_tree->add_node
        exporting
          i_relat_node_key = p_relat_key
          i_relationship   = cl_gui_column_tree=>relat_last_child
          is_outtab_line   = lsum_sflight
          i_node_text      = l_node_text
        importing
          e_new_node_key   = p_node_key.
      "Выведем в данный узел значения <<<
      loop at lt_sflight into l2_sflight where carrid eq ls_sflight-carrid.
        l_node_text = ls_sflight-carrid.
        "создаем строку в узле.
        "каждая такая строка может содержать свой раскрывающийся список
        "т.е. быть еще и узлом. Это ж дерево:)
        call method g_alv_tree->add_node
          exporting
            i_relat_node_key = p_node_key
            i_relationship   = cl_gui_column_tree=>relat_last_child
            is_outtab_line   = l2_sflight
            i_node_text      = l_node_text.
        "<<< тут вложенность может быть продолжена >>>
      endloop.
      "Выведем в данный узел значения >>>
    endon.
  endloop.
endform.                    " CREATE_HIERARCHY
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
module user_command_0100 input.
  case sy-ucomm.
    when 'EXIT' or 'BACK' or 'CANC'.
      call method g_custom_container->free.
      leave program.
    when others.
      call method cl_gui_cfw=>dispatch.
  endcase.
  call method cl_gui_cfw=>flush.
endmodule.                 " USER_COMMAND_0100  INPUT
Результат: