1.  


  1. *&---------------------------------------------------------------------*

  2. *& Include SIMPLE_TREE_CONTROL_DEMOTOP *
  3. *& *
  4. *&---------------------------------------------------------------------*
  5.  
  6. REPORT SAPSIMPLE_TREE_CONTROL_DEMO MESSAGE-ID TREE_CONTROL_MSG.
  7.  
  8. CLASS LCL_APPLICATION DEFINITION DEFERRED.
  9. CLASS CL_GUI_CFW DEFINITION LOAD.
  10.  
  11. TYPES: NODE_TABLE_TYPE LIKE STANDARD TABLE OF MTREESNODE
  12. WITH DEFAULT KEY.
  13. * CAUTION: MTREESNODE is the name of the node structure which must
  14. * be defined by the programmer. DO NOT USE MTREESNODE!
  15.  
  16. DATA: G_APPLICATION TYPE REF TO LCL_APPLICATION,
  17. G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
  18. G_TREE TYPE REF TO CL_GUI_SIMPLE_TREE,
  19. G_OK_CODE TYPE SY-UCOMM.
  20.  
  21. * Fields on Dynpro 100
  22. DATA: G_EVENT(30),
  23. G_NODE_KEY TYPE TV_NODEKEY.
  24.  
  25. CONSTANTS:
  26. BEGIN OF c_nodekey,
  27. root type tv_nodekey value 'Root', "#EC NOTEXT
  28. child1 TYPE tv_nodekey VALUE 'Child1', "#EC NOTEXT
  29. * child2 type tv_nodekey value 'Child2', "#EC NOTEXT
  30. new1 TYPE tv_nodekey VALUE 'New1', "#EC NOTEXT
  31. new2 TYPE tv_nodekey VALUE 'New2', "#EC NOTEXT
  32. * new3 type tv_nodekey value 'New3', "#EC NOTEXT
  33. * new4 type tv_nodekey value 'New4', "#EC NOTEXT
  34. END OF c_nodekey.
  35.  
  36. *** INCLUDE SIMPLE_TREE_CONTROL_DEMOTOP
  1. *----------------------------------------------------------------------*
  2. * INCLUDE SIMPLE_TREE_CONTROL_DEMOCL1 *
  3. *----------------------------------------------------------------------*
  4.  
  5. CLASS LCL_APPLICATION DEFINITION.
  6.  
  7. PUBLIC SECTION.
  8. METHODS:
  9. HANDLE_NODE_DOUBLE_CLICK
  10. FOR EVENT NODE_DOUBLE_CLICK
  11. OF CL_GUI_SIMPLE_TREE
  12. IMPORTING NODE_KEY,
  13. HANDLE_EXPAND_NO_CHILDREN
  14. FOR EVENT EXPAND_NO_CHILDREN
  15. OF CL_GUI_SIMPLE_TREE
  16. IMPORTING NODE_KEY.
  17. ENDCLASS.
  18.  
  19. CLASS LCL_APPLICATION IMPLEMENTATION.
  20.  
  21. METHOD HANDLE_NODE_DOUBLE_CLICK.
  22. " this method handles the node double click event of the tree
  23. " control instance
  24.  
  25. " show the key of the double clicked node in a dynpro field
  26. G_EVENT = 'NODE_DOUBLE_CLICK'.
  27. G_NODE_KEY = NODE_KEY.
  28. ENDMETHOD.
  29.  
  30. METHOD HANDLE_EXPAND_NO_CHILDREN.
  31. " this method handles the expand no children event of the tree
  32. " control instance
  33. DATA: NODE_TABLE TYPE NODE_TABLE_TYPE,
  34. NODE TYPE MTREESNODE.
  35.  
  36. " show the key of the double clicked node in a dynpro field
  37. G_EVENT = 'EXPAND_NO_CHILDREN'.
  38. G_NODE_KEY = NODE_KEY.
  39.  
  40. if node_key = 'Child1'.
  41. * add two nodes to the tree control (the children of 'Child1')
  42.  
  43. * Node with key 'New1'
  44. CLEAR NODE.
  45. NODE-NODE_KEY = c_nodekey-New1.
  46. NODE-RELATKEY = c_nodekey-Child1.
  47. NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  48. NODE-ISFOLDER = ' '.
  49. NODE-TEXT = 'New1'(ne1).
  50. APPEND NODE TO NODE_TABLE.
  51.  
  52. * Node with key 'New2'
  53. CLEAR NODE.
  54. NODE-NODE_KEY = c_nodekey-New2.
  55. NODE-RELATKEY = c_nodekey-Child1.
  56. NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  57. NODE-N_IMAGE = '@10@'.
  58. NODE-EXPANDER = ' '.
  59. NODE-TEXT = 'New2'(ne2).
  60. APPEND NODE TO NODE_TABLE.
  61.  
  62. CALL METHOD G_TREE->ADD_NODES
  63. EXPORTING
  64. TABLE_STRUCTURE_NAME = 'MTREESNODE'
  65. NODE_TABLE = NODE_TABLE
  66. EXCEPTIONS
  67. FAILED = 1
  68. ERROR_IN_NODE_TABLE = 2
  69. DP_ERROR = 3
  70. TABLE_STRUCTURE_NAME_NOT_FOUND = 4
  71. OTHERS = 5.
  72. IF SY-SUBRC <> 0.
  73. MESSAGE A000.
  74. ENDIF.
  75. endif.
  76. ENDMETHOD.
  77.  
  78. ENDCLASS.
  1. *-------------------------------------------------------------------
  2. ***INCLUDE simple_tree_control_demoO01 .
  3. *-------------------------------------------------------------------
  4. *&---------------------------------------------------------------------*
  5. *& Module PBO_0400 OUTPUT
  6. *&---------------------------------------------------------------------*
  7. * text
  8. *----------------------------------------------------------------------*
  9. MODULE PBO_100 OUTPUT.
  10. SET PF-STATUS 'MAIN'.
  11. IF G_TREE IS INITIAL.
  12. " The Tree Control has not been created yet.
  13. " Create a Tree Control and insert nodes into it.
  14. PERFORM CREATE_AND_INIT_TREE.
  15. ENDIF.
  16. ENDMODULE. " PBO_0100 OUTPUT
  17. *** INCLUDE simple_tree_control_demoO01
  1. *-------------------------------------------------------------------
  2. ***INCLUDE simple_tree_control_demoI01 .
  3. *-------------------------------------------------------------------
  4. *&---------------------------------------------------------------------*
  5. *& Module PAI_0400 INPUT
  6. *&---------------------------------------------------------------------*
  7. * text
  8. *----------------------------------------------------------------------*
  9. MODULE PAI_100 INPUT.
  10. data: return_code type i.
  11. * CL_GUI_CFW=>DISPATCH must be called if events are registered
  12. * that trigger PAI
  13. * this method calls the event handler method of an event
  14. CALL METHOD CL_GUI_CFW=>DISPATCH
  15. importing return_code = return_code.
  16. if return_code <> cl_gui_cfw=>rc_noevent.
  17. " a control event occured => exit PAI
  18. clear g_ok_code.
  19. exit.
  20. endif.
  21.  
  22. CASE G_OK_CODE.
  23. when 'TEST'. call method g_tree->expand_node
  24. exporting node_key = c_nodekey-New1.
  25. WHEN 'BACK'. " Finish program
  26. IF NOT G_CUSTOM_CONTAINER IS INITIAL.
  27. " destroy tree container (detroys contained tree control, too)
  28. CALL METHOD G_CUSTOM_CONTAINER->FREE
  29. EXCEPTIONS
  30. CNTL_SYSTEM_ERROR = 1
  31. CNTL_ERROR = 2.
  32. IF SY-SUBRC <> 0.
  33. MESSAGE A000.
  34. ENDIF.
  35. CLEAR G_CUSTOM_CONTAINER.
  36. CLEAR G_TREE.
  37. ENDIF.
  38. LEAVE PROGRAM.
  39. ENDCASE.
  40.  
  41. * CAUTION: clear ok code!
  42. CLEAR G_OK_CODE.
  43. ENDMODULE. " PAI_0100 INPUT
  44. *** INCLUDE simple_tree_control_demoI01
  1. *-------------------------------------------------------------------
  2. ***INCLUDE simple_tree_control_demoF01 .
  3. *-------------------------------------------------------------------
  4.  
  5. *&---------------------------------------------------------------------*
  6. *& Form CREATE_AND_INIT_TREE
  7. *&---------------------------------------------------------------------*
  8. * text
  9. *----------------------------------------------------------------------*
  10. * --> p1 text
  11. * <-- p2 text
  12. *----------------------------------------------------------------------*
  13. FORM CREATE_AND_INIT_TREE.
  14. DATA: NODE_TABLE TYPE NODE_TABLE_TYPE,
  15. EVENTS TYPE CNTL_SIMPLE_EVENTS,
  16. event type cntl_simple_event.
  17.  
  18. * create a container for the tree control
  19. CREATE OBJECT G_CUSTOM_CONTAINER
  20. EXPORTING
  21. " the container is linked to the custom control with the
  22. " name 'TREE_CONTAINER' on the dynpro
  23. CONTAINER_NAME = 'TREE_CONTAINER'
  24. EXCEPTIONS
  25. CNTL_ERROR = 1
  26. CNTL_SYSTEM_ERROR = 2
  27. CREATE_ERROR = 3
  28. LIFETIME_ERROR = 4
  29. LIFETIME_DYNPRO_DYNPRO_LINK = 5.
  30. IF SY-SUBRC <> 0.
  31. MESSAGE A000.
  32. ENDIF.
  33.  
  34. * create a tree control
  35. CREATE OBJECT G_TREE
  36. EXPORTING
  37. PARENT = G_CUSTOM_CONTAINER
  38. " single node selection is used
  39. NODE_SELECTION_MODE = CL_GUI_SIMPLE_TREE=>NODE_SEL_MODE_SINGLE
  40. EXCEPTIONS
  41. LIFETIME_ERROR = 1
  42. CNTL_SYSTEM_ERROR = 2
  43. CREATE_ERROR = 3
  44. FAILED = 4
  45. ILLEGAL_NODE_SELECTION_MODE = 5.
  46. IF SY-SUBRC <> 0.
  47. MESSAGE A000.
  48. ENDIF.
  49.  
  50. * define the events which will be passed to the backend
  51. " node double click
  52. event-eventid = CL_GUI_SIMPLE_TREE=>EVENTID_NODE_DOUBLE_CLICK.
  53. event-appl_event = 'X'. " process PAI if event occurs
  54. APPEND event to events.
  55.  
  56. " expand no children
  57. event-eventid = CL_GUI_SIMPLE_TREE=>EVENTID_EXPAND_NO_CHILDREN.
  58. event-appl_event = 'X'.
  59. APPEND event to events.
  60.  
  61. CALL METHOD G_TREE->SET_REGISTERED_EVENTS
  62. EXPORTING
  63. EVENTS = EVENTS
  64. EXCEPTIONS
  65. CNTL_ERROR = 1
  66. CNTL_SYSTEM_ERROR = 2
  67. ILLEGAL_EVENT_COMBINATION = 3.
  68. IF SY-SUBRC <> 0.
  69. MESSAGE A000.
  70. ENDIF.
  71.  
  72. * assign event handlers in the application class to each desired event
  73. SET HANDLER G_APPLICATION->HANDLE_NODE_DOUBLE_CLICK FOR G_TREE.
  74. SET HANDLER G_APPLICATION->HANDLE_EXPAND_NO_CHILDREN FOR G_TREE.
  75.  
  76. * add some nodes to the tree control
  77. * NOTE: the tree control does not store data at the backend. If an
  78. * application wants to access tree data later, it must store the
  79. * tree data itself.
  80.  
  81. PERFORM BUILD_NODE_TABLE USING NODE_TABLE.
  82.  
  83. * node_table_structure_name = 'MTREESNODE'
  84. * A programmer using the tree control must create a structure in the
  85. * dictionary. This structure must include the structure TREEV_NODE
  86. * and must contain a character field with the name 'TEXT'.
  87.  
  88. CALL METHOD G_TREE->ADD_NODES
  89. EXPORTING
  90. TABLE_STRUCTURE_NAME = 'MTREESNODE'
  91. NODE_TABLE = NODE_TABLE
  92. EXCEPTIONS
  93. FAILED = 1
  94. ERROR_IN_NODE_TABLE = 2
  95. DP_ERROR = 3
  96. TABLE_STRUCTURE_NAME_NOT_FOUND = 4
  97. OTHERS = 5.
  98. IF SY-SUBRC <> 0.
  99. MESSAGE A000.
  100. ENDIF.
  101.  
  102. ENDFORM. " CREATE_AND_INIT_TREE
  103. *&---------------------------------------------------------------------*
  104. *& Form build_node_table
  105. *&---------------------------------------------------------------------*
  106. * text
  107. *----------------------------------------------------------------------*
  108. * --> p1 text
  109. * <-- p2 text
  110. *----------------------------------------------------------------------*
  111.  
  112. FORM BUILD_NODE_TABLE
  113. USING
  114. NODE_TABLE TYPE NODE_TABLE_TYPE.
  115.  
  116. DATA: NODE LIKE MTREESNODE.
  117.  
  118. * Build the node table.
  119.  
  120. * Caution: The nodes are inserted into the tree according to the order
  121. * in which they occur in the table. In consequence, a node must not
  122. * occur in the node table before its parent node.
  123.  
  124. * Node with key 'Root'
  125. NODE-NODE_KEY = c_nodekey-Root.
  126. " Key of the node
  127. CLEAR NODE-RELATKEY. " Special case: A root node has no parent
  128. CLEAR NODE-RELATSHIP. " node.
  129.  
  130. NODE-HIDDEN = ' '. " The node is visible,
  131. NODE-DISABLED = ' '. " selectable,
  132. NODE-ISFOLDER = 'X'. " a folder.
  133. CLEAR NODE-N_IMAGE. " Folder-/ Leaf-Symbol in state "closed":
  134. " use default.
  135. CLEAR NODE-EXP_IMAGE. " Folder-/ Leaf-Symbol in state "open":
  136. " use default
  137. CLEAR NODE-EXPANDER. " see below.
  138. NODE-TEXT = 'Root'(roo).
  139. APPEND NODE TO NODE_TABLE.
  140.  
  141. * Node with key 'Child1'
  142. NODE-NODE_KEY = c_nodekey-Child1.
  143. " Key of the node
  144. " Node is inserted as child of the node with key 'Root'.
  145. NODE-RELATKEY = c_nodekey-Root.
  146. NODE-RELATSHIP = CL_GUI_SIMPLE_TREE=>RELAT_LAST_CHILD.
  147.  
  148. NODE-HIDDEN = ' '.
  149. NODE-DISABLED = ' '.
  150. NODE-ISFOLDER = 'X'.
  151. CLEAR NODE-N_IMAGE.
  152. CLEAR NODE-EXP_IMAGE.
  153. NODE-EXPANDER = 'X'. " The node is marked with a '+', although
  154. " it has no children. When the user clicks on the
  155. " + to open the node, the event
  156. " expand_no_children is fired. The programmer can
  157. " add the children of the
  158. " node within the event handler of the
  159. " expand_no_children event
  160. " (see method handle_expand_no_children
  161. " of class lcl_application)
  162.  
  163. NODE-TEXT = 'Child1'(ch1).
  164. NODE-STYLE = CL_GUI_SIMPLE_TREE=>STYLE_EMPHASIZED_POSITIVE.
  165. APPEND NODE TO NODE_TABLE.
  166.  
  167. ENDFORM. " build_node_table
  168.  
  169. *** INCLUDE simple_tree_control_demoF01
  1. START-OF-SELECTION.
  2. * create the application object
  3. * this object is needed to handle the ABAP Objects Events of
  4. * Controls
  5. CREATE OBJECT G_APPLICATION.
  6.  
  7. SET SCREEN 100.

