mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-30 04:52:30 +08:00
Refactoring performance (#862)
* refactoring-performance * Update and rename abaplint-basic.jsonc to abaplint-standard_abap_readiness.jsonc * Update abaplint-app.json * Update abaplint-app.json * refactoring * update lint fixes * refactoring * Update README.md
This commit is contained in:
parent
6f078ac570
commit
563a0e4306
|
@ -71,8 +71,8 @@ Install with [abapGit](https://abapgit.org)  = SWITCH #( server->request->get_method( )
|
DATA(lv_resp) = SWITCH #( server->request->get_method( )
|
||||||
WHEN 'GET' THEN z2ui5_cl_fw_http_handler=>http_get( )
|
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
|
||||||
WHEN 'POST' THEN z2ui5_cl_fw_http_handler=>http_post( server->request->get_cdata( ) ) ).
|
WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( server->request->get_cdata( ) ) ).
|
||||||
|
|
||||||
server->response->set_header_field( name = `cache-control` value = `no-cache` ).
|
server->response->set_header_field( name = `cache-control` value = `no-cache` ).
|
||||||
server->response->set_cdata( lv_resp ).
|
server->response->set_cdata( lv_resp ).
|
||||||
|
@ -88,8 +88,8 @@ ENDMETHOD.
|
||||||
METHOD if_http_service_extension~handle_request.
|
METHOD if_http_service_extension~handle_request.
|
||||||
|
|
||||||
DATA(lv_resp) = SWITCH #( request->get_method( )
|
DATA(lv_resp) = SWITCH #( request->get_method( )
|
||||||
WHEN 'GET' THEN z2ui5_cl_fw_http_handler=>http_get( )
|
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
|
||||||
WHEN 'POST' THEN z2ui5_cl_fw_http_handler=>http_post( request->get_text( ) ) ).
|
WHEN 'POST' THEN z2ui5_cl_http_handler=>http_post( request->get_text( ) ) ).
|
||||||
|
|
||||||
response->set_header_field( i_name = `cache-control` i_value = `no-cache` ).
|
response->set_header_field( i_name = `cache-control` i_value = `no-cache` ).
|
||||||
response->set_text( lv_resp ).
|
response->set_text( lv_resp ).
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
"default": {
|
"default": {
|
||||||
"filename": "./abaplint.jsonc"
|
"filename": "./abaplint.jsonc"
|
||||||
},
|
},
|
||||||
"all_folder_min_check": {
|
"abap_standard_readiness": {
|
||||||
"filename": "./abaplint-basic.jsonc"
|
"filename": "./abaplint-standard_abap_readiness.jsonc"
|
||||||
},
|
},
|
||||||
"abap_cloud_readiness": {
|
"abap_cloud_readiness": {
|
||||||
"filename": "./abaplint-abap_cloud_readiness.jsonc"
|
"filename": "./abaplint-abap_cloud_readiness.jsonc"
|
||||||
|
|
|
@ -1,323 +0,0 @@
|
||||||
{
|
|
||||||
"global": {
|
|
||||||
"files": "/src/**/*.*"
|
|
||||||
},
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"url": "https://github.com/abapedia/steampunk-2305-api-intersect-702",
|
|
||||||
"folder": "/deps",
|
|
||||||
"files": "/src/**/*.*"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"syntax": {
|
|
||||||
"version": "v750",
|
|
||||||
"errorNamespace": "."
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"7bit_ascii": false,
|
|
||||||
"abapdoc": false,
|
|
||||||
"sql_value_conversion" : true,
|
|
||||||
"select_single_full_key" : true,
|
|
||||||
"strict_sql" : true,
|
|
||||||
"easy_to_find_messages" : true,
|
|
||||||
"fully_type_itabs" : false,
|
|
||||||
"align_parameters": false,
|
|
||||||
"smim_consistency": true,
|
|
||||||
"allowed_object_naming": true,
|
|
||||||
"allowed_object_types": {
|
|
||||||
"allowed": [
|
|
||||||
"CLAS",
|
|
||||||
"DEVC",
|
|
||||||
"INTF",
|
|
||||||
"TABL",
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"ambiguous_statement": true,
|
|
||||||
"avoid_use": false,
|
|
||||||
"begin_end_names": true,
|
|
||||||
"begin_single_include": true,
|
|
||||||
"call_transaction_authority_check": true,
|
|
||||||
"cds_comment_style": true,
|
|
||||||
"cds_legacy_view": true,
|
|
||||||
"cds_parser_error": true,
|
|
||||||
"chain_mainly_declarations": true,
|
|
||||||
"change_if_to_case": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"skipNames": []
|
|
||||||
},
|
|
||||||
"check_abstract": true,
|
|
||||||
"check_comments": false,
|
|
||||||
"check_ddic": true,
|
|
||||||
"check_include": true,
|
|
||||||
"check_subrc": false,
|
|
||||||
"check_syntax": true,
|
|
||||||
"check_text_elements": true,
|
|
||||||
"check_transformation_exists": true,
|
|
||||||
"class_attribute_names": false,
|
|
||||||
"classic_exceptions_overlap": true,
|
|
||||||
"cloud_types": true,
|
|
||||||
"colon_missing_space": true,
|
|
||||||
"commented_code": false,
|
|
||||||
"constant_classes": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"mapping": []
|
|
||||||
},
|
|
||||||
"constructor_visibility_public": true,
|
|
||||||
"contains_tab": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"spaces": 1
|
|
||||||
},
|
|
||||||
"cyclic_oo": false,
|
|
||||||
"cyclomatic_complexity": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"max": 25
|
|
||||||
},
|
|
||||||
"dangerous_statement": true,
|
|
||||||
"db_operation_in_loop": true,
|
|
||||||
"definitions_top": false,
|
|
||||||
"description_empty": true,
|
|
||||||
"double_space": false,
|
|
||||||
"downport": true,
|
|
||||||
"empty_line_in_statement": true,
|
|
||||||
"empty_statement": true,
|
|
||||||
"empty_structure": {
|
|
||||||
"loop": true,
|
|
||||||
"if": true,
|
|
||||||
"while": true,
|
|
||||||
"case": true,
|
|
||||||
"select": true,
|
|
||||||
"do": true,
|
|
||||||
"at": true,
|
|
||||||
"try": true,
|
|
||||||
"when": false
|
|
||||||
},
|
|
||||||
"exit_or_check": true,
|
|
||||||
"expand_macros": true,
|
|
||||||
"exporting": true,
|
|
||||||
"forbidden_identifier": true,
|
|
||||||
"forbidden_pseudo_and_pragma": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"pseudo": [],
|
|
||||||
"pragmas": [],
|
|
||||||
"ignoreGlobalClassDefinition": false,
|
|
||||||
"ignoreGlobalInterface": false
|
|
||||||
},
|
|
||||||
"form_tables_obsolete": true,
|
|
||||||
"fully_type_constants": {
|
|
||||||
"checkData": true
|
|
||||||
},
|
|
||||||
"function_module_recommendations": true,
|
|
||||||
"functional_writing": {
|
|
||||||
"ignoreExceptions": true
|
|
||||||
},
|
|
||||||
"global_class": true,
|
|
||||||
"identical_conditions": true,
|
|
||||||
"identical_contents": false,
|
|
||||||
"identical_descriptions": true,
|
|
||||||
"identical_form_names": true,
|
|
||||||
"if_in_if": true,
|
|
||||||
"implement_methods": true,
|
|
||||||
"in_statement_indentation": false,
|
|
||||||
"indentation": false,
|
|
||||||
"inline_data_old_versions": true,
|
|
||||||
"intf_referencing_clas": false,
|
|
||||||
"keep_single_parameter_on_one_line": false,
|
|
||||||
"keyword_case": false,
|
|
||||||
"line_break_multiple_parameters": false,
|
|
||||||
"line_break_style": true,
|
|
||||||
"line_length": false,
|
|
||||||
"line_only_punc": false,
|
|
||||||
"local_class_naming": false,
|
|
||||||
"local_testclass_consistency": true,
|
|
||||||
"local_variable_names": false,
|
|
||||||
"main_file_contents": true,
|
|
||||||
"many_parentheses": true,
|
|
||||||
"max_one_method_parameter_per_line": true,
|
|
||||||
"max_one_statement": true,
|
|
||||||
"message_exists": true,
|
|
||||||
"method_implemented_twice": true,
|
|
||||||
"method_length": false,
|
|
||||||
"method_overwrites_builtin": false,
|
|
||||||
"method_parameter_names": false,
|
|
||||||
"mix_returning": true,
|
|
||||||
"modify_only_own_db_tables": {
|
|
||||||
"reportDynamic": true,
|
|
||||||
"ownTables": "^[yz]"
|
|
||||||
},
|
|
||||||
"msag_consistency": true,
|
|
||||||
"names_no_dash": true,
|
|
||||||
"nesting": {
|
|
||||||
"depth": 7
|
|
||||||
},
|
|
||||||
"newline_between_methods": false,
|
|
||||||
"no_aliases": false,
|
|
||||||
"no_chained_assignment": true,
|
|
||||||
"no_external_form_calls": true,
|
|
||||||
"no_inline_in_optional_branches": false,
|
|
||||||
"no_public_attributes": false,
|
|
||||||
"no_yoda_conditions": false,
|
|
||||||
"nrob_consistency": true,
|
|
||||||
"object_naming": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"patternKind": "required",
|
|
||||||
"ignoreNames": [],
|
|
||||||
"ignorePatterns": [],
|
|
||||||
"clas": "^Z2UI5_C(L|X)",
|
|
||||||
"intf": "^Z2UI5_IF",
|
|
||||||
"prog": "^Z",
|
|
||||||
"fugr": "^Z",
|
|
||||||
"tabl": "^Z",
|
|
||||||
"ttyp": "^Z",
|
|
||||||
"dtel": "^Z",
|
|
||||||
"doma": "^Z",
|
|
||||||
"msag": "^Z",
|
|
||||||
"tran": "^Z",
|
|
||||||
"enqu": "^EZ",
|
|
||||||
"auth": "^Z",
|
|
||||||
"pinf": "^Z",
|
|
||||||
"idoc": "^Z",
|
|
||||||
"xslt": "^Z",
|
|
||||||
"ssfo": "^Z",
|
|
||||||
"ssst": "^Z",
|
|
||||||
"shlp": "^Z"
|
|
||||||
},
|
|
||||||
"obsolete_statement": true,
|
|
||||||
"omit_parameter_name": false,
|
|
||||||
"omit_preceding_zeros": true,
|
|
||||||
"omit_receiving": true,
|
|
||||||
"parser_702_chaining": true,
|
|
||||||
"parser_error": true,
|
|
||||||
"parser_missing_space": false,
|
|
||||||
"pragma_style": true,
|
|
||||||
"prefer_corresponding": true,
|
|
||||||
"prefer_inline": false,
|
|
||||||
"prefer_is_not": false,
|
|
||||||
"prefer_raise_exception_new": true,
|
|
||||||
"prefer_returning_to_exporting": false,
|
|
||||||
"prefer_xsdbool": false,
|
|
||||||
"preferred_compare_operator": true,
|
|
||||||
"prefix_is_current_class": {
|
|
||||||
"severity": "Warning"
|
|
||||||
},
|
|
||||||
"reduce_string_templates": true,
|
|
||||||
"release_idoc": true,
|
|
||||||
"remove_descriptions": {
|
|
||||||
"exclude": [],
|
|
||||||
"severity": "Error",
|
|
||||||
"ignoreExceptions": false,
|
|
||||||
"ignoreWorkflow": true
|
|
||||||
},
|
|
||||||
"rfc_error_handling": true,
|
|
||||||
"select_add_order_by": false,
|
|
||||||
"select_performance": true,
|
|
||||||
"selection_screen_naming": true,
|
|
||||||
"sequential_blank": {
|
|
||||||
"severity": "Warning"
|
|
||||||
},
|
|
||||||
"short_case": false,
|
|
||||||
"sicf_consistency": true,
|
|
||||||
"slow_parameter_passing": true,
|
|
||||||
"space_before_colon": true,
|
|
||||||
"space_before_dot": true,
|
|
||||||
"sql_escape_host_variables": true,
|
|
||||||
"start_at_tab": false,
|
|
||||||
"static_call_via_instance": {
|
|
||||||
"allowInTestclassIncludes": false
|
|
||||||
},
|
|
||||||
"superclass_final": true,
|
|
||||||
"superfluous_value": true,
|
|
||||||
"sy_modification": false,
|
|
||||||
"tabl_enhancement_category": true,
|
|
||||||
"try_without_catch": true,
|
|
||||||
"type_form_parameters": true,
|
|
||||||
"types_naming": false,
|
|
||||||
"uncaught_exception": true,
|
|
||||||
"unknown_types": true,
|
|
||||||
"unnecessary_chaining": false,
|
|
||||||
"unnecessary_pragma": true,
|
|
||||||
"unnecessary_return": true,
|
|
||||||
"unreachable_code": {
|
|
||||||
"exclude": ["z2ui5_cl_fw_utility.clas.testclasses.abap"]
|
|
||||||
},
|
|
||||||
"unsecure_fae": true,
|
|
||||||
"unused_ddic": true,
|
|
||||||
"unused_methods": true,
|
|
||||||
"unused_types": true,
|
|
||||||
"unused_variables": {
|
|
||||||
"severity": "Error",
|
|
||||||
"exclude": ["z2ui5_cl_fw_utility.clas.testclasses.abap"],
|
|
||||||
"skipNames": ["lv_dummy", "i_mv_editor"]
|
|
||||||
},
|
|
||||||
"use_bool_expression": true,
|
|
||||||
"use_class_based_exceptions": true,
|
|
||||||
"use_line_exists": false,
|
|
||||||
"use_new": false,
|
|
||||||
"when_others_last": true,
|
|
||||||
"whitespace_end": true,
|
|
||||||
"xml_consistency": true,
|
|
||||||
"forbidden_void_type": {
|
|
||||||
"check": [
|
|
||||||
"^boole_d$",
|
|
||||||
"^char10$",
|
|
||||||
"^char12$",
|
|
||||||
"^char2$",
|
|
||||||
"^char20$",
|
|
||||||
"^char30$",
|
|
||||||
"^char4$",
|
|
||||||
"^char50$",
|
|
||||||
"^char70$",
|
|
||||||
"^cl_abap_syst",
|
|
||||||
"^cl_aff_",
|
|
||||||
"^cl_aucv_test_runner_abstract$",
|
|
||||||
"^cl_aucv_test_runner_standard$",
|
|
||||||
"^cl_aunit_assert$",
|
|
||||||
"^cl_axt_dbtable$",
|
|
||||||
"^cl_blue_wb_utility$",
|
|
||||||
"^cl_oo_source$",
|
|
||||||
"^/ui2/cl_json$",
|
|
||||||
"^cl_saunit_internal_result$",
|
|
||||||
"^cl_srvd_wb_object_data$",
|
|
||||||
"^cl_wb_object_operator_factory$",
|
|
||||||
"^cl_wer_const$",
|
|
||||||
"^cl_xco_",
|
|
||||||
"^cx_aff_",
|
|
||||||
"^cx_wb_object_operation_error$",
|
|
||||||
"^cx_xco_",
|
|
||||||
"^flag$",
|
|
||||||
"^i18_a_langiso2$",
|
|
||||||
"^if_adt_lock_handle$",
|
|
||||||
"^if_aff_",
|
|
||||||
"^if_satc_ci_variant_access$",
|
|
||||||
"^if_saunit_internal_result$",
|
|
||||||
"^if_saunit_internal_result_type$",
|
|
||||||
"^if_srvd_types$",
|
|
||||||
"^if_wb_adt_plugin_resource_co$",
|
|
||||||
"^if_wb_object_data_selection_co$",
|
|
||||||
"^if_wb_object_operator$",
|
|
||||||
"^if_xco_",
|
|
||||||
"^int4$",
|
|
||||||
"^numc2$",
|
|
||||||
"^sabp_t_tadir_keys$",
|
|
||||||
"^sap_bool$",
|
|
||||||
"^srcsystem$",
|
|
||||||
"^stringtab$",
|
|
||||||
"^sychar01$",
|
|
||||||
"^sychar10$",
|
|
||||||
"^sychar70$",
|
|
||||||
"^sydatum$",
|
|
||||||
"^sylangu$",
|
|
||||||
"^syst_title$",
|
|
||||||
"^syuzeit$",
|
|
||||||
"^xubname$",
|
|
||||||
"^feld$",
|
|
||||||
"^abap_boolean$",
|
|
||||||
]
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
33
abaplint-standard_abap_readiness.jsonc
Normal file
33
abaplint-standard_abap_readiness.jsonc
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
"global": {
|
||||||
|
"files": "/src/**/*.*"
|
||||||
|
},
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/abapedia/steampunk-2305-api-intersect-702",
|
||||||
|
"folder": "/deps",
|
||||||
|
"files": "/src/**/*.*"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"syntax": {
|
||||||
|
"version": "v750",
|
||||||
|
"errorNamespace": "."
|
||||||
|
},
|
||||||
|
"rules": {
|
||||||
|
"begin_end_names": true,
|
||||||
|
"cds_parser_error": true,
|
||||||
|
"check_ddic": true,
|
||||||
|
"strict_sql": true,
|
||||||
|
"sql_escape_host_variables": true,
|
||||||
|
"check_include": true,
|
||||||
|
"check_syntax": true,
|
||||||
|
"cloud_types": true,
|
||||||
|
"global_class": true,
|
||||||
|
"implement_methods": true,
|
||||||
|
"method_implemented_twice": true,
|
||||||
|
"parser_error": true,
|
||||||
|
"superclass_final": true,
|
||||||
|
"unknown_types": true,
|
||||||
|
"xml_consistency": true
|
||||||
|
}
|
||||||
|
}
|
|
@ -1557,6 +1557,22 @@ CLASS ltcl_json_to_abap IMPLEMENTATION.
|
||||||
act = lv_mock
|
act = lv_mock
|
||||||
exp = '111111' ).
|
exp = '111111' ).
|
||||||
|
|
||||||
|
* DATA lv_mock_init TYPE t.
|
||||||
|
*
|
||||||
|
* CREATE OBJECT lo_nodes.
|
||||||
|
* lo_nodes->add( ' | |str || ' ).
|
||||||
|
*
|
||||||
|
* CREATE OBJECT lo_cut.
|
||||||
|
* lo_cut->to_abap(
|
||||||
|
* EXPORTING
|
||||||
|
* it_nodes = lo_nodes->sorted( )
|
||||||
|
* CHANGING
|
||||||
|
* c_container = lv_mock_init ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_equals(
|
||||||
|
* act = lv_mock_init
|
||||||
|
* exp = '000000' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD to_abap_value.
|
METHOD to_abap_value.
|
||||||
|
|
|
@ -392,6 +392,12 @@ CLASS z2ui5_cl_util_func DEFINITION
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE ty_data_element_texts.
|
VALUE(result) TYPE ty_data_element_texts.
|
||||||
|
|
||||||
|
CLASS-METHODS ui5_set_arg_string
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string_table
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -400,6 +406,26 @@ ENDCLASS.
|
||||||
|
|
||||||
CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD ui5_set_arg_string.
|
||||||
|
|
||||||
|
IF val IS NOT INITIAL.
|
||||||
|
|
||||||
|
LOOP AT val REFERENCE INTO DATA(lr_arg).
|
||||||
|
DATA(lv_new) = lr_arg->*.
|
||||||
|
IF lv_new IS INITIAL.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
IF lv_new(1) <> `$` AND lv_new(1) <> `{`.
|
||||||
|
lv_new = `"` && lv_new && `"`.
|
||||||
|
ENDIF.
|
||||||
|
result = result && `, ` && lv_new.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
result = result && `)`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD app_get_url.
|
METHOD app_get_url.
|
||||||
|
|
||||||
|
@ -1457,7 +1483,7 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
||||||
TRY.
|
TRY.
|
||||||
|
|
||||||
TRY.
|
TRY.
|
||||||
data(lv_classname) = `CL_SYSTEM_UUID`.
|
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
|
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
|
||||||
RECEIVING
|
RECEIVING
|
||||||
uuid = uuid.
|
uuid = uuid.
|
||||||
|
|
236
src/01/02/z2ui5_cl_fw_app.clas.abap
Normal file
236
src/01/02/z2ui5_cl_fw_app.clas.abap
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
CLASS z2ui5_cl_fw_app DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_next2,
|
||||||
|
BEGIN OF s_view,
|
||||||
|
xml TYPE string,
|
||||||
|
check_destroy TYPE abap_bool,
|
||||||
|
check_update_model TYPE abap_bool,
|
||||||
|
END OF s_view,
|
||||||
|
BEGIN OF s_view_nest,
|
||||||
|
xml TYPE string,
|
||||||
|
id TYPE string,
|
||||||
|
method_insert TYPE string,
|
||||||
|
method_destroy TYPE string,
|
||||||
|
check_destroy TYPE abap_bool,
|
||||||
|
check_update_model TYPE abap_bool,
|
||||||
|
END OF s_view_nest,
|
||||||
|
BEGIN OF s_view_nest2,
|
||||||
|
xml TYPE string,
|
||||||
|
id TYPE string,
|
||||||
|
method_insert TYPE string,
|
||||||
|
method_destroy TYPE string,
|
||||||
|
check_destroy TYPE abap_bool,
|
||||||
|
check_update_model TYPE abap_bool,
|
||||||
|
END OF s_view_nest2,
|
||||||
|
BEGIN OF s_popup,
|
||||||
|
xml TYPE string,
|
||||||
|
id TYPE string,
|
||||||
|
check_destroy TYPE abap_bool,
|
||||||
|
check_update_model TYPE abap_bool,
|
||||||
|
END OF s_popup,
|
||||||
|
BEGIN OF s_popover,
|
||||||
|
xml TYPE string,
|
||||||
|
id TYPE string,
|
||||||
|
open_by_id TYPE string,
|
||||||
|
check_destroy TYPE abap_bool,
|
||||||
|
check_update_model TYPE abap_bool,
|
||||||
|
END OF s_popover,
|
||||||
|
BEGIN OF s_msg_box,
|
||||||
|
type TYPE string,
|
||||||
|
text TYPE string,
|
||||||
|
END OF s_msg_box,
|
||||||
|
BEGIN OF s_msg_toast,
|
||||||
|
text TYPE string,
|
||||||
|
END OF s_msg_toast,
|
||||||
|
END OF ty_s_next2.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_next,
|
||||||
|
o_app_call TYPE REF TO z2ui5_if_app,
|
||||||
|
o_app_leave TYPE REF TO z2ui5_if_app,
|
||||||
|
s_set TYPE ty_s_next2,
|
||||||
|
END OF ty_s_next.
|
||||||
|
|
||||||
|
DATA mo_http_post TYPE REF TO z2ui5_cl_fw_http_post.
|
||||||
|
|
||||||
|
DATA ms_db TYPE z2ui5_cl_fw_draft=>ty_s_db.
|
||||||
|
DATA ms_actual TYPE z2ui5_if_client=>ty_s_actual.
|
||||||
|
DATA ms_next TYPE ty_s_next.
|
||||||
|
|
||||||
|
METHODS factory_system_startup
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS factory_system_error
|
||||||
|
IMPORTING
|
||||||
|
ix TYPE REF TO cx_root
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS factory_first_start
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS factory_by_frontend
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS factory_app_leave
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS factory_app_call
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS constructor
|
||||||
|
IMPORTING
|
||||||
|
val TYPE REF TO z2ui5_cl_fw_http_post.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
|
||||||
|
|
||||||
|
METHODS app_next_factory
|
||||||
|
IMPORTING
|
||||||
|
app TYPE REF TO z2ui5_if_app
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD app_next_factory.
|
||||||
|
|
||||||
|
app->id_draft = COND #( WHEN app->id_draft IS INITIAL THEN z2ui5_cl_util_func=>uuid_get_c32( ) ELSE app->id_draft ).
|
||||||
|
|
||||||
|
result = NEW #( mo_http_post ).
|
||||||
|
|
||||||
|
result->ms_db-app = app.
|
||||||
|
result->ms_db-id = app->id_draft.
|
||||||
|
result->ms_db-id_prev = ms_db-id.
|
||||||
|
result->ms_db-id_prev_app = ms_db-id.
|
||||||
|
result->ms_actual-check_on_navigated = abap_true.
|
||||||
|
result->ms_next-s_set = ms_next-s_set.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
DATA(ls_db_next) = z2ui5_cl_fw_draft=>load_app( app->id_draft ).
|
||||||
|
result->ms_db-t_attri = ls_db_next-t_attri.
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
mo_http_post = val.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_app_call.
|
||||||
|
|
||||||
|
result = app_next_factory( ms_next-o_app_call ).
|
||||||
|
result->ms_db-id_prev_app_stack = ms_db-id.
|
||||||
|
|
||||||
|
CLEAR ms_next.
|
||||||
|
IF ms_db-app IS BOUND.
|
||||||
|
z2ui5_cl_fw_draft=>create( id = ms_db-id db = ms_db ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CLEAR result->ms_db-t_attri.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_app_leave.
|
||||||
|
|
||||||
|
result = app_next_factory( ms_next-o_app_leave ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
DATA(ls_draft) = z2ui5_cl_fw_draft=>read( id = result->ms_db-id check_load_app = abap_false ).
|
||||||
|
result->ms_db-id_prev_app_stack = ls_draft-id_prev_app_stack.
|
||||||
|
CATCH cx_root.
|
||||||
|
result->ms_db-id_prev_app_stack = ms_db-id_prev_app_stack.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
CLEAR ms_next.
|
||||||
|
z2ui5_cl_fw_draft=>create( id = ms_db-id db = ms_db ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_by_frontend.
|
||||||
|
|
||||||
|
result = NEW #( mo_http_post ).
|
||||||
|
result->ms_db = z2ui5_cl_fw_draft=>load_app( mo_http_post->ms_request-s_frontend-id ).
|
||||||
|
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
|
result->ms_db-id_prev = mo_http_post->ms_request-s_frontend-id.
|
||||||
|
result->ms_actual-viewname = mo_http_post->ms_request-s_frontend-viewname.
|
||||||
|
|
||||||
|
NEW z2ui5_cl_fw_http_mapper( )->model_front_to_back(
|
||||||
|
viewname = mo_http_post->ms_request-s_frontend-viewname
|
||||||
|
app = result->ms_db-app
|
||||||
|
t_attri = result->ms_db-t_attri
|
||||||
|
ajson_in = mo_http_post->ms_request-model
|
||||||
|
).
|
||||||
|
|
||||||
|
result->ms_actual-event = mo_http_post->ms_request-s_control-event.
|
||||||
|
result->ms_actual-t_event_arg = mo_http_post->ms_request-s_control-t_event_arg.
|
||||||
|
result->ms_actual-check_on_navigated = abap_false.
|
||||||
|
result->ms_db-check_attri = abap_false.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_first_start.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
result = NEW #( mo_http_post ).
|
||||||
|
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
|
|
||||||
|
CREATE OBJECT result->ms_db-app TYPE (mo_http_post->ms_request-s_control-app_start).
|
||||||
|
result->ms_db-app->id_draft = result->ms_db-id.
|
||||||
|
result->ms_actual-check_on_navigated = abap_true.
|
||||||
|
|
||||||
|
CATCH cx_root.
|
||||||
|
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||||
|
EXPORTING
|
||||||
|
val = `App with name ` && mo_http_post->ms_request-s_control-app_start && ` not found...`.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_system_error.
|
||||||
|
|
||||||
|
result = NEW #( mo_http_post ).
|
||||||
|
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
|
result->ms_actual-check_on_navigated = abap_true.
|
||||||
|
result->ms_next-o_app_call = z2ui5_cl_fw_app_error=>factory( ix ).
|
||||||
|
result = result->factory_app_call( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory_system_startup.
|
||||||
|
|
||||||
|
result = NEW #( mo_http_post ).
|
||||||
|
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
|
result->ms_actual-check_on_navigated = abap_true.
|
||||||
|
result->ms_db-app = z2ui5_cl_fw_app_startup=>factory( ).
|
||||||
|
result->ms_db-app->id_draft = result->ms_db-id.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
71
src/01/02/z2ui5_cl_fw_app.clas.testclasses.abap
Normal file
71
src/01/02/z2ui5_cl_fw_app.clas.testclasses.abap
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
*CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||||
|
* DURATION LONG
|
||||||
|
* RISK LEVEL HARMLESS.
|
||||||
|
*
|
||||||
|
* PRIVATE SECTION.
|
||||||
|
* METHODS test_req_begin_fw_start FOR TESTING RAISING cx_static_check.
|
||||||
|
* METHODS test_req_begin_app_start FOR TESTING RAISING cx_static_check.
|
||||||
|
* METHODS test_req_end FOR TESTING RAISING cx_static_check.
|
||||||
|
*
|
||||||
|
*ENDCLASS.
|
||||||
|
*
|
||||||
|
*CLASS z2ui5_cl_fw_controller DEFINITION LOCAL FRIENDS ltcl_unit_test.
|
||||||
|
*
|
||||||
|
*CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
|
*
|
||||||
|
* METHOD test_req_begin_fw_start.
|
||||||
|
*
|
||||||
|
* DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https:/url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100","VERSION":"com.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
||||||
|
*
|
||||||
|
* DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_bound( lo_handler->ms_db-app ).
|
||||||
|
*
|
||||||
|
* DATA(lo_app_fw) = CAST z2ui5_cl_fw_app_startup( lo_handler->ms_db-app ) ##NEEDED.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
* METHOD test_req_begin_app_start.
|
||||||
|
*
|
||||||
|
* DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https://url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100&app_start=z2ui5_cl_app_hello_world","VERSION":"c` &&
|
||||||
|
* `om.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
||||||
|
*
|
||||||
|
* DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
||||||
|
*
|
||||||
|
* cl_abap_unit_assert=>assert_bound( lo_handler->ms_db-app ).
|
||||||
|
*
|
||||||
|
* DATA(lo_app_fw) = CAST z2ui5_cl_app_hello_world( lo_handler->ms_db-app ) ##NEEDED.
|
||||||
|
*
|
||||||
|
* ENDMETHOD.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* METHOD test_req_end.
|
||||||
|
*
|
||||||
|
* DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https://url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100&app_start=z2ui5_cl_app_hello_world","VERSION":"c` &&
|
||||||
|
* `om.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
||||||
|
*
|
||||||
|
* DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
||||||
|
*
|
||||||
|
* CAST z2ui5_if_app( lo_handler->ms_db-app )->main( NEW z2ui5_cl_fw_client( lo_handler ) ).
|
||||||
|
*
|
||||||
|
* DATA(lv_resp) = lo_handler->request_end( ).
|
||||||
|
*
|
||||||
|
* IF lv_resp NS `NAME`.
|
||||||
|
* cl_abap_unit_assert=>fail( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* IF lv_resp NS `EDIT`.
|
||||||
|
* cl_abap_unit_assert=>fail( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* IF lv_resp NS `ID`.
|
||||||
|
* cl_abap_unit_assert=>fail( ).
|
||||||
|
* ENDIF.
|
||||||
|
*
|
||||||
|
* IF lv_resp NS `mvc:View`.
|
||||||
|
* cl_abap_unit_assert=>fail( ).
|
||||||
|
* 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_FW_CONTROLLER</CLSNAME>
|
<CLSNAME>Z2UI5_CL_FW_APP</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abap2UI5 - handler</DESCRIPT>
|
<DESCRIPT>abap2UI5 - controller</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
|
@ -63,6 +63,24 @@ CLASS z2ui5_cl_fw_binding DEFINITION
|
||||||
DATA mo_custom_mapper TYPE REF TO z2ui5_if_ajson_mapping.
|
DATA mo_custom_mapper TYPE REF TO z2ui5_if_ajson_mapping.
|
||||||
DATA mo_custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping.
|
DATA mo_custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping.
|
||||||
|
|
||||||
|
class-METHODS bind_tab_cell
|
||||||
|
IMPORTING
|
||||||
|
iv_name TYPE string
|
||||||
|
i_tab_index TYPE i
|
||||||
|
i_tab TYPE STANDARD TABLE
|
||||||
|
i_val TYPE data
|
||||||
|
RETURNING
|
||||||
|
VALUE(r_result) TYPE string.
|
||||||
|
|
||||||
|
class-METHODS bind_struc_comp
|
||||||
|
IMPORTING
|
||||||
|
iv_name TYPE string
|
||||||
|
i_struc TYPE data
|
||||||
|
i_val TYPE data
|
||||||
|
RETURNING
|
||||||
|
VALUE(r_result) TYPE string.
|
||||||
|
|
||||||
|
|
||||||
CLASS-METHODS update_attri
|
CLASS-METHODS update_attri
|
||||||
IMPORTING
|
IMPORTING
|
||||||
t_attri TYPE ty_t_attri
|
t_attri TYPE ty_t_attri
|
||||||
|
@ -134,6 +152,63 @@ ENDCLASS.
|
||||||
|
|
||||||
CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
|
CLASS Z2UI5_CL_FW_BINDING IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD bind_struc_comp.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ele> TYPE any.
|
||||||
|
FIELD-SYMBOLS <row> TYPE any.
|
||||||
|
DATA lr_ref_in TYPE REF TO data.
|
||||||
|
DATA lr_ref TYPE REF TO data.
|
||||||
|
|
||||||
|
ASSIGN i_struc TO <row>.
|
||||||
|
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( i_struc ).
|
||||||
|
|
||||||
|
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
||||||
|
|
||||||
|
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
||||||
|
lr_ref_in = REF #( <ele> ).
|
||||||
|
|
||||||
|
lr_ref = REF #( i_val ).
|
||||||
|
IF lr_ref = lr_ref_in.
|
||||||
|
r_result = `{` && iv_name && '/' && <comp>-name && `}`.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD bind_tab_cell.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS <ele> TYPE any.
|
||||||
|
FIELD-SYMBOLS <row> TYPE any.
|
||||||
|
DATA lr_ref_in TYPE REF TO data.
|
||||||
|
DATA lr_ref TYPE REF TO data.
|
||||||
|
|
||||||
|
ASSIGN i_tab[ i_tab_index ] TO <row>.
|
||||||
|
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <row> ).
|
||||||
|
|
||||||
|
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
||||||
|
|
||||||
|
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
||||||
|
lr_ref_in = REF #( <ele> ).
|
||||||
|
|
||||||
|
lr_ref = REF #( i_val ).
|
||||||
|
IF lr_ref = lr_ref_in.
|
||||||
|
r_result = `{` && iv_name && '/' && shift_right( CONV string( i_tab_index - 1 ) ) && '/' && <comp>-name && `}`.
|
||||||
|
RETURN.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
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`.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD bind.
|
METHOD bind.
|
||||||
|
|
||||||
|
|
|
@ -7,36 +7,14 @@ CLASS z2ui5_cl_fw_client DEFINITION
|
||||||
|
|
||||||
INTERFACES z2ui5_if_client.
|
INTERFACES z2ui5_if_client.
|
||||||
|
|
||||||
DATA mo_handler TYPE REF TO z2ui5_cl_fw_controller.
|
DATA mo_app TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
METHODS constructor
|
METHODS constructor
|
||||||
IMPORTING
|
IMPORTING
|
||||||
handler TYPE REF TO z2ui5_cl_fw_controller.
|
handler TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
METHODS set_arg_string
|
|
||||||
IMPORTING
|
|
||||||
val TYPE string_table
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
METHODS bind_tab_cell
|
|
||||||
IMPORTING
|
|
||||||
iv_name TYPE string
|
|
||||||
i_tab_index TYPE i
|
|
||||||
i_tab TYPE STANDARD TABLE
|
|
||||||
i_val TYPE data
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
|
|
||||||
METHODS bind_struc_comp
|
|
||||||
IMPORTING
|
|
||||||
iv_name TYPE string
|
|
||||||
i_struc TYPE data
|
|
||||||
i_val TYPE data
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE string.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -46,128 +24,50 @@ ENDCLASS.
|
||||||
CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD bind_struc_comp.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <ele> TYPE any.
|
|
||||||
FIELD-SYMBOLS <row> TYPE any.
|
|
||||||
DATA lr_ref_in TYPE REF TO data.
|
|
||||||
DATA lr_ref TYPE REF TO data.
|
|
||||||
|
|
||||||
ASSIGN i_struc TO <row>.
|
|
||||||
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( i_struc ).
|
|
||||||
|
|
||||||
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
|
||||||
|
|
||||||
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
|
||||||
lr_ref_in = REF #( <ele> ).
|
|
||||||
|
|
||||||
lr_ref = REF #( i_val ).
|
|
||||||
IF lr_ref = lr_ref_in.
|
|
||||||
r_result = `{` && iv_name && '/' && <comp>-name && `}`.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
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`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD bind_tab_cell.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS <ele> TYPE any.
|
|
||||||
FIELD-SYMBOLS <row> TYPE any.
|
|
||||||
DATA lr_ref_in TYPE REF TO data.
|
|
||||||
DATA lr_ref TYPE REF TO data.
|
|
||||||
|
|
||||||
ASSIGN i_tab[ i_tab_index ] TO <row>.
|
|
||||||
DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <row> ).
|
|
||||||
|
|
||||||
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
|
||||||
|
|
||||||
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
|
||||||
lr_ref_in = REF #( <ele> ).
|
|
||||||
|
|
||||||
lr_ref = REF #( i_val ).
|
|
||||||
IF lr_ref = lr_ref_in.
|
|
||||||
r_result = `{` && iv_name && '/' && shift_right( CONV string( i_tab_index - 1 ) ) && '/' && <comp>-name && `}`.
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
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`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD constructor.
|
METHOD constructor.
|
||||||
|
|
||||||
mo_handler = handler.
|
mo_app = handler.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD set_arg_string.
|
|
||||||
|
|
||||||
IF val IS NOT INITIAL.
|
|
||||||
|
|
||||||
LOOP AT val REFERENCE INTO DATA(lr_arg).
|
|
||||||
DATA(lv_new) = lr_arg->*.
|
|
||||||
IF lv_new IS INITIAL.
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
IF lv_new(1) <> `$` AND lv_new(1) <> `{`.
|
|
||||||
lv_new = `"` && lv_new && `"`.
|
|
||||||
ENDIF.
|
|
||||||
result = result && `, ` && lv_new.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
result = result && `)`.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~get.
|
METHOD z2ui5_if_client~get.
|
||||||
|
|
||||||
result = VALUE #(
|
result = VALUE #(
|
||||||
event = mo_handler->ms_actual-event
|
event = mo_app->ms_actual-event
|
||||||
check_launchpad_active = mo_handler->ms_actual-check_launchpad_active
|
check_launchpad_active = mo_app->mo_http_post->ms_request-s_control-check_launchpad
|
||||||
t_event_arg = mo_handler->ms_actual-t_event_arg
|
t_event_arg = mo_app->ms_actual-t_event_arg
|
||||||
s_draft = CORRESPONDING #( mo_handler->ms_db )
|
s_draft = CORRESPONDING #( mo_app->ms_db )
|
||||||
check_on_navigated = mo_handler->ms_actual-check_on_navigated
|
check_on_navigated = mo_app->ms_actual-check_on_navigated
|
||||||
s_config = z2ui5_cl_fw_controller=>ss_config ).
|
s_config = mo_app->mo_http_post->ms_request-s_frontend-s_config
|
||||||
|
).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~get_app.
|
METHOD z2ui5_if_client~get_app.
|
||||||
result = CAST #( z2ui5_cl_fw_db=>load_app( id )-app ).
|
result = CAST #( z2ui5_cl_fw_draft=>load_app( id )-app ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~message_box_display.
|
METHOD z2ui5_if_client~message_box_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_msg_box = VALUE #( text = text type = type ).
|
mo_app->ms_next-s_set-s_msg_box = VALUE #( text = text type = type ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~message_toast_display.
|
METHOD z2ui5_if_client~message_toast_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_msg_toast = VALUE #( text = text ).
|
mo_app->ms_next-s_set-s_msg_toast = VALUE #( text = text ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nav_app_call.
|
METHOD z2ui5_if_client~nav_app_call.
|
||||||
mo_handler->ms_next-o_app_call = app.
|
mo_app->ms_next-o_app_call = app.
|
||||||
IF app->id_draft IS INITIAL.
|
IF app->id_draft IS INITIAL.
|
||||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -176,7 +76,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nav_app_leave.
|
METHOD z2ui5_if_client~nav_app_leave.
|
||||||
mo_handler->ms_next-o_app_leave = app.
|
mo_app->ms_next-o_app_leave = app.
|
||||||
IF app->id_draft IS INITIAL.
|
IF app->id_draft IS INITIAL.
|
||||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -186,114 +86,114 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest2_view_destroy.
|
METHOD z2ui5_if_client~nest2_view_destroy.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest2_view_display.
|
METHOD z2ui5_if_client~nest2_view_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-xml = val.
|
mo_app->ms_next-s_set-s_view_nest2-xml = val.
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-id = id.
|
mo_app->ms_next-s_set-s_view_nest2-id = id.
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-method_destroy = method_destroy.
|
mo_app->ms_next-s_set-s_view_nest2-method_destroy = method_destroy.
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-method_insert = method_insert.
|
mo_app->ms_next-s_set-s_view_nest2-method_insert = method_insert.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest2_view_model_update.
|
METHOD z2ui5_if_client~nest2_view_model_update.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest_view_destroy.
|
METHOD z2ui5_if_client~nest_view_destroy.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_view_nest-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest_view_display.
|
METHOD z2ui5_if_client~nest_view_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest-xml = val.
|
mo_app->ms_next-s_set-s_view_nest-xml = val.
|
||||||
mo_handler->ms_next-s_set-s_view_nest-id = id.
|
mo_app->ms_next-s_set-s_view_nest-id = id.
|
||||||
mo_handler->ms_next-s_set-s_view_nest-method_destroy = method_destroy.
|
mo_app->ms_next-s_set-s_view_nest-method_destroy = method_destroy.
|
||||||
mo_handler->ms_next-s_set-s_view_nest-method_insert = method_insert.
|
mo_app->ms_next-s_set-s_view_nest-method_insert = method_insert.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~nest_view_model_update.
|
METHOD z2ui5_if_client~nest_view_model_update.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view_nest-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_view_nest-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popover_destroy.
|
METHOD z2ui5_if_client~popover_destroy.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popover-check_destroy = abap_true.
|
mo_app->ms_next-s_set-s_popover-check_destroy = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popover_display.
|
METHOD z2ui5_if_client~popover_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popover-check_destroy = abap_false.
|
mo_app->ms_next-s_set-s_popover-check_destroy = abap_false.
|
||||||
mo_handler->ms_next-s_set-s_popover-xml = xml.
|
mo_app->ms_next-s_set-s_popover-xml = xml.
|
||||||
mo_handler->ms_next-s_set-s_popover-open_by_id = by_id.
|
mo_app->ms_next-s_set-s_popover-open_by_id = by_id.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popover_model_update.
|
METHOD z2ui5_if_client~popover_model_update.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popover-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_popover-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popup_destroy.
|
METHOD z2ui5_if_client~popup_destroy.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popup = VALUE #( check_destroy = abap_true ).
|
mo_app->ms_next-s_set-s_popup = VALUE #( check_destroy = abap_true ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popup_display.
|
METHOD z2ui5_if_client~popup_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popup-check_destroy = abap_false.
|
mo_app->ms_next-s_set-s_popup-check_destroy = abap_false.
|
||||||
mo_handler->ms_next-s_set-s_popup-xml = val.
|
mo_app->ms_next-s_set-s_popup-xml = val.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~popup_model_update.
|
METHOD z2ui5_if_client~popup_model_update.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_popup-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_popup-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~view_destroy.
|
METHOD z2ui5_if_client~view_destroy.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view-check_destroy = abap_true.
|
mo_app->ms_next-s_set-s_view-check_destroy = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~view_display.
|
METHOD z2ui5_if_client~view_display.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view-xml = val.
|
mo_app->ms_next-s_set-s_view-xml = val.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~view_model_update.
|
METHOD z2ui5_if_client~view_model_update.
|
||||||
|
|
||||||
mo_handler->ms_next-s_set-s_view-check_update_model = abap_true.
|
mo_app->ms_next-s_set-s_view-check_update_model = abap_true.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -304,7 +204,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
DATA(lv_name) = z2ui5_if_client~_bind( val = tab
|
DATA(lv_name) = z2ui5_if_client~_bind( val = tab
|
||||||
path = abap_true ).
|
path = abap_true ).
|
||||||
result = bind_tab_cell(
|
result = z2ui5_cl_fw_binding=>bind_tab_cell(
|
||||||
iv_name = lv_name
|
iv_name = lv_name
|
||||||
i_tab_index = tab_index
|
i_tab_index = tab_index
|
||||||
i_tab = tab
|
i_tab = tab
|
||||||
|
@ -313,23 +213,23 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF struc IS NOT INITIAL.
|
* IF struc IS NOT INITIAL.
|
||||||
|
*
|
||||||
DATA(lv_name_struc) = z2ui5_if_client~_bind_edit( val = struc
|
* DATA(lv_name_struc) = z2ui5_if_client~_bind_edit( val = struc
|
||||||
path = abap_true ).
|
* path = abap_true ).
|
||||||
result = bind_struc_comp(
|
* result = z2ui5_cl_fw_binding=>bind_struc_comp(
|
||||||
iv_name = lv_name_struc
|
* iv_name = lv_name_struc
|
||||||
i_struc = struc
|
* i_struc = struc
|
||||||
i_val = val ).
|
* i_val = val ).
|
||||||
|
*
|
||||||
RETURN.
|
* RETURN.
|
||||||
|
*
|
||||||
ENDIF.
|
* ENDIF.
|
||||||
|
|
||||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||||
app = mo_handler->ms_db-app
|
app = mo_app->ms_db-app
|
||||||
attri = mo_handler->ms_db-t_attri
|
attri = mo_app->ms_db-t_attri
|
||||||
check_attri = mo_handler->ms_db-check_attri
|
check_attri = mo_app->ms_db-check_attri
|
||||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||||
data = val
|
data = val
|
||||||
custom_mapper = custom_mapper
|
custom_mapper = custom_mapper
|
||||||
|
@ -337,8 +237,8 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
).
|
).
|
||||||
|
|
||||||
result = lo_binder->main( ).
|
result = lo_binder->main( ).
|
||||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
mo_app->ms_db-t_attri = lo_binder->mt_attri.
|
||||||
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
|
mo_app->ms_db-check_attri = lo_binder->mv_check_attri.
|
||||||
|
|
||||||
IF path = abap_false.
|
IF path = abap_false.
|
||||||
result = `{` && result && `}`.
|
result = `{` && result && `}`.
|
||||||
|
@ -349,11 +249,11 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD z2ui5_if_client~_bind_clear.
|
METHOD z2ui5_if_client~_bind_clear.
|
||||||
|
|
||||||
mo_handler->ms_db-t_attri[ name = val ]-check_dissolved = abap_false.
|
mo_app->ms_db-t_attri[ name = val ]-check_dissolved = abap_false.
|
||||||
|
|
||||||
LOOP AT mo_handler->ms_db-t_attri REFERENCE INTO DATA(lr_bind2).
|
LOOP AT mo_app->ms_db-t_attri REFERENCE INTO DATA(lr_bind2).
|
||||||
IF lr_bind2->name CS val && `-`.
|
IF lr_bind2->name CS val && `-`.
|
||||||
DELETE mo_handler->ms_db-t_attri.
|
DELETE mo_app->ms_db-t_attri.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -363,7 +263,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
CASE val.
|
CASE val.
|
||||||
WHEN z2ui5_if_client~cs_clear-view.
|
WHEN z2ui5_if_client~cs_clear-view.
|
||||||
CLEAR mo_handler->ms_next-s_set-s_view.
|
CLEAR mo_app->ms_next-s_set-s_view.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -372,49 +272,43 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
|
|
||||||
IF tab IS NOT INITIAL.
|
IF tab IS NOT INITIAL.
|
||||||
|
|
||||||
DATA(lv_name) = z2ui5_if_client~_bind_edit( val = tab
|
DATA(lv_name) = z2ui5_if_client~_bind_edit( val = tab path = abap_true ).
|
||||||
path = abap_true ).
|
result = z2ui5_cl_fw_binding=>bind_tab_cell(
|
||||||
result = bind_tab_cell(
|
|
||||||
iv_name = lv_name
|
iv_name = lv_name
|
||||||
i_tab_index = tab_index
|
i_tab_index = tab_index
|
||||||
i_tab = tab
|
i_tab = tab
|
||||||
i_val = val ).
|
i_val = val ).
|
||||||
|
|
||||||
RETURN.
|
* ELSEIF struc IS NOT INITIAL.
|
||||||
|
|
||||||
ENDIF.
|
* DATA(lv_name_struc) = z2ui5_if_client~_bind_edit( val = struc path = abap_true ).
|
||||||
|
* result = z2ui5_cl_fw_binding=>bind_struc_comp(
|
||||||
|
* iv_name = lv_name_struc
|
||||||
|
* i_struc = struc
|
||||||
|
* i_val = val ).
|
||||||
|
|
||||||
IF struc IS NOT INITIAL.
|
ELSE.
|
||||||
|
|
||||||
DATA(lv_name_struc) = z2ui5_if_client~_bind_edit( val = struc
|
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||||
path = abap_true ).
|
app = mo_app->ms_db-app
|
||||||
result = bind_struc_comp(
|
attri = mo_app->ms_db-t_attri
|
||||||
iv_name = lv_name_struc
|
check_attri = mo_app->ms_db-check_attri
|
||||||
i_struc = struc
|
type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||||
i_val = val ).
|
data = val
|
||||||
|
view = view
|
||||||
|
custom_mapper = custom_mapper
|
||||||
|
custom_mapper_back = custom_mapper_back
|
||||||
|
custom_filter = custom_filter
|
||||||
|
).
|
||||||
|
|
||||||
RETURN.
|
result = lo_binder->main( ).
|
||||||
|
mo_app->ms_db-t_attri = lo_binder->mt_attri.
|
||||||
|
mo_app->ms_db-check_attri = lo_binder->mv_check_attri.
|
||||||
|
|
||||||
ENDIF.
|
IF path = abap_false.
|
||||||
|
result = `{` && result && `}`.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
|
||||||
app = mo_handler->ms_db-app
|
|
||||||
attri = mo_handler->ms_db-t_attri
|
|
||||||
check_attri = mo_handler->ms_db-check_attri
|
|
||||||
type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
|
||||||
data = val
|
|
||||||
view = view
|
|
||||||
custom_mapper = custom_mapper
|
|
||||||
custom_mapper_back = custom_mapper_back
|
|
||||||
custom_filter = custom_filter
|
|
||||||
).
|
|
||||||
|
|
||||||
result = lo_binder->main( ).
|
|
||||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
|
||||||
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
|
|
||||||
|
|
||||||
IF path = abap_false.
|
|
||||||
result = `{` && result && `}`.
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -423,9 +317,9 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
METHOD z2ui5_if_client~_bind_local.
|
METHOD z2ui5_if_client~_bind_local.
|
||||||
|
|
||||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||||
app = mo_handler->ms_db-app
|
app = mo_app->ms_db-app
|
||||||
attri = mo_handler->ms_db-t_attri
|
attri = mo_app->ms_db-t_attri
|
||||||
check_attri = mo_handler->ms_db-check_attri
|
check_attri = mo_app->ms_db-check_attri
|
||||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_time
|
type = z2ui5_cl_fw_binding=>cs_bind_type-one_time
|
||||||
data = val
|
data = val
|
||||||
custom_mapper = custom_mapper
|
custom_mapper = custom_mapper
|
||||||
|
@ -433,8 +327,8 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
).
|
).
|
||||||
|
|
||||||
result = lo_binder->main( ).
|
result = lo_binder->main( ).
|
||||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
mo_app->ms_db-t_attri = lo_binder->mt_attri.
|
||||||
mo_handler->ms_db-check_attri = lo_binder->mv_check_attri.
|
mo_app->ms_db-check_attri = lo_binder->mv_check_attri.
|
||||||
|
|
||||||
IF path = abap_false.
|
IF path = abap_false.
|
||||||
result = `{` && result && `}`.
|
result = `{` && result && `}`.
|
||||||
|
@ -446,14 +340,14 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||||
METHOD z2ui5_if_client~_event.
|
METHOD z2ui5_if_client~_event.
|
||||||
|
|
||||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_util_func=>boolean_abap_2_json( check_view_destroy ) && ` }`.
|
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_util_func=>boolean_abap_2_json( check_view_destroy ) && ` }`.
|
||||||
result = result && set_arg_string( t_arg ).
|
result = result && z2ui5_cl_util_func=>ui5_set_arg_string( t_arg ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_client~_event_client.
|
METHOD z2ui5_if_client~_event_client.
|
||||||
|
|
||||||
result = `onEventFrontend( { 'EVENT' : '` && val && `' }` && set_arg_string( t_arg ).
|
result = `onEventFrontend( { 'EVENT' : '` && val && `' }` && z2ui5_cl_util_func=>ui5_set_arg_string( t_arg ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -11,10 +11,10 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD first_test.
|
METHOD first_test.
|
||||||
|
|
||||||
DATA(lo_handler) = NEW z2ui5_cl_fw_controller( ).
|
* DATA(lo_handler) = NEW z2ui5_cl_fw_controller( ).
|
||||||
DATA(lo_client) = NEW z2ui5_cl_fw_client( lo_handler ).
|
* DATA(lo_client) = NEW z2ui5_cl_fw_client( lo_handler ).
|
||||||
|
*
|
||||||
DATA(li_client) = CAST z2ui5_if_client( lo_client ) ##NEEDED.
|
* DATA(li_client) = CAST z2ui5_if_client( lo_client ) ##NEEDED.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -1,401 +0,0 @@
|
||||||
CLASS z2ui5_cl_fw_controller DEFINITION
|
|
||||||
PUBLIC
|
|
||||||
FINAL
|
|
||||||
CREATE PUBLIC.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
TYPES:
|
|
||||||
BEGIN OF ty_s_next2,
|
|
||||||
BEGIN OF s_view,
|
|
||||||
xml TYPE string,
|
|
||||||
check_destroy TYPE abap_bool,
|
|
||||||
check_update_model TYPE abap_bool,
|
|
||||||
END OF s_view,
|
|
||||||
BEGIN OF s_view_nest,
|
|
||||||
xml TYPE string,
|
|
||||||
id TYPE string,
|
|
||||||
method_insert TYPE string,
|
|
||||||
method_destroy TYPE string,
|
|
||||||
check_destroy TYPE abap_bool,
|
|
||||||
check_update_model TYPE abap_bool,
|
|
||||||
END OF s_view_nest,
|
|
||||||
BEGIN OF s_view_nest2,
|
|
||||||
xml TYPE string,
|
|
||||||
id TYPE string,
|
|
||||||
method_insert TYPE string,
|
|
||||||
method_destroy TYPE string,
|
|
||||||
check_destroy TYPE abap_bool,
|
|
||||||
check_update_model TYPE abap_bool,
|
|
||||||
END OF s_view_nest2,
|
|
||||||
BEGIN OF s_popup,
|
|
||||||
xml TYPE string,
|
|
||||||
id TYPE string,
|
|
||||||
check_destroy TYPE abap_bool,
|
|
||||||
check_update_model TYPE abap_bool,
|
|
||||||
END OF s_popup,
|
|
||||||
BEGIN OF s_popover,
|
|
||||||
xml TYPE string,
|
|
||||||
id TYPE string,
|
|
||||||
open_by_id TYPE string,
|
|
||||||
check_destroy TYPE abap_bool,
|
|
||||||
check_update_model TYPE abap_bool,
|
|
||||||
END OF s_popover,
|
|
||||||
BEGIN OF s_msg_box,
|
|
||||||
type TYPE string,
|
|
||||||
text TYPE string,
|
|
||||||
END OF s_msg_box,
|
|
||||||
BEGIN OF s_msg_toast,
|
|
||||||
text TYPE string,
|
|
||||||
END OF s_msg_toast,
|
|
||||||
END OF ty_s_next2.
|
|
||||||
|
|
||||||
TYPES:
|
|
||||||
BEGIN OF ty_s_next,
|
|
||||||
o_app_call TYPE REF TO z2ui5_if_app,
|
|
||||||
o_app_leave TYPE REF TO z2ui5_if_app,
|
|
||||||
s_set TYPE ty_s_next2,
|
|
||||||
END OF ty_s_next.
|
|
||||||
|
|
||||||
CLASS-DATA ss_config TYPE z2ui5_if_client=>ty_s_config.
|
|
||||||
CLASS-DATA so_body_ajson TYPE REF TO z2ui5_if_ajson.
|
|
||||||
|
|
||||||
DATA ms_db TYPE z2ui5_cl_fw_db=>ty_s_db.
|
|
||||||
DATA ms_actual TYPE z2ui5_if_client=>ty_s_get.
|
|
||||||
DATA ms_next TYPE ty_s_next.
|
|
||||||
|
|
||||||
CLASS-METHODS main
|
|
||||||
IMPORTING
|
|
||||||
body TYPE string
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
|
||||||
|
|
||||||
CLASS-METHODS request_begin
|
|
||||||
IMPORTING
|
|
||||||
body TYPE string
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
METHODS request_end
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
CLASS-METHODS body_read_location.
|
|
||||||
|
|
||||||
CLASS-METHODS app_system_factory
|
|
||||||
IMPORTING
|
|
||||||
VALUE(ix) TYPE REF TO cx_root OPTIONAL
|
|
||||||
error_text TYPE string OPTIONAL
|
|
||||||
PREFERRED PARAMETER ix
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
METHODS app_next_factory
|
|
||||||
IMPORTING
|
|
||||||
app TYPE REF TO z2ui5_if_app
|
|
||||||
RETURNING
|
|
||||||
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
METHODS app_client_begin_event.
|
|
||||||
METHODS app_client_begin_model.
|
|
||||||
|
|
||||||
CLASS-METHODS app_start_factory
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
CLASS-METHODS app_client_begin_factory
|
|
||||||
IMPORTING
|
|
||||||
id_prev TYPE clike
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
METHODS app_leave_factory
|
|
||||||
IMPORTING
|
|
||||||
check_no_db_save TYPE abap_bool DEFAULT abap_false
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
METHODS app_call_factory
|
|
||||||
IMPORTING
|
|
||||||
check_no_db_save TYPE abap_bool DEFAULT abap_false
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_controller.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_fw_controller IMPLEMENTATION.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_call_factory.
|
|
||||||
|
|
||||||
result = app_next_factory( ms_next-o_app_call ).
|
|
||||||
result->ms_db-id_prev_app_stack = ms_db-id.
|
|
||||||
|
|
||||||
CLEAR ms_next.
|
|
||||||
IF check_no_db_save = abap_false.
|
|
||||||
z2ui5_cl_fw_db=>create( id = ms_db-id
|
|
||||||
db = ms_db ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CLEAR result->ms_db-t_attri.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_client_begin_event.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
DATA(ajson) = so_body_ajson->slice( `/ARGUMENTS` ).
|
|
||||||
ms_actual-event = ajson->get( `/1/EVENT` ).
|
|
||||||
ajson->delete( `/1` ).
|
|
||||||
ajson->to_abap(
|
|
||||||
IMPORTING
|
|
||||||
ev_container = ms_actual-t_event_arg
|
|
||||||
).
|
|
||||||
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
ASSERT x IS NOT BOUND.
|
|
||||||
ENDTRY.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_client_begin_factory.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
result = NEW #( ).
|
|
||||||
result->ms_db = z2ui5_cl_fw_db=>load_app( id_prev ).
|
|
||||||
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
|
||||||
result->ms_db-id_prev = id_prev.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
result->ms_actual-viewname = so_body_ajson->get( iv_path = `/VIEWNAME` ).
|
|
||||||
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
ASSERT x IS NOT BOUND.
|
|
||||||
ENDTRY.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_client_begin_model.
|
|
||||||
|
|
||||||
z2ui5_cl_fw_model_ajson=>front_to_back(
|
|
||||||
viewname = ms_actual-viewname
|
|
||||||
app = ms_db-app
|
|
||||||
t_attri = ms_db-t_attri
|
|
||||||
ajson_in = so_body_ajson
|
|
||||||
).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_leave_factory.
|
|
||||||
|
|
||||||
result = app_next_factory( ms_next-o_app_leave ).
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(ls_draft) = z2ui5_cl_fw_db=>read( id = result->ms_db-id
|
|
||||||
check_load_app = abap_false ).
|
|
||||||
result->ms_db-id_prev_app_stack = ls_draft-id_prev_app_stack.
|
|
||||||
CATCH cx_root.
|
|
||||||
result->ms_db-id_prev_app_stack = ms_db-id_prev_app_stack.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
CLEAR ms_next.
|
|
||||||
IF check_no_db_save = abap_false.
|
|
||||||
z2ui5_cl_fw_db=>create( id = ms_db-id
|
|
||||||
db = ms_db ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_next_factory.
|
|
||||||
|
|
||||||
app->id_draft = COND #( WHEN app->id_draft IS INITIAL THEN z2ui5_cl_util_func=>uuid_get_c32( ) ELSE app->id_draft ).
|
|
||||||
|
|
||||||
r_result = NEW #( ).
|
|
||||||
r_result->ms_db-app = app.
|
|
||||||
r_result->ms_db-id = app->id_draft.
|
|
||||||
r_result->ms_db-id_prev = ms_db-id.
|
|
||||||
r_result->ms_db-id_prev_app = ms_db-id.
|
|
||||||
r_result->ms_actual-check_launchpad_active = ms_actual-check_launchpad_active.
|
|
||||||
r_result->ms_actual-check_on_navigated = abap_true.
|
|
||||||
r_result->ms_next-s_set = ms_next-s_set.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(ls_db_next) = z2ui5_cl_fw_db=>load_app( app->id_draft ).
|
|
||||||
r_result->ms_db-t_attri = ls_db_next-t_attri.
|
|
||||||
CATCH cx_root.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_start_factory.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(lv_classname) = to_upper( so_body_ajson->get( `/APP_START` ) ).
|
|
||||||
lv_classname = z2ui5_cl_util_func=>c_trim( lv_classname ).
|
|
||||||
CATCH cx_root.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
IF lv_classname IS INITIAL.
|
|
||||||
lv_classname = z2ui5_cl_util_func=>url_param_get( val = `app_start`
|
|
||||||
url = ss_config-search ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
|
|
||||||
IF lv_classname IS INITIAL.
|
|
||||||
result = app_system_factory( ).
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
result = NEW #( ).
|
|
||||||
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
|
||||||
|
|
||||||
lv_classname = z2ui5_cl_util_func=>c_trim_upper( lv_classname ).
|
|
||||||
CREATE OBJECT result->ms_db-app TYPE (lv_classname).
|
|
||||||
result->ms_db-app->id_draft = result->ms_db-id.
|
|
||||||
|
|
||||||
CATCH cx_root.
|
|
||||||
result = app_system_factory( error_text = `App with name ` && lv_classname && ` not found...` ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD app_system_factory.
|
|
||||||
|
|
||||||
result = NEW #( ).
|
|
||||||
result->ms_db-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
|
||||||
|
|
||||||
IF ix IS NOT BOUND AND error_text IS NOT INITIAL.
|
|
||||||
ix = NEW z2ui5_cx_util_error( val = error_text ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF ix IS BOUND.
|
|
||||||
result->ms_next-o_app_call = z2ui5_cl_fw_app_error=>factory( ix ).
|
|
||||||
result = result->app_call_factory( abap_true ).
|
|
||||||
RETURN.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
result->ms_db-app = z2ui5_cl_fw_app_startup=>factory( ).
|
|
||||||
result->ms_db-app->id_draft = result->ms_db-id.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD body_read_location.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
so_body_ajson->slice( `/OLOCATION` )->to_abap(
|
|
||||||
IMPORTING
|
|
||||||
ev_container = ss_config
|
|
||||||
).
|
|
||||||
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
ASSERT x IS NOT BOUND.
|
|
||||||
ENDTRY.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD main.
|
|
||||||
|
|
||||||
TRY.
|
|
||||||
DATA(lo_handler) = request_begin( body ).
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
lo_handler = app_system_factory( x ).
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
DO.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
ROLLBACK WORK.
|
|
||||||
CAST z2ui5_if_app( lo_handler->ms_db-app )->main( NEW z2ui5_cl_fw_client( lo_handler ) ).
|
|
||||||
ROLLBACK WORK.
|
|
||||||
|
|
||||||
IF lo_handler->ms_next-o_app_leave IS NOT INITIAL.
|
|
||||||
lo_handler = lo_handler->app_leave_factory( ).
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lo_handler->ms_next-o_app_call IS NOT INITIAL.
|
|
||||||
lo_handler = lo_handler->app_call_factory( ).
|
|
||||||
CONTINUE.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
result = lo_handler->request_end( ).
|
|
||||||
|
|
||||||
CATCH cx_root INTO x.
|
|
||||||
lo_handler = app_system_factory( x ).
|
|
||||||
CONTINUE.
|
|
||||||
ENDTRY.
|
|
||||||
|
|
||||||
EXIT.
|
|
||||||
ENDDO.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD request_begin.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
so_body_ajson = z2ui5_cl_ajson=>parse( body ).
|
|
||||||
body_read_location( ).
|
|
||||||
|
|
||||||
DATA(lv_id_prev) = so_body_ajson->get( `/ID` ).
|
|
||||||
IF lv_id_prev IS INITIAL.
|
|
||||||
result = app_start_factory( ).
|
|
||||||
result->ms_actual-check_on_navigated = abap_true.
|
|
||||||
ELSE.
|
|
||||||
result = app_client_begin_factory( lv_id_prev ).
|
|
||||||
result->app_client_begin_model( ).
|
|
||||||
result->app_client_begin_event( ).
|
|
||||||
result->ms_actual-check_on_navigated = abap_false.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF ss_config-search CS `scenario=LAUNCHPAD`.
|
|
||||||
result->ms_actual-check_launchpad_active = abap_true.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
result->ms_db-check_attri = abap_false.
|
|
||||||
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
ASSERT x IS NOT BOUND.
|
|
||||||
ENDTRY.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD request_end.
|
|
||||||
TRY.
|
|
||||||
|
|
||||||
"todo performance - write all data directly into the target ajson
|
|
||||||
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty(
|
|
||||||
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
|
||||||
|
|
||||||
ajson_result->set( iv_path = `/PARAMS` iv_val = ms_next-s_set ).
|
|
||||||
ajson_result->set( iv_path = `/ID` iv_val = ms_db-id ).
|
|
||||||
ajson_result = ajson_result->filter( NEW z2ui5_cl_fw_model_ajson( ) ).
|
|
||||||
|
|
||||||
DATA(lo_ajson) = z2ui5_cl_fw_model_ajson=>back_to_front(
|
|
||||||
app = ms_db-app
|
|
||||||
t_attri = ms_db-t_attri ).
|
|
||||||
|
|
||||||
ajson_result->set( iv_path = `/OVIEWMODEL` iv_val = lo_ajson ).
|
|
||||||
result = ajson_result->stringify( ).
|
|
||||||
|
|
||||||
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
|
|
||||||
|
|
||||||
CATCH cx_root INTO DATA(x).
|
|
||||||
ASSERT x IS NOT BOUND.
|
|
||||||
ENDTRY.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
|
@ -1,71 +0,0 @@
|
||||||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
|
||||||
DURATION LONG
|
|
||||||
RISK LEVEL HARMLESS.
|
|
||||||
|
|
||||||
PRIVATE SECTION.
|
|
||||||
METHODS test_req_begin_fw_start FOR TESTING RAISING cx_static_check.
|
|
||||||
METHODS test_req_begin_app_start FOR TESTING RAISING cx_static_check.
|
|
||||||
METHODS test_req_end FOR TESTING RAISING cx_static_check.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_fw_controller DEFINITION LOCAL FRIENDS ltcl_unit_test.
|
|
||||||
|
|
||||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD test_req_begin_fw_start.
|
|
||||||
|
|
||||||
DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https:/url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100","VERSION":"com.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
|
||||||
|
|
||||||
DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_bound( lo_handler->ms_db-app ).
|
|
||||||
|
|
||||||
DATA(lo_app_fw) = CAST z2ui5_cl_fw_app_startup( lo_handler->ms_db-app ) ##NEEDED.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD test_req_begin_app_start.
|
|
||||||
|
|
||||||
DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https://url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100&app_start=z2ui5_cl_app_hello_world","VERSION":"c` &&
|
|
||||||
`om.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
|
||||||
|
|
||||||
DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
|
||||||
|
|
||||||
cl_abap_unit_assert=>assert_bound( lo_handler->ms_db-app ).
|
|
||||||
|
|
||||||
DATA(lo_app_fw) = CAST z2ui5_cl_app_hello_world( lo_handler->ms_db-app ) ##NEEDED.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD test_req_end.
|
|
||||||
|
|
||||||
DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https://url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100&app_start=z2ui5_cl_app_hello_world","VERSION":"c` &&
|
|
||||||
`om.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
|
||||||
|
|
||||||
DATA(lo_handler) = z2ui5_cl_fw_controller=>request_begin( lv_body ).
|
|
||||||
|
|
||||||
CAST z2ui5_if_app( lo_handler->ms_db-app )->main( NEW z2ui5_cl_fw_client( lo_handler ) ).
|
|
||||||
|
|
||||||
DATA(lv_resp) = lo_handler->request_end( ).
|
|
||||||
|
|
||||||
IF lv_resp NS `NAME`.
|
|
||||||
cl_abap_unit_assert=>fail( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lv_resp NS `EDIT`.
|
|
||||||
cl_abap_unit_assert=>fail( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lv_resp NS `ID`.
|
|
||||||
cl_abap_unit_assert=>fail( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF lv_resp NS `mvc:View`.
|
|
||||||
cl_abap_unit_assert=>fail( ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
|
@ -1,4 +1,4 @@
|
||||||
CLASS z2ui5_cl_fw_db DEFINITION
|
CLASS z2ui5_cl_fw_draft DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FINAL
|
FINAL
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
@ -51,7 +51,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_fw_db IMPLEMENTATION.
|
CLASS Z2UI5_CL_FW_DRAFT IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD cleanup.
|
METHOD cleanup.
|
|
@ -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_FW_DB</CLSNAME>
|
<CLSNAME>Z2UI5_CL_FW_DRAFT</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abap2UI5 - database</DESCRIPT>
|
<DESCRIPT>abap2UI5 - draft</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
|
@ -1,26 +1,20 @@
|
||||||
CLASS z2ui5_cl_fw_index_html DEFINITION
|
CLASS z2ui5_cl_fw_http_get DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FINAL
|
FINAL
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
TYPES:
|
DATA ms_request TYPE z2ui5_if_client=>ty_s_http_request_get.
|
||||||
BEGIN OF ty_s_config,
|
DATA mv_response TYPE string.
|
||||||
t_config TYPE z2ui5_if_client=>ty_t_name_value,
|
|
||||||
content_security_policy TYPE string,
|
|
||||||
custom_js TYPE string,
|
|
||||||
json_model_limit TYPE string,
|
|
||||||
END OF ty_s_config.
|
|
||||||
DATA ms_config TYPE ty_s_config.
|
|
||||||
|
|
||||||
CLASS-METHODS factory
|
CLASS-METHODS factory
|
||||||
IMPORTING
|
IMPORTING
|
||||||
i_config TYPE ty_s_config
|
val TYPE z2ui5_if_client=>ty_s_http_request_get
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_index_html.
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_http_get.
|
||||||
|
|
||||||
METHODS get
|
METHODS main
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
@ -34,85 +28,13 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
CLASS Z2UI5_CL_FW_HTTP_GET IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD factory.
|
METHOD factory.
|
||||||
|
|
||||||
result = NEW #( ).
|
result = NEW #( ).
|
||||||
result->ms_config = i_config.
|
result->ms_request = val.
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD get.
|
|
||||||
|
|
||||||
DATA(lt_config) = ms_config-t_config.
|
|
||||||
IF lt_config IS INITIAL.
|
|
||||||
lt_config = VALUE #(
|
|
||||||
* ( n = `src` v = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js` )
|
|
||||||
* ( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js` )
|
|
||||||
( n = `src` v = `https://ui5.sap.com/1.120.0/resources/sap-ui-core.js` )
|
|
||||||
( n = `data-sap-ui-theme` v = `sap_horizon` )
|
|
||||||
( n = `data-sap-ui-async` v = `true` )
|
|
||||||
( n = `data-sap-ui-bindingSyntax` v = `complex` )
|
|
||||||
( n = `data-sap-ui-frameOptions` v = `trusted` )
|
|
||||||
( n = `data-sap-ui-compatVersion` v = `edge` ) ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
IF ms_config-content_security_policy IS INITIAL.
|
|
||||||
DATA(lv_sec_policy) = `<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: ` &&
|
|
||||||
`ui5.sap.com *.ui5.sap.com sapui5.hana.ondemand.com *.sapui5.hana.ondemand.com sdk.openui5.org *.sdk.openui5.org cdn.jsdelivr.net *.cdn.jsdelivr.net cdnjs.cloudflare.com *.cdnjs.cloudflare.com"/>`.
|
|
||||||
ELSE.
|
|
||||||
lv_sec_policy = ms_config-content_security_policy.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
result = `<!DOCTYPE html>` && |\n| &&
|
|
||||||
`<html lang="en">` && |\n| &&
|
|
||||||
`<head>` && |\n| &&
|
|
||||||
lv_sec_policy && |\n| &&
|
|
||||||
` <meta charset="UTF-8">` && |\n| &&
|
|
||||||
` <meta name="viewport" content="width=device-width, initial-scale=1.0">` && |\n| &&
|
|
||||||
` <meta http-equiv="X-UA-Compatible" content="IE=edge">` && |\n| &&
|
|
||||||
` <title>abap2UI5</title>` && |\n| &&
|
|
||||||
` <style>` && |\n| &&
|
|
||||||
` html, body, body > div, #container, #container-uiarea {` && |\n| &&
|
|
||||||
` height: 100%;` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` .dbg-ltr {` && |\n| &&
|
|
||||||
` direction: ltr !important;` && |\n| &&
|
|
||||||
` }` && |\n| &&
|
|
||||||
` </style> ` &&
|
|
||||||
` <script id="sap-ui-bootstrap"`.
|
|
||||||
|
|
||||||
LOOP AT lt_config REFERENCE INTO DATA(lr_config).
|
|
||||||
result = result && | { lr_config->n }="{ lr_config->v }"|.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
result = result &&
|
|
||||||
` ></script></head>` && |\n| &&
|
|
||||||
`<body class="sapUiBody sapUiSizeCompact" >` && |\n| &&
|
|
||||||
` <div id="content" data-handle-validation="true" ></div>` && |\n| &&
|
|
||||||
`<abc/>` && |\n|.
|
|
||||||
|
|
||||||
DATA(lv_add_js) = z2ui5_cl_fw_cc_factory=>get_js_startup( ) && ms_config-custom_js.
|
|
||||||
|
|
||||||
result = result &&
|
|
||||||
`<script> sap.z2ui5 = sap.z2ui5 || {};` && |\n| &&
|
|
||||||
get_js( ) && |\n| &&
|
|
||||||
lv_add_js && |\n| &&
|
|
||||||
` sap.z2ui5.JSON_MODEL_LIMIT = ` && ms_config-json_model_limit && `;`.
|
|
||||||
|
|
||||||
result = result &&
|
|
||||||
z2ui5_cl_fw_cc_debugging_tools=>get_js( ) &&
|
|
||||||
` sap.ui.require(["z2ui5/DebuggingTools","z2ui5/Controller"], (DebuggingTools) => { sap.z2ui5.DebuggingTools = new DebuggingTools(); ` && |\n| &&
|
|
||||||
` });`.
|
|
||||||
|
|
||||||
result = result && |\n| &&
|
|
||||||
`</script>` && |\n| &&
|
|
||||||
`<abc/></body></html>`.
|
|
||||||
|
|
||||||
z2ui5_cl_fw_db=>cleanup( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -510,8 +432,8 @@ CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
||||||
` PATHNAME: sap.z2ui5.pathname,` && |\n| &&
|
` PATHNAME: sap.z2ui5.pathname,` && |\n| &&
|
||||||
` SEARCH: window.location.search,` && |\n| &&
|
` SEARCH: window.location.search,` && |\n| &&
|
||||||
` // VERSION: sap.ui.getVersionInfo().gav,` && |\n| &&
|
` // VERSION: sap.ui.getVersionInfo().gav,` && |\n| &&
|
||||||
` CHECK_LAUNCHPAD_ACTIVE: sap.ushell !== undefined,` && |\n| &&
|
* ` CHECK_LAUNCHPAD_ACTIVE: sap.ushell !== undefined,` && |\n| &&
|
||||||
` STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
* ` STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||||
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||||
` };` && |\n| &&
|
` };` && |\n| &&
|
||||||
` if (sap.z2ui5.search) {` && |\n| &&
|
` if (sap.z2ui5.search) {` && |\n| &&
|
||||||
|
@ -546,4 +468,77 @@ CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
||||||
`);`.
|
`);`.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main.
|
||||||
|
|
||||||
|
DATA(lt_config) = ms_request-t_config.
|
||||||
|
IF lt_config IS INITIAL.
|
||||||
|
lt_config = VALUE #(
|
||||||
|
* ( n = `src` v = `https://sdk.openui5.org/nightly/2/resources/sap-ui-core.js` )
|
||||||
|
* ( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/sap-ui-core.js` )
|
||||||
|
( n = `src` v = `https://ui5.sap.com/1.120.0/resources/sap-ui-core.js` )
|
||||||
|
( n = `data-sap-ui-theme` v = `sap_horizon` )
|
||||||
|
( n = `data-sap-ui-async` v = `true` )
|
||||||
|
( n = `data-sap-ui-bindingSyntax` v = `complex` )
|
||||||
|
( n = `data-sap-ui-frameOptions` v = `trusted` )
|
||||||
|
( n = `data-sap-ui-compatVersion` v = `edge` ) ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF ms_request-content_security_policy IS INITIAL.
|
||||||
|
DATA(lv_sec_policy) = `<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval' data: ` &&
|
||||||
|
`ui5.sap.com *.ui5.sap.com sapui5.hana.ondemand.com *.sapui5.hana.ondemand.com sdk.openui5.org *.sdk.openui5.org cdn.jsdelivr.net *.cdn.jsdelivr.net cdnjs.cloudflare.com *.cdnjs.cloudflare.com"/>`.
|
||||||
|
ELSE.
|
||||||
|
lv_sec_policy = ms_request-content_security_policy.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
mv_response = `<!DOCTYPE html>` && |\n| &&
|
||||||
|
`<html lang="en">` && |\n| &&
|
||||||
|
`<head>` && |\n| &&
|
||||||
|
lv_sec_policy && |\n| &&
|
||||||
|
` <meta charset="UTF-8">` && |\n| &&
|
||||||
|
` <meta name="viewport" content="width=device-width, initial-scale=1.0">` && |\n| &&
|
||||||
|
` <meta http-equiv="X-UA-Compatible" content="IE=edge">` && |\n| &&
|
||||||
|
` <title>abap2UI5</title>` && |\n| &&
|
||||||
|
` <style>` && |\n| &&
|
||||||
|
` html, body, body > div, #container, #container-uiarea {` && |\n| &&
|
||||||
|
` height: 100%;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` .dbg-ltr {` && |\n| &&
|
||||||
|
` direction: ltr !important;` && |\n| &&
|
||||||
|
` }` && |\n| &&
|
||||||
|
` </style> ` &&
|
||||||
|
` <script id="sap-ui-bootstrap"`.
|
||||||
|
|
||||||
|
LOOP AT lt_config REFERENCE INTO DATA(lr_config).
|
||||||
|
mv_response = mv_response && | { lr_config->n }="{ lr_config->v }"|.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
mv_response = mv_response &&
|
||||||
|
` ></script></head>` && |\n| &&
|
||||||
|
`<body class="sapUiBody sapUiSizeCompact" >` && |\n| &&
|
||||||
|
` <div id="content" data-handle-validation="true" ></div>` && |\n| &&
|
||||||
|
`<abc/>` && |\n|.
|
||||||
|
|
||||||
|
DATA(lv_add_js) = z2ui5_cl_fw_cc_factory=>get_js_startup( ) && ms_request-custom_js.
|
||||||
|
|
||||||
|
mv_response = mv_response &&
|
||||||
|
`<script> sap.z2ui5 = sap.z2ui5 || {};` && |\n| &&
|
||||||
|
get_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 ) && `;`.
|
||||||
|
|
||||||
|
mv_response = mv_response &&
|
||||||
|
z2ui5_cl_fw_cc_debugging_tools=>get_js( ) &&
|
||||||
|
` sap.ui.require(["z2ui5/DebuggingTools","z2ui5/Controller"], (DebuggingTools) => { sap.z2ui5.DebuggingTools = new DebuggingTools(); ` && |\n| &&
|
||||||
|
` });`.
|
||||||
|
|
||||||
|
mv_response = mv_response && |\n| &&
|
||||||
|
`</script>` && |\n| &&
|
||||||
|
`<abc/></body></html>`.
|
||||||
|
|
||||||
|
z2ui5_cl_fw_draft=>cleanup( ).
|
||||||
|
|
||||||
|
result = mv_response.
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
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_FW_INDEX_HTML</CLSNAME>
|
<CLSNAME>Z2UI5_CL_FW_HTTP_GET</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abap2UI5 - index.html</DESCRIPT>
|
<DESCRIPT>abap2UI5 - http get handler</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
|
@ -1,4 +1,4 @@
|
||||||
CLASS z2ui5_cl_fw_model_ajson DEFINITION
|
CLASS z2ui5_cl_fw_http_mapper DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FINAL
|
FINAL
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
@ -6,14 +6,26 @@ CLASS z2ui5_cl_fw_model_ajson DEFINITION
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
INTERFACES z2ui5_if_ajson_filter.
|
INTERFACES z2ui5_if_ajson_filter.
|
||||||
|
|
||||||
CLASS-METHODS front_to_back
|
METHODS request_json_to_abap
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE z2ui5_if_client=>ty_s_http_request_post.
|
||||||
|
|
||||||
|
METHODS response_abap_to_json
|
||||||
|
IMPORTING
|
||||||
|
val TYPE z2ui5_if_client=>ty_s_http_response_post
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
METHODS model_front_to_back
|
||||||
IMPORTING
|
IMPORTING
|
||||||
app TYPE REF TO object
|
app TYPE REF TO object
|
||||||
viewname TYPE string
|
viewname TYPE string
|
||||||
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
||||||
ajson_in TYPE REF TO z2ui5_if_ajson ##NEEDED.
|
ajson_in TYPE REF TO z2ui5_if_ajson ##NEEDED.
|
||||||
|
|
||||||
CLASS-METHODS back_to_front
|
METHODS model_back_to_front
|
||||||
IMPORTING
|
IMPORTING
|
||||||
app TYPE REF TO object
|
app TYPE REF TO object
|
||||||
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
||||||
|
@ -26,44 +38,10 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_fw_model_ajson IMPLEMENTATION.
|
CLASS Z2UI5_CL_FW_HTTP_MAPPER IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD z2ui5_if_ajson_filter~keep_node.
|
METHOD model_back_to_front.
|
||||||
|
|
||||||
rv_keep = abap_true.
|
|
||||||
|
|
||||||
|
|
||||||
CASE iv_visit.
|
|
||||||
|
|
||||||
WHEN z2ui5_if_ajson_filter=>visit_type-value.
|
|
||||||
|
|
||||||
CASE is_node-type.
|
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-boolean.
|
|
||||||
IF is_node-value = `false`.
|
|
||||||
rv_keep = abap_false.
|
|
||||||
ENDIF.
|
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-number.
|
|
||||||
IF is_node-value = `0`.
|
|
||||||
rv_keep = abap_false.
|
|
||||||
ENDIF.
|
|
||||||
WHEN z2ui5_if_ajson_types=>node_type-string.
|
|
||||||
IF is_node-value = ``.
|
|
||||||
rv_keep = abap_false.
|
|
||||||
ENDIF.
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
WHEN z2ui5_if_ajson_filter=>visit_type-close.
|
|
||||||
|
|
||||||
IF is_node-children = 0.
|
|
||||||
rv_keep = abap_false.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD 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( ) ).
|
||||||
|
@ -127,12 +105,11 @@ CLASS z2ui5_cl_fw_model_ajson IMPLEMENTATION.
|
||||||
CATCH cx_root INTO DATA(x).
|
CATCH cx_root INTO DATA(x).
|
||||||
ASSERT x IS NOT BOUND.
|
ASSERT x IS NOT BOUND.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD front_to_back.
|
METHOD model_front_to_back.
|
||||||
|
|
||||||
DATA(ajson) = ajson_in->slice( `/EDIT` ).
|
|
||||||
|
|
||||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri)
|
LOOP AT t_attri REFERENCE INTO DATA(lr_attri)
|
||||||
WHERE bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
WHERE bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||||
|
@ -144,7 +121,7 @@ CLASS z2ui5_cl_fw_model_ajson IMPLEMENTATION.
|
||||||
ASSIGN (lv_name_back) TO <backend>.
|
ASSIGN (lv_name_back) TO <backend>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
DATA(ajson_val) = ajson->slice( `/` && lr_attri->name_front ).
|
DATA(ajson_val) = ajson_in->slice( `/` && lr_attri->name_front ).
|
||||||
|
|
||||||
IF lr_attri->custom_mapper_back IS BOUND.
|
IF lr_attri->custom_mapper_back IS BOUND.
|
||||||
ajson_val = ajson_val->map( lr_attri->custom_mapper_back ).
|
ajson_val = ajson_val->map( lr_attri->custom_mapper_back ).
|
||||||
|
@ -161,4 +138,122 @@ CLASS z2ui5_cl_fw_model_ajson IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD request_json_to_abap.
|
||||||
|
TRY.
|
||||||
|
DATA(lo_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>parse( val ) ).
|
||||||
|
|
||||||
|
|
||||||
|
result-model = lo_ajson->slice( `/EDIT` ).
|
||||||
|
|
||||||
|
result-s_frontend-id = lo_ajson->get( `/ID` ).
|
||||||
|
result-s_frontend-viewname = lo_ajson->get( `/VIEWNAME` ).
|
||||||
|
result-s_frontend-app_start = to_upper( lo_ajson->get( `/APP_START` ) ).
|
||||||
|
result-s_frontend-arguments = lo_ajson->slice( `/ARGUMENTS` ).
|
||||||
|
|
||||||
|
lo_ajson = lo_ajson->slice( `/OLOCATION` ).
|
||||||
|
lo_ajson->to_abap(
|
||||||
|
EXPORTING
|
||||||
|
iv_corresponding = abap_true
|
||||||
|
IMPORTING
|
||||||
|
ev_container = result-s_frontend-s_config ).
|
||||||
|
|
||||||
|
|
||||||
|
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||||
|
|
||||||
|
result-s_control-check_launchpad = xsdbool(
|
||||||
|
result-s_frontend-s_config-search CS `scenario=LAUNCHPAD` ).
|
||||||
|
|
||||||
|
IF result-s_frontend-arguments IS BOUND.
|
||||||
|
|
||||||
|
DATA(lo_event) = result-s_frontend-arguments->clone( ).
|
||||||
|
result-s_control-event = lo_event->get( `/1/EVENT` ).
|
||||||
|
lo_event->delete( `/1` ).
|
||||||
|
lo_event->to_abap(
|
||||||
|
IMPORTING
|
||||||
|
ev_container = result-s_control-t_event_arg
|
||||||
|
).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
|
||||||
|
IF result-s_frontend-id IS INITIAL.
|
||||||
|
TRY.
|
||||||
|
result-s_control-app_start = to_upper( z2ui5_cl_util_func=>c_trim( result-s_frontend-app_start ) ).
|
||||||
|
CATCH cx_root.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
IF result-s_control-app_start IS INITIAL.
|
||||||
|
result-s_control-app_start = to_upper( z2ui5_cl_util_func=>url_param_get( val = `app_start`
|
||||||
|
url = result-s_frontend-s_config-search ) ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CATCH cx_root INTO DATA(x).
|
||||||
|
ASSERT x IS NOT BOUND.
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD response_abap_to_json.
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
"todo performance - write all data directly into the target ajson
|
||||||
|
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty(
|
||||||
|
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||||
|
|
||||||
|
* ajson_result->set( iv_path = `/PARAMS` iv_val = ms_next-s_set ).
|
||||||
|
* ajson_result->set( iv_path = `/ID` iv_val = ms_db-id ).
|
||||||
|
ajson_result->set( iv_path = `/` iv_val = val-s_frontend ).
|
||||||
|
ajson_result = ajson_result->filter( NEW z2ui5_cl_fw_http_mapper( ) ).
|
||||||
|
|
||||||
|
* DATA(lo_ajson) = NEW z2ui5_cl_fw_http_mapper( )->model_back_to_front(
|
||||||
|
* app = ms_db-app
|
||||||
|
* t_attri = ms_db-t_attri ).
|
||||||
|
|
||||||
|
ajson_result->set( iv_path = `/OVIEWMODEL` iv_val = val-oviewmodel ).
|
||||||
|
result = ajson_result->stringify( ).
|
||||||
|
|
||||||
|
* z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
|
||||||
|
|
||||||
|
|
||||||
|
CATCH cx_root INTO DATA(x).
|
||||||
|
ASSERT x IS NOT BOUND.
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD z2ui5_if_ajson_filter~keep_node.
|
||||||
|
|
||||||
|
rv_keep = abap_true.
|
||||||
|
|
||||||
|
|
||||||
|
CASE iv_visit.
|
||||||
|
|
||||||
|
WHEN z2ui5_if_ajson_filter=>visit_type-value.
|
||||||
|
|
||||||
|
CASE is_node-type.
|
||||||
|
WHEN z2ui5_if_ajson_types=>node_type-boolean.
|
||||||
|
IF is_node-value = `false`.
|
||||||
|
rv_keep = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
WHEN z2ui5_if_ajson_types=>node_type-number.
|
||||||
|
IF is_node-value = `0`.
|
||||||
|
rv_keep = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
WHEN z2ui5_if_ajson_types=>node_type-string.
|
||||||
|
IF is_node-value = ``.
|
||||||
|
rv_keep = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
WHEN z2ui5_if_ajson_filter=>visit_type-close.
|
||||||
|
|
||||||
|
IF is_node-children = 0.
|
||||||
|
rv_keep = abap_false.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
16
src/01/02/z2ui5_cl_fw_http_mapper.clas.xml
Normal file
16
src/01/02/z2ui5_cl_fw_http_mapper.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_FW_HTTP_MAPPER</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>abap2UI5 - http json mapper</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
122
src/01/02/z2ui5_cl_fw_http_post.clas.abap
Normal file
122
src/01/02/z2ui5_cl_fw_http_post.clas.abap
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
CLASS z2ui5_cl_fw_http_post DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
DATA mv_request_plain TYPE string.
|
||||||
|
DATA ms_request TYPE z2ui5_if_client=>ty_s_http_request_post.
|
||||||
|
DATA ms_response TYPE z2ui5_if_client=>ty_s_http_response_post.
|
||||||
|
|
||||||
|
CLASS-METHODS factory
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE REF TO z2ui5_cl_fw_http_post.
|
||||||
|
|
||||||
|
METHODS main
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
CLASS-DATA mo_http_mapper TYPE REF TO z2ui5_cl_fw_http_mapper.
|
||||||
|
DATA mo_app TYPE REF TO z2ui5_cl_fw_app.
|
||||||
|
|
||||||
|
METHODS main_begin.
|
||||||
|
METHODS main_process
|
||||||
|
RETURNING
|
||||||
|
VALUE(check_go_frontend) TYPE abap_bool.
|
||||||
|
METHODS main_end
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD factory.
|
||||||
|
|
||||||
|
result = NEW #( ).
|
||||||
|
result->mv_request_plain = val.
|
||||||
|
mo_http_mapper = NEW z2ui5_cl_fw_http_mapper( ).
|
||||||
|
result->mo_app = NEW z2ui5_cl_fw_app( result ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main_begin.
|
||||||
|
|
||||||
|
ms_request = mo_http_mapper->request_json_to_abap( mv_request_plain ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
IF ms_request-s_frontend-id IS NOT INITIAL.
|
||||||
|
mo_app = mo_app->factory_by_frontend( ).
|
||||||
|
ELSEIF ms_request-s_control-app_start IS NOT INITIAL.
|
||||||
|
mo_app = mo_app->factory_first_start( ).
|
||||||
|
ELSE.
|
||||||
|
mo_app = mo_app->factory_system_startup( ).
|
||||||
|
ENDIF.
|
||||||
|
CATCH cx_root INTO DATA(x).
|
||||||
|
mo_app = mo_app->factory_system_error( x ).
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main_end.
|
||||||
|
TRY.
|
||||||
|
DATA(lo_ajson) = NEW z2ui5_cl_fw_http_mapper( )->model_back_to_front(
|
||||||
|
app = mo_app->ms_db-app
|
||||||
|
t_attri = mo_app->ms_db-t_attri ).
|
||||||
|
z2ui5_cl_fw_draft=>create( id = mo_app->ms_db-id db = mo_app->ms_db ).
|
||||||
|
ms_response-s_frontend-params = mo_app->ms_next-s_set.
|
||||||
|
ms_response-s_frontend-id = mo_app->ms_db-id.
|
||||||
|
ms_response-oviewmodel = lo_ajson.
|
||||||
|
CATCH cx_root INTO DATA(x).
|
||||||
|
ASSERT x IS NOT BOUND.
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
result = mo_http_mapper->response_abap_to_json( ms_response ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main_process.
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
DATA(li_client) = NEW z2ui5_cl_fw_client( mo_app ).
|
||||||
|
DATA(li_app) = CAST z2ui5_if_app( mo_app->ms_db-app ).
|
||||||
|
|
||||||
|
ROLLBACK WORK.
|
||||||
|
li_app->main( li_client ).
|
||||||
|
ROLLBACK WORK.
|
||||||
|
|
||||||
|
IF mo_app->ms_next-o_app_leave IS NOT INITIAL.
|
||||||
|
mo_app = mo_app->factory_app_leave( ).
|
||||||
|
ELSEIF mo_app->ms_next-o_app_call IS NOT INITIAL.
|
||||||
|
mo_app = mo_app->factory_app_call( ).
|
||||||
|
ELSE.
|
||||||
|
check_go_frontend = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CATCH cx_root INTO DATA(x).
|
||||||
|
mo_app = mo_app->factory_system_error( x ).
|
||||||
|
ENDTRY.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD main.
|
||||||
|
|
||||||
|
main_begin( ).
|
||||||
|
DO.
|
||||||
|
IF main_process( ).
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
ENDDO.
|
||||||
|
result = main_end( ).
|
||||||
|
|
||||||
|
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_FW_MODEL_AJSON</CLSNAME>
|
<CLSNAME>Z2UI5_CL_FW_HTTP_POST</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>test</DESCRIPT>
|
<DESCRIPT>abap2UI5 - http post handler</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
||||||
<CLSCCINCL>X</CLSCCINCL>
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
<FIXPT>X</FIXPT>
|
<FIXPT>X</FIXPT>
|
|
@ -1,51 +0,0 @@
|
||||||
CLASS z2ui5_cl_fw_http_handler DEFINITION
|
|
||||||
PUBLIC
|
|
||||||
CREATE PUBLIC.
|
|
||||||
|
|
||||||
PUBLIC SECTION.
|
|
||||||
|
|
||||||
CLASS-METHODS http_post
|
|
||||||
IMPORTING
|
|
||||||
body TYPE string
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
CLASS-METHODS http_get
|
|
||||||
IMPORTING
|
|
||||||
t_config TYPE z2ui5_if_client=>ty_t_name_value OPTIONAL
|
|
||||||
content_security_policy TYPE clike OPTIONAL
|
|
||||||
custom_js TYPE clike OPTIONAL
|
|
||||||
json_model_limit TYPE clike DEFAULT '100'
|
|
||||||
PREFERRED PARAMETER t_config
|
|
||||||
RETURNING
|
|
||||||
VALUE(result) TYPE string.
|
|
||||||
|
|
||||||
PROTECTED SECTION.
|
|
||||||
PRIVATE SECTION.
|
|
||||||
ENDCLASS.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS z2ui5_cl_fw_http_handler IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD http_get.
|
|
||||||
|
|
||||||
DATA(lo_index) = z2ui5_cl_fw_index_html=>factory( VALUE #(
|
|
||||||
t_config = t_config
|
|
||||||
content_security_policy = content_security_policy
|
|
||||||
custom_js = custom_js
|
|
||||||
json_model_limit = json_model_limit
|
|
||||||
) ).
|
|
||||||
|
|
||||||
result = lo_index->get( ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
|
|
||||||
METHOD http_post.
|
|
||||||
|
|
||||||
result = z2ui5_cl_fw_controller=>main( body ).
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
|
42
src/02/z2ui5_cl_http_handler.clas.abap
Normal file
42
src/02/z2ui5_cl_http_handler.clas.abap
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
CLASS z2ui5_cl_http_handler DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
CREATE PUBLIC.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
CLASS-METHODS http_post
|
||||||
|
IMPORTING
|
||||||
|
val TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS http_get
|
||||||
|
IMPORTING
|
||||||
|
val TYPE z2ui5_if_client=>ty_s_http_request_get OPTIONAL
|
||||||
|
RETURNING
|
||||||
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD http_get.
|
||||||
|
|
||||||
|
DATA(lo_get) = z2ui5_cl_fw_http_get=>factory( val ).
|
||||||
|
result = lo_get->main( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD http_post.
|
||||||
|
|
||||||
|
DATA(lo_post) = z2ui5_cl_fw_http_post=>factory( val ).
|
||||||
|
result = lo_post->main( ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
|
@ -16,7 +16,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD test_index_html.
|
METHOD test_index_html.
|
||||||
|
|
||||||
DATA(lv_index_html) = z2ui5_cl_fw_http_handler=>http_get( ).
|
DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ).
|
||||||
IF lv_index_html IS INITIAL.
|
IF lv_index_html IS INITIAL.
|
||||||
cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ).
|
cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -26,7 +26,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD test_launchpad_compatibility.
|
METHOD test_launchpad_compatibility.
|
||||||
|
|
||||||
DATA(lv_index_html) = z2ui5_cl_fw_http_handler=>http_get( ).
|
DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ).
|
||||||
IF lv_index_html CS `&`.
|
IF lv_index_html CS `&`.
|
||||||
cl_abap_unit_assert=>fail( 'HTTP GET - index html contains the character & -> no launchpad compatibility' ).
|
cl_abap_unit_assert=>fail( 'HTTP GET - index html contains the character & -> no launchpad compatibility' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -36,7 +36,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD test_path.
|
METHOD test_path.
|
||||||
|
|
||||||
DATA(lv_index_html) = z2ui5_cl_fw_http_handler=>http_get( ).
|
DATA(lv_index_html) = z2ui5_cl_http_handler=>http_get( ).
|
||||||
IF lv_index_html CS `sap.z2ui5.pathname || '/sap/test';`.
|
IF lv_index_html CS `sap.z2ui5.pathname || '/sap/test';`.
|
||||||
cl_abap_unit_assert=>fail( 'path static' ).
|
cl_abap_unit_assert=>fail( 'path static' ).
|
||||||
ENDIF.
|
ENDIF.
|
|
@ -3,7 +3,7 @@
|
||||||
<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_FW_HTTP_HANDLER</CLSNAME>
|
<CLSNAME>Z2UI5_CL_HTTP_HANDLER</CLSNAME>
|
||||||
<LANGU>E</LANGU>
|
<LANGU>E</LANGU>
|
||||||
<DESCRIPT>abap2UI5 - http handler</DESCRIPT>
|
<DESCRIPT>abap2UI5 - http handler</DESCRIPT>
|
||||||
<STATE>1</STATE>
|
<STATE>1</STATE>
|
|
@ -32,26 +32,52 @@ INTERFACE z2ui5_if_client
|
||||||
n TYPE string,
|
n TYPE string,
|
||||||
v TYPE string,
|
v TYPE string,
|
||||||
END OF ty_s_name_value.
|
END OF ty_s_name_value.
|
||||||
TYPES:
|
|
||||||
BEGIN OF ty_s_name_value_int,
|
|
||||||
n TYPE string,
|
|
||||||
v TYPE i,
|
|
||||||
END OF ty_s_name_value_int.
|
|
||||||
TYPES ty_t_name_value TYPE TABLE OF ty_s_name_value WITH EMPTY KEY.
|
TYPES ty_t_name_value TYPE TABLE OF ty_s_name_value WITH EMPTY KEY.
|
||||||
TYPES ty_t_name_value_int TYPE TABLE OF ty_s_name_value_int WITH EMPTY KEY.
|
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_s_config,
|
BEGIN OF ty_s_config,
|
||||||
* view_model_edit_name TYPE string,
|
|
||||||
version TYPE string,
|
version TYPE string,
|
||||||
origin TYPE string,
|
origin TYPE string,
|
||||||
pathname TYPE string,
|
pathname TYPE string,
|
||||||
search TYPE string,
|
search TYPE string,
|
||||||
* body TYPE string,
|
|
||||||
check_launchpad_active TYPE abap_bool,
|
|
||||||
t_startup_params TYPE ty_t_name_value,
|
t_startup_params TYPE ty_t_name_value,
|
||||||
END OF ty_s_config.
|
END OF ty_s_config.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_http_request_post,
|
||||||
|
model TYPE REF TO z2ui5_if_ajson,
|
||||||
|
BEGIN OF s_frontend,
|
||||||
|
id TYPE string,
|
||||||
|
viewname type string,
|
||||||
|
arguments TYPE REF TO z2ui5_if_ajson,
|
||||||
|
app_start type string,
|
||||||
|
s_config TYPE ty_s_config,
|
||||||
|
END OF s_frontend,
|
||||||
|
BEGIN OF s_control,
|
||||||
|
check_launchpad TYPE abap_bool,
|
||||||
|
event type string,
|
||||||
|
app_start type string,
|
||||||
|
t_event_arg type string_table,
|
||||||
|
END OF s_control,
|
||||||
|
END OF ty_s_http_request_post.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_http_response_post,
|
||||||
|
BEGIN OF s_frontend,
|
||||||
|
params TYPE z2ui5_cl_fw_app=>ty_s_next2,
|
||||||
|
id TYPE string,
|
||||||
|
END OF s_frontend,
|
||||||
|
oviewmodel TYPE REF TO z2ui5_if_ajson,
|
||||||
|
END OF ty_s_http_response_post.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_http_request_get,
|
||||||
|
t_config TYPE ty_t_name_value,
|
||||||
|
content_security_policy TYPE string,
|
||||||
|
custom_js TYPE string,
|
||||||
|
json_model_limit TYPE string,
|
||||||
|
END OF ty_s_http_request_get.
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
BEGIN OF ty_s_draft,
|
BEGIN OF ty_s_draft,
|
||||||
id TYPE string,
|
id TYPE string,
|
||||||
|
@ -65,7 +91,6 @@ INTERFACE z2ui5_if_client
|
||||||
BEGIN OF ty_s_get,
|
BEGIN OF ty_s_get,
|
||||||
event TYPE string,
|
event TYPE string,
|
||||||
t_event_arg TYPE string_table,
|
t_event_arg TYPE string_table,
|
||||||
t_scroll_pos TYPE ty_t_name_value_int,
|
|
||||||
check_launchpad_active TYPE abap_bool,
|
check_launchpad_active TYPE abap_bool,
|
||||||
check_on_navigated TYPE abap_bool,
|
check_on_navigated TYPE abap_bool,
|
||||||
viewname TYPE string,
|
viewname TYPE string,
|
||||||
|
@ -73,6 +98,17 @@ INTERFACE z2ui5_if_client
|
||||||
s_config TYPE ty_s_config,
|
s_config TYPE ty_s_config,
|
||||||
END OF ty_s_get.
|
END OF ty_s_get.
|
||||||
|
|
||||||
|
TYPES:
|
||||||
|
BEGIN OF ty_s_actual,
|
||||||
|
event TYPE string,
|
||||||
|
t_event_arg TYPE string_table,
|
||||||
|
* check_launchpad_active TYPE abap_bool,
|
||||||
|
check_on_navigated TYPE abap_bool,
|
||||||
|
viewname TYPE string,
|
||||||
|
s_draft TYPE ty_s_draft,
|
||||||
|
s_config TYPE ty_s_config,
|
||||||
|
END OF ty_s_actual.
|
||||||
|
|
||||||
METHODS view_destroy.
|
METHODS view_destroy.
|
||||||
|
|
||||||
METHODS view_display
|
METHODS view_display
|
||||||
|
@ -165,8 +201,7 @@ INTERFACE z2ui5_if_client
|
||||||
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
||||||
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
||||||
tab TYPE STANDARD TABLE OPTIONAL
|
tab TYPE STANDARD TABLE OPTIONAL
|
||||||
tab_index TYPE i OPTIONAL
|
tab_index TYPE i OPTIONAL
|
||||||
struc TYPE data OPTIONAL
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
@ -179,8 +214,7 @@ INTERFACE z2ui5_if_client
|
||||||
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
||||||
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
||||||
tab TYPE STANDARD TABLE OPTIONAL
|
tab TYPE STANDARD TABLE OPTIONAL
|
||||||
tab_index TYPE i OPTIONAL
|
tab_index TYPE i OPTIONAL
|
||||||
struc TYPE data OPTIONAL
|
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(result) TYPE string.
|
VALUE(result) TYPE string.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user