diff --git a/src/objects/zcl_abapgit_object_tobj.clas.abap b/src/objects/zcl_abapgit_object_tobj.clas.abap index 389d7b624..62c72d01f 100644 --- a/src/objects/zcl_abapgit_object_tobj.clas.abap +++ b/src/objects/zcl_abapgit_object_tobj.clas.abap @@ -239,42 +239,22 @@ CLASS ZCL_ABAPGIT_OBJECT_TOBJ IMPLEMENTATION. METHOD zif_abapgit_object~jump. - DATA: ls_bcdata TYPE bdcdata, - lt_bcdata TYPE STANDARD TABLE OF bdcdata. + DATA: lv_object_name TYPE e071-obj_name. - ls_bcdata-program = 'SAPMSVIM'. - ls_bcdata-dynpro = '0050'. - ls_bcdata-dynbegin = 'X'. - APPEND ls_bcdata TO lt_bcdata. + lv_object_name = ms_item-obj_name. - CLEAR ls_bcdata. - ls_bcdata-fnam = 'VIMDYNFLDS-VIEWNAME'. - ls_bcdata-fval = substring( val = ms_item-obj_name - len = strlen( ms_item-obj_name ) - 1 ). - APPEND ls_bcdata TO lt_bcdata. - - CLEAR ls_bcdata. - ls_bcdata-fnam = 'VIMDYNFLDS-ELEM_GEN'. - ls_bcdata-fval = abap_true. - 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' + CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL' EXPORTING - tcode = 'SE54' - mode_val = 'E' - TABLES - using_tab = lt_bcdata + iv_pgmid = 'R3TR' + iv_object = ms_item-obj_type + iv_obj_name = lv_object_name EXCEPTIONS - OTHERS = 1. + jump_not_possible = 1 + OTHERS = 2. IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, TOBJ' ). + zcx_abapgit_exception=>raise( |Jump not possible. Subrc={ sy-subrc } | + && |from TR_OBJECT_JUMP_TO_TOOL| ). ENDIF. ENDMETHOD. diff --git a/src/objects/zcl_abapgit_object_view.clas.abap b/src/objects/zcl_abapgit_object_view.clas.abap index b82abdd38..9d99b3557 100644 --- a/src/objects/zcl_abapgit_object_view.clas.abap +++ b/src/objects/zcl_abapgit_object_view.clas.abap @@ -6,6 +6,39 @@ CLASS zcl_abapgit_object_view DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PROTECTED SECTION. PRIVATE SECTION. + TYPES: tty_dd26v TYPE STANDARD TABLE OF dd26v + WITH NON-UNIQUE DEFAULT KEY, + tty_dd27p TYPE STANDARD TABLE OF dd27p + WITH NON-UNIQUE DEFAULT KEY, + tty_dd28j TYPE STANDARD TABLE OF dd28j + WITH NON-UNIQUE DEFAULT KEY, + tty_dd28v TYPE STANDARD TABLE OF dd28v + WITH NON-UNIQUE DEFAULT KEY. + CONSTANTS: BEGIN OF co_viewclass, + help TYPE viewclass VALUE 'H', + database TYPE viewclass VALUE 'D', + projection TYPE viewclass VALUE 'P', + structure TYPE viewclass VALUE 'S', + maintenance TYPE viewclass VALUE 'C', + entity TYPE viewclass VALUE 'E', + view_variant TYPE viewclass VALUE 'V', + append TYPE viewclass VALUE 'A', + external TYPE viewclass VALUE 'X', + replication TYPE viewclass VALUE 'R', + END OF co_viewclass. + + METHODS: + read_view + EXPORTING + es_dd25v TYPE dd25v + es_dd09l TYPE dd09l + et_dd26v TYPE zcl_abapgit_object_view=>tty_dd26v + et_dd27p TYPE zcl_abapgit_object_view=>tty_dd27p + et_dd28j TYPE zcl_abapgit_object_view=>tty_dd28j + et_dd28v TYPE zcl_abapgit_object_view=>tty_dd28v + RAISING + zcx_abapgit_exception. + ENDCLASS. @@ -162,46 +195,60 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION. METHOD zif_abapgit_object~jump. - jump_se11( iv_radio = 'RSRD1-VIMA' - iv_field = 'RSRD1-VIMA_VAL' ). + DATA: ls_dd25v TYPE dd25v. + + read_view( + IMPORTING + es_dd25v = ls_dd25v ). + + CASE ls_dd25v-viewclass. + WHEN co_viewclass-view_variant. + + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING + operation = 'SHOW' + object_name = ms_item-obj_name + object_type = ms_item-obj_type + in_new_window = abap_true + EXCEPTIONS + not_executed = 1 + invalid_object_type = 2 + OTHERS = 3. + + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( |Error from RS_TOOL_ACCESS. Subrc={ sy-subrc }| ). + ENDIF. + + WHEN OTHERS. + + jump_se11( iv_radio = 'RSRD1-VIMA' + iv_field = 'RSRD1-VIMA_VAL' ). + + ENDCASE. ENDMETHOD. METHOD zif_abapgit_object~serialize. - DATA: lv_name TYPE ddobjname, - ls_dd25v TYPE dd25v, + DATA: ls_dd25v TYPE dd25v, ls_dd09l TYPE dd09l, - lt_dd26v TYPE TABLE OF dd26v, - lt_dd27p TYPE TABLE OF dd27p, - lt_dd28j TYPE TABLE OF dd28j, - lt_dd28v TYPE TABLE OF dd28v. + lt_dd26v TYPE tty_dd26v, + lt_dd27p TYPE tty_dd27p, + lt_dd28j TYPE tty_dd28j, + lt_dd28v TYPE tty_dd28v. FIELD-SYMBOLS: LIKE LINE OF lt_dd27p. - - lv_name = ms_item-obj_name. - - CALL FUNCTION 'DDIF_VIEW_GET' - EXPORTING - name = lv_name - state = 'A' - langu = mv_language + read_view( IMPORTING - dd25v_wa = ls_dd25v - dd09l_wa = ls_dd09l - TABLES - dd26v_tab = lt_dd26v - dd27p_tab = lt_dd27p - dd28j_tab = lt_dd28j - dd28v_tab = lt_dd28v - EXCEPTIONS - illegal_input = 1 - OTHERS = 2. - IF sy-subrc <> 0. - zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_GET' ). - ENDIF. + es_dd25v = ls_dd25v + es_dd09l = ls_dd09l + et_dd26v = lt_dd26v + et_dd27p = lt_dd27p + et_dd28j = lt_dd28j + et_dd28v = lt_dd28v ). + IF ls_dd25v IS INITIAL. RETURN. " does not exist in system ENDIF. @@ -252,4 +299,33 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION. iv_name = 'DD28V_TABLE' ). ENDMETHOD. + + METHOD read_view. + + DATA: lv_name TYPE ddobjname. + + lv_name = ms_item-obj_name. + + CALL FUNCTION 'DDIF_VIEW_GET' + EXPORTING + name = lv_name + state = 'A' + langu = mv_language + IMPORTING + dd25v_wa = es_dd25v + dd09l_wa = es_dd09l + TABLES + dd26v_tab = et_dd26v + dd27p_tab = et_dd27p + dd28j_tab = et_dd28j + dd28v_tab = et_dd28v + EXCEPTIONS + illegal_input = 1 + OTHERS = 2. + IF sy-subrc <> 0. + zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_GET' ). + ENDIF. + + ENDMETHOD. + ENDCLASS.