add factory for GUI_IS_AVAILABLE

This commit adds an indirection for function module GUI_IS_AVAILABLE
via interface ZIF_ABAPGIT_GUI_FUNCTIONS and factory ZCL_ABAPGIT_UI_FACTORY.

For tests the implementation can be replaced with
ZCL_ABAPGIT_UI_INJECTOR=>SET_GUI_FUNCTIONS
This commit is contained in:
Christian Guenter 2018-11-02 22:04:11 +01:00 committed by Lars Hvam
parent db6f21f78c
commit 45a2ba1cd1
7 changed files with 112 additions and 19 deletions

View File

@ -183,13 +183,12 @@ CLASS ZCL_ABAPGIT_OBJECTS_ACTIVATION IMPLEMENTATION.
METHOD activate_old.
DATA: lv_popup TYPE abap_bool.
DATA: lv_popup TYPE abap_bool,
li_gui TYPE REF TO zif_abapgit_gui_functions.
IF gt_objects IS NOT INITIAL.
CALL FUNCTION 'GUI_IS_AVAILABLE'
IMPORTING
return = lv_popup.
lv_popup = zcl_abapgit_ui_factory=>get_gui_functions( )->gui_is_available( ).
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
EXPORTING

View File

@ -0,0 +1,9 @@
INTERFACE zif_abapgit_gui_functions
PUBLIC .
METHODS:
gui_is_available
RETURNING
VALUE(rv_gui_is_available) TYPE abap_bool.
ENDINTERFACE.

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<VSEOINTERF>
<CLSNAME>ZIF_ABAPGIT_GUI_FUNCTIONS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>GUI functions</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<UNICODE>X</UNICODE>
</VSEOINTERF>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -0,0 +1,23 @@
CLASS zcl_abapgit_gui_functions DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES:
zif_abapgit_gui_functions.
ENDCLASS.
CLASS zcl_abapgit_gui_functions IMPLEMENTATION.
METHOD zif_abapgit_gui_functions~gui_is_available.
CALL FUNCTION 'GUI_IS_AVAILABLE'
IMPORTING
return = rv_gui_is_available.
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_GUI_FUNCTIONS</CLSNAME>
<VERSION>1</VERSION>
<LANGU>E</LANGU>
<DESCRIPT>GUI function modules</DESCRIPT>
<EXPOSURE>2</EXPOSURE>
<STATE>1</STATE>
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -11,36 +11,52 @@ CLASS zcl_abapgit_ui_factory DEFINITION
get_tag_popups
RETURNING
VALUE(ri_tag_popups) TYPE REF TO zif_abapgit_tag_popups.
VALUE(ri_tag_popups) TYPE REF TO zif_abapgit_tag_popups,
get_gui_functions
RETURNING
VALUE(ri_gui_functions) TYPE REF TO zif_abapgit_gui_functions.
PRIVATE SECTION.
CLASS-DATA:
mi_popups TYPE REF TO zif_abapgit_popups,
mi_tag_popups TYPE REF TO zif_abapgit_tag_popups.
gi_popups TYPE REF TO zif_abapgit_popups,
gi_tag_popups TYPE REF TO zif_abapgit_tag_popups,
gi_gui_functions TYPE REF TO zif_abapgit_gui_functions.
ENDCLASS.
CLASS zcl_abapgit_ui_factory IMPLEMENTATION.
METHOD get_popups.
IF mi_popups IS INITIAL.
CREATE OBJECT mi_popups TYPE zcl_abapgit_popups.
IF gi_popups IS INITIAL.
CREATE OBJECT gi_popups TYPE zcl_abapgit_popups.
ENDIF.
ri_popups = mi_popups.
ri_popups = gi_popups.
ENDMETHOD.
METHOD get_tag_popups.
IF mi_tag_popups IS INITIAL.
CREATE OBJECT mi_tag_popups TYPE zcl_abapgit_tag_popups.
IF gi_tag_popups IS INITIAL.
CREATE OBJECT gi_tag_popups TYPE zcl_abapgit_tag_popups.
ENDIF.
ri_tag_popups = mi_tag_popups.
ri_tag_popups = gi_tag_popups.
ENDMETHOD.
METHOD get_gui_functions.
IF gi_gui_functions IS INITIAL.
CREATE OBJECT gi_gui_functions TYPE zcl_abapgit_gui_functions.
ENDIF.
ri_gui_functions = gi_gui_functions.
ENDMETHOD.

View File

@ -10,24 +10,36 @@ CLASS zcl_abapgit_ui_injector DEFINITION
set_tag_popups
IMPORTING
ii_tag_popups TYPE REF TO zif_abapgit_tag_popups.
ii_tag_popups TYPE REF TO zif_abapgit_tag_popups,
set_gui_functions
IMPORTING
ii_gui_functions TYPE REF TO zif_abapgit_gui_functions.
ENDCLASS.
CLASS zcl_abapgit_ui_injector IMPLEMENTATION.
CLASS ZCL_ABAPGIT_UI_INJECTOR IMPLEMENTATION.
METHOD set_gui_functions.
zcl_abapgit_ui_factory=>gi_gui_functions = ii_gui_functions.
ENDMETHOD.
METHOD set_popups.
zcl_abapgit_ui_factory=>mi_popups = ii_popups.
zcl_abapgit_ui_factory=>gi_popups = ii_popups.
ENDMETHOD.
METHOD set_tag_popups.
zcl_abapgit_ui_factory=>mi_tag_popups = ii_tag_popups.
zcl_abapgit_ui_factory=>gi_tag_popups = ii_tag_popups.
ENDMETHOD.
ENDCLASS.