mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00
refactoring utility and raise exceptions directly (#1749)
Some checks failed
build_downport_branch / build_downpor_branch (push) Has been cancelled
build_frontend_classic / build_frontend_classic (push) Has been cancelled
build_frontend_cloud / build_frontend_cloud (push) Has been cancelled
build_frontend_http / build_frontend_http (push) Has been cancelled
ui5lint / test (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
Some checks failed
build_downport_branch / build_downpor_branch (push) Has been cancelled
build_frontend_classic / build_frontend_classic (push) Has been cancelled
build_frontend_cloud / build_frontend_cloud (push) Has been cancelled
build_frontend_http / build_frontend_http (push) Has been cancelled
ui5lint / test (push) Has been cancelled
ajson mirror / pr_ajson_changes (push) Has been cancelled
* refactoring utility and raise exceptions directly * update * update
This commit is contained in:
parent
3901853880
commit
3cbd06e952
|
@ -1398,10 +1398,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
|
||||
LOOP AT val INTO DATA(ls_filter).
|
||||
|
||||
" TODO: variable is assigned but never used (ABAP cleaner)
|
||||
DATA lo_range TYPE REF TO lcl_range_to_sql.
|
||||
|
||||
lo_range = NEW #( iv_fieldname = ls_filter-name
|
||||
DATA(lo_range) = NEW z2ui5_cl_util_range( iv_fieldname = ls_filter-name
|
||||
ir_range = REF #( ls_filter-t_range ) ).
|
||||
|
||||
ENDLOOP.
|
||||
|
@ -1410,7 +1407,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
|||
|
||||
METHOD msg_get.
|
||||
|
||||
result = lcl_msp_mapper=>msg_get( val ).
|
||||
result = z2ui5_cl_util_msg=>msg_get( val ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -769,128 +769,3 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_msg_mapper DEFINITION FINAL
|
||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS test_bal FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_cx FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapiret FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapirettab FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_sy FOR TESTING RAISING cx_static_check.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_msg_mapper IMPLEMENTATION.
|
||||
|
||||
METHOD test_sy.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
MESSAGE ID 'NET' TYPE 'I' NUMBER '001' INTO DATA(lv_dummy).
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( sy ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `NET`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `I`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapiret.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
).
|
||||
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lt_msg[ 1 ] ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapirettab.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
( type = 'I' id = 'MSG2' number = '002' message = 'Product already in use' ) ).
|
||||
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lt_msg ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_cx.
|
||||
|
||||
TRY.
|
||||
DATA(lv_val) = 1 / 0.
|
||||
CATCH cx_root INTO DATA(lx).
|
||||
DATA(lt_result) = lcl_msp_mapper=>msg_get( lx ).
|
||||
ENDTRY.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
method test_bal.
|
||||
|
||||
TYPES: BEGIN OF ty_log_entry,
|
||||
msgnumber TYPE n LENGTH 6, " Application Log: Internal Message Serial Number
|
||||
msgty TYPE c LENGTH 1, " Message Type
|
||||
msgid TYPE c LENGTH 20, " Message Class
|
||||
msgno TYPE n LENGTH 3, " Message Number
|
||||
msgv1 TYPE c LENGTH 50, " Message Variable
|
||||
msgv2 TYPE c LENGTH 50, " Message Variable
|
||||
msgv3 TYPE c LENGTH 50, " Message Variable
|
||||
msgv4 TYPE c LENGTH 50, " Message Variable
|
||||
msgv1_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv2_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv3_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv4_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
detlevel TYPE c LENGTH 1, " Level of Detail
|
||||
probclass TYPE c LENGTH 1, " Problem Class
|
||||
alsort TYPE c LENGTH 3, " Sort Criterion/Grouping
|
||||
time_stmp TYPE p LENGTH 8 DECIMALS 7, " Message Time Stamp
|
||||
msg_count TYPE i, " Cumulated Message Count
|
||||
context TYPE c LENGTH 255, " Context (Generic Placeholder)
|
||||
params TYPE c LENGTH 255, " Parameters (Generic Placeholder)
|
||||
msg_txt TYPE string, " Message Text
|
||||
END OF ty_log_entry.
|
||||
|
||||
endmethod.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_UTIL</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap toolkit</DESCRIPT>
|
||||
<DESCRIPT>util</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
|
|
|
@ -4,12 +4,6 @@ CLASS z2ui5_cl_util_abap DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
" abap-api - Serving a Release & Version Independent ABAP Layer
|
||||
" version: '0.0.1'.
|
||||
" origin: https://github.com/oblomov-dev/abap-api
|
||||
" author: https://github.com/oblomov-dev
|
||||
" license: MIT.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_fix_val,
|
||||
low TYPE string,
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_UTIL_ABAP</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap api</DESCRIPT>
|
||||
<DESCRIPT>util - api</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_UTIL_ABAP_HTTP</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap api</DESCRIPT>
|
||||
<DESCRIPT>util - api http</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
|
|
|
@ -1,125 +1,5 @@
|
|||
CLASS lcl_range_to_sql DEFINITION
|
||||
CLASS z2ui5_cl_util_msg DEFINITION PUBLIC
|
||||
FINAL CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CONSTANTS: BEGIN OF signs,
|
||||
including TYPE string VALUE 'I',
|
||||
excluding TYPE string VALUE 'E',
|
||||
END OF signs.
|
||||
|
||||
CONSTANTS: BEGIN OF options,
|
||||
equal TYPE string VALUE 'EQ',
|
||||
not_equal TYPE string VALUE 'NE',
|
||||
between TYPE string VALUE 'BT',
|
||||
not_between TYPE string VALUE 'NB',
|
||||
contains_pattern TYPE string VALUE 'CP',
|
||||
not_contains_pattern TYPE string VALUE 'NP',
|
||||
greater_than TYPE string VALUE 'GT',
|
||||
greater_equal TYPE string VALUE 'GE',
|
||||
less_equal TYPE string VALUE 'LE',
|
||||
less_than TYPE string VALUE 'LT',
|
||||
END OF options.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
iv_fieldname TYPE clike
|
||||
ir_range TYPE REF TO data.
|
||||
|
||||
METHODS get_sql
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
DATA mv_fieldname TYPE string.
|
||||
DATA mr_range TYPE REF TO data.
|
||||
|
||||
CLASS-METHODS quote
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(out) TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS lcl_range_to_sql IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
|
||||
mr_range = ir_range.
|
||||
mv_fieldname = |{ to_upper( iv_fieldname ) }|.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_sql.
|
||||
|
||||
FIELD-SYMBOLS <lt_range> TYPE STANDARD TABLE.
|
||||
|
||||
ASSIGN me->mr_range->* TO <lt_range>.
|
||||
|
||||
IF xsdbool( <lt_range> IS INITIAL ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
result = `(`.
|
||||
|
||||
LOOP AT <lt_range> ASSIGNING FIELD-SYMBOL(<ls_range_item>).
|
||||
|
||||
ASSIGN COMPONENT 'SIGN' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_sign>).
|
||||
ASSIGN COMPONENT 'OPTION' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_option>).
|
||||
ASSIGN COMPONENT 'LOW' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_low>).
|
||||
ASSIGN COMPONENT 'HIGH' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_high>).
|
||||
|
||||
IF sy-tabix <> 1.
|
||||
result = |{ result } OR|.
|
||||
ENDIF.
|
||||
|
||||
IF <lv_sign> = signs-excluding.
|
||||
result = |{ result } NOT|.
|
||||
ENDIF.
|
||||
|
||||
result = |{ result } { me->mv_fieldname }|.
|
||||
|
||||
CASE <lv_option>.
|
||||
WHEN options-equal OR
|
||||
options-not_equal OR
|
||||
options-greater_than OR
|
||||
options-greater_equal OR
|
||||
options-less_equal OR
|
||||
options-less_than.
|
||||
result = |{ result } { <lv_option> } { quote( <lv_low> ) }|.
|
||||
|
||||
WHEN options-between.
|
||||
result = |{ result } BETWEEN { quote( <lv_low> ) } AND { quote( <lv_high> ) }|.
|
||||
|
||||
WHEN options-not_between.
|
||||
result = |{ result } NOT BETWEEN { quote( <lv_low> ) } AND { quote( <lv_high> ) }|.
|
||||
|
||||
WHEN options-contains_pattern.
|
||||
TRANSLATE <lv_low> USING '*%'.
|
||||
result = |{ result } LIKE { quote( <lv_low> ) }|.
|
||||
|
||||
WHEN options-not_contains_pattern.
|
||||
TRANSLATE <lv_low> USING '*%'.
|
||||
result = |{ result } NOT LIKE { quote( <lv_low> ) }|.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
result = |{ result } )|.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD quote.
|
||||
out = |'{ replace( val = val
|
||||
sub = `'`
|
||||
with = `''`
|
||||
occ = 0 ) }'|.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_msp_mapper DEFINITION
|
||||
FINAL CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS msg_map
|
||||
IMPORTING
|
||||
|
@ -128,19 +8,17 @@ CLASS lcl_msp_mapper DEFINITION
|
|||
is_msg TYPE z2ui5_cl_util=>ty_s_msg
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_cl_util=>ty_s_msg.
|
||||
|
||||
CLASS-METHODS msg_get
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_cl_util=>ty_t_msg.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_msp_mapper IMPLEMENTATION.
|
||||
|
||||
CLASS z2ui5_cl_util_msg IMPLEMENTATION.
|
||||
METHOD msg_get.
|
||||
|
||||
|
||||
DATA(lv_kind) = z2ui5_cl_util=>rtti_get_type_kind( val ).
|
||||
CASE lv_kind.
|
||||
|
||||
|
@ -250,10 +128,11 @@ CLASS lcl_msp_mapper IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDMETHOD.
|
||||
METHOD msg_map.
|
||||
|
||||
|
||||
result = is_msg.
|
||||
CASE name.
|
||||
WHEN 'ID' OR 'MSGID'.
|
||||
|
@ -276,6 +155,6 @@ CLASS lcl_msp_mapper IMPLEMENTATION.
|
|||
result-timestampl = val.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
125
src/00/03/z2ui5_cl_util_msg.clas.testclasses.abap
Normal file
125
src/00/03/z2ui5_cl_util_msg.clas.testclasses.abap
Normal file
|
@ -0,0 +1,125 @@
|
|||
|
||||
CLASS ltcl_unit_test_msg_mapper DEFINITION FINAL
|
||||
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS test_bal FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_cx FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapiret FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_bapirettab FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_sy FOR TESTING RAISING cx_static_check.
|
||||
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_msg_mapper IMPLEMENTATION.
|
||||
|
||||
METHOD test_sy.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
MESSAGE ID 'NET' TYPE 'I' NUMBER '001' INTO DATA(lv_dummy).
|
||||
DATA(lt_result) = z2ui5_cl_util_msg=>msg_get( sy ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `NET`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `I`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapiret.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
).
|
||||
|
||||
DATA(lt_result) = z2ui5_cl_util_msg=>msg_get( lt_msg[ 1 ] ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_bapirettab.
|
||||
|
||||
IF sy-sysid = 'ABC'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_msg) = VALUE bapirettab(
|
||||
( type = 'E' id = 'MSG1' number = '001' message = 'An empty Report field causes an empty XML Message to be sent' )
|
||||
( type = 'I' id = 'MSG2' number = '002' message = 'Product already in use' ) ).
|
||||
|
||||
DATA(lt_result) = z2ui5_cl_util_msg=>msg_get( lt_msg ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `MSG1`
|
||||
act = lt_result[ 1 ]-id ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `001`
|
||||
act = lt_result[ 1 ]-no ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_cx.
|
||||
|
||||
TRY.
|
||||
DATA(lv_val) = 1 / 0.
|
||||
CATCH cx_root INTO DATA(lx).
|
||||
DATA(lt_result) = z2ui5_cl_util_msg=>msg_get( lx ).
|
||||
ENDTRY.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `E`
|
||||
act = lt_result[ 1 ]-type ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
method test_bal.
|
||||
|
||||
TYPES: BEGIN OF ty_log_entry,
|
||||
msgnumber TYPE n LENGTH 6, " Application Log: Internal Message Serial Number
|
||||
msgty TYPE c LENGTH 1, " Message Type
|
||||
msgid TYPE c LENGTH 20, " Message Class
|
||||
msgno TYPE n LENGTH 3, " Message Number
|
||||
msgv1 TYPE c LENGTH 50, " Message Variable
|
||||
msgv2 TYPE c LENGTH 50, " Message Variable
|
||||
msgv3 TYPE c LENGTH 50, " Message Variable
|
||||
msgv4 TYPE c LENGTH 50, " Message Variable
|
||||
msgv1_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv2_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv3_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
msgv4_src TYPE c LENGTH 15, " Origin of a Message Variable
|
||||
detlevel TYPE c LENGTH 1, " Level of Detail
|
||||
probclass TYPE c LENGTH 1, " Problem Class
|
||||
alsort TYPE c LENGTH 3, " Sort Criterion/Grouping
|
||||
time_stmp TYPE p LENGTH 8 DECIMALS 7, " Message Time Stamp
|
||||
msg_count TYPE i, " Cumulated Message Count
|
||||
context TYPE c LENGTH 255, " Context (Generic Placeholder)
|
||||
params TYPE c LENGTH 255, " Parameters (Generic Placeholder)
|
||||
msg_txt TYPE string, " Message Text
|
||||
END OF ty_log_entry.
|
||||
|
||||
endmethod.
|
||||
|
||||
ENDCLASS.
|
17
src/00/03/z2ui5_cl_util_msg.clas.xml
Normal file
17
src/00/03/z2ui5_cl_util_msg.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?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_MSG</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>util - messages</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
117
src/00/03/z2ui5_cl_util_range.clas.abap
Normal file
117
src/00/03/z2ui5_cl_util_range.clas.abap
Normal file
|
@ -0,0 +1,117 @@
|
|||
CLASS z2ui5_cl_util_range DEFINITION PUBLIC
|
||||
FINAL CREATE PUBLIC.
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: BEGIN OF signs,
|
||||
including TYPE string VALUE 'I',
|
||||
excluding TYPE string VALUE 'E',
|
||||
END OF signs.
|
||||
CONSTANTS: BEGIN OF options,
|
||||
equal TYPE string VALUE 'EQ',
|
||||
not_equal TYPE string VALUE 'NE',
|
||||
between TYPE string VALUE 'BT',
|
||||
not_between TYPE string VALUE 'NB',
|
||||
contains_pattern TYPE string VALUE 'CP',
|
||||
not_contains_pattern TYPE string VALUE 'NP',
|
||||
greater_than TYPE string VALUE 'GT',
|
||||
greater_equal TYPE string VALUE 'GE',
|
||||
less_equal TYPE string VALUE 'LE',
|
||||
less_than TYPE string VALUE 'LT',
|
||||
END OF options.
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
iv_fieldname TYPE clike
|
||||
ir_range TYPE REF TO data.
|
||||
METHODS get_sql
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
PROTECTED SECTION.
|
||||
DATA mv_fieldname TYPE string.
|
||||
DATA mr_range TYPE REF TO data.
|
||||
CLASS-METHODS quote
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(out) TYPE string.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_util_range IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
|
||||
|
||||
mr_range = ir_range.
|
||||
mv_fieldname = |{ to_upper( iv_fieldname ) }|.
|
||||
|
||||
|
||||
mr_range = ir_range.
|
||||
mv_fieldname = |{ to_upper( iv_fieldname ) }|.
|
||||
ENDMETHOD.
|
||||
METHOD get_sql.
|
||||
|
||||
|
||||
FIELD-SYMBOLS <lt_range> TYPE STANDARD TABLE.
|
||||
|
||||
ASSIGN me->mr_range->* TO <lt_range>.
|
||||
|
||||
IF xsdbool( <lt_range> IS INITIAL ) = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
result = `(`.
|
||||
|
||||
LOOP AT <lt_range> ASSIGNING FIELD-SYMBOL(<ls_range_item>).
|
||||
|
||||
ASSIGN COMPONENT 'SIGN' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_sign>).
|
||||
ASSIGN COMPONENT 'OPTION' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_option>).
|
||||
ASSIGN COMPONENT 'LOW' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_low>).
|
||||
ASSIGN COMPONENT 'HIGH' OF STRUCTURE <ls_range_item> TO FIELD-SYMBOL(<lv_high>).
|
||||
|
||||
IF sy-tabix <> 1.
|
||||
result = |{ result } OR|.
|
||||
ENDIF.
|
||||
|
||||
IF <lv_sign> = signs-excluding.
|
||||
result = |{ result } NOT|.
|
||||
ENDIF.
|
||||
|
||||
result = |{ result } { me->mv_fieldname }|.
|
||||
|
||||
CASE <lv_option>.
|
||||
WHEN options-equal OR
|
||||
options-not_equal OR
|
||||
options-greater_than OR
|
||||
options-greater_equal OR
|
||||
options-less_equal OR
|
||||
options-less_than.
|
||||
result = |{ result } { <lv_option> } { quote( <lv_low> ) }|.
|
||||
|
||||
WHEN options-between.
|
||||
result = |{ result } BETWEEN { quote( <lv_low> ) } AND { quote( <lv_high> ) }|.
|
||||
|
||||
WHEN options-not_between.
|
||||
result = |{ result } NOT BETWEEN { quote( <lv_low> ) } AND { quote( <lv_high> ) }|.
|
||||
|
||||
WHEN options-contains_pattern.
|
||||
TRANSLATE <lv_low> USING '*%'.
|
||||
result = |{ result } LIKE { quote( <lv_low> ) }|.
|
||||
|
||||
WHEN options-not_contains_pattern.
|
||||
TRANSLATE <lv_low> USING '*%'.
|
||||
result = |{ result } NOT LIKE { quote( <lv_low> ) }|.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
result = |{ result } )|.
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
METHOD quote.
|
||||
|
||||
|
||||
out = |'{ replace( val = val
|
||||
sub = `'`
|
||||
with = `''`
|
||||
occ = 0 ) }'|.
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/00/03/z2ui5_cl_util_range.clas.xml
Normal file
16
src/00/03/z2ui5_cl_util_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_UTIL_RANGE</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>util - ranges</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -5,7 +5,7 @@
|
|||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CX_UTIL_ERROR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap toolkit exception</DESCRIPT>
|
||||
<DESCRIPT>util - exception</DESCRIPT>
|
||||
<CATEGORY>40</CATEGORY>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
|
|
|
@ -172,7 +172,9 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
|||
METHOD z2ui5_if_client~nav_app_call.
|
||||
|
||||
IF app IS NOT BOUND.
|
||||
z2ui5_cl_util=>x_raise( `NAV_APP_LEAVE_TO_INITIAL_APP_ERROR` ).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `NAV_APP_LEAVE_TO_INITIAL_APP_ERROR`.
|
||||
ENDIF.
|
||||
|
||||
mo_action->ms_next-o_app_call = app.
|
||||
|
@ -190,7 +192,9 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
IF app IS NOT BOUND.
|
||||
z2ui5_cl_util=>x_raise( `NAV_APP_LEAVE_TO_INITIAL_APP_ERROR` ).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `NAV_APP_LEAVE_TO_INITIAL_APP_ERROR`.
|
||||
ENDIF.
|
||||
|
||||
mo_action->ms_next-o_app_leave = app.
|
||||
|
|
|
@ -74,7 +74,9 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
|
|||
lo_val_front->to_abap( IMPORTING ev_container = <val> ).
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
z2ui5_cl_util=>x_raise( |JSON_PARSING_ERROR: { x->get_text( ) } | ).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = |JSON_PARSING_ERROR: { x->get_text( ) } |.
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -219,11 +219,11 @@ CLASS z2ui5_cl_xml_view DEFINITION
|
|||
IMPORTING
|
||||
ns TYPE clike OPTIONAL
|
||||
link TYPE clike OPTIONAL
|
||||
ID type CLIKE optional
|
||||
CLASS type CLIKE optional
|
||||
CURRENTLOCATIONTEXT type CLIKE optional
|
||||
SEPARATORSTYLE type CLIKE optional
|
||||
VISIBLE type CLIKE optional
|
||||
id TYPE clike OPTIONAL
|
||||
class TYPE clike OPTIONAL
|
||||
currentlocationtext TYPE clike OPTIONAL
|
||||
separatorstyle TYPE clike OPTIONAL
|
||||
visible TYPE clike OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_xml_view.
|
||||
|
||||
|
@ -10617,7 +10617,9 @@ CLASS z2ui5_cl_xml_view IMPLEMENTATION.
|
|||
INSERT VALUE #( n = |xmlns:{ ls_prop-n }|
|
||||
v = ls_prop-v ) INTO TABLE mt_prop.
|
||||
CATCH cx_root.
|
||||
z2ui5_cl_util=>x_raise( |XML_VIEW_ERROR_NO_NAMESPACE_FOUND_FOR: { lr_ns->* }| ).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = |XML_VIEW_ERROR_NO_NAMESPACE_FOUND_FOR: { lr_ns->* }|.
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user