Skip to content

Commit e3c2f28

Browse files
authored
Update Sample 190 (#175)
1 parent 24a5d82 commit e3c2f28

7 files changed

+506
-5
lines changed

src/z2ui5_cl_demo_app_005.clas.abap

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,39 @@
1-
CLASS Z2UI5_CL_DEMO_APP_005 DEFINITION PUBLIC.
1+
CLASS z2ui5_cl_demo_app_005 DEFINITION PUBLIC.
22

33
PUBLIC SECTION.
44

5-
INTERFACES Z2UI5_if_app.
5+
INTERFACES z2ui5_if_app.
6+
7+
DATA value1 TYPE int4.
8+
DATA value2 TYPE int4.
9+
DATA initialized TYPE abap_bool.
610

711
PROTECTED SECTION.
812
PRIVATE SECTION.
913
ENDCLASS.
1014

1115

1216

13-
CLASS Z2UI5_CL_DEMO_APP_005 IMPLEMENTATION.
17+
CLASS z2ui5_cl_demo_app_005 IMPLEMENTATION.
18+
1419

20+
METHOD z2ui5_if_app~main.
1521

16-
METHOD Z2UI5_if_app~main.
22+
IF initialized = abap_false.
23+
initialized = abap_true.
24+
value1 = 10.
25+
value2 = 90.
26+
ENDIF.
1727

1828
CASE client->get( )-event.
1929

2030
WHEN 'BACK'.
2131
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
2232

33+
WHEN 'SLIDER_CHANGE'.
34+
35+
client->message_toast_display( |Range Slider { cl_abap_char_utilities=>newline }value1 { value1 } { cl_abap_char_utilities=>newline }value2 { value2 }| ).
36+
2337
ENDCASE.
2438

2539
DATA(view) = z2ui5_cl_xml_view=>factory( ).
@@ -44,6 +58,9 @@ CLASS Z2UI5_CL_DEMO_APP_005 IMPLEMENTATION.
4458
labelinterval = '2'
4559
width = '80%'
4660
class = 'sapUiTinyMargin'
61+
value = client->_bind_edit( value1 )
62+
value2 = client->_bind_edit( value2 )
63+
change = client->_event( 'SLIDER_CHANGE' )
4764
).
4865
client->view_display( view->stringify( ) ).
4966

src/z2ui5_cl_demo_app_190.clas.abap

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ CLASS z2ui5_cl_demo_app_190 DEFINITION
1111
DATA mv_table TYPE string.
1212
DATA mt_table TYPE REF TO data.
1313
DATA mt_table_tmp TYPE REF TO data.
14+
* DATA ms_table_row TYPE REF TO data.
1415
DATA mt_comp TYPE abap_component_tab.
1516
DATA ms_fixval TYPE REF TO data.
1617

@@ -39,6 +40,9 @@ ENDCLASS.
3940
CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.
4041

4142
METHOD on_event.
43+
44+
FIELD-SYMBOLS <row> TYPE any.
45+
4246
CASE client->get( )-event.
4347

4448
WHEN 'BACK'.
@@ -87,6 +91,12 @@ CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.
8791
cells->object_identifier( text = '{' && comp-name && '}' ).
8892
ENDLOOP.
8993

94+
page->footer( )->overflow_toolbar(
95+
)->toolbar_spacer(
96+
)->button( text = 'Save'
97+
press = client->_event( 'BUTTON' )
98+
type = 'Success' ).
99+
90100
IF mo_parent_view IS INITIAL.
91101

92102
client->view_display( page->get_root( )->xml_get( ) ).
@@ -112,6 +122,8 @@ CLASS z2ui5_cl_demo_app_190 IMPLEMENTATION.
112122
ENDMETHOD.
113123

114124
METHOD set_app_data.
125+
" TODO: parameter COUNT is never used (ABAP cleaner)
126+
115127
mv_table = table.
116128
ENDMETHOD.
117129

src/z2ui5_cl_demo_app_193.clas.abap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ CLASS z2ui5_cl_demo_app_193 IMPLEMENTATION.
3333

3434
METHOD xml_parse.
3535

