abapGit/src/objects/zcl_abapgit_object_stvi.clas.abap

220 lines
5.3 KiB
ABAP

CLASS zcl_abapgit_object_stvi DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_objects_super
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES zif_abapgit_object .
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_transaction_variant,
shdtvciu TYPE shdtvciu,
shdttciu TYPE STANDARD TABLE OF shdttciu WITH DEFAULT KEY,
shdfvguicu TYPE STANDARD TABLE OF shdfvguicu WITH DEFAULT KEY,
shdtvsvciu TYPE STANDARD TABLE OF shdtvsvciu WITH DEFAULT KEY,
END OF ty_transaction_variant.
ENDCLASS.
CLASS zcl_abapgit_object_stvi IMPLEMENTATION.
METHOD zif_abapgit_object~changed_by.
DATA: lv_transaction_variant TYPE utcvariant.
lv_transaction_variant = ms_item-obj_name.
SELECT SINGLE chuser
FROM shdtvciu
INTO rv_user
WHERE tcvariant = lv_transaction_variant.
IF sy-subrc <> 0
OR rv_user IS INITIAL.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_transaction_variant TYPE tcvariant.
lv_transaction_variant = ms_item-obj_name.
CALL FUNCTION 'RS_HDSYS_DELETE_VARIANT'
EXPORTING
tcvariant = lv_transaction_variant
i_flag_client_independent = abap_true
EXCEPTIONS
variant_enqueued = 1
no_correction = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: ls_transaction_variant TYPE ty_transaction_variant.
io_xml->read(
EXPORTING
iv_name = 'STVI'
CHANGING
cg_data = ls_transaction_variant ).
CALL FUNCTION 'ENQUEUE_ESTCVARCIU'
EXPORTING
tcvariant = ls_transaction_variant-shdtvciu-tcvariant
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
MESSAGE e413(ms) WITH ls_transaction_variant-shdtvciu-tcvariant INTO zcx_abapgit_exception=>null.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
corr_insert( iv_package ).
* Populate user details
ls_transaction_variant-shdtvciu-crdate = sy-datum.
ls_transaction_variant-shdtvciu-cruser = sy-uname.
ls_transaction_variant-shdtvciu-chdate = sy-datum.
ls_transaction_variant-shdtvciu-chuser = sy-uname.
MODIFY shdtvciu FROM ls_transaction_variant-shdtvciu.
MODIFY shdttciu FROM TABLE ls_transaction_variant-shdttciu[].
INSERT shdfvguicu FROM TABLE ls_transaction_variant-shdfvguicu[] ACCEPTING DUPLICATE KEYS.
INSERT shdtvsvciu FROM TABLE ls_transaction_variant-shdtvsvciu[] ACCEPTING DUPLICATE KEYS.
CALL FUNCTION 'DEQUEUE_ESTCVARCIU'
EXPORTING
tcvariant = ls_transaction_variant-shdtvciu-tcvariant.
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lv_transaction_variant TYPE tcvariant.
lv_transaction_variant = ms_item-obj_name.
CALL FUNCTION 'RS_HDSYS_EXIST_CHECK_VARIANT'
EXPORTING
tcvariant = lv_transaction_variant
i_flag_client_independent = abap_true
EXCEPTIONS
no_variant = 1
OTHERS = 2.
IF sy-subrc = 0.
rv_bool = abap_true.
ENDIF.
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-abap 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 = abap_false.
ENDMETHOD.
METHOD zif_abapgit_object~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_transaction_variant TYPE ty_transaction_variant.
ls_transaction_variant-shdtvciu-tcvariant = ms_item-obj_name.
CALL FUNCTION 'RS_HDSYS_READ_TC_VARIANT_DB'
EXPORTING
tcvariant = ls_transaction_variant-shdtvciu-tcvariant
flag_client_independent = abap_true
IMPORTING
header_tcvariant = ls_transaction_variant-shdtvciu
TABLES
screen_variants = ls_transaction_variant-shdtvsvciu[]
inactive_functions = ls_transaction_variant-shdfvguicu[]
EXCEPTIONS
no_variant = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
SORT ls_transaction_variant-shdtvsvciu ASCENDING.
SORT ls_transaction_variant-shdfvguicu ASCENDING.
* Clear all user details
CLEAR: ls_transaction_variant-shdtvciu-crdate,
ls_transaction_variant-shdtvciu-cruser,
ls_transaction_variant-shdtvciu-chdate,
ls_transaction_variant-shdtvciu-chuser.
SELECT *
FROM shdttciu
INTO TABLE ls_transaction_variant-shdttciu[]
WHERE tcvariant = ls_transaction_variant-shdtvciu-tcvariant
ORDER BY PRIMARY KEY.
io_xml->add( iv_name = 'STVI'
ig_data = ls_transaction_variant ).
ENDMETHOD.
ENDCLASS.