* fixes

* update

* update

* update

* lint fix
This commit is contained in:
oblomov 2024-02-16 12:43:19 +01:00 committed by GitHub
parent 1a67811f99
commit 2619cd02f6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 206 additions and 49 deletions

View File

@ -38,6 +38,13 @@ CLASS z2ui5_cl_util_api DEFINITION
RETURNING
VALUE(result) TYPE abap_component_tab.
CLASS-METHODS rtti_get_t_ddic_fixed_values
IMPORTING
val TYPE data
langu TYPE clike DEFAULT sy-langu
RETURNING
VALUE(result) TYPE z2ui5_if_types=>ty_t_name_value.
CLASS-METHODS source_get_method
IMPORTING
iv_classname TYPE clike
@ -132,6 +139,12 @@ CLASS z2ui5_cl_util_api DEFINITION
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`
@ -342,20 +355,6 @@ ENDCLASS.
CLASS z2ui5_cl_util_api IMPLEMENTATION.
METHOD rtti_get_t_attri_by_include.
DATA(sdescr) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( type->absolute_name ) ).
LOOP AT sdescr->components REFERENCE INTO DATA(lr_comp).
DATA(ls_attri) = VALUE abap_componentdescr( name = attri && lr_comp->name ).
INSERT ls_attri INTO TABLE result.
ENDLOOP.
ENDMETHOD.
METHOD boolean_abap_2_json.
IF boolean_check_by_data( val ).
@ -415,6 +414,7 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
ENDMETHOD.
METHOD conv_copy_ref_data.
FIELD-SYMBOLS <from> TYPE data.
@ -756,6 +756,20 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
ENDMETHOD.
METHOD rtti_get_t_attri_by_include.
DATA(sdescr) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( type->absolute_name ) ).
LOOP AT sdescr->components REFERENCE INTO DATA(lr_comp).
DATA(ls_attri) = VALUE abap_componentdescr( name = attri && lr_comp->name ).
INSERT ls_attri INTO TABLE result.
ENDLOOP.
ENDMETHOD.
METHOD rtti_get_t_attri_by_oref.
DATA(lo_obj_ref) = cl_abap_objectdescr=>describe_by_object_ref( val ).
@ -799,6 +813,39 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
ENDMETHOD.
METHOD rtti_get_t_ddic_fixed_values.
* DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_typedescr=>describe_by_data( val ) ).
*
* DATA lv_langu TYPE c LENGTH 1.
*
* lv_langu = langu.
*
* lo_ele->get_ddic_fixed_values(
* EXPORTING
* p_langu = lv_langu
* RECEIVING
* p_fixed_values = DATA(lt_values)
* EXCEPTIONS
* not_found = 1
* no_ddic_type = 2
* OTHERS = 3 ).
*
* LOOP AT lt_values REFERENCE INTO DATA(lr_fix).
*
* INSERT VALUE #(
* n = lr_fix->low
* v = lr_fix->ddtext
* ) INTO TABLE result.
*
* ENDLOOP.
ASSERT 1 = 0.
result = VALUE #( ( n = val v = langu ) ).
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, ` &&
@ -875,6 +922,24 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
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).
@ -1036,26 +1101,27 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
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 unassign_object.
FIELD-SYMBOLS <unassign> TYPE any.
ASSIGN val->* TO <unassign>.
result = <unassign>.
ENDMETHOD.
METHOD unassign_data.
FIELD-SYMBOLS <unassign> TYPE any.
ASSIGN val->* TO <unassign>.
result = <unassign>.
ENDMETHOD.
ENDCLASS.

View File

