mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 22:03:59 +08:00
parent
1a67811f99
commit
2619cd02f6
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue
Block a user