Die kenn ich und habs auch scho am fummeln nebenbei, da ich net soviel Zeit hab. Dachte halt nur das jemand schon was fertig hat und auch kein problem hat das coding weiterzugeben.Asaph hat geschrieben:Hallo,
schau dir mal die demos in SAP an:
se38-Umfeld-reuse library-tree control
Code: Alles auswählen.
SELECT fieldname FROM dd03l INTO ls_fields-fieldname
WHERE tabname = gf_database
AND as4local = 'A'
AND as4vers = 0
AND position < 60
AND datatype <> 'CLNT'.
APPEND ls_fields TO lt_fields.
ENDSELECT.
* Node with key 'Root'
node-node_key = 'Root'. "#EC NOTEXT
" Key of the node
CLEAR node-relatkey. " Special case: A root node has no parent
CLEAR node-relatship. " node.
node-hidden = ' '. " The node is visible,
node-disabled = ' '. " selectable,
node-isfolder = 'X'. " a folder.
CLEAR node-n_image. " Folder-/ Leaf-Symbol in state "closed":
" use default.
CLEAR node-exp_image. " Folder-/ Leaf-Symbol in state "open":
" use default
CLEAR node-expander. " see below.
node-text = gf_database.
APPEND node TO node_table.
LOOP AT lt_fields INTO ls_fields.
CLEAR node.
* Node with key Feldname
node-node_key = ls_fields-fieldname. "#EC NOTEXT
" Key of the node
" Node is inserted as child of the node with key 'Root'.
node-relatkey = 'Root'.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = ' '.
CLEAR node-n_image.
CLEAR node-exp_image.
node-expander = ' '.
node-text = ls_fields-fieldname.
APPEND node TO node_table.
ENDLOOP.
CALL METHOD g_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = node_table
EXCEPTIONS
failed = 1
error_in_node_table = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE a000.
ENDIF.
Code: Alles auswählen.
FORM build_node_and_item_table.
DATA:
ls_fields TYPE rsdsfields,
lt_fields TYPE STANDARD TABLE OF rsdsfields,
lf_nodekeytxt(12) TYPE c,
lf_zaehler TYPE int4,
lf_zahltxt(3) TYPE c,
lf_fullzaehl TYPE int4,
lf_feldname(20) TYPE c.
ls_fields-tablename = gf_database.
SELECT fieldname FROM dd03l INTO ls_fields-fieldname
WHERE tabname = gf_database
AND as4local = 'A'
AND as4vers = 0
AND position < 3
AND datatype <> 'CLNT'.
APPEND ls_fields TO lt_fields.
ENDSELECT.
nodekey = 1.
*-- Node with key 'Root'
CLEAR node.
node-node_key = 'Root'.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = 'X'.
APPEND node TO node_table.
*-- Item to key 'Root'
CLEAR item.
item-node_key = 'Root'.
item-item_name = '1'.
item-class = cl_gui_list_tree=>item_class_text.
item-alignment = cl_gui_list_tree=>align_auto.
item-font = cl_gui_list_tree=>item_font_prop.
item-text = gf_database.
APPEND item TO item_table.
CLEAR lf_zaehler.
CLEAR lf_fullzaehl.
LOOP AT lt_fields INTO ls_fields.
lf_feldname = ls_fields-fieldname.
IF lf_zaehler EQ 10 OR lf_zaehler EQ 0.
*-- Verzeichnis "von XX" erstellen
lf_fullzaehl = lf_fullzaehl + lf_zaehler.
lf_zahltxt = lf_fullzaehl.
CONCATENATE 'von' lf_zahltxt
INTO lf_nodekeytxt
SEPARATED BY space.
CLEAR node.
ADD 1 TO nodekey.
node-node_key = lf_nodekeytxt.
nodekeyx = nodekey.
node-relatkey = 'Root'.
node-relatship = cl_gui_list_tree=>relat_last_child.
node-dragdropid = handle_drop.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = 'X'.
APPEND node TO node_table.
*-- Item zum Verzeichnis
CLEAR item.
item-node_key = node-node_key.
item-item_name = nodekeyx.
item-class = cl_gui_list_tree=>item_class_text.
item-alignment = cl_gui_list_tree=>align_auto.
item-font = cl_gui_list_tree=>item_font_prop.
item-text = lf_nodekeytxt.
APPEND item TO item_table.
CLEAR lf_zaehler.
ENDIF.
*-- Nun die Felder anhängen und dem jeweiligen Verzeichnis zuordnen
CLEAR node.
* ADD 1 TO nodekey.
node-node_key = lf_feldname.
node-relatkey = lf_nodekeytxt.
node-relatship = cl_gui_list_tree=>relat_last_child.
node-dragdropid = handle_drag.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = ' '.
APPEND node TO node_table.
*-- Item "Land"
CLEAR item.
item-node_key = node-node_key.
item-item_name = '1'.
item-style = cl_gui_list_tree=>style_intensified.
item-class = cl_gui_list_tree=>item_class_text.
item-alignment = cl_gui_list_tree=>align_auto.
item-font = cl_gui_list_tree=>item_font_fixed.
item-text = lf_feldname.
APPEND item TO item_table.
lf_zaehler = lf_zaehler + 1.
ENDLOOP.
ENDFORM. "build_node_and_item_table
Code: Alles auswählen.
PERFORM build_node_and_item_table.
CALL METHOD g_tree->add_nodes_and_items
EXPORTING
node_table = node_table
item_table = item_table
item_table_structure_name = 'MTREEITM'
EXCEPTIONS
failed = 1
cntl_system_error = 3
error_in_tables = 4
dp_error = 5
table_structure_name_not_found = 6.
IF sy-subrc <> 0.
MESSAGE a000.
ELSE.
*-- Knoten "Root" aufklappen
CALL METHOD g_tree->expand_node
EXPORTING
node_key = 'Root'.
ENDIF.