gh_colunm_tree_第1頁(yè)
gh_colunm_tree_第2頁(yè)
gh_colunm_tree_第3頁(yè)
gh_colunm_tree_第4頁(yè)
gh_colunm_tree_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、COLUMN tree實(shí)例程序?qū)懺诤瘮?shù)里,在F4幫助時(shí)調(diào)用,效果:選擇屏幕定義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'     "讀取全屏幕數(shù)據(jù)    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.*- 獲取數(shù)據(jù)源  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、級(jí)數(shù)據(jù)  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.* 從表中讀出所有打上選擇標(biāo)志的節(jié)點(diǎn)  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.* 找各個(gè)節(jié)點(diǎn)的父親節(jié)點(diǎn)  PERFORM FIND_UP_NODE USING LT_P_TAB CHANGING

27、 P_TV_TAB.* 刪除多余的祖宗節(jié)點(diǎn)*  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.* 思路: 從頂層節(jié)點(diǎn)開(kāi)始,遍歷查找下層節(jié)點(diǎn),如果直接第一個(gè)子節(jié)點(diǎn)沒(méi)有找到,* 就直接找子節(jié)點(diǎn)的下一個(gè)同級(jí)節(jié)點(diǎn),依次知道找到第一個(gè)同級(jí)節(jié)點(diǎn),然后調(diào)整* 指針,然后查找該節(jié)點(diǎn)的子節(jié)點(diǎn),按上面的遞推。  FIELD-SYMBOLS: <FS> TYPE TY_TAB.  DATA: LS_TAB

30、60;TYPE TY_TAB.* 找到頂層節(jié)點(diǎn)  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.* 先找下級(jí)節(jié)點(diǎn)  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 = '請(qǐng)選擇'.  "

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.*- 為T(mén)REE添加節(jié)點(diǎn)  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取項(xiàng)目wbs的遞歸函數(shù)取數(shù)順序CT_NODE用于存儲(chǔ)父級(jí)和子節(jié)點(diǎn)關(guān)系CT_ITEM用于存儲(chǔ)每個(gè)節(jié)點(diǎn)的屬性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*找出根節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)* 找出根節(jié)點(diǎn)的第一個(gè)節(jié)點(diǎn)

67、0; DATA: LS_TAB1 TYPE TY_TAB,        LS_TAB2 TYPE TY_TAB,        LT_TAB2 TYPE TT_TAB.*  UPNOD父節(jié)點(diǎn)、NXTND下一個(gè)同級(jí)節(jié)點(diǎn)、DWNOD下一級(jí)節(jié)點(diǎn)、NODID當(dāng)前節(jié)點(diǎn)  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. " 當(dāng)前節(jié)點(diǎn)有沒(méi)有同名的同級(jí)節(jié)點(diǎn)    IF SY-SUBRC = 0. 

69、60;    CONTINUE. " 跳出本次循環(huán)    ELSE.      LS_TAB2 = LS_TAB1. " 因?yàn)楦父?jié)點(diǎn)只有一個(gè),所以不用append到表里    ENDIF.  ENDLOOP.  IF LS_TAB2-NODID IS NOT INITIAL.&

70、#160;   APPEND LS_TAB2 TO LT_TAB2.  ENDIF." IT_TAB存儲(chǔ)項(xiàng)目wbs結(jié)構(gòu),LT_TAB2目前只有跟節(jié)點(diǎn)  PERFORM FRM_RECURSE_SORT USING    IT_TAB LT_TAB2             

71、60;             CHANGING CT_NODE CT_ITEM LS_TAB2." 將取出來(lái)的WBS項(xiàng)目結(jié)構(gòu)賦值給IT_TAB  CLEAR IT_TAB.  MOVE LT_TAB2 TO IT_TAB.* end add*  "當(dāng)有標(biāo)記時(shí),刪除區(qū)域中心記錄. 

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.  "根節(jié)點(diǎn)  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.    "判斷當(dāng)前層的上一級(jí)是否存在    READ TABLE IT_TAB 

81、WITH KEY NODID = LS_TAB-UPNOD TRANSPORTING NO FIELDS.    IF SY-SUBRC <> 0.      CONTINUE.    ENDIF.    "判斷當(dāng)前層的下一級(jí)是否存在    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.*<-構(gòu)建節(jié)點(diǎn)信息表->    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父節(jié)點(diǎn)、NXTND下一個(gè)同級(jí)節(jié)點(diǎn)、DWNOD下一級(jí)節(jié)點(diǎn)、NODID當(dāng)前節(jié)點(diǎn)* 在之前就派尋  IF IS_TAB-DWNOD IS NOT INITIAL. " 如果父節(jié)點(diǎn)的子節(jié)點(diǎn)不是空* 因?yàn)楦?jié)點(diǎn)關(guān)聯(lián)了其中一個(gè)下級(jí)節(jié)點(diǎn),所以直接取下一級(jí)節(jié)點(diǎn) 

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增加二級(jí)節(jié)點(diǎn)

95、、三級(jí)節(jié)點(diǎn)。直到底層    ENDIF.    PERFORM FRM_RECURSE_SORT USING    IT_TAB IT_TAB2                         

96、60;   CHANGING CT_NODE CT_ITEM LS_TAB.* 沒(méi)有直接下一級(jí)節(jié)點(diǎn)* 找下一個(gè)同級(jí)節(jié)點(diǎn)    IF IS_TAB-NXTND IS NOT INITIAL.* 有下一級(jí)同級(jí)節(jié)點(diǎn)      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增加同級(jí)節(jié)點(diǎn)      ENDIF.    

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

99、#160;CT_ITEM LS_TAB.    ENDIF.  ELSE. " 如果父節(jié)點(diǎn)的子節(jié)點(diǎn)是空,也就是最底層的節(jié)點(diǎn)* 沒(méi)有直接下一級(jí)節(jié)點(diǎn)* 找下一個(gè)同級(jí)節(jié)點(diǎn)    IF IS_TAB-NXTND IS NOT INITIAL.* 有下一級(jí)同級(jí)節(jié)點(diǎn)      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當(dāng)checkbox選中時(shí),聯(lián)動(dòng)其他節(jié)點(diǎn)的動(dòng)作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'.  "確認(rèn)      PERFORM frm_confirm_data USING gv_regct.    WHEN 'EXPA'."展開(kāi)      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.*    "獲取所選擇的節(jié)點(diǎn)*    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.    "獲取所選擇的節(jié)點(diǎn)    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.    "展開(kāi)選定節(jié)點(diǎn)及子節(jié)點(diǎn)"    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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論