Refactoring2 (#1520)

* update

* update

* update

* update
This commit is contained in:
oblomov-dev 2024-10-27 15:33:52 +01:00 committed by GitHub
parent a0df28a4ab
commit 771f7f9d0b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
66 changed files with 3486 additions and 4119 deletions

View File

@ -1,36 +0,0 @@
name: Clean-up ABAP Files
on:
push:
branches: ["main"]
# pull_request:
# branches: ["main"]
workflow_dispatch:
jobs:
Code-Cleanup:
runs-on: ubuntu-latest
steps:
- run: git config --global core.autocrlf true
- name: Checkout
uses: actions/checkout@v3
- name: Download ABAP Cleaner (latest version)
run: |
mkdir .cleanup
cd .cleanup
wget -q -c https://github.com/SAP/abap-cleaner/releases/latest/download/com.sap.adt.abapcleaner.app-linux.gtk.x86_64.tar.gz -O - | tar -xz
cd ..
- name: Clean-up files in /src
run: ./.cleanup/abapcleaner/abap-cleaner --sourcedir src --recursive --overwrite --profile cleaner-profile.cfj --release 750 --stats --usedrules
- name: Commit changes
uses: EndBug/add-and-commit@v9
with:
default_author: github_actions
message: "style: code cleanup with ABAP cleaner"
add: "src"

View File

@ -33,7 +33,7 @@
"RemoveIncludeWarnings": "1",
"RemoveEmptyLineAboveEndClass": "0",
"AddEmptyLineAboveSections": "1",
"RemoveEmptyLineBelowSections": "1",
"RemoveEmptyLineBelowSections": "0",
"MaxEmptyLines": "1",
"AddLineBetweenDefTypes": "2"
}

View File

@ -1,14 +1,14 @@
CLASS z2ui5_cl_abap_api DEFINITION
PUBLIC
CREATE PUBLIC .
CREATE PUBLIC.
PUBLIC SECTION.
* abap-api - Serving a Release & Version Independent ABAP Layer
* version: '0.0.1'.
* origin: https://github.com/oblomov-dev/abap-api
* author: https://github.com/oblomov-dev
* license: MIT.
" abap-api - Serving a Release & Version Independent ABAP Layer
" version: '0.0.1'.
" origin: https://github.com/oblomov-dev/abap-api
" author: https://github.com/oblomov-dev
" license: MIT.
TYPES:
BEGIN OF ty_s_fix_val,
@ -78,7 +78,7 @@ CLASS z2ui5_cl_abap_api DEFINITION
short TYPE string,
medium TYPE string,
long TYPE string,
END OF ty_s_data_element_text .
END OF ty_s_data_element_text.
TYPES:
BEGIN OF ty_s_class_descr,
@ -180,9 +180,7 @@ CLASS z2ui5_cl_abap_api DEFINITION
ENDCLASS.
CLASS z2ui5_cl_abap_api IMPLEMENTATION.
METHOD context_check_abap_cloud.
TRY.
@ -211,14 +209,11 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
lv_langu = langu.
CALL METHOD elemdescr->('GET_DDIC_FIXED_VALUES')
EXPORTING
p_langu = lv_langu
RECEIVING
p_fixed_values = lt_values
EXCEPTIONS
not_found = 1
no_ddic_type = 2
OTHERS = 3.
EXPORTING p_langu = lv_langu
RECEIVING p_fixed_values = lt_values
EXCEPTIONS not_found = 1
no_ddic_type = 2
OTHERS = 3.
LOOP AT lt_values REFERENCE INTO DATA(lr_fix).
@ -237,50 +232,40 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
DATA(lv_web_http_name) = 'CL_WEB_HTTP_UTILITY'.
CALL METHOD (lv_web_http_name)=>('DECODE_X_BASE64')
EXPORTING
encoded = val
RECEIVING
decoded = result.
EXPORTING encoded = val
RECEIVING decoded = result.
CATCH cx_root.
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('DECODE_X_BASE64')
EXPORTING
encoded = val
RECEIVING
decoded = result.
EXPORTING encoded = val
RECEIVING decoded = result.
ENDTRY.
ENDMETHOD.
METHOD conv_encode_x_base64.
TRY.
DATA(lv_web_http_name) = 'CL_WEB_HTTP_UTILITY'.
CALL METHOD (lv_web_http_name)=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
EXPORTING unencoded = val
RECEIVING encoded = result.
CATCH cx_root.
DATA(classname) = 'CL_HTTP_UTILITY'.
CALL METHOD (classname)=>('ENCODE_X_BASE64')
EXPORTING
unencoded = val
RECEIVING
encoded = result.
EXPORTING unencoded = val
RECEIVING encoded = result.
ENDTRY.
ENDMETHOD.
METHOD conv_get_string_by_xstring.
DATA conv TYPE REF TO object.
@ -288,34 +273,26 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
TRY.
DATA(conv_codepage) = 'CL_ABAP_CONV_CODEPAGE'.
CALL METHOD (conv_codepage)=>create_in
RECEIVING
instance = conv.
RECEIVING instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_IN~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
EXPORTING source = val
RECEIVING result = result.
CATCH cx_root.
DATA(conv_in_class) = 'CL_ABAP_CONV_IN_CE'.
CALL METHOD (conv_in_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
EXPORTING encoding = 'UTF-8'
RECEIVING conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
input = val
IMPORTING
data = result.
EXPORTING input = val
IMPORTING data = result.
ENDTRY.
ENDMETHOD.
METHOD conv_get_xstring_by_string.
DATA conv TYPE REF TO object.
@ -323,34 +300,26 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
TRY.
DATA(conv_codepage) = 'CL_ABAP_CONV_CODEPAGE'.
CALL METHOD (conv_codepage)=>create_out
RECEIVING
instance = conv.
RECEIVING instance = conv.
CALL METHOD conv->('IF_ABAP_CONV_OUT~CONVERT')
EXPORTING
source = val
RECEIVING
result = result.
EXPORTING source = val
RECEIVING result = result.
CATCH cx_root.
DATA(conv_out_class) = 'CL_ABAP_CONV_OUT_CE'.
CALL METHOD (conv_out_class)=>create
EXPORTING
encoding = 'UTF-8'
RECEIVING
conv = conv.
EXPORTING encoding = 'UTF-8'
RECEIVING conv = conv.
CALL METHOD conv->('CONVERT')
EXPORTING
data = val
IMPORTING
buffer = result.
EXPORTING data = val
IMPORTING buffer = result.
ENDTRY.
ENDMETHOD.
METHOD source_get_method.
DATA object TYPE REF TO object.
@ -365,45 +334,35 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
DATA(xco_cp_abap) = 'XCO_CP_ABAP'.
CALL METHOD (xco_cp_abap)=>('CLASS')
EXPORTING
iv_name = lv_class
RECEIVING
ro_class = object.
EXPORTING iv_name = lv_class
RECEIVING ro_class = object.
ASSIGN ('OBJECT->IF_XCO_AO_CLASS~IMPLEMENTATION') TO <any>.
ASSERT sy-subrc = 0.
object = <any>.
CALL METHOD object->('IF_XCO_CLAS_IMPLEMENTATION~METHOD')
EXPORTING
iv_name = lv_method
RECEIVING
ro_method = object.
EXPORTING iv_name = lv_method
RECEIVING ro_method = object.
CALL METHOD object->('IF_XCO_CLAS_I_METHOD~CONTENT')
RECEIVING
ro_content = object.
RECEIVING ro_content = object.
CALL METHOD object->('IF_XCO_CLAS_I_METHOD_CONTENT~GET_SOURCE')
RECEIVING
rt_source = result.
RECEIVING rt_source = result.
CATCH cx_root.
DATA(lv_name) = 'CL_OO_FACTORY'.
CALL METHOD (lv_name)=>('CREATE_INSTANCE')
RECEIVING
result = object.
RECEIVING result = object.
CALL METHOD object->('IF_OO_CLIF_SOURCE_FACTORY~CREATE_CLIF_SOURCE')
EXPORTING
clif_name = lv_class
RECEIVING
result = object.
EXPORTING clif_name = lv_class
RECEIVING result = object.
CALL METHOD object->('IF_OO_CLIF_SOURCE~GET_SOURCE')
IMPORTING
source = lt_source.
IMPORTING source = lt_source.
DATA(lv_check_method) = abap_false.
LOOP AT lt_source INTO DATA(lv_source).
@ -413,7 +372,7 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
lv_check_method = abap_false.
ENDIF.
IF lv_source_upper CS `METHOD ` && lv_method.
IF lv_source_upper CS |METHOD { lv_method }|.
lv_check_method = abap_true.
CONTINUE.
ENDIF.
@ -430,23 +389,22 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
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.
TYPES clsname TYPE c LENGTH 30.
TYPES refclsname TYPE c LENGTH 30.
TYPES clsname TYPE c LENGTH 30.
TYPES refclsname TYPE c LENGTH 30.
TYPES END OF ty_s_impl.
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
TYPES BEGIN OF ty_s_key.
TYPES intkey TYPE c LENGTH 30.
TYPES intkey TYPE c LENGTH 30.
TYPES END OF ty_s_key.
DATA ls_key TYPE ty_s_key.
DATA BEGIN OF ls_clskey.
DATA clsname TYPE c LENGTH 30.
DATA clsname TYPE c LENGTH 30.
DATA END OF ls_clskey.
DATA class TYPE REF TO data.
@ -456,10 +414,8 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
DATA(xco_cp_abap) = 'XCO_CP_ABAP'.
CALL METHOD (xco_cp_abap)=>interface
EXPORTING
iv_name = ls_clskey-clsname
RECEIVING
ro_interface = obj.
EXPORTING iv_name = ls_clskey-clsname
RECEIVING ro_interface = obj.
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
IF sy-subrc <> 0.
@ -474,13 +430,11 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
obj = <any>.
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
RECEIVING
rt_names = lt_implementation_names.
RECEIVING rt_names = lt_implementation_names.
result = VALUE #(
FOR implementation_name IN lt_implementation_names
( classname = implementation_name
description = rtti_get_class_descr_on_cloud( implementation_name ) ) ).
result = VALUE #( FOR implementation_name IN lt_implementation_names
( classname = implementation_name
description = rtti_get_class_descr_on_cloud( implementation_name ) ) ).
CATCH cx_root.
@ -488,13 +442,10 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
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.
EXPORTING intkey = ls_key
IMPORTING impkeys = lt_impl
EXCEPTIONS not_existing = 1
OTHERS = 2.
IF sy-subrc <> 0.
RETURN.
ENDIF.
@ -511,10 +462,8 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
lv_fm = `SEO_CLASS_READ`.
CALL FUNCTION lv_fm
EXPORTING
clskey = ls_clskey
IMPORTING
class = <class>.
EXPORTING clskey = ls_clskey
IMPORTING class = <class>.
ASSIGN
COMPONENT 'DESCRIPT'
@ -532,20 +481,18 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDMETHOD.
METHOD rtti_get_data_element_texts.
DATA:
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 ddic_ref TYPE REF TO data.
DATA data_element TYPE REF TO object.
DATA content TYPE REF TO object.
DATA: BEGIN OF ddic,
reptext TYPE string,
scrtext_s TYPE string,
scrtext_m TYPE string,
scrtext_l TYPE string,
END OF ddic.
DATA exists TYPE abap_bool.
DATA(data_element_name) = i_data_element_name.
@ -558,13 +505,9 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
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 ).
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.
@ -572,12 +515,10 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
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.
RECEIVING p_flddescr = <ddic>
EXCEPTIONS not_found = 1
no_ddic_type = 2
OTHERS = 3.
IF sy-subrc <> 0.
RETURN.
ENDIF.
@ -592,38 +533,30 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
TRY.
DATA(xco_cp_abap_dictionary) = 'XCO_CP_ABAP_DICTIONARY'.
CALL METHOD (xco_cp_abap_dictionary)=>('DATA_ELEMENT')
EXPORTING
iv_name = data_element_name
RECEIVING
ro_data_element = 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.
RECEIVING rv_exists = exists.
IF exists = abap_false.
RETURN.
ENDIF.
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
RECEIVING
ro_content = content.
RECEIVING ro_content = content.
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
RECEIVING
rs_heading_field_label = result-header.
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.
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.
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.
RECEIVING rs_long_field_label = result-long.
CATCH cx_root.
ENDTRY.
@ -631,7 +564,6 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDMETHOD.
METHOD uuid_get_c22.
DATA lv_uuid TYPE c LENGTH 22.
@ -641,15 +573,13 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
RECEIVING
uuid = lv_uuid.
RECEIVING uuid = lv_uuid.
CATCH cx_sy_dyn_call_illegal_class.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_22 = lv_uuid.
IMPORTING ev_guid_22 = lv_uuid.
ENDTRY.
@ -678,7 +608,6 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDMETHOD.
METHOD uuid_get_c32.
DATA lv_uuid TYPE c LENGTH 32.
@ -687,15 +616,13 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
TRY.
DATA(lv_classname) = `CL_SYSTEM_UUID`.
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
RECEIVING
uuid = lv_uuid.
RECEIVING uuid = lv_uuid.
CATCH cx_root.
DATA(lv_fm) = `GUID_CREATE`.
CALL FUNCTION lv_fm
IMPORTING
ev_guid_32 = lv_uuid.
IMPORTING ev_guid_32 = lv_uuid.
ENDTRY.
@ -706,33 +633,27 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD rtti_get_class_descr_on_cloud.
DATA obj TYPE REF TO object.
DATA content TYPE REF TO object.
DATA obj TYPE REF TO object.
DATA content TYPE REF TO object.
DATA lv_classname TYPE c LENGTH 30.
lv_classname = i_classname.
DATA(xco_cp_abap) = 'XCO_CP_ABAP'.
CALL METHOD (xco_cp_abap)=>('CLASS')
EXPORTING
iv_name = lv_classname
RECEIVING
ro_class = obj.
EXPORTING iv_name = lv_classname
RECEIVING ro_class = obj.
CALL METHOD obj->('IF_XCO_AO_CLASS~CONTENT')
RECEIVING
ro_content = content.
RECEIVING ro_content = content.
CALL METHOD content->('IF_XCO_CLAS_CONTENT~GET_SHORT_DESCRIPTION')
RECEIVING
rv_short_description = result.
RECEIVING rv_short_description = result.
ENDMETHOD.
METHOD rtti_get_t_attri_on_prem.
DATA structdescr TYPE REF TO cl_abap_structdescr.
@ -762,8 +683,7 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
IF tabname IS INITIAL.
RAISE EXCEPTION TYPE z2ui5_cx_abap_api
EXPORTING
val = `RTTI_BY_NAME_TAB_INITIAL`.
EXPORTING val = `RTTI_BY_NAME_TAB_INITIAL`.
ENDIF.
structdescr ?= cl_abap_structdescr=>describe_by_name( tabname ).
@ -927,7 +847,6 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDMETHOD.
METHOD rtti_get_t_dfies_by_table_name.
IF context_check_abap_cloud( ).
@ -937,6 +856,5 @@ CLASS z2ui5_cl_abap_api IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,26 +1,23 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
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.
METHODS test_classes_impl_intf FOR TESTING RAISING cx_static_check.
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.
METHODS test_classes_impl_intf FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD test_func_get_uuid_32.
DATA(lv_uuid) = z2ui5_cl_abap_api=>uuid_get_c32( ).
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
cl_abap_unit_assert=>assert_equals(
act = 32
exp = strlen( lv_uuid ) ).
cl_abap_unit_assert=>assert_equals( exp = strlen( lv_uuid )
act = 32 ).
ENDMETHOD.
@ -28,9 +25,8 @@ CLASS ltcl_test IMPLEMENTATION.
DATA(lv_uuid) = z2ui5_cl_abap_api=>uuid_get_c22( ).
cl_abap_unit_assert=>assert_not_initial( lv_uuid ).
cl_abap_unit_assert=>assert_equals(
act = 22
exp = strlen( lv_uuid ) ).
cl_abap_unit_assert=>assert_equals( exp = strlen( lv_uuid )
act = 22 ).
ENDMETHOD.
@ -42,9 +38,8 @@ CLASS ltcl_test IMPLEMENTATION.
DATA(lv_xstring2) = z2ui5_cl_abap_api=>conv_decode_x_base64( lv_string2 ).
DATA(lv_string3) = z2ui5_cl_abap_api=>conv_get_string_by_xstring( lv_xstring2 ).
cl_abap_unit_assert=>assert_equals(
act = lv_string3
exp = lv_string ).
cl_abap_unit_assert=>assert_equals( exp = lv_string
act = lv_string3 ).
ENDMETHOD.
@ -69,5 +64,4 @@ CLASS ltcl_test IMPLEMENTATION.
cl_abap_unit_assert=>assert_not_initial( mt_classes ).
ENDMETHOD.
ENDCLASS.

View File

@ -35,7 +35,7 @@ CLASS z2ui5_cl_abap_api_http DEFINITION PUBLIC.
METHODS set_status
IMPORTING
code TYPE i
!code TYPE i
reason TYPE clike.
METHODS set_session_stateful
@ -54,19 +54,20 @@ CLASS z2ui5_cl_abap_api_http DEFINITION PUBLIC.
METHODS set_header_field
IMPORTING
n TYPE clike
v TYPE clike.
!n TYPE clike
v TYPE clike.
DATA mo_server_onprem TYPE REF TO object.
DATA mo_request_cloud TYPE REF TO object.
DATA mo_server_onprem TYPE REF TO object.
DATA mo_request_cloud TYPE REF TO object.
DATA mo_response_cloud TYPE REF TO object.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
METHOD delete_response_cookie.
DATA(lv_val) = CONV string( val ).
@ -80,8 +81,7 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('DELETE_COOKIE')
EXPORTING
name = lv_val.
EXPORTING name = lv_val.
ELSE.
@ -97,6 +97,7 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
DATA object TYPE REF TO object.
FIELD-SYMBOLS <any> TYPE any.
DATA(lv_val) = CONV string( val ).
IF mo_server_onprem IS BOUND.
@ -105,10 +106,8 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('GET_COOKIE')
EXPORTING
name = lv_val
IMPORTING
value = result.
EXPORTING name = lv_val
IMPORTING value = result.
ELSE.
@ -126,6 +125,7 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
DATA object TYPE REF TO object.
FIELD-SYMBOLS <any> TYPE any.
DATA(lv_val) = CONV string( val ).
IF mo_server_onprem IS BOUND.
@ -134,18 +134,14 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('GET_HEADER_FIELD')
EXPORTING
name = lv_val
RECEIVING
value = result.
EXPORTING name = lv_val
RECEIVING value = result.
ELSE.
CALL METHOD mo_request_cloud->('IF_WEB_HTTP_REQUEST~GET_HEADER_FIELD')
EXPORTING
i_name = lv_val
RECEIVING
r_value = result.
EXPORTING i_name = lv_val
RECEIVING r_value = result.
ENDIF.
@ -164,16 +160,14 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('SET_HEADER_FIELD')
EXPORTING
name = lv_n
value = lv_v.
EXPORTING name = lv_n
value = lv_v.
ELSE.
CALL METHOD mo_response_cloud->('IF_WEB_HTTP_RESPONSE~SET_HEADER_FIELD')
EXPORTING
i_name = lv_n
i_value = lv_v.
EXPORTING i_name = lv_n
i_value = lv_v.
ENDIF.
@ -205,14 +199,12 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('GET_CDATA')
RECEIVING
data = result.
RECEIVING data = result.
ELSE.
CALL METHOD mo_request_cloud->('IF_WEB_HTTP_REQUEST~GET_TEXT')
RECEIVING
r_value = result.
RECEIVING r_value = result.
ENDIF.
@ -229,14 +221,12 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('IF_HTTP_REQUEST~GET_METHOD')
RECEIVING
method = result.
RECEIVING method = result.
ELSE.
CALL METHOD mo_request_cloud->('IF_WEB_HTTP_REQUEST~GET_METHOD')
RECEIVING
r_value = result.
RECEIVING r_value = result.
ENDIF.
@ -253,14 +243,12 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('SET_CDATA')
EXPORTING
data = val.
EXPORTING data = val.
ELSE.
CALL METHOD mo_response_cloud->('IF_WEB_HTTP_RESPONSE~SET_TEXT')
EXPORTING
i_text = val.
EXPORTING i_text = val.
ENDIF.
@ -270,6 +258,7 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
DATA object TYPE REF TO object.
FIELD-SYMBOLS <any> TYPE any.
DATA(lv_reason) = CONV string( reason ).
IF mo_server_onprem IS BOUND.
@ -278,16 +267,14 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
object = <any>.
CALL METHOD object->('IF_HTTP_RESPONSE~SET_STATUS')
EXPORTING
code = code
reason = lv_reason.
EXPORTING code = code
reason = lv_reason.
ELSE.
CALL METHOD mo_response_cloud->('IF_WEB_HTTP_RESPONSE~SET_STATUS')
EXPORTING
i_code = code
i_reason = lv_reason.
EXPORTING i_code = code
i_reason = lv_reason.
ENDIF.
@ -298,8 +285,7 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
IF mo_server_onprem IS BOUND.
CALL METHOD mo_server_onprem->('SET_SESSION_STATEFUL')
EXPORTING
stateful = val.
EXPORTING stateful = val.
ELSE.
@ -308,5 +294,4 @@ CLASS z2ui5_cl_abap_api_http IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,8 +1,7 @@
CLASS z2ui5_cx_abap_api DEFINITION
PUBLIC
INHERITING FROM cx_no_check
FINAL
CREATE PUBLIC .
INHERITING FROM cx_no_check FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -11,26 +10,23 @@ CLASS z2ui5_cx_abap_api DEFINITION
x_root TYPE REF TO cx_root,
* uuid TYPE string,
text TYPE string,
END OF ms_error .
END OF ms_error.
METHODS constructor
IMPORTING
!val TYPE any OPTIONAL
val TYPE any OPTIONAL
!previous TYPE REF TO cx_root OPTIONAL
PREFERRED PARAMETER val.
METHODS if_message~get_text
REDEFINITION.
METHODS if_message~get_text REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cx_abap_api IMPLEMENTATION.
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor( previous = previous ).
@ -45,7 +41,6 @@ CLASS z2ui5_cx_abap_api IMPLEMENTATION.
ENDMETHOD.
METHOD if_message~get_text.
IF ms_error-x_root IS NOT INITIAL.

View File

@ -1,6 +1,5 @@
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL DANGEROUS.
CLASS ltcl_unit_test DEFINITION FINAL
FOR TESTING RISK LEVEL DANGEROUS DURATION SHORT.
PRIVATE SECTION.
METHODS test_raise FOR TESTING RAISING cx_static_check.
@ -8,21 +7,17 @@ ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_raise.
TRY.
RAISE EXCEPTION TYPE z2ui5_cx_abap_api
EXPORTING
val = `this is an error text`.
EXPORTING val = `this is an error text`.
CATCH z2ui5_cx_abap_api INTO DATA(lx).
cl_abap_unit_assert=>assert_equals(
act = lx->get_text( )
exp = `this is an error text` ).
cl_abap_unit_assert=>assert_equals( exp = `this is an error text`
act = lx->get_text( ) ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

File diff suppressed because it is too large Load Diff

View File

@ -40,13 +40,10 @@ CLASS lcl_range_to_sql DEFINITION
RETURNING
VALUE(out) TYPE string.
ENDCLASS.
CLASS lcl_range_to_sql IMPLEMENTATION.
METHOD constructor.
mr_range = ir_range.
@ -118,5 +115,4 @@ CLASS lcl_range_to_sql IMPLEMENTATION.
with = `''`
occ = 0 ) }'|.
ENDMETHOD.
ENDCLASS.

View File