SAP Easy tree的更多相关文章

  1. HDU 4359——Easy Tree DP?——————【dp+组合计数】

    Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  2. HDU 4359 Easy Tree DP?

    Easy Tree DP? Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)To ...

  3. SAP Column tree

    code as bellow *&---------------------------------------------------------------------* *& I ...

  4. HDU 4359 Easy Tree DP? 带权二叉树的构造方法 dp

    题意: 给定n deep 1.构造一个n个节点的带权树,且最大深度为deep,每一个节点最多仅仅能有2个儿子 2.每一个节点的值为2^0, 2^1 ··· 2^(n-1)  随意两个节点值不能同样 3 ...

  5. HDU 4359 Easy Tree DP? 组合数学+动归

    题意:定义一种树,每个节点的权值都是20到2n-1,每个权值出现一次,每个节点的左子树的权值和小于右子树,除非只有一个子树.给你n和d,问有n个节点且恰好深度是d的这种树有多少种. 比赛的时候我没有做 ...

  6. SAP Tree editor(树形结构)

    SAP List Tree 效果 源代码 *&---------------------------------------------------------------------* *& ...

  7. 更改SAP GUI 登陆背景

    您也可以定制初始屏幕(SAP Easy Access): 所有用户的全局设置:o   更改位于初始屏幕右侧的登录 -   如果希望将登录放置在初始屏幕右侧,请按如下处理:        使用事务 SW ...

  8. SAP事务码 一

    SE80 -- edit source code. SE24 -- class create or display. SFP -- created and maintained independent ...

  9. 2 Configuring SAP ERP Sales and Distribution -introduction to SAP

    First Steps in SAPWe’ll now discuss some of the basic menus, screens, and transactions that you need ...

