mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
SPRX: Proxy Object
Proxy objects are quite complex. With this commit we add basic SPRX support. Working scenarios are: - Service Consumer - Service Provider
This commit is contained in:
parent
96edce7e96
commit
6cc064d794
|
@ -172,14 +172,38 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
DATA: ls_clskey TYPE seoclskey.
|
||||
DATA: ls_clskey TYPE seoclskey,
|
||||
ls_vseointerf TYPE vseointerf.
|
||||
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
ls_vseointerf = mi_object_oriented_object_fct->get_interface_properties( ls_clskey ).
|
||||
|
||||
IF ls_vseointerf-clsproxy = abap_true.
|
||||
" Proxy interfaces are managed via SPRX
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
mi_object_oriented_object_fct->delete( ls_clskey ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
|
||||
DATA: ls_vseointerf TYPE vseointerf,
|
||||
ls_clskey TYPE seoclskey.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'VSEOINTERF'
|
||||
CHANGING cg_data = ls_vseointerf ).
|
||||
|
||||
IF ls_vseointerf-clsproxy = abap_true.
|
||||
" Proxy interfaces are managed via SPRX
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
deserialize_abap( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
|
||||
|
@ -229,6 +253,25 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_active.
|
||||
rv_active = is_active( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
DATA: lv_object TYPE eqegraarg.
|
||||
|
||||
lv_object = |{ ms_item-obj_name }|.
|
||||
OVERLAY lv_object WITH '==============================P'.
|
||||
lv_object = lv_object && '*'.
|
||||
|
||||
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESEOCLASS'
|
||||
iv_argument = lv_object ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
|
@ -265,22 +308,4 @@ CLASS zcl_abapgit_object_intf IMPLEMENTATION.
|
|||
|
||||
serialize_xml( io_xml ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
DATA: lv_object TYPE eqegraarg.
|
||||
|
||||
lv_object = |{ ms_item-obj_name }|.
|
||||
OVERLAY lv_object WITH '==============================P'.
|
||||
lv_object = lv_object && '*'.
|
||||
|
||||
rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'ESEOCLASS'
|
||||
iv_argument = lv_object ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_active.
|
||||
rv_active = is_active( ).
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
485
src/objects/zcl_abapgit_object_sprx.clas.abap
Normal file
485
src/objects/zcl_abapgit_object_sprx.clas.abap
Normal file
|
@ -0,0 +1,485 @@
|
|||
CLASS zcl_abapgit_object_sprx DEFINITION
|
||||
INHERITING FROM zcl_abapgit_objects_super
|
||||
PUBLIC
|
||||
FINAL
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
INTERFACES:
|
||||
zif_abapgit_object.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
is_item TYPE zif_abapgit_definitions=>ty_item
|
||||
iv_language TYPE spras
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CONSTANTS:
|
||||
BEGIN OF c_proxy,
|
||||
data TYPE string VALUE 'PROXY_DATA' ##NO_TEXT,
|
||||
header TYPE string VALUE 'PROXY_HEADER' ##NO_TEXT,
|
||||
END OF c_proxy.
|
||||
|
||||
METHODS:
|
||||
get_object_and_name
|
||||
EXPORTING
|
||||
ev_object TYPE sproxhdr-object
|
||||
ev_obj_name TYPE sproxhdr-obj_name,
|
||||
|
||||
activate_classes
|
||||
IMPORTING
|
||||
it_sproxdat_new TYPE sprx_dat_t
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
generate_service_definition
|
||||
IMPORTING
|
||||
it_sproxdat_new TYPE sprx_dat_t
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
delta_handling
|
||||
IMPORTING
|
||||
io_xml TYPE REF TO zcl_abapgit_xml_input
|
||||
EXPORTING
|
||||
et_sproxhdr_new TYPE sprx_hdr_t
|
||||
et_sproxdat_new TYPE sprx_dat_t
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
check_sprx_tadir
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
dequeue_proxy
|
||||
RAISING
|
||||
zcx_abapgit_exception,
|
||||
|
||||
save
|
||||
IMPORTING
|
||||
it_sproxhdr_new TYPE sprx_hdr_t
|
||||
it_sproxdat_new TYPE sprx_dat_t.
|
||||
|
||||
DATA:
|
||||
mv_object TYPE sproxhdr-object,
|
||||
mv_obj_name TYPE sproxhdr-obj_name.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_object_sprx IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD activate_classes.
|
||||
|
||||
DATA: lt_objects TYPE STANDARD TABLE OF dwinactiv,
|
||||
ls_object LIKE LINE OF lt_objects.
|
||||
|
||||
FIELD-SYMBOLS: <ls_sproxdat_new> TYPE sprx_dat.
|
||||
|
||||
" Somehow the classes aren't activated by the proxy framework.
|
||||
" This seems weird and it's almost certain a result of wrong API calls.
|
||||
" So as a quick fix we activate them ourselves. This surely has to
|
||||
" be improved in the future. ZCL_ABAPGIT_OBJECTS_ACTIVATION cannot
|
||||
" be used as it doesn't activate classes.
|
||||
|
||||
LOOP AT it_sproxdat_new ASSIGNING <ls_sproxdat_new>
|
||||
WHERE object1 = 'CLAS'.
|
||||
|
||||
ls_object-object = <ls_sproxdat_new>-object1.
|
||||
ls_object-obj_name = <ls_sproxdat_new>-obj_name1.
|
||||
INSERT ls_object INTO TABLE lt_objects.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
CALL FUNCTION 'RS_WORKING_OBJECTS_ACTIVATE'
|
||||
EXPORTING
|
||||
activate_ddic_objects = abap_false
|
||||
with_popup = abap_false
|
||||
TABLES
|
||||
objects = lt_objects
|
||||
EXCEPTIONS
|
||||
excecution_error = 1
|
||||
cancelled = 2
|
||||
insert_into_corr_error = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from RS_WORKING_OBJECTS_ACTIVATE. Subrc={ sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
|
||||
super->constructor( is_item = is_item
|
||||
iv_language = iv_language ).
|
||||
|
||||
get_object_and_name(
|
||||
IMPORTING
|
||||
ev_object = mv_object
|
||||
ev_obj_name = mv_obj_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD delta_handling.
|
||||
|
||||
DATA: lo_proxy TYPE REF TO cl_proxy,
|
||||
lt_delta TYPE sprx_t_delta,
|
||||
ls_db_data TYPE sprx_db_data.
|
||||
|
||||
"add Delta-Handling to avoid that single objects created without the dependent objects.
|
||||
"Thereby the dependent objects will be deleted
|
||||
TRY.
|
||||
lo_proxy = cl_proxy_fact=>load_by_abap_name(
|
||||
object = mv_object
|
||||
obj_name = mv_obj_name ).
|
||||
|
||||
|
||||
lt_delta = lo_proxy->get_delta_all( ).
|
||||
|
||||
ls_db_data = cl_proxy_db=>serialize(
|
||||
proxy = lo_proxy
|
||||
inactive = abap_false
|
||||
delta = lt_delta ).
|
||||
|
||||
et_sproxhdr_new = ls_db_data-sproxhdr.
|
||||
et_sproxdat_new = ls_db_data-sproxdat.
|
||||
|
||||
CATCH cx_proxy_gen_error.
|
||||
"No delta for this object -> create
|
||||
|
||||
io_xml->read(
|
||||
EXPORTING
|
||||
iv_name = c_proxy-header
|
||||
CHANGING
|
||||
cg_data = et_sproxhdr_new ).
|
||||
|
||||
IF et_sproxhdr_new IS INITIAL.
|
||||
zcx_abapgit_exception=>raise( |SPRX - error deserialize: { ms_item-obj_name }| ).
|
||||
ENDIF.
|
||||
|
||||
io_xml->read(
|
||||
EXPORTING
|
||||
iv_name = c_proxy-data
|
||||
CHANGING
|
||||
cg_data = et_sproxdat_new ).
|
||||
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD generate_service_definition.
|
||||
|
||||
DATA: lv_transport TYPE e070use-ordernum,
|
||||
lo_proxy_object TYPE REF TO cl_proxy_object,
|
||||
lx_proxy_fault TYPE REF TO cx_proxy_fault.
|
||||
|
||||
lv_transport = zcl_abapgit_default_transport=>get_instance(
|
||||
)->get( )-ordernum.
|
||||
|
||||
TRY.
|
||||
lo_proxy_object = cl_pxn_factory=>create(
|
||||
application = 'PROXY_UI'
|
||||
display_only = abap_false
|
||||
saveable = abap_true
|
||||
)->load_by_abap_name_int(
|
||||
object = mv_object
|
||||
obj_name = mv_obj_name
|
||||
)->proxy.
|
||||
|
||||
lo_proxy_object->activate(
|
||||
EXPORTING
|
||||
activate_all = abap_true
|
||||
CHANGING
|
||||
transport_number = lv_transport ).
|
||||
|
||||
lo_proxy_object->dequeue( ).
|
||||
|
||||
CATCH cx_proxy_fault INTO lx_proxy_fault.
|
||||
zcx_abapgit_exception=>raise( iv_text = |{ lx_proxy_fault->get_text( ) }|
|
||||
ix_previous = lx_proxy_fault ).
|
||||
ENDTRY.
|
||||
|
||||
activate_classes( it_sproxdat_new ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD get_object_and_name.
|
||||
|
||||
ev_object = ms_item-obj_name(4).
|
||||
ev_obj_name = ms_item-obj_name+4.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
DATA lv_changed_by TYPE sproxhdr-changed_by.
|
||||
|
||||
rv_user = c_user_unknown.
|
||||
|
||||
SELECT SINGLE changed_by
|
||||
FROM sproxhdr
|
||||
INTO lv_changed_by
|
||||
WHERE object = mv_object
|
||||
AND obj_name = mv_obj_name
|
||||
AND inactive = abap_false.
|
||||
|
||||
IF sy-subrc = 0
|
||||
AND lv_changed_by IS NOT INITIAL.
|
||||
rv_user = lv_changed_by.
|
||||
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_object TYPE sproxhdr-object,
|
||||
lv_obj_name TYPE sproxhdr-obj_name,
|
||||
lv_return_code TYPE i,
|
||||
lt_log TYPE sprx_log_t.
|
||||
|
||||
get_object_and_name(
|
||||
IMPORTING
|
||||
ev_object = lv_object
|
||||
ev_obj_name = lv_obj_name ).
|
||||
|
||||
cl_proxy_data=>delete_single_proxy(
|
||||
EXPORTING
|
||||
object = lv_object
|
||||
obj_name = lv_obj_name
|
||||
CHANGING
|
||||
c_return_code = lv_return_code
|
||||
ct_log = lt_log ).
|
||||
IF lv_return_code <> 0.
|
||||
zcx_abapgit_exception=>raise( 'SPRX: Error from DELETE_SINGLE_PROXY' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~deserialize.
|
||||
|
||||
DATA: lt_sproxhdr_new TYPE sprx_hdr_t,
|
||||
lt_sproxdat_new TYPE sprx_dat_t.
|
||||
|
||||
tadir_insert( iv_package ).
|
||||
|
||||
delta_handling(
|
||||
EXPORTING
|
||||
io_xml = io_xml
|
||||
IMPORTING
|
||||
et_sproxhdr_new = lt_sproxhdr_new
|
||||
et_sproxdat_new = lt_sproxdat_new ).
|
||||
|
||||
save(
|
||||
it_sproxhdr_new = lt_sproxhdr_new
|
||||
it_sproxdat_new = lt_sproxdat_new ).
|
||||
|
||||
check_sprx_tadir( ).
|
||||
|
||||
dequeue_proxy( ).
|
||||
|
||||
IF mv_object = 'INTF'.
|
||||
generate_service_definition( lt_sproxdat_new ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~exists.
|
||||
|
||||
DATA:
|
||||
lv_status TYPE prx_status,
|
||||
lv_status_text TYPE prx_status_t.
|
||||
|
||||
cl_proxy_data=>db_get_status(
|
||||
EXPORTING
|
||||
object = mv_object
|
||||
obj_name = mv_obj_name
|
||||
IMPORTING
|
||||
status = lv_status
|
||||
status_text = lv_status_text ).
|
||||
|
||||
IF lv_status = if_proxy=>c_state_active.
|
||||
rv_bool = abap_true.
|
||||
ELSE.
|
||||
rv_bool = abap_false.
|
||||
ENDIF.
|
||||
|
||||
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~is_active.
|
||||
rv_active = abap_true. "dummy implementation
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
rv_is_locked = abap_false.
|
||||
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.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~serialize.
|
||||
|
||||
DATA:
|
||||
lo_proxy TYPE REF TO cl_proxy,
|
||||
ls_sprx_db_data TYPE sprx_db_data,
|
||||
lt_delta TYPE sprx_t_delta.
|
||||
|
||||
FIELD-SYMBOLS:
|
||||
<ls_sproxheader> LIKE LINE OF ls_sprx_db_data-sproxhdr,
|
||||
<ls_sproxdat> TYPE sprx_dat.
|
||||
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
TRY.
|
||||
lo_proxy = cl_proxy_fact=>load_by_abap_name(
|
||||
object = mv_object
|
||||
obj_name = mv_obj_name ).
|
||||
|
||||
lt_delta = lo_proxy->get_delta_all( ).
|
||||
|
||||
ls_sprx_db_data = cl_proxy_db=>serialize(
|
||||
proxy = lo_proxy
|
||||
inactive = abap_false
|
||||
delta = lt_delta ).
|
||||
|
||||
|
||||
LOOP AT ls_sprx_db_data-sproxhdr ASSIGNING <ls_sproxheader>.
|
||||
|
||||
CLEAR:
|
||||
<ls_sproxheader>-created_by,
|
||||
<ls_sproxheader>-created_on,
|
||||
<ls_sproxheader>-changed_by,
|
||||
<ls_sproxheader>-changed_on.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ls_sprx_db_data-sproxdat ASSIGNING <ls_sproxdat>.
|
||||
|
||||
CLEAR <ls_sproxdat>-warnings.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add(
|
||||
iv_name = c_proxy-header
|
||||
ig_data = ls_sprx_db_data-sproxhdr ).
|
||||
|
||||
io_xml->add(
|
||||
iv_name = c_proxy-data
|
||||
ig_data = ls_sprx_db_data-sproxdat ).
|
||||
|
||||
CATCH cx_proxy_gen_error.
|
||||
zcx_abapgit_exception=>raise( |SPRX - error load proxy { mv_obj_name }| ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD check_sprx_tadir.
|
||||
|
||||
DATA: lt_abap_keys TYPE prx_abapobjects,
|
||||
ls_abap_key LIKE LINE OF lt_abap_keys,
|
||||
lx_error TYPE REF TO cx_proxy_gen_error.
|
||||
|
||||
ls_abap_key-object = mv_object.
|
||||
ls_abap_key-obj_name = mv_obj_name.
|
||||
APPEND ls_abap_key TO lt_abap_keys.
|
||||
|
||||
TRY.
|
||||
cl_proxy_utils=>check_sprx_tadir(
|
||||
objects = lt_abap_keys
|
||||
repair = abap_true ).
|
||||
|
||||
CATCH cx_proxy_gen_error INTO lx_error.
|
||||
zcx_abapgit_exception=>raise( iv_text = |{ lx_error->get_text( ) }|
|
||||
ix_previous = lx_error ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD dequeue_proxy.
|
||||
|
||||
DATA: lo_proxy TYPE REF TO cl_proxy,
|
||||
lx_error TYPE REF TO cx_proxy_gen_error.
|
||||
|
||||
TRY.
|
||||
lo_proxy = cl_proxy_fact=>load_by_abap_name(
|
||||
object = mv_object
|
||||
obj_name = mv_obj_name ).
|
||||
|
||||
lo_proxy->dequeue( ).
|
||||
|
||||
CATCH cx_proxy_gen_error INTO lx_error.
|
||||
zcx_abapgit_exception=>raise( iv_text = |{ lx_error->get_text( ) }|
|
||||
ix_previous = lx_error ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA:
|
||||
lt_sproxhdr_old TYPE sprx_hdr_t,
|
||||
lt_sproxdat_old TYPE sprx_dat_t,
|
||||
lt_sproxsvar_old TYPE sprx_svar_t,
|
||||
lt_sproxintf_old TYPE sprx_matchintf_t,
|
||||
lt_sproxsvar_new TYPE sprx_svar_t,
|
||||
lt_sproxintf_new TYPE sprx_matchintf_t.
|
||||
|
||||
cl_proxy_data=>db_save(
|
||||
sproxhdr_old = lt_sproxhdr_old
|
||||
sproxdat_old = lt_sproxdat_old
|
||||
sproxsvar_old = lt_sproxsvar_old
|
||||
sproxintf_old = lt_sproxintf_old
|
||||
sproxhdr_new = it_sproxhdr_new
|
||||
sproxdat_new = it_sproxdat_new
|
||||
sproxsvar_new = lt_sproxsvar_new
|
||||
sproxintf_new = lt_sproxintf_new ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
17
src/objects/zcl_abapgit_object_sprx.clas.xml
Normal file
17
src/objects/zcl_abapgit_object_sprx.clas.xml
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OBJECT_SPRX</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<DESCRIPT>Proxy Objects</DESCRIPT>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -432,6 +432,10 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS: <lg_data> TYPE any.
|
||||
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
" Proxies e.g. delete on its own, nothing todo here then.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
|
|
|
@ -64,6 +64,9 @@ CLASS zcl_abapgit_object_ttyp IMPLEMENTATION.
|
|||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
|
|
|
@ -23,6 +23,8 @@ CLASS zcl_abapgit_object_webi DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
pvependpoint TYPE STANDARD TABLE OF vependpoint WITH DEFAULT KEY,
|
||||
pvepvisoapext TYPE STANDARD TABLE OF vepvisoapext WITH DEFAULT KEY,
|
||||
pvepparasoapext TYPE STANDARD TABLE OF vepparasoapext WITH DEFAULT KEY,
|
||||
pwsheader TYPE STANDARD TABLE OF wsheader WITH DEFAULT KEY,
|
||||
pwssoapprop TYPE STANDARD TABLE OF wssoapprop WITH DEFAULT KEY,
|
||||
END OF ty_webi.
|
||||
|
||||
DATA: mi_vi TYPE REF TO if_ws_md_vif.
|
||||
|
@ -48,8 +50,7 @@ CLASS zcl_abapgit_object_webi DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_object_webi IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD handle_endpoint.
|
||||
|
@ -117,10 +118,19 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
li_function = mi_vi->create_function(
|
||||
funcname = <ls_function>-function
|
||||
IF mi_vi->has_function( funcname = <ls_function>-function
|
||||
version = sews_c_vif_version-inactive ) = abap_true.
|
||||
|
||||
li_function = mi_vi->get_function( funcname = <ls_function>-function
|
||||
version = sews_c_vif_version-inactive ).
|
||||
|
||||
ELSE.
|
||||
|
||||
li_function = mi_vi->create_function( funcname = <ls_function>-function
|
||||
mapped_name = <ls_function>-mappedname ).
|
||||
|
||||
ENDIF.
|
||||
|
||||
li_function->set_is_exposed( <ls_function>-is_exposed ).
|
||||
|
||||
LOOP AT is_webi-pvepparameter ASSIGNING <ls_parameter>
|
||||
|
@ -182,7 +192,12 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
IF mi_vi->has_soap_extension_virtinfc( sews_c_vif_version-inactive ) = abap_true.
|
||||
li_soap = mi_vi->get_soap_extension_virtinfc( sews_c_vif_version-inactive ).
|
||||
ELSE.
|
||||
li_soap = mi_vi->create_soap_extension_virtinfc( ls_soap-soap_appl_uri ).
|
||||
ENDIF.
|
||||
|
||||
li_soap->set_namespace( ls_soap-namespace ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -303,10 +318,10 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
DATA: ls_webi TYPE ty_webi,
|
||||
lv_name TYPE vepname,
|
||||
ls_header LIKE LINE OF ls_webi-pvepheader,
|
||||
lv_text TYPE string ##needed,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
lv_exists TYPE abap_bool,
|
||||
li_root TYPE REF TO if_ws_md_vif_root.
|
||||
li_root TYPE REF TO if_ws_md_vif_root,
|
||||
ls_endpoint LIKE LINE OF ls_webi-pvependpoint.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'WEBI'
|
||||
|
@ -314,6 +329,13 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
READ TABLE ls_webi-pvependpoint INDEX 1 INTO ls_endpoint.
|
||||
ASSERT sy-subrc = 0.
|
||||
IF ls_endpoint-auto_generated = abap_true.
|
||||
" handled by SPRX.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE ls_webi-pvepheader INDEX 1 INTO ls_header.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
|
@ -348,8 +370,7 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
mi_vi->if_ws_md_lockable_object~unlock( ).
|
||||
CATCH cx_ws_md_exception ##no_handler.
|
||||
ENDTRY.
|
||||
lv_text = lx_root->if_message~get_text( ).
|
||||
zcx_abapgit_exception=>raise( 'error deserializing WEBI' ).
|
||||
zcx_abapgit_exception=>raise( lx_root->if_message~get_text( ) ).
|
||||
ENDTRY.
|
||||
|
||||
zcl_abapgit_objects_activation=>add_item( ms_item ).
|
||||
|
@ -410,8 +431,9 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
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.
|
||||
FIELD-SYMBOLS: <ls_vepheader> LIKE LINE OF ls_webi-pvepheader,
|
||||
<ls_vependpoint> LIKE LINE OF ls_webi-pvependpoint,
|
||||
<ls_wsheader> TYPE wsheader.
|
||||
|
||||
CALL FUNCTION 'WEBI_GET_OBJECT'
|
||||
EXPORTING
|
||||
|
@ -434,6 +456,8 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
pvependpoint = ls_webi-pvependpoint
|
||||
pvepvisoapext = ls_webi-pvepvisoapext
|
||||
pvepparasoapext = ls_webi-pvepparasoapext
|
||||
pwsheader = ls_webi-pwsheader
|
||||
pwssoapprop = ls_webi-pwssoapprop
|
||||
EXCEPTIONS
|
||||
version_not_found = 1
|
||||
webi_not_exist = 2
|
||||
|
@ -455,19 +479,31 @@ CLASS ZCL_ABAPGIT_OBJECT_WEBI IMPLEMENTATION.
|
|||
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.
|
||||
LOOP AT ls_webi-pvepheader ASSIGNING <ls_vepheader>.
|
||||
CLEAR <ls_vepheader>-author.
|
||||
CLEAR <ls_vepheader>-createdon.
|
||||
CLEAR <ls_vepheader>-changedby.
|
||||
CLEAR <ls_vepheader>-changedon.
|
||||
CLEAR <ls_vepheader>-ctime.
|
||||
CLEAR <ls_vepheader>-text_id.
|
||||
CLEAR <ls_vepheader>-utime.
|
||||
CLEAR <ls_vepheader>-wsint_version.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ls_webi-pvependpoint ASSIGNING <ls_endpoint>.
|
||||
CLEAR: <ls_endpoint>-clustd.
|
||||
LOOP AT ls_webi-pvependpoint ASSIGNING <ls_vependpoint>.
|
||||
CLEAR <ls_vependpoint>-clustd.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ls_webi-pwsheader ASSIGNING <ls_wsheader>.
|
||||
|
||||
CLEAR:
|
||||
<ls_wsheader>-author,
|
||||
<ls_wsheader>-createdon,
|
||||
<ls_wsheader>-changedby,
|
||||
<ls_wsheader>-changedon,
|
||||
<ls_wsheader>-ctime,
|
||||
<ls_wsheader>-utime.
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'WEBI'
|
||||
|
|
|
@ -224,11 +224,12 @@ CLASS zcl_abapgit_objects DEFINITION
|
|||
it_results TYPE zif_abapgit_definitions=>ty_results_tt
|
||||
RETURNING
|
||||
VALUE(rt_results) TYPE zif_abapgit_definitions=>ty_results_tt.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
||||
CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD adjust_namespaces.
|
||||
|
@ -691,6 +692,8 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
|
||||
METHOD filter_files_to_deserialize.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF rt_results.
|
||||
|
||||
rt_results = it_results.
|
||||
|
||||
DELETE rt_results WHERE match = abap_true. " Full match
|
||||
|
@ -819,6 +822,16 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF it_results.
|
||||
|
||||
* WEBI has to be handled before SPRX.
|
||||
LOOP AT it_results ASSIGNING <ls_result> WHERE obj_type = 'WEBI'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
* SPRX has to be handled before depended objects CLAS/INFT/TABL etc.
|
||||
LOOP AT it_results ASSIGNING <ls_result> WHERE obj_type = 'SPRX'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
* XSLT has to be handled before CLAS/PROG
|
||||
LOOP AT it_results ASSIGNING <ls_result> WHERE obj_type = 'XSLT'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
|
@ -855,7 +868,9 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
AND obj_type <> 'XSLT'
|
||||
AND obj_type <> 'PINF'
|
||||
AND obj_type <> 'ENHS'
|
||||
AND obj_type <> 'DDLS'.
|
||||
AND obj_type <> 'DDLS'
|
||||
AND obj_type <> 'SPRX'
|
||||
AND obj_type <> 'WEBI'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user