This commit is contained in:
Marc Bernard 2025-04-28 11:48:57 +02:00 committed by GitHub
commit fb0abc3fd3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 274 additions and 59 deletions

View File

@ -12,13 +12,15 @@ CLASS zcl_abapgit_object_tabl DEFINITION
"! get additional data like table authorization group
"! @parameter iv_tabname | name of the table
METHODS read_extras IMPORTING iv_tabname TYPE ddobjname
RETURNING VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras.
RETURNING VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras
RAISING zcx_abapgit_exception.
"! Update additional data
"! @parameter iv_tabname | name of the table
"! @parameter is_tabl_extras | additional table data
METHODS update_extras IMPORTING iv_tabname TYPE ddobjname
is_tabl_extras TYPE zif_abapgit_object_tabl=>ty_tabl_extras.
is_tabl_extras TYPE zif_abapgit_object_tabl=>ty_tabl_extras
RAISING zcx_abapgit_exception.
"! Delete additional data
"! @parameter iv_tabname | name of the table
@ -478,6 +480,8 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
SELECT SINGLE * FROM tddat INTO rs_tabl_extras-tddat WHERE tabname = iv_tabname.
rs_tabl_extras-abap_language_version = get_abap_language_version( ).
ENDMETHOD.
@ -596,12 +600,24 @@ CLASS zcl_abapgit_object_tabl IMPLEMENTATION.
METHOD update_extras.
DATA lv_abap_language_version TYPE uccheck.
IF is_tabl_extras-tddat IS INITIAL.
delete_extras( iv_tabname ).
ELSE.
MODIFY tddat FROM is_tabl_extras-tddat.
ENDIF.
" Fields that are not part of dd02v
TRY.
lv_abap_language_version = is_tabl_extras-abap_language_version.
set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ).
UPDATE ('DD02L') SET abap_language_version = lv_abap_language_version WHERE tabname = iv_tabname.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
ENDMETHOD.

View File

@ -22,7 +22,8 @@ INTERFACE zif_abapgit_object_tabl PUBLIC.
TYPES: ty_segment_definitions TYPE STANDARD TABLE OF ty_segment_definition WITH DEFAULT KEY.
TYPES: BEGIN OF ty_tabl_extras,
tddat TYPE tddat,
tddat TYPE tddat,
abap_language_version TYPE uccheck,
END OF ty_tabl_extras.
TYPES: BEGIN OF ty_internal,

View File

@ -529,7 +529,7 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE cg_data TO <lg_abap_language_version>.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
<lg_abap_language_version> = get_abap_language_version( ).
ENDIF.
ENDMETHOD.

View File

