mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Merge branch 'main' into mbtools/html_pre
This commit is contained in:
commit
a1458167f6
|
@ -25,9 +25,9 @@
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@abaplint/cli": "^2.113.82",
|
"@abaplint/cli": "^2.113.82",
|
||||||
"@abaplint/database-sqlite": "^2.10.20",
|
"@abaplint/database-sqlite": "^2.10.20",
|
||||||
"@abaplint/runtime": "^2.10.22",
|
"@abaplint/runtime": "^2.10.23",
|
||||||
"express": "^4.21.2",
|
"express": "^4.21.2",
|
||||||
"@abaplint/transpiler-cli": "^2.10.22",
|
"@abaplint/transpiler-cli": "^2.10.23",
|
||||||
"globals": "^15.13.0",
|
"globals": "^15.13.0",
|
||||||
"abapmerge": "^0.16.6",
|
"abapmerge": "^0.16.6",
|
||||||
"c8": "^10.1.3",
|
"c8": "^10.1.3",
|
||||||
|
|
|
@ -26,6 +26,8 @@ CLASS lcl_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
METHOD zif_abapgit_environment~get_basis_release.
|
METHOD zif_abapgit_environment~get_basis_release.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
METHOD zif_abapgit_environment~get_available_user_sessions.
|
||||||
|
ENDMETHOD.
|
||||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
METHOD zif_abapgit_environment~is_merged.
|
METHOD zif_abapgit_environment~is_merged.
|
||||||
|
|
162
src/env/zcl_abapgit_environment.clas.abap
vendored
162
src/env/zcl_abapgit_environment.clas.abap
vendored
|
@ -81,6 +81,26 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~get_available_user_sessions.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lv_act_sessions TYPE i,
|
||||||
|
lv_max_sessions TYPE i,
|
||||||
|
lv_subrc TYPE sy-subrc.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TH_USER_INFO'
|
||||||
|
IMPORTING
|
||||||
|
act_sessions = lv_act_sessions
|
||||||
|
max_sessions = lv_max_sessions
|
||||||
|
rc = lv_subrc.
|
||||||
|
|
||||||
|
IF lv_subrc = 0.
|
||||||
|
rv_sessions = lv_max_sessions - lv_act_sessions.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~get_basis_release.
|
METHOD zif_abapgit_environment~get_basis_release.
|
||||||
|
|
||||||
SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
|
SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
|
||||||
|
@ -89,6 +109,78 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||||
|
DATA lv_translation_detective_lang TYPE spras.
|
||||||
|
DATA lv_pseudo_translation_language TYPE spras.
|
||||||
|
FIELD-SYMBOLS <ls_system_language_filter> LIKE LINE OF rt_system_language_filter.
|
||||||
|
|
||||||
|
" Translation Object Detective
|
||||||
|
" https://help.sap.com/docs/ABAP_PLATFORM_NEW/ceb25152cb0d4adba664cebea2bf4670/88a3d3cbccf64601975acabaccdfde45.html
|
||||||
|
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
|
||||||
|
EXPORTING
|
||||||
|
input = '1Q'
|
||||||
|
IMPORTING
|
||||||
|
output = lv_translation_detective_lang
|
||||||
|
EXCEPTIONS
|
||||||
|
unknown_language = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc = 1.
|
||||||
|
" The language for Translation Object Detective was not setup
|
||||||
|
ENDIF.
|
||||||
|
IF NOT lv_translation_detective_lang IS INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
|
||||||
|
<ls_system_language_filter>-sign = 'E'.
|
||||||
|
<ls_system_language_filter>-option = 'EQ'.
|
||||||
|
<ls_system_language_filter>-low = lv_translation_detective_lang.
|
||||||
|
ENDIF.
|
||||||
|
" 1943470 - Using technical language key 2Q to create pseudo-translations of ABAP developments
|
||||||
|
" https://launchpad.support.sap.com/#/notes/1943470
|
||||||
|
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
|
||||||
|
EXPORTING
|
||||||
|
input = '2Q'
|
||||||
|
IMPORTING
|
||||||
|
output = lv_pseudo_translation_language
|
||||||
|
EXCEPTIONS
|
||||||
|
unknown_language = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc = 1.
|
||||||
|
" The language for Pseudo Translation was not setup
|
||||||
|
ENDIF.
|
||||||
|
IF NOT lv_pseudo_translation_language IS INITIAL.
|
||||||
|
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
|
||||||
|
<ls_system_language_filter>-sign = 'E'.
|
||||||
|
<ls_system_language_filter>-option = 'EQ'.
|
||||||
|
<ls_system_language_filter>-low = lv_pseudo_translation_language.
|
||||||
|
ENDIF.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~init_parallel_processing.
|
||||||
|
|
||||||
|
DATA: lv_group TYPE rzlli_apcl.
|
||||||
|
|
||||||
|
lv_group = iv_group.
|
||||||
|
|
||||||
|
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
||||||
|
" multiple times in same session
|
||||||
|
CALL FUNCTION 'SPBT_INITIALIZE'
|
||||||
|
EXPORTING
|
||||||
|
group_name = lv_group
|
||||||
|
IMPORTING
|
||||||
|
free_pbt_wps = rv_free_work_processes
|
||||||
|
EXCEPTIONS
|
||||||
|
invalid_group_name = 1
|
||||||
|
internal_error = 2
|
||||||
|
pbt_env_already_initialized = 3
|
||||||
|
currently_no_resources_avail = 4
|
||||||
|
no_pbt_resources_found = 5
|
||||||
|
cant_init_different_pbt_groups = 6
|
||||||
|
OTHERS = 7 ##FM_SUBRC_OK.
|
||||||
|
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~is_merged.
|
METHOD zif_abapgit_environment~is_merged.
|
||||||
DATA lr_marker TYPE REF TO data ##NEEDED.
|
DATA lr_marker TYPE REF TO data ##NEEDED.
|
||||||
|
|
||||||
|
@ -155,50 +247,6 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
|
||||||
DATA lv_translation_detective_lang TYPE spras.
|
|
||||||
DATA lv_pseudo_translation_language TYPE spras.
|
|
||||||
FIELD-SYMBOLS <ls_system_language_filter> LIKE LINE OF rt_system_language_filter.
|
|
||||||
|
|
||||||
" Translation Object Detective
|
|
||||||
" https://help.sap.com/docs/ABAP_PLATFORM_NEW/ceb25152cb0d4adba664cebea2bf4670/88a3d3cbccf64601975acabaccdfde45.html
|
|
||||||
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
|
|
||||||
EXPORTING
|
|
||||||
input = '1Q'
|
|
||||||
IMPORTING
|
|
||||||
output = lv_translation_detective_lang
|
|
||||||
EXCEPTIONS
|
|
||||||
unknown_language = 1
|
|
||||||
OTHERS = 2.
|
|
||||||
IF sy-subrc = 1.
|
|
||||||
" The language for Translation Object Detective was not setup
|
|
||||||
ENDIF.
|
|
||||||
IF NOT lv_translation_detective_lang IS INITIAL.
|
|
||||||
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
|
|
||||||
<ls_system_language_filter>-sign = 'E'.
|
|
||||||
<ls_system_language_filter>-option = 'EQ'.
|
|
||||||
<ls_system_language_filter>-low = lv_translation_detective_lang.
|
|
||||||
ENDIF.
|
|
||||||
" 1943470 - Using technical language key 2Q to create pseudo-translations of ABAP developments
|
|
||||||
" https://launchpad.support.sap.com/#/notes/1943470
|
|
||||||
CALL FUNCTION 'CONVERSION_EXIT_ISOLA_INPUT'
|
|
||||||
EXPORTING
|
|
||||||
input = '2Q'
|
|
||||||
IMPORTING
|
|
||||||
output = lv_pseudo_translation_language
|
|
||||||
EXCEPTIONS
|
|
||||||
unknown_language = 1
|
|
||||||
OTHERS = 2.
|
|
||||||
IF sy-subrc = 1.
|
|
||||||
" The language for Pseudo Translation was not setup
|
|
||||||
ENDIF.
|
|
||||||
IF NOT lv_pseudo_translation_language IS INITIAL.
|
|
||||||
APPEND INITIAL LINE TO rt_system_language_filter ASSIGNING <ls_system_language_filter>.
|
|
||||||
<ls_system_language_filter>-sign = 'E'.
|
|
||||||
<ls_system_language_filter>-option = 'EQ'.
|
|
||||||
<ls_system_language_filter>-low = lv_pseudo_translation_language.
|
|
||||||
ENDIF.
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~is_variant_maintenance.
|
METHOD zif_abapgit_environment~is_variant_maintenance.
|
||||||
|
|
||||||
|
@ -212,30 +260,4 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
||||||
rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
|
rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~init_parallel_processing.
|
|
||||||
|
|
||||||
DATA: lv_group TYPE rzlli_apcl.
|
|
||||||
|
|
||||||
lv_group = iv_group.
|
|
||||||
|
|
||||||
" SPBT_INITIALIZE gives error PBT_ENV_ALREADY_INITIALIZED if called
|
|
||||||
" multiple times in same session
|
|
||||||
CALL FUNCTION 'SPBT_INITIALIZE'
|
|
||||||
EXPORTING
|
|
||||||
group_name = lv_group
|
|
||||||
IMPORTING
|
|
||||||
free_pbt_wps = rv_free_work_processes
|
|
||||||
EXCEPTIONS
|
|
||||||
invalid_group_name = 1
|
|
||||||
internal_error = 2
|
|
||||||
pbt_env_already_initialized = 3
|
|
||||||
currently_no_resources_avail = 4
|
|
||||||
no_pbt_resources_found = 5
|
|
||||||
cant_init_different_pbt_groups = 6
|
|
||||||
OTHERS = 7 ##FM_SUBRC_OK.
|
|
||||||
" If SPBT_INITIALIZE fails, check transactions RZ12, SM50, SM21, SARFC
|
|
||||||
|
|
||||||
ENDMETHOD.
|
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
3
src/env/zif_abapgit_environment.intf.abap
vendored
3
src/env/zif_abapgit_environment.intf.abap
vendored
|
@ -39,5 +39,8 @@ INTERFACE zif_abapgit_environment
|
||||||
iv_group TYPE clike
|
iv_group TYPE clike
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_free_work_processes) TYPE i.
|
VALUE(rv_free_work_processes) TYPE i.
|
||||||
|
METHODS get_available_user_sessions
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_sessions) TYPE i.
|
||||||
|
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
|
@ -280,6 +280,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD determine_max_processes.
|
METHOD determine_max_processes.
|
||||||
DATA: li_exit TYPE REF TO zif_abapgit_exit.
|
DATA: li_exit TYPE REF TO zif_abapgit_exit.
|
||||||
|
DATA lv_available_sessions TYPE i.
|
||||||
|
|
||||||
IF iv_force_sequential = abap_true.
|
IF iv_force_sequential = abap_true.
|
||||||
rv_processes = 1.
|
rv_processes = 1.
|
||||||
|
@ -319,6 +320,17 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
ASSERT rv_processes >= 1. " check exit above
|
ASSERT rv_processes >= 1. " check exit above
|
||||||
|
|
||||||
|
" Avoid going over the maximum available user sessions
|
||||||
|
IF sy-batch IS INITIAL.
|
||||||
|
lv_available_sessions = zcl_abapgit_factory=>get_environment( )->get_available_user_sessions( ).
|
||||||
|
|
||||||
|
IF rv_processes > lv_available_sessions AND lv_available_sessions <> 0.
|
||||||
|
rv_processes = lv_available_sessions.
|
||||||
|
ENDIF.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ASSERT rv_processes >= 1.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -70,12 +70,16 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
||||||
set_is_merged
|
set_is_merged
|
||||||
IMPORTING iv_is_merged TYPE abap_bool,
|
IMPORTING iv_is_merged TYPE abap_bool,
|
||||||
|
|
||||||
|
set_available_sessions
|
||||||
|
IMPORTING iv_available_sessions TYPE i,
|
||||||
|
|
||||||
set_free_work_processes
|
set_free_work_processes
|
||||||
IMPORTING iv_free_work_processes TYPE i.
|
IMPORTING iv_free_work_processes TYPE i.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA:
|
DATA:
|
||||||
mv_is_merged TYPE abap_bool,
|
mv_is_merged TYPE abap_bool,
|
||||||
|
mv_available_sessions TYPE i,
|
||||||
mv_free_work_processes TYPE i.
|
mv_free_work_processes TYPE i.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -89,6 +93,10 @@ CLASS ltd_environment IMPLEMENTATION.
|
||||||
METHOD zif_abapgit_environment~get_basis_release.
|
METHOD zif_abapgit_environment~get_basis_release.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD zif_abapgit_environment~get_available_user_sessions.
|
||||||
|
rv_sessions = mv_available_sessions.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
@ -116,11 +124,16 @@ CLASS ltd_environment IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD set_is_merged.
|
METHOD set_is_merged.
|
||||||
me->mv_is_merged = iv_is_merged.
|
mv_is_merged = iv_is_merged.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD set_available_sessions.
|
||||||
|
mv_available_sessions = iv_available_sessions.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD set_free_work_processes.
|
METHOD set_free_work_processes.
|
||||||
me->mv_free_work_processes = iv_free_work_processes.
|
mv_free_work_processes = iv_free_work_processes.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
@ -255,6 +268,7 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
||||||
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_no_pp FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_merged FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
determine_max_processes_exit FOR TESTING RAISING zcx_abapgit_exception,
|
determine_max_processes_exit FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
determine_max_processes_capped FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
force FOR TESTING RAISING zcx_abapgit_exception,
|
force FOR TESTING RAISING zcx_abapgit_exception,
|
||||||
|
|
||||||
teardown,
|
teardown,
|
||||||
|
@ -267,6 +281,10 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_is_merged TYPE abap_bool,
|
iv_is_merged TYPE abap_bool,
|
||||||
|
|
||||||
|
given_available_sessions
|
||||||
|
IMPORTING
|
||||||
|
iv_available_sessions TYPE i,
|
||||||
|
|
||||||
given_free_work_processes
|
given_free_work_processes
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_free_work_processes TYPE i,
|
iv_free_work_processes TYPE i,
|
||||||
|
@ -390,6 +408,19 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD determine_max_processes_capped.
|
||||||
|
|
||||||
|
given_parallel_proc_disabled( abap_false ).
|
||||||
|
given_is_merged( abap_false ).
|
||||||
|
given_free_work_processes( 50 ). " big system
|
||||||
|
given_available_sessions( 10 ). " but user session is capped
|
||||||
|
|
||||||
|
when_determine_max_processes( ).
|
||||||
|
|
||||||
|
then_we_shd_have_n_processes( 10 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD force.
|
METHOD force.
|
||||||
|
|
||||||
|
@ -413,6 +444,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD given_available_sessions.
|
||||||
|
|
||||||
|
mo_environment_double->set_available_sessions( iv_available_sessions ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD given_free_work_processes.
|
METHOD given_free_work_processes.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user