diff --git a/src/objects/zcl_abapgit_object_tabl.clas.abap b/src/objects/zcl_abapgit_object_tabl.clas.abap index 6c13a9e6b..bd2b76b29 100644 --- a/src/objects/zcl_abapgit_object_tabl.clas.abap +++ b/src/objects/zcl_abapgit_object_tabl.clas.abap @@ -915,7 +915,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION. METHOD zif_abapgit_object~is_active. - rv_active = is_active( ). + rv_active = is_active_ddic( ). ENDMETHOD. @@ -935,6 +935,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION. METHOD zif_abapgit_object~serialize. DATA: lv_name TYPE ddobjname, + lv_state TYPE ddgotstate, ls_dd02v TYPE dd02v, ls_dd09l TYPE dd09l, lt_dd03p TYPE ty_dd03p_tt, @@ -961,6 +962,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION. name = lv_name langu = mv_language IMPORTING + gotstate = lv_state dd02v_wa = ls_dd02v dd09l_wa = ls_dd09l TABLES @@ -978,8 +980,9 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION. zcx_abapgit_exception=>raise( 'error from DDIF_TABL_GET' ). ENDIF. - IF ls_dd02v IS INITIAL. - zcx_abapgit_exception=>raise( |No active version found for { ms_item-obj_type } { ms_item-obj_name }| ). + " Check if any active version was returned + IF lv_state <> 'A'. + RETURN. ENDIF. CLEAR: ls_dd02v-as4user, diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index 7412c5851..77707f00f 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -1015,6 +1015,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. METHOD serialize. DATA: li_obj TYPE REF TO zif_abapgit_object, + lx_error TYPE REF TO zcx_abapgit_exception, li_xml TYPE REF TO zif_abapgit_xml_output, lo_files TYPE REF TO zcl_abapgit_objects_files, ls_i18n_params TYPE zif_abapgit_definitions=>ty_i18n_params. @@ -1046,7 +1047,12 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. li_xml->i18n_params( ls_i18n_params ). - li_obj->serialize( li_xml ). + TRY. + li_obj->serialize( li_xml ). + CATCH zcx_abapgit_exception INTO lx_error. + rs_files_and_item-item-inactive = boolc( li_obj->is_active( ) = abap_false ). + RAISE EXCEPTION lx_error. + ENDTRY. IF lo_files->is_json_metadata( ) = abap_false. lo_files->add_xml( ii_xml = li_xml diff --git a/src/objects/zcl_abapgit_objects_super.clas.abap b/src/objects/zcl_abapgit_objects_super.clas.abap index 24800dd82..93ddf6067 100644 --- a/src/objects/zcl_abapgit_objects_super.clas.abap +++ b/src/objects/zcl_abapgit_objects_super.clas.abap @@ -80,6 +80,11 @@ CLASS zcl_abapgit_objects_super DEFINITION !ii_xml TYPE REF TO zif_abapgit_xml_input RAISING zcx_abapgit_exception . + METHODS is_active_ddic + RETURNING + VALUE(rv_active) TYPE abap_bool + RAISING + zcx_abapgit_exception . PRIVATE SECTION. ENDCLASS. @@ -281,6 +286,37 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION. ENDMETHOD. + METHOD is_active_ddic. + + DATA: + lv_type TYPE ddobjtyp, + lv_name TYPE ddobjname, + lv_state TYPE ddgotstate. + + ms_item-inactive = abap_false. + + lv_type = ms_item-obj_type. + lv_name = ms_item-obj_name. + + CALL FUNCTION 'DDIF_STATE_GET' + EXPORTING + type = lv_type + name = lv_name + state = 'A' + IMPORTING + gotstate = lv_state + EXCEPTIONS + illegal_input = 1 + OTHERS = 2. + IF sy-subrc <> 0 OR lv_state <> 'A'. + ms_item-inactive = abap_true. + ENDIF. + + rv_active = boolc( ms_item-inactive = abap_false ). + + ENDMETHOD. + + METHOD serialize_longtexts. zcl_abapgit_factory=>get_longtexts( )->serialize(