@ -25,6 +25,12 @@ CLASS zcl_abapgit_object_doma DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
TYPES:
ty_dd07_texts TYPE STANDARD TABLE OF ty_dd07_text .
" Fields that are not part of dd01v
TYPES:
BEGIN OF ty_extra,
abap_language_version TYPE c LENGTH 1,
END OF ty_extra.
CONSTANTS c_longtext_id_doma TYPE dokil-id VALUE 'DO' ##NO_TEXT.
METHODS serialize_texts
@ -338,6 +344,7 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
DATA: lv_name TYPE ddobjname,
lv_done TYPE abap_bool,
ls_dd01v TYPE dd01v,
ls_extra TYPE ty_extra,
lt_dd07v TYPE TABLE OF dd07v.
FIELD-SYMBOLS <ls_dd07v> TYPE dd07v.
@ -385,6 +392,17 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
" Fields that are not part of dd01v
io_xml->read( EXPORTING iv_name = 'DD01L_EXTRA'
CHANGING cg_data = ls_extra ).
TRY.
set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
UPDATE ('DD01L') SET abap_language_version = ls_extra-abap_language_version WHERE domname = lv_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
deserialize_texts(
ii_xml = io_xml
@ -463,6 +481,7 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
DATA: lv_name TYPE ddobjname,
lv_state TYPE ddgotstate,
ls_dd01v TYPE dd01v,
ls_extra TYPE ty_extra,
lv_masklen TYPE c LENGTH 4,
lt_dd07v TYPE TABLE OF dd07v.
@ -521,6 +540,11 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
io_xml->add( iv_name = 'DD07V_TAB'
ig_data = lt_dd07v ).
ls_extra-abap_language_version = get_abap_language_version( ).
io_xml->add( iv_name = 'DD01L_EXTRA'
ig_data = ls_extra ).
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
serialize_texts(
ii_xml = io_xml

View File

@ -303,8 +303,9 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS:
<ls_dynamic_cache> TYPE any,
<lv_source> TYPE data.
<lv_abap_language_version> TYPE uccheck,
<ls_dynamic_cache> TYPE any,
<lv_source> TYPE data.
ASSIGN mr_dynamic_cache->* TO <ls_dynamic_cache>.
ASSERT sy-subrc = 0.
@ -364,6 +365,18 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
CALL METHOD li_wb_object_operator->('IF_WB_OBJECT_OPERATOR~ACTIVATE').
ASSIGN COMPONENT 'METADATA-ABAP_LANGUAGE_VERSION' OF STRUCTURE <ls_dynamic_cache>
TO <lv_abap_language_version>.
IF sy-subrc = 0.
set_abap_language_version( CHANGING cv_abap_language_version = <lv_abap_language_version> ).
TRY.
UPDATE ('DDDTDC_SOURCE') SET abap_language_version = <lv_abap_language_version>
WHERE dtdc_name = ms_item-obj_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
ENDIF.
corr_insert( iv_package ).
CATCH cx_root INTO lx_error.
@ -446,8 +459,9 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
lv_source TYPE string.
FIELD-SYMBOLS:
<ls_dynamic_cache> TYPE any,
<lv_source> TYPE string.
<lv_abap_language_version> TYPE uccheck,
<ls_dynamic_cache> TYPE any,
<lv_source> TYPE string.
ASSIGN mr_dynamic_cache->* TO <ls_dynamic_cache>.
ASSERT sy-subrc = 0.
@ -474,6 +488,11 @@ CLASS zcl_abapgit_object_dtdc IMPLEMENTATION.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ASSIGN COMPONENT 'METADATA-ABAP_LANGUAGE_VERSION' OF STRUCTURE <ls_dynamic_cache> TO <lv_abap_language_version>.
IF sy-subrc = 0.
<lv_abap_language_version> = get_abap_language_version( ).
ENDIF.
io_xml->add(
iv_name = 'DTDC'
ig_data = <ls_dynamic_cache> ).

View File

@ -17,6 +17,12 @@ CLASS zcl_abapgit_object_dtel DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
TYPES:
ty_dd04_texts TYPE STANDARD TABLE OF ty_dd04_text .
" Fields that are not part of dd04v
TYPES:
BEGIN OF ty_extra,
abap_language_version TYPE uccheck,
END OF ty_extra.
CONSTANTS c_longtext_id_dtel TYPE dokil-id VALUE 'DE' ##NO_TEXT.
CONSTANTS c_longtext_id_dtel_suppl TYPE dokil-id VALUE 'DZ' ##NO_TEXT.
@ -182,9 +188,9 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA: ls_dd04v TYPE dd04v,
ls_extra TYPE ty_extra,
lv_name TYPE ddobjname.
io_xml->read( EXPORTING iv_name = 'DD04V'
CHANGING cg_data = ls_dd04v ).
@ -208,6 +214,17 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
" Fields that are not part of dd04v
io_xml->read( EXPORTING iv_name = 'DD04L_EXTRA'
CHANGING cg_data = ls_extra ).
TRY.
set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
UPDATE ('DD04L') SET abap_language_version = ls_extra-abap_language_version WHERE rollname = lv_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
deserialize_texts(
ii_xml = io_xml
@ -300,6 +317,7 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
* done directly from here
DATA: lv_name TYPE ddobjname,
ls_extra TYPE ty_extra,
ls_dd04v TYPE dd04v.
lv_name = ms_item-obj_name.
@ -348,6 +366,11 @@ CLASS zcl_abapgit_object_dtel IMPLEMENTATION.
io_xml->add( iv_name = 'DD04V'
ig_data = ls_dd04v ).
ls_extra-abap_language_version = get_abap_language_version( ).
io_xml->add( iv_name = 'DD04L_EXTRA'
ig_data = ls_extra ).
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
serialize_texts( io_xml ).
ENDIF.

View File

@ -10,6 +10,13 @@ CLASS zcl_abapgit_object_enqu DEFINITION
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: ty_dd27p TYPE STANDARD TABLE OF dd27p WITH DEFAULT KEY.
" Fields that are not part of dd25v
TYPES:
BEGIN OF ty_extra,
abap_language_version TYPE uccheck,
END OF ty_extra.
METHODS _clear_dd27p_fields CHANGING ct_dd27p TYPE ty_dd27p.
ENDCLASS.
@ -48,10 +55,10 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
DATA: lv_name TYPE ddobjname,
ls_dd25v TYPE dd25v,
ls_extra TYPE ty_extra,
lt_dd26e TYPE TABLE OF dd26e,
lt_dd27p TYPE ty_dd27p.
io_xml->read( EXPORTING iv_name = 'DD25V'
CHANGING cg_data = ls_dd25v ).
io_xml->read( EXPORTING iv_name = 'DD26E_TABLE'
@ -82,6 +89,17 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
" Fields that are not part of dd25v
io_xml->read( EXPORTING iv_name = 'DD25L_EXTRA'
CHANGING cg_data = ls_extra ).
TRY.
set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
UPDATE ('DD25L') SET abap_language_version = ls_extra-abap_language_version WHERE viewname = lv_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
@ -150,6 +168,7 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
DATA: lv_name TYPE ddobjname,
lv_state TYPE ddgotstate,
ls_dd25v TYPE dd25v,
ls_extra TYPE ty_extra,
lt_dd26e TYPE TABLE OF dd26e,
lt_dd27p TYPE ty_dd27p.
@ -192,6 +211,11 @@ CLASS zcl_abapgit_object_enqu IMPLEMENTATION.
io_xml->add( ig_data = lt_dd27p
iv_name = 'DD27P_TABLE' ).
ls_extra-abap_language_version = get_abap_language_version( ).
io_xml->add( iv_name = 'DD25L_EXTRA'
ig_data = ls_extra ).
ENDMETHOD.

View File

@ -4,6 +4,13 @@ CLASS zcl_abapgit_object_ttyp DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
INTERFACES zif_abapgit_object.
PROTECTED SECTION.
PRIVATE SECTION.
" Fields that are not part of dd40v
TYPES:
BEGIN OF ty_extra,
abap_language_version TYPE uccheck,
END OF ty_extra.
CONSTANTS c_longtext_id_ttyp TYPE dokil-id VALUE 'TT'.
ENDCLASS.
@ -41,6 +48,7 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION.
lt_dd42v TYPE dd42v_tab,
lt_dd43v TYPE dd43v_tab,
ls_dd40v TYPE dd40v,
ls_extra TYPE ty_extra,
lv_msg TYPE string.
io_xml->read( EXPORTING iv_name = 'DD40V'
@ -91,6 +99,17 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION.
zcx_abapgit_exception=>raise( lv_msg ).
ENDIF.
" Fields that are not part of dd40v
io_xml->read( EXPORTING iv_name = 'DD40L_EXTRA'
CHANGING cg_data = ls_extra ).
TRY.
set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
UPDATE ('DD40L') SET abap_language_version = ls_extra-abap_language_version WHERE typename = lv_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
deserialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_ttyp ).
@ -164,9 +183,9 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION.
lv_state TYPE ddgotstate,
lt_dd42v TYPE dd42v_tab,
lt_dd43v TYPE dd43v_tab,
ls_extra TYPE ty_extra,
ls_dd40v TYPE dd40v.
lv_name = ms_item-obj_name.
CALL FUNCTION 'DDIF_TTYP_GET'
@ -207,6 +226,11 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION.
io_xml->add( iv_name = 'DD43V'
ig_data = lt_dd43v ).
ls_extra-abap_language_version = get_abap_language_version( ).
io_xml->add( iv_name = 'DD40L_EXTRA'
ig_data = ls_extra ).
serialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_ttyp ).

View File

@ -9,7 +9,9 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
IMPORTING
iv_name TYPE ddobjname
RETURNING
VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras.
VALUE(rs_tabl_extras) TYPE zif_abapgit_object_tabl=>ty_tabl_extras
RAISING
zcx_abapgit_exception.
"! Update additional data
"! @parameter iv_name | name of the table
@ -182,6 +184,16 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
SELECT SINGLE * FROM tddat INTO rs_tabl_extras-tddat WHERE tabname = iv_name.
" Fields that are not part of dd25v
TRY.
SELECT SINGLE abap_language_version FROM ('DD25L') INTO CORRESPONDING FIELDS OF rs_tabl_extras
WHERE viewname = iv_name AND as4local = 'A' AND as4vers = '0000'.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = rs_tabl_extras-abap_language_version ).
ENDIF.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
@ -285,6 +297,8 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
METHOD update_extras.
DATA lv_abap_language_version TYPE uccheck.
IF is_tabl_extras-tddat IS INITIAL.
delete_extras(
iv_name = iv_name
@ -297,6 +311,16 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
iv_transport = iv_transport ).
ENDIF.
" Fields that are not part of dd25v
TRY.
lv_abap_language_version = is_tabl_extras-abap_language_version.
set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ).
UPDATE ('DD25L') SET abap_language_version = lv_abap_language_version WHERE viewname = iv_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
@ -361,57 +385,62 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
lv_name = ms_item-obj_name. " type conversion
LOOP AT lt_dd27p ASSIGNING <ls_dd27p>.
<ls_dd27p>-objpos = sy-tabix.
<ls_dd27p>-viewname = lv_name.
" rollname seems to be mandatory in the API, but is typically not defined in the VIEW
SELECT SINGLE rollname FROM dd03l INTO <ls_dd27p>-rollname
WHERE tabname = <ls_dd27p>-tabname
AND fieldname = <ls_dd27p>-fieldname.
IF <ls_dd27p>-rollnamevi IS INITIAL.
<ls_dd27p>-rollnamevi = <ls_dd27p>-rollname.
IF iv_step = zif_abapgit_object=>gc_step_id-ddic.
LOOP AT lt_dd27p ASSIGNING <ls_dd27p>.
<ls_dd27p>-objpos = sy-tabix.
<ls_dd27p>-viewname = lv_name.
" rollname seems to be mandatory in the API, but is typically not defined in the VIEW
SELECT SINGLE rollname FROM dd03l INTO <ls_dd27p>-rollname
WHERE tabname = <ls_dd27p>-tabname
AND fieldname = <ls_dd27p>-fieldname.
IF <ls_dd27p>-rollnamevi IS INITIAL.
<ls_dd27p>-rollnamevi = <ls_dd27p>-rollname.
ENDIF.
ENDLOOP.
corr_insert( iv_package = iv_package
ig_object_class = 'DICT' ).
CALL FUNCTION 'DDIF_VIEW_PUT'
EXPORTING
name = lv_name
dd25v_wa = ls_dd25v
dd09l_wa = ls_dd09l
TABLES
dd26v_tab = lt_dd26v
dd27p_tab = lt_dd27p
dd28j_tab = lt_dd28j
dd28v_tab = lt_dd28v
EXCEPTIONS
view_not_found = 1
name_inconsistent = 2
view_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDLOOP.
corr_insert( iv_package = iv_package
ig_object_class = 'DICT' ).
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
deserialize_texts(
ii_xml = io_xml
is_dd25v = ls_dd25v ).
ENDIF.
CALL FUNCTION 'DDIF_VIEW_PUT'
EXPORTING
name = lv_name
dd25v_wa = ls_dd25v
dd09l_wa = ls_dd09l
TABLES
dd26v_tab = lt_dd26v
dd27p_tab = lt_dd27p
dd28j_tab = lt_dd28j
dd28v_tab = lt_dd28v
EXCEPTIONS
view_not_found = 1
name_inconsistent = 2
view_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
deserialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_view ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ELSE.
" Late update after activation because activation removes ABAP Language Version (in lower releases?)
update_extras( iv_name = lv_name
iv_transport = iv_transport
is_tabl_extras = ls_extras ).
ENDIF.
IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
deserialize_texts(
ii_xml = io_xml
is_dd25v = ls_dd25v ).
ENDIF.
deserialize_longtexts( ii_xml = io_xml
iv_longtext_id = c_longtext_id_view ).
update_extras( iv_name = lv_name
iv_transport = iv_transport
is_tabl_extras = ls_extras ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
@ -454,6 +483,7 @@ CLASS zcl_abapgit_object_view IMPLEMENTATION.
METHOD zif_abapgit_object~get_deserialize_steps.
APPEND zif_abapgit_object=>gc_step_id-ddic TO rt_steps.
APPEND zif_abapgit_object=>gc_step_id-late TO rt_steps.
ENDMETHOD.

View File

@ -4,6 +4,11 @@ CLASS zcl_abapgit_object_xslt DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
INTERFACES zif_abapgit_object.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF ty_extra,
abap_language_version TYPE uccheck,
END OF ty_extra.
METHODS:
get
RETURNING VALUE(ro_xslt) TYPE REF TO cl_o2_api_xsltdesc
@ -96,6 +101,7 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION.
DATA: lv_source TYPE string,
lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
ls_extra TYPE ty_extra,
lv_len TYPE i,
ls_attributes TYPE o2xsltattr.
@ -160,6 +166,17 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Error from XSLT save, { sy-subrc }| ).
ENDIF.
io_xml->read( EXPORTING iv_name = 'EXTRA'
CHANGING cg_data = ls_extra ).
TRY.
set_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
UPDATE ('O2XSLTDESC') SET abap_language_version = ls_extra-abap_language_version
WHERE relid = 'TR' AND xsltdesc = ms_item-obj_name.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
lo_xslt->set_changeable( abap_false ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -228,10 +245,10 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION.
METHOD zif_abapgit_object~serialize.
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
ls_extra TYPE ty_extra,
lv_source TYPE string,
ls_attributes TYPE o2xsltattr.
lo_xslt = get( ).
ls_attributes = lo_xslt->get_attributes( ).
@ -252,5 +269,17 @@ CLASS zcl_abapgit_object_xslt IMPLEMENTATION.
iv_ext = 'xml'
iv_string = lv_source ).
TRY.
SELECT SINGLE abap_language_version FROM ('O2XSLTDESC') INTO CORRESPONDING FIELDS OF ls_extra
WHERE relid = 'TR' AND xsltdesc = ms_item-obj_name AND state = 'A'.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = ls_extra-abap_language_version ).
ENDIF.
CATCH cx_sy_dynamic_osql_semantics ##NO_HANDLER.
ENDTRY.
io_xml->add( iv_name = 'EXTRA'
ig_data = ls_extra ).
ENDMETHOD.
ENDCLASS.

