Merge branch 'main' into Fix-timestamp-comparisons-in-ZCL_ABAPGIT_FIELD_RULES

This commit is contained in:
Marc Bernard 2024-09-07 10:27:21 -04:00 committed by GitHub
commit 4f661750b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 131 additions and 45 deletions

View File

@ -125,6 +125,9 @@
}, },
"double_space": true, "double_space": true,
"downport": false, "downport": false,
"add_test_attributes": true,
"implicit_start_of_selection": true,
"empty_event": true,
"dynpro_checks": false, "dynpro_checks": false,
"easy_to_find_messages": false, "easy_to_find_messages": false,
"empty_line_in_statement": { "empty_line_in_statement": {

View File

@ -23,14 +23,14 @@
] ]
}, },
"devDependencies": { "devDependencies": {
"@abaplint/cli": "^2.112.14", "@abaplint/cli": "^2.113.6",
"@abaplint/database-sqlite": "^2.8.25", "@abaplint/database-sqlite": "^2.8.25",
"@abaplint/runtime": "^2.10.9", "@abaplint/runtime": "^2.10.11",
"express": "^4.19.2", "express": "^4.19.2",
"@abaplint/transpiler-cli": "^2.10.9", "@abaplint/transpiler-cli": "^2.10.11",
"globals": "^15.9.0", "globals": "^15.9.0",
"abapmerge": "^0.16.0", "abapmerge": "^0.16.0",
"c8": "^10.1.2", "c8": "^10.1.2",
"eslint": "^9.9.0" "eslint": "^9.9.1"
} }
} }

View File

@ -74,6 +74,7 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
DATA: lr_job_definition TYPE REF TO data, DATA: lr_job_definition TYPE REF TO data,
lo_job_definition TYPE REF TO object, lo_job_definition TYPE REF TO object,
lx_error TYPE REF TO cx_root,
lv_name TYPE ty_jd_name. lv_name TYPE ty_jd_name.
FIELD-SYMBOLS: <lg_job_definition> TYPE any, FIELD-SYMBOLS: <lg_job_definition> TYPE any,
@ -105,8 +106,8 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
EXPORTING EXPORTING
im_jd_attributes = <lg_job_definition>. im_jd_attributes = <lg_job_definition>.
CATCH cx_root. CATCH cx_root INTO lx_error.
zcx_abapgit_exception=>raise( |Error deserializing JOBD| ). zcx_abapgit_exception=>raise_with_text( lx_error ).
ENDTRY. ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ). zcl_abapgit_objects_activation=>add_item( ms_item ).
@ -240,7 +241,7 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
ASSIGN COMPONENT 'CREATED_TIME' OF STRUCTURE <lg_job_definition> TO <lg_field>. ASSIGN COMPONENT 'CREATED_TIME' OF STRUCTURE <lg_job_definition> TO <lg_field>.
CLEAR <lg_field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <lg_job_definition> TO <lg_field>. ASSIGN COMPONENT 'CHANGEDBY' OF STRUCTURE <lg_job_definition> TO <lg_field>.
CLEAR <lg_field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_DATE' OF STRUCTURE <lg_job_definition> TO <lg_field>. ASSIGN COMPONENT 'CHANGED_DATE' OF STRUCTURE <lg_job_definition> TO <lg_field>.

View File

@ -282,10 +282,10 @@ CLASS zcl_abapgit_object_sfpf IMPLEMENTATION.
DATA: lv_name TYPE fpname. DATA: lv_name TYPE fpname.
" Check for any state
SELECT SINGLE name FROM fplayout SELECT SINGLE name FROM fplayout
INTO lv_name INTO lv_name
WHERE name = ms_item-obj_name WHERE name = ms_item-obj_name.
AND state = 'A'.
rv_bool = boolc( sy-subrc = 0 ). rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. ENDMETHOD.

View File

