Skip to content

Commit a867232

Browse files
author
Viktor Hoffmann
committed
New RTTI Sample Cell Binding
1 parent f3e52f3 commit a867232

File tree

5 files changed

+181
-0
lines changed

5 files changed

+181
-0
lines changed

src/z2ui5_cl_demo_app_331.clas.abap

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION.
3535

3636
ENDCASE.
3737

38+
client->view_model_update( ).
39+
3840
ENDMETHOD.
3941

4042
METHOD ui5_view_display.
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
CLASS z2ui5_cl_demo_app_332 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES z2ui5_if_app.
5+
6+
DATA ms_struc TYPE z2ui5_t_01.
7+
DATA mo_table_obj TYPE REF TO z2ui5_cl_demo_app_333.
8+
9+
METHODS get_data.
10+
11+
METHODS ui5_view_display
12+
IMPORTING
13+
!client TYPE REF TO z2ui5_if_client.
14+
15+
PROTECTED SECTION.
16+
17+
PRIVATE SECTION.
18+
ENDCLASS.
19+
20+
21+
CLASS z2ui5_cl_demo_app_332 IMPLEMENTATION.
22+
23+
METHOD z2ui5_if_app~main.
24+
25+
IF client->check_on_init( ).
26+
27+
get_data( ).
28+
29+
mo_table_obj = z2ui5_cl_demo_app_333=>factory( REF #( ms_struc ) ).
30+
31+
ui5_view_display( client ).
32+
33+
ENDIF.
34+
35+
CASE client->get( )-event.
36+
37+
WHEN 'BACK'.
38+
39+
client->nav_app_leave( ).
40+
41+
ENDCASE.
42+
43+
44+
client->view_model_update( ).
45+
46+
ENDMETHOD.
47+
48+
METHOD ui5_view_display.
49+
50+
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
51+
navbuttonpress = client->_event( 'BACK' )
52+
shownavbutton = client->check_app_prev_stack( ) ).
53+
54+
page->button( text = 'GO'
55+
press = client->_event( 'GO' )
56+
type = 'Success' ).
57+
58+
DATA(form) = page->simple_form( editable = abap_true
59+
layout = `ResponsiveGridLayout`
60+
adjustlabelspan = abap_true
61+
)->content( ns = `form` ).
62+
63+
DATA(index) = 0.
64+
65+
LOOP AT mo_table_obj->mt_layout REFERENCE INTO DATA(layout).
66+
67+
index += 1.
68+
69+
ASSIGN COMPONENT layout->name OF STRUCTURE mo_table_obj->mr_data->* TO FIELD-SYMBOL(<value>).
70+
" assign component layout->name of structure ms_struc to field-symbol(<value>).
71+
IF <value> IS NOT ASSIGNED.
72+
RETURN.
73+
ENDIF.
74+
75+
DATA(line) = form->label( wrapping = abap_false
76+
text = layout->name ).
77+
78+
line->input( value = client->_bind( <value> )
79+
visible = client->_bind( val = layout->visible
80+
tab = mo_table_obj->mt_layout
81+
tab_index = index )
82+
enabled = abap_false ).
83+
ENDLOOP.
84+
85+
client->view_display( page ).
86+
87+
ENDMETHOD.
88+
89+
METHOD get_data.
90+
91+
SELECT SINGLE * FROM z2ui5_t_01
92+
INTO CORRESPONDING FIELDS OF @ms_STRUC.
93+
94+
ENDMETHOD.
95+
96+
ENDCLASS.

src/z2ui5_cl_demo_app_332.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_332</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>RTTI - Struc wit Cell Binding</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: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
CLASS z2ui5_cl_demo_app_333 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES if_serializable_object.
5+
6+
TYPES:
7+
BEGIN OF ty_s_layout,
8+
name TYPE string,
9+
visible TYPE abap_bool,
10+
END OF ty_s_layout.
11+
TYPES ty_t_layout TYPE STANDARD TABLE OF ty_s_layout WITH EMPTY KEY.
12+
13+
DATA mt_layout TYPE ty_t_layout.
14+
DATA mr_data TYPE REF TO data.
15+
16+
CLASS-METHODS factory
17+
IMPORTING
18+
i_data TYPE REF TO data
19+
RETURNING
20+
VALUE(result) TYPE REF TO z2ui5_cl_demo_app_333.
21+
22+
PROTECTED SECTION.
23+
24+
PRIVATE SECTION.
25+
ENDCLASS.
26+
27+
28+
CLASS z2ui5_cl_demo_app_333 IMPLEMENTATION.
29+
30+
METHOD factory.
31+
32+
result = NEW #( ).
33+
34+
DATA(t_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_any( i_data ).
35+
36+
LOOP AT t_comp INTO DATA(comp).
37+
38+
APPEND INITIAL LINE TO result->mt_layout REFERENCE INTO DATA(layout).
39+
40+
layout->name = comp-name.
41+
IF sy-tabix < 4.
42+
layout->visible = abap_true.
43+
ENDIF.
44+
45+
ENDLOOP.
46+
47+
result->mr_data = i_data.
48+
49+
ENDMETHOD.
50+
51+
ENDCLASS.

src/z2ui5_cl_demo_app_333.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_333</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Data Object for Sample 331</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)