Tree control in forms 6i
-project Documents
|
-Lease dcoument
-check list1
-lease draft1
-clause 1
| -cluase 2
-Permit document
-Checklist 1
-permit Draft 1
-clause 1
-clause 2
My tree should look like above picture. Here "check list1" and "Lease draft1"
arecomming from different tables. How can I get them at same level?
null
hi
u can use this query in tree property data in Data query
select -1 state,
decode(length(code),2,1,4,2,6,3) lev,
menu_name PART,
code val
from menu
order by code
Rizwan
Similar Messages
-
Hi,
Can anyone give me their view of the Oracle Forms built in tree
control. I want to know if I am the only person who thinks they
are almost worse than useless?
I have had to write loads of code to do simple common functions
which I would have expected to be included in the API for the
control, and to top it off, you can't do in-place editing or
drag nodes to other places in the control. This makes the
control appear to be very poorly implemented, since any users
familiar with microsoft explorer are going to be very frustrated
with this control.
Anyone who has successfully used this control without writing
half an API for it, please let me know your secret!
Clint Redwood.
nullClint Redwood (guest) wrote:
: Hi,
: Can anyone give me their view of the Oracle Forms built in
tree
: control. I want to know if I am the only person who thinks
they
: are almost worse than useless?
: I have had to write loads of code to do simple common
functions
: which I would have expected to be included in the API for the
: control, and to top it off, you can't do in-place editing or
: drag nodes to other places in the control. This makes the
: control appear to be very poorly implemented, since any users
: familiar with microsoft explorer are going to be very
frustrated
: with this control.
: Anyone who has successfully used this control without writing
: half an API for it, please let me know your secret!
: Clint Redwood.
I Agree. This version of tree item control appear not complete.
null -
Add checkbox on the nodes of Hierarchical tree in oracle forms 9i
Hi,
I am working on oracle forms 9i.I have to add checkbox at the place of node(+/-) in Hierarchical tree so,
that user can select or deselect the Tree.That can do in oracle forms but how i don't know.
can anybody help me.....
Regards,
HemantYou can't change this aspect of the Tree Control in Oracle Forms using built-in functionality. You might be able to extend the Tree Control using Java, but you have to do this yourself. : (
Craig... -
Save selected node in Tree control
I'm making this flex form for my school to add a new student
to the DB. When the admin clicks on a button it will open a Tree
control that displays the available courses and sections in the
following heirarchy:
Year>Semester>Course Name>Sections
Now I want that when he clicks on the button Select within
this new window showing the Tree, it will store the current
selected node and the full path to it, so that back in the original
form it will display the Year, Semester, Course name and section.
I've tried using the value and selecteditem methods from the tree
control but they are not working. Any ideas to figure out the full
path of the selected item?You will need to climb back up the ancestor nodes to build
that path yourself.
"parent()" i believe returns the parent of the current node.
Tracy -
Hierarchy tree in oracle forms problem
Hello Experts,
I am new in oracle forms.I am using oracle forms 11g with weblogic server 10.3.5 at windows 7.I have two table as tbl_country and tbl_state.I have to make a hierarchy tree in oracle forms.My table structure as:
tbl_country
CREATE TABLE "SCOTT"."TBL_COUNTRY"
( "CNTRY_CODE" NUMBER NOT NULL ENABLE,
"NAME" VARCHAR2(80 BYTE),
CONSTRAINT "TBL_COUNTRY_PK" PRIMARY KEY ("CNTRY_CODE")
tbl_state:
CREATE TABLE "SCOTT"."TBL_STATE"
( "SATE_CODE" NUMBER NOT NULL ENABLE,
"COUNTRY_CODE" NUMBER NOT NULL ENABLE,
"STATE_NM" VARCHAR2(80 BYTE),
CONSTRAINT "TBL_STATE_PK" PRIMARY KEY ("SATE_CODE")
CONSTRAINT "FK_CNTRY_STATE" FOREIGN KEY ("COUNTRY_CODE")
Table Date as:
insert into tbl_COUNTRY values(0,'country ');
insert into tbl_COUNTRY values(91,'HHH');
insert into tbl_COUNTRY values(72,'III');
insert into tbl_COUNTRY values(83,'JJJ');
insert into tbl_state values(1,'state',0);
insert into tbl_state values(2,'BH',91);
insert into tbl_state values(3,'CI',72);
insert into tbl_state values(4,'DI',72);
insert into tbl_state values(5,'EH',91);
insert into tbl_state values(6,'FI',72);
insert into tbl_state values(7,'GJ',83);
insert into tbl_state values(8,'HJ',83);
insert into tbl_state values(9,'IH',91);
Desired Output in oracle forms tree:
|__Country
|____HHH
|____BH
|____EH
|____IH
|____III
|__CI
|__DI
|__FI
|____JJJ
|__GJ
|__HJ
I Have tried but got no output
select
1 ,level, esm.name,NULL,to_char(esm.CNTRY_CODE)
from (SELECT c.name,c.cntry_code from TBL_COUNTRY c union all select s.STATE_NM,s.COUNTRY_CODE from tbl_state s) esm
connect by prior esm.CNTRY_CODE = esm.CNTRY_CODE
start with esm.code=0
what is going wrong here.
thank you
regards
aadityaIf you have never worked with a Forms Tree control, I recommend you look at this tutorial: How To Create a Hierachical Tree form.
Craig... -
Problem while working wwith tree control
hi all
i am working with tree control the prolems i have been facing are
i am not able o get the event for a single click on the tree node .
i am displaying the purchase order in the tree and once i select on sinlge click a purchase order ,now i want to create the sales order on the another screen and once i click on the button it should call another screen on which i have to create the sales order ,
please helphi gandhivarun,
i am posting the code which will give idea on Tree display.
REPORT ZALVGRID_PG.
TABLES: SSCRFIELDS.
DATA: V_BELNR TYPE RBKP-BELNR.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: IRNO FOR V_BELNR.
PARAMETERS: P_GJAHR TYPE RBKP-GJAHR.
SELECTION-SCREEN END OF BLOCK B1.
DATA: WA TYPE ZALVGRID_DISPLAY,
ITAB TYPE STANDARD TABLE OF ZALVGRID_DISPLAY.
DATA: IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: GRID TYPE REF TO CL_GUI_ALV_GRID.
DATA: L_IDENTITY TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: L_TREE TYPE REF TO CL_GUI_ALV_TREE_SIMPLE.
TYPE-POOLS: SLIS,SDYDO.
DATA: L_LOGO TYPE SDYDO_VALUE,
L_LIST TYPE SLIS_T_LISTHEADER.
END-OF-SELECTION.
CLASS CL_LC DEFINITION.
PUBLIC SECTION.
METHODS: DC FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN.
ENDCLASS.
CLASS CL_LC IMPLEMENTATION.
METHOD DC.
DATA: WA1 TYPE ZALVGRID_DISPLAY.
READ TABLE ITAB INTO WA1 INDEX E_ROW-INDEX.
BREAK-POINT.
SET PARAMETER ID 'BLN' FIELD WA1-BELNR.
CALL TRANSACTION 'FB02'.
ENDMETHOD. "DC
ENDCLASS.
DATA: OBJ_CL TYPE REF TO CL_LC.
START-OF-SELECTION.
PERFORM SELECT_DATA.
IF SY-SUBRC = 0.
CALL SCREEN 100.
ELSE.
MESSAGE E000(0) WITH 'DATA NOT FOUND'.
ENDIF.
INCLUDE ZALVGRID_PG_STATUS_0100O01.
INCLUDE ZALVGRID_PG_LOGOSUBF01.
INCLUDE ZALVGRID_PG_SELECT_DATAF01.
INCLUDE ZALVGRID_PG_USER_COMMAND_01I01.
***INCLUDE ZALVGRID_PG_STATUS_0100O01 .
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'AB'.
* SET TITLEBAR 'xxx'.
IF IDENTITY IS INITIAL.
CREATE OBJECT IDENTITY
EXPORTING
CONTAINER_NAME = 'ALVCONTROL'.
CREATE OBJECT GRID
EXPORTING
I_PARENT = IDENTITY.
CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = 'ZALVGRID_DISPLAY'
CHANGING
IT_OUTTAB = ITAB.
CREATE OBJECT OBJ_CL.
SET HANDLER OBJ_CL->DC FOR GRID.
ENDIF.
IF L_IDENTITY IS INITIAL.
CREATE OBJECT L_IDENTITY
EXPORTING
CONTAINER_NAME = 'LOGO'
CREATE OBJECT L_TREE
EXPORTING
I_PARENT = L_IDENTITY.
PERFORM LOGOSUB USING L_LOGO.
CALL METHOD L_TREE->CREATE_REPORT_HEADER
EXPORTING
IT_LIST_COMMENTARY = L_LIST
I_LOGO = L_LOGO.
ENDIF .
ENDMODULE. " STATUS_0100 OUTPUT
***INCLUDE ZALVGRID_PG_LOGOSUBF01 .
FORM LOGOSUB USING P_L_LOGO.
P_L_LOGO = 'ERPLOGO'.
ENDFORM. " LOGOSUB
***INCLUDE ZALVGRID_PG_SELECT_DATAF01 .
FORM SELECT_DATA .
SELECT RBKP~BELNR
RBKP~BLDAT
RSEG~BUZEI
RSEG~MATNR
INTO TABLE ITAB
FROM RBKP INNER JOIN RSEG
ON RBKP~BELNR = RSEG~BELNR
WHERE RBKP~BELNR IN IRNO
AND RBKP~GJAHR = P_GJAHR.
ENDFORM. " SELECT_DATA
***INCLUDE ZALVGRID_PG_USER_COMMAND_01I01 .
CASE SY-UCOMM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
EXIT.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
Warm Ragrds,
PavanKumar.G
Edited by: pavankumar.g on Jan 30, 2012 11:02 AM -
Control Framework tree control event not trigerring
The event handle_node_double_click is not trigerring on the tree controls . I want to display the contents of the nodes on the text editor on trigerring of this event
*& Report ZCONTROLS_TREE_TEDIT_SPITTER
REPORT zcontrols_tree_tedit_spitter.
DATA : editor TYPE REF TO cl_gui_textedit,
tree TYPE REF TO cl_gui_simple_tree.
DATA : container TYPE REF TO cl_gui_custom_container,
splitter TYPE REF TO cl_gui_easy_splitter_container,
right TYPE REF TO cl_gui_container,
left TYPE REF TO cl_gui_container.
DATA : node_itab LIKE node_str OCCURS 0.
CLASS EVENT_HANDLER DEFINITION
CLASS event_handler DEFINITION.
PUBLIC SECTION.
METHODS : handle_node_double_click
FOR EVENT NODE_DOUBLE_CLICK OF cl_gui_simple_tree
IMPORTING node_key.
ENDCLASS. "EVENT_HANDLER DEFINITION
CLASS EVENT_HANDLER IMPLEMENTATION
CLASS event_handler IMPLEMENTATION.
METHOD handle_node_double_click.
perform node_double_click using node_key.
ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICK
ENDCLASS. "EVENT_HANDLER IMPLEMENTATION
data : handler1 type ref to event_handler.
START-OF-SELECTION.
CALL SCREEN 9001.
*& Module start OUTPUT
text
MODULE start OUTPUT.
SET PF-STATUS 'ZSTAT1'.
IF container IS INITIAL.
CREATE OBJECT container
EXPORTING
container_name = 'CONTAINER_NAME'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5
OTHERS = 6
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT splitter
EXPORTING
parent = container
orientation = 1
name = 'Mohit'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
left = splitter->top_left_container.
right = splitter->bottom_right_container.
CREATE OBJECT editor
EXPORTING
parent = right
name = 'MohitEditor'
EXCEPTIONS
error_cntl_create = 1
error_cntl_init = 2
error_cntl_link = 3
error_dp_create = 4
gui_type_not_supported = 5
OTHERS = 6
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT tree
EXPORTING
parent = left
node_selection_mode = tree->node_sel_mode_single
name = 'MohitTree'
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5
OTHERS = 6
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM fill_tree.
CALL METHOD tree->add_nodes
EXPORTING
table_structure_name = 'NODE_STR'
node_table = node_itab
EXCEPTIONS
error_in_node_table = 1
failed = 2
dp_error = 3
table_structure_name_not_found = 4
OTHERS = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
create object handler1.
set handler handler1->handle_node_double_click for tree.
ENDIF.
ENDMODULE. " start OUTPUT
*& Module USER_COMMAND_9001 INPUT
text
MODULE user_command_9001 INPUT.
CALL METHOD cl_gui_cfw=>dispatch.
ENDMODULE. " USER_COMMAND_9001 INPUT
*& Form fill_tree
text
--> p1 text
<-- p2 text
FORM fill_tree .
DATA : node LIKE node_str.
CLEAR node.
node-node_key = 'head_mohit'.
node-isfolder = 'X'.
node-text = 'Mohit'.
APPEND node TO node_itab.
CLEAR node.
node-node_key = 'Child1'.
node-relatkey = 'head_mohit'.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = 'Mohit is the best '.
APPEND node TO node_itab.
CLEAR node.
node-node_key = 'Child2'.
node-relatkey = 'head_mohit'.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = 'Mohit is the bestest '.
APPEND node TO node_itab.
CLEAR node.
node-node_key = 'head_JAIN'.
node-isfolder = 'X'.
node-text = 'jAIN'.
APPEND node TO node_itab.
CLEAR node.
node-node_key = 'Child3'.
node-relatkey = 'head_JAIN'.
node-relatship = cl_gui_simple_tree=>relat_next_sibling.
node-text = 'cnh INDIA '.
APPEND node TO node_itab.
CLEAR node.
node-node_key = 'Child4'.
node-relatkey = 'head_JAIN'.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-text = 'SAP '.
APPEND node TO node_itab.
ENDFORM. " fill_tree
*& Form node_double_click
text
-->P_NODE_KEY text
form node_double_click using p_node_key type TV_NODEKEY.
DATA : node LIKE node_str.
DATA textline(256).
DATA text_table LIKE STANDARD TABLE OF textline.
READ TABLE node_itab WITH KEY node_key = p_node_key
INTO node.
endform. " node_double_click
*& Module exit INPUT
text
module exit input.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
endmodule. " exit INPUTHello Mohit
Here is a sample routine (taken from BCALV_TREE_02) which you have to add and adapt for your report. It does two things:
1. Register events that should be handled (required but not sufficient for event handling)
2. Set event handler for registered events
The first step is different from ALV grid controls because here all events are already registered with the control (not the control framework).
Set the event handler (statement SET HANDLER) registers the event handling with the control framework.
FORM register_events.
*§4. Event registration: tell ALV Tree which events shall be passed
* from frontend to backend.
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event,
l_event_receiver TYPE REF TO lcl_tree_event_receiver.
*§4a. Frontend registration(i): get already registered tree events.
* The following four tree events registers ALV Tree in the constructor
* method itself.
* - cl_gui_column_tree=>eventid_expand_no_children
* (needed to load data to frontend when a user expands a node)
* - cl_gui_column_tree=>eventid_header_context_men_req
* (needed for header context menu)
* - cl_gui_column_tree=>eventid_header_click
* (allows selection of columns (only when item selection activated))
* - cl_gui_column_tree=>eventid_item_keypress
* (needed for F1-Help (only when item selection activated))
* Nevertheless you have to provide their IDs again if you register
* additional events with SET_REGISTERED_EVENTS (see below).
* To do so, call first method GET_REGISTERED_EVENTS (this way,
* all already registered events remain registered, even your own):
call method g_alv_tree->get_registered_events
importing events = lt_events.
* (If you do not these events will be deregistered!!!).
* You do not have to register events of the toolbar again.
*§4b. Frontend registration(ii): add additional event ids
l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
APPEND l_event TO lt_events.
*§4c. Frontend registration(iii):provide new event table to alv tree
CALL METHOD g_alv_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
*§4d. Register events on backend (ABAP Objects event handling)
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->handle_node_double_click FOR g_alv_tree.
ENDFORM. " register_events
Regards
Uwe -
Tooltip not visible on hierarchical tree in Oracle Forms 11g
*Hi.. i have tried to set the "TOOLTIP" option for an hierarchical item during design time(property palatte) and also at run time( set_item_property).
But still its not working!!!
However it works for Oracle 10g forms.
Is this some kind of restriction only in Oracle 11g forms for the hierarchical items? Please help!You can't change this aspect of the Tree Control in Oracle Forms using built-in functionality. You might be able to extend the Tree Control using Java, but you have to do this yourself. : (
Craig... -
On Tree control i wish to provide link click or double click and a context menu simultaneously. How can i do that.
FORM USER_COMMAND *
FORM USER_COMMAND USING I_UCOMM LIKE SY-UCOMM
IS_SELFIELD TYPE SLIS_SELFIELD. "#EC CALLED
CASE I_UCOMM.
WHEN '&IC1'. " PICK
CASE IS_SELFIELD-TABNAME.
WHEN '1'.
READ TABLE I_PROJ INDEX IS_SELFIELD-TABINDEX.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'CONVERSION_EXIT_ABPSN_INPUT'
EXPORTING
INPUT = I_PROJ-PSPID
IMPORTING
OUTPUT = I_PROJ-PSPID.
SET PARAMETER ID '<b><parameter of table field I_PROJ-PSPID></b>' FIELD I_PROJ-PSPID.
CALL TRANSACTION '<b><transaction code to be called when clicked></b>' AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDCASE.
ENDFORM. " USER_COMMAND
Regards,
Abhishek -
Displaying ALV tree in expanded form in first ouput
Hi all,
I have a problem with alv tree. My requirement is, on the first output itself the alv tree should appear expanded depending on one of the filter criteria in the tool bar. How can i trigger the toolbar event in PBO itself? Can it be done? if yes please provide sample code. Points assured for helpfull answers.
Thanks,
ShafiqHi Walter,
The method CL_GUI_ALV_TREE->EXPAND_NODES has only one importing parameter and that is the nodes of the ALV tree. But the commenting of the following lines from my code made it work which i have made it bold.Thank you very much for your help.I Have awarded points for you.
REPORT ztest_2105.
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, "Output-Table
gt_fieldcatalog TYPE lvc_t_fcat,
ok_code LIKE sy-ucomm,
save_ok LIKE sy-ucomm, "OK-Code
g_max TYPE i VALUE 255. "maximum of db records to select
DATA : it_node_key TYPE lvc_t_nkey,
wa_node_key LIKE LINE OF it_node_key.
LOCAL CLASSES
*§1. Define a (local) class for event handling
CLASS lcl_tree_event_receiver DEFINITION.
PUBLIC SECTION.
*§2. Define an event handler method for each event you want to react to
METHODS handle_node_double_click
FOR EVENT node_double_click OF cl_gui_alv_tree
IMPORTING node_key sender.
'sender' is an implicit event parameter that is provided by
ABAP Objects runtime system. It contains a reference to the
object that fired the event. You may directly use it to
call methods of this instance.
ENDCLASS.
CLASS lcl_tree_event_receiver IMPLEMENTATION.
*§3. Implement your event handler methods.
METHOD handle_node_double_click.
DATA: lt_children TYPE lvc_t_nkey.
*first check if the node is a leaf, i.e. can not be expanded
CALL METHOD sender->get_children
EXPORTING i_node_key = node_key
IMPORTING et_children = lt_children.
IF NOT lt_children IS INITIAL.
CALL METHOD sender->expand_node
EXPORTING i_node_key = node_key
i_level_count = 2.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
END-OF-SELECTION.
CALL SCREEN 100.
*& Module PBO OUTPUT
process before output
MODULE pbo OUTPUT.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAINTITLE'.
IF g_alv_tree IS INITIAL.
PERFORM init_tree.
CALL METHOD g_alv_tree->expand_nodes
EXPORTING
it_node_key = it_node_key
EXCEPTIONS
FAILED = 1
CNTL_SYSTEM_ERROR = 2
ERROR_IN_NODE_KEY_TABLE = 3
DP_ERROR = 4
NODE_NOT_FOUND = 5
others = 6
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
CALL METHOD cl_gui_cfw=>flush
EXCEPTIONS cntl_system_error = 1
cntl_error = 2.
IF sy-subrc NE 0.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Automation Queue failure'(801)
txt1 = 'Internal error:'(802)
txt2 = 'A method in the automation queue'(803)
txt3 = 'caused a failure.'(804).
ENDIF.
ENDIF.
ENDMODULE. " PBO OUTPUT
*& Module PAI INPUT
process after input
MODULE pai INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
PERFORM exit_program.
WHEN OTHERS.
§5. Call dispatch to process toolbar functions
Toolbar events are registered in constructur method of
CL_ALV_TREE_BASE as application events. So the dispatch call
is a must if you want to use the standard toolbar.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE. " PAI INPUT
*& Form init_tree
text
--> p1 text
<-- p2 text
FORM init_tree.
create container for alv-tree
DATA: l_tree_container_name(30) TYPE c.
l_tree_container_name = 'CCONTAINER1'.
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 tree control
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'. "#EC NOTEXT
ENDIF.
DATA l_hierarchy_header TYPE treev_hhdr.
PERFORM build_hierarchy_header CHANGING l_hierarchy_header.
Hide columns and sum up values initially using the fieldcatalog
PERFORM build_fieldcatalog.
IMPORTANT: Table 'gt_sflight' must be empty. Do not change this table
(even after this method call). You can change data of your table
by calling methods of CL_GUI_ALV_TREE.
Furthermore, the output table 'gt_outtab' must be global and can
only be used for one ALV Tree Control.
CALL METHOD g_alv_tree->set_table_for_first_display
EXPORTING
is_hierarchy_header = l_hierarchy_header
CHANGING
it_fieldcatalog = gt_fieldcatalog
it_outtab = gt_sflight. "table must be empty!
PERFORM create_hierarchy.
PERFORM register_events.
Update calculations which were initially defined by field DO_SUM
of the fieldcatalog. (see build_fieldcatalog).
CALL METHOD g_alv_tree->update_calculations.
Send data to frontend.
CALL METHOD g_alv_tree->frontend_update.
ENDFORM. " init_tree
*& Form build_hierarchy_header
build hierarchy-header-information
-->P_L_HIERARCHY_HEADER strucxture for hierarchy-header
FORM build_hierarchy_header CHANGING
p_hierarchy_header TYPE treev_hhdr.
p_hierarchy_header-heading = 'Totals/Month/Carrier/Date'(300).
p_hierarchy_header-tooltip = 'Flights in a month'(400).
p_hierarchy_header-width = 35.
p_hierarchy_header-width_pix = ''.
ENDFORM. " build_hierarchy_header
*& Form exit_program
free object and leave program
FORM exit_program.
CALL METHOD g_custom_container->free.
LEAVE PROGRAM.
ENDFORM. " exit_program
FORM build_fieldcatalog.
DATA: ls_fieldcatalog TYPE lvc_s_fcat.
The following function module generates a fieldcatalog according
to a given structure.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = gt_fieldcatalog.
Now change the fieldcatalog to hide fields and to determine
some initial calculations for chosen fields.
LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
CASE ls_fieldcatalog-fieldname.
hide columns which are already displayed in our tree
WHEN 'CARRID' OR 'FLDATE'.
ls_fieldcatalog-no_out = 'X'.
Do some initial calculations:
ALV Tree uses the field 'do_sum' to declare that a function
for the corresponding column shall be calculated.
Use 'h_ftype' to set the function type (MAX, MIN, SUM, AVG).
WHEN 'PRICE'.
ls_fieldcatalog-do_sum = 'X'.
ls_fieldcatalog-h_ftype = 'MAX'.
WHEN 'SEATSMAX'.
ls_fieldcatalog-do_sum = 'X'.
ls_fieldcatalog-h_ftype = 'SUM'.
WHEN 'SEATSOCC'.
ls_fieldcatalog-do_sum = 'X'.
ls_fieldcatalog-h_ftype = 'AVG'.
ENDCASE.
MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
ENDLOOP.
The fieldcatalog is provided in form 'init_tree' using method
set_table_for_first_display.
ENDFORM. " build_fieldcatalog
FORM register_events.
*§4. Event registration: tell ALV Tree which events shall be passed
from frontend to backend.
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event,
l_event_receiver TYPE REF TO lcl_tree_event_receiver.
*§4a. Frontend registration(i): get already registered tree events.
The following four tree events registers ALV Tree in the constructor
method itself.
- cl_gui_column_tree=>eventid_expand_no_children
(needed to load data to frontend when a user expands a node)
- cl_gui_column_tree=>eventid_header_context_men_req
(needed for header context menu)
- cl_gui_column_tree=>eventid_header_click
(allows selection of columns (only when item selection activated))
- cl_gui_column_tree=>eventid_item_keypress
(needed for F1-Help (only when item selection activated))
Nevertheless you have to provide their IDs again if you register
additional events with SET_REGISTERED_EVENTS (see below).
To do so, call first method GET_REGISTERED_EVENTS (this way,
all already registered events remain registered, even your own):
CALL METHOD g_alv_tree->get_registered_events
IMPORTING events = lt_events.
(If you do not these events will be deregistered!!!).
You do not have to register events of the toolbar again.
*§4b. Frontend registration(ii): add additional event ids
l_event-eventid = cl_gui_column_tree=>eventid_node_double_click.
APPEND l_event TO lt_events.
*§4c. Frontend registration(iii):provide new event table to alv tree
CALL METHOD g_alv_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
MESSAGE x208(00) WITH 'ERROR'. "#EC NOTEXT
ENDIF.
*§4d. Register events on backend (ABAP Objects event handling)
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->handle_node_double_click FOR g_alv_tree
ENDFORM. " register_events
*& Form create_hierarchy
text
--> p1 text
<-- p2 text
FORM create_hierarchy.
See BCALV_TREE_01 for more comments on building the hierarchy
DATA: ls_sflight TYPE sflight,
lt_sflight TYPE sflight OCCURS 0,
l_yyyymm(6) TYPE c, "year and month of sflight-fldate
l_yyyymm_last(6) TYPE c,
l_carrid LIKE sflight-carrid,
l_carrid_last LIKE sflight-carrid.
DATA: l_month_key TYPE lvc_nkey,
l_carrid_key TYPE lvc_nkey,
l_last_key TYPE lvc_nkey,
l_top_key TYPE lvc_nkey.
Select data
SELECT * FROM sflight INTO TABLE lt_sflight UP TO g_max ROWS.
sort table according to conceived hierarchy
SORT lt_sflight BY fldate0(6) carrid fldate6(2).
CLEAR : it_node_key, wa_node_key.
* wa_node_key = '&VIRTUALROOT'.
APPEND wa_node_key TO it_node_key.</b>
Define one top node. In this way it is possible to calculate
values for the whole hierarchy.
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = ''
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = text-050
IMPORTING
e_new_node_key = l_top_key.
wa_node_key = l_top_key.
APPEND wa_node_key TO it_node_key.
LOOP AT lt_sflight INTO ls_sflight.
l_yyyymm = ls_sflight-fldate+0(6).
l_carrid = ls_sflight-carrid.
IF l_yyyymm <> l_yyyymm_last. "on change of l_yyyymm
l_yyyymm_last = l_yyyymm.
month nodes
PERFORM add_month USING l_yyyymm
l_top_key
CHANGING l_month_key.
clear l_carrid_last because this is a new month
CLEAR l_carrid_last.
wa_node_key = l_month_key.
APPEND wa_node_key TO it_node_key.
ENDIF.
Carrier nodes:
IF l_carrid <> l_carrid_last. "on change of l_carrid
l_carrid_last = l_carrid.
PERFORM add_carrid_line USING ls_sflight
l_month_key
CHANGING l_carrid_key.
wa_node_key = l_carrid_key.
APPEND wa_node_key TO it_node_key.
ENDIF.
Leaf:
PERFORM add_complete_line USING ls_sflight
l_carrid_key
CHANGING l_last_key.
* wa_node_key = l_last_key.
APPEND wa_node_key TO it_node_key.</b>
ENDLOOP.
ENDFORM. " create_hierarchy
*& Form add_month
FORM add_month USING p_yyyymm TYPE c
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_sflight TYPE sflight,
l_month(15) TYPE c. "output string for month
get month name for node text
PERFORM get_month USING p_yyyymm
CHANGING l_month.
l_node_text = l_month.
add node
CALL METHOD g_alv_tree->add_node
EXPORTING
i_relat_node_key = p_relat_key
i_relationship = cl_gui_column_tree=>relat_last_child
i_node_text = l_node_text
is_outtab_line = ls_sflight
IMPORTING
e_new_node_key = p_node_key.
ENDFORM. " add_month
FORM add_carrid_line USING ps_sflight TYPE sflight
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value,
ls_sflight TYPE sflight.
add node
l_node_text = ps_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
i_node_text = l_node_text
is_outtab_line = ls_sflight
IMPORTING
e_new_node_key = p_node_key.
ENDFORM. " add_carrid_line
*& Form add_complete_line
FORM add_complete_line USING ps_sflight TYPE sflight
p_relat_key TYPE lvc_nkey
CHANGING p_node_key TYPE lvc_nkey.
DATA: l_node_text TYPE lvc_value.
WRITE ps_sflight-fldate TO l_node_text MM/DD/YYYY.
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 = ps_sflight
i_node_text = l_node_text
IMPORTING
e_new_node_key = p_node_key.
ENDFORM. " add_complete_line
*& Form GET_MONTH
text
-->P_P_YYYYMM text
<--P_L_MONTH text
FORM get_month USING p_yyyymm
CHANGING p_month.
DATA: l_monthdigits(2) TYPE c.
l_monthdigits = p_yyyymm+4(2).
CASE l_monthdigits.
WHEN '01'.
p_month = 'January'(701).
WHEN '02'.
p_month = 'February'(702).
WHEN '03'.
p_month = 'March'(703).
WHEN '04'.
p_month = 'April'(704).
WHEN '05'.
p_month = 'May'(705).
WHEN '06'.
p_month = 'June'(706).
WHEN '07'.
p_month = 'July'(707).
WHEN '08'.
p_month = 'August'(708).
WHEN '09'.
p_month = 'September'(709).
WHEN '10'.
p_month = 'October'(710).
WHEN '11'.
p_month = 'November'(711).
WHEN '12'.
p_month = 'December'(712).
ENDCASE.
CONCATENATE p_yyyymm+0(4) '->' p_month INTO p_month.
ENDFORM. " GET_MONTH -
Hi,
I have an XML file. I want to display the nodes from the XML
using a tree control.
The structure of the XML is
<grandparent>
<parent>
<child1> 1 </child1>
<child2> 2 </child2>
<child3> 3 </child3>
</parent>
<parent>
<child1> 4 </child1>
<child2> 5 </child2>
<child3> 6 </child3>
</parent>
<parent>
<child1> 7 </child1>
<child2> 8 </child2>
<child3> 9 </child3>
</parent>
</grandparent>
Can I display the tree like
grandparent
parent
1
4
7
skipping some children.Two choices:
1. pre-process the xml into a form the tree can render
directly.
2. Create a custom Tree Data Descriptor
Tracy -
Using Microsoft's TreeView Control in Forms 5.0
I created the OCX item, assigned it the OLE class 'COMCTL.TreeCtrl.1', inserted Microsoft TreeView Control 5.0, imported the appropriate OLE packages and set the appropriate OCX specific properties. With all that done, I created a simple code to clear the nodes collection and then populate it with two dummy nodes. The following is that snippet of code:
PROCEDURE DO$TREE_INIT(
i_study_id IN VARCHAR2 DEFAULT NULL
) IS
v_inodes COMCTLLIB_CONSTANTS.INODES;
v_inode0 COMCTLLIB_CONSTANTS.INODE;
v_inode1 COMCTLLIB_CONSTANTS.INODE;
BEGIN
-- Get pointer to the treeview control's nodes collection.
v_inodes := COMCTL_ITREEVIEW.NODES(:item('CB_MAIN.OCX_TREE').interface);
-- Clear nodes collection
COMCTL_INODES.CLEAR(v_inodes);
-- Create initial tree structure when provided with a study.
IF (i_study_id IS NOT NULL) THEN
v_inode0 := COMCTL_INODES.OLE_ADD(
interface => v_inodes
,relative => OLEVAR_NULL
,relationship => OLEVAR_NULL -- TO_VARIANT(COMCTLLIB_CONSTANTS.TVWFIRST, vtype => VT_R8)
,key => TO_VARIANT('STUD|AA|123|BC|12', vtype => VT_BSTR)
,text => TO_VARIANT('Dursban MOR Study (12312123)', vtype => VT_BSTR)
,image => OLEVAR_NULL
,selectedimage => OLEVAR_NULL
v_inode1 := COMCTL_INODES.OLE_ADD(
interface => v_inodes
,relative => TO_VARIANT(COMCTL_INODE.OLE_INDEX(v_inode0), vtype => VT_R8)
,relationship => TO_VARIANT(COMCTLLIB_CONSTANTS.TVWCHILD, vtype => VT_R8)
,key => TO_VARIANT('FF+|AA|123|BC|12', vtype => VT_BSTR)
,text => TO_VARIANT('Facility Functions', vtype => VT_BSTR)
,image => OLEVAR_NULL
,selectedimage => OLEVAR_NULL
END IF;
END DO$TREE_INIT;
My form complies properly but during runtime I get this error:
FRM-40735: < ... > trigger raised unhandled exception ORA-100504.
This form is very simple. It contains only one control block, the tree control, OLE packages, WHEN-NEW-FORM-INSTANCE trigger, and this package. I have tried everything within my understanding. Do you have any suggestions?
Any help would be appreciated.
Thanks,
RahulI have the same situation too. The only solution
I could think of is to install "Additional ActiveX"
from custom VB5 installation. Besides there is
a problem when VB6 is installed, because the controls are
called "Microsft TreeView ... (SP2)".
If you find any progress , keep me in touch :) ...
Iain Sutherst (guest) wrote:
: I have spent sometime implementing ListView and TreeView
: controls (provided by COMCTL32.OCX, under VB 5) in Oracle
Forms
: 5.0, believing that the only files I would need to distribute
: when I came to implement on other machines were COMCTL32.DLL
and
: COMCTL32.OCX, followed by registering COMCTL32.OCX.
: This does not seem to be the case, since the control (ListView
: or TreeView) is not being activated during run-time, and when
I
: try to use 'Insert Object...' in the layout editor for the
: control, nothing happens.
: Unfortunately, I have loaded VB 5, and Oracle Objects for OLE
on
: to my original development environment, and so I cannot now be
: sure whether I need just COMCTL32.* or whether I need
something
: else as well.
: If anyone has had experience of using these controls and has
had
: to roll-out the developed applications to other machines, I'd
be
: grateful for any information.
: Thanks.
: Iain
null -
Single click on tree control navigation
Hello I have a tree control where I have include the navigation, I know that there is a method
HANDLE_NODE_DOUBLE_CLICK FOR G_TREE
but is there an method for only one click, I want to change my alv grid data when I click on several nodes in my tree controlHello Muhammet
I have re-written my sample report ZUS_SDN_TWO_ALV_GRIDS into ZUS_SDN_TREE_AND_GRID_CONTROL which is now display a tree control together with the ALV grid.
When you analyze this new report you will see that every step of the program logic is as I described in my previous e-mails.
*& Report ZUS_SDN_TWO_ALV_GRIDS
*& Screen '0100' contains no elements.
*& ok_code -> assigned to GD_OKCODE
*& Flow logic:
* PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
* PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
*& Thread: single click on tree control navigation
*& <a class="jive_macro jive_macro_thread" href="" __jive_macro_name="thread" modifiedtitle="true" __default_attr="1143770"></a>
REPORT zus_sdn_tree_and_grid_control.
TYPE-POOLS: abap, cntl.
TYPES: node_table_type LIKE STANDARD TABLE OF mtreesnode
WITH DEFAULT KEY.
* CAUTION: MTREESNODE is the name of the node structure which must
* be defined by the programmer. DO NOT USE MTREESNODE!
CONSTANTS:
BEGIN OF c_nodekey,
root TYPE tv_nodekey VALUE 'Root', "#EC NOTEXT
child1 TYPE tv_nodekey VALUE 'Child1', "#EC NOTEXT
* child2 type tv_nodekey value 'Child2', "#EC NOTEXT
new1 TYPE tv_nodekey VALUE 'New1', "#EC NOTEXT
new2 TYPE tv_nodekey VALUE 'New2', "#EC NOTEXT
* new3 type tv_nodekey value 'New3', "#EC NOTEXT
* new4 type tv_nodekey value 'New4', "#EC NOTEXT
END OF c_nodekey.
DATA:
gd_okcode TYPE ui_func,
gd_repid TYPE syst-repid,
go_docking TYPE REF TO cl_gui_docking_container,
go_splitter TYPE REF TO cl_gui_splitter_container,
go_cell_left TYPE REF TO cl_gui_container,
go_cell_right TYPE REF TO cl_gui_container,
go_tree TYPE REF TO cl_gui_simple_tree,
go_grid1 TYPE REF TO cl_gui_alv_grid,
** go_grid2 TYPE REF TO cl_gui_alv_grid,
gs_layout TYPE lvc_s_layo.
DATA:
gt_knb1 TYPE STANDARD TABLE OF knb1,
gt_knvv TYPE STANDARD TABLE OF knvv.
* CLASS lcl_eventhandler DEFINITION
CLASS lcl_eventhandler DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
handle_double_click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING
e_row
e_column
es_row_no
sender.
ENDCLASS. "lcl_eventhandler DEFINITION
* CLASS lcl_eventhandler IMPLEMENTATION
CLASS lcl_eventhandler IMPLEMENTATION.
METHOD handle_double_click.
* define local data
DATA:
ls_knb1 TYPE knb1.
CHECK ( sender = go_grid1 ).
READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row-index.
CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
** CALL METHOD go_grid1->set_current_cell_via_id
** EXPORTING
*** IS_ROW_ID =
*** IS_COLUMN_ID =
** is_row_no = es_row_no.
* Triggers PAI of the dynpro with the specified ok-code
CALL METHOD cl_gui_cfw=>set_new_ok_code( 'DETAIL' ).
ENDMETHOD. "handle_double_click
ENDCLASS. "lcl_eventhandler IMPLEMENTATION
* CLASS LCL_APPLICATION DEFINITION
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
md_event TYPE string READ-ONLY,
md_node_key TYPE tv_nodekey READ-ONLY.
CLASS-METHODS:
handle_node_double_click
FOR EVENT node_double_click
OF cl_gui_simple_tree
IMPORTING node_key,
handle_expand_no_children
FOR EVENT expand_no_children
OF cl_gui_simple_tree
IMPORTING node_key.
ENDCLASS. "LCL_APPLICATION DEFINITION
* CLASS LCL_APPLICATION IMPLEMENTATION
CLASS lcl_application IMPLEMENTATION.
METHOD handle_node_double_click.
" this method handles the node double click event of the tree
" control instance
" show the key of the double clicked node in a dynpro field
md_event = 'NODE_DOUBLE_CLICK'.
md_node_key = node_key.
" Trigger PAI and set ok-code = 'DETAIL'
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = 'DETAIL'
* IMPORTING
* rc =
MESSAGE md_node_key TYPE 'I'.
ENDMETHOD. "HANDLE_NODE_DOUBLE_CLICK
METHOD handle_expand_no_children.
" this method handles the expand no children event of the tree
" control instance
DATA: node_table TYPE node_table_type,
node TYPE mtreesnode.
" show the key of the double clicked node in a dynpro field
md_event = 'EXPAND_NO_CHILDREN'.
md_node_key = node_key.
IF node_key = 'Child1'.
* add two nodes to the tree control (the children of 'Child1')
* Node with key 'New1'
CLEAR node.
node-node_key = c_nodekey-new1.
node-relatkey = c_nodekey-child1.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-isfolder = ' '.
node-text = 'New1'(ne1).
APPEND node TO node_table.
* Node with key 'New2'
CLEAR node.
node-node_key = c_nodekey-new2.
node-relatkey = c_nodekey-child1.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-n_image = '@10@'.
node-expander = ' '.
node-text = 'New2'(ne2).
APPEND node TO node_table.
CALL METHOD go_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.
ENDIF.
ENDMETHOD. "HANDLE_EXPAND_NO_CHILDREN
ENDCLASS. "LCL_APPLICATION IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM knb1 INTO TABLE gt_knb1 UP TO 100 ROWS
WHERE bukrs = '1000'.
PERFORM init_controls.
* Display data
gs_layout-grid_title = 'Customers: Sales Areas'.
CALL METHOD go_grid1->set_table_for_first_display
EXPORTING
i_structure_name = 'KNVV'
is_layout = gs_layout
CHANGING
it_outtab = gt_knvv
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Link the docking container to the target dynpro
gd_repid = syst-repid.
CALL METHOD go_docking->link
EXPORTING
repid = gd_repid
dynnr = '0100'
* CONTAINER =
EXCEPTIONS
OTHERS = 4.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* NOTE: dynpro does not contain any elements
CALL SCREEN '0100'.
* Flow logic of dynpro (does not contain any dynpro elements):
*PROCESS BEFORE OUTPUT.
* MODULE STATUS_0100.
*PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0100.
END-OF-SELECTION.
*& Module STATUS_0100 OUTPUT
* text
MODULE status_0100 OUTPUT.
SET PF-STATUS 'STATUS_0100'. " contains push button "DETAIL"
* SET TITLEBAR 'xxx'.
* Refresh display of detail ALV list
CALL METHOD go_grid1->refresh_table_display
* EXPORTING
* IS_STABLE =
* I_SOFT_REFRESH =
EXCEPTIONS
OTHERS = 2.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
* text
MODULE user_command_0100 INPUT.
TRANSLATE gd_okcode TO UPPER CASE.
CASE gd_okcode.
WHEN 'BACK' OR
'END' OR
'CANC'.
SET SCREEN 0. LEAVE SCREEN.
* User has pushed button "Display Details"
WHEN 'DETAIL'.
MESSAGE gd_okcode TYPE 'I'.
PERFORM entry_show_details.
WHEN OTHERS.
ENDCASE.
CLEAR: gd_okcode.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Form ENTRY_SHOW_DETAILS
* text
* --> p1 text
* <-- p2 text
FORM entry_show_details .
* define local data
DATA:
ld_row TYPE i,
ls_knb1 TYPE knb1.
IF ( gt_knvv IS INITIAL ).
SELECT * FROM knvv INTO TABLE gt_knvv
FOR ALL ENTRIES IN gt_knb1
WHERE kunnr = gt_knb1-kunnr.
ELSE.
REFRESH: gt_knvv.
ENDIF.
ENDFORM. " ENTRY_SHOW_DETAILS
*& Form INIT_CONTROLS
* text
* --> p1 text
* <-- p2 text
FORM init_controls .
* Create docking container
CREATE OBJECT go_docking
EXPORTING
parent = cl_gui_container=>screen0
ratio = 90
EXCEPTIONS
OTHERS = 6.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Create splitter container
CREATE OBJECT go_splitter
EXPORTING
parent = go_docking
rows = 1
columns = 2
* NO_AUTODEF_PROGID_DYNNR =
* NAME =
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Get cell container
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 1
RECEIVING
container = go_cell_left.
CALL METHOD go_splitter->get_container
EXPORTING
row = 1
column = 2
RECEIVING
container = go_cell_right.
* Create ALV grids
CREATE OBJECT go_grid1
EXPORTING
i_parent = go_cell_right
EXCEPTIONS
OTHERS = 5.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* Set event handler
SET HANDLER:
lcl_eventhandler=>handle_double_click FOR go_grid1.
PERFORM create_and_init_tree.
ENDFORM. " INIT_CONTROLS
*& Form CREATE_AND_INIT_TREE
* text
* --> p1 text
* <-- p2 text
FORM create_and_init_tree .
DATA: lt_node_table TYPE node_table_type,
lt_events TYPE cntl_simple_events,
ls_event TYPE cntl_simple_event.
* create a tree control
CREATE OBJECT go_tree
EXPORTING
parent = go_cell_left
node_selection_mode = cl_gui_simple_tree=>node_sel_mode_single " single node selection is used
EXCEPTIONS
lifetime_error = 1
cntl_system_error = 2
create_error = 3
failed = 4
illegal_node_selection_mode = 5.
IF sy-subrc <> 0.
** MESSAGE a000.
ENDIF.
* define the events which will be passed to the backend
" node double click
ls_event-eventid = cl_gui_simple_tree=>eventid_node_double_click.
** ls_event-appl_event = 'X'. " process PAI if event occurs
" NOTE: Do NOT register as application event !!!!!
APPEND ls_event TO lt_events.
CALL METHOD go_tree->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
IF sy-subrc <> 0.
** MESSAGE a000.
ENDIF.
SET HANDLER:
lcl_application=>handle_node_double_click FOR go_tree,
lcl_application=>handle_expand_no_children FOR go_tree.
* add some nodes to the tree control
* NOTE: the tree control does not store data at the backend. If an
* application wants to access tree data later, it must store the
* tree data itself.
PERFORM build_node_table USING lt_node_table.
* node_table_structure_name = 'MTREESNODE'
* A programmer using the tree control must create a structure in the
* dictionary. This structure must include the structure TREEV_NODE
* and must contain a character field with the name 'TEXT'.
CALL METHOD go_tree->add_nodes
EXPORTING
table_structure_name = 'MTREESNODE'
node_table = lt_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.
ENDFORM. " CREATE_AND_INIT_TREE
*& Form build_node_table
* text
* --> p1 text
* <-- p2 text
FORM build_node_table
USING
node_table TYPE node_table_type.
DATA: node LIKE mtreesnode.
* Build the node table.
* Caution: The nodes are inserted into the tree according to the order
* in which they occur in the table. In consequence, a node must not
* occur in the node table before its parent node.
* Node with key 'Root'
node-node_key = c_nodekey-root.
" 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 = 'Root'(roo).
APPEND node TO node_table.
* Node with key 'Child1'
node-node_key = c_nodekey-child1.
" Key of the node
" Node is inserted as child of the node with key 'Root'.
node-relatkey = c_nodekey-root.
node-relatship = cl_gui_simple_tree=>relat_last_child.
node-hidden = ' '.
node-disabled = ' '.
node-isfolder = 'X'.
CLEAR node-n_image.
CLEAR node-exp_image.
node-expander = 'X'. " The node is marked with a '+', although
" it has no children. When the user clicks on the
" + to open the node, the event
" expand_no_children is fired. The programmer can
" add the children of the
" node within the event handler of the
" expand_no_children event
" (see method handle_expand_no_children
" of class lcl_application)
node-text = 'Child1'(ch1).
node-style = cl_gui_simple_tree=>style_emphasized_positive.
APPEND node TO node_table.
ENDFORM. " build_node_table
Regards
Uwe -
Transfer tree control to subprogram as XML
I've been pretty happy with the labview tree control except that there doensn't seem to be a method for transferring a complete tree from one vi to another. I finally wrote some functions for converting a tree to/from an xml string. To convert to xml, pass the tree refnum to the subvi and out comes xml. To convert back to a new tree, pass a refnum for a new tree and the xml string. I haven't done any optimization for speed or flexibility, (no documentation yet either) but it works pretty well. The attached code has everything you need - I hope someone else will find this useful. I'd love feedback if anyone tries it.
thanks,
George
Attachments:
tree-xml.zip 86 KBHi, George,
thank you for your answer. I use LabView tree and work with LabView 2013, maybe the tree itself is not uptodate, but after casting it works, I suppose, that it is just the XML string which you expect to get. I made an XML -display VI using LabView tools from the corresponding library - they are going from node to node getting names and attributes. As a result a tree with 2 columns is displayed. I can send you this VI to have a look at it.
I found and loaded TestConfiguration.xml, it can be also displayed with my VI, though it uses XSD - my original file doesn't have any XSD, that#s why it may be differen in your solution and in what I have to do.
I took my tree, "casted" it to your ref and than used "LoadXML" from the XML palett of LabView. I got the parsing error "Line 2, Column 2, Message: Expected an element name", maybe that means, that some header info is not correct.
As I see from you VI you convert the tree to an XML- string, and then you can save this string in a file, right? I thought of creating an XML -structure with nodes and attributes just from the tree, but obviously it is a very complicated way, isn't it? My problem is to save changes, which a user has done editing the Tree - it seems to be the simplest way to write donw the TREE completely in an XML file, because the tree has all the info. But maybe this way can#t be gone at all :-(.
Please find attached the VI to display an XML file in a tree with 2 columns. I used this display form as an XML Notepad 2007 does it.
Thanks
Attachments:
DisplayXMLFileAsTreeExample.vi 49 KB
DisplayXML.lvproj 3 KB -
Hi,
i need to add a picture on the tree control. i have attached a image file for reference. i need to bring a tree control of that form. Can some one help me to achieve it.
Padhu
Attachments:
Tree Picture.jpg 10 KBsee here
Vix
In claris non fit interpretatio
Using LV 2013 SP1 on Win 7 64bit
Using LV 8.2.1 on WinXP SP3
Using CVI 2012 SP1 on Win 7 64bit, WinXP and WinXP Embedded
Using CVI 6.0 on Win2k, WinXP and WinXP Embedded
Maybe you are looking for
-
Unable to connect Adobe.
I am having a serious probelm that I couldn't solve for days. I have subscribed to Adobe Creative Cloud. I have installed Adobe Application Manager to my MacBookAir and it worked without any problems. Later I have installed it to my iMac and used wit
-
How Use badi "MB_MIGO_BADI" method "LINE_MODIFY" and "CHECK_ITEM"?
In MIGO I enter Transfer Posting with two positions of materials, then I press the button POST - Conducting, in this case my expansions fulfil correctly. If I press button HOLD - temporarily to keep the document, then I will leave transaction MIGO, a
-
Hi, I am displaying an image currently on a JPanel using the Graphics and BufferedImage class. Does anyone know of any method that i can use to select a region of the image. Also if the image has been scaled to fit the GUI, how will i know that the r
-
Can't see Reports in Hebrew through IE
No problem exist when user do "View output" . The hebrew is fine when user do it on line. Only when he save it to PC , the Hebrew is destroyed. User must SAVE the output with MS-DOS encoding format, and open with Firefox , choosing IBM-862 encoding.
-
I am trying to write protect a Table so that it can only be viewed by others but not write (modified) the data in the table. How can I create and modify a table in order for it to be only viewable. Thanks