Skip to content

Commit 0ac4ffd

Browse files
update s-rtti demos
1 parent ea6b149 commit 0ac4ffd

9 files changed

+447
-88
lines changed

src/z2ui5_cl_demo_app_000.clas.abap

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -806,6 +806,14 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
806806
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
807807
).
808808

809+
panel->generic_tile(
810+
header = 'Dynamic Objects II'
811+
subheader = 'User Generic Data Refs in Subapps'
812+
press = client->_event( 'Z2UI5_CL_DEMO_APP_117' )
813+
mode = 'LineMode'
814+
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
815+
).
816+
809817
panel = page->panel(
810818
expandable = abap_false
811819
expanded = abap_true
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
CLASS z2ui5_cl_demo_app_117 DEFINITION
2+
PUBLIC
3+
CREATE PUBLIC.
4+
5+
PUBLIC SECTION.
6+
INTERFACES z2ui5_if_app.
7+
8+
TYPES:
9+
BEGIN OF ty_s_t002,
10+
id TYPE string,
11+
count TYPE string,
12+
class TYPE string,
13+
END OF ty_s_t002.
14+
TYPES ty_t_t002 TYPE STANDARD TABLE OF ty_s_t002 WITH DEFAULT KEY.
15+
16+
DATA mv_selectedkey TYPE string.
17+
DATA mv_selectedkey_tmp TYPE string.
18+
DATA mt_t002 TYPE ty_t_t002.
19+
DATA mo_app TYPE REF TO object.
20+
21+
PROTECTED SECTION.
22+
DATA client TYPE REF TO z2ui5_if_client.
23+
DATA check_initialized TYPE abap_bool.
24+
DATA mo_main_page TYPE REF TO z2ui5_cl_xml_view.
25+
26+
METHODS on_init.
27+
METHODS on_event.
28+
METHODS render_main.
29+
30+
METHODS render_sub_app.
31+
32+
PRIVATE SECTION.
33+
34+
ENDCLASS.
35+
36+
CLASS z2ui5_cl_demo_app_117 IMPLEMENTATION.
37+
38+
METHOD on_event.
39+
40+
CASE client->get( )-event.
41+
42+
WHEN 'ONSELECTICONTABBAR'.
43+
44+
CASE mv_selectedkey.
45+
46+
WHEN space.
47+
48+
WHEN OTHERS.
49+
50+
ENDCASE.
51+
52+
WHEN 'BACK'.
53+
54+
ENDCASE.
55+
56+
ENDMETHOD.
57+
58+
METHOD on_init.
59+
60+
mt_t002 = VALUE #( ( id = '1' class = 'Z2UI5_CL_DEMO_APP_126' count = '12' )
61+
).
62+
63+
mv_selectedkey = '1'.
64+
65+
ENDMETHOD.
66+
67+
METHOD render_main.
68+
69+
DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).
70+
DATA(page) = view->page( id = `page_main`
71+
title = 'Main App calling Subapps'
72+
navbuttonpress = client->_event( 'BACK' )
73+
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL )
74+
class = 'sapUiContentPadding' ).
75+
76+
DATA(lo_items) = page->icon_tab_bar( class = 'sapUiResponsiveContentPadding'
77+
selectedkey = client->_bind_edit( mv_selectedkey )
78+
select = client->_event( val = 'ONSELECTICONTABBAR' )
79+
)->items( ).
80+
81+
LOOP AT mt_t002 REFERENCE INTO DATA(line).
82+
lo_items->icon_tab_filter( text = line->class count = line->count key = line->id ).
83+
lo_items->icon_tab_separator( ).
84+
ENDLOOP.
85+
86+
mo_main_page = lo_items.
87+
88+
ENDMETHOD.
89+
90+
METHOD z2ui5_if_app~main.
91+
92+
me->client = client.
93+
94+
IF check_initialized = abap_false.
95+
check_initialized = abap_true.
96+
97+
on_init( ).
98+
render_main( ).
99+
ENDIF.
100+
101+
on_event( ).
102+
render_sub_app( ).
103+
104+
ENDMETHOD.
105+
106+
METHOD render_sub_app.
107+
108+
109+
READ TABLE mt_t002 REFERENCE INTO DATA(t002)
110+
WITH KEY id = mv_selectedkey.
111+
112+
IF sy-subrc <> 0.
113+
RETURN.
114+
ENDIF.
115+
116+
CASE mv_selectedkey.
117+
118+
WHEN OTHERS.
119+
120+
IF mv_selectedkey <> mv_selectedkey_tmp.
121+
122+
TRY.
123+
client->_bind_clear( `MO_APP` ).
124+
CATCH cx_root.
125+
ENDTRY.
126+
CREATE OBJECT mo_app TYPE (t002->class).
127+
128+
ENDIF.
129+
TRY.
130+
131+
CALL METHOD mo_app->('SET_APP_DATA')
132+
EXPORTING
133+
data = t002->count.
134+
135+
render_main( ).
136+
137+
ASSIGN mo_app->('MO_PARENT_VIEW') TO FIELD-SYMBOL(<view>).
138+
IF <view> IS ASSIGNED.
139+
<view> = mo_main_page.
140+
ENDIF.
141+
142+
CALL METHOD mo_app->('Z2UI5_IF_APP~MAIN')
143+
EXPORTING
144+
client = client.
145+
146+
CATCH cx_root.
147+
RETURN.
148+
ENDTRY.
149+
150+
ENDCASE.
151+
152+
client->view_model_update( ).
153+
154+
FIELD-SYMBOLS <view_display> TYPE any.
155+
ASSIGN mo_app->('MV_VIEW_DISPLAY') TO <view_display>.
156+
157+
IF <view_display> = abap_true.
158+
<view_display> = abap_false.
159+
client->view_display( mo_main_page->stringify( ) ).
160+
ENDIF.
161+
162+
IF mv_selectedkey <> mv_selectedkey_tmp.
163+
164+
client->view_display( mo_main_page->stringify( ) ).
165+
mv_selectedkey_tmp = mv_selectedkey.
166+
167+
ENDIF.
168+
ENDMETHOD.
169+
170+
ENDCLASS.

