mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
commit
b071d6e837
249
src/objects/zcl_abapgit_object_char.clas.abap
Normal file
249
src/objects/zcl_abapgit_object_char.clas.abap
Normal file
|
@ -0,0 +1,249 @@
|
|||
CLASS zcl_abapgit_object_char DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_objects_super
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES zif_abapgit_object .
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_char,
|
||||
cls_attribute TYPE cls_attribute,
|
||||
cls_attributet TYPE STANDARD TABLE OF cls_attributet WITH DEFAULT KEY,
|
||||
cls_attr_value TYPE STANDARD TABLE OF cls_attr_value WITH DEFAULT KEY,
|
||||
cls_attr_valuet TYPE STANDARD TABLE OF cls_attr_valuet WITH DEFAULT KEY,
|
||||
END OF ty_char .
|
||||
|
||||
METHODS instantiate_char
|
||||
IMPORTING
|
||||
!iv_type_group TYPE cls_object_type_group
|
||||
RETURNING
|
||||
VALUE(ro_char) TYPE REF TO cl_cls_attribute
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_CHAR IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD instantiate_char.
|
||||
|
||||
DATA: lv_new TYPE abap_bool,
|
||||
lv_name TYPE cls_attribute_name.
|
||||
|
||||
|
||||
SELECT SINGLE name FROM cls_attribute INTO lv_name WHERE name = ms_item-obj_name.
|
||||
lv_new = boolc( sy-subrc <> 0 ).
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT ro_char
|
||||
EXPORTING
|
||||
im_name = lv_name
|
||||
im_type_group = iv_type_group
|
||||
im_new = lv_new.
|
||||
CATCH cx_pak_invalid_data
|
||||
cx_pak_not_authorized
|
||||
cx_pak_invalid_state
|
||||
cx_pak_wb_object_locked.
|
||||
zcx_abapgit_exception=>raise( 'Error while instantiating CL_CLS_ATTRIBUTE' ).
|
||||
ENDTRY.
|
||||
|
||||
IF lv_new = abap_false.
|
||||
TRY.
|
||||
ro_char->if_pak_wb_object~lock_and_refresh( ).
|
||||
CATCH cx_pak_wb_object_locked.
|
||||
zcx_abapgit_exception=>raise( |Could not aquire lock, CHAR { lv_name }| ).
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
SELECT SINGLE changed_by FROM cls_attribute INTO rv_user
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = 'A'.
|
||||
|
||||
IF rv_user IS INITIAL.
|
||||
SELECT SINGLE created_by FROM cls_attribute INTO rv_user
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = 'A'.
|
||||
ENDIF.
|
||||
|
||||
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_char TYPE REF TO cl_cls_attribute,
|
||||
lv_type_group TYPE cls_attribute-type_group.
|
||||
|
||||
|
||||
SELECT SINGLE type_group FROM cls_attribute INTO lv_type_group
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = 'A'.
|
||||
|
||||
lo_char = instantiate_char( lv_type_group ).
|
||||
|
||||
lo_char->if_pak_wb_object~delete( ).
|
||||
|
||||
lo_char->if_pak_wb_object~save( ).
|
||||
|
||||
lo_char->if_pak_wb_object_internal~unlock( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
|
||||
DATA: ls_char TYPE ty_char,
|
||||
lv_request TYPE trkorr,
|
||||
ls_description LIKE LINE OF ls_char-cls_attributet,
|
||||
lo_char TYPE REF TO cl_cls_attribute.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'CHAR'
|
||||
CHANGING cg_data = ls_char ).
|
||||
|
||||
tadir_insert( iv_package ).
|
||||
|
||||
lo_char = instantiate_char( ls_char-cls_attribute-type_group ).
|
||||
|
||||
lo_char->if_cls_attribute~set_kind( ls_char-cls_attribute-kind ).
|
||||
lo_char->if_cls_attribute~set_single_valued( ls_char-cls_attribute-is_single_valued ).
|
||||
lo_char->if_cls_attribute~set_aspect(
|
||||
im_aspect_for = ls_char-cls_attribute-is_aspect_for
|
||||
im_aspect_value = ls_char-cls_attribute-aspect_value ).
|
||||
lo_char->if_cls_attribute~set_default_flag( ls_char-cls_attribute-default_flag ).
|
||||
lo_char->if_cls_attribute~set_default_value( ls_char-cls_attribute-default_value ).
|
||||
lo_char->if_cls_attribute~set_sub_object_treatment( ls_char-cls_attribute-sub_obj_treatm ).
|
||||
lo_char->if_cls_attribute~set_automatic_changes_allowed( ls_char-cls_attribute-automatic_change ).
|
||||
lo_char->if_cls_attribute~set_manual_changes_allowed( ls_char-cls_attribute-manu_chag_allow ).
|
||||
lo_char->if_cls_attribute~set_implicit_changes_allowed( ls_char-cls_attribute-implicit_change ).
|
||||
lo_char->if_cls_attribute~set_expl_values_dominate_links( ls_char-cls_attribute-weak_links ).
|
||||
lo_char->if_cls_attribute~set_assignment_package_rule( ls_char-cls_attribute-assignment_devc ).
|
||||
lo_char->if_cls_attribute~set_hide_remark( ls_char-cls_attribute-hide_remark ).
|
||||
lo_char->if_cls_attribute~set_visible_in_customer_system( ls_char-cls_attribute-visible_for_cust ).
|
||||
lo_char->if_cls_attribute~set_value_table( ls_char-cls_attribute-value_table ).
|
||||
lo_char->if_cls_attribute~set_vtable_field( ls_char-cls_attribute-vtable_field ).
|
||||
lo_char->if_cls_attribute~set_vtable_icon_f( ls_char-cls_attribute-vtable_icon_f ).
|
||||
lo_char->if_cls_attribute~set_vtext_langu_f( ls_char-cls_attribute-vtext_langu_f ).
|
||||
lo_char->if_cls_attribute~set_vtext_table( ls_char-cls_attribute-vtext_table ).
|
||||
lo_char->if_cls_attribute~set_vtext_text_f( ls_char-cls_attribute-vtext_text_f ).
|
||||
lo_char->if_cls_attribute~set_vtext_value_f( ls_char-cls_attribute-vtext_value_f ).
|
||||
lo_char->if_cls_attribute~set_existing_objects_only( ls_char-cls_attribute-existing_objects ).
|
||||
lo_char->if_cls_attribute~set_objs_of_typegr( ls_char-cls_attribute-objs_of_typegr ).
|
||||
lo_char->if_cls_attribute~set_obj_values_have_subtypes( ls_char-cls_attribute-objs_w_subtype ).
|
||||
lo_char->if_cls_attribute~set_arbtry_val_type( ls_char-cls_attribute-arbtry_val_type ).
|
||||
|
||||
READ TABLE ls_char-cls_attributet INTO ls_description WITH KEY langu = sy-langu.
|
||||
IF sy-subrc <> 0.
|
||||
READ TABLE ls_char-cls_attributet INTO ls_description INDEX 1.
|
||||
ENDIF.
|
||||
lo_char->if_cls_attribute~set_description( ls_description-text ).
|
||||
|
||||
lo_char->if_cls_attribute~set_values(
|
||||
im_values = ls_char-cls_attr_value
|
||||
im_values_t = ls_char-cls_attr_valuet ).
|
||||
|
||||
* set default package, see function module RS_CORR_INSERT
|
||||
SET PARAMETER ID 'EUK' FIELD iv_package.
|
||||
|
||||
lo_char->if_pak_wb_object~save( ).
|
||||
|
||||
SET PARAMETER ID 'EUK' FIELD ''.
|
||||
|
||||
lo_char->if_pak_wb_object~activate( ).
|
||||
|
||||
lo_char->if_pak_wb_object_internal~unlock( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~exists.
|
||||
|
||||
rv_bool = cl_cls_attribute=>exists_object_attribute( ms_item-obj_name ).
|
||||
|
||||
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~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = ms_item-obj_type
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
invalid_object_type = 2
|
||||
OTHERS = 3.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from RS_TOOL_ACCESS, CHAR| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
DATA: ls_char TYPE ty_char.
|
||||
|
||||
CONSTANTS: lc_active TYPE c LENGTH 1 VALUE 'A'.
|
||||
|
||||
|
||||
SELECT SINGLE * FROM cls_attribute INTO ls_char-cls_attribute
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = lc_active.
|
||||
* todo, ASSIGNMENT_DEVC?
|
||||
|
||||
CLEAR: ls_char-cls_attribute-created_by,
|
||||
ls_char-cls_attribute-created_on,
|
||||
ls_char-cls_attribute-changed_by,
|
||||
ls_char-cls_attribute-changed_on.
|
||||
|
||||
SELECT * FROM cls_attributet INTO TABLE ls_char-cls_attributet
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = lc_active.
|
||||
|
||||
SELECT * FROM cls_attr_value INTO TABLE ls_char-cls_attr_value
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = lc_active.
|
||||
|
||||
SELECT * FROM cls_attr_valuet INTO TABLE ls_char-cls_attr_valuet
|
||||
WHERE name = ms_item-obj_name
|
||||
AND activation_state = lc_active.
|
||||
|
||||
io_xml->add( iv_name = 'CHAR'
|
||||
ig_data = ls_char ).
|
||||
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
18
src/objects/zcl_abapgit_object_char.clas.xml
Normal file
18
src/objects/zcl_abapgit_object_char.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_CHAR</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<EXPOSURE>2</EXPOSURE>
|
||||
<STATE>1</STATE>
|
||||
<CLSFINAL>X</CLSFINAL>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user