Refactoring (#878)

* refactoring

* refactoring

* update

* update
This commit is contained in:
oblomov 2024-02-09 12:37:24 +01:00 committed by GitHub
parent e7f1ae439d
commit b9baa320d6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 1292 additions and 1115 deletions

View File

@ -1,33 +1,33 @@
CLASS z2ui5_cl_util DEFINITION
PUBLIC
CREATE PUBLIC
INHERITING FROM z2ui5_cl_util_api.
INHERITING FROM z2ui5_cl_util_api
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS db_save
IMPORTING
uname TYPE clike OPTIONAL
handle TYPE clike OPTIONAL
handle2 TYPE clike OPTIONAL
handle3 TYPE clike OPTIONAL
data TYPE any
check_commit TYPE abap_bool DEFAULT abap_true
!uname TYPE clike OPTIONAL
!handle TYPE clike OPTIONAL
!handle2 TYPE clike OPTIONAL
!handle3 TYPE clike OPTIONAL
!data TYPE any
!check_commit TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS db_load_by_id
IMPORTING
id TYPE clike OPTIONAL
!id TYPE clike OPTIONAL
EXPORTING
VALUE(result) TYPE any.
CLASS-METHODS db_load_by_handle
IMPORTING
uname TYPE clike OPTIONAL
handle TYPE clike OPTIONAL
handle2 TYPE clike OPTIONAL
handle3 TYPE clike OPTIONAL
!uname TYPE clike OPTIONAL
!handle TYPE clike OPTIONAL
!handle2 TYPE clike OPTIONAL
!handle3 TYPE clike OPTIONAL
EXPORTING
VALUE(result) TYPE any.
@ -39,6 +39,7 @@ ENDCLASS.
CLASS z2ui5_cl_util IMPLEMENTATION.
METHOD db_load_by_handle.
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
@ -102,5 +103,4 @@ CLASS z2ui5_cl_util IMPLEMENTATION.
result = ls_db-id.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,62 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS:
first_test FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD first_test.
TYPES:
BEGIN OF ty_row,
title TYPE string,
value TYPE string,
selected TYPE abap_bool,
END OF ty_row.
DATA(ls_row) = VALUE ty_row(
title = `test`
value = `val`
selected = abap_true ).
DATA(ls_row_result) = VALUE ty_row( ).
DATA(lv_id) = z2ui5_cl_util=>db_save(
uname = `name`
handle = `handle1`
handle2 = `handle2`
handle3 = `handle3`
data = ls_row ).
z2ui5_cl_util=>db_load_by_id(
EXPORTING
id = lv_id
IMPORTING
result = ls_row_result ).
cl_abap_unit_assert=>assert_equals(
act = ls_row_result
exp = ls_row ).
CLEAR ls_row_result.
z2ui5_cl_util=>db_load_by_handle(
EXPORTING
uname = `name`
handle = `handle1`
handle2 = `handle2`
handle3 = `handle3`
IMPORTING
result = ls_row_result
).
cl_abap_unit_assert=>assert_equals(
act = ls_row_result
exp = ls_row ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

File diff suppressed because it is too large Load Diff

View File

@ -10,14 +10,14 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
short TYPE string,
medium TYPE string,
long TYPE string,
END OF ty_data_element_texts.
END OF ty_data_element_texts .
CLASS-METHODS method_get_source
IMPORTING
iv_classname TYPE clike
iv_methodname TYPE clike
!iv_classname TYPE clike
!iv_methodname TYPE clike
RETURNING
VALUE(result) TYPE string_table.
VALUE(result) TYPE string_table.
CLASS-METHODS uuid_get_c32
RETURNING
@ -29,31 +29,31 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
CLASS-METHODS rtti_get_data_element_texts
IMPORTING
i_data_element_name TYPE string
!i_data_element_name TYPE string
RETURNING
VALUE(result) TYPE ty_data_element_texts.
VALUE(result) TYPE ty_data_element_texts.
CLASS-METHODS conv_decode_x_base64
IMPORTING
val TYPE string
!val TYPE string
RETURNING
VALUE(result) TYPE xstring.
CLASS-METHODS conv_encode_x_base64
IMPORTING
val TYPE xstring
!val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS conv_get_string_by_xstring
IMPORTING
val TYPE xstring
!val TYPE xstring
RETURNING
VALUE(result) TYPE string.
CLASS-METHODS conv_get_xstring_by_string
IMPORTING
val TYPE string
!val TYPE string
RETURNING
VALUE(result) TYPE xstring.
@ -63,6 +63,8 @@ CLASS z2ui5_cl_util_stmpncfctn DEFINITION
RETURNING
VALUE(result) TYPE string_table.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
@ -70,159 +72,54 @@ ENDCLASS.
CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
METHOD rtti_get_data_element_texts.
DATA:
data_element_name TYPE c LENGTH 30,
ddic_ref TYPE REF TO data,
data_element TYPE REF TO object,
content TYPE REF TO object,
BEGIN OF ddic,
reptext TYPE string,
scrtext_s TYPE string,
scrtext_m TYPE string,
scrtext_l TYPE string,
END OF ddic,
exists TYPE abap_bool.
data_element_name = i_data_element_name.
TRY.
cl_abap_typedescr=>describe_by_name( 'T100' ).
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
ASSERT sy-subrc = 0.
DATA(data_descr) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( data_element_name ) ).
CALL METHOD data_descr->('GET_DDIC_FIELD')
RECEIVING
p_flddescr = <ddic>
EXCEPTIONS
not_found = 1
no_ddic_type = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
ddic = CORRESPONDING #( <ddic> ).
result-header = ddic-reptext.
result-short = ddic-scrtext_s.
result-medium = ddic-scrtext_m.
result-long = ddic-scrtext_l.
CATCH cx_root.
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
EXPORTING
iv_name = data_element_name
RECEIVING
ro_data_element = data_element.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
RECEIVING
rv_exists = exists.
IF exists = abap_false.
RETURN.
ENDIF.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
RECEIVING
ro_content = content.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
RECEIVING
rs_heading_field_label = result-header.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
RECEIVING
rs_short_field_label = result-short.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
RECEIVING
rs_medium_field_label = result-medium.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
RECEIVING
rs_long_field_label = result-long.
ENDTRY.
ENDMETHOD.
METHOD rtti_get_classes_impl_intf.
DATA obj TYPE REF TO object.
FIELD-SYMBOLS <any> TYPE any.
DATA lt_implementation_names TYPE string_table.
TYPES:
BEGIN OF ty_s_impl,
clsname TYPE c LENGTH 30,
refclsname TYPE c LENGTH 30,
END OF ty_s_impl.
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
TYPES: BEGIN OF ty_s_key,
intkey TYPE c LENGTH 30,
END OF ty_s_key.
DATA ls_key TYPE ty_s_key.
METHOD conv_decode_x_base64.
TRY.
CALL METHOD ('XCO_CP_ABAP')=>interface
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('DECODE_X_BASE64')
EXPORTING
iv_name = val
encoded = val
RECEIVING
ro_interface = obj.
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
ENDIF.
obj = <any>.
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
ENDIF.
obj = <any>.
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
RECEIVING
rt_names = lt_implementation_names.
result = lt_implementation_names.
decoded = result.
CATCH cx_sy_dyn_call_illegal_class.
ls_key-intkey = val.
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
CALL FUNCTION lv_fm
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('DECODE_X_BASE64')
EXPORTING
intkey = ls_key
IMPORTING
impkeys = lt_impl
EXCEPTIONS
not_existing = 1
OTHERS = 2.
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
ENDLOOP.
encoded = val
RECEIVING
decoded = result.
ENDTRY.
ENDMETHOD.
METHOD conv_encode_x_base64.
TRY.
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
ENDTRY.
ENDMETHOD.
METHOD conv_get_string_by_xstring.
DATA conv TYPE REF TO object.
@ -255,6 +152,7 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
ENDMETHOD.
METHOD conv_get_xstring_by_string.
DATA conv TYPE REF TO object.
@ -287,127 +185,6 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
ENDMETHOD.
METHOD conv_decode_x_base64.
TRY.
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('DECODE_X_BASE64')
EXPORTING
encoded = val
RECEIVING
decoded = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('DECODE_X_BASE64')
EXPORTING
encoded = val
RECEIVING
decoded = result.
ENDTRY.
ENDMETHOD.
METHOD conv_encode_x_base64.
TRY.
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
CATCH cx_sy_dyn_call_illegal_class.
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
ENDTRY.
ENDMETHOD.
METHOD uuid_get_c22.
DATA uuid TYPE c LENGTH 22.
TRY.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
RECEIVING
uuid = uuid.
CATCH cx_sy_dyn_call_illegal_class.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_22 = uuid.
ENDTRY.
result = uuid.
CATCH cx_root.
ASSERT 1 = 0.
ENDTRY.
result = replace( val = result
sub = `}`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `{`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `"`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `'`
with = `0`
occ = 0 ).
ENDMETHOD.
METHOD uuid_get_c32.
DATA uuid TYPE c LENGTH 32.
TRY.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = uuid.
CATCH cx_sy_dyn_call_illegal_class.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_32 = uuid.
ENDTRY.
result = uuid.
CATCH cx_root.
ASSERT 1 = 0.
ENDTRY.
ENDMETHOD.
METHOD method_get_source.
@ -485,4 +262,248 @@ CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
result = lt_string.
ENDMETHOD.
METHOD rtti_get_classes_impl_intf.
DATA obj TYPE REF TO object.
FIELD-SYMBOLS <any> TYPE any.
DATA lt_implementation_names TYPE string_table.
TYPES:
BEGIN OF ty_s_impl,
clsname TYPE c LENGTH 30,
refclsname TYPE c LENGTH 30,
END OF ty_s_impl.
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
TYPES: BEGIN OF ty_s_key,
intkey TYPE c LENGTH 30,
END OF ty_s_key.
DATA ls_key TYPE ty_s_key.
TRY.
CALL METHOD ('XCO_CP_ABAP')=>interface
EXPORTING
iv_name = val
RECEIVING
ro_interface = obj.
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
ENDIF.
obj = <any>.
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
ENDIF.
obj = <any>.
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
RECEIVING
rt_names = lt_implementation_names.
result = lt_implementation_names.
CATCH cx_sy_dyn_call_illegal_class.
ls_key-intkey = val.
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
CALL FUNCTION lv_fm
EXPORTING
intkey = ls_key
IMPORTING
impkeys = lt_impl
EXCEPTIONS
not_existing = 1
OTHERS = 2.
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
ENDLOOP.
ENDTRY.
ENDMETHOD.
METHOD rtti_get_data_element_texts.
DATA:
data_element_name TYPE c LENGTH 30,
ddic_ref TYPE REF TO data,
data_element TYPE REF TO object,
content TYPE REF TO object,
BEGIN OF ddic,
reptext TYPE string,
scrtext_s TYPE string,
scrtext_m TYPE string,
scrtext_l TYPE string,
END OF ddic,
exists TYPE abap_bool.
data_element_name = i_data_element_name.
TRY.
cl_abap_typedescr=>describe_by_name( 'T100' ).
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
ASSERT sy-subrc = 0.
cl_abap_elemdescr=>describe_by_name(
EXPORTING
p_name = data_element_name
RECEIVING
p_descr_ref = DATA(lo_typedescr)
EXCEPTIONS
OTHERS = 1 ).
IF sy-subrc <> 0.
RETURN.
ENDIF.
DATA(data_descr) = CAST cl_abap_datadescr( lo_typedescr ).
CALL METHOD data_descr->('GET_DDIC_FIELD')
RECEIVING
p_flddescr = <ddic>
EXCEPTIONS
not_found = 1
no_ddic_type = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
ddic = CORRESPONDING #( <ddic> ).
result-header = ddic-reptext.
result-short = ddic-scrtext_s.
result-medium = ddic-scrtext_m.
result-long = ddic-scrtext_l.
CATCH cx_root.
TRY.
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
EXPORTING
iv_name = data_element_name
RECEIVING
ro_data_element = data_element.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
RECEIVING
rv_exists = exists.
IF exists = abap_false.
RETURN.
ENDIF.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
RECEIVING
ro_content = content.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
RECEIVING
rs_heading_field_label = result-header.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
RECEIVING
rs_short_field_label = result-short.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
RECEIVING
rs_medium_field_label = result-medium.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
RECEIVING
rs_long_field_label = result-long.
CATCH cx_root.
ENDTRY.
ENDTRY.
ENDMETHOD.
METHOD uuid_get_c22.
DATA uuid TYPE c LENGTH 22.
TRY.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
RECEIVING
uuid = uuid.
CATCH cx_sy_dyn_call_illegal_class.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_22 = uuid.
ENDTRY.
result = uuid.
CATCH cx_root.
ASSERT 1 = 0.
ENDTRY.
result = replace( val = result
sub = `}`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `{`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `"`
with = `0`
occ = 0 ).
result = replace( val = result
sub = `'`
with = `0`
occ = 0 ).
ENDMETHOD.
METHOD uuid_get_c32.
DATA uuid TYPE c LENGTH 32.
TRY.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = uuid.
CATCH cx_sy_dyn_call_illegal_class.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_32 = uuid.
ENDTRY.
result = uuid.
CATCH cx_root.
ASSERT 1 = 0.
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,61 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PRIVATE SECTION.
METHODS test_func_get_uuid_32 FOR TESTING RAISING cx_static_check.
METHODS test_func_get_uuid_22 FOR TESTING RAISING cx_static_check.
METHODS test_encoding FOR TESTING RAISING cx_static_check.
METHODS test_element_text FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD test_func_get_uuid_32.
DATA(lv_uuid) = z2ui5_cl_util_stmpncfctn=>uuid_get_c32( ).
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
cl_abap_unit_assert=>assert_equals(
act = 32
exp = strlen( lv_uuid ) ).
ENDMETHOD.
METHOD test_func_get_uuid_22.
DATA(lv_uuid) = z2ui5_cl_util_stmpncfctn=>uuid_get_c22( ).
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
cl_abap_unit_assert=>assert_equals(
act = 22
exp = strlen( lv_uuid ) ).
ENDMETHOD.
METHOD test_encoding.
DATA(lv_string) = `my string`.
DATA(lv_xstring) = z2ui5_cl_util_stmpncfctn=>conv_get_xstring_by_string( lv_string ).
DATA(lv_string2) = z2ui5_cl_util_stmpncfctn=>conv_encode_x_base64( lv_xstring ).
DATA(lv_xstring2) = z2ui5_cl_util_stmpncfctn=>conv_decode_x_base64( lv_string2 ).
DATA(lv_string3) = z2ui5_cl_util_stmpncfctn=>conv_get_string_by_xstring( lv_xstring2 ).
cl_abap_unit_assert=>assert_equals(
act = lv_string3
exp = lv_string ).
ENDMETHOD.
METHOD test_element_text.
IF sy-sysid = 'ABC'.
RETURN.
ENDIF.
DATA(ls_result) = z2ui5_cl_util_stmpncfctn=>rtti_get_data_element_texts( `UNAME` ).
cl_abap_unit_assert=>assert_not_initial( ls_result ).
ENDMETHOD.
ENDCLASS.

View File

@ -10,6 +10,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
</asx:values>
</asx:abap>

View File

@ -20,7 +20,8 @@ CLASS z2ui5_cx_util_error DEFINITION
PREFERRED PARAMETER val .
METHODS if_message~get_text
REDEFINITION .
REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.

View File

@ -6,7 +6,7 @@ CLASS z2ui5_cl_core_http_get DEFINITION
PUBLIC SECTION.
DATA ms_request TYPE z2ui5_if_types=>ty_s_http_request_get.
DATA mv_response TYPE string .
DATA mv_response TYPE string.
METHODS constructor
IMPORTING
@ -25,6 +25,15 @@ CLASS z2ui5_cl_core_http_get DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
METHODS get_default_config
RETURNING
VALUE(result) TYPE z2ui5_if_types=>ty_s_http_request_get-t_config.
METHODS get_default_security_policy
RETURNING
VALUE(result) TYPE string.
PRIVATE SECTION.
ENDCLASS.
@ -314,9 +323,7 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
` sap.z2ui5.onBeforeRoundtrip.forEach(item=>{` && |\n| &&
` if (item !== undefined) {` && |\n| &&
` item();` && |\n| &&
` }` && |\n| &&
` }` && |\n| &&
` )` && |\n| &&
` }})` && |\n| &&
` if (args[0].CHECK_VIEW_DESTROY) {` && |\n| &&
` sap.z2ui5.oController.ViewDestroy();` && |\n| &&
` }` && |\n| &&
@ -425,28 +432,25 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
` delete sap.z2ui5.oBody.ID;` && |\n| &&
` delete sap.z2ui5.oBody?.VIEWNAME;` && |\n| &&
` delete sap.z2ui5.oBody?.APP_START;` && |\n| &&
` delete sap.z2ui5.oBody?.S_FRONTEND.EDIT;` && |\n| &&
` delete sap.z2ui5.oBody?.ARGUMENTS;` && |\n| &&
` sap.z2ui5.oController.readHttp();` && |\n| &&
` },` && |\n| &&
` })` && |\n| &&
`});` && |\n| &&
|\n| &&
`sap.ui.require(["z2ui5/Controller", "sap/ui/core/BusyIndicator", "sap/ui/core/mvc/XMLView", "sap/ui/core/Fragment", "sap/m/MessageToast", "sap/m/MessageBox", "sap/ui/model/json/JSONModel"], (Controller,BusyIndicator)=>{` && |\n| &&
|\n| &&
` BusyIndicator.show();` && |\n| &&
` sap.z2ui5.oController = new Controller();` && |\n| &&
` sap.z2ui5.oControllerNest = new Controller();` && |\n| &&
` sap.z2ui5.oControllerNest2 = new Controller();` && |\n| &&
` sap.z2ui5.oControllerPopup = new Controller();` && |\n| &&
` sap.z2ui5.oControllerPopover = new Controller();` && |\n| &&
|\n| &&
` sap.z2ui5.pathname = sap.z2ui5.pathname || window.location.pathname;` && |\n| &&
` sap.z2ui5.checkNestAfter = false;` && |\n| &&
|\n| &&
` sap.z2ui5.oBody = {` && |\n| &&
` APP_START: sap.z2ui5.APP_START` && |\n| &&
` };` && |\n| &&
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|\n| &&
` sap.z2ui5.onBeforeRoundtrip = [];` && |\n| &&
` sap.z2ui5.onAfterRendering = [];` && |\n| &&
` sap.z2ui5.onBeforeEventFrontend = [];` && |\n| &&
@ -478,25 +482,13 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
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.
DATA(lt_config) = COND #( WHEN ms_request-t_config IS INITIAL
THEN get_default_config( )
ELSE ms_request-t_config ).
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.
DATA(lv_sec_policy) = COND #( WHEN ms_request-content_security_policy IS INITIAL
THEN get_default_security_policy( )
ELSE ms_request-content_security_policy ).
mv_response = `<!DOCTYPE html>` && |\n| &&
`<html lang="en">` && |\n| &&
@ -544,7 +536,28 @@ CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
`<abc/></body></html>`.
NEW z2ui5_cl_core_draft_srv( )->cleanup( ).
result = mv_response.
ENDMETHOD.
METHOD get_default_config.
result = VALUE #(
( n = `src` v = `https://sdk.openui5.org/resources/sap-ui-cachebuster/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` ) ).
ENDMETHOD.
METHOD get_default_security_policy.
result = `<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"/>`.
ENDMETHOD.
ENDCLASS.

