gh_colunm_tree_第1页
gh_colunm_tree_第2页
gh_colunm_tree_第3页
gh_colunm_tree_第4页
gh_colunm_tree_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、COLUMN tree实例程序写在函数里,在F4帮助时调用,效果:选择屏幕定义SELECT-OPTIONS:s_proj for ZFIT1011-NODID NO INTERVALS .AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_proj-low."  P_PROJ .  PERFORM FRM_F4_HELP_PROJ .FORM FRM_F4_HELP_PRO

2、J .  DATA: LT_BUKRS    TYPE ZFITBBUKRS,        LS_BUKRS    TYPE ZFISBUKRS.  DATA: LT_ZFIT1011 TYPE ZFITB1011,        LS_ZFIT1

3、011 TYPE ZFIT1011.  DATA LT_FIELD LIKE TABLE OF DYNPREAD.  DATA LS_FIELD LIKE          DYNPREAD.  DATA:LV_LVVER  TYPE ZFIT1011-LVVER  .  CLE

4、AR: LT_FIELD  ,LV_LVVER ,   LS_FIELD     .  REFRESH S_PROJ.  CALL FUNCTION 'DYNP_VALUES_READ'    EXPORTING      DYNAME     

5、;          = SY-REPID      DYNUMB               = SY-DYNNR      REQUEST     

6、0;        = 'A'     "读取全屏幕数据    TABLES      DYNPFIELDS           = LT_FIELD    EXCEPTIO

7、NS      INVALID_ABAPWORKAREA = 1      INVALID_DYNPROFIELD  = 2      INVALID_DYNPRONAME   = 3      INVALID_DYNPRONUMMER = 4

8、60;     INVALID_REQUEST      = 5      NO_FIELDDESCRIPTION  = 6      INVALID_PARAMETER    = 7      UNDEFIND_ERR

9、OR       = 8      DOUBLE_CONVERSION    = 9      STEPL_NOT_FOUND      = 10      OTHERS    &

10、#160;          = 11.  LV_LVVER  = LS_FIELD-FIELDVALUE  .  CALL FUNCTION 'ZFI_GRADE_F4_HELP'    EXPORTING      IV_LVCOD = &

11、#39;FI01'      IV_LVVER = 'V01'    TABLES      TV_BUKRS = LT_BUKRS      TV_TAB   = LT_ZFIT1011.  LOOP AT LT_ZFIT1011&#

12、160;INTO LS_ZFIT1011 WHERE BUKRS IS NOT INITIAL .    GR_BUKRS-SIGN = 'I'.    GR_BUKRS-OPTION = 'EQ'.    GR_BUKRS-LOW    = LS_ZFIT1011-BUKRS.

13、0;   CLEAR GR_BUKRS-HIGH.    APPEND GR_BUKRS.  ENDLOOP.  DELETE LT_ZFIT1011 WHERE DWNOD NOT IN GR_BUKRS.*  IF LINES( LT_ZFIT1011 ) > 1.*    MESSAGE

14、 S000 WITH TEXT-002 DISPLAY LIKE 'E'.*    LEAVE LIST-PROCESSING.*  ENDIF.*  READ TABLE LT_ZFIT1011 INTO LS_ZFIT1011 INDEX 1.*  IF SY-SUBRC = 0.*   

15、 P_PROJ = LS_ZFIT1011-NODID.*  ENDIF.  LOOP AT LT_ZFIT1011 INTO LS_ZFIT1011.    S_PROJ-SIGN = 'I'.    S_PROJ-OPTION = 'EQ'.    S_PROJ-LOW = 

16、;LS_ZFIT1011-NODID.    APPEND S_PROJ.  ENDLOOP.ENDFORM.                    " FRM_F4_HELP_PROJCALL FUNCTION 'ZFI_GRADE_F4_HELP'  

17、;CLEAR:GV_REGCT,GV_DISRC.  GV_DISRC = IV_DISRC.*- 获取数据源  PERFORM FRM_GET_DATA USING    IV_LVCOD IV_LVVER                     

18、  CHANGING GT_TAB.*- 弹出窗口  CLEAR GT_BUKRS.  CALL SCREEN 0100 STARTING AT 50 2 ENDING AT 95 20.*  IF EV_REGCT IS SUPPLIED.*    EV_REGCT = GV_REGCT.*

