ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ABAP-CL_GUI_ALV_TREE 选择框

2021-10-06 17:32:31  阅读:338  来源: 互联网

标签:node layout CL tree GUI TREE item nodes TYPE


https://answers.sap.com/questions/2237965/catch-checkbox-in-heirachycal-alv.html

 1 METHOD handle_checkbox_change .
 2 * define local data
 3   DATA:
 4     lw_child            TYPE lvc_nkey,
 5     lt_children         TYPE lvc_t_nkey,
 6 *
 7     l_wa_outtab_line    TYPE zfr_calc_marge_detail,
 8     l_wa_item_layout    TYPE lvc_s_layi,
 9     lt_item_layout      TYPE lvc_t_layi,
10     l_wa_item_layout_c  TYPE lvc_s_laci,
11     lt_item_layout_c    TYPE lvc_t_laci.
12 
13 
14 
15 " The user marks or unmarks a checkbox on the ALV tree. The status
16 " (marked / unmarked) is "inherited" to the child nodes.
17 node_key = cl_alv_tree_base=>c_virtual_root_node.
18 
19 " Get sub-tree of selected node (i.e. the node where the checkbox was changed)
20   CALL METHOD sender->get_subtree
21     EXPORTING
22       i_node_key       = node_key
23     IMPORTING
24       et_subtree_nodes = lt_children.
25 " NOTE: the sender is the ALV tree instance
26 
27 
28   LOOP AT lt_children INTO lw_child.
29     REFRESH: lt_item_layout.
30     CLEAR:   l_wa_outtab_line.
31 
32 *   Knoten und Item-Layout lesen
33     CALL METHOD sender->get_outtab_line
34       EXPORTING
35         i_node_key     = lw_child
36       IMPORTING
37         e_outtab_line  = l_wa_outtab_line
38 *        E_NODE_TEXT    =
39         et_item_layout = lt_item_layout
40 *        ES_NODE_LAYOUT =
41       EXCEPTIONS
42         node_not_found = 1
43         OTHERS         = 2.
44     IF sy-subrc <> 0.
45 *     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
46 *                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
47     ENDIF.
48 
49 
50     READ TABLE lt_item_layout INTO l_wa_item_layout
51          WITH KEY fieldname = cl_gui_alv_tree=>c_hierarchy_column_name
52                   class     = cl_gui_column_tree=>item_class_checkbox.
53     IF ( syst-subrc = 0 ).
54       l_wa_item_layout-chosen = checked.  " 'status' of changed checkbox
55       MODIFY lt_item_layout FROM l_wa_item_layout INDEX syst-tabix.
56 
57 
58       REFRESH: lt_item_layout_c.
59       LOOP AT lt_item_layout INTO l_wa_item_layout.
60         MOVE-CORRESPONDING l_wa_item_layout TO l_wa_item_layout_c.
61         l_wa_item_layout_c-u_chosen = 'X'.  " update CHOSEN field
62         APPEND l_wa_item_layout_c TO lt_item_layout_c.
63       ENDLOOP.
64 
65 
66       CALL METHOD sender->change_node
67         EXPORTING
68           i_node_key     = lw_child
69           i_outtab_line  = l_wa_outtab_line
70 *          IS_NODE_LAYOUT =
71           it_item_layout = lt_item_layout_c
72 *          I_NODE_TEXT    =
73 *          I_U_NODE_TEXT  =
74         EXCEPTIONS
75           node_not_found = 1
76           OTHERS         = 2.
77       IF sy-subrc <> 0.
78 *       MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
79 *                  WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
80       ENDIF.
81 
82     ENDIF.
83 
84   ENDLOOP.
85 
86 " Sending changes to the frontend
87   CALL METHOD sender->frontend_update.
88 
89 
90 ENDMETHOD.

 

  1 DATA: nodes TYPE REF TO cl_salv_nodes,
  2 
  3 node TYPE REF TO cl_salv_node,
  4 
  5 item TYPE REF TO cl_salv_item,
  6 
  7 text TYPE lvc_value.
  8 
  9 node = nodes->add_node( related_node = ip_node
 10 
 11 data_row = gs_tree
 12 
 13 row_style = lv_style
 14 
 15 text = text
 16 
 17 relationship = cl_gui_column_tree=>relat_last_child ).
 18 
 19 item = node->get_hierarchy_item( ).
 20 
 21 item->set_type( if_salv_c_item_type=>checkbox ).
 22 
 23 IF NOT gv_flag IS INITIAL.
 24 
 25 item->set_checked( abap_true ).
 26 
 27 ENDIF.
 28 
 29 item->set_editable( abap_true ).
 30 
 31 ENDIF.
 32 
 33 &----
 34 
 35 *& Form CHECKBOX_CHANGE
 36 
 37 &----
 38 
 39 text
 40 
 41 ----
 42 
 43 -->IV_COLUMNNAME Columnname
 44 
 45 -->IV_NODE_KEY Node key
 46 
 47 -->IV_CHECKED Falg for check box
 48 
 49 ----
 50 
 51 FORM checkbox_change USING iv_columnname TYPE lvc_fname
 52 
 53 iv_node_key TYPE salv_de_node_key
 54 
 55 iv_checked TYPE sap_bool.
 56 
 57 DATA: lv_tree TYPE REF TO data,
 58 
 59 ls_tree TYPE rpuben42_alv1.
 60 
 61 FIELD-SYMBOLS: <fs> TYPE ANY.
 62 
 63 DATA: nodes TYPE REF TO cl_salv_nodes,
 64 
 65 item1 TYPE REF TO cl_salv_item,
 66 
 67 item TYPE REF TO cl_salv_item,
 68 
 69 tree TYPE salv_t_nodes,
 70 
 71 tree1 TYPE salv_t_nodes,
 72 
 73 leaf TYPE salv_s_nodes,
 74 
 75 leaf1 TYPE salv_s_nodes.
 76 
 77 get all existing nodes
 78 
 79 TRY.
 80 
 81 nodes = gr_tree->get_nodes( ).
 82 
 83 tree = nodes->get_all_nodes( ).
 84 
 85 CATCH cx_salv_msg.
 86 
 87 EXIT.
 88 
 89 ENDTRY.
 90 
 91 READ TABLE tree INTO leaf WITH KEY key = iv_node_key.
 92 
 93 CREATE DATA lv_tree TYPE rpuben42_alv1.
 94 
 95 IF iv_checked = abap_true.
 96 
 97 TRY.
 98 
 99 tree1 = leaf-node->get_subtree( ).
