Skip to content

Commit c5cb10c

Browse files
authored
Create z2ui5_cl_demo_app_345.clas.abap
1 parent 971e6a0 commit c5cb10c

File tree

1 file changed

+199
-0
lines changed

1 file changed

+199
-0
lines changed
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
CLASS z2ui5_cl_demo_app_345 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES z2ui5_if_app.
5+
6+
DATA mt_data1 TYPE REF TO data.
7+
* DATA mt_data2 TYPE REF TO data.
8+
* DATA mt_data3 TYPE REF TO data.
9+
* DATA mt_data4 TYPE REF TO data.
10+
* DATA mt_data5 TYPE REF TO data.
11+
* DATA mt_data6 TYPE REF TO data.
12+
13+
DATA mo_layout_obj1 TYPE REF TO z2ui5_cl_demo_app_333.
14+
* DATA mo_layout_obj2 TYPE REF TO z2ui5_cl_demo_app_333.
15+
* DATA mo_layout_obj3 TYPE REF TO z2ui5_cl_demo_app_333.
16+
* DATA mo_layout_obj4 TYPE REF TO z2ui5_cl_demo_app_333.
17+
* DATA mo_layout_obj5 TYPE REF TO z2ui5_cl_demo_app_333.
18+
* DATA mo_layout_obj6 TYPE REF TO z2ui5_cl_demo_app_333.
19+
20+
METHODS get_data.
21+
22+
METHODS render_main
23+
IMPORTING
24+
!client TYPE REF TO z2ui5_if_client.
25+
26+
PROTECTED SECTION.
27+
28+
PRIVATE SECTION.
29+
METHODS xml_table
30+
IMPORTING
31+
i_page TYPE REF TO z2ui5_cl_xml_view
32+
i_client TYPE REF TO z2ui5_if_client
33+
i_data TYPE REF TO data
34+
i_layout TYPE REF TO z2ui5_cl_demo_app_333.
35+
36+
METHODS get_comp
37+
RETURNING
38+
VALUE(result) TYPE abap_component_tab.
39+
40+
ENDCLASS.
41+
42+
43+
44+
CLASS z2ui5_cl_demo_app_345 IMPLEMENTATION.
45+
46+
47+
METHOD get_comp.
48+
49+
TRY.
50+
TRY.
51+
52+
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = 'Z2UI5_T_01'
53+
RECEIVING p_descr_ref = DATA(typedesc)
54+
EXCEPTIONS type_not_found = 1
55+
OTHERS = 2 ).
56+
57+
DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
58+
59+
DATA(comp) = structdesc->get_components( ).
60+
61+
LOOP AT comp INTO DATA(com).
62+
63+
IF com-as_include = abap_false.
64+
65+
APPEND com TO result.
66+
67+
ENDIF.
68+
69+
ENDLOOP.
70+
71+
CATCH cx_root.
72+
ENDTRY.
73+
74+
CATCH cx_root.
75+
ENDTRY.
76+
77+
ENDMETHOD.
78+
79+
80+
METHOD get_data.
81+
82+
FIELD-SYMBOLS <table1> TYPE STANDARD TABLE.
83+
84+
DATA(t_comp) = get_comp( ).
85+
TRY.
86+
87+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
88+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
89+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
90+
91+
CREATE DATA mt_data1 TYPE HANDLE new_table_desc.
92+
ASSIGN mt_data1->* TO <table1>.
93+
94+
SELECT * FROM Z2ui5_t_01
95+
INTO TABLE @<table1>
96+
UP TO 5 ROWS.
97+
98+
CATCH cx_root.
99+
ENDTRY.
100+
101+
mo_layout_obj1 = z2ui5_cl_demo_app_333=>factory( i_data = mt_data1
102+
vis_cols = 2 ).
103+
104+
ENDMETHOD.
105+
106+
107+
METHOD render_main.
108+
109+
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
110+
navbuttonpress = client->_event( 'BACK' )
111+
shownavbutton = client->check_app_prev_stack( ) ).
112+
113+
page->button( text = 'CALL Next App'
114+
press = client->_event( 'GO' )
115+
type = 'Success' ).
116+
117+
118+
TRY.
119+
xml_table( i_page = page
120+
i_client = client
121+
i_data = mt_data1
122+
i_layout = mo_layout_obj1 ).
123+
client->message_box_display( `error - reference processed in binding without error` ).
124+
CATCH cx_root.
125+
client->message_box_display( `success - reference not allowed for binding throwed` ).
126+
ENDTRY.
127+
128+
129+
client->view_display( page ).
130+
131+
ENDMETHOD.
132+
133+
134+
METHOD xml_table.
135+
136+
DATA(table) = i_page->table( width = 'auto'
137+
items = i_client->_bind( val = i_data ) ).
138+
139+
DATA(columns) = table->columns( ).
140+
141+
LOOP AT i_layout->ms_data-t_layout REFERENCE INTO DATA(layout).
142+
DATA(lv_index) = sy-tabix.
143+
144+
columns->column( visible = i_client->_bind( val = layout->visible
145+
tab = i_layout->ms_data-t_layout
146+
tab_index = lv_index )
147+
)->text( layout->name ).
148+
149+
ENDLOOP.
150+
151+
DATA(column_list_item) = columns->get_parent( )->items(
152+
)->column_list_item( ).
153+
154+
DATA(cells) = column_list_item->cells( ).
155+
156+
LOOP AT i_layout->ms_data-t_layout REFERENCE INTO layout.
157+
158+
lv_index = sy-tabix.
159+
160+
cells->object_identifier( text = |\{{ layout->name }\}| ). "."|\{{ layout->fname }\}| ).
161+
162+
ENDLOOP.
163+
164+
ENDMETHOD.
165+
166+
167+
METHOD z2ui5_if_app~main.
168+
169+
IF client->check_on_init( ).
170+
get_data( ).
171+
render_main( client ).
172+
ENDIF.
173+
174+
CASE client->get( )-event.
175+
WHEN 'BACK'.
176+
client->nav_app_leave( ).
177+
WHEN 'GO'.
178+
DATA(app) = z2ui5_cl_demo_app_336=>factory( ).
179+
client->nav_app_call( app ).
180+
ENDCASE.
181+
182+
183+
IF client->get( )-check_on_navigated = abap_true
184+
AND client->check_on_init( ) = abap_false.
185+
render_main( client ).
186+
ENDIF.
187+
188+
189+
IF mo_layout_obj1->mr_data IS NOT BOUND.
190+
client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ).
191+
ENDIF.
192+
193+
IF mo_layout_obj1->mr_data->* <> mt_data1->*.
194+
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> mt_data!' ).
195+
ENDIF.
196+
197+
198+
ENDMETHOD.
199+
ENDCLASS.

0 commit comments

Comments
 (0)