19、60; ENDIF.  IF GT_BUKRS IS NOT INITIAL.    CLEAR TV_BUKRS.    LOOP AT GT_BUKRS INTO GS_BUKRS.      APPEND GS_BUKRS TO TV_BUKRS.    ENDL

20、OOP.  ELSE.    READ TABLE GT_ITEM_TAB INTO GS_ITEM_TAB WITH KEY CHOSEN = 'X'.    IF SY-SUBRC <> 0.      CLEAR TV_BUKRS.   

21、0;ENDIF.  ENDIF.  PERFORM FRM_GET_RESULT_TAB CHANGING TV_TAB.FRM_GET_DATAFORM FRM_GET_DATA USING    IV_LVCOD TYPE ZFILVCOD                 &

22、#160;         IV_LVVER TYPE ZFILVVER                  CHANGING CT_TAB   TYPE TT_TAB.  CLEAR:CT_TAB.  "获取层

23、级数据  SELECT * FROM ZFIT1011    INTO TABLE CT_TAB   WHERE LVCOD = IV_LVCOD     AND LVVER = IV_LVVER.ENDFORM.           &#

24、160;        " FRM_GET_DATAFRM_GET_RESULT_TABFORM FRM_GET_RESULT_TAB  CHANGING P_TV_TAB TYPE ZFITB1011.  CLEAR P_TV_TAB.* 从表中读出所有打上选择标志的节点  DATA: LS_TAB     

25、0; TYPE TY_TAB,        LT_P_TAB TYPE TT_TAB.  LOOP AT GT_ITEM_TAB INTO GS_ITEM_TAB WHERE CHOSEN = 'X'.    READ TABLE GT_TAB INTO LS_TAB W

26、ITH KEY NODID = GS_ITEM_TAB-NODE_KEY.    APPEND LS_TAB TO P_TV_TAB.    APPEND LS_TAB TO LT_P_TAB.  ENDLOOP.* 找各个节点的父亲节点  PERFORM FIND_UP_NODE USING LT_P_TAB CHANGING

27、 P_TV_TAB.* 删除多余的祖宗节点*  CLEAR LS_TAB.*  READ TABLE GT_TAB INTO LS_TAB WITH KEY UPNOD = ''.*  PERFORM DELETE_P_NODE USING LS_TAB CHANGING P_TV_TAB.* 重新排序  IF 

28、SY-UCOMM = 'WFTEST05'.    PERFORM RE_SORT_NODE CHANGING P_TV_TAB.  ENDIF.ENDFORM.                    " FRM_GET_RESULT_TABRE_SOR

29、T_NODEFORM RE_SORT_NODE  CHANGING P_TV_TAB TYPE TT_TAB.* 思路: 从顶层节点开始,遍历查找下层节点,如果直接第一个子节点没有找到,* 就直接找子节点的下一个同级节点,依次知道找到第一个同级节点,然后调整* 指针,然后查找该节点的子节点,按上面的递推。  FIELD-SYMBOLS: <FS> TYPE TY_TAB.  DATA: LS_TAB

30、60;TYPE TY_TAB.* 找到顶层节点  READ TABLE P_TV_TAB ASSIGNING <FS> WITH KEY UPNOD = ''.  PERFORM RE_SORT_NODE_METHOD USING <FS> .ENDFORM.         &

31、#160;          " RE_SORT_NODERE_SORT_NODE_METHODFORM RE_SORT_NODE_METHOD USING P_LS_TAB TYPE TY_TAB.  DATA: LS_TAB TYPE TY_TAB.* 先找下级节点  READ TABLE GT_TAB INTO&

32、#160;LS_TAB WITH KEY DWNOD = P_LS_TAB-NODID.ENDFORM.                    "re_sort_node_methodScreen 100PROCESS BEFORE OUTPUT.  MODULE status_0100.

33、*PROCESS AFTER INPUT.  MODULE user_command_0100.MODULE status_0100.MODULE STATUS_0100 OUTPUT.  SET PF-STATUS 'STA_001'.*  SET TITLEBAR 'xxx'.  IF GO_TREE IS INITIAL.  &#

