mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 16:36:11 +08:00
Refactoring (#886)
* refactoring * Update README.md * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * lint fixes * lint fixes * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * update * update abaplint * update * update * Update abaplint.jsonc * Update abaplint.jsonc * update * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * update lint * update * Update abaplint.jsonc * Update abaplint.jsonc * update * update * update * Update abaplint.jsonc * fixes * update * update
This commit is contained in:
parent
ee36617e24
commit
fd321c91df
|
@ -51,8 +51,8 @@
|
||||||
|
|
||||||
#### Extensions & Apps
|
#### Extensions & Apps
|
||||||
* Integrate your apps to SAP Fiori On-Premise Launchpad [(ext-fiori_launchpad)](https://github.com/abap2UI5/ext-service_integration)
|
* Integrate your apps to SAP Fiori On-Premise Launchpad [(ext-fiori_launchpad)](https://github.com/abap2UI5/ext-service_integration)
|
||||||
* Connect with the SAP Business Technology Platform [(ext-btp)](https://github.com/abap2UI5/ext-business_technology_platform)
|
* Connect with SAP BTP & SAP Mobile Start [(ext-btp)](https://github.com/abap2UI5/ext-business_technology_platform)
|
||||||
* Enhance functionality with Custom Controls & External Libraries [(custom controls)](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/custom_controls.md)
|
* Pimp up your apps with custom controls and external libraries [(ext-cc)](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/custom_controls.md)
|
||||||
* Discover other projects using abap2UI5 [(abap2UI5/links)](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md)
|
* Discover other projects using abap2UI5 [(abap2UI5/links)](https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md)
|
||||||
|
|
||||||
#### More
|
#### More
|
||||||
|
@ -220,7 +220,7 @@ ENDCLASS.
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
#### Credits
|
#### Credits
|
||||||
* These [**Contributors**](https://github.com/abap2UI5/abap2UI5/graphs/contributors) help to continously evolve this project
|
* These [**Contributors**](https://github.com/abap2UI5/abap2UI5/graphs/contributors) continuously drive the evolution of this project forward
|
||||||
* Code versioning & distribution are managed via [**abapGit**](https://abapgit.org/) [(authors)](https://abapgit.org/sponsor.html)
|
* Code versioning & distribution are managed via [**abapGit**](https://abapgit.org/) [(authors)](https://abapgit.org/sponsor.html)
|
||||||
* Static code analysis and quality assurance are performed via [**abaplint**](https://abaplint.org/) and [**open-abap**](https://github.com/open-abap) [(larshp)](https://github.com/larshp)
|
* Static code analysis and quality assurance are performed via [**abaplint**](https://abaplint.org/) and [**open-abap**](https://github.com/open-abap) [(larshp)](https://github.com/larshp)
|
||||||
* JSON parsing for frontend-backend communication is implemented with [**ajson**](https://github.com/sbcgua/ajson) [(sbcgua)](https://github.com/sbcgua)
|
* JSON parsing for frontend-backend communication is implemented with [**ajson**](https://github.com/sbcgua/ajson) [(sbcgua)](https://github.com/sbcgua)
|
||||||
|
|
|
@ -15,14 +15,14 @@
|
||||||
"errorNamespace": "."
|
"errorNamespace": "."
|
||||||
},
|
},
|
||||||
"rules": {
|
"rules": {
|
||||||
"7bit_ascii": false,
|
"7bit_ascii": true,
|
||||||
"abapdoc": false,
|
"abapdoc": false,
|
||||||
"sql_value_conversion" : true,
|
"sql_value_conversion" : true,
|
||||||
"select_single_full_key" : true,
|
"select_single_full_key" : true,
|
||||||
"strict_sql" : true,
|
"strict_sql" : true,
|
||||||
"easy_to_find_messages" : true,
|
"easy_to_find_messages" : true,
|
||||||
"fully_type_itabs" : false,
|
"fully_type_itabs" : true,
|
||||||
"align_parameters": false,
|
"align_parameters": true,
|
||||||
"smim_consistency": true,
|
"smim_consistency": true,
|
||||||
"allowed_object_naming": true,
|
"allowed_object_naming": true,
|
||||||
"allowed_object_types": {
|
"allowed_object_types": {
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"ambiguous_statement": true,
|
"ambiguous_statement": true,
|
||||||
"avoid_use": false,
|
"avoid_use": true,
|
||||||
"begin_end_names": true,
|
"begin_end_names": true,
|
||||||
"begin_single_include": true,
|
"begin_single_include": true,
|
||||||
"call_transaction_authority_check": true,
|
"call_transaction_authority_check": true,
|
||||||
|
@ -42,16 +42,12 @@
|
||||||
"cds_legacy_view": true,
|
"cds_legacy_view": true,
|
||||||
"cds_parser_error": true,
|
"cds_parser_error": true,
|
||||||
"chain_mainly_declarations": true,
|
"chain_mainly_declarations": true,
|
||||||
"change_if_to_case": {
|
"change_if_to_case": true,
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"skipNames": []
|
|
||||||
},
|
|
||||||
"check_abstract": true,
|
"check_abstract": true,
|
||||||
"check_comments": false,
|
"check_comments": true,
|
||||||
"check_ddic": true,
|
"check_ddic": true,
|
||||||
"check_include": true,
|
"check_include": true,
|
||||||
"check_subrc": false,
|
"check_subrc": true,
|
||||||
"check_syntax": true,
|
"check_syntax": true,
|
||||||
"check_text_elements": true,
|
"check_text_elements": true,
|
||||||
"check_transformation_exists": true,
|
"check_transformation_exists": true,
|
||||||
|
@ -60,11 +56,7 @@
|
||||||
"cloud_types": true,
|
"cloud_types": true,
|
||||||
"colon_missing_space": true,
|
"colon_missing_space": true,
|
||||||
"commented_code": false,
|
"commented_code": false,
|
||||||
"constant_classes": {
|
"constant_classes": true,
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"mapping": []
|
|
||||||
},
|
|
||||||
"constructor_visibility_public": true,
|
"constructor_visibility_public": true,
|
||||||
"contains_tab": {
|
"contains_tab": {
|
||||||
"exclude": [],
|
"exclude": [],
|
||||||
|
@ -75,7 +67,7 @@
|
||||||
"cyclomatic_complexity": {
|
"cyclomatic_complexity": {
|
||||||
"exclude": [],
|
"exclude": [],
|
||||||
"severity": "Error",
|
"severity": "Error",
|
||||||
"max": 25
|
"max": 10
|
||||||
},
|
},
|
||||||
"dangerous_statement": true,
|
"dangerous_statement": true,
|
||||||
"db_operation_in_loop": true,
|
"db_operation_in_loop": true,
|
||||||
|
@ -118,7 +110,7 @@
|
||||||
},
|
},
|
||||||
"global_class": true,
|
"global_class": true,
|
||||||
"identical_conditions": true,
|
"identical_conditions": true,
|
||||||
"identical_contents": false,
|
"identical_contents": true,
|
||||||
"identical_descriptions": true,
|
"identical_descriptions": true,
|
||||||
"identical_form_names": true,
|
"identical_form_names": true,
|
||||||
"if_in_if": true,
|
"if_in_if": true,
|
||||||
|
@ -128,11 +120,11 @@
|
||||||
"inline_data_old_versions": true,
|
"inline_data_old_versions": true,
|
||||||
"intf_referencing_clas": false,
|
"intf_referencing_clas": false,
|
||||||
"keep_single_parameter_on_one_line": false,
|
"keep_single_parameter_on_one_line": false,
|
||||||
"keyword_case": false,
|
"keyword_case": true,
|
||||||
"line_break_multiple_parameters": false,
|
"line_break_multiple_parameters": false,
|
||||||
"line_break_style": true,
|
"line_break_style": true,
|
||||||
"line_length": false,
|
"line_length": false,
|
||||||
"line_only_punc": false,
|
"line_only_punc": true,
|
||||||
"local_class_naming": false,
|
"local_class_naming": false,
|
||||||
"local_testclass_consistency": true,
|
"local_testclass_consistency": true,
|
||||||
"local_variable_names": false,
|
"local_variable_names": false,
|
||||||
|
@ -143,7 +135,7 @@
|
||||||
"message_exists": true,
|
"message_exists": true,
|
||||||
"method_implemented_twice": true,
|
"method_implemented_twice": true,
|
||||||
"method_length": false,
|
"method_length": false,
|
||||||
"method_overwrites_builtin": false,
|
"method_overwrites_builtin": true,
|
||||||
"method_parameter_names": false,
|
"method_parameter_names": false,
|
||||||
"mix_returning": true,
|
"mix_returning": true,
|
||||||
"modify_only_own_db_tables": {
|
"modify_only_own_db_tables": {
|
||||||
|
@ -153,15 +145,15 @@
|
||||||
"msag_consistency": true,
|
"msag_consistency": true,
|
||||||
"names_no_dash": true,
|
"names_no_dash": true,
|
||||||
"nesting": {
|
"nesting": {
|
||||||
"depth": 7
|
"depth": 5
|
||||||
},
|
},
|
||||||
"newline_between_methods": false,
|
"newline_between_methods": true,
|
||||||
"no_aliases": true,
|
"no_aliases": true,
|
||||||
"no_chained_assignment": true,
|
"no_chained_assignment": true,
|
||||||
"no_external_form_calls": true,
|
"no_external_form_calls": true,
|
||||||
"no_inline_in_optional_branches": false,
|
"no_inline_in_optional_branches": false,
|
||||||
"no_public_attributes": false,
|
"no_public_attributes": false,
|
||||||
"no_yoda_conditions": false,
|
"no_yoda_conditions": true,
|
||||||
"nrob_consistency": true,
|
"nrob_consistency": true,
|
||||||
"object_naming": {
|
"object_naming": {
|
||||||
"exclude": [],
|
"exclude": [],
|
||||||
|
@ -189,19 +181,19 @@
|
||||||
"shlp": "^Z"
|
"shlp": "^Z"
|
||||||
},
|
},
|
||||||
"obsolete_statement": true,
|
"obsolete_statement": true,
|
||||||
"omit_parameter_name": false,
|
"omit_parameter_name": true,
|
||||||
"omit_preceding_zeros": true,
|
"omit_preceding_zeros": true,
|
||||||
"omit_receiving": true,
|
"omit_receiving": true,
|
||||||
"parser_702_chaining": true,
|
"parser_702_chaining": true,
|
||||||
"parser_error": true,
|
"parser_error": true,
|
||||||
"parser_missing_space": false,
|
"parser_missing_space": true,
|
||||||
"pragma_style": true,
|
"pragma_style": true,
|
||||||
"prefer_corresponding": true,
|
"prefer_corresponding": true,
|
||||||
"prefer_inline": false,
|
"prefer_inline": false,
|
||||||
"prefer_is_not": false,
|
"prefer_is_not": true,
|
||||||
"prefer_raise_exception_new": true,
|
"prefer_raise_exception_new": true,
|
||||||
"prefer_returning_to_exporting": false,
|
"prefer_returning_to_exporting": true,
|
||||||
"prefer_xsdbool": false,
|
"prefer_xsdbool": true,
|
||||||
"preferred_compare_operator": true,
|
"preferred_compare_operator": true,
|
||||||
"prefix_is_current_class": {
|
"prefix_is_current_class": {
|
||||||
"severity": "Warning"
|
"severity": "Warning"
|
||||||
|
@ -221,44 +213,41 @@
|
||||||
"sequential_blank": {
|
"sequential_blank": {
|
||||||
"severity": "Warning"
|
"severity": "Warning"
|
||||||
},
|
},
|
||||||
"short_case": false,
|
"short_case": true,
|
||||||
"sicf_consistency": true,
|
"sicf_consistency": true,
|
||||||
"slow_parameter_passing": true,
|
"slow_parameter_passing": true,
|
||||||
"space_before_colon": true,
|
"space_before_colon": true,
|
||||||
"space_before_dot": true,
|
"space_before_dot": true,
|
||||||
"sql_escape_host_variables": true,
|
"sql_escape_host_variables": true,
|
||||||
"start_at_tab": false,
|
"start_at_tab": true,
|
||||||
"static_call_via_instance": {
|
"static_call_via_instance": {
|
||||||
"allowInTestclassIncludes": false
|
"allowInTestclassIncludes": false
|
||||||
},
|
},
|
||||||
"superclass_final": true,
|
"superclass_final": true,
|
||||||
"superfluous_value": true,
|
"superfluous_value": true,
|
||||||
"sy_modification": false,
|
"sy_modification": true,
|
||||||
"tabl_enhancement_category": true,
|
"tabl_enhancement_category": true,
|
||||||
"try_without_catch": true,
|
"try_without_catch": true,
|
||||||
"type_form_parameters": true,
|
"type_form_parameters": true,
|
||||||
"types_naming": false,
|
"types_naming": false,
|
||||||
"uncaught_exception": true,
|
"uncaught_exception": true,
|
||||||
"unknown_types": true,
|
"unknown_types": true,
|
||||||
"unnecessary_chaining": false,
|
"unnecessary_chaining": true,
|
||||||
"unnecessary_pragma": true,
|
"unnecessary_pragma": true,
|
||||||
"unnecessary_return": true,
|
"unnecessary_return": true,
|
||||||
"unreachable_code": {
|
"unreachable_code": true,
|
||||||
"exclude": ["z2ui5_cl_fw_utility.clas.testclasses.abap"]
|
|
||||||
},
|
|
||||||
"unsecure_fae": true,
|
"unsecure_fae": true,
|
||||||
"unused_ddic": true,
|
"unused_ddic": true,
|
||||||
"unused_methods": true,
|
"unused_methods": true,
|
||||||
"unused_types": true,
|
"unused_types": true,
|
||||||
"unused_variables": {
|
"unused_variables": {
|
||||||
"severity": "Error",
|
"severity": "Error",
|
||||||
"exclude": ["z2ui5_cl_fw_utility.clas.testclasses.abap"],
|
"skipNames": ["lv_dummy"]
|
||||||
"skipNames": ["lv_dummy", "i_mv_editor"]
|
|
||||||
},
|
},
|
||||||
"use_bool_expression": true,
|
"use_bool_expression": true,
|
||||||
"use_class_based_exceptions": true,
|
"use_class_based_exceptions": true,
|
||||||
"use_line_exists": false,
|
"use_line_exists": true,
|
||||||
"use_new": false,
|
"use_new": true,
|
||||||
"when_others_last": true,
|
"when_others_last": true,
|
||||||
"whitespace_end": true,
|
"whitespace_end": true,
|
||||||
"xml_consistency": true,
|
"xml_consistency": true,
|
||||||
|
|
|
@ -89,6 +89,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
||||||
AND handle2 = @handle2
|
AND handle2 = @handle2
|
||||||
AND handle3 = @handle3
|
AND handle3 = @handle3
|
||||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
DATA(ls_db) = lt_db[ 1 ].
|
DATA(ls_db) = lt_db[ 1 ].
|
||||||
|
|
||||||
|
@ -109,6 +110,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
||||||
FROM z2ui5_t_fw_02
|
FROM z2ui5_t_fw_02
|
||||||
WHERE id = @id
|
WHERE id = @id
|
||||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
DATA(ls_db) = lt_db[ 1 ].
|
DATA(ls_db) = lt_db[ 1 ].
|
||||||
|
|
||||||
|
@ -132,6 +134,7 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
|
||||||
data = xml_stringify( data ) ).
|
data = xml_stringify( data ) ).
|
||||||
|
|
||||||
MODIFY z2ui5_t_fw_02 FROM @ls_db.
|
MODIFY z2ui5_t_fw_02 FROM @ls_db.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
IF check_commit = abap_true.
|
IF check_commit = abap_true.
|
||||||
COMMIT WORK AND WAIT.
|
COMMIT WORK AND WAIT.
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||||
RISK LEVEL HARMLESS.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS
|
||||||
first_test FOR TESTING RAISING cx_static_check.
|
first_test FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -199,8 +199,8 @@ CLASS z2ui5_cl_util_api DEFINITION
|
||||||
CLASS-METHODS xml_srtti_parse
|
CLASS-METHODS xml_srtti_parse
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!rtti_data TYPE clike
|
!rtti_data TYPE clike
|
||||||
EXPORTING
|
RETURNING
|
||||||
!e_data TYPE REF TO data.
|
VALUE(result) TYPE REF TO data.
|
||||||
|
|
||||||
CLASS-METHODS time_get_timestampl
|
CLASS-METHODS time_get_timestampl
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -265,12 +265,6 @@ CLASS z2ui5_cl_util_api DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE abap_bool.
|
VALUE(result) TYPE abap_bool.
|
||||||
|
|
||||||
CLASS-METHODS rtti_get_type_kind_by_descr
|
|
||||||
IMPORTING
|
|
||||||
!val TYPE REF TO cl_abap_typedescr
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
CLASS-METHODS rtti_get_type_kind
|
CLASS-METHODS rtti_get_type_kind
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!val TYPE any
|
!val TYPE any
|
||||||
|
@ -354,18 +348,7 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
LOOP AT sdescr->components REFERENCE INTO DATA(lr_comp).
|
LOOP AT sdescr->components REFERENCE INTO DATA(lr_comp).
|
||||||
|
|
||||||
DATA(lv_element) = attri && lr_comp->name.
|
DATA(ls_attri) = VALUE abap_componentdescr( name = attri && lr_comp->name ).
|
||||||
|
|
||||||
* DATA(ls_attri) = VALUE z2ui5_if_core_types=>ty_s_attri(
|
|
||||||
* name = lv_element
|
|
||||||
* type_kind = lr_comp->type_kind ).
|
|
||||||
*
|
|
||||||
DATA(ls_attri) = VALUE abap_componentdescr(
|
|
||||||
name = lv_element
|
|
||||||
* type_kind = lr_comp->type_kind
|
|
||||||
).
|
|
||||||
"todo type of field
|
|
||||||
|
|
||||||
INSERT ls_attri INTO TABLE result.
|
INSERT ls_attri INTO TABLE result.
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
@ -667,6 +650,7 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
LOOP AT lt_cols REFERENCE INTO lr_col.
|
LOOP AT lt_cols REFERENCE INTO lr_col.
|
||||||
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
ASSIGN lr_row->* TO FIELD-SYMBOL(<row>).
|
||||||
ASSIGN COMPONENT sy-tabix OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
|
ASSIGN COMPONENT sy-tabix OF STRUCTURE <row> TO FIELD-SYMBOL(<field>).
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
<field> = lr_col->*.
|
<field> = lr_col->*.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -833,10 +817,9 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lt_source) = method_get_source(
|
DATA(lt_source) = method_get_source(
|
||||||
iv_classname = iv_classname
|
iv_classname = iv_classname
|
||||||
iv_methodname = iv_methodname
|
iv_methodname = iv_methodname ).
|
||||||
).
|
|
||||||
|
|
||||||
result = source_method_to_file( it_source = lt_source ).
|
result = source_method_to_file( lt_source ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -1000,8 +983,8 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
lo_datadescr ?= rtti_type.
|
lo_datadescr ?= rtti_type.
|
||||||
|
|
||||||
CREATE DATA e_data TYPE HANDLE lo_datadescr.
|
CREATE DATA result TYPE HANDLE lo_datadescr.
|
||||||
ASSIGN e_data->* TO FIELD-SYMBOL(<variable>).
|
ASSIGN result->* TO FIELD-SYMBOL(<variable>).
|
||||||
CALL TRANSFORMATION id SOURCE XML rtti_data RESULT dobj = <variable>.
|
CALL TRANSFORMATION id SOURCE XML rtti_data RESULT dobj = <variable>.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -1059,31 +1042,6 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD rtti_get_type_kind_by_descr.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(lo_test) = CAST cl_abap_structdescr( val ).
|
|
||||||
result = lo_test->type_kind.
|
|
||||||
RETURN.
|
|
||||||
CATCH cx_sy_move_cast_error.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(lo_test2) = CAST cl_abap_objectdescr( val ).
|
|
||||||
result = lo_test2->type_kind.
|
|
||||||
RETURN.
|
|
||||||
CATCH cx_sy_move_cast_error.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(lo_test3) = CAST cl_abap_refdescr( val ).
|
|
||||||
result = lo_test3->type_kind.
|
|
||||||
RETURN.
|
|
||||||
CATCH cx_sy_move_cast_error.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD unassign_object.
|
METHOD unassign_object.
|
||||||
|
|
||||||
FIELD-SYMBOLS <unassign> TYPE any.
|
FIELD-SYMBOLS <unassign> TYPE any.
|
||||||
|
|
|
@ -126,6 +126,7 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lv_assign) = `LO_APP->` && 'MV_VAL'.
|
DATA(lv_assign) = `LO_APP->` && 'MV_VAL'.
|
||||||
ASSIGN (lv_assign) TO <any>.
|
ASSIGN (lv_assign) TO <any>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = <any>
|
act = <any>
|
||||||
|
@ -359,7 +360,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` )
|
act = z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` )
|
||||||
exp = `{ABCD}`).
|
exp = `{ABCD}` ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -205,6 +205,7 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||||
ro_class = object.
|
ro_class = object.
|
||||||
|
|
||||||
ASSIGN ('OBJECT->IF_XCO_AO_CLASS~IMPLEMENTATION') TO <any>.
|
ASSIGN ('OBJECT->IF_XCO_AO_CLASS~IMPLEMENTATION') TO <any>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
object = <any>.
|
object = <any>.
|
||||||
|
|
||||||
CALL METHOD object->('IF_XCO_CLAS_IMPLEMENTATION~METHOD')
|
CALL METHOD object->('IF_XCO_CLAS_IMPLEMENTATION~METHOD')
|
||||||
|
@ -275,7 +276,7 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||||
clsname TYPE c LENGTH 30,
|
clsname TYPE c LENGTH 30,
|
||||||
refclsname TYPE c LENGTH 30,
|
refclsname TYPE c LENGTH 30,
|
||||||
END OF ty_s_impl.
|
END OF ty_s_impl.
|
||||||
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
|
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH EMPTY KEY.
|
||||||
TYPES: BEGIN OF ty_s_key,
|
TYPES: BEGIN OF ty_s_key,
|
||||||
intkey TYPE c LENGTH 30,
|
intkey TYPE c LENGTH 30,
|
||||||
END OF ty_s_key.
|
END OF ty_s_key.
|
||||||
|
@ -336,7 +337,6 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||||
METHOD rtti_get_data_element_texts.
|
METHOD rtti_get_data_element_texts.
|
||||||
|
|
||||||
DATA:
|
DATA:
|
||||||
data_element_name TYPE c LENGTH 30,
|
|
||||||
ddic_ref TYPE REF TO data,
|
ddic_ref TYPE REF TO data,
|
||||||
data_element TYPE REF TO object,
|
data_element TYPE REF TO object,
|
||||||
content TYPE REF TO object,
|
content TYPE REF TO object,
|
||||||
|
@ -348,7 +348,7 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||||
END OF ddic,
|
END OF ddic,
|
||||||
exists TYPE abap_bool.
|
exists TYPE abap_bool.
|
||||||
|
|
||||||
data_element_name = i_data_element_name.
|
DATA(data_element_name) = i_data_element_name.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
cl_abap_typedescr=>describe_by_name( 'T100' ).
|
cl_abap_typedescr=>describe_by_name( 'T100' ).
|
||||||
|
|
164
src/01/02/01/z2ui5_cl_core_attri_srv.clas.abap
Normal file
164
src/01/02/01/z2ui5_cl_core_attri_srv.clas.abap
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
CLASS z2ui5_cl_core_attri_srv DEFINITION
|
||||||
|
PUBLIC FINAL
|
||||||
|
CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
||||||
|
app TYPE REF TO object.
|
||||||
|
|
||||||
|
METHODS attri_refs_update.
|
||||||
|
METHODS attri_before_save.
|
||||||
|
METHODS attri_after_load.
|
||||||
|
|
||||||
|
METHODS attri_get_val_ref
|
||||||
|
IMPORTING
|
||||||
|
iv_path TYPE clike
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO data.
|
||||||
|
|
||||||
|
METHODS attri_search_a_dissolve
|
||||||
|
IMPORTING
|
||||||
|
val TYPE REF TO data
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_if_core_types=>ty_s_attri.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
DATA mo_app TYPE REF TO object.
|
||||||
|
|
||||||
|
METHODS attri_search
|
||||||
|
IMPORTING
|
||||||
|
val TYPE REF TO data
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_if_core_types=>ty_s_attri.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_core_attri_srv IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD attri_after_load.
|
||||||
|
|
||||||
|
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
|
||||||
|
|
||||||
|
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
|
||||||
|
lr_attri->o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_attri->r_ref ).
|
||||||
|
|
||||||
|
IF lr_attri->srtti_data IS NOT INITIAL.
|
||||||
|
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<val>).
|
||||||
|
<val> = z2ui5_cl_util=>xml_srtti_parse( lr_attri->srtti_data ).
|
||||||
|
CLEAR lr_attri->srtti_data.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD attri_before_save.
|
||||||
|
|
||||||
|
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
|
||||||
|
|
||||||
|
IF lr_attri->bind_type = z2ui5_if_core_types=>cs_bind_type-one_time.
|
||||||
|
DELETE mt_attri->*.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF lr_attri->o_typedescr->type_kind <> cl_abap_classdescr=>typekind_dref.
|
||||||
|
CLEAR lr_attri->r_ref.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<val_ref>).
|
||||||
|
ASSIGN <val_ref>->* TO FIELD-SYMBOL(<val>).
|
||||||
|
|
||||||
|
lr_attri->srtti_data = z2ui5_cl_util=>xml_srtti_stringify( <val> ).
|
||||||
|
|
||||||
|
CLEAR <val>.
|
||||||
|
CLEAR <val_ref>.
|
||||||
|
CLEAR lr_attri->r_ref.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD attri_search_a_dissolve.
|
||||||
|
|
||||||
|
result = attri_search( val ).
|
||||||
|
IF result IS BOUND.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DO 5 TIMES.
|
||||||
|
DATA(lo_dissolve) = NEW z2ui5_cl_core_dissolve_srv(
|
||||||
|
attri = mt_attri
|
||||||
|
app = mo_app ).
|
||||||
|
lo_dissolve->main( ).
|
||||||
|
result = attri_search( val ).
|
||||||
|
IF result IS BOUND.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||||
|
EXPORTING
|
||||||
|
val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class or switch to bind_local`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD attri_get_val_ref.
|
||||||
|
|
||||||
|
ASSIGN mo_app->(iv_path) TO FIELD-SYMBOL(<attri>).
|
||||||
|
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||||
|
EXPORTING
|
||||||
|
val = `DEREF_FAILED_TARGET_INITIAL`.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
GET REFERENCE OF <attri> INTO result.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
ASSERT 1 = 0.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD attri_refs_update.
|
||||||
|
|
||||||
|
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
|
||||||
|
|
||||||
|
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
|
||||||
|
lr_attri->o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_attri->r_ref ).
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
mt_attri = attri.
|
||||||
|
mo_app = app.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
IF lr_attri->r_ref = val.
|
||||||
|
result = lr_attri.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
256
src/01/02/01/z2ui5_cl_core_attri_srv.clas.testclasses.abap
Normal file
256
src/01/02/01/z2ui5_cl_core_attri_srv.clas.testclasses.abap
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_dissolve DEFINITION DEFERRED.
|
||||||
|
*CLASS z2ui5_cl_core_model_srv DEFINITION LOCAL FRIENDS ltcl_test_dissolve.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
|
||||||
|
* DURATION SHORT
|
||||||
|
* RISK LEVEL HARMLESS.
|
||||||
|
*
|
||||||
|
* PUBLIC SECTION.
|
||||||
|
*
|
||||||
|
* TYPES:
|
||||||
|
* BEGIN OF s_01,
|
||||||
|
* input TYPE string,
|
||||||
|
* BEGIN OF s_02,
|
||||||
|
* input TYPE string,
|
||||||
|
* BEGIN OF s_03,
|
||||||
|
* input TYPE string,
|
||||||
|
* BEGIN OF s_04,
|
||||||
|
* input TYPE string,
|
||||||
|
* END OF s_04,
|
||||||
|
* END OF s_03,
|
||||||
|
* END OF s_02,
|
||||||
|
* END OF s_01.
|
||||||
|
*
|
||||||
|
* DATA ms_struc TYPE s_01 ##NEEDED.
|
||||||
|
* DATA mv_value TYPE string ##NEEDED.
|
||||||
|
* DATA mr_value TYPE REF TO data.
|
||||||
|
* DATA mr_struc TYPE REF TO s_01.
|
||||||
|
* 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.
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_dissolve IMPLEMENTATION.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* METHOD test_ref.
|
||||||
|
*
|
||||||
|
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||||
|
*
|
||||||
|
* DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app ).
|
||||||
|
*
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
*
|
||||||
|
* DATA(ls_attri) = lt_attri[ name = `MV_VALUE` ].
|
||||||
|
* GET REFERENCE OF lo_app->mv_value INTO DATA(lr_ref).
|
||||||
|
*
|
||||||
|
* IF ls_attri-r_ref <> lr_ref.
|
||||||
|
* cl_abap_unit_assert=>abort( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD test_dissolve_init.
|
||||||
|
*
|
||||||
|
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||||
|
*
|
||||||
|
* DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app ).
|
||||||
|
*
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
*
|
||||||
|
* 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_VALUE` ] OPTIONAL ) ).
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC` ] OPTIONAL ) ).
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MV_VALUE` ] OPTIONAL ) ).
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD test_dissolve_dref.
|
||||||
|
*
|
||||||
|
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||||
|
* CREATE DATA lo_app->mr_struc.
|
||||||
|
* CREATE DATA lo_app->mr_value TYPE string.
|
||||||
|
*
|
||||||
|
* DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app ).
|
||||||
|
*
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MR_VALUE->*` ] OPTIONAL ) ).
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD test_dissolve_oref.
|
||||||
|
*
|
||||||
|
* 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->mo_app->mr_struc.
|
||||||
|
* CREATE DATA lo_app->mo_app->mr_value TYPE string.
|
||||||
|
*
|
||||||
|
* DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app2 ).
|
||||||
|
*
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MV_VALUE` ] OPTIONAL ) ).
|
||||||
|
* 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_VALUE` ] OPTIONAL ) ).
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MS_STRUC` ] OPTIONAL ) ).
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD test_dissolve_struc.
|
||||||
|
*
|
||||||
|
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||||
|
* DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app ).
|
||||||
|
*
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
* lo_model->dissolve( ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-INPUT` ] OPTIONAL ) ).
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-S_02-INPUT` ] OPTIONAL ) ).
|
||||||
|
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-S_02-S_03-S_04-INPUT` ] OPTIONAL ) ).
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_app2 DEFINITION FINAL FOR TESTING
|
||||||
|
* DURATION MEDIUM
|
||||||
|
* RISK LEVEL HARMLESS.
|
||||||
|
*
|
||||||
|
* PUBLIC SECTION.
|
||||||
|
*
|
||||||
|
* DATA mv_value TYPE string ##NEEDED.
|
||||||
|
* DATA mr_value TYPE REF TO data.
|
||||||
|
* DATA mr_value2 TYPE REF TO data.
|
||||||
|
* DATA mo_app TYPE REF TO ltcl_test_app2.
|
||||||
|
*
|
||||||
|
* DATA xx TYPE string ##NEEDED.
|
||||||
|
* METHODS constructor.
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_app2 IMPLEMENTATION.
|
||||||
|
*
|
||||||
|
* METHOD constructor.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_search_attri DEFINITION FINAL FOR TESTING
|
||||||
|
* DURATION SHORT
|
||||||
|
* RISK LEVEL HARMLESS.
|
||||||
|
*
|
||||||
|
* PRIVATE SECTION.
|
||||||
|
* METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||||
|
* METHODS second_test FOR TESTING RAISING cx_static_check.
|
||||||
|
* METHODS third_test FOR TESTING RAISING cx_static_check.
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*CLASS z2ui5_cl_core_model_srv DEFINITION LOCAL FRIENDS ltcl_test_search_attri.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_test_search_attri IMPLEMENTATION.
|
||||||
|
*
|
||||||
|
* METHOD first_test.
|
||||||
|
*
|
||||||
|
* DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
||||||
|
* DATA lr_value TYPE REF TO data.
|
||||||
|
* GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
||||||
|
*
|
||||||
|
* DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = lr_value ) ).
|
||||||
|
*
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app_client ).
|
||||||
|
*
|
||||||
|
* DATA(lr_attri) = lo_model->attri_search_a_dissolve( REF #( lo_app_client->mv_value ) ).
|
||||||
|
*
|
||||||
|
* IF lr_attri->r_ref <> lr_value.
|
||||||
|
* cl_abap_unit_assert=>abort( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD second_test.
|
||||||
|
*
|
||||||
|
* DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
||||||
|
* DATA lr_value TYPE REF TO data.
|
||||||
|
* GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
||||||
|
*
|
||||||
|
* DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = REF #( lo_app_client->mv_value ) ) ).
|
||||||
|
*
|
||||||
|
* DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
||||||
|
* attri = REF #( lt_attri )
|
||||||
|
* app = lo_app_client ).
|
||||||
|
*
|
||||||
|
* DATA(lr_attri) = lo_model->attri_search_a_dissolve( REF #( lo_app_client->mv_value ) ).
|
||||||
|
*
|
||||||
|
* IF lr_attri->r_ref <> lr_value.
|
||||||
|
* cl_abap_unit_assert=>abort( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD third_test.
|
||||||
|
*
|
||||||
|
* DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
||||||
|
* DATA lr_value TYPE REF TO data.
|
||||||
|
* GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
||||||
|
*
|
||||||
|
* lo_app_client->mo_app = NEW #( ).
|
||||||
|
*
|
||||||
|
* DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri(
|
||||||
|
* ( name = `1` r_ref = REF #( lo_app_client->mr_value ) )
|
||||||
|
* ( name = `4` r_ref = REF #( lo_app_client->mr_value2 ) )
|
||||||
|
* ( name = `2` r_ref = REF #( lo_app_client->mo_app ) )
|
||||||
|
* ( name = `3` r_ref = REF #( lo_app_client->mv_value ) )
|
||||||
|
* ).
|
||||||
|
*
|
||||||
|
* DATA(lr_attri) = REF #( lt_attri[ r_ref = lr_value ] ).
|
||||||
|
* IF lr_attri->r_ref <> lr_value.
|
||||||
|
* cl_abap_unit_assert=>abort( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
|
@ -3,9 +3,9 @@
|
||||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
<asx:values>
|
<asx:values>
|
||||||
<VSEOCLASS>
|
<VSEOCLASS>
|
||||||
<CLSNAME>Z2UI5_CL_CORE_MODEL_SRV</CLSNAME>
|
<CLSNAME>Z2UI5_CL_CORE_ATTRI_SRV</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abap2UI5 - backend model</DESCRIPT>
|
<DESCRIPT>abap2UI5 - backend attributes</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
|
@ -80,6 +80,7 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
||||||
|
|
||||||
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
lr_ref_in = REF #( <ele> ).
|
lr_ref_in = REF #( <ele> ).
|
||||||
|
|
||||||
IF i_val = lr_ref_in.
|
IF i_val = lr_ref_in.
|
||||||
|
@ -198,22 +199,21 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
ms_config = config.
|
ms_config = config.
|
||||||
mv_type = type.
|
mv_type = type.
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
attri = REF #( mo_app->mt_attri )
|
attri = REF #( mo_app->mt_attri )
|
||||||
app = mo_app->mo_app ).
|
app = mo_app->mo_app ).
|
||||||
|
|
||||||
mr_attri = lo_model->search_a_dissolve_attribute( val ).
|
mr_attri = lo_model->attri_search_a_dissolve( val ).
|
||||||
|
|
||||||
IF mr_attri->bind_type IS NOT INITIAL.
|
IF mr_attri->bind_type IS NOT INITIAL.
|
||||||
check_raise_existing( ).
|
check_raise_existing( ).
|
||||||
result = mr_attri->name_client.
|
|
||||||
ELSE.
|
ELSE.
|
||||||
check_raise_new( ).
|
check_raise_new( ).
|
||||||
update_model_attri( ).
|
update_model_attri( ).
|
||||||
result = mr_attri->name_client.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
result = mr_attri->name_client.
|
||||||
|
|
||||||
IF result = `/` && z2ui5_if_core_types=>cs_ui5-two_way_model.
|
IF `/` && z2ui5_if_core_types=>cs_ui5-two_way_model = result.
|
||||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||||
EXPORTING
|
EXPORTING
|
||||||
val = `<p>Name of variable not allowed - x is reserved word - use anoter name for your attribute`.
|
val = `<p>Name of variable not allowed - x is reserved word - use anoter name for your attribute`.
|
||||||
|
@ -295,4 +295,5 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
mr_attri->name_client = get_client_name( ).
|
mr_attri->name_client = get_client_name( ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
206
src/01/02/01/z2ui5_cl_core_dissolve_srv.clas.abap
Normal file
206
src/01/02/01/z2ui5_cl_core_dissolve_srv.clas.abap
Normal file
|
@ -0,0 +1,206 @@
|
||||||
|
CLASS z2ui5_cl_core_dissolve_srv DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
||||||
|
app TYPE REF TO object.
|
||||||
|
|
||||||
|
METHODS main.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
DATA mo_app TYPE REF TO object.
|
||||||
|
|
||||||
|
METHODS main_run.
|
||||||
|
METHODS main_init.
|
||||||
|
|
||||||
|
METHODS diss_struc
|
||||||
|
IMPORTING
|
||||||
|
ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
|
||||||
|
METHODS diss_dref
|
||||||
|
IMPORTING
|
||||||
|
ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
|
||||||
|
METHODS diss_oref
|
||||||
|
IMPORTING ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
||||||
|
RETURNING VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||||
|
|
||||||
|
METHODS create_new_entry
|
||||||
|
IMPORTING
|
||||||
|
name TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_attri.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_core_dissolve_srv IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
mt_attri = attri.
|
||||||
|
mo_app = app.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD create_new_entry.
|
||||||
|
|
||||||
|
result = VALUE z2ui5_if_core_types=>ty_s_attri( ).
|
||||||
|
result-name = name.
|
||||||
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
|
attri = mt_attri
|
||||||
|
app = mo_app ).
|
||||||
|
result-r_ref = lo_model->attri_get_val_ref( name ).
|
||||||
|
result-o_typedescr = cl_abap_datadescr=>describe_by_data_ref( result-r_ref ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD diss_dref.
|
||||||
|
|
||||||
|
DATA(lr_ref) = z2ui5_cl_util=>unassign_data( ir_attri->r_ref ).
|
||||||
|
IF lr_ref IS INITIAL.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DATA(ls_attri2) = VALUE z2ui5_if_core_types=>ty_s_attri( ).
|
||||||
|
ls_attri2-o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_ref ).
|
||||||
|
|
||||||
|
CASE ls_attri2-o_typedescr->kind.
|
||||||
|
|
||||||
|
WHEN cl_abap_datadescr=>kind_struct.
|
||||||
|
DATA(lt_attri) = diss_struc( ir_attri ).
|
||||||
|
INSERT LINES OF lt_attri INTO TABLE result.
|
||||||
|
|
||||||
|
WHEN OTHERS.
|
||||||
|
|
||||||
|
ls_attri2-name = ir_attri->name && `->*`.
|
||||||
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
|
attri = mt_attri
|
||||||
|
app = mo_app ).
|
||||||
|
ls_attri2-r_ref = lo_model->attri_get_val_ref( ls_attri2-name ).
|
||||||
|
INSERT ls_attri2 INTO TABLE result.
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD diss_oref.
|
||||||
|
|
||||||
|
IF z2ui5_cl_util=>check_unassign_inital( ir_attri->r_ref ).
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DATA(lv_name) = COND #( WHEN ir_attri->name IS NOT INITIAL THEN ir_attri->name && `->` ).
|
||||||
|
|
||||||
|
DATA(lr_ref) = z2ui5_cl_util=>unassign_object( ir_attri->r_ref ).
|
||||||
|
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_oref( lr_ref ).
|
||||||
|
|
||||||
|
LOOP AT lt_attri REFERENCE INTO DATA(lr_attri)
|
||||||
|
WHERE visibility = cl_abap_objectdescr=>public
|
||||||
|
AND is_interface = abap_false
|
||||||
|
AND is_constant = abap_false.
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
DATA(ls_new) = create_new_entry( lv_name && lr_attri->name ).
|
||||||
|
INSERT ls_new INTO TABLE result.
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD diss_struc.
|
||||||
|
|
||||||
|
IF ir_attri->o_typedescr->kind = cl_abap_typedescr=>kind_ref.
|
||||||
|
DATA(lv_name) = ir_attri->name && `->`.
|
||||||
|
DATA(lr_ref) = z2ui5_cl_util=>unassign_data( ir_attri->r_ref ).
|
||||||
|
ELSE.
|
||||||
|
lv_name = ir_attri->name && `-`.
|
||||||
|
lr_ref = ir_attri->r_ref.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( lr_ref ).
|
||||||
|
|
||||||
|
LOOP AT lt_attri INTO DATA(ls_attri).
|
||||||
|
DATA(ls_new) = create_new_entry( lv_name && ls_attri-name ).
|
||||||
|
INSERT ls_new INTO TABLE result.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main.
|
||||||
|
|
||||||
|
IF mt_attri->* IS INITIAL.
|
||||||
|
main_init( ).
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
main_run( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main_init.
|
||||||
|
|
||||||
|
DATA(ls_attri) = VALUE z2ui5_if_core_types=>ty_s_attri( r_ref = REF #( mo_app ) ).
|
||||||
|
DATA(lt_init) = diss_oref( REF #( ls_attri ) ).
|
||||||
|
INSERT LINES OF lt_init INTO TABLE mt_attri->*.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main_run.
|
||||||
|
|
||||||
|
DATA(lt_attri_new) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
|
||||||
|
|
||||||
|
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
||||||
|
WHERE check_dissolved = abap_false.
|
||||||
|
|
||||||
|
lr_attri->check_dissolved = abap_true.
|
||||||
|
|
||||||
|
CASE lr_attri->o_typedescr->kind.
|
||||||
|
|
||||||
|
WHEN cl_abap_typedescr=>kind_struct.
|
||||||
|
DATA(lt_attri_struc) = diss_struc( lr_attri ).
|
||||||
|
INSERT LINES OF lt_attri_struc INTO TABLE lt_attri_new.
|
||||||
|
|
||||||
|
WHEN cl_abap_typedescr=>kind_ref.
|
||||||
|
|
||||||
|
CASE lr_attri->o_typedescr->type_kind.
|
||||||
|
|
||||||
|
WHEN cl_abap_typedescr=>typekind_oref.
|
||||||
|
DATA(lt_attri_oref) = diss_oref( lr_attri ).
|
||||||
|
INSERT LINES OF lt_attri_oref INTO TABLE lt_attri_new.
|
||||||
|
WHEN cl_abap_typedescr=>typekind_dref.
|
||||||
|
DATA(lt_attri_dref) = diss_dref( lr_attri ).
|
||||||
|
INSERT LINES OF lt_attri_dref INTO TABLE lt_attri_new.
|
||||||
|
WHEN OTHERS.
|
||||||
|
ASSERT 1 = 0.
|
||||||
|
ENDCASE.
|
||||||
|
WHEN OTHERS.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
INSERT LINES OF lt_attri_new INTO TABLE mt_attri->*.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
16
src/01/02/01/z2ui5_cl_core_dissolve_srv.clas.xml
Normal file
16
src/01/02/01/z2ui5_cl_core_dissolve_srv.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_CORE_DISSOLVE_SRV</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abap2UI5 - backend attri dissolver</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -5,7 +5,7 @@ CLASS z2ui5_cl_core_draft_srv DEFINITION
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
METHODS count
|
METHODS count_entries
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE i.
|
VALUE(result) TYPE i.
|
||||||
|
|
||||||
|
@ -86,19 +86,18 @@ CLASS z2ui5_cl_core_draft_srv IMPLEMENTATION.
|
||||||
SELECT SINGLE *
|
SELECT SINGLE *
|
||||||
FROM z2ui5_t_core_01
|
FROM z2ui5_t_core_01
|
||||||
WHERE id = @id
|
WHERE id = @id
|
||||||
INTO @result.
|
INTO @result ##SUBRC_OK.
|
||||||
|
|
||||||
ELSE.
|
ELSE.
|
||||||
|
|
||||||
SELECT SINGLE id, id_prev, id_prev_app, id_prev_app_stack
|
SELECT SINGLE id, id_prev, id_prev_app, id_prev_app_stack
|
||||||
FROM z2ui5_t_core_01
|
FROM z2ui5_t_core_01
|
||||||
WHERE id = @id
|
WHERE id = @id
|
||||||
INTO CORRESPONDING FIELDS OF @result.
|
INTO CORRESPONDING FIELDS OF @result ##SUBRC_OK.
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
* ASSERT 1 = 0.
|
|
||||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||||
EXPORTING
|
EXPORTING
|
||||||
val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
|
val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
|
||||||
|
@ -123,7 +122,9 @@ CLASS z2ui5_cl_core_draft_srv IMPLEMENTATION.
|
||||||
result = CORRESPONDING #( ls_db ).
|
result = CORRESPONDING #( ls_db ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
METHOD count.
|
|
||||||
|
|
||||||
|
METHOD count_entries.
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
COUNT( * )
|
COUNT( * )
|
||||||
|
|
|
@ -50,6 +50,7 @@ CLASS z2ui5_cl_core_event_srv IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_t_arg.
|
METHOD get_t_arg.
|
||||||
|
|
||||||
IF val IS NOT INITIAL.
|
IF val IS NOT INITIAL.
|
||||||
|
|
|
@ -15,7 +15,7 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
METHOD event.
|
METHOD event.
|
||||||
|
|
||||||
DATA(lo_event) = NEW z2ui5_cl_core_event_srv( ).
|
DATA(lo_event) = NEW z2ui5_cl_core_event_srv( ).
|
||||||
DATA(lv_event) = lo_event->get_event( `POST`).
|
DATA(lv_event) = lo_event->get_event( `POST` ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_event
|
act = lv_event
|
||||||
|
|
|
@ -19,13 +19,13 @@ CLASS z2ui5_cl_core_json_srv DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
METHODS model_client_to_server
|
METHODS model_front_to_back
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!view TYPE string
|
!view TYPE string
|
||||||
!t_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
!t_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
||||||
!model TYPE REF TO z2ui5_if_ajson.
|
!model TYPE REF TO z2ui5_if_ajson.
|
||||||
|
|
||||||
METHODS model_server_to_client
|
METHODS model_back_to_front
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!t_attri TYPE z2ui5_if_core_types=>ty_t_attri
|
!t_attri TYPE z2ui5_if_core_types=>ty_t_attri
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -40,7 +40,7 @@ ENDCLASS.
|
||||||
CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD model_client_to_server.
|
METHOD model_front_to_back.
|
||||||
|
|
||||||
LOOP AT t_attri->* REFERENCE INTO DATA(lr_attri)
|
LOOP AT t_attri->* REFERENCE INTO DATA(lr_attri)
|
||||||
WHERE bind_type = z2ui5_if_core_types=>cs_bind_type-two_way
|
WHERE bind_type = z2ui5_if_core_types=>cs_bind_type-two_way
|
||||||
|
@ -73,21 +73,15 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD model_server_to_client.
|
METHOD model_back_to_front.
|
||||||
TRY.
|
TRY.
|
||||||
|
|
||||||
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
||||||
|
|
||||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
||||||
|
|
||||||
"(1) set pretty mode
|
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>new( ) ).
|
||||||
IF lr_attri->custom_mapper IS BOUND.
|
|
||||||
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = lr_attri->custom_mapper ) ).
|
|
||||||
ELSE.
|
|
||||||
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
"(2) read attribute of end-user app & write to json
|
|
||||||
CASE lr_attri->bind_type.
|
CASE lr_attri->bind_type.
|
||||||
WHEN z2ui5_if_core_types=>cs_bind_type-one_way
|
WHEN z2ui5_if_core_types=>cs_bind_type-one_way
|
||||||
OR z2ui5_if_core_types=>cs_bind_type-two_way.
|
OR z2ui5_if_core_types=>cs_bind_type-two_way.
|
||||||
|
@ -103,16 +97,18 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||||
ASSERT `` = `ERROR_UNKNOWN_BIND_MODE`.
|
ASSERT `` = `ERROR_UNKNOWN_BIND_MODE`.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
"(4) set compress mode
|
IF lr_attri->custom_mapper IS BOUND.
|
||||||
"todo performance - add and filter in a single loop
|
ajson = ajson->map( lr_attri->custom_mapper ).
|
||||||
|
ELSE.
|
||||||
|
ajson = ajson->map( z2ui5_cl_ajson_mapping=>create_upper_case( ) ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
IF lr_attri->custom_filter IS BOUND.
|
IF lr_attri->custom_filter IS BOUND.
|
||||||
ajson = ajson->filter( lr_attri->custom_filter ).
|
ajson = ajson->filter( lr_attri->custom_filter ).
|
||||||
ELSE.
|
ELSE.
|
||||||
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
"(5) write into result
|
|
||||||
"todo performance - write directly into result
|
|
||||||
ajson_result->set( iv_path = lr_attri->name_client iv_val = ajson ).
|
ajson_result->set( iv_path = lr_attri->name_client iv_val = ajson ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -130,14 +126,14 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lo_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>parse( val ) ).
|
DATA(lo_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>parse( val ) ).
|
||||||
|
|
||||||
data(lv_model_edit_name) = `/` && z2ui5_if_core_types=>cs_ui5-two_way_model.
|
DATA(lv_model_edit_name) = `/` && z2ui5_if_core_types=>cs_ui5-two_way_model.
|
||||||
|
|
||||||
result-o_model = z2ui5_cl_ajson=>create_empty( ).
|
result-o_model = z2ui5_cl_ajson=>create_empty( ).
|
||||||
DATA(lo_model) = lo_ajson->slice( lv_model_edit_name ).
|
DATA(lo_model) = lo_ajson->slice( lv_model_edit_name ).
|
||||||
result-o_model->set( iv_path = lv_model_edit_name iv_val = lo_model ).
|
result-o_model->set( iv_path = lv_model_edit_name iv_val = lo_model ).
|
||||||
lo_ajson->delete( lv_model_edit_name ).
|
lo_ajson->delete( lv_model_edit_name ).
|
||||||
|
|
||||||
lo_ajson = lo_ajson->slice( `/S_FRONT`).
|
lo_ajson = lo_ajson->slice( `/S_FRONT` ).
|
||||||
lo_ajson->to_abap(
|
lo_ajson->to_abap(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_corresponding = abap_true
|
iv_corresponding = abap_true
|
||||||
|
|
|
@ -44,5 +44,4 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -1,326 +0,0 @@
|
||||||
CLASS z2ui5_cl_core_model_srv DEFINITION
|
|
||||||
PUBLIC FINAL
|
|
||||||
CREATE PUBLIC.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA mo_app TYPE REF TO object.
|
|
||||||
|
|
||||||
METHODS constructor
|
|
||||||
IMPORTING
|
|
||||||
attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
|
||||||
app TYPE REF TO object.
|
|
||||||
|
|
||||||
METHODS attri_refs_update.
|
|
||||||
METHODS attri_before_save.
|
|
||||||
METHODS attri_after_load.
|
|
||||||
|
|
||||||
METHODS search_a_dissolve_attribute
|
|
||||||
IMPORTING
|
|
||||||
val TYPE REF TO data
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_if_core_types=>ty_s_attri.
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
|
||||||
|
|
||||||
METHODS dissolve.
|
|
||||||
METHODS dissolve_main.
|
|
||||||
METHODS dissolve_init.
|
|
||||||
|
|
||||||
METHODS attri_get_val_ref
|
|
||||||
IMPORTING
|
|
||||||
iv_path TYPE clike
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO data.
|
|
||||||
|
|
||||||
METHODS diss_struc
|
|
||||||
IMPORTING
|
|
||||||
ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
|
|
||||||
METHODS diss_dref
|
|
||||||
IMPORTING
|
|
||||||
ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
|
|
||||||
METHODS diss_oref
|
|
||||||
IMPORTING ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
|
||||||
RETURNING VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
|
|
||||||
METHODS search_attribute
|
|
||||||
IMPORTING
|
|
||||||
val TYPE REF TO data
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_if_core_types=>ty_s_attri.
|
|
||||||
|
|
||||||
METHODS get_new_attri
|
|
||||||
IMPORTING
|
|
||||||
name TYPE string
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_attri.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_core_model_srv IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD attri_after_load.
|
|
||||||
|
|
||||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
|
||||||
WHERE data_rtti IS NOT INITIAL
|
|
||||||
AND type_kind = cl_abap_classdescr=>typekind_dref.
|
|
||||||
|
|
||||||
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
|
|
||||||
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<val>).
|
|
||||||
|
|
||||||
z2ui5_cl_util=>xml_srtti_parse(
|
|
||||||
EXPORTING
|
|
||||||
rtti_data = lr_attri->data_rtti
|
|
||||||
IMPORTING
|
|
||||||
e_data = <val> ).
|
|
||||||
|
|
||||||
CLEAR lr_attri->data_rtti.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
attri_refs_update( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD attri_before_save.
|
|
||||||
|
|
||||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
|
|
||||||
|
|
||||||
IF lr_attri->bind_type = z2ui5_if_core_types=>cs_bind_type-one_time.
|
|
||||||
DELETE mt_attri->*.
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lr_attri->type_kind <> cl_abap_classdescr=>typekind_dref.
|
|
||||||
CLEAR lr_attri->r_ref.
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<val_ref>).
|
|
||||||
ASSIGN <val_ref>->* TO FIELD-SYMBOL(<val>).
|
|
||||||
|
|
||||||
lr_attri->data_rtti = z2ui5_cl_util=>xml_srtti_stringify( <val> ).
|
|
||||||
|
|
||||||
CLEAR <val>.
|
|
||||||
CLEAR <val_ref>.
|
|
||||||
CLEAR lr_attri->r_ref.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD search_a_dissolve_attribute.
|
|
||||||
|
|
||||||
result = search_attribute( val ).
|
|
||||||
IF result IS BOUND.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
DO 5 TIMES.
|
|
||||||
dissolve( ).
|
|
||||||
result = search_attribute( val ).
|
|
||||||
IF result IS BOUND.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
ENDDO.
|
|
||||||
|
|
||||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
||||||
EXPORTING
|
|
||||||
val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class or switch to bind_local`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD attri_get_val_ref.
|
|
||||||
|
|
||||||
ASSIGN mo_app->(iv_path) TO FIELD-SYMBOL(<attri>).
|
|
||||||
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
|
||||||
EXPORTING
|
|
||||||
val = `DEREF_FAILED_TARGET_INITIAL`.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
GET REFERENCE OF <attri> INTO result.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
ASSERT 1 = 0.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD attri_refs_update.
|
|
||||||
|
|
||||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
|
||||||
WHERE bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
|
|
||||||
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD constructor.
|
|
||||||
|
|
||||||
mt_attri = attri.
|
|
||||||
mo_app = app.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD dissolve.
|
|
||||||
|
|
||||||
IF mt_attri->* IS INITIAL.
|
|
||||||
dissolve_init( ).
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
dissolve_main( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD dissolve_init.
|
|
||||||
|
|
||||||
DATA(ls_attri) = VALUE z2ui5_if_core_types=>ty_s_attri( r_ref = REF #( mo_app ) ).
|
|
||||||
DATA(lt_init) = diss_oref( REF #( ls_attri ) ).
|
|
||||||
INSERT LINES OF lt_init INTO TABLE mt_attri->*.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD dissolve_main.
|
|
||||||
|
|
||||||
DATA(lt_attri_new) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
|
|
||||||
|
|
||||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
|
||||||
WHERE check_dissolved = abap_false.
|
|
||||||
|
|
||||||
lr_attri->check_dissolved = abap_true.
|
|
||||||
|
|
||||||
CASE lr_attri->type_kind.
|
|
||||||
|
|
||||||
WHEN cl_abap_typedescr=>typekind_struct1
|
|
||||||
OR cl_abap_typedescr=>typekind_struct2.
|
|
||||||
DATA(lt_attri_struc) = diss_struc( lr_attri ).
|
|
||||||
INSERT LINES OF lt_attri_struc INTO TABLE lt_attri_new.
|
|
||||||
|
|
||||||
WHEN cl_abap_typedescr=>typekind_oref.
|
|
||||||
DATA(lt_attri_oref) = diss_oref( lr_attri ).
|
|
||||||
INSERT LINES OF lt_attri_oref INTO TABLE lt_attri_new.
|
|
||||||
|
|
||||||
WHEN cl_abap_typedescr=>typekind_dref.
|
|
||||||
DATA(lt_attri_dref) = diss_dref( lr_attri ).
|
|
||||||
INSERT LINES OF lt_attri_dref INTO TABLE lt_attri_new.
|
|
||||||
|
|
||||||
WHEN OTHERS.
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
INSERT LINES OF lt_attri_new INTO TABLE mt_attri->*.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD diss_dref.
|
|
||||||
|
|
||||||
DATA(lr_ref) = z2ui5_cl_util=>unassign_data( ir_attri->r_ref ).
|
|
||||||
IF lr_ref IS INITIAL.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
DATA(ls_attri2) = VALUE z2ui5_if_core_types=>ty_s_attri( ).
|
|
||||||
ls_attri2-o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_ref ).
|
|
||||||
ls_attri2-type_kind = z2ui5_cl_util=>rtti_get_type_kind_by_descr( ls_attri2-o_typedescr ).
|
|
||||||
|
|
||||||
CASE ls_attri2-o_typedescr->type_kind.
|
|
||||||
|
|
||||||
WHEN cl_abap_datadescr=>typekind_struct1
|
|
||||||
OR cl_abap_datadescr=>typekind_struct2.
|
|
||||||
|
|
||||||
DATA(lt_attri) = diss_struc( ir_attri ).
|
|
||||||
INSERT LINES OF lt_attri INTO TABLE result.
|
|
||||||
|
|
||||||
WHEN OTHERS.
|
|
||||||
|
|
||||||
ls_attri2-name = ir_attri->name && `->*`.
|
|
||||||
ls_attri2-r_ref = attri_get_val_ref( ls_attri2-name ).
|
|
||||||
INSERT ls_attri2 INTO TABLE result.
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD diss_oref.
|
|
||||||
|
|
||||||
IF z2ui5_cl_util=>check_unassign_inital( ir_attri->r_ref ).
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
DATA(lv_name) = COND #( WHEN ir_attri->name IS NOT INITIAL THEN ir_attri->name && `->` ).
|
|
||||||
|
|
||||||
DATA(lr_ref) = z2ui5_cl_util=>unassign_object( ir_attri->r_ref ).
|
|
||||||
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_oref( lr_ref ).
|
|
||||||
|
|
||||||
LOOP AT lt_attri REFERENCE INTO DATA(lr_attri)
|
|
||||||
WHERE visibility = cl_abap_objectdescr=>public
|
|
||||||
AND is_interface = abap_false
|
|
||||||
AND is_constant = abap_false.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
DATA(ls_new) = get_new_attri( lv_name && lr_attri->name ).
|
|
||||||
INSERT ls_new INTO TABLE result.
|
|
||||||
|
|
||||||
CATCH cx_root.
|
|
||||||
ENDTRY.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD diss_struc.
|
|
||||||
|
|
||||||
|
|
||||||
IF ir_attri->type_kind = cl_abap_typedescr=>typekind_dref.
|
|
||||||
DATA(lv_name) = ir_attri->name && `->`.
|
|
||||||
DATA(lr_ref) = z2ui5_cl_util=>unassign_data( ir_attri->r_ref ).
|
|
||||||
ELSE.
|
|
||||||
lv_name = ir_attri->name && `-`.
|
|
||||||
lr_ref = ir_attri->r_ref.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( lr_ref ).
|
|
||||||
|
|
||||||
LOOP AT lt_attri INTO DATA(ls_attri).
|
|
||||||
DATA(ls_new) = get_new_attri( lv_name && ls_attri-name ).
|
|
||||||
INSERT ls_new INTO TABLE result.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD search_attribute.
|
|
||||||
|
|
||||||
* result = REF #( mt_attri->*[ r_ref = val ] OPTIONAL ).
|
|
||||||
|
|
||||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
|
||||||
WHERE type_kind <> cl_abap_typedescr=>typekind_dref
|
|
||||||
AND type_kind <> cl_abap_typedescr=>typekind_oref.
|
|
||||||
|
|
||||||
IF lr_attri->r_ref = val.
|
|
||||||
result = lr_attri.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD get_new_attri.
|
|
||||||
|
|
||||||
result = VALUE z2ui5_if_core_types=>ty_s_attri( ).
|
|
||||||
result-name = name.
|
|
||||||
result-r_ref = attri_get_val_ref( name ).
|
|
||||||
result-o_typedescr = cl_abap_datadescr=>describe_by_data_ref( result-r_ref ).
|
|
||||||
result-type_kind = z2ui5_cl_util=>rtti_get_type_kind_by_descr( result-o_typedescr ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
|
@ -1,257 +0,0 @@
|
||||||
|
|
||||||
CLASS ltcl_test_dissolve DEFINITION DEFERRED.
|
|
||||||
CLASS z2ui5_cl_core_model_srv DEFINITION LOCAL FRIENDS ltcl_test_dissolve.
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
|
|
||||||
DURATION SHORT
|
|
||||||
RISK LEVEL HARMLESS.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
TYPES:
|
|
||||||
BEGIN OF s_01,
|
|
||||||
input TYPE string,
|
|
||||||
BEGIN OF s_02,
|
|
||||||
input TYPE string,
|
|
||||||
BEGIN OF s_03,
|
|
||||||
input TYPE string,
|
|
||||||
BEGIN OF s_04,
|
|
||||||
input TYPE string,
|
|
||||||
END OF s_04,
|
|
||||||
END OF s_03,
|
|
||||||
END OF s_02,
|
|
||||||
END OF s_01.
|
|
||||||
|
|
||||||
DATA ms_struc TYPE s_01 ##NEEDED.
|
|
||||||
DATA mv_value TYPE string ##NEEDED.
|
|
||||||
DATA mr_value TYPE REF TO data.
|
|
||||||
DATA mr_struc TYPE REF TO s_01.
|
|
||||||
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.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS ltcl_test_dissolve IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD test_ref.
|
|
||||||
|
|
||||||
DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
|
||||||
|
|
||||||
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app ).
|
|
||||||
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
|
|
||||||
DATA(ls_attri) = lt_attri[ name = `MV_VALUE` ].
|
|
||||||
GET REFERENCE OF lo_app->mv_value INTO DATA(lr_ref).
|
|
||||||
|
|
||||||
IF ls_attri-r_ref <> lr_ref.
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD test_dissolve_init.
|
|
||||||
|
|
||||||
DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
|
||||||
|
|
||||||
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app ).
|
|
||||||
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
|
|
||||||
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_VALUE` ] OPTIONAL ) ).
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC` ] OPTIONAL ) ).
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MV_VALUE` ] OPTIONAL ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD test_dissolve_dref.
|
|
||||||
|
|
||||||
DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
|
||||||
CREATE DATA lo_app->mr_struc.
|
|
||||||
CREATE DATA lo_app->mr_value TYPE string.
|
|
||||||
|
|
||||||
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app ).
|
|
||||||
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MR_VALUE->*` ] OPTIONAL ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD test_dissolve_oref.
|
|
||||||
|
|
||||||
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->mo_app->mr_struc.
|
|
||||||
CREATE DATA lo_app->mo_app->mr_value TYPE string.
|
|
||||||
|
|
||||||
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app2 ).
|
|
||||||
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MV_VALUE` ] OPTIONAL ) ).
|
|
||||||
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_VALUE` ] OPTIONAL ) ).
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MS_STRUC` ] OPTIONAL ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD test_dissolve_struc.
|
|
||||||
|
|
||||||
DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
|
||||||
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app ).
|
|
||||||
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
lo_model->dissolve( ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-INPUT` ] OPTIONAL ) ).
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-S_02-INPUT` ] OPTIONAL ) ).
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MS_STRUC-S_02-S_03-S_04-INPUT` ] OPTIONAL ) ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
|
|
||||||
CLASS ltcl_test_app2 DEFINITION FINAL FOR TESTING
|
|
||||||
DURATION MEDIUM
|
|
||||||
RISK LEVEL HARMLESS.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
DATA mv_value TYPE string ##NEEDED.
|
|
||||||
DATA mr_value TYPE REF TO data.
|
|
||||||
DATA mr_value2 TYPE REF TO data.
|
|
||||||
DATA mo_app TYPE REF TO ltcl_test_app2.
|
|
||||||
|
|
||||||
DATA xx TYPE string ##NEEDED.
|
|
||||||
METHODS constructor.
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS ltcl_test_app2 IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD constructor.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS ltcl_test_search_attri DEFINITION FINAL FOR TESTING
|
|
||||||
DURATION SHORT
|
|
||||||
RISK LEVEL HARMLESS.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
|
||||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
|
||||||
METHODS second_test FOR TESTING RAISING cx_static_check.
|
|
||||||
METHODS third_test FOR TESTING RAISING cx_static_check.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_core_model_srv DEFINITION LOCAL FRIENDS ltcl_test_search_attri.
|
|
||||||
|
|
||||||
CLASS ltcl_test_search_attri IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD first_test.
|
|
||||||
|
|
||||||
DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
|
||||||
DATA lr_value TYPE REF TO data.
|
|
||||||
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
|
||||||
|
|
||||||
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = lr_value ) ).
|
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app_client ).
|
|
||||||
|
|
||||||
DATA(lr_attri) = lo_model->search_a_dissolve_attribute( REF #( lo_app_client->mv_value ) ).
|
|
||||||
|
|
||||||
IF lr_attri->r_ref <> lr_value.
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD second_test.
|
|
||||||
|
|
||||||
DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
|
||||||
DATA lr_value TYPE REF TO data.
|
|
||||||
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
|
||||||
|
|
||||||
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = REF #( lo_app_client->mv_value ) ) ).
|
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
|
||||||
attri = REF #( lt_attri )
|
|
||||||
app = lo_app_client ).
|
|
||||||
|
|
||||||
DATA(lr_attri) = lo_model->search_a_dissolve_attribute( REF #( lo_app_client->mv_value ) ).
|
|
||||||
|
|
||||||
IF lr_attri->r_ref <> lr_value.
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD third_test.
|
|
||||||
|
|
||||||
DATA(lo_app_client) = NEW ltcl_test_app2( ).
|
|
||||||
DATA lr_value TYPE REF TO data.
|
|
||||||
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
|
|
||||||
|
|
||||||
lo_app_client->mo_app = NEW #( ).
|
|
||||||
|
|
||||||
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri(
|
|
||||||
( name = `1` r_ref = REF #( lo_app_client->mr_value ) )
|
|
||||||
( name = `4` r_ref = REF #( lo_app_client->mr_value2 ) )
|
|
||||||
( name = `2` r_ref = REF #( lo_app_client->mo_app ) )
|
|
||||||
( name = `3` r_ref = REF #( lo_app_client->mv_value ) )
|
|
||||||
).
|
|
||||||
|
|
||||||
DATA(lr_attri) = REF #( lt_attri[ r_ref = lr_value ] ).
|
|
||||||
IF lr_attri->r_ref <> lr_value.
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
|
@ -42,11 +42,13 @@ CLASS z2ui5_cl_core_action DEFINITION
|
||||||
val TYPE REF TO z2ui5_cl_core_http_post.
|
val TYPE REF TO z2ui5_cl_core_http_post.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
METHODS prepare_app_stack
|
METHODS prepare_app_stack
|
||||||
IMPORTING
|
IMPORTING
|
||||||
val TYPE z2ui5_if_core_types=>ty_s_next-o_app_leave
|
val TYPE z2ui5_if_core_types=>ty_s_next-o_app_leave
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||||
RISK LEVEL HARMLESS.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS
|
||||||
first_test FOR TESTING RAISING cx_static_check.
|
first_test FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -68,7 +68,7 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
attri = REF #( mt_attri )
|
attri = REF #( mt_attri )
|
||||||
app = mo_app ).
|
app = mo_app ).
|
||||||
lo_model->attri_before_save( ).
|
lo_model->attri_before_save( ).
|
||||||
|
@ -92,7 +92,7 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
|
||||||
DATA(ls_db) = lo_db->read_draft( id ).
|
DATA(ls_db) = lo_db->read_draft( id ).
|
||||||
result = all_xml_parse( ls_db-data ).
|
result = all_xml_parse( ls_db-data ).
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
attri = REF #( result->mt_attri )
|
attri = REF #( result->mt_attri )
|
||||||
app = result->mo_app ).
|
app = result->mo_app ).
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
|
||||||
|
|
||||||
result->mo_app = app.
|
result->mo_app = app.
|
||||||
|
|
||||||
DATA(lo_model) = NEW z2ui5_cl_core_model_srv(
|
DATA(lo_model) = NEW z2ui5_cl_core_attri_srv(
|
||||||
attri = REF #( result->mt_attri )
|
attri = REF #( result->mt_attri )
|
||||||
app = result->mo_app ).
|
app = result->mo_app ).
|
||||||
|
|
||||||
|
@ -135,7 +135,7 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
|
||||||
METHOD model_json_parse.
|
METHOD model_json_parse.
|
||||||
|
|
||||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||||
lo_json_mapper->model_client_to_server(
|
lo_json_mapper->model_front_to_back(
|
||||||
view = iv_view
|
view = iv_view
|
||||||
t_attri = REF #( mt_attri )
|
t_attri = REF #( mt_attri )
|
||||||
model = io_model ).
|
model = io_model ).
|
||||||
|
@ -146,7 +146,7 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
|
||||||
METHOD model_json_stringify.
|
METHOD model_json_stringify.
|
||||||
|
|
||||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||||
result = lo_json_mapper->model_server_to_client( mt_attri ).
|
result = lo_json_mapper->model_back_to_front( mt_attri ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||||
RISK LEVEL HARMLESS.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS
|
||||||
first_test FOR TESTING RAISING cx_static_check.
|
first_test FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -31,10 +31,9 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD z2ui5_if_client~clear.
|
METHOD z2ui5_if_client~clear.
|
||||||
|
|
||||||
CASE val.
|
IF val = z2ui5_if_client=>cs_clear-view.
|
||||||
WHEN z2ui5_if_client=>cs_clear-view.
|
|
||||||
CLEAR mo_action->ms_next-s_set-s_view.
|
CLEAR mo_action->ms_next-s_set-s_view.
|
||||||
ENDCASE.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -47,8 +46,7 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
t_event_arg = mo_action->ms_actual-t_event_arg
|
t_event_arg = mo_action->ms_actual-t_event_arg
|
||||||
s_draft = CORRESPONDING #( mo_action->mo_app->ms_draft )
|
s_draft = CORRESPONDING #( mo_action->mo_app->ms_draft )
|
||||||
check_on_navigated = mo_action->ms_actual-check_on_navigated
|
check_on_navigated = mo_action->ms_actual-check_on_navigated
|
||||||
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front )
|
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front ) ).
|
||||||
).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
CLASS ltcl_test_client DEFINITION FINAL FOR TESTING
|
CLASS ltcl_test_client DEFINITION FINAL FOR TESTING
|
||||||
DURATION LONG
|
DURATION LONG
|
||||||
RISK LEVEL harmless.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||||
|
|
|
@ -4,7 +4,7 @@ CLASS ltcl_test_handler_post DEFINITION FINAL FOR TESTING
|
||||||
RISK LEVEL HARMLESS.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS
|
||||||
load_startup_app FOR TESTING RAISING cx_static_check.
|
load_startup_app FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -31,9 +31,8 @@ INTERFACE z2ui5_if_core_types
|
||||||
BEGIN OF ty_s_attri,
|
BEGIN OF ty_s_attri,
|
||||||
name TYPE string,
|
name TYPE string,
|
||||||
name_client TYPE string,
|
name_client TYPE string,
|
||||||
type_kind TYPE string,
|
|
||||||
bind_type TYPE string,
|
bind_type TYPE string,
|
||||||
data_rtti TYPE string,
|
srtti_data TYPE string,
|
||||||
check_dissolved TYPE abap_bool,
|
check_dissolved TYPE abap_bool,
|
||||||
view TYPE string,
|
view TYPE string,
|
||||||
json_bind_local TYPE REF TO z2ui5_if_ajson,
|
json_bind_local TYPE REF TO z2ui5_if_ajson,
|
||||||
|
@ -42,7 +41,7 @@ INTERFACE z2ui5_if_core_types
|
||||||
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping,
|
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping,
|
||||||
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping,
|
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping,
|
||||||
r_ref TYPE REF TO data,
|
r_ref TYPE REF TO data,
|
||||||
o_typedescr type ref to cl_abap_typedescr,
|
o_typedescr TYPE REF TO cl_abap_typedescr,
|
||||||
END OF ty_s_attri.
|
END OF ty_s_attri.
|
||||||
TYPES ty_t_attri TYPE SORTED TABLE OF ty_s_attri WITH UNIQUE KEY name.
|
TYPES ty_t_attri TYPE SORTED TABLE OF ty_s_attri WITH UNIQUE KEY name.
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,7 @@ CLASS z2ui5_cl_core_app_info IMPLEMENTATION.
|
||||||
)->dialog(
|
)->dialog(
|
||||||
stretch = abap_true
|
stretch = abap_true
|
||||||
title = `abap2UI5 - System Information`
|
title = `abap2UI5 - System Information`
|
||||||
afterclose = client->_event( `CLOSE` )
|
afterclose = client->_event( `CLOSE` ) ).
|
||||||
).
|
|
||||||
|
|
||||||
* page2->header_content( )->text( )->title( `abap2UI5 - System Information` )->toolbar_spacer( ).
|
* page2->header_content( )->text( )->title( `abap2UI5 - System Information` )->toolbar_spacer( ).
|
||||||
|
|
||||||
|
@ -79,7 +78,7 @@ CLASS z2ui5_cl_core_app_info IMPLEMENTATION.
|
||||||
|
|
||||||
simple_form2->toolbar( )->title( `Frontend` ).
|
simple_form2->toolbar( )->title( `Frontend` ).
|
||||||
|
|
||||||
simple_form2->label( `UI5 Version`).
|
simple_form2->label( `UI5 Version` ).
|
||||||
simple_form2->text( client->_bind( mv_ui5_version ) ).
|
simple_form2->text( client->_bind( mv_ui5_version ) ).
|
||||||
simple_form2->label( `Launchpad active` ).
|
simple_form2->label( `Launchpad active` ).
|
||||||
simple_form2->checkbox( enabled = abap_false selected = client->get( )-check_launchpad_active ).
|
simple_form2->checkbox( enabled = abap_false selected = client->get( )-check_launchpad_active ).
|
||||||
|
@ -97,7 +96,7 @@ CLASS z2ui5_cl_core_app_info IMPLEMENTATION.
|
||||||
simple_form2->label( `ABAP for Cloud` ).
|
simple_form2->label( `ABAP for Cloud` ).
|
||||||
simple_form2->checkbox( enabled = abap_false selected = z2ui5_cl_util=>rtti_check_lang_version_cloud( ) ).
|
simple_form2->checkbox( enabled = abap_false selected = z2ui5_cl_util=>rtti_check_lang_version_cloud( ) ).
|
||||||
|
|
||||||
DATA(lv_count) = CONV string( NEW z2ui5_cl_core_draft_srv( )->count( ) ).
|
DATA(lv_count) = CONV string( NEW z2ui5_cl_core_draft_srv( )->count_entries( ) ).
|
||||||
simple_form2->toolbar( )->title( `abap2UI5` ).
|
simple_form2->toolbar( )->title( `abap2UI5` ).
|
||||||
simple_form2->label( `Version ` ).
|
simple_form2->label( `Version ` ).
|
||||||
simple_form2->text( z2ui5_if_app=>version ).
|
simple_form2->text( z2ui5_if_app=>version ).
|
||||||
|
@ -146,6 +145,7 @@ CLASS z2ui5_cl_core_app_info IMPLEMENTATION.
|
||||||
client->popup_destroy( ).
|
client->popup_destroy( ).
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -155,7 +155,7 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
|
||||||
|
|
||||||
simple_form2->toolbar( )->title( `What's next?` ).
|
simple_form2->toolbar( )->title( `What's next?` ).
|
||||||
|
|
||||||
IF z2ui5_cl_util=>rtti_check_class_exists( `z2ui5_cl_demo_app_000`).
|
IF z2ui5_cl_util=>rtti_check_class_exists( `z2ui5_cl_demo_app_000` ).
|
||||||
simple_form2->label( `Start Developing` ).
|
simple_form2->label( `Start Developing` ).
|
||||||
simple_form2->button(
|
simple_form2->button(
|
||||||
text = `Check out the samples`
|
text = `Check out the samples`
|
||||||
|
|
|
@ -10,7 +10,7 @@ CLASS z2ui5_cl_fw_cc_scrolling DEFINITION
|
||||||
id TYPE string,
|
id TYPE string,
|
||||||
scrollto TYPE string,
|
scrollto TYPE string,
|
||||||
END OF ty_s_item.
|
END OF ty_s_item.
|
||||||
TYPES ty_t_item TYPE STANDARD TABLE OF ty_s_item WITH DEFAULT KEY ##NEEDED.
|
TYPES ty_t_item TYPE STANDARD TABLE OF ty_s_item WITH EMPTY KEY ##NEEDED.
|
||||||
|
|
||||||
CLASS-METHODS get_js
|
CLASS-METHODS get_js
|
||||||
RETURNING
|
RETURNING
|
||||||
|
|
|
@ -25,7 +25,8 @@ CLASS z2ui5_cl_fw_cc_util IMPLEMENTATION.
|
||||||
` DateCreateObject: (s) => new Date(s),` && |\n| &&
|
` DateCreateObject: (s) => new Date(s),` && |\n| &&
|
||||||
` DateAbapTimestampToDate: (sTimestamp) => new sap.gantt.misc.Format.abapTimestampToDate(sTimestamp),` && |\n| &&
|
` DateAbapTimestampToDate: (sTimestamp) => new sap.gantt.misc.Format.abapTimestampToDate(sTimestamp),` && |\n| &&
|
||||||
` DateAbapDateToDateObject: (d) => new Date(d.slice(0, 4), parseInt(d.slice(4, 6)) - 1, d.slice(6, 8)),` && |\n| &&
|
` DateAbapDateToDateObject: (d) => new Date(d.slice(0, 4), parseInt(d.slice(4, 6)) - 1, d.slice(6, 8)),` && |\n| &&
|
||||||
` DateAbapDateTimeToDateObject: (d, t = '000000') => new Date(d.slice(0, 4), parseInt(d.slice(4, 6)) - 1, d.slice(6, 8), t.slice(0, 2), t.slice(2, 4), t.slice(4, 6)),` && |\n| &&
|
` DateAbapDateTimeToDateObject: (d, t = '000000') => new Date(d.slice(0, 4), ` && |\n| &&
|
||||||
|
` parseInt(d.slice(4, 6)) - 1, d.slice(6, 8), t.slice(0, 2), t.slice(2, 4), t.slice(4, 6)),` && |\n| &&
|
||||||
` };` && |\n| &&
|
` };` && |\n| &&
|
||||||
` });`.
|
` });`.
|
||||||
|
|
||||||
|
|
|
@ -16,8 +16,8 @@ CLASS z2ui5_cl_cc_chartjs DEFINITION
|
||||||
r TYPE string,
|
r TYPE string,
|
||||||
END OF ty_x_y_r_data.
|
END OF ty_x_y_r_data.
|
||||||
|
|
||||||
TYPES ty_x_y_r_data_t TYPE STANDARD TABLE OF ty_x_y_r_data WITH DEFAULT KEY.
|
TYPES ty_x_y_r_data_t TYPE STANDARD TABLE OF ty_x_y_r_data WITH EMPTY KEY.
|
||||||
TYPES ty_bg_color TYPE STANDARD TABLE OF string WITH DEFAULT KEY.
|
TYPES ty_bg_color TYPE STANDARD TABLE OF string WITH EMPTY KEY.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_padding,
|
BEGIN OF ty_padding,
|
||||||
|
@ -82,7 +82,7 @@ CLASS z2ui5_cl_cc_chartjs DEFINITION
|
||||||
values TYPE string_table,
|
values TYPE string_table,
|
||||||
END OF ty_data_venn .
|
END OF ty_data_venn .
|
||||||
|
|
||||||
TYPES ty_data_venn_t TYPE STANDARD TABLE OF ty_data_venn WITH DEFAULT KEY.
|
TYPES ty_data_venn_t TYPE STANDARD TABLE OF ty_data_venn WITH EMPTY KEY.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_dataset,
|
BEGIN OF ty_dataset,
|
||||||
|
@ -111,7 +111,7 @@ CLASS z2ui5_cl_cc_chartjs DEFINITION
|
||||||
tension TYPE string,
|
tension TYPE string,
|
||||||
END OF ty_dataset.
|
END OF ty_dataset.
|
||||||
|
|
||||||
TYPES ty_datasets TYPE STANDARD TABLE OF ty_dataset WITH DEFAULT KEY.
|
TYPES ty_datasets TYPE STANDARD TABLE OF ty_dataset WITH EMPTY KEY.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_data,
|
BEGIN OF ty_data,
|
||||||
|
@ -612,7 +612,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
|
CLASS z2ui5_cl_cc_chartjs IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_chartjs_local.
|
METHOD get_chartjs_local.
|
||||||
|
@ -846,7 +846,7 @@ CLASS Z2UI5_CL_CC_CHARTJS IMPLEMENTATION.
|
||||||
rv_keep = abap_false.
|
rv_keep = abap_false.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-number.
|
WHEN z2ui5_if_ajson_types=>node_type-number.
|
||||||
IF is_node-value = `0` or is_node-value = `0.00`.
|
IF is_node-value = `0` OR is_node-value = `0.00`.
|
||||||
rv_keep = abap_false.
|
rv_keep = abap_false.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-string.
|
WHEN z2ui5_if_ajson_types=>node_type-string.
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
on_highlighted TYPE string,
|
on_highlighted TYPE string,
|
||||||
END OF ty_config_steps.
|
END OF ty_config_steps.
|
||||||
|
|
||||||
TYPES ty_config_steps_tt TYPE STANDARD TABLE OF ty_config_steps WITH DEFAULT KEY.
|
TYPES ty_config_steps_tt TYPE STANDARD TABLE OF ty_config_steps WITH EMPTY KEY.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_config,
|
BEGIN OF ty_config,
|
||||||
|
|
|
@ -80,7 +80,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_CC_IMAGEMAPSTER IMPLEMENTATION.
|
CLASS z2ui5_cl_cc_imagemapster IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_js_local.
|
METHOD get_js_local.
|
||||||
|
@ -3302,7 +3302,7 @@ CLASS Z2UI5_CL_CC_IMAGEMAPSTER IMPLEMENTATION.
|
||||||
TRY.
|
TRY.
|
||||||
DATA(li_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
DATA(li_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
||||||
li_ajson->set( iv_path = `/` iv_val = is_config ).
|
li_ajson->set( iv_path = `/` iv_val = is_config ).
|
||||||
li_ajson = li_ajson->filter( NEW Z2UI5_CL_CC_IMAGEMAPSTER( ) ).
|
li_ajson = li_ajson->filter( NEW z2ui5_cl_cc_imagemapster( ) ).
|
||||||
* li_ajson = li_ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
* li_ajson = li_ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||||
li_ajson = li_ajson->map( z2ui5_cl_ajson_mapping=>create_to_camel_case( ) ).
|
li_ajson = li_ajson->map( z2ui5_cl_ajson_mapping=>create_to_camel_case( ) ).
|
||||||
* li_ajson = li_ajson->map( z2ui5_cl_ajson_mapping=>create_lower_case( ) ).
|
* li_ajson = li_ajson->map( z2ui5_cl_ajson_mapping=>create_lower_case( ) ).
|
||||||
|
|
|
@ -16,7 +16,7 @@ CLASS z2ui5_cl_cc_messaging DEFINITION
|
||||||
descriptionurl TYPE string,
|
descriptionurl TYPE string,
|
||||||
persistent TYPE string,
|
persistent TYPE string,
|
||||||
END OF ty_s_item .
|
END OF ty_s_item .
|
||||||
TYPES ty_t_items TYPE STANDARD TABLE OF ty_s_item WITH DEFAULT KEY ##NEEDED.
|
TYPES ty_t_items TYPE STANDARD TABLE OF ty_s_item WITH EMPTY KEY ##NEEDED.
|
||||||
|
|
||||||
CLASS-METHODS get_js
|
CLASS-METHODS get_js
|
||||||
RETURNING
|
RETURNING
|
||||||
|
@ -27,7 +27,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_CC_MESSAGING IMPLEMENTATION.
|
CLASS z2ui5_cl_cc_messaging IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD get_js.
|
METHOD get_js.
|
||||||
|
|
|
@ -27,6 +27,7 @@ CLASS z2ui5_cl_test_app_hello_world IMPLEMENTATION.
|
||||||
CASE client->get( )-event.
|
CASE client->get( )-event.
|
||||||
WHEN 'BUTTON_POST'.
|
WHEN 'BUTTON_POST'.
|
||||||
client->message_toast_display( |{ product } { quantity } - send to the server| ).
|
client->message_toast_display( |{ product } { quantity } - send to the server| ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
client->view_display( z2ui5_cl_ui5=>_factory( )->_ns_m(
|
client->view_display( z2ui5_cl_ui5=>_factory( )->_ns_m(
|
||||||
|
|
|
@ -3,7 +3,7 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||||
RISK LEVEL HARMLESS.
|
RISK LEVEL HARMLESS.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
METHODS:
|
METHODS
|
||||||
first_test FOR TESTING RAISING cx_static_check.
|
first_test FOR TESTING RAISING cx_static_check.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
|
@ -1516,8 +1516,8 @@ CLASS z2ui5_cl_xml_view DEFINITION
|
||||||
!selectionbehavior TYPE clike DEFAULT 'RowSelector'
|
!selectionbehavior TYPE clike DEFAULT 'RowSelector'
|
||||||
!selectedindex TYPE clike OPTIONAL
|
!selectedindex TYPE clike OPTIONAL
|
||||||
!id TYPE clike OPTIONAL
|
!id TYPE clike OPTIONAL
|
||||||
!VISIBLEROWCOUNT type CLIKE optional
|
!visiblerowcount TYPE clike OPTIONAL
|
||||||
!VISIBLEROWCOUNTMODE type CLIKE optional
|
!visiblerowcountmode TYPE clike OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
|
VALUE(result) TYPE REF TO z2ui5_cl_xml_view .
|
||||||
METHODS tree_columns
|
METHODS tree_columns
|
||||||
|
@ -3404,7 +3404,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
CLASS z2ui5_cl_xml_view IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD actions.
|
METHOD actions.
|
||||||
|
@ -4132,20 +4132,20 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
||||||
( n = `icon` v = icon )
|
( n = `icon` v = icon )
|
||||||
( n = `stretch` v = stretch )
|
( n = `stretch` v = stretch )
|
||||||
( n = `state` v = state )
|
( n = `state` v = state )
|
||||||
( n = `titleAlignment` v = titleAlignment )
|
( n = `titleAlignment` v = titlealignment )
|
||||||
( n = `type` v = type )
|
( n = `type` v = type )
|
||||||
( n = `showHeader` v = showheader )
|
( n = `showHeader` v = showheader )
|
||||||
( n = `contentWidth` v = contentwidth )
|
( n = `contentWidth` v = contentwidth )
|
||||||
( n = `contentHeight` v = contentheight )
|
( n = `contentHeight` v = contentheight )
|
||||||
( n = `escapeHandler` v = escapeHandler )
|
( n = `escapeHandler` v = escapehandler )
|
||||||
( n = `closeOnNavigation` v = z2ui5_cl_util=>boolean_abap_2_json( closeonnavigation ) )
|
( n = `closeOnNavigation` v = z2ui5_cl_util=>boolean_abap_2_json( closeonnavigation ) )
|
||||||
( n = `draggable` v = z2ui5_cl_util=>boolean_abap_2_json( draggable ) )
|
( n = `draggable` v = z2ui5_cl_util=>boolean_abap_2_json( draggable ) )
|
||||||
( n = `resizable` v = z2ui5_cl_util=>boolean_abap_2_json( resizable ) )
|
( n = `resizable` v = z2ui5_cl_util=>boolean_abap_2_json( resizable ) )
|
||||||
( n = `horizontalScrolling` v = z2ui5_cl_util=>boolean_abap_2_json( horizontalscrolling ) )
|
( n = `horizontalScrolling` v = z2ui5_cl_util=>boolean_abap_2_json( horizontalscrolling ) )
|
||||||
( n = `verticalScrolling` v = z2ui5_cl_util=>boolean_abap_2_json( verticalscrolling ) )
|
( n = `verticalScrolling` v = z2ui5_cl_util=>boolean_abap_2_json( verticalscrolling ) )
|
||||||
( n = `afterOpen` v = afterOpen )
|
( n = `afterOpen` v = afteropen )
|
||||||
( n = `beforeClose` v = beforeClose )
|
( n = `beforeClose` v = beforeclose )
|
||||||
( n = `beforeOpen` v = beforeOpen )
|
( n = `beforeOpen` v = beforeopen )
|
||||||
( n = `afterClose` v = afterclose ) ) ).
|
( n = `afterClose` v = afterclose ) ) ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -7237,8 +7237,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
||||||
( n = `selectionBehavior` v = selectionbehavior )
|
( n = `selectionBehavior` v = selectionbehavior )
|
||||||
( n = `id` v = id )
|
( n = `id` v = id )
|
||||||
( n = `selectedIndex` v = selectedindex )
|
( n = `selectedIndex` v = selectedindex )
|
||||||
( n = `visibleRowCount` v = visibleRowCount )
|
( n = `visibleRowCount` v = visiblerowcount )
|
||||||
( n = `visibleRowCountMode` v = visibleRowCountMode ) ) ).
|
( n = `visibleRowCountMode` v = visiblerowcountmode ) ) ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -7608,13 +7608,11 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
||||||
WHEN `ZZPLAIN`.
|
WHEN `ZZPLAIN`.
|
||||||
result = mt_prop[ n = `VALUE` ]-v.
|
result = mt_prop[ n = `VALUE` ]-v.
|
||||||
RETURN.
|
RETURN.
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
IF me = mo_root.
|
IF me = mo_root.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
lt_prop = VALUE #(
|
lt_prop = VALUE #(
|
||||||
( n = `xmlns:z2ui5` v = `z2ui5` )
|
( n = `xmlns:z2ui5` v = `z2ui5` )
|
||||||
( n = `xmlns:layout` v = `sap.ui.layout` )
|
( n = `xmlns:layout` v = `sap.ui.layout` )
|
||||||
|
|
|
@ -56,13 +56,13 @@ CLASS z2ui5_cl_ui5 DEFINITION
|
||||||
RETURNING VALUE(result) TYPE REF TO z2ui5_cl_ui5_ui_webc.
|
RETURNING VALUE(result) TYPE REF TO z2ui5_cl_ui5_ui_webc.
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
IMPORTING node TYPE REF TO z2ui5_cl_UI5_tree_xml OPTIONAL.
|
IMPORTING node TYPE REF TO z2ui5_cl_ui5_tree_xml OPTIONAL.
|
||||||
|
|
||||||
METHODS _stringify
|
METHODS _stringify
|
||||||
RETURNING VALUE(result) TYPE string.
|
RETURNING VALUE(result) TYPE string.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
DATA _node TYPE REF TO z2ui5_cl_UI5_tree_xml.
|
DATA _node TYPE REF TO z2ui5_cl_ui5_tree_xml.
|
||||||
|
|
||||||
CLASS-METHODS _2xml
|
CLASS-METHODS _2xml
|
||||||
IMPORTING obj TYPE REF TO z2ui5_cl_ui5
|
IMPORTING obj TYPE REF TO z2ui5_cl_ui5
|
||||||
|
@ -192,7 +192,7 @@ CLASS z2ui5_cl_ui5 IMPLEMENTATION.
|
||||||
CATCH cx_root.
|
CATCH cx_root.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
DATA(lo_node) = NEW z2ui5_cl_UI5_tree_xml( ).
|
DATA(lo_node) = NEW z2ui5_cl_ui5_tree_xml( ).
|
||||||
DATA(result2) = NEW z2ui5_cl_ui5( lo_node ).
|
DATA(result2) = NEW z2ui5_cl_ui5( lo_node ).
|
||||||
result2->_node->mv_name = n.
|
result2->_node->mv_name = n.
|
||||||
result2->_node->mv_ns = ns.
|
result2->_node->mv_ns = ns.
|
||||||
|
|
|
@ -41,6 +41,7 @@ CLASS z2ui5_cl_app_hello_world IMPLEMENTATION.
|
||||||
CASE client->get( )-event.
|
CASE client->get( )-event.
|
||||||
WHEN 'BUTTON_POST'.
|
WHEN 'BUTTON_POST'.
|
||||||
client->message_toast_display( |Your name is { name }| ).
|
client->message_toast_display( |Your name is { name }| ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -44,66 +44,9 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
CLASS Z2UI5_CL_APP_SEARCH_APPS IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_app~main.
|
|
||||||
|
|
||||||
me->client = client.
|
|
||||||
|
|
||||||
IF check_initialized = abap_false.
|
|
||||||
check_initialized = abap_true.
|
|
||||||
|
|
||||||
z2ui5_cl_util=>db_load_by_handle(
|
|
||||||
EXPORTING
|
|
||||||
uname = sy-uname
|
|
||||||
handle = 'z2ui5_cl_app_search_apps'
|
|
||||||
IMPORTING
|
|
||||||
result = mt_favs ).
|
|
||||||
|
|
||||||
mt_apps = VALUE #( FOR row IN z2ui5_cl_util=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
|
|
||||||
( name = row ) ).
|
|
||||||
search( ).
|
|
||||||
view_display( client ).
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF client->get( )-check_on_navigated = abap_true.
|
|
||||||
view_display( client ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CASE client->get( )-event.
|
|
||||||
|
|
||||||
WHEN `ON_PRESS`.
|
|
||||||
|
|
||||||
DATA(lt_arg) = client->get( )-t_event_arg.
|
|
||||||
DATA(lv_app) = lt_arg[ 1 ].
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INSERT VALUE #( name = lv_app ) INTO TABLE mt_favs.
|
|
||||||
|
|
||||||
|
|
||||||
z2ui5_cl_util=>db_save(
|
|
||||||
uname = sy-uname
|
|
||||||
handle = 'z2ui5_cl_app_search_apps'
|
|
||||||
data = mt_favs ).
|
|
||||||
|
|
||||||
view_action_sheet( lv_app ).
|
|
||||||
|
|
||||||
view_nest_display( client ).
|
|
||||||
|
|
||||||
WHEN 'BACK'.
|
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
|
||||||
|
|
||||||
WHEN 'ON_SEARCH'.
|
|
||||||
search( ).
|
|
||||||
client->view_model_update( ).
|
|
||||||
client->message_toast_display( |backend search done| ).
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD search.
|
METHOD search.
|
||||||
|
|
||||||
|
|
||||||
|
@ -121,6 +64,39 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD view_action_sheet.
|
||||||
|
|
||||||
|
DATA(action_sheet_view) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
|
|
||||||
|
action_sheet_view->_generic_property( VALUE #( n = `core:require` v = `{ MessageToast: 'sap/m/MessageToast' }` ) ).
|
||||||
|
|
||||||
|
action_sheet_view->action_sheet( placement = `Botton`
|
||||||
|
showcancelbutton = abap_true
|
||||||
|
title = `Choose Your Action`
|
||||||
|
)->button( text = `Accept`
|
||||||
|
icon = `sap-icon://accept`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
||||||
|
)->button( text = `Reject`
|
||||||
|
icon = `sap-icon://decline`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
||||||
|
)->button( text = `Email`
|
||||||
|
icon = `sap-icon://email`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
||||||
|
)->button( text = `Forward`
|
||||||
|
icon = `sap-icon://forward`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
||||||
|
)->button( text = `Delete`
|
||||||
|
icon = `sap-icon://delete`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
||||||
|
)->button( text = `Other`
|
||||||
|
press = `MessageToast.show('selected action is ' + ${$source>/text})` ).
|
||||||
|
|
||||||
|
client->popover_display( xml = action_sheet_view->stringify( )
|
||||||
|
by_id = val ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD view_display.
|
METHOD view_display.
|
||||||
|
|
||||||
|
|
||||||
|
@ -151,8 +127,12 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(pages) = page->icon_tab_header( selectedkey = client->_bind_edit( mv_selected_key )
|
DATA(pages) = page->icon_tab_header( selectedkey = client->_bind_edit( mv_selected_key )
|
||||||
* select = client->_event( `OnSelectIconTabBar` )
|
* select = client->_event( `OnSelectIconTabBar` )
|
||||||
* select = client->_event_client( action = 'NAV_TO' t_arg = value #( ( `NavCon` ) ( `${$parameters}` ) ) )
|
* select = client->_event_client(
|
||||||
select = client->_event_client( val = client->cs_event-nav_container_to t_arg = VALUE #( ( `NavCon` ) ( `${$parameters>/selectedKey}` ) ) )
|
* action = 'NAV_TO'
|
||||||
|
* t_arg = value #( ( `NavCon` ) ( `${$parameters}` ) ) )
|
||||||
|
select = client->_event_client(
|
||||||
|
val = client->cs_event-nav_container_to
|
||||||
|
t_arg = VALUE #( ( `NavCon` ) ( `${$parameters>/selectedKey}` ) ) )
|
||||||
mode = `Inline`
|
mode = `Inline`
|
||||||
)->items(
|
)->items(
|
||||||
)->icon_tab_filter( key = `page_favs`
|
)->icon_tab_filter( key = `page_favs`
|
||||||
|
@ -286,52 +266,16 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
|
|
||||||
row->checkbox( text = `Installed`
|
row->checkbox( text = `Installed`
|
||||||
selected = `{CHECK_INSTALLED}`
|
selected = `{CHECK_INSTALLED}`
|
||||||
enabled = abap_false
|
enabled = abap_false ).
|
||||||
).
|
|
||||||
row->checkbox( text = `Standard ABAP (Min. {MIN_RELEASE})`
|
row->checkbox( text = `Standard ABAP (Min. {MIN_RELEASE})`
|
||||||
selected = `{CHECK_STANDARD_ABAP}`
|
selected = `{CHECK_STANDARD_ABAP}`
|
||||||
enabled = abap_false
|
enabled = abap_false ).
|
||||||
).
|
|
||||||
row->text( `{DESCR}` ).
|
row->text( `{DESCR}` ).
|
||||||
|
|
||||||
* page_online
|
|
||||||
|
|
||||||
|
|
||||||
client->view_display( page->stringify( ) ).
|
client->view_display( page->stringify( ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD view_action_sheet.
|
|
||||||
|
|
||||||
DATA(action_sheet_view) = z2ui5_cl_xml_view=>factory_popup( ).
|
|
||||||
|
|
||||||
action_sheet_view->_generic_property( VALUE #( n = `core:require` v = `{ MessageToast: 'sap/m/MessageToast' }` ) ).
|
|
||||||
|
|
||||||
action_sheet_view->action_sheet( placement = `Botton`
|
|
||||||
showcancelbutton = abap_true
|
|
||||||
title = `Choose Your Action`
|
|
||||||
)->button( text = `Accept`
|
|
||||||
icon = `sap-icon://accept`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
|
||||||
)->button( text = `Reject`
|
|
||||||
icon = `sap-icon://decline`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
|
||||||
)->button( text = `Email`
|
|
||||||
icon = `sap-icon://email`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
|
||||||
)->button( text = `Forward`
|
|
||||||
icon = `sap-icon://forward`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
|
||||||
)->button( text = `Delete`
|
|
||||||
icon = `sap-icon://delete`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})`
|
|
||||||
)->button( text = `Other`
|
|
||||||
press = `MessageToast.show('selected action is ' + ${$source>/text})` ).
|
|
||||||
|
|
||||||
client->popover_display( xml = action_sheet_view->stringify( )
|
|
||||||
by_id = val ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD view_nest_display.
|
METHOD view_nest_display.
|
||||||
|
|
||||||
|
@ -344,7 +288,7 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
* page_favs->generic_tile(
|
* page_favs->generic_tile(
|
||||||
class = 'sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout'
|
class = 'sapUiTinyMarginBegin sapUiTinyMarginTop tileLayout'
|
||||||
press = client->_event( val = `ON_PRESS` t_arg = VALUE #( ( `${$source>/header}` ) ) )
|
press = client->_event( val = `ON_PRESS` t_arg = VALUE #( ( `${$source>/header}` ) ) )
|
||||||
header = client->_bind( val = lr_app->name tab = ref #( mt_favs ) tab_index = lv_tabix ) ).
|
header = client->_bind( val = lr_app->name tab = REF #( mt_favs ) tab_index = lv_tabix ) ).
|
||||||
* visible = client->_bind( val = lr_app->check_fav tab = mt_apps tab_index = lv_tabix ) ).
|
* visible = client->_bind( val = lr_app->check_fav tab = mt_apps tab_index = lv_tabix ) ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -354,4 +298,61 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_if_app~main.
|
||||||
|
|
||||||
|
me->client = client.
|
||||||
|
|
||||||
|
IF check_initialized = abap_false.
|
||||||
|
check_initialized = abap_true.
|
||||||
|
|
||||||
|
z2ui5_cl_util=>db_load_by_handle(
|
||||||
|
EXPORTING
|
||||||
|
uname = sy-uname
|
||||||
|
handle = 'z2ui5_cl_app_search_apps'
|
||||||
|
IMPORTING
|
||||||
|
result = mt_favs ).
|
||||||
|
|
||||||
|
mt_apps = VALUE #( FOR row IN z2ui5_cl_util=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
|
||||||
|
( name = row ) ).
|
||||||
|
search( ).
|
||||||
|
view_display( client ).
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF client->get( )-check_on_navigated = abap_true.
|
||||||
|
view_display( client ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CASE client->get( )-event.
|
||||||
|
|
||||||
|
WHEN `ON_PRESS`.
|
||||||
|
|
||||||
|
DATA(lt_arg) = client->get( )-t_event_arg.
|
||||||
|
DATA(lv_app) = lt_arg[ 1 ].
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
INSERT VALUE #( name = lv_app ) INTO TABLE mt_favs.
|
||||||
|
|
||||||
|
|
||||||
|
z2ui5_cl_util=>db_save(
|
||||||
|
uname = sy-uname
|
||||||
|
handle = 'z2ui5_cl_app_search_apps'
|
||||||
|
data = mt_favs ).
|
||||||
|
|
||||||
|
view_action_sheet( lv_app ).
|
||||||
|
|
||||||
|
view_nest_display( client ).
|
||||||
|
|
||||||
|
WHEN 'BACK'.
|
||||||
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
|
||||||
|
WHEN 'ON_SEARCH'.
|
||||||
|
search( ).
|
||||||
|
client->view_model_update( ).
|
||||||
|
client->message_toast_display( |backend search done| ).
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -60,8 +60,8 @@ CLASS lcl_github IMPLEMENTATION.
|
||||||
) )
|
) )
|
||||||
(
|
(
|
||||||
name = `The Quest`
|
name = `The Quest`
|
||||||
descr = `A wizard's adventure game based on a fork of the AXAGE game engine (ABAP teXt Adventure Game Engine) and abap2UI5. The game is set in a fantasy world, where the player takes on the role of a wizard's apprentice. The play` &&
|
descr = `A wizard's adventure game based on a fork of the AXAGE game engine (ABAP teXt Adventure Game Engine) and abap2UI5. The game is set in a fantasy world, where the player ` &&
|
||||||
`er explores the wizard's house, interacts with various objects and explores. The Quest is work in progress...`
|
`takes on the role of a wizard's apprentice. The player explores the wizard's house, interacts with various objects and explores. The Quest is work in progress...`
|
||||||
check_abap_for_cloud = abap_true
|
check_abap_for_cloud = abap_true
|
||||||
min_release = `750`
|
min_release = `750`
|
||||||
link = `https://github.com/nomssi/axage`
|
link = `https://github.com/nomssi/axage`
|
||||||
|
|
|
@ -83,6 +83,7 @@ CLASS z2ui5_cl_popup_error IMPLEMENTATION.
|
||||||
WHEN `BUTTON_CONFIRM`.
|
WHEN `BUTTON_CONFIRM`.
|
||||||
client->popup_destroy( ).
|
client->popup_destroy( ).
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -30,7 +30,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_POPUP_JS_LOADER IMPLEMENTATION.
|
CLASS z2ui5_cl_popup_js_loader IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD factory.
|
METHOD factory.
|
||||||
|
@ -51,7 +51,7 @@ CLASS Z2UI5_CL_POPUP_JS_LOADER IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD view_display.
|
METHOD view_display.
|
||||||
|
|
||||||
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = `load library`
|
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( `load library`
|
||||||
)->content(
|
)->content(
|
||||||
)->_z2ui5( )->timer( client->_event( 'TIMER_FINISHED' )
|
)->_z2ui5( )->timer( client->_event( 'TIMER_FINISHED' )
|
||||||
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( js ).
|
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( js ).
|
||||||
|
@ -75,6 +75,7 @@ CLASS Z2UI5_CL_POPUP_JS_LOADER IMPLEMENTATION.
|
||||||
WHEN `TIMER_FINISHED`.
|
WHEN `TIMER_FINISHED`.
|
||||||
client->popup_destroy( ).
|
client->popup_destroy( ).
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -57,7 +57,7 @@ CLASS Z2UI5_CL_POPUP_LAYOUT IMPLEMENTATION.
|
||||||
)->content( ).
|
)->content( ).
|
||||||
|
|
||||||
DATA(tab) = popup->table(
|
DATA(tab) = popup->table(
|
||||||
items = client->_bind_edit( ms_result-t_layout ) ).
|
client->_bind_edit( ms_result-t_layout ) ).
|
||||||
|
|
||||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( ms_result-t_layout ).
|
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( ms_result-t_layout ).
|
||||||
|
|
||||||
|
@ -66,8 +66,8 @@ CLASS Z2UI5_CL_POPUP_LAYOUT IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(columns) = tab->columns( ).
|
DATA(columns) = tab->columns( ).
|
||||||
LOOP AT lt_comp INTO DATA(ls_comp2).
|
LOOP AT lt_comp INTO DATA(ls_comp2).
|
||||||
DATA(col) = columns->column( width = '8rem' )->header( ns = `` ).
|
DATA(col) = columns->column( '8rem' )->header( `` ).
|
||||||
col->text( text = ls_comp2-name ).
|
col->text( ls_comp2-name ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
LOOP AT lt_comp INTO DATA(ls_comp).
|
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||||
|
|
|
@ -58,7 +58,7 @@ CLASS z2ui5_cl_popup_messages IMPLEMENTATION.
|
||||||
afterclose = client->_event( 'BUTTON_CONTINUE' )
|
afterclose = client->_event( 'BUTTON_CONTINUE' )
|
||||||
)->table(
|
)->table(
|
||||||
* mode = 'SingleSelectLeft'
|
* mode = 'SingleSelectLeft'
|
||||||
items = client->_bind_edit( mt_msg )
|
client->_bind_edit( mt_msg )
|
||||||
)->columns(
|
)->columns(
|
||||||
)->column( )->text( 'Title' )->get_parent(
|
)->column( )->text( 'Title' )->get_parent(
|
||||||
)->column( )->text( 'Color' )->get_parent(
|
)->column( )->text( 'Color' )->get_parent(
|
||||||
|
@ -98,6 +98,7 @@ CLASS z2ui5_cl_popup_messages IMPLEMENTATION.
|
||||||
WHEN `BUTTON_CONTINUE`.
|
WHEN `BUTTON_CONTINUE`.
|
||||||
client->popup_destroy( ).
|
client->popup_destroy( ).
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -53,7 +53,7 @@ CLASS z2ui5_cl_popup_table IMPLEMENTATION.
|
||||||
)->content( ).
|
)->content( ).
|
||||||
|
|
||||||
DATA(tab) = popup->table(
|
DATA(tab) = popup->table(
|
||||||
items = client->_bind( <tab_out> ) ).
|
client->_bind( <tab_out> ) ).
|
||||||
* )->header_toolbar(
|
* )->header_toolbar(
|
||||||
* )->overflow_toolbar(
|
* )->overflow_toolbar(
|
||||||
* )->toolbar_spacer(
|
* )->toolbar_spacer(
|
||||||
|
@ -67,12 +67,12 @@ CLASS z2ui5_cl_popup_table IMPLEMENTATION.
|
||||||
DATA(cells) = list->cells( ).
|
DATA(cells) = list->cells( ).
|
||||||
|
|
||||||
LOOP AT lt_comp INTO DATA(ls_comp).
|
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||||
cells->text( text = `{` && ls_comp-name && `}` ).
|
cells->text( `{` && ls_comp-name && `}` ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
DATA(columns) = tab->columns( ).
|
DATA(columns) = tab->columns( ).
|
||||||
LOOP AT lt_comp INTO ls_comp.
|
LOOP AT lt_comp INTO ls_comp.
|
||||||
columns->column( width = '8rem' )->header( ns = `` )->text( text = ls_comp-name ).
|
columns->column( '8rem' )->header( `` )->text( ls_comp-name ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
popup->get_parent(
|
popup->get_parent(
|
||||||
|
|
|
@ -37,7 +37,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_POPUP_TO_CONFIRM IMPLEMENTATION.
|
CLASS z2ui5_cl_popup_to_confirm IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD result.
|
METHOD result.
|
||||||
|
|
|
@ -78,6 +78,7 @@ CLASS z2ui5_cl_popup_to_inform IMPLEMENTATION.
|
||||||
WHEN `BUTTON_CONFIRM`.
|
WHEN `BUTTON_CONFIRM`.
|
||||||
client->popup_destroy( ).
|
client->popup_destroy( ).
|
||||||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||||
|
WHEN OTHERS.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -81,8 +81,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
||||||
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
|
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
|
||||||
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
|
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
|
||||||
growing = abap_true
|
growing = abap_true
|
||||||
title = title
|
title = title ).
|
||||||
).
|
|
||||||
|
|
||||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( <tab_out> ).
|
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_struc( <tab_out> ).
|
||||||
DELETE lt_comp WHERE name = 'ZZSELKZ'.
|
DELETE lt_comp WHERE name = 'ZZSELKZ'.
|
||||||
|
@ -92,7 +91,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
||||||
DATA(cells) = list->cells( ).
|
DATA(cells) = list->cells( ).
|
||||||
|
|
||||||
LOOP AT lt_comp INTO DATA(ls_comp).
|
LOOP AT lt_comp INTO DATA(ls_comp).
|
||||||
cells->text( text = `{` && ls_comp-name && `}` ).
|
cells->text( `{` && ls_comp-name && `}` ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
DATA(columns) = tab->columns( ).
|
DATA(columns) = tab->columns( ).
|
||||||
|
@ -103,7 +102,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
||||||
WHEN medium_label IS NOT INITIAL
|
WHEN medium_label IS NOT INITIAL
|
||||||
THEN medium_label
|
THEN medium_label
|
||||||
ELSE ls_comp-name ).
|
ELSE ls_comp-name ).
|
||||||
columns->column( width = '8rem' )->header( ns = `` )->text( text = text ).
|
columns->column( '8rem' )->header( `` )->text( text ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
client->popup_display( popup->stringify( ) ).
|
client->popup_display( popup->stringify( ) ).
|
||||||
|
@ -253,7 +252,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lt_arg) = client->get( )-t_event_arg.
|
DATA(lt_arg) = client->get( )-t_event_arg.
|
||||||
READ TABLE lt_arg INTO DATA(ls_arg) INDEX 1.
|
READ TABLE lt_arg INTO DATA(ls_arg) INDEX 1.
|
||||||
assert sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
ASSIGN mr_tab_popup->* TO <tab_out>.
|
ASSIGN mr_tab_popup->* TO <tab_out>.
|
||||||
ASSIGN mr_tab_popup_backup->* TO <tab_out_backup>.
|
ASSIGN mr_tab_popup_backup->* TO <tab_out_backup>.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user