From dc4cc4f7c3fb2d74aa05631c6a1b4b56fe404c76 Mon Sep 17 00:00:00 2001 From: oblomov <102328295+oblomov-dev@users.noreply.github.com> Date: Sat, 20 Jan 2024 10:35:58 +0100 Subject: [PATCH] Compress function (#793) * compress-function * fix boolean handling * update boolean check * lint fix * lint fixes * popup ranges * popup get range * lint fixes * lint fixes * adjustments * lint fix --- src/00/z2ui5_cl_util_func.clas.abap | 182 ++++++++++++++++-- .../z2ui5_cl_util_func.clas.testclasses.abap | 8 +- src/00/z2ui5_cl_util_ui2_json.clas.abap | 29 +++ src/00/z2ui5_cl_util_ui2_json.clas.xml | 16 ++ src/01/01/z2ui5_cl_fw_binding.clas.abap | 6 +- src/01/01/z2ui5_cl_fw_model.clas.abap | 33 ++-- src/03/01/z2ui5_cl_popup_error.clas.abap | 84 ++++++++ src/03/01/z2ui5_cl_popup_error.clas.xml | 16 ++ ..._cl_popup_file_upload.clas.locals_imp.abap | 16 -- src/03/01/z2ui5_cl_popup_get_range.clas.abap | 175 +++++++++++++++++ src/03/01/z2ui5_cl_popup_get_range.clas.xml | 16 ++ .../z2ui5_cl_popup_pdf.clas.locals_imp.abap | 45 +---- 12 files changed, 532 insertions(+), 94 deletions(-) create mode 100644 src/00/z2ui5_cl_util_ui2_json.clas.abap create mode 100644 src/00/z2ui5_cl_util_ui2_json.clas.xml create mode 100644 src/03/01/z2ui5_cl_popup_error.clas.abap create mode 100644 src/03/01/z2ui5_cl_popup_error.clas.xml create mode 100644 src/03/01/z2ui5_cl_popup_get_range.clas.abap create mode 100644 src/03/01/z2ui5_cl_popup_get_range.clas.xml diff --git a/src/00/z2ui5_cl_util_func.clas.abap b/src/00/z2ui5_cl_util_func.clas.abap index a2994fdf..56320f02 100644 --- a/src/00/z2ui5_cl_util_func.clas.abap +++ b/src/00/z2ui5_cl_util_func.clas.abap @@ -4,6 +4,19 @@ CLASS z2ui5_cl_util_func DEFINITION PUBLIC SECTION. + TYPES: + BEGIN OF ty_s_token, + key TYPE string, + text TYPE string, + visible TYPE abap_bool, + selkz TYPE abap_bool, + editable TYPE abap_bool, + END OF ty_s_token. + TYPES ty_t_token TYPE STANDARD TABLE OF ty_s_token WITH EMPTY KEY. + + TYPES ty_t_range TYPE RANGE OF string. + TYPES ty_s_range TYPE LINE OF ty_t_range. + CLASS-METHODS js_load_ext_lib RETURNING VALUE(result) TYPE string. @@ -92,7 +105,7 @@ CLASS z2ui5_cl_util_func DEFINITION RAISING cx_xslt_serialization_error. - CLASS-METHODS boolean_check + CLASS-METHODS boolean_check_by_data IMPORTING !val TYPE any RETURNING @@ -146,41 +159,49 @@ CLASS z2ui5_cl_util_func DEFINITION IMPORTING !rtti_data TYPE clike EXPORTING - !e_data TYPE REF TO data . + !e_data TYPE REF TO data. + CLASS-METHODS time_get_timestampl RETURNING - VALUE(result) TYPE timestampl . + VALUE(result) TYPE timestampl. + CLASS-METHODS time_substract_seconds IMPORTING !time TYPE timestampl !seconds TYPE i RETURNING - VALUE(result) TYPE timestampl . + VALUE(result) TYPE timestampl. + CLASS-METHODS c_trim IMPORTING !val TYPE clike RETURNING - VALUE(result) TYPE string . + VALUE(result) TYPE string. + CLASS-METHODS c_trim_lower IMPORTING !val TYPE clike RETURNING - VALUE(result) TYPE string . + VALUE(result) TYPE string. + CLASS-METHODS url_param_get_tab IMPORTING !i_val TYPE clike RETURNING - VALUE(rt_params) TYPE z2ui5_if_client=>ty_t_name_value . + VALUE(rt_params) TYPE z2ui5_if_client=>ty_t_name_value. + CLASS-METHODS rtti_get_t_attri_by_object IMPORTING !val TYPE REF TO object RETURNING - VALUE(result) TYPE abap_attrdescr_tab . + VALUE(result) TYPE abap_attrdescr_tab. + CLASS-METHODS rtti_get_t_comp_by_data IMPORTING !val TYPE any RETURNING VALUE(result) TYPE cl_abap_structdescr=>component_table. + CLASS-METHODS rtti_get_type_name IMPORTING !val TYPE any @@ -205,6 +226,34 @@ CLASS z2ui5_cl_util_func DEFINITION RETURNING VALUE(result) TYPE string. + CLASS-METHODS boolean_check_by_name + IMPORTING + val TYPE string + RETURNING + VALUE(result) TYPE abap_bool. + + CLASS-METHODS get_range_t_by_token_t + IMPORTING + val TYPE ty_t_token + RETURNING + VALUE(result) TYPE ty_t_range. + + CLASS-METHODS get_range_by_token + IMPORTING + VALUE(value) TYPE string + RETURNING + VALUE(result) TYPE ty_s_range. + + CLASS-METHODS get_token_t_by_range_t + IMPORTING + val TYPE ty_t_range + RETURNING + VALUE(result) TYPE ty_t_token. + + CLASS-METHODS get_token_range_mapping + RETURNING + VALUE(result) TYPE z2ui5_if_client=>ty_t_name_value. + PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. @@ -243,7 +292,7 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION. METHOD boolean_abap_2_json. - IF boolean_check( val ). + IF boolean_check_by_data( val ). result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). ELSE. result = val. @@ -252,20 +301,33 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION. ENDMETHOD. - METHOD boolean_check. + METHOD boolean_check_by_data. TRY. DATA(lv_type_name) = rtti_get_type_name( val ). - CASE lv_type_name. - WHEN `ABAP_BOOL` OR `XSDBOOLEAN`. - result = abap_true. - ENDCASE. + result = boolean_check_by_name( lv_type_name ). CATCH cx_root. ENDTRY. ENDMETHOD. + METHOD boolean_check_by_name. + + CASE val. + WHEN 'ABAP_BOOL' + OR 'XSDBOOLEAN' + OR 'FLAG' + OR 'XFELD' + OR 'ABAP_BOOLEAN' + OR 'WDY_BOOLEAN' + OR 'OS_BOOLEAN'. + result = abap_true. + ENDCASE. + + ENDMETHOD. + + METHOD c_replace_assign_struc. rv_attri = iv_attri. @@ -374,6 +436,89 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION. ENDMETHOD. + METHOD get_range_t_by_token_t. + + LOOP AT val INTO DATA(ls_token). + INSERT get_range_by_token( ls_token-text ) INTO TABLE result. + ENDLOOP. + + ENDMETHOD. + + METHOD get_range_by_token. + + DATA(lv_length) = strlen( value ) - 1. + CASE value(1). + + WHEN `=`. + result = VALUE #( option = `EQ` low = value+1 ). + WHEN `<`. + IF value+1(1) = `=`. + result = VALUE #( option = `LE` low = value+2 ). + ELSE. + result = VALUE #( option = `LT` low = value+1 ). + ENDIF. + WHEN `>`. + IF value+1(1) = `=`. + result = VALUE #( option = `GE` low = value+2 ). + ELSE. + result = VALUE #( option = `GT` low = value+1 ). + ENDIF. + + WHEN `*`. + IF value+lv_length(1) = `*`. + SHIFT value RIGHT DELETING TRAILING `*`. + SHIFT value LEFT DELETING LEADING `*`. + result = VALUE #( sign = `I` option = `CP` low = value ). + ENDIF. + + WHEN OTHERS. + IF value CP `...`. + SPLIT value AT `...` INTO result-low result-high. + result-option = `BT`. + ELSE. + result = VALUE #( sign = `I` option = `EQ` low = value ). + ENDIF. + + ENDCASE. + + ENDMETHOD. + + + METHOD get_token_range_mapping. + + + result = VALUE #( +( n = `EQ` v = `={LOW}` ) +( n = `LT` v = `<{LOW}` ) +( n = `LE` v = `<={LOW}` ) +( n = `GT` v = `>{LOW}` ) +( n = `GE` v = `>={LOW}` ) +( n = `CP` v = `*{LOW}*` ) +( n = `BT` v = `{LOW}...{HIGH}` ) +( n = `NE` v = `!(={LOW})` ) +( n = `NE` v = `!()` ) +( n = `` v = `` ) +). + + ENDMETHOD. + + + METHOD get_token_t_by_range_t. + + DATA(lt_mapping) = get_token_range_mapping( ). + + LOOP AT val REFERENCE INTO DATA(lr_row). + + DATA(lv_value) = lt_mapping[ n = lr_row->option ]-v. + REPLACE `{LOW}` IN lv_value WITH lr_row->low. + REPLACE `{HIGH}` IN lv_value WITH lr_row->high. + + INSERT VALUE #( key = lv_value text = lv_value visible = abap_true editable = abap_true ) INTO TABLE result. + ENDLOOP. + + ENDMETHOD. + + METHOD js_load_ext_lib. result = ` async loadScriptExt(url) {` && |\n| && @@ -619,10 +764,11 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION. METHOD trans_json_any_2. - result = /ui2/cl_json=>serialize( - data = any - pretty_name = CONV #( pretty_name ) - compress = compress ). + DATA(lo_json) = NEW z2ui5_cl_util_ui2_json( + compress = compress + pretty_name = pretty_name ). + + result = lo_json->serialize_int( data = any ). ENDMETHOD. diff --git a/src/00/z2ui5_cl_util_func.clas.testclasses.abap b/src/00/z2ui5_cl_util_func.clas.testclasses.abap index 65da6874..9d280a8a 100644 --- a/src/00/z2ui5_cl_util_func.clas.testclasses.abap +++ b/src/00/z2ui5_cl_util_func.clas.testclasses.abap @@ -258,20 +258,20 @@ CLASS ltcl_unit_test IMPLEMENTATION. DATA(lv_bool) = xsdbool( 1 = 1 ). cl_abap_unit_assert=>assert_equals( - act = z2ui5_cl_util_func=>boolean_check( lv_bool ) + act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool ) exp = abap_true ). lv_bool = xsdbool( 1 = 2 ). cl_abap_unit_assert=>assert_equals( - act = z2ui5_cl_util_func=>boolean_check( lv_bool ) + act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool ) exp = abap_true ). cl_abap_unit_assert=>assert_equals( - act = z2ui5_cl_util_func=>boolean_check( abap_true ) + act = z2ui5_cl_util_func=>boolean_check_by_data( abap_true ) exp = abap_true ). cl_abap_unit_assert=>assert_equals( - act = z2ui5_cl_util_func=>boolean_check( abap_false ) + act = z2ui5_cl_util_func=>boolean_check_by_data( abap_false ) exp = abap_true ). ENDMETHOD. diff --git a/src/00/z2ui5_cl_util_ui2_json.clas.abap b/src/00/z2ui5_cl_util_ui2_json.clas.abap new file mode 100644 index 00000000..91021efa --- /dev/null +++ b/src/00/z2ui5_cl_util_ui2_json.clas.abap @@ -0,0 +1,29 @@ +CLASS z2ui5_cl_util_ui2_json DEFINITION + PUBLIC + FINAL + CREATE PUBLIC INHERITING FROM /ui2/cl_json. + + PUBLIC SECTION. + PROTECTED SECTION. + METHODS is_compressable REDEFINITION. + + PRIVATE SECTION. +ENDCLASS. + + + +CLASS z2ui5_cl_util_ui2_json IMPLEMENTATION. + + METHOD is_compressable. + + rv_compress = super->is_compressable( + type_descr = type_descr + name = name ). + + IF z2ui5_cl_util_func=>boolean_check_by_name( type_descr->get_relative_name( ) ). + rv_compress = abap_false. + ENDIF. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/00/z2ui5_cl_util_ui2_json.clas.xml b/src/00/z2ui5_cl_util_ui2_json.clas.xml new file mode 100644 index 00000000..fddf6117 --- /dev/null +++ b/src/00/z2ui5_cl_util_ui2_json.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_UTIL_UI2_JSON + E + abap2UI5 - /ui2/cl_json compress extension + 1 + X + X + X + + + + diff --git a/src/01/01/z2ui5_cl_fw_binding.clas.abap b/src/01/01/z2ui5_cl_fw_binding.clas.abap index f789b040..887fa220 100644 --- a/src/01/01/z2ui5_cl_fw_binding.clas.abap +++ b/src/01/01/z2ui5_cl_fw_binding.clas.abap @@ -381,8 +381,10 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION. ELSE. - IF lr_comp->type->absolute_name = '\TYPE=XSDBOOLEAN' - OR lr_comp->type->absolute_name = '\TYPE=ABAP_BOOL'. + DATA(lv_type_name) = substring_after( val = lr_comp->type->absolute_name sub = '\TYPE='). + IF z2ui5_cl_util_func=>boolean_check_by_name( lv_type_name ). +* IF lr_comp->type->absolute_name = '\TYPE=XSDBOOLEAN' +* OR lr_comp->type->absolute_name = '\TYPE=ABAP_BOOL'. DATA(ls_attri) = VALUE ty_s_attri( name = lv_element diff --git a/src/01/01/z2ui5_cl_fw_model.clas.abap b/src/01/01/z2ui5_cl_fw_model.clas.abap index ac504963..42855898 100644 --- a/src/01/01/z2ui5_cl_fw_model.clas.abap +++ b/src/01/01/z2ui5_cl_fw_model.clas.abap @@ -148,25 +148,30 @@ CLASS z2ui5_cl_fw_model IMPLEMENTATION. WHEN OTHERS. - CASE lr_attri->type. + IF z2ui5_cl_util_func=>boolean_check_by_name( lr_attri->type ). - WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`. + lo_actual->add_attribute( n = lr_attri->name_front + v = SWITCH #( WHEN abap_true THEN `true` ELSE `false` ) + apos_active = abap_false ). - lo_actual->add_attribute( n = lr_attri->name_front - v = SWITCH #( WHEN abap_true THEN `true` ELSE `false` ) - apos_active = abap_false ). + ELSE. - WHEN OTHERS. + lo_actual->add_attribute( n = lr_attri->name_front + v = z2ui5_cl_util_func=>trans_json_any_2( any = pretty_name = lr_attri->pretty_name compress = lr_attri->compress ) + apos_active = abap_false ). - lo_actual->add_attribute( n = lr_attri->name_front - v = z2ui5_cl_util_func=>trans_json_any_2( any = pretty_name = lr_attri->pretty_name compress = lr_attri->compress ) - apos_active = abap_false ). - ENDCASE. - ENDCASE. + ENDIF. - ENDLOOP. +* CASE lr_attri->type. +* WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN` +* WHEN OTHERS. +* ENDCASE. - result = lr_view_model->stringify( ). + ENDCASE. - ENDMETHOD. +ENDLOOP. + +result = lr_view_model->stringify( ). + +ENDMETHOD. ENDCLASS. diff --git a/src/03/01/z2ui5_cl_popup_error.clas.abap b/src/03/01/z2ui5_cl_popup_error.clas.abap new file mode 100644 index 00000000..72672758 --- /dev/null +++ b/src/03/01/z2ui5_cl_popup_error.clas.abap @@ -0,0 +1,84 @@ +CLASS z2ui5_cl_popup_error DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + INTERFACES z2ui5_if_app. + + CLASS-METHODS factory + IMPORTING + 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` + RETURNING + VALUE(r_result) TYPE REF TO z2ui5_cl_popup_error. + + PROTECTED SECTION. + DATA client TYPE REF TO z2ui5_if_client. + DATA title TYPE string. + DATA icon TYPE string. + DATA question_text TYPE string. + DATA button_text_confirm TYPE string. + DATA check_initialized TYPE abap_bool. + METHODS view_display. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS z2ui5_cl_popup_error IMPLEMENTATION. + + METHOD factory. + + r_result = NEW #( ). + r_result->title = i_title. + r_result->icon = i_icon. + r_result->question_text = error->get_text( ). + r_result->button_text_confirm = i_button_text. + + ENDMETHOD. + + + METHOD view_display. + + DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( + title = title + icon = icon + afterclose = client->_event( 'BUTTON_CONFIRM' ) + )->content( + )->vbox( 'sapUiMediumMargin' + )->text( question_text + )->get_parent( )->get_parent( + )->footer( )->overflow_toolbar( + )->toolbar_spacer( + )->button( + text = button_text_confirm + press = client->_event( 'BUTTON_CONFIRM' ) + type = 'Emphasized' ). + + client->popup_display( popup->stringify( ) ). + + ENDMETHOD. + + + METHOD z2ui5_if_app~main. + + me->client = client. + + IF check_initialized = abap_false. + check_initialized = abap_true. + view_display( ). + RETURN. + ENDIF. + + CASE client->get( )-event. + WHEN `BUTTON_CONFIRM`. + client->popup_destroy( ). + client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ). + ENDCASE. + + ENDMETHOD. +ENDCLASS. diff --git a/src/03/01/z2ui5_cl_popup_error.clas.xml b/src/03/01/z2ui5_cl_popup_error.clas.xml new file mode 100644 index 00000000..e45be618 --- /dev/null +++ b/src/03/01/z2ui5_cl_popup_error.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_POPUP_ERROR + E + ui - popup error + 1 + X + X + X + + + + diff --git a/src/03/01/z2ui5_cl_popup_file_upload.clas.locals_imp.abap b/src/03/01/z2ui5_cl_popup_file_upload.clas.locals_imp.abap index 63f746f5..dfc7304d 100644 --- a/src/03/01/z2ui5_cl_popup_file_upload.clas.locals_imp.abap +++ b/src/03/01/z2ui5_cl_popup_file_upload.clas.locals_imp.abap @@ -4,12 +4,6 @@ CLASS lcl_utility DEFINITION PUBLIC SECTION. - CLASS-METHODS boolean_abap_2_json - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - CLASS-METHODS factory IMPORTING client TYPE REF TO z2ui5_if_client optional @@ -164,16 +158,6 @@ CLASS lcl_utility IMPLEMENTATION. ENDMETHOD. - METHOD boolean_abap_2_json. - - IF boolean_check( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = val. - ENDIF. - - ENDMETHOD. - METHOD factory. r_result = new #( ). diff --git a/src/03/01/z2ui5_cl_popup_get_range.clas.abap b/src/03/01/z2ui5_cl_popup_get_range.clas.abap new file mode 100644 index 00000000..3929bf89 --- /dev/null +++ b/src/03/01/z2ui5_cl_popup_get_range.clas.abap @@ -0,0 +1,175 @@ +CLASS z2ui5_cl_popup_get_range DEFINITION + PUBLIC + FINAL + CREATE PUBLIC . + + PUBLIC SECTION. + + INTERFACES z2ui5_if_app. + + TYPES: + BEGIN OF ty_s_filter_pop, + option TYPE string, + low TYPE string, + high TYPE string, + key TYPE string, + END OF ty_s_filter_pop. + DATA mt_filter TYPE STANDARD TABLE OF ty_s_filter_pop WITH EMPTY KEY. + + CLASS-METHODS factory + IMPORTING + t_range TYPE z2ui5_cl_util_func=>ty_t_range OPTIONAL + RETURNING + VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range. + + TYPES: + BEGIN OF ty_s_result, + t_range TYPE z2ui5_cl_util_func=>ty_t_range, + check_cancel 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 check_result_confirmed TYPE abap_bool. + METHODS view_display. + PRIVATE SECTION. +ENDCLASS. + + + +CLASS z2ui5_cl_popup_get_range IMPLEMENTATION. + + METHOD factory. + + r_result = NEW #( ). + r_result->ms_result-t_range = t_range. + + ENDMETHOD. + + + METHOD result. + + result = ms_result. + + ENDMETHOD. + + + METHOD view_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( + " headertext = `Product` + nodata = `no conditions defined` + items = client->_bind_edit( mt_filter ) + selectionchange = client->_event( 'SELCHANGE' ) + )->custom_list_item( ). + + DATA(grid) = item->grid( ). + + grid->combobox( + selectedkey = `{OPTION}` + items = client->_bind_local( z2ui5_cl_util_func=>get_token_range_mapping( ) ) + )->item( + key = '{N}' + text = '{N}' + )->get_parent( + )->input( value = `{LOW}` + )->input( value = `{HIGH}` visible = `{= ${OPTION} === 'BT' }` + )->button( icon = 'sap-icon://decline' type = `Transparent` press = client->_event( val = `POPUP_DELETE` t_arg = VALUE #( ( `${KEY}` ) ) ) + ). + + lo_popup->footer( )->overflow_toolbar( + )->button( text = `Delete All` icon = 'sap-icon://delete' type = `Transparent` press = client->_event( val = `POPUP_DELETE_ALL` ) + )->button( text = `Add Item` icon = `sap-icon://add` press = client->_event( val = `POPUP_ADD` ) + )->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. + + 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. + ENDIF. + + CASE client->get( )-event. + WHEN `BUTTON_CONFIRM`. + + CLEAR ms_result-t_range. + LOOP AT mt_filter REFERENCE INTO DATA(lr_filter). + INSERT VALUE #( + sign = `I` + option = lr_filter->option + low = lr_filter->low + high = lr_filter->high + ) INTO TABLE ms_result-t_range. + ENDLOOP. + + check_result_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 ) ). + + WHEN `POPUP_ADD`. + INSERT VALUE #( key = z2ui5_cl_util_func=>func_get_uuid_32( ) ) INTO TABLE mt_filter. + client->popup_model_update( ). + + WHEN `POPUP_DELETE`. + DATA(lt_event) = client->get( )-t_event_arg. + DELETE mt_filter WHERE key = lt_event[ 1 ]. + client->popup_model_update( ). + + WHEN `POPUP_DELETE_ALL`. + mt_filter = VALUE #( ). + client->popup_model_update( ). + + ENDCASE. + + ENDMETHOD. +ENDCLASS. diff --git a/src/03/01/z2ui5_cl_popup_get_range.clas.xml b/src/03/01/z2ui5_cl_popup_get_range.clas.xml new file mode 100644 index 00000000..7647a455 --- /dev/null +++ b/src/03/01/z2ui5_cl_popup_get_range.clas.xml @@ -0,0 +1,16 @@ + + + + + + Z2UI5_CL_POPUP_GET_RANGE + E + ui - popup get range + 1 + X + X + X + + + + diff --git a/src/03/01/z2ui5_cl_popup_pdf.clas.locals_imp.abap b/src/03/01/z2ui5_cl_popup_pdf.clas.locals_imp.abap index 63f746f5..f4a1e06e 100644 --- a/src/03/01/z2ui5_cl_popup_pdf.clas.locals_imp.abap +++ b/src/03/01/z2ui5_cl_popup_pdf.clas.locals_imp.abap @@ -4,15 +4,9 @@ CLASS lcl_utility DEFINITION PUBLIC SECTION. - CLASS-METHODS boolean_abap_2_json - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE string. - CLASS-METHODS factory IMPORTING - client TYPE REF TO z2ui5_if_client optional + client TYPE REF TO z2ui5_if_client OPTIONAL RETURNING VALUE(r_result) TYPE REF TO lcl_utility. @@ -22,9 +16,9 @@ CLASS lcl_utility DEFINITION METHODS app_get_url IMPORTING - classname TYPE string OPTIONAL + classname TYPE string OPTIONAL RETURNING - VALUE(result) TYPE string. + VALUE(result) TYPE string. METHODS url_param_get IMPORTING @@ -120,13 +114,7 @@ CLASS lcl_utility DEFINITION RETURNING VALUE(result) TYPE string. - CLASS-METHODS boolean_check - IMPORTING - val TYPE any - RETURNING - VALUE(result) TYPE abap_bool. - - CLASS-METHODS rtti_get_type_name + CLASS-METHODS rtti_get_type_name IMPORTING val TYPE any RETURNING @@ -151,32 +139,9 @@ CLASS lcl_utility IMPLEMENTATION. ENDMETHOD. - METHOD boolean_check. - - TRY. - DATA(lv_type_name) = rtti_get_type_name( val ). - CASE lv_type_name. - WHEN `ABAP_BOOL` OR `XSDBOOLEAN`. - result = abap_true. - ENDCASE. - CATCH cx_root. - ENDTRY. - - ENDMETHOD. - - METHOD boolean_abap_2_json. - - IF boolean_check( val ). - result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ). - ELSE. - result = val. - ENDIF. - - ENDMETHOD. - METHOD factory. - r_result = new #( ). + r_result = NEW #( ). r_result->mi_client = client. ENDMETHOD.