abap tree control demo
来源:互联网 发布:淘宝买家具靠谱吗 编辑:程序博客网 时间:2024/06/05 14:46
最终效果图
代码:
REPORT ZTEST_HSS3.INCLUDE ZTEST_HSS3_DATA.INCLUDE ZTEST_HSS3_FRM.INCLUDE ZTEST_HSS3_PBO.INCLUDE ZTEST_HSS3_PAI.INITIALIZATION.*START-OF-SELECTION. CREATE OBJECT G_APPLICATION. CALL SCREEN 100.
ZTEST_HSS3_DATA的代码:
*&---------------------------------------------------------------------**& 包含 ZTEST_HSS3_DATA*&---------------------------------------------------------------------*TABLES:T001.DATA: BEGIN OF GT_MARA OCCURS 0, ICON LIKE ICON-ID, "状态指示灯****超链接字段 LINK_NAME(20). INCLUDE STRUCTURE MARA.DATA: END OF GT_MARA.DATA IT_T137 TYPE TABLE OF T137 WITH HEADER LINE.DATA DYNNR TYPE SY-DYNNR VALUE '0200'.DATA ALV_CONT TYPE REF TO CL_GUI_CUSTOM_CONTAINER.*FIELD-SYMBOLS <FS_MARA> TYPE GT_MARA.*DATA : GT_MARA LIKE TABLE OF MARA WITH HEADER LINE.DATA: IT_MARA LIKE LINE OF GT_MARA.DATA: G_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER, G_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER, G_CONTAINER TYPE REF TO CL_GUI_CONTAINER, G_CONTAINER1 TYPE REF TO CL_GUI_CONTAINER, G_GRID TYPE REF TO CL_GUI_ALV_GRID.DATA: GT_FIELDCAT TYPE LVC_T_FCAT WITH HEADER LINE, GS_LAYOUT TYPE LVC_S_LAYO.DATA:TAB1 TYPE TABLE OF SVAL, TAB LIKE LINE OF TAB1.DATA: CODE TYPE C.DATA LT_DDVAL TYPE LVC_T_DRAL WITH HEADER LINE.DATA TT_FIELDCAT TYPE LVC_T_FCAT.DATA WA_FIELDCAT LIKE LINE OF TT_FIELDCAT.DATA L_POS TYPE I.DATA: GT_SFLIGHT TYPE SFLIGHT OCCURS 0, "Output-Table GT_FIELDCATALOG TYPE LVC_T_FCAT, "Fieldcatalog GT_SORT TYPE LVC_T_SORT, "Sortiertabelle OK_CODE LIKE SY-UCOMM. "OK-CodeCLASS CL_GUI_COLUMN_TREE DEFINITION LOAD.CLASS CL_GUI_CFW DEFINITION LOAD.DATA: LS_VARIANT TYPE DISVARIANT.DATA TREE1 TYPE REF TO CL_GUI_ALV_TREE_SIMPLE.DATA: LT_LIST_COMMENTARY TYPE SLIS_T_LISTHEADER, L_LOGO TYPE SDYDO_VALUE.INCLUDE <ICON>.INCLUDE BCALV_SIMPLE_EVENT_RECEIVER."==========HTTP超链接DATA: LS_HYPE TYPE LVC_S_HYPE, LT_HYPE TYPE LVC_T_HYPE . "网址映射关系表,在具体链接到哪个网址就是根据 handle 中设定的值来获取的CLASS EVENT_RECEIVER DEFINITION. PUBLIC SECTION. METHODS:****热点 HANDLE_HOTSPOT FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,****双击 HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING SENDER E_ROW E_COLUMN ES_ROW_NO,******工具栏 HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT E_INTERACTIVE,****用户自定义命令 HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM,*****f4功能 ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID IMPORTING E_FIELDNAME E_FIELDVALUE ES_ROW_NO ER_EVENT_DATA ET_BAD_CELLS E_DISPLAY,*****数据改变 HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID IMPORTING ER_DATA_CHANGED E_ONF4 E_ONF4_BEFORE E_ONF4_AFTER E_UCOMM,****菜单按钮 HANDLE_MENU_BUTTON FOR EVENT MENU_BUTTON OF CL_GUI_ALV_GRID IMPORTING E_OBJECT E_UCOMM.ENDCLASS.CLASS EVENT_RECEIVER IMPLEMENTATION. METHOD HANDLE_HOTSPOT.* MESSAGE S001(00) WITH '热点连接' DISPLAY LIKE 'S'.****跳转到 物料详细信息 PERFORM FRM_MATNRINFO USING E_ROW_ID. ENDMETHOD. METHOD HANDLE_DOUBLE_CLICK. IF E_COLUMN = 'BSTME'. DATA VAL(30). CALL METHOD SENDER->GET_CURRENT_CELL IMPORTING E_VALUE = VAL. MESSAGE I001(00) WITH VAL. ENDIF. ENDMETHOD. METHOD HANDLE_TOOLBAR. PERFORM FRM_GETTOOLBAR USING E_OBJECT E_INTERACTIVE. ENDMETHOD. METHOD HANDLE_USER_COMMAND. ENDMETHOD. METHOD ON_F4.* MESSAGE S001(00) WITH 'F4' DISPLAY LIKE 'S'. SELECT MBRSH BRARE BBREF FLREF INTO CORRESPONDING FIELDS OF TABLE IT_T137 FROM T137. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING* DDIC_STRUCTURE = ' ' RETFIELD = 'MBRSH'* PVALKEY = ' ' DYNPPROG = SY-REPID "返回才程序 DYNPNR = SY-DYNNR "屏幕 DYNPROFIELD = 'MBRSH' "往页面回填值的地方* STEPL = 0* WINDOW_TITLE =* VALUE = ' ' VALUE_ORG = 'S'* MULTIPLE_CHOICE = ' '* DISPLAY = ' '* CALLBACK_PROGRAM = ' '* CALLBACK_FORM = ' '* CALLBACK_METHOD =* MARK_TAB =* IMPORTING* USER_RESET = TABLES VALUE_TAB = IT_T137[]* FIELD_TAB =* RETURN_TAB =* DYNPFLD_MAPPING =* EXCEPTIONS* PARAMETER_ERROR = 1* NO_VALUES_FOUND = 2* OTHERS = 3 . IF SY-SUBRC <> 0.* Implement suitable error handling here ENDIF. ENDMETHOD. METHOD HANDLE_DATA_CHANGED. ENDMETHOD. METHOD HANDLE_MENU_BUTTON. ENDMETHOD.ENDCLASS.DATA G_RECEIVER TYPE REF TO EVENT_RECEIVER.DATA: WA_CONTAINER TYPE SCRFNAME VALUE 'TREE', WA_CONTAINERALV TYPE SCRFNAME VALUE 'ALV', WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER, WA_CUSTOM_CONTAINERALV TYPE REF TO CL_GUI_CUSTOM_CONTAINER, WA_TREE TYPE REF TO CL_GUI_SIMPLE_TREE, WA_ALV TYPE REF TO CL_GUI_ALV_GRID.DATA: NODE_TABLE LIKE TABLE OF MTREESNODE, NODE_TABLE1 LIKE TABLE OF MTREESNODE, NODE1 TYPE MTREESNODE, NODE2 LIKE TABLE OF MTREESNODE WITH HEADER LINE, NODE3 LIKE TABLE OF MTREESNODE WITH HEADER LINE.*DATA WA_SPFLI TYPE TABLE OF SPFLI WITH HEADER LINE.*DATA WA_SFLIGHT TYPE TABLE OF SFLIGHT.DATA: WA_ZTREE TYPE TABLE OF ZTREE WITH HEADER LINE, IT_ZTREE TYPE TABLE OF ZTREE, TY_ZTREE TYPE ZTREE.DATA: NODEKEY(200) VALUE 'NODE', NODETEXT(200) VALUE 'NODE'.CLASS LCL_APPLICATION DEFINITION DEFERRED.DATA EVENT_RECEIVER TYPE REF TO LCL_APPLICATION.CLASS LCL_APPLICATION DEFINITION. PUBLIC SECTION. METHODS: HANDLE_NODE_DOUBLE_CLICK FOR EVENT NODE_DOUBLE_CLICK OF CL_GUI_SIMPLE_TREE IMPORTING NODE_KEY, HANDLE_NODE_CONTEXT_MENU_REQ FOR EVENT NODE_CONTEXT_MENU_REQUEST OF CL_GUI_SIMPLE_TREE IMPORTING NODE_KEY MENU,***右键菜单选择之后的功能 HANDLE_NODE_CONTEXT_MENU_SEL FOR EVENT NODE_CONTEXT_MENU_SELECT OF CL_GUI_SIMPLE_TREE IMPORTING NODE_KEY FCODE.* HANDLE_EXPAND_NO_CHILDREN* FOR EVENT EXPAND_NO_CHILDREN OF CL_GUI_SIMPLE_TREE.ENDCLASS.CLASS LCL_APPLICATION IMPLEMENTATION. METHOD HANDLE_NODE_DOUBLE_CLICK. CASE NODE_KEY. WHEN '1000'. DYNNR = '200'. WHEN OTHERS. DYNNR = '300'. ENDCASE. ENDMETHOD. METHOD HANDLE_NODE_CONTEXT_MENU_REQ. CALL METHOD MENU->ADD_FUNCTION EXPORTING TEXT = '增加本级节点' FCODE = 'CODE1'. CALL METHOD MENU->ADD_FUNCTION EXPORTING TEXT = '增加子节点' FCODE = 'CODE2'. CALL METHOD MENU->ADD_FUNCTION EXPORTING TEXT = '修改当前节点' FCODE = 'CODE3'. CALL METHOD MENU->ADD_FUNCTION EXPORTING TEXT = '删除当前节点' FCODE = 'CODE4'. ENDMETHOD. METHOD HANDLE_NODE_CONTEXT_MENU_SEL. CLEAR: TAB,TAB1[],NODE2[],TY_ZTREE. READ TABLE NODE_TABLE INTO NODE2 WITH KEY NODE_KEY = NODE_KEY. IF SY-SUBRC EQ 0. IF FCODE NE 'CODE4'. IF FCODE NE 'CODE3'. TAB-TABNAME = 'ZTREE'. TAB-FIELDNAME = 'TREEID'. APPEND TAB TO TAB1 . TAB-TABNAME = 'ZTREE'. TAB-FIELDNAME = 'TREENAME'. APPEND TAB TO TAB1 . "弹出填写数据的框 CALL FUNCTION 'POPUP_GET_VALUES_USER_HELP' EXPORTING POPUP_TITLE = '增加节点' PROGRAMNAME = 'ZTEST_HSS3' FORMNAME = 'ADDFORM' IMPORTING RETURNCODE = CODE TABLES FIELDS = TAB1. IF SY-SUBRC = 0 AND CODE NE 'A'. READ TABLE NODE3 INDEX 1 TRANSPORTING NO FIELDS. IF FCODE EQ 'CODE1'. NODE1-RELATKEY = NODE2-RELATKEY. ELSEIF FCODE EQ 'CODE2'. NODE1-RELATKEY = NODE_KEY. ENDIF. NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. NODE1-HIDDEN = ''. NODE1-DISABLED = ''. NODE1-ISFOLDER = 'X'.* NODE1-N_IMAGE = '@5B@'.* NODE1-EXP_IMAGE = '@5B@'. CLEAR NODE1-EXPANDER. NODE1-NODE_KEY = NODE3-NODE_KEY. NODE1-TEXT = NODE3-TEXT. APPEND NODE1 TO NODE_TABLE. APPEND NODE1 TO NODE_TABLE1. CALL METHOD WA_TREE->ADD_NODES EXPORTING TABLE_STRUCTURE_NAME = 'MTREESNODE' NODE_TABLE = NODE_TABLE1. IF SY-SUBRC <> 0. ENDIF. CLEAR: TY_ZTREE,IT_ZTREE[]. TY_ZTREE-TREEID = NODE1-NODE_KEY. TY_ZTREE-TREENAME = NODE1-TEXT. TY_ZTREE-PARENTID = NODE1-RELATKEY. APPEND TY_ZTREE TO IT_ZTREE. INSERT ZTREE FROM TABLE IT_ZTREE. CLEAR: NODE1,NODE3. ENDIF. ELSE. TAB-TABNAME = 'ZTREE'. TAB-FIELDNAME = 'TREENAME'. TAB-VALUE = NODE2-TEXT. APPEND TAB TO TAB1 . "弹出填写数据的框 CALL FUNCTION 'POPUP_GET_VALUES_USER_HELP' EXPORTING POPUP_TITLE = '修改节点' PROGRAMNAME = 'ZTEST_HSS3' FORMNAME = 'UPDATEFORM' IMPORTING RETURNCODE = CODE TABLES FIELDS = TAB1. IF SY-SUBRC = 0 AND CODE NE 'A'. READ TABLE NODE3 INDEX 1 TRANSPORTING NO FIELDS.* NODE1-TEXT = NODE3-TEXT.* NODE1-NODE_KEY = NODE_KEY. CALL METHOD WA_TREE->NODE_SET_TEXT EXPORTING NODE_KEY = NODE_KEY TEXT = NODE3-TEXT. IF SY-SUBRC <> 0. ENDIF. CLEAR: TY_ZTREE,IT_ZTREE[]. TY_ZTREE-TREEID = NODE_KEY. TY_ZTREE-TREENAME = NODE3-TEXT. TY_ZTREE-PARENTID = NODE2-RELATKEY. APPEND TY_ZTREE TO IT_ZTREE. UPDATE ZTREE FROM TABLE IT_ZTREE. CLEAR: NODE3. ENDIF. ENDIF. ELSE. CALL METHOD WA_TREE->DELETE_NODE EXPORTING NODE_KEY = NODE_KEY. DELETE NODE_TABLE WHERE NODE_KEY = NODE_KEY. TY_ZTREE-TREEID = NODE_KEY.* APPEND TY_ZTREE TO IT_ZTREE. DELETE ZTREE FROM TY_ZTREE. ENDIF. ENDIF. ENDMETHOD.ENDCLASS.DATA G_APPLICATION TYPE REF TO LCL_APPLICATION.
ZTEST_HSS3_FRM的代码:
*&---------------------------------------------------------------------**& 包含 ZTEST_HSS3_FRM*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Form FRM_ALV_FCAT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_ALV_FCAT . CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'ICON'. GT_FIELDCAT-COLTEXT = '指示灯'. GT_FIELDCAT-ICON = 'X'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'MATNR'. GT_FIELDCAT-COLTEXT = '物料号'. GT_FIELDCAT-HOTSPOT = 'X'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'MTART'. GT_FIELDCAT-COLTEXT = '物料类型'. GT_FIELDCAT-REF_FIELD = 'MTART'. GT_FIELDCAT-REF_TABLE = 'MARA'. GT_FIELDCAT-EDIT = 'X'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'MBRSH'. GT_FIELDCAT-COLTEXT = '行业类型'. GT_FIELDCAT-F4AVAILABL = 'X'. GT_FIELDCAT-EDIT = 'X'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'MATKL'. GT_FIELDCAT-COLTEXT = '物料组'. GT_FIELDCAT-WEB_FIELD = 'LINK_NAME'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'MEINS'. GT_FIELDCAT-COLTEXT = '基本计量单位'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'BSTME'. GT_FIELDCAT-COLTEXT = '订单单位'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'WRKST'. GT_FIELDCAT-COLTEXT = '基本物料'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'SPART'. GT_FIELDCAT-COLTEXT = '产品组'. GT_FIELDCAT-DRDN_HNDL = '1'. "下拉栏设置* GT_FIELDCAT-DRDN_FIELD = 'DROP_DOWN' . GT_FIELDCAT-DRDN_ALIAS = 'X'. APPEND GT_FIELDCAT. CLEAR GT_FIELDCAT. GT_FIELDCAT-FIELDNAME = 'LABOR'. GT_FIELDCAT-COLTEXT = '实验室/设计室 '. APPEND GT_FIELDCAT.* CLEAR GT_FIELDCAT.* GT_FIELDCAT-FIELDNAME = 'LVORM'.* GT_FIELDCAT-COLTEXT = '删除标记'.* APPEND GT_FIELDCAT. PERFORM FRM_DRDN_HNDL.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_DIAPLAY_ALV*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_DIAPLAY_ALV . GS_LAYOUT-ZEBRA = 'X'. GS_LAYOUT-CWIDTH_OPT = 'X'. GS_LAYOUT-SEL_MODE = 'D'. CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY EXPORTING* I_BUFFER_ACTIVE =* I_BYPASSING_BUFFER =* I_CONSISTENCY_CHECK =* I_STRUCTURE_NAME =* IS_VARIANT =* I_SAVE =* I_DEFAULT = 'X' IS_LAYOUT = GS_LAYOUT* IS_PRINT =* IT_SPECIAL_GROUPS =* IT_TOOLBAR_EXCLUDING = IT_HYPERLINK = LT_HYPE* IT_ALV_GRAPHICS =* IT_EXCEPT_QINFO =* IR_SALV_ADAPTER = CHANGING IT_OUTTAB = GT_MARA[] IT_FIELDCATALOG = GT_FIELDCAT[]* IT_SORT =* IT_FILTER =* EXCEPTIONS* INVALID_PARAMETER_COMBINATION = 1* PROGRAM_ERROR = 2* TOO_MANY_LINES = 3* OTHERS = 4 . IF SY-SUBRC <> 0.* Implement suitable error handling here ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_GETDATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_GETDATA . SELECT MATNR MTART MATKL BSTME WRKST SPART LVORM MBRSH MEINS LABOR UP TO 20 ROWS INTO CORRESPONDING FIELDS OF TABLE GT_MARA FROM MARA ORDER BY LVORM DESCENDING. GT_MARA-MATNR = '111111111'. GT_MARA-MTART = 'ZB05'. GT_MARA-MATKL = '20201'. GT_MARA-BSTME = ''. GT_MARA-WRKST = ''. GT_MARA-SPART = '01'. GT_MARA-LVORM = 'X'. GT_MARA-LINK_NAME = '1'. APPEND GT_MARA. CLEAR GT_MARA. LS_HYPE-HANDLE = 1 ."相当于HashMap中的Key LS_HYPE-HREF = 'http://www.baidu.com' ."相当于HashMap中的Value APPEND LS_HYPE TO LT_HYPE .* ICON LOOP AT GT_MARA. IF GT_MARA-LVORM EQ 'X'. GT_MARA-ICON = '@0A@'. ELSE. GT_MARA-ICON = '@08@'. ENDIF. MODIFY GT_MARA. CLEAR GT_MARA. ENDLOOP.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_MATNRINFO*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_E_ROW_ID text*----------------------------------------------------------------------*FORM FRM_MATNRINFO USING P_E_ROW_ID TYPE LVC_S_ROW. READ TABLE GT_MARA INDEX P_E_ROW_ID INTO IT_MARA. IF SY-SUBRC = 0. SET PARAMETER ID 'MAT' FIELD IT_MARA-MATNR. CALL TRANSACTION 'MM03' AND SKIP FIRST SCREEN. CLEAR IT_MARA. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_DRDN_HNDL*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_DRDN_HNDL . CLEAR LT_DDVAL. LT_DDVAL-HANDLE = '1'. LT_DDVAL-INT_VALUE = '01'. LT_DDVAL-VALUE = '产品组'. APPEND LT_DDVAL. CLEAR LT_DDVAL. LT_DDVAL-HANDLE = '1'. LT_DDVAL-INT_VALUE = 'Z1'. LT_DDVAL-VALUE = '铸钢泵'. APPEND LT_DDVAL. CLEAR LT_DDVAL. LT_DDVAL-HANDLE = '1'. LT_DDVAL-INT_VALUE = 'Z2'. LT_DDVAL-VALUE = '增压泵'. APPEND LT_DDVAL. CALL METHOD G_GRID->SET_DROP_DOWN_TABLE EXPORTING IT_DROP_DOWN_ALIAS = LT_DDVAL[].ENDFORM.*&---------------------------------------------------------------------**& Form FRM_GETTOOLBAR*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_E_OBJECT text* -->P_E_INTERACTIVE text*----------------------------------------------------------------------*FORM FRM_GETTOOLBAR USING P_E_OBJECT TYPE REF TO CL_ALV_EVENT_TOOLBAR_SET P_E_INTERACTIVE TYPE CHAR01.ENDFORM.*&---------------------------------------------------------------------**& Form FRM_REGISTERF4*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_REGISTERF4 . DATA: LT_F4 TYPE LVC_T_F4, LS_F4 TYPE LVC_S_F4. LS_F4-FIELDNAME = 'MBRSH'. LS_F4-REGISTER = 'X'. APPEND LS_F4 TO LT_F4. CALL METHOD G_GRID->REGISTER_F4_FOR_FIELDS EXPORTING IT_F4 = LT_F4.ENDFORM.FORM BUILD_FIELDCATALOG.* get fieldcatalog CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' EXPORTING I_STRUCTURE_NAME = 'SFLIGHT' CHANGING CT_FIELDCAT = GT_FIELDCATALOG.* change fieldcatalog DATA: LS_FIELDCATALOG TYPE LVC_S_FCAT. LOOP AT GT_FIELDCATALOG INTO LS_FIELDCATALOG. CASE LS_FIELDCATALOG-FIELDNAME. WHEN 'CARRID' OR 'CONNID' OR 'FLDATE'. LS_FIELDCATALOG-NO_OUT = 'X'. LS_FIELDCATALOG-KEY = ''. WHEN 'PRICE' OR 'SEATSOCC' OR 'SEATSMAX' OR 'PAYMENTSUM'. LS_FIELDCATALOG-DO_SUM = 'X'. ENDCASE. MODIFY GT_FIELDCATALOG FROM LS_FIELDCATALOG. ENDLOOP.ENDFORM.FORM BUILD_OUTTAB. SELECT * FROM SFLIGHT INTO TABLE GT_SFLIGHT.ENDFORM.FORM BUILD_SORT_TABLE. DATA LS_SORT_WA TYPE LVC_S_SORT.* create sort-table LS_SORT_WA-SPOS = 1. LS_SORT_WA-FIELDNAME = 'CARRID'. LS_SORT_WA-UP = 'X'. LS_SORT_WA-SUBTOT = 'X'. APPEND LS_SORT_WA TO GT_SORT. LS_SORT_WA-SPOS = 2. LS_SORT_WA-FIELDNAME = 'CONNID'. LS_SORT_WA-UP = 'X'. LS_SORT_WA-SUBTOT = 'X'. APPEND LS_SORT_WA TO GT_SORT. LS_SORT_WA-SPOS = 3. LS_SORT_WA-FIELDNAME = 'FLDATE'. LS_SORT_WA-UP = 'X'. APPEND LS_SORT_WA TO GT_SORT.ENDFORM. " BUILD_SORT_TABLE*&---------------------------------------------------------------------**& Form FRM_INITIAL*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FRM_INITIAL . DATA: EVENTS TYPE CNTL_SIMPLE_EVENTS, EVENT1 TYPE CNTL_SIMPLE_EVENT. SELECT * INTO TABLE WA_ZTREE FROM ZTREE ORDER BY TREEID PARENTID ASCENDING.*****第一步创建最大的显示屏幕容器 IF G_DOCKING IS INITIAL. CREATE OBJECT G_DOCKING EXPORTING* PARENT = REPID = SY-REPID DYNNR = '0100' SIDE = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT EXTENSION = 300 "全屏设置* STYLE =* LIFETIME = lifetime_default* CAPTION =* METRIC = 0* RATIO =* NO_AUTODEF_PROGID_DYNNR =* 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 WA_TREE EXPORTING PARENT = G_DOCKING NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE EXCEPTIONS LIFETIME_ERROR = 1 CNTL_SYSTEM_ERROR = 2 CREATE_ERROR = 3 FAILED = 4 ILLEGAL_NODE_SELECTION_MODE = 5. IF SY-SUBRC <> 0. ENDIF. DATA: PARENTID LIKE ZTREE-PARENTID. DATA:STR1(255).*定义双击事件 EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK. EVENT1-APPL_EVENT = 'X'. APPEND EVENT1 TO EVENTS.***右键菜单功能 EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_CONTEXT_MENU_REQ. EVENT1-APPL_EVENT = ''. APPEND EVENT1 TO EVENTS. EVENT1-EVENTID = CL_GUI_SIMPLE_TREE=>EVENTID_EXPAND_NO_CHILDREN. EVENT1-APPL_EVENT = ''. APPEND EVENT1 TO EVENTS. CALL METHOD WA_TREE->SET_CTX_MENU_SELECT_EVENT_APPL EXPORTING APPL_EVENT = 'X'. CALL METHOD WA_TREE->SET_REGISTERED_EVENTS EXPORTING EVENTS = EVENTS. IF SY-SUBRC <> 0. ENDIF.**将已定义的双击事件分配至树对象 SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR WA_TREE. SET HANDLER G_APPLICATION->HANDLE_NODE_CONTEXT_MENU_REQ FOR WA_TREE. SET HANDLER G_APPLICATION->HANDLE_NODE_CONTEXT_MENU_SEL FOR WA_TREE. LOOP AT WA_ZTREE. CLEAR NODE1. IF WA_ZTREE-PARENTID IS INITIAL. NODE1-NODE_KEY = WA_ZTREE-TREEID.*第一层 CLEAR NODE1-RELATKEY. CLEAR NODE1-RELATSHIP.*是文件夹 NODE1-HIDDEN = ''. NODE1-DISABLED = ''. NODE1-ISFOLDER = 'X'.*不带ICON CLEAR NODE1-N_IMAGE. CLEAR NODE1-EXP_IMAGE. CLEAR NODE1-EXPANDER. NODE1-TEXT = WA_ZTREE-TREENAME. APPEND NODE1 TO NODE_TABLE. ELSE. NODE1-RELATKEY = WA_ZTREE-PARENTID. NODE1-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD. NODE1-HIDDEN = ''. NODE1-DISABLED = ''. NODE1-ISFOLDER = 'X'.* NODE1-N_IMAGE = '@5B@'.* NODE1-EXP_IMAGE = '@5B@'. CLEAR NODE1-EXPANDER. NODE1-NODE_KEY = WA_ZTREE-TREEID. NODE1-TEXT = WA_ZTREE-TREENAME. APPEND NODE1 TO NODE_TABLE. ENDIF. ENDLOOP.*按照节点内容添加节点 CALL METHOD WA_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. ENDIF. ENDIF.ENDFORM.*&---------------------------------------------------------------------**& Module STATUS_0300 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE STATUS_0300 OUTPUT. IF ALV_CONT IS INITIAL. CREATE OBJECT ALV_CONT EXPORTING CONTAINER_NAME = 'ALV'. CREATE OBJECT G_GRID EXPORTING* I_SHELLSTYLE = 0* I_LIFETIME = I_PARENT = ALV_CONT* I_APPL_EVENTS = space* I_PARENTDBG =* I_APPLOGPARENT =* I_GRAPHICSPARENT =* I_NAME =* I_FCAT_COMPLETE = SPACE* EXCEPTIONS* ERROR_CNTL_CREATE = 1* ERROR_CNTL_INIT = 2* ERROR_CNTL_LINK = 3* ERROR_DP_CREATE = 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 G_RECEIVER. SET HANDLER: G_RECEIVER->HANDLE_HOTSPOT FOR ALL INSTANCES, G_RECEIVER->HANDLE_DOUBLE_CLICK FOR ALL INSTANCES, G_RECEIVER->ON_F4 FOR ALL INSTANCES. PERFORM FRM_REGISTERF4. PERFORM FRM_GETDATA. PERFORM FRM_ALV_FCAT. PERFORM FRM_DIAPLAY_ALV. ENDIF.ENDMODULE.FORM ADDFORM TABLES FIELDS STRUCTURE SVAL CHANGING ERROR STRUCTURE SVALE. CLEAR: NODE3,NODE3[]. LOOP AT FIELDS WHERE FIELDNAME = 'TREEID'. READ TABLE NODE_TABLE WITH KEY NODE_KEY = FIELDS-VALUE INTO NODE3. IF SY-SUBRC EQ 0. MESSAGE E208(00) WITH '键值重复!'. LEAVE PROGRAM. ELSE. CLEAR: NODE3,NODE3[],FIELDS. LOOP AT FIELDS. IF FIELDS-FIELDNAME = 'TREEID'. NODE3-NODE_KEY = FIELDS-VALUE. ELSEIF FIELDS-FIELDNAME = 'TREENAME'. NODE3-TEXT = FIELDS-VALUE. ENDIF. ENDLOOP. APPEND NODE3. ENDIF. CLEAR FIELDS. ENDLOOP.ENDFORM.FORM UPDATEFORM TABLES FIELDS STRUCTURE SVAL CHANGING ERROR STRUCTURE SVALE. CLEAR: NODE3,NODE3[]. READ TABLE FIELDS INDEX 1. READ TABLE NODE_TABLE WITH KEY NODE_KEY = FIELDS-VALUE INTO NODE3. NODE3-TEXT = FIELDS-VALUE. APPEND NODE3. CLEAR FIELDS.ENDFORM.
ZTEST_HSS3_PBO的代码:
*&---------------------------------------------------------------------**& 包含 ZTEST_HSS3_PBO*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Module STATUS_0100 OUTPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE STATUS_0100 OUTPUT. SET PF-STATUS '100'.* SET TITLEBAR 'xxx'. PERFORM FRM_INITIAL.ENDMODULE.
ZTEST_HSS3_PAI的代码:
*&---------------------------------------------------------------------**& 包含 ZTEST_HSS3_PAI*&---------------------------------------------------------------------**&---------------------------------------------------------------------**& Module USER_COMMAND_0100 INPUT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*MODULE USER_COMMAND_0100 INPUT. CASE SY-UCOMM. WHEN 'BACK' OR 'CANCEL' OR 'EXIT'. LEAVE TO SCREEN 0. ENDCASE.ENDMODULE.
屏幕100的代码:
PROCESS BEFORE OUTPUT. MODULE STATUS_0100.call SUBSCREEN: sub1 INCLUDING sy-REPID DYNNR.PROCESS AFTER INPUT. MODULE USER_COMMAND_0100.
100屏幕元素:
屏幕200元素:
屏幕300元素:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0300.
*
PROCESS AFTER INPUT.
* MODULE USER_COMMAND_0300.
0 0
- abap tree control demo
- ABAP Tree Control的使用
- 【ABAP】ALV Tree demo(WBS元素分层显示)
- ABAP-Demo
- ABAP OO Control
- abap:文本框TextEdit Control
- ABAP table control
- ABAP table control
- TREE CONTROL
- tree control
- ABAP demo 程序
- 二 ABAP语法Demo
- SAP DEMO-ABAP Objects
- TREE demo
- ABAP中的Table Control编程
- ABAP中的Table Control编程
- ABAP 中 Table Control例子
- ABAP中的Table Control编程
- 遇到的App上传到App Store时报错的疑难杂症(一)——ipa包中的Info.plist文件中没有CFBundleVersion的key
- 使用UIWebView时objective-c与javascript互相调用 1
- ubuntu中gitlab安装
- 全局多项式插值法的工作原理
- 【华为OJ】迷宫问题
- abap tree control demo
- 安卓开发,各类问题综
- 论文精读 Learning to Refine Object Segments
- 缓存
- boost之路 八 进程间通讯
- SQLServer中char、varchar、nchar、nvarchar的区别:
- 关于jsp html标签的判断问题 if else 功能
- 关于required 修饰符
- linux非阻塞函数设置