‎2013 Jan 08 8:09 AM
Hi guys.....I'am currently trying to understand the ALV Output Display For a Tree Structure, and got stuck. Is there a link I can use to get more information about the functions of ADD_NODE ?? Basically, I have an Internal Table with two fields (CODE, QTY) and I'am trying to feed them into an empty Internal Table (itab2_ZDBTABLE), and basically, the first item in the List should be the parent of the second item in the list and so on.....SO for a table:
| Code | QTY |
|---|---|
| M01 | 12 |
| M02 | 20 |
M01 is the parent of M02.....and M02 is the parent of M03....and so on.....
| ALV Display - Tree Strucuture |
|---|
REPORT ZHELLOWORLD. TABLES: ZDBTABLE. DATA: itab1_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab2_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab_ZDBTABLE_wa TYPE ZDBTABLE. DATA: ref_CL_SALV_TREE TYPE REF TO CL_SALV_TREE. DATA: ref_CL_SALV_NODES TYPE REF TO CL_SALV_NODES. DATA: ref_CL_SALV_NODE TYPE REF TO CL_SALV_NODE. START-OF-SELECTION. SELECT * FROM ZDBTABLE INTO CORRESPONDING FIELDS OF TABLE itab1_ZDBTABLE. " Create Instance With Empty Table CALL METHOD CL_SALV_TREE=>FACTORY IMPORTING R_SALV_TREE = ref_CL_SALV_TREE CHANGING T_TABLE = itab2_ZDBTABLE. " Add Nodes To Tree ref_CL_SALV_NODES = ref_CL_SALV_TREE->GET_NODES( ). LOOP AT itab1_ZDBTABLE INTO itab_ZDBTABLE_wa. TRY. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = '' RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_FIRST_CHILD ). ref_CL_SALV_NODE->SET_DATA_ROW( itab_ZDBTABLE_wa ). CATCH CX_SALV_MSG. ENDTRY. ENDLOOP. " Display Table ref_CL_SALV_TREE->DISPLAY( ). |
Any help will be appreciated....and links to more details about the available functions....thanks again!
‎2013 Jan 09 10:31 AM
Hi again....so far I'am working towards:
| Header 1 |
|---|
REPORT ZHELLOWORLD. TABLES: ZDBTABLE. DATA: itab1_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab2_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab_ZDBTABLE_wa TYPE ZDBTABLE. DATA: ref_CL_SALV_TREE TYPE REF TO CL_SALV_TREE. DATA: ref_CL_SALV_NODES TYPE REF TO CL_SALV_NODES. DATA: ref_CL_SALV_NODE TYPE REF TO CL_SALV_NODE. START-OF-SELECTION. SELECT * FROM ZDBTABLE INTO CORRESPONDING FIELDS OF TABLE itab1_ZDBTABLE. " Create Instance With Empty Table CALL METHOD CL_SALV_TREE=>FACTORY IMPORTING R_SALV_TREE = ref_CL_SALV_TREE CHANGING T_TABLE = itab2_ZDBTABLE. " Add Nodes To Tree ref_CL_SALV_NODES = ref_CL_SALV_TREE->GET_NODES( ). DATA: i TYPE I VALUE 1. DATA: j TYPE I. WHILE i LE LINES( itab1_ZDBTABLE ). READ TABLE itab1_ZDBTABLE INDEX i INTO itab_ZDBTABLE_wa. TRY. IF i EQ '1'. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = '' RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_FIRST_CHILD ). ELSEIF i EQ '2'. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = 'M01' RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_FIRST_CHILD ). ENDIF. ref_CL_SALV_NODE->SET_DATA_ROW( itab_ZDBTABLE_wa ). CATCH CX_SALV_MSG. ENDTRY. i = i + 1. ENDWHILE. " Display Table ref_CL_SALV_TREE->DISPLAY( ). |
So that I can use the index 'i' to set the first elements parent as null. But doesn't work.....any help??
‎2013 Jan 09 10:31 AM
Hi again....so far I'am working towards:
| Header 1 |
|---|
REPORT ZHELLOWORLD. TABLES: ZDBTABLE. DATA: itab1_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab2_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab_ZDBTABLE_wa TYPE ZDBTABLE. DATA: ref_CL_SALV_TREE TYPE REF TO CL_SALV_TREE. DATA: ref_CL_SALV_NODES TYPE REF TO CL_SALV_NODES. DATA: ref_CL_SALV_NODE TYPE REF TO CL_SALV_NODE. START-OF-SELECTION. SELECT * FROM ZDBTABLE INTO CORRESPONDING FIELDS OF TABLE itab1_ZDBTABLE. " Create Instance With Empty Table CALL METHOD CL_SALV_TREE=>FACTORY IMPORTING R_SALV_TREE = ref_CL_SALV_TREE CHANGING T_TABLE = itab2_ZDBTABLE. " Add Nodes To Tree ref_CL_SALV_NODES = ref_CL_SALV_TREE->GET_NODES( ). DATA: i TYPE I VALUE 1. DATA: j TYPE I. WHILE i LE LINES( itab1_ZDBTABLE ). READ TABLE itab1_ZDBTABLE INDEX i INTO itab_ZDBTABLE_wa. TRY. IF i EQ '1'. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = '' RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_FIRST_CHILD ). ELSEIF i EQ '2'. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = 'M01' RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_FIRST_CHILD ). ENDIF. ref_CL_SALV_NODE->SET_DATA_ROW( itab_ZDBTABLE_wa ). CATCH CX_SALV_MSG. ENDTRY. i = i + 1. ENDWHILE. " Display Table ref_CL_SALV_TREE->DISPLAY( ). |
So that I can use the index 'i' to set the first elements parent as null. But doesn't work.....any help??
‎2013 Jan 09 11:25 AM
Hi,
Refer to the demo program SALV_DEMO_TREE_SIMPLE, which will be useful.
Hope it helps.
Thanks,
Tooshar Bendale
‎2013 Jan 10 6:10 AM
‎2013 Jan 15 8:54 AM
Ok...the code I posted was somewhat correct....I did a little bit of work, and got the correct output! For those that are interested, here it is!
| Simple ALV Tree |
|---|
REPORT ZHELLOWORLD. TABLES: ZDBTABLE. DATA: itab1_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab2_ZDBTABLE TYPE STANDARD TABLE OF ZDBTABLE. DATA: itab_ZDBTABLE_wa TYPE ZDBTABLE. DATA: ref_CL_SALV_TREE TYPE REF TO CL_SALV_TREE. DATA: ref_CL_SALV_TREE_SETTINGS TYPE REF TO CL_SALV_TREE_SETTINGS. DATA: ref_CL_SALV_NODE TYPE REF TO CL_SALV_NODE. DATA: ref_CL_SALV_NODES TYPE REF TO CL_SALV_NODES. DATA: var_LVC_NKEY TYPE LVC_NKEY. START-OF-SELECTION. " Select Data SELECT * FROM ZDBTABLE INTO CORRESPONDING FIELDS OF TABLE itab1_ZDBTABLE. " Create Instance With Empty Table CALL METHOD CL_SALV_TREE=>FACTORY IMPORTING R_SALV_TREE = ref_CL_SALV_TREE CHANGING T_TABLE = itab2_ZDBTABLE. " Build Hierarchy Header ref_CL_SALV_TREE_SETTINGS = ref_CL_SALV_TREE->GET_TREE_SETTINGS( ). ref_CL_SALV_TREE_SETTINGS->SET_HIERARCHY_HEADER( 'Hierarchy Of Tree' ). ref_CL_SALV_TREE_SETTINGS->SET_HIERARCHY_TOOLTIP( 'This is the Hierarchical Order' ). ref_CL_SALV_TREE_SETTINGS->SET_HIERARCHY_SIZE( 30 ). DATA: var_SALV_DE_TREE_TEXT type SALV_DE_TREE_TEXT. var_SALV_DE_TREE_TEXT = sy-title. ref_CL_SALV_TREE_SETTINGS->SET_HEADER( var_SALV_DE_TREE_TEXT ). " Add Nodes To Tree ref_CL_SALV_NODES = ref_CL_SALV_TREE->GET_NODES( ). DATA: i TYPE I VALUE 1. DATA: j TYPE I. WHILE i LE LINES( itab1_ZDBTABLE ). READ TABLE itab1_ZDBTABLE INDEX i INTO itab_ZDBTABLE_wa. TRY. IF i EQ 1. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = ' ' DATA_ROW = itab_ZDBTABLE_wa RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD ). ELSE. ref_CL_SALV_NODE = ref_CL_SALV_NODES->ADD_NODE( RELATED_NODE = var_LVC_NKEY DATA_ROW = itab_ZDBTABLE_wa RELATIONSHIP = CL_GUI_COLUMN_TREE=>RELAT_LAST_CHILD ). ENDIF.
i = i + 1. var_LVC_NKEY = ref_CL_SALV_NODE->GET_KEY( ). CATCH CX_SALV_MSG. ENDTRY. ENDWHILE. " Optimize Column Widths DATA: ref_CL_SALV_COLUMNS TYPE REF TO CL_SALV_COLUMNS. TRY. ref_CL_SALV_COLUMNS = ref_CL_SALV_TREE->GET_COLUMNS( ). ref_CL_SALV_COLUMNS->SET_OPTIMIZE( ). CATCH CX_SALV_NOT_FOUND. "#EC NO_HANDLER ENDTRY. " Display Table ref_CL_SALV_TREE->DISPLAY( ). |