36-
IF mt_kopf_xml IS NOT INITIAL.
36+
IF mt_pos_xml IS NOT INITIAL.
3737
mt_kopf = z2ui5_cl_util_api=>xml_srtti_parse( mt_kopf_xml ).
3838
CLEAR mt_kopf_xml.
3939
ENDIF.
Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
CLASS z2ui5_cl_demo_app_194 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+
11+
DATA mv_table TYPE string.
12+
DATA mt_table TYPE REF TO data.
13+
DATA mt_table_tmp TYPE REF TO data.
14+
DATA ms_table_row TYPE REF TO data.
15+
DATA mt_comp TYPE abap_component_tab.
16+
DATA ms_fixval TYPE REF TO data.
17+
18+
METHODS set_app_data
19+
IMPORTING !count TYPE string
20+
!table TYPE string.
21+
22+
PROTECTED SECTION.
23+
DATA client TYPE REF TO z2ui5_if_client.
24+
DATA check_initialized TYPE abap_bool.
25+
26+
METHODS on_init.
27+
METHODS on_event.
28+
29+
METHODS render_main.
30+
31+
PRIVATE SECTION.
32+
METHODS get_data.
33+
34+
METHODS get_comp
35+
RETURNING VALUE(result) TYPE abap_component_tab.
36+
37+
METHODS get_fixval.
38+
ENDCLASS.
39+
40+
CLASS z2ui5_cl_demo_app_194 IMPLEMENTATION.
41+
42+
METHOD on_event.
43+
44+
FIELD-SYMBOLS <row> TYPE any.
45+
46+
CASE client->get( )-event.
47+
48+
WHEN 'BACK'.
49+
50+
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
51+
52+
WHEN 'BUTTON'.
53+
54+
LOOP AT mt_comp REFERENCE INTO DATA(comp).
55+
56+
ASSIGN ms_table_row->* TO <row>.
57+
ASSIGN COMPONENT comp->name OF STRUCTURE <row> TO FIELD-SYMBOL(<val>).
58+
IF <val> IS NOT ASSIGNED.
59+
CONTINUE.
60+
ELSE.
61+
62+
client->_bind( val = <val> ).
63+
64+
ENDIF.
65+
66+
ENDLOOP.
67+
68+
ENDCASE.
69+
ENDMETHOD.
70+
71+
METHOD on_init.
72+
get_data( ).
73+
render_main( ).
74+
ENDMETHOD.
75+
76+
METHOD render_main.
77+
78+
IF mo_parent_view IS INITIAL.
79+
DATA(page) = z2ui5_cl_xml_view=>factory( ).
80+
ELSE.
81+
page = mo_parent_view->get( `Page` ).
82+
ENDIF.
83+
84+
FIELD-SYMBOLS <tab> TYPE data.
85+
ASSIGN mt_table->* TO <tab>.
86+
87+
DATA(table) = page->table( growing = 'true'
88+
width = 'auto'
89+
items = client->_bind( <tab> )
90+
* headertext = mv_table
91+
).
92+
93+
DATA(columns) = table->columns( ).
94+
95+
LOOP AT mt_comp INTO DATA(comp).
96+
97+
columns->column( )->text( comp-name ).
98+
99+
ENDLOOP.
100+
101+
DATA(cells) = columns->get_parent( )->items(
102+
)->column_list_item( valign = 'Middle'
103+
type = 'Navigation'
104+
)->cells( ).
105+
106+
LOOP AT mt_comp INTO comp.
107+
cells->object_identifier( text = '{' && comp-name && '}' ).
108+
ENDLOOP.
109+
110+
page->footer( )->overflow_toolbar(
111+
)->toolbar_spacer(
112+
)->button( text = 'Save'
113+
press = client->_event( 'BUTTON' )
114+
type = 'Success' ).
115+
116+
IF mo_parent_view IS INITIAL.
117+
118+
client->view_display( page->get_root( )->xml_get( ) ).
119+
120+
ELSE.
121+
122+
mv_view_display = abap_true.
123+
124+
ENDIF.
125+
ENDMETHOD.
126+
127+
METHOD z2ui5_if_app~main.
128+
me->client = client.
129+
130+
IF check_initialized = abap_false.
131+
check_initialized = abap_true.
132+
133+
on_init( ).
134+
135+
ENDIF.
136+
137+
on_event( ).
138+
ENDMETHOD.
139+
140+
METHOD set_app_data.
141+
" TODO: parameter COUNT is never used (ABAP cleaner)
142+
143+
mv_table = table.
144+
ENDMETHOD.
145+
146+
METHOD get_data.
147+
148+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
149+
FIELD-SYMBOLS <table_tmp> TYPE STANDARD TABLE.
150+
151+
mt_comp = get_comp( ).
152+
153+
TRY.
154+
155+
DATA(new_struct_desc) = cl_abap_structdescr=>create( mt_comp ).
156+
157+
DATA(new_table_desc) = cl_abap_tabledescr=>create( p_line_type = new_struct_desc
158+
p_table_kind = cl_abap_tabledescr=>tablekind_std ).
159+
160+
CREATE DATA mt_table TYPE HANDLE new_table_desc.
161+
* CREATE DATA mt_table_del TYPE HANDLE new_table_desc.
162+
CREATE DATA mt_table_tmp TYPE HANDLE new_table_desc.
163+
CREATE DATA ms_table_row TYPE HANDLE new_struct_desc.
164+
165+
ASSIGN mt_table->* TO <table>.
166+
167+
SELECT *
168+
FROM (mv_table)
169+
INTO CORRESPONDING FIELDS OF TABLE @<table>
170+
UP TO '100' ROWS.
171+
172+
CATCH cx_root.
173+
174+
ENDTRY.
175+
176+
ASSIGN mt_table_tmp->* TO <table_tmp>.
177+
178+
<table_tmp> = <table>.
179+
get_fixval( ).
180+
181+
ENDMETHOD.
182+
183+
METHOD get_fixval.
184+
185+
TYPES:
186+
BEGIN OF fixvalue,
187+
low TYPE string,
188+
high TYPE string,
189+
option TYPE string,
190+
ddlanguage TYPE string,
191+
ddtext TYPE string,
192+
END OF fixvalue.
193+
TYPES fixvalues TYPE STANDARD TABLE OF fixvalue WITH DEFAULT KEY.
194+
195+
DATA comp TYPE cl_abap_structdescr=>component_table.
196+
DATA structdescr TYPE REF TO cl_abap_structdescr.
197+
DATA lt_fixval TYPE fixvalues.
198+
199+
LOOP AT mt_comp REFERENCE INTO DATA(dfies).
200+
201+
comp = VALUE cl_abap_structdescr=>component_table(
202+
BASE comp
203+
( name = dfies->name
204+
type = CAST #( cl_abap_datadescr=>describe_by_data( lt_fixval ) ) ) ).
205+
ENDLOOP.
206+
207+
structdescr = cl_abap_structdescr=>create( comp ).
208+
209+
CREATE DATA ms_fixval TYPE HANDLE structdescr.
210+
211+
* LOOP AT mt_comp REFERENCE INTO dfies.
212+
*
213+
* ASSIGN ms_fixval->* TO <s_fixval>.
214+
* ASSIGN COMPONENT dfies->name OF STRUCTURE <s_fixval> TO FIELD-SYMBOL(<fixval>).
215+
*
216+
* IF <fixval> IS NOT ASSIGNED.
217+
* CONTINUE.
218+
* ENDIF.
219+
*
220+
*
221+
* ENDLOOP.
222+
ENDMETHOD.
223+
224+
METHOD get_comp.
225+
TRY.
226+
227+
DATA index TYPE int4.
228+
229+
TRY.
230+
231+
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = mv_table
232+
RECEIVING p_descr_ref = DATA(typedesc)
233+
EXCEPTIONS type_not_found = 1
234+
OTHERS = 2 ).
235+
236+
DATA(structdesc) = CAST cl_abap_structdescr( typedesc ).
237+
DATA(comp) = structdesc->get_components( ).
238+
239+
LOOP AT comp INTO DATA(com).
240+
IF com-as_include = abap_false.
241+
APPEND com TO result.
242+
ENDIF.
243+
ENDLOOP.
244+
245+
CATCH cx_root.
246+
247+
ENDTRY.
248+
249+
DATA(component) = VALUE cl_abap_structdescr=>component_table(
250+
( name = 'ROW_ID'
251+
type = CAST #( cl_abap_datadescr=>describe_by_data( index ) ) ) ).
252+
253+
APPEND LINES OF component TO result.
254+
255+
CATCH cx_root.
256+
ENDTRY.
257+
ENDMETHOD.
258+
259+
ENDCLASS.

src/z2ui5_cl_demo_app_194.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_194</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Deep Structure Sub App</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)