随机推荐

  1. BurpSuite下提示embedded browser initialisation failed(嵌入式浏览器初始化失败)的解决方法

    BurpSuite可谓是渗透测试过程经常使用的神器之一,但使用中经常会碰到奇奇怪怪的问题,比如有时抓http包,发送到Repeater(中继器,也叫重发器)模块后,在右边Render模块下,却无法看到 ...

  2. 2021.08.16 P1260 工程规划(差分约束)

    2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造 ...

  3. 茴香豆的“茴”有四种写法,Python的格式化字符串也有

    茴香豆的"茴"有四种写法,Python的格式化字符串也有 茴香豆的"茴"有四种写法,Python的格式化字符串也有 被低估的断言 多一个逗号,少一点糟心事 上下 ...

  4. Python 工匠:使用数字与字符串的技巧

    序言 这是 "Python 工匠"系列的第 3 篇文章. 数字是几乎所有编程语言里最基本的数据类型,它是我们通过代码连接现实世界的基础.在 Python 里有三种数值类型:整型(i ...

  5. 基于DSP_CPLD_aP8942A_LM1791的语音控制

    语音驱动程序  drv_voice.c 语音服务程序  srv_voice.c 1.先运行初始化函数,主要是设置初始音量,并建立一个软件定时器来,以10ms的周期来调用语音播放函数. 1 void s ...

  6. Idea分享项目到全球最大同x交友网站gayhub居然失败了!我居然没有权限!来看看解决方法吧

    Idea分享项目到全球最大同x交友网站gayhub居然失败了! 事情是这样的,刚写完一个动态网页就想着部署到github上让大家看看(装逼),然而在我share project时,它告诉我: 大概意思 ...

  7. VUE3 之 自定义指令的实现 - 这个系列的教程通俗易懂,适合新手

    1. 概述 老话说的好:能屈能伸的人生,才是完满而丰富的人生. 言归正传,今天我们来聊聊 VUE 中自定义指令的实现. 2. 自定义指令 2.1 文本框聚焦的实现  <body> < ...

  8. 『现学现忘』Git基础 — 20、Git中忽略文件补充

    目录 1.忽略文件常遇到的问题 2.忽略文件配置优先级 3.忽略已跟踪文件的改动(本机使用) 4.autocrlf和safecrlf参数说明 (1)提出问题 (2)autocrlf说明 (3)safe ...

  9. 【多线程】线程强制执行 join()

    线程强制执行 join() Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 : 可以想象成插队. 代码示例: /** * @Description 测试join方法 * @Auth ...

  10. Python数据分析--工具安装及Numpy介绍(1)

    Anaconda 是一个跨平台的版本,通过命令行来管理安装包.进行大规模数据处理.预测分析和科学计算.它包括近 200 个工具包,大数据处理需要用到的常见包有 NumPy . SciPy . pand ...