mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
Merge branch 'main' into mbtools/html_pre
This commit is contained in:
commit
a1458167f6
|
@ -25,9 +25,9 @@
|
|||
"devDependencies": {
|
||||
"@abaplint/cli": "^2.113.82",
|
||||
"@abaplint/database-sqlite": "^2.10.20",
|
||||
"@abaplint/runtime": "^2.10.22",
|
||||
"@abaplint/runtime": "^2.10.23",
|
||||
"express": "^4.21.2",
|
||||
"@abaplint/transpiler-cli": "^2.10.22",
|
||||
"@abaplint/transpiler-cli": "^2.10.23",
|
||||
"globals": "^15.13.0",
|
||||
"abapmerge": "^0.16.6",
|
||||
"c8": "^10.1.3",
|
||||
|
|
|
@ -26,6 +26,8 @@ CLASS lcl_environment IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~get_basis_release.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~get_available_user_sessions.
|
||||
ENDMETHOD.
|
||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||
ENDMETHOD.
|
||||
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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
SELECT SINGLE release extrelease FROM cvers INTO (rs_result-release, rs_result-sp)
|
||||
|
@ -89,6 +109,78 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
|||
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.
|
||||
DATA lr_marker TYPE REF TO data ##NEEDED.
|
||||
|
||||
|
@ -155,50 +247,6 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
|
@ -212,30 +260,4 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.
|
|||
rv_is_variant_maintenance = boolc( lines( lt_variscreens ) > 0 ).
|
||||
|
||||
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.
|
||||
|
|
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
|
||||
RETURNING
|
||||
VALUE(rv_free_work_processes) TYPE i.
|
||||
METHODS get_available_user_sessions
|
||||
RETURNING
|
||||
VALUE(rv_sessions) TYPE i.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
|
|
@ -280,6 +280,7 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
|
||||
METHOD determine_max_processes.
|
||||
DATA: li_exit TYPE REF TO zif_abapgit_exit.
|
||||
DATA lv_available_sessions TYPE i.
|
||||
|
||||
IF iv_force_sequential = abap_true.
|
||||
rv_processes = 1.
|
||||
|
@ -319,6 +320,17 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
|
||||
|
|
|
@ -70,12 +70,16 @@ CLASS ltd_environment DEFINITION FINAL FOR TESTING
|
|||
set_is_merged
|
||||
IMPORTING iv_is_merged TYPE abap_bool,
|
||||
|
||||
set_available_sessions
|
||||
IMPORTING iv_available_sessions TYPE i,
|
||||
|
||||
set_free_work_processes
|
||||
IMPORTING iv_free_work_processes TYPE i.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA:
|
||||
mv_is_merged TYPE abap_bool,
|
||||
mv_available_sessions TYPE i,
|
||||
mv_free_work_processes TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -89,6 +93,10 @@ CLASS ltd_environment IMPLEMENTATION.
|
|||
METHOD zif_abapgit_environment~get_basis_release.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~get_available_user_sessions.
|
||||
rv_sessions = mv_available_sessions.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_environment~get_system_language_filter.
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -116,11 +124,16 @@ CLASS ltd_environment IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD set_is_merged.
|
||||
me->mv_is_merged = iv_is_merged.
|
||||
mv_is_merged = iv_is_merged.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_available_sessions.
|
||||
mv_available_sessions = iv_available_sessions.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD set_free_work_processes.
|
||||
me->mv_free_work_processes = iv_free_work_processes.
|
||||
mv_free_work_processes = iv_free_work_processes.
|
||||
ENDMETHOD.
|
||||
|
||||
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_merged 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,
|
||||
|
||||
teardown,
|
||||
|
@ -267,6 +281,10 @@ CLASS ltcl_determine_max_processes DEFINITION FOR TESTING DURATION SHORT RISK LE
|
|||
IMPORTING
|
||||
iv_is_merged TYPE abap_bool,
|
||||
|
||||
given_available_sessions
|
||||
IMPORTING
|
||||
iv_available_sessions TYPE i,
|
||||
|
||||
given_free_work_processes
|
||||
IMPORTING
|
||||
iv_free_work_processes TYPE i,
|
||||
|
@ -390,6 +408,19 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
|
||||
|
@ -413,6 +444,12 @@ CLASS ltcl_determine_max_processes IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD given_available_sessions.
|
||||
|
||||
mo_environment_double->set_available_sessions( iv_available_sessions ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD given_free_work_processes.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user