@ -49,6 +49,9 @@ CLASS zcl_abapgit_objects_program DEFINITION
fields TYPE dyfatc_tab, fields TYPE dyfatc_tab,
flow_logic TYPE swydyflow, flow_logic TYPE swydyflow,
spaces TYPE ty_spaces_tt, spaces TYPE ty_spaces_tt,
nat_header TYPE d020s,
nat_fields TYPE STANDARD TABLE OF d021s WITH DEFAULT KEY,
nat_texts TYPE STANDARD TABLE OF d021t WITH DEFAULT KEY,
END OF ty_dynpro . END OF ty_dynpro .
TYPES: TYPES:
ty_dynpro_tt TYPE STANDARD TABLE OF ty_dynpro WITH DEFAULT KEY . ty_dynpro_tt TYPE STANDARD TABLE OF ty_dynpro WITH DEFAULT KEY .
@ -304,6 +307,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
DATA: lv_name TYPE dwinactiv-obj_name, DATA: lv_name TYPE dwinactiv-obj_name,
lt_d020s_to_delete TYPE TABLE OF d020s, lt_d020s_to_delete TYPE TABLE OF d020s,
ls_d020s LIKE LINE OF lt_d020s_to_delete, ls_d020s LIKE LINE OF lt_d020s_to_delete,
lt_params TYPE TABLE OF d023s,
ls_dynpro LIKE LINE OF it_dynpros. ls_dynpro LIKE LINE OF it_dynpros.
FIELD-SYMBOLS: <ls_field> TYPE rpy_dyfatc. FIELD-SYMBOLS: <ls_field> TYPE rpy_dyfatc.
@ -371,6 +375,28 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDLOOP. ENDLOOP.
IF ls_dynpro-header-type = 'N' AND ls_dynpro-nat_header IS NOT INITIAL.
DELETE FROM d021t WHERE prog = ls_dynpro-header-program AND dynr = ls_dynpro-header-screen ##SUBRC_OK.
INSERT d021t FROM TABLE ls_dynpro-nat_texts ##SUBRC_OK.
ls_dynpro-nat_header-dgen = sy-datum.
ls_dynpro-nat_header-tgen = sy-uzeit.
CALL FUNCTION 'RPY_DYNPRO_INSERT_NATIVE'
EXPORTING
header = ls_dynpro-nat_header
dynprotext = ls_dynpro-header-descript
TABLES
fieldlist = ls_dynpro-nat_fields
flowlogic = ls_dynpro-flow_logic
params = lt_params
EXCEPTIONS
cancelled = 1
already_exists = 2
program_not_exists = 3
not_executed = 4
OTHERS = 5.
ELSE.
CALL FUNCTION 'RPY_DYNPRO_INSERT' CALL FUNCTION 'RPY_DYNPRO_INSERT'
EXPORTING EXPORTING
header = ls_dynpro-header header = ls_dynpro-header
@ -391,10 +417,10 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
not_generated = 8 not_generated = 8
illegal_field_position = 9 illegal_field_position = 9
OTHERS = 10. OTHERS = 10.
ENDIF.
IF sy-subrc <> 2 AND sy-subrc <> 0. IF sy-subrc <> 2 AND sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ). zcx_abapgit_exception=>raise_t100( ).
ENDIF. ENDIF.
* todo, RPY_DYNPRO_UPDATE?
CONCATENATE ls_dynpro-header-program ls_dynpro-header-screen CONCATENATE ls_dynpro-header-program ls_dynpro-header-screen
INTO lv_name RESPECTING BLANKS. INTO lv_name RESPECTING BLANKS.
@ -717,6 +743,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
lt_fields_to_containers TYPE dyfatc_tab, lt_fields_to_containers TYPE dyfatc_tab,
lt_flow_logic TYPE swydyflow, lt_flow_logic TYPE swydyflow,
lt_d020s TYPE TABLE OF d020s, lt_d020s TYPE TABLE OF d020s,
lt_texts TYPE TABLE OF d021t,
lt_fieldlist_int TYPE TABLE OF d021s. "internal format lt_fieldlist_int TYPE TABLE OF d021s. "internal format
FIELD-SYMBOLS: <ls_d020s> LIKE LINE OF lt_d020s, FIELD-SYMBOLS: <ls_d020s> LIKE LINE OF lt_d020s,
@ -780,8 +807,8 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
progname = iv_program_name progname = iv_program_name
dynnr = <ls_d020s>-dnum dynnr = <ls_d020s>-dnum
TABLES TABLES
fieldlist = lt_fieldlist_int. fieldlist = lt_fieldlist_int
fieldtexts = lt_texts.
LOOP AT lt_fields_to_containers ASSIGNING <ls_field>. LOOP AT lt_fields_to_containers ASSIGNING <ls_field>.
* output style is a NUMC field, the XML conversion will fail if it contains invalid value * output style is a NUMC field, the XML conversion will fail if it contains invalid value
@ -824,10 +851,19 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
APPEND INITIAL LINE TO rt_dynpro ASSIGNING <ls_dynpro>. APPEND INITIAL LINE TO rt_dynpro ASSIGNING <ls_dynpro>.
<ls_dynpro>-header = ls_header. <ls_dynpro>-header = ls_header.
<ls_dynpro>-flow_logic = lt_flow_logic.
READ TABLE lt_fieldlist_int TRANSPORTING NO FIELDS WITH KEY fill = 'X'.
IF ls_header-type = 'N' AND sy-subrc = 0.
" In particular for dynpros with splitter
<ls_dynpro>-nat_header = <ls_d020s>.
CLEAR: <ls_dynpro>-nat_header-dgen, <ls_dynpro>-nat_header-tgen.
<ls_dynpro>-nat_fields = lt_fieldlist_int.
<ls_dynpro>-nat_texts = lt_texts.
ELSE.
<ls_dynpro>-containers = lt_containers. <ls_dynpro>-containers = lt_containers.
<ls_dynpro>-fields = lt_fields_to_containers. <ls_dynpro>-fields = lt_fields_to_containers.
ENDIF.
<ls_dynpro>-flow_logic = lt_flow_logic.
ENDLOOP. ENDLOOP.

