Skip to content

Commit 27f3e53

Browse files
authored
App in App Example (#149)
* App in App Example * App in App * App in App
1 parent 1551ce6 commit 27f3e53

File tree

4 files changed

+310
-0
lines changed

4 files changed

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

src/z2ui5_cl_demo_app_131.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_131</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>App in App</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: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
CLASS z2ui5_cl_demo_app_132 DEFINITION
2+
PUBLIC
3+
CREATE PUBLIC.
4+
5+
PUBLIC SECTION.
6+
7+
INTERFACES if_serializable_object.
8+
INTERFACES z2ui5_if_app.
9+
10+
DATA mv_view_display TYPE abap_bool.
11+
DATA mo_parent_view TYPE REF TO z2ui5_cl_xml_view.
12+
13+
DATA mv_perc type string.
14+
15+
methods set_app_data
16+
importing
17+
!DATA type STRING .
18+
19+
PROTECTED SECTION.
20+
21+
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+
32+
ENDCLASS.
33+
34+
CLASS z2ui5_cl_demo_app_132 IMPLEMENTATION.
35+
36+
METHOD on_event.
37+
CASE client->get( )-event.
38+
39+
WHEN 'BACK'.
40+
41+
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
42+
43+
ENDCASE.
44+
ENDMETHOD.
45+
46+
METHOD on_init.
47+
Render_main( ).
48+
ENDMETHOD.
49+
50+
METHOD render_main.
51+
52+
IF mo_parent_view IS INITIAL.
53+
54+
DATA(page) = z2ui5_cl_xml_view=>factory( ).
55+
56+
ELSE.
57+
58+
page = mo_parent_view->get( `Page` ).
59+
60+
ENDIF.
61+
62+
DATA(layout) = page->vertical_layout( class = `sapUiContentPadding` width = `100%` ).
63+
layout->label( 'ProgressIndicator'
64+
)->progress_indicator(
65+
percentvalue = mv_perc
66+
displayvalue = '0,44GB of 32GB used'
67+
showvalue = abap_true
68+
state = 'Success' ).
69+
70+
71+
IF mo_parent_view IS INITIAL.
72+
73+
client->view_display( page->get_root( )->xml_get( ) ).
74+
75+
ELSE.
76+
77+
mv_view_display = abap_true.
78+
79+
ENDIF.
80+
ENDMETHOD.
81+
82+
METHOD z2ui5_if_app~main.
83+
me->client = client.
84+
85+
IF check_initialized = abap_false.
86+
check_initialized = abap_true.
87+
88+
on_init( ).
89+
90+
ENDIF.
91+
92+
on_event( ).
93+
ENDMETHOD.
94+
95+
METHOD set_app_data.
96+
97+
mv_perc = data.
98+
99+
ENDMETHOD.
100+
101+
ENDCLASS.

src/z2ui5_cl_demo_app_132.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_132</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>App in App</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)