mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
parent
85d364d460
commit
803148fa0f
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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>' ).
|
||||||
|
|
|
@ -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: "{
|
||||||
|
|
|
@ -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'.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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 ).
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user