mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00

* abapOpenChecks config file
* Ignore SCI config folder
* checks revision
* Revert "checks revision"
This reverts commit 56a12289df
.
* Renaming non-constants
Pending:
* Remove SCI configuration
Co-authored-by: Lars Hvam <larshp@hotmail.com>
350 lines
9.3 KiB
ABAP
350 lines
9.3 KiB
ABAP
CLASS zcl_abapgit_objects_super DEFINITION PUBLIC ABSTRACT.
|
|
|
|
PUBLIC SECTION.
|
|
|
|
METHODS:
|
|
constructor
|
|
IMPORTING
|
|
is_item TYPE zif_abapgit_definitions=>ty_item
|
|
iv_language TYPE spras.
|
|
|
|
CLASS-METHODS:
|
|
jump_adt
|
|
IMPORTING iv_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name
|
|
iv_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type
|
|
iv_sub_obj_name TYPE zif_abapgit_definitions=>ty_item-obj_name OPTIONAL
|
|
iv_sub_obj_type TYPE zif_abapgit_definitions=>ty_item-obj_type OPTIONAL
|
|
iv_line_number TYPE i OPTIONAL
|
|
RAISING zcx_abapgit_exception.
|
|
|
|
CONSTANTS: c_user_unknown TYPE xubname VALUE 'UNKNOWN'.
|
|
|
|
PROTECTED SECTION.
|
|
|
|
DATA ms_item TYPE zif_abapgit_definitions=>ty_item .
|
|
DATA mv_language TYPE spras .
|
|
|
|
METHODS check_timestamp
|
|
IMPORTING
|
|
!iv_timestamp TYPE timestamp
|
|
!iv_date TYPE d
|
|
!iv_time TYPE t
|
|
RETURNING
|
|
VALUE(rv_changed) TYPE abap_bool .
|
|
METHODS get_metadata
|
|
RETURNING
|
|
VALUE(rs_metadata) TYPE zif_abapgit_definitions=>ty_metadata .
|
|
METHODS corr_insert
|
|
IMPORTING
|
|
!iv_package TYPE devclass
|
|
!ig_object_class TYPE any OPTIONAL
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS tadir_insert
|
|
IMPORTING
|
|
!iv_package TYPE devclass
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS jump_se11
|
|
IMPORTING
|
|
!iv_radio TYPE string
|
|
!iv_field TYPE string
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS exists_a_lock_entry_for
|
|
IMPORTING
|
|
!iv_lock_object TYPE string
|
|
!iv_argument TYPE seqg3-garg OPTIONAL
|
|
RETURNING
|
|
VALUE(rv_exists_a_lock_entry) TYPE abap_bool
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS set_default_package
|
|
IMPORTING
|
|
!iv_package TYPE devclass .
|
|
METHODS serialize_longtexts
|
|
IMPORTING
|
|
!io_xml TYPE REF TO zcl_abapgit_xml_output
|
|
!iv_longtext_id TYPE dokil-id OPTIONAL
|
|
!it_dokil TYPE zif_abapgit_definitions=>tty_dokil OPTIONAL
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS deserialize_longtexts
|
|
IMPORTING
|
|
!io_xml TYPE REF TO zcl_abapgit_xml_input
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS delete_longtexts
|
|
IMPORTING
|
|
!iv_longtext_id TYPE dokil-id
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
METHODS is_active
|
|
RETURNING
|
|
VALUE(rv_active) TYPE abap_bool
|
|
RAISING
|
|
zcx_abapgit_exception .
|
|
|
|
PRIVATE SECTION.
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
|
|
|
|
|
|
METHOD check_timestamp.
|
|
|
|
DATA: lv_ts TYPE timestamp.
|
|
|
|
IF sy-subrc = 0 AND iv_date IS NOT INITIAL AND iv_time IS NOT INITIAL.
|
|
cl_abap_tstmp=>systemtstmp_syst2utc(
|
|
EXPORTING syst_date = iv_date
|
|
syst_time = iv_time
|
|
IMPORTING utc_tstmp = lv_ts ).
|
|
IF lv_ts < iv_timestamp.
|
|
rv_changed = abap_false. " Unchanged
|
|
ELSE.
|
|
rv_changed = abap_true.
|
|
ENDIF.
|
|
ELSE. " Not found? => changed
|
|
rv_changed = abap_true.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD constructor.
|
|
ms_item = is_item.
|
|
ASSERT NOT ms_item IS INITIAL.
|
|
mv_language = iv_language.
|
|
ASSERT NOT mv_language IS INITIAL.
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD corr_insert.
|
|
|
|
DATA: lv_object TYPE string,
|
|
lv_object_class TYPE string.
|
|
|
|
IF ig_object_class IS NOT INITIAL.
|
|
lv_object_class = ig_object_class.
|
|
IF ig_object_class = 'DICT'.
|
|
CONCATENATE ms_item-obj_type ms_item-obj_name INTO lv_object.
|
|
ELSE.
|
|
lv_object = ms_item-obj_name.
|
|
ENDIF.
|
|
ELSE.
|
|
lv_object_class = ms_item-obj_type.
|
|
lv_object = ms_item-obj_name.
|
|
ENDIF.
|
|
|
|
CALL FUNCTION 'RS_CORR_INSERT'
|
|
EXPORTING
|
|
object = lv_object
|
|
object_class = lv_object_class
|
|
devclass = iv_package
|
|
master_language = mv_language
|
|
global_lock = abap_true
|
|
mode = 'I'
|
|
suppress_dialog = abap_true
|
|
EXCEPTIONS
|
|
cancelled = 1
|
|
permission_failure = 2
|
|
unknown_objectclass = 3
|
|
OTHERS = 4.
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD delete_longtexts.
|
|
|
|
zcl_abapgit_factory=>get_longtexts( )->delete(
|
|
iv_longtext_id = iv_longtext_id
|
|
iv_object_name = ms_item-obj_name ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD deserialize_longtexts.
|
|
|
|
zcl_abapgit_factory=>get_longtexts( )->deserialize(
|
|
io_xml = io_xml
|
|
iv_master_language = mv_language ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD exists_a_lock_entry_for.
|
|
|
|
DATA: lt_lock_entries TYPE STANDARD TABLE OF seqg3.
|
|
|
|
CALL FUNCTION 'ENQUEUE_READ'
|
|
EXPORTING
|
|
guname = '*'
|
|
garg = iv_argument
|
|
TABLES
|
|
enq = lt_lock_entries
|
|
EXCEPTIONS
|
|
communication_failure = 1
|
|
system_failure = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
READ TABLE lt_lock_entries TRANSPORTING NO FIELDS
|
|
WITH KEY gobj = iv_lock_object.
|
|
IF sy-subrc = 0.
|
|
rv_exists_a_lock_entry = abap_true.
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_metadata.
|
|
|
|
DATA: lv_class TYPE string.
|
|
|
|
lv_class = cl_abap_classdescr=>describe_by_object_ref( me )->get_relative_name( ).
|
|
|
|
REPLACE FIRST OCCURRENCE OF 'ZCL_ABAPGIT' IN lv_class WITH 'LCL'.
|
|
|
|
rs_metadata-class = lv_class.
|
|
rs_metadata-version = 'v1.0.0' ##no_text.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD is_active.
|
|
|
|
DATA: lt_messages TYPE STANDARD TABLE OF sprot_u WITH DEFAULT KEY,
|
|
lt_e071_tadirs TYPE STANDARD TABLE OF e071 WITH DEFAULT KEY,
|
|
ls_e071_tadir LIKE LINE OF lt_e071_tadirs.
|
|
|
|
ms_item-inactive = abap_false.
|
|
|
|
ls_e071_tadir-object = ms_item-obj_type.
|
|
ls_e071_tadir-obj_name = ms_item-obj_name.
|
|
INSERT ls_e071_tadir INTO TABLE lt_e071_tadirs.
|
|
|
|
CALL FUNCTION 'RS_INACTIVE_OBJECTS_WARNING'
|
|
EXPORTING
|
|
suppress_protocol = abap_false
|
|
with_program_includes = abap_false
|
|
suppress_dictionary_check = abap_false
|
|
TABLES
|
|
p_e071 = lt_e071_tadirs
|
|
p_xmsg = lt_messages.
|
|
|
|
IF lt_messages IS NOT INITIAL.
|
|
ms_item-inactive = abap_true.
|
|
ENDIF.
|
|
|
|
rv_active = boolc( ms_item-inactive = abap_false ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD jump_adt.
|
|
|
|
DATA: lv_adt_link TYPE string,
|
|
lx_error TYPE REF TO cx_root.
|
|
|
|
TRY.
|
|
|
|
lv_adt_link = zcl_abapgit_adt_link=>generate(
|
|
iv_obj_name = iv_obj_name
|
|
iv_obj_type = iv_obj_type
|
|
iv_sub_obj_name = iv_sub_obj_name
|
|
iv_line_number = iv_line_number ).
|
|
|
|
cl_gui_frontend_services=>execute(
|
|
EXPORTING document = lv_adt_link
|
|
EXCEPTIONS OTHERS = 1 ).
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |ADT Jump Error - failed to open link { lv_adt_link }. Subrc={ sy-subrc }| ).
|
|
ENDIF.
|
|
|
|
CATCH cx_root INTO lx_error.
|
|
zcx_abapgit_exception=>raise( iv_text = 'ADT Jump Error' ix_previous = lx_error ).
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD jump_se11.
|
|
|
|
CALL FUNCTION 'RS_TOOL_ACCESS'
|
|
EXPORTING
|
|
operation = 'SHOW'
|
|
object_name = ms_item-obj_name
|
|
object_type = ms_item-obj_type
|
|
devclass = ms_item-devclass
|
|
in_new_window = abap_true
|
|
EXCEPTIONS
|
|
not_executed = 1
|
|
invalid_object_type = 2
|
|
OTHERS = 3.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |Jump to SE11 failed (subrc={ sy-subrc } ).| ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD serialize_longtexts.
|
|
|
|
zcl_abapgit_factory=>get_longtexts( )->serialize(
|
|
iv_object_name = ms_item-obj_name
|
|
iv_longtext_id = iv_longtext_id
|
|
it_dokil = it_dokil
|
|
io_xml = io_xml ).
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD set_default_package.
|
|
|
|
" In certain cases we need to set the package package via ABAP memory
|
|
" because we can't supply it via the APIs.
|
|
"
|
|
" Set default package, see function module RS_CORR_INSERT FORM get_current_devclass.
|
|
"
|
|
" We use ABAP memory instead the SET parameter because it is
|
|
" more reliable. SET parameter doesn't work when multiple objects
|
|
" are deserialized which uses the ABAP memory mechanism.
|
|
" We don't need to reset the memory as it is done in above mentioned form routine.
|
|
|
|
EXPORT current_devclass FROM iv_package TO MEMORY ID 'EUK'.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD tadir_insert.
|
|
|
|
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
|
EXPORTING
|
|
wi_test_modus = abap_false
|
|
wi_tadir_pgmid = 'R3TR'
|
|
wi_tadir_object = ms_item-obj_type
|
|
wi_tadir_obj_name = ms_item-obj_name
|
|
wi_tadir_author = sy-uname
|
|
wi_tadir_devclass = iv_package
|
|
wi_tadir_masterlang = mv_language
|
|
iv_delflag = abap_false
|
|
EXCEPTIONS
|
|
OTHERS = 1.
|
|
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |Error from TR_TADIR_INTERFACE (subrc={ sy-subrc } ).| ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
ENDCLASS.
|