View File

@ -89,6 +89,11 @@ CLASS zcl_abapgit_objects_super DEFINITION
!iv_no_ask_delete_append TYPE abap_bool DEFAULT abap_false
RAISING
zcx_abapgit_exception .
METHODS get_abap_language_version
RETURNING
VALUE(rv_abap_language_version) TYPE uccheck
RAISING
zcx_abapgit_exception .
METHODS set_abap_language_version
CHANGING
!cv_abap_language_version TYPE uccheck
@ -293,6 +298,26 @@ CLASS zcl_abapgit_objects_super IMPLEMENTATION.
ENDMETHOD.
METHOD get_abap_language_version.
" This is limited to DDIC objects
TRY.
CALL METHOD ('CL_DD_ABAP_LANGUAGE_VERSION')=>get_abap_language_version
EXPORTING
iv_object_type = ms_item-obj_type
iv_object_name = ms_item-obj_name
RECEIVING
rv_abap_language_version = rv_abap_language_version.
CATCH cx_root.
" does not exist in lower releases
RETURN.
ENDTRY.
clear_abap_language_version( CHANGING cv_abap_language_version = rv_abap_language_version ).
ENDMETHOD.
METHOD get_accessed_files.
rt_files = mo_files->get_accessed_files( ).
ENDMETHOD.