Sapforum.Biz

Инструменты => ABAP - Инструментальные средства => Тема начата: polkon от Март 01, 2013, 09:13:08 am

Название: Работа с деревом
Отправлено: polkon от Март 01, 2013, 09:13:08 am
Есть дерево: этап-задача-атрибуты;
для каждого из них существует идентификатор,
причем идентификаторы не совпадают с вложенной в этап задачи
или вложенного в задачу атрибута

Как удалить в таблице все значения не равные введенному
идентификатору(lv_ext_id) оставив при этом отображаться дерево?

Код: You are not allowed to view links. Register or Login
IF lv_ext_id is not INITIAL.

 LOOP at lt_tree2 ASSIGNING <s_tree>.

  CASE <s_tree>-NLEVEL.
    when 03.                   " Значение NLEVEL для этапа
         CONTINUE.
    when 04.                   " Значение NLEVEL для задач

      read table lt_tree with key id = lv_ext_id ASSIGNING <s_tree>.
         DELETE lt_tree2." INDEX sy-tabix.
CONTINUE.
    when 05.                   " Значение NLEVEL для атрибутов
         READ TABLE lt_tree2 TRANSPORTING NO FIELDS WITH KEY  id = <s_tree>-parent.

         IF sy-subrc = 0.
            CONTINUE.
         ENDIF.

         IF sy-subrc NE 0.
            DELETE lt_tree2." INDEX sy-tabix.
         ENDIF.
  ENDCASE.
ENDLOOP.
ENDIF.

В итоге хочу добиться, что бы при вводе, к примеру идентификатора SAP/00023-111 - отображался и этап№1
Название: Re: Работа с деревом
Отправлено: jacknk88 от Март 04, 2013, 11:04:37 am
дерево нужно перерисовать частично....что-то можно дернуть отсюда  BCALV_TREE_VERIFY и BCALV_GRID_DND_TREE
чтобы помочь нужно знать какой класс вы используете....и при каких действиях пользователя хотите сделать удаление...
сначало можно удалить строки с помощью метода DELETE_SUBTREE потом обновить дерево
Код: You are not allowed to view links. Register or Login
      call method tree1->update_calculations.
      call method tree1->frontend_update.


можете сюда заглянуть
http://sapforum.biz/index.php/topic,2274.0.html