@ -92,15 +92,24 @@ CLASS z2ui5_cl_core_attri_srv IMPLEMENTATION.
RETURN.
ENDIF.
DO 5 TIMES.
DATA(lo_dissolve) = NEW z2ui5_cl_core_dissolve_srv(
attri = mt_attri
app = mo_app ).
DATA(lo_dissolve) = NEW z2ui5_cl_core_dissolve_srv(
attri = mt_attri
app = mo_app ).
DO 10 TIMES.
lo_dissolve->main( ).
result = attri_search( val ).
IF result IS BOUND.
RETURN.
ENDIF.
IF line_exists( mt_attri->*[ check_dissolved = abap_false ] ).
CONTINUE.
ENDIF.
EXIT.
ENDDO.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
@ -147,9 +156,13 @@ CLASS z2ui5_cl_core_attri_srv IMPLEMENTATION.
METHOD attri_search.
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
WHERE o_typedescr->kind = cl_abap_typedescr=>kind_elem
OR o_typedescr->kind = cl_abap_typedescr=>kind_struct
OR o_typedescr->kind = cl_abap_typedescr=>kind_table.
WHERE o_typedescr IS BOUND.
IF lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_elem
AND lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_struct
AND lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_table.
CONTINUE.
ENDIF.
IF lr_attri->r_ref = val.
result = lr_attri.

View File

@ -46,7 +46,7 @@ ENDCLASS.
CLASS Z2UI5_CL_CORE_DISSOLVE_SRV IMPLEMENTATION.
CLASS z2ui5_cl_core_dissolve_srv IMPLEMENTATION.
METHOD constructor.
@ -153,7 +153,10 @@ CLASS Z2UI5_CL_CORE_DISSOLVE_SRV IMPLEMENTATION.
main_init( ).
RETURN.
ENDIF.
main_run( ).
IF line_exists( mt_attri->*[ check_dissolved = abap_false ] ).
main_run( ).
ENDIF.
ENDMETHOD.

View File

@ -28,11 +28,14 @@ CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
DATA mo_app TYPE REF TO ltcl_test_dissolve.
PRIVATE SECTION.
METHODS test_dissolve_init FOR TESTING RAISING cx_static_check.
METHODS test_dissolve_struc FOR TESTING RAISING cx_static_check.
METHODS test_dissolve_dref FOR TESTING RAISING cx_static_check.
METHODS test_dissolve_oref FOR TESTING RAISING cx_static_check.
METHODS test_ref FOR TESTING RAISING cx_static_check.
METHODS test_init FOR TESTING RAISING cx_static_check.
METHODS test_struc FOR TESTING RAISING cx_static_check.
METHODS test_dref FOR TESTING RAISING cx_static_check.
METHODS test_oref FOR TESTING RAISING cx_static_check.
METHODS test_ref FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref_struc FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref FOR TESTING RAISING cx_static_check.
METHODS test_dref_struc FOR TESTING RAISING cx_static_check.
ENDCLASS.
@ -59,7 +62,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_dissolve_init.
METHOD test_init.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
@ -79,7 +82,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_dissolve_dref.
METHOD test_dref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
CREATE DATA lo_app->mr_struc.
@ -97,7 +100,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_dissolve_oref.
METHOD test_oref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
@ -123,7 +126,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_dissolve_struc.
METHOD test_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
@ -143,4 +146,76 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_dref_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app2->mo_app = lo_app.
CREATE DATA lo_app->mr_struc.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_dissolve_srv(
attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
lo_model->main( ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MR_STRUC` ] OPTIONAL ) ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MR_STRUC->INPUT` ] OPTIONAL ) ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MR_STRUC->S_02-INPUT` ] OPTIONAL ) ).
ENDMETHOD.
METHOD test_oref_dref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = lo_app2.
CREATE DATA lo_app2->mr_value TYPE string.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_dissolve_srv(
attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
lo_model->main( ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MR_VALUE->*` ] OPTIONAL ) ).
ENDMETHOD.
METHOD test_oref_dref_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = lo_app2.
CREATE DATA lo_app->mo_app->mr_struc.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_dissolve_srv(
attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
lo_model->main( ).
lo_model->main( ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MR_STRUC` ] OPTIONAL ) ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MR_STRUC->INPUT` ] OPTIONAL ) ).
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MR_STRUC->S_02-INPUT` ] OPTIONAL ) ).
ENDMETHOD.
ENDCLASS.