mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
119 lines
3.5 KiB
ABAP
119 lines
3.5 KiB
ABAP
"! Change transport system API
|
|
CLASS zcl_abapgit_cts_api DEFINITION
|
|
PUBLIC
|
|
FINAL
|
|
CREATE PRIVATE
|
|
GLOBAL FRIENDS zcl_abapgit_factory.
|
|
|
|
PUBLIC SECTION.
|
|
INTERFACES:
|
|
zif_abapgit_cts_api.
|
|
PROTECTED SECTION.
|
|
PRIVATE SECTION.
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS zcl_abapgit_cts_api IMPLEMENTATION.
|
|
METHOD zif_abapgit_cts_api~get_current_transport_for_obj.
|
|
DATA: lv_object_lockable TYPE abap_bool,
|
|
lv_locked TYPE abap_bool,
|
|
lv_transport_request TYPE trkorr,
|
|
lv_task TYPE trkorr,
|
|
lv_tr_object_name TYPE trobj_name.
|
|
|
|
lv_tr_object_name = iv_object_name.
|
|
|
|
CALL FUNCTION 'TR_CHECK_OBJECT_LOCK'
|
|
EXPORTING
|
|
wi_pgmid = iv_program_id
|
|
wi_object = iv_object_type
|
|
wi_objname = lv_tr_object_name
|
|
IMPORTING
|
|
we_lockable_object = lv_object_lockable
|
|
we_locked = lv_locked
|
|
we_lock_order = lv_transport_request
|
|
we_lock_task = lv_task
|
|
EXCEPTIONS
|
|
empty_key = 1
|
|
no_systemname = 2
|
|
no_systemtype = 3
|
|
unallowed_lock_order = 4
|
|
OTHERS = 5.
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise_t100( ).
|
|
ENDIF.
|
|
|
|
IF lv_locked = abap_false.
|
|
zcx_abapgit_exception=>raise( |Object { iv_program_id }-{ iv_object_type }-{ iv_object_name } is not locked| ).
|
|
ENDIF.
|
|
|
|
IF lv_object_lockable = abap_false.
|
|
zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ).
|
|
ENDIF.
|
|
|
|
IF lv_task IS NOT INITIAL AND lv_task <> lv_transport_request AND iv_resolve_task_to_request = abap_false.
|
|
rv_transport = lv_task.
|
|
ELSE.
|
|
rv_transport = lv_transport_request.
|
|
ENDIF.
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_cts_api~is_object_locked_in_transport.
|
|
DATA: ls_object_key TYPE e071,
|
|
lv_type_check_result TYPE c LENGTH 1,
|
|
ls_lock_key TYPE tlock_int,
|
|
lv_lock_flag TYPE c LENGTH 1.
|
|
|
|
ls_object_key-pgmid = iv_program_id.
|
|
ls_object_key-object = iv_object_type.
|
|
ls_object_key-obj_name = iv_object_name.
|
|
|
|
CALL FUNCTION 'TR_CHECK_TYPE'
|
|
EXPORTING
|
|
wi_e071 = ls_object_key
|
|
IMPORTING
|
|
pe_result = lv_type_check_result
|
|
we_lock_key = ls_lock_key.
|
|
|
|
IF lv_type_check_result <> 'L'.
|
|
zcx_abapgit_exception=>raise( |Object type { iv_program_id }-{ iv_object_type } not lockable| ).
|
|
ENDIF.
|
|
|
|
CALL FUNCTION 'TRINT_CHECK_LOCKS'
|
|
EXPORTING
|
|
wi_lock_key = ls_lock_key
|
|
IMPORTING
|
|
we_lockflag = lv_lock_flag
|
|
EXCEPTIONS
|
|
empty_key = 1
|
|
OTHERS = 2.
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( |TRINT_CHECK_LOCKS: { sy-subrc }| ).
|
|
ENDIF.
|
|
|
|
rv_locked = boolc( lv_lock_flag <> space ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_cts_api~is_object_type_lockable.
|
|
DATA: ls_object_key TYPE e071,
|
|
lv_type_check_result TYPE c LENGTH 1.
|
|
|
|
ls_object_key-pgmid = iv_program_id.
|
|
ls_object_key-object = iv_object_type.
|
|
ls_object_key-obj_name = '_'. " Dummy value #2071
|
|
|
|
CALL FUNCTION 'TR_CHECK_TYPE'
|
|
EXPORTING
|
|
wi_e071 = ls_object_key
|
|
IMPORTING
|
|
pe_result = lv_type_check_result.
|
|
|
|
rv_lockable = boolc( lv_type_check_result = 'L' ).
|
|
ENDMETHOD.
|
|
|
|
METHOD zif_abapgit_cts_api~is_chrec_possible_for_package.
|
|
rv_possible = zcl_abapgit_factory=>get_sap_package( iv_package )->are_changes_recorded_in_tr_req( ).
|
|
ENDMETHOD.
|
|
ENDCLASS.
|