View File

@ -82,11 +82,12 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
METHOD main_end.
* TRY.
ms_response = VALUE #(
s_frontend-params = mo_action->ms_next-s_set
s_frontend-id = mo_action->mo_app->ms_draft-id
s_frontend-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
s_frontend-app_start = ms_request-s_control-app_start
model = mo_action->mo_app->model_json_stringify( ) ).
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
@ -95,9 +96,6 @@ CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
CLEAR mo_action->ms_next.
mo_action->mo_app->db_save( ).
* CATCH cx_root INTO DATA(x).
* ASSERT x IS NOT BOUND.
* ENDTRY.
ENDMETHOD.

View File

@ -98,8 +98,10 @@ INTERFACE z2ui5_if_core_types
TYPES:
BEGIN OF ty_s_http_response_post,
BEGIN OF s_frontend,
params TYPE ty_s_next_frontend,
id TYPE string,
params TYPE ty_s_next_frontend,
id TYPE string,
app_start TYPE string,
app TYPE string,
END OF s_frontend,
model TYPE string,
END OF ty_s_http_response_post.

View File

@ -0,0 +1,81 @@
CLASS z2ui5_cl_popup_js_loader DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
CLASS-METHODS factory
IMPORTING
i_js TYPE string
i_result TYPE string DEFAULT `LOADED`
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_js_loader.
METHODS result
RETURNING
VALUE(result3) TYPE string.
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA js TYPE string.
DATA user_command TYPE string.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POPUP_JS_LOADER IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->js = i_js.
r_result->user_command = i_result.
ENDMETHOD.
METHOD result.
result3 = user_command.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = `load library`
)->content(
)->_z2ui5( )->timer( client->_event( 'TIMER_FINISHED' )
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( js ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.
view_display( ).
RETURN.
ENDIF.
CASE client->get( )-event.
WHEN `TIMER_FINISHED`.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
ENDCLASS.

View 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_POPUP_JS_LOADER</CLSNAME>
<LANGU>E</LANGU>
<DESCRIPT>ui - popup to load js</DESCRIPT>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -1,7 +1,7 @@
INTERFACE z2ui5_if_app PUBLIC.
INTERFACES if_serializable_object.
CONSTANTS version TYPE string VALUE '1.118.0'.
CONSTANTS version TYPE string VALUE '1.119.0'.
CONSTANTS origin TYPE string VALUE 'https://github.com/abap2UI5/abap2UI5'.
CONSTANTS license TYPE string VALUE 'MIT'.