Skip to content

Commit 21feab7

Browse files
abapsheepViktor Hoffmann
andauthored
New RTTI Samples (#530)
Co-authored-by: Viktor Hoffmann <[email protected]>
1 parent da7e3df commit 21feab7

9 files changed

+629
-2
lines changed

src/z2ui5_cl_demo_app_000.clas.abap

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1971,6 +1971,19 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
19711971
mode = 'LineMode'
19721972
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
19731973
).
1974+
panel->generic_tile( header = 'Model XI'
1975+
subheader = 'Popups Flow Logic'
1976+
press = client->_event( 'Z2UI5_CL_DEMO_APP_341' )
1977+
mode = 'LineMode'
1978+
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
1979+
).
1980+
panel->generic_tile( header = 'Model XII'
1981+
subheader = 'Many Sub Objects with Ref'
1982+
press = client->_event( 'Z2UI5_CL_DEMO_APP_343' )
1983+
mode = 'LineMode'
1984+
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
1985+
).
1986+
19741987

19751988
panel->generic_tile( header = 'Date Format Error in internal table'
19761989
subheader = ''

src/z2ui5_cl_demo_app_338.clas.abap

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,8 @@ CLASS z2ui5_cl_demo_app_338 IMPLEMENTATION.
6161
METHOD on_init.
6262

6363
MT_T002 = VALUE #( ( ID = '1' CLASS = 'Z2UI5_CL_DEMO_APP_339' TABLE = 'Z2UI5_T_01' )
64-
( ID = '2' CLASS = 'Z2UI5_CL_DEMO_APP_339' TABLE = 'Z2UI5_T_01' ) ).
64+
( ID = '2' CLASS = 'Z2UI5_CL_DEMO_APP_342' TABLE = 'Z2UI5_T_01' )
65+
( ID = '3' CLASS = 'Z2UI5_CL_DEMO_APP_339' TABLE = 'Z2UI5_T_01' ) ).
6566

6667
mv_selectedkey = '1'.
6768

