Skip to content

Commit 5a7dfdb

Browse files
Viktor HoffmannViktor Hoffmann
authored andcommitted
Update
1 parent 97505ca commit 5a7dfdb

29 files changed

+4698
-4
lines changed

.abapgit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
33
<asx:values>
44
<DATA>
5-
<NAME>a2UI5-layout-variant-management</NAME>
5+
<NAME>a2UI5_addon-layout_variant_management</NAME>
66
<MASTER_LANGUAGE>E</MASTER_LANGUAGE>
77
<STARTING_FOLDER>/src/</STARTING_FOLDER>
88
<FOLDER_LOGIC>PREFIX</FOLDER_LOGIC>
Lines changed: 158 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
CLASS z2ui5_cl_sample_layout DEFINITION
2+
PUBLIC
3+
CREATE PUBLIC.
4+
5+
PUBLIC SECTION.
6+
INTERFACES z2ui5_if_app.
7+
8+
DATA mt_table TYPE REF TO data.
9+
DATA mo_layout TYPE REF TO z2ui5_cl_layout.
10+
11+
TYPES:
12+
BEGIN OF ty_s_tab,
13+
selkz TYPE abap_bool,
14+
product TYPE string,
15+
create_date TYPE string,
16+
create_by TYPE string,
17+
storage_location TYPE string,
18+
quantity TYPE i,
19+
END OF ty_s_tab.
20+
TYPES ty_t_table TYPE STANDARD TABLE OF ty_s_tab WITH EMPTY KEY.
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+
METHODS render_main.
29+
METHODS get_data.
30+
METHODS init_layout.
31+
METHODS on_after_navigation.
32+
33+
PRIVATE SECTION.
34+
35+
ENDCLASS.
36+
37+
38+
CLASS z2ui5_cl_sample_layout IMPLEMENTATION.
39+
40+
METHOD on_event.
41+
42+
CASE client->get( )-event.
43+
44+
WHEN 'BACK'.
45+
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
46+
47+
WHEN OTHERS.
48+
49+
z2ui5_cl_pop_display_layout=>on_event_layout( client = client
50+
layout = mo_layout ).
51+
52+
ENDCASE.
53+
ENDMETHOD.
54+
55+
METHOD on_init.
56+
57+
get_data( ).
58+
59+
init_layout( ).
60+
61+
render_main( ).
62+
ENDMETHOD.
63+
64+
METHOD render_main.
65+
66+
DATA(view) = z2ui5_cl_xml_view=>factory( )->shell( ).
67+
68+
DATA(page) = view->page( title = 'Layout'
69+
navbuttonpress = client->_event( 'BACK' )
70+
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL )
71+
class = 'sapUiContentPadding' ).
72+
*
73+
* page->header_content( )->scroll_container( height = '70%'
74+
* vertical = abap_true ).
75+
76+
z2ui5_cl_xml_builder=>xml_build_table( i_data = mt_table
77+
i_xml = page
78+
i_client = client
79+
i_layout = mo_layout ).
80+
81+
client->view_display( view->stringify( ) ).
82+
83+
ENDMETHOD.
84+
85+
METHOD z2ui5_if_app~main.
86+
me->client = client.
87+
88+
IF check_initialized = abap_false.
89+
check_initialized = abap_true.
90+
on_init( ).
91+
ENDIF.
92+
93+
on_event( ).
94+
95+
IF client->get( )-check_on_navigated = abap_true.
96+
on_after_navigation( ).
97+
ENDIF.
98+
99+
ENDMETHOD.
100+
101+
METHOD get_data.
102+
103+
FIELD-SYMBOLS <table> TYPE STANDARD TABLE.
104+
105+
CREATE DATA mt_table TYPE ty_t_table.
106+
ASSIGN mt_table->* TO <table>.
107+
108+
<table> = VALUE ty_t_table( create_date = `01.01.2023`
109+
create_by = `Peter`
110+
storage_location = `AREA_001`
111+
quantity = 400
112+
( product = 'table' )
113+
( product = 'chair' )
114+
( product = 'sofa' )
115+
( product = 'computer' )
116+
( product = 'oven' )
117+
( product = 'table2' ) ).
118+
119+
ENDMETHOD.
120+
121+
METHOD init_layout.
122+
123+
IF mo_layout IS BOUND.
124+
RETURN.
125+
ENDIF.
126+
127+
DATA(class) = cl_abap_classdescr=>get_class_name( me ).
128+
SHIFT class LEFT DELETING LEADING '\CLASS='.
129+
130+
mo_layout = z2ui5_cl_layout=>factory( control = z2ui5_cl_layout=>m_table
131+
data = mt_table
132+
handle01 = class
133+
handle02 = 'Z2UI5_T_01'
134+
handle03 = ''
135+
handle04 = '' ).
136+
137+
ENDMETHOD.
138+
139+
METHOD on_after_navigation.
140+
141+
TRY.
142+
143+
DATA(app) = CAST z2ui5_cl_pop_display_layout( client->get_app( client->get( )-s_draft-id_prev_app ) ).
144+
mo_layout = app->mo_layout.
145+
146+
IF app->mv_rerender = abap_true.
147+
" subcolumns need rerendering to work ..
148+
render_main( ).
149+
ELSE.
150+
" for all other changes in Layout View Model Update is enough.
151+
client->view_model_update( ).
152+
ENDIF.
153+
CATCH cx_root.
154+
ENDTRY.
155+
156+
ENDMETHOD.
157+
158+
ENDCLASS.
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_SAMPLE_LAYOUT</CLSNAME>
7+
<LANGU>E</LANGU>
8+
<DESCRIPT>Layout</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: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
CLASS z2ui5_cl_sample_variant_01 DEFINITION PUBLIC.
2+
3+
PUBLIC SECTION.
4+
INTERFACES z2ui5_if_app.
5+
6+
TYPES:
7+
BEGIN OF ty_s_tab,
8+
selkz TYPE abap_bool,
9+
product TYPE string,
10+
create_date TYPE string,
11+
create_by TYPE string,
12+
storage_location TYPE string,
13+
quantity TYPE i,
14+
END OF ty_s_tab.
15+
TYPES ty_t_table TYPE STANDARD TABLE OF ty_s_tab WITH EMPTY KEY.
16+
17+
DATA mv_tabname TYPE string.
18+
DATA mr_table TYPE REF TO data.
19+
DATA mt_filter TYPE z2ui5_cl_util=>ty_t_filter_multi.
20+
21+
PROTECTED SECTION.
22+
DATA client TYPE REF TO z2ui5_if_client.
23+
DATA mv_check_initialized TYPE abap_bool.
24+
25+
METHODS on_event.
26+
METHODS view_display.
27+
METHODS set_data.
28+
29+
PRIVATE SECTION.
30+
DATA mo_multiselect TYPE REF TO z2ui5add_cl_var_selscreen.
31+
ENDCLASS.
32+
33+
34+
CLASS z2ui5_cl_sample_variant_01 IMPLEMENTATION.
35+
36+
METHOD on_event.
37+
38+
CASE client->get( )-event.
39+
40+
WHEN 'LIST_OPEN'.
41+
mo_multiselect = z2ui5add_cl_var_selscreen=>factory( mt_filter ).
42+
mo_multiselect->on_event( client ).
43+
RETURN.
44+
45+
WHEN `BUTTON_START`.
46+
set_data( ).
47+
client->view_model_update( ).
48+
49+
WHEN `PREVIEW_FILTER`.
50+
client->nav_app_call( z2ui5_cl_pop_get_range_m=>factory( mt_filter ) ).
51+
52+
WHEN 'BACK'.
53+
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
54+
ENDCASE.
55+
56+
ENDMETHOD.
57+
58+
METHOD set_data.
59+
60+
* DATA lt_range TYPE rs_t_rscedst.
61+
*
62+
* LOOP AT mt_filter INTO DATA(ls_filter).
63+
* LOOP AT ls_filter-t_range INTO DATA(ls_range).
64+
*
65+
* INSERT VALUE #(
66+
* fnam = ls_filter-name
67+
* sign = ls_range-sign
68+
* option = ls_range-option
69+
* low = ls_range-low
70+
* high = ls_range-high
71+
* ) INTO TABLE lt_range.
72+
*
73+
* ENDLOOP.
74+
* ENDLOOP.
75+
*
76+
* DATA lv_result TYPE string.
77+
** data lt_where type rsdmd_t_where.
78+
* CALL FUNCTION 'RSDS_RANGE_TO_WHERE'
79+
* EXPORTING
80+
* i_t_range = lt_range
81+
** i_th_range =
82+
** i_r_renderer =
83+
* IMPORTING
84+
* e_where = lv_result
85+
** e_t_where = lt_where
86+
** EXCEPTIONS
87+
** internal_error = 1
88+
** others = 2
89+
* .
90+
91+
" select from (mv_tabname)
92+
" fields
93+
" -
94+
" where (lv_result)
95+
" into table @mr_table->*.
96+
97+
* mt_table = VALUE #(
98+
* ( product = 'table' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
99+
* ( product = 'chair' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
100+
* ( product = 'sofa' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
101+
* ( product = 'computer' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
102+
* ( product = 'oven' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
103+
* ( product = 'table2' create_date = `01.01.2023` create_by = `Peter` storage_location = `AREA_001` quantity = 400 )
104+
* ).
105+
106+
* z2ui5_cl_util=>filter_itab(
107+
* EXPORTING
108+
* filter = mt_filter
109+
* CHANGING
110+
* val = mt_table
111+
* ).
112+
113+
ENDMETHOD.
114+
115+
METHOD view_display.
116+
117+
DATA(view) = z2ui5_cl_xml_view=>factory( ).
118+
119+
view = view->shell( )->page( id = `page_main`
120+
title = 'abap2UI5 - Select-Options'
121+
navbuttonpress = client->_event( 'BACK' )
122+
shownavbutton = xsdbool( client->get( )-s_draft-id_prev_app_stack IS NOT INITIAL ) ).
123+
124+
DATA(vbox) = view->vbox( )->input( value = client->_bind_edit( mv_tabname )
125+
description = `Tablename` ).
126+
127+
vbox->button( text = `GO`
128+
press = client->_event( 'TAB' ) ).
129+
130+
DATA(lo_multiselect) = z2ui5add_cl_var_selscreen=>factory( mt_filter ).
131+
132+
lo_multiselect->set_output2( t_filter = mt_filter
133+
client2 = client
134+
view = vbox ).
135+
136+
DATA(tab) = vbox->table( items = client->_bind( val = mr_table->* )
137+
)->header_toolbar(
138+
)->overflow_toolbar(
139+
)->toolbar_spacer(
140+
* )->button( text = `Filter` press = client->_event( `PREVIEW_FILTER` ) icon = `sap-icon://filter`
141+
)->button( text = `Go`
142+
press = client->_event( `BUTTON_START` )
143+
type = `Emphasized`
144+
)->get_parent( )->get_parent( ).
145+
146+
DATA(lo_columns) = tab->columns( ).
147+
lo_columns->column( )->text( text = `Product` ).
148+
lo_columns->column( )->text( text = `Date` ).
149+
lo_columns->column( )->text( text = `Name` ).
150+
lo_columns->column( )->text( text = `Location` ).
151+
lo_columns->column( )->text( text = `Quantity` ).
152+
153+
DATA(lo_cells) = tab->items( )->column_list_item( ).
154+
lo_cells->text( `{PRODUCT}` ).
155+
lo_cells->text( `{CREATE_DATE}` ).
156+
lo_cells->text( `{CREATE_BY}` ).
157+
lo_cells->text( `{STORAGE_LOCATION}` ).
158+
lo_cells->text( `{QUANTITY}` ).
159+
160+
client->view_display( view->stringify( ) ).
161+
162+
ENDMETHOD.
163+
164+
METHOD z2ui5_if_app~main.
165+
166+
me->client = client.
167+
168+
IF mv_check_initialized = abap_false.
169+
mv_check_initialized = abap_true.
170+
mv_tabname = `T100`.
171+
172+
CREATE DATA mr_table TYPE STANDARD TABLE OF (mv_tabname) WITH EMPTY KEY.
173+
mt_filter = z2ui5_cl_util=>filter_get_multi_by_data( mr_table->* ).
174+
* DELETE mt_filter WHERE name = `SELKZ`.
175+
view_display( ).
176+
RETURN.
177+
ENDIF.
178+
179+
IF client->get( )-check_on_navigated = abap_true.
180+
TRY.
181+
DATA(lo_popup) = CAST z2ui5_cl_pop_get_range( client->get_app( client->get( )-s_draft-id_prev_app ) ).
182+
IF lo_popup->result( )-check_confirmed = abap_true.
183+
ASSIGN mt_filter[ name = mo_multiselect->mv_popup_name ] TO FIELD-SYMBOL(<tab>).
184+
<tab>-t_range = lo_popup->result( )-t_range.
185+
<tab>-t_token = z2ui5_cl_util=>filter_get_token_t_by_range_t( <tab>-t_range ).
186+
client->view_model_update( ).
187+
ENDIF.
188+
CATCH cx_root.
189+
ENDTRY.
190+
RETURN.
191+
ENDIF.
192+
193+
IF client->get( )-event IS NOT INITIAL.
194+
on_event( ).
195+
ENDIF.
196+
197+
ENDMETHOD.
198+
199+
ENDCLASS.

0 commit comments

Comments
 (0)