mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
TABL: Properly show inactive objects (#5303)
* TABL: Properly show inactive objects Current `is_active` check is insufficient for DDIC objects and can't detect "new" or "partically active" objects. Introduces a new `is_active_ddic` method in `zcl_abapgit_objects_super` which should be used by all DDIC types (follow-up). Ref #5294 * Update zcl_abapgit_objects.clas.abap * Update
This commit is contained in:
parent
ce31e33688
commit
ec9ff1a29f
|
@ -915,7 +915,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~is_active.
|
METHOD zif_abapgit_object~is_active.
|
||||||
rv_active = is_active( ).
|
rv_active = is_active_ddic( ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -935,6 +935,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
METHOD zif_abapgit_object~serialize.
|
METHOD zif_abapgit_object~serialize.
|
||||||
|
|
||||||
DATA: lv_name TYPE ddobjname,
|
DATA: lv_name TYPE ddobjname,
|
||||||
|
lv_state TYPE ddgotstate,
|
||||||
ls_dd02v TYPE dd02v,
|
ls_dd02v TYPE dd02v,
|
||||||
ls_dd09l TYPE dd09l,
|
ls_dd09l TYPE dd09l,
|
||||||
lt_dd03p TYPE ty_dd03p_tt,
|
lt_dd03p TYPE ty_dd03p_tt,
|
||||||
|
@ -961,6 +962,7 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
name = lv_name
|
name = lv_name
|
||||||
langu = mv_language
|
langu = mv_language
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
gotstate = lv_state
|
||||||
dd02v_wa = ls_dd02v
|
dd02v_wa = ls_dd02v
|
||||||
dd09l_wa = ls_dd09l
|
dd09l_wa = ls_dd09l
|
||||||
TABLES
|
TABLES
|
||||||
|
@ -978,8 +980,9 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
|
||||||
zcx_abapgit_exception=>raise( 'error from DDIF_TABL_GET' ).
|
zcx_abapgit_exception=>raise( 'error from DDIF_TABL_GET' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF ls_dd02v IS INITIAL.
|
" Check if any active version was returned
|
||||||
zcx_abapgit_exception=>raise( |No active version found for { ms_item-obj_type } { ms_item-obj_name }| ).
|
IF lv_state <> 'A'.
|
||||||
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
CLEAR: ls_dd02v-as4user,
|
CLEAR: ls_dd02v-as4user,
|
||||||
|
|
|
@ -1015,6 +1015,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
METHOD serialize.
|
METHOD serialize.
|
||||||
|
|
||||||
DATA: li_obj TYPE REF TO zif_abapgit_object,
|
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,
|
li_xml TYPE REF TO zif_abapgit_xml_output,
|
||||||
lo_files TYPE REF TO zcl_abapgit_objects_files,
|
lo_files TYPE REF TO zcl_abapgit_objects_files,
|
||||||
ls_i18n_params TYPE zif_abapgit_definitions=>ty_i18n_params.
|
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_xml->i18n_params( ls_i18n_params ).
|
||||||
|
|
||||||
|
TRY.
|
||||||
li_obj->serialize( li_xml ).
|
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.
|
IF lo_files->is_json_metadata( ) = abap_false.
|
||||||
lo_files->add_xml( ii_xml = li_xml
|
lo_files->add_xml( ii_xml = li_xml
|
||||||
|
|
|
@ -80,6 +80,11 @@ CLASS zcl_abapgit_objects_super DEFINITION
|
||||||
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
!ii_xml TYPE REF TO zif_abapgit_xml_input
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
METHODS is_active_ddic
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_active) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -281,6 +286,37 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD serialize_longtexts.
|
||||||
|
|
||||||
zcl_abapgit_factory=>get_longtexts( )->serialize(
|
zcl_abapgit_factory=>get_longtexts( )->serialize(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user