Skip to content

Commit c560d28

Browse files
abapsheepViktor Hoffmann
andauthored
RTTI Sample extended (#515)
Co-authored-by: Viktor Hoffmann <viktor.hoffmann@swisskrono.com>
1 parent b229bfa commit c560d28

File tree

1 file changed

+99
-34
lines changed

1 file changed

+99
-34
lines changed

src/z2ui5_cl_demo_app_328.clas.abap

Lines changed: 99 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,81 +3,146 @@ CLASS z2ui5_cl_demo_app_328 DEFINITION PUBLIC.
33
PUBLIC SECTION.
44
INTERFACES z2ui5_if_app.
55

6-
DATA mr_table TYPE REF TO data.
6+
DATA mt_table TYPE REF TO data.
7+
78
DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_329.
89

9-
METHODS ui5_view_display
10-
IMPORTING
11-
client TYPE REF TO z2ui5_if_client.
10+
DATA client TYPE REF TO z2ui5_if_client.
1211

1312
PROTECTED SECTION.
13+
METHODS get_data.
14+
1415
PRIVATE SECTION.
16+
METHODS ui5_view_display.
1517
ENDCLASS.
1618

1719

1820
CLASS z2ui5_cl_demo_app_328 IMPLEMENTATION.
1921

2022
METHOD z2ui5_if_app~main.
2123

24+
me->client = client.
25+
2226
IF client->check_on_init( ).
2327

24-
mr_table = z2ui5_cl_util=>rtti_create_tab_by_name( 'Z2UI5_T_01' ).
25-
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
26-
ASSIGN mr_table->* TO <table>.
28+
get_data( ).
29+
30+
mo_table_obj = z2ui5_cl_demo_app_329=>factory( mt_table ).
2731

28-
SELECT * FROM z2ui5_t_01
29-
INTO CORRESPONDING FIELDS OF TABLE @<table>
30-
UP TO 1 ROWS.
32+
ui5_view_display( ).
3133

32-
mo_table_obj = z2ui5_cl_demo_app_329=>factory( mr_table ).
33-
ui5_view_display( client ).
34-
RETURN.
3534
ENDIF.
3635

3736
CASE client->get( )-event.
37+
3838
WHEN 'BACK'.
3939
client->nav_app_leave( ).
40+
41+
WHEN 'SELECTION_CHANGE'.
42+
43+
client->view_model_update( ).
44+
45+
* IF mt_table->* <> mo_table_obj->mr_data->*.
46+
* client->message_toast_display( 'Error - MT_TABLE <> MO_TABLE_OBJ->MR_TABLE_DATA' ).
47+
* ELSE.
48+
* client->message_toast_display( 'Success - MT_TABLE = MO_TABLE_OBJ->MR_TABLE_DATA' ).
49+
* ENDIF.
50+
4051
WHEN 'GO'.
41-
IF mr_table->* <> mo_table_obj->mr_data->*.
42-
client->message_toast_display( 'Error - MT_TABLE <> MO_TABLE_OBJ->MR_TABLE_DATA' ).
52+
53+
ASSIGN mt_table->* TO FIELD-SYMBOL(<tab>).
54+
55+
LOOP AT <tab> ASSIGNING FIELD-SYMBOL(<line>).
56+
57+
ASSIGN COMPONENT 'SELKZ' OF STRUCTURE <line> TO FIELD-SYMBOL(<selkz>).
58+
IF <selkz> IS NOT ASSIGNED.
59+
CONTINUE.
60+
ENDIF.
61+
62+
IF <selkz> = abap_true.
63+
DATA(okay) = abap_true.
64+
EXIT.
65+
ENDIF.
66+
67+
ENDLOOP.
68+
69+
IF okay = abap_true.
70+
71+
get_data( ).
72+
73+
mo_table_obj = z2ui5_cl_demo_app_329=>factory( mt_table ).
74+
75+
ui5_view_display( ).
76+
77+
IF mt_table->* <> mo_table_obj->mr_data->*.
78+
client->message_toast_display( 'Error - MT_TABLE <> MO_TABLE_OBJ->MR_TABLE_DATA' ).
79+
ELSE.
80+
client->message_toast_display( 'Success - MT_TABLE = MO_TABLE_OBJ->MR_TABLE_DATA' ).
81+
ENDIF.
82+
4383
ELSE.
44-
client->message_toast_display( 'Success - MT_TABLE = MO_TABLE_OBJ->MR_TABLE_DATA' ).
84+
client->message_toast_display( 'Plases select a Line' ).
4585
ENDIF.
86+
4687
ENDCASE.
4788

4889
ENDMETHOD.
4990

5091
METHOD ui5_view_display.
5192

52-
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
53-
navbuttonpress = client->_event( 'BACK' )
54-
shownavbutton = client->check_app_prev_stack( ) ).
93+
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
94+
navbuttonpress = client->_event( 'BACK' )
95+
shownavbutton = client->check_app_prev_stack( ) ).
5596

5697
page->button( text = 'GO'
5798
press = client->_event( 'GO' )
5899
type = 'Success' ).
59100

60-
DATA(table) = page->table( client->_bind( mr_table->* ) ).
101+
page->table( headertext = 'Table'
102+
mode = 'MultiSelect'
103+
items = client->_bind_edit( mt_table->* )
104+
selectionchange = client->_event( 'SELECTION_CHANGE' )
105+
)->columns(
106+
)->column( )->text( 'id '
107+
)->get_parent( )->get_parent(
108+
)->items(
109+
)->column_list_item( selected = '{SELKZ}'
110+
)->cells(
111+
)->text( '{ID}' ).
61112

62-
DATA(columns) = table->columns( ).
63-
DATA(mt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_table_name( 'Z2UI5_T_01' ).
113+
client->view_display( page ).
64114

65-
LOOP AT mt_comp INTO DATA(comp) WHERE name CP `ID*`.
66-
columns->column( )->text( comp-name ).
67-
ENDLOOP.
115+
ENDMETHOD.
68116

69-
DATA(cells) = columns->get_parent( )->items(
70-
)->column_list_item( valign = 'Middle'
71-
type = 'Navigation'
72-
)->cells( ).
117+
METHOD get_data.
118+
DATA selkz TYPE abap_bool.
73119

74-
LOOP AT mt_comp INTO comp.
75-
cells->object_identifier( text = |\{{ comp-name }\}| ).
76-
ENDLOOP.
120+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
77121

78-
client->_bind( mo_table_obj->mr_data->* ).
122+
DATA(t_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_table_name( 'Z2UI5_T_01' ).
79123

80-
client->view_display( page ).
124+
APPEND LINES OF VALUE cl_abap_structdescr=>component_table(
125+
( name = 'SELKZ'
126+
type = CAST #( cl_abap_datadescr=>describe_by_data( selkz ) ) ) ) TO t_comp.
127+
128+
TRY.
129+
130+
DATA(new_struct_desc) = cl_abap_structdescr=>create( t_comp ).
131+
132+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
133+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
134+
135+
CREATE DATA mt_table TYPE HANDLE new_table_desc.
136+
137+
ASSIGN mt_table->* TO <table>.
138+
139+
SELECT id FROM z2ui5_t_01
140+
INTO CORRESPONDING FIELDS OF TABLE @<table>
141+
UP TO 4 ROWS.
142+
143+
CATCH cx_root.
144+
145+
ENDTRY.
81146

82147
ENDMETHOD.
83148

0 commit comments

Comments
 (0)