Object Type UDMO Data Model #1905 (#1966)

* Object Type UDMO Data Model #1905

Support for Object Type UDMO Data Model #1905

* Object Type UDMO Data Model #1905

* Object Type UDMO Data Model #1905

* Object Type UDMO Data Model #1905 Bad formatting correction

* Object Type UDMO Data Model #1905 Bad formatting

* Object Type UDMO Data Model #1905 Reformulation

* Update package.json

* pretty print
This commit is contained in:
Andrew Barnard 2018-10-07 19:55:15 +11:00 committed by Lars Hvam
parent fb2af0ad31
commit 4f795f5a88
2 changed files with 867 additions and 0 deletions

View File

@ -0,0 +1,787 @@
CLASS zcl_abapgit_object_udmo DEFINITION
PUBLIC
INHERITING FROM zcl_abapgit_objects_super
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES zif_abapgit_object .
METHODS constructor
IMPORTING
!is_item TYPE zif_abapgit_definitions=>ty_item
!iv_language TYPE spras .
PROTECTED SECTION.
METHODS corr_insert
REDEFINITION .
PRIVATE SECTION.
TYPES:
" You are reminded that the text serialisation / de-serialisation methods depend upon a common type.
" To make the dependency explicit, there is one common definition.
BEGIN OF ty_udmo_text_type.
TYPES sprache TYPE dm40t-sprache.
TYPES dmoid TYPE dm40t-dmoid.
TYPES langbez TYPE dm40t-langbez.
TYPES as4local TYPE dm40t-as4local.
TYPES END OF ty_udmo_text_type .
DATA mv_data_model TYPE uddmodl .
DATA mv_text_object TYPE doku_obj .
DATA mv_lxe_text_name TYPE lxeobjname .
DATA mv_activation_state TYPE as4local .
DATA ms_object_type TYPE rsdeo .
CONSTANTS c_transport_object_class TYPE trobjtype VALUE 'SUDM' ##NO_TEXT.
CONSTANTS c_lxe_text_type TYPE lxeobjtype VALUE 'IM' ##NO_TEXT.
CONSTANTS c_correction_object_type TYPE rsdeo-objtype VALUE 'UDMO' ##NO_TEXT.
CONSTANTS c_active_state TYPE as4local VALUE 'A' ##NO_TEXT.
METHODS is_name_permitted
RAISING
zcx_abapgit_exception .
METHODS update_tree .
METHODS serialize_short_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_short_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS serialize_long_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_long_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS serialize_entities
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_entities
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS access_modify
RETURNING
VALUE(rv_result) TYPE abap_bool
RAISING
zcx_abapgit_exception .
METHODS access_free
RETURNING
VALUE(rv_result) TYPE abap_bool
RAISING
zcx_abapgit_exception .
METHODS deserialize_model
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS serialize_model
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_UDMO IMPLEMENTATION.
METHOD access_free.
" Release the lock on the object.
CALL FUNCTION 'RS_ACCESS_PERMISSION'
EXPORTING
mode = 'FREE'
object = me->ms_object_type
object_class = me->c_transport_object_class
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 NE 0.
zcx_abapgit_exception=>raise_t100( ).
ELSE.
rv_result = abap_true.
ENDIF.
ENDMETHOD.
METHOD access_modify.
* You are reminded that mode modify is the same as insert, with one important difference:
* Mode INSERT is intended for newly created objects, for which a TADIR entry does not yet
* exist. In that case, the system shows a pop-up for the entry of the package, which isn't
* desirable when the SAPGUI is not available.
* In the context of abapGit, the package is known.
CALL FUNCTION 'RS_ACCESS_PERMISSION'
EXPORTING
authority_check = abap_true
global_lock = abap_true
mode = 'MODIFY'
object = me->ms_object_type
object_class = me->c_transport_object_class
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 NE 0.
zcx_abapgit_exception=>raise_t100( ).
ELSE.
rv_result = abap_true.
ENDIF.
ENDMETHOD.
METHOD constructor.
super->constructor( is_item = is_item iv_language = iv_language ).
" Conversion to Data model
me->mv_data_model = is_item-obj_name.
" Default activation state is active
me->mv_activation_state = c_active_state.
" Derive the data model's text object
mv_text_object = 'UDMD' && is_item-obj_name.
" And set the text object to active
mv_text_object+30(1) = mv_activation_state.
mv_lxe_text_name = mv_text_object.
" Correction and Transport System object
me->ms_object_type-objtype = c_correction_object_type.
me->ms_object_type-objname = is_item-obj_name.
ENDMETHOD.
METHOD corr_insert.
" You are reminded that SUDM - Data Model has no part objects e.g. no LIMU
" Therefore global lock is always appropriate
" You are reminded that the master language (in TADIR) is taken from MV_LANGUAGE.
CALL FUNCTION 'RS_CORR_INSERT'
EXPORTING
object = me->ms_object_type
object_class = me->c_transport_object_class
devclass = iv_package
master_language = mv_language
mode = 'INSERT'
global_lock = abap_true
EXCEPTIONS
cancelled = 1
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
IF sy-subrc = 1.
zcx_abapgit_exception=>raise( 'Cancelled' ).
ELSEIF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_CORR_INSERT' ).
ENDIF.
ENDMETHOD.
METHOD deserialize_entities.
DATA lt_udmo_entities TYPE STANDARD TABLE OF dm41s WITH DEFAULT KEY.
DATA ls_udmo_entity LIKE LINE OF lt_udmo_entities.
io_xml->read( EXPORTING iv_name = 'UDMO_ENTITIES'
CHANGING cg_data = lt_udmo_entities ).
LOOP AT lt_udmo_entities INTO ls_udmo_entity.
CALL FUNCTION 'SDU_DMO_ENT_PUT'
EXPORTING
object = ls_udmo_entity
EXCEPTIONS
ret_code = 0
OTHERS = 0.
ENDLOOP.
ENDMETHOD.
METHOD deserialize_long_texts.
DATA BEGIN OF ls_udmo_long_text.
DATA language TYPE dm40t-sprache.
DATA header TYPE thead.
DATA content TYPE xstring.
DATA END OF ls_udmo_long_text.
TYPES BEGIN OF language_type.
TYPES language TYPE dm40t-sprache.
TYPES END OF language_type.
DATA lt_udmo_long_texts LIKE STANDARD TABLE OF ls_udmo_long_text.
DATA lt_udmo_languages TYPE STANDARD TABLE OF language_type.
DATA ls_header TYPE thead.
io_xml->read( EXPORTING iv_name = 'UDMO_LONG_TEXTS'
CHANGING cg_data = lt_udmo_long_texts ).
LOOP AT lt_udmo_long_texts INTO ls_udmo_long_text.
ls_udmo_long_text-header-tdfuser = sy-uname.
ls_udmo_long_text-header-tdfdate = sy-datum.
ls_udmo_long_text-header-tdftime = sy-uzeit.
" You are reminded that the target system may already have some texts in
" existence. So we determine the highest existent version.
CLEAR ls_header-tdversion.
SELECT MAX( dokversion )
INTO ls_header-tdversion
FROM dokhl
WHERE id = me->c_lxe_text_type
AND object = me->mv_text_object
AND langu = ls_udmo_long_text-language.
" Increment the version
ls_header-tdversion = ls_header-tdversion + 1.
ls_udmo_long_text-header-tdversion = ls_header-tdversion.
" This function module takes care of the variation in text processing between various objects.
CALL FUNCTION 'LXE_OBJ_DOKU_PUT_XSTRING'
EXPORTING
slang = me->mv_language
tlang = ls_udmo_long_text-language
objtype = me->c_lxe_text_type
objname = me->mv_lxe_text_name
header = ls_udmo_long_text-header
content = ls_udmo_long_text-content.
ENDLOOP.
ENDMETHOD.
METHOD deserialize_model.
DATA ls_dm40l TYPE dm40l.
io_xml->read( EXPORTING iv_name = 'DM40L'
CHANGING cg_data = ls_dm40l ).
" See SDU_MODEL_PUT
GET TIME.
ls_dm40l-flg_frame = abap_true.
ls_dm40l-fstdate = sy-datum.
ls_dm40l-fsttime = sy-uzeit.
ls_dm40l-fstuser = sy-uname.
ls_dm40l-lstdate = sy-datum.
ls_dm40l-lsttime = sy-uzeit.
ls_dm40l-lstuser = sy-uname.
MODIFY dm40l FROM ls_dm40l.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SDU_MODEL_PUT' ).
ENDIF.
ENDMETHOD.
METHOD deserialize_short_texts.
DATA lt_udmo_texts TYPE STANDARD TABLE OF ty_udmo_text_type WITH DEFAULT KEY.
DATA ls_udmo_text TYPE ty_udmo_text_type.
DATA ls_dm40t TYPE dm40t.
" Deserialize the XML
io_xml->read( EXPORTING iv_name = 'UDMO_TEXTS'
CHANGING cg_data = lt_udmo_texts ).
" For every text provided
LOOP AT lt_udmo_texts INTO ls_udmo_text.
" Does the text already exist? This is the same logic as used
" in the FM SDU_MODEL_PUT
SELECT SINGLE *
FROM dm40t
INTO ls_dm40t
WHERE sprache EQ ls_udmo_text-sprache
AND dmoid EQ ls_udmo_text-dmoid
AND as4local EQ me->mv_activation_state.
IF sy-subrc EQ 0.
" There is already an active description for this language
" but the provided description differs
IF ls_dm40t-langbez NE ls_udmo_text-langbez.
ls_dm40t-langbez = ls_udmo_text-langbez.
ls_dm40t-lstdate = sy-datum.
ls_dm40t-lsttime = sy-uzeit.
ls_dm40t-lstuser = sy-uname.
MODIFY dm40t FROM ls_dm40t.
ENDIF.
ELSE.
" There is no EXISTING active description in this language
ls_dm40t-as4local = ls_udmo_text-as4local.
ls_dm40t-dmoid = ls_udmo_text-dmoid.
ls_dm40t-langbez = ls_udmo_text-langbez.
ls_dm40t-lstdate = sy-datum.
ls_dm40t-lsttime = sy-uzeit.
ls_dm40t-lstuser = sy-uname.
ls_dm40t-sprache = ls_udmo_text-sprache.
INSERT dm40t FROM ls_dm40t.
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD is_name_permitted.
" It is unlikely that a serialised data model will have a name that is not permitted. However
" there may be reservations in TRESE which could prohibit the data model name.
" So to be safe, we check. Tx SD11 does this check.
CALL FUNCTION 'SDU_SAA_CHECK'
EXPORTING
obj_name = me->ms_object_type-objname
obj_type = me->ms_object_type-objtype
EXCEPTIONS
wrong_type = 01.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
METHOD serialize_entities.
DATA lt_udmo_entities TYPE STANDARD TABLE OF dm41s WITH DEFAULT KEY.
FIELD-SYMBOLS <udmo_entity> TYPE dm41s.
SELECT * FROM dm41s
INTO TABLE lt_udmo_entities
WHERE dmoid EQ me->mv_data_model
AND as4local EQ me->mv_activation_state.
LOOP AT lt_udmo_entities ASSIGNING <udmo_entity> .
" You are reminded that administrative information, such as last changed by user, date, time is not serialised.
CLEAR <udmo_entity>-lstuser.
CLEAR <udmo_entity>-lstdate.
CLEAR <udmo_entity>-lsttime.
CLEAR <udmo_entity>-fstuser.
CLEAR <udmo_entity>-fstdate.
CLEAR <udmo_entity>-fsttime.
ENDLOOP.
" You are reminded that descriptions in other languages do not have to be in existence, although they may.
IF lines( lt_udmo_entities ) GT 0.
io_xml->add( iv_name = 'UDMO_ENTITIES'
ig_data = lt_udmo_entities ).
ENDIF.
ENDMETHOD.
METHOD serialize_long_texts.
" The model has short texts in multiple languages. These are held in DM40T.
" The model has a long description also in a master language, with other long descriptions
" maintained as translations using SE63 Translation Editor. All of these long texts are held in DOK*
DATA BEGIN OF ls_udmo_long_text.
DATA language TYPE dm40t-sprache.
DATA header TYPE thead.
DATA content TYPE xstring.
DATA END OF ls_udmo_long_text.
TYPES BEGIN OF ls_language_type.
TYPES language TYPE dm40t-sprache.
TYPES END OF ls_language_type.
DATA lt_udmo_long_texts LIKE STANDARD TABLE OF ls_udmo_long_text.
DATA lt_udmo_languages TYPE STANDARD TABLE OF ls_language_type.
DATA ls_udmo_language LIKE LINE OF lt_udmo_languages.
DATA: lv_error_status TYPE lxestatprc .
" In which languages are the short texts are maintained.
SELECT sprache AS language
FROM dm40t
INTO TABLE lt_udmo_languages
WHERE dmoid EQ me->mv_data_model
AND as4local EQ me->mv_activation_state
ORDER BY sprache ASCENDING. "#EC CI_NOFIRST
" For every language for which a short text is maintained,
LOOP AT lt_udmo_languages INTO ls_udmo_language.
CLEAR ls_udmo_long_text.
CLEAR lv_error_status.
ls_udmo_long_text-language = ls_udmo_language-language.
" You are reminded that this function gets the most recent version of the texts.
CALL FUNCTION 'LXE_OBJ_DOKU_GET_XSTRING'
EXPORTING
lang = ls_udmo_language-language
objtype = me->c_lxe_text_type
objname = me->mv_lxe_text_name
IMPORTING
header = ls_udmo_long_text-header
content = ls_udmo_long_text-content
pstatus = lv_error_status.
CHECK lv_error_status EQ 'S'. "Success
" Administrative information is not serialised
CLEAR ls_udmo_long_text-header-tdfuser.
CLEAR ls_udmo_long_text-header-tdfdate.
CLEAR ls_udmo_long_text-header-tdftime.
CLEAR ls_udmo_long_text-header-tdluser.
CLEAR ls_udmo_long_text-header-tdldate.
CLEAR ls_udmo_long_text-header-tdltime.
APPEND ls_udmo_long_text TO lt_udmo_long_texts.
ENDLOOP.
" You are reminded that long texts do not have to be in existence
IF lines( lt_udmo_long_texts ) GT 0.
io_xml->add( iv_name = 'UDMO_LONG_TEXTS'
ig_data = lt_udmo_long_texts ).
ENDIF.
ENDMETHOD.
METHOD serialize_model.
DATA ls_dm40l TYPE dm40l.
" See SDU_MODEL_GET.
SELECT SINGLE *
FROM dm40l
INTO ls_dm40l
WHERE dmoid EQ me->mv_data_model
AND as4local EQ me->mv_activation_state.
IF sy-subrc NE 0.
zcx_abapgit_exception=>raise( 'error from UDMO - model serialisation' ).
ENDIF.
" You are reminded that administrative data is not serialised.
CLEAR ls_dm40l-lstdate.
CLEAR ls_dm40l-lsttime.
CLEAR ls_dm40l-lstuser.
CLEAR ls_dm40l-fstdate.
CLEAR ls_dm40l-fsttime.
CLEAR ls_dm40l-fstuser.
io_xml->add( iv_name = 'DM40L'
ig_data = ls_dm40l ).
ENDMETHOD.
METHOD serialize_short_texts.
DATA lt_udmo_texts TYPE STANDARD TABLE OF ty_udmo_text_type WITH DEFAULT KEY.
" You are reminded that administrative information, such as last changed by user, date, time is not serialised.
" You are reminded that active short texts of all (existent) languages are serialised.
SELECT sprache dmoid as4local langbez
FROM dm40t
INTO CORRESPONDING FIELDS OF TABLE lt_udmo_texts
WHERE dmoid EQ me->mv_data_model
AND as4local EQ me->mv_activation_state
ORDER BY sprache ASCENDING. "#EC CI_NOFIRST
" You are reminded that descriptions in other languages do not have to be in existence.
IF lines( lt_udmo_texts ) GT 0.
io_xml->add( iv_name = 'UDMO_TEXTS'
ig_data = lt_udmo_texts ).
ENDIF.
ENDMETHOD.
METHOD update_tree.
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
EXPORTING
object = me->mv_data_model
operation = 'INSERT'
type = me->c_correction_object_type.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE lstuser INTO rv_user
FROM dm40l
WHERE dmoid = me->mv_data_model
AND as4local = me->mv_activation_state.
IF sy-subrc NE 0.
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.
* You are reminded that this function model checks for
* - permissions
* - locks
* - connection to transport and correction system
* - deletion of data model, model relations and all documentation
* - update of object tree
* - releasing of lock
CALL FUNCTION 'RPY_DATAMODEL_DELETE'
EXPORTING
model_name = me->mv_data_model
EXCEPTIONS
cancelled = 1
permission_error = 2
not_found = 3
is_used = 4
OTHERS = 5.
IF sy-subrc NE 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD. "zif_abapgit_object~delete
METHOD zif_abapgit_object~deserialize.
* You are reminded that this method checks for
* - validity of data model name with regard to naming conventions
* - permissions and locks
* - connection to transport and correction system
* - insert of data model, model relations and all documentation
* - update of object tree
* - releasing of lock
* Is the data model name compliant with naming conventions?
is_name_permitted( ).
* Access Permission granted?
access_modify( ).
* Connection to transport and correction system
corr_insert( iv_package ).
* Insert the data model, relations and documentation
TRY.
deserialize_model( io_xml ).
deserialize_entities( io_xml ).
deserialize_short_texts( io_xml ).
deserialize_long_texts( io_xml ).
update_tree( ).
access_free( ).
CATCH zcx_abapgit_exception.
me->access_free( ).
zcx_abapgit_exception=>raise( 'Error in deserialisation of UDMO' ).
ENDTRY.
" You are reminded that data models are not relevant for activation.
ENDMETHOD. "zif_abapgit_object~deserialize
METHOD zif_abapgit_object~exists.
" See Function Module SDU_MODEL_EXISTS
SELECT COUNT( * ) FROM dm40l
WHERE dmoid = me->mv_data_model
AND as4local = me->mv_activation_state.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
DATA lv_date TYPE dats.
DATA lv_time TYPE tims.
SELECT SINGLE lstdate lsttime FROM dm40l
INTO (lv_date, lv_time)
WHERE dmoid = me->mv_data_model
AND as4local = me->mv_activation_state.
rv_changed = check_timestamp(
iv_timestamp = iv_timestamp
iv_date = lv_date
iv_time = lv_time ).
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~is_locked.
rv_is_locked = exists_a_lock_entry_for(
iv_lock_object = 'ESDUM'
iv_argument = |{ ms_item-obj_type }{ ms_item-obj_name }| ).
ENDMETHOD.
METHOD zif_abapgit_object~jump.
" The function module listed below do not open a new window - so we revert to BDC.
" CALL FUNCTION 'SDU_MODEL_SHOW'
" CALL FUNCTION 'RS_TOOL_ACCESS'
DATA lt_bdcdata TYPE TABLE OF bdcdata.
FIELD-SYMBOLS: <ls_bdcdata> LIKE LINE OF lt_bdcdata.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-program = 'SAPMUD00'.
<ls_bdcdata>-dynpro = '0100'.
<ls_bdcdata>-dynbegin = abap_true.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
<ls_bdcdata>-fval = '=SHOW'.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'RSUD3-DATM'.
<ls_bdcdata>-fval = abap_true.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'RSUD3-OBJ_KEY'.
<ls_bdcdata>-fval = ms_item-obj_name.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
tcode = 'SD11'
mode_val = 'E'
TABLES
using_tab = lt_bdcdata
EXCEPTIONS
system_failure = 1
communication_failure = 2
resource_failure = 3
OTHERS = 4
##fm_subrc_ok. "#EC CI_SUBRC
ENDMETHOD. "zif_abapgit_object~jump
METHOD zif_abapgit_object~serialize.
IF zif_abapgit_object~exists( ) = abap_false.
RETURN.
ENDIF.
serialize_model( io_xml ).
me->serialize_entities( io_xml ).
me->serialize_short_texts( io_xml ).
me->serialize_long_texts( io_xml ).
ENDMETHOD. "zif_abapgit_object~serialize
ENDCLASS.

View File

@ -0,0 +1,80 @@
<?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_UDMO</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>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>ACCESS_FREE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>RS Access Permission - Free</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>ACCESS_MODIFY</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>RS Access Permission - Modify</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>CONSTRUCTOR</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Constructor</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>C_ACTIVE_STATE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Activation State</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>C_CORRECTION_OBJECT_TYPE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Object directory Type</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>C_LXE_TEXT_TYPE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Translation Object</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>C_TRANSPORT_OBJECT_CLASS</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Object directory Class</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>IS_NAME_PERMITTED</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Does the model comply with naming conventions?</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>MS_OBJECT_TYPE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Lock object structure for ABAP/4 Dictionary objects</DESCRIPT>
</SEOCOMPOTX>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_UDMO</CLSNAME>
<CMPNAME>UPDATE_TREE</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>Update the development workbench tree</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>