fix some naming conventions #1132 (#1211)

This commit is contained in:
Lars Hvam 2018-02-17 13:55:12 +01:00 committed by GitHub
parent 85d364d460
commit 803148fa0f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
48 changed files with 3362 additions and 3048 deletions

View File

@ -67,11 +67,11 @@ CLASS ZCL_ABAPGIT_2FA_AUTH_REGISTRY IMPLEMENTATION.
METHOD get_authenticator_for_url. METHOD get_authenticator_for_url.
FIELD-SYMBOLS: <lo_authenticator> LIKE LINE OF gt_registered_authenticators. FIELD-SYMBOLS: <li_authenticator> LIKE LINE OF gt_registered_authenticators.
LOOP AT gt_registered_authenticators ASSIGNING <lo_authenticator>. LOOP AT gt_registered_authenticators ASSIGNING <li_authenticator>.
IF <lo_authenticator>->supports_url( iv_url ) = abap_true. IF <li_authenticator>->supports_url( iv_url ) = abap_true.
ro_authenticator = <lo_authenticator>. ro_authenticator = <li_authenticator>.
RETURN. RETURN.
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.

View File

@ -6,36 +6,46 @@ CLASS zcl_abapgit_object_auth DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_auth IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~get_metadata. CLASS ZCL_ABAPGIT_OBJECT_AUTH IMPLEMENTATION.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
* looks like "changed by user" is not stored in the database * looks like "changed by user" is not stored in the database
rv_user = c_user_unknown. rv_user = c_user_unknown.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: ls_authx TYPE authx. METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
SELECT SINGLE * FROM authx INTO ls_authx METHOD zif_abapgit_object~delete.
WHERE fieldname = ms_item-obj_name. "#EC CI_GENBUFF
DATA: lv_fieldname TYPE authx-fieldname.
lv_fieldname = ms_item-obj_name.
* there is a bug in SAP standard, the TADIR entries are not deleted
* when the AUTH object is deleted in transaction SU20
CALL FUNCTION 'SUSR_AUTF_DELETE_FIELD'
EXPORTING
fieldname = lv_fieldname
EXCEPTIONS
delete_not_possible = 1
field_in_use = 2
not_existing = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc <> 0. IF sy-subrc <> 0.
RETURN. zcx_abapgit_exception=>raise( 'error from SUSR_AUTF_DELETE_FIELD' ).
ENDIF. ENDIF.
io_xml->add( iv_name = 'AUTHX' ENDMETHOD. "zif_abapgit_object~delete
ig_data = ls_authx ).
ENDMETHOD. "zif_abapgit_object~serialize
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
* see include LSAUT_FIELDF02 * see include LSAUT_FIELDF02
@ -63,29 +73,6 @@ CLASS zcl_abapgit_object_auth IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~deserialize ENDMETHOD. "zif_abapgit_object~deserialize
METHOD zif_abapgit_object~delete.
DATA: lv_fieldname TYPE authx-fieldname.
lv_fieldname = ms_item-obj_name.
* there is a bug in SAP standard, the TADIR entries are not deleted
* when the AUTH object is deleted in transaction SU20
CALL FUNCTION 'SUSR_AUTF_DELETE_FIELD'
EXPORTING
fieldname = lv_fieldname
EXCEPTIONS
delete_not_possible = 1
field_in_use = 2
not_existing = 3
no_authority = 4
OTHERS = 5.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SUSR_AUTF_DELETE_FIELD' ).
ENDIF.
ENDMETHOD. "zif_abapgit_object~delete
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
@ -99,22 +86,45 @@ CLASS zcl_abapgit_object_auth IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~exists ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
DATA: field TYPE fieldname. DATA: lv_field TYPE fieldname.
field = ms_item-obj_name. lv_field = ms_item-obj_name.
* TODO, this function module does not exist in 702 * TODO, this function module does not exist in 702
CALL FUNCTION 'SU20_MAINTAIN_SNGL' CALL FUNCTION 'SU20_MAINTAIN_SNGL'
EXPORTING EXPORTING
id_field = field id_field = lv_field
id_wbo_mode = abap_false. id_wbo_mode = abap_false.
ENDMETHOD. "zif_abapgit_object~jump ENDMETHOD. "zif_abapgit_object~jump
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_auth IMPLEMENTATION METHOD zif_abapgit_object~serialize.
DATA: ls_authx TYPE authx.
SELECT SINGLE * FROM authx INTO ls_authx
WHERE fieldname = ms_item-obj_name. "#EC CI_GENBUFF
IF sy-subrc <> 0.
RETURN.
ENDIF.
io_xml->add( iv_name = 'AUTHX'
ig_data = ls_authx ).
ENDMETHOD. "zif_abapgit_object~serialize
ENDCLASS.

View File