34、160; " The Tree Control has not been created yet.    " Create a Tree Control and insert nodes into it.    PERFORM CREATE_AND_INIT_TREE.  ELSE.

35、60;   PERFORM FLUSH_TREE.  ENDIF.ENDMODULE.                 " STATUS_0100  OUTPUTSET PF-STATUS 'STA_001'.PERFORM CREATE_AND_INIT_TREE.FORM

36、0;CREATE_AND_INIT_TREE .  DATA:LS_HEADER TYPE TREEV_HHDR,       LS_EVENT  TYPE CNTL_SIMPLE_EVENT,       LT_EVENTS TYPE CNTL_SIMPLE_EVENTS.* create a container f

37、or the tree control  CREATE OBJECT GO_CONTAINER    EXPORTING      CONTAINER_NAME              = 'CN_TREE'    EXC

38、EPTIONS      CNTL_ERROR                  = 1      CNTL_SYSTEM_ERROR           = 2

39、0;     CREATE_ERROR                = 3      LIFETIME_ERROR              = 4 

40、0;    LIFETIME_DYNPRO_DYNPRO_LINK = 5.  IF SY-SUBRC <> 0.*    MESSAGE a000.  ENDIF.* setup the hierarchy header  LS_HEADER-HEADING = '请选择'.  "

41、; heading  LS_HEADER-WIDTH = 30.         " width: 30 characters* create a tree control  CREATE OBJECT GO_TREE    EXPORTING    

42、0; PARENT                      = GO_CONTAINER      NODE_SELECTION_MODE         = CL_GUI_COLUMN_TREE=

43、>NODE_SEL_MODE_SINGLE      ITEM_SELECTION              = 'X'      HIERARCHY_COLUMN_NAME       = 'NODID'

44、60;     HIERARCHY_HEADER            = LS_HEADER    EXCEPTIONS      CNTL_SYSTEM_ERROR           = 1&#

45、160;     CREATE_ERROR                = 2      FAILED                  

46、    = 3      ILLEGAL_NODE_SELECTION_MODE = 4      ILLEGAL_COLUMN_NAME         = 5      LIFETIME_ERROR    

47、          = 6.  IF SY-SUBRC <> 0.*    MESSAGE a000.  ENDIF.* create object  IF GO_APPLICATION IS INITIAL.    CREATE OBJ

48、ECT GO_APPLICATION      EXPORTING        HANDLE               = GO_TREE        CB_NODE_DOUBLE_CLICK 

49、= 'X'.  ENDIF.* assign event handlers in the application class to each desired event  " header click  CLEAR:LT_EVENTS,LS_EVENT.  LS_EVENT-EVENTID    = C

50、L_GUI_COLUMN_TREE=>EVENTID_ITEM_DOUBLE_CLICK.  LS_EVENT-APPL_EVENT = 'X'.  APPEND LS_EVENT TO LT_EVENTS.* 增加checkbox事件  LS_EVENT-EVENTID    = CL_GUI_COLUMN_TREE=>EVENTID_CHECKBOX_CHANGE.  LS_

51、EVENT-APPL_EVENT = 'X'.  APPEND LS_EVENT TO LT_EVENTS.  CALL METHOD GO_TREE->SET_REGISTERED_EVENTS    EXPORTING      EVENTS          &

52、#160;         = LT_EVENTS    EXCEPTIONS      CNTL_ERROR                = 1      CNTL_

53、SYSTEM_ERROR         = 2      ILLEGAL_EVENT_COMBINATION = 3.  IF SY-SUBRC <> 0.*    MESSAGE A000.  ENDIF.  IF GO_APPLICATION 

54、;IS NOT INITIAL.    SET HANDLER GO_APPLICATION->HANDLE_ITEM_DOUBLE_CLICK FOR GO_TREE.    SET HANDLER GO_APPLICATION->HANDLE_CHECKBOX_CHANGE FOR GO_TREE.  ENDIF.* build data  

55、PERFORM BUILD_NODE_AND_ITEM_TABLE USING    GT_TAB                                    CHANG

56、ING GT_NODE_TAB GT_ITEM_TAB.*- 为TREE添加节点  CALL METHOD GO_TREE->ADD_NODES_AND_ITEMS    EXPORTING      NODE_TABLE                 

