diff --git a/src/00/z2ui5_cl_fw_binding.clas.abap b/src/00/z2ui5_cl_fw_binding.clas.abap index bd87a5ec..1582032a 100644 --- a/src/00/z2ui5_cl_fw_binding.clas.abap +++ b/src/00/z2ui5_cl_fw_binding.clas.abap @@ -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 TYPE any. ASSIGN mr_data->* TO . - 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. diff --git a/src/00/z2ui5_cl_fw_db.clas.abap b/src/00/z2ui5_cl_fw_db.clas.abap index 70ef2281..14e71235 100644 --- a/src/00/z2ui5_cl_fw_db.clas.abap +++ b/src/00/z2ui5_cl_fw_db.clas.abap @@ -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 TYPE any. - FIELD-SYMBOLS TYPE any. ASSIGN (lv_assign) TO . - ASSIGN ->* TO . + IF sy-subrc <> 0. + CONTINUE. + ENDIF. - lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_xml_get_by_data( ). - CLEAR . + lr_attri->data_rtti = z2ui5_cl_fw_utility=>rtti_xml_get_by_data( ). CLEAR . - ENDLOOP. result = z2ui5_cl_fw_utility=>trans_xml_any_2( ls_db ).