Skip to content

Commit f10ec72

Browse files
abapsheepViktor Hoffmann
andauthored
New RTTI Sample Cell Binding (#521)
* New RTTI Sample Cell Binding * Update * RTTI Sample Cell Binding --------- Co-authored-by: Viktor Hoffmann <viktor.hoffmann@swisskrono.com>
1 parent f3e52f3 commit f10ec72

8 files changed

+201
-5
lines changed

src/z2ui5_cl_demo_app_000.clas.abap

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,6 +1940,14 @@ CLASS z2ui5_cl_demo_app_000 IMPLEMENTATION.
19401940
mode = 'LineMode'
19411941
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
19421942
).
1943+
panel->generic_tile( header = 'Model VI'
1944+
subheader = 'RTTI Data - Struc and Cell Binding'
1945+
press = client->_event( 'Z2UI5_CL_DEMO_APP_332' )
1946+
mode = 'LineMode'
1947+
class = 'sapUiTinyMarginEnd sapUiTinyMarginBottom'
1948+
).
1949+
1950+
19431951

19441952

19451953
panel->generic_tile( header = 'Date Format Error in internal table'

src/z2ui5_cl_demo_app_330.clas.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<VSEOCLASS>
66
<CLSNAME>Z2UI5_CL_DEMO_APP_330</CLSNAME>
77
<LANGU>E</LANGU>
8-
<DESCRIPT>basic - popups with ref from prev App</DESCRIPT>
8+
<DESCRIPT>RTTI with Struc</DESCRIPT>
99
<STATE>1</STATE>
1010
<CLSCCINCL>X</CLSCCINCL>
1111
<FIXPT>X</FIXPT>

src/z2ui5_cl_demo_app_331.clas.abap

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION.
2424

2525
IF client->check_on_init( ).
2626
get_data( ).
27-
mo_table_obj = z2ui5_cl_demo_app_329=>factory( ref #( ms_struc ) ).
27+
mo_table_obj = z2ui5_cl_demo_app_329=>factory( REF #( ms_struc ) ).
2828
ui5_view_display( client ).
2929
ENDIF.
3030

@@ -35,6 +35,12 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION.
3535

3636
ENDCASE.
3737

38+
IF ms_struc IS INITIAL.
39+
client->message_toast_display( 'ERROR - MS_STRUC is initial!' ).
40+
ENDIF.
41+
42+
client->view_model_update( ).
43+
3844
ENDMETHOD.
3945

4046
METHOD ui5_view_display.
@@ -84,8 +90,8 @@ CLASS z2ui5_cl_demo_app_331 IMPLEMENTATION.
8490
*
8591
* ASSIGN ms_struc->* TO FIELD-SYMBOL(<struc>).
8692

87-
SELECT SINGLE * FROM z2ui5_t_01
88-
INTO CORRESPONDING FIELDS OF @ms_STRUC.
93+
SELECT SINGLE * FROM z2ui5_t_01
94+
INTO CORRESPONDING FIELDS OF @ms_STRUC.
8995

9096
* CATCH cx_root.
9197

src/z2ui5_cl_demo_app_331.clas.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<VSEOCLASS>
66
<CLSNAME>Z2UI5_CL_DEMO_APP_331</CLSNAME>
77
<LANGU>E</LANGU>
8-
<DESCRIPT>basic - popups with ref from prev App</DESCRIPT>
8+
<DESCRIPT>RTTI - Struc</DESCRIPT>
99
<STATE>1</STATE>
1010
<CLSCCINCL>X</CLSCCINCL>
1111
<FIXPT>X</FIXPT>

src/z2ui5_cl_demo_app_332.clas.abap

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
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+
IF ms_struc IS INITIAL.
44+
client->message_toast_display( 'ERROR - MS_STRUC is initial!' ).
45+
ENDIF.
46+
47+
client->view_model_update( ).
48+
49+
ENDMETHOD.
50+
51+
METHOD ui5_view_display.
52+
53+
DATA(page) = z2ui5_cl_xml_view=>factory( )->shell( )->page( title = 'RTTI IV'
54+
navbuttonpress = client->_event( 'BACK' )
55+
shownavbutton = client->check_app_prev_stack( ) ).
56+
57+
page->button( text = 'GO'
58+
press = client->_event( 'GO' )
59+
type = 'Success' ).
60+
61+
DATA(form) = page->simple_form( editable = abap_true
62+
layout = `ResponsiveGridLayout`
63+
adjustlabelspan = abap_true
64+
)->content( ns = `form` ).
65+
66+
DATA(index) = 0.
67+
68+
LOOP AT mo_table_obj->mt_layout REFERENCE INTO DATA(layout).
69+
70+
index = index + 1.
71+
72+
ASSIGN COMPONENT layout->name OF STRUCTURE mo_table_obj->mr_data->* TO FIELD-SYMBOL(<value>).
73+
" assign component layout->name of structure ms_struc to field-symbol(<value>).
74+
IF <value> IS NOT ASSIGNED.
75+
RETURN.
76+
ENDIF.
77+
78+
DATA(line) = form->label( wrapping = abap_false
79+
text = layout->name ).
80+
81+
line->input( value = client->_bind( <value> )
82+
visible = client->_bind( val = layout->visible
83+
tab = mo_table_obj->mt_layout
84+
tab_index = index )
85+
enabled = abap_false ).
86+
ENDLOOP.
87+
88+
client->view_display( page ).
89+
90+
ENDMETHOD.
91+
92+
METHOD get_data.
93+
94+
SELECT SINGLE * FROM z2ui5_t_01
95+
INTO CORRESPONDING FIELDS OF @ms_STRUC.
96+
97+
ENDMETHOD.
98+
99+
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>

src/z2ui5_cl_demo_app_333.clas.abap

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)