mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-30 11:06:23 +08:00
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
This commit is contained in:
parent
6db8701c47
commit
dc4cc4f7c3
|
@ -4,6 +4,19 @@ CLASS z2ui5_cl_util_func DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
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
|
CLASS-METHODS js_load_ext_lib
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
@ -92,7 +105,7 @@ CLASS z2ui5_cl_util_func DEFINITION
|
||||||
RAISING
|
RAISING
|
||||||
cx_xslt_serialization_error.
|
cx_xslt_serialization_error.
|
||||||
|
|
||||||
CLASS-METHODS boolean_check
|
CLASS-METHODS boolean_check_by_data
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE any
|
!val TYPE any
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -146,41 +159,49 @@ CLASS z2ui5_cl_util_func DEFINITION
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!rtti_data TYPE clike
|
!rtti_data TYPE clike
|
||||||
EXPORTING
|
EXPORTING
|
||||||
!e_data TYPE REF TO data .
|
!e_data TYPE REF TO data.
|
||||||
|
|
||||||
CLASS-METHODS time_get_timestampl
|
CLASS-METHODS time_get_timestampl
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE timestampl .
|
VALUE(result) TYPE timestampl.
|
||||||
|
|
||||||
CLASS-METHODS time_substract_seconds
|
CLASS-METHODS time_substract_seconds
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!time TYPE timestampl
|
!time TYPE timestampl
|
||||||
!seconds TYPE i
|
!seconds TYPE i
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE timestampl .
|
VALUE(result) TYPE timestampl.
|
||||||
|
|
||||||
CLASS-METHODS c_trim
|
CLASS-METHODS c_trim
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE clike
|
!val TYPE clike
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string .
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS c_trim_lower
|
CLASS-METHODS c_trim_lower
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE clike
|
!val TYPE clike
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string .
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS url_param_get_tab
|
CLASS-METHODS url_param_get_tab
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!i_val TYPE clike
|
!i_val TYPE clike
|
||||||
RETURNING
|
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
|
CLASS-METHODS rtti_get_t_attri_by_object
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE REF TO object
|
!val TYPE REF TO object
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE abap_attrdescr_tab .
|
VALUE(result) TYPE abap_attrdescr_tab.
|
||||||
|
|
||||||
CLASS-METHODS rtti_get_t_comp_by_data
|
CLASS-METHODS rtti_get_t_comp_by_data
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE any
|
!val TYPE any
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
||||||
|
|
||||||
CLASS-METHODS rtti_get_type_name
|
CLASS-METHODS rtti_get_type_name
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE any
|
!val TYPE any
|
||||||
|
@ -205,6 +226,34 @@ CLASS z2ui5_cl_util_func DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
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.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -243,7 +292,7 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD boolean_abap_2_json.
|
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` ).
|
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||||
ELSE.
|
ELSE.
|
||||||
result = val.
|
result = val.
|
||||||
|
@ -252,20 +301,33 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD boolean_check.
|
METHOD boolean_check_by_data.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
DATA(lv_type_name) = rtti_get_type_name( val ).
|
DATA(lv_type_name) = rtti_get_type_name( val ).
|
||||||
CASE lv_type_name.
|
result = boolean_check_by_name( lv_type_name ).
|
||||||
WHEN `ABAP_BOOL` OR `XSDBOOLEAN`.
|
|
||||||
result = abap_true.
|
|
||||||
ENDCASE.
|
|
||||||
CATCH cx_root.
|
CATCH cx_root.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
METHOD c_replace_assign_struc.
|
||||||
|
|
||||||
rv_attri = iv_attri.
|
rv_attri = iv_attri.
|
||||||
|
@ -374,6 +436,89 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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 = `!(<leer>)` )
|
||||||
|
( n = `<leer>` v = `<leer>` )
|
||||||
|
).
|
||||||
|
|
||||||
|
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.
|
METHOD js_load_ext_lib.
|
||||||
|
|
||||||
result = ` async loadScriptExt(url) {` && |\n| &&
|
result = ` async loadScriptExt(url) {` && |\n| &&
|
||||||
|
@ -619,10 +764,11 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD trans_json_any_2.
|
METHOD trans_json_any_2.
|
||||||
|
|
||||||
result = /ui2/cl_json=>serialize(
|
DATA(lo_json) = NEW z2ui5_cl_util_ui2_json(
|
||||||
data = any
|
compress = compress
|
||||||
pretty_name = CONV #( pretty_name )
|
pretty_name = pretty_name ).
|
||||||
compress = compress ).
|
|
||||||
|
result = lo_json->serialize_int( data = any ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -258,20 +258,20 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lv_bool) = xsdbool( 1 = 1 ).
|
DATA(lv_bool) = xsdbool( 1 = 1 ).
|
||||||
cl_abap_unit_assert=>assert_equals(
|
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 ).
|
exp = abap_true ).
|
||||||
|
|
||||||
lv_bool = xsdbool( 1 = 2 ).
|
lv_bool = xsdbool( 1 = 2 ).
|
||||||
cl_abap_unit_assert=>assert_equals(
|
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 ).
|
exp = abap_true ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
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 ).
|
exp = abap_true ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
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 ).
|
exp = abap_true ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
29
src/00/z2ui5_cl_util_ui2_json.clas.abap
Normal file
29
src/00/z2ui5_cl_util_ui2_json.clas.abap
Normal file
|
@ -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.
|
16
src/00/z2ui5_cl_util_ui2_json.clas.xml
Normal file
16
src/00/z2ui5_cl_util_ui2_json.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>Z2UI5_CL_UTIL_UI2_JSON</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abap2UI5 - /ui2/cl_json compress extension</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -381,8 +381,10 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
|
||||||
|
|
||||||
ELSE.
|
ELSE.
|
||||||
|
|
||||||
IF lr_comp->type->absolute_name = '\TYPE=XSDBOOLEAN'
|
DATA(lv_type_name) = substring_after( val = lr_comp->type->absolute_name sub = '\TYPE=').
|
||||||
OR lr_comp->type->absolute_name = '\TYPE=ABAP_BOOL'.
|
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(
|
DATA(ls_attri) = VALUE ty_s_attri(
|
||||||
name = lv_element
|
name = lv_element
|
||||||
|
|
|
@ -148,25 +148,30 @@ CLASS z2ui5_cl_fw_model IMPLEMENTATION.
|
||||||
|
|
||||||
WHEN OTHERS.
|
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 #( <attribute> WHEN abap_true THEN `true` ELSE `false` )
|
||||||
|
apos_active = abap_false ).
|
||||||
|
|
||||||
lo_actual->add_attribute( n = lr_attri->name_front
|
ELSE.
|
||||||
v = SWITCH #( <attribute> WHEN abap_true THEN `true` ELSE `false` )
|
|
||||||
apos_active = abap_false ).
|
|
||||||
|
|
||||||
WHEN OTHERS.
|
lo_actual->add_attribute( n = lr_attri->name_front
|
||||||
|
v = z2ui5_cl_util_func=>trans_json_any_2( any = <attribute> pretty_name = lr_attri->pretty_name compress = lr_attri->compress )
|
||||||
|
apos_active = abap_false ).
|
||||||
|
|
||||||
lo_actual->add_attribute( n = lr_attri->name_front
|
ENDIF.
|
||||||
v = z2ui5_cl_util_func=>trans_json_any_2( any = <attribute> pretty_name = lr_attri->pretty_name compress = lr_attri->compress )
|
|
||||||
apos_active = abap_false ).
|
|
||||||
ENDCASE.
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
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.
|
ENDCLASS.
|
||||||
|
|
84
src/03/01/z2ui5_cl_popup_error.clas.abap
Normal file
84
src/03/01/z2ui5_cl_popup_error.clas.abap
Normal file
|
@ -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.
|
16
src/03/01/z2ui5_cl_popup_error.clas.xml
Normal file
16
src/03/01/z2ui5_cl_popup_error.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>Z2UI5_CL_POPUP_ERROR</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>ui - popup error</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -4,12 +4,6 @@ CLASS lcl_utility DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CLASS-METHODS boolean_abap_2_json
|
|
||||||
IMPORTING
|
|
||||||
val TYPE any
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
CLASS-METHODS factory
|
CLASS-METHODS factory
|
||||||
IMPORTING
|
IMPORTING
|
||||||
client TYPE REF TO z2ui5_if_client optional
|
client TYPE REF TO z2ui5_if_client optional
|
||||||
|
@ -164,16 +158,6 @@ CLASS lcl_utility IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
METHOD factory.
|
||||||
|
|
||||||
r_result = new #( ).
|
r_result = new #( ).
|
||||||
|
|
175
src/03/01/z2ui5_cl_popup_get_range.clas.abap
Normal file
175
src/03/01/z2ui5_cl_popup_get_range.clas.abap
Normal file
|
@ -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.
|
16
src/03/01/z2ui5_cl_popup_get_range.clas.xml
Normal file
16
src/03/01/z2ui5_cl_popup_get_range.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>Z2UI5_CL_POPUP_GET_RANGE</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>ui - popup get range</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -4,15 +4,9 @@ CLASS lcl_utility DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CLASS-METHODS boolean_abap_2_json
|
|
||||||
IMPORTING
|
|
||||||
val TYPE any
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
CLASS-METHODS factory
|
CLASS-METHODS factory
|
||||||
IMPORTING
|
IMPORTING
|
||||||
client TYPE REF TO z2ui5_if_client optional
|
client TYPE REF TO z2ui5_if_client OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(r_result) TYPE REF TO lcl_utility.
|
VALUE(r_result) TYPE REF TO lcl_utility.
|
||||||
|
|
||||||
|
@ -22,9 +16,9 @@ CLASS lcl_utility DEFINITION
|
||||||
|
|
||||||
METHODS app_get_url
|
METHODS app_get_url
|
||||||
IMPORTING
|
IMPORTING
|
||||||
classname TYPE string OPTIONAL
|
classname TYPE string OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
METHODS url_param_get
|
METHODS url_param_get
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -120,13 +114,7 @@ CLASS lcl_utility DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS boolean_check
|
CLASS-METHODS rtti_get_type_name
|
||||||
IMPORTING
|
|
||||||
val TYPE any
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE abap_bool.
|
|
||||||
|
|
||||||
CLASS-METHODS rtti_get_type_name
|
|
||||||
IMPORTING
|
IMPORTING
|
||||||
val TYPE any
|
val TYPE any
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -151,32 +139,9 @@ CLASS lcl_utility IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
METHOD factory.
|
||||||
|
|
||||||
r_result = new #( ).
|
r_result = NEW #( ).
|
||||||
r_result->mi_client = client.
|
r_result->mi_client = client.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user