57、;    = GT_NODE_TAB      ITEM_TABLE                     = GT_ITEM_TAB      ITEM_TABLE_STRUCTURE_NAME 

58、     = 'DEMO_ITEM'    EXCEPTIONS      FAILED                         = 1 

59、0;    CNTL_SYSTEM_ERROR              = 3      ERROR_IN_TABLES                = 4 

60、0;    DP_ERROR                       = 5      TABLE_STRUCTURE_NAME_NOT_FOUND = 6.  CALL METHOD GO_TR

61、EE->EXPAND_ROOT_NODES*  EXPORTING*    level_count         =*    expand_subtree      =    EXCEPTIONS      FAILED  

62、;            = 1      ILLEGAL_LEVEL_COUNT = 2      CNTL_SYSTEM_ERROR   = 3      OTHERS     

63、;         = 4.  IF SY-SUBRC <> 0.* Implement suitable error handling here  ENDIF.  CALL METHOD CL_GUI_CFW=>FLUSH.ENDFORM.      

64、0;             " CREATE_AND_INIT_TREEBUILD_NODE_AND_ITEM_TABLE取项目wbs的递归函数取数顺序CT_NODE用于存储父级和子节点关系CT_ITEM用于存储每个节点的属性FORM BUILD_NODE_AND_ITEM_TABLE  USING   IT_TAB TYPE TT_TAB  &

65、#160;                             CHANGING CT_NODE TYPE TREEV_NTAB            &#

66、160;                            CT_ITEM TYPE TT_DEMO_ITEM.* add by tianhaiguang on 20130423*找出根节点的下一个节点* 找出根节点的第一个节点

67、0; DATA: LS_TAB1 TYPE TY_TAB,        LS_TAB2 TYPE TY_TAB,        LT_TAB2 TYPE TT_TAB.*  UPNOD父节点、NXTND下一个同级节点、DWNOD下一级节点、NODID当前节点  LOOP AT IT_TAB

68、0;INTO LS_TAB1 WHERE UPNOD IS INITIAL.    READ TABLE IT_TAB WITH KEY NXTND = LS_TAB1-NODID TRANSPORTING NO FIELDS. " 当前节点有没有同名的同级节点    IF SY-SUBRC = 0. 

69、60;    CONTINUE. " 跳出本次循环    ELSE.      LS_TAB2 = LS_TAB1. " 因为父根节点只有一个,所以不用append到表里    ENDIF.  ENDLOOP.  IF LS_TAB2-NODID IS NOT INITIAL.&

70、#160;   APPEND LS_TAB2 TO LT_TAB2.  ENDIF." IT_TAB存储项目wbs结构,LT_TAB2目前只有跟节点  PERFORM FRM_RECURSE_SORT USING    IT_TAB LT_TAB2             

71、60;             CHANGING CT_NODE CT_ITEM LS_TAB2." 将取出来的WBS项目结构赋值给IT_TAB  CLEAR IT_TAB.  MOVE LT_TAB2 TO IT_TAB.* end add*  "当有标记时,删除区域中心记录. 

72、; IF GV_DISRC IS NOT INITIAL.    DELETE IT_TAB WHERE RCFLG IS NOT INITIAL.  ENDIF.*  DATA:LS_TAB   TYPE TY_TAB,       LT_OUT   TYPE

73、0;TT_TAB,       LS_NODE  TYPE TREEV_NODE,       LS_ITEM  TYPE TY_DEMO_ITEM,       LV_NODID TYPE ZFINODID.  "根节点  LOOP AT 

74、;IT_TAB INTO LS_TAB WHERE UPNOD IS INITIAL.    LS_NODE-NODE_KEY = LS_TAB-NODID.    LS_NODE-RELATKEY = ''.    LS_NODE-ISFOLDER = ABAP_TRUE.    LS_NODE-EX

75、PANDER = ABAP_TRUE.* add by tianhaiguang on 20130423*    ls_node-n_image = '3S'.*    ls_node-exp_image = '3T'.* end add .    APPEND LS_NODE TO&#

76、160;CT_NODE. CLEAR:LS_NODE.    LS_ITEM-ITEM_NAME = 'NODID'.    LS_ITEM-NODE_KEY = LS_TAB-NODID.    LS_ITEM-CLASS = 3.  " '2' text; '3' checkbox;&#

