refactoring, new program class

This commit is contained in:
Lars Hvam 2016-01-13 15:30:55 +01:00
parent 56af4e6e88
commit a3b99ed574

View File

@ -3,7 +3,7 @@ REPORT zabapgit.
* See https://github.com/larshp/abapGit/
CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT
gc_abap_version TYPE string VALUE 'v0.90'. "#EC NOTEXT
gc_abap_version TYPE string VALUE 'v0.91'. "#EC NOTEXT
********************************************************************************
* The MIT License (MIT)
@ -2582,6 +2582,20 @@ CLASS lcl_objects_super DEFINITION ABSTRACT.
DATA: ms_item TYPE ty_item,
mo_files TYPE REF TO lcl_objects_files.
METHODS:
corr_insert
IMPORTING iv_package TYPE devclass
RAISING lcx_exception,
jump_se11
IMPORTING iv_radio TYPE string
iv_field TYPE string
RAISING lcx_exception.
ENDCLASS. "lcl_objects_super DEFINITION
CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super .
PUBLIC SECTION.
TYPES: BEGIN OF ty_progdir,
name TYPE progdir-name,
state TYPE progdir-state,
@ -2615,21 +2629,6 @@ CLASS lcl_objects_super DEFINITION ABSTRACT.
uccheck TYPE progdir-uccheck,
END OF ty_progdir.
METHODS:
corr_insert
IMPORTING iv_package TYPE devclass
RAISING lcx_exception.
CLASS-METHODS jump_se11
IMPORTING is_item TYPE ty_item
iv_radio TYPE string
iv_field TYPE string
RAISING lcx_exception.
CLASS-METHODS read_progdir
IMPORTING iv_program TYPE programm
RETURNING VALUE(rs_progdir) TYPE ty_progdir.
CLASS-METHODS serialize_program
IMPORTING is_item TYPE ty_item
io_files TYPE REF TO lcl_objects_files
@ -2637,6 +2636,10 @@ CLASS lcl_objects_super DEFINITION ABSTRACT.
iv_extra TYPE clike OPTIONAL
RAISING lcx_exception.
CLASS-METHODS read_progdir
IMPORTING iv_program TYPE programm
RETURNING VALUE(rs_progdir) TYPE ty_progdir.
CLASS-METHODS deserialize_program
IMPORTING is_progdir TYPE ty_progdir
it_source TYPE abaptxt255_tab
@ -2645,7 +2648,6 @@ CLASS lcl_objects_super DEFINITION ABSTRACT.
RAISING lcx_exception.
PRIVATE SECTION.
CLASS-METHODS serialize_dynpros
IMPORTING iv_program_name TYPE programm
io_xml TYPE REF TO lcl_xml
@ -2655,19 +2657,72 @@ CLASS lcl_objects_super DEFINITION ABSTRACT.
IMPORTING iv_program_name TYPE programm
io_xml TYPE REF TO lcl_xml
RAISING lcx_exception.
ENDCLASS.
ENDCLASS. "lcl_objects_super DEFINITION
CLASS lcl_objects_program IMPLEMENTATION.
*----------------------------------------------------------------------*
* CLASS lcl_objects_super IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_objects_super IMPLEMENTATION.
METHOD serialize_program.
METHOD constructor.
ms_item = is_item.
ENDMETHOD.
DATA: ls_progdir TYPE ty_progdir,
lv_program_name TYPE programm,
lt_source TYPE TABLE OF abaptxt255,
lt_tpool TYPE textpool_table,
ls_tpool LIKE LINE OF lt_tpool,
lo_xml TYPE REF TO lcl_xml.
IF iv_program IS INITIAL.
lv_program_name = is_item-obj_name.
ELSE.
lv_program_name = iv_program.
ENDIF.
CALL FUNCTION 'RPY_PROGRAM_READ'
EXPORTING
program_name = lv_program_name
with_lowercase = abap_true
TABLES
source_extended = lt_source
textelements = lt_tpool
EXCEPTIONS
cancelled = 1
not_found = 2
permission_error = 3
OTHERS = 4.
IF sy-subrc = 2.
RETURN.
ELSEIF sy-subrc <> 0.
_raise 'Error reading program'.
ENDIF.
ls_progdir = read_progdir( lv_program_name ).
CREATE OBJECT lo_xml.
lo_xml->structure_add( ig_structure = ls_progdir
iv_name = 'PROGDIR' ).
IF ls_progdir-subc = '1'.
serialize_dynpros( iv_program_name = lv_program_name
io_xml = lo_xml ).
serialize_cua( iv_program_name = lv_program_name
io_xml = lo_xml ).
ENDIF.
IF lines( lt_tpool ) = 1.
READ TABLE lt_tpool INDEX 1 INTO ls_tpool.
ASSERT sy-subrc = 0.
IF ls_tpool-id = 'R' AND ls_tpool-key = '' AND ls_tpool-length = 0.
DELETE lt_tpool INDEX 1.
ENDIF.
ENDIF.
lo_xml->table_add( lt_tpool ).
io_files->add_xml( iv_extra = iv_extra
io_xml = lo_xml ).
io_files->add_abap( iv_extra = iv_extra
it_abap = lt_source ).
ENDMETHOD. "serialize_program
METHOD deserialize_program.
@ -2791,6 +2846,33 @@ CLASS lcl_objects_super IMPLEMENTATION.
ENDMETHOD. "deserialize_program
METHOD read_progdir.
DATA: ls_sapdir TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = iv_program
i_state = 'A'
IMPORTING
e_progdir = ls_sapdir.
MOVE-CORRESPONDING ls_sapdir TO rs_progdir.
CLEAR: rs_progdir-edtx,
rs_progdir-cnam,
rs_progdir-cdat,
rs_progdir-unam,
rs_progdir-udat,
rs_progdir-vern,
rs_progdir-rmand,
rs_progdir-sdate,
rs_progdir-stime,
rs_progdir-idate,
rs_progdir-itime.
ENDMETHOD. "read_progdir
METHOD serialize_cua.
DATA: ls_adm TYPE rsmpe_adm,
@ -2925,95 +3007,18 @@ CLASS lcl_objects_super IMPLEMENTATION.
ENDMETHOD. "serialize_dynpros
METHOD serialize_program.
ENDCLASS.
DATA: ls_progdir TYPE ty_progdir,
lv_program_name TYPE programm,
lt_source TYPE TABLE OF abaptxt255,
lt_tpool TYPE textpool_table,
ls_tpool LIKE LINE OF lt_tpool,
lo_xml TYPE REF TO lcl_xml.
*----------------------------------------------------------------------*
* CLASS lcl_objects_super IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_objects_super IMPLEMENTATION.
IF iv_program IS INITIAL.
lv_program_name = is_item-obj_name.
ELSE.
lv_program_name = iv_program.
ENDIF.
CALL FUNCTION 'RPY_PROGRAM_READ'
EXPORTING
program_name = lv_program_name
with_lowercase = abap_true
TABLES
source_extended = lt_source
textelements = lt_tpool
EXCEPTIONS
cancelled = 1
not_found = 2
permission_error = 3
OTHERS = 4.
IF sy-subrc = 2.
RETURN.
ELSEIF sy-subrc <> 0.
_raise 'Error reading program'.
ENDIF.
ls_progdir = read_progdir( lv_program_name ).
CREATE OBJECT lo_xml.
lo_xml->structure_add( ig_structure = ls_progdir
iv_name = 'PROGDIR' ).
IF ls_progdir-subc = '1'.
serialize_dynpros( iv_program_name = lv_program_name
io_xml = lo_xml ).
serialize_cua( iv_program_name = lv_program_name
io_xml = lo_xml ).
ENDIF.
IF lines( lt_tpool ) = 1.
READ TABLE lt_tpool INDEX 1 INTO ls_tpool.
ASSERT sy-subrc = 0.
IF ls_tpool-id = 'R' AND ls_tpool-key = '' AND ls_tpool-length = 0.
DELETE lt_tpool INDEX 1.
ENDIF.
ENDIF.
lo_xml->table_add( lt_tpool ).
io_files->add_xml( iv_extra = iv_extra
io_xml = lo_xml ).
io_files->add_abap( iv_extra = iv_extra
it_abap = lt_source ).
ENDMETHOD. "serialize_program
METHOD read_progdir.
DATA: ls_sapdir TYPE progdir.
CALL FUNCTION 'READ_PROGDIR'
EXPORTING
i_progname = iv_program
i_state = 'A'
IMPORTING
e_progdir = ls_sapdir.
MOVE-CORRESPONDING ls_sapdir TO rs_progdir.
CLEAR: rs_progdir-edtx,
rs_progdir-cnam,
rs_progdir-cdat,
rs_progdir-unam,
rs_progdir-udat,
rs_progdir-vern,
rs_progdir-rmand,
rs_progdir-sdate,
rs_progdir-stime,
rs_progdir-idate,
rs_progdir-itime.
ENDMETHOD. "read_progdir
METHOD constructor.
ms_item = is_item.
ENDMETHOD.
METHOD jump_se11.
@ -3037,7 +3042,7 @@ CLASS lcl_objects_super IMPLEMENTATION.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = iv_field.
<ls_bdcdata>-fval = is_item-obj_name.
<ls_bdcdata>-fval = ms_item-obj_name.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
@ -3109,8 +3114,7 @@ CLASS lcl_object_doma IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-DOMA'
jump_se11( iv_radio = 'RSRD1-DOMA'
iv_field = 'RSRD1-DOMA_VAL' ).
ENDMETHOD. "jump
@ -3248,8 +3252,7 @@ CLASS lcl_object_dtel IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-DDTYPE'
jump_se11( iv_radio = 'RSRD1-DDTYPE'
iv_field = 'RSRD1-DDTYPE_VAL' ).
ENDMETHOD. "jump
@ -5594,6 +5597,8 @@ CLASS lcl_object_wdca IMPLEMENTATION.
lv_name TYPE wdy_md_object_name.
CLEAR et_data.
ls_key = ms_item-obj_name.
TRY.
@ -6275,8 +6280,7 @@ CLASS lcl_object_type IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-TYMA'
jump_se11( iv_radio = 'RSRD1-TYMA'
iv_field = 'RSRD1-TYMA_VAL' ).
ENDMETHOD. "jump
@ -6640,8 +6644,7 @@ CLASS lcl_object_tabl IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-DDTYPE'
jump_se11( iv_radio = 'RSRD1-DDTYPE'
iv_field = 'RSRD1-DDTYPE_VAL' ).
ENDMETHOD. "jump
@ -7060,8 +7063,7 @@ CLASS lcl_object_enqu IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-ENQU'
jump_se11( iv_radio = 'RSRD1-ENQU'
iv_field = 'RSRD1-ENQU_VAL' ).
ENDMETHOD. "jump
@ -7201,8 +7203,7 @@ CLASS lcl_object_shlp IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-SHMA'
jump_se11( iv_radio = 'RSRD1-SHMA'
iv_field = 'RSRD1-SHMA_VAL' ).
ENDMETHOD. "jump
@ -7821,7 +7822,7 @@ ENDCLASS. "lcl_object_view IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_object_fugr DEFINITION INHERITING FROM lcl_objects_super FINAL.
CLASS lcl_object_fugr DEFINITION INHERITING FROM lcl_objects_program FINAL.
PUBLIC SECTION.
INTERFACES lif_object.
@ -8431,8 +8432,7 @@ CLASS lcl_object_view IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-VIMA'
jump_se11( iv_radio = 'RSRD1-VIMA'
iv_field = 'RSRD1-VIMA_VAL' ).
ENDMETHOD. "jump
@ -8739,8 +8739,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
METHOD lif_object~jump.
jump_se11( is_item = ms_item
iv_radio = 'RSRD1-DDTYPE'
jump_se11( iv_radio = 'RSRD1-DDTYPE'
iv_field = 'RSRD1-DDTYPE_VAL' ).
ENDMETHOD. "jump
@ -8860,7 +8859,7 @@ ENDCLASS. "lcl_object_ttyp IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_object_prog DEFINITION INHERITING FROM lcl_objects_super FINAL.
CLASS lcl_object_prog DEFINITION INHERITING FROM lcl_objects_program FINAL.
PUBLIC SECTION.
INTERFACES lif_object.