mirror of
https://github.com/abap2UI5/abap2UI5.git
synced 2025-04-28 18:26:18 +08:00
new binding (#503)
* update * new binding * update * new binding * abaplint * updates * update binding * Update abaplint.jsonc * Update abaplint.jsonc * update * Update abaplint.jsonc * Update abaplint.jsonc * Update abaplint.jsonc * update * update binding * abaplint fixes * abaplint fixes * added unit tests * abaplint fixes * added unit tests * Update abaplint.jsonc * more unit tests * more unit tests * Update src/00/z2ui5_cl_fw_utility.clas.abap Co-authored-by: Lars Hvam <larshp@hotmail.com> * Update src/00/z2ui5_cl_fw_utility.clas.abap Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com> * update unit tests * update * refactoring binding main * abaplint fixes * exception renamind and bind_local * Delete z2ui5_cl_fw_error.clas.abap * Delete z2ui5_cl_fw_handler.clas.testclasses.abap * Delete z2ui5_cl_fw_error.clas.xml * update refactoring * refactoring binding * update * update binding * refactoring and unit tests * abaplint fixes * unit test cx_fw_error * abaplint fixes * abaplint fixes * refactoring * Update abaplint.jsonc * update * updates * refactoring and more unit tests * abaplint fixes * downport readiness * downport readiness * unit test one time binding * update versions * refactor bind method * update unit test order * unit test order * unit test order * unit test order * unit test order * unit test order * unit test order * update version * fix one way binding * refactoring json to any * bugfix dissolve object ref * update xml_view->get and unit test naming * cleanup unit tests * add check binding with dereferenced data * nested models fixes * update xml view with refactored method names * error handling, exception texts * fix xml transformation bug * add more exceptions * refactoring char to string * unit test * unit tests * unit tests order * unit test order * unit test order * unit test order * update handling generic data references * adjust binding, no more auto local binding * update binding * abapgit small diffs * update unit tests * update unit tests * update unit tests * unit tests * abaplint fixes --------- Co-authored-by: Lars Hvam <larshp@hotmail.com> Co-authored-by: abaplint[bot] <24845621+abaplint[bot]@users.noreply.github.com>
This commit is contained in:
parent
d27112b2af
commit
b38a9af146
|
@ -67,7 +67,7 @@
|
|||
"cyclomatic_complexity": {
|
||||
"exclude": [],
|
||||
"severity": "Error",
|
||||
"max": 20
|
||||
"max": 18
|
||||
},
|
||||
"dangerous_statement": true,
|
||||
"db_operation_in_loop": true,
|
||||
|
@ -148,7 +148,7 @@
|
|||
"nesting": {
|
||||
"depth": 5
|
||||
},
|
||||
"newline_between_methods": true,
|
||||
"newline_between_methods": false,
|
||||
"no_aliases": true,
|
||||
"no_chained_assignment": true,
|
||||
"no_external_form_calls": true,
|
||||
|
|
56
package-lock.json
generated
56
package-lock.json
generated
|
@ -9,16 +9,16 @@
|
|||
"version": "1.0.0",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@abaplint/cli": "^2.102.15",
|
||||
"@abaplint/database-sqlite": "^2.7.58",
|
||||
"@abaplint/runtime": "^2.7.66",
|
||||
"@abaplint/transpiler-cli": "^2.7.66"
|
||||
"@abaplint/cli": "^2.102.28",
|
||||
"@abaplint/database-sqlite": "^2.7.74",
|
||||
"@abaplint/runtime": "^2.7.79",
|
||||
"@abaplint/transpiler-cli": "^2.7.79"
|
||||
}
|
||||
},
|
||||
"node_modules/@abaplint/cli": {
|
||||
"version": "2.102.15",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.102.15.tgz",
|
||||
"integrity": "sha512-qZLqEKm0j1TxFhKapsc8NU/HNpBcA8rxN864/iL61cvsOStdCb1DxEPG4uvnNbKNpOsUskRd4tSNGE/PFphliA==",
|
||||
"version": "2.102.28",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.102.28.tgz",
|
||||
"integrity": "sha512-bZwpD7xXCCG5oo5QXat4OfcyMLtzrSg6rwqRoZ9kv2Pix9BjBH664sJLEOgF+GzzjERA8Ac3UWH1TwROj83NJw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"abaplint": "abaplint"
|
||||
|
@ -31,18 +31,18 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@abaplint/database-sqlite": {
|
||||
"version": "2.7.58",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/database-sqlite/-/database-sqlite-2.7.58.tgz",
|
||||
"integrity": "sha512-eDg0nmF4rvl2bp18zv8WEUErvLX1Lvi5bYyj4t2/ku8UpRpDMuwQKlp2tGRHzdJu8nankLUzZcpxrd7bfYb00A==",
|
||||
"version": "2.7.74",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/database-sqlite/-/database-sqlite-2.7.74.tgz",
|
||||
"integrity": "sha512-PZ2BNTAxkabP+M0DDeP0I2pU6Qzn64u37JeGvu08wTKJFntCgSYb/tNRxj2BNElW+hVANoBQOBigWT1Zzm2z4w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"sql.js": "^1.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@abaplint/runtime": {
|
||||
"version": "2.7.66",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/runtime/-/runtime-2.7.66.tgz",
|
||||
"integrity": "sha512-P8JvjCM9k5I7dt8CJV79XxyqKb/Fht51nTqtMvjAFDAv38gFqmaqfG0TPC1Yk1De4nqyPYAPeTPMPktjnUkg9w==",
|
||||
"version": "2.7.79",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/runtime/-/runtime-2.7.79.tgz",
|
||||
"integrity": "sha512-ZsMYLoA06CvJZC3SAzSNhM8XGIbKdcYvifBvgwAqifLPhEtJQ2m59KMiQdfWsb0WsGCulqB2h9zJZeRCrYP7Pg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"temporal-polyfill": "^0.1.1"
|
||||
|
@ -52,9 +52,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@abaplint/transpiler-cli": {
|
||||
"version": "2.7.66",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/transpiler-cli/-/transpiler-cli-2.7.66.tgz",
|
||||
"integrity": "sha512-8fVuyMeVxH+afz59/+xId5kKEtdGQX0XjNVUwzI4nBFYRl+HYXDeztQQf8xOsFTPMS313KLMC1vBpyQNWufdTQ==",
|
||||
"version": "2.7.79",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/transpiler-cli/-/transpiler-cli-2.7.79.tgz",
|
||||
"integrity": "sha512-/98SXIXcuXSSvWIYiz9wCodL3Xvqk0MSB/iLjbG4RkJdvImN9bePFUDZSW9prqv2AbGB/hSzTlA+MCQAwfofog==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"abap_transpile": "abap_transpile"
|
||||
|
@ -87,33 +87,33 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@abaplint/cli": {
|
||||
"version": "2.102.15",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.102.15.tgz",
|
||||
"integrity": "sha512-qZLqEKm0j1TxFhKapsc8NU/HNpBcA8rxN864/iL61cvsOStdCb1DxEPG4uvnNbKNpOsUskRd4tSNGE/PFphliA==",
|
||||
"version": "2.102.28",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/cli/-/cli-2.102.28.tgz",
|
||||
"integrity": "sha512-bZwpD7xXCCG5oo5QXat4OfcyMLtzrSg6rwqRoZ9kv2Pix9BjBH664sJLEOgF+GzzjERA8Ac3UWH1TwROj83NJw==",
|
||||
"dev": true
|
||||
},
|
||||
"@abaplint/database-sqlite": {
|
||||
"version": "2.7.58",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/database-sqlite/-/database-sqlite-2.7.58.tgz",
|
||||
"integrity": "sha512-eDg0nmF4rvl2bp18zv8WEUErvLX1Lvi5bYyj4t2/ku8UpRpDMuwQKlp2tGRHzdJu8nankLUzZcpxrd7bfYb00A==",
|
||||
"version": "2.7.74",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/database-sqlite/-/database-sqlite-2.7.74.tgz",
|
||||
"integrity": "sha512-PZ2BNTAxkabP+M0DDeP0I2pU6Qzn64u37JeGvu08wTKJFntCgSYb/tNRxj2BNElW+hVANoBQOBigWT1Zzm2z4w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"sql.js": "^1.8.0"
|
||||
}
|
||||
},
|
||||
"@abaplint/runtime": {
|
||||
"version": "2.7.66",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/runtime/-/runtime-2.7.66.tgz",
|
||||
"integrity": "sha512-P8JvjCM9k5I7dt8CJV79XxyqKb/Fht51nTqtMvjAFDAv38gFqmaqfG0TPC1Yk1De4nqyPYAPeTPMPktjnUkg9w==",
|
||||
"version": "2.7.79",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/runtime/-/runtime-2.7.79.tgz",
|
||||
"integrity": "sha512-ZsMYLoA06CvJZC3SAzSNhM8XGIbKdcYvifBvgwAqifLPhEtJQ2m59KMiQdfWsb0WsGCulqB2h9zJZeRCrYP7Pg==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"temporal-polyfill": "^0.1.1"
|
||||
}
|
||||
},
|
||||
"@abaplint/transpiler-cli": {
|
||||
"version": "2.7.66",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/transpiler-cli/-/transpiler-cli-2.7.66.tgz",
|
||||
"integrity": "sha512-8fVuyMeVxH+afz59/+xId5kKEtdGQX0XjNVUwzI4nBFYRl+HYXDeztQQf8xOsFTPMS313KLMC1vBpyQNWufdTQ==",
|
||||
"version": "2.7.79",
|
||||
"resolved": "https://registry.npmjs.org/@abaplint/transpiler-cli/-/transpiler-cli-2.7.79.tgz",
|
||||
"integrity": "sha512-/98SXIXcuXSSvWIYiz9wCodL3Xvqk0MSB/iLjbG4RkJdvImN9bePFUDZSW9prqv2AbGB/hSzTlA+MCQAwfofog==",
|
||||
"dev": true
|
||||
},
|
||||
"sql.js": {
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
},
|
||||
"homepage": "https://github.com/abap2UI5/abap2UI5#readme",
|
||||
"devDependencies": {
|
||||
"@abaplint/cli": "^2.102.15",
|
||||
"@abaplint/database-sqlite": "^2.7.58",
|
||||
"@abaplint/runtime": "^2.7.66",
|
||||
"@abaplint/transpiler-cli": "^2.7.66"
|
||||
"@abaplint/cli": "^2.102.28",
|
||||
"@abaplint/database-sqlite": "^2.7.74",
|
||||
"@abaplint/runtime": "^2.7.79",
|
||||
"@abaplint/transpiler-cli": "^2.7.79"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,14 +1,15 @@
|
|||
CLASS z2ui5_cl_fw_app DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PROTECTED.
|
||||
class Z2UI5_CL_FW_APP definition
|
||||
public
|
||||
final
|
||||
create protected .
|
||||
|
||||
PUBLIC SECTION.
|
||||
public section.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
interfaces Z2UI5_IF_APP .
|
||||
interfaces IF_SERIALIZABLE_OBJECT .
|
||||
|
||||
DATA:
|
||||
BEGIN OF ms_home,
|
||||
data:
|
||||
BEGIN OF ms_home,
|
||||
btn_text TYPE string,
|
||||
btn_event_id TYPE string,
|
||||
btn_icon TYPE string,
|
||||
|
@ -16,28 +17,24 @@ CLASS z2ui5_cl_fw_app DEFINITION
|
|||
class_value_state TYPE string,
|
||||
class_value_state_text TYPE string,
|
||||
class_editable TYPE abap_bool VALUE abap_true,
|
||||
END OF ms_home.
|
||||
|
||||
CLASS-METHODS factory_start
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||
|
||||
CLASS-METHODS factory_error
|
||||
IMPORTING
|
||||
error TYPE REF TO cx_root
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_app.
|
||||
|
||||
DATA client TYPE REF TO z2ui5_if_client.
|
||||
DATA mv_check_initialized TYPE abap_bool.
|
||||
DATA mv_check_demo TYPE abap_bool.
|
||||
DATA mx_error TYPE REF TO cx_root.
|
||||
|
||||
METHODS z2ui5_on_init.
|
||||
METHODS z2ui5_on_event.
|
||||
METHODS view_display_error.
|
||||
METHODS view_display_start.
|
||||
END OF ms_home .
|
||||
data CLIENT type ref to Z2UI5_IF_CLIENT .
|
||||
data MV_CHECK_INITIALIZED type ABAP_BOOL .
|
||||
data MV_CHECK_DEMO type ABAP_BOOL .
|
||||
data MX_ERROR type ref to CX_ROOT .
|
||||
|
||||
class-methods FACTORY_START
|
||||
returning
|
||||
value(RESULT) type ref to Z2UI5_CL_FW_APP .
|
||||
class-methods FACTORY_ERROR
|
||||
importing
|
||||
!ERROR type ref to CX_ROOT
|
||||
returning
|
||||
value(RESULT) type ref to Z2UI5_CL_FW_APP .
|
||||
methods Z2UI5_ON_INIT .
|
||||
methods Z2UI5_ON_EVENT .
|
||||
methods VIEW_DISPLAY_ERROR .
|
||||
methods VIEW_DISPLAY_START .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
@ -68,20 +65,25 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
|
|||
sub = ` ` ).
|
||||
DATA(lv_url_app) = lv_url && client->get( )-s_config-search.
|
||||
|
||||
data(lv_text) = mx_error->get_text( ).
|
||||
DATA(lv_text) = ``.
|
||||
DATA(lx_error) = mx_error.
|
||||
WHILE lx_error IS BOUND.
|
||||
lv_text = lv_text && `<p>` && lx_error->get_text( ) && `</p>`.
|
||||
lx_error = lx_error->previous.
|
||||
ENDWHILE.
|
||||
|
||||
DATA(view) = z2ui5_cl_xml_view=>factory( client )->shell( )->illustrated_message(
|
||||
enableformattedtext = abap_true
|
||||
illustrationtype = 'sapIllus-ErrorScreen'
|
||||
title = '500 Internal Server Error'
|
||||
illustrationtype = `sapIllus-ErrorScreen`
|
||||
title = `500 Internal Server Error`
|
||||
description = lv_text
|
||||
)->additional_content(
|
||||
)->button(
|
||||
text = 'Home'
|
||||
type = 'Emphasized'
|
||||
text = `Home`
|
||||
type = `Emphasized`
|
||||
press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url ) ) )
|
||||
)->button(
|
||||
text = 'Restart'
|
||||
text = `Restart`
|
||||
press = client->_event_client( val = client->cs_event-location_reload t_arg = VALUE #( ( lv_url_app ) ) ) ).
|
||||
|
||||
client->view_display( view->stringify( ) ).
|
||||
|
@ -130,7 +132,7 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
|
|||
IF ms_home-class_editable = abap_true.
|
||||
|
||||
content->input( placeholder = `fill in the class name and press 'check'`
|
||||
editable = z2ui5_cl_fw_utility=>get_json_boolean( ms_home-class_editable )
|
||||
editable = z2ui5_cl_fw_utility=>boolean_abap_2_json( ms_home-class_editable )
|
||||
value = client->_bind_edit( ms_home-classname ) ).
|
||||
|
||||
ELSE.
|
||||
|
@ -144,29 +146,29 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
|
|||
)->link( text = `Link to the Application`
|
||||
target = `_blank`
|
||||
href = lv_url
|
||||
enabled = z2ui5_cl_fw_utility=>get_json_boolean( xsdbool( ms_home-class_editable = abap_false ) ) ).
|
||||
enabled = z2ui5_cl_fw_utility=>boolean_abap_2_json( xsdbool( ms_home-class_editable = abap_false ) ) ).
|
||||
|
||||
DATA(form) = grid->simple_form( title = `Samples`
|
||||
editable = abap_true
|
||||
layout = 'ResponsiveGridLayout' ).
|
||||
layout = `ResponsiveGridLayout` ).
|
||||
|
||||
IF mv_check_demo = abap_false.
|
||||
form->message_strip( text = 'Oops! You need to install abap2UI5 demos before continuing...'
|
||||
type = 'Warning'
|
||||
)->get( )->_generic( 'link' )->link( text = `(HERE)`
|
||||
target = '_blank'
|
||||
form->message_strip( text = `Oops! You need to install abap2UI5 demos before continuing...`
|
||||
type = `Warning`
|
||||
)->get( )->_generic( `link` )->link( text = `(HERE)`
|
||||
target = `_blank`
|
||||
href = `https://github.com/oblomov-dev/abap2UI5-demos` ).
|
||||
ENDIF.
|
||||
|
||||
data(cont) = form->content( `form` ).
|
||||
cont->label( ).
|
||||
cont->button(
|
||||
text = 'Continue...'
|
||||
press = client->_event( val = `DEMOS` check_view_destroy = abap_true )
|
||||
enabled = xsdbool( mv_check_demo = abap_true ) )->get( ).
|
||||
cont->button( visible = abap_false )->link( text = 'More on GitHub...'
|
||||
target = '_blank'
|
||||
href = 'https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md' ).
|
||||
DATA(cont) = form->content( `form` ).
|
||||
cont->label( ).
|
||||
cont->button(
|
||||
text = `Continue...`
|
||||
press = client->_event( val = `DEMOS` check_view_destroy = abap_true )
|
||||
enabled = xsdbool( mv_check_demo = abap_true ) )->get( ).
|
||||
cont->button( visible = abap_false )->link( text = `More on GitHub...`
|
||||
target = `_blank`
|
||||
href = `https://github.com/abap2UI5/abap2UI5-documentation/blob/main/docs/links.md` ).
|
||||
|
||||
client->view_display( form->stringify( ) ).
|
||||
|
||||
|
@ -206,7 +208,7 @@ CLASS Z2UI5_CL_FW_APP IMPLEMENTATION.
|
|||
WHEN `BUTTON_CHECK`.
|
||||
TRY.
|
||||
DATA li_app_test TYPE REF TO z2ui5_if_app.
|
||||
ms_home-classname = z2ui5_cl_fw_utility=>get_trim_upper( ms_home-classname ).
|
||||
ms_home-classname = z2ui5_cl_fw_utility=>c_trim_upper( ms_home-classname ).
|
||||
CREATE OBJECT li_app_test TYPE (ms_home-classname).
|
||||
|
||||
client->message_toast_display( `App is ready to start!` ).
|
||||
|
|
19
src/00/z2ui5_cl_fw_app.clas.testclasses.abap
Normal file
19
src/00/z2ui5_cl_fw_app.clas.testclasses.abap
Normal file
|
@ -0,0 +1,19 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION short
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
||||
|
||||
METHOD first_test.
|
||||
|
||||
DATA(lo_app) = Z2UI5_CL_FW_APP=>factory_start( ) ##NEEDED.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
520
src/00/z2ui5_cl_fw_binding.clas.abap
Normal file
520
src/00/z2ui5_cl_fw_binding.clas.abap
Normal file
|
@ -0,0 +1,520 @@
|
|||
CLASS z2ui5_cl_fw_binding DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF cs_bind_type,
|
||||
one_way TYPE string VALUE `ONE_WAY`,
|
||||
two_way TYPE string VALUE `TWO_WAY`,
|
||||
one_time TYPE string VALUE `ONE_TIME`,
|
||||
END OF cs_bind_type.
|
||||
|
||||
CONSTANTS cv_model_edit_name TYPE string VALUE `EDIT`.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_attri,
|
||||
name TYPE string,
|
||||
type_kind TYPE string,
|
||||
type TYPE string,
|
||||
bind_type TYPE string,
|
||||
data_stringify TYPE string,
|
||||
data_rtti TYPE string,
|
||||
check_temp TYPE abap_bool,
|
||||
check_tested TYPE abap_bool,
|
||||
check_ready TYPE abap_bool,
|
||||
check_dissolved TYPE abap_bool,
|
||||
name_front TYPE string,
|
||||
END OF ty_s_attri.
|
||||
TYPES ty_t_attri TYPE SORTED TABLE OF ty_s_attri WITH UNIQUE KEY name.
|
||||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
app TYPE REF TO object OPTIONAL
|
||||
attri TYPE ty_t_attri OPTIONAL
|
||||
type TYPE string OPTIONAL
|
||||
data TYPE data OPTIONAL
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_binding.
|
||||
|
||||
METHODS main
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS main2
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
DATA mo_app TYPE REF TO object.
|
||||
DATA mt_attri TYPE ty_t_attri.
|
||||
DATA mv_type TYPE string.
|
||||
DATA mr_data TYPE REF TO data.
|
||||
|
||||
CLASS-METHODS update_attri
|
||||
IMPORTING
|
||||
t_attri TYPE ty_t_attri
|
||||
app TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_t_attri.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS bind_local
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS get_t_attri_by_dref
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_t_attri.
|
||||
|
||||
METHODS get_t_attri_by_struc
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_t_attri.
|
||||
|
||||
METHODS get_t_attri_by_oref
|
||||
IMPORTING
|
||||
val TYPE clike OPTIONAL
|
||||
check_temp type abap_bool DEFAULT abap_false
|
||||
PREFERRED PARAMETER val
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_t_attri.
|
||||
|
||||
METHODS bind
|
||||
IMPORTING
|
||||
bind TYPE REF TO ty_s_attri
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS dissolve_init.
|
||||
|
||||
METHODS dissolve_struc.
|
||||
|
||||
METHODS dissolve_dref.
|
||||
|
||||
METHODS search_binding
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS dissolve_oref.
|
||||
|
||||
METHODS set_attri_ready
|
||||
IMPORTING
|
||||
t_attri TYPE REF TO ty_t_attri
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO ty_s_attri.
|
||||
|
||||
METHODS name_front_create
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
|
||||
|
||||
METHOD factory.
|
||||
|
||||
r_result = NEW #( ).
|
||||
r_result->mo_app = app.
|
||||
r_result->mt_attri = attri.
|
||||
r_result->mv_type = type.
|
||||
|
||||
IF z2ui5_cl_fw_utility=>rtti_check_type_kind_dref( data ).
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `BINDING_WITH_REFERENCES_NOT_ALLOWED`.
|
||||
ENDIF.
|
||||
r_result->mr_data = REF #( data ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD dissolve_init.
|
||||
|
||||
IF mt_attri IS INITIAL.
|
||||
|
||||
mt_attri = get_t_attri_by_oref( ).
|
||||
set_attri_ready( REF #( mt_attri ) ).
|
||||
|
||||
ELSE.
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri).
|
||||
lr_attri->check_tested = abap_false.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_t_attri_by_oref.
|
||||
|
||||
DATA(lv_name) = COND #( WHEN val IS NOT INITIAL THEN `MO_APP` && `->` && val ELSE `MO_APP` ).
|
||||
FIELD-SYMBOLS <obj> TYPE any.
|
||||
ASSIGN (lv_name) TO <obj>.
|
||||
IF sy-subrc <> 0 OR <obj> IS NOT BOUND.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lt_attri2) = z2ui5_cl_fw_utility=>rtti_get_t_attri_by_object( <obj> ).
|
||||
* DELETE lt_attri2 WHERE visibility <> cl_abap_classdescr=>public OR is_interface = abap_true.
|
||||
|
||||
LOOP AT lt_attri2 INTO DATA(ls_attri2)
|
||||
where visibility = cl_abap_classdescr=>public
|
||||
and is_interface = abap_false.
|
||||
DATA(ls_attri) = CORRESPONDING ty_s_attri( ls_attri2 ).
|
||||
ls_attri-check_temp = check_temp.
|
||||
IF val IS NOT INITIAL.
|
||||
ls_attri-name = val && `->` && ls_attri-name.
|
||||
ENDIF.
|
||||
INSERT ls_attri INTO TABLE result.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD main2.
|
||||
|
||||
dissolve_init( ).
|
||||
|
||||
"step 0 / MO_APP->MV_VAL
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 1 / MO_APP->MS_STRUC-COMP
|
||||
dissolve_struc( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 2 / MO_APP->MR_DATA->*
|
||||
dissolve_dref( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 3 / MO_APP->MR_STRUC->COMP
|
||||
dissolve_struc( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 4 / MO_APP->MO_OBJ->MV_VAL
|
||||
dissolve_oref( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 5 / MO_APP->MO_OBJ->MR_STRUC-COMP
|
||||
dissolve_struc( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 6 / MO_APP->MO_OBJ->MR_VAL->*
|
||||
dissolve_dref( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 7 / MO_APP->MO_OBJ->MR_STRUC->COMP
|
||||
dissolve_struc( ).
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `Binding Error - No attribute found`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD main.
|
||||
|
||||
IF mv_type = cs_bind_type-one_time.
|
||||
result = bind_local( ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 0 / MO_APP->MV_VAL
|
||||
dissolve_init( ).
|
||||
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
"step 1 / MO_APP->MS_STRUC-COMP
|
||||
dissolve_struc( ).
|
||||
"step 2 / MO_APP->MR_DATA->*
|
||||
dissolve_dref( ).
|
||||
"step 3 / MO_APP->MR_STRUC->COMP
|
||||
dissolve_struc( ).
|
||||
"step 4 / MO_APP->MO_OBJ->MV_VAL
|
||||
dissolve_oref( ).
|
||||
"step 5 / MO_APP->MO_OBJ->MR_STRUC-COMP
|
||||
dissolve_struc( ).
|
||||
"step 6 / MO_APP->MO_OBJ->MR_VAL->*
|
||||
dissolve_dref( ).
|
||||
"step 7 / MO_APP->MO_OBJ->MR_STRUC->COMP
|
||||
dissolve_struc( ).
|
||||
|
||||
result = search_binding( ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_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.
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
ASSIGN mr_data->* TO <any>.
|
||||
DATA(lv_id) = z2ui5_cl_fw_utility=>func_get_uuid_22( ).
|
||||
INSERT VALUE #( name = lv_id
|
||||
data_stringify = z2ui5_cl_fw_utility=>trans_json_any_2( mr_data )
|
||||
bind_type = cs_bind_type-one_time )
|
||||
INTO TABLE mt_attri.
|
||||
result = |/{ lv_id }|.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD bind.
|
||||
|
||||
FIELD-SYMBOLS <attri> TYPE any.
|
||||
DATA(lv_name) = `MO_APP->` && bind->name.
|
||||
ASSIGN (lv_name) TO <attri>.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error.
|
||||
ENDIF.
|
||||
|
||||
DATA lr_ref TYPE REF TO data.
|
||||
GET REFERENCE OF <attri> INTO lr_ref.
|
||||
|
||||
IF mr_data <> lr_ref.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF bind->bind_type <> mv_type AND bind->bind_type IS NOT INITIAL.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `<p>Binding Error - Two different binding types for same attribute used (` && bind->name && `).`.
|
||||
ENDIF.
|
||||
|
||||
bind->bind_type = mv_type.
|
||||
bind->name_front = name_front_create( val = bind->name ).
|
||||
|
||||
result = COND #( WHEN mv_type = cs_bind_type-two_way THEN `/` && cv_model_edit_name && `/` ELSE `/` ) && bind->name_front.
|
||||
IF strlen( result ) > 30.
|
||||
bind->name_front = z2ui5_cl_fw_utility=>func_get_uuid_22( ).
|
||||
result = COND #( WHEN mv_type = cs_bind_type-two_way THEN `/` && cv_model_edit_name && `/` ELSE `/` ) && bind->name_front.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_t_attri_by_struc.
|
||||
|
||||
DATA(lv_name) = `MO_APP->` && val.
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_fw_utility=>rtti_get_t_comp_by_struc( <attribute> ).
|
||||
DATA(lv_attri) = z2ui5_cl_fw_utility=>c_replace_assign_struc( val ).
|
||||
LOOP AT lt_comp REFERENCE INTO DATA(lr_comp).
|
||||
|
||||
DATA(lv_element) = lv_attri && lr_comp->name.
|
||||
|
||||
IF lr_comp->as_include = abap_true
|
||||
OR lr_comp->type->type_kind = cl_abap_classdescr=>typekind_struct2
|
||||
OR lr_comp->type->type_kind = cl_abap_classdescr=>typekind_struct1.
|
||||
|
||||
DATA(lt_attri) = get_t_attri_by_struc( lv_element ).
|
||||
INSERT LINES OF lt_attri INTO TABLE result.
|
||||
|
||||
ELSE.
|
||||
DATA(ls_attri) = VALUE ty_s_attri(
|
||||
name = lv_element
|
||||
type_kind = lr_comp->type->type_kind ).
|
||||
INSERT ls_attri INTO TABLE result.
|
||||
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD dissolve_struc.
|
||||
|
||||
DATA(lt_dissolve) = VALUE ty_t_attri( ).
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_struct1
|
||||
OR type_kind = cl_abap_classdescr=>typekind_struct2
|
||||
AND check_dissolved = abap_false.
|
||||
|
||||
lr_attri->check_dissolved = abap_true.
|
||||
DATA(lt_attri) = get_t_attri_by_struc( lr_attri->name ).
|
||||
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
|
||||
ENDLOOP.
|
||||
|
||||
set_attri_ready( REF #( lt_dissolve ) ).
|
||||
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD dissolve_dref.
|
||||
|
||||
DATA(lt_dissolve) = VALUE ty_t_attri( ).
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_bind)
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_dref
|
||||
AND check_dissolved = abap_false.
|
||||
|
||||
DATA(lt_attri) = get_t_attri_by_dref( lr_bind->name ).
|
||||
lr_bind->check_dissolved = abap_true.
|
||||
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
|
||||
ENDLOOP.
|
||||
|
||||
set_attri_ready( REF #( lt_dissolve ) ).
|
||||
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD search_binding.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_bind)
|
||||
WHERE ( bind_type = `` OR bind_type = mv_type )
|
||||
AND check_ready = abap_true
|
||||
AND check_tested = abap_false.
|
||||
|
||||
lr_bind->check_tested = abap_true.
|
||||
result = bind( lr_bind ).
|
||||
IF result IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD dissolve_oref.
|
||||
|
||||
DATA(lt_dissolve) = VALUE ty_t_attri( ).
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_bind)
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_oref
|
||||
AND check_dissolved = abap_false.
|
||||
|
||||
|
||||
DATA(lt_attri) = get_t_attri_by_oref( val = lr_bind->name check_temp = abap_true ).
|
||||
IF lt_attri IS INITIAL.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
lr_bind->check_dissolved = abap_true.
|
||||
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
|
||||
ENDLOOP.
|
||||
|
||||
set_attri_ready( REF #( lt_dissolve ) ).
|
||||
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_attri_ready.
|
||||
|
||||
LOOP AT t_attri->* REFERENCE INTO result
|
||||
WHERE check_ready = abap_false.
|
||||
|
||||
CASE result->type_kind.
|
||||
WHEN cl_abap_classdescr=>typekind_iref
|
||||
OR cl_abap_classdescr=>typekind_intf.
|
||||
DELETE t_attri->*.
|
||||
|
||||
WHEN cl_abap_classdescr=>typekind_oref
|
||||
OR cl_abap_classdescr=>typekind_dref
|
||||
OR cl_abap_classdescr=>typekind_struct2
|
||||
OR cl_abap_classdescr=>typekind_struct1.
|
||||
|
||||
WHEN OTHERS.
|
||||
result->check_ready = abap_true.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD update_attri.
|
||||
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
lo_bind->mo_app = app.
|
||||
lo_bind->mt_attri = t_attri.
|
||||
|
||||
lo_bind->dissolve_init( ).
|
||||
|
||||
lo_bind->dissolve_oref( ).
|
||||
lo_bind->dissolve_oref( ).
|
||||
lo_bind->dissolve_dref( ).
|
||||
|
||||
result = lo_bind->mt_attri.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_t_attri_by_dref.
|
||||
|
||||
DATA(lv_name) = `MO_APP->` && val && `->*`.
|
||||
FIELD-SYMBOLS <data> TYPE any.
|
||||
ASSIGN (lv_name) TO <data>.
|
||||
IF <data> IS NOT ASSIGNED.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <data> ).
|
||||
|
||||
DATA(ls_new_bind) = VALUE ty_s_attri(
|
||||
name = val && `->*`
|
||||
type_kind = lo_descr->type_kind
|
||||
type = lo_descr->get_relative_name( )
|
||||
check_temp = abap_true
|
||||
check_ready = abap_true
|
||||
).
|
||||
|
||||
INSERT ls_new_bind INTO TABLE result.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
METHOD name_front_create.
|
||||
|
||||
result = replace( val = val sub = `*` with = `_` occ = 0 ).
|
||||
result = replace( val = result sub = `>` with = `_` occ = 0 ).
|
||||
result = replace( val = result sub = `-` with = `_` occ = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
883
src/00/z2ui5_cl_fw_binding.clas.testclasses.abap
Normal file
883
src/00/z2ui5_cl_fw_binding.clas.testclasses.abap
Normal file
|
@ -0,0 +1,883 @@
|
|||
|
||||
CLASS ltcl_test_dissolve DEFINITION DEFERRED.
|
||||
CLASS z2ui5_cl_fw_binding DEFINITION LOCAL FRIENDS ltcl_test_dissolve.
|
||||
|
||||
CLASS ltcl_test_dissolve DEFINITION FINAL FOR TESTING
|
||||
DURATION short
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
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_fw_binding( ).
|
||||
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 dangerous.
|
||||
|
||||
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( ).
|
||||
lo_app->mo_app = NEW #( ).
|
||||
DATA(lo_bind) = NEW z2ui5_cl_fw_binding( ).
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
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 dangerous.
|
||||
|
||||
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 = `/` && z2ui5_cl_fw_binding=>cv_model_edit_name && `/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 dangerous.
|
||||
|
||||
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( ).
|
||||
|
||||
DATA(ls_attri) = lo_bind->mt_attri[ name = `MS_STRUC-S_02-S_03-S_04-INPUT` bind_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way ].
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_result
|
||||
exp = `/` && ls_attri-name_front ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_test_main_data_ref DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
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 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.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test_main_data_ref( ).
|
||||
*
|
||||
* FIELD-SYMBOLS <field> TYPE any.
|
||||
* CREATE DATA lo_app->mr_value TYPE string.
|
||||
* ASSIGN (`LO_APP->MR_VALUE->*`) TO <field>.
|
||||
* <field> = `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 = <field>
|
||||
* ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MR_VALUE___` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_one_way_struc.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test_main_data_ref( ).
|
||||
*
|
||||
* CREATE DATA lo_app->mr_struc TYPE ty_s_01.
|
||||
* FIELD-SYMBOLS <field> TYPE any.
|
||||
* ASSIGN (`LO_APP->MR_STRUC->INPUT`) TO <field>.
|
||||
* <field> = `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 = <field>
|
||||
* ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MR_STRUC__INPUT` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_test_main_object DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
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.
|
||||
|
||||
CLASS ltcl_test_main_object_ref_app DEFINITION.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_01,
|
||||
input TYPE string,
|
||||
input_02 TYPE string,
|
||||
input_03 TYPE string,
|
||||
END OF ty_s_01.
|
||||
TYPES ty_t_01 TYPE STANDARD TABLE OF ty_s_01 WITH EMPTY KEY ##NEEDED.
|
||||
|
||||
DATA mr_value TYPE REF TO data ##NEEDED.
|
||||
DATA mr_struc TYPE REF TO data ##NEEDED.
|
||||
DATA mr_tab TYPE REF TO data ##NEEDED.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_test_main_object_ref DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
DATA mo_obj TYPE REF TO ltcl_test_main_object_ref_app ##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.
|
||||
METHODS test_one_way_tab FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_test_main_object_ref IMPLEMENTATION.
|
||||
|
||||
METHOD test_one_way_value.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test_main_object_ref( ).
|
||||
* lo_app->mo_obj = NEW #( ).
|
||||
* CREATE DATA lo_app->mo_obj->mr_value TYPE string.
|
||||
*
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* ASSIGN ('LO_APP->MO_OBJ->MR_VALUE->*') TO <any>.
|
||||
* <any> = `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 = <any>
|
||||
* ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_OBJ__MR_VALUE___` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_one_way_struc.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test_main_object_ref( ).
|
||||
* lo_app->mo_obj = NEW #( ).
|
||||
* CREATE DATA lo_app->mo_obj->mr_struc TYPE ltcl_test_main_object_ref_app=>ty_s_01.
|
||||
*
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* ASSIGN ('LO_APP->MO_OBJ->MR_STRUC->INPUT') TO <any>.
|
||||
*
|
||||
* <any> = `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 = <any>
|
||||
* ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_OBJ__MR_STRUC__INPUT` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_one_way_tab.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test_main_object_ref( ).
|
||||
* lo_app->mo_obj = NEW #( ).
|
||||
* CREATE DATA lo_app->mo_obj->mr_tab TYPE ltcl_test_main_object_ref_app=>ty_t_01.
|
||||
*
|
||||
* FIELD-SYMBOLS <any> TYPE ltcl_test_main_object_ref_app=>ty_t_01.
|
||||
* ASSIGN ('LO_APP->MO_OBJ->MR_TAB->*') TO <any>.
|
||||
*
|
||||
* <any> = VALUE #( ( input = 'test' ) ).
|
||||
*
|
||||
* DATA(lo_bind) = z2ui5_cl_fw_binding=>factory(
|
||||
* app = lo_app
|
||||
* type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
* data = <any>
|
||||
* ).
|
||||
*
|
||||
* DATA(lv_result) = lo_bind->main( ).
|
||||
*
|
||||
* cl_abap_unit_assert=>assert_equals(
|
||||
* act = lv_result
|
||||
* exp = `/MO_OBJ__MR_TAB___` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/00/z2ui5_cl_fw_binding.clas.xml
Normal file
17
src/00/z2ui5_cl_fw_binding.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_FW_BINDING</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - 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>
|
|
@ -12,6 +12,7 @@ CLASS z2ui5_cl_fw_client DEFINITION
|
|||
METHODS constructor
|
||||
IMPORTING
|
||||
handler TYPE REF TO z2ui5_cl_fw_handler.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
METHODS set_arg_string
|
||||
|
@ -204,8 +205,34 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~_bind.
|
||||
|
||||
result = mo_handler->_create_binding( value = val
|
||||
type = z2ui5_cl_fw_handler=>cs_bind_type-one_way ).
|
||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||
app = mo_handler->ms_db-app
|
||||
attri = mo_handler->ms_db-t_attri
|
||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_way
|
||||
data = val
|
||||
).
|
||||
|
||||
result = lo_binder->main( ).
|
||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
||||
|
||||
IF path = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD z2ui5_if_client~_bind_local.
|
||||
|
||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||
app = mo_handler->ms_db-app
|
||||
attri = mo_handler->ms_db-t_attri
|
||||
type = z2ui5_cl_fw_binding=>cs_bind_type-one_time
|
||||
data = val
|
||||
).
|
||||
|
||||
result = lo_binder->main( ).
|
||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
||||
|
||||
IF path = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
|
@ -216,8 +243,15 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~_bind_edit.
|
||||
|
||||
result = mo_handler->_create_binding( value = val
|
||||
type = z2ui5_cl_fw_handler=>cs_bind_type-two_way ).
|
||||
DATA(lo_binder) = z2ui5_cl_fw_binding=>factory(
|
||||
app = mo_handler->ms_db-app
|
||||
attri = mo_handler->ms_db-t_attri
|
||||
type = z2ui5_cl_fw_binding=>cs_bind_type-two_way
|
||||
data = val
|
||||
).
|
||||
|
||||
result = lo_binder->main( ).
|
||||
mo_handler->ms_db-t_attri = lo_binder->mt_attri.
|
||||
|
||||
IF path = abap_false.
|
||||
result = `{` && result && `}`.
|
||||
|
@ -228,7 +262,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
METHOD z2ui5_if_client~_event.
|
||||
|
||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_fw_utility=>get_json_boolean( check_view_destroy ) && ` }`.
|
||||
result = `onEvent( { 'EVENT' : '` && val && `', 'METHOD' : 'UPDATE' , 'CHECK_VIEW_DESTROY' : ` && z2ui5_cl_fw_utility=>boolean_abap_2_json( check_view_destroy ) && ` }`.
|
||||
result = result && set_arg_string( t_arg ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -240,6 +274,7 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_arg_string.
|
||||
|
||||
IF val IS NOT INITIAL.
|
||||
|
@ -260,5 +295,4 @@ CLASS z2ui5_cl_fw_client IMPLEMENTATION.
|
|||
result = result && `)`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION medium
|
||||
RISK LEVEL harmless.
|
||||
DURATION long
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
CLASS z2ui5_cl_fw_db DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC.
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
|
@ -11,42 +11,53 @@ CLASS z2ui5_cl_fw_db DEFINITION
|
|||
id_prev TYPE string,
|
||||
id_prev_app TYPE string,
|
||||
id_prev_app_stack TYPE string,
|
||||
t_attri TYPE z2ui5_cl_fw_utility=>ty_t_attri,
|
||||
t_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri,
|
||||
app TYPE REF TO z2ui5_if_app,
|
||||
END OF ty_s_db.
|
||||
END OF ty_s_db .
|
||||
|
||||
CLASS-METHODS create
|
||||
IMPORTING
|
||||
id TYPE string
|
||||
db TYPE ty_s_db.
|
||||
|
||||
!id TYPE string
|
||||
!db TYPE ty_s_db .
|
||||
CLASS-METHODS load_app
|
||||
IMPORTING
|
||||
id TYPE clike
|
||||
!id TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_s_db.
|
||||
VALUE(result) TYPE ty_s_db .
|
||||
|
||||
CLASS-METHODS read
|
||||
IMPORTING
|
||||
id TYPE clike
|
||||
check_load_app TYPE abap_bool DEFAULT abap_true
|
||||
!id TYPE clike
|
||||
!check_load_app TYPE abap_bool DEFAULT abap_true
|
||||
RETURNING
|
||||
VALUE(result) TYPE z2ui5_t_draft.
|
||||
VALUE(result) TYPE z2ui5_t_draft .
|
||||
|
||||
CLASS-METHODS cleanup.
|
||||
|
||||
CLASS-METHODS trans_any_2_xml
|
||||
IMPORTING
|
||||
!db TYPE ty_s_db
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_FW_DB IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_fw_db IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD cleanup.
|
||||
|
||||
DATA(lv_time) = z2ui5_cl_fw_utility=>get_timestampl( ).
|
||||
DATA(lv_four_hours_ago) = cl_abap_tstmp=>subtractsecs( tstmp = lv_time
|
||||
secs = 60 * 60 * 4 ).
|
||||
DATA(lv_time) = z2ui5_cl_fw_utility=>time_get_timestampl( ).
|
||||
|
||||
|
||||
DATA(lv_four_hours_ago) = z2ui5_cl_fw_utility=>time_substract_seconds(
|
||||
time = lv_time
|
||||
seconds = 60 * 60 * 4
|
||||
).
|
||||
|
||||
DELETE FROM z2ui5_t_draft WHERE timestampl < @lv_four_hours_ago.
|
||||
COMMIT WORK.
|
||||
|
@ -56,55 +67,22 @@ CLASS Z2UI5_CL_FW_DB IMPLEMENTATION.
|
|||
|
||||
METHOD create.
|
||||
|
||||
TRY.
|
||||
DATA(lv_xml) = z2ui5_cl_fw_utility=>trans_object_2_xml( REF #( db ) ).
|
||||
|
||||
CATCH cx_xslt_serialization_error INTO DATA(x).
|
||||
TRY.
|
||||
|
||||
DATA(ls_db) = db.
|
||||
DATA(lo_app) = CAST object( ls_db-app ).
|
||||
|
||||
IF NOT line_exists( ls_db-t_attri[ check_ref_data = abap_true ] ).
|
||||
RAISE EXCEPTION x.
|
||||
ENDIF.
|
||||
|
||||
lo_app = CAST object( ls_db-app ).
|
||||
LOOP AT ls_db-t_attri REFERENCE INTO DATA(lr_attri) WHERE check_ref_data = abap_true.
|
||||
|
||||
DATA(lv_assign) = 'LO_APP->' && lr_attri->name.
|
||||
FIELD-SYMBOLS <attri> TYPE any.
|
||||
FIELD-SYMBOLS <deref_attri> TYPE any.
|
||||
ASSIGN (lv_assign) TO <attri>.
|
||||
ASSIGN <attri>->* TO <deref_attri>.
|
||||
|
||||
lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_get( <deref_attri> ).
|
||||
CLEAR <deref_attri>.
|
||||
CLEAR <attri>.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
lv_xml = z2ui5_cl_fw_utility=>trans_object_2_xml( REF #( ls_db ) ).
|
||||
|
||||
CATCH cx_root INTO DATA(x2).
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cl_fw_error
|
||||
EXPORTING
|
||||
val = x->get_text( ) && `<p>` && x->previous->get_text( ) && `<p>` && x2->get_text( ).
|
||||
|
||||
ENDTRY.
|
||||
ENDTRY.
|
||||
DATA(lv_xml) = trans_any_2_xml( db ).
|
||||
|
||||
DATA(ls_draft) = VALUE z2ui5_t_draft( uuid = id
|
||||
uuid_prev = db-id_prev
|
||||
uuid_prev_app = db-id_prev_app
|
||||
uuid_prev_app_stack = db-id_prev_app_stack
|
||||
uname = z2ui5_cl_fw_utility=>get_user_tech( )
|
||||
timestampl = z2ui5_cl_fw_utility=>get_timestampl( )
|
||||
uname = z2ui5_cl_fw_utility=>func_get_user_tech( )
|
||||
timestampl = z2ui5_cl_fw_utility=>time_get_timestampl( )
|
||||
data = lv_xml ).
|
||||
|
||||
MODIFY z2ui5_t_draft FROM @ls_draft.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `CREATE_OF_DRAFT_ENTRY_ON_DATABASE_FAILED`.
|
||||
ENDIF.
|
||||
COMMIT WORK AND WAIT.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -114,27 +92,29 @@ CLASS Z2UI5_CL_FW_DB IMPLEMENTATION.
|
|||
|
||||
DATA(ls_db) = read( id ).
|
||||
|
||||
z2ui5_cl_fw_utility=>trans_xml_2_object(
|
||||
z2ui5_cl_fw_utility=>trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = ls_db-data
|
||||
IMPORTING
|
||||
data = result ).
|
||||
any = result ).
|
||||
|
||||
LOOP AT result-t_attri TRANSPORTING NO FIELDS WHERE data_rtti <> ``.
|
||||
DATA(lv_check_rtti) = abap_true.
|
||||
ENDLOOP.
|
||||
IF lv_check_rtti = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
* LOOP AT result-t_attri TRANSPORTING NO FIELDS WHERE data_rtti <> ``.
|
||||
* DATA(lv_check_rtti) = abap_true.
|
||||
* ENDLOOP.
|
||||
* IF lv_check_rtti = abap_false.
|
||||
* RETURN.
|
||||
* ENDIF.
|
||||
|
||||
DATA(lo_app) = CAST object( result-app ) ##NEEDED.
|
||||
LOOP AT result-t_attri REFERENCE INTO DATA(lr_attri) WHERE check_ref_data = abap_true.
|
||||
LOOP AT result-t_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE data_rtti IS NOT INITIAL
|
||||
AND type_kind = cl_abap_classdescr=>typekind_dref.
|
||||
|
||||
FIELD-SYMBOLS <ref> TYPE any.
|
||||
DATA(lv_assign) = 'LO_APP->' && lr_attri->name.
|
||||
ASSIGN (lv_assign) TO <ref>.
|
||||
|
||||
z2ui5_cl_fw_utility=>rtti_set(
|
||||
z2ui5_cl_fw_utility=>rtti_xml_set_to_data(
|
||||
EXPORTING
|
||||
rtti_data = lr_attri->data_rtti
|
||||
IMPORTING
|
||||
|
@ -164,7 +144,60 @@ CLASS Z2UI5_CL_FW_DB IMPLEMENTATION.
|
|||
|
||||
ENDIF.
|
||||
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `NO_DRAFT_ENTRY_OF_PREVIOUS_REQUEST_FOUND`.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD trans_any_2_xml.
|
||||
|
||||
TRY.
|
||||
result = z2ui5_cl_fw_utility=>trans_xml_any_2( db ).
|
||||
|
||||
CATCH cx_xslt_serialization_error INTO DATA(x).
|
||||
TRY.
|
||||
|
||||
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 ] ).
|
||||
|
||||
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.
|
||||
FIELD-SYMBOLS <attri> TYPE any.
|
||||
FIELD-SYMBOLS <deref_attri> TYPE any.
|
||||
ASSIGN (lv_assign) TO <attri>.
|
||||
ASSIGN <attri>->* TO <deref_attri>.
|
||||
|
||||
lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_xml_get_by_data( <deref_attri> ).
|
||||
CLEAR <deref_attri>.
|
||||
CLEAR <attri>.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
result = z2ui5_cl_fw_utility=>trans_xml_any_2( ls_db ).
|
||||
|
||||
CATCH cx_root INTO DATA(x2).
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = x->get_text( ) && `<p>` && x->previous->get_text( ) && `<p>` && x2->get_text( ).
|
||||
|
||||
ENDTRY.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
76
src/00/z2ui5_cl_fw_db.clas.testclasses.abap
Normal file
76
src/00/z2ui5_cl_fw_db.clas.testclasses.abap
Normal file
|
@ -0,0 +1,76 @@
|
|||
CLASS ltcl_test DEFINITION FINAL FOR TESTING
|
||||
DURATION long
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES z2ui5_if_app.
|
||||
DATA mr_data TYPE REF TO data ##NEEDED.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_trans_xml FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_test IMPLEMENTATION.
|
||||
|
||||
METHOD test_trans_xml.
|
||||
|
||||
* DATA(lo_app) = NEW ltcl_test( ).
|
||||
*
|
||||
* TYPES:
|
||||
* BEGIN OF ty_s_attri,
|
||||
* name TYPE string,
|
||||
* type_kind TYPE string,
|
||||
* type TYPE string,
|
||||
* END OF ty_s_attri.
|
||||
* TYPES ty_t_attri TYPE STANDARD TABLE OF ty_s_attri WITH EMPTY KEY.
|
||||
*
|
||||
* DATA(ls_tab) = VALUE ty_s_attri( ).
|
||||
* DATA(lt_table) = VALUE ty_t_attri( ).
|
||||
*
|
||||
* DATA(lo_tab_desc) = CAST cl_abap_tabledescr( cl_abap_typedescr=>describe_by_data( lt_table ) ).
|
||||
* DATA(o_struct_desc) = CAST cl_abap_structdescr( lo_tab_desc->get_table_line_type( ) ).
|
||||
* DATA(comp) = o_struct_desc->get_components( ).
|
||||
*
|
||||
* INSERT VALUE abap_componentdescr( name = 'ROW_ID'
|
||||
* type = CAST #( cl_abap_datadescr=>describe_by_data( ls_tab-type ) ) )
|
||||
* INTO TABLE comp.
|
||||
*
|
||||
* DATA(new_struct_desc) = cl_abap_structdescr=>create( comp ).
|
||||
* DATA(new_table_desc) = cl_abap_tabledescr=>create(
|
||||
* p_line_type = new_struct_desc
|
||||
* p_table_kind = cl_abap_tabledescr=>tablekind_std ).
|
||||
*
|
||||
* CREATE DATA lo_app->mr_data TYPE HANDLE new_table_desc.
|
||||
*
|
||||
* FIELD-SYMBOLS <tab> TYPE table.
|
||||
* ASSIGN lo_app->mr_data->* TO <tab>.
|
||||
*
|
||||
* DATA(lt_tab) = VALUE ty_t_attri( ( name = `test` ) ).
|
||||
*
|
||||
* DATA lr_struc TYPE REF TO data.
|
||||
* FIELD-SYMBOLS <any> TYPE any.
|
||||
* LOOP AT lt_tab INTO DATA(ls_tab2).
|
||||
* CREATE DATA lr_struc TYPE HANDLE new_struct_desc.
|
||||
* ASSIGN lr_struc->* TO <any>.
|
||||
* <any> = CORRESPONDING #( ls_tab2 ).
|
||||
* INSERT <any> INTO TABLE <tab>.
|
||||
* ENDLOOP.
|
||||
*
|
||||
* TRY.
|
||||
*
|
||||
* DATA(lv_xml) = z2ui5_cl_fw_db=>trans_any_2_xml( VALUE #( app = lo_app ) ).
|
||||
* cl_abap_unit_assert=>assert_not_initial( lv_xml ).
|
||||
*
|
||||
* CATCH z2ui5_cx_fw_error.
|
||||
* " when rtti not installed, then no test...
|
||||
* ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -10,6 +10,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
|
|
|
@ -5,13 +5,6 @@ CLASS z2ui5_cl_fw_handler DEFINITION
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF cs_bind_type,
|
||||
one_way TYPE string VALUE 'ONE_WAY',
|
||||
two_way TYPE string VALUE 'TWO_WAY',
|
||||
one_time TYPE string VALUE 'ONE_TIME',
|
||||
END OF cs_bind_type.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_s_next2,
|
||||
t_scroll TYPE z2ui5_if_client=>ty_t_name_value_int,
|
||||
|
@ -87,13 +80,6 @@ CLASS z2ui5_cl_fw_handler DEFINITION
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS _create_binding
|
||||
IMPORTING
|
||||
value TYPE data
|
||||
type TYPE string DEFAULT cs_bind_type-two_way
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS set_app_start
|
||||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
|
||||
|
@ -124,170 +110,36 @@ CLASS z2ui5_cl_fw_handler DEFINITION
|
|||
RETURNING
|
||||
VALUE(result) TYPE REF TO z2ui5_cl_fw_handler.
|
||||
|
||||
CLASS-METHODS model_set_backend
|
||||
IMPORTING
|
||||
model TYPE REF TO data
|
||||
app TYPE REF TO object
|
||||
t_attri TYPE z2ui5_cl_fw_utility=>ty_t_attri.
|
||||
|
||||
CLASS-METHODS model_set_frontend
|
||||
IMPORTING
|
||||
app TYPE REF TO object
|
||||
t_attri TYPE z2ui5_cl_fw_utility=>ty_t_attri
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS app_set_next
|
||||
IMPORTING
|
||||
app TYPE REF TO z2ui5_if_app
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_handler.
|
||||
|
||||
protected section.
|
||||
private section.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
||||
|
||||
CLASS z2ui5_cl_fw_handler IMPLEMENTATION.
|
||||
|
||||
METHOD app_set_next.
|
||||
|
||||
app->id = COND #( WHEN app->id IS INITIAL THEN z2ui5_cl_fw_utility=>get_uuid( ) ELSE app->id ).
|
||||
app->id = COND #( WHEN app->id IS INITIAL THEN z2ui5_cl_fw_utility=>func_get_uuid_32( ) ELSE app->id ).
|
||||
|
||||
r_result = NEW #( ).
|
||||
r_result->ms_db-app = app.
|
||||
r_result->ms_db-id = app->id.
|
||||
r_result->ms_db-id_prev = ms_db-id.
|
||||
r_result->ms_db-id_prev_app = ms_db-id.
|
||||
r_result->ms_db-t_attri = z2ui5_cl_fw_utility=>get_t_attri_by_ref( app ).
|
||||
r_result->ms_actual-check_launchpad_active = ms_actual-check_launchpad_active.
|
||||
r_result->ms_actual-check_on_navigated = abap_true.
|
||||
r_result->ms_next-s_set = ms_next-s_set.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_set_backend.
|
||||
|
||||
DATA(lo_app) = CAST object( app ) ##NEEDED.
|
||||
DATA(lr_model) = CAST data( model ) ##NEEDED.
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type = cs_bind_type-two_way.
|
||||
TRY.
|
||||
DATA(lv_type_kind) = lr_attri->type_kind.
|
||||
|
||||
FIELD-SYMBOLS <backend> TYPE any.
|
||||
DATA(lv_name) = `LO_APP->` && lr_attri->name.
|
||||
ASSIGN (lv_name) TO <backend>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
FIELD-SYMBOLS <frontend> TYPE any.
|
||||
lv_name = `LR_MODEL->` && replace( val = lr_attri->name
|
||||
sub = `-`
|
||||
with = `_`
|
||||
occ = 0 ).
|
||||
ASSIGN (lv_name) TO <frontend>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
IF lr_attri->check_ref_data IS NOT INITIAL.
|
||||
ASSIGN <backend>->* TO <backend>.
|
||||
TRY.
|
||||
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( <backend> ) ) ##NEEDED.
|
||||
lv_type_kind = `h`.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
CASE lv_type_kind.
|
||||
|
||||
WHEN `h`.
|
||||
z2ui5_cl_fw_utility=>trans_ref_tab_2_tab(
|
||||
EXPORTING
|
||||
ir_tab_from = <frontend>
|
||||
IMPORTING
|
||||
t_result = <backend> ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
ASSIGN <frontend>->* TO <frontend>.
|
||||
CASE lr_attri->type_kind.
|
||||
WHEN 'D' OR 'T'.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = `"` && <frontend> && `"`
|
||||
CHANGING
|
||||
data = <backend> ).
|
||||
WHEN OTHERS.
|
||||
<backend> = <frontend>.
|
||||
ENDCASE.
|
||||
|
||||
ENDCASE.
|
||||
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD model_set_frontend.
|
||||
|
||||
DATA(lo_app) = CAST object( app ) ##NEEDED.
|
||||
DATA(lr_view_model) = z2ui5_cl_fw_utility_json=>factory( ).
|
||||
DATA(lo_update) = lr_view_model->add_attribute_object( ss_config-view_model_edit_name ).
|
||||
|
||||
LOOP AT t_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
||||
|
||||
IF lr_attri->bind_type = cs_bind_type-one_time.
|
||||
lr_view_model->add_attribute( n = lr_attri->name
|
||||
v = lr_attri->data_stringify
|
||||
apos_active = abap_false ).
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_actual) = COND #( WHEN lr_attri->bind_type = cs_bind_type-one_way
|
||||
THEN lr_view_model
|
||||
ELSE lo_update ).
|
||||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
DATA(lv_name) = `LO_APP->` && to_upper( lr_attri->name ).
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
|
||||
WHEN `h`.
|
||||
lo_actual->add_attribute( n = lr_attri->name
|
||||
v = z2ui5_cl_fw_utility=>trans_any_2_json( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
CASE lr_attri->type.
|
||||
|
||||
WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||
|
||||
lo_actual->add_attribute( n = lr_attri->name
|
||||
v = SWITCH #( <attribute>
|
||||
WHEN abap_true THEN `true` ELSE `false` )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
lo_actual->add_attribute( n = lr_attri->name
|
||||
v = /ui2/cl_json=>serialize( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
ENDCASE.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
result = lr_view_model->stringify( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD request_begin.
|
||||
|
||||
so_body = z2ui5_cl_fw_utility_json=>factory( body ).
|
||||
|
@ -301,37 +153,40 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
ss_config-version = location->get_attribute( `VERSION` )->get_val( ).
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ss_config-view_model_edit_name = `oUpdate`.
|
||||
ss_config-view_model_edit_name = z2ui5_cl_fw_binding=>cv_model_edit_name.
|
||||
|
||||
TRY.
|
||||
DATA(lv_id_prev) = so_body->get_attribute( `ID` )->get_val( ).
|
||||
result = set_app_client( lv_id_prev ).
|
||||
result->ms_actual-check_on_navigated = abap_false.
|
||||
CATCH cx_root.
|
||||
result = set_app_start( ).
|
||||
result->ms_actual-check_on_navigated = abap_true.
|
||||
ENDTRY.
|
||||
IF lv_id_prev IS INITIAL.
|
||||
result = set_app_start( ).
|
||||
result->ms_actual-check_on_navigated = abap_true.
|
||||
ELSE.
|
||||
result = set_app_client( lv_id_prev ).
|
||||
result->ms_actual-check_on_navigated = abap_false.
|
||||
ENDIF.
|
||||
|
||||
TRY.
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
ASSIGN ('SO_BODY->MR_ACTUAL') TO <any>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
ASSIGN ('<ANY>->ARGUMENTS') TO <any>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
ASSIGN ('<ANY>->*') TO <any>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
ASSIGN (`SO_BODY->MR_ACTUAL`) TO <any>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
ASSIGN (`<ANY>->ARGUMENTS`) TO <any>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
ASSIGN (`<ANY>->*`) TO <any>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
FIELD-SYMBOLS <arg> TYPE STANDARD TABLE.
|
||||
ASSIGN <any> TO <arg>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
FIELD-SYMBOLS <arg_row> TYPE any.
|
||||
LOOP AT <arg> ASSIGNING <arg_row>.
|
||||
|
||||
IF sy-tabix = 1.
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
ASSIGN ('<ARG_ROW>->EVENT->*') TO <val>.
|
||||
ASSIGN (`<ARG_ROW>->EVENT->*`) TO <val>.
|
||||
result->ms_actual-event = <val>.
|
||||
ELSE.
|
||||
ASSIGN <arg_row>->* TO <val>.
|
||||
|
@ -383,17 +238,20 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
|
||||
DATA(lo_resp) = z2ui5_cl_fw_utility_json=>factory( ).
|
||||
|
||||
DATA(lv_viewmodel) = COND #( WHEN ms_next-s_set-_viewmodel IS NOT INITIAL
|
||||
THEN ms_next-s_set-_viewmodel
|
||||
ELSE model_set_frontend( app = ms_db-app
|
||||
t_attri = ms_db-t_attri ) ).
|
||||
DATA(lo_binder) = z2ui5_cl_fw_model=>factory(
|
||||
app = ms_db-app
|
||||
attri = ms_db-t_attri ).
|
||||
|
||||
DATA(lv_viewmodel) = lo_binder->main_set_frontend( ).
|
||||
|
||||
lo_resp->add_attribute( n = `OVIEWMODEL`
|
||||
v = lv_viewmodel
|
||||
apos_active = abap_false ).
|
||||
|
||||
lo_resp->add_attribute( n = `PARAMS`
|
||||
v = z2ui5_cl_fw_utility=>trans_any_2_json( ms_next-s_set )
|
||||
v = z2ui5_cl_fw_utility=>trans_json_any_2( ms_next-s_set )
|
||||
apos_active = abap_false ).
|
||||
|
||||
lo_resp->add_attribute( n = `ID`
|
||||
v = ms_db-id ).
|
||||
|
||||
|
@ -430,13 +288,17 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
|
||||
result = NEW #( ).
|
||||
result->ms_db = z2ui5_cl_fw_db=>load_app( id_prev ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>func_get_uuid_32( ).
|
||||
result->ms_db-id_prev = id_prev.
|
||||
|
||||
TRY.
|
||||
model_set_backend( model = so_body->get_attribute( ss_config-view_model_edit_name )->mr_actual
|
||||
app = result->ms_db-app
|
||||
t_attri = result->ms_db-t_attri ).
|
||||
DATA(lo_model) = z2ui5_cl_fw_model=>factory(
|
||||
app = result->ms_db-app
|
||||
attri = result->ms_db-t_attri ).
|
||||
|
||||
lo_model->main_set_backend(
|
||||
so_body->get_attribute( ss_config-view_model_edit_name )->mr_actual ).
|
||||
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
|
@ -448,8 +310,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
result = app_set_next( ms_next-o_app_leave ).
|
||||
|
||||
TRY.
|
||||
DATA(ls_draft) = z2ui5_cl_fw_db=>read( id = result->ms_db-id
|
||||
check_load_app = abap_false ).
|
||||
DATA(ls_draft) = z2ui5_cl_fw_db=>read( id = result->ms_db-id check_load_app = abap_false ).
|
||||
result->ms_db-id_prev_app_stack = ls_draft-uuid_prev_app_stack.
|
||||
CATCH cx_root.
|
||||
result->ms_db-id_prev_app_stack = ms_db-id_prev_app_stack.
|
||||
|
@ -457,8 +318,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
|
||||
CLEAR ms_next.
|
||||
IF check_no_db_save = abap_false.
|
||||
z2ui5_cl_fw_db=>create( id = ms_db-id
|
||||
db = ms_db ).
|
||||
z2ui5_cl_fw_db=>create( id = ms_db-id db = ms_db ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -467,7 +327,7 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
METHOD set_app_start.
|
||||
|
||||
TRY.
|
||||
DATA(lv_classname) = to_upper( so_body->get_attribute( 'APP_START' )->get_val( ) ).
|
||||
DATA(lv_classname) = to_upper( so_body->get_attribute( `APP_START` )->get_val( ) ).
|
||||
lv_classname = shift_left( val = lv_classname
|
||||
sub = cl_abap_char_utilities=>horizontal_tab ).
|
||||
lv_classname = shift_right( val = lv_classname
|
||||
|
@ -486,12 +346,11 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
|
||||
TRY.
|
||||
result = NEW #( ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>func_get_uuid_32( ).
|
||||
|
||||
lv_classname = z2ui5_cl_fw_utility=>get_trim_upper( lv_classname ).
|
||||
lv_classname = z2ui5_cl_fw_utility=>c_trim_upper( lv_classname ).
|
||||
CREATE OBJECT result->ms_db-app TYPE (lv_classname).
|
||||
result->ms_db-app->id = result->ms_db-id.
|
||||
result->ms_db-t_attri = z2ui5_cl_fw_utility=>get_t_attri_by_ref( result->ms_db-app ).
|
||||
|
||||
CATCH cx_root.
|
||||
result = set_app_system( error_text = `App with name ` && lv_classname && ` not found...` ).
|
||||
|
@ -503,10 +362,10 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
METHOD set_app_system.
|
||||
|
||||
result = NEW #( ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
result->ms_db-id = z2ui5_cl_fw_utility=>func_get_uuid_32( ).
|
||||
|
||||
IF ix IS NOT BOUND AND error_text IS NOT INITIAL.
|
||||
ix = NEW z2ui5_cl_fw_error( val = error_text ).
|
||||
ix = NEW z2ui5_cx_fw_error( val = error_text ).
|
||||
ENDIF.
|
||||
|
||||
IF ix IS BOUND.
|
||||
|
@ -516,62 +375,9 @@ CLASS Z2UI5_CL_FW_HANDLER IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
result->ms_db-app = z2ui5_cl_fw_app=>factory_start( ).
|
||||
result->ms_db-t_attri = z2ui5_cl_fw_utility=>get_t_attri_by_ref( result->ms_db-app ).
|
||||
result->ms_db-app->id = result->ms_db-id.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD _create_binding.
|
||||
|
||||
DATA(lo_app) = CAST object( ms_db-app ) ##NEEDED.
|
||||
|
||||
DATA lr_in TYPE REF TO data.
|
||||
GET REFERENCE OF value INTO lr_in.
|
||||
|
||||
LOOP AT ms_db-t_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE bind_type <> cs_bind_type-one_time.
|
||||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
DATA(lv_name) = `LO_APP->` && to_upper( lr_attri->name ).
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 )
|
||||
v = `Attribute in App with name ` && lv_name && ` not found` ).
|
||||
DATA lr_ref TYPE REF TO data.
|
||||
GET REFERENCE OF <attribute> INTO lr_ref.
|
||||
|
||||
IF lr_attri->check_ref_data = abap_true.
|
||||
FIELD-SYMBOLS <field> TYPE any.
|
||||
ASSIGN lr_ref->* TO <field>.
|
||||
lr_ref = CAST data( <field> ).
|
||||
ENDIF.
|
||||
|
||||
IF lr_in = lr_ref.
|
||||
IF lr_attri->bind_type IS NOT INITIAL AND lr_attri->bind_type <> type.
|
||||
z2ui5_cl_fw_utility=>raise(
|
||||
`<p>Binding Error - Two different binding types for same attribute used (` && lr_attri->name && `).` ).
|
||||
ENDIF.
|
||||
IF strlen( lr_attri->name ) > 30.
|
||||
z2ui5_cl_fw_utility=>raise(
|
||||
`<p>Binding Error - Name of attribute more than 30 characters: ` && lr_attri->name ).
|
||||
ENDIF.
|
||||
lr_attri->bind_type = type.
|
||||
result = COND #( WHEN type = cs_bind_type-two_way THEN `/` && ss_config-view_model_edit_name && `/` ELSE `/` ) && lr_attri->name.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
IF type = cs_bind_type-two_way.
|
||||
z2ui5_cl_fw_utility=>raise( `Binding Error - Two way binding used but no attribute found` ).
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_id) = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
INSERT VALUE #( name = lv_id
|
||||
data_stringify = z2ui5_cl_fw_utility=>trans_any_2_json( value )
|
||||
bind_type = cs_bind_type-one_time )
|
||||
INTO TABLE ms_db-t_attri.
|
||||
result = |/{ lv_id }|.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL HARMLESS.
|
||||
DURATION LONG
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_req_begin_fw_start FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_req_begin_app_start FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_model_set_frontend FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_req_end FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -23,7 +22,6 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
DATA(lo_app_fw) = CAST z2ui5_cl_fw_app( lo_handler->ms_db-app ) ##NEEDED.
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_req_begin_app_start.
|
||||
|
@ -39,25 +37,6 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_model_set_frontend.
|
||||
|
||||
DATA(lv_body) = `{"OLOCATION":{"ORIGIN":"https://url.abap-web.us10.hana.ondemand.com","PATHNAME":"/sap/bc/http/sap/z_http_service_for_ui","SEARCH":"?sap-client=100&app_start=z2ui5_cl_app_hello_world","VERSION":"c` &&
|
||||
`om.sap.ui5.dist:sapui5-sdk-dist:1.115.0:war"}}`.
|
||||
|
||||
DATA(lo_handler) = z2ui5_cl_fw_handler=>request_begin( lv_body ).
|
||||
|
||||
CAST z2ui5_if_app( lo_handler->ms_db-app )->main( NEW z2ui5_cl_fw_client( lo_handler ) ).
|
||||
|
||||
DATA(lv_frontend) = z2ui5_cl_fw_handler=>model_set_frontend(
|
||||
app = lo_handler->ms_db-app
|
||||
t_attri = lo_handler->ms_db-t_attri
|
||||
).
|
||||
|
||||
IF lv_frontend NS `QUANTITY`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_req_end.
|
||||
|
||||
|
@ -75,7 +54,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_resp NS `oUpdate`.
|
||||
IF lv_resp NS `EDIT`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_integration_test IMPLEMENTATION.
|
||||
CLASS Z2UI5_CL_FW_INTEGRATION_TEST IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD z2ui5_if_app~main.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_integration_test DEFINITION FINAL FOR TESTING
|
||||
DURATION LONG
|
||||
RISK LEVEL HARMLESS.
|
||||
DURATION long
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
|
@ -98,7 +98,7 @@ CLASS ltcl_integration_test IMPLEMENTATION.
|
|||
DATA(lv_assign) = `OVIEWMODEL->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong'
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set EDIT wrong'
|
||||
quit = 5 ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
@ -115,10 +115,10 @@ CLASS ltcl_integration_test IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <val> TYPE any.
|
||||
UNASSIGN <val>.
|
||||
DATA(lv_assign) = `OVIEWMODEL->OUPDATE->QUANTITY->*`.
|
||||
DATA(lv_assign) = `OVIEWMODEL->EDIT->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `500`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set oUpdate wrong'
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - initial set EDIT wrong'
|
||||
quit = 5 ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
@ -302,7 +302,7 @@ CLASS ltcl_integration_test IMPLEMENTATION.
|
|||
ENDIF.
|
||||
DATA(lv_id) = CONV string( <val> ).
|
||||
|
||||
DATA(lv_request) = `{"oUpdate":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":[{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
|
||||
DATA(lv_request) = `{"EDIT":{"QUANTITY":"600"},"ID": "` && lv_id && `" ,"ARGUMENTS":[{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
|
||||
lv_response = z2ui5_cl_http_handler=>http_post( lv_request ).
|
||||
|
||||
CLEAR lo_data.
|
||||
|
@ -313,7 +313,7 @@ CLASS ltcl_integration_test IMPLEMENTATION.
|
|||
data = lo_data ).
|
||||
|
||||
UNASSIGN <val>.
|
||||
lv_assign = `OVIEWMODEL->OUPDATE->QUANTITY->*`.
|
||||
lv_assign = `OVIEWMODEL->EDIT->QUANTITY->*`.
|
||||
ASSIGN lo_data->(lv_assign) TO <val>.
|
||||
IF <val> <> `600`.
|
||||
cl_abap_unit_assert=>fail( msg = 'data binding - frontend updated value wrong after roundtrip' quit = 5 ).
|
||||
|
@ -343,7 +343,7 @@ CLASS ltcl_integration_test IMPLEMENTATION.
|
|||
|
||||
|
||||
DATA(lv_id) = CONV string( <val> ).
|
||||
DATA(lv_request) = `{"oUpdate":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": [{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
|
||||
DATA(lv_request) = `{"EDIT":{"QUANTITY":"700"},"ID": "` && lv_id && `" ,"ARGUMENTS": [{"EVENT":"BUTTON_POST","METHOD":"UPDATE"}]}`.
|
||||
lv_response = z2ui5_cl_http_handler=>http_post( lv_request ).
|
||||
|
||||
CLEAR lo_data.
|
||||
|
|
157
src/00/z2ui5_cl_fw_model.clas.abap
Normal file
157
src/00/z2ui5_cl_fw_model.clas.abap
Normal file
|
@ -0,0 +1,157 @@
|
|||
CLASS z2ui5_cl_fw_model DEFINITION
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
CLASS-METHODS factory
|
||||
IMPORTING
|
||||
app TYPE REF TO object
|
||||
attri TYPE z2ui5_cl_fw_binding=>ty_t_attri
|
||||
RETURNING
|
||||
VALUE(r_result) TYPE REF TO z2ui5_cl_fw_model.
|
||||
|
||||
METHODS main_set_backend
|
||||
IMPORTING
|
||||
model TYPE REF TO data ##NEEDED.
|
||||
|
||||
METHODS main_set_frontend
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
DATA mo_app TYPE REF TO object.
|
||||
DATA mt_attri TYPE z2ui5_cl_fw_binding=>ty_t_attri.
|
||||
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_model IMPLEMENTATION.
|
||||
|
||||
METHOD factory.
|
||||
|
||||
r_result = NEW #( ).
|
||||
r_result->mo_app = app.
|
||||
r_result->mt_attri = attri.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD main_set_backend.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri)
|
||||
WHERE bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way.
|
||||
TRY.
|
||||
|
||||
DATA(lv_name_back) = `MO_APP->` && lr_attri->name.
|
||||
|
||||
FIELD-SYMBOLS <backend> TYPE any.
|
||||
ASSIGN (lv_name_back) TO <backend>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
DATA(lv_name_front) = `MODEL->` && lr_attri->name_front.
|
||||
FIELD-SYMBOLS <frontend> TYPE any.
|
||||
ASSIGN (lv_name_front) TO <frontend>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
|
||||
WHEN `h`.
|
||||
z2ui5_cl_fw_utility=>trans_ref_tab_2_tab(
|
||||
EXPORTING
|
||||
ir_tab_from = <frontend>
|
||||
IMPORTING
|
||||
t_result = <backend> ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
ASSIGN <frontend>->* TO <frontend>.
|
||||
CASE lr_attri->type_kind.
|
||||
WHEN 'D' OR 'T'.
|
||||
z2ui5_cl_fw_utility=>trans_json_2_any(
|
||||
EXPORTING
|
||||
val = `"` && <frontend> && `"`
|
||||
CHANGING
|
||||
data = <backend> ).
|
||||
|
||||
WHEN OTHERS.
|
||||
<backend> = <frontend>.
|
||||
ENDCASE.
|
||||
|
||||
ENDCASE.
|
||||
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO lr_attri.
|
||||
|
||||
IF lr_attri->check_temp = abap_true.
|
||||
DELETE mt_attri.
|
||||
continue.
|
||||
ENDIF.
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
WHEN cl_abap_classdescr=>typekind_oref OR cl_abap_classdescr=>typekind_dref.
|
||||
lr_attri->check_dissolved = abap_false.
|
||||
ENDCASE.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD main_set_frontend.
|
||||
|
||||
DATA(lr_view_model) = z2ui5_cl_fw_utility_json=>factory( ).
|
||||
DATA(lo_update) = lr_view_model->add_attribute_object( z2ui5_cl_fw_binding=>cv_model_edit_name ).
|
||||
|
||||
LOOP AT mt_attri REFERENCE INTO DATA(lr_attri) WHERE bind_type <> ``.
|
||||
|
||||
IF lr_attri->bind_type = z2ui5_cl_fw_binding=>cs_bind_type-one_time.
|
||||
lr_view_model->add_attribute( n = lr_attri->name
|
||||
v = lr_attri->data_stringify
|
||||
apos_active = abap_false ).
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
DATA(lo_actual) = COND #( WHEN lr_attri->bind_type = z2ui5_cl_fw_binding=>cs_bind_type-one_way THEN lr_view_model
|
||||
ELSE lo_update ).
|
||||
|
||||
DATA(lv_name_back) = `MO_APP->` && lr_attri->name.
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
ASSIGN (lv_name_back) TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
CASE lr_attri->type_kind.
|
||||
|
||||
WHEN `h`.
|
||||
lo_actual->add_attribute( n = lr_attri->name_front
|
||||
v = z2ui5_cl_fw_utility=>trans_json_any_2( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
CASE lr_attri->type.
|
||||
|
||||
WHEN `ABAP_BOOL` OR `ABAP_BOOLEAN` OR `XSDBOOLEAN`.
|
||||
|
||||
lo_actual->add_attribute( n = lr_attri->name_front
|
||||
v = SWITCH #( <attribute> WHEN abap_true THEN `true` ELSE `false` )
|
||||
apos_active = abap_false ).
|
||||
|
||||
WHEN OTHERS.
|
||||
|
||||
lo_actual->add_attribute( n = lr_attri->name_front
|
||||
v = /ui2/cl_json=>serialize( <attribute> )
|
||||
apos_active = abap_false ).
|
||||
ENDCASE.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
result = lr_view_model->stringify( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
69
src/00/z2ui5_cl_fw_model.clas.testclasses.abap
Normal file
69
src/00/z2ui5_cl_fw_model.clas.testclasses.abap
Normal file
|
@ -0,0 +1,69 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION long
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
DATA quantity TYPE string.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_model_set_frontend FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_model_set_backend FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
||||
|
||||
METHOD test_model_set_frontend.
|
||||
|
||||
DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ( name = `QUANTITY` bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way name_front = `QUANTITY` ) ).
|
||||
DATA(lo_app) = NEW ltcl_unit_test( ).
|
||||
|
||||
lo_app->quantity = `600`.
|
||||
|
||||
DATA(lo_model) = z2ui5_cl_fw_model=>factory(
|
||||
app = lo_app
|
||||
attri = lt_attri ).
|
||||
|
||||
DATA(lv_frontend) = lo_model->main_set_frontend( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_frontend
|
||||
exp = `{"EDIT":{"QUANTITY":"600"}}`
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_model_set_backend.
|
||||
|
||||
DATA(lt_attri) = VALUE z2ui5_cl_fw_binding=>ty_t_attri( ( name = `QUANTITY` bind_type = z2ui5_cl_fw_binding=>cs_bind_type-two_way name_front = `QUANTITY` ) ).
|
||||
DATA(lo_app) = NEW ltcl_unit_test( ).
|
||||
|
||||
DATA(lv_model) = `{"EDIT":{"QUANTITY":"600"},"oScroll":[],"OMESSAGEMANAGER":[],"ID":"0242B09497911EDE90A60CD0D8519DD5","ARGUMENTS":[{"EVENT":"BUTTON_POST","METHOD":"UPDATE","CHECK_VIEW_DESTROY":false}],"OCURSOR":{"id":"__button1"},"OLOCATION":{`
|
||||
&& `"SEARCH":"?sap-client=001&app_start=z2ui5_cl_app_hello_world","VERSION":"com.sap.ui5.dist:sapui5-sdk-dist:1.116.0:war"}}`.
|
||||
|
||||
DATA lr_model TYPE REF TO data.
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = lv_model
|
||||
CHANGING
|
||||
data = lr_model
|
||||
).
|
||||
|
||||
DATA(lo_model) = z2ui5_cl_fw_model=>factory(
|
||||
app = lo_app
|
||||
attri = lt_attri ).
|
||||
|
||||
DATA(lv_assign) = `LR_MODEL->` && z2ui5_cl_fw_binding=>cv_model_edit_name.
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
ASSIGN (lv_assign) TO <any>.
|
||||
lo_model->main_set_backend( <any> ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lo_app->quantity
|
||||
exp = `600`
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/00/z2ui5_cl_fw_model.clas.xml
Normal file
17
src/00/z2ui5_cl_fw_model.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_FW_MODEL</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - model</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>
|
|
@ -3,18 +3,6 @@ CLASS z2ui5_cl_fw_utility DEFINITION PUBLIC
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_attri,
|
||||
name TYPE string,
|
||||
type_kind TYPE string,
|
||||
type TYPE string,
|
||||
bind_type TYPE string,
|
||||
data_stringify TYPE string,
|
||||
data_rtti TYPE string,
|
||||
check_ref_data TYPE abap_bool,
|
||||
END OF ty_attri.
|
||||
TYPES ty_t_attri TYPE STANDARD TABLE OF ty_attri WITH EMPTY KEY.
|
||||
|
||||
CLASS-METHODS url_param_get
|
||||
IMPORTING
|
||||
val TYPE string
|
||||
|
@ -36,134 +24,162 @@ CLASS z2ui5_cl_fw_utility DEFINITION PUBLIC
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS get_classname_by_ref
|
||||
CLASS-METHODS rtti_get_classname_by_ref
|
||||
IMPORTING
|
||||
in TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS raise
|
||||
CLASS-METHODS x_check_raise
|
||||
IMPORTING
|
||||
v TYPE clike DEFAULT `CX_SY_SUBRC`
|
||||
when TYPE abap_bool DEFAULT abap_true
|
||||
when TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS x_raise
|
||||
IMPORTING
|
||||
v TYPE clike DEFAULT `CX_SY_SUBRC`
|
||||
PREFERRED PARAMETER v.
|
||||
|
||||
CLASS-METHODS get_uuid
|
||||
CLASS-METHODS func_get_uuid_32
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS get_user_tech
|
||||
CLASS-METHODS func_get_uuid_22
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS trans_any_2_json
|
||||
CLASS-METHODS func_get_user_tech
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS trans_json_any_2
|
||||
IMPORTING
|
||||
any TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS trans_xml_2_object
|
||||
CLASS-METHODS trans_xml_2_any
|
||||
IMPORTING
|
||||
xml TYPE clike
|
||||
xml TYPE clike
|
||||
EXPORTING
|
||||
data TYPE data.
|
||||
any TYPE any.
|
||||
|
||||
CLASS-METHODS get_t_attri_by_ref
|
||||
CLASS-METHODS trans_xml_any_2
|
||||
IMPORTING
|
||||
io_app TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE ty_t_attri ##NEEDED.
|
||||
|
||||
CLASS-METHODS trans_object_2_xml
|
||||
IMPORTING
|
||||
object TYPE data
|
||||
any TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string
|
||||
RAISING
|
||||
cx_xslt_serialization_error.
|
||||
|
||||
CLASS-METHODS get_abap_2_json
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS check_is_boolean
|
||||
CLASS-METHODS boolean_check
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS get_json_boolean
|
||||
CLASS-METHODS boolean_abap_2_json
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS c_replace_assign_struc
|
||||
IMPORTING
|
||||
iv_attri TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_attri) TYPE string.
|
||||
|
||||
CLASS-METHODS trans_json_2_any
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
CHANGING
|
||||
data TYPE any.
|
||||
|
||||
CLASS-METHODS trans_ref_tab_2_tab
|
||||
IMPORTING
|
||||
ir_tab_from TYPE REF TO data
|
||||
EXPORTING
|
||||
t_result TYPE STANDARD TABLE.
|
||||
|
||||
CLASS-METHODS get_trim_upper
|
||||
CLASS-METHODS c_trim_upper
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS rtti_get
|
||||
CLASS-METHODS rtti_xml_get_by_data
|
||||
IMPORTING
|
||||
data TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS rtti_set
|
||||
CLASS-METHODS rtti_xml_set_to_data
|
||||
IMPORTING
|
||||
rtti_data TYPE string
|
||||
rtti_data TYPE clike
|
||||
EXPORTING
|
||||
e_data TYPE REF TO data.
|
||||
|
||||
CLASS-METHODS get_timestampl
|
||||
CLASS-METHODS time_get_timestampl
|
||||
RETURNING
|
||||
VALUE(result) TYPE timestampl.
|
||||
|
||||
CLASS-METHODS get_replace
|
||||
CLASS-METHODS time_substract_seconds
|
||||
IMPORTING
|
||||
iv_val TYPE clike
|
||||
iv_begin TYPE clike
|
||||
iv_end TYPE clike
|
||||
iv_replace TYPE clike DEFAULT ''
|
||||
time TYPE timestampl
|
||||
seconds TYPE i
|
||||
RETURNING
|
||||
VALUE(result) TYPE timestampl.
|
||||
|
||||
CLASS-METHODS c_trim
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS get_trim
|
||||
CLASS-METHODS c_trim_lower
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS get_trim_lower
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
val TYPE clike
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS url_param_get_tab
|
||||
IMPORTING
|
||||
i_val TYPE string
|
||||
i_val TYPE clike
|
||||
RETURNING
|
||||
VALUE(rt_params) TYPE z2ui5_if_client=>ty_t_name_value.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
CLASS-METHODS _get_t_attri_by_struc
|
||||
CLASS-METHODS rtti_get_t_attri_by_object
|
||||
IMPORTING
|
||||
io_app TYPE REF TO object
|
||||
iv_attri TYPE csequence
|
||||
val TYPE REF TO object
|
||||
RETURNING
|
||||
VALUE(result) TYPE abap_attrdescr_tab.
|
||||
|
||||
CLASS-METHODS rtti_get_t_comp_by_struc
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE cl_abap_structdescr=>component_table.
|
||||
|
||||
CLASS-METHODS rtti_get_type_name
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
CLASS-METHODS rtti_check_type_kind_dref
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS rtti_get_type_kind
|
||||
IMPORTING
|
||||
val TYPE any
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -173,11 +189,22 @@ ENDCLASS.
|
|||
CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD check_is_boolean.
|
||||
METHOD boolean_abap_2_json.
|
||||
|
||||
IF boolean_check( val ).
|
||||
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||
ELSE.
|
||||
result = val.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD boolean_check.
|
||||
|
||||
TRY.
|
||||
DATA(lo_ele) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_data( val ) ).
|
||||
CASE lo_ele->get_relative_name( ).
|
||||
DATA(lv_type_name) = rtti_get_type_name( val ).
|
||||
CASE lv_type_name.
|
||||
WHEN `ABAP_BOOL` OR `XSDBOOLEAN`.
|
||||
result = abap_true.
|
||||
ENDCASE.
|
||||
|
@ -187,57 +214,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_abap_2_json.
|
||||
|
||||
IF check_is_boolean( val ).
|
||||
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||
ELSE.
|
||||
result = |"{ escape( val = val
|
||||
format = cl_abap_format=>e_json_string ) }"|.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_classname_by_ref.
|
||||
|
||||
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
||||
result = substring_after( val = lv_classname
|
||||
sub = `\CLASS=` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_json_boolean.
|
||||
|
||||
IF check_is_boolean( val ).
|
||||
result = COND #( WHEN val = abap_true THEN `true` ELSE `false` ).
|
||||
ELSE.
|
||||
result = val.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_replace.
|
||||
|
||||
result = iv_val.
|
||||
|
||||
DATA(lv_1) = substring_before( val = result
|
||||
sub = iv_begin ).
|
||||
DATA(lv_2) = substring_after( val = result
|
||||
sub = iv_end ).
|
||||
result = COND #( WHEN lv_2 IS NOT INITIAL THEN lv_1 && iv_replace && lv_2 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_timestampl.
|
||||
GET TIME STAMP FIELD result.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_trim.
|
||||
METHOD c_trim.
|
||||
|
||||
result = shift_left( shift_right( CONV string( val ) ) ).
|
||||
result = shift_right( val = result sub = cl_abap_char_utilities=>horizontal_tab ).
|
||||
|
@ -247,67 +224,35 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_trim_lower.
|
||||
METHOD c_trim_lower.
|
||||
|
||||
result = to_lower( get_trim( CONV string( val ) ) ).
|
||||
result = to_lower( c_trim( CONV string( val ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_trim_upper.
|
||||
METHOD c_trim_upper.
|
||||
|
||||
result = to_upper( get_trim( CONV string( val ) ) ).
|
||||
result = to_upper( c_trim( CONV string( val ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_t_attri_by_ref.
|
||||
|
||||
DATA(lt_attri) = CAST cl_abap_classdescr( cl_abap_objectdescr=>describe_by_object_ref( io_app ) )->attributes.
|
||||
DELETE lt_attri WHERE visibility <> cl_abap_classdescr=>public.
|
||||
|
||||
LOOP AT lt_attri INTO DATA(ls_attri)
|
||||
WHERE type_kind = cl_abap_classdescr=>typekind_struct2
|
||||
OR type_kind = cl_abap_classdescr=>typekind_struct1.
|
||||
|
||||
DELETE lt_attri INDEX sy-tabix.
|
||||
|
||||
INSERT LINES OF _get_t_attri_by_struc( io_app = io_app
|
||||
iv_attri = ls_attri-name ) INTO TABLE lt_attri.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_attri INTO ls_attri.
|
||||
|
||||
DATA(ls_attri2) = VALUE ty_attri( ).
|
||||
ls_attri2 = CORRESPONDING #( ls_attri ).
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
UNASSIGN <any>.
|
||||
DATA(lv_assign) = `IO_APP->` && ls_attri-name.
|
||||
ASSIGN (lv_assign) TO <any>.
|
||||
|
||||
DATA(lo_descr) = cl_abap_datadescr=>describe_by_data( <any> ).
|
||||
TRY.
|
||||
DATA(lo_refdescr) = CAST cl_abap_refdescr( lo_descr ).
|
||||
DATA(lo_reftype) = CAST cl_abap_datadescr( lo_refdescr->get_referenced_type( ) ) ##NEEDED.
|
||||
ls_attri2-check_ref_data = abap_true.
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
|
||||
APPEND ls_attri2 TO result.
|
||||
ENDLOOP.
|
||||
METHOD time_get_timestampl.
|
||||
GET TIME STAMP FIELD result.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD time_substract_seconds.
|
||||
result = cl_abap_tstmp=>subtractsecs( tstmp = time secs = seconds ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_user_tech.
|
||||
METHOD func_get_user_tech.
|
||||
result = sy-uname.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_uuid.
|
||||
METHOD func_get_uuid_32.
|
||||
|
||||
TRY.
|
||||
DATA uuid TYPE c LENGTH 32.
|
||||
|
@ -334,16 +279,83 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD raise.
|
||||
|
||||
IF when = abap_true.
|
||||
RAISE EXCEPTION TYPE z2ui5_cl_fw_error EXPORTING val = v.
|
||||
ENDIF.
|
||||
METHOD func_get_uuid_22.
|
||||
|
||||
TRY.
|
||||
DATA uuid TYPE c LENGTH 22.
|
||||
|
||||
TRY.
|
||||
CALL METHOD (`CL_SYSTEM_UUID`)=>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.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get.
|
||||
METHOD rtti_get_classname_by_ref.
|
||||
|
||||
DATA(lv_classname) = cl_abap_classdescr=>get_class_name( in ).
|
||||
result = substring_after( val = lv_classname
|
||||
sub = `\CLASS=` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rtti_get_type_kind.
|
||||
|
||||
result = cl_abap_datadescr=>get_data_type_kind( val ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rtti_check_type_kind_dref.
|
||||
|
||||
DATA(lv_type_kind) = cl_abap_datadescr=>get_data_type_kind( val ).
|
||||
result = xsdbool( lv_type_kind = cl_abap_typedescr=>typekind_dref ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD rtti_get_type_name.
|
||||
|
||||
DATA(lo_descr) = cl_abap_elemdescr=>describe_by_data( val ).
|
||||
DATA(lo_ele) = CAST cl_abap_elemdescr( lo_descr ).
|
||||
result = lo_ele->get_relative_name( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_t_attri_by_object.
|
||||
|
||||
DATA(lo_obj_ref) = cl_abap_objectdescr=>describe_by_object_ref( val ).
|
||||
result = CAST cl_abap_classdescr( lo_obj_ref )->attributes.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_get_t_comp_by_struc.
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( val ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ).
|
||||
result = lo_struct->get_components( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_xml_get_by_data.
|
||||
|
||||
TRY.
|
||||
|
||||
|
@ -362,7 +374,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
DATA(lv_text) = `<p>Please install the open-source project S-RTTI by sandraros and try again: <a href="` &&
|
||||
lv_link && `" style="color:blue; font-weight:600;">(link)</a></p>`.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cl_fw_error
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = lv_text.
|
||||
|
||||
|
@ -371,7 +383,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD rtti_set.
|
||||
METHOD rtti_xml_set_to_data.
|
||||
|
||||
TRY.
|
||||
DATA srtti TYPE REF TO object.
|
||||
|
@ -394,7 +406,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
DATA(lv_link) = `https://github.com/sandraros/S-RTTI`.
|
||||
DATA(lv_text) = `<p>Please install the open-source project S-RTTI by sandraros and try again: <a href="` && lv_link && `" style="color:blue; font-weight:600;">(link)</a></p>`.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cl_fw_error
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = lv_text.
|
||||
|
||||
|
@ -403,33 +415,58 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD trans_any_2_json.
|
||||
METHOD trans_json_any_2.
|
||||
|
||||
result = /ui2/cl_json=>serialize( any ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD trans_object_2_xml.
|
||||
|
||||
FIELD-SYMBOLS <object> TYPE any.
|
||||
ASSIGN object->* TO <object>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
METHOD trans_xml_any_2.
|
||||
|
||||
CALL TRANSFORMATION id
|
||||
SOURCE data = <object>
|
||||
SOURCE data = any
|
||||
RESULT XML result
|
||||
OPTIONS data_refs = `heap-or-create`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD c_replace_assign_struc.
|
||||
|
||||
rv_attri = iv_attri.
|
||||
DATA(lv_length) = strlen( rv_attri ) - 2.
|
||||
DATA(lv_attri_end) = rv_attri+lv_length.
|
||||
|
||||
IF lv_attri_end = `>*`.
|
||||
lv_attri_end = `>`.
|
||||
lv_length = lv_length.
|
||||
ELSE.
|
||||
lv_attri_end = `-`.
|
||||
lv_length = lv_length + 2.
|
||||
ENDIF.
|
||||
rv_attri = rv_attri(lv_length) && lv_attri_end.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD trans_json_2_any.
|
||||
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = CONV string( val )
|
||||
assoc_arrays = abap_true
|
||||
CHANGING
|
||||
data = data ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD trans_ref_tab_2_tab.
|
||||
|
||||
TYPES ty_t_ref TYPE STANDARD TABLE OF REF TO data.
|
||||
FIELD-SYMBOLS <lt_from> TYPE ty_t_ref.
|
||||
|
||||
ASSIGN ir_tab_from->* TO <lt_from>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
CLEAR t_result.
|
||||
|
||||
DATA(lo_tab) = CAST cl_abap_tabledescr( cl_abap_datadescr=>describe_by_data( t_result ) ).
|
||||
|
@ -447,15 +484,15 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ASSIGN lr_from->* TO FIELD-SYMBOL(<row_ui5>).
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
x_check_raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
DATA(lt_components_Dissolved) = lt_components.
|
||||
DATA(lt_components_dissolved) = lt_components.
|
||||
CLEAR lt_components_dissolved.
|
||||
|
||||
LOOP AT lt_components INTO DATA(ls_comp).
|
||||
|
||||
IF ls_comp-as_include = abap_false.
|
||||
APPEND ls_comp TO lt_components_Dissolved.
|
||||
APPEND ls_comp TO lt_components_dissolved.
|
||||
ELSE.
|
||||
DATA(struct) = CAST cl_abap_structdescr( ls_comp-type ).
|
||||
APPEND LINES OF struct->get_components( ) TO lt_components_dissolved.
|
||||
|
@ -463,33 +500,37 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_components_Dissolved INTO ls_comp.
|
||||
LOOP AT lt_components_dissolved INTO ls_comp.
|
||||
TRY.
|
||||
|
||||
FIELD-SYMBOLS <comp> TYPE data.
|
||||
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row> TO <comp>.
|
||||
FIELD-SYMBOLS <comp> TYPE data.
|
||||
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row> TO <comp>.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
FIELD-SYMBOLS <comp_ui5> TYPE data.
|
||||
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row_ui5> TO <comp_ui5>.
|
||||
FIELD-SYMBOLS <comp_ui5> TYPE data.
|
||||
ASSIGN COMPONENT ls_comp-name OF STRUCTURE <row_ui5> TO <comp_ui5>.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
IF sy-subrc <> 0.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
ASSIGN <comp_ui5>->* TO FIELD-SYMBOL(<ls_data_ui5>).
|
||||
ASSIGN <comp_ui5>->* TO FIELD-SYMBOL(<ls_data_ui5>).
|
||||
|
||||
IF sy-subrc = 0.
|
||||
CASE ls_comp-type->kind.
|
||||
WHEN cl_abap_typedescr=>kind_table.
|
||||
trans_ref_tab_2_tab( EXPORTING ir_tab_from = <comp_ui5>
|
||||
IMPORTING t_result = <comp> ).
|
||||
WHEN OTHERS.
|
||||
<comp> = <ls_data_ui5>.
|
||||
ENDCASE.
|
||||
ENDIF.
|
||||
IF sy-subrc = 0.
|
||||
CASE ls_comp-type->kind.
|
||||
WHEN cl_abap_typedescr=>kind_table.
|
||||
trans_ref_tab_2_tab( EXPORTING ir_tab_from = <comp_ui5>
|
||||
IMPORTING t_result = <comp> ).
|
||||
WHEN OTHERS.
|
||||
<comp> = <ls_data_ui5>.
|
||||
ENDCASE.
|
||||
ENDIF.
|
||||
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
ENDLOOP.
|
||||
|
||||
INSERT <row> INTO TABLE t_result.
|
||||
|
@ -499,11 +540,11 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD trans_xml_2_object.
|
||||
METHOD trans_xml_2_any.
|
||||
|
||||
CALL TRANSFORMATION id
|
||||
SOURCE XML xml
|
||||
RESULT data = data.
|
||||
RESULT data = any.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -513,8 +554,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
LOOP AT t_params INTO DATA(ls_param).
|
||||
result = result && ls_param-n && `=` && ls_param-v && `&`.
|
||||
ENDLOOP.
|
||||
result = shift_right( val = result
|
||||
sub = `&` ).
|
||||
result = shift_right( val = result sub = `&` ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -522,7 +562,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
METHOD url_param_get.
|
||||
|
||||
DATA(lt_params) = url_param_get_tab( url ).
|
||||
DATA(lv_val) = get_trim_lower( val ).
|
||||
DATA(lv_val) = c_trim_lower( val ).
|
||||
result = VALUE #( lt_params[ n = lv_val ]-v OPTIONAL ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -532,13 +572,13 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
|
||||
DATA(lv_search) = replace( val = i_val sub = `%3D` with = '=' occ = 0 ).
|
||||
lv_search = shift_left( val = lv_search sub = `?` ).
|
||||
lv_search = get_trim_lower( lv_search ).
|
||||
lv_search = c_trim_lower( lv_search ).
|
||||
|
||||
DATA(lv_search2) = substring_after( val = lv_search
|
||||
sub = `&sap-startup-params=` ).
|
||||
lv_search = COND #( WHEN lv_search2 IS NOT INITIAL THEN lv_search2 ELSE lv_search ).
|
||||
|
||||
lv_search2 = substring_after( val = get_trim_lower( lv_search ) sub = `?` ).
|
||||
lv_search2 = substring_after( val = c_trim_lower( lv_search ) sub = `?` ).
|
||||
IF lv_search2 IS NOT INITIAL.
|
||||
lv_search = lv_search2.
|
||||
ENDIF.
|
||||
|
@ -547,7 +587,7 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
|
||||
LOOP AT lt_param REFERENCE INTO DATA(lr_param).
|
||||
SPLIT lr_param->* AT `=` INTO DATA(lv_name) DATA(lv_value).
|
||||
INSERT VALUE #( n = get_trim_lower( lv_name ) v = get_trim_lower( lv_value ) ) INTO TABLE rt_params.
|
||||
INSERT VALUE #( n = c_trim_lower( lv_name ) v = c_trim_lower( lv_value ) ) INTO TABLE rt_params.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -556,15 +596,14 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
METHOD url_param_set.
|
||||
|
||||
DATA(lt_params) = url_param_get_tab( url ).
|
||||
|
||||
DATA(lv_n) = get_trim_lower( name ).
|
||||
DATA(lv_n) = c_trim_lower( name ).
|
||||
|
||||
LOOP AT lt_params REFERENCE INTO DATA(lr_params)
|
||||
WHERE n = lv_n.
|
||||
lr_params->v = get_trim_lower( value ).
|
||||
lr_params->v = c_trim_lower( value ).
|
||||
ENDLOOP.
|
||||
IF sy-subrc <> 0.
|
||||
INSERT VALUE #( n = lv_n v = get_trim_lower( value ) ) INTO TABLE lt_params.
|
||||
INSERT VALUE #( n = lv_n v = c_trim_lower( value ) ) INTO TABLE lt_params.
|
||||
ENDIF.
|
||||
|
||||
result = url_param_create_url( lt_params ).
|
||||
|
@ -572,30 +611,18 @@ CLASS z2ui5_cl_fw_utility IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD _get_t_attri_by_struc.
|
||||
METHOD x_check_raise.
|
||||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
IF when = abap_true.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error EXPORTING val = v.
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_name) = `IO_APP->` && to_upper( iv_attri ).
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
DATA(lo_type) = cl_abap_structdescr=>describe_by_data( <attribute> ).
|
||||
DATA(lo_struct) = CAST cl_abap_structdescr( lo_type ).
|
||||
|
||||
LOOP AT lo_struct->get_components( ) REFERENCE INTO DATA(lr_comp).
|
||||
METHOD x_raise.
|
||||
|
||||
DATA(lv_element) = iv_attri && `-` && lr_comp->name.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error EXPORTING val = v.
|
||||
|
||||
IF lr_comp->as_include = abap_true.
|
||||
INSERT LINES OF _get_t_attri_by_struc( io_app = io_app
|
||||
iv_attri = lv_element ) INTO TABLE result.
|
||||
|
||||
ELSE.
|
||||
INSERT VALUE #( name = lv_element
|
||||
type_kind = lr_comp->type->type_kind ) INTO TABLE result.
|
||||
ENDIF.
|
||||
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
CLASS ltcl_test_app DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
CLASS ltcl_test_app DEFINITION FOR TESTING.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES if_serializable_object.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
|
@ -32,7 +32,7 @@ ENDCLASS.
|
|||
CLASS ltcl_test_app IMPLEMENTATION.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_sap_api DEFINITION FINAL FOR TESTING
|
||||
CLASS ltcl_unit_test_abap_api DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL HARMLESS.
|
||||
|
||||
|
@ -63,32 +63,51 @@ CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
|||
|
||||
PRIVATE SECTION.
|
||||
|
||||
METHODS test_check_is_boolean FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_abap_2_json FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_create FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_classname_by_ref FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_json_boolean FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_replace FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_timestampl FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_trim_lower FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_trim_upper FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_attri_by_ref FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_uuid FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_get_user_tech FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_raise FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_any_2_json FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_any_2_json_02 FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_boolean_abap_2_json FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_boolean_check FOR TESTING RAISING cx_static_check.
|
||||
|
||||
|
||||
METHODS test_c_trim FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_c_trim_lower FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_c_trim_upper FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_c_replace_assign_struc FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_time_get_timestampl FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_time_substract_seconds FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_func_get_uuid_32 FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_func_get_uuid_22 FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_func_get_user_tech FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_rtti_get_classname_by_ref FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_rtti_get_type_name FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_rtti_get_type_kind FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_rtti_check_type_kind FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_rtti_get_t_attri_by_obj FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_rtti_get_t_comp_by_struc FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_trans_json_any_2__w_tab FOR TESTING RAISING cx_static_check.
|
||||
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.
|
||||
METHODS test_trans_xml_2_any__w_data FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_url_param_create_url FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_url_param_get FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_url_param_get_tab FOR TESTING RAISING cx_static_check.
|
||||
METHODS url_param_set FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_raise_error_not FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_raise_error FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_url_param_set FOR TESTING RAISING cx_static_check.
|
||||
|
||||
METHODS test_x_check_raise FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_x_check_raise_not FOR TESTING RAISING cx_static_check.
|
||||
METHODS test_x_raise FOR TESTING RAISING cx_static_check.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_unit_test_sap_api IMPLEMENTATION.
|
||||
CLASS ltcl_unit_test_abap_api IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD test_assign.
|
||||
|
@ -170,10 +189,10 @@ CLASS ltcl_unit_test_sap_api IMPLEMENTATION.
|
|||
METHOD test_raise_error.
|
||||
|
||||
TRY.
|
||||
RAISE EXCEPTION TYPE z2ui5_cl_fw_error.
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
|
||||
CATCH z2ui5_cl_fw_error INTO DATA(lx).
|
||||
CATCH z2ui5_cx_fw_error INTO DATA(lx).
|
||||
cl_abap_unit_assert=>assert_bound( lx ).
|
||||
ENDTRY.
|
||||
|
||||
|
@ -211,10 +230,6 @@ CLASS ltcl_unit_test_sap_api IMPLEMENTATION.
|
|||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
* IF check_input( xsdbool( 2 = 1 ) ).
|
||||
* cl_abap_unit_assert=>fail( ).
|
||||
* ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_input.
|
||||
|
@ -227,64 +242,24 @@ ENDCLASS.
|
|||
|
||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
||||
|
||||
METHOD test_attri_by_ref.
|
||||
|
||||
"dummy for abaplint check green
|
||||
ltcl_test_app=>sv_var = ``.
|
||||
ltcl_test_app=>ss_tab = VALUE #( ).
|
||||
ltcl_test_app=>st_tab = VALUE #( ).
|
||||
|
||||
DATA(lo_app) = NEW ltcl_test_app( ).
|
||||
|
||||
DATA(lt_attri) = z2ui5_cl_fw_utility=>get_t_attri_by_ref( lo_app ).
|
||||
|
||||
DATA(lt_attri_result) = VALUE z2ui5_cl_fw_utility=>ty_t_attri(
|
||||
( name = `MT_TAB` type_kind = `h` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MV_VAL` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `ST_TAB` type_kind = `h` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SV_STATUS` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SV_VAR` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-TITLE` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-VALUE` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-DESCR` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-ICON` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-INFO` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-SELECTED` type_kind = `C` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `MS_TAB-CHECKBOX` type_kind = `C` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-TITLE` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-VALUE` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-DESCR` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-ICON` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-INFO` type_kind = `g` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-SELECTED` type_kind = `C` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
( name = `SS_TAB-CHECKBOX` type_kind = `C` type = `` bind_type = `` data_stringify = `` data_rtti = `` check_ref_data = '' )
|
||||
).
|
||||
|
||||
IF lt_attri_result <> lt_attri.
|
||||
cl_abap_unit_assert=>fail( msg = 'utility - create t_attri failed'
|
||||
quit = 5 ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_check_is_boolean.
|
||||
METHOD test_boolean_check.
|
||||
|
||||
DATA(lv_bool) = xsdbool( 1 = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>check_is_boolean( lv_bool )
|
||||
act = z2ui5_cl_fw_utility=>boolean_check( lv_bool )
|
||||
exp = abap_true ).
|
||||
|
||||
lv_bool = xsdbool( 1 = 2 ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>check_is_boolean( lv_bool )
|
||||
act = z2ui5_cl_fw_utility=>boolean_check( lv_bool )
|
||||
exp = abap_true ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>check_is_boolean( abap_true )
|
||||
act = z2ui5_cl_fw_utility=>boolean_check( abap_true )
|
||||
exp = abap_true ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>check_is_boolean( abap_false )
|
||||
act = z2ui5_cl_fw_utility=>boolean_check( abap_false )
|
||||
exp = abap_true ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -295,124 +270,150 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_abap_2_json.
|
||||
|
||||
DATA(lv_bool) = xsdbool( 1 = 1 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = `true` act = z2ui5_cl_fw_utility=>get_abap_2_json( lv_bool ) ).
|
||||
|
||||
lv_bool = xsdbool( 1 = 2 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = `false` act = z2ui5_cl_fw_utility=>get_abap_2_json( lv_bool ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_classname_by_ref.
|
||||
METHOD test_rtti_get_classname_by_ref.
|
||||
|
||||
DATA(lo_test) = NEW z2ui5_cl_fw_utility( ).
|
||||
DATA(lv_name) = z2ui5_cl_fw_utility=>get_classname_by_ref( lo_test ).
|
||||
DATA(lv_name) = z2ui5_cl_fw_utility=>rtti_get_classname_by_ref( lo_test ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = `Z2UI5_CL_FW_UTILITY` act = lv_name ).
|
||||
|
||||
DATA(lo_test2) = NEW ltcl_test_app( ).
|
||||
DATA(lv_name2) = z2ui5_cl_fw_utility=>get_classname_by_ref( lo_test2 ).
|
||||
DATA(lv_name2) = z2ui5_cl_fw_utility=>rtti_get_classname_by_ref( lo_test2 ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = `LTCL_TEST_APP` act = lv_name2 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_json_boolean.
|
||||
METHOD test_boolean_abap_2_json.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( exp = `false` act = z2ui5_cl_fw_utility=>get_json_boolean( abap_false ) ).
|
||||
cl_abap_unit_assert=>assert_equals( exp = `false` act = z2ui5_cl_fw_utility=>boolean_abap_2_json( abap_false ) ).
|
||||
|
||||
IF `{ABCD}` <> z2ui5_cl_fw_utility=>get_json_boolean( `{ABCD}` ).
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
IF `{ABCD}` <> z2ui5_cl_fw_utility=>boolean_abap_2_json( `{ABCD}` ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_replace.
|
||||
METHOD test_time_get_timestampl.
|
||||
|
||||
DATA(lv_text) = `this is a replace text`.
|
||||
DATA(lv_result) = z2ui5_cl_fw_utility=>get_replace(
|
||||
iv_val = lv_text
|
||||
iv_begin = `is a `
|
||||
iv_end = ` te`
|
||||
iv_replace = 'is a test te' ).
|
||||
IF lv_result <> `this is a test text`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
DATA(lv_time) = z2ui5_cl_fw_utility=>time_get_timestampl( ).
|
||||
|
||||
DATA(lv_time2) = z2ui5_cl_fw_utility=>time_substract_seconds(
|
||||
time = lv_time
|
||||
seconds = 60 * 60 * 4
|
||||
).
|
||||
|
||||
IF lv_time IS INITIAL OR lv_time2 IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_time < lv_time2.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_timestampl.
|
||||
METHOD test_time_substract_seconds.
|
||||
|
||||
DATA(lv_time) = z2ui5_cl_fw_utility=>get_timestampl( ).
|
||||
DATA(lv_time2) = z2ui5_cl_fw_utility=>get_timestampl( ).
|
||||
DATA(lv_time) = z2ui5_cl_fw_utility=>time_get_timestampl( ).
|
||||
DATA(lv_time2) = z2ui5_cl_fw_utility=>time_get_timestampl( ).
|
||||
|
||||
IF lv_time IS INITIAL OR lv_time2 IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_time2 < lv_time.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_trim_lower.
|
||||
METHOD test_c_trim.
|
||||
|
||||
IF z2ui5_cl_fw_utility=>get_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
IF z2ui5_cl_fw_utility=>c_trim( ` JsadfHHs ` ) <> `JsadfHHs`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_trim_upper.
|
||||
METHOD test_c_trim_lower.
|
||||
|
||||
IF z2ui5_cl_fw_utility=>get_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
IF z2ui5_cl_fw_utility=>c_trim_lower( ` JsadfHHs ` ) <> `jsadfhhs`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_uuid.
|
||||
METHOD test_c_trim_upper.
|
||||
|
||||
DATA(lv_uuid) = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
IF z2ui5_cl_fw_utility=>c_trim_upper( ` JsadfHHs ` ) <> `JSADFHHS`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_func_get_uuid_32.
|
||||
|
||||
DATA(lv_uuid) = z2ui5_cl_fw_utility=>func_get_uuid_32( ).
|
||||
|
||||
IF lv_uuid IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF strlen( lv_uuid ) <> 32.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_get_user_tech.
|
||||
METHOD test_func_get_uuid_22.
|
||||
|
||||
IF sy-uname <> z2ui5_cl_fw_utility=>get_user_tech( ).
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
DATA(lv_uuid) = z2ui5_cl_fw_utility=>func_get_uuid_22( ).
|
||||
|
||||
IF lv_uuid IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF strlen( lv_uuid ) <> 22.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_raise.
|
||||
METHOD test_func_get_user_tech.
|
||||
|
||||
DATA(lv_uname) = z2ui5_cl_fw_utility=>func_get_user_tech( ).
|
||||
IF sy-uname <> lv_uname OR lv_uname IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_x_raise.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>raise( ).
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
z2ui5_cl_fw_utility=>x_raise( ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( 1 = 1 ) ).
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( 1 = 3 ) ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_any_2_json.
|
||||
METHOD test_x_check_raise.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( when = xsdbool( 1 = 1 ) ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
CATCH cx_root.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>x_check_raise( when = xsdbool( 1 = 3 ) ).
|
||||
CATCH cx_root.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_trans_json_any_2__w_tab.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
|
@ -426,18 +427,61 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ).
|
||||
|
||||
|
||||
DATA(lv_tab_json) = z2ui5_cl_fw_utility=>trans_any_2_json( lt_tab ).
|
||||
DATA(lv_tab_json) = z2ui5_cl_fw_utility=>trans_json_any_2( lt_tab ).
|
||||
|
||||
DATA(lv_result) = `[{"TITLE":"Test","VALUE":"this is a description","SELECTED":true},{"TITLE":"Test2","VALUE":"this is a new descr","SELECTED":false}]`.
|
||||
|
||||
IF lv_result <> lv_tab_json.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD test_any_2_json_02.
|
||||
METHOD test_trans_json_2_any__w_dref.
|
||||
|
||||
DATA(lv_test) = `{ ` &&
|
||||
` "EDIT": { ` &&
|
||||
` "DATE": "2023-08-26", ` &&
|
||||
` "DEC1": -0.3333, ` &&
|
||||
` "DEC2": 0, ` &&
|
||||
` "DEC_SUM": -0.3333, ` &&
|
||||
` "INT1": 0, ` &&
|
||||
` "INT2": 0, ` &&
|
||||
` "INT_SUM": 0, ` &&
|
||||
` "TIME": "12:51:55" ` &&
|
||||
` }, ` &&
|
||||
` "oScroll": [], ` &&
|
||||
` "OMESSAGEMANAGER": [], ` &&
|
||||
` "ID": "0242B09497911EEE90CFA16736E6EEF8", ` &&
|
||||
` "ARGUMENTS": [{ ` &&
|
||||
` "EVENT": "BACK", ` &&
|
||||
` "METHOD": "UPDATE", ` &&
|
||||
` "CHECK_VIEW_DESTROY": false ` &&
|
||||
` }] ` &&
|
||||
` } `.
|
||||
|
||||
DATA mr_data TYPE REF TO data.
|
||||
|
||||
z2ui5_cl_fw_utility=>trans_json_2_any(
|
||||
EXPORTING
|
||||
val = lv_test
|
||||
CHANGING
|
||||
data = mr_data
|
||||
).
|
||||
|
||||
FIELD-SYMBOLS <any> TYPE any.
|
||||
ASSIGN (`MR_DATA->EDIT->TIME->*`) TO <any>.
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = <any>
|
||||
exp = `12:51:55`
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD test_trans_json_any_2__w_struc.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
|
@ -447,17 +491,15 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
END OF ty_row.
|
||||
TYPES ty_t_tab TYPE STANDARD TABLE OF ty_row WITH EMPTY KEY.
|
||||
|
||||
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 ) ).
|
||||
|
||||
DATA(lt_tab2) = VALUE ty_t_tab( ).
|
||||
DATA(lv_tab) = z2ui5_cl_fw_utility=>trans_any_2_json( lt_tab ).
|
||||
|
||||
/ui2/cl_json=>deserialize( EXPORTING json = lv_tab
|
||||
CHANGING data = lt_tab2 ).
|
||||
DATA(ls_row) = VALUE ty_row( ).
|
||||
ls_row-title = `test`.
|
||||
|
||||
IF lt_tab <> lt_tab2.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
DATA(lv_json) = z2ui5_cl_fw_utility=>trans_json_any_2( ls_row ).
|
||||
|
||||
IF lv_json IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -488,7 +530,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
( title = 'Test2' value = 'this is a new descr' selected = abap_false ) ).
|
||||
|
||||
IF lt_tab <> lt_tab2.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -499,7 +541,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
DATA(lv_url) = z2ui5_cl_fw_utility=>url_param_create_url( lt_param ).
|
||||
|
||||
IF lv_url <> `sap-client=100&app_start=z2ui5_cl_app_hello_world`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -511,7 +553,7 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
|
||||
|
||||
IF lv_param <> `z2ui5_cl_app_hello_world`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -520,16 +562,16 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
|
||||
DATA(lt_param) = z2ui5_cl_fw_utility=>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( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF lt_param[ n = `app_start` ]-v <> `z2ui5_cl_app_hello_world`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD url_param_set.
|
||||
METHOD test_url_param_set.
|
||||
|
||||
DATA(lv_param) = z2ui5_cl_fw_utility=>url_param_set(
|
||||
name = `app_start`
|
||||
|
@ -537,30 +579,253 @@ CLASS ltcl_unit_test IMPLEMENTATION.
|
|||
url = `https://url.com/rvice_for_ui?sap-client=100&app_start=z2ui5_cl_app_hello_world` ).
|
||||
|
||||
IF lv_param <> `sap-client=100&app_start=z2ui5_cl_app_hello_world2`.
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_raise_error.
|
||||
METHOD test_x_check_raise_not.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>raise( `error occured` ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
z2ui5_cl_fw_utility=>x_check_raise( when = xsdbool( 1 = 2 ) ).
|
||||
|
||||
CATCH z2ui5_cl_fw_error.
|
||||
CATCH z2ui5_cx_fw_error INTO DATA(lx).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_rtti_get_type_name.
|
||||
|
||||
DATA(lv_xsdbool) = VALUE xsdboolean( ).
|
||||
DATA(lv_name) = z2ui5_cl_fw_utility=>rtti_get_type_name( lv_xsdbool ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_name
|
||||
exp = `XSDBOOLEAN`
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_raise_error_not.
|
||||
METHOD test_rtti_get_type_kind.
|
||||
|
||||
TRY.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( 1 = 2 ) ).
|
||||
DATA(lv_string) = VALUE string( ).
|
||||
|
||||
DATA(lv_type_kind) = z2ui5_cl_fw_utility=>rtti_get_type_kind( lv_string ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_type_kind
|
||||
exp = cl_abap_typedescr=>typekind_string
|
||||
).
|
||||
|
||||
DATA lr_string TYPE REF TO string.
|
||||
CREATE DATA lr_string.
|
||||
lv_type_kind = z2ui5_cl_fw_utility=>rtti_get_type_kind( lr_string ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_type_kind
|
||||
exp = cl_abap_typedescr=>typekind_dref
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_rtti_check_type_kind.
|
||||
|
||||
DATA(lv_string) = VALUE string( ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>rtti_check_type_kind_dref( lv_string )
|
||||
exp = abap_false
|
||||
).
|
||||
|
||||
DATA lr_string TYPE REF TO string.
|
||||
CREATE DATA lr_string.
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = z2ui5_cl_fw_utility=>rtti_check_type_kind_dref( lr_string )
|
||||
exp = abap_true
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_rtti_get_t_attri_by_obj.
|
||||
|
||||
DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
DATA(lt_attri) = z2ui5_cl_fw_utility=>rtti_get_t_attri_by_object( lo_obj ).
|
||||
|
||||
IF lines( lt_attri ) <> 7.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_attri[ name = `MS_TAB` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_attri[ name = `SS_TAB` type_kind = `v` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_attri[ name = `SV_VAR` type_kind = `g` is_class = abap_true ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_attri[ name = `SV_STATUS` type_kind = `g` is_class = abap_true is_constant = `X` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_rtti_get_t_comp_by_struc.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
DATA(ls_row) = VALUE ty_row( ).
|
||||
|
||||
DATA(lt_comp) = z2ui5_cl_fw_utility=>rtti_get_t_comp_by_struc( ls_row ).
|
||||
|
||||
IF lines( lt_comp ) <> 7.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_comp[ name = `TITLE` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_comp[ name = `VALUE` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_comp[ name = `SELECTED` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
IF NOT line_exists( lt_comp[ name = `CHECKBOX` ] ).
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
DATA(ls_title) = lt_comp[ 1 ].
|
||||
|
||||
IF ls_title-type->type_kind <> `g`.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_trans_xml_any_2__w_obj.
|
||||
|
||||
DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
DATA(lv_xml) = z2ui5_cl_fw_utility=>trans_xml_any_2( lo_obj ).
|
||||
|
||||
IF lv_xml IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_trans_xml_2_any__w_obj.
|
||||
|
||||
DATA(lo_obj) = NEW ltcl_test_app( ).
|
||||
DATA(lv_xml) = z2ui5_cl_fw_utility=>trans_xml_any_2( lo_obj ).
|
||||
|
||||
CLEAR lo_obj.
|
||||
z2ui5_cl_fw_utility=>trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = lv_xml
|
||||
IMPORTING
|
||||
any = lo_obj
|
||||
).
|
||||
|
||||
IF lo_obj IS NOT BOUND.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_trans_xml_any_2__w_data.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
DATA(ls_row) = VALUE ty_row( ).
|
||||
ls_row-value = `test`.
|
||||
|
||||
DATA(lv_xml) = z2ui5_cl_fw_utility=>trans_xml_any_2( ls_row ).
|
||||
|
||||
IF lv_xml IS INITIAL.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_trans_xml_2_any__w_data.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_row,
|
||||
title TYPE string,
|
||||
value TYPE string,
|
||||
descr TYPE string,
|
||||
icon TYPE string,
|
||||
info TYPE string,
|
||||
selected TYPE abap_bool,
|
||||
checkbox TYPE abap_bool,
|
||||
END OF ty_row.
|
||||
|
||||
DATA(ls_row) = VALUE ty_row( ).
|
||||
DATA(ls_row2) = VALUE ty_row( ).
|
||||
ls_row-value = `test`.
|
||||
|
||||
DATA(lv_xml) = z2ui5_cl_fw_utility=>trans_xml_any_2( ls_row ).
|
||||
|
||||
z2ui5_cl_fw_utility=>trans_xml_2_any(
|
||||
EXPORTING
|
||||
xml = lv_xml
|
||||
IMPORTING
|
||||
any = ls_row2
|
||||
).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = ls_row
|
||||
exp = ls_row2
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test_c_replace_assign_struc.
|
||||
|
||||
DATA(lv_result) = z2ui5_cl_fw_utility=>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_fw_utility=>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_fw_utility=>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_fw_utility=>c_replace_assign_struc( `*MO_APP->*MS_STRUC`).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lv_result4
|
||||
exp = `*MO_APP->*MS_STRUC-`
|
||||
).
|
||||
|
||||
CATCH z2ui5_cl_fw_error INTO DATA(lx).
|
||||
cl_abap_unit_assert=>fail( quit = 5 ).
|
||||
ENDTRY.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -145,19 +145,19 @@ CLASS Z2UI5_CL_FW_UTILITY_JSON IMPLEMENTATION.
|
|||
result = NEW #( ).
|
||||
result->mo_root = result.
|
||||
|
||||
/ui2/cl_json=>deserialize(
|
||||
EXPORTING
|
||||
json = CONV string( iv_json )
|
||||
assoc_arrays = abap_true
|
||||
CHANGING
|
||||
data = result->mr_actual ).
|
||||
z2ui5_cl_fw_utility=>trans_json_2_any(
|
||||
EXPORTING
|
||||
val = iv_json
|
||||
CHANGING
|
||||
data = result->mr_actual
|
||||
).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_attribute.
|
||||
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( mr_actual IS INITIAL ) ).
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( mr_actual IS INITIAL ) ).
|
||||
|
||||
result = new( io_root = mo_root
|
||||
iv_name = name ).
|
||||
|
@ -169,7 +169,7 @@ CLASS Z2UI5_CL_FW_UTILITY_JSON IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
ASSIGN (lv_name) TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 ) ).
|
||||
z2ui5_cl_fw_utility=>x_check_raise( xsdbool( sy-subrc <> 0 ) ).
|
||||
|
||||
result->mr_actual = <attribute>.
|
||||
result->mo_parent = me.
|
||||
|
@ -182,8 +182,8 @@ CLASS Z2UI5_CL_FW_UTILITY_JSON IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS <attribute> TYPE any.
|
||||
ASSIGN mr_actual->* TO <attribute>.
|
||||
z2ui5_cl_fw_utility=>raise( when = xsdbool( sy-subrc <> 0 )
|
||||
v = `value of attribute in JSON not found` ).
|
||||
z2ui5_cl_fw_utility=>x_check_raise( when = xsdbool( sy-subrc <> 0 )
|
||||
v = `value of attribute in JSON not found` ).
|
||||
result = <attribute>.
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_unit_01_json DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL HARMLESS.
|
||||
DURATION long
|
||||
RISK LEVEL harmless.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_json_attri FOR TESTING RAISING cx_static_check.
|
||||
|
|
|
@ -1,32 +1,33 @@
|
|||
CLASS z2ui5_cl_fw_error DEFINITION INHERITING FROM cx_no_check
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
class Z2UI5_CX_FW_ERROR definition
|
||||
public
|
||||
inheriting from CX_NO_CHECK
|
||||
final
|
||||
create public .
|
||||
|
||||
PUBLIC SECTION.
|
||||
public section.
|
||||
|
||||
DATA:
|
||||
BEGIN OF ms_error,
|
||||
data:
|
||||
BEGIN OF ms_error,
|
||||
x_root TYPE REF TO cx_root,
|
||||
uuid TYPE string,
|
||||
text TYPE string,
|
||||
END OF ms_error.
|
||||
END OF ms_error .
|
||||
|
||||
METHODS IF_MESSAGE~GET_TEXT REDEFINITION.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
val TYPE any OPTIONAL
|
||||
previous TYPE REF TO cx_root OPTIONAL
|
||||
PREFERRED PARAMETER val.
|
||||
methods CONSTRUCTOR
|
||||
importing
|
||||
!VAL type ANY optional
|
||||
!PREVIOUS type ref to CX_ROOT optional
|
||||
preferred parameter VAL .
|
||||
|
||||
methods IF_MESSAGE~GET_TEXT
|
||||
redefinition .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS z2ui5_cl_fw_error IMPLEMENTATION.
|
||||
CLASS Z2UI5_CX_FW_ERROR IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor ##ADT_SUPPRESS_GENERATION.
|
||||
|
@ -39,7 +40,7 @@ CLASS z2ui5_cl_fw_error IMPLEMENTATION.
|
|||
CATCH cx_root.
|
||||
ms_error-text = val.
|
||||
ENDTRY.
|
||||
ms_error-uuid = z2ui5_cl_fw_utility=>get_uuid( ).
|
||||
ms_error-uuid = z2ui5_cl_fw_utility=>func_get_uuid_32( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -57,6 +58,4 @@ CLASS z2ui5_cl_fw_error IMPLEMENTATION.
|
|||
result = COND #( WHEN error = abap_true AND result IS INITIAL THEN `unknown error` else result ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
ENDCLASS.
|
28
src/00/z2ui5_cx_fw_error.clas.testclasses.abap
Normal file
28
src/00/z2ui5_cx_fw_error.clas.testclasses.abap
Normal file
|
@ -0,0 +1,28 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION SHORT
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_raise FOR TESTING RAISING cx_static_check.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS ltcl_unit_test IMPLEMENTATION.
|
||||
|
||||
METHOD test_raise.
|
||||
|
||||
TRY.
|
||||
|
||||
RAISE EXCEPTION TYPE z2ui5_cx_fw_error
|
||||
EXPORTING
|
||||
val = `this is an error text`.
|
||||
|
||||
CATCH z2ui5_cx_fw_error INTO DATA(lx).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = lx->get_text( )
|
||||
exp = `this is an error text` ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -3,7 +3,7 @@
|
|||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>Z2UI5_CL_FW_ERROR</CLSNAME>
|
||||
<CLSNAME>Z2UI5_CX_FW_ERROR</CLSNAME>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>abap2UI5 - error</DESCRIPT>
|
||||
<CATEGORY>40</CATEGORY>
|
||||
|
@ -11,6 +11,7 @@
|
|||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
|
@ -20,7 +20,7 @@ CLASS z2ui5_cl_app_hello_world IMPLEMENTATION.
|
|||
|
||||
IF check_initialized = abap_false.
|
||||
check_initialized = abap_true.
|
||||
product = 'tomatos'.
|
||||
product = 'products'.
|
||||
quantity = '500'.
|
||||
ENDIF.
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION medium
|
||||
RISK LEVEL harmless.
|
||||
DURATION short
|
||||
RISK LEVEL dangerous.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS first_test FOR TESTING RAISING cx_static_check.
|
||||
|
|
|
@ -26,7 +26,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
||||
CLASS z2ui5_cl_http_handler IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD http_get.
|
||||
|
@ -132,6 +132,8 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` oParent[sap.z2ui5.oResponse.PARAMS.S_VIEW_NEST.METHOD_INSERT](oView);` && |\n| &&
|
||||
` sap.z2ui5.checkNestAfter = true;` && |\n| &&
|
||||
` sap.z2ui5.oViewNest = oView;` && |\n| &&
|
||||
` sap.z2ui5.oView.setModel( sap.z2ui5.oViewNest.getModel( ) );` && |\n| &&
|
||||
` // sap.z2ui5.oLastView = oView;` && |\n| &&
|
||||
` },);` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|
@ -238,23 +240,25 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` let isUpdated = false;` && |\n| &&
|
||||
` if (sap.z2ui5.oViewPopup) {` && |\n| &&
|
||||
` if (!sap.z2ui5.oViewPopup.isOpen || sap.z2ui5.oViewPopup.isOpen() == true) {` && |\n| &&
|
||||
` sap.z2ui5.oBody.oUpdate = sap.z2ui5.oViewPopup.getModel().getData().oUpdate;` && |\n| &&
|
||||
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oViewPopup.getModel().getData().EDIT;` && |\n| &&
|
||||
` isUpdated = true;` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
` if ( isUpdated == false ) { ` && |\n| &&
|
||||
` if (sap.z2ui5.oViewPopover) {` && |\n| &&
|
||||
` if (sap.z2ui5.oViewPopover.isOpen() == true) {` && |\n| &&
|
||||
` sap.z2ui5.oBody.oUpdate = sap.z2ui5.oViewPopover.getModel().getData().oUpdate;` && |\n| &&
|
||||
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oViewPopover.getModel().getData().EDIT;` && |\n| &&
|
||||
` isUpdated = true;` && |\n| &&
|
||||
` } } }` && |\n| &&
|
||||
` if (isUpdated == false){` && |\n| &&
|
||||
` if (sap.z2ui5.oViewNest == this.getView() ) {` && |\n| &&
|
||||
` sap.z2ui5.oBody.oUpdate = sap.z2ui5.oViewNest.getModel().getData().oUpdate;` && |\n| &&
|
||||
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oViewNest.getModel().getData().EDIT;` && |\n| &&
|
||||
` // sap.z2ui5.oBody.EDIT = sap.z2ui5.oLastView.getModel().getData().EDIT;` && |\n| &&
|
||||
` isUpdated = true;` && |\n| &&
|
||||
` } }` && |\n| &&
|
||||
` if (isUpdated == false){` && |\n| &&
|
||||
` sap.z2ui5.oBody.oUpdate = sap.z2ui5.oView.getModel().getData().oUpdate;` && |\n| &&
|
||||
` sap.z2ui5.oBody.EDIT = sap.z2ui5.oView.getModel().getData().EDIT;` && |\n| &&
|
||||
` // sap.z2ui5.oBody.EDIT = sap.z2ui5.oLastView.getModel().getData().EDIT;` && |\n| &&
|
||||
` }` && |\n| &&
|
||||
|\n| &&
|
||||
` if (args[ 0 ].CHECK_VIEW_DESTROY){` && |\n| &&
|
||||
|
@ -337,11 +341,12 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` };` && |\n| &&
|
||||
` sap.ui.getCore().getMessageManager().registerObject(oView, true);` && |\n| &&
|
||||
` sap.z2ui5.oView = oView;` && |\n| &&
|
||||
` // sap.z2ui5.oLastView = oView;` && |\n| &&
|
||||
` },` && |\n| &&
|
||||
` );` && |\n| &&
|
||||
` } else {` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.PARAMS.S_VIEW.CHECK_UPDATE_MODEL == true) { sap.z2ui5.oView.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL)); }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.PARAMS.S_VIEW_NEST.CHECK_UPDATE_MODEL == true) { sap.z2ui5.oViewNest.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL)); }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.PARAMS.S_VIEW_NEST.CHECK_UPDATE_MODEL == true) { sap.z2ui5.oViewNest.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL)); }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.PARAMS.S_POPUP.CHECK_UPDATE_MODEL == true) { sap.z2ui5.oViewPopup.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL)); }` && |\n| &&
|
||||
` if (sap.z2ui5.oResponse.PARAMS.S_POPOVER.CHECK_UPDATE_MODEL == true) { sap.z2ui5.oViewPopover.setModel(new sap.ui.model.json.JSONModel(sap.z2ui5.oResponse.OVIEWMODEL)); }` && |\n| &&
|
||||
` sap.z2ui5.oController.onAfterRendering();` && |\n| &&
|
||||
|
@ -410,7 +415,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
` sap.z2ui5.oController = oView.getController();` && |\n| &&
|
||||
` var oViewNest = sap.ui.xmlview({ viewContent: xml });` && |\n| &&
|
||||
` sap.z2ui5.oControllerNest = oViewNest.getController();` && |\n| &&
|
||||
` sap.z2ui5.checkLogActive = ` && z2ui5_cl_fw_utility=>get_json_boolean( check_logging ) && `;` && |\n| &&
|
||||
` sap.z2ui5.checkLogActive = ` && z2ui5_cl_fw_utility=>boolean_abap_2_json( check_logging ) && `;` && |\n| &&
|
||||
` sap.z2ui5.oBody = {};` && |\n| &&
|
||||
` sap.z2ui5.oBody.APP_START = sap.z2ui5.APP_START;` && |\n| &&
|
||||
` sap.z2ui5.oController.Roundtrip();` && |\n| &&
|
||||
|
@ -434,10 +439,15 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
|
||||
METHOD http_post.
|
||||
|
||||
DATA(lo_handler) = z2ui5_cl_fw_handler=>request_begin( body ).
|
||||
TRY.
|
||||
DATA(lo_handler) = z2ui5_cl_fw_handler=>request_begin( body ).
|
||||
CATCH cx_root INTO DATA(x).
|
||||
lo_handler = z2ui5_cl_fw_handler=>set_app_system( x ).
|
||||
ENDTRY.
|
||||
|
||||
DO.
|
||||
TRY.
|
||||
|
||||
ROLLBACK WORK.
|
||||
CAST z2ui5_if_app( lo_handler->ms_db-app )->main( NEW z2ui5_cl_fw_client( lo_handler ) ).
|
||||
ROLLBACK WORK.
|
||||
|
@ -454,7 +464,7 @@ CLASS Z2UI5_CL_HTTP_HANDLER IMPLEMENTATION.
|
|||
|
||||
result = lo_handler->request_end( ).
|
||||
|
||||
CATCH cx_root INTO DATA(x).
|
||||
CATCH cx_root INTO x.
|
||||
lo_handler = z2ui5_cl_fw_handler=>set_app_system( x ).
|
||||
CONTINUE.
|
||||
ENDTRY.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_unit_02_app_start DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL harmless.
|
||||
RISK LEVEL CRITICAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
PROTECTED SECTION.
|
||||
|
|
|
@ -1947,7 +1947,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `BadgeCustomData`
|
||||
t_prop = VALUE #( ( n = `key` v = key )
|
||||
( n = `value` v = value )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ).
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -1968,7 +1968,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
ns = 'gantt'
|
||||
t_prop = VALUE #( ( n = `time` v = time )
|
||||
( n = `endtime` v = endtime )
|
||||
( n = `selectable` v = z2ui5_cl_fw_utility=>get_json_boolean( selectable ) )
|
||||
( n = `selectable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selectable ) )
|
||||
( n = `selectedFill` v = selectedfill )
|
||||
( n = `fill` v = fill )
|
||||
( n = `height` v = height )
|
||||
|
@ -1977,18 +1977,18 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `alignShape` v = alignshape )
|
||||
( n = `color` v = color )
|
||||
( n = `fontSize` v = fontsize )
|
||||
( n = `connectable` v = z2ui5_cl_fw_utility=>get_json_boolean( connectable ) )
|
||||
( n = `connectable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( connectable ) )
|
||||
( n = `fontFamily` v = fontfamily )
|
||||
( n = `filter` v = filter )
|
||||
( n = `transform` v = transform )
|
||||
( n = `countInBirdEye` v = z2ui5_cl_fw_utility=>get_json_boolean( countinbirdeye ) )
|
||||
( n = `countInBirdEye` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( countinbirdeye ) )
|
||||
( n = `fontWeight` v = fontweight )
|
||||
( n = `showTitle` v = z2ui5_cl_fw_utility=>get_json_boolean( showtitle ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) )
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>get_json_boolean( resizable ) )
|
||||
( n = `showTitle` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtitle ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) )
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( resizable ) )
|
||||
( n = `horizontalTextAlignment` v = horizontaltextalignment )
|
||||
( n = `highlighted` v = z2ui5_cl_fw_utility=>get_json_boolean( highlighted ) )
|
||||
( n = `highlightable` v = z2ui5_cl_fw_utility=>get_json_boolean( highlightable ) ) ) ).
|
||||
( n = `highlighted` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( highlighted ) )
|
||||
( n = `highlightable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( highlightable ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -2040,8 +2040,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
ns = ns
|
||||
t_prop = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `id` v = id )
|
||||
|
@ -2084,7 +2084,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD carousel.
|
||||
|
||||
result = _generic( name = `Carousel`
|
||||
t_prop = VALUE #( ( n = `loop` v = z2ui5_cl_fw_utility=>get_json_boolean( loop ) )
|
||||
t_prop = VALUE #( ( n = `loop` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( loop ) )
|
||||
( n = `class` v = class )
|
||||
( n = `height` v = height )
|
||||
) ).
|
||||
|
@ -2328,7 +2328,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `CheckBox`
|
||||
t_prop = VALUE #( ( n = `text` v = text )
|
||||
( n = `selected` v = selected )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `select` v = select ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -2339,7 +2339,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
ns = `editor`
|
||||
t_prop = VALUE #( ( n = `value` v = value )
|
||||
( n = `type` v = type )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `height` v = height )
|
||||
( n = `width` v = width ) ) ).
|
||||
ENDMETHOD.
|
||||
|
@ -2350,7 +2350,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `width` v = width )
|
||||
( n = `minScreenWidth` v = minscreenwidth )
|
||||
( n = `halign` v = halign )
|
||||
( n = `demandPopin` v = z2ui5_cl_fw_utility=>get_json_boolean( demandpopin ) ) ) ).
|
||||
( n = `demandPopin` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( demandpopin ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -2370,7 +2370,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
METHOD combobox.
|
||||
result = _generic( name = `ComboBox`
|
||||
t_prop = VALUE #( ( n = `showClearIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showclearicon ) )
|
||||
t_prop = VALUE #( ( n = `showClearIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showclearicon ) )
|
||||
( n = `selectedKey` v = selectedkey )
|
||||
( n = `items` v = items )
|
||||
( n = `label` v = label )
|
||||
|
@ -2414,14 +2414,14 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `ContainerToolbar`
|
||||
ns = `gantt`
|
||||
t_prop = VALUE #( ( n = `showSearchButton` v = showsearchbutton )
|
||||
( n = `alignCustomContentToRight` v = z2ui5_cl_fw_utility=>get_json_boolean( aligncustomcontenttoright ) )
|
||||
( n = `alignCustomContentToRight` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( aligncustomcontenttoright ) )
|
||||
( n = `findMode` v = findmode )
|
||||
( n = `infoOfSelectItems` v = infoofselectitems )
|
||||
( n = `showBirdEyeButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showbirdeyebutton ) )
|
||||
( n = `showDisplayTypeButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showdisplaytypebutton ) )
|
||||
( n = `showLegendButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showlegendbutton ) )
|
||||
( n = `showSettingButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showsettingbutton ) )
|
||||
( n = `showTimeZoomControl` v = z2ui5_cl_fw_utility=>get_json_boolean( showtimezoomcontrol ) )
|
||||
( n = `showBirdEyeButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showbirdeyebutton ) )
|
||||
( n = `showDisplayTypeButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showdisplaytypebutton ) )
|
||||
( n = `showLegendButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showlegendbutton ) )
|
||||
( n = `showSettingButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showsettingbutton ) )
|
||||
( n = `showTimeZoomControl` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtimezoomcontrol ) )
|
||||
( n = `stepCountOfSlider` v = stepcountofslider )
|
||||
( n = `zoomControlType` v = zoomcontroltype )
|
||||
( n = `zoomLevel` v = zoomlevel )
|
||||
|
@ -2483,12 +2483,12 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `value` v = value )
|
||||
( n = `displayFormat` v = displayformat )
|
||||
( n = `valueFormat` v = valueformat )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>get_json_boolean( required ) )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( required ) )
|
||||
( n = `valueState` v = valuestate )
|
||||
( n = `valueStateText` v = valuestatetext )
|
||||
( n = `placeholder` v = placeholder )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `showCurrentDateButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showcurrentdatebutton ) ) ) ).
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `showCurrentDateButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showcurrentdatebutton ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -2497,7 +2497,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `DateTimePicker`
|
||||
t_prop = VALUE #( ( n = `value` v = value )
|
||||
( n = `placeholder` v = placeholder )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `valueState` v = valuestate ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -2511,7 +2511,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `showHeader` v = showheader )
|
||||
( n = `contentWidth` v = contentwidth )
|
||||
( n = `contentHeight` v = contentheight )
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>get_json_boolean( resizable ) ) ) ).
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( resizable ) ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -2520,9 +2520,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `DynamicPage`
|
||||
ns = `f`
|
||||
t_prop = VALUE #(
|
||||
( n = `headerExpanded` v = z2ui5_cl_fw_utility=>get_json_boolean( headerexpanded ) )
|
||||
( n = `headerPinned` v = z2ui5_cl_fw_utility=>get_json_boolean( headerpinned ) )
|
||||
( n = `showFooter` v = z2ui5_cl_fw_utility=>get_json_boolean( showfooter ) )
|
||||
( n = `headerExpanded` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( headerexpanded ) )
|
||||
( n = `headerPinned` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( headerpinned ) )
|
||||
( n = `showFooter` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showfooter ) )
|
||||
( n = `toggleHeaderOnTitleClick` v = toggleheaderontitleclick ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -2531,7 +2531,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic(
|
||||
name = `DynamicPageHeader`
|
||||
ns = `f`
|
||||
t_prop = VALUE #( ( n = `pinnable` v = z2ui5_cl_fw_utility=>get_json_boolean( pinnable ) ) ) ).
|
||||
t_prop = VALUE #( ( n = `pinnable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( pinnable ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -2613,19 +2613,19 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD feed_input.
|
||||
result = _generic( name = `FeedInput`
|
||||
t_prop = VALUE #( ( n = `buttonTooltip` v = buttonTooltip )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>get_json_boolean( growing ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( growing ) )
|
||||
( n = `growingMaxLines` v = growingMaxLines )
|
||||
( n = `icon` v = icon )
|
||||
( n = `iconDensityAware` v = z2ui5_cl_fw_utility=>get_json_boolean( iconDensityAware ) )
|
||||
( n = `iconDensityAware` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( iconDensityAware ) )
|
||||
( n = `iconDisplayShape` v = iconDisplayShape )
|
||||
( n = `iconInitials` v = iconInitials )
|
||||
( n = `iconSize` v = iconSize )
|
||||
( n = `maxLength` v = maxLength )
|
||||
( n = `placeholder` v = placeholder )
|
||||
( n = `rows` v = rows )
|
||||
( n = `showExceededText` v = z2ui5_cl_fw_utility=>get_json_boolean( showExceededText ) )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showIcon ) )
|
||||
( n = `showExceededText` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showExceededText ) )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showIcon ) )
|
||||
( n = `value` v = value )
|
||||
( n = `class` v = class )
|
||||
( n = `post` v = post ) ) ).
|
||||
|
@ -2638,9 +2638,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `activeIcon` v = activeIcon )
|
||||
( n = `convertedLinksDefaultTarget` v = convertedLinksDefaultTarget )
|
||||
( n = `convertLinksToAnchorTags` v = convertLinksToAnchorTags )
|
||||
( n = `iconActive` v = z2ui5_cl_fw_utility=>get_json_boolean( iconActive ) )
|
||||
( n = `iconActive` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( iconActive ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `iconDensityAware` v = z2ui5_cl_fw_utility=>get_json_boolean( iconDensityAware ) )
|
||||
( n = `iconDensityAware` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( iconDensityAware ) )
|
||||
( n = `iconDisplayShape` v = iconDisplayShape )
|
||||
( n = `iconInitials` v = iconInitials )
|
||||
( n = `iconSize` v = iconSize )
|
||||
|
@ -2649,8 +2649,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `maxCharacters` v = maxCharacters )
|
||||
( n = `moreLabel` v = moreLabel )
|
||||
( n = `sender` v = sender )
|
||||
( n = `senderActive` v = z2ui5_cl_fw_utility=>get_json_boolean( senderActive ) )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showIcon ) )
|
||||
( n = `senderActive` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( senderActive ) )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showIcon ) )
|
||||
( n = `text` v = text )
|
||||
( n = `senderPress` v = senderPress )
|
||||
( n = `iconPress` v = iconPress )
|
||||
|
@ -2660,12 +2660,12 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
METHOD feed_list_item_action.
|
||||
result = _generic( name = `FeedListItemAction`
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `key` v = key )
|
||||
( n = `text` v = text )
|
||||
( n = `press` v = press )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ).
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -2725,7 +2725,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `width` v = width )
|
||||
( n = `height` v = height )
|
||||
( n = `alignItems` v = alignitems )
|
||||
( n = `fitContainer` v = z2ui5_cl_fw_utility=>get_json_boolean( fitcontainer ) )
|
||||
( n = `fitContainer` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( fitcontainer ) )
|
||||
( n = `justifyContent` v = justifycontent )
|
||||
( n = `wrap` v = wrap )
|
||||
( n = `visible` v = visible ) ) ).
|
||||
|
@ -2921,7 +2921,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD hlp_get_app_url.
|
||||
|
||||
IF classname IS NOT SUPPLIED.
|
||||
classname = z2ui5_cl_fw_utility=>get_classname_by_ref( mi_client->get( )-s_draft-app ).
|
||||
classname = z2ui5_cl_fw_utility=>rtti_get_classname_by_ref( mi_client->get( )-s_draft-app ).
|
||||
ENDIF.
|
||||
|
||||
DATA(lv_url) = to_lower( mi_client->get( )-s_config-origin && mi_client->get( )-s_config-pathname ) && `?`.
|
||||
|
@ -2940,7 +2940,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
DATA(ls_config) = mo_root->mi_client->get( )-s_config.
|
||||
|
||||
result = ls_config-origin && `/sap/bc/adt/oo/classes/`
|
||||
&& z2ui5_cl_fw_utility=>get_classname_by_ref( ls_draft-app ) && `/source/main`.
|
||||
&& z2ui5_cl_fw_utility=>rtti_get_classname_by_ref( ls_draft-app ) && `/source/main`.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3022,7 +3022,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `IllustratedMessage`
|
||||
t_prop = VALUE #( ( n = `enableVerticalResponsiveness` v = enableverticalresponsiveness )
|
||||
( n = `illustrationType` v = illustrationtype )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_fw_utility=>get_json_boolean( enableformattedtext ) )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enableformattedtext ) )
|
||||
( n = `illustrationSize` v = illustrationsize )
|
||||
( n = `description` v = description )
|
||||
( n = `title` v = title )
|
||||
|
@ -3072,26 +3072,26 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `id` v = id )
|
||||
( n = `placeholder` v = placeholder )
|
||||
( n = `type` v = type )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showclearicon ) )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showclearicon ) )
|
||||
( n = `description` v = description )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) )
|
||||
( n = `showTableSuggestionValueHelp` v = z2ui5_cl_fw_utility=>get_json_boolean( showtablesuggestionvaluehelp ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) )
|
||||
( n = `showTableSuggestionValueHelp` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtablesuggestionvaluehelp ) )
|
||||
( n = `valueState` v = valuestate )
|
||||
( n = `valueStateText` v = valuestatetext )
|
||||
( n = `value` v = value )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>get_json_boolean( required ) )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( required ) )
|
||||
( n = `suggest` v = suggest )
|
||||
( n = `suggestionItems` v = suggestionitems )
|
||||
( n = `suggestionRows` v = suggestionrows )
|
||||
( n = `showSuggestion` v = z2ui5_cl_fw_utility=>get_json_boolean( showsuggestion ) )
|
||||
( n = `showSuggestion` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showsuggestion ) )
|
||||
( n = `valueHelpRequest` v = valuehelprequest )
|
||||
( n = `autocomplete` v = z2ui5_cl_fw_utility=>get_json_boolean( autocomplete ) )
|
||||
( n = `valueLiveUpdate` v = z2ui5_cl_fw_utility=>get_json_boolean( valueliveupdate ) )
|
||||
( n = `submit` v = z2ui5_cl_fw_utility=>get_json_boolean( submit ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_fw_utility=>get_json_boolean( showvaluehelp ) )
|
||||
( n = `valueHelpOnly` v = z2ui5_cl_fw_utility=>get_json_boolean( valuehelponly ) )
|
||||
( n = `autocomplete` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( autocomplete ) )
|
||||
( n = `valueLiveUpdate` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( valueliveupdate ) )
|
||||
( n = `submit` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( submit ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showvaluehelp ) )
|
||||
( n = `valueHelpOnly` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( valuehelponly ) )
|
||||
( n = `class` v = class )
|
||||
( n = `maxSuggestionWidth` v = maxsuggestionwidth )
|
||||
( n = `fieldWidth` v = fieldwidth ) ) ).
|
||||
|
@ -3130,7 +3130,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `InteractiveDonutChart`
|
||||
ns = `mchart`
|
||||
t_prop = VALUE #( ( n = `selectionChanged` v = selectionchanged )
|
||||
( n = `showError` v = z2ui5_cl_fw_utility=>get_json_boolean( showerror ) )
|
||||
( n = `showError` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showerror ) )
|
||||
( n = `errorMessageTitle` v = errormessagetitle )
|
||||
( n = `errorMessage` v = errormessage )
|
||||
( n = `displayedSegments` v = displayedsegments )
|
||||
|
@ -3152,7 +3152,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `InteractiveLineChart`
|
||||
ns = `mchart`
|
||||
t_prop = VALUE #( ( n = `selectionChanged` v = selectionchanged )
|
||||
( n = `showError` v = z2ui5_cl_fw_utility=>get_json_boolean( showerror ) )
|
||||
( n = `showError` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showerror ) )
|
||||
( n = `press` v = press )
|
||||
( n = `errorMessageTitle` v = errormessagetitle )
|
||||
( n = `errorMessage` v = errormessage )
|
||||
|
@ -3168,7 +3168,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `secondaryLabel` v = secondarylabel )
|
||||
( n = `value` v = value )
|
||||
( n = `displayedValue` v = displayedvalue )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) ) ) ).
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3221,7 +3221,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `href` v = href )
|
||||
( n = `press` v = press )
|
||||
( n = `id` v = id )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) ) ) ).
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3265,10 +3265,10 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `valueState` v = valueState )
|
||||
( n = `valueStateText` v = valueStateText )
|
||||
( n = `placeholderSymbol` v = placeholderSymbol )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>get_json_boolean( required ) )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showClearIcon ) )
|
||||
( n = `showValueStateMessage` v = z2ui5_cl_fw_utility=>get_json_boolean( showValueStateMessage ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) )
|
||||
( n = `required` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( required ) )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showClearIcon ) )
|
||||
( n = `showValueStateMessage` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showValueStateMessage ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) )
|
||||
( n = `fieldWidth` v = fieldwidth ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3289,18 +3289,18 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `subtitle` v = subtitle )
|
||||
( n = `description` v = description )
|
||||
( n = `groupName` v = groupname )
|
||||
( n = `markupDescription` v = z2ui5_cl_fw_utility=>get_json_boolean( markupdescription ) ) ) ).
|
||||
( n = `markupDescription` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( markupdescription ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD message_page.
|
||||
result = _generic( name = `MessagePage`
|
||||
t_prop = VALUE #(
|
||||
( n = `showHeader` v = z2ui5_cl_fw_utility=>get_json_boolean( show_header ) )
|
||||
( n = `showHeader` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( show_header ) )
|
||||
( n = `description` v = description )
|
||||
( n = `icon` v = icon )
|
||||
( n = `text` v = text )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_fw_utility=>get_json_boolean( enableformattedtext ) )
|
||||
( n = `enableFormattedText` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enableformattedtext ) )
|
||||
) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3308,7 +3308,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD message_popover.
|
||||
result = _generic( name = `MessagePopover`
|
||||
t_prop = VALUE #( ( n = `items` v = items )
|
||||
( n = `groupItems` v = z2ui5_cl_fw_utility=>get_json_boolean( groupitems ) ) ) ).
|
||||
( n = `groupItems` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( groupitems ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3317,7 +3317,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `MessageStrip`
|
||||
t_prop = VALUE #( ( n = `text` v = text )
|
||||
( n = `type` v = type )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showicon ) )
|
||||
( n = `showIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showicon ) )
|
||||
( n = `class` v = class ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3326,7 +3326,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
result = _generic( name = `MessageView`
|
||||
t_prop = VALUE #( ( n = `items` v = items )
|
||||
( n = `groupItems` v = z2ui5_cl_fw_utility=>get_json_boolean( groupitems ) ) ) ).
|
||||
( n = `groupItems` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( groupitems ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3355,9 +3355,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD multi_input.
|
||||
result = _generic( name = `MultiInput`
|
||||
t_prop = VALUE #( ( n = `tokens` v = tokens )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>get_json_boolean( showclearicon ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_fw_utility=>get_json_boolean( showvaluehelp ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `showClearIcon` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showclearicon ) )
|
||||
( n = `showValueHelp` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showvaluehelp ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `suggestionItems` v = suggestionitems )
|
||||
( n = `tokenUpdate` v = tokenupdate )
|
||||
( n = `submit` v = submit )
|
||||
|
@ -3397,7 +3397,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `NumericContent`
|
||||
t_prop = VALUE #( ( n = `value` v = value )
|
||||
( n = `icon` v = icon )
|
||||
( n = `withMargin` v = z2ui5_cl_fw_utility=>get_json_boolean( withmargin ) ) ) ).
|
||||
( n = `withMargin` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( withmargin ) ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3426,7 +3426,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD object_number.
|
||||
result = me.
|
||||
_generic( name = `ObjectNumber`
|
||||
t_prop = VALUE #( ( n = `emphasized` v = z2ui5_cl_fw_utility=>get_json_boolean( emphasized ) )
|
||||
t_prop = VALUE #( ( n = `emphasized` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( emphasized ) )
|
||||
( n = `number` v = number )
|
||||
( n = `state` v = state )
|
||||
( n = `unit` v = unit ) ) ).
|
||||
|
@ -3444,8 +3444,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
name = `ObjectPageLayout`
|
||||
ns = `uxap`
|
||||
t_prop = VALUE #(
|
||||
( n = `showTitleInHeaderContent` v = z2ui5_cl_fw_utility=>get_json_boolean( showtitleinheadercontent ) )
|
||||
( n = `showEditHeaderButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showeditheaderbutton ) )
|
||||
( n = `showTitleInHeaderContent` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtitleinheadercontent ) )
|
||||
( n = `showEditHeaderButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showeditheaderbutton ) )
|
||||
( n = `editHeaderButtonPress` v = editheaderbuttonpress )
|
||||
( n = `upperCaseAnchorBar` v = uppercaseanchorbar ) ) ).
|
||||
ENDMETHOD.
|
||||
|
@ -3454,7 +3454,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
METHOD object_page_section.
|
||||
result = _generic( name = `ObjectPageSection`
|
||||
ns = `uxap`
|
||||
t_prop = VALUE #( ( n = `titleUppercase` v = z2ui5_cl_fw_utility=>get_json_boolean( titleuppercase ) )
|
||||
t_prop = VALUE #( ( n = `titleUppercase` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( titleuppercase ) )
|
||||
( n = `title` v = title )
|
||||
( n = `id` v = id )
|
||||
( n = `importance` v = importance ) ) ).
|
||||
|
@ -3495,7 +3495,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `OverflowToolbarButton`
|
||||
t_prop = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) ).
|
||||
|
@ -3507,7 +3507,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `buttonMode` v = buttonmode )
|
||||
( n = `defaultAction` v = defaultaction )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) ).
|
||||
|
@ -3519,7 +3519,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `OverflowToolbarToggleButton`
|
||||
t_prop = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `tooltip` v = tooltip ) ) ).
|
||||
|
@ -3530,9 +3530,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `Page`
|
||||
ns = ns
|
||||
t_prop = VALUE #( ( n = `title` v = title )
|
||||
( n = `showNavButton` v = z2ui5_cl_fw_utility=>get_json_boolean( shownavbutton ) )
|
||||
( n = `showNavButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( shownavbutton ) )
|
||||
( n = `navButtonPress` v = navbuttonpress )
|
||||
( n = `showHeader` v = z2ui5_cl_fw_utility=>get_json_boolean( showheader ) )
|
||||
( n = `showHeader` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showheader ) )
|
||||
( n = `class` v = class )
|
||||
( n = `id` v = id ) ) ).
|
||||
ENDMETHOD.
|
||||
|
@ -3620,11 +3620,11 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `ProcessFlow`
|
||||
ns = 'commons'
|
||||
t_prop = VALUE #( ( n = `id` v = id )
|
||||
( n = `foldedCorners` v = z2ui5_cl_fw_utility=>get_json_boolean( foldedcorners ) )
|
||||
( n = `scrollable` v = z2ui5_cl_fw_utility=>get_json_boolean( scrollable ) )
|
||||
( n = `showLabels` v = z2ui5_cl_fw_utility=>get_json_boolean( showlabels ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) )
|
||||
( n = `wheelZoomable` v = z2ui5_cl_fw_utility=>get_json_boolean( wheelzoomable ) )
|
||||
( n = `foldedCorners` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( foldedcorners ) )
|
||||
( n = `scrollable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( scrollable ) )
|
||||
( n = `showLabels` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showlabels ) )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) )
|
||||
( n = `wheelZoomable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( wheelzoomable ) )
|
||||
( n = `headerPress` v = headerpress )
|
||||
( n = `labelPress` v = labelpress )
|
||||
( n = `nodePress` v = nodepress )
|
||||
|
@ -3658,9 +3658,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `state` v = state )
|
||||
( n = `stateText` v = statetext )
|
||||
( n = `texts` v = texts )
|
||||
( n = `highlighted` v = z2ui5_cl_fw_utility=>get_json_boolean( highlighted ) )
|
||||
( n = `focused` v = z2ui5_cl_fw_utility=>get_json_boolean( focused ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) )
|
||||
( n = `highlighted` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( highlighted ) )
|
||||
( n = `focused` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( focused ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) )
|
||||
( n = `tag` v = tag )
|
||||
( n = `texts` v = texts )
|
||||
( n = `type` v = type ) ) ).
|
||||
|
@ -3673,7 +3673,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `class` v = class )
|
||||
( n = `percentValue` v = percentvalue )
|
||||
( n = `displayValue` v = displayvalue )
|
||||
( n = `showValue` v = z2ui5_cl_fw_utility=>get_json_boolean( showvalue ) )
|
||||
( n = `showValue` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showvalue ) )
|
||||
( n = `state` v = state ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3697,11 +3697,11 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
METHOD radio_button.
|
||||
result = _generic( name = `RadioButton`
|
||||
t_prop = VALUE #( ( n = `activeHandling` v = z2ui5_cl_fw_utility=>get_json_boolean( activehandling ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) )
|
||||
( n = `useEntireWidth` v = z2ui5_cl_fw_utility=>get_json_boolean( useentirewidth ) )
|
||||
t_prop = VALUE #( ( n = `activeHandling` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( activehandling ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) )
|
||||
( n = `useEntireWidth` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( useentirewidth ) )
|
||||
( n = `text` v = text )
|
||||
( n = `textDirection` v = textdirection )
|
||||
( n = `textAlign` v = textalign )
|
||||
|
@ -3716,8 +3716,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `RadioButtonGroup`
|
||||
t_prop = VALUE #( ( n = `id` v = id )
|
||||
( n = `columns` v = columns )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `selectedIndex` v = selectedindex )
|
||||
( n = `textDirection` v = textdirection )
|
||||
( n = `valueState` v = valuestate )
|
||||
|
@ -3736,7 +3736,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `labelInterval` v = labelinterval )
|
||||
( n = `max` v = max )
|
||||
( n = `min` v = min )
|
||||
( n = `showTickmarks` v = z2ui5_cl_fw_utility=>get_json_boolean( showtickmarks ) )
|
||||
( n = `showTickmarks` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtickmarks ) )
|
||||
( n = `startValue` v = startvalue )
|
||||
( n = `step` v = step )
|
||||
( n = `width` v = width ) ) ).
|
||||
|
@ -3775,9 +3775,9 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `ScrollContainer`
|
||||
t_prop = VALUE #( ( n = `height` v = height )
|
||||
( n = `width` v = width )
|
||||
( n = `vertical` v = z2ui5_cl_fw_utility=>get_json_boolean( vertical ) )
|
||||
( n = `horizontal` v = z2ui5_cl_fw_utility=>get_json_boolean( horizontal ) )
|
||||
( n = `focusable` v = z2ui5_cl_fw_utility=>get_json_boolean( focusable ) ) ) ).
|
||||
( n = `vertical` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( vertical ) )
|
||||
( n = `horizontal` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( horizontal ) )
|
||||
( n = `focusable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( focusable ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3789,7 +3789,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `value` v = value )
|
||||
( n = `id` v = id )
|
||||
( n = `change` v = change )
|
||||
( n = `autocomplete` v = z2ui5_cl_fw_utility=>get_json_boolean( autocomplete ) )
|
||||
( n = `autocomplete` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( autocomplete ) )
|
||||
( n = `liveChange` v = livechange ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3857,7 +3857,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `columnsXL` v = columnsxl )
|
||||
( n = `columnsL` v = columnsl )
|
||||
( n = `columnsM` v = columnsm )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) ) ) ).
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -3921,7 +3921,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `step` v = step )
|
||||
( n = `value` v = value )
|
||||
( n = `valueState` v = valuestate )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `description` v = description ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -3970,7 +3970,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = me.
|
||||
_generic( name = `Switch`
|
||||
t_prop = VALUE #( ( n = `type` v = type )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `state` v = state )
|
||||
( n = `change` v = change )
|
||||
( n = `customTextOff` v = customtextoff )
|
||||
|
@ -4001,8 +4001,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `width` v = width )
|
||||
( n = `id` v = id )
|
||||
( n = `selectionChange` v = selectionchange )
|
||||
( n = `alternateRowColors` v = z2ui5_cl_fw_utility=>get_json_boolean( alternaterowcolors ) )
|
||||
( n = `autoPopinMode` v = z2ui5_cl_fw_utility=>get_json_boolean( autopopinmode ) ) ) ).
|
||||
( n = `alternateRowColors` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( alternaterowcolors ) )
|
||||
( n = `autoPopinMode` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( autopopinmode ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -4012,15 +4012,15 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
t_prop = VALUE #( ( n = `confirmButtonText` v = confirmbuttontext )
|
||||
( n = `contentHeight` v = contentheight )
|
||||
( n = `contentWidth` v = contentwidth )
|
||||
( n = `draggable` v = z2ui5_cl_fw_utility=>get_json_boolean( draggable ) )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>get_json_boolean( growing ) )
|
||||
( n = `draggable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( draggable ) )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( growing ) )
|
||||
( n = `growingThreshold` v = growingthreshold )
|
||||
( n = `multiSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( multiselect ) )
|
||||
( n = `multiSelect` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( multiselect ) )
|
||||
( n = `noDataText` v = nodatatext )
|
||||
( n = `rememberSelections` v = z2ui5_cl_fw_utility=>get_json_boolean( rememberselections ) )
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>get_json_boolean( resizable ) )
|
||||
( n = `rememberSelections` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( rememberselections ) )
|
||||
( n = `resizable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( resizable ) )
|
||||
( n = `searchPlaceholder` v = searchplaceholder )
|
||||
( n = `showClearButton` v = z2ui5_cl_fw_utility=>get_json_boolean( showclearbutton ) )
|
||||
( n = `showClearButton` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showclearbutton ) )
|
||||
( n = `title` v = title )
|
||||
( n = `titleAlignment` v = titlealignment )
|
||||
( n = `items` v = items )
|
||||
|
@ -4029,7 +4029,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `cancel` v = cancel )
|
||||
( n = `liveChange` v = livechange )
|
||||
( n = `selectionChange` v = selectionchange )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ).
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -4046,7 +4046,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `endTime` v = endtime )
|
||||
( n = `type` v = type )
|
||||
( n = `title` v = title )
|
||||
( n = `showTitle` v = z2ui5_cl_fw_utility=>get_json_boolean( showtitle ) )
|
||||
( n = `showTitle` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showtitle ) )
|
||||
( n = `color` v = color ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -4067,10 +4067,10 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `rows` v = rows )
|
||||
( n = `height` v = height )
|
||||
( n = `width` v = width )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `id` v = id )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>get_json_boolean( growing ) )
|
||||
( n = `growing` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( growing ) )
|
||||
( n = `growingMaxLines` v = growingmaxlines ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -4100,7 +4100,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `TimePicker`
|
||||
t_prop = VALUE #( ( n = `value` v = value )
|
||||
( n = `placeholder` v = placeholder )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `valueState` v = valuestate )
|
||||
( n = `displayFormat` v = displayformat )
|
||||
( n = `valueFormat` v = valueformat ) ) ).
|
||||
|
@ -4114,7 +4114,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( ns = ns
|
||||
name = lv_name
|
||||
t_prop = VALUE #( ( n = `text` v = text )
|
||||
( n = `wrapping` v = z2ui5_cl_fw_utility=>get_json_boolean( wrapping ) )
|
||||
( n = `wrapping` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( wrapping ) )
|
||||
( n = `level` v = level ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -4125,7 +4125,7 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
_generic( name = `ToggleButton`
|
||||
t_prop = VALUE #( ( n = `press` v = press )
|
||||
( n = `text` v = text )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `icon` v = icon )
|
||||
( n = `type` v = type )
|
||||
( n = `class` v = class ) ) ).
|
||||
|
@ -4193,8 +4193,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `footerText` v = footertext )
|
||||
( n = `mode` v = mode )
|
||||
( n = `width` v = width )
|
||||
( n = `includeItemInSelection` v = z2ui5_cl_fw_utility=>get_json_boolean( includeiteminselection ) )
|
||||
( n = `inset` v = z2ui5_cl_fw_utility=>get_json_boolean( inset ) )
|
||||
( n = `includeItemInSelection` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( includeiteminselection ) )
|
||||
( n = `inset` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( inset ) )
|
||||
) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -4297,12 +4297,12 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
ns = `table`
|
||||
t_prop = VALUE #(
|
||||
( n = `rows` v = rows )
|
||||
( n = `alternateRowColors` v = z2ui5_cl_fw_utility=>get_json_boolean( alternaterowcolors ) )
|
||||
( n = `alternateRowColors` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( alternaterowcolors ) )
|
||||
( n = `columnHeaderVisible` v = columnheadervisible )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>get_json_boolean( editable ) )
|
||||
( n = `enableCellFilter` v = z2ui5_cl_fw_utility=>get_json_boolean( enablecellfilter ) )
|
||||
( n = `enableGrouping` v = z2ui5_cl_fw_utility=>get_json_boolean( enablegrouping ) )
|
||||
( n = `senableSelectAll` v = z2ui5_cl_fw_utility=>get_json_boolean( enableselectall ) )
|
||||
( n = `editable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( editable ) )
|
||||
( n = `enableCellFilter` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enablecellfilter ) )
|
||||
( n = `enableGrouping` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enablegrouping ) )
|
||||
( n = `senableSelectAll` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enableselectall ) )
|
||||
( n = `firstVisibleRow` v = firstvisiblerow )
|
||||
( n = `fixedBottomRowCount` v = fixedbottomrowcount )
|
||||
( n = `fixedColumnCount` v = fixedcolumncount )
|
||||
|
@ -4313,8 +4313,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `rowHeight` v = rowheight )
|
||||
( n = `selectedIndex` v = selectedindex )
|
||||
( n = `selectionMode` v = selectionmode )
|
||||
( n = `showColumnVisibilityMenu` v = z2ui5_cl_fw_utility=>get_json_boolean( showcolumnvisibilitymenu ) )
|
||||
( n = `showNoData` v = z2ui5_cl_fw_utility=>get_json_boolean( shownodata ) )
|
||||
( n = `showColumnVisibilityMenu` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showcolumnvisibilitymenu ) )
|
||||
( n = `showNoData` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( shownodata ) )
|
||||
( n = `threshold` v = threshold )
|
||||
( n = `visibleRowCount` v = visiblerowcount )
|
||||
( n = `visibleRowCountMode` v = visiblerowcountmode )
|
||||
|
@ -4341,28 +4341,28 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
result = _generic( name = `VariantItem`
|
||||
ns = `vm`
|
||||
t_prop = VALUE #( ( n = `executeOnSelection` v = z2ui5_cl_fw_utility=>get_json_boolean( executeOnSelection ) )
|
||||
( n = `global` v = z2ui5_cl_fw_utility=>get_json_boolean( global ) )
|
||||
( n = `labelReadOnly` v = z2ui5_cl_fw_utility=>get_json_boolean( labelReadOnly ) )
|
||||
t_prop = VALUE #( ( n = `executeOnSelection` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( executeOnSelection ) )
|
||||
( n = `global` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( global ) )
|
||||
( n = `labelReadOnly` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( labelReadOnly ) )
|
||||
( n = `lifecyclePackage` v = lifecyclePackage )
|
||||
( n = `lifecycleTransportId` v = lifecycleTransportId )
|
||||
( n = `namespace` v = namespace )
|
||||
( n = `readOnly` v = readOnly )
|
||||
( n = `executeOnSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( executeOnSelect ) )
|
||||
( n = `executeOnSelect` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( executeOnSelect ) )
|
||||
( n = `author` v = author )
|
||||
( n = `changeable` v = z2ui5_cl_fw_utility=>get_json_boolean( changeable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `favorite` v = z2ui5_cl_fw_utility=>get_json_boolean( favorite ) )
|
||||
( n = `changeable` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( changeable ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `favorite` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( favorite ) )
|
||||
( n = `key` v = key )
|
||||
( n = `text` v = text )
|
||||
( n = `title` v = title )
|
||||
( n = `textDirection` v = textDirection )
|
||||
( n = `originalTitle` v = originalTitle )
|
||||
( n = `originalExecuteOnSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( originalExecuteOnSelect ) )
|
||||
( n = `remove` v = z2ui5_cl_fw_utility=>get_json_boolean( remove ) )
|
||||
( n = `rename` v = z2ui5_cl_fw_utility=>get_json_boolean( rename ) )
|
||||
( n = `originalFavorite` v = z2ui5_cl_fw_utility=>get_json_boolean( originalFavorite ) )
|
||||
( n = `sharing` v = z2ui5_cl_fw_utility=>get_json_boolean( sharing ) )
|
||||
( n = `originalExecuteOnSelect` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( originalExecuteOnSelect ) )
|
||||
( n = `remove` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( remove ) )
|
||||
( n = `rename` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( rename ) )
|
||||
( n = `originalFavorite` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( originalFavorite ) )
|
||||
( n = `sharing` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( sharing ) )
|
||||
( n = `change` v = change ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -4381,24 +4381,24 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
result = _generic( name = `VariantManagement`
|
||||
ns = `vm`
|
||||
t_prop = VALUE #( ( n = `defaultVariantKey` v = defaultVariantKey )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
( n = `inErrorState` v = z2ui5_cl_fw_utility=>get_json_boolean( inErrorState ) )
|
||||
( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `inErrorState` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( inErrorState ) )
|
||||
( n = `initialSelectionKey` v = initialSelectionKey )
|
||||
( n = `lifecycleSupport` v = z2ui5_cl_fw_utility=>get_json_boolean( lifecycleSupport ) )
|
||||
( n = `lifecycleSupport` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( lifecycleSupport ) )
|
||||
( n = `selectionKey` v = selectionKey )
|
||||
( n = `showCreateTile` v = z2ui5_cl_fw_utility=>get_json_boolean( showCreateTile ) )
|
||||
( n = `showExecuteOnSelection` v = z2ui5_cl_fw_utility=>get_json_boolean( showExecuteOnSelection ) )
|
||||
( n = `showSetAsDefault` v = z2ui5_cl_fw_utility=>get_json_boolean( showSetAsDefault ) )
|
||||
( n = `showShare` v = z2ui5_cl_fw_utility=>get_json_boolean( showShare ) )
|
||||
( n = `showCreateTile` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showCreateTile ) )
|
||||
( n = `showExecuteOnSelection` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showExecuteOnSelection ) )
|
||||
( n = `showSetAsDefault` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showSetAsDefault ) )
|
||||
( n = `showShare` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( showShare ) )
|
||||
( n = `standardItemAuthor` v = standardItemAuthor )
|
||||
( n = `standardItemText` v = standardItemText )
|
||||
( n = `useFavorites` v = z2ui5_cl_fw_utility=>get_json_boolean( useFavorites ) )
|
||||
( n = `useFavorites` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( useFavorites ) )
|
||||
( n = `variantItems` v = variantItems )
|
||||
( n = `manage` v = manage )
|
||||
( n = `save` v = save )
|
||||
( n = `select` v = select )
|
||||
( n = `variantCreationByUserAllowed` v = uservarcreate )
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>get_json_boolean( visible ) ) ) ).
|
||||
( n = `visible` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( visible ) ) ) ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -4436,8 +4436,8 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
( n = `reset` v = reset )
|
||||
( n = `resetFilters` v = resetFilters )
|
||||
( n = `filterSearchOperator` v = filterSearchOperator )
|
||||
( n = `groupDescending` v = z2ui5_cl_fw_utility=>get_json_boolean( groupDescending ) )
|
||||
( n = `sortDescending` v = z2ui5_cl_fw_utility=>get_json_boolean( sortDescending ) )
|
||||
( n = `groupDescending` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( groupDescending ) )
|
||||
( n = `sortDescending` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( sortDescending ) )
|
||||
( n = `title` v = title )
|
||||
( n = `selectedGroupItem` v = selectedGroupItem )
|
||||
( n = `selectedPresetFilterItem` v = selectedPresetFilterItem )
|
||||
|
@ -4453,20 +4453,20 @@ CLASS Z2UI5_CL_XML_VIEW IMPLEMENTATION.
|
|||
|
||||
METHOD view_settings_filter_item.
|
||||
result = _generic( name = `ViewSettingsFilterItem`
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `key` v = key )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) )
|
||||
( n = `text` v = text )
|
||||
( n = `textDirection` v = textDirection )
|
||||
( n = `multiSelect` v = z2ui5_cl_fw_utility=>get_json_boolean( multiSelect ) ) ) ).
|
||||
( n = `multiSelect` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( multiSelect ) ) ) ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD view_settings_item.
|
||||
result = _generic( name = `ViewSettingsItem`
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>get_json_boolean( enabled ) )
|
||||
t_prop = VALUE #( ( n = `enabled` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( enabled ) )
|
||||
( n = `key` v = key )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>get_json_boolean( selected ) )
|
||||
( n = `selected` v = z2ui5_cl_fw_utility=>boolean_abap_2_json( selected ) )
|
||||
( n = `text` v = text )
|
||||
( n = `textDirection` v = textDirection ) ) ).
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
CLASS ltcl_unit_test DEFINITION FINAL FOR TESTING
|
||||
DURATION MEDIUM
|
||||
RISK LEVEL harmless.
|
||||
RISK LEVEL DANGEROUS.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS test_create FOR TESTING RAISING cx_static_check.
|
||||
|
|
|
@ -55,7 +55,7 @@ INTERFACE z2ui5_if_client
|
|||
type TYPE string,
|
||||
message TYPE string,
|
||||
additionaltext TYPE string,
|
||||
aTargets TYPE string,
|
||||
atargets TYPE string,
|
||||
END OF ty_s_message_manager,
|
||||
ty_t_message_manager TYPE TABLE OF ty_s_message_manager WITH EMPTY KEY.
|
||||
|
||||
|
@ -177,6 +177,13 @@ INTERFACE z2ui5_if_client
|
|||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS _bind_local
|
||||
IMPORTING
|
||||
val TYPE data
|
||||
path TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING
|
||||
VALUE(result) TYPE string.
|
||||
|
||||
METHODS _event_client
|
||||
IMPORTING
|
||||
val TYPE clike
|
||||
|
|
Loading…
Reference in New Issue
Block a user