@ -33,150 +33,140 @@ CLASS zcl_abapgit_object_clas_old DEFINITION PUBLIC INHERITING FROM zcl_abapgit_
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_clas_old IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
DATA:
lt_includes TYPE seoincl_t.
FIELD-SYMBOLS <incl> LIKE LINE OF lt_includes. CLASS ZCL_ABAPGIT_OBJECT_CLAS_OLD IMPLEMENTATION.
lt_includes = mo_object_oriented_object_fct->get_includes( ms_item-obj_name ).
LOOP AT lt_includes ASSIGNING <incl>.
rv_changed = check_prog_changed_since(
iv_program = <incl>
iv_timestamp = iv_timestamp
iv_skip_gui = abap_true ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~changed_by.
TYPES: BEGIN OF ty_includes,
programm TYPE programm,
END OF ty_includes.
TYPES: BEGIN OF ty_reposrc,
unam TYPE reposrc-unam,
udat TYPE reposrc-udat,
utime TYPE reposrc-utime,
END OF ty_reposrc.
DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc,
ls_reposrc LIKE LINE OF lt_reposrc,
lt_includes TYPE STANDARD TABLE OF ty_includes.
lt_includes = mo_object_oriented_object_fct->get_includes( ms_item-obj_name ).
ASSERT lines( lt_includes ) > 0.
SELECT unam udat utime FROM reposrc
INTO TABLE lt_reposrc
FOR ALL ENTRIES IN lt_includes
WHERE progname = lt_includes-programm
AND r3state = 'A'.
IF sy-subrc <> 0.
rv_user = c_user_unknown.
ELSE.
SORT lt_reposrc BY udat DESCENDING utime DESCENDING.
READ TABLE lt_reposrc INDEX 1 INTO ls_reposrc.
ASSERT sy-subrc = 0.
rv_user = ls_reposrc-unam.
ENDIF.
METHOD constructor.
super->constructor(
is_item = is_item
iv_language = iv_language ).
mo_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( ms_item-obj_type ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: ls_class_key TYPE seoclskey. METHOD deserialize_abap.
DATA: ls_vseoclass TYPE vseoclass,
lt_source TYPE seop_source_string,
lt_local_definitions TYPE seop_source_string,
lt_local_implementations TYPE seop_source_string,
lt_local_macros TYPE seop_source_string,
lt_test_classes TYPE seop_source_string,
lt_descriptions TYPE zif_abapgit_definitions=>ty_seocompotx_tt,
ls_class_key TYPE seoclskey.
lt_source = mo_files->read_abap( ).
lt_local_definitions = mo_files->read_abap( iv_extra = 'locals_def'
iv_error = abap_false ). "#EC NOTEXT
lt_local_implementations = mo_files->read_abap( iv_extra = 'locals_imp'
iv_error = abap_false ). "#EC NOTEXT
lt_local_macros = mo_files->read_abap( iv_extra = 'macros'
iv_error = abap_false ). "#EC NOTEXT
lt_test_classes = mo_files->read_abap( iv_extra = 'testclasses'
iv_error = abap_false ). "#EC NOTEXT
ls_class_key-clsname = ms_item-obj_name. ls_class_key-clsname = ms_item-obj_name.
rv_bool = mo_object_oriented_object_fct->exists( iv_object_name = ls_class_key ). io_xml->read( EXPORTING iv_name = 'VSEOCLASS'
ENDMETHOD. "zif_abapgit_object~exists CHANGING cg_data = ls_vseoclass ).
METHOD zif_abapgit_object~jump. mo_object_oriented_object_fct->create(
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING EXPORTING
operation = 'SHOW' iv_package = iv_package
object_name = ms_item-obj_name CHANGING
object_type = 'CLAS' is_properties = ls_vseoclass ).
in_new_window = abap_true.
ENDMETHOD. "jump
METHOD zif_abapgit_object~delete. mo_object_oriented_object_fct->generate_locals(
DATA: ls_clskey TYPE seoclskey. is_key = ls_class_key
ls_clskey-clsname = ms_item-obj_name. iv_force = seox_true
it_local_definitions = lt_local_definitions
it_local_implementations = lt_local_implementations
it_local_macros = lt_local_macros
it_local_test_classes = lt_test_classes ).
mo_object_oriented_object_fct->delete( ls_clskey ). mo_object_oriented_object_fct->deserialize_source(
ENDMETHOD. "delete is_key = ls_class_key
it_source = lt_source ).
METHOD zif_abapgit_object~serialize. io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
CHANGING cg_data = lt_descriptions ).
DATA: lt_source TYPE seop_source_string, mo_object_oriented_object_fct->update_descriptions(
ls_class_key TYPE seoclskey. is_key = ls_class_key
it_descriptions = lt_descriptions ).
ls_class_key-clsname = ms_item-obj_name. mo_object_oriented_object_fct->add_to_activation_list( ms_item ).
ENDMETHOD. "deserialize
IF zif_abapgit_object~exists( ) = abap_false.
METHOD deserialize_docu.
DATA: lt_lines TYPE tlinetab,
lv_object TYPE dokhl-object.
io_xml->read( EXPORTING iv_name = 'LINES'
CHANGING cg_data = lt_lines ).
IF lt_lines[] IS INITIAL.
RETURN. RETURN.
ENDIF. ENDIF.
CALL FUNCTION 'SEO_BUFFER_REFRESH' lv_object = ms_item-obj_name.
EXPORTING
version = seoc_version_active
force = seox_true.
CALL FUNCTION 'SEO_BUFFER_REFRESH'
EXPORTING
version = seoc_version_inactive
force = seox_true.
lt_source = mo_object_oriented_object_fct->serialize_abap( ls_class_key ). mo_object_oriented_object_fct->create_documentation(
it_lines = lt_lines
iv_object_name = lv_object
iv_language = mv_language ).
ENDMETHOD.
mo_files->add_abap( lt_source ).
lt_source = mo_object_oriented_object_fct->serialize_abap( METHOD deserialize_sotr.
is_class_key = ls_class_key "OTR stands for Online Text Repository
iv_type = seop_ext_class_locals_def ). DATA: lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt.
IF NOT lt_source[] IS INITIAL.
mo_files->add_abap( iv_extra = 'locals_def' io_xml->read( EXPORTING iv_name = 'SOTR'
it_abap = lt_source ). "#EC NOTEXT CHANGING cg_data = lt_sotr ).
IF lines( lt_sotr ) = 0.
RETURN.
ENDIF. ENDIF.
lt_source = mo_object_oriented_object_fct->serialize_abap( mo_object_oriented_object_fct->create_sotr(
is_class_key = ls_class_key iv_package = iv_package
iv_type = seop_ext_class_locals_imp ). it_sotr = lt_sotr ).
IF NOT lt_source[] IS INITIAL. ENDMETHOD.
mo_files->add_abap( iv_extra = 'locals_imp'
it_abap = lt_source ). "#EC NOTEXT
METHOD deserialize_tpool.
DATA: lv_clsname TYPE seoclsname,
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,
lt_tpool TYPE textpool_table.
io_xml->read( EXPORTING iv_name = 'TPOOL'
CHANGING cg_data = lt_tpool_ext ).
lt_tpool = read_tpool( lt_tpool_ext ).
IF lt_tpool[] IS INITIAL.
RETURN.
ENDIF. ENDIF.
lt_source = mo_object_oriented_object_fct->serialize_abap( lv_clsname = ms_item-obj_name.
is_class_key = ls_class_key
iv_type = seop_ext_class_testclasses ).
mv_skip_testclass = mo_object_oriented_object_fct->get_skip_test_classes( ). mo_object_oriented_object_fct->insert_text_pool(
IF NOT lt_source[] IS INITIAL AND mv_skip_testclass = abap_false. iv_class_name = lv_clsname
mo_files->add_abap( iv_extra = 'testclasses' it_text_pool = lt_tpool
it_abap = lt_source ). "#EC NOTEXT iv_language = mv_language ).
ENDIF.
lt_source = mo_object_oriented_object_fct->serialize_abap(
is_class_key = ls_class_key
iv_type = seop_ext_class_macros ).
IF NOT lt_source[] IS INITIAL.
mo_files->add_abap( iv_extra = 'macros'
it_abap = lt_source ). "#EC NOTEXT
ENDIF.
serialize_xml( io_xml ).
ENDMETHOD. "serialize
ENDMETHOD. "deserialize_textpool
METHOD serialize_xml. METHOD serialize_xml.
@ -251,6 +241,56 @@ CLASS zcl_abapgit_object_clas_old IMPLEMENTATION.
ENDMETHOD. "serialize_xml ENDMETHOD. "serialize_xml
METHOD zif_abapgit_object~changed_by.
TYPES: BEGIN OF ty_includes,
programm TYPE programm,
END OF ty_includes.
TYPES: BEGIN OF ty_reposrc,
unam TYPE reposrc-unam,
udat TYPE reposrc-udat,
utime TYPE reposrc-utime,
END OF ty_reposrc.
DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc,
ls_reposrc LIKE LINE OF lt_reposrc,
lt_includes TYPE STANDARD TABLE OF ty_includes.
lt_includes = mo_object_oriented_object_fct->get_includes( ms_item-obj_name ).
ASSERT lines( lt_includes ) > 0.
SELECT unam udat utime FROM reposrc
INTO TABLE lt_reposrc
FOR ALL ENTRIES IN lt_includes
WHERE progname = lt_includes-programm
AND r3state = 'A'.
IF sy-subrc <> 0.
rv_user = c_user_unknown.
ELSE.
SORT lt_reposrc BY udat DESCENDING utime DESCENDING.
READ TABLE lt_reposrc INDEX 1 INTO ls_reposrc.
ASSERT sy-subrc = 0.
rv_user = ls_reposrc-unam.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: ls_clskey TYPE seoclskey.
ls_clskey-clsname = ms_item-obj_name.
mo_object_oriented_object_fct->delete( ls_clskey ).
ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
deserialize_abap( io_xml = io_xml deserialize_abap( io_xml = io_xml
iv_package = iv_package ). iv_package = iv_package ).
@ -263,134 +303,109 @@ CLASS zcl_abapgit_object_clas_old IMPLEMENTATION.
deserialize_docu( io_xml ). deserialize_docu( io_xml ).
ENDMETHOD. "deserialize ENDMETHOD. "deserialize
METHOD deserialize_sotr.
"OTR stands for Online Text Repository
DATA: lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt.
io_xml->read( EXPORTING iv_name = 'SOTR' METHOD zif_abapgit_object~exists.
CHANGING cg_data = lt_sotr ). DATA: ls_class_key TYPE seoclskey.
ls_class_key-clsname = ms_item-obj_name.
IF lines( lt_sotr ) = 0. rv_bool = mo_object_oriented_object_fct->exists( iv_object_name = ls_class_key ).
RETURN. ENDMETHOD. "zif_abapgit_object~exists
ENDIF.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
DATA: lt_includes TYPE seoincl_t.
FIELD-SYMBOLS <lv_incl> LIKE LINE OF lt_includes.
lt_includes = mo_object_oriented_object_fct->get_includes( ms_item-obj_name ).
LOOP AT lt_includes ASSIGNING <lv_incl>.
rv_changed = check_prog_changed_since(
iv_program = <lv_incl>
iv_timestamp = iv_timestamp
iv_skip_gui = abap_true ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
mo_object_oriented_object_fct->create_sotr(
iv_package = iv_package
it_sotr = lt_sotr ).
ENDMETHOD. ENDMETHOD.
METHOD deserialize_docu.
DATA: lt_lines TYPE tlinetab, METHOD zif_abapgit_object~jump.
lv_object TYPE dokhl-object. CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
io_xml->read( EXPORTING iv_name = 'LINES' operation = 'SHOW'
CHANGING cg_data = lt_lines ). object_name = ms_item-obj_name
object_type = 'CLAS'
IF lt_lines[] IS INITIAL. in_new_window = abap_true.
RETURN. ENDMETHOD. "jump
ENDIF.
lv_object = ms_item-obj_name.
mo_object_oriented_object_fct->create_documentation(
it_lines = lt_lines
iv_object_name = lv_object
iv_language = mv_language ).
ENDMETHOD.
METHOD deserialize_tpool.
DATA: lv_clsname TYPE seoclsname,
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,
lt_tpool TYPE textpool_table.
io_xml->read( EXPORTING iv_name = 'TPOOL' METHOD zif_abapgit_object~serialize.
CHANGING cg_data = lt_tpool_ext ).
lt_tpool = read_tpool( lt_tpool_ext ).
IF lt_tpool[] IS INITIAL. DATA: lt_source TYPE seop_source_string,
RETURN. ls_class_key TYPE seoclskey.
ENDIF.
lv_clsname = ms_item-obj_name.
mo_object_oriented_object_fct->insert_text_pool(
iv_class_name = lv_clsname
it_text_pool = lt_tpool
iv_language = mv_language ).
ENDMETHOD. "deserialize_textpool
METHOD deserialize_abap.
DATA: ls_vseoclass TYPE vseoclass,
lt_source TYPE seop_source_string,
lt_local_definitions TYPE seop_source_string,
lt_local_implementations TYPE seop_source_string,
lt_local_macros TYPE seop_source_string,
lt_test_classes TYPE seop_source_string,
lt_descriptions TYPE zif_abapgit_definitions=>ty_seocompotx_tt,
ls_class_key TYPE seoclskey.
lt_source = mo_files->read_abap( ).
lt_local_definitions = mo_files->read_abap( iv_extra = 'locals_def'
iv_error = abap_false ). "#EC NOTEXT
lt_local_implementations = mo_files->read_abap( iv_extra = 'locals_imp'
iv_error = abap_false ). "#EC NOTEXT
lt_local_macros = mo_files->read_abap( iv_extra = 'macros'
iv_error = abap_false ). "#EC NOTEXT
lt_test_classes = mo_files->read_abap( iv_extra = 'testclasses'
iv_error = abap_false ). "#EC NOTEXT
ls_class_key-clsname = ms_item-obj_name. ls_class_key-clsname = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'VSEOCLASS' IF zif_abapgit_object~exists( ) = abap_false.
CHANGING cg_data = ls_vseoclass ). RETURN.
ENDIF.
mo_object_oriented_object_fct->create( CALL FUNCTION 'SEO_BUFFER_REFRESH'
EXPORTING EXPORTING
iv_package = iv_package version = seoc_version_active
CHANGING force = seox_true.
is_properties = ls_vseoclass ). CALL FUNCTION 'SEO_BUFFER_REFRESH'
EXPORTING
version = seoc_version_inactive
force = seox_true.
mo_object_oriented_object_fct->generate_locals( lt_source = mo_object_oriented_object_fct->serialize_abap( ls_class_key ).
is_key = ls_class_key
iv_force = seox_true
it_local_definitions = lt_local_definitions
it_local_implementations = lt_local_implementations
it_local_macros = lt_local_macros
it_local_test_classes = lt_test_classes ).
mo_object_oriented_object_fct->deserialize_source( mo_files->add_abap( lt_source ).
is_key = ls_class_key
it_source = lt_source ).
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' lt_source = mo_object_oriented_object_fct->serialize_abap(
CHANGING cg_data = lt_descriptions ). is_class_key = ls_class_key
iv_type = seop_ext_class_locals_def ).
IF NOT lt_source[] IS INITIAL.
mo_files->add_abap( iv_extra = 'locals_def'
it_abap = lt_source ). "#EC NOTEXT
ENDIF.
mo_object_oriented_object_fct->update_descriptions( lt_source = mo_object_oriented_object_fct->serialize_abap(
is_key = ls_class_key is_class_key = ls_class_key
it_descriptions = lt_descriptions ). iv_type = seop_ext_class_locals_imp ).
IF NOT lt_source[] IS INITIAL.
mo_files->add_abap( iv_extra = 'locals_imp'
it_abap = lt_source ). "#EC NOTEXT
ENDIF.
mo_object_oriented_object_fct->add_to_activation_list( ms_item ). lt_source = mo_object_oriented_object_fct->serialize_abap(
ENDMETHOD. "deserialize is_class_key = ls_class_key
iv_type = seop_ext_class_testclasses ).
METHOD zif_abapgit_object~compare_to_remote_version. mv_skip_testclass = mo_object_oriented_object_fct->get_skip_test_classes( ).
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. IF NOT lt_source[] IS INITIAL AND mv_skip_testclass = abap_false.
ENDMETHOD. mo_files->add_abap( iv_extra = 'testclasses'
it_abap = lt_source ). "#EC NOTEXT
ENDIF.
METHOD constructor. lt_source = mo_object_oriented_object_fct->serialize_abap(
super->constructor( is_class_key = ls_class_key
is_item = is_item iv_type = seop_ext_class_macros ).
iv_language = iv_language ). IF NOT lt_source[] IS INITIAL.
mo_object_oriented_object_fct = zcl_abapgit_oo_factory=>make( ms_item-obj_type ). mo_files->add_abap( iv_extra = 'macros'
ENDMETHOD. it_abap = lt_source ). "#EC NOTEXT
ENDIF.
ENDCLASS. "zcl_abapgit_object_CLAS IMPLEMENTATION serialize_xml( io_xml ).
ENDMETHOD. "serialize
ENDCLASS.

View File

@ -14,7 +14,10 @@ CLASS zcl_abapgit_object_cmpt DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_CMPT IMPLEMENTATION.
METHOD constructor. METHOD constructor.
@ -31,15 +34,10 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: mi_cmp_template TYPE REF TO object. DATA: lo_cmp_template TYPE REF TO object.
TRY. TRY.
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB') CALL METHOD ('CL_CMP_TEMPLATE')=>('S_CREATE_FROM_DB')
@ -47,9 +45,9 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
i_name = |{ ms_item-obj_name }| i_name = |{ ms_item-obj_name }|
i_version = 'A' i_version = 'A'
RECEIVING RECEIVING
r_ref_template = mi_cmp_template. r_ref_template = lo_cmp_template.
CALL METHOD mi_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER') CALL METHOD lo_cmp_template->('IF_CMP_TEMPLATE_EDIT~GET_CHANGE_USER')
RECEIVING RECEIVING
r_user = rv_user. r_user = rv_user.
@ -59,77 +57,57 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: name TYPE c LENGTH 30. METHOD zif_abapgit_object~delete.
name = ms_item-obj_name. DATA: lv_deleted TYPE abap_bool.
TRY. TRY.
CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS') CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE')
EXPORTING EXPORTING
i_name = name i_name = |{ ms_item-obj_name }|
i_version = 'A' i_version = 'A'
i_flg_header = abap_true
i_flg_lines = abap_true
RECEIVING RECEIVING
r_flg_exists = rv_bool. r_flg_deleted = lv_deleted.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lr_template TYPE REF TO data.
FIELD-SYMBOLS: <template> TYPE any.
TRY.
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
ASSIGN lr_template->* TO <template>.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE')
EXPORTING
i_name = |{ ms_item-obj_name }|
i_version = 'A'
RECEIVING
r_template = <template>.
io_xml->add( iv_name = 'CMPT'
ig_data = <template> ).
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ). zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY. ENDTRY.
IF lv_deleted = abap_false.
zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lr_template TYPE REF TO data. DATA: lr_template TYPE REF TO data.
FIELD-SYMBOLS: <template> TYPE any. FIELD-SYMBOLS: <lg_template> TYPE any.
TRY. TRY.
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE'). CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
ASSIGN lr_template->* TO <template>. ASSIGN lr_template->* TO <lg_template>.
io_xml->read( io_xml->read(
EXPORTING EXPORTING
iv_name = 'CMPT' iv_name = 'CMPT'
CHANGING CHANGING
cg_data = <template> ). cg_data = <lg_template> ).
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE') CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~SAVE_TEMPLATE')
EXPORTING EXPORTING
i_template_db = <template> i_template_db = <lg_template>
i_flg_header = abap_true i_flg_header = abap_true
i_flg_lines = abap_true. i_flg_lines = abap_true.
@ -157,27 +135,39 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: deleted TYPE abap_bool. METHOD zif_abapgit_object~exists.
DATA: lv_name TYPE c LENGTH 30.
lv_name = ms_item-obj_name.
TRY. TRY.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~DELETE_TEMPLATE') CALL METHOD ('CL_CMP_TEMPLATE')=>('S_TEMPLATE_EXISTS')
EXPORTING EXPORTING
i_name = |{ ms_item-obj_name }| i_name = lv_name
i_version = 'A' i_version = 'A'
i_flg_header = abap_true
i_flg_lines = abap_true
RECEIVING RECEIVING
r_flg_deleted = deleted. r_flg_exists = rv_bool.
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ). zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY. ENDTRY.
IF deleted = abap_false. ENDMETHOD.
zcx_abapgit_exception=>raise( |Error deleting CMPT { ms_item-obj_name }| ).
ENDIF.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. ENDMETHOD.
@ -200,10 +190,30 @@ CLASS zcl_abapgit_object_cmpt IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. METHOD zif_abapgit_object~serialize.
DATA: lr_template TYPE REF TO data.
FIELD-SYMBOLS: <lg_template> TYPE any.
TRY.
CREATE DATA lr_template TYPE ('IF_CMP_TEMPLATE_DB=>TYP_TEMPLATE').
ASSIGN lr_template->* TO <lg_template>.
CALL METHOD mo_cmp_db->('IF_CMP_TEMPLATE_DB~READ_TEMPLATE')
EXPORTING
i_name = |{ ms_item-obj_name }|
i_version = 'A'
RECEIVING
r_template = <lg_template>.
io_xml->add( iv_name = 'CMPT'
ig_data = <lg_template> ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'CMPT not supported' ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -6,33 +6,97 @@ CLASS zcl_abapgit_object_dcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_DCLS IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown. rv_user = c_user_unknown.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true. METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: li_dcl TYPE REF TO object. METHOD zif_abapgit_object~delete.
DATA: lo_dcl TYPE REF TO object.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
ro_handler = li_dcl. ro_handler = lo_dcl.
CALL METHOD li_dcl->('CHECK_EXISTENCE') CALL METHOD lo_dcl->('DELETE')
EXPORTING
iv_dclname = ms_item-obj_name.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data,
lo_dcl TYPE REF TO object.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
CREATE DATA lr_data TYPE ('ACM_S_DCLSRC').
ASSIGN lr_data->* TO <lg_data>.
io_xml->read(
EXPORTING
iv_name = 'DCLS'
CHANGING
cg_data = <lg_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
<lg_field> = mo_files->read_string( 'asdcls' ).
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'A'
is_dclsrc = <lg_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'.
tadir_insert( iv_package ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lo_dcl TYPE REF TO object.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = lo_dcl.
CALL METHOD lo_dcl->('CHECK_EXISTENCE')
EXPORTING EXPORTING
iv_objectname = ms_item-obj_name iv_objectname = ms_item-obj_name
RECEIVING RECEIVING
@ -44,6 +108,20 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
TRY. TRY.
@ -57,129 +135,63 @@ CLASS zcl_abapgit_object_dcls IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: li_dcl TYPE REF TO object.
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = li_dcl.
CALL METHOD li_dcl->('DELETE')
EXPORTING
iv_dclname = ms_item-obj_name.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lr_data TYPE REF TO data, DATA: lr_data TYPE REF TO data,
li_dcl TYPE REF TO object. lo_dcl TYPE REF TO object.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
FIELD-SYMBOLS: <ls_data> TYPE any,
<field> TYPE any.
CREATE DATA lr_data TYPE ('ACM_S_DCLSRC'). CREATE DATA lr_data TYPE ('ACM_S_DCLSRC').
ASSIGN lr_data->* TO <ls_data>. ASSIGN lr_data->* TO <lg_data>.
TRY. TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
ro_handler = li_dcl. ro_handler = lo_dcl.
CALL METHOD li_dcl->('READ') CALL METHOD lo_dcl->('READ')
EXPORTING EXPORTING
iv_dclname = ms_item-obj_name iv_dclname = ms_item-obj_name
IMPORTING IMPORTING
es_dclsrc = <ls_data>. es_dclsrc = <lg_data>.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <field>. ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
mo_files->add_string( iv_ext = 'asdcls' iv_string = <field> ). mo_files->add_string( iv_ext = 'asdcls' iv_string = <lg_field> ).
CLEAR <field>. CLEAR <lg_field>.
io_xml->add( iv_name = 'DCLS' io_xml->add( iv_name = 'DCLS'
ig_data = <ls_data> ). ig_data = <lg_data> ).
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( 'DCLS error' ). zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data,
li_dcl TYPE REF TO object.
FIELD-SYMBOLS: <ls_data> TYPE any,
<field> TYPE any.
CREATE DATA lr_data TYPE ('ACM_S_DCLSRC').
ASSIGN lr_data->* TO <ls_data>.
io_xml->read(
EXPORTING
iv_name = 'DCLS'
CHANGING
cg_data = <ls_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <field>.
ASSERT sy-subrc = 0.
<field> = mo_files->read_string( 'asdcls' ).
TRY.
CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
ro_handler = li_dcl.
CALL METHOD li_dcl->('SAVE')
EXPORTING
iv_dclname = ms_item-obj_name
iv_put_state = 'A'
is_dclsrc = <ls_data>
iv_devclass = iv_package
iv_access_mode = 'INSERT'.
tadir_insert( iv_package ).
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DCLS error' ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -11,40 +11,96 @@ CLASS zcl_abapgit_object_ddls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_DDLS IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD open_adt_stob.
DATA: lr_data TYPE REF TO data.
DATA: lo_ddl TYPE REF TO object.
FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lg_ddnames> TYPE any.
FIELD-SYMBOLS: <lg_entity_view> TYPE any.
FIELD-SYMBOLS: <lg_ddname> TYPE any.
FIELD-SYMBOLS: <lg_ddlname> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ').
ASSIGN lr_data->* TO <lt_ddnames>.
CREATE DATA lr_data LIKE LINE OF <lt_ddnames>.
ASSIGN lr_data->* TO <lg_ddnames>.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW').
ASSIGN lr_data->* TO <lt_entity_view>.
CREATE DATA lr_data LIKE LINE OF <lt_entity_view>.
ASSIGN lr_data->* TO <lg_entity_view>.
CLEAR <lt_ddnames>.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <lg_ddnames> TO <lg_ddname>.
<lg_ddname> = iv_ddls_name.
INSERT <lg_ddnames> INTO TABLE <lt_ddnames>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
EXPORTING
ddnames = <lt_ddnames>
IMPORTING
view_of_entity = <lt_entity_view>.
READ TABLE <lt_entity_view> ASSIGNING <lg_entity_view> INDEX 1.
IF sy-subrc = 0.
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <lg_entity_view> TO <lg_ddlname>.
jump_adt( i_obj_name = <lg_ddlname>
i_obj_type = 'DDLS' ).
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ).
ENDTRY.
ENDMETHOD. "open_adt_stob
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: li_ddl TYPE REF TO object, DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data. lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lv_field> TYPE any. <lg_field> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV'). CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <ls_data>. ASSIGN lr_data->* TO <lg_data>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
handler = li_ddl. handler = lo_ddl.
TRY. TRY.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
IMPORTING IMPORTING
ddddlsrcv_wa = <ls_data>. ddddlsrcv_wa = <lg_data>.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
rv_user = <lv_field>. rv_user = <lg_field>.
ENDIF. ENDIF.
CATCH cx_root. CATCH cx_root.
ENDTRY. ENDTRY.
@ -55,25 +111,88 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~changed_by ENDMETHOD. "zif_abapgit_object~changed_by
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true. METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. "zif_abapgit_object~get_metadata ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE objstate, METHOD zif_abapgit_object~delete.
li_ddl TYPE REF TO object.
DATA: lo_ddl TYPE REF TO object.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
handler = li_ddl. handler = lo_ddl.
TRY. TRY.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~DELETE')
EXPORTING
name = ms_item-obj_name.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error deleting' ).
ENDTRY.
ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize.
DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_field> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <lg_data>.
io_xml->read( EXPORTING iv_name = 'DDLS'
CHANGING cg_data = <lg_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0.
<lg_field> = mo_files->read_string( 'asddls' ) ##no_text.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
TRY.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <lg_data>.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
EXPORTING
objectname = ms_item-obj_name
devclass = iv_package
prid = 0.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~exists.
DATA: lv_state TYPE objstate,
lo_ddl TYPE REF TO object.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = lo_ddl.
TRY.
CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
@ -90,6 +209,20 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~exists ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
rs_metadata-delete_tadir = abap_true.
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
DATA: lv_typename TYPE typename. DATA: lv_typename TYPE typename.
@ -113,174 +246,54 @@ CLASS zcl_abapgit_object_ddls IMPLEMENTATION.
ENDMETHOD. "jump ENDMETHOD. "jump
METHOD zif_abapgit_object~delete.
DATA: li_ddl TYPE REF TO object.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = li_ddl.
TRY.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~DELETE')
EXPORTING
name = ms_item-obj_name.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error deleting' ).
ENDTRY.
ENDMETHOD. "delete
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: li_ddl TYPE REF TO object, DATA: lo_ddl TYPE REF TO object,
lr_data TYPE REF TO data. lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any, FIELD-SYMBOLS: <lg_data> TYPE any,
<lv_field> TYPE any. <lg_field> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV'). CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <ls_data>. ASSIGN lr_data->* TO <lg_data>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING RECEIVING
handler = li_ddl. handler = lo_ddl.
TRY. TRY.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') CALL METHOD lo_ddl->('IF_DD_DDL_HANDLER~READ')
EXPORTING EXPORTING
name = ms_item-obj_name name = ms_item-obj_name
get_state = 'A' get_state = 'A'
IMPORTING IMPORTING
ddddlsrcv_wa = <ls_data>. ddddlsrcv_wa = <lg_data>.
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error reading' ). zcx_abapgit_exception=>raise( 'DDLS error reading' ).
ENDTRY. ENDTRY.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <lv_field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <lv_field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CLEAR <lv_field>. CLEAR <lg_field>.
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <lg_data> TO <lg_field>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
mo_files->add_string( iv_ext = 'asddls' mo_files->add_string( iv_ext = 'asddls'
iv_string = <lv_field> ) ##no_text. iv_string = <lg_field> ) ##no_text.
CLEAR <lv_field>. CLEAR <lg_field>.
io_xml->add( iv_name = 'DDLS' io_xml->add( iv_name = 'DDLS'
ig_data = <ls_data> ). ig_data = <lg_data> ).
ENDMETHOD. "serialize ENDMETHOD. "serialize
ENDCLASS.
METHOD zif_abapgit_object~deserialize.
DATA: li_ddl TYPE REF TO object,
lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any,
<lv_field> TYPE any.
CREATE DATA lr_data TYPE ('DDDDLSRCV').
ASSIGN lr_data->* TO <ls_data>.
io_xml->read( EXPORTING iv_name = 'DDLS'
CHANGING cg_data = <ls_data> ).
ASSIGN COMPONENT 'SOURCE' OF STRUCTURE <ls_data> TO <lv_field>.
ASSERT sy-subrc = 0.
<lv_field> = mo_files->read_string( 'asddls' ) ##no_text.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = li_ddl.
TRY.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~SAVE')
EXPORTING
name = ms_item-obj_name
put_state = 'N'
ddddlsrcv_wa = <ls_data>.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR')
EXPORTING
objectname = ms_item-obj_name
devclass = iv_package
prid = 0.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS error writing TADIR' ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
METHOD open_adt_stob.
DATA: lr_data TYPE REF TO data.
DATA: li_ddl TYPE REF TO object.
FIELD-SYMBOLS: <lt_ddnames> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <lt_entity_view> TYPE STANDARD TABLE.
FIELD-SYMBOLS: <ls_ddnames> TYPE any.
FIELD-SYMBOLS: <ls_entity_view> TYPE any.
FIELD-SYMBOLS: <lv_ddname> TYPE any.
FIELD-SYMBOLS: <lv_ddlname> TYPE any.
TRY.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_DDOBJ').
ASSIGN lr_data->* TO <lt_ddnames>.
CREATE DATA lr_data LIKE LINE OF <lt_ddnames>.
ASSIGN lr_data->* TO <ls_ddnames>.
CREATE DATA lr_data TYPE ('IF_DD_DDL_TYPES=>TY_T_ENTITY_OF_VIEW').
ASSIGN lr_data->* TO <lt_entity_view>.
CREATE DATA lr_data LIKE LINE OF <lt_entity_view>.
ASSIGN lr_data->* TO <ls_entity_view>.
CLEAR <lt_ddnames>.
ASSIGN COMPONENT 'NAME' OF STRUCTURE <ls_ddnames> TO <lv_ddname>.
<lv_ddname> = iv_ddls_name.
INSERT <ls_ddnames> INTO TABLE <lt_ddnames>.
CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE')
RECEIVING
handler = li_ddl.
CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~GET_VIEWNAME_FROM_ENTITYNAME')
EXPORTING
ddnames = <lt_ddnames>
IMPORTING
view_of_entity = <lt_entity_view>.
READ TABLE <lt_entity_view> ASSIGNING <ls_entity_view> INDEX 1.
IF sy-subrc = 0.
ASSIGN COMPONENT 'DDLNAME' OF STRUCTURE <ls_entity_view> TO <lv_ddlname>.
jump_adt( i_obj_name = <lv_ddlname>
i_obj_type = 'DDLS' ).
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( 'DDLS Jump Error' ).
ENDTRY.
ENDMETHOD. "open_adt_stob
ENDCLASS. "zcl_abapgit_object_view IMPLEMENTATION

View File

@ -26,156 +26,55 @@ CLASS zcl_abapgit_object_ddlx DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. CLASS ZCL_ABAPGIT_OBJECT_DDLX IMPLEMENTATION.
rv_user = c_user_unknown.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~exists. METHOD clear_field.
DATA: lv_object_key TYPE seu_objkey. FIELD-SYMBOLS: <lg_field> TYPE data.
lv_object_key = ms_item-obj_name. ASSIGN COMPONENT iv_fieldname
OF STRUCTURE cs_metadata
TO <lg_field>.
ASSERT sy-subrc = 0.
rv_bool = abap_true. CLEAR: <lg_field>.
TRY.
get_persistence( )->get( p_object_key = lv_object_key
p_version = swbm_version_active
p_existence_check_only = abap_true ).
CATCH cx_swb_exception.
rv_bool = abap_false.
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~jump.
TRY. METHOD clear_fields.
jump_adt( i_obj_name = ms_item-obj_name
i_obj_type = ms_item-obj_type ).
CATCH zcx_abapgit_exception. FIELD-SYMBOLS: <lg_metadata> TYPE any.
zcx_abapgit_exception=>raise( 'DDLX Jump Error' ).
ENDTRY.
ENDMETHOD. ASSIGN COMPONENT 'METADATA'
OF STRUCTURE cs_data
TO <lg_metadata>.
ASSERT sy-subrc = 0.
METHOD zif_abapgit_object~delete. clear_field( EXPORTING iv_fieldname = 'CHANGED_AT'
CHANGING cs_metadata = <lg_metadata> ).
DATA: lv_object_key TYPE seu_objkey, clear_field( EXPORTING iv_fieldname = 'CHANGED_BY'
lo_data_model TYPE REF TO if_wb_object_data_model, CHANGING cs_metadata = <lg_metadata> ).
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
lv_object_key = ms_item-obj_name. clear_field( EXPORTING iv_fieldname = 'CREATED_AT'
CHANGING cs_metadata = <lg_metadata> ).
TRY. clear_field( EXPORTING iv_fieldname = 'CREATED_BY'
CREATE OBJECT lo_data_model CHANGING cs_metadata = <lg_metadata> ).
TYPE ('CL_DDLX_WB_OBJECT_DATA').
get_persistence( )->delete( p_object_key = lv_object_key clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE'
p_version = swbm_version_active ). CHANGING cs_metadata = <lg_metadata> ).
CATCH cx_root INTO lx_error. clear_field( EXPORTING iv_fieldname = 'PACKAGE_REF-NAME'
lv_text = lx_error->get_text( ). CHANGING cs_metadata = <lg_metadata> ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD. clear_field( EXPORTING iv_fieldname = 'CONTAINER_REF-PACKAGE_NAME'
CHANGING cs_metadata = <lg_metadata> ).
METHOD zif_abapgit_object~serialize.
DATA: lv_object_key TYPE seu_objkey,
lo_data_model TYPE REF TO if_wb_object_data_model,
lo_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_data> TYPE any.
lv_object_key = ms_item-obj_name.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <ls_data>.
CREATE OBJECT lo_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
lo_persistence = get_persistence( ).
lo_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_version = swbm_version_active
CHANGING
p_object_data = lo_data_model ).
lo_data_model->get_data(
IMPORTING
p_data = <ls_data> ).
clear_fields( CHANGING cs_data = <ls_data> ).
io_xml->add( iv_name = 'DDLX'
ig_data = <ls_data> ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lo_data_model TYPE REF TO if_wb_object_data_model,
lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_data> TYPE any.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <ls_data>.
io_xml->read(
EXPORTING
iv_name = 'DDLX'
CHANGING
cg_data = <ls_data> ).
CREATE OBJECT lo_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
lo_data_model->set_data( <ls_data> ).
get_persistence( )->save( lo_data_model ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
@ -198,50 +97,161 @@ CLASS zcl_abapgit_object_ddlx IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD clear_fields. METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown.
ENDMETHOD.
FIELD-SYMBOLS: <metadata> TYPE any.
ASSIGN COMPONENT 'METADATA' METHOD zif_abapgit_object~compare_to_remote_version.
OF STRUCTURE cs_data CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
TO <metadata>. ENDMETHOD.
ASSERT sy-subrc = 0.
clear_field( EXPORTING iv_fieldname = 'CHANGED_AT'
CHANGING cs_metadata = <metadata> ).
clear_field( EXPORTING iv_fieldname = 'CHANGED_BY' METHOD zif_abapgit_object~delete.
CHANGING cs_metadata = <metadata> ).
clear_field( EXPORTING iv_fieldname = 'CREATED_AT' DATA: lv_object_key TYPE seu_objkey,
CHANGING cs_metadata = <metadata> ). li_data_model TYPE REF TO if_wb_object_data_model,
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
clear_field( EXPORTING iv_fieldname = 'CREATED_BY'
CHANGING cs_metadata = <metadata> ).
clear_field( EXPORTING iv_fieldname = 'RESPONSIBLE' lv_object_key = ms_item-obj_name.
CHANGING cs_metadata = <metadata> ).
clear_field( EXPORTING iv_fieldname = 'PACKAGE_REF-NAME' TRY.
CHANGING cs_metadata = <metadata> ). CREATE OBJECT li_data_model TYPE ('CL_DDLX_WB_OBJECT_DATA').
clear_field( EXPORTING iv_fieldname = 'CONTAINER_REF-PACKAGE_NAME' get_persistence( )->delete( p_object_key = lv_object_key
CHANGING cs_metadata = <metadata> ). p_version = swbm_version_active ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD clear_field. METHOD zif_abapgit_object~deserialize.
FIELD-SYMBOLS: <field> TYPE data. DATA: li_data_model TYPE REF TO if_wb_object_data_model,
lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
ASSIGN COMPONENT iv_fieldname FIELD-SYMBOLS: <lg_data> TYPE any.
OF STRUCTURE cs_metadata
TO <field>.
ASSERT sy-subrc = 0.
CLEAR: <field>. TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
io_xml->read(
EXPORTING
iv_name = 'DDLX'
CHANGING
cg_data = <lg_data> ).
CREATE OBJECT li_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
li_data_model->set_data( <lg_data> ).
get_persistence( )->save( li_data_model ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lv_object_key TYPE seu_objkey.
lv_object_key = ms_item-obj_name.
rv_bool = abap_true.
TRY.
get_persistence( )->get( p_object_key = lv_object_key
p_version = swbm_version_active
p_existence_check_only = abap_true ).
CATCH cx_swb_exception.
rv_bool = abap_false.
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump.
TRY.
jump_adt( i_obj_name = ms_item-obj_name
i_obj_type = ms_item-obj_type ).
CATCH zcx_abapgit_exception.
zcx_abapgit_exception=>raise( 'DDLX Jump Error' ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lv_object_key TYPE seu_objkey,
li_data_model TYPE REF TO if_wb_object_data_model,
li_persistence TYPE REF TO if_wb_object_persist,
lr_data TYPE REF TO data,
lv_text TYPE string,
lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <lg_data> TYPE any.
lv_object_key = ms_item-obj_name.
TRY.
CREATE DATA lr_data
TYPE ('CL_DDLX_WB_OBJECT_DATA=>TY_OBJECT_DATA').
ASSIGN lr_data->* TO <lg_data>.
CREATE OBJECT li_data_model
TYPE ('CL_DDLX_WB_OBJECT_DATA').
li_persistence = get_persistence( ).
li_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_version = swbm_version_active
CHANGING
p_object_data = li_data_model ).
li_data_model->get_data(
IMPORTING
p_data = <lg_data> ).
clear_fields( CHANGING cs_data = <lg_data> ).
io_xml->add( iv_name = 'DDLX'
ig_data = <lg_data> ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -25,13 +25,18 @@ CLASS zcl_abapgit_object_devc DEFINITION PUBLIC
mv_local_devclass TYPE devclass. mv_local_devclass TYPE devclass.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_devc IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
METHOD constructor. METHOD constructor.
super->constructor( is_item = is_item super->constructor( is_item = is_item
iv_language = iv_language ). iv_language = iv_language ).
mv_local_devclass = is_item-devclass. mv_local_devclass = is_item-devclass.
ENDMETHOD. ENDMETHOD.
METHOD get_package. METHOD get_package.
IF me->zif_abapgit_object~exists( ) = abap_true. IF me->zif_abapgit_object~exists( ) = abap_true.
cl_package_factory=>load_package( cl_package_factory=>load_package(
@ -55,14 +60,154 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD set_lock.
DATA: lv_changeable TYPE abap_bool.
ii_package->get_changeable( IMPORTING e_changeable = lv_changeable ).
IF lv_changeable <> iv_lock.
ii_package->set_changeable(
EXPORTING
i_changeable = iv_lock
EXCEPTIONS
object_locked_by_other_user = 1
permission_failure = 2
object_already_changeable = 3
object_already_unlocked = 4
object_just_created = 5
object_deleted = 6
object_modified = 7
object_not_existing = 8
object_invalid = 9
unexpected_error = 10
OTHERS = 11 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_CHANGEABLE { sy-subrc }| ).
ENDIF.
ENDIF.
ii_package->set_permissions_changeable(
EXPORTING
i_changeable = iv_lock
i_suppress_dialog = abap_true
EXCEPTIONS
object_already_changeable = 1
object_already_unlocked = 2
object_locked_by_other_user = 3
object_modified = 4
object_just_created = 5
object_deleted = 6
permission_failure = 7
object_invalid = 8
unexpected_error = 9
OTHERS = 10 ).
IF ( sy-subrc = 1 AND iv_lock = abap_true ) OR ( sy-subrc = 2 AND iv_lock = abap_false ).
" There's no getter to find out beforehand...
ELSEIF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_PERMISSIONS_CHANGEABLE { sy-subrc }| ).
ENDIF.
ENDMETHOD.
METHOD update_pinf_usages.
DATA: lt_current_permissions TYPE tpak_permission_to_use_list,
li_usage TYPE REF TO if_package_permission_to_use,
ls_data_sign TYPE scomppsign,
ls_add_permission_data TYPE pkgpermdat,
lt_handled TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line.
FIELD-SYMBOLS: <ls_usage_data> LIKE LINE OF it_usage_data.
" Get the current permissions
ii_package->get_permissions_to_use(
IMPORTING
e_permissions = lt_current_permissions
EXCEPTIONS
object_invalid = 1
unexpected_error = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE=>GET_PERMISSIONS_TO_USE { sy-subrc }| ).
ENDIF.
ls_data_sign-err_sever = abap_true.
" New permissions
LOOP AT it_usage_data ASSIGNING <ls_usage_data>.
READ TABLE lt_current_permissions
WITH KEY table_line->package_interface_name = <ls_usage_data>-intf_name
INTO li_usage.
IF sy-subrc = 0 AND li_usage IS BOUND.
INSERT sy-tabix INTO TABLE lt_handled.
" Permission already exists, update attributes
li_usage->set_all_attributes(
EXPORTING
i_permission_data = <ls_usage_data>
i_data_sign = ls_data_sign
EXCEPTIONS
object_not_changeable = 1
object_invalid = 2
intern_err = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise(
|Error from IF_PACKAGE_PERMISSION_TO_USE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
ENDIF.
ELSE.
" Permission does not exist yet, add it
MOVE-CORRESPONDING <ls_usage_data> TO ls_add_permission_data.
ii_package->add_permission_to_use(
EXPORTING
i_pkg_permission_data = ls_add_permission_data
EXCEPTIONS
object_not_changeable = 1
object_access_error = 2
object_already_existing = 3
object_invalid = 4
unexpected_error = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->ADD_PERMISSION_TO_USE { sy-subrc }| ).
ENDIF.
ENDIF.
FREE li_usage.
ENDLOOP.
" Delete missing usages
LOOP AT lt_current_permissions INTO li_usage.
READ TABLE lt_handled WITH TABLE KEY table_line = sy-tabix TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
CONTINUE.
ENDIF.
li_usage->delete(
EXCEPTIONS
object_not_changeable = 1
object_invalid = 2
deletion_not_allowed = 3
intern_err = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->DELETE { sy-subrc }| ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
rv_user = get_package( )->changed_by. rv_user = get_package( )->changed_by.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version. METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
" Package deletion is a bit tricky. A package can only be deleted if there are no objects " Package deletion is a bit tricky. A package can only be deleted if there are no objects
" contained in it. This includes subpackages, so first the leaf packages need to be deleted. " contained in it. This includes subpackages, so first the leaf packages need to be deleted.
@ -71,6 +216,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
" -> Package deletion is currently not supported by abapGit " -> Package deletion is currently not supported by abapGit
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: li_package TYPE REF TO if_package, DATA: li_package TYPE REF TO if_package,
ls_package_data TYPE scompkdtln, ls_package_data TYPE scompkdtln,
@ -234,6 +380,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
set_lock( ii_package = li_package iv_lock = abap_false ). set_lock( ii_package = li_package iv_lock = abap_false ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
" Check remote package if deserialize has not been called before this " Check remote package if deserialize has not been called before this
@ -254,14 +401,17 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata. METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). rs_metadata = get_metadata( ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since. METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. rv_changed = abap_true.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS' CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING EXPORTING
@ -278,6 +428,7 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: ls_package_data TYPE scompkdtln, DATA: ls_package_data TYPE scompkdtln,
li_package TYPE REF TO if_package, li_package TYPE REF TO if_package,
@ -286,7 +437,8 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ls_usage_data TYPE scomppdtln, ls_usage_data TYPE scomppdtln,
li_usage TYPE REF TO if_package_permission_to_use. li_usage TYPE REF TO if_package_permission_to_use.
FIELD-SYMBOLS: <field> TYPE any. FIELD-SYMBOLS: <lg_field> TYPE any.
li_package = get_package( ). li_package = get_package( ).
IF li_package IS NOT BOUND. IF li_package IS NOT BOUND.
@ -323,9 +475,9 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ASSIGN COMPONENT 'TRANSLATION_GRAPH_DEPTH_TEXT' ASSIGN COMPONENT 'TRANSLATION_GRAPH_DEPTH_TEXT'
OF STRUCTURE ls_package_data OF STRUCTURE ls_package_data
TO <field>. TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR: <field>. CLEAR: <lg_field>.
ENDIF. ENDIF.
" Clear things related to local installation package " Clear things related to local installation package
@ -338,9 +490,9 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
ASSIGN COMPONENT 'TRANSLATION_GRAPH_DEPTH' ASSIGN COMPONENT 'TRANSLATION_GRAPH_DEPTH'
OF STRUCTURE ls_package_data OF STRUCTURE ls_package_data
TO <field>. TO <lg_field>.
IF sy-subrc = 0. IF sy-subrc = 0.
CLEAR: <field>. CLEAR: <lg_field>.
ENDIF. ENDIF.
CLEAR: ls_package_data-korrflag. CLEAR: ls_package_data-korrflag.
@ -381,139 +533,4 @@ CLASS zcl_abapgit_object_devc IMPLEMENTATION.
io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ). io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD update_pinf_usages.
DATA: lt_current_permissions TYPE tpak_permission_to_use_list,
li_usage TYPE REF TO if_package_permission_to_use,
ls_data_sign TYPE scomppsign,
ls_add_permission_data TYPE pkgpermdat,
lt_handled TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line.
FIELD-SYMBOLS: <ls_usage_data> LIKE LINE OF it_usage_data.
" Get the current permissions
ii_package->get_permissions_to_use(
IMPORTING
e_permissions = lt_current_permissions
EXCEPTIONS
object_invalid = 1
unexpected_error = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE=>GET_PERMISSIONS_TO_USE { sy-subrc }| ).
ENDIF.
ls_data_sign-err_sever = abap_true.
" New permissions
LOOP AT it_usage_data ASSIGNING <ls_usage_data>.
READ TABLE lt_current_permissions
WITH KEY table_line->package_interface_name = <ls_usage_data>-intf_name
INTO li_usage.
IF sy-subrc = 0 AND li_usage IS BOUND.
INSERT sy-tabix INTO TABLE lt_handled.
" Permission already exists, update attributes
li_usage->set_all_attributes(
EXPORTING
i_permission_data = <ls_usage_data>
i_data_sign = ls_data_sign
EXCEPTIONS
object_not_changeable = 1
object_invalid = 2
intern_err = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise(
|Error from IF_PACKAGE_PERMISSION_TO_USE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
ENDIF.
ELSE.
" Permission does not exist yet, add it
MOVE-CORRESPONDING <ls_usage_data> TO ls_add_permission_data.
ii_package->add_permission_to_use(
EXPORTING
i_pkg_permission_data = ls_add_permission_data
EXCEPTIONS
object_not_changeable = 1
object_access_error = 2
object_already_existing = 3
object_invalid = 4
unexpected_error = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->ADD_PERMISSION_TO_USE { sy-subrc }| ).
ENDIF.
ENDIF.
FREE li_usage.
ENDLOOP.
" Delete missing usages
LOOP AT lt_current_permissions INTO li_usage.
READ TABLE lt_handled WITH TABLE KEY table_line = sy-tabix TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
CONTINUE.
ENDIF.
li_usage->delete(
EXCEPTIONS
object_not_changeable = 1
object_invalid = 2
deletion_not_allowed = 3
intern_err = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->DELETE { sy-subrc }| ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD set_lock.
DATA: lv_changeable TYPE abap_bool.
ii_package->get_changeable( IMPORTING e_changeable = lv_changeable ).
IF lv_changeable <> iv_lock.
ii_package->set_changeable(
EXPORTING
i_changeable = iv_lock
EXCEPTIONS
object_locked_by_other_user = 1
permission_failure = 2
object_already_changeable = 3
object_already_unlocked = 4
object_just_created = 5
object_deleted = 6
object_modified = 7
object_not_existing = 8
object_invalid = 9
unexpected_error = 10
OTHERS = 11 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_CHANGEABLE { sy-subrc }| ).
ENDIF.
ENDIF.
ii_package->set_permissions_changeable(
EXPORTING
i_changeable = iv_lock
i_suppress_dialog = abap_true
EXCEPTIONS
object_already_changeable = 1
object_already_unlocked = 2
object_locked_by_other_user = 3
object_modified = 4
object_just_created = 5
object_deleted = 6
permission_failure = 7
object_invalid = 8
unexpected_error = 9
OTHERS = 10 ).
IF ( sy-subrc = 1 AND iv_lock = abap_true ) OR ( sy-subrc = 2 AND iv_lock = abap_false ).
" There's no getter to find out beforehand...
ELSEIF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_PERMISSIONS_CHANGEABLE { sy-subrc }| ).
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -17,13 +17,10 @@ CLASS zcl_abapgit_object_dial DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_dial IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_DIAL IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -31,70 +28,13 @@ CLASS zcl_abapgit_object_dial IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: ls_tdct TYPE tdct.
ls_tdct = _read_tdct( ).
rv_bool = boolc( ls_tdct IS NOT INITIAL ).
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: ls_dialog_module TYPE ty_dialog_module.
ls_dialog_module-tdct = _read_tdct( ).
SELECT * FROM diapar
INTO TABLE ls_dialog_module-dia_pars
WHERE dnam = ls_dialog_module-tdct-dnam.
io_xml->add( iv_name = 'DIAL'
ig_data = ls_dialog_module ).
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: ls_dialog_module TYPE ty_dialog_module.
io_xml->read(
EXPORTING
iv_name = 'DIAL'
CHANGING
cg_data = ls_dialog_module ).
CALL FUNCTION 'RS_DIALOG_CREATE'
EXPORTING
dialogname = ls_dialog_module-tdct-dnam
dynpronumber = ls_dialog_module-tdct-dynr
programname = ls_dialog_module-tdct-prog
suppress_corr_check = abap_false
* It seems that dia_par parameter doesn't do anything, but we can't omit it
* Parameters are inserted below
TABLES
dia_par = ls_dialog_module-dia_pars
EXCEPTIONS
dialog_already_exists = 1
invalid_name = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error deserializing dialogmodule { ms_item-obj_name }| ).
ENDIF.
" It seems that there's no API for diapar, therefore we manipulate it directly
INSERT diapar FROM TABLE ls_dialog_module-dia_pars.
ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
@ -158,15 +98,75 @@ CLASS zcl_abapgit_object_dial IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: ls_dialog_module TYPE ty_dialog_module.
io_xml->read(
EXPORTING
iv_name = 'DIAL'
CHANGING
cg_data = ls_dialog_module ).
CALL FUNCTION 'RS_DIALOG_CREATE'
EXPORTING
dialogname = ls_dialog_module-tdct-dnam
dynpronumber = ls_dialog_module-tdct-dynr
programname = ls_dialog_module-tdct-prog
suppress_corr_check = abap_false
* It seems that dia_par parameter doesn't do anything, but we can't omit it
* Parameters are inserted below
TABLES
dia_par = ls_dialog_module-dia_pars
EXCEPTIONS
dialog_already_exists = 1
invalid_name = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error deserializing dialogmodule { ms_item-obj_name }| ).
ENDIF.
" It seems that there's no API for diapar, therefore we manipulate it directly
INSERT diapar FROM TABLE ls_dialog_module-dia_pars.
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: ls_tdct TYPE tdct.
ls_tdct = _read_tdct( ).
rv_bool = boolc( ls_tdct IS NOT INITIAL ).
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
DATA: objectname TYPE tdct-dnam. DATA: lv_objectname TYPE tdct-dnam.
objectname = ms_item-obj_name. lv_objectname = ms_item-obj_name.
CALL FUNCTION 'RS_DIALOG_SHOW' CALL FUNCTION 'RS_DIALOG_SHOW'
EXPORTING EXPORTING
objectname = objectname objectname = lv_objectname
type = 'VW' type = 'VW'
EXCEPTIONS EXCEPTIONS
object_not_found = 1 object_not_found = 1
@ -178,23 +178,32 @@ CLASS zcl_abapgit_object_dial IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. METHOD zif_abapgit_object~serialize.
DATA: ls_dialog_module TYPE ty_dialog_module.
ls_dialog_module-tdct = _read_tdct( ).
SELECT * FROM diapar
INTO TABLE ls_dialog_module-dia_pars
WHERE dnam = ls_dialog_module-tdct-dnam.
io_xml->add( iv_name = 'DIAL'
ig_data = ls_dialog_module ).
ENDMETHOD. ENDMETHOD.
METHOD _read_tdct. METHOD _read_tdct.
DATA: dnam TYPE tdct-dnam. DATA: lv_dnam TYPE tdct-dnam.
dnam = ms_item-obj_name. lv_dnam = ms_item-obj_name.
SELECT SINGLE * FROM tdct SELECT SINGLE * FROM tdct
INTO rs_tdct INTO rs_tdct
WHERE dnam = dnam. WHERE dnam = lv_dnam.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -34,25 +34,150 @@ CLASS zcl_abapgit_object_doma DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_doma IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
DATA: lv_date TYPE dats, CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
lv_time TYPE tims.
SELECT SINGLE as4date as4time FROM dd01l
INTO (lv_date, lv_time)
WHERE domname = ms_item-obj_name
AND as4local = 'A'
AND as4vers = '0000'.
rv_changed = check_timestamp( METHOD deserialize_texts.
iv_timestamp = iv_timestamp
iv_date = lv_date DATA: lv_name TYPE ddobjname,
iv_time = lv_time ). ls_dd01v_tmp TYPE dd01v,
lt_dd07v_tmp TYPE TABLE OF dd07v,
lt_i18n_langs TYPE TABLE OF langu,
lt_dd01_texts TYPE tt_dd01_texts,
lt_dd07_texts TYPE tt_dd07_texts.
FIELD-SYMBOLS: <lv_lang> LIKE LINE OF lt_i18n_langs,
<ls_dd07v> LIKE LINE OF it_dd07v,
<ls_dd01_text> LIKE LINE OF lt_dd01_texts,
<ls_dd07_text> LIKE LINE OF lt_dd07_texts.
lv_name = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'I18N_LANGS'
CHANGING cg_data = lt_i18n_langs ).
io_xml->read( EXPORTING iv_name = 'DD01_TEXTS'
CHANGING cg_data = lt_dd01_texts ).
io_xml->read( EXPORTING iv_name = 'DD07_TEXTS'
CHANGING cg_data = lt_dd07_texts ).
SORT lt_i18n_langs.
SORT lt_dd07_texts BY ddlanguage. " Optimization
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
" Domain description
ls_dd01v_tmp = is_dd01v.
READ TABLE lt_dd01_texts ASSIGNING <ls_dd01_text> WITH KEY ddlanguage = <lv_lang>.
IF sy-subrc > 0.
zcx_abapgit_exception=>raise( |DD01_TEXTS cannot find lang { <lv_lang> } in XML| ).
ENDIF.
MOVE-CORRESPONDING <ls_dd01_text> TO ls_dd01v_tmp.
" Domain values
lt_dd07v_tmp = it_dd07v.
LOOP AT lt_dd07v_tmp ASSIGNING <ls_dd07v>.
READ TABLE lt_dd07_texts ASSIGNING <ls_dd07_text>
WITH KEY ddlanguage = <lv_lang> valpos = <ls_dd07v>-valpos.
CHECK sy-subrc = 0. " ! no translation -> master translation remain (maybe not OK)
MOVE-CORRESPONDING <ls_dd07_text> TO <ls_dd07v>.
DELETE lt_dd07_texts INDEX sy-tabix. " Optimization
ENDLOOP.
CALL FUNCTION 'DDIF_DOMA_PUT'
EXPORTING
name = lv_name
dd01v_wa = ls_dd01v_tmp
TABLES
dd07v_tab = lt_dd07v_tmp
EXCEPTIONS
doma_not_found = 1
name_inconsistent = 2
doma_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DDIF_DOMA_PUT @TEXTS' ).
ENDIF.
ENDLOOP.
ENDMETHOD. "deserialize_texts
METHOD serialize_texts.
DATA: lv_name TYPE ddobjname,
lv_index TYPE i,
ls_dd01v TYPE dd01v,
lt_dd07v TYPE TABLE OF dd07v,
lt_i18n_langs TYPE TABLE OF langu,
lt_dd01_texts TYPE tt_dd01_texts,
lt_dd07_texts TYPE tt_dd07_texts.
FIELD-SYMBOLS: <lv_lang> LIKE LINE OF lt_i18n_langs,
<ls_dd07v> LIKE LINE OF lt_dd07v,
<ls_dd01_text> LIKE LINE OF lt_dd01_texts,
<ls_dd07_text> LIKE LINE OF lt_dd07_texts.
lv_name = ms_item-obj_name.
" Collect additional languages, skip master lang - it was serialized already
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd01v
WHERE domname = lv_name
AND ddlanguage <> mv_language. "#EC CI_SUBRC
LOOP AT lt_i18n_langs ASSIGNING <lv_lang>.
lv_index = sy-tabix.
CALL FUNCTION 'DDIF_DOMA_GET'
EXPORTING
name = lv_name
langu = <lv_lang>
IMPORTING
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
IF sy-subrc <> 0 OR ls_dd01v-ddlanguage IS INITIAL.
DELETE lt_i18n_langs INDEX lv_index. " Don't save this lang
CONTINUE.
ENDIF.
APPEND INITIAL LINE TO lt_dd01_texts ASSIGNING <ls_dd01_text>.
MOVE-CORRESPONDING ls_dd01v TO <ls_dd01_text>.
LOOP AT lt_dd07v ASSIGNING <ls_dd07v>.
APPEND INITIAL LINE TO lt_dd07_texts ASSIGNING <ls_dd07_text>.
MOVE-CORRESPONDING <ls_dd07v> TO <ls_dd07_text>.
ENDLOOP.
ENDLOOP.
SORT lt_i18n_langs ASCENDING.
SORT lt_dd01_texts BY ddlanguage ASCENDING.
SORT lt_dd07_texts BY valpos ASCENDING ddlanguage ASCENDING.
IF lines( lt_i18n_langs ) > 0.
io_xml->add( iv_name = 'I18N_LANGS'
ig_data = lt_i18n_langs ).
io_xml->add( iv_name = 'DD01_TEXTS'
ig_data = lt_dd01_texts ).
io_xml->add( iv_name = 'DD07_TEXTS'
ig_data = lt_dd07_texts ).
ENDIF.
ENDMETHOD. "serialize_texts
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -66,30 +191,11 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
DATA: lv_domname TYPE dd01l-domname.
SELECT SINGLE domname FROM dd01l INTO lv_domname
WHERE domname = ms_item-obj_name
AND as4local = 'A'
AND as4vers = '0000'.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~jump.
jump_se11( iv_radio = 'RSRD1-DOMA'
iv_field = 'RSRD1-DOMA_VAL' ).
ENDMETHOD. "jump
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
* see class CL_WB_DDIC * see class CL_WB_DDIC
@ -115,6 +221,102 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
ENDMETHOD. "delete ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize.
* package SEDD
* package SDIC
* fm TR_TADIR_INTERFACE
* fm RS_CORR_INSERT ?
DATA: lv_name TYPE ddobjname,
ls_dd01v TYPE dd01v,
lt_dd07v TYPE TABLE OF dd07v.
io_xml->read( EXPORTING iv_name = 'DD01V'
CHANGING cg_data = ls_dd01v ).
io_xml->read( EXPORTING iv_name = 'DD07V_TAB'
CHANGING cg_data = lt_dd07v ).
corr_insert( iv_package ).
lv_name = ms_item-obj_name. " type conversion
CALL FUNCTION 'DDIF_DOMA_PUT'
EXPORTING
name = lv_name
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
doma_not_found = 1
name_inconsistent = 2
doma_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DDIF_DOMA_PUT' ).
ENDIF.
deserialize_texts( io_xml = io_xml
is_dd01v = ls_dd01v
it_dd07v = lt_dd07v ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~exists.
DATA: lv_domname TYPE dd01l-domname.
SELECT SINGLE domname FROM dd01l INTO lv_domname
WHERE domname = ms_item-obj_name
AND as4local = 'A'
AND as4vers = '0000'.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-ddic = abap_true.
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
DATA: lv_date TYPE dats,
lv_time TYPE tims.
SELECT SINGLE as4date as4time FROM dd01l
INTO (lv_date, lv_time)
WHERE domname = ms_item-obj_name
AND as4local = 'A'
AND as4vers = '0000'.
rv_changed = check_timestamp(
iv_timestamp = iv_timestamp
iv_date = lv_date
iv_time = lv_time ).
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump.
jump_se11( iv_radio = 'RSRD1-DOMA'
iv_field = 'RSRD1-DOMA_VAL' ).
ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lv_name TYPE ddobjname, DATA: lv_name TYPE ddobjname,
@ -166,193 +368,4 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
serialize_texts( io_xml ). serialize_texts( io_xml ).
ENDMETHOD. "serialize ENDMETHOD. "serialize
ENDCLASS.
METHOD zif_abapgit_object~deserialize.
* package SEDD
* package SDIC
* fm TR_TADIR_INTERFACE
* fm RS_CORR_INSERT ?
DATA: lv_name TYPE ddobjname,
ls_dd01v TYPE dd01v,
lt_dd07v TYPE TABLE OF dd07v.
io_xml->read( EXPORTING iv_name = 'DD01V'
CHANGING cg_data = ls_dd01v ).
io_xml->read( EXPORTING iv_name = 'DD07V_TAB'
CHANGING cg_data = lt_dd07v ).
corr_insert( iv_package ).
lv_name = ms_item-obj_name. " type conversion
CALL FUNCTION 'DDIF_DOMA_PUT'
EXPORTING
name = lv_name
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
doma_not_found = 1
name_inconsistent = 2
doma_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DDIF_DOMA_PUT' ).
ENDIF.
deserialize_texts( io_xml = io_xml
is_dd01v = ls_dd01v
it_dd07v = lt_dd07v ).
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD. "deserialize
METHOD serialize_texts.
DATA: lv_name TYPE ddobjname,
lv_index TYPE i,
ls_dd01v TYPE dd01v,
lt_dd07v TYPE TABLE OF dd07v,
lt_i18n_langs TYPE TABLE OF langu,
lt_dd01_texts TYPE tt_dd01_texts,
lt_dd07_texts TYPE tt_dd07_texts.
FIELD-SYMBOLS: <lang> LIKE LINE OF lt_i18n_langs,
<dd07v> LIKE LINE OF lt_dd07v,
<dd01_text> LIKE LINE OF lt_dd01_texts,
<dd07_text> LIKE LINE OF lt_dd07_texts.
lv_name = ms_item-obj_name.
" Collect additional languages, skip master lang - it was serialized already
SELECT DISTINCT ddlanguage AS langu INTO TABLE lt_i18n_langs
FROM dd01v
WHERE domname = lv_name
AND ddlanguage <> mv_language. "#EC CI_SUBRC
LOOP AT lt_i18n_langs ASSIGNING <lang>.
lv_index = sy-tabix.
CALL FUNCTION 'DDIF_DOMA_GET'
EXPORTING
name = lv_name
langu = <lang>
IMPORTING
dd01v_wa = ls_dd01v
TABLES
dd07v_tab = lt_dd07v
EXCEPTIONS
illegal_input = 1
OTHERS = 2.
IF sy-subrc <> 0 OR ls_dd01v-ddlanguage IS INITIAL.
DELETE lt_i18n_langs INDEX lv_index. " Don't save this lang
CONTINUE.
ENDIF.
APPEND INITIAL LINE TO lt_dd01_texts ASSIGNING <dd01_text>.
MOVE-CORRESPONDING ls_dd01v TO <dd01_text>.
LOOP AT lt_dd07v ASSIGNING <dd07v>.
APPEND INITIAL LINE TO lt_dd07_texts ASSIGNING <dd07_text>.
MOVE-CORRESPONDING <dd07v> TO <dd07_text>.
ENDLOOP.
ENDLOOP.
SORT lt_i18n_langs ASCENDING.
SORT lt_dd01_texts BY ddlanguage ASCENDING.
SORT lt_dd07_texts BY valpos ASCENDING ddlanguage ASCENDING.
IF lines( lt_i18n_langs ) > 0.
io_xml->add( iv_name = 'I18N_LANGS'
ig_data = lt_i18n_langs ).
io_xml->add( iv_name = 'DD01_TEXTS'
ig_data = lt_dd01_texts ).
io_xml->add( iv_name = 'DD07_TEXTS'
ig_data = lt_dd07_texts ).
ENDIF.
ENDMETHOD. "serialize_texts
METHOD deserialize_texts.
DATA: lv_name TYPE ddobjname,
ls_dd01v_tmp TYPE dd01v,
lt_dd07v_tmp TYPE TABLE OF dd07v,
lt_i18n_langs TYPE TABLE OF langu,
lt_dd01_texts TYPE tt_dd01_texts,
lt_dd07_texts TYPE tt_dd07_texts.
FIELD-SYMBOLS: <lang> LIKE LINE OF lt_i18n_langs,
<dd07v> LIKE LINE OF it_dd07v,
<dd01_text> LIKE LINE OF lt_dd01_texts,
<dd07_text> LIKE LINE OF lt_dd07_texts.
lv_name = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'I18N_LANGS'
CHANGING cg_data = lt_i18n_langs ).
io_xml->read( EXPORTING iv_name = 'DD01_TEXTS'
CHANGING cg_data = lt_dd01_texts ).
io_xml->read( EXPORTING iv_name = 'DD07_TEXTS'
CHANGING cg_data = lt_dd07_texts ).
SORT lt_i18n_langs.
SORT lt_dd07_texts BY ddlanguage. " Optimization
LOOP AT lt_i18n_langs ASSIGNING <lang>.
" Domain description
ls_dd01v_tmp = is_dd01v.
READ TABLE lt_dd01_texts ASSIGNING <dd01_text> WITH KEY ddlanguage = <lang>.
IF sy-subrc > 0.
zcx_abapgit_exception=>raise( |DD01_TEXTS cannot find lang { <lang> } in XML| ).
ENDIF.
MOVE-CORRESPONDING <dd01_text> TO ls_dd01v_tmp.
" Domain values
lt_dd07v_tmp = it_dd07v.
LOOP AT lt_dd07v_tmp ASSIGNING <dd07v>.
READ TABLE lt_dd07_texts ASSIGNING <dd07_text>
WITH KEY ddlanguage = <lang> valpos = <dd07v>-valpos.
CHECK sy-subrc = 0. " ! no translation -> master translation remain (maybe not OK)
MOVE-CORRESPONDING <dd07_text> TO <dd07v>.
DELETE lt_dd07_texts INDEX sy-tabix. " Optimization
ENDLOOP.
CALL FUNCTION 'DDIF_DOMA_PUT'
EXPORTING
name = lv_name
dd01v_wa = ls_dd01v_tmp
TABLES
dd07v_tab = lt_dd07v_tmp
EXCEPTIONS
doma_not_found = 1
name_inconsistent = 2
doma_inconsistent = 3
put_failure = 4
put_refused = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from DDIF_DOMA_PUT @TEXTS' ).
ENDIF.
ENDLOOP.
ENDMETHOD. "deserialize_texts
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION

View File

@ -13,28 +13,32 @@ CLASS zcl_abapgit_object_enho_fugr DEFINITION PUBLIC.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_ENHO_FUGR IMPLEMENTATION.
METHOD constructor. METHOD constructor.
ms_item = is_item. ms_item = is_item.
mo_files = io_files. mo_files = io_files.
ENDMETHOD. "constructor ENDMETHOD. "constructor
METHOD zif_abapgit_object_enho~deserialize. METHOD zif_abapgit_object_enho~deserialize.
DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr, DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr,
ls_enha_data TYPE enhfugrdata, ls_enha_data TYPE enhfugrdata,
li_tool TYPE REF TO if_enh_tool, li_tool TYPE REF TO if_enh_tool,
tool TYPE enhtooltype, lv_tool TYPE enhtooltype,
lv_package TYPE devclass. lv_package TYPE devclass.
FIELD-SYMBOLS: <fuba> TYPE enhfugrfuncdata. FIELD-SYMBOLS: <ls_fuba> TYPE enhfugrfuncdata.
io_xml->read( io_xml->read(
EXPORTING EXPORTING
iv_name = 'TOOL' iv_name = 'TOOL'
CHANGING CHANGING
cg_data = tool ). cg_data = lv_tool ).
io_xml->read( io_xml->read(
EXPORTING EXPORTING
@ -49,7 +53,7 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
EXPORTING EXPORTING
enhname = |{ ms_item-obj_name }| enhname = |{ ms_item-obj_name }|
enhtype = '' enhtype = ''
enhtooltype = tool enhtooltype = lv_tool
IMPORTING IMPORTING
enhancement = li_tool enhancement = li_tool
CHANGING CHANGING
@ -59,10 +63,10 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
lo_fugrdata->set_fugr( ls_enha_data-fugr ). lo_fugrdata->set_fugr( ls_enha_data-fugr ).
LOOP AT ls_enha_data-enh_fubas ASSIGNING <fuba>. LOOP AT ls_enha_data-enh_fubas ASSIGNING <ls_fuba>.
lo_fugrdata->set_func_data( func_name = <fuba>-fuba lo_fugrdata->set_func_data( func_name = <ls_fuba>-fuba
func_enhadata = <fuba> ). func_enhadata = <ls_fuba> ).
ENDLOOP. ENDLOOP.
@ -75,32 +79,32 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object_enho~deserialize ENDMETHOD. "zif_abapgit_object_enho~deserialize
METHOD zif_abapgit_object_enho~serialize. METHOD zif_abapgit_object_enho~serialize.
DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr, DATA: lo_fugrdata TYPE REF TO cl_enh_tool_fugr,
fugr_name TYPE rs38l-area, lv_fugr_name TYPE rs38l-area,
ls_enha_data TYPE enhfugrdata. ls_enha_data TYPE enhfugrdata.
FIELD-SYMBOLS: <docuobj> TYPE enhfugrparamdocu. FIELD-SYMBOLS: <ls_docuobj> TYPE enhfugrparamdocu.
lo_fugrdata ?= ii_enh_tool. lo_fugrdata ?= ii_enh_tool.
lo_fugrdata->get_fugr( lo_fugrdata->get_fugr(
IMPORTING IMPORTING
fugr_name = fugr_name ). fugr_name = lv_fugr_name ).
TRY. TRY.
lo_fugrdata->get_all_data_for_fugr( lo_fugrdata->get_all_data_for_fugr(
EXPORTING EXPORTING
fugr_name = fugr_name fugr_name = lv_fugr_name
IMPORTING IMPORTING
enha_data = ls_enha_data ). enha_data = ls_enha_data ).
LOOP AT ls_enha_data-docuobjs ASSIGNING <docuobj>. LOOP AT ls_enha_data-docuobjs ASSIGNING <ls_docuobj>.
CLEAR: <ls_docuobj>-shorttext,
CLEAR: <docuobj>-shorttext, <ls_docuobj>-longtext.
<docuobj>-longtext.
ENDLOOP. ENDLOOP.
CATCH cx_enh_not_found. CATCH cx_enh_not_found.
@ -114,5 +118,4 @@ CLASS zcl_abapgit_object_enho_fugr IMPLEMENTATION.
ig_data = ls_enha_data ). ig_data = ls_enha_data ).
ENDMETHOD. "zif_abapgit_object_enho~serialize ENDMETHOD. "zif_abapgit_object_enho~serialize
ENDCLASS.
ENDCLASS. "zcl_abapgit_object_enho_wdyconf IMPLEMENTATION

View File

@ -12,28 +12,33 @@ CLASS zcl_abapgit_object_enho_wdyn DEFINITION PUBLIC.
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OBJECT_ENHO_WDYN IMPLEMENTATION.
METHOD constructor. METHOD constructor.
ms_item = is_item. ms_item = is_item.
ENDMETHOD. "constructor ENDMETHOD. "constructor
METHOD zif_abapgit_object_enho~deserialize. METHOD zif_abapgit_object_enho~deserialize.
DATA: ls_enh_data TYPE enhwdyn, DATA: ls_enh_data TYPE enhwdyn,
li_tool TYPE REF TO if_enh_tool, li_tool TYPE REF TO if_enh_tool,
lo_wdyn TYPE REF TO cl_enh_tool_wdy, lo_wdyn TYPE REF TO cl_enh_tool_wdy,
tool_type TYPE enhtooltype, lv_tool_type TYPE enhtooltype,
package TYPE devclass. lv_package TYPE devclass.
FIELD-SYMBOLS: <ls_controller_data> TYPE enhwdyc,
<ls_view_data> TYPE enhwdyv.
FIELD-SYMBOLS: <controller_data> TYPE enhwdyc,
<view_data> TYPE enhwdyv.
io_xml->read( io_xml->read(
EXPORTING EXPORTING
iv_name = 'TOOL' iv_name = 'TOOL'
CHANGING CHANGING
cg_data = tool_type ). cg_data = lv_tool_type ).
io_xml->read( io_xml->read(
EXPORTING EXPORTING
@ -41,18 +46,18 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
CHANGING CHANGING
cg_data = ls_enh_data ). cg_data = ls_enh_data ).
package = iv_package. lv_package = iv_package.
TRY. TRY.
cl_enh_factory=>create_enhancement( cl_enh_factory=>create_enhancement(
EXPORTING EXPORTING
enhname = |{ ms_item-obj_name }| enhname = |{ ms_item-obj_name }|
enhtype = '' enhtype = ''
enhtooltype = tool_type enhtooltype = lv_tool_type
IMPORTING IMPORTING
enhancement = li_tool enhancement = li_tool
CHANGING CHANGING
devclass = package ). devclass = lv_package ).
lo_wdyn ?= li_tool. lo_wdyn ?= li_tool.
@ -60,17 +65,17 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
lo_wdyn->set_component_data( ls_enh_data-component_data ). lo_wdyn->set_component_data( ls_enh_data-component_data ).
LOOP AT ls_enh_data-controller_data ASSIGNING <controller_data>. LOOP AT ls_enh_data-controller_data ASSIGNING <ls_controller_data>.
lo_wdyn->set_controller_data( p_controller_name = <controller_data>-controller_name lo_wdyn->set_controller_data( p_controller_name = <ls_controller_data>-controller_name
p_enh_data = <controller_data> ). p_enh_data = <ls_controller_data> ).
ENDLOOP. ENDLOOP.
LOOP AT ls_enh_data-view_data ASSIGNING <view_data>. LOOP AT ls_enh_data-view_data ASSIGNING <ls_view_data>.
lo_wdyn->set_view_data( p_view_name = <view_data>-view_name lo_wdyn->set_view_data( p_view_name = <ls_view_data>-view_name
p_enh_data = <view_data> ). p_enh_data = <ls_view_data> ).
ENDLOOP. ENDLOOP.
@ -83,20 +88,21 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object_enho~deserialize ENDMETHOD. "zif_abapgit_object_enho~deserialize
METHOD zif_abapgit_object_enho~serialize. METHOD zif_abapgit_object_enho~serialize.
DATA: lo_wdyn TYPE REF TO cl_enh_tool_wdy, DATA: lo_wdyn TYPE REF TO cl_enh_tool_wdy,
component_name TYPE wdy_component_name, lv_component_name TYPE wdy_component_name,
ls_enh_data TYPE enhwdyn. ls_enh_data TYPE enhwdyn.
lo_wdyn ?= ii_enh_tool. lo_wdyn ?= ii_enh_tool.
lv_component_name = lo_wdyn->get_component_name( ).
component_name = lo_wdyn->get_component_name( ).
TRY. TRY.
lo_wdyn->get_all_data_for_comp( lo_wdyn->get_all_data_for_comp(
EXPORTING EXPORTING
p_component_name = component_name p_component_name = lv_component_name
IMPORTING IMPORTING
p_enh_data = ls_enh_data ). p_enh_data = ls_enh_data ).
@ -111,5 +117,4 @@ CLASS zcl_abapgit_object_enho_wdyn IMPLEMENTATION.
ENDTRY. ENDTRY.
ENDMETHOD. "zif_abapgit_object_enho~serialize ENDMETHOD. "zif_abapgit_object_enho~serialize
ENDCLASS.
ENDCLASS. "zcl_abapgit_object_enho_wdyconf IMPLEMENTATION

View File

@ -69,125 +69,40 @@ CLASS zcl_abapgit_object_fugr DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
DATA: lt_functab TYPE ty_rs38l_incl_tt,
lt_includes TYPE rso_t_objnm.
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab,
<include_name> LIKE LINE OF lt_includes.
lt_includes = includes( ). " Main prog also included here
LOOP AT lt_includes ASSIGNING <include_name>.
rv_changed = check_prog_changed_since(
iv_program = <include_name>
iv_timestamp = iv_timestamp ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
lt_functab = functions( ).
LOOP AT lt_functab ASSIGNING <ls_func>.
rv_changed = check_prog_changed_since(
iv_program = <ls_func>-include
iv_timestamp = iv_timestamp ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by.
TYPES: BEGIN OF ty_stamps,
user TYPE xubname,
date TYPE d,
time TYPE t,
END OF ty_stamps.
DATA: lt_stamps TYPE STANDARD TABLE OF ty_stamps WITH DEFAULT KEY,
lv_program TYPE program,
lt_includes TYPE rso_t_objnm.
FIELD-SYMBOLS: <ls_stamp> LIKE LINE OF lt_stamps,
<lv_include> LIKE LINE OF lt_includes.
lv_program = main_name( ). CLASS ZCL_ABAPGIT_OBJECT_FUGR IMPLEMENTATION.
CALL FUNCTION 'RS_GET_ALL_INCLUDES'
METHOD are_exceptions_class_based.
DATA:
lt_dokumentation TYPE TABLE OF funct,
lt_exception_list TYPE TABLE OF rsexc,
lt_export_parameter TYPE TABLE OF rsexp,
lt_import_parameter TYPE TABLE OF rsimp,
lt_tables_parameter TYPE TABLE OF rstbl.
CALL FUNCTION 'FUNCTION_IMPORT_DOKU'
EXPORTING EXPORTING
program = lv_program funcname = iv_function_name
IMPORTING
exception_class = rv_return
TABLES TABLES
includetab = lt_includes dokumentation = lt_dokumentation
exception_list = lt_exception_list
export_parameter = lt_export_parameter
import_parameter = lt_import_parameter
tables_parameter = lt_tables_parameter
EXCEPTIONS EXCEPTIONS
not_existent = 1 error_message = 1
no_program = 2 function_not_found = 2
OTHERS = 3. invalid_name = 3
OTHERS = 4.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_GET_ALL_INCLUDES' ). zcx_abapgit_exception=>raise( 'Error from FUNCTION_IMPORT_DOKU' ).
ENDIF. ENDIF.
SELECT unam AS user udat AS date utime AS time FROM reposrc
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = lv_program
AND r3state = 'A'. "#EC CI_SUBRC
LOOP AT lt_includes ASSIGNING <lv_include>.
SELECT unam AS user udat AS date utime AS time FROM reposrc
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = <lv_include>
AND r3state = 'A'. "#EC CI_SUBRC
ENDLOOP.
SELECT unam AS user udat AS date utime AS time FROM repotext " Program text pool
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = lv_program
AND r3state = 'A'. "#EC CI_SUBRC
SELECT vautor AS user vdatum AS date vzeit AS time FROM eudb " GUI
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE relid = 'CU'
AND name = lv_program
AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS.
* Screens: username not stored in D020S database table
SORT lt_stamps BY date DESCENDING time DESCENDING.
READ TABLE lt_stamps INDEX 1 ASSIGNING <ls_stamp>.
IF sy-subrc = 0.
rv_user = <ls_stamp>-user.
ELSE.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~exists.
DATA: lv_pool TYPE tlibg-area.
lv_pool = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_EXISTS'
EXPORTING
function_pool = lv_pool
EXCEPTIONS
pool_not_exists = 1.
rv_bool = boolc( sy-subrc <> 1 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD deserialize_functions. METHOD deserialize_functions.
@ -283,6 +198,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "deserialize_functions ENDMETHOD. "deserialize_functions
METHOD deserialize_includes. METHOD deserialize_includes.
DATA: lo_xml TYPE REF TO zcl_abapgit_xml_input, DATA: lo_xml TYPE REF TO zcl_abapgit_xml_input,
@ -326,6 +242,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "deserialize_includes ENDMETHOD. "deserialize_includes
METHOD deserialize_xml. METHOD deserialize_xml.
DATA: lv_complete TYPE rs38l-area, DATA: lv_complete TYPE rs38l-area,
@ -390,25 +307,31 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "deserialize_xml ENDMETHOD. "deserialize_xml
METHOD serialize_xml.
DATA: lt_includes TYPE rso_t_objnm, METHOD functions.
lv_areat TYPE tlibt-areat.
DATA: lv_area TYPE rs38l-area.
SELECT SINGLE areat INTO lv_areat lv_area = ms_item-obj_name.
FROM tlibt
WHERE spras = mv_language
AND area = ms_item-obj_name. "#EC CI_GENBUFF "#EC CI_SUBRC
lt_includes = includes( ). CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS'
EXPORTING
function_pool = lv_area
TABLES
functab = rt_functab
EXCEPTIONS
function_pool_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ).
ENDIF.
io_xml->add( iv_name = 'AREAT' SORT rt_functab BY funcname ASCENDING.
ig_data = lv_areat ). DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname.
io_xml->add( iv_name = 'INCLUDES'
ig_data = lt_includes ). ENDMETHOD. "functions
ENDMETHOD. "serialize_xml
METHOD includes. METHOD includes.
@ -487,29 +410,6 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "includes ENDMETHOD. "includes
METHOD functions.
DATA: lv_area TYPE rs38l-area.
lv_area = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_CONTENTS'
EXPORTING
function_pool = lv_area
TABLES
functab = rt_functab
EXCEPTIONS
function_pool_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from RS_FUNCTION_POOL_CONTENTS' ).
ENDIF.
SORT rt_functab BY funcname ASCENDING.
DELETE ADJACENT DUPLICATES FROM rt_functab COMPARING funcname.
ENDMETHOD. "functions
METHOD main_name. METHOD main_name.
@ -547,6 +447,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "main_name ENDMETHOD. "main_name
METHOD serialize_functions. METHOD serialize_functions.
DATA: DATA:
@ -615,6 +516,7 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "serialize_functions ENDMETHOD. "serialize_functions
METHOD serialize_includes. METHOD serialize_includes.
DATA: lt_includes TYPE rso_t_objnm. DATA: lt_includes TYPE rso_t_objnm.
@ -636,35 +538,232 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDMETHOD. "serialize_includes ENDMETHOD. "serialize_includes
METHOD are_exceptions_class_based.
DATA:
lt_dokumentation TYPE TABLE OF funct,
lt_exception_list TYPE TABLE OF rsexc,
lt_export_parameter TYPE TABLE OF rsexp,
lt_import_parameter TYPE TABLE OF rsimp,
lt_tables_parameter TYPE TABLE OF rstbl.
CALL FUNCTION 'FUNCTION_IMPORT_DOKU' METHOD serialize_xml.
DATA: lt_includes TYPE rso_t_objnm,
lv_areat TYPE tlibt-areat.
SELECT SINGLE areat INTO lv_areat
FROM tlibt
WHERE spras = mv_language
AND area = ms_item-obj_name. "#EC CI_GENBUFF "#EC CI_SUBRC
lt_includes = includes( ).
io_xml->add( iv_name = 'AREAT'
ig_data = lv_areat ).
io_xml->add( iv_name = 'INCLUDES'
ig_data = lt_includes ).
ENDMETHOD. "serialize_xml
METHOD zif_abapgit_object~changed_by.
TYPES: BEGIN OF ty_stamps,
user TYPE xubname,
date TYPE d,
time TYPE t,
END OF ty_stamps.
DATA: lt_stamps TYPE STANDARD TABLE OF ty_stamps WITH DEFAULT KEY,
lv_program TYPE program,
lt_includes TYPE rso_t_objnm.
FIELD-SYMBOLS: <ls_stamp> LIKE LINE OF lt_stamps,
<lv_include> LIKE LINE OF lt_includes.
lv_program = main_name( ).
CALL FUNCTION 'RS_GET_ALL_INCLUDES'
EXPORTING EXPORTING
funcname = iv_function_name program = lv_program
IMPORTING
exception_class = rv_return
TABLES TABLES
dokumentation = lt_dokumentation includetab = lt_includes
exception_list = lt_exception_list
export_parameter = lt_export_parameter
import_parameter = lt_import_parameter
tables_parameter = lt_tables_parameter
EXCEPTIONS EXCEPTIONS
error_message = 1 not_existent = 1
function_not_found = 2 no_program = 2
invalid_name = 3 OTHERS = 3.
OTHERS = 4.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Error from FUNCTION_IMPORT_DOKU' ). zcx_abapgit_exception=>raise( 'Error from RS_GET_ALL_INCLUDES' ).
ENDIF. ENDIF.
SELECT unam AS user udat AS date utime AS time FROM reposrc
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = lv_program
AND r3state = 'A'. "#EC CI_SUBRC
LOOP AT lt_includes ASSIGNING <lv_include>.
SELECT unam AS user udat AS date utime AS time FROM reposrc
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = <lv_include>
AND r3state = 'A'. "#EC CI_SUBRC
ENDLOOP.
SELECT unam AS user udat AS date utime AS time FROM repotext " Program text pool
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE progname = lv_program
AND r3state = 'A'. "#EC CI_SUBRC
SELECT vautor AS user vdatum AS date vzeit AS time FROM eudb " GUI
APPENDING CORRESPONDING FIELDS OF TABLE lt_stamps
WHERE relid = 'CU'
AND name = lv_program
AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS.
* Screens: username not stored in D020S database table
SORT lt_stamps BY date DESCENDING time DESCENDING.
READ TABLE lt_stamps INDEX 1 ASSIGNING <ls_stamp>.
IF sy-subrc = 0.
rv_user = <ls_stamp>-user.
ELSE.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_area TYPE rs38l-area.
lv_area = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_DELETE'
EXPORTING
area = lv_area
suppress_popups = abap_true
skip_progress_ind = abap_true
EXCEPTIONS
canceled_in_corr = 1
enqueue_system_failure = 2
function_exist = 3
not_executed = 4
no_modify_permission = 5
no_show_permission = 6
permission_failure = 7
pool_not_exist = 8
cancelled = 9
OTHERS = 10.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from RS_FUNCTION_POOL_DELETE' ).
ENDIF.
ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize.
DATA: lv_program_name TYPE programm,
lt_functions TYPE ty_function_tt,
lt_dynpros TYPE ty_dynpro_tt,
ls_cua TYPE ty_cua.
deserialize_xml(
io_xml = io_xml
iv_package = iv_package ).
io_xml->read( EXPORTING iv_name = 'FUNCTIONS'
CHANGING cg_data = lt_functions ).
deserialize_functions( lt_functions ).
deserialize_includes(
io_xml = io_xml
iv_package = iv_package ).
lv_program_name = main_name( ).
io_xml->read( EXPORTING iv_name = 'DYNPROS'
CHANGING cg_data = lt_dynpros ).
deserialize_dynpros( it_dynpros = lt_dynpros ).
io_xml->read( EXPORTING iv_name = 'CUA'
CHANGING cg_data = ls_cua ).
deserialize_cua( iv_program_name = lv_program_name
is_cua = ls_cua ).
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~exists.
DATA: lv_pool TYPE tlibg-area.
lv_pool = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_EXISTS'
EXPORTING
function_pool = lv_pool
EXCEPTIONS
pool_not_exists = 1.
rv_bool = boolc( sy-subrc <> 1 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
DATA: lt_functab TYPE ty_rs38l_incl_tt,
lt_includes TYPE rso_t_objnm.
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab,
<lv_include_name> LIKE LINE OF lt_includes.
lt_includes = includes( ). " Main prog also included here
LOOP AT lt_includes ASSIGNING <lv_include_name>.
rv_changed = check_prog_changed_since(
iv_program = <lv_include_name>
iv_timestamp = iv_timestamp ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
lt_functab = functions( ).
LOOP AT lt_functab ASSIGNING <ls_func>.
rv_changed = check_prog_changed_since(
iv_program = <ls_func>-include
iv_timestamp = iv_timestamp ).
IF rv_changed = abap_true.
RETURN.
ENDIF.
ENDLOOP.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = 'FUGR'
in_new_window = abap_true.
ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
* function group SEUF * function group SEUF
@ -703,82 +802,4 @@ CLASS zcl_abapgit_object_fugr IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. "serialize ENDMETHOD. "serialize
ENDCLASS.
METHOD zif_abapgit_object~deserialize.
DATA: lv_program_name TYPE programm,
lt_functions TYPE ty_function_tt,
lt_dynpros TYPE ty_dynpro_tt,
ls_cua TYPE ty_cua.
deserialize_xml(
io_xml = io_xml
iv_package = iv_package ).
io_xml->read( EXPORTING iv_name = 'FUNCTIONS'
CHANGING cg_data = lt_functions ).
deserialize_functions( lt_functions ).
deserialize_includes(
io_xml = io_xml
iv_package = iv_package ).
lv_program_name = main_name( ).
io_xml->read( EXPORTING iv_name = 'DYNPROS'
CHANGING cg_data = lt_dynpros ).
deserialize_dynpros( it_dynpros = lt_dynpros ).
io_xml->read( EXPORTING iv_name = 'CUA'
CHANGING cg_data = ls_cua ).
deserialize_cua( iv_program_name = lv_program_name
is_cua = ls_cua ).
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~delete.
DATA: lv_area TYPE rs38l-area.
lv_area = ms_item-obj_name.
CALL FUNCTION 'RS_FUNCTION_POOL_DELETE'
EXPORTING
area = lv_area
suppress_popups = abap_true
skip_progress_ind = abap_true
EXCEPTIONS
canceled_in_corr = 1
enqueue_system_failure = 2
function_exist = 3
not_executed = 4
no_modify_permission = 5
no_show_permission = 6
permission_failure = 7
pool_not_exist = 8
cancelled = 9
OTHERS = 10.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from RS_FUNCTION_POOL_DELETE' ).
ENDIF.
ENDMETHOD. "delete
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = 'FUGR'
in_new_window = abap_true.
ENDMETHOD. "jump
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_fugr IMPLEMENTATION

View File

@ -8,13 +8,10 @@ CLASS zcl_abapgit_object_jobd DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_JOBD IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -22,140 +19,25 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: jd_name TYPE ty_jd_name.
jd_name = ms_item-obj_name.
TRY.
CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE')
EXPORTING
im_jd_name = jd_name
IMPORTING
ex_is_existing = rv_bool.
CATCH cx_root.
zcx_abapgit_exception=>raise( |JOBD not supported| ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lr_job_definition TYPE REF TO data,
lo_job_definition TYPE REF TO object,
jd_name TYPE ty_jd_name.
FIELD-SYMBOLS: <ls_job_definition> TYPE any,
<field> TYPE any.
jd_name = ms_item-obj_name.
TRY.
CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION').
ASSIGN lr_job_definition->* TO <ls_job_definition>.
ASSERT sy-subrc = 0.
CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION')
EXPORTING
im_jd_name = jd_name.
CALL METHOD lo_job_definition->('GET_JD_ATTRIBUTES')
IMPORTING
ex_jd_attributes = <ls_job_definition>.
ASSIGN COMPONENT 'JDPACKAGE' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'BTCJOB_USER' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'OWNER' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_TIME' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'CHANGED_DATE' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
ASSIGN COMPONENT 'CHANGED_TIME' OF STRUCTURE <ls_job_definition> TO <field>.
CLEAR <field>.
io_xml->add( iv_name = 'JOBD'
ig_data = <ls_job_definition> ).
CATCH cx_root.
zcx_abapgit_exception=>raise( |Error serializing JOBD| ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lr_job_definition TYPE REF TO data,
lo_job_definition TYPE REF TO object,
jd_name TYPE ty_jd_name.
FIELD-SYMBOLS: <ls_job_definition> TYPE any,
<field> TYPE any.
jd_name = ms_item-obj_name.
TRY.
CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION').
ASSIGN lr_job_definition->* TO <ls_job_definition>.
ASSERT sy-subrc = 0.
io_xml->read(
EXPORTING
iv_name = 'JOBD'
CHANGING
cg_data = <ls_job_definition> ).
CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION')
EXPORTING
im_jd_name = jd_name.
ASSIGN COMPONENT 'JDPACKAGE' OF STRUCTURE <ls_job_definition> TO <field>.
<field> = iv_package.
CALL METHOD lo_job_definition->('CREATE_JD')
EXPORTING
im_jd_attributes = <ls_job_definition>.
CATCH cx_root.
zcx_abapgit_exception=>raise( |Error deserializing JOBD| ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
DATA: lo_job_definition TYPE REF TO object, DATA: lo_job_definition TYPE REF TO object,
jd_name TYPE c LENGTH 32. lv_name TYPE c LENGTH 32.
jd_name = ms_item-obj_name. lv_name = ms_item-obj_name.
TRY. TRY.
CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION') CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION')
EXPORTING EXPORTING
im_jd_name = jd_name. im_jd_name = lv_name.
CALL METHOD lo_job_definition->('DELETE_JD'). CALL METHOD lo_job_definition->('DELETE_JD').
@ -165,17 +47,98 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lr_job_definition TYPE REF TO data,
lo_job_definition TYPE REF TO object,
lv_name TYPE ty_jd_name.
FIELD-SYMBOLS: <lg_job_definition> TYPE any,
<lg_field> TYPE any.
lv_name = ms_item-obj_name.
TRY.
CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION').
ASSIGN lr_job_definition->* TO <lg_job_definition>.
ASSERT sy-subrc = 0.
io_xml->read(
EXPORTING
iv_name = 'JOBD'
CHANGING
cg_data = <lg_job_definition> ).
CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION')
EXPORTING
im_jd_name = lv_name.
ASSIGN COMPONENT 'JDPACKAGE' OF STRUCTURE <lg_job_definition> TO <lg_field>.
<lg_field> = iv_package.
CALL METHOD lo_job_definition->('CREATE_JD')
EXPORTING
im_jd_attributes = <lg_job_definition>.
CATCH cx_root.
zcx_abapgit_exception=>raise( |Error deserializing JOBD| ).
ENDTRY.
zcl_abapgit_objects_activation=>add_item( ms_item ).
ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lv_name TYPE ty_jd_name.
lv_name = ms_item-obj_name.
TRY.
CALL METHOD ('CL_JR_JD_MANAGER')=>('CHECK_JD_EXISTENCE')
EXPORTING
im_jd_name = lv_name
IMPORTING
ex_is_existing = rv_bool.
CATCH cx_root.
zcx_abapgit_exception=>raise( |JOBD not supported| ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
DATA: obj_name TYPE e071-obj_name. DATA: lv_obj_name TYPE e071-obj_name.
obj_name = ms_item-obj_name.
lv_obj_name = ms_item-obj_name.
CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL' CALL FUNCTION 'TR_OBJECT_JUMP_TO_TOOL'
EXPORTING EXPORTING
iv_pgmid = 'R3TR' iv_pgmid = 'R3TR'
iv_object = ms_item-obj_type iv_object = ms_item-obj_type
iv_obj_name = obj_name iv_obj_name = lv_obj_name
iv_action = 'SHOW' iv_action = 'SHOW'
EXCEPTIONS EXCEPTIONS
jump_not_possible = 1 jump_not_possible = 1
@ -187,10 +150,59 @@ CLASS zcl_abapgit_object_jobd IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. METHOD zif_abapgit_object~serialize.
DATA: lr_job_definition TYPE REF TO data,
lo_job_definition TYPE REF TO object,
lv_name TYPE ty_jd_name.
FIELD-SYMBOLS: <ls_job_definition> TYPE any,
<lg_field> TYPE any.
lv_name = ms_item-obj_name.
TRY.
CREATE DATA lr_job_definition TYPE ('CL_JR_JOB_DEFINITION=>TY_JOB_DEFINITION').
ASSIGN lr_job_definition->* TO <ls_job_definition>.
ASSERT sy-subrc = 0.
CREATE OBJECT lo_job_definition TYPE ('CL_JR_JOB_DEFINITION')
EXPORTING
im_jd_name = lv_name.
CALL METHOD lo_job_definition->('GET_JD_ATTRIBUTES')
IMPORTING
ex_jd_attributes = <ls_job_definition>.
ASSIGN COMPONENT 'JDPACKAGE' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'BTCJOB_USER' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'OWNER' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_TIME' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_DATE' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_TIME' OF STRUCTURE <ls_job_definition> TO <lg_field>.
CLEAR <lg_field>.
io_xml->add( iv_name = 'JOBD'
ig_data = <ls_job_definition> ).
CATCH cx_root.
zcx_abapgit_exception=>raise( |Error serializing JOBD| ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -26,13 +26,10 @@ CLASS zcl_abapgit_object_prag DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_prag IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_PRAG IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -40,79 +37,13 @@ CLASS zcl_abapgit_object_prag IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
TRY.
cl_abap_pragma=>get_ref( ms_item-obj_name ).
CATCH cx_abap_pragma_not_exists.
rv_bool = abap_false.
RETURN.
ENDTRY.
rv_bool = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lo_pragma TYPE REF TO cl_abap_pragma,
pragma TYPE zcl_abapgit_object_prag=>ty_pragma.
TRY.
lo_pragma = cl_abap_pragma=>get_ref( ms_item-obj_name ).
pragma-pragma = lo_pragma->pragma.
pragma-extension = lo_pragma->extension.
pragma-signature = lo_pragma->signature.
pragma-description = lo_pragma->description.
io_xml->add( iv_name = 'PRAG'
ig_data = pragma ).
CATCH cx_abap_pragma_not_exists.
_raise_pragma_not_exists( ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: pragma TYPE ty_pragma,
lo_pragma TYPE REF TO cl_abap_pragma.
TRY.
io_xml->read(
EXPORTING
iv_name = 'PRAG'
CHANGING
cg_data = pragma ).
lo_pragma = cl_abap_pragma=>create( p_pragma = ms_item-obj_name
p_package = iv_package ).
lo_pragma->set_info( p_description = pragma-description
p_signature = pragma-signature
p_extension = pragma-extension ).
lo_pragma->save( ).
CATCH cx_abap_pragma_not_exists.
_raise_pragma_not_exists( ).
CATCH cx_abap_pragma_exists.
_raise_pragma_exists( ).
CATCH cx_abap_pragma_enqueue.
_raise_pragma_enqueue( ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
@ -131,6 +62,69 @@ CLASS zcl_abapgit_object_prag IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: ls_pragma TYPE ty_pragma,
lo_pragma TYPE REF TO cl_abap_pragma.
TRY.
io_xml->read(
EXPORTING
iv_name = 'PRAG'
CHANGING
cg_data = ls_pragma ).
lo_pragma = cl_abap_pragma=>create( p_pragma = ms_item-obj_name
p_package = iv_package ).
lo_pragma->set_info( p_description = ls_pragma-description
p_signature = ls_pragma-signature
p_extension = ls_pragma-extension ).
lo_pragma->save( ).
CATCH cx_abap_pragma_not_exists.
_raise_pragma_not_exists( ).
CATCH cx_abap_pragma_exists.
_raise_pragma_exists( ).
CATCH cx_abap_pragma_enqueue.
_raise_pragma_enqueue( ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~exists.
TRY.
cl_abap_pragma=>get_ref( ms_item-obj_name ).
CATCH cx_abap_pragma_not_exists.
rv_bool = abap_false.
RETURN.
ENDTRY.
rv_bool = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS' CALL FUNCTION 'RS_TOOL_ACCESS'
@ -145,28 +139,47 @@ CLASS zcl_abapgit_object_prag IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. METHOD zif_abapgit_object~serialize.
DATA: lo_pragma TYPE REF TO cl_abap_pragma,
ls_pragma TYPE zcl_abapgit_object_prag=>ty_pragma.
TRY.
lo_pragma = cl_abap_pragma=>get_ref( ms_item-obj_name ).
ls_pragma-pragma = lo_pragma->pragma.
ls_pragma-extension = lo_pragma->extension.
ls_pragma-signature = lo_pragma->signature.
ls_pragma-description = lo_pragma->description.
io_xml->add( iv_name = 'PRAG'
ig_data = ls_pragma ).
CATCH cx_abap_pragma_not_exists.
_raise_pragma_not_exists( ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD _raise_pragma_enqueue. METHOD _raise_pragma_enqueue.
zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } enqueue error| ). zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } enqueue error| ).
ENDMETHOD. ENDMETHOD.
METHOD _raise_pragma_exists. METHOD _raise_pragma_exists.
zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } exists| ). zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } exists| ).
ENDMETHOD. ENDMETHOD.
METHOD _raise_pragma_not_exists. METHOD _raise_pragma_not_exists.
zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } doesn't exist| ). zcx_abapgit_exception=>raise( |Pragma { ms_item-obj_name } doesn't exist| ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -21,15 +21,64 @@ CLASS zcl_abapgit_object_prog DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_prog IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = check_prog_changed_since( CLASS ZCL_ABAPGIT_OBJECT_PROG IMPLEMENTATION.
iv_program = ms_item-obj_name
iv_timestamp = iv_timestamp ).
METHOD deserialize_texts.
DATA: lt_tpool_i18n TYPE tt_tpool_i18n,
lt_tpool TYPE textpool_table.
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n.
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_tpool_i18n ).
LOOP AT lt_tpool_i18n ASSIGNING <tpool>.
lt_tpool = read_tpool( <tpool>-textpool ).
deserialize_textpool( iv_program = ms_item-obj_name
iv_language = <tpool>-language
it_tpool = lt_tpool ).
ENDLOOP.
ENDMETHOD. "deserialize_texts
METHOD serialize_texts.
DATA: lt_tpool_i18n TYPE tt_tpool_i18n,
lt_tpool TYPE textpool_table.
FIELD-SYMBOLS <ls_tpool> LIKE LINE OF lt_tpool_i18n.
" Table d010tinf stores info. on languages in which program is maintained
" Select all active translations of program texts
" Skip master language - it was already serialized
SELECT DISTINCT language
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
FROM d010tinf
WHERE r3state = 'A'
AND prog = ms_item-obj_name
AND language <> mv_language.
SORT lt_tpool_i18n BY language ASCENDING.
LOOP AT lt_tpool_i18n ASSIGNING <ls_tpool>.
READ TEXTPOOL ms_item-obj_name
LANGUAGE <ls_tpool>-language
INTO lt_tpool.
<ls_tpool>-textpool = add_tpool( lt_tpool ).
ENDLOOP.
IF lines( lt_tpool_i18n ) > 0.
io_xml->add( iv_name = 'I18N_TPOOL'
ig_data = lt_tpool_i18n ).
ENDIF.
ENDMETHOD. "serialize_texts
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
SELECT SINGLE unam FROM reposrc INTO rv_user SELECT SINGLE unam FROM reposrc INTO rv_user
@ -40,31 +89,11 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. "zif_abapgit_object~changed_by ENDMETHOD. "zif_abapgit_object~changed_by
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
DATA: lv_progname TYPE reposrc-progname.
SELECT SINGLE progname FROM reposrc INTO lv_progname
WHERE progname = ms_item-obj_name
AND r3state = 'A'.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = 'PROG'
in_new_window = abap_true.
ENDMETHOD. "jump
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
@ -90,16 +119,6 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
ENDMETHOD. "delete ENDMETHOD. "delete
METHOD zif_abapgit_object~serialize.
serialize_program( io_xml = io_xml
is_item = ms_item
io_files = mo_files ).
" Texts serializing (translations)
serialize_texts( io_xml ).
ENDMETHOD. "zif_abapgit_serialize~serialize
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
@ -144,59 +163,53 @@ CLASS zcl_abapgit_object_prog IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_serialize~deserialize ENDMETHOD. "zif_abapgit_serialize~deserialize
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. "zif_abapgit_object~compare_to_remote_version
METHOD serialize_texts. METHOD zif_abapgit_object~exists.
DATA: lt_tpool_i18n TYPE tt_tpool_i18n, DATA: lv_progname TYPE reposrc-progname.
lt_tpool TYPE textpool_table.
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n. SELECT SINGLE progname FROM reposrc INTO lv_progname
WHERE progname = ms_item-obj_name
AND r3state = 'A'.
rv_bool = boolc( sy-subrc = 0 ).
" Table d010tinf stores info. on languages in which program is maintained ENDMETHOD. "zif_abapgit_object~exists
" Select all active translations of program texts
" Skip master language - it was already serialized
SELECT DISTINCT language
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
FROM d010tinf
WHERE r3state = 'A'
AND prog = ms_item-obj_name
AND language <> mv_language.
SORT lt_tpool_i18n BY language ASCENDING.
LOOP AT lt_tpool_i18n ASSIGNING <tpool>.
READ TEXTPOOL ms_item-obj_name
LANGUAGE <tpool>-language
INTO lt_tpool.
<tpool>-textpool = add_tpool( lt_tpool ).
ENDLOOP.
IF lines( lt_tpool_i18n ) > 0. METHOD zif_abapgit_object~get_metadata.
io_xml->add( iv_name = 'I18N_TPOOL' rs_metadata = get_metadata( ).
ig_data = lt_tpool_i18n ). ENDMETHOD. "zif_abapgit_object~get_metadata
ENDIF.
ENDMETHOD. "serialize_texts
METHOD deserialize_texts. METHOD zif_abapgit_object~has_changed_since.
DATA: lt_tpool_i18n TYPE tt_tpool_i18n, rv_changed = check_prog_changed_since(
lt_tpool TYPE textpool_table. iv_program = ms_item-obj_name
iv_timestamp = iv_timestamp ).
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n. ENDMETHOD. "zif_abapgit_object~has_changed_since
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_tpool_i18n ).
LOOP AT lt_tpool_i18n ASSIGNING <tpool>. METHOD zif_abapgit_object~jump.
lt_tpool = read_tpool( <tpool>-textpool ).
deserialize_textpool( iv_program = ms_item-obj_name
iv_language = <tpool>-language
it_tpool = lt_tpool ).
ENDLOOP.
ENDMETHOD. "deserialize_texts CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = 'PROG'
in_new_window = abap_true.
ENDCLASS. "zcl_abapgit_object_prog IMPLEMENTATION ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize.
serialize_program( io_xml = io_xml
is_item = ms_item
io_files = mo_files ).
" Texts serializing (translations)
serialize_texts( io_xml ).
ENDMETHOD. "zif_abapgit_serialize~serialize
ENDCLASS.

View File

@ -19,104 +19,10 @@ CLASS zcl_abapgit_object_sfpf DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_sfpf IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE lastuser FROM fplayout
INTO rv_user
WHERE name = ms_item-obj_name
AND state = 'A'.
IF rv_user IS INITIAL.
SELECT SINGLE firstuser FROM fplayout
INTO rv_user
WHERE name = ms_item-obj_name
AND state = 'A'.
ENDIF.
IF rv_user IS INITIAL.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~exists.
DATA: lv_name TYPE fpname.
SELECT SINGLE name FROM fplayout
INTO lv_name
WHERE name = ms_item-obj_name
AND state = 'A'.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = ms_item-obj_type.
ENDMETHOD. "jump
METHOD zif_abapgit_object~delete.
DATA: lv_name TYPE fpname,
lo_wb_form TYPE REF TO cl_fp_wb_form.
lo_wb_form ?= load( ). CLASS ZCL_ABAPGIT_OBJECT_SFPF IMPLEMENTATION.
lv_name = ms_item-obj_name.
TRY.
lo_wb_form->delete( lv_name ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPI error, delete' ).
ENDTRY.
ENDMETHOD. "delete
METHOD load.
DATA: lv_name TYPE fpname.
lv_name = ms_item-obj_name.
TRY.
ri_wb_form = cl_fp_wb_form=>load( lv_name ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPF error, load' ).
ENDTRY.
ENDMETHOD.
METHOD form_to_xstring.
DATA: li_fp_form TYPE REF TO if_fp_form,
li_wb_form TYPE REF TO if_fp_wb_form.
TRY.
li_wb_form = load( ).
li_fp_form ?= li_wb_form->get_object( ).
rv_xstr = cl_fp_helper=>convert_form_to_xstring( li_fp_form ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPF error, form_to_xstring' ).
ENDTRY.
ENDMETHOD.
METHOD fix_oref. METHOD fix_oref.
@ -129,11 +35,11 @@ CLASS zcl_abapgit_object_sfpf IMPLEMENTATION.
li_node TYPE REF TO if_ixml_node. li_node TYPE REF TO if_ixml_node.
DEFINE _lookup. DEFINE _lookup.
read table lt_map from &1 transporting no fields. READ TABLE lt_map FROM &1 TRANSPORTING NO FIELDS.
if sy-subrc <> 0. IF sy-subrc <> 0.
append &1 to lt_map. APPEND &1 TO lt_map.
read table lt_map from &1 transporting no fields. READ TABLE lt_map FROM &1 TRANSPORTING NO FIELDS.
endif. ENDIF.
lv_new = sy-tabix + 100. lv_new = sy-tabix + 100.
END-OF-DEFINITION. END-OF-DEFINITION.
@ -168,18 +74,82 @@ CLASS zcl_abapgit_object_sfpf IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lv_xstr TYPE xstring, METHOD form_to_xstring.
li_document TYPE REF TO if_ixml_document.
DATA: li_fp_form TYPE REF TO if_fp_form,
li_wb_form TYPE REF TO if_fp_wb_form.
lv_xstr = form_to_xstring( ). TRY.
li_document = cl_ixml_80_20=>parse_to_document( stream_xstring = lv_xstr ). li_wb_form = load( ).
fix_oref( li_document ). li_fp_form ?= li_wb_form->get_object( ).
io_xml->set_raw( li_document->get_root_element( ) ). rv_xstr = cl_fp_helper=>convert_form_to_xstring( li_fp_form ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPF error, form_to_xstring' ).
ENDTRY.
ENDMETHOD.
METHOD load.
DATA: lv_name TYPE fpname.
lv_name = ms_item-obj_name.
TRY.
ri_wb_form = cl_fp_wb_form=>load( lv_name ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPF error, load' ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by.
SELECT SINGLE lastuser FROM fplayout
INTO rv_user
WHERE name = ms_item-obj_name
AND state = 'A'.
IF rv_user IS INITIAL.
SELECT SINGLE firstuser FROM fplayout
INTO rv_user
WHERE name = ms_item-obj_name
AND state = 'A'.
ENDIF.
IF rv_user IS INITIAL.
rv_user = c_user_unknown.
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_name TYPE fpname,
lo_wb_form TYPE REF TO cl_fp_wb_form.
lo_wb_form ?= load( ).
lv_name = ms_item-obj_name.
TRY.
lo_wb_form->delete( lv_name ).
CATCH cx_fp_api.
zcx_abapgit_exception=>raise( 'SFPI error, delete' ).
ENDTRY.
ENDMETHOD. "delete
ENDMETHOD. "serialize
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
@ -207,8 +177,51 @@ CLASS zcl_abapgit_object_sfpf IMPLEMENTATION.
ENDMETHOD. "deserialize ENDMETHOD. "deserialize
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_doma IMPLEMENTATION METHOD zif_abapgit_object~exists.
DATA: lv_name TYPE fpname.
SELECT SINGLE name FROM fplayout
INTO lv_name
WHERE name = ms_item-obj_name
AND state = 'A'.
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS'
EXPORTING
operation = 'SHOW'
object_name = ms_item-obj_name
object_type = ms_item-obj_type.
ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize.
DATA: lv_xstr TYPE xstring,
li_document TYPE REF TO if_ixml_document.
lv_xstr = form_to_xstring( ).
li_document = cl_ixml_80_20=>parse_to_document( stream_xstring = lv_xstr ).
fix_oref( li_document ).
io_xml->set_raw( li_document->get_root_element( ) ).
ENDMETHOD. "serialize
ENDCLASS.

View File

@ -5,13 +5,10 @@ CLASS zcl_abapgit_object_srfc DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_srfc IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_SRFC IMPLEMENTATION.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -19,102 +16,62 @@ CLASS zcl_abapgit_object_srfc IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: lo_object_data TYPE REF TO if_wb_object_data_model, METHOD zif_abapgit_object~delete.
lo_srfc_persist TYPE REF TO if_wb_object_persist.
TRY. DATA: li_srfc_persist TYPE REF TO if_wb_object_persist,
CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST').
lo_srfc_persist->get(
EXPORTING
p_object_key = |{ ms_item-obj_name }|
p_version = 'A'
CHANGING
p_object_data = lo_object_data ).
CATCH cx_root.
rv_bool = abap_false.
RETURN.
ENDTRY.
rv_bool = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lo_object_data TYPE REF TO if_wb_object_data_model,
lo_srfc_persist TYPE REF TO if_wb_object_persist,
lr_srfc_data TYPE REF TO data,
lx_error TYPE REF TO cx_root, lx_error TYPE REF TO cx_root,
lv_text TYPE string. lv_text TYPE string.
FIELD-SYMBOLS: <ls_srfc_data> TYPE any.
TRY. TRY.
CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). CREATE OBJECT li_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST').
ASSIGN lr_srfc_data->* TO <ls_srfc_data>.
ASSERT sy-subrc = 0.
CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). li_srfc_persist->delete( p_object_key = |{ ms_item-obj_name }|
p_version = 'A' ).
lo_srfc_persist->get(
EXPORTING
p_object_key = |{ ms_item-obj_name }|
p_version = 'A'
CHANGING
p_object_data = lo_object_data ).
lo_object_data->get_data(
IMPORTING
p_data = <ls_srfc_data> ).
CATCH cx_root INTO lx_error. CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ). lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ). zcx_abapgit_exception=>raise( lv_text ).
ENDTRY. ENDTRY.
io_xml->add( iv_name = 'SRFC'
ig_data = <ls_srfc_data> ).
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, DATA: li_srfc_persist TYPE REF TO if_wb_object_persist,
lo_object_data TYPE REF TO if_wb_object_data_model, li_object_data TYPE REF TO if_wb_object_data_model,
lv_text TYPE string, lv_text TYPE string,
lr_srfc_data TYPE REF TO data, lr_srfc_data TYPE REF TO data,
lx_error TYPE REF TO cx_root. lx_error TYPE REF TO cx_root.
FIELD-SYMBOLS: <ls_srfc_data> TYPE any. FIELD-SYMBOLS: <lg_srfc_data> TYPE any.
TRY. TRY.
CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE'). CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE').
ASSIGN lr_srfc_data->* TO <ls_srfc_data>. ASSIGN lr_srfc_data->* TO <lg_srfc_data>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
io_xml->read( io_xml->read(
EXPORTING EXPORTING
iv_name = 'SRFC' iv_name = 'SRFC'
CHANGING CHANGING
cg_data = <ls_srfc_data> ). cg_data = <lg_srfc_data> ).
CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). CREATE OBJECT li_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST').
CREATE OBJECT lo_object_data TYPE ('CL_UCONRFC_OBJECT_DATA'). CREATE OBJECT li_object_data TYPE ('CL_UCONRFC_OBJECT_DATA').
lo_object_data->set_data( <ls_srfc_data> ). li_object_data->set_data( <lg_srfc_data> ).
lo_srfc_persist->save( lo_object_data ). li_srfc_persist->save( li_object_data ).
tadir_insert( iv_package ). tadir_insert( iv_package ).
@ -125,23 +82,44 @@ CLASS zcl_abapgit_object_srfc IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lo_srfc_persist TYPE REF TO if_wb_object_persist, METHOD zif_abapgit_object~exists.
lx_error TYPE REF TO cx_root,
lv_text TYPE string. DATA: li_object_data TYPE REF TO if_wb_object_data_model,
li_srfc_persist TYPE REF TO if_wb_object_persist.
TRY. TRY.
CREATE OBJECT lo_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST'). CREATE OBJECT li_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST').
lo_srfc_persist->delete( p_object_key = |{ ms_item-obj_name }| li_srfc_persist->get(
p_version = 'A' ). EXPORTING
p_object_key = |{ ms_item-obj_name }|
p_version = 'A'
CHANGING
p_object_data = li_object_data ).
CATCH cx_root INTO lx_error. CATCH cx_root.
lv_text = lx_error->get_text( ). rv_bool = abap_false.
zcx_abapgit_exception=>raise( lv_text ). RETURN.
ENDTRY. ENDTRY.
rv_bool = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. ENDMETHOD.
@ -164,10 +142,43 @@ CLASS zcl_abapgit_object_srfc IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null. METHOD zif_abapgit_object~serialize.
DATA: li_object_data TYPE REF TO if_wb_object_data_model,
li_srfc_persist TYPE REF TO if_wb_object_persist,
lr_srfc_data TYPE REF TO data,
lx_error TYPE REF TO cx_root,
lv_text TYPE string.
FIELD-SYMBOLS: <ls_srfc_data> TYPE any.
TRY.
CREATE DATA lr_srfc_data TYPE ('UCONRFCSERV_COMPLETE').
ASSIGN lr_srfc_data->* TO <ls_srfc_data>.
ASSERT sy-subrc = 0.
CREATE OBJECT li_srfc_persist TYPE ('CL_UCONRFC_OBJECT_PERSIST').
li_srfc_persist->get(
EXPORTING
p_object_key = |{ ms_item-obj_name }|
p_version = 'A'
CHANGING
p_object_data = li_object_data ).
li_object_data->get_data(
IMPORTING
p_data = <ls_srfc_data> ).
CATCH cx_root INTO lx_error.
lv_text = lx_error->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
io_xml->add( iv_name = 'SRFC'
ig_data = <ls_srfc_data> ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -12,11 +12,24 @@ CLASS zcl_abapgit_object_ssst DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_ssst IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_SSST IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD validate_font.
DATA: lv_tdfamily TYPE tfo01-tdfamily.
SELECT SINGLE tdfamily FROM tfo01 INTO lv_tdfamily
WHERE tdfamily = iv_tdfamily.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Font family not found' ).
ENDIF.
ENDMETHOD. "validate_font
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
@ -28,10 +41,107 @@ CLASS zcl_abapgit_object_ssst IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. "zif_abapgit_object~get_metadata ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_stylename TYPE tdssname.
lv_stylename = ms_item-obj_name.
CALL FUNCTION 'SSF_DELETE_STYLE'
EXPORTING
i_stylename = lv_stylename
i_with_dialog = abap_false
i_with_confirm_dialog = abap_false
EXCEPTIONS
no_name = 1
no_style = 2
style_locked = 3
cancelled = 4
no_access_permission = 5
illegal_language = 6
OTHERS = 7.
IF sy-subrc <> 0 AND sy-subrc <> 2.
zcx_abapgit_exception=>raise( 'error from SSF_DELETE_STYLE' ).
ENDIF.
ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize.
* see fm SSF_UPLOAD_STYLE
DATA: ls_header TYPE ssfcats,
ls_new_header TYPE ssfcats,
lt_paragraphs TYPE TABLE OF ssfparas,
lt_strings TYPE TABLE OF ssfstrings,
lt_tabstops TYPE TABLE OF stxstab.
FIELD-SYMBOLS: <lv_spras> TYPE spras.
io_xml->read( EXPORTING iv_name = 'HEADER'
CHANGING cg_data = ls_header ).
io_xml->read( EXPORTING iv_name = 'SSFPARAS'
CHANGING cg_data = lt_paragraphs ).
io_xml->read( EXPORTING iv_name = 'SSFSTRINGS'
CHANGING cg_data = lt_strings ).
io_xml->read( EXPORTING iv_name = 'STXSTAB'
CHANGING cg_data = lt_tabstops ).
validate_font( ls_header-tdfamily ).
CALL FUNCTION 'SSF_READ_STYLE' "Just load FG
EXPORTING
i_style_name = ls_header-stylename
i_style_active_flag = 'A'
EXCEPTIONS
OTHERS = 0.
IF sy-subrc <> 0.
ENDIF.
SET PARAMETER ID 'EUK' FIELD iv_package.
ASSIGN ('(SAPLSTXBS)MASTER_LANGUAGE') TO <lv_spras>.
IF sy-subrc = 0.
<lv_spras> = ls_header-masterlang.
ENDIF.
CALL FUNCTION 'SSF_SAVE_STYLE'
EXPORTING
i_header = ls_header
IMPORTING
e_header = ls_new_header
TABLES
i_paragraphs = lt_paragraphs
i_strings = lt_strings
i_tabstops = lt_tabstops.
IF ls_new_header IS NOT INITIAL.
CALL FUNCTION 'SSF_ACTIVATE_STYLE'
EXPORTING
i_stylename = ls_header-stylename
EXCEPTIONS
no_name = 1
no_style = 2
cancelled = 3
no_access_permission = 4
illegal_language = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SSF_ACTIVATE_STYLE' ).
ENDIF.
ENDIF.
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
@ -46,18 +156,54 @@ CLASS zcl_abapgit_object_ssst IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~exists ENDMETHOD. "zif_abapgit_object~exists
METHOD validate_font.
DATA: lv_tdfamily TYPE tfo01-tdfamily. METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD. "zif_abapgit_object~get_metadata
SELECT SINGLE tdfamily FROM tfo01 INTO lv_tdfamily METHOD zif_abapgit_object~has_changed_since.
WHERE tdfamily = iv_tdfamily. rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump.
DATA: ls_bcdata TYPE bdcdata,
lt_bcdata TYPE STANDARD TABLE OF bdcdata.
ls_bcdata-program = 'SAPMSSFS'.
ls_bcdata-dynpro = '0100'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'SSFSCREENS-SNAME'.
ls_bcdata-fval = ms_item-obj_name.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=DISPLAY'.
APPEND ls_bcdata TO lt_bcdata.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
tcode = 'SMARTSTYLES'
mode_val = 'E'
TABLES
using_tab = lt_bcdata
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Font family not found' ). zcx_abapgit_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, SSST' ).
ENDIF. ENDIF.
ENDMETHOD. "validate_font ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
* see fm SSF_DOWNLOAD_STYLE * see fm SSF_DOWNLOAD_STYLE
@ -117,137 +263,4 @@ CLASS zcl_abapgit_object_ssst IMPLEMENTATION.
iv_name = 'STXSTAB' ). iv_name = 'STXSTAB' ).
ENDMETHOD. "serialize ENDMETHOD. "serialize
ENDCLASS.
METHOD zif_abapgit_object~deserialize.
* see fm SSF_UPLOAD_STYLE
DATA: ls_header TYPE ssfcats,
ls_new_header TYPE ssfcats,
lt_paragraphs TYPE TABLE OF ssfparas,
lt_strings TYPE TABLE OF ssfstrings,
lt_tabstops TYPE TABLE OF stxstab.
FIELD-SYMBOLS: <spras> TYPE spras.
io_xml->read( EXPORTING iv_name = 'HEADER'
CHANGING cg_data = ls_header ).
io_xml->read( EXPORTING iv_name = 'SSFPARAS'
CHANGING cg_data = lt_paragraphs ).
io_xml->read( EXPORTING iv_name = 'SSFSTRINGS'
CHANGING cg_data = lt_strings ).
io_xml->read( EXPORTING iv_name = 'STXSTAB'
CHANGING cg_data = lt_tabstops ).
validate_font( ls_header-tdfamily ).
CALL FUNCTION 'SSF_READ_STYLE' "Just load FG
EXPORTING
i_style_name = ls_header-stylename
i_style_active_flag = 'A'
EXCEPTIONS
OTHERS = 0.
IF sy-subrc <> 0.
ENDIF.
SET PARAMETER ID 'EUK' FIELD iv_package.
ASSIGN ('(SAPLSTXBS)MASTER_LANGUAGE') TO <spras>.
IF sy-subrc = 0.
<spras> = ls_header-masterlang.
ENDIF.
CALL FUNCTION 'SSF_SAVE_STYLE'
EXPORTING
i_header = ls_header
IMPORTING
e_header = ls_new_header
TABLES
i_paragraphs = lt_paragraphs
i_strings = lt_strings
i_tabstops = lt_tabstops.
IF ls_new_header IS NOT INITIAL.
CALL FUNCTION 'SSF_ACTIVATE_STYLE'
EXPORTING
i_stylename = ls_header-stylename
EXCEPTIONS
no_name = 1
no_style = 2
cancelled = 3
no_access_permission = 4
illegal_language = 5
OTHERS = 6.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SSF_ACTIVATE_STYLE' ).
ENDIF.
ENDIF.
ENDMETHOD. "deserialize
METHOD zif_abapgit_object~delete.
DATA: lv_stylename TYPE tdssname.
lv_stylename = ms_item-obj_name.
CALL FUNCTION 'SSF_DELETE_STYLE'
EXPORTING
i_stylename = lv_stylename
i_with_dialog = abap_false
i_with_confirm_dialog = abap_false
EXCEPTIONS
no_name = 1
no_style = 2
style_locked = 3
cancelled = 4
no_access_permission = 5
illegal_language = 6
OTHERS = 7.
IF sy-subrc <> 0 AND sy-subrc <> 2.
zcx_abapgit_exception=>raise( 'error from SSF_DELETE_STYLE' ).
ENDIF.
ENDMETHOD. "delete
METHOD zif_abapgit_object~jump.
DATA: ls_bcdata TYPE bdcdata,
lt_bcdata TYPE STANDARD TABLE OF bdcdata.
ls_bcdata-program = 'SAPMSSFS'.
ls_bcdata-dynpro = '0100'.
ls_bcdata-dynbegin = 'X'.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'SSFSCREENS-SNAME'.
ls_bcdata-fval = ms_item-obj_name.
APPEND ls_bcdata TO lt_bcdata.
CLEAR ls_bcdata.
ls_bcdata-fnam = 'BDC_OKCODE'.
ls_bcdata-fval = '=DISPLAY'.
APPEND ls_bcdata TO lt_bcdata.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
tcode = 'SMARTSTYLES'
mode_val = 'E'
TABLES
using_tab = lt_bcdata
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from ABAP4_CALL_TRANSACTION, SSST' ).
ENDIF.
ENDMETHOD. "jump
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_ssst IMPLEMENTATION

View File

@ -73,7 +73,7 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
lv_no_ask TYPE abap_bool, lv_no_ask TYPE abap_bool,
lr_data TYPE REF TO data. lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any. FIELD-SYMBOLS: <lg_data> TYPE any.
lv_objname = ms_item-obj_name. lv_objname = ms_item-obj_name.
@ -86,8 +86,8 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'. IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'.
* it cannot delete table with table wihtout asking * it cannot delete table with table wihtout asking
CREATE DATA lr_data TYPE (lv_objname). CREATE DATA lr_data TYPE (lv_objname).
ASSIGN lr_data->* TO <ls_data>. ASSIGN lr_data->* TO <lg_data>.
SELECT SINGLE * FROM (lv_objname) INTO <ls_data>. SELECT SINGLE * FROM (lv_objname) INTO <lg_data>.
IF sy-subrc = 0. IF sy-subrc = 0.
lv_no_ask = abap_false. lv_no_ask = abap_false.
ENDIF. ENDIF.

View File

@ -40,31 +40,57 @@ CLASS zcl_abapgit_object_tran DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_tran IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by. CLASS ZCL_ABAPGIT_OBJECT_TRAN IMPLEMENTATION.
rv_user = c_user_unknown. " todo
ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD split_parameters_comp. METHOD deserialize_texts.
DATA: lv_off TYPE i.
IF iv_param CS iv_type. DATA lt_tpool_i18n TYPE TABLE OF tstct.
lv_off = sy-fdpos + strlen( iv_type ).
cg_value = iv_param+lv_off. FIELD-SYMBOLS <ls_tpool> LIKE LINE OF lt_tpool_i18n.
IF cg_value CA '\'.
CLEAR cg_value+sy-fdpos.
" Read XML-files data
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_tpool_i18n ).
" Force t-code name (security reasons)
LOOP AT lt_tpool_i18n ASSIGNING <ls_tpool>.
<ls_tpool>-tcode = ms_item-obj_name.
ENDLOOP.
IF lines( lt_tpool_i18n ) > 0.
MODIFY tstct FROM TABLE lt_tpool_i18n.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Update of t-code translations failed' ).
ENDIF. ENDIF.
ENDIF. ENDIF.
ENDMETHOD. "split_parameters_comp
ENDMETHOD. "deserialize_texts
METHOD serialize_texts.
DATA lt_tpool_i18n TYPE TABLE OF tstct.
" Skip master language - it was already serialized
" Don't serialize t-code itself
SELECT sprsl ttext
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
FROM tstct
WHERE sprsl <> mv_language
AND tcode = ms_item-obj_name. "#EC CI_GENBUFF
IF lines( lt_tpool_i18n ) > 0.
SORT lt_tpool_i18n BY sprsl ASCENDING.
io_xml->add( iv_name = 'I18N_TPOOL'
ig_data = lt_tpool_i18n ).
ENDIF.
ENDMETHOD. "serialize_texts
METHOD split_parameters. METHOD split_parameters.
* see subroutine split_parameters in include LSEUKF01 * see subroutine split_parameters in include LSEUKF01
@ -195,52 +221,29 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDIF. ENDIF.
ENDMETHOD. "split_parameters ENDMETHOD. "split_parameters
METHOD zif_abapgit_object~exists.
DATA: lv_tcode TYPE tstc-tcode. METHOD split_parameters_comp.
DATA: lv_off TYPE i.
IF iv_param CS iv_type.
lv_off = sy-fdpos + strlen( iv_type ).
cg_value = iv_param+lv_off.
IF cg_value CA '\'.
CLEAR cg_value+sy-fdpos.
ENDIF.
ENDIF.
ENDMETHOD. "split_parameters_comp
SELECT SINGLE tcode FROM tstc INTO lv_tcode METHOD zif_abapgit_object~changed_by.
WHERE tcode = ms_item-obj_name. "#EC CI_GENBUFF rv_user = c_user_unknown. " todo
rv_bool = boolc( sy-subrc = 0 ). ENDMETHOD.
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~jump.
DATA: lt_bdcdata TYPE TABLE OF bdcdata.
FIELD-SYMBOLS: <ls_bdcdata> LIKE LINE OF lt_bdcdata.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>. METHOD zif_abapgit_object~compare_to_remote_version.
<ls_bdcdata>-program = 'SAPLSEUK'. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
<ls_bdcdata>-dynpro = '0390'. ENDMETHOD.
<ls_bdcdata>-dynbegin = abap_true.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
<ls_bdcdata>-fval = '=SHOW'.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'TSTC-TCODE'.
<ls_bdcdata>-fval = ms_item-obj_name.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
tcode = 'SE93'
mode_val = 'E'
TABLES
using_tab = lt_bdcdata
EXCEPTIONS
system_failure = 1
communication_failure = 2
resource_failure = 3
OTHERS = 4
##fm_subrc_ok. "#EC CI_SUBRC
ENDMETHOD. "jump
METHOD zif_abapgit_object~delete. METHOD zif_abapgit_object~delete.
@ -262,6 +265,7 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDMETHOD. "delete ENDMETHOD. "delete
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
CONSTANTS: lc_hex_tra TYPE x VALUE '00', CONSTANTS: lc_hex_tra TYPE x VALUE '00',
@ -356,6 +360,66 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
ENDMETHOD. "deserialize ENDMETHOD. "deserialize
METHOD zif_abapgit_object~exists.
DATA: lv_tcode TYPE tstc-tcode.
SELECT SINGLE tcode FROM tstc INTO lv_tcode
WHERE tcode = ms_item-obj_name. "#EC CI_GENBUFF
rv_bool = boolc( sy-subrc = 0 ).
ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump.
DATA: lt_bdcdata TYPE TABLE OF bdcdata.
FIELD-SYMBOLS: <ls_bdcdata> LIKE LINE OF lt_bdcdata.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-program = 'SAPLSEUK'.
<ls_bdcdata>-dynpro = '0390'.
<ls_bdcdata>-dynbegin = abap_true.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
<ls_bdcdata>-fval = '=SHOW'.
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
<ls_bdcdata>-fnam = 'TSTC-TCODE'.
<ls_bdcdata>-fval = ms_item-obj_name.
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
STARTING NEW TASK 'GIT'
EXPORTING
tcode = 'SE93'
mode_val = 'E'
TABLES
using_tab = lt_bdcdata
EXCEPTIONS
system_failure = 1
communication_failure = 2
resource_failure = 3
OTHERS = 4
##fm_subrc_ok. "#EC CI_SUBRC
ENDMETHOD. "jump
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lv_transaction TYPE tstc-tcode, DATA: lv_transaction TYPE tstc-tcode,
@ -414,52 +478,4 @@ CLASS zcl_abapgit_object_tran IMPLEMENTATION.
serialize_texts( io_xml ). serialize_texts( io_xml ).
ENDMETHOD. "serialize ENDMETHOD. "serialize
ENDCLASS.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD serialize_texts.
DATA lt_tpool_i18n TYPE TABLE OF tstct.
" Skip master language - it was already serialized
" Don't serialize t-code itself
SELECT sprsl ttext
INTO CORRESPONDING FIELDS OF TABLE lt_tpool_i18n
FROM tstct
WHERE sprsl <> mv_language
AND tcode = ms_item-obj_name. "#EC CI_GENBUFF
IF lines( lt_tpool_i18n ) > 0.
SORT lt_tpool_i18n BY sprsl ASCENDING.
io_xml->add( iv_name = 'I18N_TPOOL'
ig_data = lt_tpool_i18n ).
ENDIF.
ENDMETHOD. "serialize_texts
METHOD deserialize_texts.
DATA lt_tpool_i18n TYPE TABLE OF tstct.
FIELD-SYMBOLS <tpool> LIKE LINE OF lt_tpool_i18n.
" Read XML-files data
io_xml->read( EXPORTING iv_name = 'I18N_TPOOL'
CHANGING cg_data = lt_tpool_i18n ).
" Force t-code name (security reasons)
LOOP AT lt_tpool_i18n ASSIGNING <tpool>.
<tpool>-tcode = ms_item-obj_name.
ENDLOOP.
IF lines( lt_tpool_i18n ) > 0.
MODIFY tstct FROM TABLE lt_tpool_i18n.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'Update of t-code translations failed' ).
ENDIF.
ENDIF.
ENDMETHOD. "deserialize_texts
ENDCLASS. "zcl_abapgit_object_tran IMPLEMENTATION

View File

@ -26,27 +26,150 @@ CLASS zcl_abapgit_object_ucsa DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_ucsa IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECT_UCSA IMPLEMENTATION.
METHOD clear_dynamic_fields.
FIELD-SYMBOLS: <lg_header> TYPE any.
ASSIGN COMPONENT 'HEADER' OF STRUCTURE cs_complete_comm_assembly
TO <lg_header>.
ASSERT sy-subrc = 0.
clear_field(
EXPORTING iv_fieldname = 'CREATEDBY'
CHANGING cs_header = <lg_header> ).
clear_field(
EXPORTING iv_fieldname = 'CREATEDON'
CHANGING cs_header = <lg_header> ).
clear_field(
EXPORTING iv_fieldname = 'CREATEDAT'
CHANGING cs_header = <lg_header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDBY'
CHANGING cs_header = <lg_header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDON'
CHANGING cs_header = <lg_header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDAT'
CHANGING cs_header = <lg_header> ).
ENDMETHOD. ENDMETHOD.
METHOD clear_field.
FIELD-SYMBOLS: <field> TYPE any.
ASSIGN COMPONENT iv_fieldname OF STRUCTURE cs_header
TO <field>.
ASSERT sy-subrc = 0.
CLEAR: <field>.
ENDMETHOD.
METHOD get_persistence.
CALL METHOD ('CL_UCON_SA_DB_PERSIST')=>('IF_UCON_SA_PERSIST~GET_INSTANCE')
EXPORTING
id = iv_id
RECEIVING
instance = ro_persistence.
ENDMETHOD.
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown. rv_user = c_user_unknown.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_id TYPE ty_id,
lx_root TYPE REF TO cx_root,
lv_text TYPE string,
lo_persistence TYPE REF TO object.
TRY.
lv_id = ms_item-obj_name.
lo_persistence = get_persistence( lv_id ).
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~DELETE')
EXPORTING
version = zif_abapgit_definitions=>gc_version-active.
CATCH cx_root INTO lx_root.
lv_text = lx_root->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lv_id TYPE ty_id,
lx_root TYPE REF TO cx_root,
lv_text TYPE string,
lo_persistence TYPE REF TO object,
lr_complete_comm_assembly TYPE REF TO data.
FIELD-SYMBOLS: <lg_complete_comm_assembly> TYPE any.
TRY.
CREATE DATA lr_complete_comm_assembly TYPE ('UCONSERVASCOMPLETE').
ASSIGN lr_complete_comm_assembly->* TO <lg_complete_comm_assembly>.
ASSERT sy-subrc = 0.
io_xml->read(
EXPORTING
iv_name = 'UCSA'
CHANGING
cg_data = <lg_complete_comm_assembly> ).
lv_id = ms_item-obj_name.
lo_persistence = get_persistence( lv_id ).
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~CREATE').
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~SAVE')
EXPORTING
sa = <lg_complete_comm_assembly>
version = zif_abapgit_definitions=>gc_version-active.
tadir_insert( iv_package ).
CATCH cx_root INTO lx_root.
lv_text = lx_root->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
DATA: lv_id TYPE ty_id, DATA: lv_id TYPE ty_id,
@ -75,6 +198,42 @@ CLASS zcl_abapgit_object_ucsa IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump.
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' ).
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~serialize. METHOD zif_abapgit_object~serialize.
DATA: lv_id TYPE ty_id, DATA: lv_id TYPE ty_id,
@ -112,150 +271,4 @@ CLASS zcl_abapgit_object_ucsa IMPLEMENTATION.
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~deserialize.
DATA: lv_id TYPE ty_id,
lx_root TYPE REF TO cx_root,
lv_text TYPE string,
lo_persistence TYPE REF TO object,
lr_complete_comm_assembly TYPE REF TO data.
FIELD-SYMBOLS: <ls_complete_comm_assembly> TYPE any.
TRY.
CREATE DATA lr_complete_comm_assembly TYPE ('UCONSERVASCOMPLETE').
ASSIGN lr_complete_comm_assembly->* TO <ls_complete_comm_assembly>.
ASSERT sy-subrc = 0.
io_xml->read(
EXPORTING
iv_name = 'UCSA'
CHANGING
cg_data = <ls_complete_comm_assembly> ).
lv_id = ms_item-obj_name.
lo_persistence = get_persistence( lv_id ).
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~CREATE').
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~SAVE')
EXPORTING
sa = <ls_complete_comm_assembly>
version = zif_abapgit_definitions=>gc_version-active.
tadir_insert( iv_package ).
CATCH cx_root INTO lx_root.
lv_text = lx_root->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: lv_id TYPE ty_id,
lx_root TYPE REF TO cx_root,
lv_text TYPE string,
lo_persistence TYPE REF TO object.
TRY.
lv_id = ms_item-obj_name.
lo_persistence = get_persistence( lv_id ).
CALL METHOD lo_persistence->('IF_UCON_SA_PERSIST~DELETE')
EXPORTING
version = zif_abapgit_definitions=>gc_version-active.
CATCH cx_root INTO lx_root.
lv_text = lx_root->get_text( ).
zcx_abapgit_exception=>raise( lv_text ).
ENDTRY.
ENDMETHOD.
METHOD zif_abapgit_object~jump.
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' ).
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD get_persistence.
CALL METHOD ('CL_UCON_SA_DB_PERSIST')=>('IF_UCON_SA_PERSIST~GET_INSTANCE')
EXPORTING
id = iv_id
RECEIVING
instance = ro_persistence.
ENDMETHOD.
METHOD clear_dynamic_fields.
FIELD-SYMBOLS: <header> TYPE any.
ASSIGN COMPONENT 'HEADER' OF STRUCTURE cs_complete_comm_assembly
TO <header>.
ASSERT sy-subrc = 0.
clear_field(
EXPORTING iv_fieldname = 'CREATEDBY'
CHANGING cs_header = <header> ).
clear_field(
EXPORTING iv_fieldname = 'CREATEDON'
CHANGING cs_header = <header> ).
clear_field(
EXPORTING iv_fieldname = 'CREATEDAT'
CHANGING cs_header = <header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDBY'
CHANGING cs_header = <header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDON'
CHANGING cs_header = <header> ).
clear_field(
EXPORTING iv_fieldname = 'CHANGEDAT'
CHANGING cs_header = <header> ).
ENDMETHOD.
METHOD clear_field.
FIELD-SYMBOLS: <field> TYPE any.
ASSIGN COMPONENT iv_fieldname OF STRUCTURE cs_header
TO <field>.
ASSERT sy-subrc = 0.
CLEAR: <field>.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -46,87 +46,10 @@ CLASS zcl_abapgit_object_webi DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_object_webi IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~changed_by. CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
rv_user = c_user_unknown. " todo
ENDMETHOD. "zif_abapgit_object~changed_by
METHOD zif_abapgit_object~serialize.
DATA: ls_webi TYPE ty_webi,
lt_modilog TYPE STANDARD TABLE OF smodilog WITH DEFAULT KEY,
li_vi TYPE REF TO if_ws_md_vif,
lv_name TYPE vepname.
FIELD-SYMBOLS: <ls_header> LIKE LINE OF ls_webi-pvepheader,
<ls_endpoint> LIKE LINE OF ls_webi-pvependpoint.
CALL FUNCTION 'WEBI_GET_OBJECT'
EXPORTING
webiname = ms_item-obj_name
TABLES
psmodilog = lt_modilog
pvepheader = ls_webi-pvepheader
pvepfunction = ls_webi-pvepfunction
pvepfault = ls_webi-pvepfault
pvepparameter = ls_webi-pvepparameter
pveptype = ls_webi-pveptype
pvepelemtype = ls_webi-pvepelemtype
pveptabletype = ls_webi-pveptabletype
pvepstrutype = ls_webi-pvepstrutype
pveptypesoapext = ls_webi-pveptypesoapext
pvepeletypsoap = ls_webi-pvepeletypsoap
pveptabtypsoap = ls_webi-pveptabtypsoap
pvepfuncsoapext = ls_webi-pvepfuncsoapext
pvepfieldref = ls_webi-pvepfieldref
pvependpoint = ls_webi-pvependpoint
pvepvisoapext = ls_webi-pvepvisoapext
pvepparasoapext = ls_webi-pvepparasoapext
EXCEPTIONS
version_not_found = 1
webi_not_exist = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from WEBI_GET_OBJECT' ).
ENDIF.
SORT ls_webi-pveptype BY
vepname ASCENDING
version ASCENDING
typename ASCENDING.
lv_name = ms_item-obj_name.
TRY.
li_vi = cl_ws_md_factory=>get_vif_root( )->get_virtual_interface( lv_name ).
ls_webi-veptext = li_vi->get_short_text( sews_c_vif_version-active ).
CATCH cx_ws_md_exception.
zcx_abapgit_exception=>raise( 'error serializing WEBI' ).
ENDTRY.
LOOP AT ls_webi-pvepheader ASSIGNING <ls_header>.
CLEAR <ls_header>-author.
CLEAR <ls_header>-createdon.
CLEAR <ls_header>-changedby.
CLEAR <ls_header>-changedon.
CLEAR <ls_header>-ctime.
CLEAR <ls_header>-text_id.
CLEAR <ls_header>-utime.
CLEAR <ls_header>-wsint_version.
ENDLOOP.
LOOP AT ls_webi-pvependpoint ASSIGNING <ls_endpoint>.
CLEAR: <ls_endpoint>-clustd.
ENDLOOP.
io_xml->add( iv_name = 'WEBI'
ig_data = ls_webi ).
ENDMETHOD. "zif_abapgit_object~serialize
METHOD handle_endpoint. METHOD handle_endpoint.
@ -167,12 +90,13 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "handle_endpoint ENDMETHOD. "handle_endpoint
METHOD handle_function. METHOD handle_function.
CONSTANTS: BEGIN OF co_parameter_type, CONSTANTS: BEGIN OF lc_parameter_type,
import TYPE vepparamtype VALUE 'I', import TYPE vepparamtype VALUE 'I',
export TYPE vepparamtype VALUE 'O', export TYPE vepparamtype VALUE 'O',
END OF co_parameter_type. END OF lc_parameter_type.
DATA: li_parameter TYPE REF TO if_ws_md_vif_param, DATA: li_parameter TYPE REF TO if_ws_md_vif_param,
li_soap TYPE REF TO if_ws_md_soap_ext_func, li_soap TYPE REF TO if_ws_md_soap_ext_func,
@ -202,12 +126,12 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
WHERE function = <ls_function>-function. WHERE function = <ls_function>-function.
CASE <ls_parameter>-vepparamtype. CASE <ls_parameter>-vepparamtype.
WHEN co_parameter_type-import. WHEN lc_parameter_type-import.
li_parameter = li_function->create_incoming_parameter( li_parameter = li_function->create_incoming_parameter(
<ls_parameter>-vepparam ). <ls_parameter>-vepparam ).
WHEN co_parameter_type-export. WHEN lc_parameter_type-export.
li_parameter = li_function->create_outgoing_parameter( li_parameter = li_function->create_outgoing_parameter(
<ls_parameter>-vepparam ). <ls_parameter>-vepparam ).
@ -244,6 +168,26 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "handle_function ENDMETHOD. "handle_function
METHOD handle_soap.
DATA: li_soap TYPE REF TO if_ws_md_soap_ext_virtinfc,
ls_soap LIKE LINE OF is_webi-pvepvisoapext.
READ TABLE is_webi-pvepvisoapext INDEX 1 INTO ls_soap.
ASSERT sy-subrc = 0.
IF mi_vi->has_soap_extension_virtinfc( sews_c_vif_version-active ) = abap_true.
RETURN.
ENDIF.
li_soap = mi_vi->create_soap_extension_virtinfc( ls_soap-soap_appl_uri ).
li_soap->set_namespace( ls_soap-namespace ).
ENDMETHOD. "handle_soap
METHOD handle_types. METHOD handle_types.
DATA: lv_index TYPE i, DATA: lv_index TYPE i,
@ -325,23 +269,34 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "handle_types ENDMETHOD. "handle_types
METHOD handle_soap.
DATA: li_soap TYPE REF TO if_ws_md_soap_ext_virtinfc, METHOD zif_abapgit_object~changed_by.
ls_soap LIKE LINE OF is_webi-pvepvisoapext. rv_user = c_user_unknown. " todo
ENDMETHOD. "zif_abapgit_object~changed_by
READ TABLE is_webi-pvepvisoapext INDEX 1 INTO ls_soap. METHOD zif_abapgit_object~compare_to_remote_version.
ASSERT sy-subrc = 0. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
IF mi_vi->has_soap_extension_virtinfc( sews_c_vif_version-active ) = abap_true.
RETURN.
ENDIF.
li_soap = mi_vi->create_soap_extension_virtinfc( ls_soap-soap_appl_uri ). METHOD zif_abapgit_object~delete.
li_soap->set_namespace( ls_soap-namespace ).
DATA: lv_name TYPE vepname,
lo_vif TYPE REF TO cl_ws_md_vif_root.
lv_name = ms_item-obj_name.
CREATE OBJECT lo_vif.
TRY.
lo_vif->if_ws_md_vif_root~delete_virtual_interface( lv_name ).
CATCH cx_ws_md_exception.
zcx_abapgit_exception=>raise( 'error deleting WEBI' ).
ENDTRY.
ENDMETHOD. "zif_abapgit_object~delete
ENDMETHOD. "handle_soap
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
@ -399,22 +354,6 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~deserialize ENDMETHOD. "zif_abapgit_object~deserialize
METHOD zif_abapgit_object~delete.
DATA: lv_name TYPE vepname,
lo_vif TYPE REF TO cl_ws_md_vif_root.
lv_name = ms_item-obj_name.
CREATE OBJECT lo_vif.
TRY.
lo_vif->if_ws_md_vif_root~delete_virtual_interface( lv_name ).
CATCH cx_ws_md_exception.
zcx_abapgit_exception=>raise( 'error deleting WEBI' ).
ENDTRY.
ENDMETHOD. "zif_abapgit_object~delete
METHOD zif_abapgit_object~exists. METHOD zif_abapgit_object~exists.
@ -429,6 +368,17 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~exists ENDMETHOD. "zif_abapgit_object~exists
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD. "zif_abapgit_object~has_changed_since
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS' CALL FUNCTION 'RS_TOOL_ACCESS'
@ -440,12 +390,76 @@ CLASS zcl_abapgit_object_webi IMPLEMENTATION.
ENDMETHOD. "zif_abapgit_object~jump ENDMETHOD. "zif_abapgit_object~jump
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
ENDMETHOD. "zif_abapgit_object~get_metadata
METHOD zif_abapgit_object~compare_to_remote_version. METHOD zif_abapgit_object~serialize.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
ENDCLASS. "zcl_abapgit_object_webi IMPLEMENTATION DATA: ls_webi TYPE ty_webi,
lt_modilog TYPE STANDARD TABLE OF smodilog WITH DEFAULT KEY,
li_vi TYPE REF TO if_ws_md_vif,
lv_name TYPE vepname.
FIELD-SYMBOLS: <ls_header> LIKE LINE OF ls_webi-pvepheader,
<ls_endpoint> LIKE LINE OF ls_webi-pvependpoint.
CALL FUNCTION 'WEBI_GET_OBJECT'
EXPORTING
webiname = ms_item-obj_name
TABLES
psmodilog = lt_modilog
pvepheader = ls_webi-pvepheader
pvepfunction = ls_webi-pvepfunction
pvepfault = ls_webi-pvepfault
pvepparameter = ls_webi-pvepparameter
pveptype = ls_webi-pveptype
pvepelemtype = ls_webi-pvepelemtype
pveptabletype = ls_webi-pveptabletype
pvepstrutype = ls_webi-pvepstrutype
pveptypesoapext = ls_webi-pveptypesoapext
pvepeletypsoap = ls_webi-pvepeletypsoap
pveptabtypsoap = ls_webi-pveptabtypsoap
pvepfuncsoapext = ls_webi-pvepfuncsoapext
pvepfieldref = ls_webi-pvepfieldref
pvependpoint = ls_webi-pvependpoint
pvepvisoapext = ls_webi-pvepvisoapext
pvepparasoapext = ls_webi-pvepparasoapext
EXCEPTIONS
version_not_found = 1
webi_not_exist = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from WEBI_GET_OBJECT' ).
ENDIF.
SORT ls_webi-pveptype BY
vepname ASCENDING
version ASCENDING
typename ASCENDING.
lv_name = ms_item-obj_name.
TRY.
li_vi = cl_ws_md_factory=>get_vif_root( )->get_virtual_interface( lv_name ).
ls_webi-veptext = li_vi->get_short_text( sews_c_vif_version-active ).
CATCH cx_ws_md_exception.
zcx_abapgit_exception=>raise( 'error serializing WEBI' ).
ENDTRY.
LOOP AT ls_webi-pvepheader ASSIGNING <ls_header>.
CLEAR <ls_header>-author.
CLEAR <ls_header>-createdon.
CLEAR <ls_header>-changedby.
CLEAR <ls_header>-changedon.
CLEAR <ls_header>-ctime.
CLEAR <ls_header>-text_id.
CLEAR <ls_header>-utime.
CLEAR <ls_header>-wsint_version.
ENDLOOP.
LOOP AT ls_webi-pvependpoint ASSIGNING <ls_endpoint>.
CLEAR: <ls_endpoint>-clustd.
ENDLOOP.
io_xml->add( iv_name = 'WEBI'
ig_data = ls_webi ).
ENDMETHOD. "zif_abapgit_object~serialize
ENDCLASS.

View File

@ -50,12 +50,118 @@ CLASS zcl_abapgit_objects_saxx_super DEFINITION PUBLIC ABSTRACT
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true. CLASS ZCL_ABAPGIT_OBJECTS_SAXX_SUPER IMPLEMENTATION.
METHOD create_channel_objects.
get_names( ).
TRY.
IF mo_appl_obj_data IS NOT BOUND.
CREATE OBJECT mo_appl_obj_data TYPE (mv_appl_obj_cls_name).
ENDIF.
IF mo_persistence IS NOT BOUND.
CREATE OBJECT mo_persistence TYPE (mv_persistence_cls_name).
ENDIF.
CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
ENDTRY.
ENDMETHOD. ENDMETHOD.
METHOD get_data.
DATA: lv_object_key TYPE seu_objkey.
lv_object_key = ms_item-obj_name.
TRY.
mo_persistence->get(
EXPORTING
p_object_key = lv_object_key
p_version = 'A'
CHANGING
p_object_data = mo_appl_obj_data ).
CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
ENDTRY.
mo_appl_obj_data->get_data(
IMPORTING
p_data = p_data ).
ENDMETHOD.
METHOD get_names.
IF mv_data_structure_name IS INITIAL.
mv_data_structure_name = get_data_structure_name( ).
ENDIF.
IF mv_appl_obj_cls_name IS INITIAL.
mv_appl_obj_cls_name = get_data_class_name( ).
ENDIF.
IF mv_persistence_cls_name IS INITIAL.
mv_persistence_cls_name = get_persistence_class_name( ).
ENDIF.
ENDMETHOD.
METHOD lock.
DATA: lv_objname TYPE trobj_name,
lv_object_key TYPE seu_objkey,
lv_objtype TYPE trobjtype.
lv_objname = ms_item-obj_name.
lv_object_key = ms_item-obj_name.
lv_objtype = ms_item-obj_type.
mo_persistence->lock(
EXPORTING
p_objname_tr = lv_objname
p_object_key = lv_object_key
p_objtype_tr = lv_objtype
EXCEPTIONS
foreign_lock = 1
error_occurred = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error occured while locking { ms_item-obj_type } | && lv_objname ).
ENDIF.
ENDMETHOD. "lock
METHOD unlock.
DATA: lv_objname TYPE trobj_name,
lv_object_key TYPE seu_objkey,
lv_objtype TYPE trobjtype.
lv_objname = ms_item-obj_name.
lv_object_key = ms_item-obj_name.
lv_objtype = ms_item-obj_type.
mo_persistence->unlock( p_objname_tr = lv_objname
p_object_key = lv_object_key
p_objtype_tr = lv_objtype ).
ENDMETHOD. "unlock
METHOD zif_abapgit_object~changed_by. METHOD zif_abapgit_object~changed_by.
DATA: lr_data TYPE REF TO data. DATA: lr_data TYPE REF TO data.
@ -91,106 +197,45 @@ CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ). METHOD zif_abapgit_object~compare_to_remote_version.
rs_metadata-delete_tadir = abap_true. CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~exists.
DATA: object_key TYPE seu_objkey. METHOD zif_abapgit_object~delete.
DATA: lv_object_key TYPE seu_objkey.
create_channel_objects( ). create_channel_objects( ).
object_key = ms_item-obj_name. lv_object_key = ms_item-obj_name.
TRY. TRY.
mo_persistence->get( p_object_key = object_key lock( ).
p_version = 'A'
p_existence_check_only = abap_true ).
CATCH cx_swb_object_does_not_exist cx_swb_exception. mo_persistence->delete( lv_object_key ).
rv_bool = abap_false.
RETURN. unlock( ).
CATCH cx_swb_exception.
zcx_abapgit_exception=>raise( |Error occured while deleting { ms_item-obj_type }| ).
ENDTRY. ENDTRY.
rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~serialize.
DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any,
<ls_header> TYPE any,
<field> TYPE any.
create_channel_objects( ).
TRY.
CREATE DATA lr_data TYPE (mv_data_structure_name).
ASSIGN lr_data->* TO <ls_data>.
CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
ENDTRY.
get_data(
IMPORTING
p_data = <ls_data> ).
ASSIGN COMPONENT 'HEADER' OF STRUCTURE <ls_data> TO <ls_header>.
ASSERT sy-subrc = 0.
ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CHANGED_AT' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CHANGED_CLNT' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_ON' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_AT' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
ASSIGN COMPONENT 'CREATED_CLNT' OF STRUCTURE <ls_header> TO <field>.
ASSERT sy-subrc = 0.
CLEAR <field>.
io_xml->add( iv_name = ms_item-obj_type
ig_data = <ls_data> ).
ENDMETHOD.
METHOD zif_abapgit_object~deserialize. METHOD zif_abapgit_object~deserialize.
DATA: lr_data TYPE REF TO data. DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <ls_data> TYPE any. FIELD-SYMBOLS: <lg_data> TYPE any.
create_channel_objects( ). create_channel_objects( ).
TRY. TRY.
CREATE DATA lr_data TYPE (mv_data_structure_name). CREATE DATA lr_data TYPE (mv_data_structure_name).
ASSIGN lr_data->* TO <ls_data>. ASSIGN lr_data->* TO <lg_data>.
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
@ -200,7 +245,7 @@ CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
EXPORTING EXPORTING
iv_name = ms_item-obj_type iv_name = ms_item-obj_type
CHANGING CHANGING
cg_data = <ls_data> ). cg_data = <lg_data> ).
IF zif_abapgit_object~exists( ) = abap_true. IF zif_abapgit_object~exists( ) = abap_true.
zif_abapgit_object~delete( ). zif_abapgit_object~delete( ).
@ -227,7 +272,7 @@ CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
zcx_abapgit_exception=>raise( |Error occured while creating { ms_item-obj_type }| ). zcx_abapgit_exception=>raise( |Error occured while creating { ms_item-obj_type }| ).
ENDIF. ENDIF.
mo_appl_obj_data->set_data( <ls_data> ). mo_appl_obj_data->set_data( <lg_data> ).
mo_persistence->save( mo_appl_obj_data ). mo_persistence->save( mo_appl_obj_data ).
@ -239,27 +284,41 @@ CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~delete.
DATA: object_key TYPE seu_objkey. METHOD zif_abapgit_object~exists.
DATA: lv_object_key TYPE seu_objkey.
create_channel_objects( ). create_channel_objects( ).
object_key = ms_item-obj_name. lv_object_key = ms_item-obj_name.
TRY. TRY.
lock( ). mo_persistence->get( p_object_key = lv_object_key
p_version = 'A'
p_existence_check_only = abap_true ).
mo_persistence->delete( object_key ). CATCH cx_swb_object_does_not_exist cx_swb_exception.
rv_bool = abap_false.
unlock( ). RETURN.
CATCH cx_swb_exception.
zcx_abapgit_exception=>raise( |Error occured while deleting { ms_item-obj_type }| ).
ENDTRY. ENDTRY.
rv_bool = abap_true.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~get_metadata.
rs_metadata = get_metadata( ).
rs_metadata-delete_tadir = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~has_changed_since.
rv_changed = abap_true.
ENDMETHOD.
METHOD zif_abapgit_object~jump. METHOD zif_abapgit_object~jump.
CALL FUNCTION 'RS_TOOL_ACCESS' CALL FUNCTION 'RS_TOOL_ACCESS'
@ -270,109 +329,66 @@ CLASS zcl_abapgit_objects_saxx_super IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_object~compare_to_remote_version.
CREATE OBJECT ro_comparison_result TYPE zcl_abapgit_comparison_null.
ENDMETHOD.
METHOD create_channel_objects. METHOD zif_abapgit_object~serialize.
get_names( ). DATA: lr_data TYPE REF TO data.
FIELD-SYMBOLS: <lg_data> TYPE any,
<lg_header> TYPE any,
<lg_field> TYPE any.
create_channel_objects( ).
TRY. TRY.
IF mo_appl_obj_data IS NOT BOUND. CREATE DATA lr_data TYPE (mv_data_structure_name).
CREATE OBJECT mo_appl_obj_data TYPE (mv_appl_obj_cls_name). ASSIGN lr_data->* TO <lg_data>.
ENDIF.
IF mo_persistence IS NOT BOUND.
CREATE OBJECT mo_persistence TYPE (mv_persistence_cls_name).
ENDIF.
CATCH cx_root. CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ). zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
ENDTRY. ENDTRY.
ENDMETHOD. get_data(
METHOD get_data.
DATA: object_key TYPE seu_objkey.
object_key = ms_item-obj_name.
TRY.
mo_persistence->get(
EXPORTING
p_object_key = object_key
p_version = 'A'
CHANGING
p_object_data = mo_appl_obj_data ).
CATCH cx_root.
zcx_abapgit_exception=>raise( |{ ms_item-obj_type } not supported| ).
ENDTRY.
mo_appl_obj_data->get_data(
IMPORTING IMPORTING
p_data = p_data ). p_data = <lg_data> ).
ASSIGN COMPONENT 'HEADER' OF STRUCTURE <lg_data> TO <lg_header>.
ASSERT sy-subrc = 0.
ASSIGN COMPONENT 'CHANGED_ON' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_BY' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_AT' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CHANGED_CLNT' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_ON' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_BY' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_AT' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
ASSIGN COMPONENT 'CREATED_CLNT' OF STRUCTURE <lg_header> TO <lg_field>.
ASSERT sy-subrc = 0.
CLEAR <lg_field>.
io_xml->add( iv_name = ms_item-obj_type
ig_data = <lg_data> ).
ENDMETHOD. ENDMETHOD.
METHOD lock.
DATA: objname TYPE trobj_name,
object_key TYPE seu_objkey,
objtype TYPE trobjtype.
objname = ms_item-obj_name.
object_key = ms_item-obj_name.
objtype = ms_item-obj_type.
mo_persistence->lock(
EXPORTING
p_objname_tr = objname
p_object_key = object_key
p_objtype_tr = objtype
EXCEPTIONS
foreign_lock = 1
error_occurred = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error occured while locking { ms_item-obj_type } | && objname ).
ENDIF.
ENDMETHOD. "lock
METHOD unlock.
DATA: objname TYPE trobj_name,
object_key TYPE seu_objkey,
objtype TYPE trobjtype.
objname = ms_item-obj_name.
object_key = ms_item-obj_name.
objtype = ms_item-obj_type.
mo_persistence->unlock( p_objname_tr = objname
p_object_key = object_key
p_objtype_tr = objtype ).
ENDMETHOD. "unlock
METHOD get_names.
IF mv_data_structure_name IS INITIAL.
mv_data_structure_name = get_data_structure_name( ).
ENDIF.
IF mv_appl_obj_cls_name IS INITIAL.
mv_appl_obj_cls_name = get_data_class_name( ).
ENDIF.
IF mv_persistence_cls_name IS INITIAL.
mv_persistence_cls_name = get_persistence_class_name( ).
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -132,15 +132,15 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
METHOD is_adt_jump_possible. METHOD is_adt_jump_possible.
DATA: li_wb_request TYPE REF TO cl_wb_request, DATA: lo_wb_request TYPE REF TO cl_wb_request,
li_adt_uri_mapper_vit TYPE REF TO object, lo_adt_uri_mapper_vit TYPE REF TO object,
is_vit_wb_request TYPE abap_bool. lv_vit_wb_request TYPE abap_bool.
cl_wb_request=>create_from_object_ref( cl_wb_request=>create_from_object_ref(
EXPORTING EXPORTING
p_wb_object = io_object p_wb_object = io_object
RECEIVING RECEIVING
p_wb_request = li_wb_request p_wb_request = lo_wb_request
EXCEPTIONS EXCEPTIONS
illegal_operation = 1 illegal_operation = 1
cancelled = 2 cancelled = 2
@ -153,15 +153,15 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
TRY. TRY.
CALL METHOD io_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER_VIT') CALL METHOD io_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER_VIT')
RECEIVING RECEIVING
result = li_adt_uri_mapper_vit. result = lo_adt_uri_mapper_vit.
CALL METHOD li_adt_uri_mapper_vit->('IF_ADT_URI_MAPPER_VIT~IS_VIT_WB_REQUEST') CALL METHOD lo_adt_uri_mapper_vit->('IF_ADT_URI_MAPPER_VIT~IS_VIT_WB_REQUEST')
EXPORTING EXPORTING
wb_request = li_wb_request wb_request = lo_wb_request
RECEIVING RECEIVING
result = is_vit_wb_request. result = lv_vit_wb_request.
IF is_vit_wb_request = abap_true. IF lv_vit_wb_request = abap_true.
r_is_adt_jump_possible = abap_false. r_is_adt_jump_possible = abap_false.
ELSE. ELSE.
r_is_adt_jump_possible = abap_true. r_is_adt_jump_possible = abap_true.
@ -176,52 +176,58 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
METHOD jump_adt. METHOD jump_adt.
DATA: adt_link TYPE string, DATA: lv_adt_link TYPE string,
obj_type TYPE trobjtype, lv_obj_type TYPE trobjtype,
obj_name TYPE trobj_name, lv_obj_name TYPE trobj_name,
li_object TYPE REF TO cl_wb_object, lo_object TYPE REF TO cl_wb_object,
li_adt TYPE REF TO object, lo_adt TYPE REF TO object,
li_adt_uri_mapper TYPE REF TO object, lo_adt_uri_mapper TYPE REF TO object,
li_adt_objref TYPE REF TO object ##needed. lo_adt_objref TYPE REF TO object ##needed.
FIELD-SYMBOLS: <uri> TYPE string. FIELD-SYMBOLS: <lv_uri> TYPE string.
obj_name = i_obj_name.
obj_type = i_obj_type. lv_obj_name = i_obj_name.
lv_obj_type = i_obj_type.
TRY. TRY.
cl_wb_object=>create_from_transport_key( EXPORTING p_object = obj_type p_obj_name = obj_name cl_wb_object=>create_from_transport_key(
RECEIVING p_wb_object = li_object EXPORTING
EXCEPTIONS OTHERS = 1 ). p_object = lv_obj_type
p_obj_name = lv_obj_name
RECEIVING
p_wb_object = lo_object
EXCEPTIONS
OTHERS = 1 ).
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'ADT Jump Error' ). zcx_abapgit_exception=>raise( 'ADT Jump Error' ).
ENDIF. ENDIF.
CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE') CALL METHOD ('CL_ADT_TOOLS_CORE_FACTORY')=>('GET_INSTANCE')
RECEIVING RECEIVING
result = li_adt. result = lo_adt.
IF is_adt_jump_possible( io_object = li_object IF is_adt_jump_possible( io_object = lo_object
io_adt = li_adt ) = abap_false. io_adt = lo_adt ) = abap_false.
zcx_abapgit_exception=>raise( 'ADT Jump Error' ). zcx_abapgit_exception=>raise( 'ADT Jump Error' ).
ENDIF. ENDIF.
CALL METHOD li_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER') CALL METHOD lo_adt->('IF_ADT_TOOLS_CORE_FACTORY~GET_URI_MAPPER')
RECEIVING RECEIVING
result = li_adt_uri_mapper. result = lo_adt_uri_mapper.
CALL METHOD li_adt_uri_mapper->('IF_ADT_URI_MAPPER~MAP_WB_OBJECT_TO_OBJREF') CALL METHOD lo_adt_uri_mapper->('IF_ADT_URI_MAPPER~MAP_WB_OBJECT_TO_OBJREF')
EXPORTING EXPORTING
wb_object = li_object wb_object = lo_object
RECEIVING RECEIVING
result = li_adt_objref. result = lo_adt_objref.
ASSIGN ('li_adt_objref->ref_data-uri') TO <uri>. ASSIGN ('li_adt_objref->ref_data-uri') TO <lv_uri>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CONCATENATE 'adt://' sy-sysid <uri> INTO adt_link. CONCATENATE 'adt://' sy-sysid <lv_uri> INTO lv_adt_link.
cl_gui_frontend_services=>execute( EXPORTING document = adt_link cl_gui_frontend_services=>execute( EXPORTING document = lv_adt_link
EXCEPTIONS OTHERS = 1 ). EXCEPTIONS OTHERS = 1 ).
IF sy-subrc <> 0. IF sy-subrc <> 0.

View File

@ -63,7 +63,16 @@ CLASS zcl_abapgit_oo_class_new DEFINITION PUBLIC INHERITING FROM zcl_abapgit_oo_
ENDCLASS. ENDCLASS.
CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
CLASS ZCL_ABAPGIT_OO_CLASS_NEW IMPLEMENTATION.
METHOD create_report.
INSERT REPORT iv_program FROM it_source EXTENSION TYPE iv_extension STATE iv_version PROGRAM TYPE iv_program_type.
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD determine_method_include. METHOD determine_method_include.
@ -109,30 +118,45 @@ CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_oo_object_fnc~create.
* same as in super class, but with "version = seoc_version_active"
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE' METHOD generate_classpool.
DATA: ls_clskey TYPE seoclskey.
ls_clskey-clsname = iv_name.
CALL FUNCTION 'SEO_CLASS_GENERATE_CLASSPOOL'
EXPORTING EXPORTING
devclass = iv_package clskey = ls_clskey
overwrite = iv_overwrite suppress_corr = seox_true
version = seoc_version_active
CHANGING
class = is_properties
EXCEPTIONS EXCEPTIONS
existing = 1 not_existing = 1
is_interface = 2 model_only = 2
db_error = 3 class_pool_not_generated = 3
component_error = 4 class_stment_not_generated = 4
no_access = 5 locals_not_generated = 5
other = 6 macros_not_generated = 6
OTHERS = 7. public_sec_not_generated = 7
protected_sec_not_generated = 8
private_sec_not_generated = 9
typeref_not_generated = 10
class_pool_not_initialised = 11
class_stment_not_initialised = 12
locals_not_initialised = 13
macros_not_initialised = 14
public_sec_not_initialised = 15
protected_sec_not_initialised = 16
private_sec_not_initialised = 17
typeref_not_initialised = 18
_internal_class_overflow = 19
OTHERS = 20.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ). zcx_abapgit_exception=>raise( 'error from SEO_CLASS_GENERATE_CLASSPOOL' ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD init_scanner. METHOD init_scanner.
TRY. TRY.
@ -146,50 +170,53 @@ CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD update_report.
DATA: lt_old TYPE string_table. METHOD update_cs_number_of_methods.
READ REPORT iv_program INTO lt_old. " Indirect access to keep downward compatibility
IF sy-subrc <> 0. DATA lr_cache_entry TYPE REF TO data.
zcx_abapgit_exception=>raise( |Fatal error. Include { iv_program } should have been created previously!| ). FIELD-SYMBOLS: <ls_cache_entry> TYPE any,
ENDIF. <field> TYPE any.
IF lt_old <> it_source. CREATE DATA lr_cache_entry TYPE ('SEO_CS_CACHE').
INSERT REPORT iv_program FROM it_source. ASSIGN lr_cache_entry->* TO <ls_cache_entry>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
rv_updated = abap_true.
ELSE. ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE <ls_cache_entry>
rv_updated = abap_false. TO <field>.
ENDIF. ASSERT sy-subrc = 0.
<field> = iv_classname.
ASSIGN COMPONENT 'NO_OF_METHOD_IMPLS' OF STRUCTURE <ls_cache_entry>
TO <field>.
ASSERT sy-subrc = 0.
<field> = iv_number_of_impl_methods.
MODIFY ('SEO_CS_CACHE') FROM <ls_cache_entry>.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_oo_object_fnc~generate_locals.
DATA: lv_program TYPE programm. METHOD update_full_class_include.
CONSTANTS: lc_class_source_extension TYPE sychar02 VALUE 'CS',
lc_include_program_type TYPE sychar01 VALUE 'I',
lc_active_version TYPE r3state VALUE 'A'.
lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ). create_report( iv_program = cl_oo_classname_service=>get_cs_name( iv_classname )
update_report( iv_program = lv_program it_source = it_source
it_source = it_local_definitions ). iv_extension = lc_class_source_extension
iv_program_type = lc_include_program_type
iv_version = lc_active_version ).
lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ). " Assuming that all methods that were scanned are implemented
update_report( iv_program = lv_program update_cs_number_of_methods( iv_classname = iv_classname
it_source = it_local_implementations ). iv_number_of_impl_methods = lines( it_methods ) ).
lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_macros ).
IF lines( it_local_test_classes ) > 0.
lv_program = cl_oo_classname_service=>get_ccau_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_test_classes ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD update_meta. METHOD update_meta.
DATA: lo_update TYPE REF TO cl_oo_class_section_source, DATA: lo_update TYPE REF TO cl_oo_class_section_source,
@ -242,43 +269,52 @@ CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD generate_classpool.
DATA: ls_clskey TYPE seoclskey. METHOD update_report.
ls_clskey-clsname = iv_name. DATA: lt_old TYPE string_table.
CALL FUNCTION 'SEO_CLASS_GENERATE_CLASSPOOL' READ REPORT iv_program INTO lt_old.
EXPORTING
clskey = ls_clskey
suppress_corr = seox_true
EXCEPTIONS
not_existing = 1
model_only = 2
class_pool_not_generated = 3
class_stment_not_generated = 4
locals_not_generated = 5
macros_not_generated = 6
public_sec_not_generated = 7
protected_sec_not_generated = 8
private_sec_not_generated = 9
typeref_not_generated = 10
class_pool_not_initialised = 11
class_stment_not_initialised = 12
locals_not_initialised = 13
macros_not_initialised = 14
public_sec_not_initialised = 15
protected_sec_not_initialised = 16
private_sec_not_initialised = 17
typeref_not_initialised = 18
_internal_class_overflow = 19
OTHERS = 20.
IF sy-subrc <> 0. IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_GENERATE_CLASSPOOL' ). zcx_abapgit_exception=>raise( |Fatal error. Include { iv_program } should have been created previously!| ).
ENDIF.
IF lt_old <> it_source.
INSERT REPORT iv_program FROM it_source.
ASSERT sy-subrc = 0.
rv_updated = abap_true.
ELSE.
rv_updated = abap_false.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD zif_abapgit_oo_object_fnc~create.
* same as in super class, but with "version = seoc_version_active"
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
EXPORTING
devclass = iv_package
overwrite = iv_overwrite
version = seoc_version_active
CHANGING
class = is_properties
EXCEPTIONS
existing = 1
is_interface = 2
db_error = 3
component_error = 4
no_access = 5
other = 6
OTHERS = 7.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
ENDIF.
ENDMETHOD.
METHOD zif_abapgit_oo_object_fnc~deserialize_source. METHOD zif_abapgit_oo_object_fnc~deserialize_source.
DATA: lv_updated TYPE abap_bool, DATA: lv_updated TYPE abap_bool,
@ -356,51 +392,29 @@ CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD update_full_class_include.
CONSTANTS c_class_source_extension TYPE sychar02 VALUE 'CS'.
CONSTANTS c_include_program_type TYPE sychar01 VALUE 'I'.
CONSTANTS c_active_version TYPE r3state VALUE 'A'.
create_report( iv_program = cl_oo_classname_service=>get_cs_name( iv_classname ) METHOD zif_abapgit_oo_object_fnc~generate_locals.
it_source = it_source
iv_extension = c_class_source_extension
iv_program_type = c_include_program_type
iv_version = c_active_version ).
" Assuming that all methods that were scanned are implemented DATA: lv_program TYPE programm.
update_cs_number_of_methods( iv_classname = iv_classname
iv_number_of_impl_methods = lines( it_methods ) ).
lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_definitions ).
lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_implementations ).
lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_macros ).
IF lines( it_local_test_classes ) > 0.
lv_program = cl_oo_classname_service=>get_ccau_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_test_classes ).
ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD create_report.
INSERT REPORT iv_program FROM it_source EXTENSION TYPE iv_extension STATE iv_version PROGRAM TYPE iv_program_type.
ASSERT sy-subrc = 0.
ENDMETHOD.
METHOD update_cs_number_of_methods.
" Indirect access to keep downward compatibility
DATA lr_cache_entry TYPE REF TO data.
FIELD-SYMBOLS: <ls_cache_entry> TYPE any,
<field> TYPE any.
CREATE DATA lr_cache_entry TYPE ('SEO_CS_CACHE').
ASSIGN lr_cache_entry->* TO <ls_cache_entry>.
ASSERT sy-subrc = 0.
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE <ls_cache_entry>
TO <field>.
ASSERT sy-subrc = 0.
<field> = iv_classname.
ASSIGN COMPONENT 'NO_OF_METHOD_IMPLS' OF STRUCTURE <ls_cache_entry>
TO <field>.
ASSERT sy-subrc = 0.
<field> = iv_number_of_impl_methods.
MODIFY ('SEO_CS_CACHE') FROM <ls_cache_entry>.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -129,26 +129,26 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
METHOD migrate_settings. METHOD migrate_settings.
DATA: lr_settings TYPE REF TO zcl_abapgit_settings. DATA: lo_settings TYPE REF TO zcl_abapgit_settings,
DATA: lr_persist_settings TYPE REF TO zcl_abapgit_persist_settings. lo_persist_settings TYPE REF TO zcl_abapgit_persist_settings,
DATA: lv_critical_tests_as_string TYPE string. lv_critical_tests_as_string TYPE string,
DATA: lv_critical_tests_as_boolean TYPE abap_bool. lv_critical_tests_as_boolean TYPE abap_bool,
DATA: lv_max_lines_as_string TYPE string. lv_max_lines_as_string TYPE string,
DATA: lv_flag TYPE abap_bool. lv_flag TYPE abap_bool,
DATA: lv_max_lines_as_integer TYPE i. lv_max_lines_as_integer TYPE i,
DATA: lv_s_param_value TYPE string. lv_s_param_value TYPE string,
DATA: lv_i_param_value TYPE i. lv_i_param_value TYPE i,
DATA: lv_adt_jump_enabled_as_string TYPE string. lv_adt_jump_enabled_as_string TYPE string,
DATA: lv_adt_jump_enabled_as_boolean TYPE abap_bool. lv_adt_jump_enabled_as_boolean TYPE abap_bool.
lr_persist_settings = zcl_abapgit_persist_settings=>get_instance( ). lo_persist_settings = zcl_abapgit_persist_settings=>get_instance( ).
CREATE OBJECT lr_settings. CREATE OBJECT lo_settings.
lr_settings->set_defaults( ). lo_settings->set_defaults( ).
TRY. TRY.
lr_settings->set_proxy_url( lo_settings->set_proxy_url(
zcl_abapgit_persistence_db=>get_instance( )->read( zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'PROXY_URL' ) ). iv_value = 'PROXY_URL' ) ).
@ -156,7 +156,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
ENDTRY. ENDTRY.
TRY. TRY.
lr_settings->set_proxy_port( lo_settings->set_proxy_port(
zcl_abapgit_persistence_db=>get_instance( )->read( zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'PROXY_PORT' ) ). iv_value = 'PROXY_PORT' ) ).
@ -167,7 +167,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
lv_flag = zcl_abapgit_persistence_db=>get_instance( )->read( lv_flag = zcl_abapgit_persistence_db=>get_instance( )->read(
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'PROXY_AUTH' ). iv_value = 'PROXY_AUTH' ).
lr_settings->set_proxy_authentication( lv_flag ). lo_settings->set_proxy_authentication( lv_flag ).
CATCH zcx_abapgit_not_found. CATCH zcx_abapgit_not_found.
ENDTRY. ENDTRY.
@ -176,7 +176,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'CRIT_TESTS' ). iv_value = 'CRIT_TESTS' ).
lv_critical_tests_as_boolean = lv_critical_tests_as_string. lv_critical_tests_as_boolean = lv_critical_tests_as_string.
lr_settings->set_run_critical_tests( lv_critical_tests_as_boolean ). lo_settings->set_run_critical_tests( lv_critical_tests_as_boolean ).
CATCH zcx_abapgit_not_found. CATCH zcx_abapgit_not_found.
ENDTRY. ENDTRY.
@ -185,7 +185,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'MAX_LINES' ). iv_value = 'MAX_LINES' ).
lv_max_lines_as_integer = lv_max_lines_as_string. lv_max_lines_as_integer = lv_max_lines_as_string.
lr_settings->set_max_lines( lv_max_lines_as_integer ). lo_settings->set_max_lines( lv_max_lines_as_integer ).
CATCH zcx_abapgit_not_found cx_sy_conversion_no_number. CATCH zcx_abapgit_not_found cx_sy_conversion_no_number.
ENDTRY. ENDTRY.
@ -194,7 +194,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'ADT_JUMP' ). iv_value = 'ADT_JUMP' ).
lv_adt_jump_enabled_as_boolean = lv_adt_jump_enabled_as_string. lv_adt_jump_enabled_as_boolean = lv_adt_jump_enabled_as_string.
lr_settings->set_adt_jump_enanbled( lv_adt_jump_enabled_as_boolean ). lo_settings->set_adt_jump_enanbled( lv_adt_jump_enabled_as_boolean ).
CATCH zcx_abapgit_not_found. CATCH zcx_abapgit_not_found.
ENDTRY. ENDTRY.
@ -203,7 +203,7 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'COMMENT_LEN' ). iv_value = 'COMMENT_LEN' ).
lv_i_param_value = lv_s_param_value. lv_i_param_value = lv_s_param_value.
lr_settings->set_commitmsg_comment_length( lv_i_param_value ). lo_settings->set_commitmsg_comment_length( lv_i_param_value ).
CATCH zcx_abapgit_not_found cx_sy_conversion_no_number. CATCH zcx_abapgit_not_found cx_sy_conversion_no_number.
ENDTRY. ENDTRY.
@ -212,11 +212,11 @@ CLASS ZCL_ABAPGIT_PERSIST_MIGRATE IMPLEMENTATION.
iv_type = 'SETTINGS' iv_type = 'SETTINGS'
iv_value = 'BODY_SIZE' ). iv_value = 'BODY_SIZE' ).
lv_i_param_value = lv_s_param_value. lv_i_param_value = lv_s_param_value.
lr_settings->set_commitmsg_body_size( lv_i_param_value ). lo_settings->set_commitmsg_body_size( lv_i_param_value ).
CATCH zcx_abapgit_not_found cx_sy_conversion_no_number. CATCH zcx_abapgit_not_found cx_sy_conversion_no_number.
ENDTRY. ENDTRY.
lr_persist_settings->modify( lr_settings ). lo_persist_settings->modify( lo_settings ).
TRY. TRY.
zcl_abapgit_persistence_db=>get_instance( )->delete( zcl_abapgit_persistence_db=>get_instance( )->delete(

View File

@ -38,17 +38,19 @@ CLASS ZCL_ABAPGIT_PERSIST_SETTINGS IMPLEMENTATION.
METHOD modify. METHOD modify.
DATA: settings TYPE string. DATA: lv_settings TYPE string.
settings = io_settings->get_settings_xml( ).
lv_settings = io_settings->get_settings_xml( ).
zcl_abapgit_persistence_db=>get_instance( )->modify( zcl_abapgit_persistence_db=>get_instance( )->modify(
iv_type = zcl_abapgit_persistence_db=>c_type_settings iv_type = zcl_abapgit_persistence_db=>c_type_settings
iv_value = '' iv_value = ''
iv_data = settings ). iv_data = lv_settings ).
" Settings have been modified: Update Buffered Settings " Settings have been modified: Update Buffered Settings
IF mo_settings IS BOUND. IF mo_settings IS BOUND.
mo_settings->set_xml_settings( settings ). mo_settings->set_xml_settings( lv_settings ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -64,11 +64,11 @@ CLASS ltcl_syntax_cases IMPLEMENTATION.
METHOD do_test. METHOD do_test.
DATA: lt_matches_act TYPE zcl_abapgit_syntax_highlighter=>ty_match_tt, DATA: lt_matches_act TYPE zcl_abapgit_syntax_highlighter=>ty_match_tt,
lo TYPE REF TO zcl_abapgit_syntax_highlighter. lo_syntax TYPE REF TO zcl_abapgit_syntax_highlighter.
lo = zcl_abapgit_syntax_highlighter=>create( iv_filename ). lo_syntax = zcl_abapgit_syntax_highlighter=>create( iv_filename ).
lo->parse_line( EXPORTING iv_line = iv_line lo_syntax->parse_line( EXPORTING iv_line = iv_line
IMPORTING et_matches = lt_matches_act ). IMPORTING et_matches = lt_matches_act ).
SORT lt_matches_act BY offset. SORT lt_matches_act BY offset.
@ -77,15 +77,18 @@ CLASS ltcl_syntax_cases IMPLEMENTATION.
act = lt_matches_act act = lt_matches_act
msg = | Error during parsing: { iv_line }| ). msg = | Error during parsing: { iv_line }| ).
lo->order_matches( EXPORTING iv_line = iv_line lo_syntax->order_matches( EXPORTING iv_line = iv_line
CHANGING ct_matches = lt_matches_act ). CHANGING ct_matches = lt_matches_act ).
cl_abap_unit_assert=>assert_equals( exp = mt_after_order cl_abap_unit_assert=>assert_equals( exp = mt_after_order
act = lt_matches_act act = lt_matches_act
msg = | Error during ordering: { iv_line }| ). msg = | Error during ordering: { iv_line }| ).
lo->extend_matches( EXPORTING iv_line = iv_line lo_syntax->extend_matches(
CHANGING ct_matches = lt_matches_act ). EXPORTING
iv_line = iv_line
CHANGING
ct_matches = lt_matches_act ).
cl_abap_unit_assert=>assert_equals( exp = mt_after_extend cl_abap_unit_assert=>assert_equals( exp = mt_after_extend
act = lt_matches_act act = lt_matches_act

View File

@ -66,17 +66,17 @@ CLASS ZCL_ABAPGIT_GUI_ASSET_MANAGER IMPLEMENTATION.
METHOD get_images. METHOD get_images.
FIELD-SYMBOLS <image> LIKE LINE OF rt_images. FIELD-SYMBOLS <ls_image> LIKE LINE OF rt_images.
rt_images = get_inline_images( ). rt_images = get_inline_images( ).
" Convert to xstring " Convert to xstring
LOOP AT rt_images ASSIGNING <image>. LOOP AT rt_images ASSIGNING <ls_image>.
CALL FUNCTION 'SSFC_BASE64_DECODE' CALL FUNCTION 'SSFC_BASE64_DECODE'
EXPORTING EXPORTING
b64data = <image>-base64 b64data = <ls_image>-base64
IMPORTING IMPORTING
bindata = <image>-content bindata = <ls_image>-content
EXCEPTIONS EXCEPTIONS
OTHERS = 1. OTHERS = 1.
ASSERT sy-subrc = 0. " Image data error ASSERT sy-subrc = 0. " Image data error

View File

@ -99,7 +99,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
DATA: lv_system TYPE string. DATA: lv_system TYPE string.
FIELD-SYMBOLS <state> TYPE char1. FIELD-SYMBOLS <lv_state> TYPE char1.
rv_html = '<span class="state-block">'. rv_html = '<span class="state-block">'.
@ -107,14 +107,14 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
DO 2 TIMES. DO 2 TIMES.
CASE sy-index. CASE sy-index.
WHEN 1. WHEN 1.
ASSIGN iv1 TO <state>. ASSIGN iv1 TO <lv_state>.
lv_system = 'Local:'. lv_system = 'Local:'.
WHEN 2. WHEN 2.
ASSIGN iv2 TO <state>. ASSIGN iv2 TO <lv_state>.
lv_system = 'Remote:'. lv_system = 'Remote:'.
ENDCASE. ENDCASE.
CASE <state>. CASE <lv_state>.
WHEN zif_abapgit_definitions=>gc_state-unchanged. "None or unchanged WHEN zif_abapgit_definitions=>gc_state-unchanged. "None or unchanged
IF iv1 = zif_abapgit_definitions=>gc_state-added OR iv2 = zif_abapgit_definitions=>gc_state-added. IF iv1 = zif_abapgit_definitions=>gc_state-added OR iv2 = zif_abapgit_definitions=>gc_state-added.
rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|. rv_html = rv_html && |<span class="none" title="{ lv_system } Not exists">X</span>|.
@ -153,7 +153,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
lv_display TYPE string, lv_display TYPE string,
lt_log TYPE zcl_abapgit_news=>tt_log. lt_log TYPE zcl_abapgit_news=>tt_log.
FIELD-SYMBOLS: <line> LIKE LINE OF lt_log. FIELD-SYMBOLS: <ls_line> LIKE LINE OF lt_log.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
@ -187,18 +187,18 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
" Generate news " Generate news
ro_html->add( |<div class="newslist">| ). ro_html->add( |<div class="newslist">| ).
LOOP AT lt_log ASSIGNING <line>. LOOP AT lt_log ASSIGNING <ls_line>.
IF <line>-is_header = abap_true. IF <ls_line>-is_header = abap_true.
IF <line>-pos_to_cur > 0. IF <ls_line>-pos_to_cur > 0.
lv_text = <line>-text && '<span class="version-marker update">update</span>'. lv_text = <ls_line>-text && '<span class="version-marker update">update</span>'.
ELSEIF <line>-pos_to_cur = 0. ELSEIF <ls_line>-pos_to_cur = 0.
lv_text = <line>-text && '<span class="version-marker">current</span>'. lv_text = <ls_line>-text && '<span class="version-marker">current</span>'.
ELSE. " < 0 ELSE. " < 0
lv_text = <line>-text. lv_text = <ls_line>-text.
ENDIF. ENDIF.
ro_html->add( |<h1>{ lv_text }</h1>| ). ro_html->add( |<h1>{ lv_text }</h1>| ).
ELSE. ELSE.
ro_html->add( |<li>{ <line>-text }</li>| ). ro_html->add( |<li>{ <ls_line>-text }</li>| ).
ENDIF. ENDIF.
ENDLOOP. ENDLOOP.
ro_html->add( '</div>' ). ro_html->add( '</div>' ).

View File

@ -62,7 +62,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
METHOD body. METHOD body.
DATA: tag TYPE string. DATA: lv_tag TYPE string.
FIELD-SYMBOLS: <ls_commit> LIKE LINE OF mt_commits, FIELD-SYMBOLS: <ls_commit> LIKE LINE OF mt_commits,
<ls_create> LIKE LINE OF <ls_commit>-create. <ls_create> LIKE LINE OF <ls_commit>-create.
@ -126,13 +126,13 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_BOVERVIEW IMPLEMENTATION.
" Therefore we concatenate them. " Therefore we concatenate them.
" https://github.com/nicoespeon/gitgraph.js/issues/143 " https://github.com/nicoespeon/gitgraph.js/issues/143
tag = concat_lines_of( table = <ls_commit>-tags lv_tag = concat_lines_of( table = <ls_commit>-tags
sep = ` | ` ). sep = ` | ` ).
ro_html->add( |{ escape_branch( <ls_commit>-branch ) }.commit(\{message: "{ ro_html->add( |{ escape_branch( <ls_commit>-branch ) }.commit(\{message: "{
escape_message( <ls_commit>-message ) }", author: "{ escape_message( <ls_commit>-message ) }", author: "{
<ls_commit>-author }", sha1: "{ <ls_commit>-author }", sha1: "{
<ls_commit>-sha1(7) }", tag: "{ tag }"\});| ). <ls_commit>-sha1(7) }", tag: "{ lv_tag }"\});| ).
ELSE. ELSE.
ro_html->add( |{ escape_branch( <ls_commit>-merge ) }.merge({ ro_html->add( |{ escape_branch( <ls_commit>-merge ) }.merge({
escape_branch( <ls_commit>-branch ) }, \{message: "{ escape_branch( <ls_commit>-branch ) }, \{message: "{

View File

@ -29,17 +29,19 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB IMPLEMENTATION.
METHOD explain_content. METHOD explain_content.
DATA: lv_result TYPE match_result,
lv_match TYPE submatch_result, DATA: ls_result TYPE match_result,
ls_match TYPE submatch_result,
lv_cnt TYPE i. lv_cnt TYPE i.
CASE is_data-type. CASE is_data-type.
WHEN 'REPO'. WHEN 'REPO'.
FIND FIRST OCCURRENCE OF REGEX '<url>(.*)</url>' FIND FIRST OCCURRENCE OF REGEX '<url>(.*)</url>'
IN is_data-data_str IGNORING CASE RESULTS lv_result. IN is_data-data_str IGNORING CASE RESULTS ls_result.
READ TABLE lv_result-submatches INTO lv_match INDEX 1. READ TABLE ls_result-submatches INTO ls_match INDEX 1.
IF sy-subrc IS INITIAL. IF sy-subrc IS INITIAL.
rv_text = is_data-data_str+lv_match-offset(lv_match-length). rv_text = is_data-data_str+ls_match-offset(ls_match-length).
ENDIF. ENDIF.
FIND FIRST OCCURRENCE OF REGEX '<OFFLINE/>' FIND FIRST OCCURRENCE OF REGEX '<OFFLINE/>'
@ -53,12 +55,12 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DB IMPLEMENTATION.
WHEN 'BACKGROUND'. WHEN 'BACKGROUND'.
FIND FIRST OCCURRENCE OF REGEX '<method>(.*)</method>' FIND FIRST OCCURRENCE OF REGEX '<method>(.*)</method>'
IN is_data-data_str IGNORING CASE RESULTS lv_result. IN is_data-data_str IGNORING CASE RESULTS ls_result.
READ TABLE lv_result-submatches INTO lv_match INDEX 1. READ TABLE ls_result-submatches INTO ls_match INDEX 1.
IF sy-subrc IS NOT INITIAL. IF sy-subrc IS NOT INITIAL.
RETURN. RETURN.
ENDIF. ENDIF.
rv_text = |Method: { is_data-data_str+lv_match-offset(lv_match-length) }, | rv_text = |Method: { is_data-data_str+ls_match-offset(ls_match-length) }, |
&& |Repository: { zcl_abapgit_repo_srv=>get_instance( )->get( is_data-value )->get_name( ) }|. && |Repository: { zcl_abapgit_repo_srv=>get_instance( )->get( is_data-value )->get_name( ) }|.
WHEN 'USER'. WHEN 'USER'.

View File

@ -76,7 +76,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION.
lv_list TYPE string, lv_list TYPE string,
ls_item TYPE zif_abapgit_definitions=>ty_item. ls_item TYPE zif_abapgit_definitions=>ty_item.
FIELD-SYMBOLS <object> LIKE LINE OF lt_objects. FIELD-SYMBOLS <ls_object> LIKE LINE OF lt_objects.
CALL FUNCTION 'TR_OBJECT_TABLE' CALL FUNCTION 'TR_OBJECT_TABLE'
TABLES TABLES
@ -84,8 +84,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DEBUGINFO IMPLEMENTATION.
EXCEPTIONS EXCEPTIONS
OTHERS = 1 ##FM_SUBRC_OK. OTHERS = 1 ##FM_SUBRC_OK.
LOOP AT lt_objects ASSIGNING <object> WHERE pgmid = 'R3TR'. LOOP AT lt_objects ASSIGNING <ls_object> WHERE pgmid = 'R3TR'.
ls_item-obj_type = <object>-object. ls_item-obj_type = <ls_object>-object.
IF zcl_abapgit_objects=>is_supported( is_item = ls_item iv_native_only = abap_true ) = abap_true. IF zcl_abapgit_objects=>is_supported( is_item = ls_item iv_native_only = abap_true ) = abap_true.
IF lv_list IS INITIAL. IF lv_list IS INITIAL.
lv_list = ls_item-obj_type. lv_list = ls_item-obj_type.

View File

@ -180,13 +180,13 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
lt_types TYPE string_table, lt_types TYPE string_table,
lt_users TYPE string_table. lt_users TYPE string_table.
FIELD-SYMBOLS: <diff> LIKE LINE OF mt_diff_files, FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff_files,
<i> TYPE string. <lv_i> TYPE string.
" Get unique " Get unique
LOOP AT mt_diff_files ASSIGNING <diff>. LOOP AT mt_diff_files ASSIGNING <ls_diff>.
APPEND <diff>-type TO lt_types. APPEND <ls_diff>-type TO lt_types.
APPEND <diff>-changed_by TO lt_users. APPEND <ls_diff>-changed_by TO lt_users.
ENDLOOP. ENDLOOP.
SORT: lt_types, lt_users. SORT: lt_types, lt_users.
@ -207,8 +207,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
" File types " File types
IF lines( lt_types ) > 1. IF lines( lt_types ) > 1.
lo_sub->add( iv_txt = 'TYPE' iv_typ = zif_abapgit_definitions=>gc_action_type-separator ). lo_sub->add( iv_txt = 'TYPE' iv_typ = zif_abapgit_definitions=>gc_action_type-separator ).
LOOP AT lt_types ASSIGNING <i>. LOOP AT lt_types ASSIGNING <lv_i>.
lo_sub->add( iv_txt = <i> lo_sub->add( iv_txt = <lv_i>
iv_typ = zif_abapgit_definitions=>gc_action_type-onclick iv_typ = zif_abapgit_definitions=>gc_action_type-onclick
iv_aux = 'type' iv_aux = 'type'
iv_chk = abap_true ). iv_chk = abap_true ).
@ -218,8 +218,8 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
" Changed by " Changed by
IF lines( lt_users ) > 1. IF lines( lt_users ) > 1.
lo_sub->add( iv_txt = 'CHANGED BY' iv_typ = zif_abapgit_definitions=>gc_action_type-separator ). lo_sub->add( iv_txt = 'CHANGED BY' iv_typ = zif_abapgit_definitions=>gc_action_type-separator ).
LOOP AT lt_users ASSIGNING <i>. LOOP AT lt_users ASSIGNING <lv_i>.
lo_sub->add( iv_txt = <i> lo_sub->add( iv_txt = <lv_i>
iv_typ = zif_abapgit_definitions=>gc_action_type-onclick iv_typ = zif_abapgit_definitions=>gc_action_type-onclick
iv_aux = 'changed-by' iv_aux = 'changed-by'
iv_chk = abap_true ). iv_chk = abap_true ).
@ -306,15 +306,16 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
lv_idx TYPE i, lv_idx TYPE i,
lv_x TYPE x. lv_x TYPE x.
FIELD-SYMBOLS <data> LIKE iv_d1. FIELD-SYMBOLS <lv_data> LIKE iv_d1.
IF iv_d1 IS NOT INITIAL. " One of them might be new and so empty IF iv_d1 IS NOT INITIAL. " One of them might be new and so empty
ASSIGN iv_d1 TO <data>. ASSIGN iv_d1 TO <lv_data>.
ELSE. ELSE.
ASSIGN iv_d2 TO <data>. ASSIGN iv_d2 TO <lv_data>.
ENDIF. ENDIF.
lv_len = xstrlen( <data> ). lv_len = xstrlen( <lv_data> ).
IF lv_len = 0. IF lv_len = 0.
RETURN. RETURN.
ENDIF. ENDIF.
@ -327,7 +328,7 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
" stackoverflow.com/questions/277521/how-to-identify-the-file-content-as-ascii-or-binary " stackoverflow.com/questions/277521/how-to-identify-the-file-content-as-ascii-or-binary
DO lv_len TIMES. " I'm sure there is more efficient way ... DO lv_len TIMES. " I'm sure there is more efficient way ...
lv_idx = sy-index - 1. lv_idx = sy-index - 1.
lv_x = <data>+lv_idx(1). lv_x = <lv_data>+lv_idx(1).
IF NOT ( lv_x BETWEEN 9 AND 13 OR lv_x BETWEEN 32 AND 126 ). IF NOT ( lv_x BETWEEN 9 AND 13 OR lv_x BETWEEN 32 AND 126 ).
rv_yes = abap_true. rv_yes = abap_true.
@ -563,24 +564,24 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_DIFF IMPLEMENTATION.
METHOD render_line_unified. METHOD render_line_unified.
FIELD-SYMBOLS <diff_line> LIKE LINE OF mt_delayed_lines. FIELD-SYMBOLS <ls_diff_line> LIKE LINE OF mt_delayed_lines.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
" Release delayed subsequent update lines " Release delayed subsequent update lines
IF is_diff_line-result <> zif_abapgit_definitions=>c_diff-update. IF is_diff_line-result <> zif_abapgit_definitions=>c_diff-update.
LOOP AT mt_delayed_lines ASSIGNING <diff_line>. LOOP AT mt_delayed_lines ASSIGNING <ls_diff_line>.
ro_html->add( '<tr>' ). "#EC NOTEXT ro_html->add( '<tr>' ). "#EC NOTEXT
ro_html->add( |<td class="num" line-num="{ <diff_line>-old_num }"></td>| ro_html->add( |<td class="num" line-num="{ <ls_diff_line>-old_num }"></td>|
&& |<td class="num" line-num=""></td>| && |<td class="num" line-num=""></td>|
&& |<td class="code diff_del">-{ <diff_line>-old }</td>| ). && |<td class="code diff_del">-{ <ls_diff_line>-old }</td>| ).
ro_html->add( '</tr>' ). "#EC NOTEXT ro_html->add( '</tr>' ). "#EC NOTEXT
ENDLOOP. ENDLOOP.
LOOP AT mt_delayed_lines ASSIGNING <diff_line>. LOOP AT mt_delayed_lines ASSIGNING <ls_diff_line>.
ro_html->add( '<tr>' ). "#EC NOTEXT ro_html->add( '<tr>' ). "#EC NOTEXT
ro_html->add( |<td class="num" line-num=""></td>| ro_html->add( |<td class="num" line-num=""></td>|
&& |<td class="num" line-num="{ <diff_line>-new_num }"></td>| && |<td class="num" line-num="{ <ls_diff_line>-new_num }"></td>|
&& |<td class="code diff_ins">+{ <diff_line>-new }</td>| ). && |<td class="code diff_ins">+{ <ls_diff_line>-new }</td>| ).
ro_html->add( '</tr>' ). "#EC NOTEXT ro_html->add( '</tr>' ). "#EC NOTEXT
ENDLOOP. ENDLOOP.
CLEAR mt_delayed_lines. CLEAR mt_delayed_lines.

View File

@ -125,7 +125,7 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
DATA ls_field LIKE LINE OF ct. DATA ls_field LIKE LINE OF ct.
FIELD-SYMBOLS <src> TYPE any. FIELD-SYMBOLS <lg_src> TYPE any.
ls_field-name = name. ls_field-name = name.
@ -133,9 +133,9 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
WHEN cl_abap_typedescr=>kind_elem. WHEN cl_abap_typedescr=>kind_elem.
ls_field-value = iv. ls_field-value = iv.
WHEN cl_abap_typedescr=>kind_struct. WHEN cl_abap_typedescr=>kind_struct.
ASSIGN COMPONENT name OF STRUCTURE iv TO <src>. ASSIGN COMPONENT name OF STRUCTURE iv TO <lg_src>.
ASSERT <src> IS ASSIGNED. ASSERT <lg_src> IS ASSIGNED.
ls_field-value = <src>. ls_field-value = <lg_src>.
WHEN OTHERS. WHEN OTHERS.
ASSERT 0 = 1. ASSERT 0 = 1.
ENDCASE. ENDCASE.
@ -232,13 +232,13 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
METHOD field_keys_to_upper. METHOD field_keys_to_upper.
FIELD-SYMBOLS <field> LIKE LINE OF ct_fields. FIELD-SYMBOLS <ls_field> LIKE LINE OF ct_fields.
LOOP AT ct_fields ASSIGNING <field>. LOOP AT ct_fields ASSIGNING <ls_field>.
<field>-name = to_upper( <field>-name ). <ls_field>-name = to_upper( <ls_field>-name ).
ENDLOOP. ENDLOOP.
ENDMETHOD. "field_keys_to_upper ENDMETHOD.
METHOD file_encode. METHOD file_encode.
@ -282,7 +282,7 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
METHOD get_field. METHOD get_field.
FIELD-SYMBOLS: <ls_field> LIKE LINE OF it, FIELD-SYMBOLS: <ls_field> LIKE LINE OF it,
<dest> TYPE any. <lg_dest> TYPE any.
READ TABLE it ASSIGNING <ls_field> WITH KEY name = name. READ TABLE it ASSIGNING <ls_field> WITH KEY name = name.
@ -294,9 +294,9 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
WHEN cl_abap_typedescr=>kind_elem. WHEN cl_abap_typedescr=>kind_elem.
cv = <ls_field>-value. cv = <ls_field>-value.
WHEN cl_abap_typedescr=>kind_struct. WHEN cl_abap_typedescr=>kind_struct.
ASSIGN COMPONENT name OF STRUCTURE cv TO <dest>. ASSIGN COMPONENT name OF STRUCTURE cv TO <lg_dest>.
ASSERT <dest> IS ASSIGNED. ASSERT <lg_dest> IS ASSIGNED.
<dest> = <ls_field>-value. <lg_dest> = <ls_field>-value.
WHEN OTHERS. WHEN OTHERS.
ASSERT 0 = 1. ASSERT 0 = 1.
ENDCASE. ENDCASE.
@ -350,7 +350,7 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
DATA: lv_string TYPE string, DATA: lv_string TYPE string,
lt_fields TYPE tihttpnvp. lt_fields TYPE tihttpnvp.
FIELD-SYMBOLS <body> TYPE string. FIELD-SYMBOLS <lv_body> TYPE string.
CLEAR es_fields. CLEAR es_fields.
@ -366,35 +366,36 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
get_field( EXPORTING name = 'COMMENT' it = lt_fields CHANGING cv = es_fields ). get_field( EXPORTING name = 'COMMENT' it = lt_fields CHANGING cv = es_fields ).
get_field( EXPORTING name = 'BODY' it = lt_fields CHANGING cv = es_fields ). get_field( EXPORTING name = 'BODY' it = lt_fields CHANGING cv = es_fields ).
ASSIGN COMPONENT 'BODY' OF STRUCTURE es_fields TO <body>. ASSIGN COMPONENT 'BODY' OF STRUCTURE es_fields TO <lv_body>.
ASSERT <body> IS ASSIGNED. ASSERT <lv_body> IS ASSIGNED.
REPLACE ALL OCCURRENCES OF lc_replace IN <body> WITH zif_abapgit_definitions=>gc_newline. REPLACE ALL OCCURRENCES OF lc_replace IN <lv_body> WITH zif_abapgit_definitions=>gc_newline.
ENDMETHOD. "parse_commit_request ENDMETHOD. "parse_commit_request
METHOD parse_fields. METHOD parse_fields.
DATA: substrings TYPE stringtab, DATA: lt_substrings TYPE stringtab,
field LIKE LINE OF rt_fields. ls_field LIKE LINE OF rt_fields.
FIELD-SYMBOLS: <substring> LIKE LINE OF substrings. FIELD-SYMBOLS: <lv_substring> LIKE LINE OF lt_substrings.
SPLIT iv_string AT '&' INTO TABLE substrings.
LOOP AT substrings ASSIGNING <substring>. SPLIT iv_string AT '&' INTO TABLE lt_substrings.
CLEAR: field. LOOP AT lt_substrings ASSIGNING <lv_substring>.
field-name = substring_before( val = <substring> CLEAR: ls_field.
ls_field-name = substring_before( val = <lv_substring>
sub = '=' ). sub = '=' ).
field-name = unescape( field-name ). ls_field-name = unescape( ls_field-name ).
field-value = substring_after( val = <substring> ls_field-value = substring_after( val = <lv_substring>
sub = '=' ). sub = '=' ).
field-value = unescape( field-value ). ls_field-value = unescape( ls_field-value ).
INSERT field INTO TABLE rt_fields. INSERT ls_field INTO TABLE rt_fields.
ENDLOOP. ENDLOOP.

View File

@ -163,29 +163,30 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
METHOD parse_fields_german_umlauts. METHOD parse_fields_german_umlauts.
DATA: ae TYPE string, DATA: lv_ae TYPE string,
oe TYPE string, lv_oe TYPE string,
ue TYPE string, lv_ue TYPE string,
ae_oe_ue TYPE string. lv_ae_oe_ue TYPE string.
ae = ms_german_umlaut_as_char-lower_case_ae.
oe = ms_german_umlaut_as_char-lower_case_oe.
ue = ms_german_umlaut_as_char-lower_case_ue.
ae_oe_ue = ae && oe && ue. lv_ae = ms_german_umlaut_as_char-lower_case_ae.
lv_oe = ms_german_umlaut_as_char-lower_case_oe.
lv_ue = ms_german_umlaut_as_char-lower_case_ue.
_given_string_is( |committer_name=Christian G{ ue }nter&| lv_ae_oe_ue = lv_ae && lv_oe && lv_ue.
_given_string_is( |committer_name=Christian G{ lv_ue }nter&|
&& |committer_email=guenne@googlemail.com&| && |committer_email=guenne@googlemail.com&|
&& |comment={ ae_oe_ue }&| && |comment={ lv_ae_oe_ue }&|
&& |body=Message body<<new>><<new>>with line break<<new>>and umlauts. { ae_oe_ue }&| && |body=Message body<<new>><<new>>with line break<<new>>and umlauts. { lv_ae_oe_ue }&|
&& |author_name=Gerd Schr{ oe }der&| && |author_name=Gerd Schr{ lv_oe }der&|
&& |author_email=gerd@schroeder.com| ). && |author_email=gerd@schroeder.com| ).
_when_fields_are_parsed( ). _when_fields_are_parsed( ).
_then_fields_should_be( index = 1 _then_fields_should_be( index = 1
name = `COMMITTER_NAME` name = `COMMITTER_NAME`
value = |Christian G{ ue }nter| ). value = |Christian G{ lv_ue }nter| ).
_then_fields_should_be( index = 2 _then_fields_should_be( index = 2
name = `COMMITTER_EMAIL` name = `COMMITTER_EMAIL`
@ -193,15 +194,15 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
_then_fields_should_be( index = 3 _then_fields_should_be( index = 3
name = `COMMENT` name = `COMMENT`
value = ae_oe_ue ). value = lv_ae_oe_ue ).
_then_fields_should_be( index = 4 _then_fields_should_be( index = 4
name = `BODY` name = `BODY`
value = |Message body<<new>><<new>>with line break<<new>>and umlauts. { ae_oe_ue }| ). value = |Message body<<new>><<new>>with line break<<new>>and umlauts. { lv_ae_oe_ue }| ).
_then_fields_should_be( index = 5 _then_fields_should_be( index = 5
name = `AUTHOR_NAME` name = `AUTHOR_NAME`
value = |Gerd Schr{ oe }der| ). value = |Gerd Schr{ lv_oe }der| ).
_then_fields_should_be( index = 6 _then_fields_should_be( index = 6
name = `AUTHOR_EMAIL` name = `AUTHOR_EMAIL`
@ -223,19 +224,19 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
METHOD _then_fields_should_be. METHOD _then_fields_should_be.
FIELD-SYMBOLS: <parsed_field> LIKE LINE OF mt_parsed_fields. FIELD-SYMBOLS: <ls_parsed_field> LIKE LINE OF mt_parsed_fields.
READ TABLE mt_parsed_fields ASSIGNING <parsed_field> READ TABLE mt_parsed_fields ASSIGNING <ls_parsed_field>
INDEX index. INDEX index.
cl_abap_unit_assert=>assert_subrc( exp = 0 cl_abap_unit_assert=>assert_subrc( exp = 0
msg = |No parsed field found at index { index }| ). msg = |No parsed field found at index { index }| ).
cl_abap_unit_assert=>assert_equals( act = <parsed_field>-name cl_abap_unit_assert=>assert_equals( act = <ls_parsed_field>-name
exp = name exp = name
msg = |Name at index { index } should be { name }| ). msg = |Name at index { index } should be { name }| ).
cl_abap_unit_assert=>assert_equals( act = <parsed_field>-value cl_abap_unit_assert=>assert_equals( act = <ls_parsed_field>-value
exp = value exp = value
msg = |Value at index { index } should be { value }| ). msg = |Value at index { index } should be { value }| ).
@ -243,10 +244,10 @@ CLASS ltcl_html_action_utils IMPLEMENTATION.
METHOD _hex_to_char. METHOD _hex_to_char.
DATA lr_conv TYPE REF TO cl_abap_conv_in_ce. DATA lo_conv TYPE REF TO cl_abap_conv_in_ce.
lr_conv = cl_abap_conv_in_ce=>create( ). lo_conv = cl_abap_conv_in_ce=>create( ).
lr_conv->convert( EXPORTING input = i_x IMPORTING data = r_s ). lo_conv->convert( EXPORTING input = i_x IMPORTING data = r_s ).
ENDMETHOD. ENDMETHOD.

View File

@ -378,12 +378,12 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
DATA: lr_struct TYPE REF TO data, DATA: lr_struct TYPE REF TO data,
lt_components TYPE cl_abap_structdescr=>component_table, lt_components TYPE cl_abap_structdescr=>component_table,
lo_struct_descr TYPE REF TO cl_abap_structdescr, lo_struct_descr TYPE REF TO cl_abap_structdescr,
struct_descr TYPE REF TO cl_abap_structdescr. struct_descr TYPE REF TO cl_abap_structdescr.
FIELD-SYMBOLS: <table> TYPE STANDARD TABLE, FIELD-SYMBOLS: <lt_table> TYPE STANDARD TABLE,
<component> TYPE abap_componentdescr, <component> TYPE abap_componentdescr,
<line> TYPE data, <line> TYPE data,
<data> TYPE any. <lg_data> TYPE any.
mo_table_descr ?= cl_abap_tabledescr=>describe_by_data( it_list ). mo_table_descr ?= cl_abap_tabledescr=>describe_by_data( it_list ).
lo_struct_descr ?= mo_table_descr->get_table_line_type( ). lo_struct_descr ?= mo_table_descr->get_table_line_type( ).
@ -399,18 +399,18 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
mo_table_descr = cl_abap_tabledescr=>create( struct_descr ). mo_table_descr = cl_abap_tabledescr=>create( struct_descr ).
CREATE DATA mr_table TYPE HANDLE mo_table_descr. CREATE DATA mr_table TYPE HANDLE mo_table_descr.
ASSIGN mr_table->* TO <table>. ASSIGN mr_table->* TO <lt_table>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
CREATE DATA lr_struct TYPE HANDLE struct_descr. CREATE DATA lr_struct TYPE HANDLE struct_descr.
ASSIGN lr_struct->* TO <line>. ASSIGN lr_struct->* TO <line>.
ASSERT sy-subrc = 0. ASSERT sy-subrc = 0.
LOOP AT it_list ASSIGNING <data>. LOOP AT it_list ASSIGNING <lg_data>.
CLEAR: <line>. CLEAR: <line>.
MOVE-CORRESPONDING <data> TO <line>. MOVE-CORRESPONDING <lg_data> TO <line>.
INSERT <line> INTO TABLE <table>. INSERT <line> INTO TABLE <lt_table>.
ENDLOOP. ENDLOOP.
@ -971,17 +971,18 @@ CLASS ZCL_ABAPGIT_POPUPS IMPLEMENTATION.
METHOD popup_to_select_transports. METHOD popup_to_select_transports.
DATA: lrs_trfunction TYPE trsel_trs_function,
lv_types TYPE string, DATA: ls_trfunction TYPE trsel_trs_function,
ls_ranges TYPE trsel_ts_ranges. lv_types TYPE string,
ls_ranges TYPE trsel_ts_ranges.
" Fill all request types " Fill all request types
lv_types = 'KWTCOEMPDRSXQFG'. lv_types = 'KWTCOEMPDRSXQFG'.
lrs_trfunction-sign = 'I'. ls_trfunction-sign = 'I'.
lrs_trfunction-option = 'EQ'. ls_trfunction-option = 'EQ'.
WHILE lv_types <> space. WHILE lv_types <> space.
lrs_trfunction-low = lv_types(1). ls_trfunction-low = lv_types(1).
APPEND lrs_trfunction TO ls_ranges-request_funcs. APPEND ls_trfunction TO ls_ranges-request_funcs.
SHIFT lv_types. SHIFT lv_types.
ENDWHILE. ENDWHILE.

View File

@ -206,7 +206,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
METHOD run. METHOD run.
CONSTANTS: c_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'. CONSTANTS: lc_enq_type TYPE c LENGTH 12 VALUE 'BACKGROUND'.
DATA: lo_per TYPE REF TO zcl_abapgit_persist_background, DATA: lo_per TYPE REF TO zcl_abapgit_persist_background,
lo_repo TYPE REF TO zcl_abapgit_repo_online, lo_repo TYPE REF TO zcl_abapgit_repo_online,
@ -219,7 +219,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CALL FUNCTION 'ENQUEUE_EZABAPGIT' CALL FUNCTION 'ENQUEUE_EZABAPGIT'
EXPORTING EXPORTING
mode_zabapgit = 'E' mode_zabapgit = 'E'
type = c_enq_type type = lc_enq_type
_scope = '3' _scope = '3'
EXCEPTIONS EXCEPTIONS
foreign_lock = 1 foreign_lock = 1
@ -262,7 +262,7 @@ CLASS ZCL_ABAPGIT_BACKGROUND IMPLEMENTATION.
CALL FUNCTION 'DEQUEUE_EZABAPGIT' CALL FUNCTION 'DEQUEUE_EZABAPGIT'
EXPORTING EXPORTING
type = c_enq_type. type = lc_enq_type.
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -2,39 +2,39 @@ CLASS ltcl_file_status DEFINITION DEFERRED.
CLASS zcl_abapgit_file_status DEFINITION LOCAL FRIENDS ltcl_file_status. CLASS zcl_abapgit_file_status DEFINITION LOCAL FRIENDS ltcl_file_status.
DEFINE _append_state. DEFINE _append_state.
APPEND INITIAL LINE TO lt_state ASSIGNING <state>. APPEND INITIAL LINE TO lt_state ASSIGNING <ls_state>.
<state>-path = '/'. <ls_state>-path = '/'.
<state>-filename = &1. <ls_state>-filename = &1.
<state>-sha1 = &2. <ls_state>-sha1 = &2.
END-OF-DEFINITION. END-OF-DEFINITION.
DEFINE _append_local. DEFINE _append_local.
APPEND INITIAL LINE TO lt_local ASSIGNING <local>. APPEND INITIAL LINE TO lt_local ASSIGNING <ls_local>.
<local>-item-obj_type = &1. <ls_local>-item-obj_type = &1.
<local>-item-obj_name = &2. <ls_local>-item-obj_name = &2.
<local>-item-devclass = '$Z$'. <ls_local>-item-devclass = '$Z$'.
<local>-file-path = '/'. <ls_local>-file-path = '/'.
<local>-file-filename = &3. <ls_local>-file-filename = &3.
<local>-file-sha1 = &4. <ls_local>-file-sha1 = &4.
END-OF-DEFINITION. END-OF-DEFINITION.
DEFINE _append_remote. DEFINE _append_remote.
APPEND INITIAL LINE TO lt_remote ASSIGNING <remote>. APPEND INITIAL LINE TO lt_remote ASSIGNING <ls_remote>.
<remote>-path = '/'. <ls_remote>-path = '/'.
<remote>-filename = &1. <ls_remote>-filename = &1.
<remote>-sha1 = &2. <ls_remote>-sha1 = &2.
END-OF-DEFINITION. END-OF-DEFINITION.
DEFINE _append_result. DEFINE _append_result.
APPEND INITIAL LINE TO lt_results ASSIGNING <result>. APPEND INITIAL LINE TO lt_results ASSIGNING <ls_result>.
<result>-obj_type = &1. <ls_result>-obj_type = &1.
<result>-obj_name = &2. <ls_result>-obj_name = &2.
<result>-match = &3. <ls_result>-match = &3.
<result>-lstate = &4. <ls_result>-lstate = &4.
<result>-rstate = &5. <ls_result>-rstate = &5.
<result>-package = &6. <ls_result>-package = &6.
<result>-path = &7. <ls_result>-path = &7.
<result>-filename = &8. <ls_result>-filename = &8.
END-OF-DEFINITION. END-OF-DEFINITION.
CLASS ltcl_file_status DEFINITION FOR TESTING RISK LEVEL HARMLESS CLASS ltcl_file_status DEFINITION FOR TESTING RISK LEVEL HARMLESS
@ -58,10 +58,10 @@ CLASS ltcl_file_status IMPLEMENTATION.
lt_results_exp TYPE zif_abapgit_definitions=>ty_results_tt, lt_results_exp TYPE zif_abapgit_definitions=>ty_results_tt,
lo_dot TYPE REF TO zcl_abapgit_dot_abapgit. lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
FIELD-SYMBOLS: <local> LIKE LINE OF lt_local, FIELD-SYMBOLS: <ls_local> LIKE LINE OF lt_local,
<remote> LIKE LINE OF lt_remote, <ls_remote> LIKE LINE OF lt_remote,
<result> LIKE LINE OF lt_results, <ls_result> LIKE LINE OF lt_results,
<state> LIKE LINE OF lt_state. <ls_state> LIKE LINE OF lt_state.
"STATE FILE SHA1 "STATE FILE SHA1
_append_state '$$zclass1.clas.xml' 'C1_F1'. _append_state '$$zclass1.clas.xml' 'C1_F1'.
@ -164,7 +164,7 @@ CLASS ltcl_file_status2 IMPLEMENTATION.
DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt, DATA: lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
lo_log TYPE REF TO zcl_abapgit_log. lo_log TYPE REF TO zcl_abapgit_log.
FIELD-SYMBOLS: <result> LIKE LINE OF lt_results. FIELD-SYMBOLS: <ls_result> LIKE LINE OF lt_results.
*** 0 Positive *** 0 Positive

View File

@ -87,26 +87,27 @@ CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION.
lv_index TYPE i, lv_index TYPE i,
lo_repo TYPE REF TO zcl_abapgit_repo_online. lo_repo TYPE REF TO zcl_abapgit_repo_online.
FIELD-SYMBOLS: <repo> LIKE LINE OF lt_repos. FIELD-SYMBOLS: <lo_repo> LIKE LINE OF lt_repos.
lt_repos = zcl_abapgit_repo_srv=>get_instance( )->list( ). lt_repos = zcl_abapgit_repo_srv=>get_instance( )->list( ).
LOOP AT lt_repos ASSIGNING <repo>. LOOP AT lt_repos ASSIGNING <lo_repo>.
lv_index = sy-tabix. lv_index = sy-tabix.
IF <repo>->is_offline( ) = abap_true. " Skip local repos IF <lo_repo>->is_offline( ) = abap_true. " Skip local repos
DELETE lt_repos INDEX lv_index. DELETE lt_repos INDEX lv_index.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
" Ignore empty repos or repos with file checksums " Ignore empty repos or repos with file checksums
IF lines( <repo>->get_local_checksums( ) ) = 0 IF lines( <lo_repo>->get_local_checksums( ) ) = 0
OR lines( <repo>->get_local_checksums_per_file( ) ) > 0. OR lines( <lo_repo>->get_local_checksums_per_file( ) ) > 0.
DELETE lt_repos INDEX lv_index. DELETE lt_repos INDEX lv_index.
CONTINUE. CONTINUE.
ENDIF. ENDIF.
lv_repo_list = lv_repo_list && `, ` && <repo>->get_name( ). lv_repo_list = lv_repo_list && `, ` && <lo_repo>->get_name( ).
ENDLOOP. ENDLOOP.
@ -138,8 +139,8 @@ CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
LOOP AT lt_repos ASSIGNING <repo>. LOOP AT lt_repos ASSIGNING <lo_repo>.
lo_repo ?= <repo>. lo_repo ?= <lo_repo>.
lo_repo->rebuild_local_checksums( ). lo_repo->rebuild_local_checksums( ).
ENDLOOP. ENDLOOP.

View File

@ -138,7 +138,7 @@ CLASS ZCL_ABAPGIT_NEWS IMPLEMENTATION.
lv_url TYPE string, lv_url TYPE string,
lo_repo_online TYPE REF TO zcl_abapgit_repo_online. lo_repo_online TYPE REF TO zcl_abapgit_repo_online.
FIELD-SYMBOLS <file> LIKE LINE OF lt_remote. FIELD-SYMBOLS <ls_file> LIKE LINE OF lt_remote.
IF io_repo->is_offline( ) = abap_true. IF io_repo->is_offline( ) = abap_true.
@ -162,13 +162,13 @@ CLASS ZCL_ABAPGIT_NEWS IMPLEMENTATION.
RETURN. RETURN.
ENDTRY. ENDTRY.
READ TABLE lt_remote ASSIGNING <file> READ TABLE lt_remote ASSIGNING <ls_file>
WITH KEY path = lc_log_path filename = lc_log_filename. WITH KEY path = lc_log_path filename = lc_log_filename.
IF sy-subrc = 0. IF sy-subrc = 0.
CREATE OBJECT ro_instance CREATE OBJECT ro_instance
EXPORTING EXPORTING
iv_rawdata = <file>-data iv_rawdata = <ls_file>-data
iv_current_version = zif_abapgit_definitions=>gc_abap_version " TODO refactor iv_current_version = zif_abapgit_definitions=>gc_abap_version " TODO refactor
iv_lastseen_version = normalize_version( lv_last_seen ). iv_lastseen_version = normalize_version( lv_last_seen ).
ENDIF. ENDIF.
@ -235,10 +235,11 @@ CLASS ZCL_ABAPGIT_NEWS IMPLEMENTATION.
lv_version TYPE string, lv_version TYPE string,
ls_log LIKE LINE OF rt_log. ls_log LIKE LINE OF rt_log.
FIELD-SYMBOLS: <line> LIKE LINE OF it_lines. FIELD-SYMBOLS: <lv_line> LIKE LINE OF it_lines.
LOOP AT it_lines ASSIGNING <line>.
ls_log = parse_line( iv_line = <line> iv_current_version = iv_current_version ). LOOP AT it_lines ASSIGNING <lv_line>.
ls_log = parse_line( iv_line = <lv_line> iv_current_version = iv_current_version ).
" Skip until first version head and Skip empty lines " Skip until first version head and Skip empty lines
CHECK ls_log IS NOT INITIAL AND CHECK ls_log IS NOT INITIAL AND

View File

@ -184,7 +184,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
DATA: ls_remote_file TYPE zif_abapgit_definitions=>ty_file, DATA: ls_remote_file TYPE zif_abapgit_definitions=>ty_file,
lo_remote_version TYPE REF TO zcl_abapgit_xml_input, lo_remote_version TYPE REF TO zcl_abapgit_xml_input,
lv_count TYPE i, lv_count TYPE i,
lo_comparison_result TYPE REF TO zif_abapgit_comparison_result. li_comparison_result TYPE REF TO zif_abapgit_comparison_result.
FIND ALL OCCURRENCES OF '.' IN is_result-filename MATCH COUNT lv_count. FIND ALL OCCURRENCES OF '.' IN is_result-filename MATCH COUNT lv_count.
@ -201,10 +201,10 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
CREATE OBJECT lo_remote_version CREATE OBJECT lo_remote_version
EXPORTING EXPORTING
iv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( ls_remote_file-data ). iv_xml = zcl_abapgit_convert=>xstring_to_string_utf8( ls_remote_file-data ).
lo_comparison_result = io_object->compare_to_remote_version( lo_remote_version ). li_comparison_result = io_object->compare_to_remote_version( lo_remote_version ).
lo_comparison_result->show_confirmation_dialog( ). li_comparison_result->show_confirmation_dialog( ).
IF lo_comparison_result->is_result_complete_halt( ) = abap_true. IF li_comparison_result->is_result_complete_halt( ) = abap_true.
zcx_abapgit_exception=>raise( 'Deserialization aborted by user' ). zcx_abapgit_exception=>raise( 'Deserialization aborted by user' ).
ENDIF. ENDIF.
ENDIF. ENDIF.

View File

@ -133,7 +133,7 @@ CLASS ZCL_ABAPGIT_SAP_PACKAGE IMPLEMENTATION.
object_not_changeable = 2 object_not_changeable = 2
object_invalid = 3 object_invalid = 3
intern_err = 4 intern_err = 4
others = 5 ). OTHERS = 5 ).
zcx_abapgit_exception=>raise( lv_err ). zcx_abapgit_exception=>raise( lv_err ).

View File

@ -137,14 +137,15 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
METHOD get_settings_xml. METHOD get_settings_xml.
DATA: lr_output TYPE REF TO zcl_abapgit_xml_output. DATA: lo_output TYPE REF TO zcl_abapgit_xml_output.
CREATE OBJECT lr_output.
lr_output->add( iv_name = zcl_abapgit_persistence_db=>c_type_settings CREATE OBJECT lo_output.
lo_output->add( iv_name = zcl_abapgit_persistence_db=>c_type_settings
ig_data = ms_settings ). ig_data = ms_settings ).
ev_settings_xml = lr_output->render( ). ev_settings_xml = lo_output->render( ).
ENDMETHOD. ENDMETHOD.
@ -211,14 +212,18 @@ CLASS ZCL_ABAPGIT_SETTINGS IMPLEMENTATION.
METHOD set_xml_settings. METHOD set_xml_settings.
DATA: lr_input TYPE REF TO zcl_abapgit_xml_input. DATA: lo_input TYPE REF TO zcl_abapgit_xml_input.
CREATE OBJECT lr_input EXPORTING iv_xml = iv_settings_xml.
CREATE OBJECT lo_input EXPORTING iv_xml = iv_settings_xml.
CLEAR ms_settings. CLEAR ms_settings.
lr_input->read( EXPORTING iv_name = zcl_abapgit_persistence_db=>c_type_settings lo_input->read(
CHANGING cg_data = ms_settings ). EXPORTING
iv_name = zcl_abapgit_persistence_db=>c_type_settings
CHANGING
cg_data = ms_settings ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -24,16 +24,19 @@ CLASS ZCL_ABAPGIT_SKIP_OBJECTS IMPLEMENTATION.
METHOD has_sadl_superclass. METHOD has_sadl_superclass.
DATA: lo_oo_functions TYPE REF TO zif_abapgit_oo_object_fnc,
DATA: li_oo_functions TYPE REF TO zif_abapgit_oo_object_fnc,
lv_class_name TYPE seoclsname, lv_class_name TYPE seoclsname,
lv_superclass TYPE seoclsname. lv_superclass TYPE seoclsname.
lo_oo_functions = zcl_abapgit_oo_factory=>make( is_class-object ).
li_oo_functions = zcl_abapgit_oo_factory=>make( is_class-object ).
lv_class_name = is_class-obj_name. lv_class_name = is_class-obj_name.
lv_superclass = lo_oo_functions->read_superclass( lv_class_name ). lv_superclass = li_oo_functions->read_superclass( lv_class_name ).
IF lv_superclass = 'CL_SADL_GTK_EXPOSURE_MPC'. IF lv_superclass = 'CL_SADL_GTK_EXPOSURE_MPC'.
rv_return = abap_true. rv_return = abap_true.
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -335,13 +335,14 @@ CLASS ltcl_transport_objects IMPLEMENTATION.
ENDMETHOD. ENDMETHOD.
METHOD then_it_should_raise_exception. METHOD then_it_should_raise_exception.
DATA: lo_exception TYPE REF TO zcx_abapgit_exception. DATA: lx_exception TYPE REF TO zcx_abapgit_exception.
TRY. TRY.
when_staging( ). when_staging( ).
cl_abap_unit_assert=>fail( 'Should have raised exception'). cl_abap_unit_assert=>fail( 'Should have raised exception').
CATCH zcx_abapgit_exception INTO lo_exception. CATCH zcx_abapgit_exception INTO lx_exception.
cl_abap_unit_assert=>assert_equals( cl_abap_unit_assert=>assert_equals(
act = lo_exception->text act = lx_exception->text
exp = with_text ). exp = with_text ).
ENDTRY. ENDTRY.
ENDMETHOD. ENDMETHOD.

View File

@ -180,21 +180,21 @@ CLASS ZCL_ABAPGIT_ZLIB IMPLEMENTATION.
APPEND 16 TO lt_order. APPEND 16 TO lt_order.
APPEND 17 TO lt_order. APPEND 17 TO lt_order.
APPEND 18 TO lt_order. APPEND 18 TO lt_order.
APPEND 0 TO lt_order. APPEND 0 TO lt_order.
APPEND 8 TO lt_order. APPEND 8 TO lt_order.
APPEND 7 TO lt_order. APPEND 7 TO lt_order.
APPEND 9 TO lt_order. APPEND 9 TO lt_order.
APPEND 6 TO lt_order. APPEND 6 TO lt_order.
APPEND 10 TO lt_order. APPEND 10 TO lt_order.
APPEND 5 TO lt_order. APPEND 5 TO lt_order.
APPEND 11 TO lt_order. APPEND 11 TO lt_order.
APPEND 4 TO lt_order. APPEND 4 TO lt_order.
APPEND 12 TO lt_order. APPEND 12 TO lt_order.
APPEND 3 TO lt_order. APPEND 3 TO lt_order.
APPEND 13 TO lt_order. APPEND 13 TO lt_order.
APPEND 2 TO lt_order. APPEND 2 TO lt_order.
APPEND 14 TO lt_order. APPEND 14 TO lt_order.
APPEND 1 TO lt_order. APPEND 1 TO lt_order.
APPEND 15 TO lt_order. APPEND 15 TO lt_order.
lv_nlen = go_stream->take_int( 5 ) + 257. lv_nlen = go_stream->take_int( 5 ) + 257.