@@ -3,13 +3,14 @@ CLASS z2ui5_cl_demo_app_328 DEFINITION PUBLIC.
3
3
PUBLIC SECTION .
4
4
INTERFACES z2ui5_if_app.
5
5
6
- DATA mt_table TYPE STANDARD TABLE OF z2ui5_t_01.
6
+ DATA mt_table TYPE REF TO data .
7
+ DATA mt_comp TYPE cl_abap_structdescr=>component_table.
8
+ DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_329.
7
9
8
- DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_330.
9
-
10
- DATA client TYPE REF TO z2ui5_if_client.
10
+ DATA client TYPE REF TO z2ui5_if_client.
11
11
12
12
PROTECTED SECTION .
13
+ METHODS get_data.
13
14
14
15
PRIVATE SECTION .
15
16
METHODS ui5_view_display.
@@ -23,41 +24,94 @@ CLASS z2ui5_cl_demo_app_328 IMPLEMENTATION.
23
24
me ->client = client .
24
25
25
26
IF client->check_on_init( ).
26
- ui5_view_display( ).
27
- ENDIF .
28
27
29
- CASE client->get ( )-event .
28
+ get_data ( ).
30
29
31
- WHEN 'BUTTON_POPUP' .
30
+ mo_table_obj = z2ui5_cl_demo_app_329=>factory( mt_table ) .
32
31
33
- SELECT * FROM z2ui5_t_01 INTO TABLE @mt_table UP TO 10 ROWS .
32
+ ui5_view_display( ) .
34
33
35
- mo_table_obj = z2ui5_cl_demo_app_330=>factory( REF #( mt_table ) ) .
34
+ ENDIF .
36
35
37
- client->nav_app_call( z2ui5_cl_demo_app_329=>factory( mo_table_obj ) ) .
36
+ CASE client->get( )-event .
38
37
39
38
WHEN 'BACK' .
40
39
client->nav_app_leave( ).
41
40
41
+ WHEN 'SELECTION_CHANGE' OR 'GO' .
42
+
43
+ IF mt_table->* <> mo_table_obj->mr_data->*.
44
+ client->message_toast_display( 'Error - MT_TABLE <> MO_TABLE_OBJ->MR_TABLE_DATA' ).
45
+ ENDIF .
46
+
42
47
ENDCASE .
43
48
44
49
ENDMETHOD .
45
50
46
51
METHOD ui5_view_display .
47
52
48
- DATA (lo_main ) = z2ui5_cl_xml_view=>factory( )->shell( ).
49
- DATA (page ) = lo_main->page( title = 'abap2UI5 - Popups'
50
- navbuttonpress = client->_event( val = 'BACK' )
51
- shownavbutton = xsdbool ( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
53
+ DATA (page ) = z2ui5_cl_xml_view=>factory( ).
54
+
55
+ page->button( text = 'GO'
56
+ press = client->_event( 'GO' )
57
+ type = 'Success' ).
58
+
59
+ DATA (table ) = page->table( growing = 'true'
60
+ width = 'auto'
61
+ items = client->_bind( mt_table->* )
62
+ mode = 'MultiSelect'
63
+ selectionchange = client->_event( 'SELECTION_CHANGE' ) ).
64
+
65
+ DATA (columns ) = table->columns( ).
66
+
67
+ LOOP AT mt_comp INTO DATA (comp ) WHERE name CP `ID*` .
68
+
69
+ columns->column( )->text( comp-name ).
70
+
71
+ ENDLOOP .
72
+
73
+ DATA (cells ) = columns->get_parent( )->items(
74
+ )->column_list_item( valign = 'Middle'
75
+ type = 'Navigation'
76
+ )->cells( ).
77
+
78
+ LOOP AT mt_comp INTO comp.
79
+ cells->object_identifier( text = | \{{ comp-name } \}| ).
80
+ ENDLOOP .
81
+
82
+ client->view_display( page ).
83
+
84
+ ENDMETHOD .
85
+
86
+ METHOD get_data .
87
+ DATA selkz TYPE abap_bool .
88
+
89
+ FIELD-SYMBOLS <table> TYPE STANDARD TABLE .
90
+
91
+ mt_comp = z2ui5_cl_util=>rtti_get_t_attri_by_table_name( 'Z2UI5_T_01' ).
92
+
93
+ APPEND LINES OF VALUE cl_abap_structdescr=>component_table(
94
+ ( name = 'SELKZ'
95
+ type = CAST #( cl_abap_datadescr=>describe_by_data( selkz ) ) ) ) TO mt_comp.
96
+
97
+ TRY .
98
+
99
+ DATA (new_struct_desc ) = cl_abap_structdescr=>create( mt_comp ).
100
+
101
+ DATA (new_table_desc ) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
102
+ p_table_kind = cl_abap_tabledescr=>tablekind_std ).
103
+
104
+ CREATE DATA mt_table TYPE HANDLE new_table_desc.
105
+
106
+ ASSIGN mt_table->* TO <table> .
107
+
108
+ SELECT * FROM z2ui5_t_01
109
+ INTO CORRESPONDING FIELDS OF TABLE @<table>
110
+ UP TO 10 ROWS .
52
111
53
- " TODO: variable is assigned but never used (ABAP cleaner)
54
- DATA (grid ) = page->grid( 'L7 M12 S12' )->content( 'layout'
55
- )->simple_form( 'Popup in new App' )->content( 'form'
56
- )->label( 'Demo'
57
- )->button( text = 'popup with gernic Ref to prev. App'
58
- press = client->_event( 'BUTTON_POPUP' ) ).
112
+ CATCH cx_root.
59
113
60
- client->view_display( lo_main->stringify( ) ) .
114
+ ENDTRY .
61
115
62
116
ENDMETHOD .
63
117
0 commit comments