100 
101 item1 = leaf-node->get_hierarchy_item( ).
102 
103 item1->set_checked( abap_true ).
104 
105 lv_tree = leaf-node->get_data_row( ).
106 
107 ASSIGN lv_tree->* TO <fs>.
108 
109 ls_tree = <fs> .
110 
111 MOVE ls_tree TO gs_tree.
112 
113 PERFORM update_table USING iv_checked.
114 
115 CLEAR gs_tree.
116 
117 CATCH cx_salv_msg.
118 
119 ENDTRY.
120 
121 LOOP AT tree1 INTO leaf1.
122 
123 item = leaf1-node->get_hierarchy_item( ).
124 
125 IF item->is_checked( ) NE abap_true.
126 
127 item->set_checked( abap_true ).
128 
129 lv_tree = leaf1-node->get_data_row( ).
130 
131 ASSIGN lv_tree->* TO <fs>.
132 
133 ls_tree = <fs> .
134 
135 MOVE ls_tree TO gs_tree.
136 
137 PERFORM update_table USING iv_checked.
138 
139 CLEAR gs_tree.
140 
141 ENDIF.
142 
143 ENDLOOP.
144 
145 ELSE.
146 
147 TRY.
148 
149 tree1 = leaf-node->get_subtree( ).
150 
151 CATCH cx_salv_msg.
152 
153 ENDTRY.
154 
155 LOOP AT tree1 INTO leaf1.
156 
157 item = leaf1-node->get_hierarchy_item( ).
158 
159 item->set_checked( abap_false ).
160 
161 lv_tree = leaf1-node->get_data_row( ).
162 
163 ASSIGN lv_tree->* TO <fs>.
164 
165 ls_tree = <fs> .
166 
167 MOVE ls_tree TO gs_tree.
168 
169 PERFORM update_table USING iv_checked.
170 
171 CLEAR gs_tree.
172 
173 ENDLOOP.
174 
175 ENDIF.
176 
177 ENDFORM. " CHECKBOX_CHANGE

 

标签:node,layout,CL,tree,GUI,TREE,item,nodes,TYPE
来源: https://www.cnblogs.com/ricoo/p/15371774.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有