abapGit/src/objects/zcl_abapgit_object_para.clas.abap
Marc Bernard b107457017
Clean-up unused_variables (#6564)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2023-10-25 10:23:47 -04:00

237 lines
5.9 KiB
ABAP

CLASS zcl_abapgit_object_para DEFINITION PUBLIC INHERITING FROM zcl_abapgit_objects_super FINAL.
PUBLIC SECTION.
INTERFACES zif_abapgit_object.
PROTECTED SECTION.
PRIVATE SECTION.
METHODS unlock
IMPORTING
!iv_paramid TYPE memoryid .
ENDCLASS.
CLASS zcl_abapgit_object_para IMPLEMENTATION.
METHOD unlock.
CALL FUNCTION 'RS_ACCESS_PERMISSION'
EXPORTING
mode = 'FREE'
object = iv_paramid
object_class = 'PARA'.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
* looks like "changed by user" is not stored in the database
rv_user = c_user_unknown.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
" We can't use FM RS_PARAMETER_DELETE because of the popup to confirm
"Therefore we have to reimplement most of the FMs logic
DATA lv_paramid TYPE tpara-paramid.
lv_paramid = ms_item-obj_name.
CALL FUNCTION 'RS_ACCESS_PERMISSION'
EXPORTING
global_lock = abap_true
language_upd_exit = 'RS_PARAMETER_LANGUAGE_EXIT' " Name FuBa for maintenance language change
object = lv_paramid
object_class = ms_item-obj_type
suppress_language_check = space
EXCEPTIONS
canceled_in_corr = 1
enqueued_by_user = 2
enqueue_system_failure = 3
illegal_parameter_values = 4
locked_by_author = 5
no_modify_permission = 6
no_show_permission = 7
permission_failure = 8
request_language_denied = 9
OTHERS = 10.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
SELECT COUNT(*) FROM cross
WHERE ( type = 'P' OR type = 'Q' ) AND name = lv_paramid.
IF sy-subrc = 0.
unlock( lv_paramid ).
zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ).
ELSE.
SELECT COUNT(*) FROM dd04l BYPASSING BUFFER
WHERE memoryid = lv_paramid
AND as4local = 'A'.
IF sy-subrc = 0.
unlock( lv_paramid ).
zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ).
ENDIF.
ENDIF.
unlock( lv_paramid ).
zcl_abapgit_factory=>get_cts_api( )->insert_transport_object(
iv_object = 'PARA'
iv_obj_name = lv_paramid
iv_package = iv_package
iv_language = mv_language
iv_mode = zif_abapgit_cts_api=>c_transport_mode-delete ).
DELETE FROM tpara WHERE paramid = lv_paramid.
DELETE FROM tparat WHERE paramid = lv_paramid.
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
EXPORTING
object = lv_paramid
operation = 'DELETE'
type = 'CR'.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
* see fm RS_PARAMETER_ADD and RS_PARAMETER_EDIT
DATA: lv_mode TYPE c LENGTH 1,
ls_tpara TYPE tpara,
ls_tparat TYPE tparat.
SELECT SINGLE * FROM tpara INTO ls_tpara
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
IF sy-subrc = 0.
lv_mode = 'M'.
ELSE.
lv_mode = 'I'.
ENDIF.
io_xml->read( EXPORTING iv_name = 'TPARA'
CHANGING cg_data = ls_tpara ).
CALL FUNCTION 'RS_CORR_INSERT'
EXPORTING
object = ms_item-obj_name
object_class = 'PARA'
mode = lv_mode
global_lock = abap_true
devclass = iv_package
master_language = mv_language
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.
MODIFY tpara FROM ls_tpara. "#EC CI_SUBRC
ASSERT sy-subrc = 0.
io_xml->read(
EXPORTING iv_name = 'TPARAT'
CHANGING cg_data = ls_tparat ).
MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lv_paramid TYPE tpara-paramid.
SELECT SINGLE paramid FROM tpara INTO lv_paramid
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD.
METHOD zif_abapgit_object~get_comparator.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_object~get_deserialize_order.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'EEUDB'
iv_argument = ms_item-obj_name
iv_prefix = 'PA' ).
ENDMETHOD.
METHOD zif_abapgit_object~jump.
" Covered by ZCL_ABAPGIT_OBJECTS=>JUMP
ENDMETHOD.
METHOD zif_abapgit_object~map_filename_to_object.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_object~map_object_to_filename.
RETURN.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: ls_tpara TYPE tpara,
ls_tparat TYPE tparat.
SELECT SINGLE * FROM tpara INTO ls_tpara
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
IF sy-subrc <> 0.
RETURN.
ENDIF.
SELECT SINGLE * FROM tparat INTO ls_tparat
WHERE paramid = ms_item-obj_name
AND sprache = mv_language. "#EC CI_GENBUFF "#EC CI_SUBRC
io_xml->add( iv_name = 'TPARA'
ig_data = ls_tpara ).
io_xml->add(
iv_name = 'TPARAT'
ig_data = ls_tparat ).
" Here only the original language is serialized,
" so it should be present for the moment. LXEs are just translations
ENDMETHOD.
ENDCLASS.