From 2fe5b30e4d1099fe21488ec0713e5c7a5b83adcd Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 22 Nov 2018 12:53:51 +0000 Subject: [PATCH] TRAN refactoring, reduce method length #2128 --- src/objects/zcl_abapgit_object_tran.clas.abap | 559 +++++++++--------- 1 file changed, 282 insertions(+), 277 deletions(-) diff --git a/src/objects/zcl_abapgit_object_tran.clas.abap b/src/objects/zcl_abapgit_object_tran.clas.abap index 7255eef31..5f88c7166 100644 --- a/src/objects/zcl_abapgit_object_tran.clas.abap +++ b/src/objects/zcl_abapgit_object_tran.clas.abap @@ -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: 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.