Consolidate READ/UPDATE_PROGDIR calls (#6464)

This commit is contained in:
Marc Bernard 2023-09-06 09:28:42 -04:00 committed by GitHub
parent 4ca6c4a4ec
commit 152ae1d59c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 185 additions and 186 deletions

View File

@ -13,15 +13,14 @@ CLASS zcl_abapgit_sap_report DEFINITION
METHODS get_language_version METHODS get_language_version
IMPORTING IMPORTING
iv_package TYPE devclass iv_package TYPE devclass
iv_version TYPE zif_abapgit_sap_report=>ty_abap_language_version
RETURNING RETURNING
VALUE(rv_version) TYPE zif_abapgit_sap_report=>ty_abap_language_version. VALUE(rv_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS authorization_check METHODS authorization_check
IMPORTING IMPORTING
iv_mode TYPE csequence iv_mode TYPE csequence
is_item TYPE zif_abapgit_definitions=>ty_item is_item TYPE zif_abapgit_definitions=>ty_item
iv_version TYPE zif_abapgit_sap_report=>ty_abap_language_version OPTIONAL iv_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
@ -65,16 +64,14 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION.
METHOD get_language_version. METHOD get_language_version.
ASSERT iv_version CA ' X25'.
" TODO: Determine ABAP Language Version " TODO: Determine ABAP Language Version
" https://github.com/abapGit/abapGit/issues/6154#issuecomment-1503566920) " https://github.com/abapGit/abapGit/issues/6154#issuecomment-1503566920)
" For now, use default for ABAP source code " For now, use default for ABAP source code
IF zcl_abapgit_factory=>get_environment( )->is_sap_cloud_platform( ) = abap_true. IF zcl_abapgit_factory=>get_environment( )->is_sap_cloud_platform( ) = abap_true.
rv_version = '5'. " abap_for_cloud_development rv_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-cloud_development.
ELSE. ELSE.
rv_version = 'X'. " standard_abap rv_version = zif_abapgit_aff_types_v1=>co_abap_language_version_src-standard.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
@ -97,46 +94,76 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION.
METHOD zif_abapgit_sap_report~insert_report. METHOD zif_abapgit_sap_report~insert_report.
DATA lv_version TYPE zif_abapgit_sap_report=>ty_abap_language_version ##NEEDED. DATA lv_version TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
DATA lv_obj_name TYPE e071-obj_name. DATA lv_obj_name TYPE e071-obj_name.
ASSERT iv_state CA ' AI'. ASSERT iv_state CA ' AI'.
ASSERT iv_program_type CA ' 1FIJKMST'. ASSERT iv_program_type CA ' 1FIJKMST'.
lv_version = get_language_version( lv_version = get_language_version( iv_package ).
iv_package = iv_package
iv_version = iv_version ).
authorization_check( authorization_check(
iv_mode = 'MODIFY' iv_mode = 'MODIFY'
is_item = is_item is_item = is_item
iv_version = lv_version ). iv_version = lv_version ).
" TODO: Add `VERSION lv_version` but it's not supported in lower releases
IF iv_state IS INITIAL. IF iv_state IS INITIAL.
INSERT REPORT iv_name FROM it_source. INSERT REPORT iv_name FROM it_source.
"VERSION lv_version.
ELSEIF iv_program_type IS INITIAL AND iv_extension_type IS INITIAL. ELSEIF iv_program_type IS INITIAL AND iv_extension_type IS INITIAL.
INSERT REPORT iv_name FROM it_source INSERT REPORT iv_name FROM it_source
STATE iv_state. STATE iv_state.
"VERSION lv_version.
ELSEIF iv_extension_type IS INITIAL. ELSEIF iv_extension_type IS INITIAL.
INSERT REPORT iv_name FROM it_source INSERT REPORT iv_name FROM it_source
STATE iv_state STATE iv_state
PROGRAM TYPE iv_program_type. PROGRAM TYPE iv_program_type.
"VERSION lv_version.
ELSE. ELSE.
INSERT REPORT iv_name FROM it_source INSERT REPORT iv_name FROM it_source
STATE iv_state STATE iv_state
EXTENSION TYPE iv_extension_type EXTENSION TYPE iv_extension_type
PROGRAM TYPE iv_program_type. PROGRAM TYPE iv_program_type.
"VERSION lv_version.
ENDIF. ENDIF.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error inserting report { iv_name }| ). zcx_abapgit_exception=>raise( |Error inserting report { iv_name }| ).
ENDIF. ENDIF.
" In lower releases, INSERT REPORT does not support setting ABAP Language version (VERSION)
" Therefore, update the flag directly
UPDATE progdir SET uccheck = lv_version WHERE name = iv_name AND state = iv_state.
ENDMETHOD.
METHOD zif_abapgit_sap_report~read_progdir.
DATA ls_sapdir TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = iv_name
i_state = iv_state
IMPORTING
e_progdir = ls_sapdir.
MOVE-CORRESPONDING ls_sapdir TO rs_progdir.
CLEAR: rs_progdir-edtx,
rs_progdir-cnam,
rs_progdir-cdat,
rs_progdir-unam,
rs_progdir-udat,
rs_progdir-levl,
rs_progdir-vern,
rs_progdir-rmand,
rs_progdir-sdate,
rs_progdir-stime,
rs_progdir-idate,
rs_progdir-itime,
rs_progdir-varcl,
rs_progdir-state.
" TODO: Clear UCCHECK
ENDMETHOD. ENDMETHOD.
@ -161,6 +188,60 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_sap_report~update_progdir.
DATA ls_progdir_new TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = is_progdir-name
i_state = iv_state
IMPORTING
e_progdir = ls_progdir_new
EXCEPTIONS
not_exists = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error reading program directory' ).
ENDIF.
ls_progdir_new-ldbname = is_progdir-ldbname.
ls_progdir_new-dbna = is_progdir-dbna.
ls_progdir_new-dbapl = is_progdir-dbapl.
ls_progdir_new-rload = is_progdir-rload.
ls_progdir_new-fixpt = is_progdir-fixpt.
ls_progdir_new-appl = is_progdir-appl.
ls_progdir_new-rstat = is_progdir-rstat.
ls_progdir_new-uccheck = is_progdir-uccheck. " TODO: replace with get_language_version()
ls_progdir_new-sqlx = is_progdir-sqlx.
ls_progdir_new-clas = is_progdir-clas.
ls_progdir_new-secu = is_progdir-secu.
CALL FUNCTION 'UPDATE_PROGDIR'
EXPORTING
i_progdir = ls_progdir_new
i_progname = ls_progdir_new-name
i_state = ls_progdir_new-state
EXCEPTIONS
not_executed = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error updating program directory' ).
ENDIF.
" Function UPDATE_PROGDIR does not update VARCL, so we do it here
SELECT SINGLE * FROM progdir INTO ls_progdir_new
WHERE name = ls_progdir_new-name
AND state = ls_progdir_new-state.
IF sy-subrc = 0 AND is_progdir-varcl <> ls_progdir_new-varcl.
UPDATE progdir SET varcl = is_progdir-varcl
WHERE name = ls_progdir_new-name
AND state = ls_progdir_new-state. "#EC CI_SUBRC
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_sap_report~update_report. METHOD zif_abapgit_sap_report~update_report.
DATA lt_new TYPE string_table. DATA lt_new TYPE string_table.
@ -171,14 +252,13 @@ CLASS zcl_abapgit_sap_report IMPLEMENTATION.
IF lt_old <> lt_new. IF lt_old <> lt_new.
zif_abapgit_sap_report~insert_report( zif_abapgit_sap_report~insert_report(
iv_name = iv_name iv_name = iv_name
it_source = it_source it_source = it_source
iv_state = iv_state iv_state = iv_state
iv_program_type = iv_program_type iv_program_type = iv_program_type
iv_extension_type = iv_extension_type iv_extension_type = iv_extension_type
iv_package = iv_package iv_package = iv_package
iv_version = iv_version is_item = is_item ).
is_item = is_item ).
rv_updated = abap_true. rv_updated = abap_true.
ELSE. ELSE.

View File

@ -2,7 +2,38 @@ INTERFACE zif_abapgit_sap_report
PUBLIC. PUBLIC.
TYPES: TYPES:
ty_abap_language_version TYPE c LENGTH 1. BEGIN OF ty_progdir,
name TYPE progdir-name,
state TYPE progdir-state,
sqlx TYPE progdir-sqlx,
edtx TYPE progdir-edtx,
varcl TYPE progdir-varcl,
dbapl TYPE progdir-dbapl,
dbna TYPE progdir-dbna,
clas TYPE progdir-clas,
type TYPE progdir-type,
occurs TYPE progdir-occurs,
subc TYPE progdir-subc,
appl TYPE progdir-appl,
secu TYPE progdir-secu,
cnam TYPE progdir-cnam,
cdat TYPE progdir-cdat,
unam TYPE progdir-unam,
udat TYPE progdir-udat,
vern TYPE progdir-vern,
levl TYPE progdir-levl,
rstat TYPE progdir-rstat,
rmand TYPE progdir-rmand,
rload TYPE progdir-rload,
fixpt TYPE progdir-fixpt,
sset TYPE progdir-sset,
sdate TYPE progdir-sdate,
stime TYPE progdir-stime,
idate TYPE progdir-idate,
itime TYPE progdir-itime,
ldbname TYPE progdir-ldbname,
uccheck TYPE progdir-uccheck,
END OF ty_progdir.
METHODS read_report METHODS read_report
IMPORTING IMPORTING
@ -22,7 +53,6 @@ INTERFACE zif_abapgit_sap_report
iv_program_type TYPE c OPTIONAL iv_program_type TYPE c OPTIONAL
iv_extension_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL
iv_package TYPE devclass iv_package TYPE devclass
iv_version TYPE ty_abap_language_version OPTIONAL
is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
@ -35,7 +65,6 @@ INTERFACE zif_abapgit_sap_report
iv_program_type TYPE c OPTIONAL iv_program_type TYPE c OPTIONAL
iv_extension_type TYPE c OPTIONAL iv_extension_type TYPE c OPTIONAL
iv_package TYPE devclass iv_package TYPE devclass
iv_version TYPE ty_abap_language_version OPTIONAL
is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
RETURNING RETURNING
VALUE(rv_updated) TYPE abap_bool VALUE(rv_updated) TYPE abap_bool
@ -46,9 +75,25 @@ INTERFACE zif_abapgit_sap_report
IMPORTING IMPORTING
iv_name TYPE syrepid iv_name TYPE syrepid
iv_raise_error TYPE abap_bool DEFAULT abap_false iv_raise_error TYPE abap_bool DEFAULT abap_false
iv_version TYPE ty_abap_language_version OPTIONAL
is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL is_item TYPE zif_abapgit_definitions=>ty_item OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS read_progdir
IMPORTING
iv_name TYPE syrepid
iv_state TYPE r3state DEFAULT 'A'
RETURNING
VALUE(rs_progdir) TYPE ty_progdir
RAISING
zcx_abapgit_exception.
METHODS update_progdir
IMPORTING
is_progdir TYPE ty_progdir
iv_package TYPE devclass
iv_state TYPE r3state DEFAULT 'I'
RAISING
zcx_abapgit_exception.
ENDINTERFACE. ENDINTERFACE.

View File

@ -362,7 +362,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
METHOD deserialize_includes. METHOD deserialize_includes.
DATA: lo_xml TYPE REF TO zif_abapgit_xml_input, DATA: lo_xml TYPE REF TO zif_abapgit_xml_input,
ls_progdir TYPE ty_progdir, ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lt_includes TYPE ty_sobj_name_tt, lt_includes TYPE ty_sobj_name_tt,
lt_tpool TYPE textpool_table, lt_tpool TYPE textpool_table,
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt, lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,
@ -548,7 +548,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
METHOD get_abap_version. METHOD get_abap_version.
DATA: lt_includes TYPE ty_sobj_name_tt, DATA: lt_includes TYPE ty_sobj_name_tt,
ls_progdir TYPE ty_progdir, ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lo_xml TYPE REF TO zif_abapgit_xml_input. lo_xml TYPE REF TO zif_abapgit_xml_input.
FIELD-SYMBOLS: <lv_include> LIKE LINE OF lt_includes. FIELD-SYMBOLS: <lv_include> LIKE LINE OF lt_includes.
@ -1369,7 +1369,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
* function group SUNI * function group SUNI
DATA: lt_functions TYPE ty_function_tt, DATA: lt_functions TYPE ty_function_tt,
ls_progdir TYPE ty_progdir, ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lv_program_name TYPE syrepid, lv_program_name TYPE syrepid,
lt_dynpros TYPE ty_dynpro_tt, lt_dynpros TYPE ty_dynpro_tt,
ls_cua TYPE ty_cua. ls_cua TYPE ty_cua.
@ -1388,7 +1388,8 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
serialize_includes( ). serialize_includes( ).
lv_program_name = main_name( ). lv_program_name = main_name( ).
ls_progdir = read_progdir( lv_program_name ).
ls_progdir = zcl_abapgit_factory=>get_sap_report( )->read_progdir( lv_program_name ).
IF mo_i18n_params->is_lxe_applicable( ) = abap_false. IF mo_i18n_params->is_lxe_applicable( ) = abap_false.
serialize_texts( serialize_texts(

View File

@ -17,7 +17,7 @@ CLASS zcl_abapgit_object_prog DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
METHODS deserialize_with_ext METHODS deserialize_with_ext
IMPORTING IMPORTING
!is_progdir TYPE ty_progdir !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
!it_source TYPE abaptxt255_tab !it_source TYPE abaptxt255_tab
!iv_package TYPE devclass !iv_package TYPE devclass
RAISING RAISING
@ -41,7 +41,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION. CLASS zcl_abapgit_object_prog IMPLEMENTATION.
METHOD deserialize_texts. METHOD deserialize_texts.
@ -81,17 +81,10 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
iv_program_type = is_progdir-subc iv_program_type = is_progdir-subc
iv_extension_type = is_progdir-name+30 ). iv_extension_type = is_progdir-name+30 ).
CALL FUNCTION 'UPDATE_PROGDIR' zcl_abapgit_factory=>get_sap_report( )->update_progdir(
EXPORTING is_progdir = is_progdir
i_progdir = is_progdir iv_state = 'I'
i_progname = is_progdir-name iv_package = iv_package ).
i_state = 'I'
EXCEPTIONS
not_executed = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error updating program directory' ).
ENDIF.
zcl_abapgit_objects_activation=>add( zcl_abapgit_objects_activation=>add(
iv_type = 'REPS' iv_type = 'REPS'
@ -213,7 +206,7 @@ CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lv_program_name TYPE syrepid, DATA: lv_program_name TYPE syrepid,
ls_progdir TYPE ty_progdir, ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lt_tpool TYPE textpool_table, lt_tpool TYPE textpool_table,
lt_dynpros TYPE ty_dynpro_tt, lt_dynpros TYPE ty_dynpro_tt,
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt, lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,

View File

@ -5,39 +5,6 @@ CLASS zcl_abapgit_objects_program DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
TYPES:
BEGIN OF ty_progdir,
name TYPE progdir-name,
state TYPE progdir-state,
sqlx TYPE progdir-sqlx,
edtx TYPE progdir-edtx,
varcl TYPE progdir-varcl,
dbapl TYPE progdir-dbapl,
dbna TYPE progdir-dbna,
clas TYPE progdir-clas,
type TYPE progdir-type,
occurs TYPE progdir-occurs,
subc TYPE progdir-subc,
appl TYPE progdir-appl,
secu TYPE progdir-secu,
cnam TYPE progdir-cnam,
cdat TYPE progdir-cdat,
unam TYPE progdir-unam,
udat TYPE progdir-udat,
vern TYPE progdir-vern,
levl TYPE progdir-levl,
rstat TYPE progdir-rstat,
rmand TYPE progdir-rmand,
rload TYPE progdir-rload,
fixpt TYPE progdir-fixpt,
sset TYPE progdir-sset,
sdate TYPE progdir-sdate,
stime TYPE progdir-stime,
idate TYPE progdir-idate,
itime TYPE progdir-itime,
ldbname TYPE progdir-ldbname,
uccheck TYPE progdir-uccheck,
END OF ty_progdir.
TYPES: TYPES:
BEGIN OF ty_cua, BEGIN OF ty_cua,
adm TYPE rsmpe_adm, adm TYPE rsmpe_adm,
@ -63,14 +30,9 @@ CLASS zcl_abapgit_objects_program DEFINITION
!iv_extra TYPE clike OPTIONAL !iv_extra TYPE clike OPTIONAL
RAISING RAISING
zcx_abapgit_exception. zcx_abapgit_exception.
METHODS read_progdir
IMPORTING
!iv_program TYPE syrepid
RETURNING
VALUE(rs_progdir) TYPE ty_progdir.
METHODS deserialize_program METHODS deserialize_program
IMPORTING IMPORTING
!is_progdir TYPE ty_progdir !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
!it_source TYPE abaptxt255_tab !it_source TYPE abaptxt255_tab
!it_tpool TYPE textpool_table !it_tpool TYPE textpool_table
!iv_package TYPE devclass !iv_package TYPE devclass
@ -178,7 +140,7 @@ CLASS zcl_abapgit_objects_program DEFINITION
VALUE(rv_title) TYPE repti . VALUE(rv_title) TYPE repti .
METHODS insert_program METHODS insert_program
IMPORTING IMPORTING
!is_progdir TYPE ty_progdir !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
!it_source TYPE abaptxt255_tab !it_source TYPE abaptxt255_tab
!iv_title TYPE repti !iv_title TYPE repti
!iv_package TYPE devclass !iv_package TYPE devclass
@ -186,16 +148,11 @@ CLASS zcl_abapgit_objects_program DEFINITION
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS update_program METHODS update_program
IMPORTING IMPORTING
!is_progdir TYPE ty_progdir !is_progdir TYPE zif_abapgit_sap_report=>ty_progdir
!it_source TYPE abaptxt255_tab !it_source TYPE abaptxt255_tab
!iv_title TYPE repti !iv_title TYPE repti
RAISING RAISING
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS update_progdir
IMPORTING
!is_progdir TYPE ty_progdir
RAISING
zcx_abapgit_exception .
ENDCLASS. ENDCLASS.
@ -497,7 +454,9 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
iv_package = iv_package ). iv_package = iv_package ).
ENDIF. ENDIF.
update_progdir( is_progdir ). zcl_abapgit_factory=>get_sap_report( )->update_progdir(
is_progdir = is_progdir
iv_package = iv_package ).
zcl_abapgit_objects_activation=>add( zcl_abapgit_objects_activation=>add(
iv_type = 'REPS' iv_type = 'REPS'
@ -671,37 +630,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD read_progdir.
DATA: ls_sapdir TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = iv_program
i_state = 'A'
IMPORTING
e_progdir = ls_sapdir.
MOVE-CORRESPONDING ls_sapdir TO rs_progdir.
CLEAR: rs_progdir-edtx,
rs_progdir-cnam,
rs_progdir-cdat,
rs_progdir-unam,
rs_progdir-udat,
rs_progdir-levl,
rs_progdir-vern,
rs_progdir-rmand,
rs_progdir-sdate,
rs_progdir-stime,
rs_progdir-idate,
rs_progdir-itime,
rs_progdir-varcl,
rs_progdir-state.
ENDMETHOD.
METHOD read_tpool. METHOD read_tpool.
FIELD-SYMBOLS: <ls_tpool_in> LIKE LINE OF it_tpool, FIELD-SYMBOLS: <ls_tpool_in> LIKE LINE OF it_tpool,
@ -878,7 +806,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
METHOD serialize_program. METHOD serialize_program.
DATA: ls_progdir TYPE ty_progdir, DATA: ls_progdir TYPE zif_abapgit_sap_report=>ty_progdir,
lv_program_name TYPE syrepid, lv_program_name TYPE syrepid,
lt_dynpros TYPE ty_dynpro_tt, lt_dynpros TYPE ty_dynpro_tt,
ls_cua TYPE ty_cua, ls_cua TYPE ty_cua,
@ -919,7 +847,7 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
zcl_abapgit_language=>restore_login_language( ). zcl_abapgit_language=>restore_login_language( ).
ls_progdir = read_progdir( lv_program_name ). ls_progdir = zcl_abapgit_factory=>get_sap_report( )->read_progdir( lv_program_name ).
IF io_xml IS BOUND. IF io_xml IS BOUND.
li_xml = io_xml. li_xml = io_xml.
@ -1039,61 +967,6 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD update_progdir.
DATA ls_progdir_new TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = is_progdir-name
i_state = 'I'
IMPORTING
e_progdir = ls_progdir_new
EXCEPTIONS
not_exists = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error reading program directory' ).
ENDIF.
ls_progdir_new-ldbname = is_progdir-ldbname.
ls_progdir_new-dbna = is_progdir-dbna.
ls_progdir_new-dbapl = is_progdir-dbapl.
ls_progdir_new-rload = is_progdir-rload.
ls_progdir_new-fixpt = is_progdir-fixpt.
ls_progdir_new-varcl = is_progdir-varcl.
ls_progdir_new-appl = is_progdir-appl.
ls_progdir_new-rstat = is_progdir-rstat.
ls_progdir_new-sqlx = is_progdir-sqlx.
ls_progdir_new-uccheck = is_progdir-uccheck.
ls_progdir_new-clas = is_progdir-clas.
ls_progdir_new-secu = is_progdir-secu.
CALL FUNCTION 'UPDATE_PROGDIR'
EXPORTING
i_progdir = ls_progdir_new
i_progname = ls_progdir_new-name
i_state = ls_progdir_new-state
EXCEPTIONS
not_executed = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error updating program directory' ).
ENDIF.
" function UPDATE_PROGDIR does not update VARCL, so we do it here
SELECT SINGLE * FROM progdir INTO ls_progdir_new
WHERE name = ls_progdir_new-name
AND state = ls_progdir_new-state.
IF sy-subrc = 0 AND is_progdir-varcl <> ls_progdir_new-varcl.
UPDATE progdir SET varcl = is_progdir-varcl
WHERE name = ls_progdir_new-name
AND state = ls_progdir_new-state. "#EC CI_SUBRC
ENDIF.
ENDMETHOD.
METHOD update_program. METHOD update_program.
zcl_abapgit_language=>set_current_language( mv_language ). zcl_abapgit_language=>set_current_language( mv_language ).

View File

@ -1,22 +1,26 @@
CLASS zcl_abapgit_abap_language_vers DEFINITION CLASS zcl_abapgit_abap_language_vers DEFINITION
PUBLIC PUBLIC
FINAL FINAL
CREATE PUBLIC . CREATE PUBLIC.
PUBLIC SECTION. PUBLIC SECTION.
CONSTANTS c_feature_flag TYPE string VALUE 'ALAV'.
METHODS get_abap_language_vers_by_objt METHODS get_abap_language_vers_by_objt
IMPORTING IMPORTING
!iv_object_type TYPE trobjtype !iv_object_type TYPE trobjtype
!iv_package TYPE devclass !iv_package TYPE devclass
RETURNING RETURNING
VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version . VALUE(rv_allowed_abap_langu_version) TYPE zif_abapgit_aff_types_v1=>ty_abap_language_version.
METHODS is_import_allowed METHODS is_import_allowed
IMPORTING IMPORTING
!io_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zif_abapgit_repo
!iv_package TYPE devclass !iv_package TYPE devclass
RETURNING RETURNING
VALUE(rv_allowed) TYPE abap_bool . VALUE(rv_allowed) TYPE abap_bool.
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
@ -24,12 +28,14 @@ CLASS zcl_abapgit_abap_language_vers DEFINITION
IMPORTING IMPORTING
!iv_package TYPE devclass !iv_package TYPE devclass
RETURNING RETURNING
VALUE(rv_abap_language_version) TYPE string . VALUE(rv_abap_language_version) TYPE string.
METHODS get_abap_language_vers_by_repo METHODS get_abap_language_vers_by_repo
IMPORTING IMPORTING
!io_repo TYPE REF TO zif_abapgit_repo !io_repo TYPE REF TO zif_abapgit_repo
RETURNING RETURNING
VALUE(rv_abap_language_version) TYPE string . VALUE(rv_abap_language_version) TYPE string.
ENDCLASS. ENDCLASS.
@ -70,6 +76,7 @@ CLASS zcl_abapgit_abap_language_vers IMPLEMENTATION.
CATCH cx_root. CATCH cx_root.
rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined. rv_abap_language_version = zif_abapgit_dot_abapgit=>c_abap_language_version-undefined.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.