Merge branch 'main' into alav-ddlx

This commit is contained in:
Marc Bernard 2025-01-23 21:29:47 +01:00 committed by GitHub
commit 8b7bd23ae7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 73 additions and 31 deletions

View File

@ -70,9 +70,10 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object,
lx_error TYPE REF TO cx_root,
lv_abap_language_version TYPE uccheck.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
@ -91,6 +92,12 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_field> = mo_files->read_string( 'asdcls' ).
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
lv_abap_language_version = <lg_field>.
set_abap_language_version( CHANGING cv_abap_language_version = lv_abap_language_version ).
ENDIF.
TRY.
tadir_insert( iv_package ).
@ -98,13 +105,24 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'I'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'.
TRY.
CALL METHOD lo_dcl->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'I'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'
iv_abap_language_version = lv_abap_language_version.
CATCH cx_sy_dyn_call_param_not_found.
CALL METHOD lo_dcl->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'I'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'.
ENDTRY.
CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise_with_text( lx_error ).
@ -236,7 +254,7 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0.
CLEAR <lg_field>.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_field> ).
ENDIF.
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.

View File

@ -276,11 +276,12 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS:
<lg_data> TYPE any,
<lg_data_baseinfo> TYPE any,
<lg_source> TYPE any,
<lg_baseinfo_string> TYPE any,
<lg_baseinfo_ddlname> TYPE any.
<lg_data> TYPE any,
<lg_data_baseinfo> TYPE any,
<lg_source> TYPE any,
<lg_baseinfo_string> TYPE any,
<lg_baseinfo_ddlname> TYPE any,
<lg_abap_language_version> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
@ -293,6 +294,11 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_source> = mo_files->read_string( 'asddls' ).
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_abap_language_version>.
IF sy-subrc = 0.
set_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
@ -310,12 +316,22 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ASSERT sy-subrc = 0.
<lg_baseinfo_ddlname> = ms_item-obj_name.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>
baseinfo_string = <lg_data_baseinfo>.
TRY.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>
baseinfo_string = <lg_data_baseinfo>
save_language_version = abap_true.
CATCH cx_sy_dyn_call_param_not_found.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>
baseinfo_string = <lg_data_baseinfo>.
ENDTRY.
ELSE.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
@ -447,13 +463,14 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
lt_clr_comps TYPE STANDARD TABLE OF fieldname WITH DEFAULT KEY,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any,
<lv_comp> LIKE LINE OF lt_clr_comps,
<lt_data_baseinfo> TYPE ANY TABLE,
<lg_data_baseinfo> TYPE any,
<lg_ddlname> TYPE any,
<lg_as4local> TYPE any.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any,
<lv_comp> LIKE LINE OF lt_clr_comps,
<lt_data_baseinfo> TYPE ANY TABLE,
<lg_data_baseinfo> TYPE any,
<lg_ddlname> TYPE any,
<lg_as4local> TYPE any,
<lg_abap_language_version> TYPE any.
TRY.
@ -506,12 +523,16 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY.
ASSIGN COMPONENT 'ABAP_LANGUAGE_VERSION' OF STRUCTURE <lg_data> TO <lg_abap_language_version>.
IF sy-subrc = 0.
clear_abap_language_version( CHANGING cv_abap_language_version = <lg_abap_language_version> ).
ENDIF.
APPEND 'AS4USER' TO lt_clr_comps.
APPEND 'AS4DATE' TO lt_clr_comps.
APPEND 'AS4TIME' TO lt_clr_comps.
APPEND 'ACTFLAG' TO lt_clr_comps.
APPEND 'CHGFLAG' TO lt_clr_comps.
APPEND 'ABAP_LANGUAGE_VERSION' TO lt_clr_comps.
APPEND 'ABAP_LANGU_VERSION' TO lt_clr_comps.
LOOP AT lt_clr_comps ASSIGNING <lv_comp>.

View File

@ -528,7 +528,10 @@ CLASS zcl_abapgit_gui_page_patch IMPLEMENTATION.
lv_patched TYPE abap_bool,
lv_is_patch_possible TYPE abap_bool.
lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ).
" In case an object is falsely detected as changed, filename is empty and there's no diff object
IF iv_filename IS NOT INITIAL.
lv_patched = get_diff_object( iv_filename )->is_line_patched( iv_index ).
ENDIF.
lv_is_patch_possible = is_patch_line_possible( is_diff_line ).