mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +08:00
1441 lines
37 KiB
ABAP
1441 lines
37 KiB
ABAP
CLASS z2ui5_cl_util DEFINITION
|
|
PUBLIC
|
|
INHERITING FROM z2ui5_cl_util_abap
|
|
CREATE PUBLIC.
|
|
|
|
PUBLIC SECTION.
|
|
|
|
" abap-toolkit - Utility Functions for ABAP Cloud & Standard ABAP
|
|
" version: '0.0.1'.
|
|
" origin: https://github.com/oblomov-dev/abap-toolkit
|
|
" author: https://github.com/oblomov-dev
|
|
" license: MIT.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_s_name_value,
|
|
n TYPE string,
|
|
v TYPE string,
|
|
END OF ty_s_name_value.
|
|
TYPES ty_t_name_value TYPE STANDARD TABLE OF ty_s_name_value WITH EMPTY KEY.
|
|
|
|
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:
|
|
BEGIN OF ty_s_range,
|
|
sign TYPE c LENGTH 1,
|
|
option TYPE c LENGTH 2,
|
|
low TYPE string,
|
|
high TYPE string,
|
|
END OF ty_s_range.
|
|
TYPES ty_t_range TYPE STANDARD TABLE OF ty_s_range WITH EMPTY KEY.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_s_filter_multi,
|
|
name TYPE string,
|
|
t_range TYPE ty_t_range,
|
|
t_token TYPE ty_t_token,
|
|
t_token_added TYPE ty_t_token,
|
|
t_token_removed TYPE ty_t_token,
|
|
END OF ty_s_filter_multi.
|
|
TYPES ty_t_filter_multi TYPE STANDARD TABLE OF ty_s_filter_multi WITH EMPTY KEY.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_s_sql,
|
|
tabname TYPE string,
|
|
check_autoload TYPE abap_bool,
|
|
layout_name TYPE string,
|
|
layout_id TYPE string,
|
|
count TYPE i,
|
|
t_ref TYPE REF TO data,
|
|
where TYPE string,
|
|
t_filter TYPE ty_t_filter_multi,
|
|
END OF ty_s_sql.
|
|
|
|
TYPES:
|
|
BEGIN OF ty_s_msg,
|
|
text TYPE string,
|
|
id TYPE string,
|
|
no TYPE string,
|
|
type TYPE string,
|
|
v1 TYPE string,
|
|
v2 TYPE string,
|
|
v3 TYPE string,
|
|
v4 TYPE string,
|
|
timestampl TYPE timestampl,
|
|
END OF ty_s_msg,
|
|
ty_t_msg TYPE STANDARD TABLE OF ty_s_msg WITH EMPTY KEY.
|
|
|
|
CLASS-METHODS ui5_get_msg_type
|
|
IMPORTING
|
|
val TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS msg_get
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_msg.
|
|
|
|
CLASS-METHODS rtti_get_t_attri_by_include
|
|
IMPORTING
|
|
!type TYPE REF TO cl_abap_datadescr
|
|
RETURNING
|
|
VALUE(result) TYPE abap_component_tab.
|
|
|
|
CLASS-METHODS rtti_get_t_ddic_fixed_values
|
|
IMPORTING
|
|
rollname TYPE clike
|
|
langu TYPE clike DEFAULT sy-langu
|
|
RETURNING
|
|
VALUE(result) TYPE z2ui5_cl_util_abap=>ty_t_fix_val ##NEEDED.
|
|
|
|
CLASS-METHODS source_get_method2
|
|
IMPORTING
|
|
iv_classname TYPE clike
|
|
iv_methodname TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS check_bound_a_not_inital
|
|
IMPORTING
|
|
val TYPE REF TO data
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS check_unassign_inital
|
|
IMPORTING
|
|
val TYPE REF TO data
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS unassign_object
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO object.
|
|
|
|
CLASS-METHODS unassign_data
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO data.
|
|
|
|
CLASS-METHODS conv_get_as_data_ref
|
|
IMPORTING
|
|
val TYPE data
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO data.
|
|
|
|
CLASS-METHODS source_method_to_file
|
|
IMPORTING
|
|
it_source TYPE string_table
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS itab_get_itab_by_csv
|
|
IMPORTING
|
|
val TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO data.
|
|
|
|
CLASS-METHODS itab_get_csv_by_itab
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS filter_itab
|
|
IMPORTING
|
|
!filter TYPE ty_t_filter_multi
|
|
CHANGING
|
|
val TYPE STANDARD TABLE.
|
|
|
|
CLASS-METHODS filter_get_multi_by_data
|
|
IMPORTING
|
|
val TYPE data
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_filter_multi.
|
|
|
|
CLASS-METHODS filter_get_data_by_multi
|
|
IMPORTING
|
|
val TYPE ty_t_filter_multi
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_filter_multi.
|
|
|
|
CLASS-METHODS filter_get_sql_where
|
|
IMPORTING
|
|
val TYPE z2ui5_cl_util=>ty_t_filter_multi
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS filter_get_sql_by_sql_string
|
|
IMPORTING
|
|
val TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE ty_s_sql.
|
|
|
|
CLASS-METHODS url_param_get
|
|
IMPORTING
|
|
val TYPE string
|
|
url TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS url_param_create_url
|
|
IMPORTING
|
|
t_params TYPE ty_t_name_value
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS url_param_set
|
|
IMPORTING
|
|
url TYPE string
|
|
!name TYPE string
|
|
!value TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS rtti_get_classname_by_ref
|
|
IMPORTING
|
|
!in TYPE REF TO object
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS rtti_get_intfname_by_ref
|
|
IMPORTING
|
|
!in TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS x_get_last_t100
|
|
IMPORTING
|
|
val TYPE REF TO cx_root
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS x_check_raise
|
|
IMPORTING
|
|
v TYPE clike DEFAULT `CX_SY_SUBRC`
|
|
!when TYPE xfeld.
|
|
|
|
CLASS-METHODS x_raise
|
|
IMPORTING
|
|
v TYPE clike DEFAULT `CX_SY_SUBRC`
|
|
PREFERRED PARAMETER v.
|
|
|
|
CLASS-METHODS context_get_user_tech
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS json_stringify
|
|
IMPORTING
|
|
!any TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS xml_parse
|
|
IMPORTING
|
|
!xml TYPE clike
|
|
EXPORTING
|
|
!any TYPE any.
|
|
|
|
CLASS-METHODS xml_stringify
|
|
IMPORTING
|
|
!any TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string
|
|
RAISING
|
|
cx_xslt_serialization_error.
|
|
|
|
CLASS-METHODS boolean_check_by_data
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS boolean_abap_2_json
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS json_parse
|
|
IMPORTING
|
|
val TYPE any
|
|
CHANGING
|
|
!data TYPE any.
|
|
|
|
CLASS-METHODS c_trim_upper
|
|
IMPORTING
|
|
val TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS xml_srtti_stringify
|
|
IMPORTING
|
|
!data TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS xml_srtti_parse
|
|
IMPORTING
|
|
rtti_data TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO data.
|
|
|
|
CLASS-METHODS time_get_timestampl
|
|
RETURNING
|
|
VALUE(result) TYPE timestampl.
|
|
|
|
CLASS-METHODS time_substract_seconds
|
|
IMPORTING
|
|
!time TYPE timestampl
|
|
!seconds TYPE i
|
|
RETURNING
|
|
VALUE(result) TYPE timestampl.
|
|
|
|
CLASS-METHODS c_trim
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS c_trim_lower
|
|
IMPORTING
|
|
val TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS url_param_get_tab
|
|
IMPORTING
|
|
i_val TYPE clike
|
|
RETURNING
|
|
VALUE(rt_params) TYPE ty_t_name_value.
|
|
|
|
CLASS-METHODS rtti_get_t_attri_by_oref
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE abap_attrdescr_tab.
|
|
|
|
CLASS-METHODS rtti_get_t_attri_by_any
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
|
|
|
CLASS-METHODS rtti_get_t_attri_by_table_name
|
|
IMPORTING
|
|
table_name TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
|
|
|
CLASS-METHODS rtti_get_type_name
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS rtti_check_class_exists
|
|
IMPORTING
|
|
val TYPE clike
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS rtti_check_type_kind_dref
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS rtti_get_type_kind
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS rtti_check_ref_data
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS boolean_check_by_name
|
|
IMPORTING
|
|
val TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
CLASS-METHODS filter_update_tokens
|
|
IMPORTING
|
|
val TYPE ty_t_filter_multi
|
|
!name TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_filter_multi.
|
|
|
|
CLASS-METHODS filter_get_range_t_by_token_t
|
|
IMPORTING
|
|
val TYPE ty_t_token
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_range.
|
|
|
|
CLASS-METHODS filter_get_range_by_token
|
|
IMPORTING
|
|
VALUE(value) TYPE string
|
|
RETURNING
|
|
VALUE(result) TYPE ty_s_range.
|
|
|
|
CLASS-METHODS filter_get_token_t_by_range_t
|
|
IMPORTING
|
|
val TYPE ANY TABLE
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_token ##NEEDED.
|
|
|
|
CLASS-METHODS filter_get_token_range_mapping
|
|
RETURNING
|
|
VALUE(result) TYPE ty_t_name_value.
|
|
|
|
CLASS-METHODS itab_corresponding
|
|
IMPORTING
|
|
val TYPE STANDARD TABLE
|
|
CHANGING
|
|
!tab TYPE STANDARD TABLE.
|
|
|
|
CLASS-METHODS itab_filter_by_val
|
|
IMPORTING
|
|
val TYPE clike
|
|
CHANGING
|
|
!tab TYPE STANDARD TABLE.
|
|
|
|
CLASS-METHODS itab_filter_by_t_range
|
|
IMPORTING
|
|
val TYPE ty_t_filter_multi
|
|
CHANGING
|
|
!tab TYPE STANDARD TABLE.
|
|
|
|
CLASS-METHODS time_get_time_by_stampl
|
|
IMPORTING
|
|
val TYPE timestampl
|
|
RETURNING
|
|
VALUE(result) TYPE t.
|
|
|
|
CLASS-METHODS time_get_date_by_stampl
|
|
IMPORTING
|
|
val TYPE timestampl
|
|
RETURNING
|
|
VALUE(result) TYPE d.
|
|
|
|
CLASS-METHODS conv_copy_ref_data
|
|
IMPORTING
|
|
!from TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE REF TO data.
|
|
|
|
CLASS-METHODS source_get_file_types
|
|
RETURNING
|
|
VALUE(result) TYPE string_table.
|
|
|
|
CLASS-METHODS rtti_tab_get_relative_name
|
|
IMPORTING
|
|
!table TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE string.
|
|
|
|
CLASS-METHODS rtti_check_clike
|
|
IMPORTING
|
|
val TYPE any
|
|
RETURNING
|
|
VALUE(result) TYPE abap_bool.
|
|
|
|
PROTECTED SECTION.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
ENDCLASS.
|
|
|
|
|
|
CLASS z2ui5_cl_util IMPLEMENTATION.
|
|
METHOD boolean_abap_2_json.
|
|
|
|
IF boolean_check_by_data( val ).
|
|
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
|
ELSE.
|
|
result = val.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD boolean_check_by_data.
|
|
|
|
TRY.
|
|
DATA(lv_type_name) = rtti_get_type_name( val ).
|
|
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 'XFLAG'
|
|
OR 'XFELD'
|
|
OR 'ABAP_BOOLEAN'
|
|
OR 'WDY_BOOLEAN'
|
|
OR 'BOOLE_D'
|
|
OR 'OS_BOOLEAN'.
|
|
result = abap_true.
|
|
ENDCASE.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD check_bound_a_not_inital.
|
|
|
|
IF val IS NOT BOUND.
|
|
result = abap_false.
|
|
RETURN.
|
|
ENDIF.
|
|
result = xsdbool( check_unassign_inital( val ) = abap_false ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD check_unassign_inital.
|
|
|
|
IF val IS INITIAL.
|
|
result = abap_true.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
FIELD-SYMBOLS <any> TYPE data.
|
|
ASSIGN val->* TO <any>.
|
|
|
|
result = xsdbool( <any> IS INITIAL ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD conv_copy_ref_data.
|
|
|
|
FIELD-SYMBOLS <from> TYPE data.
|
|
FIELD-SYMBOLS <result> TYPE data.
|
|
|
|
IF rtti_check_ref_data( from ).
|
|
ASSIGN from->* TO <from>.
|
|
ELSE.
|
|
ASSIGN from TO <from>.
|
|
ENDIF.
|
|
CREATE DATA result LIKE <from>.
|
|
ASSIGN result->* TO <result>.
|
|
|
|
<result> = <from>.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD conv_get_as_data_ref.
|
|
|
|
GET REFERENCE OF val INTO result.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD c_trim.
|
|
|
|
result = shift_left( shift_right( CONV string( val ) ) ).
|
|
result = shift_right( val = result
|
|
sub = cl_abap_char_utilities=>horizontal_tab ).
|
|
result = shift_left( val = result
|
|
sub = cl_abap_char_utilities=>horizontal_tab ).
|
|
result = shift_left( shift_right( result ) ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD c_trim_lower.
|
|
|
|
result = to_lower( c_trim( CONV string( val ) ) ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD c_trim_upper.
|
|
|
|
result = to_upper( c_trim( CONV string( val ) ) ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_itab.
|
|
|
|
DATA ref TYPE REF TO data.
|
|
|
|
LOOP AT val REFERENCE INTO ref.
|
|
|
|
LOOP AT filter INTO DATA(ls_filter).
|
|
|
|
ASSIGN ref->(ls_filter-name) TO FIELD-SYMBOL(<field>).
|
|
IF sy-subrc <> 0.
|
|
CONTINUE.
|
|
ENDIF.
|
|
IF <field> NOT IN ls_filter-t_range.
|
|
DELETE val.
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
ENDLOOP.
|
|
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_multi_by_data.
|
|
|
|
LOOP AT rtti_get_t_attri_by_any( val ) REFERENCE INTO DATA(lr_comp).
|
|
INSERT VALUE #( name = lr_comp->name ) INTO TABLE result.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_range_by_token.
|
|
|
|
DATA(lv_length) = strlen( value ) - 1.
|
|
CASE value(1).
|
|
|
|
WHEN `=`.
|
|
result = VALUE #( sign = `I`
|
|
option = `EQ`
|
|
low = value+1 ).
|
|
WHEN `<`.
|
|
IF value+1(1) = `=`.
|
|
result = VALUE #( sign = `I`
|
|
option = `LE`
|
|
low = value+2 ).
|
|
ELSE.
|
|
result = VALUE #( sign = `I`
|
|
option = `LT`
|
|
low = value+1 ).
|
|
ENDIF.
|
|
WHEN `>`.
|
|
IF value+1(1) = `=`.
|
|
result = VALUE #( sign = `I`
|
|
option = `GE`
|
|
low = value+2 ).
|
|
ELSE.
|
|
result = VALUE #( sign = `I`
|
|
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 filter_update_tokens.
|
|
|
|
result = val.
|
|
DATA(lr_filter) = REF #( result[ name = name ] ).
|
|
LOOP AT lr_filter->t_token_removed INTO DATA(ls_token).
|
|
DELETE lr_filter->t_token WHERE key = ls_token-key.
|
|
ENDLOOP.
|
|
|
|
LOOP AT lr_filter->t_token_added INTO ls_token.
|
|
INSERT VALUE #( key = ls_token-key
|
|
text = ls_token-text
|
|
visible = abap_true
|
|
editable = abap_true ) INTO TABLE lr_filter->t_token.
|
|
ENDLOOP.
|
|
|
|
CLEAR lr_filter->t_token_removed.
|
|
CLEAR lr_filter->t_token_added.
|
|
|
|
" TODO: variable is assigned but never used (ABAP cleaner)
|
|
DATA(lt_token) = result[ name = name ]-t_token.
|
|
DATA(lt_range) = z2ui5_cl_util=>filter_get_range_t_by_token_t( result[ name = name ]-t_token ).
|
|
lr_filter->t_range = lt_range.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_range_t_by_token_t.
|
|
|
|
LOOP AT val INTO DATA(ls_token).
|
|
INSERT filter_get_range_by_token( ls_token-text ) INTO TABLE result.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_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 filter_get_token_t_by_range_t.
|
|
|
|
DATA(lt_mapping) = filter_get_token_range_mapping( ).
|
|
|
|
DATA(lt_tab) = VALUE ty_t_range( ).
|
|
|
|
itab_corresponding( EXPORTING val = val
|
|
CHANGING tab = lt_tab
|
|
).
|
|
|
|
LOOP AT lt_tab 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 itab_filter_by_val.
|
|
|
|
FIELD-SYMBOLS <row> TYPE any.
|
|
|
|
LOOP AT tab ASSIGNING <row>.
|
|
DATA(lv_row) = ``.
|
|
DATA(lv_index) = 1.
|
|
DO.
|
|
ASSIGN COMPONENT lv_index OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
|
|
IF sy-subrc <> 0.
|
|
EXIT.
|
|
ENDIF.
|
|
lv_row = lv_row && <field>.
|
|
lv_index = lv_index + 1.
|
|
ENDDO.
|
|
|
|
IF lv_row NS val.
|
|
DELETE tab.
|
|
ENDIF.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD itab_get_csv_by_itab.
|
|
|
|
FIELD-SYMBOLS <tab> TYPE table.
|
|
|
|
ASSIGN val TO <tab>.
|
|
DATA(tab) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( <tab> ) ).
|
|
|
|
DATA(struc) = CAST cl_abap_structdescr( tab->get_table_line_type( ) ).
|
|
|
|
LOOP AT struc->get_components( ) REFERENCE INTO DATA(lr_comp).
|
|
result = |{ result }{ lr_comp->name };|.
|
|
ENDLOOP.
|
|
|
|
result = result && cl_abap_char_utilities=>cr_lf.
|
|
|
|
DATA lr_row TYPE REF TO data.
|
|
LOOP AT <tab> REFERENCE INTO lr_row.
|
|
|
|
DATA(lv_index) = 1.
|
|
DO.
|
|
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
|
ASSIGN COMPONENT lv_index OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
|
|
IF sy-subrc <> 0.
|
|
EXIT.
|
|
ENDIF.
|
|
lv_index = lv_index + 1.
|
|
result = |{ result }{ <field> };|.
|
|
ENDDO.
|
|
result = result && cl_abap_char_utilities=>cr_lf.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD itab_get_itab_by_csv.
|
|
|
|
DATA lt_comp TYPE cl_abap_structdescr=>component_table.
|
|
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
|
DATA lr_row TYPE REF TO data.
|
|
|
|
SPLIT val AT cl_abap_char_utilities=>newline INTO TABLE DATA(lt_rows).
|
|
SPLIT lt_rows[ 1 ] AT ';' INTO TABLE DATA(lt_cols).
|
|
|
|
LOOP AT lt_cols REFERENCE INTO DATA(lr_col).
|
|
|
|
DATA(lv_name) = c_trim_upper( lr_col->* ).
|
|
REPLACE ` ` IN lv_name WITH `_`.
|
|
|
|
INSERT VALUE #( name = lv_name
|
|
type = cl_abap_elemdescr=>get_c( 40 ) ) INTO TABLE lt_comp.
|
|
ENDLOOP.
|
|
|
|
DATA(struc) = cl_abap_structdescr=>get( lt_comp ).
|
|
DATA(data) = CAST cl_abap_datadescr( struc ).
|
|
DATA(o_table_desc) = cl_abap_tabledescr=>create( p_line_type = data
|
|
p_table_kind = cl_abap_tabledescr=>tablekind_std
|
|
p_unique = abap_false ).
|
|
|
|
CREATE DATA result TYPE HANDLE o_table_desc.
|
|
ASSIGN result->* TO <tab>.
|
|
DELETE lt_rows WHERE table_line IS INITIAL.
|
|
|
|
LOOP AT lt_rows REFERENCE INTO DATA(lr_rows) FROM 2.
|
|
|
|
SPLIT lr_rows->* AT ';' INTO TABLE lt_cols.
|
|
CREATE DATA lr_row TYPE HANDLE struc.
|
|
|
|
LOOP AT lt_cols REFERENCE INTO lr_col.
|
|
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
|
ASSIGN COMPONENT sy-tabix OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
|
|
ASSERT sy-subrc = 0.
|
|
<field> = lr_col->*.
|
|
ENDLOOP.
|
|
|
|
INSERT <row> INTO TABLE <tab>.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD json_parse.
|
|
TRY.
|
|
|
|
z2ui5_cl_ajson=>parse( val )->to_abap( EXPORTING iv_corresponding = abap_true
|
|
IMPORTING ev_container = data ).
|
|
|
|
CATCH cx_root INTO DATA(x).
|
|
ASSERT x IS NOT BOUND.
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD json_stringify.
|
|
TRY.
|
|
|
|
DATA(li_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
|
result = li_ajson->set( iv_path = `/`
|
|
iv_val = any )->stringify( ).
|
|
|
|
CATCH cx_root INTO DATA(x).
|
|
ASSERT x IS NOT BOUND.
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_check_class_exists.
|
|
|
|
TRY.
|
|
cl_abap_classdescr=>describe_by_name( EXPORTING p_name = val
|
|
EXCEPTIONS type_not_found = 1 ).
|
|
IF sy-subrc = 0.
|
|
result = abap_true.
|
|
ENDIF.
|
|
|
|
CATCH cx_root.
|
|
" cx_sy_rtti_syntax_error
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_check_ref_data.
|
|
|
|
TRY.
|
|
DATA(lo_typdescr) = cl_abap_typedescr=>describe_by_data( val ).
|
|
DATA(lo_ref) = CAST cl_abap_refdescr( lo_typdescr ) ##NEEDED.
|
|
result = abap_true.
|
|
CATCH cx_root.
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_check_type_kind_dref.
|
|
|
|
DATA(lv_type_kind) = cl_abap_datadescr=>get_data_type_kind( val ).
|
|
result = xsdbool( lv_type_kind = cl_abap_typedescr=>typekind_dref ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_classname_by_ref.
|
|
|
|
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
|
result = substring_after( val = lv_classname
|
|
sub = `\CLASS=` ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_intfname_by_ref.
|
|
|
|
DATA(rtti) = cl_abap_typedescr=>describe_by_data( in ).
|
|
DATA(ref) = CAST cl_abap_refdescr( rtti ).
|
|
DATA(name) = ref->get_referenced_type( )->absolute_name.
|
|
result = substring_after( val = name
|
|
sub = `\INTERFACE=` ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_type_kind.
|
|
|
|
result = cl_abap_datadescr=>get_data_type_kind( val ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_type_name.
|
|
TRY.
|
|
|
|
DATA(lo_descr) = cl_abap_elemdescr=>describe_by_data( val ).
|
|
DATA(lo_ele) = CAST cl_abap_elemdescr( lo_descr ).
|
|
result = lo_ele->get_relative_name( ).
|
|
|
|
CATCH cx_root.
|
|
ENDTRY.
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_t_attri_by_include.
|
|
|
|
DATA(sdescr) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( type->absolute_name ) ).
|
|
DATA(comps) = sdescr->get_components( ).
|
|
|
|
LOOP AT comps REFERENCE INTO DATA(lr_comp).
|
|
|
|
IF lr_comp->as_include = abap_true.
|
|
|
|
DATA(incl_comps) = rtti_get_t_attri_by_include( lr_comp->type ).
|
|
|
|
LOOP AT incl_comps REFERENCE INTO DATA(lr_incl_comp).
|
|
lr_incl_comp->name = lr_incl_comp->name.
|
|
APPEND lr_incl_comp->* TO result.
|
|
ENDLOOP.
|
|
|
|
ELSE.
|
|
|
|
lr_comp->name = lr_comp->name.
|
|
APPEND lr_comp->* TO result.
|
|
|
|
ENDIF.
|
|
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_t_attri_by_oref.
|
|
|
|
DATA(lo_obj_ref) = cl_abap_objectdescr=>describe_by_object_ref( val ).
|
|
result = CAST cl_abap_classdescr( lo_obj_ref )->attributes.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_t_attri_by_any.
|
|
|
|
TRY.
|
|
DATA(lo_type) = cl_abap_typedescr=>describe_by_data( val ).
|
|
DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ).
|
|
CATCH cx_root.
|
|
TRY.
|
|
DATA(lo_tab) = CAST cl_abap_tabledescr( lo_type ).
|
|
lo_struct = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
|
CATCH cx_root.
|
|
TRY.
|
|
DATA(lo_ref) = cl_abap_typedescr=>describe_by_data_ref( val ).
|
|
lo_struct = CAST cl_abap_structdescr( lo_ref ).
|
|
CATCH cx_root.
|
|
lo_tab = CAST cl_abap_tabledescr( lo_ref ).
|
|
lo_struct = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
|
ENDTRY.
|
|
ENDTRY.
|
|
ENDTRY.
|
|
|
|
result = lo_struct->get_components( ).
|
|
|
|
LOOP AT result REFERENCE INTO DATA(lr_comp)
|
|
WHERE as_include = abap_true.
|
|
|
|
DATA(lt_attri) = rtti_get_t_attri_by_include( lr_comp->type ).
|
|
|
|
DELETE result.
|
|
INSERT LINES OF lt_attri INTO TABLE result.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_get_t_ddic_fixed_values.
|
|
|
|
IF rollname IS INITIAL.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
TRY.
|
|
|
|
cl_abap_typedescr=>describe_by_name( EXPORTING p_name = CONV string( rollname )
|
|
RECEIVING p_descr_ref = DATA(typedescr)
|
|
EXCEPTIONS type_not_found = 1
|
|
OTHERS = 2 ).
|
|
IF sy-subrc <> 0.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
DATA(elemdescr) = CAST cl_abap_elemdescr( typedescr ).
|
|
|
|
result = rtti_get_t_fixvalues( elemdescr = elemdescr
|
|
langu = langu ).
|
|
|
|
CATCH cx_root.
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_tab_get_relative_name.
|
|
|
|
FIELD-SYMBOLS <table> TYPE any.
|
|
|
|
TRY.
|
|
DATA(typedesc) = cl_abap_typedescr=>describe_by_data( table ).
|
|
|
|
CASE typedesc->kind.
|
|
|
|
WHEN cl_abap_typedescr=>kind_table.
|
|
DATA(tabledesc) = CAST cl_abap_tabledescr( typedesc ).
|
|
DATA(structdesc) = CAST cl_abap_structdescr( tabledesc->get_table_line_type( ) ).
|
|
result = structdesc->get_relative_name( ).
|
|
RETURN.
|
|
|
|
WHEN typedesc->kind_ref.
|
|
|
|
ASSIGN table->* TO <table>.
|
|
result = rtti_tab_get_relative_name( <table> ).
|
|
|
|
ENDCASE.
|
|
CATCH cx_root.
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD source_get_file_types.
|
|
|
|
DATA(lv_types) = |abap, abc, actionscript, ada, apache_conf, applescript, asciidoc, assembly_x86, autohotkey, batchfile, bro, c9search, c_cpp, cirru, clojure, cobol, coffee, coldfusion, csharp, css, curly, d, dart, diff, django, dockerfile, | &&
|
|
|dot, drools, eiffel, yaml, ejs, elixir, elm, erlang, forth, fortran, ftl, gcode, gherkin, gitignore, glsl, gobstones, golang, groovy, haml, handlebars, haskell, haskell_cabal, haxe, hjson, html, html_elixir, html_ruby, ini, io, jack, jade, java, ja| &&
|
|
|vascri| &&
|
|
|pt, json, jsoniq, jsp, jsx, julia, kotlin, latex, lean, less, liquid, lisp, live_script, livescript, logiql, lsl, lua, luapage, lucene, makefile, markdown, mask, matlab, mavens_mate_log, maze, mel, mips_assembler, mipsassembler, mushcode, mysql, ni| &&
|
|
|x, nsis, objectivec, ocaml, pascal, perl, pgsql, php, plain_text, powershell, praat, prolog, properties, protobuf, python, r, razor, rdoc, rhtml, rst, ruby, rust, sass, scad, scala, scheme, scss, sh, sjs, smarty, snippets, soy_template, space, sql,| &&
|
|
| sqlserver, stylus, svg, swift, swig, tcl, tex, text, textile, toml, tsx, twig, typescript, vala, vbscript, velocity, verilog, vhdl, wollok, xml, xquery, terraform, slim, redshift, red, puppet, php_laravel_blade, mixal, jssm, fsharp, edifact,| &&
|
|
| csp, cssound_score, cssound_orchestra, cssound_document|.
|
|
SPLIT lv_types AT ',' INTO TABLE result.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD source_get_method2.
|
|
|
|
DATA(lt_source) = source_get_method( iv_classname = iv_classname
|
|
iv_methodname = iv_methodname ).
|
|
|
|
result = source_method_to_file( lt_source ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD source_method_to_file.
|
|
|
|
LOOP AT it_source INTO DATA(lv_source).
|
|
TRY.
|
|
result = result && lv_source+1 && cl_abap_char_utilities=>newline.
|
|
CATCH cx_root.
|
|
ENDTRY.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_sql_by_sql_string.
|
|
|
|
DATA(lv_sql) = CONV string( val ).
|
|
REPLACE ALL OCCURRENCES OF ` ` IN lv_sql WITH ``.
|
|
lv_sql = to_upper( lv_sql ).
|
|
SPLIT lv_sql AT 'SELECTFROM' INTO DATA(lv_dummy) DATA(lv_tab).
|
|
SPLIT lv_tab AT `FIELDS` INTO lv_tab lv_dummy.
|
|
|
|
result-tabname = lv_tab.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD time_get_date_by_stampl.
|
|
" TODO: variable is assigned but never used (ABAP cleaner)
|
|
CONVERT TIME STAMP val TIME ZONE sy-zonlo INTO DATE result TIME DATA(lv_dummy).
|
|
ENDMETHOD.
|
|
|
|
METHOD time_get_timestampl.
|
|
GET TIME STAMP FIELD result.
|
|
ENDMETHOD.
|
|
|
|
METHOD time_get_time_by_stampl.
|
|
" TODO: variable is assigned but never used (ABAP cleaner)
|
|
CONVERT TIME STAMP val TIME ZONE sy-zonlo INTO DATE DATA(lv_dummy) TIME result.
|
|
ENDMETHOD.
|
|
|
|
METHOD time_substract_seconds.
|
|
|
|
result = cl_abap_tstmp=>subtractsecs( tstmp = time
|
|
secs = seconds ).
|
|
ENDMETHOD.
|
|
|
|
METHOD unassign_data.
|
|
|
|
FIELD-SYMBOLS <unassign> TYPE any.
|
|
|
|
ASSIGN val->* TO <unassign>.
|
|
result = <unassign>.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD unassign_object.
|
|
|
|
FIELD-SYMBOLS <unassign> TYPE any.
|
|
|
|
ASSIGN val->* TO <unassign>.
|
|
result = <unassign>.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD url_param_create_url.
|
|
|
|
LOOP AT t_params INTO DATA(ls_param).
|
|
result = |{ result }{ ls_param-n }={ ls_param-v }&|.
|
|
ENDLOOP.
|
|
result = shift_right( val = result
|
|
sub = `&` ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD url_param_get.
|
|
|
|
DATA(lt_params) = url_param_get_tab( url ).
|
|
DATA(lv_val) = c_trim_lower( val ).
|
|
result = VALUE #( lt_params[ n = lv_val ]-v OPTIONAL ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD url_param_get_tab.
|
|
|
|
DATA(lv_search) = replace( val = i_val
|
|
sub = `%3D`
|
|
with = '='
|
|
occ = 0 ).
|
|
|
|
lv_search = replace( val = lv_search
|
|
sub = `%26`
|
|
with = '&'
|
|
occ = 0 ).
|
|
|
|
lv_search = shift_left( val = lv_search
|
|
sub = `?` ).
|
|
* lv_search = c_trim_lower( lv_search ).
|
|
|
|
DATA(lv_search2) = substring_after( val = lv_search
|
|
sub = `&sap-startup-params=` ).
|
|
lv_search = COND #( WHEN lv_search2 IS NOT INITIAL THEN lv_search2 ELSE lv_search ).
|
|
|
|
lv_search2 = substring_after( val = c_trim_lower( lv_search )
|
|
sub = `?` ).
|
|
IF lv_search2 IS NOT INITIAL.
|
|
lv_search = lv_search2.
|
|
ENDIF.
|
|
|
|
SPLIT lv_search AT `&` INTO TABLE DATA(lt_param).
|
|
|
|
LOOP AT lt_param REFERENCE INTO DATA(lr_param).
|
|
SPLIT lr_param->* AT `=` INTO DATA(lv_name) DATA(lv_value).
|
|
* INSERT VALUE #( n = c_trim_lower( lv_name )
|
|
* v = c_trim_lower( lv_value ) ) INTO TABLE rt_params.
|
|
INSERT VALUE #( n = lv_name
|
|
v = lv_value ) INTO TABLE rt_params.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD url_param_set.
|
|
|
|
DATA(lt_params) = url_param_get_tab( url ).
|
|
DATA(lv_n) = c_trim_lower( name ).
|
|
|
|
LOOP AT lt_params REFERENCE INTO DATA(lr_params)
|
|
WHERE n = lv_n.
|
|
lr_params->v = c_trim_lower( value ).
|
|
ENDLOOP.
|
|
IF sy-subrc <> 0.
|
|
INSERT VALUE #( n = lv_n
|
|
v = c_trim_lower( value ) ) INTO TABLE lt_params.
|
|
ENDIF.
|
|
|
|
result = url_param_create_url( lt_params ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD context_get_user_tech.
|
|
result = sy-uname.
|
|
ENDMETHOD.
|
|
|
|
METHOD xml_parse.
|
|
|
|
CALL TRANSFORMATION id
|
|
SOURCE XML xml
|
|
RESULT data = any.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD xml_srtti_parse.
|
|
|
|
DATA srtti TYPE REF TO object.
|
|
CALL TRANSFORMATION id SOURCE XML rtti_data RESULT srtti = srtti.
|
|
|
|
DATA rtti_type TYPE REF TO cl_abap_typedescr.
|
|
CALL METHOD srtti->('GET_RTTI')
|
|
RECEIVING
|
|
rtti = rtti_type.
|
|
|
|
DATA lo_datadescr TYPE REF TO cl_abap_datadescr.
|
|
lo_datadescr ?= rtti_type.
|
|
|
|
CREATE DATA result TYPE HANDLE lo_datadescr.
|
|
ASSIGN result->* TO FIELD-SYMBOL(<variable>).
|
|
CALL TRANSFORMATION id SOURCE XML rtti_data RESULT dobj = <variable>.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD xml_srtti_stringify.
|
|
|
|
IF rtti_check_class_exists( 'ZCL_SRTTI_TYPEDESCR' ) = abap_true.
|
|
|
|
DATA srtti TYPE REF TO object.
|
|
DATA(lv_classname) = `ZCL_SRTTI_TYPEDESCR`.
|
|
CALL METHOD (lv_classname)=>('CREATE_BY_DATA_OBJECT')
|
|
EXPORTING
|
|
data_object = data
|
|
RECEIVING
|
|
srtti = srtti.
|
|
|
|
CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result.
|
|
|
|
ELSE.
|
|
|
|
TRY.
|
|
CALL METHOD z2ui5_cl_srt_typedescr=>('CREATE_BY_DATA_OBJECT')
|
|
EXPORTING
|
|
data_object = data
|
|
RECEIVING
|
|
srtti = srtti.
|
|
|
|
CALL TRANSFORMATION id SOURCE srtti = srtti dobj = data RESULT XML result.
|
|
|
|
CATCH cx_root.
|
|
|
|
DATA(lv_text) = `UNSUPPORTED_FEATURE - Please install the open-source project S-RTTI by sandraros and try again: https://github.com/sandraros/S-RTTI`.
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = lv_text.
|
|
|
|
ENDTRY.
|
|
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD xml_stringify.
|
|
|
|
CALL TRANSFORMATION id
|
|
SOURCE data = any
|
|
RESULT XML result
|
|
OPTIONS data_refs = `heap-or-create`.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD x_check_raise.
|
|
|
|
IF when = abap_true.
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = v.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD x_get_last_t100.
|
|
|
|
DATA(x) = val.
|
|
DO.
|
|
|
|
IF x->previous IS BOUND.
|
|
x = x->previous.
|
|
CONTINUE.
|
|
ENDIF.
|
|
|
|
EXIT.
|
|
ENDDO.
|
|
|
|
result = x->get_text( ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD x_raise.
|
|
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = v.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD rtti_get_t_attri_by_table_name.
|
|
|
|
IF table_name IS INITIAL.
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = 'TABLE_NAME_INITIAL_ERROR'.
|
|
ENDIF.
|
|
|
|
TRY.
|
|
cl_abap_structdescr=>describe_by_name( EXPORTING p_name = table_name
|
|
RECEIVING p_descr_ref = DATA(lo_obj)
|
|
EXCEPTIONS type_not_found = 1
|
|
OTHERS = 2
|
|
).
|
|
|
|
IF sy-subrc <> 0.
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = |TABLE_NOT_FOUD_NAME___{ table_name }|.
|
|
ENDIF.
|
|
DATA(lo_struct) = CAST cl_abap_structdescr( lo_obj ).
|
|
|
|
CATCH cx_root.
|
|
|
|
TRY.
|
|
cl_abap_structdescr=>describe_by_name( EXPORTING p_name = table_name
|
|
RECEIVING p_descr_ref = lo_obj
|
|
EXCEPTIONS type_not_found = 1
|
|
OTHERS = 2
|
|
).
|
|
IF sy-subrc <> 0.
|
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
EXPORTING
|
|
val = |TABLE_NOT_FOUD_NAME___{ table_name }|.
|
|
ENDIF.
|
|
|
|
DATA(lo_tab) = CAST cl_abap_tabledescr( lo_obj ).
|
|
lo_struct = CAST cl_abap_structdescr( lo_tab->get_table_line_type( ) ).
|
|
CATCH cx_root.
|
|
RETURN.
|
|
ENDTRY.
|
|
|
|
ENDTRY.
|
|
|
|
result = lo_struct->get_components( ).
|
|
|
|
LOOP AT result REFERENCE INTO DATA(lr_comp)
|
|
WHERE as_include = abap_true.
|
|
|
|
DATA(lt_attri) = rtti_get_t_attri_by_include( lr_comp->type ).
|
|
|
|
DELETE result.
|
|
INSERT LINES OF lt_attri INTO TABLE result.
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD itab_corresponding.
|
|
|
|
FIELD-SYMBOLS <row_in> TYPE any.
|
|
FIELD-SYMBOLS <row_out> TYPE any.
|
|
|
|
LOOP AT val ASSIGNING <row_in>.
|
|
|
|
IF lines( tab ) = 0.
|
|
DATA(lv_lines) = 1.
|
|
ELSE.
|
|
lv_lines = lines( tab ).
|
|
ENDIF.
|
|
|
|
INSERT INITIAL LINE INTO tab ASSIGNING <row_out> INDEX lv_lines.
|
|
<row_out> = CORRESPONDING #( <row_in> ).
|
|
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD itab_filter_by_t_range.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_data_by_multi.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD filter_get_sql_where.
|
|
|
|
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
|
|
ir_range = REF #( ls_filter-t_range ) ).
|
|
|
|
ENDLOOP.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD msg_get.
|
|
|
|
result = lcl_msp_mapper=>msg_get( val ).
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD rtti_check_clike.
|
|
|
|
DATA(lv_type) = rtti_get_type_kind( val ).
|
|
CASE lv_type.
|
|
WHEN cl_abap_datadescr=>typekind_char OR
|
|
cl_abap_datadescr=>typekind_clike OR
|
|
cl_abap_datadescr=>typekind_csequence OR
|
|
cl_abap_datadescr=>typekind_string.
|
|
result = abap_true.
|
|
ENDCASE.
|
|
|
|
ENDMETHOD.
|
|
|
|
METHOD ui5_get_msg_type.
|
|
|
|
result = SWITCH #( val
|
|
WHEN 'E' THEN `Error`
|
|
WHEN 'S' THEN `Success`
|
|
WHEN `W` THEN `Warning`
|
|
ELSE `Information` ).
|
|
|
|
ENDMETHOD.
|
|
|
|
ENDCLASS.
|