mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 02:58:20 +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.
|
||||||
|
|
||||||
|
@ -20,17 +20,17 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
END OF ty_row.
|
END OF ty_row.
|
||||||
|
|
||||||
DATA(ls_row) = VALUE ty_row(
|
DATA(ls_row) = VALUE ty_row(
|
||||||
title = `test`
|
title = `test`
|
||||||
value = `val`
|
value = `val`
|
||||||
selected = abap_true ).
|
selected = abap_true ).
|
||||||
DATA(ls_row_result) = VALUE ty_row( ).
|
DATA(ls_row_result) = VALUE ty_row( ).
|
||||||
|
|
||||||
DATA(lv_id) = z2ui5_cl_util=>db_save(
|
DATA(lv_id) = z2ui5_cl_util=>db_save(
|
||||||
uname = `name`
|
uname = `name`
|
||||||
handle = `handle1`
|
handle = `handle1`
|
||||||
handle2 = `handle2`
|
handle2 = `handle2`
|
||||||
handle3 = `handle3`
|
handle3 = `handle3`
|
||||||
data = ls_row ).
|
data = ls_row ).
|
||||||
|
|
||||||
z2ui5_cl_util=>db_load_by_id(
|
z2ui5_cl_util=>db_load_by_id(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -45,10 +45,10 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
CLEAR ls_row_result.
|
CLEAR ls_row_result.
|
||||||
z2ui5_cl_util=>db_load_by_handle(
|
z2ui5_cl_util=>db_load_by_handle(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
uname = `name`
|
uname = `name`
|
||||||
handle = `handle1`
|
handle = `handle1`
|
||||||
handle2 = `handle2`
|
handle2 = `handle2`
|
||||||
handle3 = `handle3`
|
handle3 = `handle3`
|
||||||
IMPORTING
|
IMPORTING
|
||||||
result = ls_row_result ).
|
result = ls_row_result ).
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
CLASS z2ui5_cl_util_api DEFINITION
|
CLASS z2ui5_cl_util_api DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
CREATE PUBLIC
|
CREATE PUBLIC
|
||||||
INHERITING FROM z2ui5_cl_util_stmpncfctn.
|
INHERITING FROM z2ui5_cl_util_stmpncfctn.
|
||||||
|
@ -198,9 +198,9 @@ 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.
|
||||||
|
|
||||||
|
@ -692,7 +676,7 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
METHOD json_stringify.
|
METHOD json_stringify.
|
||||||
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( ) ).
|
||||||
result = li_ajson->set( iv_path = `/` iv_val = any )->stringify( ).
|
result = li_ajson->set( iv_path = `/` iv_val = any )->stringify( ).
|
||||||
|
|
||||||
CATCH z2ui5_cx_ajson_error INTO DATA(x).
|
CATCH z2ui5_cx_ajson_error INTO DATA(x).
|
||||||
|
@ -805,8 +789,8 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
LOOP AT result REFERENCE INTO DATA(lr_comp)
|
LOOP AT result REFERENCE INTO DATA(lr_comp)
|
||||||
WHERE as_include = abap_true.
|
WHERE as_include = abap_true.
|
||||||
|
|
||||||
DATA(lt_attri) = rtti_get_t_attri_by_include( type = lr_comp->type
|
DATA(lt_attri) = rtti_get_t_attri_by_include( type = lr_comp->type
|
||||||
attri = lr_comp->name ).
|
attri = lr_comp->name ).
|
||||||
|
|
||||||
DELETE result.
|
DELETE result.
|
||||||
INSERT LINES OF lt_attri INTO TABLE result.
|
INSERT LINES OF lt_attri INTO TABLE result.
|
||||||
|
@ -831,12 +815,11 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD source_get_method.
|
METHOD source_get_method.
|
||||||
|
|
||||||
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,36 +1042,11 @@ 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.
|
||||||
ASSIGN val->* TO <unassign>.
|
ASSIGN val->* TO <unassign>.
|
||||||
result = <unassign>.
|
result = <unassign>.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -1096,7 +1054,7 @@ CLASS z2ui5_cl_util_api IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS <unassign> TYPE any.
|
FIELD-SYMBOLS <unassign> TYPE any.
|
||||||
ASSIGN val->* TO <unassign>.
|
ASSIGN val->* TO <unassign>.
|
||||||
result = <unassign>.
|
result = <unassign>.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -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>
|
||||||
|
@ -329,12 +330,12 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
GET REFERENCE OF lv_test INTO lr_data.
|
GET REFERENCE OF lv_test INTO lr_data.
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = z2ui5_cl_util_api=>rtti_check_ref_data( lr_data )
|
act = z2ui5_cl_util_api=>rtti_check_ref_data( lr_data )
|
||||||
exp = abap_true ).
|
exp = abap_true ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = z2ui5_cl_util_api=>rtti_check_ref_data( lv_test )
|
act = z2ui5_cl_util_api=>rtti_check_ref_data( lv_test )
|
||||||
exp = abap_false ).
|
exp = abap_false ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -423,8 +424,8 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
METHOD test_func_get_user_tech.
|
METHOD test_func_get_user_tech.
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = sy-uname
|
act = sy-uname
|
||||||
exp = z2ui5_cl_util=>user_get_tech( ) ).
|
exp = z2ui5_cl_util=>user_get_tech( ) ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_not_initial( z2ui5_cl_util=>user_get_tech( ) ).
|
cl_abap_unit_assert=>assert_not_initial( z2ui5_cl_util=>user_get_tech( ) ).
|
||||||
|
|
||||||
|
@ -507,7 +508,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
exp = `100` ).
|
exp = `100` ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lt_param[ n = `app_start` ]-v
|
act = lt_param[ n = `app_start` ]-v
|
||||||
exp = `z2ui5_cl_app_hello_world` ).
|
exp = `z2ui5_cl_app_hello_world` ).
|
||||||
|
|
||||||
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,10 +337,9 @@ 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,
|
|
||||||
BEGIN OF ddic,
|
BEGIN OF ddic,
|
||||||
reptext TYPE string,
|
reptext TYPE string,
|
||||||
scrtext_s TYPE string,
|
scrtext_s TYPE string,
|
||||||
|
@ -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' ).
|
||||||
|
@ -361,11 +361,11 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||||
|
|
||||||
cl_abap_elemdescr=>describe_by_name(
|
cl_abap_elemdescr=>describe_by_name(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
p_name = data_element_name
|
p_name = data_element_name
|
||||||
RECEIVING
|
RECEIVING
|
||||||
p_descr_ref = DATA(lo_typedescr)
|
p_descr_ref = DATA(lo_typedescr)
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
OTHERS = 1 ).
|
OTHERS = 1 ).
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
|
@ -42,8 +42,8 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
DATA(lv_string3) = z2ui5_cl_util_stmpncfctn=>conv_get_string_by_xstring( lv_xstring2 ).
|
DATA(lv_string3) = z2ui5_cl_util_stmpncfctn=>conv_get_string_by_xstring( lv_xstring2 ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_string3
|
act = lv_string3
|
||||||
exp = lv_string ).
|
exp = lv_string ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
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.
|
||||||
|
@ -178,7 +179,7 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
result = replace( val = result sub = `>` with = `` ).
|
result = replace( val = result sub = `>` with = `` ).
|
||||||
result = COND #( WHEN mv_type = z2ui5_if_core_types=>cs_bind_type-two_way
|
result = COND #( WHEN mv_type = z2ui5_if_core_types=>cs_bind_type-two_way
|
||||||
THEN `/` && z2ui5_if_core_types=>cs_ui5-two_way_model )
|
THEN `/` && z2ui5_if_core_types=>cs_ui5-two_way_model )
|
||||||
&& `/` && result.
|
&& `/` && result.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -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`.
|
||||||
|
@ -236,8 +236,8 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
result = lo_bind->main( val = config-tab type = type config = VALUE #( path_only = abap_true ) ).
|
result = lo_bind->main( val = config-tab type = type config = VALUE #( path_only = abap_true ) ).
|
||||||
|
|
||||||
result = bind_tab_cell(
|
result = bind_tab_cell(
|
||||||
iv_name = result
|
iv_name = result
|
||||||
i_val = val ).
|
i_val = val ).
|
||||||
|
|
||||||
IF ms_config-path_only = abap_false.
|
IF ms_config-path_only = abap_false.
|
||||||
result = `{` && result && `}`.
|
result = `{` && result && `}`.
|
||||||
|
@ -249,7 +249,7 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
METHOD main_local.
|
METHOD main_local.
|
||||||
TRY.
|
TRY.
|
||||||
|
|
||||||
DATA(lo_json) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>new( ) ).
|
DATA(lo_json) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>new( ) ).
|
||||||
lo_json->set( iv_path = `/` iv_val = val ).
|
lo_json->set( iv_path = `/` iv_val = val ).
|
||||||
|
|
||||||
IF config-custom_mapper IS BOUND.
|
IF config-custom_mapper IS BOUND.
|
||||||
|
@ -268,8 +268,8 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
INSERT VALUE #( name_client = |/{ lv_id }|
|
INSERT VALUE #( name_client = |/{ lv_id }|
|
||||||
name = lv_id
|
name = lv_id
|
||||||
json_bind_local = lo_json
|
json_bind_local = lo_json
|
||||||
bind_type = z2ui5_if_core_types=>cs_bind_type-one_time )
|
bind_type = z2ui5_if_core_types=>cs_bind_type-one_time )
|
||||||
INTO TABLE mo_app->mt_attri.
|
INTO TABLE mo_app->mt_attri.
|
||||||
|
|
||||||
result = |/{ lv_id }|.
|
result = |/{ lv_id }|.
|
||||||
|
|
||||||
|
@ -291,8 +291,9 @@ CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||||
mr_attri->custom_filter_back = ms_config-custom_filter_back.
|
mr_attri->custom_filter_back = ms_config-custom_filter_back.
|
||||||
mr_attri->custom_mapper = ms_config-custom_mapper.
|
mr_attri->custom_mapper = ms_config-custom_mapper.
|
||||||
mr_attri->custom_mapper_back = ms_config-custom_mapper_back.
|
mr_attri->custom_mapper_back = ms_config-custom_mapper_back.
|
||||||
mr_attri->view = COND #( WHEN ms_config-view IS INITIAL THEN z2ui5_if_client=>cs_view-main ELSE ms_config-view ).
|
mr_attri->view = COND #( WHEN ms_config-view IS INITIAL THEN z2ui5_if_client=>cs_view-main ELSE ms_config-view ).
|
||||||
mr_attri->name_client = get_client_name( ).
|
mr_attri->name_client = get_client_name( ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -70,8 +70,8 @@ CLASS ltcl_test_bind IMPLEMENTATION.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
lo_bind->main(
|
lo_bind->main(
|
||||||
val = REF #( lo_app_client->xx )
|
val = REF #( lo_app_client->xx )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
cl_abap_unit_assert=>abort( ).
|
||||||
|
|
||||||
|
@ -93,8 +93,8 @@ CLASS ltcl_test_bind IMPLEMENTATION.
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
|
|
||||||
DATA(lv_bind) = lo_bind->main(
|
DATA(lv_bind) = lo_bind->main(
|
||||||
val = REF #( lo_app_client->mv_value )
|
val = REF #( lo_app_client->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_bind
|
act = lv_bind
|
||||||
|
@ -115,13 +115,13 @@ CLASS ltcl_test_bind IMPLEMENTATION.
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
|
|
||||||
lo_bind->main(
|
lo_bind->main(
|
||||||
val = REF #( lo_app_client->mv_value )
|
val = REF #( lo_app_client->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
lo_bind->main(
|
lo_bind->main(
|
||||||
val = REF #( lo_app_client->mv_value )
|
val = REF #( lo_app_client->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>abort( ).
|
cl_abap_unit_assert=>abort( ).
|
||||||
|
|
||||||
|
@ -144,12 +144,12 @@ CLASS ltcl_test_bind IMPLEMENTATION.
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
|
|
||||||
DATA(lv_bind) = lo_bind->main(
|
DATA(lv_bind) = lo_bind->main(
|
||||||
val = REF #( lo_app_client->mv_value )
|
val = REF #( lo_app_client->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
||||||
|
|
||||||
DATA(lv_bind2) = lo_bind->main(
|
DATA(lv_bind2) = lo_bind->main(
|
||||||
val = REF #( lo_app_client->mv_value )
|
val = REF #( lo_app_client->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_bind
|
act = lv_bind
|
||||||
|
@ -201,14 +201,14 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
lo_app->mo_app = lo_test_app.
|
lo_app->mo_app = lo_test_app.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->ms_struc-input )
|
val = REF #( lo_test_app->ms_struc-input )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -217,7 +217,7 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||||
lv_result = lo_bind->main(
|
lv_result = lo_bind->main(
|
||||||
val = REF #( lo_test_app->ms_struc-input )
|
val = REF #( lo_test_app->ms_struc-input )
|
||||||
config = VALUE #( path_only = abap_true )
|
config = VALUE #( path_only = abap_true )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -231,14 +231,14 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
lo_app->mo_app = lo_test_app.
|
lo_app->mo_app = lo_test_app.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->ms_struc-s_02-input )
|
val = REF #( lo_test_app->ms_struc-s_02-input )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -252,14 +252,14 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
lo_app->mo_app = lo_test_app.
|
lo_app->mo_app = lo_test_app.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->ms_struc-s_02-s_03-input )
|
val = REF #( lo_test_app->ms_struc-s_02-s_03-input )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -273,14 +273,14 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
lo_app->mo_app = lo_test_app.
|
lo_app->mo_app = lo_test_app.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->ms_struc-s_02-s_03-s_04-input )
|
val = REF #( lo_test_app->ms_struc-s_02-s_03-s_04-input )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -332,7 +332,7 @@ CLASS ltcl_test_main_object IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_object( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_object( ).
|
||||||
lo_test_app->mo_obj = NEW #( ).
|
lo_test_app->mo_obj = NEW #( ).
|
||||||
lo_test_app->mo_obj->mv_value = `test`.
|
lo_test_app->mo_obj->mv_value = `test`.
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
|
@ -340,8 +340,8 @@ CLASS ltcl_test_main_object IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->mo_obj->mv_value )
|
val = REF #( lo_test_app->mo_obj->mv_value )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
@ -355,15 +355,15 @@ CLASS ltcl_test_main_object IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_test_app) = NEW ltcl_test_main_object( ).
|
DATA(lo_test_app) = NEW ltcl_test_main_object( ).
|
||||||
lo_test_app->mo_obj = NEW #( ).
|
lo_test_app->mo_obj = NEW #( ).
|
||||||
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
DATA(lo_app) = NEW z2ui5_cl_core_app( ).
|
||||||
lo_app->mo_app = lo_test_app.
|
lo_app->mo_app = lo_test_app.
|
||||||
|
|
||||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( lo_app ).
|
||||||
DATA(lv_result) = lo_bind->main(
|
DATA(lv_result) = lo_bind->main(
|
||||||
val = REF #( lo_test_app->mo_obj->ms_struc-input )
|
val = REF #( lo_test_app->mo_obj->ms_struc-input )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = lv_result
|
act = lv_result
|
||||||
|
|
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.
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ CLASS z2ui5_cl_core_draft_srv IMPLEMENTATION.
|
||||||
METHOD cleanup.
|
METHOD cleanup.
|
||||||
|
|
||||||
DATA(lv_four_hours_ago) = z2ui5_cl_util=>time_substract_seconds(
|
DATA(lv_four_hours_ago) = z2ui5_cl_util=>time_substract_seconds(
|
||||||
time = z2ui5_cl_util=>time_get_timestampl( )
|
time = z2ui5_cl_util=>time_get_timestampl( )
|
||||||
seconds = 60 * 60 * 4 ).
|
seconds = 60 * 60 * 4 ).
|
||||||
|
|
||||||
DELETE FROM z2ui5_t_core_01 WHERE timestampl < @lv_four_hours_ago.
|
DELETE FROM z2ui5_t_core_01 WHERE timestampl < @lv_four_hours_ago.
|
||||||
|
@ -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,12 +122,14 @@ 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( * )
|
||||||
FROM z2ui5_t_core_01
|
FROM z2ui5_t_core_01
|
||||||
INTO @result.
|
INTO @result.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -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,11 +40,11 @@ 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
|
||||||
AND view = view.
|
AND view = view.
|
||||||
TRY.
|
TRY.
|
||||||
|
|
||||||
DATA(lo_val_front) = model->slice( lr_attri->name_client ).
|
DATA(lo_val_front) = model->slice( lr_attri->name_client ).
|
||||||
|
@ -73,28 +73,22 @@ 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.
|
||||||
|
|
||||||
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<attribute>).
|
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<attribute>).
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = <attribute> ).
|
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = <attribute> ).
|
||||||
|
|
||||||
WHEN z2ui5_if_core_types=>cs_bind_type-one_time.
|
WHEN z2ui5_if_core_types=>cs_bind_type-one_time.
|
||||||
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = lr_attri->json_bind_local ).
|
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = lr_attri->json_bind_local ).
|
||||||
|
@ -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,19 +126,19 @@ 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
|
||||||
IMPORTING
|
IMPORTING
|
||||||
ev_container = result-s_front ).
|
ev_container = result-s_front ).
|
||||||
|
|
||||||
result-s_control-check_launchpad = xsdbool( result-s_front-search CS `scenario=LAUNCHPAD` ).
|
result-s_control-check_launchpad = xsdbool( result-s_front-search CS `scenario=LAUNCHPAD` ).
|
||||||
IF result-s_front-id IS NOT INITIAL.
|
IF result-s_front-id IS NOT INITIAL.
|
||||||
|
@ -171,7 +167,7 @@ CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||||
|
|
||||||
ajson_result->set( iv_path = `/` iv_val = val-s_front ).
|
ajson_result->set( iv_path = `/` iv_val = val-s_front ).
|
||||||
ajson_result = ajson_result->filter( NEW z2ui5_cl_core_json_srv( ) ).
|
ajson_result = ajson_result->filter( NEW z2ui5_cl_core_json_srv( ) ).
|
||||||
DATA(lv_frontend) = ajson_result->stringify( ).
|
DATA(lv_frontend) = ajson_result->stringify( ).
|
||||||
|
|
||||||
result = `{` &&
|
result = `{` &&
|
||||||
|"S_FRONT":{ lv_frontend },| &&
|
|"S_FRONT":{ lv_frontend },| &&
|
||||||
|
|
|
@ -25,7 +25,7 @@ CLASS ltcl_test IMPLEMENTATION.
|
||||||
origin = `ORIGIN`
|
origin = `ORIGIN`
|
||||||
pathname = `PATHNAME`
|
pathname = `PATHNAME`
|
||||||
search = `SEARCH`
|
search = `SEARCH`
|
||||||
event = `BUTTON_POST` ) ).
|
event = `BUTTON_POST` ) ).
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_equals(
|
cl_abap_unit_assert=>assert_equals(
|
||||||
act = ls_result-s_front
|
act = ls_result-s_front
|
||||||
|
@ -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.
|
||||||
|
|
||||||
|
@ -73,7 +75,7 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
|
||||||
result->ms_actual-view = mo_http_post->ms_request-s_front-view.
|
result->ms_actual-view = mo_http_post->ms_request-s_front-view.
|
||||||
|
|
||||||
result->mo_app->model_json_parse(
|
result->mo_app->model_json_parse(
|
||||||
iv_view = mo_http_post->ms_request-s_front-view
|
iv_view = mo_http_post->ms_request-s_front-view
|
||||||
io_model = mo_http_post->ms_request-o_model ).
|
io_model = mo_http_post->ms_request-o_model ).
|
||||||
|
|
||||||
result->ms_actual-event = mo_http_post->ms_request-s_front-event.
|
result->ms_actual-event = mo_http_post->ms_request-s_front-event.
|
||||||
|
|
|
@ -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.
|
ENDIF.
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
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.
|
||||||
|
|
||||||
|
@ -222,11 +220,11 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
|
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-one_way
|
type = z2ui5_if_core_types=>cs_bind_type-one_way
|
||||||
config = VALUE #(
|
config = VALUE #(
|
||||||
path_only = path
|
path_only = path
|
||||||
custom_filter = custom_filter
|
custom_filter = custom_filter
|
||||||
custom_mapper = custom_mapper
|
custom_mapper = custom_mapper
|
||||||
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
|
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
|
||||||
tab_index = tab_index ) ).
|
tab_index = tab_index ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -246,13 +244,13 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
|
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
|
||||||
type = z2ui5_if_core_types=>cs_bind_type-two_way
|
type = z2ui5_if_core_types=>cs_bind_type-two_way
|
||||||
config = VALUE #(
|
config = VALUE #(
|
||||||
path_only = path
|
path_only = path
|
||||||
custom_filter = custom_filter
|
custom_filter = custom_filter
|
||||||
custom_filter_back = custom_filter_back
|
custom_filter_back = custom_filter_back
|
||||||
custom_mapper = custom_mapper
|
custom_mapper = custom_mapper
|
||||||
custom_mapper_back = custom_mapper_back
|
custom_mapper_back = custom_mapper_back
|
||||||
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
|
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
|
||||||
tab_index = tab_index ) ).
|
tab_index = tab_index ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -263,9 +261,9 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
result = lo_bind->main_local(
|
result = lo_bind->main_local(
|
||||||
val = val
|
val = val
|
||||||
config = VALUE #(
|
config = VALUE #(
|
||||||
path_only = path
|
path_only = path
|
||||||
custom_mapper = custom_mapper
|
custom_mapper = custom_mapper
|
||||||
custom_filter = custom_filter ) ).
|
custom_filter = custom_filter ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -285,8 +283,8 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lo_ui5) = NEW z2ui5_cl_core_event_srv( ).
|
DATA(lo_ui5) = NEW z2ui5_cl_core_event_srv( ).
|
||||||
result = lo_ui5->get_event_client(
|
result = lo_ui5->get_event_client(
|
||||||
val = val
|
val = val
|
||||||
t_arg = t_arg ).
|
t_arg = t_arg ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -52,418 +52,418 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
||||||
METHOD get_js.
|
METHOD get_js.
|
||||||
|
|
||||||
result = `sap.ui.define("z2ui5/Controller", ["sap/ui/core/mvc/Controller", "sap/ui/core/mvc/XMLView", "sap/ui/model/json/JSONModel", "sap/ui/core/BusyIndicator", "sap/m/MessageBox", "sap/m/MessageToast", "sap/ui/core/Fragment"], function(Control` &&
|
result = `sap.ui.define("z2ui5/Controller", ["sap/ui/core/mvc/Controller", "sap/ui/core/mvc/XMLView", "sap/ui/model/json/JSONModel", "sap/ui/core/BusyIndicator", "sap/m/MessageBox", "sap/m/MessageToast", "sap/ui/core/Fragment"], function(Control` &&
|
||||||
`ler, XMLView, JSONModel, BusyIndicator, MessageBox, MessageToast, Fragment) {` && |\n| &&
|
`ler, XMLView, JSONModel, BusyIndicator, MessageBox, MessageToast, Fragment) {` && |\n| &&
|
||||||
` "use strict";` && |\n| &&
|
` "use strict";` && |\n| &&
|
||||||
` return Controller.extend("z2ui5.Controller", {` && |\n| &&
|
` return Controller.extend("z2ui5.Controller", {` && |\n| &&
|
||||||
` async onAfterRendering() {` && |\n| &&
|
` async onAfterRendering() {` && |\n| &&
|
||||||
` try{` && |\n| &&
|
` try{` && |\n| &&
|
||||||
` if (!sap.z2ui5.oResponse.PARAMS) {` && |\n| &&
|
` if (!sap.z2ui5.oResponse.PARAMS) {` && |\n| &&
|
||||||
` BusyIndicator.hide();` && |\n| &&
|
` BusyIndicator.hide();` && |\n| &&
|
||||||
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
||||||
` sap.z2ui5.isBusy = false;` && |\n| &&
|
` sap.z2ui5.isBusy = false;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (sap.z2ui5.busyDialog) {` && |\n| &&
|
` if (sap.z2ui5.busyDialog) {` && |\n| &&
|
||||||
` sap.z2ui5.busyDialog.close();` && |\n| &&
|
` sap.z2ui5.busyDialog.close();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` const {S_POPUP, S_VIEW_NEST, S_VIEW_NEST2, S_POPOVER} = sap.z2ui5.oResponse.PARAMS;` && |\n| &&
|
` const {S_POPUP, S_VIEW_NEST, S_VIEW_NEST2, S_POPOVER} = sap.z2ui5.oResponse.PARAMS;` && |\n| &&
|
||||||
` if (S_POPUP?.CHECK_DESTROY) {` && |\n| &&
|
` if (S_POPUP?.CHECK_DESTROY) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (S_POPOVER?.CHECK_DESTROY) {` && |\n| &&
|
` if (S_POPOVER?.CHECK_DESTROY) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.PopoverDestroy();` && |\n| &&
|
` sap.z2ui5.oController.PopoverDestroy();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (S_POPUP?.XML) {` && |\n| &&
|
` if (S_POPUP?.XML) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
||||||
` await this.displayFragment(S_POPUP.XML, 'oViewPopup');` && |\n| &&
|
` await this.displayFragment(S_POPUP.XML, 'oViewPopup');` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (!sap.z2ui5.checkNestAfter) {` && |\n| &&
|
` if (!sap.z2ui5.checkNestAfter) {` && |\n| &&
|
||||||
` if (S_VIEW_NEST?.XML) {` && |\n| &&
|
` if (S_VIEW_NEST?.XML) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.NestViewDestroy();` && |\n| &&
|
` sap.z2ui5.oController.NestViewDestroy();` && |\n| &&
|
||||||
` await this.displayNestedView(S_VIEW_NEST.XML, 'oViewNest', 'S_VIEW_NEST');` && |\n| &&
|
` await this.displayNestedView(S_VIEW_NEST.XML, 'oViewNest', 'S_VIEW_NEST');` && |\n| &&
|
||||||
` sap.z2ui5.checkNestAfter = true;` && |\n| &&
|
` sap.z2ui5.checkNestAfter = true;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (!sap.z2ui5.checkNestAfter2) {` && |\n| &&
|
` if (!sap.z2ui5.checkNestAfter2) {` && |\n| &&
|
||||||
` if (S_VIEW_NEST2?.XML) {` && |\n| &&
|
` if (S_VIEW_NEST2?.XML) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.NestViewDestroy2();` && |\n| &&
|
` sap.z2ui5.oController.NestViewDestroy2();` && |\n| &&
|
||||||
` await this.displayNestedView2(S_VIEW_NEST2.XML, 'oViewNest2', 'S_VIEW_NEST2');` && |\n| &&
|
` await this.displayNestedView2(S_VIEW_NEST2.XML, 'oViewNest2', 'S_VIEW_NEST2');` && |\n| &&
|
||||||
` sap.z2ui5.checkNestAfter2 = true;` && |\n| &&
|
` sap.z2ui5.checkNestAfter2 = true;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (S_POPOVER?.XML) {` && |\n| &&
|
` if (S_POPOVER?.XML) {` && |\n| &&
|
||||||
` await this.displayPopover(S_POPOVER.XML, 'oViewPopover', S_POPOVER.OPEN_BY_ID);` && |\n| &&
|
` await this.displayPopover(S_POPOVER.XML, 'oViewPopover', S_POPOVER.OPEN_BY_ID);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` BusyIndicator.hide();` && |\n| &&
|
` BusyIndicator.hide();` && |\n| &&
|
||||||
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
||||||
` sap.z2ui5.isBusy = false;` && |\n| &&
|
` sap.z2ui5.isBusy = false;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (sap.z2ui5.busyDialog) {` && |\n| &&
|
` if (sap.z2ui5.busyDialog) {` && |\n| &&
|
||||||
` sap.z2ui5.busyDialog.close();` && |\n| &&
|
` sap.z2ui5.busyDialog.close();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.onAfterRendering.forEach(item=>{` && |\n| &&
|
` sap.z2ui5.onAfterRendering.forEach(item=>{` && |\n| &&
|
||||||
` if (item !== undefined) {` && |\n| &&
|
` if (item !== undefined) {` && |\n| &&
|
||||||
` item();` && |\n| &&
|
` item();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` )` && |\n| &&
|
` )` && |\n| &&
|
||||||
` }catch(e){ BusyIndicator.hide(); sap.z2ui5.isBusy = false; MessageBox.error( e.toLocaleString() , { title : "Unexpected Error Occured - App Terminated" , actions : [ ] , onClose : () => { new sap.m.BusyDialog({ text : "Please Restart t` &&
|
` }catch(e){ BusyIndicator.hide(); sap.z2ui5.isBusy = false; MessageBox.error( e.toLocaleString() , { title : "Unexpected Error Occured - App Terminated" , actions : [ ] , onClose : () => { new sap.m.BusyDialog({ text : "Please Restart t` &&
|
||||||
`he App" }).open(); } } ) }` && |\n| &&
|
`he App" }).open(); } } ) }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
|\n| &&
|
|\n| &&
|
||||||
` async displayFragment(xml, viewProp, openById) {` && |\n| &&
|
` async displayFragment(xml, viewProp, openById) {` && |\n| &&
|
||||||
` const oFragment = await Fragment.load({` && |\n| &&
|
` const oFragment = await Fragment.load({` && |\n| &&
|
||||||
` definition: xml,` && |\n| &&
|
` definition: xml,` && |\n| &&
|
||||||
` controller: sap.z2ui5.oControllerPopup,` && |\n| &&
|
` controller: sap.z2ui5.oControllerPopup,` && |\n| &&
|
||||||
` id: "popupId"` && |\n| &&
|
` id: "popupId"` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oFragment.setModel(oview_model);` && |\n| &&
|
` oFragment.setModel(oview_model);` && |\n| &&
|
||||||
` let oControl = openById ? sap.z2ui5.oView.byId(openById) : null;` && |\n| &&
|
` let oControl = openById ? sap.z2ui5.oView.byId(openById) : null;` && |\n| &&
|
||||||
` if (oControl) {` && |\n| &&
|
` if (oControl) {` && |\n| &&
|
||||||
` oFragment.openBy(oControl);` && |\n| &&
|
` oFragment.openBy(oControl);` && |\n| &&
|
||||||
` } else {` && |\n| &&
|
` } else {` && |\n| &&
|
||||||
` oFragment.open();` && |\n| &&
|
` oFragment.open();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
|
` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async displayPopover(xml, viewProp, openById) {` && |\n| &&
|
` async displayPopover(xml, viewProp, openById) {` && |\n| &&
|
||||||
` const oFragment = await Fragment.load({` && |\n| &&
|
` const oFragment = await Fragment.load({` && |\n| &&
|
||||||
` definition: xml,` && |\n| &&
|
` definition: xml,` && |\n| &&
|
||||||
` controller: sap.z2ui5.oControllerPopover,` && |\n| &&
|
` controller: sap.z2ui5.oControllerPopover,` && |\n| &&
|
||||||
` id: "popoverId"` && |\n| &&
|
` id: "popoverId"` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oFragment.setModel(oview_model);` && |\n| &&
|
` oFragment.setModel(oview_model);` && |\n| &&
|
||||||
` let oControl = openById ? sap.z2ui5.oView.byId(openById) : null;` && |\n| &&
|
` let oControl = openById ? sap.z2ui5.oView.byId(openById) : null;` && |\n| &&
|
||||||
` if (oControl) {` && |\n| &&
|
` if (oControl) {` && |\n| &&
|
||||||
` oFragment.openBy(oControl);` && |\n| &&
|
` oFragment.openBy(oControl);` && |\n| &&
|
||||||
` } else {` && |\n| &&
|
` } else {` && |\n| &&
|
||||||
` oFragment.open();` && |\n| &&
|
` oFragment.open();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
|
` sap.z2ui5[viewProp] = oFragment;` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async displayNestedView(xml, viewProp, viewNestId) {` && |\n| &&
|
` async displayNestedView(xml, viewProp, viewNestId) {` && |\n| &&
|
||||||
` const oView = await XMLView.create({` && |\n| &&
|
` const oView = await XMLView.create({` && |\n| &&
|
||||||
` definition: xml,` && |\n| &&
|
` definition: xml,` && |\n| &&
|
||||||
` controller: sap.z2ui5.oControllerNest,` && |\n| &&
|
` controller: sap.z2ui5.oControllerNest,` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oView.setModel(oview_model);` && |\n| &&
|
` oView.setModel(oview_model);` && |\n| &&
|
||||||
` let oParent = sap.z2ui5.oView.byId(sap.z2ui5.oResponse.PARAMS[viewNestId].ID);` && |\n| &&
|
` let oParent = sap.z2ui5.oView.byId(sap.z2ui5.oResponse.PARAMS[viewNestId].ID);` && |\n| &&
|
||||||
` if (oParent) {` && |\n| &&
|
` if (oParent) {` && |\n| &&
|
||||||
` try {` && |\n| &&
|
` try {` && |\n| &&
|
||||||
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_DESTROY]();` && |\n| &&
|
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_DESTROY]();` && |\n| &&
|
||||||
` } catch {}` && |\n| &&
|
` } catch {}` && |\n| &&
|
||||||
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_INSERT](oView);` && |\n| &&
|
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_INSERT](oView);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5[viewProp] = oView;` && |\n| &&
|
` sap.z2ui5[viewProp] = oView;` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async displayNestedView2(xml, viewProp, viewNestId) {` && |\n| &&
|
` async displayNestedView2(xml, viewProp, viewNestId) {` && |\n| &&
|
||||||
` const oView = await XMLView.create({` && |\n| &&
|
` const oView = await XMLView.create({` && |\n| &&
|
||||||
` definition: xml,` && |\n| &&
|
` definition: xml,` && |\n| &&
|
||||||
` controller: sap.z2ui5.oControllerNest2,` && |\n| &&
|
` controller: sap.z2ui5.oControllerNest2,` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` let oview_model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oView.setModel(oview_model);` && |\n| &&
|
` oView.setModel(oview_model);` && |\n| &&
|
||||||
` let oParent = sap.z2ui5.oView.byId(sap.z2ui5.oResponse.PARAMS[viewNestId].ID);` && |\n| &&
|
` let oParent = sap.z2ui5.oView.byId(sap.z2ui5.oResponse.PARAMS[viewNestId].ID);` && |\n| &&
|
||||||
` if (oParent) {` && |\n| &&
|
` if (oParent) {` && |\n| &&
|
||||||
` try {` && |\n| &&
|
` try {` && |\n| &&
|
||||||
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_DESTROY]();` && |\n| &&
|
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_DESTROY]();` && |\n| &&
|
||||||
` } catch {}` && |\n| &&
|
` } catch {}` && |\n| &&
|
||||||
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_INSERT](oView);` && |\n| &&
|
` oParent[sap.z2ui5.oResponse.PARAMS[viewNestId].METHOD_INSERT](oView);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5[viewProp] = oView;` && |\n| &&
|
` sap.z2ui5[viewProp] = oView;` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` PopupDestroy() {` && |\n| &&
|
` PopupDestroy() {` && |\n| &&
|
||||||
` if (!sap.z2ui5.oViewPopup) {` && |\n| &&
|
` if (!sap.z2ui5.oViewPopup) {` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (sap.z2ui5.oViewPopup.close) {` && |\n| &&
|
` if (sap.z2ui5.oViewPopup.close) {` && |\n| &&
|
||||||
` try {` && |\n| &&
|
` try {` && |\n| &&
|
||||||
` sap.z2ui5.oViewPopup.close();` && |\n| &&
|
` sap.z2ui5.oViewPopup.close();` && |\n| &&
|
||||||
` } catch {}` && |\n| &&
|
` } catch {}` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oViewPopup.destroy();` && |\n| &&
|
` sap.z2ui5.oViewPopup.destroy();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` PopoverDestroy() {` && |\n| &&
|
` PopoverDestroy() {` && |\n| &&
|
||||||
` if (!sap.z2ui5.oViewPopover) {` && |\n| &&
|
` if (!sap.z2ui5.oViewPopover) {` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` if (sap.z2ui5.oViewPopover.close) {` && |\n| &&
|
` if (sap.z2ui5.oViewPopover.close) {` && |\n| &&
|
||||||
` try {` && |\n| &&
|
` try {` && |\n| &&
|
||||||
` sap.z2ui5.oViewPopover.close();` && |\n| &&
|
` sap.z2ui5.oViewPopover.close();` && |\n| &&
|
||||||
` } catch {}` && |\n| &&
|
` } catch {}` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oViewPopover.destroy();` && |\n| &&
|
` sap.z2ui5.oViewPopover.destroy();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` NestViewDestroy() {` && |\n| &&
|
` NestViewDestroy() {` && |\n| &&
|
||||||
` if (!sap.z2ui5.oViewNest) {` && |\n| &&
|
` if (!sap.z2ui5.oViewNest) {` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oViewNest.destroy();` && |\n| &&
|
` sap.z2ui5.oViewNest.destroy();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` NestViewDestroy2() {` && |\n| &&
|
` NestViewDestroy2() {` && |\n| &&
|
||||||
` if (!sap.z2ui5.oViewNest2) {` && |\n| &&
|
` if (!sap.z2ui5.oViewNest2) {` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oViewNest2.destroy();` && |\n| &&
|
` sap.z2ui5.oViewNest2.destroy();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` ViewDestroy() {` && |\n| &&
|
` ViewDestroy() {` && |\n| &&
|
||||||
` if (!sap.z2ui5.oView) {` && |\n| &&
|
` if (!sap.z2ui5.oView) {` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oView.destroy();` && |\n| &&
|
` sap.z2ui5.oView.destroy();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` eF(...args) {` && |\n| &&
|
` eF(...args) {` && |\n| &&
|
||||||
` sap.z2ui5.onBeforeEventFrontend.forEach(item => {` && |\n| &&
|
` sap.z2ui5.onBeforeEventFrontend.forEach(item => {` && |\n| &&
|
||||||
` if (item !== undefined) {` && |\n| &&
|
` if (item !== undefined) {` && |\n| &&
|
||||||
` item(args);` && |\n| &&
|
` item(args);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` )` && |\n| &&
|
` )` && |\n| &&
|
||||||
` let oCrossAppNavigator;` && |\n| &&
|
` let oCrossAppNavigator;` && |\n| &&
|
||||||
` switch (args[0]) {` && |\n| &&
|
` switch (args[0]) {` && |\n| &&
|
||||||
` case 'CROSS_APP_NAV_TO_PREV_APP':` && |\n| &&
|
` case 'CROSS_APP_NAV_TO_PREV_APP':` && |\n| &&
|
||||||
` oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation");` && |\n| &&
|
` oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation");` && |\n| &&
|
||||||
` oCrossAppNavigator.backToPreviousApp();` && |\n| &&
|
` oCrossAppNavigator.backToPreviousApp();` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'CROSS_APP_NAV_TO_EXT':` && |\n| &&
|
` case 'CROSS_APP_NAV_TO_EXT':` && |\n| &&
|
||||||
` oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation");` && |\n| &&
|
` oCrossAppNavigator = sap.ushell.Container.getService("CrossApplicationNavigation");` && |\n| &&
|
||||||
` const hash = (oCrossAppNavigator.hrefForExternal({` && |\n| &&
|
` const hash = (oCrossAppNavigator.hrefForExternal({` && |\n| &&
|
||||||
` target: args[1],` && |\n| &&
|
` target: args[1],` && |\n| &&
|
||||||
` params: args[2]` && |\n| &&
|
` params: args[2]` && |\n| &&
|
||||||
` })) || "";` && |\n| &&
|
` })) || "";` && |\n| &&
|
||||||
` if (args[3] === 'EXT') {` && |\n| &&
|
` if (args[3] === 'EXT') {` && |\n| &&
|
||||||
` let url = window.location.href.split('#')[0] + hash;` && |\n| &&
|
` let url = window.location.href.split('#')[0] + hash;` && |\n| &&
|
||||||
` sap.m.URLHelper.redirect(url, true);` && |\n| &&
|
` sap.m.URLHelper.redirect(url, true);` && |\n| &&
|
||||||
` } else {` && |\n| &&
|
` } else {` && |\n| &&
|
||||||
` oCrossAppNavigator.toExternal({` && |\n| &&
|
` oCrossAppNavigator.toExternal({` && |\n| &&
|
||||||
` target: {` && |\n| &&
|
` target: {` && |\n| &&
|
||||||
` shellHash: hash` && |\n| &&
|
` shellHash: hash` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'LOCATION_RELOAD':` && |\n| &&
|
` case 'LOCATION_RELOAD':` && |\n| &&
|
||||||
` window.location = args[1];` && |\n| &&
|
` window.location = args[1];` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'OPEN_NEW_TAB':` && |\n| &&
|
` case 'OPEN_NEW_TAB':` && |\n| &&
|
||||||
` window.open(args[1], '_blank');` && |\n| &&
|
` window.open(args[1], '_blank');` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'POPUP_CLOSE':` && |\n| &&
|
` case 'POPUP_CLOSE':` && |\n| &&
|
||||||
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
` sap.z2ui5.oController.PopupDestroy();` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'POPOVER_CLOSE':` && |\n| &&
|
` case 'POPOVER_CLOSE':` && |\n| &&
|
||||||
` sap.z2ui5.oController.PopoverDestroy();` && |\n| &&
|
` sap.z2ui5.oController.PopoverDestroy();` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'NAV_CONTAINER_TO':` && |\n| &&
|
` case 'NAV_CONTAINER_TO':` && |\n| &&
|
||||||
` var navCon = sap.z2ui5.oView.byId(args[1]);` && |\n| &&
|
` var navCon = sap.z2ui5.oView.byId(args[1]);` && |\n| &&
|
||||||
` var navConTo = sap.z2ui5.oView.byId(args[2]);` && |\n| &&
|
` var navConTo = sap.z2ui5.oView.byId(args[2]);` && |\n| &&
|
||||||
` navCon.to(navConTo);` && |\n| &&
|
` navCon.to(navConTo);` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'NEST_NAV_CONTAINER_TO':` && |\n| &&
|
` case 'NEST_NAV_CONTAINER_TO':` && |\n| &&
|
||||||
` navCon = sap.z2ui5.oViewNest.byId(args[1]);` && |\n| &&
|
` navCon = sap.z2ui5.oViewNest.byId(args[1]);` && |\n| &&
|
||||||
` navConTo = sap.z2ui5.oViewNest.byId(args[2]);` && |\n| &&
|
` navConTo = sap.z2ui5.oViewNest.byId(args[2]);` && |\n| &&
|
||||||
` navCon.to(navConTo);` && |\n| &&
|
` navCon.to(navConTo);` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'NEST2_NAV_CONTAINER_TO':` && |\n| &&
|
` case 'NEST2_NAV_CONTAINER_TO':` && |\n| &&
|
||||||
` navCon = sap.z2ui5.oViewNest2.byId(args[1]);` && |\n| &&
|
` navCon = sap.z2ui5.oViewNest2.byId(args[1]);` && |\n| &&
|
||||||
` navConTo = sap.z2ui5.oViewNest2.byId(args[2]);` && |\n| &&
|
` navConTo = sap.z2ui5.oViewNest2.byId(args[2]);` && |\n| &&
|
||||||
` navCon.to(navConTo);` && |\n| &&
|
` navCon.to(navConTo);` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` case 'POPUP_NAV_CONTAINER_TO':` && |\n| &&
|
` case 'POPUP_NAV_CONTAINER_TO':` && |\n| &&
|
||||||
` navCon = Fragment.byId("popupId",args[1]);` && |\n| &&
|
` navCon = Fragment.byId("popupId",args[1]);` && |\n| &&
|
||||||
` navConTo = Fragment.byId("popupId",args[2]);` && |\n| &&
|
` navConTo = Fragment.byId("popupId",args[2]);` && |\n| &&
|
||||||
` navCon.to(navConTo);` && |\n| &&
|
` navCon.to(navConTo);` && |\n| &&
|
||||||
` break;` && |\n| &&
|
` break;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` eB(...args) {` && |\n| &&
|
` eB(...args) {` && |\n| &&
|
||||||
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
` if (sap.z2ui5.isBusy) {` && |\n| &&
|
||||||
` if (sap.z2ui5.isBusy == true) {` && |\n| &&
|
` if (sap.z2ui5.isBusy == true) {` && |\n| &&
|
||||||
` sap.z2ui5.busyDialog = new sap.m.BusyDialog();` && |\n| &&
|
` sap.z2ui5.busyDialog = new sap.m.BusyDialog();` && |\n| &&
|
||||||
` sap.z2ui5.busyDialog.open();` && |\n| &&
|
` sap.z2ui5.busyDialog.open();` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.isBusy = true;` && |\n| &&
|
` sap.z2ui5.isBusy = true;` && |\n| &&
|
||||||
` if (!window.navigator.onLine) {` && |\n| &&
|
` if (!window.navigator.onLine) {` && |\n| &&
|
||||||
` sap.m.MessageBox.alert('No internet connection! Please reconnect to the server and try again.');` && |\n| &&
|
` sap.m.MessageBox.alert('No internet connection! Please reconnect to the server and try again.');` && |\n| &&
|
||||||
` sap.z2ui5.isBusy = false;` && |\n| &&
|
` sap.z2ui5.isBusy = false;` && |\n| &&
|
||||||
` return;` && |\n| &&
|
` return;` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` BusyIndicator.show();` && |\n| &&
|
` BusyIndicator.show();` && |\n| &&
|
||||||
` let appStart = sap.z2ui5.oBody.APP_START;` && |\n| &&
|
` let appStart = sap.z2ui5.oBody.APP_START;` && |\n| &&
|
||||||
` sap.z2ui5.oBody = {};` && |\n| &&
|
` sap.z2ui5.oBody = {};` && |\n| &&
|
||||||
` sap.z2ui5.oBody.APP_START = appStart;` && |\n| &&
|
` sap.z2ui5.oBody.APP_START = appStart;` && |\n| &&
|
||||||
` if ( sap.z2ui5.oController == this ) {` && |\n| &&
|
` if ( sap.z2ui5.oController == this ) {` && |\n| &&
|
||||||
` sap.z2ui5.oBody.XX = sap.z2ui5.oView.getModel().getData().XX;` && |\n| &&
|
` sap.z2ui5.oBody.XX = sap.z2ui5.oView.getModel().getData().XX;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
||||||
` }else if ` && |\n| &&
|
` }else if ` && |\n| &&
|
||||||
` ( sap.z2ui5.oControllerPopup == this ) {` && |\n| &&
|
` ( sap.z2ui5.oControllerPopup == this ) {` && |\n| &&
|
||||||
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewPopup.getModel().getData().XX;` && |\n| &&
|
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewPopup.getModel().getData().XX;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
||||||
` }else if ( ` && |\n| &&
|
` }else if ( ` && |\n| &&
|
||||||
` sap.z2ui5.oControllerPopover == this ) {` && |\n| &&
|
` sap.z2ui5.oControllerPopover == this ) {` && |\n| &&
|
||||||
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewPopover.getModel().getData().XX;` && |\n| &&
|
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewPopover.getModel().getData().XX;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
` sap.z2ui5.oBody.VIEWNAME = 'MAIN';` && |\n| &&
|
||||||
` }else if ( ` && |\n| &&
|
` }else if ( ` && |\n| &&
|
||||||
` sap.z2ui5.oControllerNest == this ) {` && |\n| &&
|
` sap.z2ui5.oControllerNest == this ) {` && |\n| &&
|
||||||
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewNest.getModel().getData().XX;` && |\n| &&
|
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewNest.getModel().getData().XX;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.VIEWNAME = 'NEST';` && |\n| &&
|
` sap.z2ui5.oBody.VIEWNAME = 'NEST';` && |\n| &&
|
||||||
` }else if (` && |\n| &&
|
` }else if (` && |\n| &&
|
||||||
` sap.z2ui5.oControllerNest2 == this ) {` && |\n| &&
|
` sap.z2ui5.oControllerNest2 == this ) {` && |\n| &&
|
||||||
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewNest2.getModel().getData().XX;` && |\n| &&
|
` sap.z2ui5.oBody.XX = sap.z2ui5.oViewNest2.getModel().getData().XX;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.VIEWNAME = 'NEST2';` && |\n| &&
|
` sap.z2ui5.oBody.VIEWNAME = 'NEST2';` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.onBeforeRoundtrip.forEach(item=>{` && |\n| &&
|
` sap.z2ui5.onBeforeRoundtrip.forEach(item=>{` && |\n| &&
|
||||||
` if (item !== undefined) {` && |\n| &&
|
` if (item !== undefined) {` && |\n| &&
|
||||||
` item();` && |\n| &&
|
` item();` && |\n| &&
|
||||||
` }})` && |\n| &&
|
` }})` && |\n| &&
|
||||||
` if (args[0][1]) {` && |\n| &&
|
` if (args[0][1]) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| &&
|
` sap.z2ui5.oBody.ID = sap.z2ui5.oResponse.ID;` && |\n| &&
|
||||||
` sap.z2ui5.oBody.ARGUMENTS = args;` && |\n| &&
|
` sap.z2ui5.oBody.ARGUMENTS = args;` && |\n| &&
|
||||||
` sap.z2ui5.oResponseOld = sap.z2ui5.oResponse;` && |\n| &&
|
` sap.z2ui5.oResponseOld = sap.z2ui5.oResponse;` && |\n| &&
|
||||||
` sap.z2ui5.oResponse = {};` && |\n| &&
|
` sap.z2ui5.oResponse = {};` && |\n| &&
|
||||||
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` responseError(response) {` && |\n| &&
|
` responseError(response) {` && |\n| &&
|
||||||
` document.write(response);` && |\n| &&
|
` document.write(response);` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` updateModelIfRequired(paramKey, oView) {` && |\n| &&
|
` updateModelIfRequired(paramKey, oView) {` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.PARAMS == undefined) { return; }` && |\n| &&
|
` if (sap.z2ui5.oResponse.PARAMS == undefined) { return; }` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.PARAMS[paramKey]?.CHECK_UPDATE_MODEL) {` && |\n| &&
|
` if (sap.z2ui5.oResponse.PARAMS[paramKey]?.CHECK_UPDATE_MODEL) {` && |\n| &&
|
||||||
` let model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` let model = new JSONModel(sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oView.setModel(model);` && |\n| &&
|
` oView.setModel(model);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async responseSuccess(response) {` && |\n| &&
|
` async responseSuccess(response) {` && |\n| &&
|
||||||
` try{` && |\n| &&
|
` try{` && |\n| &&
|
||||||
` sap.z2ui5.oResponse = response;` && |\n| &&
|
` sap.z2ui5.oResponse = response;` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.PARAMS?.S_VIEW?.CHECK_DESTROY) {` && |\n| &&
|
` if (sap.z2ui5.oResponse.PARAMS?.S_VIEW?.CHECK_DESTROY) {` && |\n| &&
|
||||||
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oController.showMessage('S_MSG_TOAST', sap.z2ui5.oResponse.PARAMS);` && |\n| &&
|
` sap.z2ui5.oController.showMessage('S_MSG_TOAST', sap.z2ui5.oResponse.PARAMS);` && |\n| &&
|
||||||
` sap.z2ui5.oController.showMessage('S_MSG_BOX', sap.z2ui5.oResponse.PARAMS);` && |\n| &&
|
` sap.z2ui5.oController.showMessage('S_MSG_BOX', sap.z2ui5.oResponse.PARAMS);` && |\n| &&
|
||||||
` if (sap.z2ui5.oResponse.PARAMS?.S_VIEW?.XML) { if ( sap.z2ui5.oResponse.PARAMS?.S_VIEW?.XML !== '') {` && |\n| &&
|
` if (sap.z2ui5.oResponse.PARAMS?.S_VIEW?.XML) { if ( sap.z2ui5.oResponse.PARAMS?.S_VIEW?.XML !== '') {` && |\n| &&
|
||||||
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
|
||||||
` await sap.z2ui5.oController.createView(sap.z2ui5.oResponse.PARAMS.S_VIEW.XML, sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
` await sap.z2ui5.oController.createView(sap.z2ui5.oResponse.PARAMS.S_VIEW.XML, sap.z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
|
||||||
` return; } } ` && |\n| &&
|
` return; } } ` && |\n| &&
|
||||||
` this.updateModelIfRequired('S_VIEW', sap.z2ui5.oView);` && |\n| &&
|
` this.updateModelIfRequired('S_VIEW', sap.z2ui5.oView);` && |\n| &&
|
||||||
` this.updateModelIfRequired('S_VIEW_NEST', sap.z2ui5.oViewNest);` && |\n| &&
|
` this.updateModelIfRequired('S_VIEW_NEST', sap.z2ui5.oViewNest);` && |\n| &&
|
||||||
` this.updateModelIfRequired('S_VIEW_NEST2', sap.z2ui5.oViewNest2);` && |\n| &&
|
` this.updateModelIfRequired('S_VIEW_NEST2', sap.z2ui5.oViewNest2);` && |\n| &&
|
||||||
` this.updateModelIfRequired('S_POPUP', sap.z2ui5.oViewPopup);` && |\n| &&
|
` this.updateModelIfRequired('S_POPUP', sap.z2ui5.oViewPopup);` && |\n| &&
|
||||||
` this.updateModelIfRequired('S_POPOVER', sap.z2ui5.oViewPopover);` && |\n| &&
|
` this.updateModelIfRequired('S_POPOVER', sap.z2ui5.oViewPopover);` && |\n| &&
|
||||||
` sap.z2ui5.oController.onAfterRendering();` && |\n| &&
|
` sap.z2ui5.oController.onAfterRendering();` && |\n| &&
|
||||||
` }catch(e){ BusyIndicator.hide(); MessageBox.error(e.toLocaleString()); }` && |\n| &&
|
` }catch(e){ BusyIndicator.hide(); MessageBox.error(e.toLocaleString()); }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` showMessage(msgType, params) {` && |\n| &&
|
` showMessage(msgType, params) {` && |\n| &&
|
||||||
` if (params == undefined) { return; }` && |\n| &&
|
` if (params == undefined) { return; }` && |\n| &&
|
||||||
` if (params[msgType]?.TEXT !== undefined) {` && |\n| &&
|
` if (params[msgType]?.TEXT !== undefined) {` && |\n| &&
|
||||||
` if (msgType === 'S_MSG_TOAST') {` && |\n| &&
|
` if (msgType === 'S_MSG_TOAST') {` && |\n| &&
|
||||||
` MessageToast.show(params[msgType].TEXT);` && |\n| &&
|
` MessageToast.show(params[msgType].TEXT);` && |\n| &&
|
||||||
` } else if (msgType === 'S_MSG_BOX') {` && |\n| &&
|
` } else if (msgType === 'S_MSG_BOX') {` && |\n| &&
|
||||||
` MessageBox[params[msgType].TYPE](params[msgType].TEXT);` && |\n| &&
|
` MessageBox[params[msgType].TYPE](params[msgType].TEXT);` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async createView(xml, viewModel) {` && |\n| &&
|
` async createView(xml, viewModel) {` && |\n| &&
|
||||||
` const oView = await XMLView.create({` && |\n| &&
|
` const oView = await XMLView.create({` && |\n| &&
|
||||||
` definition: xml,` && |\n| &&
|
` definition: xml,` && |\n| &&
|
||||||
` controller: sap.z2ui5.oController,` && |\n| &&
|
` controller: sap.z2ui5.oController,` && |\n| &&
|
||||||
` id: 'mainView',` && |\n| &&
|
` id: 'mainView',` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` let oview_model = new JSONModel(viewModel);` && |\n| &&
|
` let oview_model = new JSONModel(viewModel);` && |\n| &&
|
||||||
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
` oview_model.setSizeLimit(sap.z2ui5.JSON_MODEL_LIMIT);` && |\n| &&
|
||||||
` oView.setModel(oview_model);` && |\n| &&
|
` oView.setModel(oview_model);` && |\n| &&
|
||||||
` if (sap.z2ui5.oParent) {` && |\n| &&
|
` if (sap.z2ui5.oParent) {` && |\n| &&
|
||||||
` sap.z2ui5.oParent.removeAllPages();` && |\n| &&
|
` sap.z2ui5.oParent.removeAllPages();` && |\n| &&
|
||||||
` sap.z2ui5.oParent.insertPage(oView);` && |\n| &&
|
` sap.z2ui5.oParent.insertPage(oView);` && |\n| &&
|
||||||
` } else {` && |\n| &&
|
` } else {` && |\n| &&
|
||||||
` oView.placeAt("content");` && |\n| &&
|
` oView.placeAt("content");` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` sap.z2ui5.oView = oView;` && |\n| &&
|
` sap.z2ui5.oView = oView;` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` async readHttp() {` && |\n| &&
|
` async readHttp() {` && |\n| &&
|
||||||
` const response = await fetch(sap.z2ui5.pathname, {` && |\n| &&
|
` const response = await fetch(sap.z2ui5.pathname, {` && |\n| &&
|
||||||
` method: 'POST',` && |\n| &&
|
` method: 'POST',` && |\n| &&
|
||||||
` headers: {` && |\n| &&
|
` headers: {` && |\n| &&
|
||||||
` 'Content-Type': 'application/json'` && |\n| &&
|
` 'Content-Type': 'application/json'` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` body: JSON.stringify(sap.z2ui5.oBody)` && |\n| &&
|
` body: JSON.stringify(sap.z2ui5.oBody)` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` if (!response.ok) {` && |\n| &&
|
` if (!response.ok) {` && |\n| &&
|
||||||
` const responseText = await response.text();` && |\n| &&
|
` const responseText = await response.text();` && |\n| &&
|
||||||
` sap.z2ui5.oController.responseError(responseText);` && |\n| &&
|
` sap.z2ui5.oController.responseError(responseText);` && |\n| &&
|
||||||
` } else {` && |\n| &&
|
` } else {` && |\n| &&
|
||||||
` const responseData = await response.json();` && |\n| &&
|
` const responseData = await response.json();` && |\n| &&
|
||||||
` sap.z2ui5.responseData = responseData;` && |\n| &&
|
` sap.z2ui5.responseData = responseData;` && |\n| &&
|
||||||
` if( !sap.z2ui5.oBody.APP_START ) { sap.z2ui5.oBody.APP_START = sap.z2ui5.responseData.S_FRONT.APP; }` && |\n| &&
|
` if( !sap.z2ui5.oBody.APP_START ) { sap.z2ui5.oBody.APP_START = sap.z2ui5.responseData.S_FRONT.APP; }` && |\n| &&
|
||||||
` sap.z2ui5.oController.responseSuccess({` && |\n| &&
|
` sap.z2ui5.oController.responseSuccess({` && |\n| &&
|
||||||
` ID : responseData.S_FRONT.ID,` && |\n| &&
|
` ID : responseData.S_FRONT.ID,` && |\n| &&
|
||||||
` PARAMS : responseData.S_FRONT.PARAMS,` && |\n| &&
|
` PARAMS : responseData.S_FRONT.PARAMS,` && |\n| &&
|
||||||
` OVIEWMODEL : responseData.MODEL,` && |\n| &&
|
` OVIEWMODEL : responseData.MODEL,` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` Roundtrip() {` && |\n| &&
|
` Roundtrip() {` && |\n| &&
|
||||||
` sap.z2ui5.checkTimerActive = false;` && |\n| &&
|
` sap.z2ui5.checkTimerActive = false;` && |\n| &&
|
||||||
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|
||||||
` sap.z2ui5.checkNestAfter2 = false;` && |\n| &&
|
` sap.z2ui5.checkNestAfter2 = false;` && |\n| &&
|
||||||
` let event = (args) => { if ( args != undefined ) { return args[0][0]; } };` && |\n| &&
|
` let event = (args) => { if ( args != undefined ) { return args[0][0]; } };` && |\n| &&
|
||||||
` sap.z2ui5.oBody.S_FRONT = {` && |\n| &&
|
` sap.z2ui5.oBody.S_FRONT = {` && |\n| &&
|
||||||
` ID: sap.z2ui5?.oBody?.ID,` && |\n| &&
|
` ID: sap.z2ui5?.oBody?.ID,` && |\n| &&
|
||||||
` APP_START: sap.z2ui5?.oBody?.APP_START,` && |\n| &&
|
` APP_START: sap.z2ui5?.oBody?.APP_START,` && |\n| &&
|
||||||
` XX: sap.z2ui5?.oBody?.XX,` && |\n| &&
|
` XX: sap.z2ui5?.oBody?.XX,` && |\n| &&
|
||||||
` ORIGIN: window.location.origin,` && |\n| &&
|
` ORIGIN: window.location.origin,` && |\n| &&
|
||||||
` PATHNAME: sap.z2ui5.pathname,` && |\n| &&
|
` PATHNAME: sap.z2ui5.pathname,` && |\n| &&
|
||||||
` SEARCH: (sap.z2ui5.search) ? sap.z2ui5.search : window.location.search,` && |\n| &&
|
` SEARCH: (sap.z2ui5.search) ? sap.z2ui5.search : window.location.search,` && |\n| &&
|
||||||
` VIEW: sap.z2ui5.oBody.VIEWNAME,` && |\n| &&
|
` VIEW: sap.z2ui5.oBody.VIEWNAME,` && |\n| &&
|
||||||
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||||
` EVENT: event(sap.z2ui5.oBody?.ARGUMENTS),` && |\n| &&
|
` EVENT: event(sap.z2ui5.oBody?.ARGUMENTS),` && |\n| &&
|
||||||
` };` && |\n| &&
|
` };` && |\n| &&
|
||||||
` if ( sap.z2ui5.oBody?.ARGUMENTS != undefined ) { if ( sap.z2ui5.oBody?.ARGUMENTS.length > 0 ) { sap.z2ui5.oBody?.ARGUMENTS.shift(); } }` && |\n| &&
|
` if ( sap.z2ui5.oBody?.ARGUMENTS != undefined ) { if ( sap.z2ui5.oBody?.ARGUMENTS.length > 0 ) { sap.z2ui5.oBody?.ARGUMENTS.shift(); } }` && |\n| &&
|
||||||
` sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG = sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
|
` sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG = sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
|
||||||
` delete sap.z2ui5.oBody.ID;` && |\n| &&
|
` delete sap.z2ui5.oBody.ID;` && |\n| &&
|
||||||
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
|
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
|
||||||
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
|
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
|
||||||
` delete sap.z2ui5.oBody?.S_FRONT.XX;` && |\n| &&
|
` delete sap.z2ui5.oBody?.S_FRONT.XX;` && |\n| &&
|
||||||
` delete sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
|
` delete sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
|
||||||
` if (!sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG) { delete sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG; } ` && |\n| &&
|
` if (!sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG) { delete sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG; } ` && |\n| &&
|
||||||
` if (sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG) { if (sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG.length == 0 ) { delete sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG; } }` && |\n| &&
|
` if (sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG) { if (sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG.length == 0 ) { delete sap.z2ui5.oBody.S_FRONT.T_EVENT_ARG; } }` && |\n| &&
|
||||||
` if (sap.z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS == undefined) { delete sap.z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS; } ` && |\n| &&
|
` if (sap.z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS == undefined) { delete sap.z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS; } ` && |\n| &&
|
||||||
` if ( sap.z2ui5.oBody.S_FRONT.SEARCH == '' ){ delete sap.z2ui5.oBody.S_FRONT.SEARCH; } ` && |\n| &&
|
` if ( sap.z2ui5.oBody.S_FRONT.SEARCH == '' ){ delete sap.z2ui5.oBody.S_FRONT.SEARCH; } ` && |\n| &&
|
||||||
` if (!sap.z2ui5.oBody.XX){ delete sap.z2ui5.oBody.XX; } ` && |\n| &&
|
` if (!sap.z2ui5.oBody.XX){ delete sap.z2ui5.oBody.XX; } ` && |\n| &&
|
||||||
` sap.z2ui5.oController.readHttp();` && |\n| &&
|
` sap.z2ui5.oController.readHttp();` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` })` && |\n| &&
|
` })` && |\n| &&
|
||||||
`});` && |\n| &&
|
`});` && |\n| &&
|
||||||
`sap.ui.require(["z2ui5/Controller", "sap/ui/core/BusyIndicator", "sap/ui/core/mvc/XMLView", "sap/ui/core/Fragment", "sap/m/MessageToast", "sap/m/MessageBox", "sap/ui/model/json/JSONModel"], (Controller,BusyIndicator)=>{` && |\n| &&
|
`sap.ui.require(["z2ui5/Controller", "sap/ui/core/BusyIndicator", "sap/ui/core/mvc/XMLView", "sap/ui/core/Fragment", "sap/m/MessageToast", "sap/m/MessageBox", "sap/ui/model/json/JSONModel"], (Controller,BusyIndicator)=>{` && |\n| &&
|
||||||
` BusyIndicator.show();` && |\n| &&
|
` BusyIndicator.show();` && |\n| &&
|
||||||
` sap.z2ui5.oController = new Controller();` && |\n| &&
|
` sap.z2ui5.oController = new Controller();` && |\n| &&
|
||||||
` sap.z2ui5.oControllerNest = new Controller();` && |\n| &&
|
` sap.z2ui5.oControllerNest = new Controller();` && |\n| &&
|
||||||
` sap.z2ui5.oControllerNest2 = new Controller();` && |\n| &&
|
` sap.z2ui5.oControllerNest2 = new Controller();` && |\n| &&
|
||||||
` sap.z2ui5.oControllerPopup = new Controller();` && |\n| &&
|
` sap.z2ui5.oControllerPopup = new Controller();` && |\n| &&
|
||||||
` sap.z2ui5.oControllerPopover = new Controller();` && |\n| &&
|
` sap.z2ui5.oControllerPopover = new Controller();` && |\n| &&
|
||||||
` sap.z2ui5.pathname = sap.z2ui5.pathname || window.location.pathname;` && |\n| &&
|
` sap.z2ui5.pathname = sap.z2ui5.pathname || window.location.pathname;` && |\n| &&
|
||||||
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|
||||||
` sap.z2ui5.oBody = {` && |\n| &&
|
` sap.z2ui5.oBody = {` && |\n| &&
|
||||||
` APP_START: sap.z2ui5.APP_START` && |\n| &&
|
` APP_START: sap.z2ui5.APP_START` && |\n| &&
|
||||||
` };` && |\n| &&
|
` };` && |\n| &&
|
||||||
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
||||||
` sap.z2ui5.onBeforeRoundtrip = [];` && |\n| &&
|
` sap.z2ui5.onBeforeRoundtrip = [];` && |\n| &&
|
||||||
` sap.z2ui5.onAfterRendering = [];` && |\n| &&
|
` sap.z2ui5.onAfterRendering = [];` && |\n| &&
|
||||||
` sap.z2ui5.onBeforeEventFrontend = [];` && |\n| &&
|
` sap.z2ui5.onBeforeEventFrontend = [];` && |\n| &&
|
||||||
` sap.z2ui5.onAfterRoundtrip = []; }` && |\n| &&
|
` sap.z2ui5.onAfterRoundtrip = []; }` && |\n| &&
|
||||||
`);`.
|
`);`.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -495,7 +495,7 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
||||||
THEN get_default_config( )
|
THEN get_default_config( )
|
||||||
ELSE ms_request-t_config ).
|
ELSE ms_request-t_config ).
|
||||||
|
|
||||||
DATA(lv_sec_policy) = COND #( WHEN ms_request-content_security_policy IS INITIAL
|
DATA(lv_sec_policy) = COND #( WHEN ms_request-content_security_policy IS INITIAL
|
||||||
THEN get_default_security_policy( )
|
THEN get_default_security_policy( )
|
||||||
ELSE ms_request-content_security_policy ).
|
ELSE ms_request-content_security_policy ).
|
||||||
|
|
||||||
|
@ -530,7 +530,7 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
||||||
DATA(lv_add_js) = get_js_cc_startup( ) && ms_request-custom_js.
|
DATA(lv_add_js) = get_js_cc_startup( ) && ms_request-custom_js.
|
||||||
|
|
||||||
mv_response = mv_response &&
|
mv_response = mv_response &&
|
||||||
`<script> sap.z2ui5 = sap.z2ui5 || {};` && |\n| &&
|
`<script> sap.z2ui5 = sap.z2ui5 || {};` && |\n| &&
|
||||||
get_js( ) && |\n| &&
|
get_js( ) && |\n| &&
|
||||||
lv_add_js && |\n| &&
|
lv_add_js && |\n| &&
|
||||||
` sap.z2ui5.JSON_MODEL_LIMIT = ` && COND #( WHEN ms_request-json_model_limit IS NOT INITIAL THEN ms_request-json_model_limit ELSE 100 ) && `;`.
|
` sap.z2ui5.JSON_MODEL_LIMIT = ` && COND #( WHEN ms_request-json_model_limit IS NOT INITIAL THEN ms_request-json_model_limit ELSE 100 ) && `;`.
|
||||||
|
@ -540,7 +540,7 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
||||||
` sap.ui.require(["z2ui5/DebuggingTools","z2ui5/Controller"], (DebuggingTools) => { sap.z2ui5.DebuggingTools = new DebuggingTools(); ` && |\n| &&
|
` sap.ui.require(["z2ui5/DebuggingTools","z2ui5/Controller"], (DebuggingTools) => { sap.z2ui5.DebuggingTools = new DebuggingTools(); ` && |\n| &&
|
||||||
` });`.
|
` });`.
|
||||||
|
|
||||||
mv_response = mv_response && |\n| &&
|
mv_response = mv_response && |\n| &&
|
||||||
`</script>` && |\n| &&
|
`</script>` && |\n| &&
|
||||||
`<abc/></body></html>`.
|
`<abc/></body></html>`.
|
||||||
|
|
||||||
|
|
|
@ -84,11 +84,11 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
|
||||||
METHOD main_end.
|
METHOD main_end.
|
||||||
|
|
||||||
ms_response = VALUE #(
|
ms_response = VALUE #(
|
||||||
s_front-params = mo_action->ms_next-s_set
|
s_front-params = mo_action->ms_next-s_set
|
||||||
s_front-id = mo_action->mo_app->ms_draft-id
|
s_front-id = mo_action->mo_app->ms_draft-id
|
||||||
s_front-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
|
s_front-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
|
||||||
s_front-app_start = ms_request-s_control-app_start
|
s_front-app_start = ms_request-s_control-app_start
|
||||||
model = mo_action->mo_app->model_json_stringify( ) ).
|
model = mo_action->mo_app->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->response_abap_to_json( ms_response ).
|
result = lo_json_mapper->response_abap_to_json( ms_response ).
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -45,10 +45,9 @@ CLASS z2ui5_cl_core_app_info IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(page2) = z2ui5_cl_xml_view=>factory_popup(
|
DATA(page2) = z2ui5_cl_xml_view=>factory_popup(
|
||||||
)->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,19 +96,19 @@ 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 ).
|
||||||
simple_form2->label( `Draft Entries ` ).
|
simple_form2->label( `Draft Entries ` ).
|
||||||
simple_form2->text( lv_count ).
|
simple_form2->text( lv_count ).
|
||||||
|
|
||||||
page2->footer( )->overflow_toolbar(
|
page2->footer( )->overflow_toolbar(
|
||||||
)->toolbar_spacer(
|
)->toolbar_spacer(
|
||||||
)->button(
|
)->button(
|
||||||
text = 'close'
|
text = 'close'
|
||||||
press = client->_event( 'CLOSE' )
|
press = client->_event( 'CLOSE' )
|
||||||
type = 'Emphasized' ).
|
type = 'Emphasized' ).
|
||||||
|
|
||||||
client->popup_display( page2->stringify( ) ).
|
client->popup_display( page2->stringify( ) ).
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
|
|
@ -85,10 +85,10 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
|
||||||
* classname = 'z2ui5_cl_core_app_info' ).
|
* classname = 'z2ui5_cl_core_app_info' ).
|
||||||
|
|
||||||
page2->header_content(
|
page2->header_content(
|
||||||
)->text(
|
)->text(
|
||||||
)->title( `abap2UI5 - Developing UI5 Apps Purely in ABAP`
|
)->title( `abap2UI5 - Developing UI5 Apps Purely in ABAP`
|
||||||
)->toolbar_spacer(
|
)->toolbar_spacer(
|
||||||
)->button( text = `System` icon = `sap-icon://information`
|
)->button( text = `System` icon = `sap-icon://information`
|
||||||
press = client->_event( `OPEN_INFO` ) ).
|
press = client->_event( `OPEN_INFO` ) ).
|
||||||
* press = client->_event_client( val = client->cs_event-open_new_tab
|
* press = client->_event_client( val = client->cs_event-open_new_tab
|
||||||
* t_arg = VALUE #( ( lv_url_info ) ) ) ).
|
* t_arg = VALUE #( ( lv_url_info ) ) ) ).
|
||||||
|
@ -127,7 +127,7 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
|
||||||
IF ms_home-class_editable = abap_true.
|
IF ms_home-class_editable = abap_true.
|
||||||
|
|
||||||
simple_form2->input( placeholder = `fill in the class name and press 'check'`
|
simple_form2->input( placeholder = `fill in the class name and press 'check'`
|
||||||
enabled = client->_bind( ms_home-class_editable )
|
enabled = client->_bind( ms_home-class_editable )
|
||||||
value = client->_bind_edit( ms_home-classname )
|
value = client->_bind_edit( ms_home-classname )
|
||||||
submit = client->_event( ms_home-btn_event_id )
|
submit = client->_event( ms_home-btn_event_id )
|
||||||
valuehelprequest = client->_event( 'VALUE_HELP' )
|
valuehelprequest = client->_event( 'VALUE_HELP' )
|
||||||
|
@ -138,7 +138,7 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
simple_form2->label( ).
|
simple_form2->label( ).
|
||||||
simple_form2->button( press = client->_event( ms_home-btn_event_id )
|
simple_form2->button( press = client->_event( ms_home-btn_event_id )
|
||||||
text = client->_bind( ms_home-btn_text )
|
text = client->_bind( ms_home-btn_text )
|
||||||
icon = client->_bind( ms_home-btn_icon )
|
icon = client->_bind( ms_home-btn_icon )
|
||||||
width = `70%` ).
|
width = `70%` ).
|
||||||
|
@ -146,7 +146,7 @@ CLASS z2ui5_cl_core_app_startup IMPLEMENTATION.
|
||||||
)->link( text = `Link to the Application`
|
)->link( text = `Link to the Application`
|
||||||
target = `_blank`
|
target = `_blank`
|
||||||
href = lv_url
|
href = lv_url
|
||||||
enabled = `{= $` && client->_bind( val = ms_home-class_editable ) && ` === false }` ).
|
enabled = `{= $` && client->_bind( val = ms_home-class_editable ) && ` === false }` ).
|
||||||
|
|
||||||
|
|
||||||
DATA(lv_url_samples2) = z2ui5_cl_util=>app_get_url(
|
DATA(lv_url_samples2) = z2ui5_cl_util=>app_get_url(
|
||||||
|
@ -155,19 +155,19 @@ 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`
|
||||||
press = client->_event_client( val = client->cs_event-open_new_tab
|
press = client->_event_client( val = client->cs_event-open_new_tab
|
||||||
t_arg = VALUE #( ( lv_url_samples2 ) ) )
|
t_arg = VALUE #( ( lv_url_samples2 ) ) )
|
||||||
width = `70%` ).
|
width = `70%` ).
|
||||||
|
|
||||||
ELSE.
|
ELSE.
|
||||||
simple_form2->label( `Install the sample repository` ).
|
simple_form2->label( `Install the sample repository` ).
|
||||||
simple_form2->link( text = `And explore more than 100 demo apps...`
|
simple_form2->link( text = `And explore more than 100 demo apps...`
|
||||||
target = `_blank`
|
target = `_blank`
|
||||||
href = `https://github.com/abap2UI5/abap2UI5-samples` ).
|
href = `https://github.com/abap2UI5/abap2UI5-samples` ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
simple_form2->label( `` ).
|
simple_form2->label( `` ).
|
||||||
|
|
|
@ -20,26 +20,26 @@ CLASS z2ui5_cl_fw_cc_favicon IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD get_js.
|
METHOD get_js.
|
||||||
|
|
||||||
result = `sap.ui.define("z2ui5/Favicon" , ["sap/ui/core/Control"], (Control)=>{` && |\n| &&
|
result = `sap.ui.define("z2ui5/Favicon" , ["sap/ui/core/Control"], (Control)=>{` && |\n| &&
|
||||||
` "use strict";` && |\n| &&
|
` "use strict";` && |\n| &&
|
||||||
` return Control.extend("z2ui5.Favicon", {` && |\n| &&
|
` return Control.extend("z2ui5.Favicon", {` && |\n| &&
|
||||||
` metadata: {` && |\n| &&
|
` metadata: {` && |\n| &&
|
||||||
` properties: {` && |\n| &&
|
` properties: {` && |\n| &&
|
||||||
` favicon: {` && |\n| &&
|
` favicon: {` && |\n| &&
|
||||||
` type: "string"` && |\n| &&
|
` type: "string"` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` }` && |\n| &&
|
` }` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` setFavicon(val) {` && |\n| &&
|
` setFavicon(val) {` && |\n| &&
|
||||||
` this.setProperty("favicon", val);` && |\n| &&
|
` this.setProperty("favicon", val);` && |\n| &&
|
||||||
` let headTitle = document.querySelector('head');` && |\n| &&
|
` let headTitle = document.querySelector('head');` && |\n| &&
|
||||||
` let setFavicon = document.createElement('link');` && |\n| &&
|
` let setFavicon = document.createElement('link');` && |\n| &&
|
||||||
` setFavicon.setAttribute('rel','shortcut icon');` && |\n| &&
|
` setFavicon.setAttribute('rel','shortcut icon');` && |\n| &&
|
||||||
` setFavicon.setAttribute('href',val);` && |\n| &&
|
` setFavicon.setAttribute('href',val);` && |\n| &&
|
||||||
` headTitle.appendChild(setFavicon);` && |\n| &&
|
` headTitle.appendChild(setFavicon);` && |\n| &&
|
||||||
` },` && |\n| &&
|
` },` && |\n| &&
|
||||||
` renderer(oRm, oControl) {}` && |\n| &&
|
` renderer(oRm, oControl) {}` && |\n| &&
|
||||||
` });` && |\n| &&
|
` });` && |\n| &&
|
||||||
` });`.
|
` });`.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -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( ) ).
|
||||||
|
@ -3383,45 +3383,45 @@ CLASS Z2UI5_CL_CC_IMAGEMAPSTER IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_ajson_filter~keep_node.
|
METHOD z2ui5_if_ajson_filter~keep_node.
|
||||||
|
|
||||||
rv_keep = abap_true.
|
rv_keep = abap_true.
|
||||||
|
|
||||||
CASE iv_visit.
|
CASE iv_visit.
|
||||||
|
|
||||||
WHEN z2ui5_if_ajson_filter=>visit_type-open.
|
WHEN z2ui5_if_ajson_filter=>visit_type-open.
|
||||||
|
|
||||||
IF is_node-children = 0.
|
IF is_node-children = 0.
|
||||||
rv_keep = abap_false.
|
rv_keep = abap_false.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
WHEN z2ui5_if_ajson_filter=>visit_type-value.
|
WHEN z2ui5_if_ajson_filter=>visit_type-value.
|
||||||
|
|
||||||
CASE is_node-type.
|
CASE is_node-type.
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-boolean.
|
WHEN z2ui5_if_ajson_types=>node_type-boolean.
|
||||||
IF is_node-name = `is_selectable`.
|
IF is_node-name = `is_selectable`.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
IF is_node-value = `false`.
|
IF is_node-value = `false`.
|
||||||
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.
|
||||||
IF is_node-value = ``.
|
IF is_node-value = ``.
|
||||||
rv_keep = abap_false.
|
rv_keep = abap_false.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
WHEN z2ui5_if_ajson_filter=>visit_type-close.
|
WHEN z2ui5_if_ajson_filter=>visit_type-close.
|
||||||
|
|
||||||
IF is_node-children = 0.
|
IF is_node-children = 0.
|
||||||
rv_keep = abap_false.
|
rv_keep = abap_false.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -16,18 +16,18 @@ 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
|
||||||
VALUE(result) TYPE string .
|
VALUE(result) TYPE string .
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
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.
|
||||||
|
|
||||||
|
|
|
@ -652,7 +652,7 @@ CLASS z2ui5_cl_xml_view DEFINITION
|
||||||
|
|
||||||
METHODS column_list_item
|
METHODS column_list_item
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!id TYPE clike OPTIONAL
|
!id TYPE clike OPTIONAL
|
||||||
!valign TYPE clike OPTIONAL
|
!valign TYPE clike OPTIONAL
|
||||||
!selected TYPE clike OPTIONAL
|
!selected TYPE clike OPTIONAL
|
||||||
!type TYPE clike OPTIONAL
|
!type TYPE clike OPTIONAL
|
||||||
|
@ -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` )
|
||||||
|
|
|
@ -258,9 +258,9 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
||||||
METHOD favicon.
|
METHOD favicon.
|
||||||
|
|
||||||
result = mo_view.
|
result = mo_view.
|
||||||
mo_view->_generic( name = `Favicon`
|
mo_view->_generic( name = `Favicon`
|
||||||
ns = `z2ui5`
|
ns = `z2ui5`
|
||||||
t_prop = VALUE #( ( n = `favicon` v = favicon ) ) ).
|
t_prop = VALUE #( ( n = `favicon` v = favicon ) ) ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -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`
|
||||||
|
@ -270,7 +250,7 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
||||||
row->text( `{DESCR}` ).
|
row->text( `{DESCR}` ).
|
||||||
row->text( ).
|
row->text( ).
|
||||||
row->checkbox( text = `ABAP for Cloud`
|
row->checkbox( text = `ABAP for Cloud`
|
||||||
enabled = abap_false
|
enabled = abap_false
|
||||||
selected = `{CHECK_ABAP_FOR_CLOUD}` ).
|
selected = `{CHECK_ABAP_FOR_CLOUD}` ).
|
||||||
|
|
||||||
row = item->grid( ).
|
row = item->grid( ).
|
||||||
|
@ -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.
|
||||||
|
|
|
@ -39,14 +39,14 @@ CLASS lcl_github IMPLEMENTATION.
|
||||||
|
|
||||||
result = VALUE #(
|
result = VALUE #(
|
||||||
(
|
(
|
||||||
name = `Table Loader`
|
name = `Table Loader`
|
||||||
descr = `Upload, Edit & Download Table Content (CSV, JSON)`
|
descr = `Upload, Edit & Download Table Content (CSV, JSON)`
|
||||||
author_link = `https://github.com/oblomov-dev`
|
author_link = `https://github.com/oblomov-dev`
|
||||||
author_name = `oblomov`
|
author_name = `oblomov`
|
||||||
check_abap_for_cloud = abap_true
|
check_abap_for_cloud = abap_true
|
||||||
min_release = `750`
|
min_release = `750`
|
||||||
link = `https://github.com/oblomov-dev/a2UI5-db_table_loader`
|
link = `https://github.com/oblomov-dev/a2UI5-db_table_loader`
|
||||||
t_app = VALUE #(
|
t_app = VALUE #(
|
||||||
(
|
(
|
||||||
name = `Upload JSON`
|
name = `Upload JSON`
|
||||||
descr = `Modify DB Table with JSON Data`
|
descr = `Modify DB Table with JSON Data`
|
||||||
|
@ -59,15 +59,15 @@ 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`
|
||||||
author_link = `https://github.com/nomssi`
|
author_link = `https://github.com/nomssi`
|
||||||
author_name = `Nomssi`
|
author_name = `Nomssi`
|
||||||
t_app = VALUE #(
|
t_app = VALUE #(
|
||||||
(
|
(
|
||||||
name = `The Quest - Start the Adventure`
|
name = `The Quest - Start the Adventure`
|
||||||
descr = `Adventure Game: The Wizard&apos;s Aspirant Quest`
|
descr = `Adventure Game: The Wizard&apos;s Aspirant Quest`
|
||||||
|
@ -75,17 +75,17 @@ CLASS lcl_github IMPLEMENTATION.
|
||||||
)
|
)
|
||||||
) )
|
) )
|
||||||
(
|
(
|
||||||
name = `Advent of Code`
|
name = `Advent of Code`
|
||||||
descr = `Advent of Code 2023 in ABAP`
|
descr = `Advent of Code 2023 in ABAP`
|
||||||
author_link = `https://github.com/joltdx`
|
author_link = `https://github.com/joltdx`
|
||||||
author_name = `joltdx`
|
author_name = `joltdx`
|
||||||
link = `https://github.com/joltdx/abap-advent-2023`
|
link = `https://github.com/joltdx/abap-advent-2023`
|
||||||
check_abap_for_cloud = abap_true
|
check_abap_for_cloud = abap_true
|
||||||
min_release = `750`
|
min_release = `750`
|
||||||
t_app = VALUE #(
|
t_app = VALUE #(
|
||||||
(
|
(
|
||||||
name = `Advent of Code 2023 in ABAP`
|
name = `Advent of Code 2023 in ABAP`
|
||||||
descr = `Advent of Code 2023 - ABAP2UI5 app`
|
descr = `Advent of Code 2023 - ABAP2UI5 app`
|
||||||
classname = `zcl_advent_2023_a2ui5.clas.abap`
|
classname = `zcl_advent_2023_a2ui5.clas.abap`
|
||||||
)
|
)
|
||||||
) ) ).
|
) ) ).
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -72,17 +72,16 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
|
||||||
DATA(tab) = popup->table_select_dialog(
|
DATA(tab) = popup->table_select_dialog(
|
||||||
items = `{path:'`
|
items = `{path:'`
|
||||||
&& client->_bind_edit( val = <tab_out> path = abap_true )
|
&& client->_bind_edit( val = <tab_out> path = abap_true )
|
||||||
&& `', sorter : { path : '` && to_upper( sort_field ) && `', descending : `
|
&& `', sorter : { path : '` && to_upper( sort_field ) && `', descending : `
|
||||||
&& z2ui5_cl_util=>boolean_abap_2_json( me->descending )
|
&& z2ui5_cl_util=>boolean_abap_2_json( me->descending )
|
||||||
&& ` } }`
|
&& ` } }`
|
||||||
cancel = client->_event( 'CANCEL' )
|
cancel = client->_event( 'CANCEL' )
|
||||||
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