cl_salv_tree - ALV таблица в виде иерархии

Автор jacknk88, Листопад 29, 2012, 09:18:04 ДП

Попередня тема - Наступна тема

0 Користувачі і 1 Гість дивляться цю тему.

jacknk88

кто-нибудь знает как работать с cl_salv_tree ?.....какие особенности?...какие методы для настроек есть и как их использовать?....куда, в каком виде и что заносить?...и.т.д. ....может есть литература какая-то...курсы?

Uukrul

#1
Ну продам явки адреса и пароли  8) электронный кошелек чуть позже опубликую... по картинке в SE80 там столько всего интересного будет.

jacknk88


jacknk88

у меня вопрос такой:
если событие на нажатие не по полю, а по узлу?....

есть событие link_click которое срабатывает если тип ячейки установить как button   или link ... но это я так понимаю только для ячейки таблицы...
а вот как сделать на сам узел...родительский и дочерний?...не знаю....и не получается(((

Uukrul

Цитата: jacknk88 від Листопад 30, 2012, 01:21:21 ПП
а вот как сделать на сам узел...родительский и дочерний?...не знаю....и не получается(((
BCALV_GRID_DND_TREE - В этом примере при двойном клике на ветке дерева выполняется перерисовка ALV-таблицы рядом с деревом, можно взять за основу этот пример.

jacknk88

спасибо...самое то, что нужно)).....
есть вопросик один....в этом примере ALV выходит справа от дерева..а сделал чтобы она была снизу .....для этого прописал параметр SIDE при создании контейнера для ветки


Data: G_CONTAINER_OBJECT TYPE REF TO CL_GUI_DOCKING_CONTAINER.
...
...
...
  CREATE OBJECT G_CONTAINER_OBJECT
      EXPORTING SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_TOP
                EXTENSION = 1000
                REPID     = G_REPID
                DYNNR     = sy-dynnr
                RATIO     = 50

однако ALV осталась маленькой.....пытался растенуть ее методом

    call method grid->SET_WIDTH
        exporting
          width          = 1000
          EXCEPTIONS
            OTHERS        = 1.


ничего не вышло...не знаете как можно ее растенуть по ширине?

jacknk88

все...сделал....нашел на одном форуме :)...все лишь надо было прописать cl_gui_container=>screen0 при создании ALV....
в BCALV_GRID_DND_TREE есть экран 0100 .... в PROCESS BEFORE OUTPUT идет вызов MODULE ALV_DISPLAY. где создается объект grid в качестве родительского контейнера котрого идет g_custom_container....так вот вместо него я прописал cl_gui_container=>screen0

create object grid
       exporting
         i_appl_events = selected      "application event
         i_parent = cl_gui_container=>screen0



jacknk88

в программу BCALV_GRID_DND_TREE я решил добавить checkbox-ы на узлы (ну я скопировал прогу всю ;D)....так вот....для этого я добавил в FORM REGISTER_EVENTS

  CLEAR L_EVENT.
  L_EVENT-EVENTID = CL_GUI_COLUMN_TREE=>EVENTID_CHECKBOX_CHANGE.
    L_EVENT-APPL_EVENT = SELECTED.
   APPEND L_EVENT TO LT_EVENTS.


и в FORM CREATETREECONTROL


  SET HANDLER TREE_EVENT_RECEIVER->HANDLE_CHECKBOX_CHANGE FOR TREE1.


в CLASS CL_TREE_EVENT_RECEIVER DEFINITION


    METHODS HANDLE_CHECKBOX_CHANGE
      FOR EVENT CHECKBOX_CHANGE OF CL_GUI_ALV_TREE
      IMPORTING CHECKED.


в CLASS CL_TREE_EVENT_RECEIVER IMPLEMENTATION.


METHOD HANDLE_CHECKBOX_CHANGE.
CHECK NOT CHECKED is INITIAL.

MESSAGE 'YESSS!!!' TYPE 'I'. " ну для проверки сойдет))

  ENDMETHOD.


также в FORM ADD_CARRID_LINE


LS_ITEM_LAYOUT-class = cl_gui_column_tree=>item_class_checkbox.
LS_ITEM_LAYOUT-EDITABLE = 'X'.


и в FORM ADD_COMPLETE_LINE тоже самое

однако при вызове метода SET_REGISTERED_EVENTS вылезает ошибка и дамп

ILLEGAL_EVENT_COMBINATION = 3.



Uukrul

Цитата: jacknk88 від Грудень 11, 2012, 08:53:48 ДП
вот и ответ)))

http://scn.sap.com/message/13712885

Цитата
Just ADD 'ITEM_SELECTION      = 'X' in Object tree1.

CREATE OBJECT TREE1
     EXPORTING
         PARENT              = G_CONTAINER_OBJECT
         NODE_SELECTION_MODE = CL_GUI_COLUMN_TREE=>NODE_SEL_MODE_SINGLE
         ITEM_SELECTION      = 'X'
         NO_HTML_HEADER      = ''
         NO_TOOLBAR          = ''

jacknk88

#10
в стандартном отчете BCALV_TREE_VERIFY есть много чего интересного: события, кнопки, ссылки, пиктограммы, checkbox-ы.

при желании можно посмотреть все стандартные отчеты при поиске по BCALV_*TREE*