77、160;'4' button; '5' link    LS_ITEM-EDITABLE = 'X'.    LS_ITEM-CHOSEN = ''.* modify by tianhaiguang on 20130422.*    ls_item-text = ls_tab

78、-nodid && ' ' && ls_tab-ndtxt.    CONCATENATE LS_TAB-NODID  LS_TAB-NDTXT INTO LS_ITEM-TEXT SEPARATED BY SPACE.* end modify    APPEND LS_ITEM TO CT

79、_ITEM. CLEAR:LS_ITEM.    CLEAR:LS_TAB.  ENDLOOP.* delete by tianhaiguang*  SORT it_tab BY nodid upnod rcflg DESCENDING."" dwnod nxtnd.*  SORT it_tab BY upnod no

80、did rcflg DESCENDING."" dwnod nxtnd.* end delete.  LOOP AT IT_TAB INTO LS_TAB WHERE UPNOD IS NOT INITIAL.    "判断当前层的上一级是否存在    READ TABLE IT_TAB 

81、WITH KEY NODID = LS_TAB-UPNOD TRANSPORTING NO FIELDS.    IF SY-SUBRC <> 0.      CONTINUE.    ENDIF.    "判断当前层的下一级是否存在    READ

82、0;TABLE IT_TAB WITH KEY UPNOD = LS_TAB-NODID TRANSPORTING NO FIELDS.    IF SY-SUBRC = 0.      LS_NODE-ISFOLDER = ABAP_TRUE.* add by tianhaiguang on 2013042

83、3*      ls_node-n_image = '3S'.*      ls_node-exp_image = '3T'.* end add.    ELSE.      LS_NODE-ISFOLDER = ABAP_FALSE.* add 

84、by tianhaiguang on 20130423      LS_NODE-N_IMAGE = '6D'.      LS_NODE-EXP_IMAGE = '6D'.* end add    ENDIF.    LS_NODE-NODE_KEY = 

85、LS_TAB-NODID.    LS_NODE-RELATKEY = LS_TAB-UPNOD.    APPEND LS_NODE TO CT_NODE. CLEAR:LS_NODE.*<-构建节点信息表->    LS_ITEM-ITEM_NAME = 'NODID'.    LS_ITEM-NODE_KEY =&

86、#160;LS_TAB-NODID.    LS_ITEM-CLASS = 3."" cl_gui_column_tree=>item_class_checkbox.    " '2' text; '3' checkbox; '4' button; '5' link   

87、0;LS_ITEM-EDITABLE = 'X'.    LS_ITEM-CHOSEN = ''.* modify by tianhaiguang on 20130422.*    ls_item-text =  ls_tab-nodid && '-' &&  ls_t

88、ab-ndtxt.    CONCATENATE LS_TAB-NODID LS_TAB-NDTXT INTO LS_ITEM-TEXT SEPARATED BY SPACE.* end modify.    APPEND LS_ITEM TO CT_ITEM. CLEAR:LS_ITEM.    CLEAR:LS_TAB.  

89、ENDLOOP.*gv_disrcENDFORM.                    " BUILD_NODE_AND_ITEM_TABLEFRM_RECURSE_SORTFORM FRM_RECURSE_SORT USING   IT_TAB TYPE TT_TAB   &

90、#160;                       IT_TAB2 TYPE TT_TAB                  CHANGING CT_NOD

91、E TYPE TREEV_NTAB                           CT_ITEM TYPE TT_DEMO_ITEM            

92、0;              VALUE(IS_TAB) TYPE TY_TAB.  DATA: LS_TAB  TYPE TY_TAB,        LS_NODE TYPE TREEV_NODE,      &#

93、160; LS_ITEM TYPE TY_DEMO_ITEM.  DATA: LT_TAB  TYPE TT_TAB.*  UPNOD父节点、NXTND下一个同级节点、DWNOD下一级节点、NODID当前节点* 在之前就派寻  IF IS_TAB-DWNOD IS NOT INITIAL. " 如果父节点的子节点不是空* 因为根节点关联了其中一个下级节点,所以直接取下一级节点 

