.
ENDLOOP.
result = z2ui5_cl_util_func=>trans_xml_any_2( ls_db ).
+ CATCH z2ui5_cx_util_error INTO DATA(x_util).
+ RAISE EXCEPTION x_util.
+
CATCH cx_root INTO DATA(x2).
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
- val = x->get_text( ) && `` && x->previous->get_text( ) && `
` && x2->get_text( ).
+* val = x->get_text( ) && `
` && x->previous->get_text( ) && `
` && x2->get_text( ) && `
Please check if all generic data references are public attribtues of your class`.
+ val = `
` && x->previous->get_text( ) && `
` && x2->get_text( ) && `
Please check if all generic data references are public attributes of your class`.
ENDTRY.
ENDTRY.
diff --git a/src/01/01/z2ui5_cl_fw_http_handler.clas.abap b/src/01/01/z2ui5_cl_fw_http_handler.clas.abap
index 1e70d519..1b8173ca 100644
--- a/src/01/01/z2ui5_cl_fw_http_handler.clas.abap
+++ b/src/01/01/z2ui5_cl_fw_http_handler.clas.abap
@@ -257,11 +257,11 @@ CLASS Z2UI5_CL_FW_HTTP_HANDLER IMPLEMENTATION.
` sap.z2ui5.oBody = {};` && |\n| &&
` let isUpdated = false;` && |\n| &&
` if (sap.z2ui5.oViewPopup) {` && |\n| &&
- ` if (!sap.z2ui5.oViewPopup.isOpen || sap.z2ui5.oViewPopup.isOpen() == true) {` && |\n| &&
+ ` if (sap.z2ui5.oViewPopup.isOpen ) { if( sap.z2ui5.oViewPopup.isOpen() == true ) {` && |\n| &&
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oViewPopup.getModel().getData().EDIT;` && |\n| &&
` isUpdated = true;` && |\n| &&
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
- ` }` && |\n| &&
+ ` } }` && |\n| &&
` }` && |\n| &&
` if (isUpdated == false) {` && |\n| &&
` if (sap.z2ui5.oViewPopover) {` && |\n| &&
diff --git a/src/01/01/z2ui5_if_client.intf.abap b/src/01/01/z2ui5_if_client.intf.abap
index 1db720cc..783ab7fb 100644
--- a/src/01/01/z2ui5_if_client.intf.abap
+++ b/src/01/01/z2ui5_if_client.intf.abap
@@ -14,6 +14,11 @@ INTERFACE z2ui5_if_client
cross_app_nav_to_prev_app TYPE string VALUE `CROSS_APP_NAV_TO_PREV_APP`,
END OF cs_event.
+ CONSTANTS:
+ BEGIN OF cs_clear,
+ view TYPE string VALUE `VIEW`,
+ END OF cs_clear.
+
CONSTANTS:
BEGIN OF cs_view,
main TYPE string VALUE `MAIN`,
@@ -133,11 +138,15 @@ INTERFACE z2ui5_if_client
METHODS nav_app_leave
IMPORTING
- app TYPE REF TO z2ui5_if_app.
+ app TYPE REF TO z2ui5_if_app
+ RETURNING
+ VALUE(result) TYPE string.
METHODS nav_app_call
IMPORTING
- app TYPE REF TO z2ui5_if_app.
+ app TYPE REF TO z2ui5_if_app
+ RETURNING
+ VALUE(result) TYPE string.
METHODS message_box_display
IMPORTING
@@ -200,4 +209,8 @@ INTERFACE z2ui5_if_client
IMPORTING
val TYPE data.
+ METHODS clear
+ IMPORTING
+ val TYPE data.
+
ENDINTERFACE.
diff --git a/src/01/02/z2ui5_cl_fw_app_startup.clas.abap b/src/01/02/z2ui5_cl_fw_app_startup.clas.abap
index f04c1936..76241400 100644
--- a/src/01/02/z2ui5_cl_fw_app_startup.clas.abap
+++ b/src/01/02/z2ui5_cl_fw_app_startup.clas.abap
@@ -28,6 +28,7 @@ CLASS z2ui5_cl_fw_app_startup DEFINITION
METHODS z2ui5_on_init.
METHODS z2ui5_on_event.
METHODS view_display_start.
+ METHODS on_event_check.
PROTECTED SECTION.
DATA mt_classes TYPE string_table.
PRIVATE SECTION.
@@ -142,14 +143,20 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
IF mv_check_initialized = abap_false.
mv_check_initialized = abap_true.
z2ui5_on_init( ).
+ view_display_start( ).
+ return.
ENDIF.
IF client->get( )-check_on_navigated = abap_true.
TRY.
DATA(lo_f4) = CAST z2ui5_cl_popup_to_select( client->get_app( client->get( )-s_draft-id_prev_app ) ).
DATA(ls_result) = lo_f4->result( ).
- IF ls_result-check_cancel = abap_false.
- ms_home-classname = mt_classes[ ls_result-index ].
+ IF ls_result-check_confirmed = abap_true.
+ FIELD-SYMBOLS TYPE string.
+ ASSIGN ls_result-row->* TO .
+ ms_home-classname = .
+ view_display_start( ).
+ return.
ENDIF.
CATCH cx_root.
ENDTRY.
@@ -170,26 +177,10 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
ms_home-btn_event_id = `BUTTON_CHECK`.
ms_home-btn_icon = `sap-icon://validate`.
ms_home-class_editable = abap_true.
+ client->view_model_update( ).
WHEN `BUTTON_CHECK`.
- TRY.
- DATA li_app_test TYPE REF TO z2ui5_if_app.
- ms_home-classname = z2ui5_cl_util_func=>c_trim_upper( ms_home-classname ).
- CREATE OBJECT li_app_test TYPE (ms_home-classname).
-
- client->message_toast_display( `App is ready to start!` ).
- ms_home-btn_text = `edit`.
- ms_home-btn_event_id = `BUTTON_CHANGE`.
- ms_home-btn_icon = `sap-icon://edit`.
- ms_home-class_value_state = `Success`.
- ms_home-class_editable = abap_false.
-
- CATCH cx_root INTO DATA(lx) ##CATCH_ALL.
- ms_home-class_value_state_text = lx->get_text( ).
- ms_home-class_value_state = `Warning`.
- client->message_box_display( text = ms_home-class_value_state_text
- type = `error` ).
- ENDTRY.
+ on_event_check( ).
WHEN 'VALUE_HELP'.
mt_classes = z2ui5_cl_util_func=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` ).
@@ -221,4 +212,28 @@ CLASS z2ui5_cl_fw_app_startup IMPLEMENTATION.
mv_check_demo = abap_true.
ENDMETHOD.
+
+ METHOD on_event_check.
+
+ TRY.
+ DATA li_app_test TYPE REF TO z2ui5_if_app.
+ ms_home-classname = z2ui5_cl_util_func=>c_trim_upper( ms_home-classname ).
+ CREATE OBJECT li_app_test TYPE (ms_home-classname).
+
+ client->message_toast_display( `App is ready to start!` ).
+ ms_home-btn_text = `edit`.
+ ms_home-btn_event_id = `BUTTON_CHANGE`.
+ ms_home-btn_icon = `sap-icon://edit`.
+ ms_home-class_value_state = `Success`.
+ ms_home-class_editable = abap_false.
+
+ CATCH cx_root INTO DATA(lx) ##CATCH_ALL.
+ ms_home-class_value_state_text = lx->get_text( ).
+ ms_home-class_value_state = `Warning`.
+ client->message_box_display( text = ms_home-class_value_state_text
+ type = `error` ).
+ ENDTRY.
+
+ ENDMETHOD.
+
ENDCLASS.
diff --git a/src/03/01/z2ui5_cl_popup_error.clas.abap b/src/03/01/z2ui5_cl_popup_error.clas.abap
index 72672758..44f14abc 100644
--- a/src/03/01/z2ui5_cl_popup_error.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_error.clas.abap
@@ -9,7 +9,7 @@ CLASS z2ui5_cl_popup_error DEFINITION
CLASS-METHODS factory
IMPORTING
- error TYPE ref to cx_root
+ error TYPE REF TO cx_root
i_title TYPE string DEFAULT `Error View`
i_icon TYPE string DEFAULT 'sap-icon://question-mark'
i_button_text TYPE string DEFAULT `OK`
@@ -36,7 +36,10 @@ CLASS z2ui5_cl_popup_error IMPLEMENTATION.
r_result = NEW #( ).
r_result->title = i_title.
r_result->icon = i_icon.
- r_result->question_text = error->get_text( ).
+ if error->previous is bound.
+ r_result->question_text = error->previous->get_text( ).
+ endif.
+ r_result->question_text = r_result->question_text && ` ` && error->get_text( ).
r_result->button_text_confirm = i_button_text.
ENDMETHOD.
@@ -50,8 +53,9 @@ CLASS z2ui5_cl_popup_error IMPLEMENTATION.
afterclose = client->_event( 'BUTTON_CONFIRM' )
)->content(
)->vbox( 'sapUiMediumMargin'
- )->text( question_text
- )->get_parent( )->get_parent(
+* )->text( question_text
+ )->html( question_text
+ )->get_parent( )->get_parent( )->get_parent(
)->footer( )->overflow_toolbar(
)->toolbar_spacer(
)->button(
@@ -59,6 +63,7 @@ CLASS z2ui5_cl_popup_error IMPLEMENTATION.
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
+ client->clear( client->cs_clear-view ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
diff --git a/src/03/01/z2ui5_cl_popup_file_upload.clas.abap b/src/03/01/z2ui5_cl_popup_file_upload.clas.abap
index d2287890..ca57db12 100644
--- a/src/03/01/z2ui5_cl_popup_file_upload.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_file_upload.clas.abap
@@ -9,22 +9,23 @@ CLASS z2ui5_cl_popup_file_upload DEFINITION
CLASS-METHODS factory
IMPORTING
- i_text TYPE string default `Choose the file to upload:`
+ i_text TYPE string DEFAULT `Choose the file to upload:`
i_title TYPE string DEFAULT `File Upload`
i_button_text_confirm TYPE string DEFAULT `OK`
i_button_text_cancel TYPE string DEFAULT `Cancel`
- i_path type string optional
+ i_path TYPE string OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_file_upload.
TYPES:
BEGIN OF ty_s_result,
- text TYPE string,
- check_cancel TYPE abap_bool,
+ value TYPE string,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
- data mv_path type string.
- data mv_value type string.
+ DATA mv_path TYPE string.
+ DATA mv_value TYPE string.
+ DATA check_confirm_enabled TYPE abap_bool.
METHODS result
RETURNING
@@ -38,14 +39,13 @@ CLASS z2ui5_cl_popup_file_upload DEFINITION
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
- DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
-CLASS Z2UI5_CL_POPUP_FILE_UPLOAD IMPLEMENTATION.
+CLASS z2ui5_cl_popup_file_upload IMPLEMENTATION.
METHOD factory.
@@ -91,6 +91,7 @@ CLASS Z2UI5_CL_POPUP_FILE_UPLOAD IMPLEMENTATION.
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
+ enabled = client->_bind( check_confirm_enabled )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
@@ -109,26 +110,27 @@ CLASS Z2UI5_CL_POPUP_FILE_UPLOAD IMPLEMENTATION.
ENDIF.
CASE client->get( )-event.
- when `UPLOAD`.
- SPLIT mv_value AT `;` INTO DATA(lv_dummy) DATA(lv_data).
- SPLIT lv_data AT `,` INTO lv_dummy lv_data.
+ WHEN `UPLOAD`.
- DATA(lv_data2) = lcl_utility=>decode_x_base64( lv_data ).
- ms_result-text = lcl_utility=>get_string_by_xstring( lv_data2 ).
+ SPLIT mv_value AT `;` INTO DATA(lv_dummy) DATA(lv_data).
+ SPLIT lv_data AT `,` INTO lv_dummy lv_data.
- client->message_box_display( `file uploaded` ).
+ DATA(lv_data2) = lcl_utility=>decode_x_base64( lv_data ).
+ ms_result-value = lcl_utility=>get_string_by_xstring( lv_data2 ).
- CLEAR mv_value.
- CLEAR mv_path.
+ check_confirm_enabled = abap_true.
+* client->message_box_display( `file uploaded` ).
+ CLEAR mv_value.
+ CLEAR mv_path.
+ client->popup_model_update( ).
WHEN `BUTTON_CONFIRM`.
- check_result_confirmed = abap_true.
+ ms_result-check_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
- check_result_confirmed = abap_false.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
diff --git a/src/03/01/z2ui5_cl_popup_get_range.clas.abap b/src/03/01/z2ui5_cl_popup_get_range.clas.abap
index 3929bf89..20537d7f 100644
--- a/src/03/01/z2ui5_cl_popup_get_range.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_get_range.clas.abap
@@ -24,8 +24,8 @@ CLASS z2ui5_cl_popup_get_range DEFINITION
TYPES:
BEGIN OF ty_s_result,
- t_range TYPE z2ui5_cl_util_func=>ty_t_range,
- check_cancel TYPE abap_bool,
+ t_range TYPE z2ui5_cl_util_func=>ty_t_range,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
@@ -37,7 +37,6 @@ CLASS z2ui5_cl_popup_get_range DEFINITION
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
- DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
@@ -50,6 +49,7 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
r_result = NEW #( ).
r_result->ms_result-t_range = t_range.
+ INSERT VALUE #( ) INTO TABLE r_result->ms_result-t_range.
ENDMETHOD.
@@ -89,8 +89,8 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
key = '{N}'
text = '{N}'
)->get_parent(
- )->input( value = `{LOW}`
- )->input( value = `{HIGH}` visible = `{= ${OPTION} === 'BT' }`
+ )->input( value = `{LOW}` submit = client->_event( 'BUTTON_CONFIRM' )
+ )->input( value = `{HIGH}` visible = `{= ${OPTION} === 'BT' }` submit = client->_event( 'BUTTON_CONFIRM' )
)->button( icon = 'sap-icon://decline' type = `Transparent` press = client->_event( val = `POPUP_DELETE` t_arg = VALUE #( ( `${KEY}` ) ) )
).
@@ -119,15 +119,15 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
IF check_initialized = abap_false.
check_initialized = abap_true.
- CLEAR mt_filter.
- LOOP AT ms_result-t_range REFERENCE INTO DATA(lr_product).
- INSERT VALUE #(
- low = lr_product->low
- high = lr_product->high
- option = lr_product->option
- key = z2ui5_cl_util_func=>func_get_uuid_32( )
- ) INTO TABLE mt_filter.
- ENDLOOP.
+ CLEAR mt_filter.
+ LOOP AT ms_result-t_range REFERENCE INTO DATA(lr_product).
+ INSERT VALUE #(
+ low = lr_product->low
+ high = lr_product->high
+ option = lr_product->option
+ key = z2ui5_cl_util_func=>func_get_uuid_32( )
+ ) INTO TABLE mt_filter.
+ ENDLOOP.
view_display( ).
RETURN.
@@ -138,6 +138,9 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
CLEAR ms_result-t_range.
LOOP AT mt_filter REFERENCE INTO DATA(lr_filter).
+ IF lr_filter->low IS INITIAL AND lr_filter->high IS INITIAL.
+ CONTINUE.
+ ENDIF.
INSERT VALUE #(
sign = `I`
option = lr_filter->option
@@ -146,13 +149,11 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
) INTO TABLE ms_result-t_range.
ENDLOOP.
- check_result_confirmed = abap_true.
+ ms_result-check_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_CANCEL`.
-
- check_result_confirmed = abap_false.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
diff --git a/src/03/01/z2ui5_cl_popup_get_range_multi.clas.abap b/src/03/01/z2ui5_cl_popup_get_range_multi.clas.abap
new file mode 100644
index 00000000..759e2129
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_get_range_multi.clas.abap
@@ -0,0 +1,149 @@
+CLASS z2ui5_cl_popup_get_range_multi DEFINITION
+ PUBLIC FINAL
+ CREATE PUBLIC.
+
+ PUBLIC SECTION.
+ INTERFACES z2ui5_if_app.
+
+ CLASS-METHODS factory
+ IMPORTING
+ val TYPE z2ui5_cl_util_func=>ty_t_sql_multi
+ RETURNING
+ VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range_multi.
+
+ TYPES:
+ BEGIN OF ty_s_result,
+ t_sql TYPE z2ui5_cl_util_func=>ty_t_sql_multi,
+ check_confirmed TYPE abap_bool,
+ END OF ty_s_result.
+
+ DATA ms_result TYPE ty_s_result.
+
+ METHODS result
+ RETURNING VALUE(result) TYPE ty_s_result.
+
+ PROTECTED SECTION.
+ DATA client TYPE REF TO z2ui5_if_client.
+ DATA check_initialized TYPE abap_bool.
+ DATA mv_popup_name TYPE LINE OF string_table.
+ METHODS popup_display.
+
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+CLASS z2ui5_cl_popup_get_range_multi IMPLEMENTATION.
+
+ METHOD factory.
+
+ r_result = NEW #( ).
+ r_result->ms_result-t_sql = val.
+
+ ENDMETHOD.
+
+ METHOD result.
+ result = ms_result.
+ ENDMETHOD.
+
+ METHOD popup_display.
+
+ DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( client ).
+ lo_popup = lo_popup->dialog( afterclose = client->_event( 'BUTTON_CANCEL' )
+ contentheight = `50%`
+ contentwidth = `50%`
+ title = 'Define Filter Conditons' ).
+
+ DATA(vbox) = lo_popup->vbox( height = `100%`
+ justifycontent = 'SpaceBetween' ).
+
+ DATA(item) = vbox->list( nodata = `no conditions defined`
+ items = client->_bind( ms_result-t_sql )
+ selectionchange = client->_event( 'SELCHANGE' )
+ )->custom_list_item( ).
+
+ DATA(grid) = item->grid( ).
+ grid->label( `{NAME}` ).
+
+ grid->multi_input( tokens = `{T_TOKEN}`
+ enabled = abap_false
+ valuehelprequest = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) )
+ )->tokens(
+ )->token( key = `{KEY}`
+ text = `{TEXT}`
+ visible = `{VISIBLE}`
+ selected = `{SELKZ}`
+ editable = `{EDITABLE}` ).
+
+ grid->button( text = `Select` press = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
+ grid->button( icon = 'sap-icon://delete' type = `Transparent` text = `Clear` press = client->_event( val = `LIST_DELETE` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
+
+ lo_popup->footer( )->overflow_toolbar(
+ )->button( text = `Clear All`
+ icon = 'sap-icon://delete'
+ type = `Transparent`
+ press = client->_event( val = `POPUP_DELETE_ALL` )
+ )->toolbar_spacer(
+ )->button( text = 'Cancel'
+ press = client->_event( 'BUTTON_CANCEL' )
+ )->button( text = 'OK'
+ press = client->_event( 'BUTTON_CONFIRM' )
+ type = 'Emphasized' ).
+
+ client->popup_display( lo_popup->stringify( ) ).
+ ENDMETHOD.
+
+ METHOD z2ui5_if_app~main.
+ me->client = client.
+
+ IF check_initialized = abap_false.
+ check_initialized = abap_true.
+ popup_display( ).
+ RETURN.
+ ENDIF.
+
+ IF client->get( )-check_on_navigated = abap_true.
+
+ DATA(lo_popup) = CAST z2ui5_cl_popup_get_range( client->get_app( client->get( )-s_draft-id_prev_app ) ).
+ IF lo_popup->result( )-check_confirmed = abap_true.
+ ASSIGN ms_result-t_sql[ name = mv_popup_name ] TO FIELD-SYMBOL().
+ -t_range = lo_popup->result( )-t_range.
+ -t_token = z2ui5_cl_util_func=>get_token_t_by_range_t( -t_range ).
+ ENDIF.
+ popup_display( ).
+
+ ENDIF.
+
+ CASE client->get( )-event.
+
+ WHEN 'LIST_DELETE'.
+ DATA(lt_event) = client->get( )-t_event_arg.
+ ASSIGN ms_result-t_sql[ name = lt_event[ 1 ] ] TO .
+ CLEAR -t_token.
+ CLEAR -t_range.
+ client->popup_model_update( ).
+
+ WHEN 'LIST_OPEN'.
+ lt_event = client->get( )-t_event_arg.
+ mv_popup_name = lt_event[ 1 ].
+ DATA(ls_sql) = ms_result-t_sql[ name = mv_popup_name ].
+ client->nav_app_call( z2ui5_cl_popup_get_range=>factory( ls_sql-t_range ) ).
+
+ WHEN `BUTTON_CONFIRM`.
+ ms_result-check_confirmed = abap_true.
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+ WHEN `BUTTON_CANCEL`.
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+ WHEN `POPUP_DELETE_ALL`.
+ LOOP AT ms_result-t_sql REFERENCE INTO DATA(lr_sql).
+ CLEAR lr_sql->t_range.
+ CLEAR lr_sql->t_token.
+ ENDLOOP.
+ client->popup_model_update( ).
+
+ ENDCASE.
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/03/01/z2ui5_cl_popup_get_range_multi.clas.xml b/src/03/01/z2ui5_cl_popup_get_range_multi.clas.xml
new file mode 100644
index 00000000..2351546e
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_get_range_multi.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Z2UI5_CL_POPUP_GET_RANGE_MULTI
+ E
+ ui - popup get range multi
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/03/01/z2ui5_cl_popup_input_value.clas.abap b/src/03/01/z2ui5_cl_popup_input_value.clas.abap
index 5a512755..02923e0e 100644
--- a/src/03/01/z2ui5_cl_popup_input_value.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_input_value.clas.abap
@@ -20,8 +20,8 @@ CLASS z2ui5_cl_popup_input_value DEFINITION
TYPES:
BEGIN OF ty_s_result,
- value TYPE string,
- check_cancel TYPE abap_bool,
+ value TYPE string,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
diff --git a/src/03/01/z2ui5_cl_popup_layout.clas.abap b/src/03/01/z2ui5_cl_popup_layout.clas.abap
new file mode 100644
index 00000000..26499454
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_layout.clas.abap
@@ -0,0 +1,158 @@
+CLASS z2ui5_cl_popup_layout DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PROTECTED.
+
+ PUBLIC SECTION.
+ INTERFACES z2ui5_if_app.
+
+ TYPES:
+ BEGIN OF ty_s_layout,
+ name TYPE string,
+ visible TYPE abap_bool,
+ length TYPE string,
+ mergeduplicates TYPE abap_bool,
+ END OF ty_s_layout.
+ TYPES ty_t_layout TYPE STANDARD TABLE OF ty_s_layout WITH EMPTY KEY.
+
+ CLASS-METHODS factory
+ IMPORTING
+ t_layout TYPE ty_t_layout OPTIONAL
+ i_tab TYPE STANDARD TABLE OPTIONAL
+ RETURNING
+ VALUE(r_result) TYPE REF TO z2ui5_cl_popup_layout.
+
+ TYPES:
+ BEGIN OF ty_s_result,
+ t_layout TYPE ty_t_layout,
+ check_confirmed TYPE abap_bool,
+ END OF ty_s_result.
+ DATA ms_result TYPE ty_s_result.
+
+ METHODS result
+ RETURNING
+ VALUE(result) TYPE ty_s_result.
+
+ PROTECTED SECTION.
+ DATA check_initialized TYPE abap_bool.
+ DATA client TYPE REF TO z2ui5_if_client.
+ METHODS on_event.
+ METHODS display.
+ METHODS on_event_confirm.
+
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS Z2UI5_CL_POPUP_LAYOUT IMPLEMENTATION.
+
+
+ METHOD display.
+
+ DATA(popup) = z2ui5_cl_xml_view=>factory_popup( client )->dialog(
+ afterclose = client->_event( 'BUTTON_CONFIRM' )
+ stretch = abap_true
+ title = 'Layout View'
+ )->content( ).
+
+ DATA(tab) = popup->table(
+ items = client->_bind_edit( ms_result-t_layout ) ).
+
+ DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( ms_result-t_layout ).
+
+ DATA(list) = tab->column_list_item( valign = `Top` ).
+ DATA(cells) = list->cells( ).
+
+ DATA(columns) = tab->columns( ).
+ LOOP AT lt_comp INTO DATA(ls_comp2).
+ DATA(col) = columns->column( width = '8rem' )->header( ns = `` ).
+ col->text( text = ls_comp2-name ).
+ ENDLOOP.
+
+ LOOP AT lt_comp INTO DATA(ls_comp).
+ IF ls_comp-name = 'NAME'.
+ cells->text( `{` && ls_comp-name && `}` ).
+ ELSE.
+ cells->checkbox( `{` && ls_comp-name && `}` ).
+ ENDIF.
+ ENDLOOP.
+
+ popup->get_parent(
+ )->footer( )->overflow_toolbar(
+ )->toolbar_spacer(
+ )->button(
+ text = 'OK'
+ press = client->_event( 'BUTTON_CONFIRM' )
+ type = 'Emphasized' ).
+
+ client->popup_display( popup->stringify( ) ).
+
+ ENDMETHOD.
+
+
+ METHOD factory.
+
+ r_result = NEW #( ).
+
+ IF t_layout IS INITIAL.
+
+ DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( i_tab ).
+ LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
+ INSERT VALUE #( name = lr_comp->name visible = abap_true mergeduplicates = abap_false ) INTO TABLE r_result->ms_result-t_layout.
+ ENDLOOP.
+
+ ELSE.
+ r_result->ms_result-t_layout = t_layout.
+ ENDIF.
+
+ ENDMETHOD.
+
+
+ METHOD on_event.
+
+ CASE client->get( )-event.
+
+ WHEN 'BUTTON_CONFIRM'.
+
+ ms_result-check_confirmed = abap_true.
+ on_event_confirm( ).
+
+ WHEN 'CANCEL'.
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+ ENDCASE.
+
+ ENDMETHOD.
+
+
+ METHOD on_event_confirm.
+
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+ ENDMETHOD.
+
+
+ METHOD result.
+
+ result = ms_result.
+
+ ENDMETHOD.
+
+
+ METHOD z2ui5_if_app~main.
+
+ me->client = client.
+
+ IF check_initialized = abap_false.
+ check_initialized = abap_true.
+ display( ).
+ RETURN.
+ ENDIF.
+
+ on_event( ).
+
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/03/01/z2ui5_cl_popup_layout.clas.xml b/src/03/01/z2ui5_cl_popup_layout.clas.xml
new file mode 100644
index 00000000..acc8163f
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_layout.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Z2UI5_CL_POPUP_LAYOUT
+ E
+ ui - popup layout
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/03/01/z2ui5_cl_popup_pdf.clas.abap b/src/03/01/z2ui5_cl_popup_pdf.clas.abap
index d0b0a01c..9b12e842 100644
--- a/src/03/01/z2ui5_cl_popup_pdf.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_pdf.clas.abap
@@ -18,8 +18,8 @@ CLASS z2ui5_cl_popup_pdf DEFINITION
TYPES:
BEGIN OF ty_s_result,
- text TYPE string,
- check_cancel TYPE abap_bool,
+ text TYPE string,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
diff --git a/src/03/01/z2ui5_cl_popup_table.clas.abap b/src/03/01/z2ui5_cl_popup_table.clas.abap
new file mode 100644
index 00000000..767a3c74
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_table.clas.abap
@@ -0,0 +1,151 @@
+CLASS z2ui5_cl_popup_table DEFINITION
+ PUBLIC
+ FINAL
+ CREATE PROTECTED.
+
+ PUBLIC SECTION.
+ INTERFACES z2ui5_if_app.
+
+ CLASS-METHODS factory
+ IMPORTING
+ i_tab TYPE STANDARD TABLE
+ RETURNING
+ VALUE(r_result) TYPE REF TO z2ui5_cl_popup_table.
+
+ TYPES:
+ BEGIN OF ty_s_result,
+ row TYPE REF TO data,
+ check_confirmed TYPE abap_bool,
+ END OF ty_s_result.
+ DATA ms_result TYPE ty_s_result.
+
+ METHODS result
+ RETURNING
+ VALUE(result) TYPE ty_s_result.
+
+ DATA mr_tab TYPE REF TO data.
+
+ PROTECTED SECTION.
+ DATA check_initialized TYPE abap_bool.
+ DATA client TYPE REF TO z2ui5_if_client.
+ METHODS on_event.
+ METHODS display.
+ METHODS on_event_confirm.
+
+ PRIVATE SECTION.
+ENDCLASS.
+
+
+
+CLASS z2ui5_cl_popup_table IMPLEMENTATION.
+
+
+ METHOD display.
+
+ FIELD-SYMBOLS TYPE STANDARD TABLE.
+ ASSIGN mr_tab->* TO .
+
+ DATA(popup) = z2ui5_cl_xml_view=>factory_popup( client )->dialog(
+ afterclose = client->_event( 'BUTTON_CONFIRM' )
+ stretch = abap_true
+ title = 'Table View'
+* icon = 'sap-icon://edit'
+ )->content( ).
+
+ DATA(tab) = popup->table(
+ items = client->_bind( ) ).
+* )->header_toolbar(
+* )->overflow_toolbar(
+* )->toolbar_spacer(
+* )->button( text = `Filter` press = client->_event( `PREVIEW_FILTER` ) icon = `sap-icon://filter`
+* )->button( text = `Display Popup` press = client->_event( `BUTTON_START` ) type = `Emphasized`
+* )->get_parent( )->get_parent( ).
+
+ DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( ).
+
+ DATA(list) = tab->column_list_item( valign = `Top` ).
+ DATA(cells) = list->cells( ).
+
+ LOOP AT lt_comp INTO DATA(ls_comp).
+ cells->text( text = `{` && ls_comp-name && `}` ).
+ ENDLOOP.
+
+ DATA(columns) = tab->columns( ).
+ LOOP AT lt_comp INTO ls_comp.
+ columns->column( width = '8rem' )->header( ns = `` )->text( text = ls_comp-name ).
+ ENDLOOP.
+
+ popup->get_parent(
+ )->footer( )->overflow_toolbar(
+ )->toolbar_spacer(
+* )->button(
+* text = 'Cancel'
+* press = client->_event( 'BUTTON_TEXTAREA_CANCEL' )
+ )->button(
+ text = 'OK'
+ press = client->_event( 'BUTTON_CONFIRM' )
+ type = 'Emphasized' ).
+
+ client->popup_display( popup->stringify( ) ).
+
+ ENDMETHOD.
+
+
+ METHOD factory.
+
+ r_result = NEW #( ).
+ CREATE DATA r_result->mr_tab LIKE i_tab.
+ CREATE DATA r_result->ms_result-row LIKE LINE OF i_tab.
+ FIELD-SYMBOLS TYPE any.
+ ASSIGN r_result->mr_tab->* TO .
+ = i_tab.
+
+ ENDMETHOD.
+
+
+ METHOD on_event.
+
+ CASE client->get( )-event.
+
+ WHEN 'BUTTON_CONFIRM'.
+ ms_result-check_confirmed = abap_true.
+ on_event_confirm( ).
+
+ WHEN 'CANCEL'.
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+
+ ENDCASE.
+
+ ENDMETHOD.
+
+
+ METHOD on_event_confirm.
+
+ client->popup_destroy( ).
+ client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
+
+ ENDMETHOD.
+
+
+ METHOD result.
+
+ result = ms_result.
+
+ ENDMETHOD.
+
+ METHOD z2ui5_if_app~main.
+
+ me->client = client.
+
+ IF check_initialized = abap_false.
+ check_initialized = abap_true.
+ display( ).
+ RETURN.
+ ENDIF.
+
+ on_event( ).
+
+ ENDMETHOD.
+ENDCLASS.
diff --git a/src/03/01/z2ui5_cl_popup_table.clas.xml b/src/03/01/z2ui5_cl_popup_table.clas.xml
new file mode 100644
index 00000000..65dde79b
--- /dev/null
+++ b/src/03/01/z2ui5_cl_popup_table.clas.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+ Z2UI5_CL_POPUP_TABLE
+ E
+ ui - popup table
+ 1
+ X
+ X
+ X
+
+
+
+
diff --git a/src/03/01/z2ui5_cl_popup_textedit.clas.abap b/src/03/01/z2ui5_cl_popup_textedit.clas.abap
index 9ddf273d..a3badd4d 100644
--- a/src/03/01/z2ui5_cl_popup_textedit.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_textedit.clas.abap
@@ -19,8 +19,8 @@ CLASS z2ui5_cl_popup_textedit DEFINITION
DATA check_initialized TYPE abap_bool.
TYPES:
BEGIN OF ty_s_result,
- text TYPE string,
- check_cancel TYPE abap_bool,
+ text TYPE string,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
@@ -87,11 +87,11 @@ CLASS z2ui5_cl_popup_textedit IMPLEMENTATION.
CASE client->get( )-event.
WHEN `BUTTON_TEXTAREA_CONFIRM`.
+ ms_result-check_confirmed = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
WHEN `BUTTON_TEXTAREA_CANCEL`.
- ms_result-check_cancel = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
diff --git a/src/03/01/z2ui5_cl_popup_to_confirm.clas.abap b/src/03/01/z2ui5_cl_popup_to_confirm.clas.abap
index e4f21206..91a64c06 100644
--- a/src/03/01/z2ui5_cl_popup_to_confirm.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_to_confirm.clas.abap
@@ -50,6 +50,7 @@ CLASS Z2UI5_CL_POPUP_TO_CONFIRM IMPLEMENTATION.
METHOD factory.
r_result = new #( ).
+* r_result->z2ui5_if_app~id = z2ui5_cl_util_func=>func_get_uuid_22( ).
r_result->title = i_title.
r_result->icon = i_icon.
r_result->question_text = i_question_text.
diff --git a/src/03/01/z2ui5_cl_popup_to_select.clas.abap b/src/03/01/z2ui5_cl_popup_to_select.clas.abap
index fe11dbd7..0975b1e3 100644
--- a/src/03/01/z2ui5_cl_popup_to_select.clas.abap
+++ b/src/03/01/z2ui5_cl_popup_to_select.clas.abap
@@ -8,14 +8,14 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
CLASS-METHODS factory
IMPORTING
- i_tab TYPE data
+ i_tab TYPE STANDARD TABLE
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_to_select.
TYPES:
BEGIN OF ty_s_result,
- index TYPE i,
- check_cancel TYPE abap_bool,
+ row TYPE REF TO data,
+ check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
@@ -29,6 +29,7 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool.
+ DATA check_table_line TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
METHODS on_event.
METHODS display.
@@ -37,7 +38,6 @@ CLASS z2ui5_cl_popup_to_select DEFINITION
METHODS on_event_search.
PRIVATE SECTION.
- DATA lv_check_table_line TYPE abap_bool.
ENDCLASS.
@@ -48,6 +48,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
r_result = NEW #( ).
CREATE DATA r_result->mr_tab LIKE i_tab.
+ CREATE DATA r_result->ms_result-row LIKE LINE OF i_tab.
FIELD-SYMBOLS TYPE any.
ASSIGN r_result->mr_tab->* TO .
= i_tab.
@@ -90,7 +91,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
METHOD z2ui5_if_app~main.
- me->client = client.
+ me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.
@@ -108,10 +109,10 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
CASE client->get( )-event.
WHEN 'CONFIRM'.
+ ms_result-check_confirmed = abap_true.
on_event_confirm( ).
WHEN 'CANCEL'.
- ms_result-check_cancel = abap_true.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
@@ -142,7 +143,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
DATA(lo_struct) = CAST cl_abap_structdescr( lo_table->get_table_line_type( ) ).
DATA(lt_comp) = lo_struct->get_components( ).
CATCH cx_root.
- lv_check_table_line = abap_true.
+ check_table_line = abap_true.
DATA(lo_elem) = CAST cl_abap_elemdescr( lo_table->get_table_line_type( ) ).
INSERT VALUE #( name = 'TAB_LINE' type = CAST #( lo_elem ) ) INTO TABLE lt_comp.
ENDTRY.
@@ -164,7 +165,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
DATA lr_row TYPE REF TO data.
CREATE DATA lr_row LIKE LINE OF .
ASSIGN lr_row->* TO .
- IF lv_check_table_line = abap_true.
+ IF check_table_line = abap_true.
ASSIGN lr_row->('TAB_LINE') TO .
= .
ELSE.
@@ -182,17 +183,30 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
METHOD on_event_confirm.
FIELD-SYMBOLS TYPE STANDARD TABLE.
- FIELD-SYMBOLS TYPE any.
- FIELD-SYMBOLS TYPE any.
+ FIELD-SYMBOLS TYPE any.
+ FIELD-SYMBOLS TYPE any.
ASSIGN mr_tab_popup->* TO .
- LOOP AT ASSIGNING .
- DATA(lv_tabix) = sy-tabix.
- ASSIGN ('-ZZSELKZ') TO .
- IF = abap_true.
- ms_result-index = lv_tabix.
- EXIT.
+
+ LOOP AT ASSIGNING .
+
+ ASSIGN ('-ZZSELKZ') TO .
+ IF = abap_false.
+ CONTINUE.
ENDIF.
+
+ FIELD-SYMBOLS TYPE any.
+ ASSIGN ms_result-row->* TO .
+
+ IF check_table_line = abap_true.
+ FIELD-SYMBOLS TYPE any.
+ ASSIGN ('-TAB_LINE') TO .
+ = .
+ ELSE.
+ = CORRESPONDING #( ).
+ ENDIF.
+ EXIT.
ENDLOOP.
+
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
diff --git a/src/10/01/z2ui5_cl_xml_view.clas.abap b/src/10/01/z2ui5_cl_xml_view.clas.abap
index 127e932e..46d1efb8 100644
--- a/src/10/01/z2ui5_cl_xml_view.clas.abap
+++ b/src/10/01/z2ui5_cl_xml_view.clas.abap
@@ -264,6 +264,7 @@ public section.
importing
!UNIT type CLIKE optional
!FOOTERCOLOR type CLIKE optional
+ !blocked type CLIKE optional
!FRAMETYPE type CLIKE optional
!PRIORITY type CLIKE optional
!PRIORITYTEXT type CLIKE optional
@@ -6757,6 +6758,7 @@ ENDMETHOD.
t_prop = VALUE #(
( n = `unit` v = unit )
( n = `footerColor` v = footerColor )
+ ( n = `blocked` v = z2ui5_cl_util_func=>boolean_abap_2_json( blocked ) )
( n = `frameType` v = frameType )
( n = `priority` v = priority )
( n = `priorityText` v = priorityText )
diff --git a/src/z2ui5_if_app.intf.abap b/src/z2ui5_if_app.intf.abap
index 8f186dbb..6e597820 100644
--- a/src/z2ui5_if_app.intf.abap
+++ b/src/z2ui5_if_app.intf.abap
@@ -1,7 +1,8 @@
INTERFACE z2ui5_if_app PUBLIC.
INTERFACES if_serializable_object.
- DATA id TYPE string.
+ DATA id_draft TYPE string.
+ DATA id_app TYPE string.
METHODS main
IMPORTING