Hello. My program build a tree of objects using loops. How to build a tree of objects using recursion. I know that I need to create a subroutine and perform this subroutine yourself, but I don't understand how to create new internal table and pass this table into perform. Help please.
report z_my_program. DATA: n_level TYPE I, n_count type i, count type i. TYPES: BEGIN OF ty_hrp1001, objid type hrp1001-objid, sobid type hrp1001-sobid, stext type hrp1000-stext, objid1 type hrp1001-objid, END OF ty_hrp1001. DATA : it_hrp1001 TYPE TABLE OF ty_hrp1001. DATA : wa_hrp1001 TYPE ty_hrp1001. FIELD-SYMBOLS: <fs1001> like line of it_hrp1001. TYPES: BEGIN OF ty_hrp1002, objid type hrp1001-objid, sobid type hrp1001-sobid, stext type hrp1000-stext, objid1 type hrp1001-objid, END OF ty_hrp1002. DATA : it_hrp1002 TYPE TABLE OF ty_hrp1002. DATA : wa_hrp1002 TYPE ty_hrp1002. FIELD-SYMBOLS: <fs1002> like line of it_hrp1002. TYPES: BEGIN OF ty_hrp1003, objid type hrp1001-objid, sobid type hrp1001-sobid, objid1 type hrp1001-objid, stext type hrp1000-stext, END OF ty_hrp1003. DATA : it_hrp1003 TYPE TABLE OF ty_hrp1003. DATA : wa_hrp1003 TYPE ty_hrp1003. FIELD-SYMBOLS: <fs1003> like line of it_hrp1003. ***Data Table decleration for FM RS_TREE_CONSTRUCT DATA: IT_NODE TYPE STANDARD TABLE OF SNODETEXT, WA_NODE TYPE SNODETEXT. **Declare Constants for TREE CONSTANTS: C_COL_KEY TYPE C LENGTH 1 VALUE COL_KEY, C_COL_FIELD TYPE C LENGTH 1 VALUE COL_NORMAL, C_COL_OBJID TYPE C LENGTH 1 VALUE COL_KEY, C_COL_SOBID TYPE C LENGTH 1 VALUE COL_POSITIVE. **Selection Screen select-options: s_objid for wa_hrp1001-objid. START-OF-SELECTION. **Get Data From Tables SELECT OBJID SOBID FROM HRP1001 INTO TABLE IT_HRP1001 WHERE OBJID IN S_OBJID and SUBTY = 'B030'. loop at it_hrp1001 assigning <fs1001>. <fs1001>-objid1 = <fs1001>-sobid. endloop. SELECT OBJID SOBID FROM HRP1001 INTO TABLE IT_HRP1002 FOR ALL ENTRIES IN IT_HRP1001 WHERE OBJID = IT_HRP1001-OBJID1 and SUBTY = 'B030'. loop at it_hrp1002 assigning <fs1002>. <fs1002>-objid1 = <fs1002>-sobid. endloop. SELECT OBJID SOBID FROM HRP1001 INTO TABLE IT_HRP1003 FOR ALL ENTRIES IN IT_HRP1002 WHERE OBJID = IT_HRP1002-OBJID1 and SUBTY = 'B030'. loop at it_hrp1003 assigning <fs1003>. <fs1003>-objid1 = <fs1003>-sobid. endloop. "1-st node WA_NODE-TLEVEL = 1. WA_NODE-NAME = 'Catalogue'. WA_NODE-NLENGTH = 20. WA_NODE-COLOR = C_COL_KEY. WA_NODE-TEXT = 'Texts'. WA_NODE-TLENGTH = 50. APPEND WA_NODE TO IT_NODE. "2-nd node LOOP AT IT_HRP1001 INTO WA_HRP1001. CLEAR WA_NODE. WA_NODE-TLEVEL = 2. WA_NODE-NAME = WA_HRP1001-SOBID. WA_NODE-NLENGTH = 50. WA_NODE-COLOR = C_COL_OBJID. APPEND WA_NODE TO IT_NODE. "3-rd node LOOP AT IT_HRP1002 INTO WA_HRP1002 WHERE OBJID = WA_HRP1001-OBJID1. CLEAR WA_NODE. WA_NODE-TLEVEL = 3. WA_NODE-NAME = WA_HRP1002-SOBID. WA_NODE-NLENGTH = 50. WA_NODE-COLOR = C_COL_SOBID. APPEND WA_NODE TO IT_NODE. "4-th node LOOP AT IT_HRP1003 INTO WA_HRP1003 WHERE OBJID = WA_HRP1002-OBJID1. CLEAR WA_NODE. WA_NODE-TLEVEL = 4. WA_NODE-NAME = WA_HRP1003-SOBID. WA_NODE-NLENGTH = 50. WA_NODE-COLOR = C_COL_SOBID. APPEND WA_NODE TO IT_NODE. ENDLOOP. ENDLOOP. ENDLOOP. **Construct tree CALL FUNCTION 'RS_TREE_CONSTRUCT' * EXPORTING * INSERT_ID = '000000' * RELATIONSHIP = ' ' * LOG = TABLES NODETAB = IT_NODE EXCEPTIONS TREE_FAILURE = 1 ID_NOT_FOUND = 2 WRONG_RELATIONSHIP = 3 OTHERS = 4. IF SY-SUBRC <> 0. WRITE 'Error in Tree Construction'. ENDIF. **Display tree CALL FUNCTION 'RS_TREE_LIST_DISPLAY' EXPORTING CALLBACK_PROGRAM = SY-REPID.