Skip to content

Commit b87831e

Browse files
abapsheepViktor Hoffmannoblomov-dev
authored
New RTTI Sample - Dynamic Ref´s with Data Binding (#510)
* Update * Update Sample RTTI+Sub APP * Update RTTI Samples * Update * RTTI Sample * Update New RTTI Sample with Dynamic REF´s --------- Co-authored-by: Viktor Hoffmann <viktor.hoffmann@swisskrono.com> Co-authored-by: oblomov-dev <102328295+oblomov-dev@users.noreply.github.com>
1 parent 62115dc commit b87831e

5 files changed

+86
-91
lines changed

src/z2ui5_cl_demo_app_000.clas.abap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
360360
).
361361

362362
panel->generic_tile( header = 'Dynamic Objects IV'
363-
subheader = 'User Generic Data Refs from Prev App'
363+
subheader = 'User Generic Data Refs'
364364
press = client->_event( 'ZZ2UI5_CL_DEMO_APP_328' )
365365
mode = 'LineMode'
366366
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'

src/z2ui5_cl_demo_app_328.clas.abap

Lines changed: 76 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@ CLASS z2ui5_cl_demo_app_328 DEFINITION PUBLIC.
33
PUBLIC SECTION.
44
INTERFACES z2ui5_if_app.
55

6-
DATA mt_table TYPE STANDARD TABLE OF z2ui5_t_01.
6+
DATA mt_table TYPE REF TO data.
7+
DATA mt_comp TYPE cl_abap_structdescr=>component_table.
8+
DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_329.
79

8-
DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_330.
9-
10-
DATA client TYPE REF TO z2ui5_if_client.
10+
DATA client TYPE REF TO z2ui5_if_client.
1111

1212
PROTECTED SECTION.
13+
METHODS get_data.
1314

1415
PRIVATE SECTION.
1516
METHODS ui5_view_display.
@@ -23,41 +24,94 @@ CLASS z2ui5_cl_demo_app_328 IMPLEMENTATION.
2324
me->client = client.
2425

2526
IF client->check_on_init( ).
26-
ui5_view_display( ).
27-
ENDIF.
2827

29-
CASE client->get( )-event.
28+
get_data( ).
3029

31-
WHEN 'BUTTON_POPUP'.
30+
mo_table_obj = z2ui5_cl_demo_app_329=>factory( mt_table ).
3231

33-
SELECT * FROM z2ui5_t_01 INTO TABLE @mt_table UP TO 10 ROWS.
32+
ui5_view_display( ).
3433

35-
mo_table_obj = z2ui5_cl_demo_app_330=>factory( REF #( mt_table ) ).
34+
ENDIF.
3635

37-
client->nav_app_call( z2ui5_cl_demo_app_329=>factory( mo_table_obj ) ).
36+
CASE client->get( )-event.
3837

3938
WHEN 'BACK'.
4039
client->nav_app_leave( ).
4140

41+
WHEN 'SELECTION_CHANGE' OR 'GO'.
42+
43+
IF mt_table->* <> mo_table_obj->mr_data->*.
44+
client->message_toast_display( 'Error - MT_TABLE <> MO_TABLE_OBJ->MR_TABLE_DATA' ).
45+
ENDIF.
46+
4247
ENDCASE.
4348

4449
ENDMETHOD.
4550

4651
METHOD ui5_view_display.
4752

48-
DATA(lo_main) = z2ui5_cl_xml_view=>factory( )->shell( ).
49-
DATA(page) = lo_main->page( title = 'abap2UI5 - Popups'
50-
navbuttonpress = client->_event( val = 'BACK' )
51-
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
53+
DATA(page) = z2ui5_cl_xml_view=>factory( ).
54+
55+
page->button( text = 'GO'
56+
press = client->_event( 'GO' )
57+
type = 'Success' ).
58+
59+
DATA(table) = page->table( growing = 'true'
60+
width = 'auto'
61+
items = client->_bind( mt_table->* )
62+
mode = 'MultiSelect'
63+
selectionchange = client->_event( 'SELECTION_CHANGE' ) ).
64+
65+
DATA(columns) = table->columns( ).
66+
67+
LOOP AT mt_comp INTO DATA(comp) WHERE name CP `ID*`.
68+
69+
columns->column( )->text( comp-name ).
70+
71+
ENDLOOP.
72+
73+
DATA(cells) = columns->get_parent( )->items(
74+
)->column_list_item( valign = 'Middle'
75+
type = 'Navigation'
76+
)->cells( ).
77+
78+
LOOP AT mt_comp INTO comp.
79+
cells->object_identifier( text = |\{{ comp-name }\}| ).
80+
ENDLOOP.
81+
82+
client->view_display( page ).
83+
84+
ENDMETHOD.
85+
86+
METHOD get_data.
87+
DATA selkz TYPE abap_bool.
88+
89+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
90+
91+
mt_comp = z2ui5_cl_util=>rtti_get_t_attri_by_table_name( 'Z2UI5_T_01' ).
92+
93+
APPEND LINES OF VALUE cl_abap_structdescr=>component_table(
94+
( name = 'SELKZ'
95+
type = CAST #( cl_abap_datadescr=>describe_by_data( selkz ) ) ) ) TO mt_comp.
96+
97+
TRY.
98+
99+
DATA(new_struct_desc) = cl_abap_structdescr=>create( mt_comp ).
100+
101+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
102+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
103+
104+
CREATE DATA mt_table TYPE HANDLE new_table_desc.
105+
106+
ASSIGN mt_table->* TO <table>.
107+
108+
SELECT * FROM z2ui5_t_01
109+
INTO CORRESPONDING FIELDS OF TABLE @<table>
110+
UP TO 10 ROWS.
52111

53-
" TODO: variable is assigned but never used (ABAP cleaner)
54-
DATA(grid) = page->grid( 'L7 M12 S12' )->content( 'layout'
55-
)->simple_form( 'Popup in new App' )->content( 'form'
56-
)->label( 'Demo'
57-
)->button( text = 'popup with gernic Ref to prev. App'
58-
press = client->_event( 'BUTTON_POPUP' ) ).
112+
CATCH cx_root.
59113

60-
client->view_display( lo_main->stringify( ) ).
114+
ENDTRY.
61115

62116
ENDMETHOD.
63117

src/z2ui5_cl_demo_app_329.clas.abap

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,32 @@
11
CLASS z2ui5_cl_demo_app_329 DEFINITION PUBLIC.
22

33
PUBLIC SECTION.
4-
INTERFACES z2ui5_if_app.
4+
5+
INTERFACES if_serializable_object.
6+
7+
DATA mr_data type ref to data.
58

69
CLASS-METHODS factory
710
IMPORTING
8-
i_data TYPE REF TO z2ui5_cl_demo_app_330
11+
i_data TYPE ref to data
912
RETURNING
1013
VALUE(result) TYPE REF TO z2ui5_cl_demo_app_329.
1114

12-
DATA mo_data TYPE REF TO z2ui5_cl_demo_app_330.
13-
1415
PROTECTED SECTION.
15-
1616
PRIVATE SECTION.
1717
ENDCLASS.
1818

1919

20-
CLASS z2ui5_cl_demo_app_329 IMPLEMENTATION.
20+
21+
CLASS Z2UI5_CL_DEMO_APP_329 IMPLEMENTATION.
2122

2223
METHOD factory.
2324

2425
result = NEW #( ).
2526

26-
result->mo_data = i_data.
27-
28-
ENDMETHOD.
29-
30-
METHOD z2ui5_if_app~main.
31-
32-
33-
IF mo_data->mr_table_data IS NOT INITIAL.
34-
client->message_toast_display( 'Success - Ref works.' ).
35-
client->nav_app_leave( ).
36-
ELSE.
37-
38-
client->message_toast_display( 'Error - Ref not working' ).
39-
client->nav_app_leave( ).
40-
ENDIF.
27+
result->mr_data = i_data.
4128

4229
ENDMETHOD.
4330

4431
ENDCLASS.
32+

src/z2ui5_cl_demo_app_330.clas.abap

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/z2ui5_cl_demo_app_330.clas.xml

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)