Merge pull request #1093 from christianguenter2/ISSUE_1061

Refactor lcl_language to global class zcl_abapgit_language
This commit is contained in:
Lars Hvam 2018-01-07 09:25:30 +01:00 committed by GitHub
commit 402e00ed89
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 81 additions and 58 deletions

View File

@ -0,0 +1,53 @@
*----------------------------------------------------------------------*
* This helper class is used to set and restore the current language.
* As some of the SAP functions used rely on SY-LANGU containing the
* master language, this class is used to temporarily change and then
* restore the value of SY-LANGU.
*----------------------------------------------------------------------*
CLASS zcl_abapgit_language DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-DATA:
current_language TYPE langu READ-ONLY,
login_language TYPE langu READ-ONLY.
CLASS-METHODS:
class_constructor,
restore_login_language,
set_current_language
IMPORTING
!iv_language TYPE langu.
ENDCLASS.
CLASS zcl_abapgit_language IMPLEMENTATION.
METHOD class_constructor.
DATA lv_dummy TYPE string.
GET LOCALE LANGUAGE login_language COUNTRY lv_dummy MODIFIER lv_dummy.
ENDMETHOD.
METHOD restore_login_language.
SET LOCALE LANGUAGE login_language.
ENDMETHOD.
METHOD set_current_language.
SET LOCALE LANGUAGE iv_language.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOCLASS>
<CLSNAME>ZCL_ABAPGIT_LANGUAGE</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>Language</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -207,17 +207,17 @@ CLASS lcl_object_clas IMPLEMENTATION.
"If class was deserialized with a previous versions of abapGit and current language was different
"from master language at this time, this call would return SY-LANGU as master language. To fix
"these objects, set SY-LANGU to master language temporarily.
lcl_language=>set_current_language( mv_language ).
zcl_abapgit_language=>set_current_language( mv_language ).
TRY.
ls_vseoclass = mo_object_oriented_object_fct->get_class_properties( is_class_key = ls_clskey ).
CLEANUP.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
ENDTRY.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
CLEAR: ls_vseoclass-uuid,
ls_vseoclass-author,

View File

@ -1011,7 +1011,7 @@ CLASS lcl_objects_program IMPLEMENTATION.
lv_program_name = iv_program.
ENDIF.
lcl_language=>set_current_language( mv_language ).
zcl_abapgit_language=>set_current_language( mv_language ).
CALL FUNCTION 'RPY_PROGRAM_READ'
EXPORTING
@ -1027,14 +1027,14 @@ CLASS lcl_objects_program IMPLEMENTATION.
OTHERS = 4.
IF sy-subrc = 2.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
RETURN.
ELSEIF sy-subrc <> 0.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
zcx_abapgit_exception=>raise( 'Error reading program' ).
ENDIF.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
ls_progdir = read_progdir( lv_program_name ).
@ -1127,7 +1127,7 @@ CLASS lcl_objects_program IMPLEMENTATION.
ENDIF.
IF lv_exists = abap_true.
lcl_language=>set_current_language( mv_language ).
zcl_abapgit_language=>set_current_language( mv_language ).
CALL FUNCTION 'RPY_PROGRAM_UPDATE'
EXPORTING
@ -1143,7 +1143,7 @@ CLASS lcl_objects_program IMPLEMENTATION.
OTHERS = 4.
IF sy-subrc <> 0.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
IF sy-msgid = 'EU' AND sy-msgno = '510'.
zcx_abapgit_exception=>raise( 'User is currently editing program' ).
@ -1152,7 +1152,7 @@ CLASS lcl_objects_program IMPLEMENTATION.
ENDIF.
ENDIF.
lcl_language=>restore_login_language( ).
zcl_abapgit_language=>restore_login_language( ).
ELSE.
* function module RPY_PROGRAM_INSERT cannot handle function group includes

View File

@ -2,54 +2,6 @@
*& Include ZABAPGIT_UTIL
*&---------------------------------------------------------------------*
*----------------------------------------------------------------------*
* CLASS lcl_language DEFINITION
*----------------------------------------------------------------------*
* This helper class is used to set and restore the current language.
* As some of the SAP functions used rely on SY-LANGU containing the
* master language, this class is used to temporarily change and then
* restore the value of SY-LANGU.
*----------------------------------------------------------------------*
CLASS lcl_language DEFINITION.
PUBLIC SECTION.
CLASS-DATA:
current_language TYPE langu READ-ONLY,
login_language TYPE langu READ-ONLY.
CLASS-METHODS:
class_constructor,
restore_login_language,
set_current_language
IMPORTING
iv_language TYPE langu.
ENDCLASS.
*----------------------------------------------------------------------*
* CLASS lcl_language IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_language IMPLEMENTATION.
METHOD class_constructor.
DATA lv_dummy TYPE string.
GET LOCALE LANGUAGE login_language COUNTRY lv_dummy MODIFIER lv_dummy.
ENDMETHOD.
METHOD restore_login_language.
SET LOCALE LANGUAGE login_language.
ENDMETHOD.
METHOD set_current_language.
SET LOCALE LANGUAGE iv_language.
ENDMETHOD.
ENDCLASS.
CLASS lcl_state DEFINITION.
PUBLIC SECTION.