src/z2ui5_cl_demo_app_117.clas.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>Z2UI5_CL_DEMO_APP_117</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>App in App I</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>
Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
CLASS z2ui5_cl_demo_app_126 DEFINITION
2+
PUBLIC
3+
CREATE PUBLIC.
4+
5+
PUBLIC SECTION.
6+
INTERFACES if_serializable_object.
7+
INTERFACES z2ui5_if_app.
8+
9+
DATA mv_view_display TYPE abap_bool.
10+
DATA mo_parent_view TYPE REF TO z2ui5_cl_xml_view.
11+
12+
DATA mv_perc TYPE string.
13+
DATA mt_table TYPE REF TO data.
14+
DATA mt_table_tmp TYPE REF TO data.
15+
DATA ms_table_row TYPE REF TO data.
16+
DATA mt_table_del TYPE REF TO data.
17+
18+
METHODS set_app_data
19+
IMPORTING !data TYPE string.
20+
21+
PROTECTED SECTION.
22+
DATA client TYPE REF TO z2ui5_if_client.
23+
DATA check_initialized TYPE abap_bool.
24+
25+
METHODS on_init.
26+
METHODS on_event.
27+
28+
METHODS Render_main.
29+
30+
PRIVATE SECTION.
31+
METHODS get_data.
32+
33+
METHODS get_comp
34+
RETURNING VALUE(result) TYPE abap_component_tab.
35+
36+
ENDCLASS.
37+
38+
CLASS z2ui5_cl_demo_app_126 IMPLEMENTATION.
39+
40+
METHOD on_event.
41+
CASE client->get( )-event.
42+
43+
WHEN 'BACK'.
44+
45+
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
46+
47+
ENDCASE.
48+
ENDMETHOD.
49+
50+
METHOD on_init.
51+
get_Data( ).
52+
Render_main( ).
53+
ENDMETHOD.
54+
55+
METHOD render_main.
56+
IF mo_parent_view IS INITIAL.
57+
58+
DATA(page) = z2ui5_cl_xml_view=>factory( ).
59+
60+
ELSE.
61+
62+
page = mo_parent_view->get( `Page` ).
63+
64+
ENDIF.
65+
66+
DATA(layout) = page->vertical_layout( class = `sapUiContentPadding`
67+
width = `100%` ).
68+
layout->label( 'ProgressIndicator'
69+
)->progress_indicator( percentvalue = mv_perc
70+
displayvalue = '0,44GB of 32GB used'
71+
showvalue = abap_true
72+
state = 'Success' ).
73+
74+
IF mo_parent_view IS INITIAL.
75+
76+
client->view_display( page->get_root( )->xml_get( ) ).
77+
78+
ELSE.
79+
80+
mv_view_display = abap_true.
81+
82+
ENDIF.
83+
ENDMETHOD.
84+
85+
METHOD z2ui5_if_app~main.
86+
me->client = client.
87+
88+
IF check_initialized = abap_false.
89+
check_initialized = abap_true.
90+
91+
on_init( ).
92+
93+
ENDIF.
94+
95+
on_event( ).
96+
ENDMETHOD.
97+
98+
METHOD set_app_data.
99+
mv_perc = data.
100+
ENDMETHOD.
101+
102+
METHOD get_data.
103+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
104+
FIELD-SYMBOLS <table_tmp> TYPE STANDARD TABLE.
105+
106+
DATA(t_comp) = get_comp( ).
107+
108+
TRY.
109+
110+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
111+
112+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
113+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
114+
115+
CREATE DATA mt_table TYPE HANDLE new_table_desc.
116+
CREATE DATA mt_table_del TYPE HANDLE new_table_desc.
117+
CREATE DATA mt_table_tmp TYPE HANDLE new_table_desc.
118+
CREATE DATA ms_table_row TYPE HANDLE new_struct_desc.
119+
120+
ASSIGN mt_table->* TO <table>.
121+
122+
SELECT * FROM Z2UI5_T_UTIL_01
123+
INTO CORRESPONDING FIELDS OF TABLE @<table>
124+
UP TO '100' ROWS.
125+
126+
CATCH cx_root.
127+
128+
ENDTRY.
129+
130+
ASSIGN mt_table_tmp->* TO <table_tmp>.
131+
132+
<table_tmp> = <table>.
133+
ENDMETHOD.
134+
135+
METHOD get_comp.
136+
TRY.
137+
138+
DATA index TYPE int4.
139+
140+
TRY.
141+
142+
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = 'Z2UI5_T_UTIL_01'
143+
RECEIVING p_descr_ref = DATA(typedesc)
144+
EXCEPTIONS type_not_found = 1
145+
OTHERS = 2 ).
146+
147+
DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
148+
149+
DATA(comp) = structdesc->get_components( ).
150+
151+
LOOP AT comp INTO DATA(com).
152+
153+
IF com-as_include = abap_false.
154+
155+
APPEND com TO result.
156+
157+
ENDIF.
158+
159+
ENDLOOP.
160+
161+
CATCH cx_root INTO DATA(root). " TODO: variable is assigned but never used (ABAP cleaner)
162+
163+
ENDTRY.
164+
165+
DATA(component) = VALUE cl_abap_structdescr=>component_table(
166+
( name = 'ROW_ID'
167+
type = CAST #( cl_abap_datadescr=>describe_by_data( index ) ) ) ).
168+
169+
APPEND LINES OF component TO result.
170+
171+
CATCH cx_root.
172+
ENDTRY.
173+
ENDMETHOD.
174+
175+
ENDCLASS.

src/z2ui5_cl_demo_app_126.clas.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
3+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
4+
<asx:values>
5+
<VSEOCLASS>
6+
<CLSNAME>Z2UI5_CL_DEMO_APP_126</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>App in App II</DESCRIPT>
9+
<STATE>1</STATE>
10+
<CLSCCINCL>X</CLSCCINCL>
11+
<FIXPT>X</FIXPT>
12+
<UNICODE>X</UNICODE>
13+
</VSEOCLASS>
14+
</asx:values>
15+
</asx:abap>
16+
</abapGit>

0 commit comments

Comments
 (0)