View File

@ -55,6 +55,7 @@ CLASS zcl_abapgit_repo_srv DEFINITION
!is_meta TYPE zif_abapgit_persistence=>ty_repo_xml !is_meta TYPE zif_abapgit_persistence=>ty_repo_xml
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS validate_sub_super_packages METHODS validate_sub_super_packages
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
@ -65,6 +66,13 @@ CLASS zcl_abapgit_repo_srv DEFINITION
!ev_reason TYPE string !ev_reason TYPE string
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS validate_package_korrflag
IMPORTING
!iv_package TYPE devclass
!iv_ign_subpkg TYPE abap_bool DEFAULT abap_false
RAISING
zcx_abapgit_exception.
ENDCLASS. ENDCLASS.
@ -219,6 +227,35 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD validate_package_korrflag.
DATA:
li_package TYPE REF TO zif_abapgit_sap_package,
lv_korrflag TYPE abap_bool,
lv_package TYPE devclass,
lt_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt.
li_package = zcl_abapgit_factory=>get_sap_package( iv_package ).
IF li_package->exists( ) = abap_false.
" Skip dangling repository
RETURN.
ENDIF.
lv_korrflag = li_package->are_changes_recorded_in_tr_req( ).
IF iv_ign_subpkg = abap_false.
lt_packages = li_package->list_subpackages( ).
LOOP AT lt_packages INTO lv_package.
li_package = zcl_abapgit_factory=>get_sap_package( lv_package ).
IF li_package->exists( ) = abap_true AND li_package->are_changes_recorded_in_tr_req( ) <> lv_korrflag.
zcx_abapgit_exception=>raise( 'Mix of transportable and non-transportable packages is not supported' ).
ENDIF.
ENDLOOP.
ENDIF.
ENDMETHOD.
METHOD validate_sub_super_packages. METHOD validate_sub_super_packages.
DATA: DATA:
@ -709,6 +746,11 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
ENDIF. ENDIF.
ENDIF. ENDIF.
" Check if package hierarchy is a mix of transportable and local packages
validate_package_korrflag(
iv_package = iv_package
iv_ign_subpkg = iv_ign_subpkg ).
ENDMETHOD. ENDMETHOD.

View File

@ -25,7 +25,7 @@ CLASS zcl_abapgit_syntax_factory IMPLEMENTATION.
" Create instance of highlighter dynamically dependent on syntax type " Create instance of highlighter dynamically dependent on syntax type
IF iv_filename CP '*.abap'. IF iv_filename CP '*.abap'.
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_abap. CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_abap.
ELSEIF iv_filename CP '*.xml' OR iv_filename CP '*.html'. ELSEIF iv_filename CP '*.xml' OR iv_filename CP '*.html' OR iv_filename CP '*.xdp'.
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_xml. CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_xml.
ELSEIF iv_filename CP '*.css'. ELSEIF iv_filename CP '*.css'.
CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_css. CREATE OBJECT ro_instance TYPE zcl_abapgit_syntax_css.

View File

@ -40,6 +40,7 @@ CLASS zcl_abapgit_progress IMPLEMENTATION.
DATA: lv_f TYPE f. DATA: lv_f TYPE f.
TRY.
lv_f = ( iv_current / mv_total ) * 100. lv_f = ( iv_current / mv_total ) * 100.
rv_pct = lv_f. rv_pct = lv_f.
@ -48,6 +49,9 @@ CLASS zcl_abapgit_progress IMPLEMENTATION.
ELSEIF rv_pct = 0. ELSEIF rv_pct = 0.
rv_pct = 1. rv_pct = 1.
ENDIF. ENDIF.
CATCH cx_sy_zerodivide.
rv_pct = 0.
ENDTRY.
ENDMETHOD. ENDMETHOD.