Skip to content

Commit 905dfee

Browse files
authored
update model samples
1 parent 0f56077 commit 905dfee

File tree

1 file changed

+252
-0
lines changed

1 file changed

+252
-0
lines changed

src/z2ui5_cl_demo_app_344.clas.abap

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
CLASS z2ui5_cl_demo_app_344 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES z2ui5_if_app.
5+
6+
DATA mt_data TYPE REF TO data.
7+
DATA mt_data2 TYPE REF TO data.
8+
9+
DATA mo_layout_obj TYPE REF TO z2ui5_cl_demo_app_333.
10+
DATA mo_layout_obj2 TYPE REF TO z2ui5_cl_demo_app_333.
11+
12+
METHODS get_data IMPORTING iv_tabname TYPE string.
13+
METHODS get_data2 IMPORTING iv_tabname TYPE string.
14+
15+
METHODS ui5_view_display
16+
IMPORTING
17+
!client TYPE REF TO z2ui5_if_client.
18+
19+
PROTECTED SECTION.
20+
21+
PRIVATE SECTION.
22+
METHODS xml_table
23+
IMPORTING
24+
i_page TYPE REF TO z2ui5_cl_xml_view
25+
i_client TYPE REF TO z2ui5_if_client
26+
i_data TYPE REF TO data
27+
i_layout TYPE REF TO z2ui5_cl_demo_app_333.
28+
29+
METHODS get_comp
30+
IMPORTING
31+
iv_tabname TYPE string
32+
RETURNING
33+
VALUE(result) TYPE abap_component_tab.
34+
35+
ENDCLASS.
36+
37+
38+
CLASS z2ui5_cl_demo_app_344 IMPLEMENTATION.
39+
40+
METHOD z2ui5_if_app~main.
41+
42+
IF client->check_on_init( ).
43+
get_data( 'Z2UI5_T_01' ).
44+
get_data2( 'Z2UI5_T_01' ).
45+
46+
mo_layout_obj = z2ui5_cl_demo_app_333=>factory( i_data = mt_data
47+
vis_cols = 5 ).
48+
mo_layout_obj2 = z2ui5_cl_demo_app_333=>factory( i_data = mt_data2
49+
vis_cols = 3 ).
50+
51+
ui5_view_display( client ).
52+
ENDIF.
53+
54+
CASE client->get( )-event.
55+
WHEN 'BACK'.
56+
client->nav_app_leave( ).
57+
WHEN 'GO'.
58+
DATA(app) = z2ui5_cl_demo_app_336=>factory( ).
59+
client->nav_app_call( app ).
60+
ENDCASE.
61+
62+
*** " Kommen wir aus einer anderen APP
63+
*** IF client->get( )-check_on_navigated = abap_true.
64+
*** TRY.
65+
*** " Kommen wir aus einer anderen APP
66+
*** CAST z2ui5_cl_demo_app_336( client->get_app( client->get( )-s_draft-id_prev_app ) ).
67+
***
68+
*** CATCH cx_root.
69+
*** ENDTRY.
70+
*** ENDIF.
71+
72+
73+
IF client->get( )-check_on_navigated = abap_true
74+
AND client->check_on_init( ) = abap_false.
75+
ui5_view_display( client ).
76+
ENDIF.
77+
78+
79+
IF mo_layout_obj->mr_data IS NOT BOUND.
80+
client->message_toast_display( 'ERROR - mo_layout_obj->mr_data is not bound!' ).
81+
ENDIF.
82+
IF mo_layout_obj2->mr_data IS NOT BOUND.
83+
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data is not bound!' ).
84+
ENDIF.
85+
IF mo_layout_obj->mr_data->* <> mt_data->*.
86+
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> mt_data!' ).
87+
ENDIF.
88+
IF mo_layout_obj2->mr_data->* <> mt_data2->*.
89+
client->message_toast_display( 'ERROR - mo_layout_obj_2->mr_data <> ms_data!' ).
90+
ENDIF.
91+
92+
client->view_model_update( ).
93+
94+
ENDMETHOD.
95+
96+
METHOD ui5_view_display.
97+
98+
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
99+
navbuttonpress = client->_event( 'BACK' )
100+
shownavbutton = client->check_app_prev_stack( ) ).
101+
102+
page->button( text = 'CALL Next App'
103+
press = client->_event( 'GO' )
104+
type = 'Success' ).
105+
106+
xml_table( i_page = page
107+
i_client = client
108+
i_data = mt_data
109+
i_layout = mo_layout_obj ).
110+
111+
xml_table( i_page = page
112+
i_client = client
113+
i_data = mt_data2
114+
i_layout = mo_layout_obj2 ).
115+
116+
client->view_display( page ).
117+
118+
ENDMETHOD.
119+
120+
METHOD xml_table.
121+
122+
DATA(table) = i_page->table( width = 'auto'
123+
items = i_client->_bind_edit( val = i_data->* ) ).
124+
125+
DATA(columns) = table->columns( ).
126+
127+
LOOP AT i_layout->ms_data-t_layout REFERENCE INTO DATA(layout).
128+
DATA(lv_index) = sy-tabix.
129+
130+
columns->column( visible = i_client->_bind( val = layout->visible
131+
tab = i_layout->ms_data-t_layout
132+
tab_index = lv_index )
133+
)->text( layout->name ).
134+
135+
ENDLOOP.
136+
137+
DATA(column_list_item) = columns->get_parent( )->items(
138+
)->column_list_item( valign = 'Middle'
139+
type = `Inactive` ).
140+
141+
DATA(cells) = column_list_item->cells( ).
142+
143+
LOOP AT i_layout->ms_data-t_layout REFERENCE INTO layout.
144+
145+
lv_index = sy-tabix.
146+
147+
cells->object_identifier( text = |\{{ layout->name }\}| ). "."|\{{ layout->fname }\}| ).
148+
149+
ENDLOOP.
150+
151+
ENDMETHOD.
152+
153+
METHOD get_data.
154+
155+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
156+
157+
DATA(t_comp) = get_comp( iv_tabname ).
158+
TRY.
159+
160+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
161+
162+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
163+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
164+
165+
CREATE DATA mt_DATA TYPE HANDLE new_table_desc.
166+
167+
ASSIGN mt_DATA->* TO <table>.
168+
169+
SELECT *
170+
FROM (iv_tabname)
171+
INTO CORRESPONDING FIELDS OF TABLE @<table>
172+
UP TO 3 ROWS.
173+
174+
SORT <table>.
175+
176+
CATCH cx_root.
177+
178+
ENDTRY.
179+
180+
ENDMETHOD.
181+
182+
METHOD get_data2.
183+
184+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
185+
186+
DATA(t_comp) = get_comp( iv_tabname ).
187+
TRY.
188+
189+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
190+
191+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
192+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
193+
194+
CREATE DATA mt_DATA2 TYPE HANDLE new_table_desc.
195+
196+
ASSIGN mt_DATA2->* TO <table>.
197+
198+
SELECT *
199+
FROM (iv_tabname)
200+
INTO CORRESPONDING FIELDS OF TABLE @<table>
201+
UP TO 4 ROWS.
202+
203+
SORT <table>.
204+
205+
CATCH cx_root.
206+
207+
ENDTRY.
208+
209+
ENDMETHOD.
210+
211+
METHOD get_comp.
212+
213+
DATA selkz TYPE abap_bool.
214+
215+
TRY.
216+
TRY.
217+
218+
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = iv_tabname
219+
RECEIVING p_descr_ref = DATA(typedesc)
220+
EXCEPTIONS type_not_found = 1
221+
OTHERS = 2 ).
222+
223+
DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
224+
225+
DATA(comp) = structdesc->get_components( ).
226+
227+
LOOP AT comp INTO DATA(com).
228+
229+
IF com-as_include = abap_false.
230+
231+
APPEND com TO result.
232+
233+
ENDIF.
234+
235+
ENDLOOP.
236+
237+
CATCH cx_root INTO DATA(root). " TODO: variable is assigned but never used (ABAP cleaner)
238+
239+
ENDTRY.
240+
241+
DATA(component) = VALUE cl_abap_structdescr=>component_table(
242+
( name = 'SELKZ'
243+
type = CAST #( cl_abap_datadescr=>describe_by_data( selkz ) ) ) ).
244+
245+
APPEND LINES OF component TO result.
246+
247+
CATCH cx_root.
248+
ENDTRY.
249+
250+
ENDMETHOD.
251+
252+
ENDCLASS.

0 commit comments

Comments
 (0)