@ -21,6 +21,7 @@ CLASS ltcl_test_app DEFINITION FOR TESTING.
CLASS-DATA sv_var TYPE string.
CLASS-DATA ss_tab TYPE ty_row.
CLASS-DATA st_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
CLASS-METHODS class_constructor.
DATA mv_val TYPE string ##NEEDED.
@ -28,11 +29,12 @@ CLASS ltcl_test_app DEFINITION FOR TESTING.
DATA mt_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY ##NEEDED.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ltcl_test_app IMPLEMENTATION.
CLASS ltcl_test_app IMPLEMENTATION.
METHOD class_constructor.
sv_var = 1.
@ -42,9 +44,9 @@ CLASS ltcl_test_app IMPLEMENTATION.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_unit_test_abap_api DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_unit_test_abap_api DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
@ -54,41 +56,40 @@ CLASS ltcl_unit_test_abap_api DEFINITION FINAL FOR TESTING
RETURNING
VALUE(result) TYPE abap_bool.
METHODS test_assign FOR TESTING RAISING cx_static_check.
METHODS test_eledescr_rel_name FOR TESTING RAISING cx_static_check.
METHODS test_classdescr FOR TESTING RAISING cx_static_check.
METHODS test_substring_after FOR TESTING RAISING cx_static_check.
METHODS test_substring_before FOR TESTING RAISING cx_static_check.
METHODS test_string_shift FOR TESTING RAISING cx_static_check.
METHODS test_string_replace FOR TESTING RAISING cx_static_check.
METHODS test_raise_error FOR TESTING RAISING cx_static_check.
METHODS test_xsdbool FOR TESTING RAISING cx_static_check.
METHODS test_xsdbool_nested FOR TESTING RAISING cx_static_check.
METHODS test_assign FOR TESTING RAISING cx_static_check.
METHODS test_eledescr_rel_name FOR TESTING RAISING cx_static_check.
METHODS test_classdescr FOR TESTING RAISING cx_static_check.
METHODS test_substring_after FOR TESTING RAISING cx_static_check.
METHODS test_substring_before FOR TESTING RAISING cx_static_check.
METHODS test_string_shift FOR TESTING RAISING cx_static_check.
METHODS test_string_replace FOR TESTING RAISING cx_static_check.
METHODS test_raise_error FOR TESTING RAISING cx_static_check.
METHODS test_xsdbool FOR TESTING RAISING cx_static_check.
METHODS test_xsdbool_nested FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_unit_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PRIVATE SECTION.
METHODS test_create FOR TESTING RAISING cx_static_check.
METHODS test_create FOR TESTING RAISING cx_static_check.
METHODS test_boolean_abap_2_json FOR TESTING RAISING cx_static_check.
METHODS test_boolean_check FOR TESTING RAISING cx_static_check.
METHODS test_boolean_abap_2_json FOR TESTING RAISING cx_static_check.
METHODS test_boolean_check FOR TESTING RAISING cx_static_check.
METHODS test_c_trim FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_lower FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_upper FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_horizontal_tab FOR TESTING RAISING cx_static_check.
METHODS test_c_trim FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_lower FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_upper FOR TESTING RAISING cx_static_check.
METHODS test_c_trim_horizontal_tab FOR TESTING RAISING cx_static_check.
METHODS test_time_get_timestampl FOR TESTING RAISING cx_static_check.
METHODS test_time_substract_seconds FOR TESTING RAISING cx_static_check.
METHODS test_func_get_user_tech FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_t_attri_by_incl FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_t_attri_by_incl FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_classname_by_ref FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_type_name FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_type_kind FOR TESTING RAISING cx_static_check.
@ -96,32 +97,31 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
METHODS test_rtti_get_t_attri_by_obj FOR TESTING RAISING cx_static_check.
METHODS test_rtti_get_t_comp_by_struc FOR TESTING RAISING cx_static_check.
METHODS test_trans_json_any_2__w_struc FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_any_2__w_obj FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_any_2__w_data FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_2_any__w_obj FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_2_any__w_data FOR TESTING RAISING cx_static_check.
METHODS test_trans_json_any_2__w_struc FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_any_2__w_obj FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_any_2__w_data FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_2_any__w_obj FOR TESTING RAISING cx_static_check.
METHODS test_trans_xml_2_any__w_data FOR TESTING RAISING cx_static_check.
METHODS test_url_param_create_url FOR TESTING RAISING cx_static_check.
METHODS test_url_param_get FOR TESTING RAISING cx_static_check.
METHODS test_url_param_get_tab FOR TESTING RAISING cx_static_check.
METHODS test_url_param_set FOR TESTING RAISING cx_static_check.
METHODS test_url_param_create_url FOR TESTING RAISING cx_static_check.
METHODS test_url_param_get FOR TESTING RAISING cx_static_check.
METHODS test_url_param_get_tab FOR TESTING RAISING cx_static_check.
METHODS test_url_param_set FOR TESTING RAISING cx_static_check.
METHODS test_x_check_raise FOR TESTING RAISING cx_static_check.
METHODS test_x_check_raise_not FOR TESTING RAISING cx_static_check.
METHODS test_x_raise FOR TESTING RAISING cx_static_check.
METHODS test_check_unassign_inital FOR TESTING RAISING cx_static_check.
METHODS conv_copy_ref_data FOR TESTING RAISING cx_static_check.
METHODS rtti_check_ref_data FOR TESTING RAISING cx_static_check.
METHODS test_check_bound_a_not_inital FOR TESTING RAISING cx_static_check.
METHODS test_sql_get_by_string FOR TESTING RAISING cx_static_check.
METHODS test_get_token_t_by_r_t FOR TESTING RAISING cx_static_check.
METHODS test_x_check_raise FOR TESTING RAISING cx_static_check.
METHODS test_x_check_raise_not FOR TESTING RAISING cx_static_check.
METHODS test_x_raise FOR TESTING RAISING cx_static_check.
METHODS test_check_unassign_inital FOR TESTING RAISING cx_static_check.
METHODS conv_copy_ref_data FOR TESTING RAISING cx_static_check.
METHODS rtti_check_ref_data FOR TESTING RAISING cx_static_check.
METHODS test_check_bound_a_not_inital FOR TESTING RAISING cx_static_check.
METHODS test_sql_get_by_string FOR TESTING RAISING cx_static_check.
METHODS test_get_token_t_by_r_t FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
METHOD test_assign.
DATA(lo_app) = NEW ltcl_test_app( ).
@ -129,23 +129,22 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
lo_app->mv_val = `ABC`.
DATA(lv_assign) = `LO_APP->` && 'MV_VAL'.
DATA(lv_assign) = |LO_APP->MV_VAL|.
ASSIGN (lv_assign) TO <any>.
ASSERT sy-subrc = 0.
cl_abap_unit_assert=>assert_equals(
act = <any>
exp = `ABC` ).
cl_abap_unit_assert=>assert_equals( exp = `ABC`
act = <any> ).
ENDMETHOD.
METHOD test_classdescr.
DATA(lo_app) = NEW ltcl_test_app( ).
DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( lo_app ) )->attributes.
" TODO: variable is assigned but never used (ABAP cleaner)
DATA(lv_test) = lt_attri[ name = `MS_TAB` ].
lv_test = lt_attri[ name = `MT_TAB` ].
lv_test = lt_attri[ name = `MV_VAL` ].
@ -160,33 +159,32 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_data( abap_true ) ).
cl_abap_unit_assert=>assert_equals(
act = lo_ele->get_relative_name( )
exp = `ABAP_BOOL` ).
cl_abap_unit_assert=>assert_equals( exp = `ABAP_BOOL`
act = lo_ele->get_relative_name( ) ).
ENDMETHOD.
METHOD test_substring_after.
cl_abap_unit_assert=>assert_equals(
act = substring_after( val = 'this is a string' sub = 'a' )
exp = ` string` ).
cl_abap_unit_assert=>assert_equals( exp = ` string`
act = substring_after( val = 'this is a string'
sub = 'a' ) ).
ENDMETHOD.
METHOD test_substring_before.
cl_abap_unit_assert=>assert_equals(
act = substring_before( val = 'this is a string' sub = 'a' )
exp = `this is ` ).
cl_abap_unit_assert=>assert_equals( exp = `this is `
act = substring_before( val = 'this is a string'
sub = 'a' ) ).
ENDMETHOD.
METHOD test_string_shift.
cl_abap_unit_assert=>assert_equals(
act = shift_left( shift_right( val = ` string ` sub = ` ` ) )
exp = `string` ).
cl_abap_unit_assert=>assert_equals( exp = `string`
act = shift_left( shift_right( val = ` string `
sub = ` ` ) ) ).
ENDMETHOD.
@ -197,9 +195,11 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
with = 'ABC'
occ = 0 ) ##NEEDED.
cl_abap_unit_assert=>assert_equals(
act = replace( val = `one two three` sub = `two` with = 'ABC' occ = 0 )
exp = `one ABC three` ).
cl_abap_unit_assert=>assert_equals( exp = `one ABC three`
act = replace( val = `one two three`
sub = `two`
with = 'ABC'
occ = 0 ) ).
ENDMETHOD.
@ -221,9 +221,7 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
DATA(lv_xsdbool) = xsdbool( 1 = 1 ).
IF lv_xsdbool = abap_false.
cl_abap_unit_assert=>assert_equals(
act = lv_xsdbool
exp = abap_false ).
cl_abap_unit_assert=>assert_false( lv_xsdbool ).
ENDIF.
IF xsdbool( 1 = 1 ) = abap_false.
@ -236,9 +234,7 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
DATA(lv_xsdbool) = check_input( xsdbool( 1 = 1 ) ).
IF lv_xsdbool = abap_false.
cl_abap_unit_assert=>assert_equals(
act = lv_xsdbool
exp = abap_false ).
cl_abap_unit_assert=>assert_false( lv_xsdbool ).
ENDIF.
IF check_input( abap_false ).
@ -256,30 +252,21 @@ CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
result = val.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_boolean_check.
DATA(lv_bool) = xsdbool( 1 = 1 ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>boolean_check_by_data( lv_bool )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>boolean_check_by_data( lv_bool ) ).
lv_bool = xsdbool( 1 = 2 ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>boolean_check_by_data( lv_bool )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>boolean_check_by_data( lv_bool ) ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>boolean_check_by_data( abap_true )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>boolean_check_by_data( abap_true ) ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>boolean_check_by_data( abap_false )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>boolean_check_by_data( abap_false ) ).
ENDMETHOD.
@ -341,13 +328,9 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA lr_data TYPE REF TO data.
GET REFERENCE OF lv_test INTO lr_data.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>rtti_check_ref_data( lr_data )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>rtti_check_ref_data( lr_data ) ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>rtti_check_ref_data( lv_test )
exp = abap_false ).
cl_abap_unit_assert=>assert_false( z2ui5_cl_util=>rtti_check_ref_data( lv_test ) ).
ENDMETHOD.
@ -362,17 +345,15 @@ CLASS ltcl_unit_test IMPLEMENTATION.
FIELD-SYMBOLS <result> TYPE data.
ASSIGN lr_test2->* TO <result>.
cl_abap_unit_assert=>assert_equals(
act = <result>
exp = lv_test ).
cl_abap_unit_assert=>assert_equals( exp = lv_test
act = <result> ).
ENDMETHOD.
METHOD test_boolean_abap_2_json.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` )
exp = `{ABCD}` ).
cl_abap_unit_assert=>assert_equals( exp = `{ABCD}`
act = z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` ) ).
ENDMETHOD.
@ -380,9 +361,8 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_time) = z2ui5_cl_util=>time_get_timestampl( ).
DATA(lv_time2) = z2ui5_cl_util=>time_substract_seconds(
time = lv_time
seconds = 60 * 60 * 4 ).
DATA(lv_time2) = z2ui5_cl_util=>time_substract_seconds( time = lv_time
seconds = 60 * 60 * 4 ).
IF lv_time IS INITIAL OR lv_time2 IS INITIAL.
cl_abap_unit_assert=>fail( ).
@ -411,33 +391,29 @@ CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_c_trim.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>c_trim( ` JsadfHHs ` )
exp = `JsadfHHs` ).
cl_abap_unit_assert=>assert_equals( exp = `JsadfHHs`
act = z2ui5_cl_util=>c_trim( ` JsadfHHs ` ) ).
ENDMETHOD.
METHOD test_c_trim_lower.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>c_trim_lower( ` JsadfHHs ` )
exp = `jsadfhhs` ).
cl_abap_unit_assert=>assert_equals( exp = `jsadfhhs`
act = z2ui5_cl_util=>c_trim_lower( ` JsadfHHs ` ) ).
ENDMETHOD.
METHOD test_c_trim_upper.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>c_trim_upper( ` JsadfHHs ` )
exp = `JSADFHHS` ).
cl_abap_unit_assert=>assert_equals( exp = `JSADFHHS`
act = z2ui5_cl_util=>c_trim_upper( ` JsadfHHs ` ) ).
ENDMETHOD.
METHOD test_func_get_user_tech.
cl_abap_unit_assert=>assert_equals(
act = sy-uname
exp = z2ui5_cl_util=>context_get_user_tech( ) ).
cl_abap_unit_assert=>assert_equals( exp = z2ui5_cl_util=>context_get_user_tech( )
act = sy-uname ).
cl_abap_unit_assert=>assert_not_initial( z2ui5_cl_util=>context_get_user_tech( ) ).
@ -453,7 +429,6 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_x_check_raise.
TRY.
@ -470,7 +445,6 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDMETHOD.
METHOD test_trans_json_any_2__w_struc.
TYPES:
@ -479,62 +453,58 @@ CLASS ltcl_unit_test IMPLEMENTATION.
value TYPE string,
selected TYPE abap_bool,
END OF ty_row.
DATA(ls_row) = VALUE ty_row( title = `test` ).
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>json_stringify( ls_row )
exp = `{"selected":false,"title":"test","value":""}` ).
cl_abap_unit_assert=>assert_equals( exp = `{"selected":false,"title":"test","value":""}`
act = z2ui5_cl_util=>json_stringify( ls_row ) ).
ENDMETHOD.
METHOD test_url_param_create_url.
DATA(lt_param) = z2ui5_cl_util=>url_param_get_tab( `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
DATA(lt_param) = z2ui5_cl_util=>url_param_get_tab(
`https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
DATA(lv_url) = z2ui5_cl_util=>url_param_create_url( lt_param ).
cl_abap_unit_assert=>assert_equals(
act = lv_url
exp = `sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals( exp = `sap-client=100&app_start=z2ui5_cl_app_hello_world`
act = lv_url ).
ENDMETHOD.
METHOD test_url_param_get.
DATA(lv_param) = z2ui5_cl_util=>url_param_get(
val = `app_start`
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
val = `app_start`
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals(
act = lv_param
exp = `z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals( exp = `z2ui5_cl_app_hello_world`
act = lv_param ).
ENDMETHOD.
METHOD test_url_param_get_tab.
DATA(lt_param) = z2ui5_cl_util=>url_param_get_tab( `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
DATA(lt_param) = z2ui5_cl_util=>url_param_get_tab(
`https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals(
act = lt_param[ n = `sap-client` ]-v
exp = `100` ).
cl_abap_unit_assert=>assert_equals( exp = `100`
act = lt_param[ n = `sap-client` ]-v ).
cl_abap_unit_assert=>assert_equals(
act = lt_param[ n = `app_start` ]-v
exp = `z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals( exp = `z2ui5_cl_app_hello_world`
act = lt_param[ n = `app_start` ]-v ).
ENDMETHOD.
METHOD test_url_param_set.
DATA(lv_param) = z2ui5_cl_util=>url_param_set(
name = `app_start`
value = `z2ui5_cl_app_hello_world2`
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
name = `app_start`
value = `z2ui5_cl_app_hello_world2`
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
cl_abap_unit_assert=>assert_equals(
act = lv_param
exp = `sap-client=100&app_start=z2ui5_cl_app_hello_world2` ).
cl_abap_unit_assert=>assert_equals( exp = `sap-client=100&app_start=z2ui5_cl_app_hello_world2`
act = lv_param ).
ENDMETHOD.
@ -551,9 +521,8 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_xsdbool) = VALUE xsdboolean( ).
DATA(lv_name) = z2ui5_cl_util=>rtti_get_type_name( lv_xsdbool ).
cl_abap_unit_assert=>assert_equals(
act = lv_name
exp = `XSDBOOLEAN` ).
cl_abap_unit_assert=>assert_equals( exp = `XSDBOOLEAN`
act = lv_name ).
ENDMETHOD.
@ -563,16 +532,13 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_type_kind) = z2ui5_cl_util=>rtti_get_type_kind( lv_string ).
DATA lr_string TYPE REF TO string.
cl_abap_unit_assert=>assert_equals(
act = lv_type_kind
exp = cl_abap_typedescr=>typekind_string ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_string
act = lv_type_kind ).
CREATE DATA lr_string.
lv_type_kind = z2ui5_cl_util=>rtti_get_type_kind( lr_string ).
cl_abap_unit_assert=>assert_equals(
act = lv_type_kind
exp = cl_abap_typedescr=>typekind_dref ).
cl_abap_unit_assert=>assert_equals( exp = cl_abap_typedescr=>typekind_dref
act = lv_type_kind ).
ENDMETHOD.
@ -580,15 +546,10 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_string) = VALUE string( ).
DATA lr_string TYPE REF TO string.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>rtti_check_type_kind_dref( lv_string )
exp = abap_false ).
cl_abap_unit_assert=>assert_false( z2ui5_cl_util=>rtti_check_type_kind_dref( lv_string ) ).
CREATE DATA lr_string.
cl_abap_unit_assert=>assert_equals(
act = z2ui5_cl_util=>rtti_check_type_kind_dref( lr_string )
exp = abap_true ).
cl_abap_unit_assert=>assert_true( z2ui5_cl_util=>rtti_check_type_kind_dref( lr_string ) ).
ENDMETHOD.
@ -605,15 +566,21 @@ CLASS ltcl_unit_test IMPLEMENTATION.
cl_abap_unit_assert=>fail( ).
ENDIF.
IF NOT line_exists( lt_attri[ name = `SS_TAB` type_kind = `v` ] ).
IF NOT line_exists( lt_attri[ name = `SS_TAB`
type_kind = `v` ] ).
cl_abap_unit_assert=>fail( ).
ENDIF.
IF NOT line_exists( lt_attri[ name = `SV_VAR` type_kind = `g` is_class = abap_true ] ).
IF NOT line_exists( lt_attri[ name = `SV_VAR`
type_kind = `g`
is_class = abap_true ] ).
cl_abap_unit_assert=>fail( ).
ENDIF.
IF NOT line_exists( lt_attri[ name = `SV_STATUS` type_kind = `g` is_class = abap_true is_constant = `X` ] ).
IF NOT line_exists( lt_attri[ name = `SV_STATUS`
type_kind = `g`
is_class = abap_true
is_constant = `X` ] ).
cl_abap_unit_assert=>fail( ).
ENDIF.
@ -680,11 +647,8 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( lo_obj ).
CLEAR lo_obj.
z2ui5_cl_util=>xml_parse(
EXPORTING
xml = lv_xml
IMPORTING
any = lo_obj ).
z2ui5_cl_util=>xml_parse( EXPORTING xml = lv_xml
IMPORTING any = lo_obj ).
IF lo_obj IS NOT BOUND.
cl_abap_unit_assert=>fail( ).
@ -735,19 +699,14 @@ CLASS ltcl_unit_test IMPLEMENTATION.
DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( ls_row ).
z2ui5_cl_util=>xml_parse(
EXPORTING
xml = lv_xml
IMPORTING
any = ls_row2 ).
z2ui5_cl_util=>xml_parse( EXPORTING xml = lv_xml
IMPORTING any = ls_row2 ).
cl_abap_unit_assert=>assert_equals(
act = ls_row
exp = ls_row2 ).
cl_abap_unit_assert=>assert_equals( exp = ls_row2
act = ls_row ).
ENDMETHOD.
METHOD test_c_trim_horizontal_tab.
IF z2ui5_cl_util=>c_trim( |{ cl_abap_char_utilities=>horizontal_tab }|
@ -761,19 +720,17 @@ CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_get_token_t_by_r_t.
DATA(lt_range) = VALUE z2ui5_cl_util=>ty_t_range(
( sign = 'I' option = 'EQ' low = `table` high = `` )
DATA(lt_range) = VALUE z2ui5_cl_util=>ty_t_range( ( sign = 'I' option = 'EQ' low = `table` high = `` )
).
DATA(lt_result) = z2ui5_cl_util=>filter_get_token_t_by_range_t( lt_range ).
DATA(lt_exp) = VALUE z2ui5_cl_util=>ty_t_token(
( key = `=table` text = `=table` visible = 'X' selkz = '' editable = 'X' )
( key = `=table` text = `=table` visible = 'X' selkz = '' editable = 'X' )
).
cl_abap_unit_assert=>assert_equals(
act = lt_result
exp = lt_exp
cl_abap_unit_assert=>assert_equals( exp = lt_exp
act = lt_result
).
ENDMETHOD.
@ -798,11 +755,10 @@ CLASS ltcl_unit_test IMPLEMENTATION.
value2 TYPE string,
END OF ty_struc.
DATA
BEGIN OF ms_struc2.
INCLUDE TYPE ty_struc.
INCLUDE TYPE ty_struc_incl.
DATA END OF ms_struc2.
DATA BEGIN OF ms_struc2.
INCLUDE TYPE ty_struc.
INCLUDE TYPE ty_struc_incl.
DATA END OF ms_struc2.
DATA(lo_datadescr) = cl_abap_typedescr=>describe_by_data( ms_struc2 ).
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_include( CAST #( lo_datadescr ) ).
@ -812,5 +768,4 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,8 +1,7 @@
CLASS z2ui5_cx_util_error DEFINITION
PUBLIC
INHERITING FROM cx_no_check
FINAL
CREATE PUBLIC .
INHERITING FROM cx_no_check FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -11,26 +10,23 @@ CLASS z2ui5_cx_util_error DEFINITION
x_root TYPE REF TO cx_root,
uuid TYPE string,
text TYPE string,
END OF ms_error .
END OF ms_error.
METHODS constructor
IMPORTING
!val TYPE any OPTIONAL
val TYPE any OPTIONAL
!previous TYPE REF TO cx_root OPTIONAL
PREFERRED PARAMETER val.
METHODS if_message~get_text
REDEFINITION.
METHODS if_message~get_text REDEFINITION.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cx_util_error IMPLEMENTATION.
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor( previous = previous ).
@ -45,7 +41,6 @@ CLASS z2ui5_cx_util_error IMPLEMENTATION.
ENDMETHOD.
METHOD if_message~get_text.
IF ms_error-x_root IS NOT INITIAL.

View File

@ -1,6 +1,5 @@
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL DANGEROUS.
CLASS ltcl_unit_test DEFINITION FINAL
FOR TESTING RISK LEVEL DANGEROUS DURATION SHORT.
PRIVATE SECTION.
METHODS test_raise FOR TESTING RAISING cx_static_check.
@ -8,21 +7,17 @@ ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_raise.
TRY.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `this is an error text`.
EXPORTING val = `this is an error text`.
CATCH z2ui5_cx_util_error INTO DATA(lx).
cl_abap_unit_assert=>assert_equals(
act = lx->get_text( )
exp = `this is an error text` ).
cl_abap_unit_assert=>assert_equals( exp = `this is an error text`
act = lx->get_text( ) ).
ENDTRY.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_core_srv_draft DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -11,8 +10,8 @@ CLASS z2ui5_cl_core_srv_draft DEFINITION
METHODS create
IMPORTING
!draft TYPE z2ui5_if_types=>ty_s_draft
!model_xml TYPE clike.
draft TYPE z2ui5_if_types=>ty_s_draft
model_xml TYPE clike.
METHODS read_draft
IMPORTING
@ -32,61 +31,52 @@ CLASS z2ui5_cl_core_srv_draft DEFINITION
METHODS read
IMPORTING
!id TYPE clike
!check_load_app TYPE abap_bool DEFAULT abap_true
!id TYPE clike
check_load_app TYPE abap_bool DEFAULT abap_true
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
METHOD cleanup.
DATA(lv_four_hours_ago) = z2ui5_cl_util=>time_substract_seconds(
time = z2ui5_cl_util=>time_get_timestampl( )
seconds = 60 * 60 * 4 ).
DATA(lv_four_hours_ago) = z2ui5_cl_util=>time_substract_seconds( time = z2ui5_cl_util=>time_get_timestampl( )
seconds = 60 * 60 * 4 ).
DELETE FROM z2ui5_t_01 WHERE timestampl < @lv_four_hours_ago.
COMMIT WORK.
ENDMETHOD.
METHOD create.
ASSERT draft-id IS NOT INITIAL.
DATA(ls_db) = VALUE z2ui5_if_core_types=>ty_s_db(
id = draft-id
id_prev = draft-id_prev
id_prev_app = draft-id_prev_app
id_prev_app_stack = draft-id_prev_app_stack
uname = z2ui5_cl_util=>context_get_user_tech( )
timestampl = z2ui5_cl_util=>time_get_timestampl( )
data = model_xml ).
DATA(ls_db) = VALUE z2ui5_if_core_types=>ty_s_db( id = draft-id
id_prev = draft-id_prev
id_prev_app = draft-id_prev_app
id_prev_app_stack = draft-id_prev_app_stack
uname = z2ui5_cl_util=>context_get_user_tech( )
timestampl = z2ui5_cl_util=>time_get_timestampl( )
data = model_xml ).
MODIFY z2ui5_t_01 FROM @ls_db.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `CREATE_OF_DRAFT_ENTRY_ON_DATABASE_FAILED`.
EXPORTING val = `CREATE_OF_DRAFT_ENTRY_ON_DATABASE_FAILED`.
ENDIF.
COMMIT WORK AND WAIT.
ENDMETHOD.
METHOD read.
IF check_load_app = abap_true.
SELECT SINGLE *
FROM z2ui5_t_01
SELECT SINGLE * FROM z2ui5_t_01
WHERE id = @id
INTO @result ##SUBRC_OK.
@ -101,38 +91,31 @@ CLASS z2ui5_cl_core_srv_draft IMPLEMENTATION.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
EXPORTING val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
ENDIF.
ENDMETHOD.
METHOD read_draft.
result = read( id ).
ENDMETHOD.
METHOD read_info.
DATA(ls_db) = read(
id = id
check_load_app = abap_false ).
DATA(ls_db) = read( id = id
check_load_app = abap_false ).
result = CORRESPONDING #( ls_db ).
ENDMETHOD.
METHOD count_entries.
SELECT
COUNT( * )
SELECT COUNT( * )
FROM z2ui5_t_01
INTO @result.
ENDMETHOD.
ENDCLASS.

View File

@ -1,6 +1,5 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION LONG
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION LONG.
PUBLIC SECTION.
@ -8,12 +7,12 @@ CLASS ltcl_test DEFINITION FINAL FOR TESTING
METHODS test_create FOR TESTING.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
@ -22,17 +21,14 @@ CLASS ltcl_test IMPLEMENTATION.
DATA(lo_draft) = NEW z2ui5_cl_core_srv_draft( ).
lo_draft->create(
draft = VALUE #( id = `TEST_ID` )
model_xml = `my xml`
lo_draft->create( draft = VALUE #( id = `TEST_ID` )
model_xml = `my xml`
).
DATA(ls_db) = lo_draft->read_draft( `TEST_ID` ).
cl_abap_unit_assert=>assert_equals(
act = ls_db-data
exp = `my xml` ).
cl_abap_unit_assert=>assert_equals( exp = `my xml`
act = ls_db-data ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,6 +1,5 @@
CLASS z2ui5_cl_core_action DEFINITION
PUBLIC
FINAL
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -8,8 +7,8 @@ CLASS z2ui5_cl_core_action DEFINITION
DATA mo_http_post TYPE REF TO z2ui5_cl_core_handler.
DATA mo_app TYPE REF TO z2ui5_cl_core_app.
DATA ms_actual TYPE z2ui5_if_core_types=>ty_s_actual.
DATA ms_next TYPE z2ui5_if_core_types=>ty_s_next.
DATA ms_actual TYPE z2ui5_if_core_types=>ty_s_actual.
DATA ms_next TYPE z2ui5_if_core_types=>ty_s_next.
METHODS factory_system_startup
RETURNING
@ -47,10 +46,7 @@ CLASS z2ui5_cl_core_action DEFINITION
ENDCLASS.
CLASS z2ui5_cl_core_action IMPLEMENTATION.
METHOD constructor.
mo_http_post = val.
@ -58,7 +54,6 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
ENDMETHOD.
METHOD factory_by_frontend.
result = NEW #( mo_http_post ).
@ -69,14 +64,12 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
result->mo_app = z2ui5_cl_core_app=>db_load( mo_http_post->ms_request-s_front-id ).
ENDIF.
result->mo_app->ms_draft-id = z2ui5_cl_util=>uuid_get_c32( ).
result->mo_app->ms_draft-id_prev = mo_http_post->ms_request-s_front-id.
result->ms_actual-view = mo_http_post->ms_request-s_front-view.
result->mo_app->model_json_parse(
iv_view = mo_http_post->ms_request-s_front-view
io_model = mo_http_post->ms_request-o_model ).
result->mo_app->model_json_parse( iv_view = mo_http_post->ms_request-s_front-view
io_model = mo_http_post->ms_request-o_model ).
result->ms_actual-event = mo_http_post->ms_request-s_front-event.
result->ms_actual-t_event_arg = mo_http_post->ms_request-s_front-t_event_arg.
@ -84,7 +77,6 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
ENDMETHOD.
METHOD factory_first_start.
TRY.
@ -100,14 +92,12 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
CATCH cx_root INTO DATA(x).
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `App with name ` && mo_http_post->ms_request-s_control-app_start && ` not found...`
previous = x.
EXPORTING val = |App with name { mo_http_post->ms_request-s_control-app_start } not found...|
previous = x.
ENDTRY.
ENDMETHOD.
METHOD factory_stack_call.
result = prepare_app_stack( ms_next-o_app_call ).
@ -115,12 +105,11 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
ENDMETHOD.
METHOD factory_stack_leave.
result = prepare_app_stack( ms_next-o_app_leave ).
"check for new app?
" check for new app?
TRY.
DATA(lo_draft) = NEW z2ui5_cl_core_srv_draft( ).
DATA(ls_draft) = lo_draft->read_info( ms_next-o_app_leave->id_draft ).
@ -129,7 +118,7 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
RETURN.
ENDTRY.
"check for already existing app?
" check for already existing app?
IF mo_app->ms_draft-id_prev_app_stack IS NOT INITIAL.
ls_draft = lo_draft->read_info( mo_app->ms_draft-id_prev_app_stack ).
result->mo_app->ms_draft-id_prev_app_stack = ls_draft-id_prev_app_stack.
@ -155,8 +144,8 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
mo_app->db_save( ).
val->id_draft = COND string( WHEN val->id_draft IS INITIAL
THEN z2ui5_cl_util=>uuid_get_c32( )
ELSE ms_next-o_app_leave->id_draft ).
THEN z2ui5_cl_util=>uuid_get_c32( )
ELSE ms_next-o_app_leave->id_draft ).
result = NEW #( mo_http_post ).
TRY.
@ -177,9 +166,9 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
result->ms_next-s_set-s_popup-check_update_model = abap_false.
result->ms_next-s_set-s_popover-check_update_model = abap_false.
IF ms_next-s_set-s_follow_up_action IS NOT INITIAL.
* .eB(['POPUP_CONFIRM'])
" .eB(['POPUP_CONFIRM'])
" TODO: variable is assigned but never used (ABAP cleaner)
SPLIT ms_next-s_set-s_follow_up_action-custom_js AT `.eB(['` INTO DATA(lv_dummy)
result->ms_actual-event.
SPLIT result->ms_actual-event AT `']` INTO result->ms_actual-event lv_dummy.
@ -190,5 +179,4 @@ CLASS z2ui5_cl_core_action IMPLEMENTATION.
CLEAR result->ms_next-s_set-s_msg_toast.
ENDMETHOD.
ENDCLASS.

View File

@ -1,21 +1,17 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS
first_test FOR TESTING RAISING cx_static_check.
METHODS first_test FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS z2ui5_cl_core_action DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test IMPLEMENTATION.
METHOD first_test.
DATA(lo_http) = NEW z2ui5_cl_core_handler( `` ).
DATA(lo_action) = NEW z2ui5_cl_core_action( lo_http ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -1,24 +1,23 @@
CLASS z2ui5_cl_core_app DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES if_serializable_object.
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
DATA mo_app TYPE REF TO object.
DATA ms_draft TYPE z2ui5_if_types=>ty_s_get-s_draft.
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
DATA mo_app TYPE REF TO object.
DATA ms_draft TYPE z2ui5_if_types=>ty_s_get-s_draft.
METHODS model_json_stringify
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
METHODS model_json_parse
IMPORTING
!iv_view TYPE clike
!io_model TYPE REF TO z2ui5_if_ajson.
iv_view TYPE clike
io_model TYPE REF TO z2ui5_if_ajson.
METHODS all_xml_stringify
RETURNING
@ -46,32 +45,25 @@ CLASS z2ui5_cl_core_app DEFINITION
METHODS db_save.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_core_app IMPLEMENTATION.
METHOD all_xml_parse.
z2ui5_cl_util=>xml_parse(
EXPORTING
xml = xml
IMPORTING
any = result ).
z2ui5_cl_util=>xml_parse( EXPORTING xml = xml
IMPORTING any = result ).
ENDMETHOD.
METHOD all_xml_stringify.
TRY.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = mt_attri
app = mo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = mt_attri
app = mo_app ).
lo_model->attri_before_save( ).
result = z2ui5_cl_util=>xml_stringify( me ).
@ -82,15 +74,13 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
CLEAR mt_attri->*.
DATA(lo_dissolver) = NEW z2ui5_cl_core_srv_diss(
attri = mt_attri
app = mo_app ).
DATA(lo_dissolver) = NEW z2ui5_cl_core_srv_diss( attri = mt_attri
app = mo_app ).
lo_dissolver->main( ).
lo_dissolver->main( ).
lo_model = NEW z2ui5_cl_core_srv_attri(
attri = mt_attri
app = mo_app ).
lo_model = NEW z2ui5_cl_core_srv_attri( attri = mt_attri
app = mo_app ).
lo_model->attri_before_save( ).
result = z2ui5_cl_util=>xml_stringify( me ).
@ -99,36 +89,32 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>` && cx->get_text( ) && `<p>` && x2->get_text( ) && ` or <p> Please check if all generic data references are public attributes of your class`.
val = |<p>{ cx->get_text( ) }<p>{ x2->get_text( ) } or <p> Please check if all generic data references are public attributes of your class|.
ENDTRY.
ENDTRY.
ENDMETHOD.
METHOD constructor.
CREATE DATA mt_attri.
ENDMETHOD.
METHOD db_load.
DATA(lo_db) = NEW z2ui5_cl_core_srv_draft( ).
DATA(ls_db) = lo_db->read_draft( id ).
result = all_xml_parse( ls_db-data ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = result->mt_attri
app = result->mo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = result->mt_attri
app = result->mo_app ).
lo_model->attri_after_load( ).
ENDMETHOD.
METHOD db_load_by_app.
DATA(lo_db) = NEW z2ui5_cl_core_srv_draft( ).
@ -137,15 +123,13 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
result->mo_app = app.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = result->mt_attri
app = result->mo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = result->mt_attri
app = result->mo_app ).
lo_model->attri_refs_update( ).
ENDMETHOD.
METHOD db_save.
IF mo_app IS BOUND.
@ -154,24 +138,20 @@ CLASS z2ui5_cl_core_app IMPLEMENTATION.
ENDIF.
DATA(lo_db) = NEW z2ui5_cl_core_srv_draft( ).
lo_db->create(
draft = ms_draft
model_xml = all_xml_stringify( ) ).
lo_db->create( draft = ms_draft
model_xml = all_xml_stringify( ) ).
ENDMETHOD.
METHOD model_json_parse.
DATA(lo_json_mapper) = NEW z2ui5_cl_core_srv_json( ).
lo_json_mapper->model_front_to_back(
view = iv_view
t_attri = mt_attri
model = io_model ).
lo_json_mapper->model_front_to_back( view = iv_view
t_attri = mt_attri
model = io_model ).
ENDMETHOD.
METHOD model_json_stringify.
DATA(lo_json_mapper) = NEW z2ui5_cl_core_srv_json( ).

View File

@ -1,43 +1,41 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS
first_test FOR TESTING RAISING cx_static_check.
METHODS first_test FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS z2ui5_cl_core_app DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test IMPLEMENTATION.
METHOD first_test.
DATA(lo_action) = NEW z2ui5_cl_core_app( ) ##NEEDED.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_db DEFINITION FINAL FOR TESTING
DURATION LONG
RISK LEVEL HARMLESS.
CLASS ltcl_test_db DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION LONG.
PUBLIC SECTION.
DATA mv_value TYPE string.
INTERFACES z2ui5_if_app.
METHODS constructor.
METHODS test_db_save FOR TESTING.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ltcl_test_db IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
@ -60,14 +58,12 @@ CLASS ltcl_test_db IMPLEMENTATION.
DATA(lo_app_db) = z2ui5_cl_core_app=>db_load( `TEST_ID` ).
DATA(lo_app_user_db) = CAST ltcl_test_db( lo_app_db->mo_app ).
cl_abap_unit_assert=>assert_equals(
act = lo_app_user_db->mv_value
exp = lo_app_user->mv_value ).
cl_abap_unit_assert=>assert_equals( exp = lo_app_user->mv_value
act = lo_app_user_db->mv_value ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
ENDMETHOD.
ENDCLASS.

View File

@ -1,10 +1,10 @@
CLASS z2ui5_cl_core_client DEFINITION
PUBLIC
CREATE PUBLIC .
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_client .
INTERFACES z2ui5_if_client.
DATA mo_action TYPE REF TO z2ui5_cl_core_action.
@ -13,38 +13,33 @@ CLASS z2ui5_cl_core_client DEFINITION
!action TYPE REF TO z2ui5_cl_core_action.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_core_client IMPLEMENTATION.
METHOD constructor.
mo_action = action.
ENDMETHOD.
METHOD z2ui5_if_client~follow_up_action.
mo_action->ms_next-s_set-s_follow_up_action-custom_js = val.
ENDMETHOD.
METHOD z2ui5_if_client~get.
result = VALUE #(
event = mo_action->ms_actual-event
check_launchpad_active = mo_action->mo_http_post->ms_request-s_control-check_launchpad
t_event_arg = mo_action->ms_actual-t_event_arg
s_draft = CORRESPONDING #( mo_action->mo_app->ms_draft )
check_on_navigated = mo_action->ms_actual-check_on_navigated
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front )
r_event_data = mo_action->ms_actual-r_data
result = VALUE #( event = mo_action->ms_actual-event
check_launchpad_active = mo_action->mo_http_post->ms_request-s_control-check_launchpad
t_event_arg = mo_action->ms_actual-t_event_arg
s_draft = CORRESPONDING #( mo_action->mo_app->ms_draft )
check_on_navigated = mo_action->ms_actual-check_on_navigated
s_config = CORRESPONDING #( mo_action->mo_http_post->ms_request-s_front )
r_event_data = mo_action->ms_actual-r_data
).
TRY.
@ -53,12 +48,13 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
RETURN.
ENDIF.
LOOP AT lo_params->mt_json_tree
REFERENCE INTO DATA(lr_comp)
WHERE name = `1`.
REFERENCE INTO DATA(lr_comp)
WHERE name = `1`.
INSERT VALUE #(
n = shift_left( val = shift_right( val = lr_comp->path sub = `/` ) sub = `/` )
v = lr_comp->value ) INTO TABLE result-t_comp_params.
INSERT VALUE #( n = shift_left( val = shift_right( val = lr_comp->path
sub = `/` )
sub = `/` )
v = lr_comp->value ) INTO TABLE result-t_comp_params.
ENDLOOP.
CATCH cx_root.
ENDTRY.
@ -85,7 +81,6 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_client~message_box_display.
IF z2ui5_cl_util=>rtti_check_clike( text ) = abap_false.
@ -95,22 +90,25 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
DATA(lv_type) = z2ui5_cl_util=>ui5_get_msg_type( lt_msg[ 1 ]-type ).
lv_type = to_lower( lv_type ).
DATA(lv_title) = SWITCH #( lt_msg[ 1 ]-type WHEN 'E' THEN `Error`
WHEN 'S' THEN `Success` WHEN `W` THEN `Warning`
ELSE `Information` ).
DATA(lv_title) = SWITCH #( lt_msg[ 1 ]-type
WHEN 'E' THEN `Error`
WHEN 'S' THEN `Success`
WHEN `W` THEN `Warning`
ELSE `Information` ).
ELSEIF lines( lt_msg ) > 1.
lv_text = | { lines( lt_msg ) } Messages found: |.
DATA(lv_details) = `<ul>`.
LOOP AT lt_msg REFERENCE INTO DATA(lr_msg).
lv_details = lv_details && |<li>| && lr_msg->text && |</li>|.
lv_details = |{ lv_details }<li>{ lr_msg->text }</li>|.
ENDLOOP.
lv_details = lv_details && |</ul>|.
lv_details = |{ lv_details }</ul>|.
IF title IS INITIAL.
lv_title = SWITCH #( lt_msg[ 1 ]-type WHEN 'E' THEN `Error`
WHEN 'S' THEN `Success` WHEN `W` THEN `Warning`
ELSE `Information` ).
lv_title = SWITCH #( lt_msg[ 1 ]-type
WHEN 'E' THEN `Error`
WHEN 'S' THEN `Success`
WHEN `W` THEN `Warning`
ELSE `Information` ).
ENDIF.
lv_type = z2ui5_cl_util=>ui5_get_msg_type( lt_msg[ 1 ]-type ).
ELSE.
@ -134,28 +132,25 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
lv_type = 'show'.
ENDIF.
mo_action->ms_next-s_set-s_msg_box = VALUE #(
text = lv_text
type = lv_type
title = lv_title
styleclass = styleclass
onclose = onclose
actions = actions
emphasizedaction = emphasizedaction
initialfocus = initialfocus
textdirection = textdirection
icon = icon
details = lv_details
closeonnavigation = closeonnavigation
mo_action->ms_next-s_set-s_msg_box = VALUE #( text = lv_text
type = lv_type
title = lv_title
styleclass = styleclass
onclose = onclose
actions = actions
emphasizedaction = emphasizedaction
initialfocus = initialfocus
textdirection = textdirection
icon = icon
details = lv_details
closeonnavigation = closeonnavigation
).
ENDMETHOD.
METHOD z2ui5_if_client~message_toast_display.
mo_action->ms_next-s_set-s_msg_toast = VALUE #(
text = text
mo_action->ms_next-s_set-s_msg_toast = VALUE #( text = text
duration = duration
width = width
my = my
@ -173,7 +168,6 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_client~nav_app_call.
IF app IS NOT BOUND.
@ -188,7 +182,6 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
result = app->id_app.
ENDMETHOD.
METHOD z2ui5_if_client~nav_app_leave.
IF app IS NOT SUPPLIED.
@ -208,175 +201,149 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_client~nest2_view_destroy.
mo_action->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~nest2_view_display.
mo_action->ms_next-s_set-s_view_nest2-xml = val.
mo_action->ms_next-s_set-s_view_nest2-id = id.
mo_action->ms_next-s_set-s_view_nest2-xml = val.
mo_action->ms_next-s_set-s_view_nest2-id = id.
mo_action->ms_next-s_set-s_view_nest2-method_destroy = method_destroy.
mo_action->ms_next-s_set-s_view_nest2-method_insert = method_insert.
mo_action->ms_next-s_set-s_view_nest2-method_insert = method_insert.
ENDMETHOD.
METHOD z2ui5_if_client~nest2_view_model_update.
mo_action->ms_next-s_set-s_view_nest2-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~nest_view_destroy.
mo_action->ms_next-s_set-s_view_nest-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~nest_view_display.
mo_action->ms_next-s_set-s_view_nest-xml = val.
mo_action->ms_next-s_set-s_view_nest-id = id.
mo_action->ms_next-s_set-s_view_nest-xml = val.
mo_action->ms_next-s_set-s_view_nest-id = id.
mo_action->ms_next-s_set-s_view_nest-method_destroy = method_destroy.
mo_action->ms_next-s_set-s_view_nest-method_insert = method_insert.
mo_action->ms_next-s_set-s_view_nest-method_insert = method_insert.
ENDMETHOD.
METHOD z2ui5_if_client~nest_view_model_update.
mo_action->ms_next-s_set-s_view_nest-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~popover_destroy.
mo_action->ms_next-s_set-s_popover-check_destroy = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~popover_display.
mo_action->ms_next-s_set-s_popover-check_destroy = abap_false.
mo_action->ms_next-s_set-s_popover-xml = xml.
mo_action->ms_next-s_set-s_popover-open_by_id = by_id.
mo_action->ms_next-s_set-s_popover-xml = xml.
mo_action->ms_next-s_set-s_popover-open_by_id = by_id.
ENDMETHOD.
METHOD z2ui5_if_client~popover_model_update.
mo_action->ms_next-s_set-s_popover-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~popup_destroy.
mo_action->ms_next-s_set-s_popup = VALUE #( check_destroy = abap_true ).
ENDMETHOD.
METHOD z2ui5_if_client~popup_display.
mo_action->ms_next-s_set-s_popup-check_destroy = abap_false.
mo_action->ms_next-s_set-s_popup-xml = val.
mo_action->ms_next-s_set-s_popup-xml = val.
ENDMETHOD.
METHOD z2ui5_if_client~popup_model_update.
mo_action->ms_next-s_set-s_popup-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~view_destroy.
mo_action->ms_next-s_set-s_view-check_destroy = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~view_display.
mo_action->ms_next-s_set-s_view-xml = val.
ENDMETHOD.
METHOD z2ui5_if_client~view_model_update.
mo_action->ms_next-s_set-s_view-check_update_model = abap_true.
ENDMETHOD.
METHOD z2ui5_if_client~_bind.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( mo_action->mo_app ).
result = lo_bind->main(
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
type = z2ui5_if_core_types=>cs_bind_type-one_way
config = VALUE #(
path_only = path
custom_filter = custom_filter
custom_mapper = custom_mapper
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
tab_index = tab_index ) ).
result = lo_bind->main( val = z2ui5_cl_util=>conv_get_as_data_ref( val )
type = z2ui5_if_core_types=>cs_bind_type-one_way
config = VALUE #( path_only = path
custom_filter = custom_filter
custom_mapper = custom_mapper
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
tab_index = tab_index ) ).
ENDMETHOD.
METHOD z2ui5_if_client~_bind_edit.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( mo_action->mo_app ).
result = lo_bind->main(
val = z2ui5_cl_util=>conv_get_as_data_ref( val )
type = z2ui5_if_core_types=>cs_bind_type-two_way
config = VALUE #(
path_only = path
custom_filter = custom_filter
custom_filter_back = custom_filter_back
custom_mapper = custom_mapper
custom_mapper_back = custom_mapper_back
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
tab_index = tab_index ) ).
result = lo_bind->main( val = z2ui5_cl_util=>conv_get_as_data_ref( val )
type = z2ui5_if_core_types=>cs_bind_type-two_way
config = VALUE #( path_only = path
custom_filter = custom_filter
custom_filter_back = custom_filter_back
custom_mapper = custom_mapper
custom_mapper_back = custom_mapper_back
tab = z2ui5_cl_util=>conv_get_as_data_ref( tab )
tab_index = tab_index ) ).
ENDMETHOD.
METHOD z2ui5_if_client~_bind_local.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( mo_action->mo_app ).
result = lo_bind->main_local(
val = val
config = VALUE #(
path_only = path
custom_mapper = custom_mapper
custom_filter = custom_filter ) ).
result = lo_bind->main_local( val = val
config = VALUE #( path_only = path
custom_mapper = custom_mapper
custom_filter = custom_filter ) ).
ENDMETHOD.
METHOD z2ui5_if_client~_event.
DATA(lo_ui5) = NEW z2ui5_cl_core_srv_event( ).
result = lo_ui5->get_event(
val = val
t_arg = t_arg
s_cnt = s_ctrl ).
result = lo_ui5->get_event( val = val
t_arg = t_arg
s_cnt = s_ctrl ).
IF r_data IS NOT INITIAL.
CREATE DATA mo_action->ms_next-r_data LIKE r_data.
@ -385,24 +352,20 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_client~_event_client.
DATA(lo_ui5) = NEW z2ui5_cl_core_srv_event( ).
result = lo_ui5->get_event_client(
val = val
t_arg = t_arg ).
result = lo_ui5->get_event_client( val = val
t_arg = t_arg ).
ENDMETHOD.
METHOD z2ui5_if_client~set_session_stateful.
DATA(lv_check_sticky) = CAST z2ui5_if_app( mo_action->mo_app->mo_app )->check_sticky.
DATA(lv_check_sticky) = CAST z2ui5_if_app( mo_action->mo_app->mo_app )->check_sticky.
IF lv_check_sticky = abap_true AND stateful = abap_true.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `STATEFUL_ALREADY_ACTIVATED_ERROR`.
EXPORTING val = `STATEFUL_ALREADY_ACTIVATED_ERROR`.
ENDIF.
IF stateful = abap_true.
mo_action->ms_next-s_set-s_stateful-active = 1.
@ -441,5 +404,4 @@ CLASS z2ui5_cl_core_client IMPLEMENTATION.
result = z2ui5_if_client~get_app( ls_get-s_draft-id_prev_app ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,6 +1,5 @@
CLASS ltcl_test_client DEFINITION FINAL FOR TESTING
DURATION LONG
RISK LEVEL HARMLESS.
CLASS ltcl_test_client DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION LONG.
PRIVATE SECTION.
METHODS first_test FOR TESTING RAISING cx_static_check.
@ -9,7 +8,6 @@ ENDCLASS.
CLASS z2ui5_cl_core_client DEFINITION LOCAL FRIENDS ltcl_test_client.
CLASS ltcl_test_client IMPLEMENTATION.
METHOD first_test.
DATA(lo_http) = NEW z2ui5_cl_core_handler( `` ).
@ -17,5 +15,4 @@ CLASS ltcl_test_client IMPLEMENTATION.
DATA(lo_client) = NEW z2ui5_cl_core_client( lo_action ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_core_handler DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -33,10 +32,7 @@ CLASS z2ui5_cl_core_handler DEFINITION
ENDCLASS.
CLASS z2ui5_cl_core_handler IMPLEMENTATION.
METHOD constructor.
mv_request_json = val.
@ -44,7 +40,6 @@ CLASS z2ui5_cl_core_handler IMPLEMENTATION.
ENDMETHOD.
METHOD main.
main_begin( ).
@ -54,14 +49,12 @@ CLASS z2ui5_cl_core_handler IMPLEMENTATION.
ENDIF.
ENDDO.
result = VALUE #(
body = mv_response
s_stateful = ms_response-s_front-params-s_stateful
result = VALUE #( body = mv_response
s_stateful = ms_response-s_front-params-s_stateful
).
ENDMETHOD.
METHOD main_begin.
TRY.
@ -84,29 +77,26 @@ CLASS z2ui5_cl_core_handler IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD main_end.
ms_response = VALUE #(
s_front-params = mo_action->ms_next-s_set
s_front-id = mo_action->mo_app->ms_draft-id
s_front-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
ms_response = VALUE #( s_front-params = mo_action->ms_next-s_set
s_front-id = mo_action->mo_app->ms_draft-id
s_front-app = z2ui5_cl_util=>rtti_get_classname_by_ref( mo_action->mo_app->mo_app )
).
IF ms_response-s_front-params-s_view-check_update_model = abap_true
OR ms_response-s_front-params-s_view_nest-check_update_model = abap_true
OR ms_response-s_front-params-s_view_nest2-check_update_model = abap_true
OR ms_response-s_front-params-s_popup-check_update_model = abap_true
OR ms_response-s_front-params-s_popover-check_update_model = abap_true
OR ms_response-s_front-params-s_view-xml IS NOT INITIAL
OR ms_response-s_front-params-s_view_nest-xml IS NOT INITIAL
OR ms_response-s_front-params-s_view_nest2-xml IS NOT INITIAL
OR ms_response-s_front-params-s_popup-xml IS NOT INITIAL
OR ms_response-s_front-params-s_popover-xml IS NOT INITIAL.
IF ms_response-s_front-params-s_view-check_update_model = abap_true
OR ms_response-s_front-params-s_view_nest-check_update_model = abap_true
OR ms_response-s_front-params-s_view_nest2-check_update_model = abap_true
OR ms_response-s_front-params-s_popup-check_update_model = abap_true
OR ms_response-s_front-params-s_popover-check_update_model = abap_true
OR ms_response-s_front-params-s_view-xml IS NOT INITIAL
OR ms_response-s_front-params-s_view_nest-xml IS NOT INITIAL
OR ms_response-s_front-params-s_view_nest2-xml IS NOT INITIAL
OR ms_response-s_front-params-s_popup-xml IS NOT INITIAL
OR ms_response-s_front-params-s_popover-xml IS NOT INITIAL.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = mo_action->mo_app->mt_attri
app = mo_action->mo_app->mo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = mo_action->mo_app->mt_attri
app = mo_action->mo_app->mo_app ).
lo_model->attri_refs_update( ).
ms_response-model = mo_action->mo_app->model_json_stringify( ).
@ -125,7 +115,6 @@ CLASS z2ui5_cl_core_handler IMPLEMENTATION.
ENDMETHOD.
METHOD main_process.
TRY.

View File

@ -1,17 +1,14 @@
CLASS ltcl_test_handler_post DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test_handler_post DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS
load_startup_app FOR TESTING RAISING cx_static_check.
METHODS load_startup_app FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS z2ui5_cl_core_handler DEFINITION LOCAL FRIENDS ltcl_test_handler_post.
CLASS ltcl_test_handler_post IMPLEMENTATION.
METHOD load_startup_app.
IF sy-sysid = 'ABC'.
@ -24,16 +21,13 @@ CLASS ltcl_test_handler_post IMPLEMENTATION.
cl_abap_unit_assert=>assert_bound( lo_post->mo_action ).
cl_abap_unit_assert=>assert_equals(
act = lo_post->ms_request-s_front-origin
exp = `ORIGIN` ).
cl_abap_unit_assert=>assert_equals( exp = `ORIGIN`
act = lo_post->ms_request-s_front-origin ).
cl_abap_unit_assert=>assert_equals(
act = lo_post->ms_request-s_front-pathname
exp = `PATHNAME` ).
cl_abap_unit_assert=>assert_equals( exp = `PATHNAME`
act = lo_post->ms_request-s_front-pathname ).
DATA(lo_startup) = CAST z2ui5_cl_app_startup( lo_post->mo_action->mo_app->mo_app ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -41,12 +41,11 @@ ENDCLASS.
CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
METHOD attri_after_load.
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
TRY.
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
lr_attri->o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_attri->r_ref ).
IF lr_attri->srtti_data IS NOT INITIAL.
@ -104,9 +103,8 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
RETURN.
ENDIF.
DATA(lo_dissolve) = NEW z2ui5_cl_core_srv_diss(
attri = mt_attri
app = mo_app ).
DATA(lo_dissolve) = NEW z2ui5_cl_core_srv_diss( attri = mt_attri
app = mo_app ).
DO 5 TIMES.
@ -137,9 +135,9 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
LOOP AT mt_attri->* ASSIGNING FIELD-SYMBOL(<ls_attri>).
DATA(lv_name) = <ls_attri>-name.
IF line_exists( lt_attri[ name = lv_name ] ).
<ls_attri>-bind_type = lt_attri[ name = lv_name ]-bind_type.
<ls_attri>-bind_type = lt_attri[ name = lv_name ]-bind_type.
<ls_attri>-name_client = lt_attri[ name = lv_name ]-name_client.
<ls_attri>-view = lt_attri[ name = lv_name ]-view.
<ls_attri>-view = lt_attri[ name = lv_name ]-view.
ENDIF.
ENDLOOP.
RETURN.
@ -152,7 +150,6 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
EXIT.
ENDDO.
"""""
RAISE EXCEPTION TYPE z2ui5_cx_util_error
@ -167,8 +164,7 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
IF sy-subrc <> 0.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `DEREF_FAILED_TARGET_INITIAL`.
EXPORTING val = `DEREF_FAILED_TARGET_INITIAL`.
ENDIF.
GET REFERENCE OF <attri> INTO result.
@ -182,7 +178,7 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri).
TRY.
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
lr_attri->r_ref = attri_get_val_ref( lr_attri->name ).
lr_attri->o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_attri->r_ref ).
* TRY.
@ -211,9 +207,9 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
WHERE o_typedescr IS BOUND.
IF lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_elem
IF lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_elem
AND lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_struct
AND lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_table.
AND lr_attri->o_typedescr->kind <> cl_abap_typedescr=>kind_table.
CONTINUE.
ENDIF.
@ -224,7 +220,5 @@ CLASS z2ui5_cl_core_srv_attri IMPLEMENTATION.
ENDLOOP.
ENDMETHOD.
ENDCLASS.

View File

@ -1,58 +1,53 @@
CLASS ltcl_test_app2 DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_app2 DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO data.
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO data.
DATA mr_value2 TYPE REF TO data.
DATA mo_app TYPE REF TO ltcl_test_app2.
DATA mo_app TYPE REF TO ltcl_test_app2.
DATA xx TYPE string ##NEEDED.
DATA xx TYPE string ##NEEDED.
METHODS constructor.
ENDCLASS.
CLASS ltcl_test_app2 IMPLEMENTATION.
CLASS ltcl_test_app2 IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_search_attri DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test_search_attri DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS first_test FOR TESTING RAISING cx_static_check.
METHODS first_test FOR TESTING RAISING cx_static_check.
METHODS second_test FOR TESTING RAISING cx_static_check.
METHODS third_test FOR TESTING RAISING cx_static_check.
METHODS third_test FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS z2ui5_cl_core_srv_attri DEFINITION LOCAL FRIENDS ltcl_test_search_attri.
CLASS ltcl_test_search_attri IMPLEMENTATION.
METHOD first_test.
DATA(lo_app_client) = NEW ltcl_test_app2( ).
DATA lr_value TYPE REF TO data.
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( (
r_ref = lr_value
o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_value )
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = lr_value
o_typedescr = cl_abap_datadescr=>describe_by_data_ref(
lr_value )
) ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_search_a_dissolve( REF #( lo_app_client->mv_value ) ).
@ -68,14 +63,13 @@ CLASS ltcl_test_search_attri IMPLEMENTATION.
DATA lr_value TYPE REF TO data.
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( (
r_ref = REF #( lo_app_client->mv_value )
o_typedescr = cl_abap_datadescr=>describe_by_data_ref( lr_value )
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( r_ref = REF #( lo_app_client->mv_value )
o_typedescr = cl_abap_datadescr=>describe_by_data_ref(
lr_value )
) ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_search_a_dissolve( REF #( lo_app_client->mv_value ) ).
@ -93,11 +87,10 @@ CLASS ltcl_test_search_attri IMPLEMENTATION.
lo_app_client->mo_app = NEW #( ).
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri(
( name = `1` r_ref = REF #( lo_app_client->mr_value ) )
( name = `4` r_ref = REF #( lo_app_client->mr_value2 ) )
( name = `2` r_ref = REF #( lo_app_client->mo_app ) )
( name = `3` r_ref = REF #( lo_app_client->mv_value ) ) ).
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ( name = `1` r_ref = REF #( lo_app_client->mr_value ) )
( name = `4` r_ref = REF #( lo_app_client->mr_value2 ) )
( name = `2` r_ref = REF #( lo_app_client->mo_app ) )
( name = `3` r_ref = REF #( lo_app_client->mv_value ) ) ).
DATA(lr_attri) = REF #( lt_attri[ r_ref = lr_value ] ).
IF lr_attri->r_ref <> lr_value.
@ -105,13 +98,11 @@ CLASS ltcl_test_search_attri IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_app_sub DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_app_sub DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
@ -122,61 +113,59 @@ CLASS ltcl_test_app_sub DEFINITION FINAL FOR TESTING
METHODS constructor.
ENDCLASS.
CLASS ltcl_test_app_sub IMPLEMENTATION.
CLASS ltcl_test_app_sub IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_app3 DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_app3 DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO string.
* DATA mr_value2 TYPE REF TO data.
DATA mo_app TYPE REF TO ltcl_test_app_sub.
DATA mo_app TYPE REF TO ltcl_test_app_sub.
METHODS constructor.
ENDCLASS.
CLASS ltcl_test_app3 IMPLEMENTATION.
CLASS ltcl_test_app3 IMPLEMENTATION.
METHOD constructor.
mo_app = NEW #( ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_get_attri DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test_get_attri DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS first_test FOR TESTING RAISING cx_static_check.
METHODS first_test FOR TESTING RAISING cx_static_check.
METHODS second_test FOR TESTING RAISING cx_static_check.
METHODS third_test FOR TESTING RAISING cx_static_check.
METHODS test4 FOR TESTING RAISING cx_static_check.
METHODS third_test FOR TESTING RAISING cx_static_check.
METHODS test4 FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test_get_attri IMPLEMENTATION.
CLASS ltcl_test_get_attri IMPLEMENTATION.
METHOD first_test.
DATA(lo_app_client) = NEW ltcl_test_app3( ).
" TODO: variable is assigned but never used (ABAP cleaner)
DATA lr_value TYPE REF TO data.
GET REFERENCE OF lo_app_client->mv_value INTO lr_value.
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_get_val_ref( `MV_VALUE` ).
@ -192,9 +181,8 @@ CLASS ltcl_test_get_attri IMPLEMENTATION.
CREATE DATA lo_app_client->mr_value.
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_get_val_ref( `MR_VALUE->*` ).
@ -209,9 +197,8 @@ CLASS ltcl_test_get_attri IMPLEMENTATION.
DATA(lo_app_client) = NEW ltcl_test_app3( ).
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_get_val_ref( `MO_APP->MV_VALUE` ).
@ -227,9 +214,8 @@ CLASS ltcl_test_get_attri IMPLEMENTATION.
CREATE DATA lo_app_client->mo_app->mr_value.
DATA(lt_attri) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = REF #( lt_attri )
app = lo_app_client ).
DATA(lr_attri) = lo_model->attri_get_val_ref( `MO_APP->MR_VALUE->*` ).
@ -238,6 +224,4 @@ CLASS ltcl_test_get_attri IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -1,50 +1,49 @@
CLASS z2ui5_cl_core_srv_bind DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
DATA mo_app TYPE REF TO z2ui5_cl_core_app .
DATA mr_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri .
DATA ms_config TYPE z2ui5_if_core_types=>ty_s_bind_config .
DATA mv_type TYPE string .
DATA mo_app TYPE REF TO z2ui5_cl_core_app.
DATA mr_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri.
DATA ms_config TYPE z2ui5_if_core_types=>ty_s_bind_config.
DATA mv_type TYPE string.
METHODS constructor
IMPORTING
!app TYPE REF TO z2ui5_cl_core_app .
app TYPE REF TO z2ui5_cl_core_app.
METHODS main_local
IMPORTING
!val TYPE data
!config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
val TYPE data
config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
METHODS main
IMPORTING
!val TYPE REF TO data
val TYPE REF TO data
!type TYPE string
!config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
METHODS main_cell
IMPORTING
!val TYPE data
val TYPE data
!type TYPE string
!config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
METHODS clear
IMPORTING
!val TYPE string.
val TYPE string.
METHODS bind_tab_cell
IMPORTING
!iv_name TYPE string
!i_val TYPE data
iv_name TYPE string
i_val TYPE data
RETURNING
VALUE(result) TYPE string.
@ -62,17 +61,15 @@ CLASS z2ui5_cl_core_srv_bind DEFINITION
ENDCLASS.
CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
METHOD bind_tab_cell.
FIELD-SYMBOLS <ele> TYPE any.
FIELD-SYMBOLS <row> TYPE any.
FIELD-SYMBOLS <ele> TYPE any.
FIELD-SYMBOLS <row> TYPE any.
DATA lr_ref_in TYPE REF TO data.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
ASSIGN ms_config-tab->* TO <tab>.
ASSIGN <tab>[ ms_config-tab_index ] TO <row>.
@ -84,7 +81,7 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
lr_ref_in = REF #( <ele> ).
IF i_val = lr_ref_in.
result = iv_name && '/' && shift_right( CONV string( ms_config-tab_index - 1 ) ) && '/' && <comp>-name.
result = |{ iv_name }/{ shift_right( CONV string( ms_config-tab_index - 1 ) ) }/{ <comp>-name }|.
RETURN.
ENDIF.
@ -96,13 +93,11 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ENDMETHOD.
METHOD check_raise_existing.
IF mr_attri->bind_type <> mv_type.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>Binding Error - Two different binding types for same attribute used (` && mr_attri->name && `).`.
EXPORTING val = |<p>Binding Error - Two different binding types for same attribute used ({ mr_attri->name }).|.
ENDIF.
IF mr_attri->custom_mapper IS BOUND.
@ -111,26 +106,22 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
DATA(lv_name2) = z2ui5_cl_util=>rtti_get_classname_by_ref( ms_config-custom_mapper ).
IF lv_name1 <> lv_name2.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>Binding Error - Two different mapper for same attribute used (` && mr_attri->name && `).`.
EXPORTING val = |<p>Binding Error - Two different mapper for same attribute used ({ mr_attri->name }).|.
ENDIF.
ENDIF.
IF mr_attri->custom_mapper_back IS BOUND AND mr_attri->custom_mapper_back <> ms_config-custom_mapper_back.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>Binding Error - Two different mapper back for same attribute used (` && mr_attri->name && `).`.
EXPORTING val = |<p>Binding Error - Two different mapper back for same attribute used ({ mr_attri->name }).|.
ENDIF.
IF mr_attri->custom_filter IS BOUND AND mr_attri->custom_filter <> ms_config-custom_filter.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>Binding Error - Two different filter for same attribute used (` && mr_attri->name && `).`.
EXPORTING val = |<p>Binding Error - Two different filter for same attribute used ({ mr_attri->name }).|.
ENDIF.
ENDMETHOD.
METHOD check_raise_new.
IF mr_attri->custom_filter_back IS BOUND.
@ -138,8 +129,7 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
DATA(lo_dummy) = CAST if_serializable_object( mr_attri->custom_filter_back ) ##NEEDED.
CATCH cx_root.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>custom_filter_back used but it is not serializable, please use if_serializable_object`.
EXPORTING val = `<p>custom_filter_back used but it is not serializable, please use if_serializable_object`.
ENDTRY.
ENDIF.
@ -157,18 +147,18 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ENDMETHOD.
METHOD clear.
TRY.
DATA(lv_path) = shift_right( val = val sub = `->*` ).
DATA(lv_path) = shift_right( val = val
sub = `->*` ).
mo_app->mt_attri->*[ name = lv_path ]-check_dissolved = abap_false.
mo_app->mt_attri->*[ name = val ]-check_dissolved = abap_false.
mo_app->mt_attri->*[ name = lv_path ]-name_client = ``.
mo_app->mt_attri->*[ name = lv_path ]-bind_type = ``.
LOOP AT mo_app->mt_attri->* REFERENCE INTO DATA(lr_bind2)
WHERE name = lv_path.
WHERE name = lv_path.
CLEAR lr_bind2->r_ref.
ENDLOOP.
@ -177,33 +167,35 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ENDMETHOD.
METHOD constructor.
mo_app = app.
ENDMETHOD.
METHOD get_client_name.
result = replace( val = mr_attri->name sub = `-` with = `/` occ = 0 ).
result = replace( val = result sub = `>` with = `` occ = 0 ).
result = replace( val = mr_attri->name
sub = `-`
with = `/`
occ = 0 ).
result = replace( val = result
sub = `>`
with = ``
occ = 0 ).
result = COND #( WHEN mv_type = z2ui5_if_core_types=>cs_bind_type-two_way
THEN `/` && z2ui5_if_core_types=>cs_ui5-two_way_model )
&& `/` && result.
THEN |/{ z2ui5_if_core_types=>cs_ui5-two_way_model }| )
&& |/{ result }|.
ENDMETHOD.
METHOD main.
IF z2ui5_cl_util=>check_bound_a_not_inital( config-tab ).
result = main_cell(
val = val
type = type
config = config ).
result = main_cell( val = val
type = type
config = config ).
RETURN.
ENDIF.
@ -211,9 +203,8 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ms_config = config.
mv_type = type.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = mo_app->mt_attri
app = mo_app->mo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = mo_app->mt_attri
app = mo_app->mo_app ).
lo_model->attri_refs_update( ).
@ -227,44 +218,43 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ENDIF.
result = mr_attri->name_client.
IF `/` && z2ui5_if_core_types=>cs_ui5-two_way_model = result.
IF |/{ z2ui5_if_core_types=>cs_ui5-two_way_model }| = result.
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = `<p>Name of variable not allowed - x is reserved word - use anoter name for your attribute`.
EXPORTING val = `<p>Name of variable not allowed - x is reserved word - use anoter name for your attribute`.
ENDIF.
IF ms_config-path_only = abap_false.
result = `{` && result && `}`.
result = |\{{ result }\}|.
ENDIF.
ENDMETHOD.
METHOD main_cell.
ms_config = config.
mv_type = type.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( mo_app ).
result = lo_bind->main( val = config-tab type = type config = VALUE #( path_only = abap_true ) ).
result = lo_bind->main( val = config-tab
type = type
config = VALUE #( path_only = abap_true ) ).
result = bind_tab_cell(
iv_name = result
i_val = val ).
result = bind_tab_cell( iv_name = result
i_val = val ).
IF ms_config-path_only = abap_false.
result = `{` && result && `}`.
result = |\{{ result }\}|.
ENDIF.
ENDMETHOD.
METHOD main_local.
TRY.
DATA(lo_json) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>new( ) ).
lo_json->set( iv_path = `/` iv_val = val ).
lo_json->set( iv_path = `/`
iv_val = val ).
IF config-custom_mapper IS BOUND.
lo_json = lo_json->map( config-custom_mapper ).
@ -283,12 +273,12 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
name = lv_id
json_bind_local = lo_json
bind_type = z2ui5_if_core_types=>cs_bind_type-one_time )
INTO TABLE mo_app->mt_attri->*.
INTO TABLE mo_app->mt_attri->*.
result = |/{ lv_id }|.
IF config-path_only = abap_false.
result = `{` && result && `}`.
result = |\{{ result }\}|.
ENDIF.
CATCH cx_root INTO DATA(x).
@ -296,18 +286,18 @@ CLASS z2ui5_cl_core_srv_bind IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD update_model_attri.
mr_attri->bind_type = mv_type.
mr_attri->view = ms_config-view.
mr_attri->custom_filter = ms_config-custom_filter.
mr_attri->bind_type = mv_type.
mr_attri->view = ms_config-view.
mr_attri->custom_filter = ms_config-custom_filter.
mr_attri->custom_filter_back = ms_config-custom_filter_back.
mr_attri->custom_mapper = ms_config-custom_mapper.
mr_attri->custom_mapper = ms_config-custom_mapper.
mr_attri->custom_mapper_back = ms_config-custom_mapper_back.
mr_attri->view = COND #( WHEN ms_config-view IS INITIAL THEN z2ui5_if_client=>cs_view-main ELSE ms_config-view ).
mr_attri->name_client = get_client_name( ).
mr_attri->view = COND #( WHEN ms_config-view IS INITIAL
THEN z2ui5_if_client=>cs_view-main
ELSE ms_config-view ).
mr_attri->name_client = get_client_name( ).
ENDMETHOD.
ENDCLASS.

View File

@ -2,9 +2,8 @@
CLASS ltcl_test_bind DEFINITION DEFERRED.
CLASS z2ui5_cl_core_srv_bind DEFINITION LOCAL FRIENDS ltcl_test_bind.
CLASS ltcl_test_app DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_app DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
@ -26,38 +25,40 @@ CLASS ltcl_test_app DEFINITION FINAL FOR TESTING
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO data ##NEEDED.
DATA mr_struc TYPE REF TO s_01 ##NEEDED.
DATA mo_app TYPE REF TO ltcl_test_bind ##NEEDED.
DATA mo_app TYPE REF TO ltcl_test_bind ##NEEDED.
DATA xx TYPE string ##NEEDED.
DATA xx TYPE string ##NEEDED.
METHODS constructor.
ENDCLASS.
CLASS ltcl_test_app IMPLEMENTATION.
CLASS ltcl_test_app IMPLEMENTATION.
METHOD constructor.
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_bind DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_bind DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
PROTECTED SECTION.
PRIVATE SECTION.
METHODS test_one_way FOR TESTING RAISING cx_static_check.
METHODS test_one_way_w_x_error FOR TESTING RAISING cx_static_check.
METHODS test_error_diff FOR TESTING RAISING cx_static_check.
METHODS test_two_way FOR TESTING RAISING cx_static_check.
METHODS test_local FOR TESTING RAISING cx_static_check.
METHODS test_local_one FOR TESTING RAISING cx_static_check.
METHODS test_one_way FOR TESTING RAISING cx_static_check.
METHODS test_one_way_w_x_error FOR TESTING RAISING cx_static_check.
METHODS test_error_diff FOR TESTING RAISING cx_static_check.
METHODS test_two_way FOR TESTING RAISING cx_static_check.
METHODS test_local FOR TESTING RAISING cx_static_check.
METHODS test_local_one FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test_bind IMPLEMENTATION.
CLASS ltcl_test_bind IMPLEMENTATION.
METHOD test_one_way_w_x_error.
DATA(lo_app_client) = NEW ltcl_test_app( ).
@ -67,9 +68,8 @@ CLASS ltcl_test_bind IMPLEMENTATION.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
TRY.
lo_bind->main(
val = REF #( lo_app_client->xx )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
lo_bind->main( val = REF #( lo_app_client->xx )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>abort( ).
@ -86,13 +86,11 @@ CLASS ltcl_test_bind IMPLEMENTATION.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_bind) = lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_bind) = lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_bind
exp = `{/MV_VALUE}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MV_VALUE}`
act = lv_bind ).
ENDMETHOD.
@ -104,14 +102,12 @@ CLASS ltcl_test_bind IMPLEMENTATION.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
TRY.
lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
cl_abap_unit_assert=>abort( ).
@ -120,7 +116,6 @@ CLASS ltcl_test_bind IMPLEMENTATION.
ENDMETHOD.
METHOD test_two_way.
* IF sy-sysid = 'ABC'.
@ -133,17 +128,14 @@ CLASS ltcl_test_bind IMPLEMENTATION.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_bind) = lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
DATA(lv_bind) = lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
DATA(lv_bind2) = lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
DATA(lv_bind2) = lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_bind
exp = lv_bind2 ).
cl_abap_unit_assert=>assert_equals( exp = lv_bind2
act = lv_bind ).
cl_abap_unit_assert=>assert_not_initial( lv_bind ).
@ -175,20 +167,17 @@ CLASS ltcl_test_bind IMPLEMENTATION.
cl_abap_unit_assert=>assert_not_initial( lv_bind ).
DATA(lv_bind2) = lo_bind->main(
val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
DATA(lv_bind2) = lo_bind->main( val = REF #( lo_app_client->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-two_way ).
cl_abap_unit_assert=>assert_not_initial( lv_bind2 ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_main_structure DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_main_structure DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
@ -210,16 +199,15 @@ CLASS ltcl_test_main_structure DEFINITION FINAL FOR TESTING
PRIVATE SECTION.
METHODS test_one_way_lev1 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev2 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev3 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev1 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev2 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev3 FOR TESTING RAISING cx_static_check.
METHODS test_one_way_lev4_long_name FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test_main_structure IMPLEMENTATION.
CLASS ltcl_test_main_structure IMPLEMENTATION.
METHOD test_one_way_lev1.
DATA(lo_test_app) = NEW ltcl_test_main_structure( ).
@ -227,22 +215,18 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->ms_struc-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->ms_struc-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MS_STRUC/INPUT}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MS_STRUC/INPUT}`
act = lv_result ).
lv_result = lo_bind->main(
val = REF #( lo_test_app->ms_struc-input )
config = VALUE #( path_only = abap_true )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
lv_result = lo_bind->main( val = REF #( lo_test_app->ms_struc-input )
config = VALUE #( path_only = abap_true )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `/MS_STRUC/INPUT` ).
cl_abap_unit_assert=>assert_equals( exp = `/MS_STRUC/INPUT`
act = lv_result ).
ENDMETHOD.
@ -253,13 +237,11 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->ms_struc-s_02-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->ms_struc-s_02-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MS_STRUC/S_02/INPUT}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MS_STRUC/S_02/INPUT}`
act = lv_result ).
ENDMETHOD.
@ -270,13 +252,11 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->ms_struc-s_02-s_03-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->ms_struc-s_02-s_03-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MS_STRUC/S_02/S_03/INPUT}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MS_STRUC/S_02/S_03/INPUT}`
act = lv_result ).
ENDMETHOD.
@ -287,26 +267,22 @@ CLASS ltcl_test_main_structure IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->ms_struc-s_02-s_03-s_04-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->ms_struc-s_02-s_03-s_04-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MS_STRUC/S_02/S_03/S_04/INPUT}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MS_STRUC/S_02/S_03/S_04/INPUT}`
act = lv_result ).
ENDMETHOD.
ENDCLASS.
CLASS ltcl_test_main_object DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL HARMLESS.
CLASS ltcl_test_main_object DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION MEDIUM.
PUBLIC SECTION.
DATA mo_obj TYPE REF TO ltcl_test_main_object.
DATA mo_obj TYPE REF TO ltcl_test_main_object.
DATA mv_value TYPE string.
TYPES:
@ -330,11 +306,10 @@ CLASS ltcl_test_main_object DEFINITION FINAL FOR TESTING
METHODS test_one_way_value FOR TESTING RAISING cx_static_check.
METHODS test_one_way_struc FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test_main_object IMPLEMENTATION.
CLASS ltcl_test_main_object IMPLEMENTATION.
METHOD test_one_way_value.
DATA(lo_test_app) = NEW ltcl_test_main_object( ).
@ -344,13 +319,11 @@ CLASS ltcl_test_main_object IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->mo_obj->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->mo_obj->mv_value )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MO_OBJ/MV_VALUE}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MO_OBJ/MV_VALUE}`
act = lv_result ).
ENDMETHOD.
@ -362,14 +335,11 @@ CLASS ltcl_test_main_object IMPLEMENTATION.
lo_app->mo_app = lo_test_app.
DATA(lo_bind) = NEW z2ui5_cl_core_srv_bind( lo_app ).
DATA(lv_result) = lo_bind->main(
val = REF #( lo_test_app->mo_obj->ms_struc-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
DATA(lv_result) = lo_bind->main( val = REF #( lo_test_app->mo_obj->ms_struc-input )
type = z2ui5_if_core_types=>cs_bind_type-one_way ).
cl_abap_unit_assert=>assert_equals(
act = lv_result
exp = `{/MO_OBJ/MS_STRUC/INPUT}` ).
cl_abap_unit_assert=>assert_equals( exp = `{/MO_OBJ/MS_STRUC/INPUT}`
act = lv_result ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,16 +1,16 @@
CLASS z2ui5_cl_core_srv_diss DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
METHODS constructor
IMPORTING
!attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
!app TYPE REF TO object.
attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
app TYPE REF TO object.
METHODS main.
METHODS main .
PROTECTED SECTION.
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
@ -32,12 +32,14 @@ CLASS z2ui5_cl_core_srv_diss DEFINITION
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
METHODS diss_oref
IMPORTING ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
RETURNING VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
IMPORTING
ir_attri TYPE REF TO z2ui5_if_core_types=>ty_s_attri
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
METHODS create_new_entry
IMPORTING
name TYPE string
!name TYPE string
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_attri.
@ -45,10 +47,7 @@ CLASS z2ui5_cl_core_srv_diss DEFINITION
ENDCLASS.
CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
METHOD constructor.
mt_attri = attri.
@ -56,20 +55,17 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD create_new_entry.
result = VALUE z2ui5_if_core_types=>ty_s_attri( ).
result-name = name.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = mt_attri
app = mo_app ).
result = VALUE z2ui5_if_core_types=>ty_s_attri( ).
result-name = name.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = mt_attri
app = mo_app ).
result-r_ref = lo_model->attri_get_val_ref( name ).
result-o_typedescr = cl_abap_datadescr=>describe_by_data_ref( result-r_ref ).
ENDMETHOD.
METHOD diss_dref.
IF z2ui5_cl_util=>check_unassign_inital( ir_attri->r_ref ).
@ -92,10 +88,9 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
WHEN OTHERS.
ls_attri2-name = ir_attri->name && `->*`.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri(
attri = mt_attri
app = mo_app ).
ls_attri2-name = |{ ir_attri->name }->*|.
DATA(lo_model) = NEW z2ui5_cl_core_srv_attri( attri = mt_attri
app = mo_app ).
ls_attri2-r_ref = lo_model->attri_get_val_ref( ls_attri2-name ).
INSERT ls_attri2 INTO TABLE result.
@ -103,7 +98,6 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD diss_oref.
IF z2ui5_cl_util=>check_unassign_inital( ir_attri->r_ref ).
@ -114,11 +108,11 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_oref( lr_ref ).
LOOP AT lt_attri REFERENCE INTO DATA(lr_attri)
WHERE visibility = cl_abap_objectdescr=>public
AND is_interface = abap_false
AND is_constant = abap_false.
WHERE visibility = cl_abap_objectdescr=>public
AND is_interface = abap_false
AND is_constant = abap_false.
TRY.
DATA(lv_name) = COND #( WHEN ir_attri->name IS NOT INITIAL THEN ir_attri->name && `->` ) && lr_attri->name.
DATA(lv_name) = COND #( WHEN ir_attri->name IS NOT INITIAL THEN |{ ir_attri->name }->| ) && lr_attri->name.
DATA(ls_new) = create_new_entry( lv_name ).
INSERT ls_new INTO TABLE result.
@ -128,14 +122,13 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD diss_struc.
IF ir_attri->o_typedescr->kind = cl_abap_typedescr=>kind_ref.
DATA(lv_name) = ir_attri->name && `->`.
DATA(lv_name) = |{ ir_attri->name }->|.
DATA(lr_ref) = z2ui5_cl_util=>unassign_data( ir_attri->r_ref ).
ELSE.
lv_name = ir_attri->name && `-`.
lv_name = |{ ir_attri->name }-|.
lr_ref = ir_attri->r_ref.
ENDIF.
@ -148,7 +141,6 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD main.
TRY.
@ -170,12 +162,11 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD main_init.
IF mt_attri->* IS NOT INITIAL.
LOOP AT mt_attri->* TRANSPORTING NO FIELDS
WHERE bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
WHERE bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
ENDLOOP.
IF sy-subrc = 0.
RETURN.
@ -188,21 +179,20 @@ CLASS z2ui5_cl_core_srv_diss IMPLEMENTATION.
ENDMETHOD.
METHOD main_run.
DATA(lt_attri_new) = VALUE z2ui5_if_core_types=>ty_t_attri( ).
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
WHERE check_dissolved = abap_false
AND bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
WHERE check_dissolved = abap_false
AND bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
lr_attri->check_dissolved = abap_true.
IF lr_attri->o_typedescr IS NOT BOUND.
DATA(ls_entry) = create_new_entry( lr_attri->name ).
lr_attri->o_typedescr = ls_entry-o_typedescr.
lr_attri->r_ref = ls_entry-r_ref.
lr_attri->r_ref = ls_entry-r_ref.
ENDIF.
CASE lr_attri->o_typedescr->kind.

View File

@ -1,9 +1,8 @@
CLASS ltcl_test_dissolve DEFINITION DEFERRED.
CLASS z2ui5_cl_core_srv_diss DEFINITION LOCAL FRIENDS ltcl_test_dissolve.
CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test_dissolve DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PUBLIC SECTION.
@ -27,38 +26,36 @@ CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
s_01 TYPE s_01,
END OF ty_s_struc.
DATA ms_struc TYPE s_01 ##NEEDED.
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO data.
DATA mr_struc TYPE REF TO s_01.
DATA mo_app TYPE REF TO ltcl_test_dissolve.
DATA ms_struc TYPE s_01 ##NEEDED.
DATA mv_value TYPE string ##NEEDED.
DATA mr_value TYPE REF TO data.
DATA mr_struc TYPE REF TO s_01.
DATA mo_app TYPE REF TO ltcl_test_dissolve.
DATA ms_struc2 TYPE ty_s_struc.
PRIVATE SECTION.
METHODS test_init FOR TESTING RAISING cx_static_check.
METHODS test_struc FOR TESTING RAISING cx_static_check.
METHODS test_dref FOR TESTING RAISING cx_static_check.
METHODS test_struc_dref FOR TESTING RAISING cx_static_check.
METHODS test_oref FOR TESTING RAISING cx_static_check.
METHODS test_ref FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref_struc FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref FOR TESTING RAISING cx_static_check.
METHODS test_dref_struc FOR TESTING RAISING cx_static_check.
METHODS test_init FOR TESTING RAISING cx_static_check.
METHODS test_struc FOR TESTING RAISING cx_static_check.
METHODS test_dref FOR TESTING RAISING cx_static_check.
METHODS test_struc_dref FOR TESTING RAISING cx_static_check.
METHODS test_oref FOR TESTING RAISING cx_static_check.
METHODS test_ref FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref_struc FOR TESTING RAISING cx_static_check.
METHODS test_oref_dref FOR TESTING RAISING cx_static_check.
METHODS test_dref_struc FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_ref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
@ -73,12 +70,11 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_init.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -93,14 +89,13 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_dref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
CREATE DATA lo_app->mr_struc.
CREATE DATA lo_app->mr_value TYPE string.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -111,7 +106,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_oref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app2->mo_app = lo_app.
@ -120,9 +115,8 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
CREATE DATA lo_app->mo_app->mr_value TYPE string.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app2 ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app2 ).
lo_model->main( ).
lo_model->main( ).
@ -137,11 +131,10 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -157,7 +150,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_dref_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app2->mo_app = lo_app.
@ -165,9 +158,8 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
CREATE DATA lo_app->mr_struc.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -181,7 +173,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_oref_dref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = lo_app2.
@ -189,9 +181,8 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
CREATE DATA lo_app2->mr_value TYPE string.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -203,7 +194,7 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
METHOD test_oref_dref_struc.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
DATA(lo_app2) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = lo_app2.
@ -211,9 +202,8 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
CREATE DATA lo_app->mo_app->mr_struc.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -226,17 +216,15 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
ENDMETHOD.
METHOD test_struc_dref.
DATA(lo_app) = NEW ltcl_test_dissolve( ).
DATA(lo_app) = NEW ltcl_test_dissolve( ).
lo_app->mo_app = NEW #( ).
CREATE DATA lo_app->mo_app->ms_struc2-r_ref TYPE string.
DATA lt_attri TYPE z2ui5_if_core_types=>ty_t_attri.
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss(
attri = REF #( lt_attri )
app = lo_app ).
DATA(lo_model) = NEW z2ui5_cl_core_srv_diss( attri = REF #( lt_attri )
app = lo_app ).
lo_model->main( ).
lo_model->main( ).
@ -247,5 +235,4 @@ CLASS ltcl_test_dissolve IMPLEMENTATION.
cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_attri[ name = `MO_APP->MS_STRUC2-R_REF->*` ] OPTIONAL ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,23 +1,22 @@
CLASS z2ui5_cl_core_srv_event DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
METHODS get_event
IMPORTING
!val TYPE clike OPTIONAL
!t_arg TYPE string_table OPTIONAL
!s_cnt TYPE z2ui5_if_types=>ty_s_event_control OPTIONAL
val TYPE clike OPTIONAL
t_arg TYPE string_table OPTIONAL
s_cnt TYPE z2ui5_if_types=>ty_s_event_control OPTIONAL
PREFERRED PARAMETER val
RETURNING
VALUE(result) TYPE string.
METHODS get_event_client
IMPORTING
!val TYPE clike
!t_arg TYPE string_table OPTIONAL
val TYPE clike
t_arg TYPE string_table OPTIONAL
RETURNING
VALUE(result) TYPE string.
@ -34,20 +33,18 @@ ENDCLASS.
CLASS z2ui5_cl_core_srv_event IMPLEMENTATION.
METHOD get_event.
result = |{ z2ui5_if_core_types=>cs_ui5-event_backend_function }(['{ val }'|.
IF s_cnt-check_allow_multi_req = abap_true.
result = result && `,false,true`.
result = |{ result },false,true|.
ENDIF.
result = result && `]` && get_t_arg( t_arg ).
result = |{ result }]{ get_t_arg( t_arg ) }|.
ENDMETHOD.
METHOD get_event_client.
result = |{ z2ui5_if_core_types=>cs_ui5-event_frontend_function }('{ val }'|.
@ -55,7 +52,6 @@ CLASS z2ui5_cl_core_srv_event IMPLEMENTATION.
ENDMETHOD.
METHOD get_t_arg.
IF val IS NOT INITIAL.
@ -66,14 +62,14 @@ CLASS z2ui5_cl_core_srv_event IMPLEMENTATION.
CONTINUE.
ENDIF.
IF lv_new(1) <> `$` AND lv_new(1) <> `{`.
lv_new = `'` && lv_new && `'`.
lv_new = |'{ lv_new }'|.
ENDIF.
result = result && `, ` && lv_new.
result = |{ result }, { lv_new }|.
ENDLOOP.
ENDIF.
result = result && `)`.
result = |{ result })|.
ENDMETHOD.
ENDCLASS.

View File

@ -1,25 +1,24 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION LONG
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION LONG.
PUBLIC SECTION.
METHODS event FOR TESTING.
METHODS event FOR TESTING.
METHODS event_backend FOR TESTING.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD event.
DATA(lo_event) = NEW z2ui5_cl_core_srv_event( ).
DATA(lv_event) = lo_event->get_event( `POST` ).
cl_abap_unit_assert=>assert_equals(
act = lv_event
exp = `.eB(['POST'])` ).
cl_abap_unit_assert=>assert_equals( exp = `.eB(['POST'])`
act = lv_event ).
ENDMETHOD.
@ -28,9 +27,8 @@ CLASS ltcl_test IMPLEMENTATION.
DATA(lo_event) = NEW z2ui5_cl_core_srv_event( ).
DATA(lv_event) = lo_event->get_event_client( z2ui5_if_client=>cs_event-popover_close ).
cl_abap_unit_assert=>assert_equals(
act = lv_event
exp = `.eF('POPOVER_CLOSE')` ).
cl_abap_unit_assert=>assert_equals( exp = `.eF('POPOVER_CLOSE')`
act = lv_event ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,45 +1,42 @@
CLASS z2ui5_cl_core_srv_json DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_ajson_filter .
INTERFACES z2ui5_if_ajson_filter.
METHODS request_json_to_abap
IMPORTING
val TYPE string
RETURNING
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_request .
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_request.
METHODS response_abap_to_json
IMPORTING
val TYPE z2ui5_if_core_types=>ty_s_response
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
METHODS model_front_to_back
IMPORTING
view TYPE string
t_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
model TYPE REF TO z2ui5_if_ajson .
model TYPE REF TO z2ui5_if_ajson.
METHODS model_back_to_front
IMPORTING
t_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
RETURNING
VALUE(result) TYPE string .
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
METHOD model_front_to_back.
IF line_exists( t_attri->*[ view = view ] ).
@ -49,8 +46,8 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
ENDIF.
LOOP AT t_attri->* REFERENCE INTO DATA(lr_attri)
WHERE bind_type = z2ui5_if_core_types=>cs_bind_type-two_way
AND view = lv_view.
WHERE bind_type = z2ui5_if_core_types=>cs_bind_type-two_way
AND view = lv_view.
TRY.
DATA(lo_val_front) = model->slice( lr_attri->name_client ).
@ -71,19 +68,15 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
CONTINUE.
ENDIF.
lo_val_front->to_abap(
IMPORTING
ev_container = <val> ).
lo_val_front->to_abap( IMPORTING ev_container = <val> ).
CATCH cx_root INTO DATA(x).
z2ui5_cl_util=>x_raise( |JSON_PARSING_ERROR: { x->get_text( ) } | ).
ENDTRY.
ENDLOOP.
ENDMETHOD.
METHOD model_back_to_front.
TRY.
@ -91,9 +84,11 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
LOOP AT t_attri->* REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
IF lr_attri->custom_mapper IS BOUND.
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = lr_attri->custom_mapper ) ).
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty(
ii_custom_mapping = lr_attri->custom_mapper ) ).
ELSE.
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty(
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
ENDIF.
CASE lr_attri->bind_type.
@ -105,10 +100,14 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
CONTINUE.
ENDIF.
* ASSERT sy-subrc = 0.
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = <attribute> ).
ajson->set( iv_ignore_empty = abap_false
iv_path = `/`
iv_val = <attribute> ).
WHEN z2ui5_if_core_types=>cs_bind_type-one_time.
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = lr_attri->json_bind_local ).
ajson->set( iv_ignore_empty = abap_false
iv_path = `/`
iv_val = lr_attri->json_bind_local ).
WHEN OTHERS.
ASSERT `` = `ERROR_UNKNOWN_BIND_MODE`.
@ -118,7 +117,8 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
ajson = ajson->filter( lr_attri->custom_filter ).
ENDIF.
ajson_result->set( iv_path = lr_attri->name_client iv_val = ajson ).
ajson_result->set( iv_path = lr_attri->name_client
iv_val = ajson ).
ENDLOOP.
result = ajson_result->stringify( ).
@ -129,31 +129,28 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
ENDTRY.
ENDMETHOD.
METHOD request_json_to_abap.
TRY.
DATA(lo_ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>parse( val ) ).
DATA(lv_model_edit_name) = `/` && z2ui5_if_core_types=>cs_ui5-two_way_model.
DATA(lv_model_edit_name) = |/{ z2ui5_if_core_types=>cs_ui5-two_way_model }|.
result-o_model = z2ui5_cl_ajson=>create_empty( ).
DATA(lo_model) = lo_ajson->slice( lv_model_edit_name ).
result-o_model->set( iv_path = lv_model_edit_name iv_val = lo_model ).
result-o_model->set( iv_path = lv_model_edit_name
iv_val = lo_model ).
lo_ajson->delete( lv_model_edit_name ).
lo_ajson = lo_ajson->slice( `/S_FRONT` ).
lo_ajson->to_abap(
EXPORTING
iv_corresponding = abap_true
IMPORTING
ev_container = result-s_front ).
lo_ajson->to_abap( EXPORTING iv_corresponding = abap_true
IMPORTING ev_container = result-s_front ).
result-s_front-o_comp_data = lo_ajson->slice( `/CONFIG/ComponentData` ).
result-s_control-check_launchpad = xsdbool( result-s_front-search CS `scenario=LAUNCHPAD`
OR result-s_front-pathname CS `/ui2/flp`
OR result-s_front-pathname CS `test/flpSandbox`
result-s_control-check_launchpad = xsdbool( result-s_front-search CS `scenario=LAUNCHPAD`
OR result-s_front-pathname CS `/ui2/flp`
OR result-s_front-pathname CS `test/flpSandbox`
).
IF result-s_front-id IS NOT INITIAL.
RETURN.
@ -175,37 +172,36 @@ CLASS z2ui5_cl_core_srv_json IMPLEMENTATION.
ENDIF.
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper(
z2ui5_cl_util=>url_param_get( val = `app_start` url = result-s_front-search ) ).
z2ui5_cl_util=>url_param_get( val = `app_start`
url = result-s_front-search ) ).
CATCH cx_root INTO DATA(x).
RAISE EXCEPTION TYPE z2ui5_cx_util_error
EXPORTING
val = x.
EXPORTING val = x.
ENDTRY.
ENDMETHOD.
METHOD response_abap_to_json.
TRY.
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty(
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
ajson_result->set( iv_path = `/` iv_val = val-s_front ).
ajson_result->set( iv_path = `/`
iv_val = val-s_front ).
ajson_result = ajson_result->filter( NEW z2ui5_cl_core_srv_json( ) ).
DATA(lv_frontend) = ajson_result->stringify( ).
result = `{` &&
result = |\{| &&
|"S_FRONT":{ lv_frontend },| &&
|"MODEL":{ val-model }| &&
`}`.
|\}|.
CATCH cx_root INTO DATA(x).
ASSERT x IS NOT BOUND.
ENDTRY.
ENDMETHOD.
METHOD z2ui5_if_ajson_filter~keep_node.
rv_keep = abap_true.

View File

@ -1,6 +1,5 @@
CLASS ltcl_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
CLASS ltcl_test DEFINITION FINAL
FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
PRIVATE SECTION.
METHODS request_json_to_abap FOR TESTING RAISING cx_static_check.
@ -9,39 +8,32 @@ ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD request_json_to_abap.
DATA(lv_payload) = `{"XX":{"NAME":"test"},"S_FRONT":{"ID":"ID_NR","EDIT":{"NAME":"test"},"ORIGIN":"ORIGIN","PATHNAME":"PATHNAME","SEARCH":"SEARCH"` &&
`,"VIEW":"MAIN","EVENT":"BUTTON_POST","T_EVENT_ARG":[]}}`.
DATA(lv_payload) = |\{"XX":\{"NAME":"test"\},"S_FRONT":\{"ID":"ID_NR","EDIT":\{"NAME":"test"\},"ORIGIN":"ORIGIN","PATHNAME":"PATHNAME","SEARCH":"SEARCH"| &&
|,"VIEW":"MAIN","EVENT":"BUTTON_POST","T_EVENT_ARG":[]\}\}|.
DATA(lo_mapper) = NEW z2ui5_cl_core_srv_json( ).
DATA(ls_result) = lo_mapper->request_json_to_abap( lv_payload ).
DATA(ls_exp) = VALUE z2ui5_if_core_types=>ty_s_request(
s_front = VALUE #(
id = `ID_NR`
view = `MAIN`
origin = `ORIGIN`
pathname = `PATHNAME`
search = `SEARCH`
event = `BUTTON_POST` ) ).
DATA(ls_exp) = VALUE z2ui5_if_core_types=>ty_s_request( s_front = VALUE #( id = `ID_NR`
view = `MAIN`
origin = `ORIGIN`
pathname = `PATHNAME`
search = `SEARCH`
event = `BUTTON_POST` ) ).
cl_abap_unit_assert=>assert_equals(
act = ls_result-s_front
exp = ls_exp-s_front ).
cl_abap_unit_assert=>assert_equals( exp = ls_exp-s_front
act = ls_result-s_front ).
DATA(lt_tree) = VALUE z2ui5_if_ajson_types=>ty_nodes_ts( ).
lt_tree = ls_result-o_model->mt_json_tree.
cl_abap_unit_assert=>assert_equals(
act = lt_tree[ name = `NAME` ]-value
exp = `test` ).
cl_abap_unit_assert=>assert_equals( exp = `test`
act = lt_tree[ name = `NAME` ]-value ).
cl_abap_unit_assert=>assert_equals(
act = lines( lt_tree )
exp = 3 ).
cl_abap_unit_assert=>assert_equals( exp = 3
act = lines( lt_tree ) ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,7 @@
CLASS z2ui5_cl_core_srv_util DEFINITION
PUBLIC
INHERITING FROM z2ui5_cl_util
CREATE PUBLIC .
CREATE PUBLIC.
PUBLIC SECTION.
@ -19,37 +19,33 @@ CLASS z2ui5_cl_core_srv_util DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_core_srv_util IMPLEMENTATION.
METHOD app_get_url.
IF classname IS INITIAL.
classname = rtti_get_classname_by_ref( client->get_app( ) ).
ENDIF.
DATA(lv_url) = client->get( )-s_config-origin && client->get( )-s_config-pathname && `?`.
DATA(lv_url) = |{ client->get( )-s_config-origin }{ client->get( )-s_config-pathname }?|.
DATA(lt_param) = url_param_get_tab( client->get( )-s_config-search ).
DELETE lt_param WHERE n = `app_start`.
INSERT VALUE #( n = `app_start` v = to_lower( classname ) ) INTO TABLE lt_param.
INSERT VALUE #( n = `app_start`
v = to_lower( classname ) ) INTO TABLE lt_param.
result = lv_url && url_param_create_url( lt_param ) && client->get( )-s_config-hash.
result = lv_url && url_param_create_url( lt_param ) && client->get( )-s_config-hash.
ENDMETHOD.
METHOD app_get_url_source_code.
DATA(ls_config) = client->get( )-s_config.
result = ls_config-origin && `/sap/bc/adt/oo/classes/`
&& rtti_get_classname_by_ref( client->get_app( ) ) && `/source/main`.
result = |{ ls_config-origin }/sap/bc/adt/oo/classes/|
&& |{ rtti_get_classname_by_ref( client->get_app( ) ) }/source/main|.
ENDMETHOD.
ENDCLASS.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_app_xml DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,24 +9,23 @@ CLASS z2ui5_cl_app_app_xml DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_app_xml IMPLEMENTATION.
METHOD get.
result = `<mvc:View controllerName="z2ui5.controller.App"` &&
` xmlns:html="http://www.w3.org/1999/xhtml"` &&
` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` &&
` xmlns="sap.m">` &&
` <App id="app">` &&
` </App>` &&
`</mvc:View>` &&
`` &&
``.
result = |<mvc:View controllerName="z2ui5.controller.App"| &&
| xmlns:html="http://www.w3.org/1999/xhtml"| &&
| xmlns:mvc="sap.ui.core.mvc" displayBlock="true"| &&
| xmlns="sap.m">| &&
| <App id="app">| &&
| </App>| &&
|</mvc:View>| &&
|| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_component_js DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,77 +9,76 @@ CLASS z2ui5_cl_app_component_js DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_component_js IMPLEMENTATION.
METHOD get.
result = `sap.ui.define(["sap/ui/core/UIComponent", "z2ui5/model/models",` && |\n| &&
` "z2ui5/cc/DebugTool","z2ui5/cc/Server", "sap/base/Log","sap/ui/VersionInfo"` && |\n| &&
`` && |\n| &&
` ], function (UIComponent, models, DebugTool, Server, Log, VersionInfo) {` && |\n| &&
` return UIComponent.extend("z2ui5.Component", {` && |\n| &&
` metadata: {` && |\n| &&
` manifest: "json"` && |\n| &&
` },` && |\n| &&
` init: async function () {` && |\n| &&
`` && |\n| &&
` UIComponent.prototype.init.apply(this, arguments);` && |\n| &&
`` && |\n| &&
` this.getRouter().initialize();` && |\n| &&
` z2ui5.oRouter = this.getRouter();` && |\n| &&
` this.setModel(models.createDeviceModel(), "device");` && |\n| &&
` this._oLogger = Log.getLogger("abap2UI5");` && |\n| &&
`` && |\n| &&
` z2ui5.oConfig = {};` && |\n| &&
` z2ui5.oConfig.ComponentData = this.getComponentData();` && |\n| &&
`` && |\n| &&
` try {` && |\n| &&
` z2ui5.oLaunchpadService = await this.getService("ShellUIService");` && |\n| &&
` } catch (e) {}` && |\n| &&
`` && |\n| &&
` let oVersionInfo = await VersionInfo.load();` && |\n| &&
` z2ui5.oConfig.UI5VersionInfo = {` && |\n| &&
` version : oVersionInfo.version,` && |\n| &&
` buildTimestamp : oVersionInfo.buildTimestamp,` && |\n| &&
` gav : oVersionInfo.gav,` && |\n| &&
` }` && |\n| &&
`` && |\n| &&
` if (/iPad|iPhone/.test(navigator.platform)) {` && |\n| &&
` window.addEventListener("__pagehide", this.__pagehide.bind(this));` && |\n| &&
` } else {` && |\n| &&
` window.addEventListener("__beforeunload", this.__beforeunload.bind(this));` && |\n| &&
` }` && |\n| &&
`` && |\n| &&
` document.addEventListener("keydown", function (zEvent) {` && |\n| &&
` if (zEvent?.key === "F12") {` && |\n| &&
` new z2ui5.cc.DebugTool().show();` && |\n| &&
` }` && |\n| &&
` });` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` __beforeunload: function () {` && |\n| &&
` window.removeEventListener("__beforeunload", this.__beforeunload.bind(this));` && |\n| &&
` this.destroy();` && |\n| &&
` },` && |\n| &&
` __pagehide: function () {` && |\n| &&
` window.removeEventListener("__pagehide", this.__pagehide.bind(this));` && |\n| &&
` this.destroy();` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` exit: function () {` && |\n| &&
` Server.endSession();` && |\n| &&
` if (UIComponent.prototype.exit)` && |\n| &&
` UIComponent.prototype.exit.apply(this, arguments);` && |\n| &&
` },` && |\n| &&
` });` && |\n| &&
`});` && |\n| &&
`` && |\n| &&
``.
result = |sap.ui.define(["sap/ui/core/UIComponent", "z2ui5/model/models",| && |\n| &&
| "z2ui5/cc/DebugTool","z2ui5/cc/Server", "sap/base/Log","sap/ui/VersionInfo"| && |\n| &&
|| && |\n| &&
| ], function (UIComponent, models, DebugTool, Server, Log, VersionInfo) \{| && |\n| &&
| return UIComponent.extend("z2ui5.Component", \{| && |\n| &&
| metadata: \{| && |\n| &&
| manifest: "json"| && |\n| &&
| \},| && |\n| &&
| init: async function () \{| && |\n| &&
|| && |\n| &&
| UIComponent.prototype.init.apply(this, arguments);| && |\n| &&
|| && |\n| &&
| this.getRouter().initialize();| && |\n| &&
| z2ui5.oRouter = this.getRouter();| && |\n| &&
| this.setModel(models.createDeviceModel(), "device");| && |\n| &&
| this._oLogger = Log.getLogger("abap2UI5");| && |\n| &&
|| && |\n| &&
| z2ui5.oConfig = \{\};| && |\n| &&
| z2ui5.oConfig.ComponentData = this.getComponentData();| && |\n| &&
|| && |\n| &&
| try \{| && |\n| &&
| z2ui5.oLaunchpadService = await this.getService("ShellUIService");| && |\n| &&
| \} catch (e) \{\}| && |\n| &&
|| && |\n| &&
| let oVersionInfo = await VersionInfo.load();| && |\n| &&
| z2ui5.oConfig.UI5VersionInfo = \{| && |\n| &&
| version : oVersionInfo.version,| && |\n| &&
| buildTimestamp : oVersionInfo.buildTimestamp,| && |\n| &&
| gav : oVersionInfo.gav,| && |\n| &&
| \}| && |\n| &&
|| && |\n| &&
| if (/iPad\|iPhone/.test(navigator.platform)) \{| && |\n| &&
| window.addEventListener("__pagehide", this.__pagehide.bind(this));| && |\n| &&
| \} else \{| && |\n| &&
| window.addEventListener("__beforeunload", this.__beforeunload.bind(this));| && |\n| &&
| \}| && |\n| &&
|| && |\n| &&
| document.addEventListener("keydown", function (zEvent) \{| && |\n| &&
| if (zEvent?.key === "F12") \{| && |\n| &&
| new z2ui5.cc.DebugTool().show();| && |\n| &&
| \}| && |\n| &&
| \});| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| __beforeunload: function () \{| && |\n| &&
| window.removeEventListener("__beforeunload", this.__beforeunload.bind(this));| && |\n| &&
| this.destroy();| && |\n| &&
| \},| && |\n| &&
| __pagehide: function () \{| && |\n| &&
| window.removeEventListener("__pagehide", this.__pagehide.bind(this));| && |\n| &&
| this.destroy();| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| exit: function () \{| && |\n| &&
| Server.endSession();| && |\n| &&
| if (UIComponent.prototype.exit)| && |\n| &&
| UIComponent.prototype.exit.apply(this, arguments);| && |\n| &&
| \},| && |\n| &&
| \});| && |\n| &&
|\});| && |\n| &&
|| && |\n| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_debugtool_js DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,159 +9,158 @@ CLASS z2ui5_cl_app_debugtool_js DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_debugtool_js IMPLEMENTATION.
METHOD get.
result = `sap.ui.define(["sap/ui/core/Control", "sap/ui/core/Fragment", "sap/ui/model/json/JSONModel"], (Control, Fragment, JSONModel) => {` && |\n| &&
` "use strict";` && |\n| &&
`` && |\n| &&
` return Control.extend("z2ui5.cc.DebugTool", {` && |\n| &&
`` && |\n| &&
` //printer XML` && |\n| &&
` prettifyXml: function (sourceXml) {` && |\n| &&
` const xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');` && |\n| &&
` var sParse = ``&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;` && |\n| &&
` &lt;xsl:strip-space elements="*" /&gt;` && |\n| &&
` &lt;xsl:template match="para[content-style][not(text())]"&gt;` && |\n| &&
` &lt;xsl:value-of select="normalize-space(.)" /&gt;` && |\n| &&
` &lt;/xsl:template&gt;` && |\n| &&
` &lt;xsl:template match="node()|@*"&gt;` && |\n| &&
` &lt;xsl:copy&gt;` && |\n| &&
` &lt;xsl:apply-templates select="node()|@*" /&gt;` && |\n| &&
` &lt;/xsl:copy&gt;` && |\n| &&
` &lt;/xsl:template&gt;` && |\n| &&
` &lt;xsl:output indent="yes" /&gt;` && |\n| &&
` &lt;/xsl:stylesheet&gt;``;` && |\n| &&
` sParse = sParse.replace(/&gt;/g, unescape("%3E")).replace(/&lt;/g, unescape("%3C"));` && |\n| &&
` const xsltDoc = new DOMParser().parseFromString(sParse, 'application/xml');` && |\n| &&
`` && |\n| &&
` const xsltProcessor = new XSLTProcessor();` && |\n| &&
` xsltProcessor.importStylesheet(xsltDoc);` && |\n| &&
` const resultDoc = xsltProcessor.transformToDocument(xmlDoc);` && |\n| &&
` const resultXml = new XMLSerializer().serializeToString(resultDoc);` && |\n| &&
` return resultXml.replace(/&gt;/g, ">").replace(/&lt;/g, "<");` && |\n| &&
` }, onItemSelect: function (oEvent) {` && |\n| &&
` const selItem = oEvent.getSource().getSelectedKey();` && |\n| &&
` const oView = z2ui5?.oView;` && |\n| &&
` const oResponse = z2ui5?.oResponse;` && |\n| &&
` const displayEditor = this.displayEditor.bind(this);` && |\n| &&
`` && |\n| &&
` switch (selItem) {` && |\n| &&
` case 'CONFIG':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5.oConfig, null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'MODEL':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(oView?.getModel()?.getData(), null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'VIEW':` && |\n| &&
` const viewContent = oView?.mProperties?.viewContent || z2ui5.responseData.S_FRONT.PARAMS.S_VIEW.XML;` && |\n| &&
` displayEditor(oEvent, this.prettifyXml(viewContent), 'xml', this.prettifyXml(oView?._xContent.outerHTML));` && |\n| &&
` break;` && |\n| &&
` case 'PLAIN':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5.responseData, null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'REQUEST':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5.oBody, null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'POPUP':` && |\n| &&
` displayEditor(oEvent, this.prettifyXml(oResponse?.PARAMS?.S_POPUP?.XML), 'xml');` && |\n| &&
` break;` && |\n| &&
` case 'POPUP_MODEL':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5.oViewPopup.getModel().getData(), null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'POPOVER':` && |\n| &&
` displayEditor(oEvent, oResponse?.PARAMS?.S_POPOVER?.XML, 'xml');` && |\n| &&
` break;` && |\n| &&
` case 'POPOVER_MODEL':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5?.oViewPopover?.getModel()?.getData(), null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'NEST1':` && |\n| &&
` displayEditor(oEvent, this.prettifyXml(z2ui5?.oViewNest?.mProperties?.viewContent), 'xml', this.prettifyXml(z2ui5?.oViewNest?._xContent.outerHTML));` && |\n| &&
` break;` && |\n| &&
` case 'NEST1_MODEL':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5?.oViewNest?.getModel()?.getData(), null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'NEST2':` && |\n| &&
` displayEditor(oEvent, this.prettifyXml(z2ui5?.oViewNest2?.mProperties?.viewContent), 'xml', this.prettifyXml(z2ui5?.oViewNest2?._xContent.outerHTML));` && |\n| &&
` break;` && |\n| &&
` case 'NEST2_MODEL':` && |\n| &&
` displayEditor(oEvent, JSON.stringify(z2ui5?.oViewNest2?.getModel()?.getData(), null, 3), 'json');` && |\n| &&
` break;` && |\n| &&
` case 'SOURCE':` && |\n| &&
` const parent = oEvent.getSource().getParent();` && |\n| &&
` const contentControl = parent.getContent()[2].getItems()[0];` && |\n| &&
` const url = ``${window.location.origin}/sap/bc/adt/oo/classes/${z2ui5.responseData.S_FRONT.APP}/source/main``;` && |\n| &&
` const content = atob('PGlmcmFtZSBpZD0idGVzdCIgc3JjPSInICsgdXJsICsgJyIgaGVpZ2h0PSI4MDBweCIgd2lkdGg9IjEyMDBweCIgLz4=').replace("' + url + '", url);` && |\n| &&
` contentControl.setProperty("content", content);` && |\n| &&
` const modelData = oEvent.getSource().getModel().oData;` && |\n| &&
` modelData.editor_visible = false;` && |\n| &&
` modelData.source_visible = true;` && |\n| &&
` oEvent.getSource().getModel().refresh();` && |\n| &&
` break;` && |\n| &&
` }` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` displayEditor: function (oEvent, content, type, xcontent = "") {` && |\n| &&
` const modelData = oEvent.getSource().getModel().oData;` && |\n| &&
` modelData.editor_visible = true;` && |\n| &&
` modelData.source_visible = false;` && |\n| &&
` modelData.isTemplating = content.includes("xmlns:template");` && |\n| &&
` modelData.value = content;` && |\n| &&
` modelData.previousValue = content;` && |\n| &&
` modelData.xContent = xcontent;` && |\n| &&
` modelData.type = type;` && |\n| &&
` oEvent.getSource().getModel().refresh();` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` onTemplatingPress: function (oEvent) {` && |\n| &&
` const modelData = oEvent.getSource().getModel().oData;` && |\n| &&
` modelData.value = oEvent.getSource().getPressed() ? modelData.xContent : modelData.previousValue;` && |\n| &&
` oEvent.getSource().getModel().refresh();` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` onClose: function () {` && |\n| &&
` this.oDialog.close();` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` async show() {` && |\n| &&
` if (!this.oDialog) {` && |\n| &&
` this.oDialog = await Fragment.load({` && |\n| &&
` name: "z2ui5.cc.DebugTool",` && |\n| &&
` controller: this,` && |\n| &&
` });` && |\n| &&
` }` && |\n| &&
`` && |\n| &&
` const value = JSON.stringify(z2ui5.responseData, null, 3);` && |\n| &&
` const oData = {` && |\n| &&
` type: 'json',` && |\n| &&
` source_visible: false,` && |\n| &&
` editor_visible: true,` && |\n| &&
` value: value,` && |\n| &&
` xContent: '',` && |\n| &&
` previousValue: value,` && |\n| &&
` isTemplating: false,` && |\n| &&
` templatingSource: false,` && |\n| &&
` activeNest1: z2ui5?.oViewNest?.mProperties?.viewContent !== undefined,` && |\n| &&
` activeNest2: z2ui5?.oViewNest2?.mProperties?.viewContent !== undefined,` && |\n| &&
` activePopup: z2ui5?.oResponse?.PARAMS?.S_POPUP?.XML !== undefined,` && |\n| &&
` activePopover: z2ui5?.oResponse?.PARAMS?.S_POPOVER?.XML !== undefined,` && |\n| &&
` };` && |\n| &&
` const oModel = new JSONModel(oData);` && |\n| &&
`` && |\n| &&
` this.oDialog.addStyleClass('dbg-ltr');` && |\n| &&
` this.oDialog.setModel(oModel);` && |\n| &&
` this.oDialog.open();` && |\n| &&
` }` && |\n| &&
` });` && |\n| &&
`});` && |\n| &&
`` && |\n| &&
``.
result = |sap.ui.define(["sap/ui/core/Control", "sap/ui/core/Fragment", "sap/ui/model/json/JSONModel"], (Control, Fragment, JSONModel) => \{| && |\n| &&
| "use strict";| && |\n| &&
|| && |\n| &&
| return Control.extend("z2ui5.cc.DebugTool", \{| && |\n| &&
|| && |\n| &&
| //printer XML| && |\n| &&
| prettifyXml: function (sourceXml) \{| && |\n| &&
| const xmlDoc = new DOMParser().parseFromString(sourceXml, 'application/xml');| && |\n| &&
| var sParse = `&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;| && |\n| &&
| &lt;xsl:strip-space elements="*" /&gt;| && |\n| &&
| &lt;xsl:template match="para[content-style][not(text())]"&gt;| && |\n| &&
| &lt;xsl:value-of select="normalize-space(.)" /&gt;| && |\n| &&
| &lt;/xsl:template&gt;| && |\n| &&
| &lt;xsl:template match="node()\|@*"&gt;| && |\n| &&
| &lt;xsl:copy&gt;| && |\n| &&
| &lt;xsl:apply-templates select="node()\|@*" /&gt;| && |\n| &&
| &lt;/xsl:copy&gt;| && |\n| &&
| &lt;/xsl:template&gt;| && |\n| &&
| &lt;xsl:output indent="yes" /&gt;| && |\n| &&
| &lt;/xsl:stylesheet&gt;`;| && |\n| &&
| sParse = sParse.replace(/&gt;/g, unescape("%3E")).replace(/&lt;/g, unescape("%3C"));| && |\n| &&
| const xsltDoc = new DOMParser().parseFromString(sParse, 'application/xml');| && |\n| &&
|| && |\n| &&
| const xsltProcessor = new XSLTProcessor();| && |\n| &&
| xsltProcessor.importStylesheet(xsltDoc);| && |\n| &&
| const resultDoc = xsltProcessor.transformToDocument(xmlDoc);| && |\n| &&
| const resultXml = new XMLSerializer().serializeToString(resultDoc);| && |\n| &&
| return resultXml.replace(/&gt;/g, ">").replace(/&lt;/g, "<");| && |\n| &&
| \}, onItemSelect: function (oEvent) \{| && |\n| &&
| const selItem = oEvent.getSource().getSelectedKey();| && |\n| &&
| const oView = z2ui5?.oView;| && |\n| &&
| const oResponse = z2ui5?.oResponse;| && |\n| &&
| const displayEditor = this.displayEditor.bind(this);| && |\n| &&
|| && |\n| &&
| switch (selItem) \{| && |\n| &&
| case 'CONFIG':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5.oConfig, null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'MODEL':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(oView?.getModel()?.getData(), null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'VIEW':| && |\n| &&
| const viewContent = oView?.mProperties?.viewContent \|\| z2ui5.responseData.S_FRONT.PARAMS.S_VIEW.XML;| && |\n| &&
| displayEditor(oEvent, this.prettifyXml(viewContent), 'xml', this.prettifyXml(oView?._xContent.outerHTML));| && |\n| &&
| break;| && |\n| &&
| case 'PLAIN':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5.responseData, null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'REQUEST':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5.oBody, null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'POPUP':| && |\n| &&
| displayEditor(oEvent, this.prettifyXml(oResponse?.PARAMS?.S_POPUP?.XML), 'xml');| && |\n| &&
| break;| && |\n| &&
| case 'POPUP_MODEL':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5.oViewPopup.getModel().getData(), null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'POPOVER':| && |\n| &&
| displayEditor(oEvent, oResponse?.PARAMS?.S_POPOVER?.XML, 'xml');| && |\n| &&
| break;| && |\n| &&
| case 'POPOVER_MODEL':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5?.oViewPopover?.getModel()?.getData(), null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'NEST1':| && |\n| &&
| displayEditor(oEvent, this.prettifyXml(z2ui5?.oViewNest?.mProperties?.viewContent), 'xml', this.prettifyXml(z2ui5?.oViewNest?._xContent.outerHTML));| && |\n| &&
| break;| && |\n| &&
| case 'NEST1_MODEL':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5?.oViewNest?.getModel()?.getData(), null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'NEST2':| && |\n| &&
| displayEditor(oEvent, this.prettifyXml(z2ui5?.oViewNest2?.mProperties?.viewContent), 'xml', this.prettifyXml(z2ui5?.oViewNest2?._xContent.outerHTML));| && |\n| &&
| break;| && |\n| &&
| case 'NEST2_MODEL':| && |\n| &&
| displayEditor(oEvent, JSON.stringify(z2ui5?.oViewNest2?.getModel()?.getData(), null, 3), 'json');| && |\n| &&
| break;| && |\n| &&
| case 'SOURCE':| && |\n| &&
| const parent = oEvent.getSource().getParent();| && |\n| &&
| const contentControl = parent.getContent()[2].getItems()[0];| && |\n| &&
| const url = `$\{window.location.origin\}/sap/bc/adt/oo/classes/$\{z2ui5.responseData.S_FRONT.APP\}/source/main`;| && |\n| &&
| const content = atob('PGlmcmFtZSBpZD0idGVzdCIgc3JjPSInICsgdXJsICsgJyIgaGVpZ2h0PSI4MDBweCIgd2lkdGg9IjEyMDBweCIgLz4=').replace("' + url + '", url);| && |\n| &&
| contentControl.setProperty("content", content);| && |\n| &&
| const modelData = oEvent.getSource().getModel().oData;| && |\n| &&
| modelData.editor_visible = false;| && |\n| &&
| modelData.source_visible = true;| && |\n| &&
| oEvent.getSource().getModel().refresh();| && |\n| &&
| break;| && |\n| &&
| \}| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| displayEditor: function (oEvent, content, type, xcontent = "") \{| && |\n| &&
| const modelData = oEvent.getSource().getModel().oData;| && |\n| &&
| modelData.editor_visible = true;| && |\n| &&
| modelData.source_visible = false;| && |\n| &&
| modelData.isTemplating = content.includes("xmlns:template");| && |\n| &&
| modelData.value = content;| && |\n| &&
| modelData.previousValue = content;| && |\n| &&
| modelData.xContent = xcontent;| && |\n| &&
| modelData.type = type;| && |\n| &&
| oEvent.getSource().getModel().refresh();| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| onTemplatingPress: function (oEvent) \{| && |\n| &&
| const modelData = oEvent.getSource().getModel().oData;| && |\n| &&
| modelData.value = oEvent.getSource().getPressed() ? modelData.xContent : modelData.previousValue;| && |\n| &&
| oEvent.getSource().getModel().refresh();| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| onClose: function () \{| && |\n| &&
| this.oDialog.close();| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| async show() \{| && |\n| &&
| if (!this.oDialog) \{| && |\n| &&
| this.oDialog = await Fragment.load(\{| && |\n| &&
| name: "z2ui5.cc.DebugTool",| && |\n| &&
| controller: this,| && |\n| &&
| \});| && |\n| &&
| \}| && |\n| &&
|| && |\n| &&
| const value = JSON.stringify(z2ui5.responseData, null, 3);| && |\n| &&
| const oData = \{| && |\n| &&
| type: 'json',| && |\n| &&
| source_visible: false,| && |\n| &&
| editor_visible: true,| && |\n| &&
| value: value,| && |\n| &&
| xContent: '',| && |\n| &&
| previousValue: value,| && |\n| &&
| isTemplating: false,| && |\n| &&
| templatingSource: false,| && |\n| &&
| activeNest1: z2ui5?.oViewNest?.mProperties?.viewContent !== undefined,| && |\n| &&
| activeNest2: z2ui5?.oViewNest2?.mProperties?.viewContent !== undefined,| && |\n| &&
| activePopup: z2ui5?.oResponse?.PARAMS?.S_POPUP?.XML !== undefined,| && |\n| &&
| activePopover: z2ui5?.oResponse?.PARAMS?.S_POPOVER?.XML !== undefined,| && |\n| &&
| \};| && |\n| &&
| const oModel = new JSONModel(oData);| && |\n| &&
|| && |\n| &&
| this.oDialog.addStyleClass('dbg-ltr');| && |\n| &&
| this.oDialog.setModel(oModel);| && |\n| &&
| this.oDialog.open();| && |\n| &&
| \}| && |\n| &&
| \});| && |\n| &&
|\});| && |\n| &&
|| && |\n| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_debugtool_xml DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,121 +9,120 @@ CLASS z2ui5_cl_app_debugtool_xml DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_debugtool_xml IMPLEMENTATION.
METHOD get.
result = `<core:FragmentDefinition` &&
` xmlns="sap.m"` &&
` xmlns:mvc="sap.ui.core.mvc"` &&
` xmlns:core="sap.ui.core"` &&
` xmlns:html="http://www.w3.org/1999/xhtml"` &&
` xmlns:ce="sap.ui.codeeditor"` &&
`>` &&
` <Dialog` &&
` title="abap2UI5 - DebugTool"` &&
` stretch="true"` &&
` >` &&
` <IconTabHeader` &&
` selectedKey="PLAIN"` &&
` select="onItemSelect"` &&
` >` &&
` <items>` &&
` <IconTabFilter` &&
` text="Config"` &&
` key="CONFIG"` &&
` enabled="true"` &&
` />` &&
` <IconTabFilter` &&
` text="Previous Request"` &&
` key="REQUEST"` &&
` enabled="true"` &&
` />` &&
` <IconTabFilter` &&
` text="Response"` &&
` key="PLAIN"` &&
` />` &&
` <IconTabFilter` &&
` text="Source Code"` &&
` key="SOURCE"` &&
` />` &&
` <IconTabFilter` &&
` text="View"` &&
` key="VIEW"` &&
` />` &&
` <IconTabFilter` &&
` text="View Model"` &&
` key="MODEL"` &&
` />` &&
` <IconTabFilter` &&
` text="Popup"` &&
` key="POPUP"` &&
` enabled="{/activePopup}"` &&
` />` &&
` <IconTabFilter` &&
` text="Popup Model"` &&
` key="POPUP_MODEL"` &&
` enabled="{/activePopup}"` &&
` />` &&
` <IconTabFilter` &&
` text="Popover"` &&
` key="POPOVER"` &&
` enabled="{/activePopover}"` &&
` />` &&
` <IconTabFilter` &&
` text="Popover Model"` &&
` key="POPOVER_MODEL"` &&
` enabled="{/activePopover}"` &&
` />` &&
` <IconTabFilter` &&
` text="Nest1"` &&
` key="NEST1"` &&
` enabled="{/activeNest1}"` &&
` />` &&
` <IconTabFilter` &&
` text="Nest1 Model"` &&
` key="NEST1_MODEL"` &&
` enabled="{/activeNest1}"` &&
` />` &&
` <IconTabFilter` &&
` text="Nest2"` &&
` key="NEST2"` &&
` enabled="{/activeNest2}"` &&
` />` &&
` <IconTabFilter` &&
` text="Nest2 Model"` &&
` key="NEST2_MODEL"` &&
` enabled="{/activeNest2}"` &&
` />` &&
` </items>` &&
` </IconTabHeader>` &&
` <VBox>` &&
` <ToggleButton text="Source XML after Templating" visible="{/isTemplating}" pressed="{/templatingSource}" press="onTemplatingPress" />` &&
` <ce:CodeEditor` &&
` type="{/type}"` &&
` value="{/value}"` &&
` height="2000px"` &&
` width="10000px"` &&
` visible="{/editor_visible}"` &&
` /></VBox>` &&
` <VBox visible="{/source_visible}">` &&
` <core:HTML/>` &&
` </VBox>` &&
` <endButton>` &&
` <Button` &&
` text="Close"` &&
` press="onClose"` &&
` />` &&
` </endButton>` &&
` </Dialog>` &&
`</core:FragmentDefinition>` &&
`` &&
``.
result = |<core:FragmentDefinition| &&
| xmlns="sap.m"| &&
| xmlns:mvc="sap.ui.core.mvc"| &&
| xmlns:core="sap.ui.core"| &&
| xmlns:html="http://www.w3.org/1999/xhtml"| &&
| xmlns:ce="sap.ui.codeeditor"| &&
|>| &&
| <Dialog| &&
| title="abap2UI5 - DebugTool"| &&
| stretch="true"| &&
| >| &&
| <IconTabHeader| &&
| selectedKey="PLAIN"| &&
| select="onItemSelect"| &&
| >| &&
| <items>| &&
| <IconTabFilter| &&
| text="Config"| &&
| key="CONFIG"| &&
| enabled="true"| &&
| />| &&
| <IconTabFilter| &&
| text="Previous Request"| &&
| key="REQUEST"| &&
| enabled="true"| &&
| />| &&
| <IconTabFilter| &&
| text="Response"| &&
| key="PLAIN"| &&
| />| &&
| <IconTabFilter| &&
| text="Source Code"| &&
| key="SOURCE"| &&
| />| &&
| <IconTabFilter| &&
| text="View"| &&
| key="VIEW"| &&
| />| &&
| <IconTabFilter| &&
| text="View Model"| &&
| key="MODEL"| &&
| />| &&
| <IconTabFilter| &&
| text="Popup"| &&
| key="POPUP"| &&
| enabled="\{/activePopup\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Popup Model"| &&
| key="POPUP_MODEL"| &&
| enabled="\{/activePopup\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Popover"| &&
| key="POPOVER"| &&
| enabled="\{/activePopover\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Popover Model"| &&
| key="POPOVER_MODEL"| &&
| enabled="\{/activePopover\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Nest1"| &&
| key="NEST1"| &&
| enabled="\{/activeNest1\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Nest1 Model"| &&
| key="NEST1_MODEL"| &&
| enabled="\{/activeNest1\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Nest2"| &&
| key="NEST2"| &&
| enabled="\{/activeNest2\}"| &&
| />| &&
| <IconTabFilter| &&
| text="Nest2 Model"| &&
| key="NEST2_MODEL"| &&
| enabled="\{/activeNest2\}"| &&
| />| &&
| </items>| &&
| </IconTabHeader>| &&
| <VBox>| &&
| <ToggleButton text="Source XML after Templating" visible="\{/isTemplating\}" pressed="\{/templatingSource\}" press="onTemplatingPress" />| &&
| <ce:CodeEditor| &&
| type="\{/type\}"| &&
| value="\{/value\}"| &&
| height="2000px"| &&
| width="10000px"| &&
| visible="\{/editor_visible\}"| &&
| /></VBox>| &&
| <VBox visible="\{/source_visible\}">| &&
| <core:HTML/>| &&
| </VBox>| &&
| <endButton>| &&
| <Button| &&
| text="Close"| &&
| press="onClose"| &&
| />| &&
| </endButton>| &&
| </Dialog>| &&
|</core:FragmentDefinition>| &&
|| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_index_html DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,51 +9,50 @@ CLASS z2ui5_cl_app_index_html DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_index_html IMPLEMENTATION.
METHOD get.
result = `<!DOCTYPE html>` &&
`<html lang="en">` &&
`<head>` &&
` <meta charset="UTF-8">` &&
` <meta name="viewport" content="width=device-width, initial-scale=1.0">` &&
` <meta http-equiv="X-UA-Compatible" content="IE=edge">` &&
` <title></title>` &&
` <style>` &&
` html, body, body > div, #container, #container-uiarea {` &&
` height: 100%;` &&
` }` &&
` </style>` &&
` <script` &&
` id="sap-ui-bootstrap"` &&
` src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"` &&
` data-sap-ui-theme="sap_horizon"` &&
` data-sap-ui-resourceroots='{` &&
` "z2ui5": "./"` &&
` }'` &&
` data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"` &&
` data-sap-ui-compatVersion="edge"` &&
` data-sap-ui-async="true"` &&
` data-sap-ui-frameOptions="trusted"` &&
` ></script>` &&
`</head>` &&
`<body class="sapUiBody sapUiSizeCompact" id="content">` &&
` <div` &&
` data-sap-ui-component` &&
` data-name="z2ui5"` &&
` data-id="container"` &&
` data-settings='{"id" : "z2ui5"}'` &&
` data-handle-validation="true"` &&
` ></div>` &&
`</body>` &&
`</html>` &&
``.
result = |<!DOCTYPE html>| &&
|<html lang="en">| &&
|<head>| &&
| <meta charset="UTF-8">| &&
| <meta name="viewport" content="width=device-width, initial-scale=1.0">| &&
| <meta http-equiv="X-UA-Compatible" content="IE=edge">| &&
| <title></title>| &&
| <style>| &&
| html, body, body > div, #container, #container-uiarea \{| &&
| height: 100%;| &&
| \}| &&
| </style>| &&
| <script| &&
| id="sap-ui-bootstrap"| &&
| src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"| &&
| data-sap-ui-theme="sap_horizon"| &&
| data-sap-ui-resourceroots='\{| &&
| "z2ui5": "./"| &&
| \}'| &&
| data-sap-ui-oninit="module:sap/ui/core/ComponentSupport"| &&
| data-sap-ui-compatVersion="edge"| &&
| data-sap-ui-async="true"| &&
| data-sap-ui-frameOptions="trusted"| &&
| ></script>| &&
|</head>| &&
|<body class="sapUiBody sapUiSizeCompact" id="content">| &&
| <div| &&
| data-sap-ui-component| &&
| data-name="z2ui5"| &&
| data-id="container"| &&
| data-settings='\{"id" : "z2ui5"\}'| &&
| data-handle-validation="true"| &&
| ></div>| &&
|</body>| &&
|</html>| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_manifest_json DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,160 +9,159 @@ CLASS z2ui5_cl_app_manifest_json DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_manifest_json IMPLEMENTATION.
METHOD get.
result = `{` &&
` "_version": "1.65.0",` &&
` "sap.app": {` &&
` "id": "z2ui5",` &&
` "type": "application",` &&
` "applicationVersion": {` &&
` "version": "0.0.1"` &&
` },` &&
` "title": "{{appTitle}}",` &&
` "description": "{{appDescription}}",` &&
` "resources": "resources.json",` &&
` "sourceTemplate": {` &&
` "id": "@sap/generator-fiori:basic",` &&
` "version": "1.15.0",` &&
` "toolsId": "3a966e20-9635-4c28-8861-d1b66f79f1de"` &&
` },` &&
` "dataSources": {` &&
` "mainService": {` &&
` "uri": "/sap/bc/z2ui5",` &&
` "type": "OData",` &&
` "settings": {` &&
` "annotations": [],` &&
` "localUri": "localService/metadata.xml",` &&
` "odataVersion": "2.0"` &&
` }` &&
` }` &&
` },` &&
` "crossNavigation": {` &&
` "inbounds": {` &&
` "z2ui5-display": {` &&
` "semanticObject": "z2ui5",` &&
` "action": "display",` &&
` "title": "{{flpTitle}}",` &&
` "signature": {` &&
` "parameters": {},` &&
` "additionalParameters": "allowed"` &&
` }` &&
` }` &&
` }` &&
` }` &&
` },` &&
` "sap.ui": {` &&
` "technology": "UI5",` &&
` "icons": {` &&
` "icon": "",` &&
` "favIcon": "",` &&
` "phone": "",` &&
` "phone@2": "",` &&
` "tablet": "",` &&
` "tablet@2": ""` &&
` },` &&
` "deviceTypes": {` &&
` "desktop": true,` &&
` "tablet": true,` &&
` "phone": true` &&
` }` &&
` },` &&
` "sap.ui5": {` &&
` "flexEnabled": true,` &&
` "dependencies": {` &&
` "minUI5Version": "1.128.1",` &&
` "libs": {` &&
` "sap.m": {},` &&
` "sap.ui.core": {}` &&
` }` &&
` },` &&
` "contentDensities": {` &&
` "compact": true,` &&
` "cozy": true` &&
` },` &&
` "services": {` &&
` "ShellUIService": {` &&
` "factoryName": "sap.ushell.ui5service.ShellUIService"` &&
` }` &&
` },` &&
` "models": {` &&
` "": {` &&
` "dataSource": "mainService",` &&
` "preload": true,` &&
` "settings": {}` &&
` }` &&
` },` &&
` "resources": {` &&
` "css": [` &&
` {` &&
` "uri": "css/style.css"` &&
` }` &&
` ]` &&
` },` &&
` "routing": {` &&
` "config": {` &&
` "routerClass": "sap.m.routing.Router",` &&
` "viewType": "XML",` &&
` "async": true,` &&
` "viewPath": "z2ui5.view",` &&
` "controlAggregation": "pages",` &&
` "controlId": "app",` &&
` "clearControlAggregation": false` &&
` },` &&
` "routes": [` &&
` {` &&
` "name": "RouteView1",` &&
` "pattern": ":?query:",` &&
` "target": [` &&
` "TargetView1"` &&
` ]` &&
` },` &&
` {` &&
` "name": "RouteView2",` &&
` "pattern": ":?query:",` &&
` "target": [` &&
` "TargetView2"` &&
` ]` &&
` }` &&
` ],` &&
` "targets": {` &&
` "TargetView1": {` &&
` "viewType": "XML",` &&
` "transition": "flip",` &&
` "clearControlAggregation": false,` &&
` "viewId": "View1",` &&
` "viewName": "View1"` &&
` },` &&
` "TargetView2": {` &&
` "viewType": "XML",` &&
` "transition": "flip",` &&
` "clearControlAggregation": false,` &&
` "viewId": "View2",` &&
` "viewName": "View2"` &&
` }` &&
` }` &&
` },` &&
` "rootView": {` &&
` "viewName": "z2ui5.view.App",` &&
` "type": "XML",` &&
` "async": true,` &&
` "id": "App"` &&
` }` &&
` },` &&
` "sap.cloud": {` &&
` "public": true,` &&
` "service": "z2ui5"` &&
` }` &&
`}` &&
``.
result = |\{| &&
| "_version": "1.65.0",| &&
| "sap.app": \{| &&
| "id": "z2ui5",| &&
| "type": "application",| &&
| "applicationVersion": \{| &&
| "version": "0.0.1"| &&
| \},| &&
| "title": "\{\{appTitle\}\}",| &&
| "description": "\{\{appDescription\}\}",| &&
| "resources": "resources.json",| &&
| "sourceTemplate": \{| &&
| "id": "@sap/generator-fiori:basic",| &&
| "version": "1.15.0",| &&
| "toolsId": "3a966e20-9635-4c28-8861-d1b66f79f1de"| &&
| \},| &&
| "dataSources": \{| &&
| "mainService": \{| &&
| "uri": "/sap/bc/z2ui5",| &&
| "type": "OData",| &&
| "settings": \{| &&
| "annotations": [],| &&
| "localUri": "localService/metadata.xml",| &&
| "odataVersion": "2.0"| &&
| \}| &&
| \}| &&
| \},| &&
| "crossNavigation": \{| &&
| "inbounds": \{| &&
| "z2ui5-display": \{| &&
| "semanticObject": "z2ui5",| &&
| "action": "display",| &&
| "title": "\{\{flpTitle\}\}",| &&
| "signature": \{| &&
| "parameters": \{\},| &&
| "additionalParameters": "allowed"| &&
| \}| &&
| \}| &&
| \}| &&
| \}| &&
| \},| &&
| "sap.ui": \{| &&
| "technology": "UI5",| &&
| "icons": \{| &&
| "icon": "",| &&
| "favIcon": "",| &&
| "phone": "",| &&
| "phone@2": "",| &&
| "tablet": "",| &&
| "tablet@2": ""| &&
| \},| &&
| "deviceTypes": \{| &&
| "desktop": true,| &&
| "tablet": true,| &&
| "phone": true| &&
| \}| &&
| \},| &&
| "sap.ui5": \{| &&
| "flexEnabled": true,| &&
| "dependencies": \{| &&
| "minUI5Version": "1.128.1",| &&
| "libs": \{| &&
| "sap.m": \{\},| &&
| "sap.ui.core": \{\}| &&
| \}| &&
| \},| &&
| "contentDensities": \{| &&
| "compact": true,| &&
| "cozy": true| &&
| \},| &&
| "services": \{| &&
| "ShellUIService": \{| &&
| "factoryName": "sap.ushell.ui5service.ShellUIService"| &&
| \}| &&
| \},| &&
| "models": \{| &&
| "": \{| &&
| "dataSource": "mainService",| &&
| "preload": true,| &&
| "settings": \{\}| &&
| \}| &&
| \},| &&
| "resources": \{| &&
| "css": [| &&
| \{| &&
| "uri": "css/style.css"| &&
| \}| &&
| ]| &&
| \},| &&
| "routing": \{| &&
| "config": \{| &&
| "routerClass": "sap.m.routing.Router",| &&
| "viewType": "XML",| &&
| "async": true,| &&
| "viewPath": "z2ui5.view",| &&
| "controlAggregation": "pages",| &&
| "controlId": "app",| &&
| "clearControlAggregation": false| &&
| \},| &&
| "routes": [| &&
| \{| &&
| "name": "RouteView1",| &&
| "pattern": ":?query:",| &&
| "target": [| &&
| "TargetView1"| &&
| ]| &&
| \},| &&
| \{| &&
| "name": "RouteView2",| &&
| "pattern": ":?query:",| &&
| "target": [| &&
| "TargetView2"| &&
| ]| &&
| \}| &&
| ],| &&
| "targets": \{| &&
| "TargetView1": \{| &&
| "viewType": "XML",| &&
| "transition": "flip",| &&
| "clearControlAggregation": false,| &&
| "viewId": "View1",| &&
| "viewName": "View1"| &&
| \},| &&
| "TargetView2": \{| &&
| "viewType": "XML",| &&
| "transition": "flip",| &&
| "clearControlAggregation": false,| &&
| "viewId": "View2",| &&
| "viewName": "View2"| &&
| \}| &&
| \}| &&
| \},| &&
| "rootView": \{| &&
| "viewName": "z2ui5.view.App",| &&
| "type": "XML",| &&
| "async": true,| &&
| "id": "App"| &&
| \}| &&
| \},| &&
| "sap.cloud": \{| &&
| "public": true,| &&
| "service": "z2ui5"| &&
| \}| &&
|\}| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_models_js DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,35 +9,34 @@ CLASS z2ui5_cl_app_models_js DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_models_js IMPLEMENTATION.
METHOD get.
result = `sap.ui.define([` && |\n| &&
` "sap/ui/model/json/JSONModel",` && |\n| &&
` "sap/ui/Device"` && |\n| &&
`],` && |\n| &&
`function (JSONModel, Device) {` && |\n| &&
` "use strict";` && |\n| &&
`` && |\n| &&
` return {` && |\n| &&
` /**` && |\n| &&
` * Provides runtime info for the device the UI5 app is running on as JSONModel` && |\n| &&
` */` && |\n| &&
` createDeviceModel: function () {` && |\n| &&
` var oModel = new JSONModel(Device);` && |\n| &&
` oModel.setDefaultBindingMode("OneWay");` && |\n| &&
` return oModel;` && |\n| &&
` }` && |\n| &&
` };` && |\n| &&
`` && |\n| &&
`});` && |\n| &&
``.
result = |sap.ui.define([| && |\n| &&
| "sap/ui/model/json/JSONModel",| && |\n| &&
| "sap/ui/Device"| && |\n| &&
|],| && |\n| &&
|function (JSONModel, Device) \{| && |\n| &&
| "use strict";| && |\n| &&
|| && |\n| &&
| return \{| && |\n| &&
| /**| && |\n| &&
| * Provides runtime info for the device the UI5 app is running on as JSONModel| && |\n| &&
| */| && |\n| &&
| createDeviceModel: function () \{| && |\n| &&
| var oModel = new JSONModel(Device);| && |\n| &&
| oModel.setDefaultBindingMode("OneWay");| && |\n| &&
| return oModel;| && |\n| &&
| \}| && |\n| &&
| \};| && |\n| &&
|| && |\n| &&
|\});| && |\n| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_server_js DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,163 +9,162 @@ CLASS z2ui5_cl_app_server_js DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_server_js IMPLEMENTATION.
METHOD get.
result = `sap.ui.define(["sap/ui/core/BusyIndicator", "sap/m/MessageBox"` && |\n| &&
`],` && |\n| &&
` function (BusyIndicator, MessageBox) {` && |\n| &&
` "use strict";` && |\n| &&
`` && |\n| &&
` return {` && |\n| &&
`` && |\n| &&
` endSession: function () {` && |\n| &&
`` && |\n| &&
` if (z2ui5.contextId) {` && |\n| &&
` fetch(z2ui5.oConfig.pathname, {` && |\n| &&
` method: 'HEAD',` && |\n| &&
` keepalive: true,` && |\n| &&
` headers: {` && |\n| &&
` 'sap-terminate': 'session',` && |\n| &&
` 'sap-contextid': z2ui5.contextId,` && |\n| &&
` 'sap-contextid-accept': 'header'` && |\n| &&
` }` && |\n| &&
` });` && |\n| &&
` delete z2ui5.contextId;` && |\n| &&
` }` && |\n| &&
`` && |\n| &&
` },` && |\n| &&
` Roundtrip() {` && |\n| &&
` z2ui5.checkTimerActive = false;` && |\n| &&
` z2ui5.checkNestAfter = false;` && |\n| &&
` z2ui5.checkNestAfter2 = false;` && |\n| &&
` let event = (args) => {` && |\n| &&
` if (args != undefined) {` && |\n| &&
` return args[0][0];` && |\n| &&
` }` && |\n| &&
` };` && |\n| &&
`` && |\n| &&
` z2ui5.oBody ??= {};` && |\n| &&
` z2ui5.oBody.S_FRONT = {` && |\n| &&
` ID: z2ui5?.oBody?.ID,` && |\n| &&
` CONFIG: z2ui5.oConfig,` && |\n| &&
` XX: z2ui5?.oBody?.XX,` && |\n| &&
` ORIGIN: window.location.origin,` && |\n| &&
` PATHNAME: window.location.pathname,` && |\n| &&
` SEARCH: (z2ui5.search) ? z2ui5.search : window.location.search,` && |\n| &&
` VIEW: z2ui5.oBody?.VIEWNAME,` && |\n| &&
` EVENT: event(z2ui5.oBody?.ARGUMENTS),` && |\n| &&
` HASH: window.location.hash,` && |\n| &&
` };` && |\n| &&
` if (z2ui5.oBody?.ARGUMENTS != undefined) {` && |\n| &&
` if (z2ui5.oBody?.ARGUMENTS.length > 0) {` && |\n| &&
` z2ui5.oBody?.ARGUMENTS.shift();` && |\n| &&
` }` && |\n| &&
` }` && |\n| &&
` z2ui5.oBody.S_FRONT.T_EVENT_ARG = z2ui5.oBody?.ARGUMENTS;` && |\n| &&
` delete z2ui5.oBody.ID;` && |\n| &&
` delete z2ui5.oBody?.VIEWNAME;` && |\n| &&
` delete z2ui5.oBody?.S_FRONT.XX;` && |\n| &&
` delete z2ui5.oBody?.ARGUMENTS;` && |\n| &&
` if (!z2ui5.oBody.S_FRONT.T_EVENT_ARG) {` && |\n| &&
` delete z2ui5.oBody.S_FRONT.T_EVENT_ARG;` && |\n| &&
` }` && |\n| &&
` if (z2ui5.oBody.S_FRONT.T_EVENT_ARG) {` && |\n| &&
` if (z2ui5.oBody.S_FRONT.T_EVENT_ARG.length == 0) {` && |\n| &&
` delete z2ui5.oBody.S_FRONT.T_EVENT_ARG;` && |\n| &&
` }` && |\n| &&
` }` && |\n| &&
` if (z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS == undefined) {` && |\n| &&
` delete z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS;` && |\n| &&
` }` && |\n| &&
` if (z2ui5.oBody.S_FRONT.SEARCH == '') {` && |\n| &&
` delete z2ui5.oBody.S_FRONT.SEARCH;` && |\n| &&
` }` && |\n| &&
` if (!z2ui5.oBody.XX) {` && |\n| &&
` delete z2ui5.oBody.XX;` && |\n| &&
` }` && |\n| &&
` this.readHttp();` && |\n| &&
` },` && |\n| &&
`` && |\n| &&
` async readHttp() {` && |\n| &&
` const response = await fetch(z2ui5.oConfig.pathname, {` && |\n| &&
` method: 'POST',` && |\n| &&
` headers: {` && |\n| &&
` 'Content-Type': 'application/json',` && |\n| &&
` 'sap-contextid-accept': 'header',` && |\n| &&
` 'sap-contextid': z2ui5.contextId` && |\n| &&
` },` && |\n| &&
` body: JSON.stringify(z2ui5.oBody)` && |\n| &&
` });` && |\n| &&
` z2ui5.contextId = response.headers.get("sap-contextid");` && |\n| &&
` if (!response.ok) {` && |\n| &&
` const responseText = await response.text();` && |\n| &&
` this.responseError(responseText);` && |\n| &&
` } else {` && |\n| &&
` const responseData = await response.json();` && |\n| &&
` z2ui5.responseData = responseData;` && |\n| &&
` this.responseSuccess({` && |\n| &&
` ID: responseData.S_FRONT.ID,` && |\n| &&
` PARAMS: responseData.S_FRONT.PARAMS,` && |\n| &&
` OVIEWMODEL: responseData.MODEL,` && |\n| &&
` });` && |\n| &&
` }` && |\n| &&
` },` && |\n| &&
` async responseSuccess(response) {` && |\n| &&
` try {` && |\n| &&
` z2ui5.oResponse = response;` && |\n| &&
` if (z2ui5.oResponse.PARAMS?.S_VIEW?.CHECK_DESTROY) {` && |\n| &&
` z2ui5.oController.ViewDestroy();` && |\n| &&
` }` && |\n| &&
` ; if (z2ui5.oResponse.PARAMS?.S_FOLLOW_UP_ACTION?.CUSTOM_JS) {` && |\n| &&
` setTimeout(() => {` && |\n| &&
` let mParams = z2ui5.oResponse?.PARAMS.S_FOLLOW_UP_ACTION.CUSTOM_JS.split("'");` && |\n| &&
` let mParamsEF = mParams.filter((val, index) => index % 2)` && |\n| &&
` if (mParamsEF.length) {` && |\n| &&
` z2ui5.oController.eF.apply(undefined, mParamsEF);` && |\n| &&
` } else {` && |\n| &&
` Function("return " + mParams[0])();` && |\n| &&
` }` && |\n| &&
` }, 100);` && |\n| &&
` };` && |\n| &&
` z2ui5.oController.showMessage('S_MSG_TOAST', z2ui5.oResponse.PARAMS);` && |\n| &&
` z2ui5.oController.showMessage('S_MSG_BOX', z2ui5.oResponse.PARAMS);` && |\n| &&
` if (z2ui5.oResponse.PARAMS?.S_VIEW?.XML) {` && |\n| &&
` if (z2ui5.oResponse.PARAMS?.S_VIEW?.XML !== '') {` && |\n| &&
` z2ui5.oController.ViewDestroy();` && |\n| &&
` await z2ui5.oController.displayView(z2ui5.oResponse.PARAMS.S_VIEW.XML, z2ui5.oResponse.OVIEWMODEL);` && |\n| &&
` return;` && |\n| &&
` }` && |\n| &&
` }` && |\n| &&
` z2ui5.oController.updateModelIfRequired('S_VIEW', z2ui5.oView);` && |\n| &&
` z2ui5.oController.updateModelIfRequired('S_VIEW_NEST', z2ui5.oViewNest);` && |\n| &&
` z2ui5.oController.updateModelIfRequired('S_VIEW_NEST2', z2ui5.oViewNest2);` && |\n| &&
` z2ui5.oController.updateModelIfRequired('S_POPUP', z2ui5.oViewPopup);` && |\n| &&
` z2ui5.oController.updateModelIfRequired('S_POPOVER', z2ui5.oViewPopover);` && |\n| &&
` z2ui5.oController.onAfterRendering();` && |\n| &&
` } catch (e) {` && |\n| &&
` BusyIndicator.hide();` && |\n| &&
` if (e.message.includes("openui5")) {` && |\n| &&
` if (e.message.includes("script load error")) {` && |\n| &&
` z2ui5.oController.checkSDKcompatibility(e)` && |\n| &&
` }` && |\n| &&
` } else {` && |\n| &&
` MessageBox.error(e.toLocaleString());` && |\n| &&
` }` && |\n| &&
` }` && |\n| &&
` },` && |\n| &&
` responseError(response) {` && |\n| &&
` document.write(response);` && |\n| &&
` },` && |\n| &&
` };` && |\n| &&
` });` && |\n| &&
``.
result = |sap.ui.define(["sap/ui/core/BusyIndicator", "sap/m/MessageBox"| && |\n| &&
|],| && |\n| &&
| function (BusyIndicator, MessageBox) \{| && |\n| &&
| "use strict";| && |\n| &&
|| && |\n| &&
| return \{| && |\n| &&
|| && |\n| &&
| endSession: function () \{| && |\n| &&
|| && |\n| &&
| if (z2ui5.contextId) \{| && |\n| &&
| fetch(z2ui5.oConfig.pathname, \{| && |\n| &&
| method: 'HEAD',| && |\n| &&
| keepalive: true,| && |\n| &&
| headers: \{| && |\n| &&
| 'sap-terminate': 'session',| && |\n| &&
| 'sap-contextid': z2ui5.contextId,| && |\n| &&
| 'sap-contextid-accept': 'header'| && |\n| &&
| \}| && |\n| &&
| \});| && |\n| &&
| delete z2ui5.contextId;| && |\n| &&
| \}| && |\n| &&
|| && |\n| &&
| \},| && |\n| &&
| Roundtrip() \{| && |\n| &&
| z2ui5.checkTimerActive = false;| && |\n| &&
| z2ui5.checkNestAfter = false;| && |\n| &&
| z2ui5.checkNestAfter2 = false;| && |\n| &&
| let event = (args) => \{| && |\n| &&
| if (args != undefined) \{| && |\n| &&
| return args[0][0];| && |\n| &&
| \}| && |\n| &&
| \};| && |\n| &&
|| && |\n| &&
| z2ui5.oBody ??= \{\};| && |\n| &&
| z2ui5.oBody.S_FRONT = \{| && |\n| &&
| ID: z2ui5?.oBody?.ID,| && |\n| &&
| CONFIG: z2ui5.oConfig,| && |\n| &&
| XX: z2ui5?.oBody?.XX,| && |\n| &&
| ORIGIN: window.location.origin,| && |\n| &&
| PATHNAME: window.location.pathname,| && |\n| &&
| SEARCH: (z2ui5.search) ? z2ui5.search : window.location.search,| && |\n| &&
| VIEW: z2ui5.oBody?.VIEWNAME,| && |\n| &&
| EVENT: event(z2ui5.oBody?.ARGUMENTS),| && |\n| &&
| HASH: window.location.hash,| && |\n| &&
| \};| && |\n| &&
| if (z2ui5.oBody?.ARGUMENTS != undefined) \{| && |\n| &&
| if (z2ui5.oBody?.ARGUMENTS.length > 0) \{| && |\n| &&
| z2ui5.oBody?.ARGUMENTS.shift();| && |\n| &&
| \}| && |\n| &&
| \}| && |\n| &&
| z2ui5.oBody.S_FRONT.T_EVENT_ARG = z2ui5.oBody?.ARGUMENTS;| && |\n| &&
| delete z2ui5.oBody.ID;| && |\n| &&
| delete z2ui5.oBody?.VIEWNAME;| && |\n| &&
| delete z2ui5.oBody?.S_FRONT.XX;| && |\n| &&
| delete z2ui5.oBody?.ARGUMENTS;| && |\n| &&
| if (!z2ui5.oBody.S_FRONT.T_EVENT_ARG) \{| && |\n| &&
| delete z2ui5.oBody.S_FRONT.T_EVENT_ARG;| && |\n| &&
| \}| && |\n| &&
| if (z2ui5.oBody.S_FRONT.T_EVENT_ARG) \{| && |\n| &&
| if (z2ui5.oBody.S_FRONT.T_EVENT_ARG.length == 0) \{| && |\n| &&
| delete z2ui5.oBody.S_FRONT.T_EVENT_ARG;| && |\n| &&
| \}| && |\n| &&
| \}| && |\n| &&
| if (z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS == undefined) \{| && |\n| &&
| delete z2ui5.oBody.S_FRONT.T_STARTUP_PARAMETERS;| && |\n| &&
| \}| && |\n| &&
| if (z2ui5.oBody.S_FRONT.SEARCH == '') \{| && |\n| &&
| delete z2ui5.oBody.S_FRONT.SEARCH;| && |\n| &&
| \}| && |\n| &&
| if (!z2ui5.oBody.XX) \{| && |\n| &&
| delete z2ui5.oBody.XX;| && |\n| &&
| \}| && |\n| &&
| this.readHttp();| && |\n| &&
| \},| && |\n| &&
|| && |\n| &&
| async readHttp() \{| && |\n| &&
| const response = await fetch(z2ui5.oConfig.pathname, \{| && |\n| &&
| method: 'POST',| && |\n| &&
| headers: \{| && |\n| &&
| 'Content-Type': 'application/json',| && |\n| &&
| 'sap-contextid-accept': 'header',| && |\n| &&
| 'sap-contextid': z2ui5.contextId| && |\n| &&
| \},| && |\n| &&
| body: JSON.stringify(z2ui5.oBody)| && |\n| &&
| \});| && |\n| &&
| z2ui5.contextId = response.headers.get("sap-contextid");| && |\n| &&
| if (!response.ok) \{| && |\n| &&
| const responseText = await response.text();| && |\n| &&
| this.responseError(responseText);| && |\n| &&
| \} else \{| && |\n| &&
| const responseData = await response.json();| && |\n| &&
| z2ui5.responseData = responseData;| && |\n| &&
| this.responseSuccess(\{| && |\n| &&
| ID: responseData.S_FRONT.ID,| && |\n| &&
| PARAMS: responseData.S_FRONT.PARAMS,| && |\n| &&
| OVIEWMODEL: responseData.MODEL,| && |\n| &&
| \});| && |\n| &&
| \}| && |\n| &&
| \},| && |\n| &&
| async responseSuccess(response) \{| && |\n| &&
| try \{| && |\n| &&
| z2ui5.oResponse = response;| && |\n| &&
| if (z2ui5.oResponse.PARAMS?.S_VIEW?.CHECK_DESTROY) \{| && |\n| &&
| z2ui5.oController.ViewDestroy();| && |\n| &&
| \}| && |\n| &&
| ; if (z2ui5.oResponse.PARAMS?.S_FOLLOW_UP_ACTION?.CUSTOM_JS) \{| && |\n| &&
| setTimeout(() => \{| && |\n| &&
| let mParams = z2ui5.oResponse?.PARAMS.S_FOLLOW_UP_ACTION.CUSTOM_JS.split("'");| && |\n| &&
| let mParamsEF = mParams.filter((val, index) => index % 2)| && |\n| &&
| if (mParamsEF.length) \{| && |\n| &&
| z2ui5.oController.eF.apply(undefined, mParamsEF);| && |\n| &&
| \} else \{| && |\n| &&
| Function("return " + mParams[0])();| && |\n| &&
| \}| && |\n| &&
| \}, 100);| && |\n| &&
| \};| && |\n| &&
| z2ui5.oController.showMessage('S_MSG_TOAST', z2ui5.oResponse.PARAMS);| && |\n| &&
| z2ui5.oController.showMessage('S_MSG_BOX', z2ui5.oResponse.PARAMS);| && |\n| &&
| if (z2ui5.oResponse.PARAMS?.S_VIEW?.XML) \{| && |\n| &&
| if (z2ui5.oResponse.PARAMS?.S_VIEW?.XML !== '') \{| && |\n| &&
| z2ui5.oController.ViewDestroy();| && |\n| &&
| await z2ui5.oController.displayView(z2ui5.oResponse.PARAMS.S_VIEW.XML, z2ui5.oResponse.OVIEWMODEL);| && |\n| &&
| return;| && |\n| &&
| \}| && |\n| &&
| \}| && |\n| &&
| z2ui5.oController.updateModelIfRequired('S_VIEW', z2ui5.oView);| && |\n| &&
| z2ui5.oController.updateModelIfRequired('S_VIEW_NEST', z2ui5.oViewNest);| && |\n| &&
| z2ui5.oController.updateModelIfRequired('S_VIEW_NEST2', z2ui5.oViewNest2);| && |\n| &&
| z2ui5.oController.updateModelIfRequired('S_POPUP', z2ui5.oViewPopup);| && |\n| &&
| z2ui5.oController.updateModelIfRequired('S_POPOVER', z2ui5.oViewPopover);| && |\n| &&
| z2ui5.oController.onAfterRendering();| && |\n| &&
| \} catch (e) \{| && |\n| &&
| BusyIndicator.hide();| && |\n| &&
| if (e.message.includes("openui5")) \{| && |\n| &&
| if (e.message.includes("script load error")) \{| && |\n| &&
| z2ui5.oController.checkSDKcompatibility(e)| && |\n| &&
| \}| && |\n| &&
| \} else \{| && |\n| &&
| MessageBox.error(e.toLocaleString());| && |\n| &&
| \}| && |\n| &&
| \}| && |\n| &&
| \},| && |\n| &&
| responseError(response) \{| && |\n| &&
| document.write(response);| && |\n| &&
| \},| && |\n| &&
| \};| && |\n| &&
| \});| && |\n| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_style_css DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,17 +9,16 @@ CLASS z2ui5_cl_app_style_css DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_style_css IMPLEMENTATION.
METHOD get.
result = `/* Enter your custom styles here */` &&
``.
result = |/* Enter your custom styles here */| &&
||.
ENDMETHOD.
ENDCLASS.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_app_view1_xml DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -10,21 +9,20 @@ CLASS z2ui5_cl_app_view1_xml DEFINITION
VALUE(result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_app_view1_xml IMPLEMENTATION.
METHOD get.
result = `<mvc:View controllerName="z2ui5.controller.View1"` &&
` xmlns:mvc="sap.ui.core.mvc" displayBlock="true"` &&
` xmlns="sap.m">` &&
`</mvc:View>` &&
`` &&
``.
result = |<mvc:View controllerName="z2ui5.controller.View1"| &&
| xmlns:mvc="sap.ui.core.mvc" displayBlock="true"| &&
| xmlns="sap.m">| &&
|</mvc:View>| &&
|| &&
||.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_error DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -14,18 +13,17 @@ CLASS z2ui5_cl_pop_error DEFINITION
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_error.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA error TYPE REF TO cx_root.
DATA client TYPE REF TO z2ui5_if_client.
DATA error TYPE REF TO cx_root.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_error IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
@ -33,27 +31,23 @@ CLASS z2ui5_cl_pop_error IMPLEMENTATION.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = `Error View`
afterclose = client->_event( 'BUTTON_CONFIRM' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = `Error View`
afterclose = client->_event( 'BUTTON_CONFIRM' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->text( error->get_text( )
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = `OK`
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = `OK`
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_file_dl DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -18,10 +17,10 @@ CLASS z2ui5_cl_pop_file_dl DEFINITION
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_file_dl.
DATA mv_name TYPE string.
DATA mv_type TYPE string.
DATA mv_size TYPE string.
DATA mv_value TYPE string.
DATA mv_name TYPE string.
DATA mv_type TYPE string.
DATA mv_size TYPE string.
DATA mv_value TYPE string.
DATA mv_check_download TYPE abap_bool.
METHODS result
@ -29,51 +28,47 @@ CLASS z2ui5_cl_pop_file_dl DEFINITION
VALUE(result) TYPE abap_bool.
PROTECTED SECTION.
DATA check_confirmed TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA check_confirmed TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POP_FILE_DL IMPLEMENTATION.
CLASS z2ui5_cl_pop_file_dl IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->title = i_title.
r_result->question_text = i_text.
r_result->question_text = i_text.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_type = i_type.
r_result->mv_value = i_file.
r_result->mv_size = strlen( i_file ) / 1000.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_type = i_type.
r_result->mv_value = i_file.
r_result->mv_size = strlen( i_file ) / 1000.
ENDMETHOD.
METHOD result.
result = check_confirmed.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content( ).
IF mv_check_download = abap_true.
@ -81,7 +76,8 @@ CLASS Z2UI5_CL_POP_FILE_DL IMPLEMENTATION.
DATA(lv_base64) = z2ui5_cl_util=>conv_encode_x_base64( lv_csv_x ).
popup->_generic( ns = `html`
name = `iframe`
t_prop = VALUE #( ( n = `src` v = mv_type && lv_base64 ) ( n = `hidden` v = `hidden` ) ) ).
t_prop = VALUE #( ( n = `src` v = mv_type && lv_base64 )
( n = `hidden` v = `hidden` ) ) ).
popup->_z2ui5( )->timer( client->_event( `CALLBACK_DOWNLOAD` ) ).
@ -99,19 +95,16 @@ CLASS Z2UI5_CL_POP_FILE_DL IMPLEMENTATION.
enabled = abap_false
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = `Download`
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = `Download`
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_file_ul DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -22,9 +21,10 @@ CLASS z2ui5_cl_pop_file_ul DEFINITION
value TYPE string,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
DATA mv_path TYPE string.
DATA mv_value TYPE string.
DATA ms_result TYPE ty_s_result.
DATA mv_path TYPE string.
DATA mv_value TYPE string.
DATA check_confirm_enabled TYPE abap_bool.
METHODS result
@ -32,72 +32,64 @@ CLASS z2ui5_cl_pop_file_ul DEFINITION
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_file_ul IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->title = i_title.
r_result->question_text = i_text.
r_result->question_text = i_text.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_path = i_path.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_path = i_path.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( question_text
)->_z2ui5( )->file_uploader(
value = client->_bind_edit( mv_value )
path = client->_bind_edit( mv_path )
placeholder = 'filepath here...'
upload = client->_event( 'UPLOAD' )
)->_z2ui5( )->file_uploader( value = client->_bind_edit( mv_value )
path = client->_bind_edit( mv_path )
placeholder = 'filepath here...'
upload = client->_event( 'UPLOAD' )
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
enabled = client->_bind( check_confirm_enabled )
type = 'Emphasized' ).
)->button( text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
enabled = client->_bind( check_confirm_enabled )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_get_range DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
@ -13,6 +12,7 @@ CLASS z2ui5_cl_pop_get_range DEFINITION
high TYPE string,
key TYPE string,
END OF ty_s_filter_pop.
DATA mt_filter TYPE STANDARD TABLE OF ty_s_filter_pop WITH EMPTY KEY.
CLASS-METHODS factory
@ -26,6 +26,7 @@ CLASS z2ui5_cl_pop_get_range DEFINITION
t_range TYPE z2ui5_cl_util=>ty_t_range,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS result
@ -33,70 +34,60 @@ CLASS z2ui5_cl_pop_get_range DEFINITION
VALUE(result) TYPE ty_s_result.
DATA mt_mapping TYPE z2ui5_if_types=>ty_t_name_value.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POP_GET_RANGE IMPLEMENTATION.
CLASS z2ui5_cl_pop_get_range IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
z2ui5_cl_util=>itab_corresponding(
EXPORTING
val = t_range
CHANGING
tab = r_result->ms_result-t_range
z2ui5_cl_util=>itab_corresponding( EXPORTING val = t_range
CHANGING tab = r_result->ms_result-t_range
).
INSERT VALUE #( ) INTO TABLE r_result->ms_result-t_range.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
lo_popup = lo_popup->dialog(
afterclose = client->_event( 'BUTTON_CANCEL' )
contentheight = `50%`
contentwidth = `50%`
title = 'Define Filter Conditons' ).
lo_popup = lo_popup->dialog( afterclose = client->_event( 'BUTTON_CANCEL' )
contentheight = `50%`
contentwidth = `50%`
title = 'Define Filter Conditons' ).
DATA(vbox) = lo_popup->vbox( height = `100%`
justifycontent = 'SpaceBetween' ).
DATA(item) = vbox->list(
nodata = `no conditions defined`
items = client->_bind_edit( mt_filter )
selectionchange = client->_event( 'SELCHANGE' )
DATA(item) = vbox->list( nodata = `no conditions defined`
items = client->_bind_edit( mt_filter )
selectionchange = client->_event( 'SELCHANGE' )
)->custom_list_item( ).
DATA(grid) = item->grid( ).
grid->combobox(
selectedkey = `{OPTION}`
items = client->_bind( mt_mapping )
)->item(
key = '{N}'
text = '{N}'
grid->combobox( selectedkey = `{OPTION}`
items = client->_bind( mt_mapping )
)->item( key = '{N}'
text = '{N}'
)->get_parent(
)->input( value = `{LOW}`
submit = client->_event( 'BUTTON_CONFIRM' )
@ -105,7 +96,8 @@ CLASS Z2UI5_CL_POP_GET_RANGE IMPLEMENTATION.
submit = client->_event( 'BUTTON_CONFIRM' )
)->button( icon = 'sap-icon://decline'
type = `Transparent`
press = client->_event( val = `POPUP_DELETE` t_arg = VALUE #( ( `${KEY}` ) ) ) ).
press = client->_event( val = `POPUP_DELETE`
t_arg = VALUE #( ( `${KEY}` ) ) ) ).
lo_popup->buttons(
)->button( text = `Delete All`
@ -115,19 +107,16 @@ CLASS Z2UI5_CL_POP_GET_RANGE IMPLEMENTATION.
)->button( text = `Add Item`
icon = `sap-icon://add`
press = client->_event( val = `POPUP_ADD` )
)->button(
text = 'Cancel'
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = 'OK'
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = 'Cancel'
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = 'OK'
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( lo_popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
@ -139,11 +128,10 @@ CLASS Z2UI5_CL_POP_GET_RANGE IMPLEMENTATION.
CLEAR mt_filter.
LOOP AT ms_result-t_range REFERENCE INTO DATA(lr_product).
INSERT VALUE #(
low = lr_product->low
high = lr_product->high
option = lr_product->option
key = z2ui5_cl_util=>uuid_get_c32( )
INSERT VALUE #( low = lr_product->low
high = lr_product->high
option = lr_product->option
key = z2ui5_cl_util=>uuid_get_c32( )
) INTO TABLE mt_filter.
ENDLOOP.
@ -160,11 +148,10 @@ CLASS Z2UI5_CL_POP_GET_RANGE IMPLEMENTATION.
IF lr_filter->low IS INITIAL AND lr_filter->high IS INITIAL.
CONTINUE.
ENDIF.
INSERT VALUE #(
sign = `I`
option = lr_filter->option
low = lr_filter->low
high = lr_filter->high
INSERT VALUE #( sign = `I`
option = lr_filter->option
low = lr_filter->low
high = lr_filter->high
) INTO TABLE ms_result-t_range.
ENDLOOP.

View File

@ -24,9 +24,10 @@ CLASS z2ui5_cl_pop_get_range_m DEFINITION
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
DATA mv_popup_name TYPE LINE OF string_table.
DATA client TYPE REF TO z2ui5_if_client.
DATA check_initialized TYPE abap_bool.
DATA mv_popup_name TYPE LINE OF string_table.
METHODS popup_display.
METHODS init.
@ -35,9 +36,7 @@ CLASS z2ui5_cl_pop_get_range_m DEFINITION
ENDCLASS.
CLASS Z2UI5_CL_POP_GET_RANGE_M IMPLEMENTATION.
CLASS z2ui5_cl_pop_get_range_m IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
@ -45,14 +44,12 @@ CLASS Z2UI5_CL_POP_GET_RANGE_M IMPLEMENTATION.
ENDMETHOD.
METHOD init.
popup_display( ).
ENDMETHOD.
METHOD popup_display.
DATA(lo_popup) = z2ui5_cl_xml_view=>factory_popup( ).
@ -72,9 +69,10 @@ CLASS Z2UI5_CL_POP_GET_RANGE_M IMPLEMENTATION.
DATA(grid) = item->grid( class = `sapUiSmallMarginTop sapUiSmallMarginBottom sapUiSmallMarginBegin` ).
grid->text( `{NAME}` ).
grid->multi_input( tokens = `{T_TOKEN}`
enabled = abap_false
valuehelprequest = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) )
grid->multi_input( tokens = `{T_TOKEN}`
enabled = abap_false
valuehelprequest = client->_event( val = `LIST_OPEN`
t_arg = VALUE #( ( `${NAME}` ) ) )
)->tokens(
)->token( key = `{KEY}`
text = `{TEXT}`
@ -83,11 +81,13 @@ CLASS Z2UI5_CL_POP_GET_RANGE_M IMPLEMENTATION.
editable = `{EDITABLE}` ).
grid->button( text = `Select`
press = client->_event( val = `LIST_OPEN` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
press = client->_event( val = `LIST_OPEN`
t_arg = VALUE #( ( `${NAME}` ) ) ) ).
grid->button( icon = 'sap-icon://delete'
type = `Transparent`
text = `Clear`
press = client->_event( val = `LIST_DELETE` t_arg = VALUE #( ( `${NAME}` ) ) ) ).
press = client->_event( val = `LIST_DELETE`
t_arg = VALUE #( ( `${NAME}` ) ) ) ).
lo_popup->buttons(
)->button( text = `Clear All`

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_html DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -17,53 +16,48 @@ CLASS z2ui5_cl_pop_html DEFINITION
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_html.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA html TYPE string.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA html TYPE string.
DATA button_text_confirm TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POP_HTML IMPLEMENTATION.
CLASS z2ui5_cl_pop_html IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->icon = i_icon.
r_result->html = i_html.
r_result->title = i_title.
r_result->icon = i_icon.
r_result->html = i_html.
r_result->button_text_confirm = i_button_text.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CONFIRM' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CONFIRM' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->html( html
)->get_parent( )->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_input_val DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -9,9 +8,9 @@ CLASS z2ui5_cl_pop_input_val DEFINITION
CLASS-METHODS factory
IMPORTING
text TYPE string DEFAULT `Enter New Value`
!text TYPE string DEFAULT `Enter New Value`
val TYPE string OPTIONAL
title TYPE string DEFAULT `Popup Input Value`
!title TYPE string DEFAULT `Popup Input Value`
button_text_confirm TYPE string DEFAULT `OK`
button_text_cancel TYPE string DEFAULT `Cancel`
PREFERRED PARAMETER val
@ -23,6 +22,7 @@ CLASS z2ui5_cl_pop_input_val DEFINITION
value TYPE string,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS result
@ -30,70 +30,62 @@ CLASS z2ui5_cl_pop_input_val DEFINITION
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS Z2UI5_CL_POP_INPUT_VAL IMPLEMENTATION.
CLASS z2ui5_cl_pop_input_val IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = title.
r_result->title = title.
r_result->question_text = text.
r_result->question_text = text.
r_result->button_text_confirm = button_text_confirm.
r_result->button_text_cancel = button_text_cancel.
r_result->button_text_cancel = button_text_cancel.
r_result->ms_result-value = val.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( question_text
)->input(
value = client->_bind_edit( ms_result-value )
submit = client->_event( 'BUTTON_CONFIRM' )
)->input( value = client->_bind_edit( ms_result-value )
submit = client->_event( 'BUTTON_CONFIRM' )
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_itab_json_dl DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -24,13 +23,13 @@ CLASS z2ui5_cl_pop_itab_json_dl DEFINITION
DATA mr_itab TYPE REF TO data.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA title TYPE string.
DATA icon TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_result_confirmed TYPE abap_bool.
@ -38,31 +37,26 @@ CLASS z2ui5_cl_pop_itab_json_dl DEFINITION
ENDCLASS.
CLASS Z2UI5_CL_POP_ITAB_JSON_DL IMPLEMENTATION.
CLASS z2ui5_cl_pop_itab_json_dl IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->mr_itab = z2ui5_cl_util=>conv_copy_ref_data( itab ).
r_result->mr_itab = z2ui5_cl_util=>conv_copy_ref_data( itab ).
r_result->title = i_title.
r_result->icon = i_icon.
r_result->title = i_title.
r_result->icon = i_icon.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->button_text_cancel = i_button_text_cancel.
ENDMETHOD.
METHOD result.
result = check_result_confirmed.
ENDMETHOD.
METHOD z2ui5_if_app~main.
DATA app TYPE REF TO object.
@ -73,8 +67,8 @@ CLASS Z2UI5_CL_POP_ITAB_JSON_DL IMPLEMENTATION.
IF z2ui5_cl_util=>rtti_check_class_exists( `z2ui5_dbt_cl_app_03` ) = abap_false.
DATA(lv_link) = `https://github.com/oblomov-dev/a2UI5-db_table_loader`.
DATA(lv_text) = `<p>Please install the open-source project a2UI5-db_table_loader and try again: <a href="` &&
lv_link && `" style="color:blue; font-weight:600;" target="_blank">(link)</a></p>`.
DATA(lv_text) = |<p>Please install the open-source project a2UI5-db_table_loader and try again: <a href="| &&
|{ lv_link }" style="color:blue; font-weight:600;" target="_blank">(link)</a></p>|.
DATA(lx) = NEW z2ui5_cx_util_error( val = lv_text ).
client->nav_app_leave( z2ui5_cl_pop_error=>factory( lx ) ).
@ -83,10 +77,8 @@ CLASS Z2UI5_CL_POP_ITAB_JSON_DL IMPLEMENTATION.
DATA(lv_classname) = `Z2UI5_DBT_CL_APP_03`.
CALL METHOD (lv_classname)=>('FACTORY_POPUP_BY_ITAB')
EXPORTING
itab = mr_itab
RECEIVING
result = app.
EXPORTING itab = mr_itab
RECEIVING result = app.
client->nav_app_leave( CAST #( app ) ).

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_js_loader DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -23,15 +22,14 @@ CLASS z2ui5_cl_pop_js_loader DEFINITION
VALUE(result3) TYPE string.
DATA mv_is_open_ui5 TYPE abap_bool.
DATA ui5_gav TYPE string.
DATA ui5_gav 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.
DATA check_open_ui5 TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA js TYPE string.
DATA user_command TYPE string.
DATA check_open_ui5 TYPE abap_bool.
METHODS view_display.
@ -39,54 +37,46 @@ CLASS z2ui5_cl_pop_js_loader DEFINITION
ENDCLASS.
CLASS z2ui5_cl_pop_js_loader IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->js = i_js.
r_result->js = i_js.
r_result->user_command = i_result.
ENDMETHOD.
METHOD factory_check_open_ui5.
r_result = NEW #( ).
r_result->check_open_ui5 = abap_true.
ENDMETHOD.
METHOD result.
result3 = user_command.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( `Setup UI...`
)->content( ).
IF js IS NOT INITIAL.
popup->_z2ui5( )->timer( client->_event( 'TIMER_FINISHED' )
)->_generic( ns = `html` name = `script` )->_cc_plain_xml( js ).
)->_generic( ns = `html`
name = `script` )->_cc_plain_xml( js ).
ENDIF.
IF check_open_ui5 = abap_true.
popup->_z2ui5( )->info_frontend(
finished = client->_event( `INFO_FINISHED` )
ui5_gav = client->_bind_edit( ui5_gav ) ).
popup->_z2ui5( )->info_frontend( finished = client->_event( `INFO_FINISHED` )
ui5_gav = client->_bind_edit( ui5_gav ) ).
ENDIF.
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_messages DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -22,6 +21,7 @@ CLASS z2ui5_cl_pop_messages DEFINITION
group TYPE string,
END OF ty_s_msg.
TYPES ty_t_msg TYPE STANDARD TABLE OF ty_s_msg.
DATA mt_msg TYPE ty_t_msg.
CLASS-METHODS factory
@ -32,19 +32,17 @@ CLASS z2ui5_cl_pop_messages DEFINITION
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_messages.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_messages IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
@ -53,11 +51,11 @@ CLASS z2ui5_cl_pop_messages IMPLEMENTATION.
LOOP AT lt_msg REFERENCE INTO DATA(lr_row).
DATA(ls_row) = VALUE ty_s_msg( ).
ls_row-type = z2ui5_cl_util=>ui5_get_msg_type( lr_row->type ).
ls_row-title = lr_row->text.
ls_row-type = z2ui5_cl_util=>ui5_get_msg_type( lr_row->type ).
ls_row-title = lr_row->text.
* lr_row->title = `title`.
* lr_row->message = `message`.
ls_row-subtitle = lr_row->id && ` ` && lr_row->no.
ls_row-subtitle = |{ lr_row->id } { lr_row->no }|.
* lr_row->group = `001`.
INSERT ls_row INTO TABLE r_result->mt_msg.
@ -67,42 +65,34 @@ CLASS z2ui5_cl_pop_messages IMPLEMENTATION.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
popup = popup->dialog(
title = `Messages`
contentheight = '50%'
contentwidth = '50%'
verticalScrolling = abap_false
afterclose = client->_event( 'BUTTON_CONTINUE' )
popup = popup->dialog( title = `Messages`
contentheight = '50%'
contentwidth = '50%'
verticalScrolling = abap_false
afterclose = client->_event( 'BUTTON_CONTINUE' )
).
popup->message_view(
items = client->_bind( mt_msg )
* groupitems = abap_true
)->message_item(
type = `{TYPE}`
title = `{TITLE}`
subtitle = `{SUBTITLE}`
* description = `{MESSAGE}`
* groupname = `{GROUP}`
popup->message_view( items = client->_bind( mt_msg )
* groupitems = abap_true
)->message_item( type = `{TYPE}`
title = `{TITLE}`
subtitle = `{SUBTITLE}`
* description = `{MESSAGE}`
* groupname = `{GROUP}`
).
popup->buttons(
)->button(
text = 'continue'
press = client->_event( 'BUTTON_CONTINUE' )
type = 'Emphasized' ).
)->button( text = 'continue'
press = client->_event( 'BUTTON_CONTINUE' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_pdf DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -21,83 +20,75 @@ CLASS z2ui5_cl_pop_pdf DEFINITION
text TYPE string,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
DATA mv_pdf TYPE string.
DATA mv_pdf TYPE string.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_pdf IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->title = i_title.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_pdf = i_pdf.
r_result->button_text_cancel = i_button_text_cancel.
r_result->mv_pdf = i_pdf.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
stretch = abap_true
afterclose = client->_event( 'BUTTON_CANCEL' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
stretch = abap_true
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->label( question_text
)->_generic(
ns = `html`
name = `iframe`
t_prop = VALUE #(
( n = `src` v = mv_pdf )
( n = `height` v = `800px` )
( n = `width` v = `99%` )
)
)->_generic( ns = `html`
name = `iframe`
t_prop = VALUE #( ( n = `src` v = mv_pdf )
( n = `height` v = `800px` )
( n = `width` v = `99%` )
)
)->get_parent( )->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,6 +1,5 @@
CLASS z2ui5_cl_pop_table DEFINITION
PUBLIC
FINAL
PUBLIC FINAL
CREATE PROTECTED.
PUBLIC SECTION.
@ -18,6 +17,7 @@ CLASS z2ui5_cl_pop_table DEFINITION
row TYPE REF TO data,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS result
@ -28,8 +28,9 @@ CLASS z2ui5_cl_pop_table DEFINITION
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool.
DATA title TYPE string VALUE 'Table View'.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string VALUE 'Table View'.
DATA client TYPE REF TO z2ui5_if_client.
METHODS on_event.
METHODS display.
METHODS on_event_confirm.
@ -38,24 +39,20 @@ CLASS z2ui5_cl_pop_table DEFINITION
ENDCLASS.
CLASS z2ui5_cl_pop_table IMPLEMENTATION.
METHOD display.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
ASSIGN mr_tab->* TO <tab_out>.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
afterclose = client->_event( 'BUTTON_CONFIRM' )
stretch = abap_true
title = title
* icon = 'sap-icon://edit'
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( afterclose = client->_event( 'BUTTON_CONFIRM' )
stretch = abap_true
title = title
* icon = 'sap-icon://edit'
)->content( ).
DATA(tab) = popup->table(
client->_bind( <tab_out> ) ).
DATA(tab) = popup->table( client->_bind( <tab_out> ) ).
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_any( <tab_out> ).
@ -63,7 +60,7 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
DATA(cells) = list->cells( ).
LOOP AT lt_comp INTO DATA(ls_comp).
cells->text( `{` && ls_comp-name && `}` ).
cells->text( |\{{ ls_comp-name }\}| ).
ENDLOOP.
DATA(columns) = tab->columns( ).
@ -73,16 +70,14 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
popup->get_parent(
)->buttons(
)->button(
text = 'OK'
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = 'OK'
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD factory.
FIELD-SYMBOLS <tab> TYPE any.
@ -98,7 +93,6 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
ENDMETHOD.
METHOD on_event.
CASE client->get( )-event.
@ -111,12 +105,10 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
ENDCASE.
ENDMETHOD.
METHOD on_event_confirm.
client->popup_destroy( ).
@ -124,7 +116,6 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
ENDMETHOD.
METHOD result.
result = ms_result.
@ -133,7 +124,7 @@ CLASS z2ui5_cl_pop_table IMPLEMENTATION.
METHOD z2ui5_if_app~main.
me->client = client.
me->client = client.
IF check_initialized = abap_false.
check_initialized = abap_true.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_textedit DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
INTERFACES z2ui5_if_app.
@ -9,23 +8,25 @@ CLASS z2ui5_cl_pop_textedit DEFINITION
CLASS-METHODS factory
IMPORTING
i_stretch_active TYPE abap_bool DEFAULT abap_true
i_textarea TYPE string OPTIONAL
i_title TYPE string DEFAULT `Editor`
i_textarea TYPE string OPTIONAL
i_title TYPE string DEFAULT `Editor`
i_check_editable TYPE abap_bool DEFAULT abap_false
PREFERRED PARAMETER i_textarea
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_textedit.
DATA client TYPE REF TO z2ui5_if_client.
DATA client TYPE REF TO z2ui5_if_client.
DATA mv_stretch_active TYPE abap_bool.
DATA mv_title TYPE string.
DATA mv_title TYPE string.
DATA mv_check_editable TYPE abap_bool.
DATA check_initialized TYPE abap_bool.
TYPES:
BEGIN OF ty_s_result,
text TYPE string,
check_confirmed TYPE abap_bool,
END OF ty_s_result.
DATA ms_result TYPE ty_s_result.
METHODS display.
@ -35,49 +36,44 @@ CLASS z2ui5_cl_pop_textedit DEFINITION
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_textedit IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->mv_stretch_active = i_stretch_active.
r_result->ms_result-text = i_textarea.
r_result->mv_title = i_title.
r_result->mv_title = i_title.
r_result->mv_check_editable = i_check_editable.
ENDMETHOD.
METHOD display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
afterclose = client->_event( 'BUTTON_TEXTAREA_CANCEL' )
stretch = mv_stretch_active
title = mv_title
icon = 'sap-icon://edit'
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( afterclose = client->_event( 'BUTTON_TEXTAREA_CANCEL' )
stretch = mv_stretch_active
title = mv_title
icon = 'sap-icon://edit'
)->content(
)->text_area( growing = abap_true
editable = mv_check_editable
value = client->_bind_edit( ms_result-text )
)->text_area( growing = abap_true
editable = mv_check_editable
value = client->_bind_edit( ms_result-text )
)->get_parent(
)->buttons(
)->button(
text = 'Cancel'
press = client->_event( 'BUTTON_TEXTAREA_CANCEL' )
)->button(
text = 'Confirm'
press = client->_event( 'BUTTON_TEXTAREA_CONFIRM' )
type = 'Emphasized' ).
)->button( text = 'Cancel'
press = client->_event( 'BUTTON_TEXTAREA_CANCEL' )
)->button( text = 'Confirm'
press = client->_event( 'BUTTON_TEXTAREA_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
@ -105,5 +101,4 @@ CLASS z2ui5_cl_pop_textedit IMPLEMENTATION.
METHOD result.
result = ms_result.
ENDMETHOD.
ENDCLASS.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_to_confirm DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -30,73 +29,65 @@ CLASS z2ui5_cl_pop_to_confirm DEFINITION
VALUE(result) TYPE abap_bool.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA button_text_cancel TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_result_confirmed TYPE abap_bool.
DATA event_confirm TYPE string.
DATA event_canceled TYPE string.
DATA event_confirm TYPE string.
DATA event_canceled TYPE string.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_to_confirm IMPLEMENTATION.
METHOD result.
result = check_result_confirmed.
ENDMETHOD.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->icon = i_icon.
r_result->question_text = i_question_text.
r_result->title = i_title.
r_result->icon = i_icon.
r_result->question_text = i_question_text.
r_result->button_text_confirm = i_button_text_confirm.
r_result->button_text_cancel = i_button_text_cancel.
r_result->event_confirm = i_event_confirm.
r_result->event_canceled = i_event_cancel.
r_result->button_text_cancel = i_button_text_cancel.
r_result->event_confirm = i_event_confirm.
r_result->event_canceled = i_event_cancel.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CANCEL' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->text( question_text
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_cancel
press = client->_event( 'BUTTON_CANCEL' )
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,7 +1,6 @@
CLASS z2ui5_cl_pop_to_inform DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC FINAL
CREATE PUBLIC.
PUBLIC SECTION.
@ -17,52 +16,48 @@ CLASS z2ui5_cl_pop_to_inform DEFINITION
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_to_inform.
PROTECTED SECTION.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA icon TYPE string.
DATA question_text TYPE string.
DATA button_text_confirm TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_initialized TYPE abap_bool.
METHODS view_display.
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_to_inform IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
r_result->title = i_title.
r_result->icon = i_icon.
r_result->question_text = i_text.
r_result->title = i_title.
r_result->icon = i_icon.
r_result->question_text = i_text.
r_result->button_text_confirm = i_button_text.
ENDMETHOD.
METHOD view_display.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog(
title = title
icon = icon
afterclose = client->_event( 'BUTTON_CONFIRM' )
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( )->dialog( title = title
icon = icon
afterclose = client->_event( 'BUTTON_CONFIRM' )
)->content(
)->vbox( 'sapUiMediumMargin'
)->text( question_text
)->get_parent( )->get_parent(
)->buttons(
)->button(
text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
)->button( text = button_text_confirm
press = client->_event( 'BUTTON_CONFIRM' )
type = 'Emphasized' ).
client->popup_display( popup->stringify( ) ).
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.

View File

@ -1,69 +1,67 @@
CLASS z2ui5_cl_pop_to_select DEFINITION
PUBLIC
FINAL
CREATE PROTECTED .
PUBLIC FINAL
CREATE PROTECTED.
PUBLIC SECTION.
INTERFACES z2ui5_if_app .
INTERFACES z2ui5_if_app.
TYPES:
BEGIN OF ty_s_result,
row TYPE REF TO data,
table TYPE REF TO data,
check_confirmed TYPE abap_bool,
END OF ty_s_result .
END OF ty_s_result.
DATA ms_result TYPE ty_s_result .
DATA mr_tab TYPE REF TO data .
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
DATA mr_tab_popup_backup TYPE REF TO data ##NEEDED.
DATA ms_result TYPE ty_s_result.
DATA mr_tab TYPE REF TO data.
DATA mr_tab_popup TYPE REF TO data ##NEEDED.
DATA mr_tab_popup_backup TYPE REF TO data ##NEEDED.
CLASS-METHODS factory
IMPORTING
!i_tab TYPE STANDARD TABLE
!i_title TYPE clike OPTIONAL
!i_sort_field TYPE clike OPTIONAL
!i_descending TYPE abap_bool OPTIONAL
!i_contentwidth TYPE clike OPTIONAL
!i_contentheight TYPE clike OPTIONAL
!i_growingthreshold TYPE clike OPTIONAL
!i_multiselect TYPE abap_bool OPTIONAL
i_event_canceled TYPE string OPTIONAL
i_event_confirmed TYPE string OPTIONAL
i_tab TYPE STANDARD TABLE
i_title TYPE clike OPTIONAL
i_sort_field TYPE clike OPTIONAL
i_descending TYPE abap_bool OPTIONAL
i_contentwidth TYPE clike OPTIONAL
i_contentheight TYPE clike OPTIONAL
i_growingthreshold TYPE clike OPTIONAL
i_multiselect TYPE abap_bool OPTIONAL
i_event_canceled TYPE string OPTIONAL
i_event_confirmed TYPE string OPTIONAL
RETURNING
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_to_select .
VALUE(r_result) TYPE REF TO z2ui5_cl_pop_to_select.
METHODS result
RETURNING
VALUE(result) TYPE ty_s_result.
PROTECTED SECTION.
DATA check_initialized TYPE abap_bool .
DATA check_table_line TYPE abap_bool .
DATA client TYPE REF TO z2ui5_if_client .
DATA title TYPE string .
DATA sort_field TYPE string .
DATA content_width TYPE string .
DATA content_height TYPE string .
DATA growing_threshold TYPE string .
DATA descending TYPE abap_bool .
DATA multiselect TYPE abap_bool.
DATA event_confirmed TYPE string.
DATA event_canceled TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_table_line TYPE abap_bool.
DATA client TYPE REF TO z2ui5_if_client.
DATA title TYPE string.
DATA sort_field TYPE string.
DATA content_width TYPE string.
DATA content_height TYPE string.
DATA growing_threshold TYPE string.
DATA descending TYPE abap_bool.
DATA multiselect TYPE abap_bool.
DATA event_confirmed TYPE string.
DATA event_canceled TYPE string.
METHODS on_event.
METHODS display.
METHODS set_output_table.
METHODS on_event_confirm.
METHODS on_event_search.
METHODS on_event .
METHODS display .
METHODS set_output_table .
METHODS on_event_confirm .
METHODS on_event_search .
PRIVATE SECTION.
ENDCLASS.
CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
METHOD factory.
r_result = NEW #( ).
@ -74,43 +72,47 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
ELSE `Single select` ).
ENDIF.
r_result->sort_field = i_sort_field.
r_result->descending = i_descending.
r_result->content_height = i_contentheight.
r_result->content_width = i_contentwidth.
r_result->sort_field = i_sort_field.
r_result->descending = i_descending.
r_result->content_height = i_contentheight.
r_result->content_width = i_contentwidth.
r_result->growing_threshold = i_growingthreshold.
r_result->multiselect = i_multiselect.
r_result->event_confirmed = i_event_confirmed.
r_result->event_canceled = i_event_canceled.
r_result->multiselect = i_multiselect.
r_result->event_confirmed = i_event_confirmed.
r_result->event_canceled = i_event_canceled.
r_result->mr_tab = z2ui5_cl_util=>conv_copy_ref_data( i_tab ).
r_result->mr_tab = z2ui5_cl_util=>conv_copy_ref_data( i_tab ).
CREATE DATA r_result->ms_result-row LIKE LINE OF i_tab.
CREATE DATA r_result->ms_result-table LIKE i_tab.
ENDMETHOD.
METHOD display.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
ASSIGN mr_tab_popup->* TO <tab_out>.
DATA(popup) = z2ui5_cl_xml_view=>factory_popup( ).
DATA(tab) = popup->table_select_dialog(
items = `{path:'`
&& client->_bind_edit( val = <tab_out> path = abap_true )
&& `', sorter : { path : '` && to_upper( sort_field ) && `', descending : `
&& z2ui5_cl_util=>boolean_abap_2_json( me->descending )
&& ` } }`
cancel = client->_event( 'CANCEL' )
search = client->_event( val = 'SEARCH' t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
confirm = client->_event( val = 'CONFIRM' t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
growing = abap_true
contentwidth = content_width
contentheight = content_height
growingthreshold = growing_threshold
title = title
multiselect = multiselect ).
items = |\{path:'|
&& client->_bind_edit( val = <tab_out>
path = abap_true )
&& |', sorter : \{ path : '{ to_upper( sort_field ) }', descending : |
&& z2ui5_cl_util=>boolean_abap_2_json( me->descending )
&& | \} \}|
cancel = client->_event( 'CANCEL' )
search = client->_event(
val = 'SEARCH'
t_arg = VALUE #( ( `${$parameters>/value}` ) ( `${$parameters>/clearButtonPressed}` ) ) )
confirm = client->_event( val = 'CONFIRM'
t_arg = VALUE #( ( `${$parameters>/selectedContexts[0]/sPath}` ) ) )
growing = abap_true
contentwidth = content_width
contentheight = content_height
growingthreshold = growing_threshold
title = title
multiselect = multiselect ).
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_attri_by_any( <tab_out> ).
DELETE lt_comp WHERE name = 'ZZSELKZ'.
@ -120,13 +122,15 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
DATA(cells) = list->cells( ).
LOOP AT lt_comp INTO DATA(ls_comp).
cells->text( `{` && ls_comp-name && `}` ).
cells->text( |\{{ ls_comp-name }\}| ).
ENDLOOP.
DATA(columns) = tab->columns( ).
LOOP AT lt_comp INTO ls_comp.
DATA(text) = COND #(
LET data_element_name = substring_after( val = CAST cl_abap_elemdescr( ls_comp-type )->absolute_name sub = '\TYPE=' )
LET data_element_name = substring_after(
val = CAST cl_abap_elemdescr( ls_comp-type )->absolute_name
sub = '\TYPE=' )
medium_label = z2ui5_cl_util=>rtti_get_data_element_texts( data_element_name )-medium IN
WHEN medium_label IS NOT INITIAL
THEN medium_label
@ -138,7 +142,6 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
ENDMETHOD.
METHOD z2ui5_if_app~main.
me->client = client.
@ -154,7 +157,6 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
ENDMETHOD.
METHOD on_event.
CASE client->get( )-event.
@ -163,7 +165,6 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
ms_result-check_confirmed = abap_true.
on_event_confirm( ).
WHEN 'CANCEL'.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
@ -176,23 +177,22 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
ENDMETHOD.
METHOD result.
result = ms_result.
ENDMETHOD.
METHOD set_output_table.
FIELD-SYMBOLS <row> TYPE any.
FIELD-SYMBOLS <row2> TYPE any.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
FIELD-SYMBOLS <row> TYPE any.
FIELD-SYMBOLS <row2> TYPE any.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
FIELD-SYMBOLS <tab_out2> TYPE STANDARD TABLE.
FIELD-SYMBOLS <field> TYPE any.
FIELD-SYMBOLS <field> TYPE any.
DATA lr_row TYPE REF TO data.
ASSIGN mr_tab->* TO <tab>.
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <tab> ).
@ -203,12 +203,14 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
CATCH cx_root.
check_table_line = abap_true.
DATA(lo_elem) = CAST cl_abap_elemdescr( lo_table->get_table_line_type( ) ).
INSERT VALUE #( name = 'TAB_LINE' type = CAST #( lo_elem ) ) INTO TABLE lt_comp.
INSERT VALUE #( name = 'TAB_LINE'
type = CAST #( lo_elem ) ) INTO TABLE lt_comp.
ENDTRY.
IF NOT line_exists( lt_comp[ name = `ZZSELKZ` ] ).
DATA(lo_type_bool) = cl_abap_structdescr=>describe_by_name( 'ABAP_BOOL' ).
INSERT VALUE #( name = `ZZSELKZ` type = CAST #( lo_type_bool ) ) INTO TABLE lt_comp.
INSERT VALUE #( name = `ZZSELKZ`
type = CAST #( lo_type_bool ) ) INTO TABLE lt_comp.
ENDIF.
DATA(lo_line_type) = cl_abap_structdescr=>create( lt_comp ).
@ -240,12 +242,13 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
METHOD on_event_confirm.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
FIELD-SYMBOLS <row_selected> TYPE any.
FIELD-SYMBOLS <selkz> TYPE any.
FIELD-SYMBOLS <row_result> TYPE any.
FIELD-SYMBOLS <table_result> TYPE ANY TABLE.
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
FIELD-SYMBOLS <row_selected> TYPE any.
FIELD-SYMBOLS <selkz> TYPE any.
FIELD-SYMBOLS <row_result> TYPE any.
FIELD-SYMBOLS <table_result> TYPE ANY TABLE.
FIELD-SYMBOLS <table_line_selected> TYPE any.
ASSIGN mr_tab_popup->* TO <tab>.
ASSIGN ms_result-table->* TO <table_result>.
@ -277,17 +280,17 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
client->popup_destroy( ).
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
client->follow_up_action( client->_event( val = event_confirmed r_data = <table_result> ) ).
client->follow_up_action( client->_event( val = event_confirmed
r_data = <table_result> ) ).
ENDMETHOD.
METHOD on_event_search.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
FIELD-SYMBOLS <tab_out> TYPE STANDARD TABLE.
FIELD-SYMBOLS <tab_out_backup> TYPE STANDARD TABLE.
FIELD-SYMBOLS <row2> TYPE any.
FIELD-SYMBOLS <field2> TYPE any.
FIELD-SYMBOLS <row2> TYPE any.
FIELD-SYMBOLS <field2> TYPE any.
DATA(lt_arg) = client->get( )-t_event_arg.
READ TABLE lt_arg INTO DATA(ls_arg) INDEX 1.
@ -302,7 +305,7 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
LOOP AT <tab_out> ASSIGNING <row2>.
DATA(lv_check_continue) = abap_false.
LOOP AT lt_comp INTO DATA(ls_comp).
DATA(lv_assign) = '<ROW2>-' && ls_comp-name.
DATA(lv_assign) = |<ROW2>-{ ls_comp-name }|.
ASSIGN (lv_assign) TO <field2>.
ASSERT sy-subrc = 0.
IF to_upper( <field2> ) CS to_upper( ls_arg ).
@ -318,5 +321,4 @@ CLASS z2ui5_cl_pop_to_select IMPLEMENTATION.
client->popup_model_update( ).
ENDMETHOD.
ENDCLASS.

View File

@ -1,6 +1,5 @@
CLASS ltcl_app_startup_test DEFINITION FINAL FOR TESTING
DURATION SHORT
RISK LEVEL DANGEROUS.
CLASS ltcl_app_startup_test DEFINITION FINAL
FOR TESTING RISK LEVEL DANGEROUS DURATION SHORT.
PRIVATE SECTION.
METHODS first_test FOR TESTING RAISING cx_static_check.
@ -9,11 +8,9 @@ ENDCLASS.
CLASS ltcl_app_startup_test IMPLEMENTATION.
METHOD first_test.
DATA(lo_app) = z2ui5_cl_app_startup=>factory( ) ##NEEDED.
ENDMETHOD.
ENDCLASS.

View File

@ -1,14 +1,13 @@
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
DURATION MEDIUM
RISK LEVEL DANGEROUS.
CLASS ltcl_unit_test DEFINITION FINAL
FOR TESTING RISK LEVEL DANGEROUS DURATION MEDIUM.
PRIVATE SECTION.
METHODS test_create FOR TESTING RAISING cx_static_check.
METHODS test_create FOR TESTING RAISING cx_static_check.
ENDCLASS.
CLASS ltcl_unit_test IMPLEMENTATION.
CLASS ltcl_unit_test IMPLEMENTATION.
METHOD test_create.
DATA(lo_view) = z2ui5_cl_xml_view=>factory( ).
@ -19,5 +18,4 @@ CLASS ltcl_unit_test IMPLEMENTATION.
ENDIF.
ENDMETHOD.
ENDCLASS.

View File

@ -6,13 +6,13 @@ INTERFACE z2ui5_if_app PUBLIC.
CONSTANTS author TYPE string VALUE 'https://github.com/oblomov-dev'.
CONSTANTS license TYPE string VALUE 'MIT'.
DATA id_draft TYPE string.
DATA id_app TYPE string.
DATA id_draft TYPE string.
DATA id_app TYPE string.
DATA check_initialized TYPE abap_bool.
DATA check_sticky TYPE abap_bool.
DATA check_sticky TYPE abap_bool.
METHODS main
IMPORTING
client TYPE REF TO z2ui5_if_client.
!client TYPE REF TO z2ui5_if_client.
ENDINTERFACE.

View File

@ -41,7 +41,7 @@ INTERFACE z2ui5_if_client
METHODS nest_view_display
IMPORTING
val TYPE clike
id TYPE clike
!id TYPE clike
method_insert TYPE clike
method_destroy TYPE clike OPTIONAL.
@ -51,7 +51,7 @@ INTERFACE z2ui5_if_client
METHODS nest2_view_display
IMPORTING
val TYPE clike
id TYPE clike
!id TYPE clike
method_insert TYPE clike
method_destroy TYPE clike OPTIONAL.
@ -70,7 +70,7 @@ INTERFACE z2ui5_if_client
METHODS popover_display
IMPORTING
xml TYPE clike
!xml TYPE clike
by_id TYPE clike.
METHODS popover_destroy.
@ -87,7 +87,7 @@ INTERFACE z2ui5_if_client
METHODS get_app
IMPORTING
id TYPE clike OPTIONAL
!id TYPE clike OPTIONAL
RETURNING
VALUE(result) TYPE REF TO z2ui5_if_app.
@ -105,42 +105,42 @@ INTERFACE z2ui5_if_client
METHODS message_box_display
IMPORTING
text TYPE any
type TYPE clike DEFAULT `information`
title TYPE clike OPTIONAL
styleclass TYPE clike OPTIONAL
onclose TYPE clike OPTIONAL
!text TYPE any
!type TYPE clike DEFAULT `information`
!title TYPE clike OPTIONAL
styleclass TYPE clike OPTIONAL
onclose TYPE clike OPTIONAL
actions TYPE string_table OPTIONAL
emphasizedaction TYPE clike OPTIONAL
initialfocus TYPE clike OPTIONAL
textdirection TYPE clike OPTIONAL
icon TYPE clike OPTIONAL
details TYPE clike OPTIONAL
closeonnavigation TYPE abap_bool DEFAULT abap_true.
emphasizedaction TYPE clike OPTIONAL
initialfocus TYPE clike OPTIONAL
textdirection TYPE clike OPTIONAL
!icon TYPE clike OPTIONAL
details TYPE clike OPTIONAL
closeonnavigation TYPE abap_bool DEFAULT abap_true.
METHODS message_toast_display
IMPORTING
text TYPE clike
duration TYPE clike OPTIONAL
width TYPE clike OPTIONAL
my TYPE clike OPTIONAL
at TYPE clike OPTIONAL
of TYPE clike OPTIONAL
offset TYPE clike OPTIONAL
collision TYPE clike OPTIONAL
onclose TYPE clike DEFAULT ``
!text TYPE clike
!duration TYPE clike OPTIONAL
!width TYPE clike OPTIONAL
my TYPE clike OPTIONAL
!at TYPE clike OPTIONAL
!of TYPE clike OPTIONAL
!offset TYPE clike OPTIONAL
collision TYPE clike OPTIONAL
onclose TYPE clike DEFAULT ``
autoclose TYPE abap_bool DEFAULT abap_true
animationtimingfunction TYPE clike OPTIONAL
animationduration TYPE clike OPTIONAL
animationtimingfunction TYPE clike OPTIONAL
animationduration TYPE clike OPTIONAL
closeonbrowsernavigation TYPE abap_bool DEFAULT abap_true
class TYPE clike OPTIONAL.
!class TYPE clike OPTIONAL.
METHODS _event
IMPORTING
val TYPE clike OPTIONAL
t_arg TYPE string_table OPTIONAL
val TYPE clike OPTIONAL
t_arg TYPE string_table OPTIONAL
s_ctrl TYPE z2ui5_if_types=>ty_s_event_control OPTIONAL
r_data type data optional
r_data TYPE data OPTIONAL
PREFERRED PARAMETER val
RETURNING
VALUE(result) TYPE string.
@ -155,34 +155,34 @@ INTERFACE z2ui5_if_client
METHODS _bind
IMPORTING
val TYPE data
path TYPE abap_bool DEFAULT abap_false
!path TYPE abap_bool DEFAULT abap_false
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
tab TYPE data OPTIONAL
tab_index TYPE i OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
!tab TYPE data OPTIONAL
tab_index TYPE i OPTIONAL
RETURNING
VALUE(result) TYPE string.
METHODS _bind_edit
IMPORTING
val TYPE data
path TYPE abap_bool DEFAULT abap_false
view TYPE string DEFAULT z2ui5_if_client=>cs_view-main
!path TYPE abap_bool DEFAULT abap_false
view TYPE string DEFAULT z2ui5_if_client=>cs_view-main
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
custom_mapper_back TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
custom_filter_back TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
tab TYPE data OPTIONAL
tab_index TYPE i OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
custom_filter_back TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
!tab TYPE data OPTIONAL
tab_index TYPE i OPTIONAL
RETURNING
VALUE(result) TYPE string.
METHODS _bind_local
IMPORTING
val TYPE data
path TYPE abap_bool DEFAULT abap_false
!path TYPE abap_bool DEFAULT abap_false
custom_mapper TYPE REF TO z2ui5_if_ajson_mapping OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
custom_filter TYPE REF TO z2ui5_if_ajson_filter OPTIONAL
RETURNING
VALUE(result) TYPE string.
@ -192,18 +192,18 @@ INTERFACE z2ui5_if_client
METHODS check_on_init
RETURNING
value(result) TYPE abap_bool.
VALUE(result) TYPE abap_bool.
METHODS check_app_prev_stack
RETURNING
value(result) TYPE abap_bool.
VALUE(result) TYPE abap_bool.
METHODS check_on_navigated
RETURNING
value(result) TYPE abap_bool.
VALUE(result) TYPE abap_bool.
METHODS get_app_prev
RETURNING
value(result) TYPE REF TO z2ui5_if_app.
VALUE(result) TYPE REF TO z2ui5_if_app.
ENDINTERFACE.

View File

@ -46,7 +46,7 @@ INTERFACE z2ui5_if_types
s_draft TYPE ty_s_draft,
s_config TYPE ty_s_config,
t_comp_params TYPE ty_t_name_value,
r_event_data type ref to data,
r_event_data TYPE REF TO data,
END OF ty_s_get.
TYPES: