Skip to content

App in App Example #149

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions src/z2ui5_cl_demo_app_131.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
"!
CLASS z2ui5_cl_demo_app_131 DEFINITION
PUBLIC
CREATE PUBLIC.

PUBLIC SECTION.
INTERFACES if_serializable_object.
INTERFACES z2ui5_if_app.

TYPES BEGIN OF ty_s_t002.

TYPES: id TYPE string,
count TYPE string,
class TYPE string,
END OF ty_s_t002,
ty_t_t002 TYPE STANDARD TABLE OF ty_s_t002 WITH DEFAULT KEY.

DATA mv_selectedkey TYPE string.
DATA mv_selectedkey_tmp TYPE string.
DATA mt_t002 TYPE ty_t_t002.
DATA mo_app TYPE REF TO object.



PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
DATA mo_main_page TYPE REF TO z2ui5_cl_xml_view.

METHODS on_init.
METHODS on_event.
METHODS render_Main.

METHODS Render_sub_app.

PRIVATE SECTION.

ENDCLASS.

CLASS z2ui5_cl_demo_app_131 IMPLEMENTATION.

METHOD on_event.
CASE client->get( )-event.
WHEN 'ONSELECTICONTABBAR'.

CASE mv_selectedkey.

WHEN space.

WHEN OTHERS.

ENDCASE.

WHEN 'BACK'.

ENDCASE.
ENDMETHOD.

METHOD on_init.

MT_t002 = VALUE #( ( id = '1' class = 'Z2UI5_CL_DEMO_APP_132' count = '12' )
( id = '2' class = 'Z2UI5_CL_DEMO_APP_132' count = '80' ) ).

mv_selectedkey = '1'.

ENDMETHOD.

METHOD render_main.
DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).

DATA(page) = view->page( id = `page_main`
title = 'Customizing'
navbuttonpress = client->_event( 'BACK' )
shownavbutton = abap_true
class = 'sapUiContentPadding' ).

DATA(lo_items) = page->icon_tab_bar( class = 'sapUiResponsiveContentPadding'
selectedKey = client->_bind_edit( mv_selectedkey )
select = client->_event( val = 'ONSELECTICONTABBAR' )
)->items( ).

LOOP AT mt_t002 REFERENCE INTO DATA(line).

lo_items->icon_tab_filter( text = line->class
count = line->count
key = line->id ).

lo_items->icon_tab_separator( ).

ENDLOOP.

mo_main_page = lo_items.
ENDMETHOD.

METHOD z2ui5_if_app~main.
me->client = client.

IF check_initialized = abap_false.
check_initialized = abap_true.

on_init( ).

render_Main( ).

ENDIF.

on_event( ).

Render_sub_app( ).
ENDMETHOD.

METHOD Render_sub_app.


READ TABLE mt_t002 REFERENCE INTO DATA(t002)
WITH KEY id = mv_selectedkey.

IF sy-subrc <> 0.
RETURN.
ENDIF.

CASE mv_selectedkey.

WHEN OTHERS.

IF mv_selectedkey <> mv_selectedkey_tmp.

TRY.
client->_bind_clear( `MO_APP` ).
CATCH cx_root.
ENDTRY.

CREATE OBJECT mo_app TYPE (t002->class).

ENDIF.
TRY.

CALL METHOD mo_app->('SET_APP_DATA')
EXPORTING data = t002->count.

render_Main( ).

ASSIGN mo_app->('MO_PARENT_VIEW') TO FIELD-SYMBOL(<view>).
IF <view> IS ASSIGNED.
<view> = mo_main_page.
ENDIF.

CALL METHOD mo_app->('Z2UI5_IF_APP~MAIN')
EXPORTING client = client.

CATCH cx_root.
RETURN.
ENDTRY.

ENDCASE.

client->view_model_update( ).

FIELD-SYMBOLS <view_display> type any.

ASSIGN mo_app->('MV_VIEW_DISPLAY') to <view_display>.

IF <view_display> = abap_true.
<view_display> = abap_false.
client->view_display( mo_main_page->stringify( ) ).
ENDIF.

IF mv_selectedkey <> mv_selectedkey_tmp.

client->view_display( mo_main_page->stringify( ) ).

mv_selectedkey_tmp = mv_selectedkey.

ENDIF.
ENDMETHOD.

ENDCLASS.
16 changes: 16 additions & 0 deletions src/z2ui5_cl_demo_app_131.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_131</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>App in App</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>
101 changes: 101 additions & 0 deletions src/z2ui5_cl_demo_app_132.clas.abap
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
CLASS z2ui5_cl_demo_app_132 DEFINITION
PUBLIC
CREATE PUBLIC.

PUBLIC SECTION.

INTERFACES if_serializable_object.
INTERFACES z2ui5_if_app.

DATA mv_view_display TYPE abap_bool.
DATA mo_parent_view TYPE REF TO z2ui5_cl_xml_view.

DATA mv_perc type string.

methods set_app_data
importing
!DATA type STRING .

PROTECTED SECTION.


DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.

METHODS on_init.
METHODS on_event.

METHODS Render_main.

PRIVATE SECTION.

ENDCLASS.

CLASS z2ui5_cl_demo_app_132 IMPLEMENTATION.

METHOD on_event.
CASE client->get( )-event.

WHEN 'BACK'.

client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).

ENDCASE.
ENDMETHOD.

METHOD on_init.
Render_main( ).
ENDMETHOD.

METHOD render_main.

IF mo_parent_view IS INITIAL.

DATA(page) = z2ui5_cl_xml_view=>factory( ).

ELSE.

page = mo_parent_view->get( `Page` ).

ENDIF.

DATA(layout) = page->vertical_layout( class = `sapUiContentPadding` width = `100%` ).
layout->label( 'ProgressIndicator'
)->progress_indicator(
percentvalue = mv_perc
displayvalue = '0,44GB of 32GB used'
showvalue = abap_true
state = 'Success' ).


IF mo_parent_view IS INITIAL.

client->view_display( page->get_root( )->xml_get( ) ).

ELSE.

mv_view_display = abap_true.

ENDIF.
ENDMETHOD.

METHOD z2ui5_if_app~main.
me->client = client.

IF check_initialized = abap_false.
check_initialized = abap_true.

on_init( ).

ENDIF.

on_event( ).
ENDMETHOD.

METHOD set_app_data.

mv_perc = data.

ENDMETHOD.

ENDCLASS.
16 changes: 16 additions & 0 deletions src/z2ui5_cl_demo_app_132.clas.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>Z2UI5_CL_DEMO_APP_132</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>App in App</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>