src/z2ui5_cl_demo_app_340.clas.abap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ CLASS z2ui5_cl_demo_app_340 DEFINITION
1515
CLASS-METHODS factory
1616
IMPORTING
1717
io_table TYPE REF TO data
18-
io_layout TYPE REF TO z2ui5_cl_demo_app_333
18+
io_layout TYPE REF TO z2ui5_cl_demo_app_333 OPTIONAL
1919
RETURNING
2020
VALUE(result) TYPE REF TO z2ui5_cl_demo_app_340.
2121

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
CLASS z2ui5_cl_demo_app_341 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES z2ui5_if_app.
5+
6+
DATA client TYPE REF TO z2ui5_if_client.
7+
8+
TYPES:
9+
BEGIN OF ty_s_table,
10+
value TYPE string,
11+
index TYPE string,
12+
END OF ty_s_table.
13+
TYPES ty_t_table TYPE STANDARD TABLE OF ty_s_table WITH EMPTY KEY.
14+
15+
DATA mo_layout1 TYPE REF TO z2ui5_cl_demo_app_333.
16+
* DATA mo_layout type ref to z2ui5_cl_layo_manager .
17+
18+
METHODS ui5_view_display.
19+
20+
DATA mt_table TYPE ty_t_table.
21+
22+
PROTECTED SECTION.
23+
24+
PRIVATE SECTION.
25+
ENDCLASS.
26+
27+
28+
CLASS z2ui5_cl_demo_app_341 IMPLEMENTATION.
29+
30+
METHOD ui5_view_display.
31+
32+
DATA(lo_main) = z2ui5_cl_xml_view=>factory( )->shell( ).
33+
DATA(page) = lo_main->page( title = 'abap2UI5 - Popups'
34+
navbuttonpress = client->_event( val = 'BACK' )
35+
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
36+
37+
" TODO: variable is assigned but never used (ABAP cleaner)
38+
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout'
39+
)->simple_form( 'Popups' )->content( 'form'
40+
)->label( 'Demo'
41+
)->button( text = 'Popup to Select'
42+
press = client->_event( val = 'BUTTON_POPUP_01' )
43+
)->label( 'Demo'
44+
)->button( text = 'other Popup'
45+
press = client->_event( val = 'BUTTON_POPUP_02' ) ).
46+
47+
client->view_display( lo_main->stringify( ) ).
48+
49+
ENDMETHOD.
50+
51+
METHOD z2ui5_if_app~main.
52+
53+
me->client = client.
54+
55+
IF client->get( )-check_on_navigated = abap_true.
56+
ui5_view_display( ).
57+
58+
mt_table = VALUE ty_t_table( index = 1
59+
value = 10
60+
( )
61+
( ) ).
62+
63+
ENDIF.
64+
65+
CASE client->get( )-event.
66+
67+
WHEN 'BUTTON_POPUP_01'.
68+
69+
client->nav_app_call( z2ui5_cl_pop_to_select=>factory( i_tab = mt_table
70+
i_multiselect = abap_false
71+
i_event_confirmed = 'POPUP_CONFIRMED'
72+
i_event_canceled = 'POPUP_CANCEL' ) ).
73+
74+
WHEN 'BUTTON_POPUP_02'.
75+
76+
* mo_layout = z2ui5_cl_layo_manager=>factory( control = z2ui5_cl_layo_manager=>m_table
77+
* data = REF #( mt_table ) ).
78+
*
79+
* client->nav_app_call( z2ui5_cl_layo_pop=>factory( layout = mo_layout ) ).
80+
81+
mo_layout1 = z2ui5_cl_demo_app_333=>factory( i_data = REF #( mt_table )
82+
vis_cols = 5 ).
83+
84+
client->nav_app_call( z2ui5_cl_demo_app_340=>factory( io_table = REF #( mt_table )
85+
io_layout = mo_layout1 ) ).
86+
87+
WHEN 'BACK'.
88+
89+
client->nav_app_leave( ).
90+
91+
ENDCASE.
92+
93+
ENDMETHOD.
94+
95+
ENDCLASS.

src/z2ui5_cl_demo_app_341.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_341</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>basic - popups and flow</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: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
CLASS z2ui5_cl_demo_app_342 DEFINITION
2+
PUBLIC
3+
CREATE PUBLIC.
4+
5+
PUBLIC SECTION.
6+
INTERFACES z2ui5_if_app.
7+
8+
DATA mv_view_display TYPE abap_bool.
9+
DATA mo_parent_view TYPE REF TO z2ui5_cl_xml_view.
10+
DATA mv_init TYPE abap_bool.
11+
DATA mv_table TYPE string.
12+
13+
DATA mt_DATA_tmp TYPE REF TO data.
14+
DATA mt_data TYPE REF TO data.
15+
16+
DATA mo_lay TYPE REF TO z2ui5_cl_demo_app_333.
17+
18+
METHODS set_app_data
19+
IMPORTING
20+
!table TYPE string.
21+
22+
PROTECTED SECTION.
23+
METHODS on_init.
24+
METHODS on_event IMPORTING !client TYPE REF TO z2ui5_if_client.
25+
26+
METHODS render_main IMPORTING !client TYPE REF TO z2ui5_if_client.
27+
METHODS get_data.
28+
29+
PRIVATE SECTION.
30+
METHODS get_comp
31+
RETURNING
32+
VALUE(result) TYPE abap_component_tab.
33+
ENDCLASS.
34+
35+
36+
CLASS z2ui5_cl_demo_app_342 IMPLEMENTATION.
37+
38+
METHOD get_comp.
39+
40+
DATA selkz TYPE abap_bool.
41+
42+
IF mv_table IS INITIAL.
43+
mv_table = 'Z2UI5_T_01'.
44+
ENDIF.
45+
46+
TRY.
47+
TRY.
48+
49+
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = mv_table
50+
RECEIVING p_descr_ref = DATA(typedesc)
51+
EXCEPTIONS type_not_found = 1
52+
OTHERS = 2 ).
53+
54+
DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
55+
56+
DATA(comp) = structdesc->get_components( ).
57+
58+
LOOP AT comp INTO DATA(com).
59+
60+
IF com-as_include = abap_false.
61+
62+
APPEND com TO result.
63+
64+
ENDIF.
65+
66+
ENDLOOP.
67+
68+
CATCH cx_root INTO DATA(root). " TODO: variable is assigned but never used (ABAP cleaner)
69+
70+
ENDTRY.
71+
72+
DATA(component) = VALUE cl_abap_structdescr=>component_table(
73+
( name = 'SELKZ'
74+
type = CAST #( cl_abap_datadescr=>describe_by_data( selkz ) ) ) ).
75+
76+
APPEND LINES OF component TO result.
77+
78+
CATCH cx_root.
79+
ENDTRY.
80+
81+
ENDMETHOD.
82+
83+
METHOD on_event.
84+
CASE client->get( )-event.
85+
86+
WHEN 'SELECTION_CHANGE'.
87+
88+
client->nav_app_call( Z2UI5_CL_DEMO_APP_340=>factory(
89+
io_table = mt_data
90+
io_layout = mo_lay ) ).
91+
92+
WHEN 'BACK'.
93+
94+
client->nav_app_leave( ).
95+
96+
ENDCASE.
97+
ENDMETHOD.
98+
99+
METHOD on_init.
100+
101+
ENDMETHOD.
102+
103+
METHOD render_main.
104+
105+
IF mo_parent_view IS INITIAL.
106+
107+
DATA(page) = z2ui5_cl_xml_view=>factory( ).
108+
109+
ELSE.
110+
111+
page = mo_parent_view->get( `Page` ).
112+
113+
ENDIF.
114+
115+
mo_lay = z2ui5_cl_demo_app_333=>factory( i_data = mt_data
116+
vis_cols = 5 ).
117+
118+
DATA(table) = page->table( width = 'auto'
119+
mode = 'SingleSelectLeft'
120+
selectionchange = client->_event( 'SELECTION_CHANGE' )
121+
items = client->_bind_edit( val = mt_data->* ) ).
122+
123+
DATA(columns) = table->columns( ).
124+
125+
LOOP AT mo_lay->ms_data-t_layout REFERENCE INTO DATA(layout).
126+
DATA(lv_index) = sy-tabix.
127+
128+
columns->column( visible = client->_bind( val = layout->visible
129+
tab = mo_lay->ms_data-t_layout
130+
tab_index = lv_index )
131+
)->text( layout->name ).
132+
133+
ENDLOOP.
134+
135+
DATA(column_list_item) = columns->get_parent( )->items(
136+
)->column_list_item( valign = 'Middle'
137+
type = `Inactive`
138+
selected = `{SELKZ}` ).
139+
140+
DATA(cells) = column_list_item->cells( ).
141+
142+
LOOP AT mo_lay->ms_data-t_layout REFERENCE INTO layout.
143+
144+
lv_index = sy-tabix.
145+
146+
cells->object_identifier( text = |\{{ layout->name }\}| ). "."|\{{ layout->fname }\}| ).
147+
148+
ENDLOOP.
149+
150+
IF mo_parent_view IS INITIAL.
151+
152+
client->view_display( page->get_root( )->xml_get( ) ).
153+
154+
ELSE.
155+
156+
mv_view_display = abap_true.
157+
158+
ENDIF.
159+
ENDMETHOD.
160+
161+
METHOD set_app_data.
162+
163+
mv_table = table.
164+
165+
ENDMETHOD.
166+
167+
METHOD z2ui5_if_app~main.
168+
169+
IF mv_init IS INITIAL.
170+
mv_init = abap_true.
171+
172+
get_data( ).
173+
174+
render_main( client ).
175+
176+
ENDIF.
177+
178+
IF mo_lay->mr_data->* <> mt_data->*.
179+
client->message_toast_display( 'ERROR - mo_layout->mr_data->* ne mt_table->*' ).
180+
ENDIF.
181+
182+
on_event( client ).
183+
184+
ENDMETHOD.
185+
186+
METHOD get_data.
187+
188+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
189+
190+
DATA(t_comp) = get_comp( ).
191+
TRY.
192+
193+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
194+
195+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
196+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
197+
198+
CREATE DATA mt_data TYPE HANDLE new_table_desc.
199+
CREATE DATA mt_DATA_tmp TYPE HANDLE new_table_desc.
200+
201+
ASSIGN mt_data->* TO <table>.
202+
203+
SELECT *
204+
FROM (mv_table)
205+
INTO CORRESPONDING FIELDS OF TABLE @<table>
206+
UP TO 5 ROWS.
207+
208+
SORT <table>.
209+
210+
CATCH cx_root.
211+
212+
ENDTRY.
213+
214+
mt_DATA_tmp = mt_data.
215+
216+
ENDMETHOD.
217+
218+
ENDCLASS.

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