binding fixes (#513)

* small adjustments

* update binding

* bugfix binding
This commit is contained in:
oblomov 2023-08-28 15:56:03 +02:00 committed by GitHub
parent c8df128bbc
commit 038ab40b94
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 14 deletions

View File

@ -59,12 +59,18 @@ CLASS z2ui5_cl_fw_binding DEFINITION
RETURNING
VALUE(result) TYPE ty_t_attri.
CLASS-DATA sv_uuid TYPE i.
PROTECTED SECTION.
METHODS bind_local
RETURNING
VALUE(result) TYPE string.
METHODS get_uuid
RETURNING
VALUE(result) TYPE string.
METHODS get_t_attri_by_dref
IMPORTING
val TYPE clike
@ -80,8 +86,8 @@ CLASS z2ui5_cl_fw_binding DEFINITION
METHODS get_t_attri_by_oref
IMPORTING
val TYPE clike OPTIONAL
check_temp type abap_bool DEFAULT abap_false
PREFERRED PARAMETER val
check_temp TYPE abap_bool DEFAULT abap_false
PREFERRED PARAMETER val
RETURNING
VALUE(result) TYPE ty_t_attri.
@ -168,8 +174,8 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
* 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.
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.
@ -287,12 +293,19 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
ENDMETHOD.
METHOD get_uuid.
sv_uuid = sv_uuid + 1.
result = z2ui5_cl_fw_utility=>c_trim( CONV string( sv_uuid ) ).
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( ).
DATA(lv_id) = get_uuid( ).
"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 )
@ -328,7 +341,8 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
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( ).
* bind->name_front = z2ui5_cl_fw_utility=>func_get_uuid_22( ).
bind->name_front = get_uuid( ).
result = COND #( WHEN mv_type = cs_bind_type-two_way THEN `/` && cv_model_edit_name && `/` ELSE `/` ) && bind->name_front.
ENDIF.
@ -371,8 +385,8 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
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
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.
@ -396,9 +410,15 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
DATA(lt_attri) = get_t_attri_by_dref( lr_bind->name ).
lr_bind->check_dissolved = abap_true.
IF lt_attri IS INITIAL.
CONTINUE.
ENDIF.
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
ENDLOOP.
IF lt_attri IS INITIAL.
RETURN.
ENDIF.
set_attri_ready( REF #( lt_dissolve ) ).
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.
@ -439,6 +459,9 @@ CLASS z2ui5_cl_fw_binding IMPLEMENTATION.
INSERT LINES OF lt_attri INTO TABLE lt_dissolve.
ENDLOOP.
IF lt_attri IS INITIAL.
RETURN.
ENDIF.
set_attri_ready( REF #( lt_dissolve ) ).
INSERT LINES OF lt_dissolve INTO TABLE mt_attri.

View File

@ -176,16 +176,15 @@ CLASS z2ui5_cl_fw_db IMPLEMENTATION.
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.
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>.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_xml_get_by_data( <deref_attri> ).
CLEAR <deref_attri>.
lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_xml_get_by_data( <attri> ).
CLEAR <attri>.
ENDLOOP.
result = z2ui5_cl_fw_utility=>trans_xml_any_2( ls_db ).