94、   READ TABLE IT_TAB WITH KEY NODID = IS_TAB-DWNOD INTO LS_TAB.    IF LS_TAB-NODID IS NOT INITIAL.      APPEND LS_TAB TO IT_TAB2. " IT_TAB2增加二级节点

95、、三级节点。直到底层    ENDIF.    PERFORM FRM_RECURSE_SORT USING    IT_TAB IT_TAB2                         

96、60;   CHANGING CT_NODE CT_ITEM LS_TAB.* 没有直接下一级节点* 找下一个同级节点    IF IS_TAB-NXTND IS NOT INITIAL.* 有下一级同级节点      READ TABLE IT_TAB WITH KEY NODID = IS_TA

97、B-NXTND INTO LS_TAB.      IF LS_TAB-NODID IS NOT INITIAL.        APPEND LS_TAB TO IT_TAB2. " IT_TAB2增加同级节点      ENDIF.    

98、60; PERFORM FRM_RECURSE_SORT USING    IT_TAB IT_TAB2                               CHANGING CT_NODE&

99、#160;CT_ITEM LS_TAB.    ENDIF.  ELSE. " 如果父节点的子节点是空,也就是最底层的节点* 没有直接下一级节点* 找下一个同级节点    IF IS_TAB-NXTND IS NOT INITIAL.* 有下一级同级节点      READ TABLE IT_TAB WITH

100、 KEY NODID = IS_TAB-NXTND INTO LS_TAB.      IF LS_TAB-NODID IS NOT INITIAL.        APPEND LS_TAB TO IT_TAB2.      ENDIF.  

101、60;   PERFORM FRM_RECURSE_SORT USING    IT_TAB IT_TAB2                               CHANGING&#

102、160;CT_NODE CT_ITEM LS_TAB.    ENDIF.  ENDIF.ENDFORM.                    "Recurse_sortPERFORM FLUSH_TREE当checkbox选中时,联动其他节点的动作FORM FLUSH_TREE

103、0;.  DATA:LT_NODE_KEY_TABLE TYPE TREEV_NKS,      LS_NODE_KEY TYPE TV_NODEKEY.  DATA:LV_YEAR1(4) TYPE C,       LV_MONTH1(2) TYPE C,       LV_

104、YEAR2(4) TYPE C,       LV_MONTH2(2) TYPE C.  DATA:LV_INT1 TYPE I,       LV_INT2 TYPE I.  DATA:LV_RC TYPE C.  DATA: LT_NODE_EX TYPE TREE

105、V_NKS.  REFRESH:LT_NODE_KEY_TABLE.*  CALL METHOD GO_TREE->GET_NODE_KEY_TABLE*    IMPORTING*      NODE_KEY_TABLE = LT_NODE_KEY_TABLE.* 获取key  CALL METHOD GO_TREE->GET_EXPANDED_NODE

106、S    CHANGING      NODE_KEY_TABLE = LT_NODE_EX.  DATA: LS_ITEM TYPE DEMO_ITEM.  LOOP AT GT_ITEM_TAB INTO LS_ITEM.    LS_NODE_KEY = LS_ITEM-NODE_KEY. &

107、#160;  APPEND LS_NODE_KEY TO LT_NODE_KEY_TABLE.  ENDLOOP.  IF LT_NODE_KEY_TABLE IS NOT INITIAL.    CALL METHOD GO_TREE->DELETE_ALL_ITEMS_OF_NODES      EXPORTING  

108、      NODE_KEY_TABLE          = LT_NODE_KEY_TABLE      EXCEPTIONS        ERROR_IN_NODE_KEY_TABLE = 1      

109、;  OTHERS                  = 2.  ENDIF.  CALL METHOD GO_TREE->DELETE_ALL_NODES.  CALL METHOD GO_TREE->ADD_NODES_AND_ITEMS   

110、 EXPORTING      NODE_TABLE                = GT_NODE_TAB      ITEM_TABLE             &

111、#160;  = GT_ITEM_TAB      ITEM_TABLE_STRUCTURE_NAME = 'DEMO_ITEM'.*  IF SY-UNAME <> 'WFTEST05'.*    CALL METHOD GO_TREE->EXPAND_ROOT_NODES*    &#

