TRAN refactoring, reduce method length #2128

This commit is contained in:
larshp 2018-11-22 12:53:51 +00:00 committed by Lars Hvam
parent 558ece49c5
commit 2fe5b30e4d

View File

@ -4,273 +4,109 @@ CLASS zcl_abapgit_object_tran DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
INTERFACES zif_abapgit_object.
ALIASES mo_files FOR zif_abapgit_object~mo_files.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES: tty_param_values TYPE STANDARD TABLE OF rsparam
WITH NON-UNIQUE DEFAULT KEY.
TYPES:
tty_param_values TYPE STANDARD TABLE OF rsparam
WITH NON-UNIQUE DEFAULT KEY .
CONSTANTS: c_oo_program(9) VALUE '\PROGRAM=',
c_oo_class(7) VALUE '\CLASS=',
c_oo_method(8) VALUE '\METHOD=',
c_oo_tcode TYPE tcode VALUE 'OS_APPLICATION',
c_oo_frclass(30) VALUE 'CLASS',
c_oo_frmethod(30) VALUE 'METHOD',
c_oo_frupdtask(30) VALUE 'UPDATE_MODE',
c_oo_synchron VALUE 'S',
c_oo_asynchron VALUE 'U',
c_true TYPE c VALUE 'X',
c_false TYPE c VALUE space.
METHODS:
split_parameters
CHANGING ct_rsparam TYPE s_param
cs_rsstcd TYPE rsstcd
cs_tstcp TYPE tstcp
cs_tstc TYPE tstc,
split_parameters_comp
IMPORTING ig_type TYPE any
ig_param TYPE any
CHANGING cg_value TYPE any,
serialize_texts
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING zcx_abapgit_exception,
deserialize_texts
IMPORTING io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING zcx_abapgit_exception,
deserialize_oo_transaction
IMPORTING
iv_package TYPE devclass
is_tstc TYPE tstc
is_tstcc TYPE tstcc
is_tstct TYPE tstct
is_tstcp TYPE tstcp
it_param_values TYPE zcl_abapgit_object_tran=>tty_param_values
is_rsstcd TYPE rsstcd
RAISING
zcx_abapgit_exception.
CONSTANTS:
c_oo_program(9) VALUE '\PROGRAM=' ##NO_TEXT.
CONSTANTS:
c_oo_class(7) VALUE '\CLASS=' ##NO_TEXT.
CONSTANTS:
c_oo_method(8) VALUE '\METHOD=' ##NO_TEXT.
CONSTANTS c_oo_tcode TYPE tcode VALUE 'OS_APPLICATION' ##NO_TEXT.
CONSTANTS:
c_oo_frclass(30) VALUE 'CLASS' ##NO_TEXT.
CONSTANTS:
c_oo_frmethod(30) VALUE 'METHOD' ##NO_TEXT.
CONSTANTS:
c_oo_frupdtask(30) VALUE 'UPDATE_MODE' ##NO_TEXT.
CONSTANTS c_oo_synchron TYPE c VALUE 'S' ##NO_TEXT.
CONSTANTS c_oo_asynchron TYPE c VALUE 'U' ##NO_TEXT.
CONSTANTS c_true TYPE c VALUE 'X' ##NO_TEXT.
CONSTANTS c_false TYPE c VALUE space ##NO_TEXT.
DATA:
mt_bcdata TYPE STANDARD TABLE OF bdcdata .
METHODS add_data
IMPORTING
!iv_fnam TYPE bdcdata-fnam
!iv_fval TYPE clike .
METHODS call_se93
RAISING
zcx_abapgit_exception .
METHODS set_oo_parameters
IMPORTING
!it_rsparam TYPE s_param
CHANGING
!cs_rsstcd TYPE rsstcd .
METHODS split_parameters
CHANGING
!ct_rsparam TYPE s_param
!cs_rsstcd TYPE rsstcd
!cs_tstcp TYPE tstcp
!cs_tstc TYPE tstc .
METHODS split_parameters_comp
IMPORTING
!ig_type TYPE any
!ig_param TYPE any
CHANGING
!cg_value TYPE any .
METHODS serialize_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_output
RAISING
zcx_abapgit_exception .
METHODS deserialize_texts
IMPORTING
!io_xml TYPE REF TO zcl_abapgit_xml_input
RAISING
zcx_abapgit_exception .
METHODS deserialize_oo_transaction
IMPORTING
!iv_package TYPE devclass
!is_tstc TYPE tstc
!is_tstcc TYPE tstcc
!is_tstct TYPE tstct
!is_tstcp TYPE tstcp
!it_param_values TYPE zcl_abapgit_object_tran=>tty_param_values
!is_rsstcd TYPE rsstcd
RAISING
zcx_abapgit_exception .
ENDCLASS.
CLASS zcl_abapgit_object_tran IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
METHOD deserialize_oo_transaction.
METHOD add_data.
" You should remember that we don't use batch input just for fun,
" but because FM RPY_TRANSACTION_INSERT doesn't support OO transactions.
DATA: ls_bcdata LIKE LINE OF mt_bcdata.
DATA: ls_bcdata TYPE bdcdata,
lt_bcdata TYPE STANDARD TABLE OF bdcdata,
lt_message TYPE STANDARD TABLE OF bdcmsgcoll.
ls_bcdata-fnam = iv_fnam.
ls_bcdata-fval = iv_fval.
APPEND ls_bcdata TO mt_bcdata.
ENDMETHOD.
METHOD call_se93.
DATA: lt_message TYPE STANDARD TABLE OF bdcmsgcoll.
FIELD-SYMBOLS: <ls_message> TYPE bdcmsgcoll.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0390'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTC-TCODE'.
ls_bcdata-fval = is_tstc-tcode.
APPEND ls_bcdata TO lt_bcdata.
IF zif_abapgit_object~exists( ) = abap_true.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=CHNG'.
APPEND ls_bcdata TO lt_bcdata.
ELSE.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=ADD'.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0300'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCT-TTEXT'.
ls_bcdata-fval = is_tstct-ttext.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-S_CLASS'.
ls_bcdata-fval = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=ENTR'.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-S_TRFRAME'.
ls_bcdata-fval = is_rsstcd-s_trframe.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-S_UPDTASK'.
ls_bcdata-fval = is_rsstcd-s_updtask.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=TR_FRAMEWORK'.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-CLASSNAME'.
ls_bcdata-fval = is_rsstcd-classname.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-METHOD'.
ls_bcdata-fval = is_rsstcd-method.
APPEND ls_bcdata TO lt_bcdata.
IF is_rsstcd-s_local IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-S_LOCAL'.
ls_bcdata-fval = is_rsstcd-s_local.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
IF is_rsstcd-s_updlok IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'RSSTCD-S_UPDLOK'.
ls_bcdata-fval = is_rsstcd-s_updlok.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTC-PGMNA'.
ls_bcdata-fval = is_tstc-pgmna.
APPEND ls_bcdata TO lt_bcdata.
IF is_tstcc-s_webgui = '2'.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'G_IAC_EWT'.
ls_bcdata-fval = abap_true.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = 'MAKE_PROFI '.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
ELSEIF is_tstcc-s_webgui IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCC-S_WEBGUI'.
ls_bcdata-fval = is_tstcc-s_webgui.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
IF is_tstcc-s_pervas IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCC-S_PERVAS'.
ls_bcdata-fval = is_tstcc-s_pervas.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
IF is_tstcc-s_service IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCC-S_SERVICE'.
ls_bcdata-fval = is_tstcc-s_service.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
IF is_tstcc-s_platin IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCC-S_PLATIN'.
ls_bcdata-fval = is_tstcc-s_platin.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
IF is_tstcc-s_win32 IS NOT INITIAL.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'TSTCC-S_WIN32'.
ls_bcdata-fval = is_tstcc-s_win32.
APPEND ls_bcdata TO lt_bcdata.
ENDIF.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=WB_SAVE'.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'SAPLSTRD'.
ls_bcdata-dynpro = '0100'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'KO007-L_DEVCLASS'.
ls_bcdata-fval = iv_package.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=ADD'.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'BDC_OKCODE'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=WB_BACK'.
APPEND ls_bcdata TO lt_bcdata.
ls_bcdata-program = 'BDC_OKCODE'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=WB_BACK'.
APPEND ls_bcdata TO lt_bcdata.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
EXPORTING
tcode = 'SE93'
mode_val = 'N'
TABLES
using_tab = lt_bcdata
using_tab = mt_bcdata
mess_tab = lt_message
EXCEPTIONS
OTHERS = 1.
@ -294,6 +130,163 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDMETHOD.
METHOD deserialize_oo_transaction.
" You should remember that we don't use batch input just for fun,
" but because FM RPY_TRANSACTION_INSERT doesn't support OO transactions.
DATA: ls_bcdata TYPE bdcdata.
CLEAR mt_bcdata.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0390'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'TSTC-TCODE'
iv_fval = is_tstc-tcode ).
IF zif_abapgit_object~exists( ) = abap_true.
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=CHNG' ).
ELSE.
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=ADD' ).
ENDIF.
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0300'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'TSTCT-TTEXT'
iv_fval = is_tstct-ttext ).
add_data( iv_fnam = 'RSSTCD-S_CLASS'
iv_fval = 'X' ).
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=ENTR' ).
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'RSSTCD-S_TRFRAME'
iv_fval = is_rsstcd-s_trframe ).
add_data( iv_fnam = 'RSSTCD-S_UPDTASK'
iv_fval = is_rsstcd-s_updtask ).
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=TR_FRAMEWORK' ).
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'RSSTCD-CLASSNAME'
iv_fval = is_rsstcd-classname ).
add_data( iv_fnam = 'RSSTCD-METHOD'
iv_fval = is_rsstcd-method ).
IF is_rsstcd-s_local IS NOT INITIAL.
add_data( iv_fnam = 'RSSTCD-S_LOCAL'
iv_fval = is_rsstcd-s_local ).
ENDIF.
IF is_rsstcd-s_updlok IS NOT INITIAL.
add_data( iv_fnam = 'RSSTCD-S_UPDLOK'
iv_fval = is_rsstcd-s_updlok ).
ENDIF.
add_data( iv_fnam = 'TSTC-PGMNA'
iv_fval = is_tstc-pgmna ).
IF is_tstcc-s_webgui = '2'.
add_data( iv_fnam = 'G_IAC_EWT'
iv_fval = abap_true ).
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = 'MAKE_PROFI' ).
ls_bcdata-program = 'SAPLSEUK'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
ELSEIF is_tstcc-s_webgui IS NOT INITIAL.
add_data( iv_fnam = 'TSTCC-S_WEBGUI'
iv_fval = is_tstcc-s_webgui ).
ENDIF.
IF is_tstcc-s_pervas IS NOT INITIAL.
add_data( iv_fnam = 'TSTCC-S_PERVAS'
iv_fval = is_tstcc-s_pervas ).
ENDIF.
IF is_tstcc-s_service IS NOT INITIAL.
add_data( iv_fnam = 'TSTCC-S_SERVICE'
iv_fval = is_tstcc-s_service ).
ENDIF.
IF is_tstcc-s_platin IS NOT INITIAL.
add_data( iv_fnam = 'TSTCC-S_PLATIN'
iv_fval = is_tstcc-s_platin ).
ENDIF.
IF is_tstcc-s_win32 IS NOT INITIAL.
add_data( iv_fnam = 'TSTCC-S_WIN32'
iv_fval = is_tstcc-s_win32 ).
ENDIF.
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=WB_SAVE' ).
ls_bcdata-program = 'SAPLSTRD'.
ls_bcdata-dynpro = '0100'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'KO007-L_DEVCLASS'
iv_fval = iv_package ).
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=ADD' ).
ls_bcdata-program = 'BDC_OKCODE'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=WB_BACK' ).
ls_bcdata-program = 'BDC_OKCODE'.
ls_bcdata-dynpro = '0360'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO mt_bcdata.
add_data( iv_fnam = 'BDC_OKCODE'
iv_fval = '=WB_BACK' ).
call_se93( ).
ENDMETHOD.
METHOD deserialize_texts.
DATA lt_tpool_i18n TYPE TABLE OF tstct.
@ -341,6 +334,39 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDMETHOD.
METHOD set_oo_parameters.
DATA: ls_param LIKE LINE OF it_rsparam.
IF cs_rsstcd-call_tcode = c_oo_tcode.
cs_rsstcd-s_trframe = c_true.
LOOP AT it_rsparam INTO ls_param.
CASE ls_param-field.
WHEN c_oo_frclass.
cs_rsstcd-classname = ls_param-value.
WHEN c_oo_frmethod.
cs_rsstcd-method = ls_param-value.
WHEN c_oo_frupdtask.
IF ls_param-value = c_oo_synchron.
cs_rsstcd-s_upddir = c_true.
cs_rsstcd-s_updtask = c_false.
cs_rsstcd-s_updlok = c_false.
ELSEIF ls_param-value = c_oo_asynchron.
cs_rsstcd-s_upddir = c_false.
cs_rsstcd-s_updtask = c_true.
cs_rsstcd-s_updlok = c_false.
ELSE.
cs_rsstcd-s_upddir = c_false.
cs_rsstcd-s_updtask = c_false.
cs_rsstcd-s_updlok = c_true.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
ENDMETHOD.
METHOD split_parameters.
* see subroutine split_parameters in include LSEUKF01
@ -446,32 +472,11 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDIF.
ENDIF.
ENDDO.
* oo-Transaktion mit Framework
IF cs_rsstcd-call_tcode = c_oo_tcode.
cs_rsstcd-s_trframe = c_true.
LOOP AT ct_rsparam INTO ls_param.
CASE ls_param-field.
WHEN c_oo_frclass.
cs_rsstcd-classname = ls_param-value.
WHEN c_oo_frmethod.
cs_rsstcd-method = ls_param-value.
WHEN c_oo_frupdtask.
IF ls_param-value = c_oo_synchron.
cs_rsstcd-s_upddir = c_true.
cs_rsstcd-s_updtask = c_false.
cs_rsstcd-s_updlok = c_false.
ELSEIF ls_param-value = c_oo_asynchron.
cs_rsstcd-s_upddir = c_false.
cs_rsstcd-s_updtask = c_true.
cs_rsstcd-s_updlok = c_false.
ELSE.
cs_rsstcd-s_upddir = c_false.
cs_rsstcd-s_updtask = c_false.
cs_rsstcd-s_updlok = c_true.
ENDIF.
ENDCASE.
ENDLOOP.
ENDIF.
set_oo_parameters(
EXPORTING it_rsparam = ct_rsparam
CHANGING cs_rsstcd = cs_rsstcd ).
ENDMETHOD.
@ -651,6 +656,11 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
DATA: lv_object TYPE eqegraarg.
@ -761,9 +771,4 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
serialize_texts( io_xml ).
ENDMETHOD.
METHOD zif_abapgit_object~is_active.
rv_active = is_active( ).
ENDMETHOD.
ENDCLASS.