From 1d1228ed3b64c36650a045137d6c2ca66114dae5 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Thu, 10 Aug 2017 20:19:03 +0000 Subject: [PATCH 1/8] First try SHMA --- src/zabapgit_object_serializing.prog.abap | 1 + src/zabapgit_object_shma.prog.abap | 223 ++++++++++++++++++++++ src/zabapgit_object_shma.prog.xml | 25 +++ 3 files changed, 249 insertions(+) create mode 100644 src/zabapgit_object_shma.prog.abap create mode 100644 src/zabapgit_object_shma.prog.xml diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index faf27989e..88317e1dc 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -41,6 +41,7 @@ INCLUDE zabapgit_object_sfpi. INCLUDE zabapgit_object_sfsw. INCLUDE zabapgit_object_shi3. INCLUDE zabapgit_object_shlp. +INCLUDE zabapgit_object_shma. INCLUDE zabapgit_object_sicf. INCLUDE zabapgit_object_smim. INCLUDE zabapgit_object_splo. diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap new file mode 100644 index 000000000..0cecac442 --- /dev/null +++ b/src/zabapgit_object_shma.prog.abap @@ -0,0 +1,223 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_shma +*&---------------------------------------------------------------------* + +CLASS lcl_object_shma DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + + PRIVATE SECTION. + TYPES: db_startup_table TYPE STANDARD TABLE OF shma_start WITH DEFAULT KEY, + db_startup_table_rts TYPE STANDARD TABLE OF shma_start_rts WITH DEFAULT KEY. + + TYPES: + BEGIN OF change_info, + defined TYPE shma_chg_info, + rts TYPE shma_chg_info, + startup TYPE shma_chg_info, + startup_rts TYPE shma_chg_info, + END OF change_info. + +ENDCLASS. + +CLASS lcl_object_shma IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + + rv_changed = abap_true. + + ENDMETHOD. + + METHOD lif_object~changed_by. + + rv_user = c_user_unknown. + + ENDMETHOD. + + METHOD lif_object~get_metadata. + + rs_metadata = get_metadata( ). + rs_metadata-delete_tadir = abap_true. + + ENDMETHOD. + + METHOD lif_object~exists. + + DATA: clskey TYPE seoclskey. + + clskey = ms_item-obj_name. + + CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK' + EXPORTING + clskey = clskey + EXCEPTIONS + not_specified = 1 + not_existing = 2 + is_interface = 3 + no_text = 4 + inconsistent = 5 + OTHERS = 6. + + rv_bool = boolc( sy-subrc = 0 ). + + ENDMETHOD. + + METHOD lif_object~serialize. + + DATA: area_name TYPE shm_area_name, + area_attributes TYPE shma_attributes, + area_attributes_rts TYPE shma_rts_table, + oo_attributes TYPE seoo_attributes_r, + startup_list TYPE db_startup_table, + startup_list_rts TYPE db_startup_table_rts, + change_info TYPE change_info, + tadir_shma TYPE tadir, + tadir_class TYPE tadir. + + area_name = ms_item-obj_name. + + TRY. + CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('READ_AREA_ATTRIBUTES_ALL') + EXPORTING + area_name = area_name + IMPORTING + area_attributes = area_attributes + area_attributes_rts = area_attributes_rts + oo_attributes = oo_attributes + startup_list = startup_list + startup_list_rts = startup_list_rts + change_info = change_info + tadir_shma = tadir_shma + tadir_class = tadir_class. + + io_xml->add( iv_name = 'AREA_ATTRIBUTES' + ig_data = area_attributes ). + + io_xml->add( iv_name = 'AREA_ATTRIBUTES_RTS' + ig_data = area_attributes_rts ). + + io_xml->add( iv_name = 'OO_ATTRIBUTES' + ig_data = oo_attributes ). + + io_xml->add( iv_name = 'STARTUP_LIST' + ig_data = startup_list ). + + io_xml->add( iv_name = 'STARTUP_LIST_RTS' + ig_data = startup_list_rts ). + + io_xml->add( iv_name = 'CHANGE_INFO' + ig_data = change_info ). + + io_xml->add( iv_name = 'TADIR_SHMA' + ig_data = tadir_shma ). + + io_xml->add( iv_name = 'TADIR_CLASS' + ig_data = tadir_class ). + + CATCH cx_root INTO DATA(error). + lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~deserialize. + + DATA: area_name TYPE shm_area_name, + area_attributes TYPE shma_attributes, + area_attributes_rts TYPE shma_rts_table, + oo_attributes TYPE seoo_attributes_r, + startup_list TYPE db_startup_table, + startup_list_rts TYPE db_startup_table_rts, + change_info TYPE change_info, + tadir_shma TYPE tadir, + tadir_class TYPE tadir. + + area_name = ms_item-obj_name. + + io_xml->read( + EXPORTING + iv_name = 'AREA_ATTRIBUTES' + CHANGING + cg_data = area_attributes ). + + io_xml->read( + EXPORTING + iv_name = 'STARTUP_LIST' + CHANGING + cg_data = startup_list ). + + TRY. + CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('INSERT_AREA') + EXPORTING + area_name = area_name + attributes = area_attributes + startup_list = startup_list + force_overwrite = abap_true. + + CATCH cx_root INTO DATA(error). + lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~delete. + + DATA: area_name TYPE shm_area_name. + + area_name = ms_item-obj_name. + + TRY. + CALL FUNCTION 'SHMA_DELETE_AREA' + EXPORTING + area_name = area_name. + + CATCH cx_root INTO DATA(error). + lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~jump. + + DATA: ls_bcdata TYPE bdcdata, + lt_bcdata TYPE STANDARD TABLE OF bdcdata. + + ls_bcdata-program = 'SAPLSHMA'. + ls_bcdata-dynpro = '0100'. + ls_bcdata-dynbegin = 'X'. + APPEND ls_bcdata TO lt_bcdata. + + CLEAR ls_bcdata. + ls_bcdata-fnam = 'SHMA_ATTRIBUTES-AREA_NAME'. + ls_bcdata-fval = ms_item-obj_name. + APPEND ls_bcdata TO lt_bcdata. + + CLEAR ls_bcdata. + ls_bcdata-fnam = 'BDC_OKCODE'. + ls_bcdata-fval = '=SHOW'. + APPEND ls_bcdata TO lt_bcdata. + + CALL FUNCTION 'ABAP4_CALL_TRANSACTION' + STARTING NEW TASK 'GIT' + EXPORTING + tcode = 'SHMA' + mode_val = 'E' + TABLES + using_tab = lt_bcdata + EXCEPTIONS + OTHERS = 1. + + IF sy-subrc <> 0. + lcx_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, SHMA' ). + ENDIF. + + ENDMETHOD. + + METHOD lif_object~compare_to_remote_version. + + CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null. + + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_object_shma.prog.xml b/src/zabapgit_object_shma.prog.xml new file mode 100644 index 000000000..aa960866e --- /dev/null +++ b/src/zabapgit_object_shma.prog.xml @@ -0,0 +1,25 @@ + + + + + + ZABAPGIT_OBJECT_SHMA + A + X + S + D$ + I + X + D$S + X + + + + R + ZABAPGIT_OBJECT_SHMA + 20 + + + + + From 71734a27e94bc1bd5072539d466c016efea2097f Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 14 Aug 2017 19:16:29 +0000 Subject: [PATCH 2/8] Optimizing and fixing SHMA --- src/zabapgit_object_shma.prog.abap | 191 ++++++++++++++++++++++++----- 1 file changed, 161 insertions(+), 30 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 0cecac442..9e147c254 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -38,26 +38,17 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). - rs_metadata-delete_tadir = abap_true. ENDMETHOD. METHOD lif_object~exists. - DATA: clskey TYPE seoclskey. + DATA: area_name TYPE shm_area_name. - clskey = ms_item-obj_name. - - CALL FUNCTION 'SEO_CLASS_EXISTENCE_CHECK' - EXPORTING - clskey = clskey - EXCEPTIONS - not_specified = 1 - not_existing = 2 - is_interface = 3 - no_text = 4 - inconsistent = 5 - OTHERS = 6. + SELECT SINGLE area_name + FROM shma_attributes + INTO area_name + WHERE area_name = ms_item-obj_name. rv_bool = boolc( sy-subrc = 0 ). @@ -91,6 +82,30 @@ CLASS lcl_object_shma IMPLEMENTATION. tadir_shma = tadir_shma tadir_class = tadir_class. + CLEAR: area_attributes-chg_user, + area_attributes-chg_date, + area_attributes-chg_time, + area_attributes-cls_gen_user , + area_attributes-cls_gen_date , + area_attributes-cls_gen_time. + + LOOP AT area_attributes_rts ASSIGNING FIELD-SYMBOL(). + + CLEAR: -chg_user, + -chg_date, + -chg_time. + + ENDLOOP. + + LOOP AT oo_attributes ASSIGNING FIELD-SYMBOL(). + + CLEAR: -createdon, + -changedby, + -changedon. + + ENDLOOP. + + io_xml->add( iv_name = 'AREA_ATTRIBUTES' ig_data = area_attributes ). @@ -123,15 +138,9 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~deserialize. - DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes, - area_attributes_rts TYPE shma_rts_table, - oo_attributes TYPE seoo_attributes_r, - startup_list TYPE db_startup_table, - startup_list_rts TYPE db_startup_table_rts, - change_info TYPE change_info, - tadir_shma TYPE tadir, - tadir_class TYPE tadir. + DATA: area_name TYPE shm_area_name, + area_attributes TYPE shma_attributes, + startup_list TYPE db_startup_table. area_name = ms_item-obj_name. @@ -150,10 +159,13 @@ CLASS lcl_object_shma IMPLEMENTATION. TRY. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('INSERT_AREA') EXPORTING - area_name = area_name - attributes = area_attributes - startup_list = startup_list - force_overwrite = abap_true. + area_name = area_name + attributes = area_attributes + startup_list = startup_list + force_overwrite = abap_true + no_class_generation = abap_true + silent_mode = abap_true. + CATCH cx_root INTO DATA(error). lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). @@ -163,16 +175,135 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~delete. - DATA: area_name TYPE shm_area_name. + " We can't use FM SHMA_DELETE_AREA because it depends + " on the corresponding class, but in abapGit it has its own + " lifecycle. Therefore we have to reimplement most of the + " FMs logic + + + CONSTANTS: + c_request_delete TYPE i VALUE '4'. + + DATA: l_request TYPE i, + area_name TYPE shm_area_name, + l_order TYPE e070-trkorr, + l_korrnum TYPE tadir-korrnum, + l_objname TYPE tadir-obj_name, + l_task TYPE e070-trkorr, + l_append TYPE abap_bool, + l_tadir TYPE tadir, + l_tdevc TYPE tdevc, + lo_cts_if TYPE REF TO object. area_name = ms_item-obj_name. TRY. - CALL FUNCTION 'SHMA_DELETE_AREA' + CALL FUNCTION 'ENQUEUE_E_SHM_AREA' + EXPORTING + mode_shma_attributes = 'E' + area_name = area_name + x_area_name = ' ' + _scope = '2' + _wait = ' ' + _collect = ' ' + EXCEPTIONS + foreign_lock = 1 + system_failure = 2 + OTHERS = 3. + + IF sy-subrc <> 0. + lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). + ENDIF. + + CREATE OBJECT lo_cts_if TYPE ('\FUNCTION-POOL=SHMA\CLASS=LCL_CTS_INTERFACE') + EXPORTING + area = area_name. + + CALL METHOD lo_cts_if->('CHECK_AREA') + EXPORTING + request = c_request_delete + IMPORTING + access_mode = l_request + appendable = l_append. + + IF l_request <> c_request_delete. + lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). + ENDIF. + + CALL METHOD lo_cts_if->('INSERT_AREA') + EXPORTING + request = c_request_delete + IMPORTING + order = l_order + task = l_task. + + DELETE FROM shma_attributes WHERE area_name = area_name. + DELETE FROM shma_start WHERE area_name = area_name. + + l_korrnum = l_order. + l_objname = area_name. + + CALL FUNCTION 'TR_TADIR_INTERFACE' + EXPORTING + wi_read_only = abap_true + wi_tadir_pgmid = 'R3TR' + wi_tadir_object = 'SHMA' + wi_tadir_obj_name = l_objname + IMPORTING + new_tadir_entry = l_tadir + EXCEPTIONS + OTHERS = 0. + + CALL FUNCTION 'TR_DEVCLASS_GET' + EXPORTING + iv_devclass = l_tadir-devclass + IMPORTING + es_tdevc = l_tdevc + EXCEPTIONS + OTHERS = 1. + + IF sy-subrc = 0 AND l_tdevc-korrflag IS INITIAL. + + " TADIR entries for local objects must be deleted 'by hand' + + CALL FUNCTION 'TR_TADIR_INTERFACE' + EXPORTING + wi_test_modus = abap_false + wi_delete_tadir_entry = abap_true + wi_tadir_pgmid = 'R3TR' + wi_tadir_object = 'SHMA' + wi_tadir_obj_name = l_objname + wi_tadir_korrnum = l_korrnum + EXCEPTIONS + OTHERS = 0. + + CALL FUNCTION 'TR_TADIR_INTERFACE' + EXPORTING + wi_test_modus = abap_false + wi_delete_tadir_entry = abap_true + wi_tadir_pgmid = 'R3TR' + wi_tadir_object = 'CLAS' + wi_tadir_obj_name = l_objname + wi_tadir_korrnum = l_korrnum + EXCEPTIONS + OTHERS = 0. + + ENDIF. + + CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('DELETE_RUNTIME_SETTINGS') EXPORTING area_name = area_name. - CATCH cx_root INTO DATA(error). + CALL FUNCTION 'DEQUEUE_E_SHM_AREA' + EXPORTING + mode_shma_attributes = 'E' + area_name = area_name + x_area_name = ' ' + _scope = '3' + _synchron = ' ' + _collect = ' '. + + CATCH cx_root. lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). ENDTRY. From 7f952e7e2e42697c6c92c526960a7987cb3ddeda Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 14 Aug 2017 19:21:43 +0000 Subject: [PATCH 3/8] cleanup delete --- src/zabapgit_object_shma.prog.abap | 108 ++++++++--------------------- 1 file changed, 30 insertions(+), 78 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 9e147c254..994539262 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -56,31 +56,19 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~serialize. - DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes, - area_attributes_rts TYPE shma_rts_table, - oo_attributes TYPE seoo_attributes_r, - startup_list TYPE db_startup_table, - startup_list_rts TYPE db_startup_table_rts, - change_info TYPE change_info, - tadir_shma TYPE tadir, - tadir_class TYPE tadir. + DATA: area_name TYPE shm_area_name, + area_attributes TYPE shma_attributes, + startup_list TYPE db_startup_table. area_name = ms_item-obj_name. TRY. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('READ_AREA_ATTRIBUTES_ALL') EXPORTING - area_name = area_name + area_name = area_name IMPORTING - area_attributes = area_attributes - area_attributes_rts = area_attributes_rts - oo_attributes = oo_attributes - startup_list = startup_list - startup_list_rts = startup_list_rts - change_info = change_info - tadir_shma = tadir_shma - tadir_class = tadir_class. + area_attributes = area_attributes + startup_list = startup_list. CLEAR: area_attributes-chg_user, area_attributes-chg_date, @@ -89,47 +77,12 @@ CLASS lcl_object_shma IMPLEMENTATION. area_attributes-cls_gen_date , area_attributes-cls_gen_time. - LOOP AT area_attributes_rts ASSIGNING FIELD-SYMBOL(). - - CLEAR: -chg_user, - -chg_date, - -chg_time. - - ENDLOOP. - - LOOP AT oo_attributes ASSIGNING FIELD-SYMBOL(). - - CLEAR: -createdon, - -changedby, - -changedon. - - ENDLOOP. - - io_xml->add( iv_name = 'AREA_ATTRIBUTES' ig_data = area_attributes ). - io_xml->add( iv_name = 'AREA_ATTRIBUTES_RTS' - ig_data = area_attributes_rts ). - - io_xml->add( iv_name = 'OO_ATTRIBUTES' - ig_data = oo_attributes ). - io_xml->add( iv_name = 'STARTUP_LIST' ig_data = startup_list ). - io_xml->add( iv_name = 'STARTUP_LIST_RTS' - ig_data = startup_list_rts ). - - io_xml->add( iv_name = 'CHANGE_INFO' - ig_data = change_info ). - - io_xml->add( iv_name = 'TADIR_SHMA' - ig_data = tadir_shma ). - - io_xml->add( iv_name = 'TADIR_CLASS' - ig_data = tadir_class ). - CATCH cx_root INTO DATA(error). lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). ENDTRY. @@ -180,19 +133,18 @@ CLASS lcl_object_shma IMPLEMENTATION. " lifecycle. Therefore we have to reimplement most of the " FMs logic - CONSTANTS: c_request_delete TYPE i VALUE '4'. - DATA: l_request TYPE i, + DATA: request TYPE i, area_name TYPE shm_area_name, - l_order TYPE e070-trkorr, - l_korrnum TYPE tadir-korrnum, - l_objname TYPE tadir-obj_name, - l_task TYPE e070-trkorr, - l_append TYPE abap_bool, - l_tadir TYPE tadir, - l_tdevc TYPE tdevc, + order TYPE e070-trkorr, + korrnum TYPE tadir-korrnum, + objname TYPE tadir-obj_name, + task TYPE e070-trkorr, + append TYPE abap_bool, + tadir TYPE tadir, + tdevc TYPE tdevc, lo_cts_if TYPE REF TO object. area_name = ms_item-obj_name. @@ -223,10 +175,10 @@ CLASS lcl_object_shma IMPLEMENTATION. EXPORTING request = c_request_delete IMPORTING - access_mode = l_request - appendable = l_append. + access_mode = request + appendable = append. - IF l_request <> c_request_delete. + IF request <> c_request_delete. lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). ENDIF. @@ -234,35 +186,35 @@ CLASS lcl_object_shma IMPLEMENTATION. EXPORTING request = c_request_delete IMPORTING - order = l_order - task = l_task. + order = order + task = task. DELETE FROM shma_attributes WHERE area_name = area_name. DELETE FROM shma_start WHERE area_name = area_name. - l_korrnum = l_order. - l_objname = area_name. + korrnum = order. + objname = area_name. CALL FUNCTION 'TR_TADIR_INTERFACE' EXPORTING wi_read_only = abap_true wi_tadir_pgmid = 'R3TR' wi_tadir_object = 'SHMA' - wi_tadir_obj_name = l_objname + wi_tadir_obj_name = objname IMPORTING - new_tadir_entry = l_tadir + new_tadir_entry = tadir EXCEPTIONS OTHERS = 0. CALL FUNCTION 'TR_DEVCLASS_GET' EXPORTING - iv_devclass = l_tadir-devclass + iv_devclass = tadir-devclass IMPORTING - es_tdevc = l_tdevc + es_tdevc = tdevc EXCEPTIONS OTHERS = 1. - IF sy-subrc = 0 AND l_tdevc-korrflag IS INITIAL. + IF sy-subrc = 0 AND tdevc-korrflag IS INITIAL. " TADIR entries for local objects must be deleted 'by hand' @@ -272,8 +224,8 @@ CLASS lcl_object_shma IMPLEMENTATION. wi_delete_tadir_entry = abap_true wi_tadir_pgmid = 'R3TR' wi_tadir_object = 'SHMA' - wi_tadir_obj_name = l_objname - wi_tadir_korrnum = l_korrnum + wi_tadir_obj_name = objname + wi_tadir_korrnum = korrnum EXCEPTIONS OTHERS = 0. @@ -283,8 +235,8 @@ CLASS lcl_object_shma IMPLEMENTATION. wi_delete_tadir_entry = abap_true wi_tadir_pgmid = 'R3TR' wi_tadir_object = 'CLAS' - wi_tadir_obj_name = l_objname - wi_tadir_korrnum = l_korrnum + wi_tadir_obj_name = objname + wi_tadir_korrnum = korrnum EXCEPTIONS OTHERS = 0. From 786c845c0a7078dab3e432acf4655af11f7a35ce Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 14 Aug 2017 20:04:23 +0000 Subject: [PATCH 4/8] add free area to delete --- src/zabapgit_object_shma.prog.abap | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 994539262..0537a119f 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -167,6 +167,11 @@ CLASS lcl_object_shma IMPLEMENTATION. lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). ENDIF. + CALL METHOD ('\PROGRAM=SAPMSHM_MONITOR\CLASS=LCL_SHMM')=>('FREE_AREA_BY_NAME') + EXPORTING + area_name = area_name + affect_server = cl_shm_area=>affect_all_servers. + CREATE OBJECT lo_cts_if TYPE ('\FUNCTION-POOL=SHMA\CLASS=LCL_CTS_INTERFACE') EXPORTING area = area_name. From fa24f82610f3c300d29e744edc95af48cf7fd728 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Mon, 14 Aug 2017 20:06:34 +0000 Subject: [PATCH 5/8] delete superfluos type definition --- src/zabapgit_object_shma.prog.abap | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 0537a119f..5404c3b5d 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -11,14 +11,6 @@ CLASS lcl_object_shma DEFINITION INHERITING FROM lcl_objects_super FINAL. TYPES: db_startup_table TYPE STANDARD TABLE OF shma_start WITH DEFAULT KEY, db_startup_table_rts TYPE STANDARD TABLE OF shma_start_rts WITH DEFAULT KEY. - TYPES: - BEGIN OF change_info, - defined TYPE shma_chg_info, - rts TYPE shma_chg_info, - startup TYPE shma_chg_info, - startup_rts TYPE shma_chg_info, - END OF change_info. - ENDCLASS. CLASS lcl_object_shma IMPLEMENTATION. From d47246ca268e80dbe7f4f532a16c233ade606180 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 19 Aug 2017 08:09:46 +0000 Subject: [PATCH 6/8] remove startup list --- src/zabapgit_object_shma.prog.abap | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 5404c3b5d..6b7c106e4 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -7,10 +7,6 @@ CLASS lcl_object_shma DEFINITION INHERITING FROM lcl_objects_super FINAL. PUBLIC SECTION. INTERFACES lif_object. - PRIVATE SECTION. - TYPES: db_startup_table TYPE STANDARD TABLE OF shma_start WITH DEFAULT KEY, - db_startup_table_rts TYPE STANDARD TABLE OF shma_start_rts WITH DEFAULT KEY. - ENDCLASS. CLASS lcl_object_shma IMPLEMENTATION. @@ -49,8 +45,7 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~serialize. DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes, - startup_list TYPE db_startup_table. + area_attributes TYPE shma_attributes. area_name = ms_item-obj_name. @@ -59,8 +54,7 @@ CLASS lcl_object_shma IMPLEMENTATION. EXPORTING area_name = area_name IMPORTING - area_attributes = area_attributes - startup_list = startup_list. + area_attributes = area_attributes. CLEAR: area_attributes-chg_user, area_attributes-chg_date, @@ -72,9 +66,6 @@ CLASS lcl_object_shma IMPLEMENTATION. io_xml->add( iv_name = 'AREA_ATTRIBUTES' ig_data = area_attributes ). - io_xml->add( iv_name = 'STARTUP_LIST' - ig_data = startup_list ). - CATCH cx_root INTO DATA(error). lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). ENDTRY. @@ -84,8 +75,7 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~deserialize. DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes, - startup_list TYPE db_startup_table. + area_attributes TYPE shma_attributes. area_name = ms_item-obj_name. @@ -95,18 +85,11 @@ CLASS lcl_object_shma IMPLEMENTATION. CHANGING cg_data = area_attributes ). - io_xml->read( - EXPORTING - iv_name = 'STARTUP_LIST' - CHANGING - cg_data = startup_list ). - TRY. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('INSERT_AREA') EXPORTING area_name = area_name attributes = area_attributes - startup_list = startup_list force_overwrite = abap_true no_class_generation = abap_true silent_mode = abap_true. From 85cd5abe4a2cc75efc13aa13e1983354cf690933 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 19 Aug 2017 08:11:44 +0000 Subject: [PATCH 7/8] downport --- src/zabapgit_object_shma.prog.abap | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 6b7c106e4..79c46a536 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -66,7 +66,7 @@ CLASS lcl_object_shma IMPLEMENTATION. io_xml->add( iv_name = 'AREA_ATTRIBUTES' ig_data = area_attributes ). - CATCH cx_root INTO DATA(error). + CATCH cx_root. lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). ENDTRY. @@ -94,8 +94,7 @@ CLASS lcl_object_shma IMPLEMENTATION. no_class_generation = abap_true silent_mode = abap_true. - - CATCH cx_root INTO DATA(error). + CATCH cx_root. lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). ENDTRY. From 9690758bdbab9632b14a7056abf936796545c8ea Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 19 Aug 2017 09:14:18 +0000 Subject: [PATCH 8/8] del superfl. call to TR_TADIR_INTERFACE + renaming delete superfluous call to TR_TADIR_INTERFACE and renaming local variables and constants --- src/zabapgit_object_shma.prog.abap | 122 +++++++++++++---------------- 1 file changed, 55 insertions(+), 67 deletions(-) diff --git a/src/zabapgit_object_shma.prog.abap b/src/zabapgit_object_shma.prog.abap index 79c46a536..a35a90b4c 100644 --- a/src/zabapgit_object_shma.prog.abap +++ b/src/zabapgit_object_shma.prog.abap @@ -31,11 +31,11 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~exists. - DATA: area_name TYPE shm_area_name. + DATA: lv_area_name TYPE shm_area_name. SELECT SINGLE area_name FROM shma_attributes - INTO area_name + INTO lv_area_name WHERE area_name = ms_item-obj_name. rv_bool = boolc( sy-subrc = 0 ). @@ -44,27 +44,27 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~serialize. - DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes. + DATA: lv_area_name TYPE shm_area_name, + ls_area_attributes TYPE shma_attributes. - area_name = ms_item-obj_name. + lv_area_name = ms_item-obj_name. TRY. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('READ_AREA_ATTRIBUTES_ALL') EXPORTING - area_name = area_name + area_name = lv_area_name IMPORTING - area_attributes = area_attributes. + area_attributes = ls_area_attributes. - CLEAR: area_attributes-chg_user, - area_attributes-chg_date, - area_attributes-chg_time, - area_attributes-cls_gen_user , - area_attributes-cls_gen_date , - area_attributes-cls_gen_time. + CLEAR: ls_area_attributes-chg_user, + ls_area_attributes-chg_date, + ls_area_attributes-chg_time, + ls_area_attributes-cls_gen_user , + ls_area_attributes-cls_gen_date , + ls_area_attributes-cls_gen_time. io_xml->add( iv_name = 'AREA_ATTRIBUTES' - ig_data = area_attributes ). + ig_data = ls_area_attributes ). CATCH cx_root. lcx_exception=>raise( |Error serializing SHMA { ms_item-obj_name }| ). @@ -74,22 +74,22 @@ CLASS lcl_object_shma IMPLEMENTATION. METHOD lif_object~deserialize. - DATA: area_name TYPE shm_area_name, - area_attributes TYPE shma_attributes. + DATA: lv_area_name TYPE shm_area_name, + ls_area_attributes TYPE shma_attributes. - area_name = ms_item-obj_name. + lv_area_name = ms_item-obj_name. io_xml->read( EXPORTING iv_name = 'AREA_ATTRIBUTES' CHANGING - cg_data = area_attributes ). + cg_data = ls_area_attributes ). TRY. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('INSERT_AREA') EXPORTING - area_name = area_name - attributes = area_attributes + area_name = lv_area_name + attributes = ls_area_attributes force_overwrite = abap_true no_class_generation = abap_true silent_mode = abap_true. @@ -107,27 +107,26 @@ CLASS lcl_object_shma IMPLEMENTATION. " lifecycle. Therefore we have to reimplement most of the " FMs logic - CONSTANTS: - c_request_delete TYPE i VALUE '4'. + CONSTANTS: lc_request_delete TYPE i VALUE '4'. - DATA: request TYPE i, - area_name TYPE shm_area_name, - order TYPE e070-trkorr, - korrnum TYPE tadir-korrnum, - objname TYPE tadir-obj_name, - task TYPE e070-trkorr, - append TYPE abap_bool, - tadir TYPE tadir, - tdevc TYPE tdevc, - lo_cts_if TYPE REF TO object. + DATA: lv_request TYPE i, + lv_area_name TYPE shm_area_name, + lv_order TYPE e070-trkorr, + lv_korrnum TYPE tadir-korrnum, + lv_objname TYPE tadir-obj_name, + lv_task TYPE e070-trkorr, + lv_append TYPE abap_bool, + ls_tadir TYPE tadir, + ls_tdevc TYPE tdevc, + lo_cts_if TYPE REF TO object. - area_name = ms_item-obj_name. + lv_area_name = ms_item-obj_name. TRY. CALL FUNCTION 'ENQUEUE_E_SHM_AREA' EXPORTING mode_shma_attributes = 'E' - area_name = area_name + area_name = lv_area_name x_area_name = ' ' _scope = '2' _wait = ' ' @@ -143,57 +142,57 @@ CLASS lcl_object_shma IMPLEMENTATION. CALL METHOD ('\PROGRAM=SAPMSHM_MONITOR\CLASS=LCL_SHMM')=>('FREE_AREA_BY_NAME') EXPORTING - area_name = area_name + area_name = lv_area_name affect_server = cl_shm_area=>affect_all_servers. CREATE OBJECT lo_cts_if TYPE ('\FUNCTION-POOL=SHMA\CLASS=LCL_CTS_INTERFACE') EXPORTING - area = area_name. + area = lv_area_name. CALL METHOD lo_cts_if->('CHECK_AREA') EXPORTING - request = c_request_delete + request = lc_request_delete IMPORTING - access_mode = request - appendable = append. + access_mode = lv_request + appendable = lv_append. - IF request <> c_request_delete. + IF lv_request <> lc_request_delete. lcx_exception=>raise( |Error deleting SHMA { ms_item-obj_name }| ). ENDIF. CALL METHOD lo_cts_if->('INSERT_AREA') EXPORTING - request = c_request_delete + request = lc_request_delete IMPORTING - order = order - task = task. + order = lv_order + task = lv_task. - DELETE FROM shma_attributes WHERE area_name = area_name. - DELETE FROM shma_start WHERE area_name = area_name. + DELETE FROM shma_attributes WHERE area_name = lv_area_name. + DELETE FROM shma_start WHERE area_name = lv_area_name. - korrnum = order. - objname = area_name. + lv_korrnum = lv_order. + lv_objname = lv_area_name. CALL FUNCTION 'TR_TADIR_INTERFACE' EXPORTING wi_read_only = abap_true wi_tadir_pgmid = 'R3TR' wi_tadir_object = 'SHMA' - wi_tadir_obj_name = objname + wi_tadir_obj_name = lv_objname IMPORTING - new_tadir_entry = tadir + new_tadir_entry = ls_tadir EXCEPTIONS OTHERS = 0. CALL FUNCTION 'TR_DEVCLASS_GET' EXPORTING - iv_devclass = tadir-devclass + iv_devclass = ls_tadir-devclass IMPORTING - es_tdevc = tdevc + es_tdevc = ls_tdevc EXCEPTIONS OTHERS = 1. - IF sy-subrc = 0 AND tdevc-korrflag IS INITIAL. + IF sy-subrc = 0 AND ls_tdevc-korrflag IS INITIAL. " TADIR entries for local objects must be deleted 'by hand' @@ -203,19 +202,8 @@ CLASS lcl_object_shma IMPLEMENTATION. wi_delete_tadir_entry = abap_true wi_tadir_pgmid = 'R3TR' wi_tadir_object = 'SHMA' - wi_tadir_obj_name = objname - wi_tadir_korrnum = korrnum - EXCEPTIONS - OTHERS = 0. - - CALL FUNCTION 'TR_TADIR_INTERFACE' - EXPORTING - wi_test_modus = abap_false - wi_delete_tadir_entry = abap_true - wi_tadir_pgmid = 'R3TR' - wi_tadir_object = 'CLAS' - wi_tadir_obj_name = objname - wi_tadir_korrnum = korrnum + wi_tadir_obj_name = lv_objname + wi_tadir_korrnum = lv_korrnum EXCEPTIONS OTHERS = 0. @@ -223,12 +211,12 @@ CLASS lcl_object_shma IMPLEMENTATION. CALL METHOD ('\PROGRAM=SAPLSHMA\CLASS=LCL_SHMA_HELPER')=>('DELETE_RUNTIME_SETTINGS') EXPORTING - area_name = area_name. + area_name = lv_area_name. CALL FUNCTION 'DEQUEUE_E_SHM_AREA' EXPORTING mode_shma_attributes = 'E' - area_name = area_name + area_name = lv_area_name x_area_name = ' ' _scope = '3' _synchron = ' '