mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-29 22:04:38 +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( )
|
||||
WHEN 'GET' THEN z2ui5_cl_fw_http_handler=>http_get( )
|
||||
WHEN 'POST' THEN z2ui5_cl_fw_http_handler=>http_post( server->request->get_cdata( ) ) ).
|
||||
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
|
||||
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_cdata( lv_resp ).
|
||||
|
@ -88,8 +88,8 @@ ENDMETHOD.
|
|||
METHOD if_http_service_extension~handle_request.
|
||||
|
||||
DATA(lv_resp) = SWITCH #( request->get_method( )
|
||||
WHEN 'GET' THEN z2ui5_cl_fw_http_handler=>http_get( )
|
||||
WHEN 'POST' THEN z2ui5_cl_fw_http_handler=>http_post( request->get_text( ) ) ).
|
||||
WHEN 'GET' THEN z2ui5_cl_http_handler=>http_get( )
|
||||
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_text( lv_resp ).
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
"default": {
|
||||
"filename": "./abaplint.jsonc"
|
||||
},
|
||||
"all_folder_min_check": {
|
||||
"filename": "./abaplint-basic.jsonc"
|
||||
"abap_standard_readiness": {
|
||||
"filename": "./abaplint-standard_abap_readiness.jsonc"
|
||||
},
|
||||
"abap_cloud_readiness": {
|
||||
"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
|
||||
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.
|
||||
|
||||
METHOD to_abap_value.
|
||||
|
|
|
@ -392,6 +392,12 @@ CLASS z2ui5_cl_util_func DEFINITION
|
|||
RETURNING
|
||||
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.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
@ -400,6 +406,26 @@ ENDCLASS.
|
|||
|
||||
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.
|
||||
|
||||
|
@ -1457,7 +1483,7 @@ CLASS z2ui5_cl_util_func IMPLEMENTATION.
|
|||
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
|
||||
RECEIVING
|
||||
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:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_CONTROLLER</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_FW_APP</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - handler</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - controller</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<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_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
|
||||
IMPORTING
|
||||
t_attri TYPE ty_t_attri
|
||||
|
@ -134,6 +152,63 @@ ENDCLASS.
|
|||
|
||||
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.
|
||||
|
||||
|
|
|
@ -7,36 +7,14 @@ CLASS z2ui5_cl_fw_client DEFINITION
|
|||
|
||||
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
|
||||
IMPORTING
|
||||
handler TYPE REF TO z2ui5_cl_fw_controller.
|
||||
handler TYPE REF TO z2ui5_cl_fw_app.
|
||||
|
||||
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.
|
||||
ENDCLASS.
|
||||
|
@ -46,128 +24,50 @@ ENDCLASS.
|
|||
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.
|
||||
|
||||
mo_handler = handler.
|
||||
mo_app = handler.
|
||||
|
||||
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.
|
||||
|
||||
result = VALUE #(
|
||||
event = mo_handler->ms_actual-event
|
||||
check_launchpad_active = mo_handler->ms_actual-check_launchpad_active
|
||||
t_event_arg = mo_handler->ms_actual-t_event_arg
|
||||
s_draft = CORRESPONDING #( mo_handler->ms_db )
|
||||
check_on_navigated = mo_handler->ms_actual-check_on_navigated
|
||||
s_config = z2ui5_cl_fw_controller=>ss_config ).
|
||||
event = mo_app->ms_actual-event
|
||||
check_launchpad_active = mo_app->mo_http_post->ms_request-s_control-check_launchpad
|
||||
t_event_arg = mo_app->ms_actual-t_event_arg
|
||||
s_draft = CORRESPONDING #( mo_app->ms_db )
|
||||
check_on_navigated = mo_app->ms_actual-check_on_navigated
|
||||
s_config = mo_app->mo_http_post->ms_request-s_frontend-s_config
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
ENDIF.
|
||||
|
@ -176,7 +76,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
|
||||
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.
|
||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
ENDIF.
|
||||
|
@ -186,114 +86,114 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~nest2_view_display.
|
||||
|
||||
mo_handler->ms_next-s_set-s_view_nest2-xml = val.
|
||||
mo_handler->ms_next-s_set-s_view_nest2-id = id.
|
||||
mo_handler->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-xml = val.
|
||||
mo_app->ms_next-s_set-s_view_nest2-id = id.
|
||||
mo_app->ms_next-s_set-s_view_nest2-method_destroy = method_destroy.
|
||||
mo_app->ms_next-s_set-s_view_nest2-method_insert = method_insert.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~nest_view_display.
|
||||
|
||||
mo_handler->ms_next-s_set-s_view_nest-xml = val.
|
||||
mo_handler->ms_next-s_set-s_view_nest-id = id.
|
||||
mo_handler->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-xml = val.
|
||||
mo_app->ms_next-s_set-s_view_nest-id = id.
|
||||
mo_app->ms_next-s_set-s_view_nest-method_destroy = method_destroy.
|
||||
mo_app->ms_next-s_set-s_view_nest-method_insert = method_insert.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~popover_display.
|
||||
|
||||
mo_handler->ms_next-s_set-s_popover-check_destroy = abap_false.
|
||||
mo_handler->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-check_destroy = abap_false.
|
||||
mo_app->ms_next-s_set-s_popover-xml = xml.
|
||||
mo_app->ms_next-s_set-s_popover-open_by_id = by_id.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~popup_display.
|
||||
|
||||
mo_handler->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-check_destroy = abap_false.
|
||||
mo_app->ms_next-s_set-s_popup-xml = val.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
|
@ -304,7 +204,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
DATA(lv_name) = z2ui5_if_client~_bind( val = tab
|
||||
path = abap_true ).
|
||||
result = bind_tab_cell(
|
||||
result = z2ui5_cl_fw_binding=>bind_tab_cell(
|
||||
iv_name = lv_name
|
||||
i_tab_index = tab_index
|
||||
i_tab = tab
|
||||
|
@ -313,23 +213,23 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF struc IS NOT INITIAL.
|
||||
|
||||
DATA(lv_name_struc) = z2ui5_if_client~_bind_edit( val = struc
|
||||
path = abap_true ).
|
||||
result = bind_struc_comp(
|
||||
iv_name = lv_name_struc
|
||||
i_struc = struc
|
||||
i_val = val ).
|
||||
|
||||
RETURN.
|
||||
|
||||
ENDIF.
|
||||
* IF struc IS NOT INITIAL.
|
||||
*
|
||||
* 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 ).
|
||||
*
|
||||
* RETURN.
|
||||
*
|
||||
* 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
|
||||
app = mo_app->ms_db-app
|
||||
attri = mo_app->ms_db-t_attri
|
||||
check_attri = mo_app->ms_db-check_attri
|
||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
data = val
|
||||
custom_mapper = custom_mapper
|
||||
|
@ -337,8 +237,8 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
).
|
||||
|
||||
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.
|
||||
mo_app->ms_db-t_attri = lo_binder->mt_attri.
|
||||
mo_app->ms_db-check_attri = lo_binder->mv_check_attri.
|
||||
|
||||
IF path = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
|
@ -349,11 +249,11 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
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 && `-`.
|
||||
DELETE mo_handler->ms_db-t_attri.
|
||||
DELETE mo_app->ms_db-t_attri.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
|
@ -363,7 +263,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
CASE val.
|
||||
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.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -372,49 +272,43 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
IF tab IS NOT INITIAL.
|
||||
|
||||
DATA(lv_name) = z2ui5_if_client~_bind_edit( val = tab
|
||||
path = abap_true ).
|
||||
result = bind_tab_cell(
|
||||
DATA(lv_name) = z2ui5_if_client~_bind_edit( val = tab path = abap_true ).
|
||||
result = z2ui5_cl_fw_binding=>bind_tab_cell(
|
||||
iv_name = lv_name
|
||||
i_tab_index = tab_index
|
||||
i_tab = tab
|
||||
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
|
||||
path = abap_true ).
|
||||
result = bind_struc_comp(
|
||||
iv_name = lv_name_struc
|
||||
i_struc = struc
|
||||
i_val = val ).
|
||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||
app = mo_app->ms_db-app
|
||||
attri = mo_app->ms_db-t_attri
|
||||
check_attri = mo_app->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
|
||||
).
|
||||
|
||||
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.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -423,9 +317,9 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
METHOD z2ui5_if_client~_bind_local.
|
||||
|
||||
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
|
||||
app = mo_app->ms_db-app
|
||||
attri = mo_app->ms_db-t_attri
|
||||
check_attri = mo_app->ms_db-check_attri
|
||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_time
|
||||
data = val
|
||||
custom_mapper = custom_mapper
|
||||
|
@ -433,8 +327,8 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
).
|
||||
|
||||
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.
|
||||
mo_app->ms_db-t_attri = lo_binder->mt_attri.
|
||||
mo_app->ms_db-check_attri = lo_binder->mv_check_attri.
|
||||
|
||||
IF path = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
|
@ -446,14 +340,14 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
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 = result && set_arg_string( t_arg ).
|
||||
result = result && z2ui5_cl_util_func=>ui5_set_arg_string( t_arg ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -11,10 +11,10 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
METHOD first_test.
|
||||
|
||||
DATA(lo_handler) = NEW z2ui5_cl_fw_controller( ).
|
||||
DATA(lo_client) = NEW z2ui5_cl_fw_client( lo_handler ).
|
||||
|
||||
DATA(li_client) = CAST z2ui5_if_client( lo_client ) ##NEEDED.
|
||||
* DATA(lo_handler) = NEW z2ui5_cl_fw_controller( ).
|
||||
* DATA(lo_client) = NEW z2ui5_cl_fw_client( lo_handler ).
|
||||
*
|
||||
* DATA(li_client) = CAST z2ui5_if_client( lo_client ) ##NEEDED.
|
||||
|
||||
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
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
@ -51,7 +51,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_db IMPLEMENTATION.
|
||||
CLASS Z2UI5_CL_FW_DRAFT IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD cleanup.
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_DB</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_FW_DRAFT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - database</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - draft</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,26 +1,20 @@
|
|||
CLASS z2ui5_cl_fw_index_html DEFINITION
|
||||
CLASS z2ui5_cl_fw_http_get DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_config,
|
||||
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.
|
||||
DATA ms_request TYPE z2ui5_if_client=>ty_s_http_request_get.
|
||||
DATA mv_response TYPE string.
|
||||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
i_config TYPE ty_s_config
|
||||
val TYPE z2ui5_if_client=>ty_s_http_request_get
|
||||
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
|
||||
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.
|
||||
|
||||
result = NEW #( ).
|
||||
result->ms_config = i_config.
|
||||
|
||||
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( ).
|
||||
result->ms_request = val.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -510,8 +432,8 @@ CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
|||
` PATHNAME: sap.z2ui5.pathname,` && |\n| &&
|
||||
` SEARCH: window.location.search,` && |\n| &&
|
||||
` // VERSION: sap.ui.getVersionInfo().gav,` && |\n| &&
|
||||
` CHECK_LAUNCHPAD_ACTIVE: sap.ushell !== undefined,` && |\n| &&
|
||||
` STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||
* ` CHECK_LAUNCHPAD_ACTIVE: sap.ushell !== undefined,` && |\n| &&
|
||||
* ` STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||
` T_STARTUP_PARAMETERS: sap.z2ui5.startupParameters,` && |\n| &&
|
||||
` };` && |\n| &&
|
||||
` if (sap.z2ui5.search) {` && |\n| &&
|
||||
|
@ -546,4 +468,77 @@ CLASS Z2UI5_CL_FW_INDEX_HTML IMPLEMENTATION.
|
|||
`);`.
|
||||
|
||||
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.
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_INDEX_HTML</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_FW_HTTP_GET</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - index.html</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - http get handler</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,4 +1,4 @@
|
|||
CLASS z2ui5_cl_fw_model_ajson DEFINITION
|
||||
CLASS z2ui5_cl_fw_http_mapper DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
@ -6,14 +6,26 @@ CLASS z2ui5_cl_fw_model_ajson DEFINITION
|
|||
PUBLIC SECTION.
|
||||
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
|
||||
app TYPE REF TO object
|
||||
viewname TYPE string
|
||||
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
||||
ajson_in TYPE REF TO z2ui5_if_ajson ##NEEDED.
|
||||
|
||||
CLASS-METHODS back_to_front
|
||||
METHODS model_back_to_front
|
||||
IMPORTING
|
||||
app TYPE REF TO object
|
||||
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.
|
||||
|
||||
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.
|
||||
METHOD model_back_to_front.
|
||||
TRY.
|
||||
|
||||
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).
|
||||
ASSERT x IS NOT BOUND.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD front_to_back.
|
||||
|
||||
DATA(ajson) = ajson_in->slice( `/EDIT` ).
|
||||
METHOD model_front_to_back.
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri)
|
||||
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>.
|
||||
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.
|
||||
ajson_val = ajson_val->map( lr_attri->custom_mapper_back ).
|
||||
|
@ -161,4 +138,122 @@ CLASS z2ui5_cl_fw_model_ajson IMPLEMENTATION.
|
|||
|
||||
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.
|
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:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_MODEL_AJSON</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_FW_HTTP_POST</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>test</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - http post handler</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<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.
|
||||
|
||||
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.
|
||||
cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ).
|
||||
ENDIF.
|
||||
|
@ -26,7 +26,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
|||
|
||||
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 `&`.
|
||||
cl_abap_unit_assert=>fail( 'HTTP GET - index html contains the character & -> no launchpad compatibility' ).
|
||||
ENDIF.
|
||||
|
@ -36,7 +36,7 @@ CLASS ltcl_unit_02_app_start IMPLEMENTATION.
|
|||
|
||||
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';`.
|
||||
cl_abap_unit_assert=>fail( 'path static' ).
|
||||
ENDIF.
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HTTP_HANDLER</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_HTTP_HANDLER</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - http handler</DESCRIPT>
|
||||
<STATE>1</STATE>
|
|
@ -32,26 +32,52 @@ INTERFACE z2ui5_if_client
|
|||
n TYPE string,
|
||||
v TYPE string,
|
||||
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_int TYPE TABLE OF ty_s_name_value_int WITH EMPTY KEY.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_config,
|
||||
* view_model_edit_name TYPE string,
|
||||
version TYPE string,
|
||||
origin TYPE string,
|
||||
pathname TYPE string,
|
||||
search TYPE string,
|
||||
* body TYPE string,
|
||||
check_launchpad_active TYPE abap_bool,
|
||||
t_startup_params TYPE ty_t_name_value,
|
||||
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:
|
||||
BEGIN OF ty_s_draft,
|
||||
id TYPE string,
|
||||
|
@ -65,7 +91,6 @@ INTERFACE z2ui5_if_client
|
|||
BEGIN OF ty_s_get,
|
||||
event TYPE string,
|
||||
t_event_arg TYPE string_table,
|
||||
t_scroll_pos TYPE ty_t_name_value_int,
|
||||
check_launchpad_active TYPE abap_bool,
|
||||
check_on_navigated TYPE abap_bool,
|
||||
viewname TYPE string,
|
||||
|
@ -73,6 +98,17 @@ INTERFACE z2ui5_if_client
|
|||
s_config TYPE ty_s_config,
|
||||
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_display
|
||||
|
@ -165,8 +201,7 @@ INTERFACE z2ui5_if_client
|
|||
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
||||
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
||||
tab TYPE STANDARD TABLE OPTIONAL
|
||||
tab_index TYPE i OPTIONAL
|
||||
struc TYPE data OPTIONAL
|
||||
tab_index TYPE i OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
|
@ -179,8 +214,7 @@ INTERFACE z2ui5_if_client
|
|||
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
|
||||
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
|
||||
tab TYPE STANDARD TABLE OPTIONAL
|
||||
tab_index TYPE i OPTIONAL
|
||||
struc TYPE data OPTIONAL
|
||||
tab_index TYPE i OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user