112、160; EXPORTING*        EXPAND_SUBTREE      = 'X'*        LEVEL_COUNT         = '0'*     &

113、#160;EXCEPTIONS*        ILLEGAL_LEVEL_COUNT = 1*        OTHERS              = 2.*  ENDIF.  CALL METHOD GO

114、_TREE->EXPAND_NODES    EXPORTING      NODE_KEY_TABLE = LT_NODE_EX.*  IF GO_TREE IS NOT INITIAL.*    CALL METHOD GO_TREE->SET_SCREEN_UPDATE*      

115、;EXPORTING*        UPDATE = 'X'.*  ENDIF.ENDFORM.                    " FLUSH_TREEMODULE user_command_0100.MODULE 

116、;user_command_0100 INPUT.  gv_ok = ok_code.  CALL METHOD cl_gui_cfw=>dispatch.  CASE gv_ok.    WHEN 'CANL'."取消      LEAVE TO SCREEN 0.   &#

117、160;WHEN 'OK'.  "确认      PERFORM frm_confirm_data USING gv_regct.    WHEN 'EXPA'."展开      PERFORM frm_expand_node.    WHEN 'C

118、OLL'."折叠      PERFORM frm_collapse_node.    WHEN OTHERS.  ENDCASE.  CLEAR:gv_ok.ENDMODULE.     PERFORM frm_confirm_data FORM FRM_CONFIRM_DATA  USING  &

119、#160; CV_REGCT TYPE ZFINODID.*  DATA:LV_NODE_KEY TYPE TV_NODEKEY.*  IF GO_TREE IS NOT INITIAL.*    "获取所选择的节点*    CALL METHOD GO_TREE->GET_SELECTED_ITEM*    &

120、#160; IMPORTING*        NODE_KEY          = LV_NODE_KEY*       item_name         =*      E

121、XCEPTIONS*        FAILED            = 1*        CNTL_SYSTEM_ERROR = 2*        NO_ITEM_SELECTION =

122、60;3*        OTHERS            = 4.*    IF SY-SUBRC = 0.*      CV_REGCT = LV_NODE_KEY.*    ENDIF.*&#

123、160;   IF CV_REGCT IS NOT INITIAL.  DATA: LS_ITEM TYPE DEMO_ITEM,         LS_NODE TYPE ZFIT1011.  IF GT_ITEM_TAB IS NOT INITIAL.    LOO

124、P AT GT_ITEM_TAB INTO LS_ITEM WHERE CHOSEN = 'X'.      READ TABLE GT_TAB INTO LS_NODE WITH KEY DWNOD = '' NODID = LS_ITEM-NODE_KEY .   

125、;   IF SY-SUBRC = 0 AND LS_NODE-RCFLG <> 'X'.        GS_BUKRS-BUKRS = LS_NODE-BUKRS.        APPEND GS_BUKRS TO GT_BUKRS.  

126、;    ENDIF.    ENDLOOP.  ENDIF.  SORT GT_BUKRS BY BUKRS.  DELETE ADJACENT DUPLICATES FROM GT_BUKRS.  LEAVE TO SCREEN 0.*    ENDIF.*  ENDIF.E

127、NDFORM.         PERFORM frm_expand_node.FORM FRM_EXPAND_NODE .  DATA:LV_NODE_KEY TYPE TV_NODEKEY.  IF GO_TREE IS NOT INITIAL.    "获取所选择的节点    CAL

128、L METHOD GO_TREE->GET_SELECTED_ITEM      IMPORTING        NODE_KEY          = LV_NODE_KEY      EXCEPTIONS    

129、60;   FAILED            = 1        CNTL_SYSTEM_ERROR = 2        NO_ITEM_SELECTION = 3      

130、;  OTHERS            = 4.    IF LV_NODE_KEY IS INITIAL.      MESSAGE TEXT-T01 TYPE 'S'.      RETURN. &

131、#160;  ENDIF.    "展开选定节点及子节点"    CALL METHOD GO_TREE->EXPAND_NODE      EXPORTING        NODE_KEY          &

132、#160; = LV_NODE_KEY*       level_count         =        EXPAND_SUBTREE      = ABAP_TRUE      EXCEPTIONS        FAILED              = 1        ILLEGAL_LEVEL_COUNT = 2      

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论