mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-30 07:16:10 +08:00
refactoring (#872)
* refactoring * update * cell binding fix * formatting
This commit is contained in:
parent
064ddaa543
commit
12c68094cc
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - utility (util)</CTEXT>
|
||||
<CTEXT>abap2UI5 - utility</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
106
src/01/01/z2ui5_cl_util.clas.abap
Normal file
106
src/01/01/z2ui5_cl_util.clas.abap
Normal file
|
@ -0,0 +1,106 @@
|
|||
CLASS z2ui5_cl_util DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC
|
||||
INHERITING FROM z2ui5_cl_util_api.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS db_save
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
data TYPE any
|
||||
check_commit TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS db_load_by_id
|
||||
IMPORTING
|
||||
id TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
CLASS-METHODS db_load_by_handle
|
||||
IMPORTING
|
||||
uname TYPE clike OPTIONAL
|
||||
handle TYPE clike OPTIONAL
|
||||
handle2 TYPE clike OPTIONAL
|
||||
handle3 TYPE clike OPTIONAL
|
||||
EXPORTING
|
||||
VALUE(result) TYPE any.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_util IMPLEMENTATION.
|
||||
|
||||
METHOD db_load_by_handle.
|
||||
|
||||
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
|
||||
|
||||
SELECT data
|
||||
FROM z2ui5_t_fw_02
|
||||
WHERE
|
||||
uname = @uname
|
||||
AND handle = @handle
|
||||
AND handle2 = @handle2
|
||||
AND handle3 = @handle3
|
||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||
|
||||
DATA(ls_db) = lt_db[ 1 ].
|
||||
|
||||
xml_parse(
|
||||
EXPORTING
|
||||
xml = ls_db-data
|
||||
IMPORTING
|
||||
any = result ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_load_by_id.
|
||||
|
||||
DATA lt_db TYPE STANDARD TABLE OF z2ui5_t_fw_02 WITH EMPTY KEY.
|
||||
|
||||
SELECT data
|
||||
FROM z2ui5_t_fw_02
|
||||
WHERE id = @id
|
||||
INTO CORRESPONDING FIELDS OF TABLE @lt_db.
|
||||
|
||||
DATA(ls_db) = lt_db[ 1 ].
|
||||
|
||||
xml_parse(
|
||||
EXPORTING
|
||||
xml = ls_db-data
|
||||
IMPORTING
|
||||
any = result ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_save.
|
||||
|
||||
DATA(ls_db) = VALUE z2ui5_t_fw_02(
|
||||
id = uuid_get_c32( )
|
||||
uname = uname
|
||||
handle = handle
|
||||
handle2 = handle2
|
||||
handle3 = handle3
|
||||
data = xml_stringify( data ) ).
|
||||
|
||||
MODIFY z2ui5_t_fw_02 FROM @ls_db.
|
||||
|
||||
IF check_commit = abap_true.
|
||||
COMMIT WORK AND WAIT.
|
||||
ENDIF.
|
||||
|
||||
result = ls_db-id.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -3,14 +3,13 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_CLIENT</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_UTIL</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - app api</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - specfic functions</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
File diff suppressed because it is too large
Load Diff
|
@ -99,7 +99,6 @@
|
|||
*
|
||||
* METHODS test_trans_json_any_2__w_struc FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_trans_json_2_any__w_dref FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_trans_ref_tab_2_tab 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.
|
||||
|
@ -261,39 +260,39 @@
|
|||
*
|
||||
* DATA(lv_bool) = xsdbool( 1 = 1 ).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool )
|
||||
* act = z2ui5_cl_util=>boolean_check_by_data( lv_bool )
|
||||
* exp = abap_true ).
|
||||
*
|
||||
* lv_bool = xsdbool( 1 = 2 ).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>boolean_check_by_data( lv_bool )
|
||||
* act = z2ui5_cl_util=>boolean_check_by_data( lv_bool )
|
||||
* exp = abap_true ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>boolean_check_by_data( abap_true )
|
||||
* act = z2ui5_cl_util=>boolean_check_by_data( abap_true )
|
||||
* exp = abap_true ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>boolean_check_by_data( abap_false )
|
||||
* act = z2ui5_cl_util=>boolean_check_by_data( abap_false )
|
||||
* exp = abap_true ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_create.
|
||||
*
|
||||
* DATA(lo_test) = NEW z2ui5_cl_util_func( ) ##NEEDED.
|
||||
* DATA(lo_test) = NEW z2ui5_cl_util( ) ##NEEDED.
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_rtti_get_classname_by_ref.
|
||||
*
|
||||
* DATA(lo_test) = NEW z2ui5_cl_util_func( ).
|
||||
* DATA(lv_name) = z2ui5_cl_util_func=>rtti_get_classname_by_ref( lo_test ).
|
||||
* cl_abap_unit_assert=>assert_equals( exp = `Z2UI5_CL_UTIL_FUNC`
|
||||
* DATA(lo_test) = NEW z2ui5_cl_util( ).
|
||||
* DATA(lv_name) = z2ui5_cl_util=>rtti_get_classname_by_ref( lo_test ).
|
||||
* cl_abap_unit_assert=>assert_equals( exp = `z2ui5_cl_util`
|
||||
* act = lv_name ).
|
||||
*
|
||||
* DATA(lo_test2) = NEW ltcl_test_app( ).
|
||||
* DATA(lv_name2) = z2ui5_cl_util_func=>rtti_get_classname_by_ref( lo_test2 ).
|
||||
* DATA(lv_name2) = z2ui5_cl_util=>rtti_get_classname_by_ref( lo_test2 ).
|
||||
* cl_abap_unit_assert=>assert_equals( exp = `LTCL_TEST_APP`
|
||||
* act = lv_name2 ).
|
||||
*
|
||||
|
@ -302,9 +301,9 @@
|
|||
* METHOD test_boolean_abap_2_json.
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals( exp = `false`
|
||||
* act = z2ui5_cl_util_func=>boolean_abap_2_json( abap_false ) ).
|
||||
* act = z2ui5_cl_util=>boolean_abap_2_json( abap_false ) ).
|
||||
*
|
||||
* IF `{ABCD}` <> z2ui5_cl_util_func=>boolean_abap_2_json( `{ABCD}` ).
|
||||
* IF `{ABCD}` <> z2ui5_cl_util=>boolean_abap_2_json( `{ABCD}` ).
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
|
@ -312,9 +311,9 @@
|
|||
*
|
||||
* METHOD test_time_get_timestampl.
|
||||
*
|
||||
* DATA(lv_time) = z2ui5_cl_util_func=>time_get_timestampl( ).
|
||||
* DATA(lv_time) = z2ui5_cl_util=>time_get_timestampl( ).
|
||||
*
|
||||
* DATA(lv_time2) = z2ui5_cl_util_func=>time_substract_seconds(
|
||||
* DATA(lv_time2) = z2ui5_cl_util=>time_substract_seconds(
|
||||
* time = lv_time
|
||||
* seconds = 60 * 60 * 4 ).
|
||||
*
|
||||
|
@ -330,8 +329,8 @@
|
|||
*
|
||||
* METHOD test_time_substract_seconds.
|
||||
*
|
||||
* DATA(lv_time) = z2ui5_cl_util_func=>time_get_timestampl( ).
|
||||
* DATA(lv_time2) = z2ui5_cl_util_func=>time_get_timestampl( ).
|
||||
* DATA(lv_time) = z2ui5_cl_util=>time_get_timestampl( ).
|
||||
* DATA(lv_time2) = z2ui5_cl_util=>time_get_timestampl( ).
|
||||
*
|
||||
* IF lv_time IS INITIAL OR lv_time2 IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -345,7 +344,7 @@
|
|||
*
|
||||
* METHOD test_c_trim.
|
||||
*
|
||||
* IF z2ui5_cl_util_func=>c_trim( ` JsadfHHs ` ) <> `JsadfHHs`.
|
||||
* IF z2ui5_cl_util=>c_trim( ` JsadfHHs ` ) <> `JsadfHHs`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
|
@ -353,7 +352,7 @@
|
|||
*
|
||||
* METHOD test_c_trim_lower.
|
||||
*
|
||||
* IF z2ui5_cl_util_func=>c_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`.
|
||||
* IF z2ui5_cl_util=>c_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
|
@ -361,7 +360,7 @@
|
|||
*
|
||||
* METHOD test_c_trim_upper.
|
||||
*
|
||||
* IF z2ui5_cl_util_func=>c_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`.
|
||||
* IF z2ui5_cl_util=>c_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
|
@ -369,7 +368,7 @@
|
|||
*
|
||||
* METHOD test_func_get_uuid_32.
|
||||
*
|
||||
* DATA(lv_uuid) = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
* DATA(lv_uuid) = z2ui5_cl_util=>uuid_get_c32( ).
|
||||
*
|
||||
* IF lv_uuid IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -383,7 +382,7 @@
|
|||
*
|
||||
* METHOD test_func_get_uuid_22.
|
||||
*
|
||||
* DATA(lv_uuid) = z2ui5_cl_util_func=>uuid_get_c22( ).
|
||||
* DATA(lv_uuid) = z2ui5_cl_util=>uuid_get_c22( ).
|
||||
*
|
||||
* IF lv_uuid IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -397,7 +396,7 @@
|
|||
*
|
||||
* METHOD test_func_get_user_tech.
|
||||
*
|
||||
* DATA(lv_uname) = z2ui5_cl_util_func=>user_get_tech( ).
|
||||
* DATA(lv_uname) = z2ui5_cl_util=>user_get_tech( ).
|
||||
* IF sy-uname <> lv_uname OR lv_uname IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
|
@ -407,7 +406,7 @@
|
|||
* METHOD test_x_raise.
|
||||
*
|
||||
* TRY.
|
||||
* z2ui5_cl_util_func=>x_raise( ).
|
||||
* z2ui5_cl_util=>x_raise( ).
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* CATCH cx_root.
|
||||
* ENDTRY.
|
||||
|
@ -417,13 +416,13 @@
|
|||
* METHOD test_x_check_raise.
|
||||
*
|
||||
* TRY.
|
||||
* z2ui5_cl_util_func=>x_check_raise( xsdbool( 1 = 1 ) ).
|
||||
* z2ui5_cl_util=>x_check_raise( xsdbool( 1 = 1 ) ).
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* CATCH cx_root.
|
||||
* ENDTRY.
|
||||
*
|
||||
* TRY.
|
||||
* z2ui5_cl_util_func=>x_check_raise( xsdbool( 1 = 3 ) ).
|
||||
* z2ui5_cl_util=>x_check_raise( xsdbool( 1 = 3 ) ).
|
||||
* CATCH cx_root.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDTRY.
|
||||
|
@ -459,7 +458,7 @@
|
|||
* DATA mr_data TYPE REF TO data.
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
*
|
||||
* z2ui5_cl_util_func=>trans_json_2_any(
|
||||
* z2ui5_cl_util=>json_parse(
|
||||
* EXPORTING
|
||||
* val = lv_test
|
||||
* CHANGING
|
||||
|
@ -490,7 +489,7 @@
|
|||
* DATA(ls_row) = VALUE ty_row( ).
|
||||
* ls_row-title = `test`.
|
||||
*
|
||||
* DATA(lv_json) = z2ui5_cl_util_func=>trans_json_by_any( ls_row ).
|
||||
* DATA(lv_json) = z2ui5_cl_util=>json_stringify( ls_row ).
|
||||
*
|
||||
* IF lv_json IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -498,41 +497,11 @@
|
|||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_trans_ref_tab_2_tab.
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF ty_row,
|
||||
* title TYPE string,
|
||||
* value TYPE string,
|
||||
* selected TYPE abap_bool,
|
||||
* END OF ty_row.
|
||||
* TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
*
|
||||
* DATA(lv_result) = `[{"TITLE":"Test","VALUE":"this is a description","SELECTED":true},{"TITLE":"Test2","VALUE":"this is a new descr","SELECTED":false}]`.
|
||||
*
|
||||
* DATA lo_data TYPE REF TO data.
|
||||
* /ui2/cl_json=>deserialize( EXPORTING json = lv_result
|
||||
* CHANGING data = lo_data ).
|
||||
*
|
||||
* DATA(lt_tab2) = VALUE ty_t_tab( ).
|
||||
* z2ui5_cl_util_func=>trans_ref_tab_2_tab(
|
||||
* EXPORTING ir_tab_from = lo_data
|
||||
* IMPORTING t_result = lt_tab2 ).
|
||||
*
|
||||
*
|
||||
* DATA(lt_tab) = VALUE ty_t_tab( ( title = 'Test' value = 'this is a description' selected = abap_true )
|
||||
* ( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ).
|
||||
*
|
||||
* IF lt_tab <> lt_tab2.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_url_param_create_url.
|
||||
*
|
||||
* DATA(lt_param) = z2ui5_cl_util_func=>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_func=>url_param_create_url( lt_param ).
|
||||
* 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 ).
|
||||
*
|
||||
* IF lv_url <> `sap-client=100&app_start=z2ui5_cl_app_hello_world`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -542,7 +511,7 @@
|
|||
*
|
||||
* METHOD test_url_param_get.
|
||||
*
|
||||
* DATA(lv_param) = z2ui5_cl_util_func=>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` ).
|
||||
*
|
||||
|
@ -554,7 +523,7 @@
|
|||
*
|
||||
* METHOD test_url_param_get_tab.
|
||||
*
|
||||
* DATA(lt_param) = z2ui5_cl_util_func=>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` ).
|
||||
* IF lt_param[ n = `sap-client` ]-v <> `100`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
|
@ -567,7 +536,7 @@
|
|||
*
|
||||
* METHOD test_url_param_set.
|
||||
*
|
||||
* DATA(lv_param) = z2ui5_cl_util_func=>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` ).
|
||||
|
@ -581,7 +550,7 @@
|
|||
* METHOD test_x_check_raise_not.
|
||||
*
|
||||
* TRY.
|
||||
* z2ui5_cl_util_func=>x_check_raise( xsdbool( 1 = 2 ) ).
|
||||
* z2ui5_cl_util=>x_check_raise( xsdbool( 1 = 2 ) ).
|
||||
*
|
||||
* CATCH z2ui5_cx_util_error.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -591,7 +560,7 @@
|
|||
* METHOD test_rtti_get_type_name.
|
||||
*
|
||||
* DATA(lv_xsdbool) = VALUE xsdboolean( ).
|
||||
* DATA(lv_name) = z2ui5_cl_util_func=>rtti_get_type_name( lv_xsdbool ).
|
||||
* DATA(lv_name) = z2ui5_cl_util=>rtti_get_type_name( lv_xsdbool ).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_name
|
||||
* exp = `XSDBOOLEAN` ).
|
||||
|
@ -602,7 +571,7 @@
|
|||
*
|
||||
* DATA(lv_string) = VALUE string( ).
|
||||
*
|
||||
* DATA(lv_type_kind) = z2ui5_cl_util_func=>rtti_get_type_kind( lv_string ).
|
||||
* 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
|
||||
|
@ -610,7 +579,7 @@
|
|||
*
|
||||
*
|
||||
* CREATE DATA lr_string.
|
||||
* lv_type_kind = z2ui5_cl_util_func=>rtti_get_type_kind( 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 ).
|
||||
|
@ -622,13 +591,13 @@
|
|||
* DATA(lv_string) = VALUE string( ).
|
||||
* DATA lr_string TYPE REF TO string.
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>rtti_check_type_kind_dref( lv_string )
|
||||
* act = z2ui5_cl_util=>rtti_check_type_kind_dref( lv_string )
|
||||
* exp = abap_false ).
|
||||
*
|
||||
*
|
||||
* CREATE DATA lr_string.
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = z2ui5_cl_util_func=>rtti_check_type_kind_dref( lr_string )
|
||||
* act = z2ui5_cl_util=>rtti_check_type_kind_dref( lr_string )
|
||||
* exp = abap_true ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
|
@ -636,7 +605,7 @@
|
|||
* METHOD test_rtti_get_t_attri_by_obj.
|
||||
*
|
||||
* DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
* DATA(lt_attri) = z2ui5_cl_util_func=>rtti_get_t_attri_by_object( lo_obj ).
|
||||
* DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_attri_by_object( lo_obj ).
|
||||
*
|
||||
* IF lines( lt_attri ) <> 7.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -675,7 +644,7 @@
|
|||
*
|
||||
* DATA(ls_row) = VALUE ty_row( ).
|
||||
*
|
||||
* DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( ls_row ).
|
||||
* DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( ls_row ).
|
||||
*
|
||||
* IF lines( lt_comp ) <> 7.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -708,7 +677,7 @@
|
|||
* METHOD test_trans_xml_any_2__w_obj.
|
||||
*
|
||||
* DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util_func=>trans_xml_by_any( lo_obj ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( lo_obj ).
|
||||
*
|
||||
* IF lv_xml IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -718,10 +687,10 @@
|
|||
* METHOD test_trans_xml_2_any__w_obj.
|
||||
*
|
||||
* DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util_func=>trans_xml_by_any( lo_obj ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( lo_obj ).
|
||||
*
|
||||
* CLEAR lo_obj.
|
||||
* z2ui5_cl_util_func=>trans_xml_2_any(
|
||||
* z2ui5_cl_util=>xml_parse(
|
||||
* EXPORTING
|
||||
* xml = lv_xml
|
||||
* IMPORTING
|
||||
|
@ -749,7 +718,7 @@
|
|||
* DATA(ls_row) = VALUE ty_row( ).
|
||||
* ls_row-value = `test`.
|
||||
*
|
||||
* DATA(lv_xml) = z2ui5_cl_util_func=>trans_xml_by_any( ls_row ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( ls_row ).
|
||||
*
|
||||
* IF lv_xml IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
|
@ -774,9 +743,9 @@
|
|||
* DATA(ls_row2) = VALUE ty_row( ).
|
||||
* ls_row-value = `test`.
|
||||
*
|
||||
* DATA(lv_xml) = z2ui5_cl_util_func=>trans_xml_by_any( ls_row ).
|
||||
* DATA(lv_xml) = z2ui5_cl_util=>xml_stringify( ls_row ).
|
||||
*
|
||||
* z2ui5_cl_util_func=>trans_xml_2_any(
|
||||
* z2ui5_cl_util=>xml_parse(
|
||||
* EXPORTING
|
||||
* xml = lv_xml
|
||||
* IMPORTING
|
||||
|
@ -790,22 +759,22 @@
|
|||
*
|
||||
* METHOD test_c_replace_assign_struc.
|
||||
*
|
||||
* DATA(lv_result) = z2ui5_cl_util_func=>c_replace_assign_struc( `MO_APP->MS_STRUC->*`).
|
||||
* DATA(lv_result) = z2ui5_cl_util=>c_replace_assign_struc( `MO_APP->MS_STRUC->*`).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = 'MO_APP->MS_STRUC->' ).
|
||||
*
|
||||
* DATA(lv_result2) = z2ui5_cl_util_func=>c_replace_assign_struc( `MO_APP->MS_STRUC-MS_STRUC->*`).
|
||||
* DATA(lv_result2) = z2ui5_cl_util=>c_replace_assign_struc( `MO_APP->MS_STRUC-MS_STRUC->*`).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result2
|
||||
* exp = 'MO_APP->MS_STRUC-MS_STRUC->' ).
|
||||
*
|
||||
* DATA(lv_result3) = z2ui5_cl_util_func=>c_replace_assign_struc( `*MO_APP->*MS_STRUC->*`).
|
||||
* DATA(lv_result3) = z2ui5_cl_util=>c_replace_assign_struc( `*MO_APP->*MS_STRUC->*`).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result3
|
||||
* exp = `*MO_APP->*MS_STRUC->` ).
|
||||
*
|
||||
* DATA(lv_result4) = z2ui5_cl_util_func=>c_replace_assign_struc( `*MO_APP->*MS_STRUC`).
|
||||
* DATA(lv_result4) = z2ui5_cl_util=>c_replace_assign_struc( `*MO_APP->*MS_STRUC`).
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result4
|
||||
* exp = `*MO_APP->*MS_STRUC-` ).
|
||||
|
@ -815,7 +784,7 @@
|
|||
*
|
||||
* METHOD test_c_trim_horizontal_tab.
|
||||
*
|
||||
* IF z2ui5_cl_util_func=>c_trim( |{ cl_abap_char_utilities=>horizontal_tab }|
|
||||
* IF z2ui5_cl_util=>c_trim( |{ cl_abap_char_utilities=>horizontal_tab }|
|
||||
* && |JsadfHHs|
|
||||
* && |{ cl_abap_char_utilities=>horizontal_tab }| ) <> `JsadfHHs`.
|
||||
* cl_abap_unit_assert=>fail( ).
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_UTIL_FUNC</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_UTIL_API</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - utility function</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - simplified abap apis</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
488
src/01/01/z2ui5_cl_util_stmpncfctn.clas.abap
Normal file
488
src/01/01/z2ui5_cl_util_stmpncfctn.clas.abap
Normal file
|
@ -0,0 +1,488 @@
|
|||
CLASS z2ui5_cl_util_stmpncfctn DEFINITION
|
||||
PUBLIC
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_data_element_texts,
|
||||
header TYPE string,
|
||||
short TYPE string,
|
||||
medium TYPE string,
|
||||
long TYPE string,
|
||||
END OF ty_data_element_texts.
|
||||
|
||||
CLASS-METHODS method_get_source
|
||||
IMPORTING
|
||||
iv_classname TYPE clike
|
||||
iv_methodname TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string_table.
|
||||
|
||||
CLASS-METHODS uuid_get_c32
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS uuid_get_c22
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS rtti_get_data_element_texts
|
||||
IMPORTING
|
||||
i_data_element_name TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_data_element_texts.
|
||||
|
||||
CLASS-METHODS conv_decode_x_base64
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE xstring.
|
||||
|
||||
CLASS-METHODS conv_encode_x_base64
|
||||
IMPORTING
|
||||
val TYPE xstring
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS conv_get_string_by_xstring
|
||||
IMPORTING
|
||||
val TYPE xstring
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS conv_get_xstring_by_string
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE xstring.
|
||||
|
||||
CLASS-METHODS rtti_get_classes_impl_intf
|
||||
IMPORTING
|
||||
!val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string_table.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_util_stmpncfctn IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD rtti_get_data_element_texts.
|
||||
|
||||
DATA:
|
||||
data_element_name TYPE c LENGTH 30,
|
||||
ddic_ref TYPE REF TO data,
|
||||
data_element TYPE REF TO object,
|
||||
content TYPE REF TO object,
|
||||
BEGIN OF ddic,
|
||||
reptext TYPE string,
|
||||
scrtext_s TYPE string,
|
||||
scrtext_m TYPE string,
|
||||
scrtext_l TYPE string,
|
||||
END OF ddic,
|
||||
exists TYPE abap_bool.
|
||||
|
||||
data_element_name = i_data_element_name.
|
||||
|
||||
TRY.
|
||||
cl_abap_typedescr=>describe_by_name( 'T100' ).
|
||||
|
||||
DATA(struct_desrc) = CAST cl_abap_structdescr( cl_abap_structdescr=>describe_by_name( 'DFIES' ) ).
|
||||
|
||||
CREATE DATA ddic_ref TYPE HANDLE struct_desrc.
|
||||
ASSIGN ddic_ref->* TO FIELD-SYMBOL(<ddic>).
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
DATA(data_descr) = CAST cl_abap_datadescr( cl_abap_elemdescr=>describe_by_name( data_element_name ) ).
|
||||
|
||||
CALL METHOD data_descr->('GET_DDIC_FIELD')
|
||||
RECEIVING
|
||||
p_flddescr = <ddic>
|
||||
EXCEPTIONS
|
||||
not_found = 1
|
||||
no_ddic_type = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ddic = CORRESPONDING #( <ddic> ).
|
||||
result-header = ddic-reptext.
|
||||
result-short = ddic-scrtext_s.
|
||||
result-medium = ddic-scrtext_m.
|
||||
result-long = ddic-scrtext_l.
|
||||
|
||||
CATCH cx_root.
|
||||
CALL METHOD ('XCO_CP_ABAP_DICTIONARY')=>('DATA_ELEMENT')
|
||||
EXPORTING
|
||||
iv_name = data_element_name
|
||||
RECEIVING
|
||||
ro_data_element = data_element.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~EXISTS')
|
||||
RECEIVING
|
||||
rv_exists = exists.
|
||||
|
||||
IF exists = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL METHOD data_element->('IF_XCO_AD_DATA_ELEMENT~CONTENT')
|
||||
RECEIVING
|
||||
ro_content = content.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_HEADING_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_heading_field_label = result-header.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_SHORT_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_short_field_label = result-short.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_MEDIUM_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_medium_field_label = result-medium.
|
||||
|
||||
CALL METHOD content->('IF_XCO_DTEL_CONTENT~GET_LONG_FIELD_LABEL')
|
||||
RECEIVING
|
||||
rs_long_field_label = result-long.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_classes_impl_intf.
|
||||
|
||||
DATA obj TYPE REF TO object.
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
DATA lt_implementation_names TYPE string_table.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_impl,
|
||||
clsname TYPE c LENGTH 30,
|
||||
refclsname TYPE c LENGTH 30,
|
||||
END OF ty_s_impl.
|
||||
DATA lt_impl TYPE STANDARD TABLE OF ty_s_impl WITH DEFAULT KEY.
|
||||
TYPES: BEGIN OF ty_s_key,
|
||||
intkey TYPE c LENGTH 30,
|
||||
END OF ty_s_key.
|
||||
DATA ls_key TYPE ty_s_key.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('XCO_CP_ABAP')=>interface
|
||||
EXPORTING
|
||||
iv_name = val
|
||||
RECEIVING
|
||||
ro_interface = obj.
|
||||
|
||||
|
||||
ASSIGN obj->('IF_XCO_AO_INTERFACE~IMPLEMENTATIONS') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
ASSIGN obj->('IF_XCO_INTF_IMPLEMENTATIONS_FC~ALL') TO <any>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE cx_sy_dyn_call_illegal_class.
|
||||
ENDIF.
|
||||
obj = <any>.
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET').
|
||||
|
||||
CALL METHOD obj->('IF_XCO_INTF_IMPLEMENTATIONS~GET_NAMES')
|
||||
RECEIVING
|
||||
rt_names = lt_implementation_names.
|
||||
|
||||
result = lt_implementation_names.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
ls_key-intkey = val.
|
||||
|
||||
DATA(lv_fm) = `SEO_INTERFACE_IMPLEM_GET_ALL`.
|
||||
CALL FUNCTION lv_fm
|
||||
EXPORTING
|
||||
intkey = ls_key
|
||||
IMPORTING
|
||||
impkeys = lt_impl
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
|
||||
LOOP AT lt_impl REFERENCE INTO DATA(lr_impl).
|
||||
INSERT CONV #( lr_impl->clsname ) INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD conv_get_string_by_xstring.
|
||||
|
||||
DATA conv TYPE REF TO object.
|
||||
|
||||
TRY.
|
||||
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_in
|
||||
RECEIVING
|
||||
instance = conv.
|
||||
|
||||
CALL METHOD conv->('IF_ABAP_CONV_IN~CONVERT')
|
||||
EXPORTING
|
||||
source = val
|
||||
RECEIVING
|
||||
result = result.
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(conv_in_class) = 'CL_ABAP_CONV_IN_CE'.
|
||||
CALL METHOD (conv_in_class)=>create
|
||||
EXPORTING
|
||||
encoding = 'UTF-8'
|
||||
RECEIVING
|
||||
conv = conv.
|
||||
|
||||
CALL METHOD conv->('CONVERT')
|
||||
EXPORTING
|
||||
input = val
|
||||
IMPORTING
|
||||
data = result.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD conv_get_xstring_by_string.
|
||||
|
||||
DATA conv TYPE REF TO object.
|
||||
|
||||
TRY.
|
||||
CALL METHOD ('CL_ABAP_CONV_CODEPAGE')=>create_out
|
||||
RECEIVING
|
||||
instance = conv.
|
||||
|
||||
CALL METHOD conv->('IF_ABAP_CONV_OUT~CONVERT')
|
||||
EXPORTING
|
||||
source = val
|
||||
RECEIVING
|
||||
result = result.
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(conv_out_class) = 'CL_ABAP_CONV_OUT_CE'.
|
||||
CALL METHOD (conv_out_class)=>create
|
||||
EXPORTING
|
||||
encoding = 'UTF-8'
|
||||
RECEIVING
|
||||
conv = conv.
|
||||
|
||||
CALL METHOD conv->('CONVERT')
|
||||
EXPORTING
|
||||
data = val
|
||||
IMPORTING
|
||||
buffer = result.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD conv_decode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
encoded = val
|
||||
RECEIVING
|
||||
decoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('DECODE_X_BASE64')
|
||||
EXPORTING
|
||||
encoded = val
|
||||
RECEIVING
|
||||
decoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
METHOD conv_encode_x_base64.
|
||||
|
||||
TRY.
|
||||
|
||||
CALL METHOD ('CL_WEB_HTTP_UTILITY')=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(classname) = 'CL_HTTP_UTILITY'.
|
||||
CALL METHOD (classname)=>('ENCODE_X_BASE64')
|
||||
EXPORTING
|
||||
unencoded = val
|
||||
RECEIVING
|
||||
encoded = result.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD uuid_get_c22.
|
||||
|
||||
DATA uuid TYPE c LENGTH 22.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c22
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_22 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
result = replace( val = result
|
||||
sub = `}`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `{`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `"`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
result = replace( val = result
|
||||
sub = `'`
|
||||
with = `0`
|
||||
occ = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD uuid_get_c32.
|
||||
DATA uuid TYPE c LENGTH 32.
|
||||
|
||||
TRY.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = `CL_SYSTEM_UUID`.
|
||||
CALL METHOD (lv_classname)=>if_system_uuid_static~create_uuid_c32
|
||||
RECEIVING
|
||||
uuid = uuid.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_class.
|
||||
|
||||
DATA(lv_fm) = `GUID_CREATE`.
|
||||
CALL FUNCTION lv_fm
|
||||
IMPORTING
|
||||
ev_guid_32 = uuid.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = uuid.
|
||||
|
||||
CATCH cx_root.
|
||||
ASSERT 1 = 0.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD method_get_source.
|
||||
|
||||
DATA object TYPE REF TO object.
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
DATA lt_source TYPE string_table.
|
||||
DATA lt_string TYPE string_table.
|
||||
|
||||
TRY.
|
||||
|
||||
DATA(lv_class) = to_upper( iv_classname ).
|
||||
DATA(lv_method) = to_upper( iv_methodname ).
|
||||
|
||||
CALL METHOD ('XCO_CP_ABAP')=>('CLASS')
|
||||
EXPORTING
|
||||
iv_name = lv_class
|
||||
RECEIVING
|
||||
ro_class = object.
|
||||
|
||||
ASSIGN ('OBJECT->IF_XCO_AO_CLASS~IMPLEMENTATION') TO <any>.
|
||||
object = <any>.
|
||||
|
||||
CALL METHOD object->('IF_XCO_CLAS_IMPLEMENTATION~METHOD')
|
||||
EXPORTING
|
||||
iv_name = lv_method
|
||||
RECEIVING
|
||||
ro_method = object.
|
||||
|
||||
CALL METHOD object->('IF_XCO_CLAS_I_METHOD~CONTENT')
|
||||
RECEIVING
|
||||
ro_content = object.
|
||||
|
||||
CALL METHOD object->('IF_XCO_CLAS_I_METHOD_CONTENT~GET_SOURCE')
|
||||
RECEIVING
|
||||
rt_source = result.
|
||||
|
||||
CATCH cx_sy_dyn_call_error.
|
||||
|
||||
DATA(lv_name) = 'CL_OO_FACTORY'.
|
||||
CALL METHOD (lv_name)=>('CREATE_INSTANCE')
|
||||
RECEIVING
|
||||
result = object.
|
||||
|
||||
CALL METHOD object->('IF_OO_CLIF_SOURCE_FACTORY~CREATE_CLIF_SOURCE')
|
||||
EXPORTING
|
||||
clif_name = lv_class
|
||||
RECEIVING
|
||||
result = object.
|
||||
|
||||
CALL METHOD object->('IF_OO_CLIF_SOURCE~GET_SOURCE')
|
||||
IMPORTING
|
||||
source = lt_source.
|
||||
|
||||
DATA(lv_check_method) = abap_false.
|
||||
LOOP AT lt_source INTO DATA(lv_source).
|
||||
DATA(lv_source_upper) = to_upper( lv_source ).
|
||||
|
||||
IF lv_source_upper CS `ENDMETHOD`.
|
||||
lv_check_method = abap_false.
|
||||
ENDIF.
|
||||
|
||||
IF lv_source_upper CS `METHOD ` && lv_method.
|
||||
lv_check_method = abap_true.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
IF lv_check_method = abap_true.
|
||||
INSERT lv_source INTO TABLE lt_string.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
result = lt_string.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
16
src/01/01/z2ui5_cl_util_stmpncfctn.clas.xml
Normal file
16
src/01/01/z2ui5_cl_util_stmpncfctn.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_UTIL_STMPNCFCTN</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - running everywhere snippets</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -40,7 +40,7 @@ CLASS z2ui5_cx_util_error IMPLEMENTATION.
|
|||
CATCH cx_root.
|
||||
ms_error-text = val.
|
||||
ENDTRY.
|
||||
ms_error-uuid = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
ms_error-uuid = z2ui5_cl_util=>uuid_get_c32( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - fw helper</CTEXT>
|
||||
<CTEXT>abap2UI5 - core services</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -1,172 +1,108 @@
|
|||
CLASS z2ui5_cl_fw_hlp_binder DEFINITION
|
||||
CLASS z2ui5_cl_core_bind_srv DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA mo_app TYPE REF TO z2ui5_cl_fw_app.
|
||||
DATA mr_attri TYPE REF TO z2ui5_if_fw_types=>ty_s_attri.
|
||||
DATA ms_config TYPE z2ui5_if_fw_types=>ty_s_bind_config.
|
||||
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_fw_app.
|
||||
!app TYPE REF TO z2ui5_cl_core_app .
|
||||
|
||||
METHODS bind_local
|
||||
METHODS main_local
|
||||
IMPORTING
|
||||
val TYPE data
|
||||
config TYPE z2ui5_if_fw_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 .
|
||||
|
||||
METHODS bind
|
||||
METHODS main
|
||||
IMPORTING
|
||||
val TYPE data
|
||||
type TYPE string
|
||||
config TYPE z2ui5_if_fw_types=>ty_s_bind_config OPTIONAL
|
||||
!val TYPE data
|
||||
!type TYPE string
|
||||
!config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE string .
|
||||
|
||||
METHODS clear_bind
|
||||
METHODS main_cell
|
||||
IMPORTING
|
||||
val TYPE string.
|
||||
|
||||
METHODS ui5_set_arg_string
|
||||
IMPORTING
|
||||
val TYPE string_table
|
||||
!val TYPE data
|
||||
!type TYPE string
|
||||
!config TYPE z2ui5_if_core_types=>ty_s_bind_config OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE string .
|
||||
|
||||
METHODS ui5_event
|
||||
METHODS clear
|
||||
IMPORTING
|
||||
val TYPE clike OPTIONAL
|
||||
check_view_destroy TYPE abap_bool DEFAULT abap_false
|
||||
t_arg TYPE string_table OPTIONAL
|
||||
PREFERRED PARAMETER val
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
METHODS ui5_event_client
|
||||
!val TYPE string.
|
||||
|
||||
METHODS bind_tab_cell
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
t_arg TYPE string_table OPTIONAL
|
||||
!iv_name TYPE string
|
||||
!i_val TYPE data
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS update_attri.
|
||||
|
||||
METHODS check_raise_existing_binding.
|
||||
|
||||
METHODS check_raise_new_binding.
|
||||
|
||||
METHODS get_client_name
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS update_model_attri.
|
||||
|
||||
METHODS check_raise_existing.
|
||||
|
||||
METHODS check_raise_new.
|
||||
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_binder IMPLEMENTATION.
|
||||
|
||||
METHOD ui5_event.
|
||||
|
||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_util_func=>boolean_abap_2_json( check_view_destroy ) && ` }`.
|
||||
result = result && ui5_set_arg_string( t_arg ).
|
||||
|
||||
ENDMETHOD.
|
||||
CLASS z2ui5_cl_core_bind_srv IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD ui5_event_client.
|
||||
METHOD bind_tab_cell.
|
||||
|
||||
result = `onEventFrontend( { 'EVENT' : '` && val && `' }` && ui5_set_arg_string( t_arg ).
|
||||
FIELD-SYMBOLS <ele> TYPE any.
|
||||
FIELD-SYMBOLS <row> TYPE any.
|
||||
DATA lr_ref_in TYPE REF TO data.
|
||||
DATA lr_ref TYPE REF TO data.
|
||||
|
||||
ENDMETHOD.
|
||||
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
||||
ASSIGN ms_config-tab->* TO <tab>.
|
||||
ASSIGN <tab>[ ms_config-tab_index ] TO <row>.
|
||||
DATA(lt_attri) = z2ui5_cl_util=>rtti_get_t_comp_by_data( <row> ).
|
||||
|
||||
METHOD ui5_set_arg_string.
|
||||
LOOP AT lt_attri ASSIGNING FIELD-SYMBOL(<comp>).
|
||||
|
||||
IF val IS NOT INITIAL.
|
||||
ASSIGN COMPONENT <comp>-name OF STRUCTURE <row> TO <ele>.
|
||||
lr_ref_in = REF #( <ele> ).
|
||||
|
||||
LOOP AT val REFERENCE INTO DATA(lr_arg).
|
||||
DATA(lv_new) = lr_arg->*.
|
||||
IF lv_new IS INITIAL.
|
||||
CONTINUE.
|
||||
lr_ref = REF #( i_val ).
|
||||
IF lr_ref = 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.
|
||||
IF lv_new(1) <> `$` AND lv_new(1) <> `{`.
|
||||
lv_new = `"` && lv_new && `"`.
|
||||
ENDIF.
|
||||
result = result && `, ` && lv_new.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
result = result && `)`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD bind.
|
||||
|
||||
ms_config = config.
|
||||
mv_type = type.
|
||||
mr_attri = mo_app->attri_get_by_data( val ).
|
||||
|
||||
IF mr_attri->bind_type IS NOT INITIAL.
|
||||
check_raise_existing_binding( ).
|
||||
result = mr_attri->name_client.
|
||||
ELSE.
|
||||
check_raise_new_binding( ).
|
||||
update_attri( ).
|
||||
result = mr_attri->name_client.
|
||||
ENDIF.
|
||||
|
||||
IF ms_config-path_only = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD bind_local.
|
||||
TRY.
|
||||
|
||||
IF config-custom_mapper IS BOUND.
|
||||
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = config-custom_mapper ) ).
|
||||
ELSE.
|
||||
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||
ENDIF.
|
||||
|
||||
ajson->set( iv_path = `/` iv_val = val ).
|
||||
|
||||
IF config-custom_filter IS BOUND.
|
||||
ajson = ajson->filter( config-custom_filter ).
|
||||
ELSE.
|
||||
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_id) = to_upper( z2ui5_cl_util_func=>uuid_get_c22( ) ).
|
||||
INSERT VALUE #( name_client = |/{ lv_id }|
|
||||
name = lv_id
|
||||
json_bind_local = ajson
|
||||
bind_type = z2ui5_if_fw_types=>cs_bind_type-one_time )
|
||||
INTO TABLE mo_app->mt_attri.
|
||||
|
||||
result = |/{ lv_id }|.
|
||||
|
||||
IF ms_config-path_only = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
ASSERT x IS NOT BOUND.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_raise_existing_binding.
|
||||
METHOD check_raise_existing.
|
||||
|
||||
IF mr_attri->bind_type <> mv_type.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
|
@ -195,7 +131,7 @@ CLASS z2ui5_cl_fw_hlp_binder IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD check_raise_new_binding.
|
||||
METHOD check_raise_new.
|
||||
|
||||
IF mr_attri->custom_filter_back IS BOUND.
|
||||
TRY.
|
||||
|
@ -222,7 +158,7 @@ CLASS z2ui5_cl_fw_hlp_binder IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD clear_bind.
|
||||
METHOD clear.
|
||||
|
||||
mo_app->mt_attri[ name = val ]-check_dissolved = abap_false.
|
||||
|
||||
|
@ -246,12 +182,107 @@ CLASS z2ui5_cl_fw_hlp_binder IMPLEMENTATION.
|
|||
|
||||
result = replace( val = mr_attri->name sub = `-` with = `/` ).
|
||||
result = replace( val = result sub = `>` with = `*` ).
|
||||
result = COND #( WHEN mv_type = z2ui5_if_fw_types=>cs_bind_type-two_way THEN `/EDIT` ) && `/` && result.
|
||||
result = COND #( WHEN mv_type = z2ui5_if_core_types=>cs_bind_type-two_way THEN `/EDIT` ) && `/` && result.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_attri.
|
||||
METHOD main.
|
||||
|
||||
IF config-tab IS BOUND.
|
||||
|
||||
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
||||
ASSIGN config-tab->* TO <tab>.
|
||||
|
||||
IF <tab> IS NOT INITIAL.
|
||||
|
||||
result = main_cell(
|
||||
val = val
|
||||
type = type
|
||||
config = config ).
|
||||
RETURN.
|
||||
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ms_config = config.
|
||||
mv_type = type.
|
||||
mr_attri = mo_app->attri_get_by_data( val ).
|
||||
|
||||
IF mr_attri->bind_type IS NOT INITIAL.
|
||||
check_raise_existing( ).
|
||||
result = mr_attri->name_client.
|
||||
ELSE.
|
||||
check_raise_new( ).
|
||||
update_model_attri( ).
|
||||
result = mr_attri->name_client.
|
||||
ENDIF.
|
||||
|
||||
IF ms_config-path_only = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD main_cell.
|
||||
|
||||
ms_config = config.
|
||||
mv_type = type.
|
||||
|
||||
FIELD-SYMBOLS <tab> TYPE STANDARD TABLE.
|
||||
ASSIGN config-tab->* TO <tab>.
|
||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( mo_app ).
|
||||
result = lo_bind->main( val = <tab> type = type config = value #( path_only = abap_true ) ).
|
||||
|
||||
result = bind_tab_cell(
|
||||
iv_name = result
|
||||
i_val = val ).
|
||||
|
||||
IF ms_config-path_only = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD main_local.
|
||||
TRY.
|
||||
|
||||
IF config-custom_mapper IS BOUND.
|
||||
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = config-custom_mapper ) ).
|
||||
ELSE.
|
||||
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||
ENDIF.
|
||||
|
||||
ajson->set( iv_path = `/` iv_val = val ).
|
||||
|
||||
IF config-custom_filter IS BOUND.
|
||||
ajson = ajson->filter( config-custom_filter ).
|
||||
ELSE.
|
||||
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_id) = to_upper( z2ui5_cl_util=>uuid_get_c22( ) ).
|
||||
INSERT VALUE #( name_client = |/{ lv_id }|
|
||||
name = lv_id
|
||||
json_bind_local = ajson
|
||||
bind_type = z2ui5_if_core_types=>cs_bind_type-one_time )
|
||||
INTO TABLE mo_app->mt_attri.
|
||||
|
||||
result = |/{ lv_id }|.
|
||||
|
||||
IF ms_config-path_only = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
ASSERT x IS NOT BOUND.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_model_attri.
|
||||
|
||||
mr_attri->bind_type = mv_type.
|
||||
mr_attri->view = ms_config-view.
|
|
@ -6,7 +6,7 @@ CLASS ltcl_test_binder DEFINITION FINAL FOR TESTING
|
|||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_binder DEFINITION LOCAL FRIENDS ltcl_test_binder.
|
||||
CLASS z2ui5_cl_core_bind_srv DEFINITION LOCAL FRIENDS ltcl_test_binder.
|
||||
|
||||
CLASS ltcl_test_binder IMPLEMENTATION.
|
||||
|
17
src/01/02/01/z2ui5_cl_core_bind_srv.clas.xml
Normal file
17
src/01/02/01/z2ui5_cl_core_bind_srv.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_CORE_BIND_SRV</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - frontend data binding</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,4 +1,4 @@
|
|||
CLASS z2ui5_cl_fw_hlp_db DEFINITION
|
||||
CLASS z2ui5_cl_core_draft_srv DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
@ -7,18 +7,18 @@ CLASS z2ui5_cl_fw_hlp_db 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
|
||||
id TYPE clike
|
||||
!id TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_s_db.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
|
||||
|
||||
METHODS read_info
|
||||
IMPORTING
|
||||
id TYPE clike
|
||||
!id TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_types=>ty_s_draft.
|
||||
|
||||
|
@ -31,20 +31,20 @@ CLASS z2ui5_cl_fw_hlp_db DEFINITION
|
|||
!id TYPE clike
|
||||
!check_load_app TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_s_db.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_db.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_db IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_core_draft_srv IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD cleanup.
|
||||
|
||||
DATA(lv_four_hours_ago) = z2ui5_cl_util_func=>time_substract_seconds(
|
||||
time = z2ui5_cl_util_func=>time_get_timestampl( )
|
||||
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_fw_01 WHERE timestampl < @lv_four_hours_ago.
|
||||
|
@ -60,8 +60,8 @@ CLASS z2ui5_cl_fw_hlp_db IMPLEMENTATION.
|
|||
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_func=>user_get_tech( )
|
||||
timestampl = z2ui5_cl_util_func=>time_get_timestampl( )
|
||||
uname = z2ui5_cl_util=>user_get_tech( )
|
||||
timestampl = z2ui5_cl_util=>time_get_timestampl( )
|
||||
data = model_xml
|
||||
).
|
||||
|
||||
|
@ -76,13 +76,6 @@ CLASS z2ui5_cl_fw_hlp_db IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read_draft.
|
||||
|
||||
result = read( id ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read.
|
||||
|
||||
IF check_load_app = abap_true.
|
||||
|
@ -110,14 +103,21 @@ CLASS z2ui5_cl_fw_hlp_db IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read_draft.
|
||||
|
||||
result = read( id ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD read_info.
|
||||
|
||||
data(ls_db) = read(
|
||||
DATA(ls_db) = read(
|
||||
id = id
|
||||
check_load_app = abap_false ).
|
||||
|
||||
result = CORRESPONDING #( ls_db ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HLP_DB</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_DRAFT_SRV</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - db draft</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - backend drafts</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
75
src/01/02/01/z2ui5_cl_core_event_srv.clas.abap
Normal file
75
src/01/02/01/z2ui5_cl_core_event_srv.clas.abap
Normal file
|
@ -0,0 +1,75 @@
|
|||
CLASS z2ui5_cl_core_event_srv DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS get_event
|
||||
IMPORTING
|
||||
!val TYPE clike OPTIONAL
|
||||
!check_view_destroy TYPE abap_bool DEFAULT abap_false
|
||||
!t_arg TYPE string_table OPTIONAL
|
||||
PREFERRED PARAMETER val
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS get_event_client
|
||||
IMPORTING
|
||||
!val TYPE clike
|
||||
!t_arg TYPE string_table OPTIONAL
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS get_t_arg
|
||||
IMPORTING
|
||||
val TYPE string_table
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_core_event_srv IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD get_event.
|
||||
|
||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_util=>boolean_abap_2_json( check_view_destroy ) && ` }`.
|
||||
result = result && get_t_arg( t_arg ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_event_client.
|
||||
|
||||
result = `onEventFrontend( { 'EVENT' : '` && val && `' }` && get_t_arg( t_arg ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_t_arg.
|
||||
|
||||
IF val IS NOT INITIAL.
|
||||
|
||||
LOOP AT val REFERENCE INTO DATA(lr_arg).
|
||||
DATA(lv_new) = lr_arg->*.
|
||||
IF lv_new IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
IF lv_new(1) <> `$` AND lv_new(1) <> `{`.
|
||||
lv_new = `"` && lv_new && `"`.
|
||||
ENDIF.
|
||||
result = result && `, ` && lv_new.
|
||||
ENDLOOP.
|
||||
|
||||
ENDIF.
|
||||
|
||||
result = result && `)`.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
22
src/01/02/01/z2ui5_cl_core_event_srv.clas.testclasses.abap
Normal file
22
src/01/02/01/z2ui5_cl_core_event_srv.clas.testclasses.abap
Normal file
|
@ -0,0 +1,22 @@
|
|||
CLASS ltcl_test_db DEFINITION FINAL FOR TESTING
|
||||
DURATION LONG
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
DATA mr_data TYPE REF TO data ##NEEDED.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_test_db IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/01/02/01/z2ui5_cl_core_event_srv.clas.xml
Normal file
17
src/01/02/01/z2ui5_cl_core_event_srv.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_CORE_EVENT_SRV</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - frontend event</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,32 +1,33 @@
|
|||
CLASS z2ui5_cl_fw_hlp_json_mapper DEFINITION
|
||||
CLASS z2ui5_cl_core_json_srv DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_ajson_filter .
|
||||
|
||||
METHODS request_json_to_abap
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
!val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_s_http_request_post.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_s_http_request_post.
|
||||
|
||||
METHODS response_abap_to_json
|
||||
IMPORTING
|
||||
val TYPE z2ui5_if_fw_types=>ty_s_http_response_post
|
||||
!val TYPE z2ui5_if_core_types=>ty_s_http_response_post
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS model_client_to_server
|
||||
IMPORTING
|
||||
view TYPE string
|
||||
t_attri TYPE REF TO z2ui5_if_fw_types=>ty_t_attri
|
||||
model TYPE REF TO z2ui5_if_ajson.
|
||||
!view TYPE string
|
||||
!t_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
||||
!model TYPE REF TO z2ui5_if_ajson.
|
||||
|
||||
METHODS model_server_to_client
|
||||
IMPORTING
|
||||
t_attri TYPE z2ui5_if_fw_types=>ty_t_attri
|
||||
!t_attri TYPE z2ui5_if_core_types=>ty_t_attri
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
|
@ -36,65 +37,13 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_json_mapper IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD model_server_to_client.
|
||||
TRY.
|
||||
|
||||
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
||||
|
||||
"(1) set pretty mode
|
||||
IF lr_attri->custom_mapper IS BOUND.
|
||||
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = lr_attri->custom_mapper ) ).
|
||||
ELSE.
|
||||
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||
ENDIF.
|
||||
|
||||
"(2) read attribute of end-user app & write to json
|
||||
CASE lr_attri->bind_type.
|
||||
WHEN z2ui5_if_fw_types=>cs_bind_type-one_way
|
||||
OR z2ui5_if_fw_types=>cs_bind_type-two_way.
|
||||
|
||||
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<attribute>).
|
||||
ASSERT sy-subrc = 0.
|
||||
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = <attribute> ).
|
||||
|
||||
WHEN z2ui5_if_fw_types=>cs_bind_type-one_time.
|
||||
ajson->set( iv_ignore_empty = abap_false iv_path = `/` iv_val = lr_attri->json_bind_local ).
|
||||
|
||||
WHEN OTHERS.
|
||||
ASSERT `` = `ERROR_UNKNOWN_BIND_MODE`.
|
||||
ENDCASE.
|
||||
|
||||
"(4) set compress mode
|
||||
"todo performance - add and filter in a single loop
|
||||
IF lr_attri->custom_filter IS BOUND.
|
||||
ajson = ajson->filter( lr_attri->custom_filter ).
|
||||
ELSE.
|
||||
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
ENDIF.
|
||||
|
||||
"(5) write into result
|
||||
"todo performance - write directly into result
|
||||
ajson_result->set( iv_path = lr_attri->name_client iv_val = ajson ).
|
||||
ENDLOOP.
|
||||
|
||||
result = ajson_result->stringify( ).
|
||||
result = COND #( WHEN result IS INITIAL THEN `{}` ELSE result ).
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
ASSERT x IS NOT BOUND.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
CLASS z2ui5_cl_core_json_srv IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD model_client_to_server.
|
||||
|
||||
LOOP AT t_attri->* REFERENCE INTO DATA(lr_attri)
|
||||
WHERE bind_type = z2ui5_if_fw_types=>cs_bind_type-two_way
|
||||
WHERE bind_type = z2ui5_if_core_types=>cs_bind_type-two_way
|
||||
AND view = view.
|
||||
TRY.
|
||||
|
||||
|
@ -124,6 +73,58 @@ CLASS z2ui5_cl_fw_hlp_json_mapper IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_server_to_client.
|
||||
TRY.
|
||||
|
||||
DATA(ajson_result) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ) ).
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
||||
|
||||
"(1) set pretty mode
|
||||
IF lr_attri->custom_mapper IS BOUND.
|
||||
DATA(ajson) = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = lr_attri->custom_mapper ) ).
|
||||
ELSE.
|
||||
ajson = CAST z2ui5_if_ajson( z2ui5_cl_ajson=>create_empty( ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||
ENDIF.
|
||||
|
||||
"(2) read attribute of end-user app & write to json
|
||||
CASE lr_attri->bind_type.
|
||||
WHEN z2ui5_if_core_types=>cs_bind_type-one_way
|
||||
OR z2ui5_if_core_types=>cs_bind_type-two_way.
|
||||
|
||||
ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<attribute>).
|
||||
ASSERT sy-subrc = 0.
|
||||
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 ).
|
||||
|
||||
WHEN OTHERS.
|
||||
ASSERT `` = `ERROR_UNKNOWN_BIND_MODE`.
|
||||
ENDCASE.
|
||||
|
||||
"(4) set compress mode
|
||||
"todo performance - add and filter in a single loop
|
||||
IF lr_attri->custom_filter IS BOUND.
|
||||
ajson = ajson->filter( lr_attri->custom_filter ).
|
||||
ELSE.
|
||||
ajson = ajson->filter( z2ui5_cl_ajson_filter_lib=>create_empty_filter( ) ).
|
||||
ENDIF.
|
||||
|
||||
"(5) write into result
|
||||
"todo performance - write directly into result
|
||||
ajson_result->set( iv_path = lr_attri->name_client iv_val = ajson ).
|
||||
ENDLOOP.
|
||||
|
||||
result = ajson_result->stringify( ).
|
||||
result = COND #( WHEN result IS INITIAL THEN `{}` ELSE result ).
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
ASSERT x IS NOT BOUND.
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD request_json_to_abap.
|
||||
TRY.
|
||||
|
||||
|
@ -145,12 +146,12 @@ CLASS z2ui5_cl_fw_hlp_json_mapper IMPLEMENTATION.
|
|||
IF result-s_frontend-id IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
result-s_control-app_start = z2ui5_cl_util_func=>c_trim_upper( result-s_frontend-app_start ).
|
||||
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper( result-s_frontend-app_start ).
|
||||
IF result-s_control-app_start IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
result-s_control-app_start = z2ui5_cl_util_func=>c_trim_upper(
|
||||
z2ui5_cl_util_func=>url_param_get( val = `app_start` url = result-s_frontend-search ) ).
|
||||
result-s_control-app_start = z2ui5_cl_util=>c_trim_upper(
|
||||
z2ui5_cl_util=>url_param_get( val = `app_start` url = result-s_frontend-search ) ).
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
|
@ -167,7 +168,7 @@ CLASS z2ui5_cl_fw_hlp_json_mapper IMPLEMENTATION.
|
|||
ii_custom_mapping = z2ui5_cl_ajson_mapping=>create_upper_case( ) ) ).
|
||||
|
||||
ajson_result->set( iv_path = `/` iv_val = val-s_frontend ).
|
||||
ajson_result = ajson_result->filter( NEW z2ui5_cl_fw_hlp_json_mapper( ) ).
|
||||
ajson_result = ajson_result->filter( NEW z2ui5_cl_core_json_srv( ) ).
|
||||
DATA(lv_frontend) = ajson_result->stringify( ).
|
||||
|
||||
result = `{` &&
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HLP_DISSOLVER</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_JSON_SRV</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - attribute dissolver</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - front/back json mapper</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,16 +1,16 @@
|
|||
CLASS z2ui5_cl_fw_hlp_dissolver DEFINITION
|
||||
CLASS z2ui5_cl_core_model_srv DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA mt_attri TYPE REF TO z2ui5_if_fw_types=>ty_t_attri.
|
||||
DATA mt_attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri.
|
||||
DATA mo_app TYPE REF TO object.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
attri TYPE REF TO z2ui5_if_fw_types=>ty_t_attri
|
||||
attri TYPE REF TO z2ui5_if_core_types=>ty_t_attri
|
||||
app TYPE REF TO object.
|
||||
|
||||
METHODS main.
|
||||
|
@ -20,7 +20,7 @@ CLASS z2ui5_cl_fw_hlp_dissolver DEFINITION
|
|||
|
||||
METHODS attri_get_val_ref
|
||||
IMPORTING
|
||||
ir_bind TYPE REF TO z2ui5_if_fw_types=>ty_s_attri
|
||||
ir_bind TYPE REF TO z2ui5_if_core_types=>ty_s_attri
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO data.
|
||||
|
||||
|
@ -28,27 +28,27 @@ CLASS z2ui5_cl_fw_hlp_dissolver DEFINITION
|
|||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_t_attri.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||
|
||||
METHODS get_t_attri_by_struc
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_t_attri.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||
|
||||
METHODS get_t_attri_by_include
|
||||
IMPORTING
|
||||
type TYPE REF TO cl_abap_datadescr
|
||||
attri TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_t_attri.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||
|
||||
METHODS get_t_attri_by_oref
|
||||
IMPORTING
|
||||
val TYPE clike OPTIONAL
|
||||
PREFERRED PARAMETER val
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_if_fw_types=>ty_t_attri.
|
||||
VALUE(result) TYPE z2ui5_if_core_types=>ty_t_attri.
|
||||
|
||||
METHODS dissolve_struc.
|
||||
METHODS dissolve_dref.
|
||||
|
@ -59,7 +59,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
||||
CLASS Z2UI5_CL_CORE_MODEL_SRV IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD attri_get_val_ref.
|
||||
|
@ -153,7 +153,7 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <data> ).
|
||||
|
||||
DATA(ls_new_bind) = VALUE z2ui5_if_fw_types=>ty_s_attri(
|
||||
DATA(ls_new_bind) = VALUE z2ui5_if_core_types=>ty_s_attri(
|
||||
name = val && `->*`
|
||||
type_kind = lo_descr->type_kind
|
||||
type = lo_descr->get_relative_name( )
|
||||
|
@ -173,7 +173,7 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
|
||||
DATA(lv_element) = attri && lr_comp->name.
|
||||
|
||||
DATA(ls_attri) = VALUE z2ui5_if_fw_types=>ty_s_attri(
|
||||
DATA(ls_attri) = VALUE z2ui5_if_core_types=>ty_s_attri(
|
||||
name = lv_element
|
||||
type_kind = lr_comp->type_kind ).
|
||||
INSERT ls_attri INTO TABLE result.
|
||||
|
@ -192,12 +192,12 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_attri2) = z2ui5_cl_util_func=>rtti_get_t_attri_by_object( <obj> ).
|
||||
DATA(lt_attri2) = z2ui5_cl_util=>rtti_get_t_attri_by_object( <obj> ).
|
||||
|
||||
LOOP AT lt_attri2 INTO DATA(ls_attri2)
|
||||
WHERE visibility = cl_abap_classdescr=>public
|
||||
AND is_interface = abap_false.
|
||||
DATA(ls_attri) = CORRESPONDING z2ui5_if_fw_types=>ty_s_attri( ls_attri2 ).
|
||||
DATA(ls_attri) = CORRESPONDING z2ui5_if_core_types=>ty_s_attri( ls_attri2 ).
|
||||
IF val IS NOT INITIAL.
|
||||
ls_attri-name = val && `->` && ls_attri-name.
|
||||
ls_attri-check_temp = abap_true.
|
||||
|
@ -215,9 +215,9 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
ASSIGN (lv_name) TO <attribute>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <attribute> ).
|
||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( <attribute> ).
|
||||
|
||||
DATA(lv_attri) = z2ui5_cl_util_func=>c_replace_assign_struc( val ).
|
||||
DATA(lv_attri) = z2ui5_cl_util=>c_replace_assign_struc( val ).
|
||||
LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
|
||||
|
||||
DATA(lv_element) = lv_attri && lr_comp->name.
|
||||
|
@ -237,16 +237,16 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
ELSE.
|
||||
|
||||
DATA(lv_type_name) = substring_after( val = lr_comp->type->absolute_name sub = '\TYPE=').
|
||||
IF z2ui5_cl_util_func=>boolean_check_by_name( lv_type_name ).
|
||||
IF z2ui5_cl_util=>boolean_check_by_name( lv_type_name ).
|
||||
|
||||
DATA(ls_attri) = VALUE z2ui5_if_fw_types=>ty_s_attri(
|
||||
DATA(ls_attri) = VALUE z2ui5_if_core_types=>ty_s_attri(
|
||||
name = lv_element
|
||||
type = 'ABAP_BOOL'
|
||||
type_kind = lr_comp->type->type_kind ).
|
||||
|
||||
ELSE.
|
||||
|
||||
ls_attri = VALUE z2ui5_if_fw_types=>ty_s_attri(
|
||||
ls_attri = VALUE z2ui5_if_core_types=>ty_s_attri(
|
||||
name = lv_element
|
||||
type_kind = lr_comp->type->type_kind ).
|
||||
|
||||
|
@ -290,7 +290,7 @@ CLASS z2ui5_cl_fw_hlp_dissolver IMPLEMENTATION.
|
|||
|
||||
LOOP AT mt_attri->* REFERENCE INTO DATA(lr_attri)
|
||||
WHERE r_ref IS NOT BOUND AND
|
||||
bind_type <> z2ui5_if_fw_types=>cs_bind_type-one_time.
|
||||
bind_type <> z2ui5_if_core_types=>cs_bind_type-one_time.
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
WHEN cl_abap_classdescr=>typekind_iref
|
702
src/01/02/01/z2ui5_cl_core_model_srv.clas.testclasses.abap
Normal file
702
src/01/02/01/z2ui5_cl_core_model_srv.clas.testclasses.abap
Normal file
|
@ -0,0 +1,702 @@
|
|||
*
|
||||
*CLASS ltcl_test_dissolve DEFINITION DEFERRED.
|
||||
*CLASS z2ui5_cl_core_model_srv DEFINITION LOCAL FRIENDS ltcl_test_dissolve.
|
||||
*
|
||||
*CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
|
||||
* DURATION SHORT
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF s_01,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_02,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_03,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_04,
|
||||
* input TYPE string,
|
||||
* END OF s_04,
|
||||
* END OF s_03,
|
||||
* END OF s_02,
|
||||
* END OF s_01.
|
||||
*
|
||||
* DATA ms_struc TYPE s_01 ##NEEDED.
|
||||
* DATA mv_value TYPE string ##NEEDED.
|
||||
* DATA mr_value TYPE REF TO data.
|
||||
* DATA mr_struc TYPE REF TO s_01.
|
||||
* DATA mo_app TYPE REF TO ltcl_test_dissolve.
|
||||
*
|
||||
* PRIVATE SECTION.
|
||||
* METHODS test_dissolve_init FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_dissolve_struc FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_dissolve_dref FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_dissolve_oref FOR TESTING RAISING cx_static_check.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_dissolve IMPLEMENTATION.
|
||||
*
|
||||
* METHOD test_dissolve_init.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_core_model_srv( ).
|
||||
* lo_bind->mo_app = lo_app.
|
||||
*
|
||||
* lo_bind->dissolve_init( ).
|
||||
* DATA(lt_dissolve) = lo_bind->mt_attri.
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_VALUE` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MV_VALUE` ] OPTIONAL ) ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_dissolve_dref.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
* lo_bind->mo_app = lo_app.
|
||||
*
|
||||
* CREATE DATA lo_app->mr_struc.
|
||||
* CREATE DATA lo_app->mr_value TYPE string.
|
||||
*
|
||||
* lo_bind->dissolve_init( ).
|
||||
* lo_bind->dissolve_dref( ).
|
||||
* DATA(lt_dissolve) = lo_bind->mt_attri.
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_STRUC->*` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_VALUE->*` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MV_VALUE` ] OPTIONAL ) ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_dissolve_oref.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||
* lo_app->mo_app = NEW #( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
* lo_bind->mo_app = lo_app.
|
||||
*
|
||||
* CREATE DATA lo_app->mo_app->mr_struc.
|
||||
* CREATE DATA lo_app->mo_app->mr_value TYPE string.
|
||||
*
|
||||
* lo_bind->dissolve_init( ).
|
||||
* lo_bind->dissolve_oref( ).
|
||||
* DATA(lt_dissolve) = lo_bind->mt_attri.
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP->MV_VALUE` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP->MR_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP->MR_VALUE` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP->MS_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_VALUE` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MV_VALUE` ] OPTIONAL ) ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_dissolve_struc.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_dissolve( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
* lo_bind->mo_app = lo_app.
|
||||
*
|
||||
* lo_bind->dissolve_init( ).
|
||||
* lo_bind->dissolve_struc( ).
|
||||
* DATA(lt_dissolve) = lo_bind->mt_attri.
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MO_APP` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC-INPUT` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC-S_02-INPUT` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC-S_02-S_03-S_04-INPUT` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MR_VALUE` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MS_STRUC` ] OPTIONAL ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( VALUE #( lt_dissolve[ name = `MV_VALUE` ] OPTIONAL ) ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_bind DEFINITION DEFERRED.
|
||||
*CLASS z2ui5_cl_fw_binding DEFINITION LOCAL FRIENDS ltcl_test_bind.
|
||||
*
|
||||
*CLASS ltcl_test_bind DEFINITION FINAL FOR TESTING
|
||||
* DURATION MEDIUM
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF s_01,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_02,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_03,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_04,
|
||||
* input TYPE string,
|
||||
* END OF s_04,
|
||||
* END OF s_03,
|
||||
* END OF s_02,
|
||||
* END OF s_01.
|
||||
*
|
||||
* DATA ms_struc TYPE s_01.
|
||||
* DATA mv_value TYPE string.
|
||||
* DATA mr_value TYPE REF TO data.
|
||||
* DATA mr_struc TYPE REF TO s_01.
|
||||
* DATA mo_app TYPE REF TO ltcl_test_bind.
|
||||
*
|
||||
* PRIVATE SECTION.
|
||||
* METHODS test_value FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_struc FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_dref_val FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_dref_struc FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_oref_val FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_oref_struc FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_oref_dref_val FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_local FOR TESTING RAISING cx_static_check.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_bind IMPLEMENTATION.
|
||||
*
|
||||
* METHOD test_value.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( lo_app->mv_value ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MV_VALUE` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MV_VALUE` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*
|
||||
* METHOD test_struc.
|
||||
*
|
||||
** DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
** DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
**
|
||||
** lo_bind->mo_app = lo_app.
|
||||
** lo_bind->mr_data = REF #( lo_app->ms_struc-s_02-s_03-s_04-input ).
|
||||
** lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
**
|
||||
** DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MS_STRUC-S_02-S_03-S_04-INPUT` ).
|
||||
** DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
**
|
||||
** cl_abap_unit_assert=>assert_equals(
|
||||
** act = lv_result
|
||||
** exp = `/MS_STRUC/S_02-S_03-S_04-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*
|
||||
* METHOD test_dref_val.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* CREATE DATA lo_app->mr_value TYPE string.
|
||||
* ASSIGN lo_app->mr_value->* TO <any>.
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( <any> ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MR_VALUE->*` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MR_VALUE/*` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_dref_struc.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* CREATE DATA lo_app->mr_struc.
|
||||
* ASSIGN lo_app->mr_struc->input TO <any>.
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( <any> ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MR_STRUC->INPUT` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MR_STRUC/INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_oref_val.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* lo_app->mo_app = NEW #( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( lo_app->mo_app->mv_value ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MO_APP->MV_VALUE` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_APP/MV_VALUE` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_oref_struc.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* lo_app->mo_app = NEW #( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( lo_app->mo_app->ms_struc-input ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MO_APP->MS_STRUC-INPUT` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_APP/MS_STRUC-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_oref_dref_val.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_bind( ).
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* lo_app->mo_app = NEW #( ).
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
*
|
||||
* CREATE DATA lo_app->mo_app->mr_value TYPE string.
|
||||
* ASSIGN lo_app->mo_app->mr_value->* TO <any>.
|
||||
*
|
||||
* lo_bind->mo_app = lo_app.
|
||||
* lo_bind->mr_data = REF #( <any> ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way.
|
||||
*
|
||||
* DATA(ls_attri) = VALUE z2ui5_cl_fw_binding=>ty_s_attri( name = `MO_APP->MR_VALUE->*` ).
|
||||
* DATA(lv_result) = lo_bind->bind( REF #( ls_attri ) ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_APP/MR_VALUE->*` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_local.
|
||||
*
|
||||
* DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
* DATA(lv_value) = `test`.
|
||||
* lo_bind->mr_data = REF #( lv_value ).
|
||||
* lo_bind->mv_type = z2ui5_cl_fw_binding=>cs_bind_type-one_time.
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->bind_local( ).
|
||||
*
|
||||
* IF lv_result IS INITIAL.
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_value DEFINITION FINAL FOR TESTING
|
||||
* DURATION MEDIUM
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
* DATA mv_value TYPE string.
|
||||
*
|
||||
* PROTECTED SECTION.
|
||||
* PRIVATE SECTION.
|
||||
*
|
||||
* METHODS test_one_way FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_one_way_t_attri FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_one_way_multiple FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_two_way FOR TESTING RAISING cx_static_check.
|
||||
* METHODS test_one_way_two_way_error FOR TESTING RAISING cx_static_check.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_value IMPLEMENTATION.
|
||||
*
|
||||
* METHOD test_one_way.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_value( ).
|
||||
* lo_app->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MV_VALUE` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_two_way.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_value( ).
|
||||
* lo_app->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/EDIT/MV_VALUE` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_t_attri.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_value( ).
|
||||
* lo_app->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* lo_bind->main( ).
|
||||
*
|
||||
* DATA(ls_attri) = lo_bind->mt_attri[ name = `MV_VALUE` bind_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way ] ##NEEDED.
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_multiple.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_value( ).
|
||||
* lo_app->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* DATA(lo_bind2) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* DATA(lv_result2) = lo_bind2->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = lv_result2 ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_two_way_error.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_value( ).
|
||||
* lo_app->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* lo_bind->main( ).
|
||||
*
|
||||
* DATA(lo_bind2) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lo_bind->mt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||
* data = lo_app->mv_value ).
|
||||
*
|
||||
* TRY.
|
||||
*
|
||||
* lo_bind2->main( ).
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
*
|
||||
* CATCH cx_root.
|
||||
* ENDTRY.
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_structure DEFINITION FINAL FOR TESTING
|
||||
* DURATION MEDIUM
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF s_01,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_02,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_03,
|
||||
* input TYPE string,
|
||||
* BEGIN OF s_04,
|
||||
* input TYPE string,
|
||||
* END OF s_04,
|
||||
* END OF s_03,
|
||||
* END OF s_02,
|
||||
* END OF s_01.
|
||||
*
|
||||
* DATA ms_struc TYPE s_01.
|
||||
*
|
||||
* 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_lev4_long_name FOR TESTING RAISING cx_static_check.
|
||||
*
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_structure IMPLEMENTATION.
|
||||
*
|
||||
* METHOD test_one_way_lev1.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_structure( ).
|
||||
* lo_app->ms_struc-input = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->ms_struc-input ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MS_STRUC/INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_lev2.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_structure( ).
|
||||
* lo_app->ms_struc-s_02-input = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->ms_struc-s_02-input ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MS_STRUC/S_02-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_lev3.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_structure( ).
|
||||
* lo_app->ms_struc-s_02-s_03-input = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->ms_struc-s_02-s_03-input ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MS_STRUC/S_02-S_03-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_lev4_long_name.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_structure( ).
|
||||
* lo_app->ms_struc-s_02-s_03-s_04-input = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->ms_struc-s_02-s_03-s_04-input ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MS_STRUC/S_02-S_03-S_04-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_data_ref DEFINITION FINAL FOR TESTING
|
||||
* DURATION MEDIUM
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
*
|
||||
*
|
||||
* DATA mr_value TYPE REF TO data ##NEEDED.
|
||||
* DATA mr_struc TYPE REF TO data ##NEEDED.
|
||||
*
|
||||
* PRIVATE SECTION.
|
||||
*
|
||||
* 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_data_ref IMPLEMENTATION.
|
||||
*
|
||||
* METHOD test_one_way_value.
|
||||
*
|
||||
*
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_struc.
|
||||
*
|
||||
*
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
||||
*
|
||||
*CLASS ltcl_test_main_object DEFINITION FINAL FOR TESTING
|
||||
* DURATION MEDIUM
|
||||
* RISK LEVEL HARMLESS.
|
||||
*
|
||||
* PUBLIC SECTION.
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF ty_s_01,
|
||||
* input TYPE string,
|
||||
* input_02 TYPE string,
|
||||
* input_03 TYPE string,
|
||||
* END OF ty_s_01.
|
||||
*
|
||||
* DATA mv_value TYPE string.
|
||||
* DATA ms_struc TYPE ty_s_01.
|
||||
*
|
||||
* DATA mo_obj TYPE REF TO ltcl_test_main_object.
|
||||
*
|
||||
* PRIVATE SECTION.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* METHOD test_one_way_value.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_object( ).
|
||||
* lo_app->mo_obj = NEW #( ).
|
||||
* lo_app->mo_obj->mv_value = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->mo_obj->mv_value ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_OBJ/MV_VALUE` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
* METHOD test_one_way_struc.
|
||||
*
|
||||
* DATA(lo_app) = NEW ltcl_test_main_object( ).
|
||||
* lo_app->mo_obj = NEW #( ).
|
||||
* lo_app->mo_obj->ms_struc-input = `my value`.
|
||||
*
|
||||
* DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* attri = lt_attri
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = lo_app->mo_obj->ms_struc-input ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_OBJ/MS_STRUC-INPUT` ).
|
||||
*
|
||||
* ENDMETHOD.
|
||||
*
|
||||
*ENDCLASS.
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HLP_BINDER</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_MODEL_SRV</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - data binder</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - backend model</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,21 +0,0 @@
|
|||
CLASS ltcl_test_dissolver DEFINITION FINAL FOR TESTING
|
||||
DURATION LONG
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_fw_hlp_dissolver DEFINITION LOCAL FRIENDS ltcl_test_dissolver.
|
||||
|
||||
CLASS ltcl_test_dissolver IMPLEMENTATION.
|
||||
|
||||
METHOD first_test.
|
||||
|
||||
* DATA(lo_http) = NEW z2ui5_cl_fw_http_post( `` ).
|
||||
* DATA(lo_app) = NEW z2ui5_cl_fw_controller( lo_http ).
|
||||
* DATA(lo_client) = NEW z2ui5_cl_fw_client( lo_app ) ##NEEDED.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - core (fw)</CTEXT>
|
||||
<CTEXT>abap2UI5 - core</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -1,45 +1,45 @@
|
|||
CLASS z2ui5_cl_fw_action DEFINITION
|
||||
CLASS z2ui5_cl_core_action DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA mo_http_post TYPE REF TO z2ui5_cl_fw_http_post.
|
||||
DATA mo_app TYPE REF TO z2ui5_cl_fw_app.
|
||||
DATA mo_http_post TYPE REF TO z2ui5_cl_core_http_post.
|
||||
DATA mo_app TYPE REF TO z2ui5_cl_core_app.
|
||||
|
||||
DATA ms_actual TYPE z2ui5_if_fw_types=>ty_s_actual.
|
||||
DATA ms_next TYPE z2ui5_if_fw_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
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS factory_system_error
|
||||
IMPORTING
|
||||
ix TYPE REF TO cx_root
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS factory_first_start
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS factory_by_frontend
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS factory_stack_leave
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS factory_stack_call
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_action.
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
val TYPE REF TO z2ui5_cl_fw_http_post.
|
||||
val TYPE REF TO z2ui5_cl_core_http_post.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
@ -47,7 +47,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_core_action IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -61,9 +61,9 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
METHOD factory_by_frontend.
|
||||
|
||||
result = NEW #( mo_http_post ).
|
||||
result->mo_app = z2ui5_cl_fw_app=>db_load( mo_http_post->ms_request-s_frontend-id ).
|
||||
result->mo_app = z2ui5_cl_core_app=>db_load( mo_http_post->ms_request-s_frontend-id ).
|
||||
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
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_frontend-id.
|
||||
result->ms_actual-view = mo_http_post->ms_request-s_frontend-view.
|
||||
|
||||
|
@ -82,7 +82,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
|
||||
TRY.
|
||||
result = NEW #( mo_http_post ).
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util=>uuid_get_c32( ).
|
||||
|
||||
CREATE OBJECT result->mo_app->mo_app TYPE (mo_http_post->ms_request-s_control-app_start).
|
||||
|
||||
|
@ -103,7 +103,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
|
||||
|
||||
ms_next-o_app_call->id_draft = COND string(
|
||||
WHEN ms_next-o_app_call->id_draft IS INITIAL THEN z2ui5_cl_util_func=>uuid_get_c32( )
|
||||
WHEN ms_next-o_app_call->id_draft IS INITIAL THEN z2ui5_cl_util=>uuid_get_c32( )
|
||||
ELSE ms_next-o_app_call->id_draft ).
|
||||
|
||||
result = NEW #( mo_http_post ).
|
||||
|
@ -115,7 +115,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
result->ms_next-s_set = ms_next-s_set.
|
||||
|
||||
TRY.
|
||||
DATA(lo_app) = z2ui5_cl_fw_app=>db_load( ms_next-o_app_call->id_draft ).
|
||||
DATA(lo_app) = z2ui5_cl_core_app=>db_load( ms_next-o_app_call->id_draft ).
|
||||
result->mo_app->mo_app = lo_app->mo_app.
|
||||
result->mo_app->mt_attri = lo_app->mt_attri.
|
||||
|
||||
|
@ -131,7 +131,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
METHOD factory_stack_leave.
|
||||
|
||||
ms_next-o_app_leave->id_draft = COND string(
|
||||
WHEN ms_next-o_app_leave->id_draft IS INITIAL THEN z2ui5_cl_util_func=>uuid_get_c32( )
|
||||
WHEN ms_next-o_app_leave->id_draft IS INITIAL THEN z2ui5_cl_util=>uuid_get_c32( )
|
||||
ELSE ms_next-o_app_leave->id_draft ).
|
||||
|
||||
result = NEW #( mo_http_post ).
|
||||
|
@ -143,7 +143,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
result->ms_next-s_set = ms_next-s_set.
|
||||
|
||||
TRY.
|
||||
DATA(lo_db) = NEW z2ui5_cl_fw_hlp_db( ).
|
||||
DATA(lo_db) = NEW z2ui5_cl_core_draft_srv( ).
|
||||
DATA(ls_draft) = lo_db->read_info( result->mo_app->ms_draft-id ).
|
||||
result->mo_app->ms_draft-id_prev_app_stack = ls_draft-id_prev_app_stack.
|
||||
|
||||
|
@ -160,7 +160,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
|
||||
result = NEW #( mo_http_post ).
|
||||
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util=>uuid_get_c32( ).
|
||||
result->ms_actual-check_on_navigated = abap_true.
|
||||
result->ms_next-o_app_call = z2ui5_cl_fw_app_error=>factory( ix ).
|
||||
|
||||
|
@ -173,7 +173,7 @@ CLASS z2ui5_cl_fw_action IMPLEMENTATION.
|
|||
|
||||
result = NEW #( mo_http_post ).
|
||||
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
result->mo_app->ms_draft-id = z2ui5_cl_util=>uuid_get_c32( ).
|
||||
result->ms_actual-check_on_navigated = abap_true.
|
||||
result->mo_app->mo_app = z2ui5_cl_fw_app_startup=>factory( ).
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_ACTION</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_ACTION</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - action & flow</DESCRIPT>
|
||||
<STATE>1</STATE>
|
210
src/01/02/z2ui5_cl_core_app.clas.abap
Normal file
210
src/01/02/z2ui5_cl_core_app.clas.abap
Normal file
|
@ -0,0 +1,210 @@
|
|||
CLASS z2ui5_cl_core_app DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES if_serializable_object .
|
||||
|
||||
DATA mt_attri TYPE 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 attri_get_by_data
|
||||
IMPORTING
|
||||
!val TYPE data
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_if_core_types=>ty_s_attri .
|
||||
|
||||
METHODS model_json_stringify
|
||||
RETURNING
|
||||
VALUE(result) TYPE string .
|
||||
|
||||
METHODS model_json_parse
|
||||
IMPORTING
|
||||
!view TYPE string
|
||||
!io_json_model TYPE REF TO z2ui5_if_ajson .
|
||||
|
||||
METHODS all_xml_stringify
|
||||
RETURNING
|
||||
VALUE(result) TYPE string .
|
||||
|
||||
CLASS-METHODS all_xml_parse
|
||||
IMPORTING
|
||||
!val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_app .
|
||||
|
||||
CLASS-METHODS db_load
|
||||
IMPORTING
|
||||
!id TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_core_app .
|
||||
|
||||
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 = val
|
||||
IMPORTING
|
||||
any = result ).
|
||||
|
||||
LOOP AT result->mt_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE data_rtti IS NOT INITIAL
|
||||
AND type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
|
||||
DATA(lv_assign) = 'RESULT->MO_APP->' && lr_attri->name.
|
||||
ASSIGN (lv_assign) TO FIELD-SYMBOL(<val>).
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `LOAD_DRAFT_FROM_DATABASE_FAILED / ATTRI_NOT_FOUND ` && lr_attri->name.
|
||||
ENDIF.
|
||||
|
||||
z2ui5_cl_util=>xml_srtti_parse(
|
||||
EXPORTING
|
||||
rtti_data = lr_attri->data_rtti
|
||||
IMPORTING
|
||||
e_data = <val> ).
|
||||
|
||||
CLEAR lr_attri->data_rtti.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD all_xml_stringify.
|
||||
|
||||
TRY.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri).
|
||||
CLEAR lr_attri->r_ref.
|
||||
IF lr_attri->bind_type = z2ui5_if_core_types=>cs_bind_type-one_time.
|
||||
DELETE mt_attri.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
result = z2ui5_cl_util=>xml_stringify( me ).
|
||||
RETURN.
|
||||
|
||||
CATCH cx_xslt_serialization_error INTO DATA(x).
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO lr_attri
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
|
||||
DATA(lv_name) = `MO_APP->` && lr_attri->name && `->*`.
|
||||
DATA(lv_name2) = `MO_APP->` && lr_attri->name.
|
||||
ASSIGN (lv_name) TO FIELD-SYMBOL(<val>).
|
||||
ASSIGN (lv_name2) TO FIELD-SYMBOL(<val_ref>).
|
||||
|
||||
lr_attri->data_rtti = z2ui5_cl_util=>xml_srtti_stringify( <val> ).
|
||||
|
||||
CLEAR <val>.
|
||||
CLEAR <val_ref>.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO lr_attri.
|
||||
CLEAR lr_attri->r_ref.
|
||||
ENDLOOP.
|
||||
|
||||
result = z2ui5_cl_util=>xml_stringify( me ).
|
||||
|
||||
CATCH cx_root INTO DATA(x2).
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `<p>` && x->previous->get_text( ) && `<p>` && x2->get_text( ) && `<p> Please check if all generic data references are public attributes of your class`.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD attri_get_by_data.
|
||||
|
||||
DATA(lr_data) = REF #( val ).
|
||||
|
||||
DO 3 TIMES.
|
||||
|
||||
TRY.
|
||||
result = REF #( mt_attri[ r_ref = lr_data ] ).
|
||||
RETURN.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
DATA(lo_dissolver) = NEW z2ui5_cl_core_model_srv(
|
||||
attri = REF #( mt_attri )
|
||||
app = mo_app ).
|
||||
lo_dissolver->main( ).
|
||||
|
||||
ENDDO.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class or switch to bind_local`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_load.
|
||||
|
||||
DATA(lo_db) = NEW z2ui5_cl_core_draft_srv( ).
|
||||
DATA(ls_db) = lo_db->read_draft( id ).
|
||||
result = all_xml_parse( ls_db-data ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_save.
|
||||
|
||||
|
||||
IF mo_app IS BOUND.
|
||||
CAST z2ui5_if_app( mo_app )->id_draft = ms_draft-id.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_db) = NEW z2ui5_cl_core_draft_srv( ).
|
||||
lo_db->create(
|
||||
draft = ms_draft
|
||||
model_xml = all_xml_stringify( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_json_parse.
|
||||
|
||||
DATA(lo_dissolver) = NEW z2ui5_cl_core_model_srv(
|
||||
attri = REF #( mt_attri )
|
||||
app = mo_app ).
|
||||
lo_dissolver->set_attri_ready( ).
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||
lo_json_mapper->model_client_to_server(
|
||||
view = view
|
||||
t_attri = REF #( mt_attri )
|
||||
model = io_json_model ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_json_stringify.
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||
result = lo_json_mapper->model_server_to_client( mt_attri ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_APP</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_APP</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - fw app</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - app</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,4 +1,4 @@
|
|||
CLASS z2ui5_cl_fw_client DEFINITION
|
||||
CLASS z2ui5_cl_core_client DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
@ -7,11 +7,11 @@ CLASS z2ui5_cl_fw_client DEFINITION
|
|||
|
||||
INTERFACES z2ui5_if_client .
|
||||
|
||||
DATA mo_action TYPE REF TO z2ui5_cl_fw_action.
|
||||
DATA mo_action TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
action TYPE REF TO z2ui5_cl_fw_action.
|
||||
!action TYPE REF TO z2ui5_cl_core_action.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
@ -19,7 +19,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_core_client IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -56,7 +56,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
METHOD z2ui5_if_client~get_app.
|
||||
|
||||
IF id IS NOT INITIAL.
|
||||
DATA(lo_app) = z2ui5_cl_fw_app=>db_load( id ).
|
||||
DATA(lo_app) = z2ui5_cl_core_app=>db_load( id ).
|
||||
result = CAST #( lo_app->mo_app ).
|
||||
ELSE.
|
||||
result = CAST #( mo_action->mo_app->mo_app ).
|
||||
|
@ -80,20 +80,24 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD z2ui5_if_client~nav_app_call.
|
||||
|
||||
mo_action->ms_next-o_app_call = app.
|
||||
IF app->id_draft IS INITIAL.
|
||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
ENDIF.
|
||||
result = app->id_app.
|
||||
|
||||
result = COND #( WHEN app->id_draft IS INITIAL
|
||||
THEN z2ui5_cl_util=>uuid_get_c32( )
|
||||
ELSE app->id_app ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~nav_app_leave.
|
||||
|
||||
mo_action->ms_next-o_app_leave = app.
|
||||
IF app->id_draft IS INITIAL.
|
||||
app->id_app = z2ui5_cl_util_func=>uuid_get_c32( ).
|
||||
ENDIF.
|
||||
result = app->id_app.
|
||||
|
||||
result = COND #( WHEN app->id_draft IS INITIAL
|
||||
THEN z2ui5_cl_util=>uuid_get_c32( )
|
||||
ELSE app->id_app ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -213,87 +217,63 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~_bind.
|
||||
|
||||
IF tab IS NOT INITIAL.
|
||||
|
||||
DATA(lv_name) = z2ui5_if_client~_bind( val = tab path = abap_true ).
|
||||
|
||||
result = z2ui5_cl_util_func=>bind_tab_cell(
|
||||
iv_name = lv_name
|
||||
i_tab_index = tab_index
|
||||
i_tab = tab
|
||||
i_val = val ).
|
||||
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
result = lo_bind->bind(
|
||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( mo_action->mo_app ).
|
||||
result = lo_bind->main(
|
||||
val = val
|
||||
type = z2ui5_if_fw_types=>cs_bind_type-one_way
|
||||
type = z2ui5_if_core_types=>cs_bind_type-one_way
|
||||
config = VALUE #(
|
||||
path_only = path
|
||||
custom_filter = custom_filter
|
||||
custom_mapper = custom_mapper ) ).
|
||||
custom_mapper = custom_mapper
|
||||
tab = REF #( tab )
|
||||
tab_index = tab_index ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~_bind_clear.
|
||||
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
lo_bind->clear_bind( val ).
|
||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( mo_action->mo_app ).
|
||||
lo_bind->clear( val ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~_bind_edit.
|
||||
|
||||
IF tab IS NOT INITIAL.
|
||||
|
||||
DATA(lv_name) = z2ui5_if_client~_bind_edit( val = tab path = abap_true ).
|
||||
|
||||
result = z2ui5_cl_util_func=>bind_tab_cell(
|
||||
iv_name = lv_name
|
||||
i_tab_index = tab_index
|
||||
i_tab = tab
|
||||
i_val = val ).
|
||||
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
result = lo_bind->bind(
|
||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( mo_action->mo_app ).
|
||||
result = lo_bind->main(
|
||||
val = val
|
||||
type = z2ui5_if_fw_types=>cs_bind_type-two_way
|
||||
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 = REF #( tab )
|
||||
tab_index = tab_index ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~_bind_local.
|
||||
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
result = lo_bind->bind_local(
|
||||
DATA(lo_bind) = NEW z2ui5_cl_core_bind_srv( mo_action->mo_app ).
|
||||
result = lo_bind->main_local(
|
||||
val = val
|
||||
config = VALUE #(
|
||||
path_only = path
|
||||
custom_mapper = custom_mapper
|
||||
custom_filter = custom_filter
|
||||
) ).
|
||||
custom_filter = custom_filter ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~_event.
|
||||
|
||||
DATA(lo_ui5) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
result = lo_ui5->ui5_event(
|
||||
DATA(lo_ui5) = NEW z2ui5_cl_core_event_srv( ).
|
||||
result = lo_ui5->get_event(
|
||||
val = val
|
||||
check_view_destroy = check_view_destroy
|
||||
t_arg = t_arg ).
|
||||
|
@ -303,8 +283,8 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~_event_client.
|
||||
|
||||
DATA(lo_ui5) = NEW z2ui5_cl_fw_hlp_binder( mo_action->mo_app ).
|
||||
result = lo_ui5->ui5_event_client(
|
||||
DATA(lo_ui5) = NEW z2ui5_cl_core_event_srv( ).
|
||||
result = lo_ui5->get_event_client(
|
||||
val = val
|
||||
t_arg = t_arg ).
|
||||
|
|
@ -6,7 +6,7 @@ CLASS ltcl_test_client DEFINITION FINAL FOR TESTING
|
|||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_fw_client DEFINITION LOCAL FRIENDS ltcl_test_client.
|
||||
CLASS z2ui5_cl_core_client DEFINITION LOCAL FRIENDS ltcl_test_client.
|
||||
|
||||
CLASS ltcl_test_client IMPLEMENTATION.
|
||||
|
|
@ -3,9 +3,9 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HLP_JSON_MAPPER</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_CLIENT</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - json mapper</DESCRIPT>
|
||||
<DESCRIPT>abap2UI5 - backend client api</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
|
@ -1,4 +1,4 @@
|
|||
CLASS z2ui5_cl_fw_http_get DEFINITION
|
||||
CLASS z2ui5_cl_core_http_get DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
@ -30,7 +30,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_FW_HTTP_GET IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_core_http_get IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
@ -579,7 +579,7 @@ CLASS Z2UI5_CL_FW_HTTP_GET IMPLEMENTATION.
|
|||
`</script>` && |\n| &&
|
||||
`<abc/></body></html>`.
|
||||
|
||||
new z2ui5_cl_fw_hlp_db( )->cleanup( ).
|
||||
NEW z2ui5_cl_core_draft_srv( )->cleanup( ).
|
||||
|
||||
result = mv_response.
|
||||
ENDMETHOD.
|
|
@ -16,13 +16,13 @@ CLASS ltcl_test_http_get DEFINITION FINAL FOR TESTING
|
|||
METHODS js_no_jquery FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_fw_http_get DEFINITION LOCAL FRIENDS ltcl_test_http_get.
|
||||
CLASS z2ui5_cl_core_http_get DEFINITION LOCAL FRIENDS ltcl_test_http_get.
|
||||
|
||||
CLASS ltcl_test_http_get IMPLEMENTATION.
|
||||
|
||||
METHOD file_not_initial.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = lo_get->main( ).
|
||||
IF lv_index_html IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( 'HTTP GET - index html initial' ).
|
||||
|
@ -33,7 +33,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD launchpad_compatibility.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = lo_get->main( ).
|
||||
IF lv_index_html CS `&`.
|
||||
cl_abap_unit_assert=>fail( 'index.html contains the character & -> no launchpad compatibility' ).
|
||||
|
@ -44,7 +44,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD path_setup.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
|
||||
IF lv_index_html CS `SAP.Z2UI5.PATHNAME || '/SAP/TEST';`.
|
||||
cl_abap_unit_assert=>fail( 'path static' ).
|
||||
|
@ -58,7 +58,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD js_no_debugger.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
|
||||
IF lv_index_html CS `DEBUGGER`.
|
||||
cl_abap_unit_assert=>fail( 'debugger command not allowed' ).
|
||||
|
@ -68,7 +68,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD js_no_sap_ui_get_core.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.
|
||||
* IF lv_index_html CS `SAP.UI.GETCORE`.
|
||||
* cl_abap_unit_assert=>fail( 'sap.ui.get.core not allowed' ).
|
||||
|
@ -78,7 +78,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD js_no_jquery.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ).
|
||||
IF lv_index_html CS `JQUERY`.
|
||||
cl_abap_unit_assert=>fail( 'use of jquery not allowed' ).
|
||||
|
@ -88,7 +88,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD js_no_window.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.
|
||||
* IF lv_index_html CS `WINDOW.`.
|
||||
* cl_abap_unit_assert=>fail( 'use of window not allowed' ).
|
||||
|
@ -98,7 +98,7 @@ CLASS ltcl_test_http_get IMPLEMENTATION.
|
|||
|
||||
METHOD js_no_document.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( ).
|
||||
DATA(lv_index_html) = to_upper( lo_get->main( ) ) ##NEEDED.
|
||||
* IF lv_index_html CS `DOCUMENT.`.
|
||||
* cl_abap_unit_assert=>fail( 'use of document not allowed' ).
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HTTP_GET</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_HTTP_GET</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - http get handler</DESCRIPT>
|
||||
<STATE>1</STATE>
|
|
@ -1,14 +1,14 @@
|
|||
CLASS z2ui5_cl_fw_http_post DEFINITION
|
||||
CLASS z2ui5_cl_core_http_post DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA mo_action TYPE REF TO z2ui5_cl_fw_action.
|
||||
DATA mo_action TYPE REF TO z2ui5_cl_core_action.
|
||||
DATA mv_request_json TYPE string.
|
||||
DATA ms_request TYPE z2ui5_if_fw_types=>ty_s_http_request_post.
|
||||
DATA ms_response TYPE z2ui5_if_fw_types=>ty_s_http_response_post.
|
||||
DATA ms_request TYPE z2ui5_if_core_types=>ty_s_http_request_post.
|
||||
DATA ms_response TYPE z2ui5_if_core_types=>ty_s_http_response_post.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
|
@ -35,13 +35,13 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_core_http_post IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
mv_request_json = val.
|
||||
mo_action = NEW z2ui5_cl_fw_action( me ).
|
||||
mo_action = NEW z2ui5_cl_core_action( me ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -62,7 +62,7 @@ CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
|
|||
METHOD main_begin.
|
||||
TRY.
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_fw_hlp_json_mapper( ).
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||
ms_request = lo_json_mapper->request_json_to_abap( mv_request_json ).
|
||||
|
||||
IF ms_request-s_frontend-id IS NOT INITIAL.
|
||||
|
@ -89,7 +89,7 @@ CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
|
|||
s_frontend-id = mo_action->mo_app->ms_draft-id
|
||||
model = mo_action->mo_app->model_json_stringify( ) ).
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_fw_hlp_json_mapper( ).
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_core_json_srv( ).
|
||||
result = lo_json_mapper->response_abap_to_json( ms_response ).
|
||||
|
||||
CLEAR mo_action->ms_next.
|
||||
|
@ -104,7 +104,7 @@ CLASS z2ui5_cl_fw_http_post IMPLEMENTATION.
|
|||
METHOD main_process.
|
||||
TRY.
|
||||
|
||||
DATA(li_client) = NEW z2ui5_cl_fw_client( mo_action ).
|
||||
DATA(li_client) = NEW z2ui5_cl_core_client( mo_action ).
|
||||
DATA(li_app) = CAST z2ui5_if_app( mo_action->mo_app->mo_app ).
|
||||
|
||||
ROLLBACK WORK.
|
|
@ -8,7 +8,7 @@ CLASS ltcl_test_handler_post DEFINITION FINAL FOR TESTING
|
|||
load_startup_app FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS z2ui5_cl_fw_http_post DEFINITION LOCAL FRIENDS ltcl_test_handler_post.
|
||||
CLASS z2ui5_cl_core_http_post DEFINITION LOCAL FRIENDS ltcl_test_handler_post.
|
||||
|
||||
CLASS ltcl_test_handler_post IMPLEMENTATION.
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_HTTP_POST</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CL_CORE_HTTP_POST</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - http post handler</DESCRIPT>
|
||||
<STATE>1</STATE>
|
|
@ -1,297 +0,0 @@
|
|||
CLASS z2ui5_cl_fw_app DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES if_serializable_object.
|
||||
|
||||
DATA mt_attri TYPE z2ui5_if_fw_types=>ty_t_attri.
|
||||
DATA mo_app TYPE REF TO object.
|
||||
DATA ms_draft TYPE z2ui5_if_types=>ty_s_get-s_draft.
|
||||
|
||||
METHODS attri_get_by_data
|
||||
IMPORTING
|
||||
val TYPE data
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_if_fw_types=>ty_s_attri.
|
||||
|
||||
METHODS model_json_stringify
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS model_json_parse
|
||||
IMPORTING
|
||||
view TYPE string
|
||||
io_json_model TYPE REF TO z2ui5_if_ajson.
|
||||
|
||||
METHODS all_xml_stringify
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS all_xml_parse
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||
|
||||
CLASS-METHODS db_load
|
||||
IMPORTING
|
||||
id TYPE string
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||
|
||||
METHODS db_save.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_app IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD attri_get_by_data.
|
||||
|
||||
DATA(lr_data) = REF #( val ).
|
||||
|
||||
DO 3 TIMES.
|
||||
|
||||
TRY.
|
||||
result = REF #( mt_attri[ r_ref = lr_data ] ).
|
||||
RETURN.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
DATA(lo_dissolver) = NEW z2ui5_cl_fw_hlp_dissolver(
|
||||
attri = REF #( mt_attri )
|
||||
app = mo_app ).
|
||||
lo_dissolver->main( ).
|
||||
|
||||
ENDDO.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `BINDING_ERROR - No class attribute for binding found - Please check if the binded values are public attributes of your class or switch to bind_local`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_load.
|
||||
|
||||
DATA(lo_db) = NEW z2ui5_cl_fw_hlp_db( ).
|
||||
DATA(ls_db) = lo_db->read_draft( id ).
|
||||
result = all_xml_parse( ls_db-data ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD db_save.
|
||||
|
||||
|
||||
IF mo_app IS BOUND.
|
||||
CAST z2ui5_if_app( mo_app )->id_draft = ms_draft-id.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_db) = NEW z2ui5_cl_fw_hlp_db( ).
|
||||
lo_db->create(
|
||||
draft = ms_draft
|
||||
model_xml = all_xml_stringify( ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_json_parse.
|
||||
|
||||
DATA(lo_dissolver) = NEW z2ui5_cl_fw_hlp_dissolver(
|
||||
attri = REF #( mt_attri )
|
||||
app = mo_app ).
|
||||
lo_dissolver->set_attri_ready( ).
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_fw_hlp_json_mapper( ).
|
||||
lo_json_mapper->model_client_to_server(
|
||||
view = view
|
||||
t_attri = REF #( mt_attri )
|
||||
model = io_json_model ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_json_stringify.
|
||||
|
||||
DATA(lo_json_mapper) = NEW z2ui5_cl_fw_hlp_json_mapper( ).
|
||||
result = lo_json_mapper->model_server_to_client( mt_attri ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD all_xml_parse.
|
||||
|
||||
z2ui5_cl_util_func=>trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = val
|
||||
IMPORTING
|
||||
any = result ).
|
||||
|
||||
* DATA(lo_dissolver) = NEW z2ui5_cl_fw_hlp_dissolver(
|
||||
* attri = REF #( result->mt_attri )
|
||||
* app = result->mo_app ).
|
||||
* lo_dissolver->main( ).
|
||||
|
||||
LOOP AT result->mt_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE data_rtti IS NOT INITIAL
|
||||
AND type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
|
||||
DATA(lv_assign) = 'RESULT->MO_APP->' && lr_attri->name.
|
||||
ASSIGN (lv_assign) TO FIELD-SYMBOL(<val>).
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `LOAD_DRAFT_FROM_DATABASE_FAILED / ATTRI_NOT_FOUND ` && lr_attri->name.
|
||||
ENDIF.
|
||||
|
||||
z2ui5_cl_util_func=>trans_srtti_xml_2_data(
|
||||
EXPORTING
|
||||
rtti_data = lr_attri->data_rtti
|
||||
IMPORTING
|
||||
e_data = <val> ).
|
||||
|
||||
CLEAR lr_attri->data_rtti.
|
||||
ENDLOOP.
|
||||
|
||||
* DATA(lo_app) = CAST object( result-app ) ##NEEDED.
|
||||
* LOOP AT result-t_attri REFERENCE INTO DATA(lr_attri)
|
||||
* WHERE data_rtti IS NOT INITIAL
|
||||
* AND type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
*
|
||||
* DATA(lv_assign) = 'LO_APP->' && lr_attri->name.
|
||||
* ASSIGN (lv_assign) TO <ref>.
|
||||
* IF sy-subrc <> 0.
|
||||
* RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
* EXPORTING
|
||||
* val = `LOAD_DRAFT_FROM_DATABASE_FAILED / ATTRI_NOT_FOUND ` && lr_attri->name.
|
||||
* ENDIF.
|
||||
*
|
||||
* z2ui5_cl_util_func=>trans_srtti_xml_2_data(
|
||||
* EXPORTING
|
||||
* rtti_data = lr_attri->data_rtti
|
||||
* IMPORTING
|
||||
* e_data = <ref> ).
|
||||
*
|
||||
* CLEAR lr_attri->data_rtti.
|
||||
* ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD all_xml_stringify.
|
||||
|
||||
TRY.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri).
|
||||
CLEAR lr_attri->r_ref.
|
||||
IF lr_attri->bind_type = z2ui5_if_fw_types=>cs_bind_type-one_time.
|
||||
DELETE mt_attri.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
result = z2ui5_cl_util_func=>trans_xml_by_any( me ).
|
||||
RETURN.
|
||||
|
||||
CATCH cx_xslt_serialization_error INTO DATA(x).
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
|
||||
* IF NOT line_exists( mt_attri[ type_kind = cl_abap_classdescr=>typekind_dref ] ).
|
||||
* DATA(lo_dissolver) = NEW z2ui5_cl_fw_hlp_dissolver(
|
||||
* attri = REF #( mt_attri )
|
||||
* app = mo_app ).
|
||||
* lo_dissolver->main( ).
|
||||
* ENDIF.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO lr_attri
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
|
||||
DATA(lv_name) = `MO_APP->` && lr_attri->name && `->*`.
|
||||
DATA(lv_name2) = `MO_APP->` && lr_attri->name.
|
||||
ASSIGN (lv_name) TO FIELD-SYMBOL(<val>).
|
||||
ASSIGN (lv_name2) TO FIELD-SYMBOL(<val_ref>).
|
||||
* ASSIGN lr_attri->r_ref->* TO FIELD-SYMBOL(<data>).
|
||||
* ASSIGN <data>->* TO FIELD-SYMBOL(<data2>).
|
||||
* CHECK sy-subrc = 0.
|
||||
|
||||
lr_attri->data_rtti = z2ui5_cl_util_func=>trans_srtti_xml_by_data( <val> ).
|
||||
|
||||
CLEAR <val>.
|
||||
CLEAR <val_ref>.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO lr_attri.
|
||||
CLEAR lr_attri->r_ref.
|
||||
ENDLOOP.
|
||||
|
||||
result = z2ui5_cl_util_func=>trans_xml_by_any( me ).
|
||||
|
||||
CATCH cx_root INTO DATA(x2).
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
EXPORTING
|
||||
val = `<p>` && x->previous->get_text( ) && `<p>` && x2->get_text( ) && `<p> Please check if all generic data references are public attributes of your class`.
|
||||
|
||||
ENDTRY.
|
||||
|
||||
|
||||
* CATCH cx_xslt_serialization_error INTO DATA(x).
|
||||
* TRY.
|
||||
* FIELD-SYMBOLS <attri> TYPE any.
|
||||
* FIELD-SYMBOLS <deref_attri> TYPE any.
|
||||
*
|
||||
* DATA(ls_db) = db.
|
||||
* DATA(lo_app) = CAST object( ls_db-app ).
|
||||
*
|
||||
* IF NOT line_exists( ls_db-t_attri[ type_kind = cl_abap_classdescr=>typekind_dref ] ).
|
||||
*
|
||||
* ASSERT 1 = 0.
|
||||
* ls_db-t_attri = z2ui5_cl_fw_binding=>update_attri(
|
||||
* t_attri = ls_db-t_attri
|
||||
* app = ls_db-app ).
|
||||
*
|
||||
* ENDIF.
|
||||
*
|
||||
* lo_app = CAST object( ls_db-app ).
|
||||
* LOOP AT ls_db-t_attri REFERENCE INTO DATA(lr_attri) WHERE type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
*
|
||||
* DATA(lv_assign) = 'LO_APP->' && lr_attri->name.
|
||||
*
|
||||
* UNASSIGN <deref_attri>.
|
||||
* UNASSIGN <attri>.
|
||||
* ASSIGN (lv_assign) TO <attri>.
|
||||
* ASSIGN <attri>->* TO <deref_attri>.
|
||||
* IF sy-subrc <> 0.
|
||||
* CONTINUE.
|
||||
* ENDIF.
|
||||
*
|
||||
* lr_attri->data_rtti = z2ui5_cl_util_func=>trans_srtti_xml_by_data( <deref_attri> ).
|
||||
*
|
||||
* CLEAR <deref_attri>.
|
||||
* CLEAR <attri>.
|
||||
* ENDLOOP.
|
||||
*
|
||||
* result = z2ui5_cl_util_func=>trans_xml_by_any( ls_db ).
|
||||
*
|
||||
* CATCH z2ui5_cx_util_error INTO DATA(x_util).
|
||||
* RAISE EXCEPTION x_util.
|
||||
*
|
||||
* CATCH cx_root INTO DATA(x2).
|
||||
*
|
||||
* RAISE EXCEPTION TYPE z2ui5_cx_util_error
|
||||
* EXPORTING
|
||||
* val = `<p>` && x->previous->get_text( ) && `<p>` && x2->get_text( ) && `<p> Please check if all generic data references are public attributes of your class`.
|
||||
*
|
||||
* ENDTRY.
|
||||
* ENDTRY.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
|
@ -1,4 +1,4 @@
|
|||
INTERFACE z2ui5_if_fw_types
|
||||
INTERFACE z2ui5_if_core_types
|
||||
PUBLIC.
|
||||
|
||||
CONSTANTS:
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOINTERF>
|
||||
<CLSNAME>Z2UI5_IF_FW_TYPES</CLSNAME>
|
||||
<CLSNAME>Z2UI5_IF_CORE_TYPES</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - fw types</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - apps (fw)</CTEXT>
|
||||
<CTEXT>abap2UI5 - apps</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -52,7 +52,7 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
|
||||
TRY.
|
||||
|
||||
ms_home-classname = z2ui5_cl_util_func=>c_trim_upper( ms_home-classname ).
|
||||
ms_home-classname = z2ui5_cl_util=>c_trim_upper( ms_home-classname ).
|
||||
CREATE OBJECT li_app_test TYPE (ms_home-classname).
|
||||
|
||||
client->message_toast_display( `App is ready to start!` ).
|
||||
|
@ -74,7 +74,7 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
|
||||
METHOD view_display_start.
|
||||
|
||||
DATA(lv_url) = z2ui5_cl_util_func=>app_get_url(
|
||||
DATA(lv_url) = z2ui5_cl_util=>app_get_url(
|
||||
client = client
|
||||
classname = ms_home-classname ).
|
||||
|
||||
|
@ -120,7 +120,7 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
IF ms_home-class_editable = abap_true.
|
||||
|
||||
simple_form2->input( placeholder = `fill in the class name and press 'check'`
|
||||
editable = z2ui5_cl_util_func=>boolean_abap_2_json( ms_home-class_editable )
|
||||
editable = z2ui5_cl_util=>boolean_abap_2_json( ms_home-class_editable )
|
||||
value = client->_bind_edit( ms_home-classname )
|
||||
submit = client->_event( ms_home-btn_event_id )
|
||||
valuehelprequest = client->_event( 'VALUE_HELP' )
|
||||
|
@ -139,7 +139,7 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
)->link( text = `Link to the Application`
|
||||
target = `_blank`
|
||||
href = lv_url
|
||||
enabled = z2ui5_cl_util_func=>boolean_abap_2_json( xsdbool( ms_home-class_editable = abap_false ) ) ).
|
||||
enabled = z2ui5_cl_util=>boolean_abap_2_json( xsdbool( ms_home-class_editable = abap_false ) ) ).
|
||||
|
||||
|
||||
simple_form2->toolbar( )->title( `System Information` ).
|
||||
|
@ -149,11 +149,11 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
simple_form2->label( `UI5 Version`).
|
||||
simple_form2->text( client->_bind( mv_ui5_version ) ).
|
||||
simple_form2->label( `ABAP for Cloud` ).
|
||||
simple_form2->checkbox( enabled = abap_false selected = z2ui5_cl_util_func=>rtti_check_lang_version_cloud( ) ).
|
||||
simple_form2->checkbox( enabled = abap_false selected = z2ui5_cl_util=>rtti_check_lang_version_cloud( ) ).
|
||||
simple_form2->label( `Launchpad active` ).
|
||||
simple_form2->checkbox( enabled = abap_false selected = client->get( )-check_launchpad_active ).
|
||||
|
||||
DATA(lv_url_samples2) = z2ui5_cl_util_func=>app_get_url(
|
||||
DATA(lv_url_samples2) = z2ui5_cl_util=>app_get_url(
|
||||
client = client
|
||||
classname = 'z2ui5_cl_demo_app_000' ).
|
||||
|
||||
|
@ -252,7 +252,7 @@ CLASS Z2UI5_CL_FW_APP_STARTUP IMPLEMENTATION.
|
|||
on_event_check( ).
|
||||
|
||||
WHEN 'VALUE_HELP'.
|
||||
mt_classes = z2ui5_cl_util_func=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` ).
|
||||
mt_classes = z2ui5_cl_util=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` ).
|
||||
client->nav_app_call( z2ui5_cl_popup_to_select=>factory( mt_classes ) ).
|
||||
|
||||
WHEN `DEMOS`.
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - cc startup (cc)</CTEXT>
|
||||
<CTEXT>abap2UI5 - cc startup</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - cc addons (cc)</CTEXT>
|
||||
<CTEXT>abap2UI5 - cc addons</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<DEVC>
|
||||
<CTEXT>abap2UI5 - test (test)</CTEXT>
|
||||
<CTEXT>abap2UI5 - test</CTEXT>
|
||||
</DEVC>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
CLASS z2ui5_cl_test_no_github_action DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC FOR TESTING RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS test_trans_json_any_2__w_tab FOR TESTING RAISING cx_static_check.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_test_no_github_action IMPLEMENTATION.
|
||||
|
||||
METHOD test_trans_json_any_2__w_tab.
|
||||
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_TEST_NO_GITHUB_ACTION</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>tests abap standard only</DESCRIPT>
|
||||
<CATEGORY>05</CATEGORY>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<RISK_LEVEL>11</RISK_LEVEL>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
File diff suppressed because it is too large
Load Diff
|
@ -213,7 +213,7 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
|||
( n = `value` v = value )
|
||||
( n = `press` v = press )
|
||||
( n = `OnPhoto` v = onphoto )
|
||||
( n = `autoplay` v = z2ui5_cl_util_func=>boolean_abap_2_json( autoplay ) )
|
||||
( n = `autoplay` v = z2ui5_cl_util=>boolean_abap_2_json( autoplay ) )
|
||||
) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -274,12 +274,12 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
|||
( n = `upload` v = upload )
|
||||
( n = `path` v = path )
|
||||
( n = `value` v = value )
|
||||
( n = `iconOnly` v = z2ui5_cl_util_func=>boolean_abap_2_json( icononly ) )
|
||||
( n = `buttonOnly` v = z2ui5_cl_util_func=>boolean_abap_2_json( buttononly ) )
|
||||
( n = `iconOnly` v = z2ui5_cl_util=>boolean_abap_2_json( icononly ) )
|
||||
( n = `buttonOnly` v = z2ui5_cl_util=>boolean_abap_2_json( buttononly ) )
|
||||
( n = `buttonText` v = buttontext )
|
||||
( n = `uploadButtonText` v = uploadbuttontext )
|
||||
( n = `fileType` v = filetype )
|
||||
( n = `checkDirectUpload` v = z2ui5_cl_util_func=>boolean_abap_2_json( checkdirectupload ) ) ) ).
|
||||
( n = `checkDirectUpload` v = z2ui5_cl_util=>boolean_abap_2_json( checkdirectupload ) ) ) ).
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -314,7 +314,7 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
|||
( n = `altitudeAccuracy` v = altitudeaccuracy )
|
||||
( n = `speed` v = speed )
|
||||
( n = `heading` v = heading )
|
||||
( n = `enableHighAccuracy` v = z2ui5_cl_util_func=>boolean_abap_2_json( enablehighaccuracy ) )
|
||||
( n = `enableHighAccuracy` v = z2ui5_cl_util=>boolean_abap_2_json( enablehighaccuracy ) )
|
||||
( n = `timeout` v = timeout )
|
||||
) ).
|
||||
|
||||
|
@ -365,9 +365,9 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
|||
mo_view->_generic( name = `MultiInput`
|
||||
ns = `z2ui5`
|
||||
t_prop = VALUE #( ( n = `tokens` v = tokens )
|
||||
( n = `showClearIcon` v = z2ui5_cl_util_func=>boolean_abap_2_json( showclearicon ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_util_func=>boolean_abap_2_json( showvaluehelp ) )
|
||||
( n = `enabled` v = z2ui5_cl_util_func=>boolean_abap_2_json( enabled ) )
|
||||
( n = `showClearIcon` v = z2ui5_cl_util=>boolean_abap_2_json( showclearicon ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_util=>boolean_abap_2_json( showvaluehelp ) )
|
||||
( n = `enabled` v = z2ui5_cl_util=>boolean_abap_2_json( enabled ) )
|
||||
( n = `suggestionItems` v = suggestionitems )
|
||||
( n = `tokenUpdate` v = tokenupdate )
|
||||
( n = `submit` v = submit )
|
||||
|
@ -429,8 +429,8 @@ CLASS Z2UI5_CL_XML_VIEW_CC IMPLEMENTATION.
|
|||
ns = `z2ui5`
|
||||
t_prop = VALUE #( ( n = `delayMS` v = delayms )
|
||||
( n = `finished` v = finished )
|
||||
( n = `checkActive` v = z2ui5_cl_util_func=>boolean_abap_2_json( checkactive ) )
|
||||
( n = `checkRepeat` v = z2ui5_cl_util_func=>boolean_abap_2_json( checkrepeat ) )
|
||||
( n = `checkActive` v = z2ui5_cl_util=>boolean_abap_2_json( checkactive ) )
|
||||
( n = `checkRepeat` v = z2ui5_cl_util=>boolean_abap_2_json( checkrepeat ) )
|
||||
) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -87,7 +87,7 @@ CLASS z2ui5_cl_ui5 IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD _2bool.
|
||||
result = z2ui5_cl_util_func=>boolean_abap_2_json( val ).
|
||||
result = z2ui5_cl_util=>boolean_abap_2_json( val ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD _2xml.
|
||||
|
|
|
@ -266,9 +266,9 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
|
||||
result = _add( n = `Panel`
|
||||
ns = `sap.m`
|
||||
t_p = VALUE #( ( n = `expandable` v = z2ui5_cl_util_func=>boolean_abap_2_json( expandable ) )
|
||||
( n = `expanded` v = z2ui5_cl_util_func=>boolean_abap_2_json( expanded ) )
|
||||
( n = `stickyHeader` v = z2ui5_cl_util_func=>boolean_abap_2_json( stickyheader ) )
|
||||
t_p = VALUE #( ( n = `expandable` v = z2ui5_cl_util=>boolean_abap_2_json( expandable ) )
|
||||
( n = `expanded` v = z2ui5_cl_util=>boolean_abap_2_json( expanded ) )
|
||||
( n = `stickyHeader` v = z2ui5_cl_util=>boolean_abap_2_json( stickyheader ) )
|
||||
( n = `height` v = height )
|
||||
( n = `headerText` v = headertext ) ) )->_ns_m( ).
|
||||
|
||||
|
@ -286,7 +286,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
n = `IllustratedMessage`
|
||||
t_p = VALUE #( ( n = `enableVerticalResponsiveness` v = enableverticalresponsiveness )
|
||||
( n = `illustrationType` v = illustrationtype )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_util_func=>boolean_abap_2_json( enableformattedtext ) )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_util=>boolean_abap_2_json( enableformattedtext ) )
|
||||
( n = `illustrationSize` v = illustrationsize )
|
||||
( n = `description` v = description )
|
||||
( n = `title` v = title )
|
||||
|
@ -311,7 +311,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
ns = `sap.m`
|
||||
t_p = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_util_func=>boolean_abap_2_json( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_util=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) ).
|
||||
|
@ -323,7 +323,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
t_p = VALUE #( ( n = `buttonMode` v = buttonmode )
|
||||
( n = `defaultAction` v = defaultaction )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_util_func=>boolean_abap_2_json( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_util=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) )->_ns_m( ).
|
||||
|
@ -335,7 +335,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
ns = `sap.m`
|
||||
t_p = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_util_func=>boolean_abap_2_json( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_util=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) ).
|
||||
|
@ -364,13 +364,13 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
( n = `width` v = width )
|
||||
( n = `height` v = height )
|
||||
( n = `alignItems` v = alignitems )
|
||||
( n = `fitContainer` v = z2ui5_cl_util_func=>boolean_abap_2_json( fitcontainer ) )
|
||||
( n = `fitContainer` v = z2ui5_cl_util=>boolean_abap_2_json( fitcontainer ) )
|
||||
( n = `justifyContent` v = justifycontent )
|
||||
( n = `wrap` v = wrap )
|
||||
( n = `direction` v = direction )
|
||||
( n = `alignContent` v = aligncontent )
|
||||
( n = `backgroundDesign` v = backgrounddesign )
|
||||
( n = `displayInline` v = z2ui5_cl_util_func=>boolean_abap_2_json( displayinline ) )
|
||||
( n = `displayInline` v = z2ui5_cl_util=>boolean_abap_2_json( displayinline ) )
|
||||
( n = `visible` v = visible ) ) )->_ns_m( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -380,7 +380,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
ns = `sap.m`
|
||||
t_p = VALUE #( ( n = `text` v = text )
|
||||
( n = `type` v = type )
|
||||
( n = `showIcon` v = z2ui5_cl_util_func=>boolean_abap_2_json( showicon ) )
|
||||
( n = `showIcon` v = z2ui5_cl_util=>boolean_abap_2_json( showicon ) )
|
||||
( n = `class` v = class ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -396,7 +396,7 @@ CLASS z2ui5_cl_ui5_m IMPLEMENTATION.
|
|||
( n = `textDirection` v = textdirection )
|
||||
( n = `width` v = width )
|
||||
( n = `id` v = id )
|
||||
( n = `wrapping` v = z2ui5_cl_util_func=>boolean_abap_2_json( wrapping ) )
|
||||
( n = `wrapping` v = z2ui5_cl_util=>boolean_abap_2_json( wrapping ) )
|
||||
( n = `wrappingType` v = wrappingtype )
|
||||
( n = `class` v = class ) ) ).
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -48,7 +48,7 @@ CLASS z2ui5_cl_ui5_suite IMPLEMENTATION.
|
|||
result = _add( n = `InteractiveDonutChart`
|
||||
ns = `sap.suite.ui.microchart`
|
||||
t_p = VALUE #( ( n = `selectionChanged` v = selectionchanged )
|
||||
( n = `showError` v = z2ui5_cl_util_func=>boolean_abap_2_json( showerror ) )
|
||||
( n = `showError` v = z2ui5_cl_util=>boolean_abap_2_json( showerror ) )
|
||||
( n = `errorMessageTitle` v = errormessagetitle )
|
||||
( n = `errorMessage` v = errormessage )
|
||||
( n = `displayedSegments` v = displayedsegments )
|
||||
|
|
|
@ -54,14 +54,14 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
|||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
|
||||
z2ui5_cl_util_func=>db_load_by_handle(
|
||||
z2ui5_cl_util=>db_load_by_handle(
|
||||
EXPORTING
|
||||
uname = sy-uname
|
||||
handle = 'z2ui5_cl_app_search_apps'
|
||||
IMPORTING
|
||||
result = mt_favs ).
|
||||
|
||||
mt_apps = VALUE #( FOR row IN z2ui5_cl_util_func=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
|
||||
mt_apps = VALUE #( FOR row IN z2ui5_cl_util=>rtti_get_classes_impl_intf( `Z2UI5_IF_APP` )
|
||||
( name = row ) ).
|
||||
search( ).
|
||||
view_display( client ).
|
||||
|
@ -84,7 +84,7 @@ CLASS z2ui5_cl_app_search_apps IMPLEMENTATION.
|
|||
INSERT VALUE #( name = lv_app ) INTO TABLE mt_favs.
|
||||
|
||||
|
||||
z2ui5_cl_util_func=>db_save(
|
||||
z2ui5_cl_util=>db_save(
|
||||
uname = sy-uname
|
||||
handle = 'z2ui5_cl_app_search_apps'
|
||||
data = mt_favs ).
|
||||
|
|
|
@ -95,7 +95,7 @@ CLASS lcl_github IMPLEMENTATION.
|
|||
|
||||
LOOP AT lr_repo->t_app REFERENCE INTO DATA(lr_app).
|
||||
|
||||
IF z2ui5_cl_util_func=>rtti_check_class_exists( lr_app->classname ).
|
||||
IF z2ui5_cl_util=>rtti_check_class_exists( lr_app->classname ).
|
||||
lr_repo->check_installed = abap_true.
|
||||
ENDIF.
|
||||
EXIT.
|
||||
|
|
|
@ -20,10 +20,7 @@ CLASS z2ui5_cl_popup_file_download DEFINITION
|
|||
DATA mv_name TYPE string.
|
||||
DATA mv_type TYPE string VALUE `data:text/csv;base64,`.
|
||||
DATA mv_size TYPE string.
|
||||
|
||||
|
||||
DATA mv_value TYPE string.
|
||||
|
||||
DATA mv_check_download TYPE abap_bool.
|
||||
|
||||
METHODS result
|
||||
|
@ -78,7 +75,7 @@ CLASS Z2UI5_CL_POPUP_FILE_DOWNLOAD IMPLEMENTATION.
|
|||
)->content( ).
|
||||
|
||||
IF mv_check_download = abap_true.
|
||||
DATA(lv_base64) = z2ui5_cl_util_func=>conv_decode_x_base64( mv_value ).
|
||||
DATA(lv_base64) = z2ui5_cl_util=>conv_decode_x_base64( mv_value ).
|
||||
popup->_generic( ns = `html`
|
||||
name = `iframe`
|
||||
t_prop = VALUE #( ( n = `src` v = mv_type && lv_base64 ) ( n = `hidden` v = `hidden` ) ) ).
|
||||
|
|
|
@ -116,8 +116,8 @@ CLASS z2ui5_cl_popup_file_upload IMPLEMENTATION.
|
|||
SPLIT mv_value AT `;` INTO DATA(lv_dummy) DATA(lv_data).
|
||||
SPLIT lv_data AT `,` INTO lv_dummy lv_data.
|
||||
|
||||
DATA(lv_data2) = z2ui5_cl_util_func=>conv_decode_x_base64( lv_data ).
|
||||
ms_result-value = z2ui5_cl_util_func=>conv_get_string_by_xstring( lv_data2 ).
|
||||
DATA(lv_data2) = z2ui5_cl_util=>conv_decode_x_base64( lv_data ).
|
||||
ms_result-value = z2ui5_cl_util=>conv_get_string_by_xstring( lv_data2 ).
|
||||
|
||||
check_confirm_enabled = abap_true.
|
||||
|
||||
|
|
|
@ -18,13 +18,13 @@ CLASS z2ui5_cl_popup_get_range DEFINITION
|
|||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
t_range TYPE z2ui5_cl_util_func=>ty_t_range OPTIONAL
|
||||
t_range TYPE z2ui5_cl_util=>ty_t_range OPTIONAL
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_result,
|
||||
t_range TYPE z2ui5_cl_util_func=>ty_t_range,
|
||||
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.
|
||||
|
@ -85,7 +85,7 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
|
|||
|
||||
grid->combobox(
|
||||
selectedkey = `{OPTION}`
|
||||
items = client->_bind_local( z2ui5_cl_util_func=>filter_get_token_range_mapping( ) )
|
||||
items = client->_bind_local( z2ui5_cl_util=>filter_get_token_range_mapping( ) )
|
||||
)->item(
|
||||
key = '{N}'
|
||||
text = '{N}'
|
||||
|
@ -134,7 +134,7 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
|
|||
low = lr_product->low
|
||||
high = lr_product->high
|
||||
option = lr_product->option
|
||||
key = z2ui5_cl_util_func=>uuid_get_c32( )
|
||||
key = z2ui5_cl_util=>uuid_get_c32( )
|
||||
) INTO TABLE mt_filter.
|
||||
ENDLOOP.
|
||||
|
||||
|
@ -167,7 +167,7 @@ CLASS z2ui5_cl_popup_get_range IMPLEMENTATION.
|
|||
client->nav_app_leave( client->get_app( client->get( )-s_draft-id_prev_app_stack ) ).
|
||||
|
||||
WHEN `POPUP_ADD`.
|
||||
INSERT VALUE #( key = z2ui5_cl_util_func=>uuid_get_c32( ) ) INTO TABLE mt_filter.
|
||||
INSERT VALUE #( key = z2ui5_cl_util=>uuid_get_c32( ) ) INTO TABLE mt_filter.
|
||||
client->popup_model_update( ).
|
||||
|
||||
WHEN `POPUP_DELETE`.
|
||||
|
|
|
@ -7,13 +7,13 @@ CLASS z2ui5_cl_popup_get_range_multi DEFINITION
|
|||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
val TYPE z2ui5_cl_util_func=>ty_t_filter_multi
|
||||
val TYPE z2ui5_cl_util=>ty_t_filter_multi
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_popup_get_range_multi.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_result,
|
||||
t_sql TYPE z2ui5_cl_util_func=>ty_t_filter_multi,
|
||||
t_sql TYPE z2ui5_cl_util=>ty_t_filter_multi,
|
||||
check_confirmed TYPE abap_bool,
|
||||
END OF ty_s_result.
|
||||
|
||||
|
@ -111,7 +111,7 @@ CLASS z2ui5_cl_popup_get_range_multi IMPLEMENTATION.
|
|||
IF lo_popup->result( )-check_confirmed = abap_true.
|
||||
ASSIGN ms_result-t_sql[ name = mv_popup_name ] TO FIELD-SYMBOL(<tab>).
|
||||
<tab>-t_range = lo_popup->result( )-t_range.
|
||||
<tab>-t_token = z2ui5_cl_util_func=>filter_get_token_t_by_range_t( <tab>-t_range ).
|
||||
<tab>-t_token = z2ui5_cl_util=>filter_get_token_t_by_range_t( <tab>-t_range ).
|
||||
ENDIF.
|
||||
popup_display( ).
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ CLASS z2ui5_cl_popup_itab_json_dl IMPLEMENTATION.
|
|||
METHOD factory.
|
||||
|
||||
r_result = NEW #( ).
|
||||
r_result->mr_itab = z2ui5_cl_util_func=>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.
|
||||
|
@ -70,7 +70,7 @@ CLASS z2ui5_cl_popup_itab_json_dl IMPLEMENTATION.
|
|||
|
||||
TRY.
|
||||
|
||||
IF z2ui5_cl_util_func=>rtti_check_class_exists( `z2ui5_dbt_cl_app_03` ) = abap_false.
|
||||
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="` &&
|
||||
|
|
|
@ -59,7 +59,7 @@ CLASS Z2UI5_CL_POPUP_LAYOUT IMPLEMENTATION.
|
|||
DATA(tab) = popup->table(
|
||||
items = client->_bind_edit( ms_result-t_layout ) ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( ms_result-t_layout ).
|
||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( ms_result-t_layout ).
|
||||
|
||||
DATA(list) = tab->column_list_item( valign = `Top` ).
|
||||
DATA(cells) = list->cells( ).
|
||||
|
@ -97,7 +97,7 @@ CLASS Z2UI5_CL_POPUP_LAYOUT IMPLEMENTATION.
|
|||
|
||||
IF t_layout IS INITIAL.
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( i_tab ).
|
||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( i_tab ).
|
||||
LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
|
||||
INSERT VALUE #( name = lr_comp->name visible = abap_true mergeduplicates = abap_false )
|
||||
INTO TABLE r_result->ms_result-t_layout.
|
||||
|
|
|
@ -61,7 +61,7 @@ CLASS z2ui5_cl_popup_table IMPLEMENTATION.
|
|||
* )->button( text = `Display Popup` press = client->_event( `BUTTON_START` ) type = `Emphasized`
|
||||
* )->get_parent( )->get_parent( ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <tab_out> ).
|
||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( <tab_out> ).
|
||||
|
||||
DATA(list) = tab->column_list_item( valign = `Top` ).
|
||||
DATA(cells) = list->cells( ).
|
||||
|
|
|
@ -75,7 +75,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
items = `{path:'`
|
||||
&& client->_bind_edit( val = <tab_out> path = abap_true )
|
||||
&& `', sorter : { path : '` && to_upper( sort_field ) && `', descending : `
|
||||
&& z2ui5_cl_util_func=>boolean_abap_2_json( me->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}` ) ) )
|
||||
|
@ -84,7 +84,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
title = title
|
||||
).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_util_func=>rtti_get_t_comp_by_data( <tab_out> ).
|
||||
DATA(lt_comp) = z2ui5_cl_util=>rtti_get_t_comp_by_data( <tab_out> ).
|
||||
DELETE lt_comp WHERE name = 'ZZSELKZ'.
|
||||
|
||||
DATA(list) = tab->column_list_item( valign = `Top`
|
||||
|
@ -99,7 +99,7 @@ CLASS z2ui5_cl_popup_to_select IMPLEMENTATION.
|
|||
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=' )
|
||||
medium_label = z2ui5_cl_util_func=>rtti_get_data_element_texts( data_element_name )-medium IN
|
||||
medium_label = z2ui5_cl_util=>rtti_get_data_element_texts( data_element_name )-medium IN
|
||||
WHEN medium_label IS NOT INITIAL
|
||||
THEN medium_label
|
||||
ELSE ls_comp-name ).
|
||||
|
|
|
@ -27,7 +27,7 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
|||
|
||||
METHOD http_get.
|
||||
|
||||
DATA(lo_get) = NEW z2ui5_cl_fw_http_get( val ).
|
||||
DATA(lo_get) = NEW z2ui5_cl_core_http_get( val ).
|
||||
result = lo_get->main( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -35,7 +35,7 @@ CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
|||
|
||||
METHOD http_post.
|
||||
|
||||
DATA(lo_post) = NEW z2ui5_cl_fw_http_post( val ).
|
||||
DATA(lo_post) = NEW z2ui5_cl_core_http_post( val ).
|
||||
result = lo_post->main( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
Loading…
Reference in New Issue
Block a user