mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
parent
bf3e5df77e
commit
6bdb655435
256
src/objects/zcl_abapgit_object_avas.clas.abap
Normal file
256
src/objects/zcl_abapgit_object_avas.clas.abap
Normal file
|
@ -0,0 +1,256 @@
|
|||
CLASS zcl_abapgit_object_avas DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_objects_super
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_object .
|
||||
PROTECTED SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_header,
|
||||
guid TYPE guid_32,
|
||||
attribute TYPE cls_attribute_name,
|
||||
object TYPE pak_object_key,
|
||||
END OF ty_header .
|
||||
TYPES:
|
||||
BEGIN OF ty_avas,
|
||||
header TYPE ty_header,
|
||||
values TYPE cls_value_assignments,
|
||||
links TYPE cls_linked_objects,
|
||||
END OF ty_avas .
|
||||
|
||||
METHODS insert_assignments
|
||||
IMPORTING
|
||||
!is_avas TYPE ty_avas
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS insert_links
|
||||
IMPORTING
|
||||
!is_avas TYPE ty_avas .
|
||||
METHODS instantiate
|
||||
RETURNING
|
||||
VALUE(ro_avas) TYPE REF TO cl_cls_attr_value_assignment .
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_AVAS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD insert_assignments.
|
||||
|
||||
DATA: lt_assignment TYPE STANDARD TABLE OF cls_assignment,
|
||||
ls_assignment LIKE LINE OF lt_assignment,
|
||||
ls_value LIKE LINE OF is_avas-values.
|
||||
|
||||
|
||||
LOOP AT is_avas-values INTO ls_value.
|
||||
CLEAR ls_assignment.
|
||||
ls_assignment-guid = is_avas-header-guid.
|
||||
ls_assignment-value = ls_value-value.
|
||||
ls_assignment-trobjtype = is_avas-header-object-trobjtype.
|
||||
ls_assignment-sobj_name = is_avas-header-object-sobj_name.
|
||||
ls_assignment-object_type = is_avas-header-object-object_type.
|
||||
ls_assignment-sub_key = is_avas-header-object-sub_key.
|
||||
ls_assignment-attribute = is_avas-header-attribute.
|
||||
ls_assignment-set_by = sy-uname.
|
||||
ls_assignment-changed_on = sy-datum.
|
||||
ls_assignment-remark = ls_value-remark.
|
||||
APPEND ls_assignment TO lt_assignment.
|
||||
ENDLOOP.
|
||||
|
||||
DELETE FROM cls_assignment WHERE guid = is_avas-header-guid.
|
||||
|
||||
INSERT cls_assignment FROM TABLE lt_assignment.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error inserting into CLS_ASSIGNMENT| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_links.
|
||||
|
||||
* todo, how does links work?
|
||||
* LOOP AT ls_avas-links INTO ls_linked_obj.
|
||||
* ENDLOOP.
|
||||
|
||||
** DELETE FROM cls_linked_obj WHERE guid = ls_avas-header-guid.
|
||||
** INSERT cls_linked_obj FROM TABLE lt_linked.
|
||||
* if sy-subrc <> 0.
|
||||
* endif.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD instantiate.
|
||||
|
||||
DATA: lv_id TYPE guid_32.
|
||||
|
||||
|
||||
lv_id = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT ro_avas
|
||||
EXPORTING
|
||||
im_assignment_id = lv_id.
|
||||
CATCH cx_pak_wb_object_locked
|
||||
cx_pak_not_authorized
|
||||
cx_pak_invalid_state
|
||||
cx_pak_invalid_data.
|
||||
zcx_abapgit_exception=>raise( |AVAS error| ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
DATA: lo_avas TYPE REF TO cl_cls_attr_value_assignment.
|
||||
|
||||
|
||||
lo_avas = instantiate( ).
|
||||
|
||||
lo_avas->if_pak_wb_object~get_last_changed(
|
||||
IMPORTING
|
||||
ex_changed_by = rv_user ).
|
||||
|
||||
IF rv_user IS INITIAL.
|
||||
rv_user = c_user_unknown.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lo_avas TYPE REF TO cl_cls_attr_value_assignment.
|
||||
|
||||
|
||||
lo_avas = instantiate( ).
|
||||
|
||||
TRY.
|
||||
lo_avas->if_cls_attr_value_assignment~lock_and_refresh(
|
||||
im_allow_popups = abap_false ).
|
||||
CATCH cx_pak_invalid_state
|
||||
cx_pak_invalid_data
|
||||
cx_pak_not_authorized
|
||||
cx_pak_wb_object_locked.
|
||||
zcx_abapgit_exception=>raise( |AVAS error| ).
|
||||
ENDTRY.
|
||||
|
||||
lo_avas->if_pak_wb_object~delete( ).
|
||||
|
||||
lo_avas->if_pak_wb_object~save( ).
|
||||
|
||||
lo_avas->if_pak_wb_object_internal~unlock( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
|
||||
DATA: ls_avas TYPE ty_avas.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'AVAS'
|
||||
CHANGING cg_data = ls_avas ).
|
||||
|
||||
* The AVAS API cannot be used in this case, as it will always create a new GUID
|
||||
|
||||
ASSERT NOT ls_avas-header-guid IS INITIAL.
|
||||
|
||||
tadir_insert( iv_package ).
|
||||
|
||||
insert_assignments( ls_avas ).
|
||||
insert_links( ls_avas ).
|
||||
|
||||
* corr_insert?
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~exists.
|
||||
|
||||
DATA: lv_guid TYPE cls_assignment-guid.
|
||||
|
||||
SELECT SINGLE guid FROM cls_assignment INTO lv_guid
|
||||
WHERE guid = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~get_metadata.
|
||||
|
||||
rs_metadata = get_metadata( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
rv_is_locked = exists_a_lock_entry_for(
|
||||
iv_lock_object = 'CLS_ENQUEUE_STRU'
|
||||
iv_argument = |{ ms_item-obj_name }| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
|
||||
zcx_abapgit_exception=>raise( |Todo, AVAS jump| ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
DATA: lo_avas TYPE REF TO cl_cls_attr_value_assignment,
|
||||
ls_avas TYPE ty_avas.
|
||||
|
||||
FIELD-SYMBOLS: <ls_value> LIKE LINE OF ls_avas-values,
|
||||
<ls_link> LIKE LINE OF ls_avas-links.
|
||||
|
||||
|
||||
lo_avas = instantiate( ).
|
||||
|
||||
ls_avas-header-guid = lo_avas->if_cls_attr_value_assignment~get_guid( ).
|
||||
ls_avas-header-attribute = lo_avas->if_cls_attr_value_assignment~get_attribute( ).
|
||||
ls_avas-header-object = lo_avas->if_cls_attr_value_assignment~get_object( ).
|
||||
|
||||
lo_avas->if_cls_attr_value_assignment~get_values(
|
||||
IMPORTING
|
||||
ex_values = ls_avas-values ).
|
||||
|
||||
lo_avas->if_cls_attr_value_assignment~get_links(
|
||||
IMPORTING
|
||||
ex_links = ls_avas-links ).
|
||||
|
||||
LOOP AT ls_avas-values ASSIGNING <ls_value>.
|
||||
CLEAR: <ls_value>-set_by, <ls_value>-changed_on.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ls_avas-links ASSIGNING <ls_link>.
|
||||
CLEAR: <ls_link>-set_by, <ls_link>-changed_on.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add(
|
||||
iv_name = 'AVAS'
|
||||
ig_data = ls_avas ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
18
src/objects/zcl_abapgit_object_avas.clas.xml
Normal file
18
src/objects/zcl_abapgit_object_avas.clas.xml
Normal file
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OBJECT_AVAS</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>AVAS</DESCRIPT>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user