mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
split objects into multipe files, close #278
This commit is contained in:
parent
b8a8e8e65b
commit
d033fbed29
|
@ -67,6 +67,43 @@ INCLUDE zabapgit_tadir.
|
|||
INCLUDE zabapgit_file_status.
|
||||
INCLUDE zabapgit_object.
|
||||
INCLUDE zabapgit_object_webi.
|
||||
INCLUDE zabapgit_object_shi3.
|
||||
INCLUDE zabapgit_object_w3xx.
|
||||
INCLUDE zabapgit_object_sfbs.
|
||||
INCLUDE zabapgit_object_sfbf.
|
||||
INCLUDE zabapgit_object_sfsw.
|
||||
INCLUDE zabapgit_object_vcls.
|
||||
INCLUDE zabapgit_object_ttyp.
|
||||
INCLUDE zabapgit_object_nrob.
|
||||
INCLUDE zabapgit_object_view.
|
||||
INCLUDE zabapgit_object_acid.
|
||||
INCLUDE zabapgit_object_auth.
|
||||
INCLUDE zabapgit_object_xslt.
|
||||
INCLUDE zabapgit_object_doma.
|
||||
INCLUDE zabapgit_object_iarp.
|
||||
INCLUDE zabapgit_object_iasp.
|
||||
INCLUDE zabapgit_object_iatu.
|
||||
INCLUDE zabapgit_object_dtel.
|
||||
INCLUDE zabapgit_object_smim.
|
||||
INCLUDE zabapgit_object_sicf.
|
||||
INCLUDE zabapgit_object_ssst.
|
||||
INCLUDE zabapgit_object_suso.
|
||||
INCLUDE zabapgit_object_wdyn.
|
||||
INCLUDE zabapgit_object_wdya.
|
||||
INCLUDE zabapgit_object_susc.
|
||||
INCLUDE zabapgit_object_type.
|
||||
INCLUDE zabapgit_object_para.
|
||||
INCLUDE zabapgit_object_splo.
|
||||
INCLUDE zabapgit_object_ssfo.
|
||||
INCLUDE zabapgit_object_tabl.
|
||||
INCLUDE zabapgit_object_enho.
|
||||
INCLUDE zabapgit_object_enhs.
|
||||
INCLUDE zabapgit_object_ensc.
|
||||
INCLUDE zabapgit_object_enqu.
|
||||
INCLUDE zabapgit_object_shlp.
|
||||
INCLUDE zabapgit_object_tran.
|
||||
INCLUDE zabapgit_object_tobj.
|
||||
INCLUDE zabapgit_object_msag.
|
||||
INCLUDE zabapgit_repo_impl.
|
||||
INCLUDE zabapgit_background.
|
||||
INCLUDE zabapgit_zip.
|
||||
|
|
File diff suppressed because it is too large
Load Diff
133
src/zabapgit_object_acid.prog.abap
Normal file
133
src/zabapgit_object_acid.prog.abap
Normal file
|
@ -0,0 +1,133 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_ACID
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_acid DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_acid DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS: create_object
|
||||
RETURNING VALUE(ro_aab) TYPE REF TO cl_aab_id
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_acid DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_acid IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_acid IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD create_object.
|
||||
|
||||
DATA: lv_name TYPE aab_id_name.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CREATE OBJECT ro_aab
|
||||
EXPORTING
|
||||
im_name = lv_name
|
||||
EXCEPTIONS
|
||||
name_not_allowed = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error creating CL_AAB_ID object'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "create_object
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lo_aab TYPE REF TO cl_aab_id,
|
||||
lv_description TYPE aab_id_descript.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lo_aab = create_object( ).
|
||||
|
||||
lo_aab->get_descript( IMPORTING ex_descript = lv_description ).
|
||||
|
||||
io_xml->add( iv_name = 'DESCRIPTION'
|
||||
ig_data = lv_description ).
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_description TYPE aab_id_descript,
|
||||
lo_aab TYPE REF TO cl_aab_id.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DESCRIPTION'
|
||||
CHANGING cg_data = lv_description ).
|
||||
|
||||
lo_aab = create_object( ).
|
||||
lo_aab->enqueue( ).
|
||||
lo_aab->set_descript( lv_description ).
|
||||
lo_aab->save( ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lo_aab TYPE REF TO cl_aab_id.
|
||||
|
||||
|
||||
lo_aab = create_object( ).
|
||||
lo_aab->enqueue( ).
|
||||
lo_aab->delete(
|
||||
EXCEPTIONS
|
||||
prop_error = 1
|
||||
propt_error = 2
|
||||
act_error = 3
|
||||
cts_error = 4
|
||||
cts_devclass = 5
|
||||
id_not_found = 6
|
||||
no_authorization = 7
|
||||
id_still_used = 8
|
||||
where_used_error = 9
|
||||
OTHERS = 10 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error deleting ACID object'.
|
||||
ENDIF.
|
||||
lo_aab->dequeue( ).
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_state TYPE flag,
|
||||
lo_aab TYPE REF TO cl_aab_id.
|
||||
|
||||
|
||||
lo_aab = create_object( ).
|
||||
|
||||
lo_aab->get_state(
|
||||
IMPORTING
|
||||
ex_state = lv_state ).
|
||||
rv_bool = boolc( lv_state = abap_true ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, jump, ACID'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_acid IMPLEMENTATION
|
48
src/zabapgit_object_acid.prog.xml
Normal file
48
src/zabapgit_object_acid.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_ACID</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_ACID</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
113
src/zabapgit_object_auth.prog.abap
Normal file
113
src/zabapgit_object_auth.prog.abap
Normal file
|
@ -0,0 +1,113 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_AUTH
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_auth DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_auth DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_auth DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_auth IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_auth IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_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. "lif_object~serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see include LSAUT_FIELDF02
|
||||
|
||||
DATA: ls_authx TYPE authx,
|
||||
lo_auth TYPE REF TO cl_auth_tools.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'AUTHX'
|
||||
CHANGING cg_data = ls_authx ).
|
||||
|
||||
CREATE OBJECT lo_auth.
|
||||
|
||||
IF lo_auth->add_afield_to_trkorr( ls_authx-fieldname ) <> 0.
|
||||
_raise 'Error deserializing AUTH'.
|
||||
ENDIF.
|
||||
|
||||
MODIFY authx FROM ls_authx.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error deserializing AUTH'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DB_COMMIT'.
|
||||
lo_auth->set_authfld_info_from_db( ls_authx-fieldname ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_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.
|
||||
_raise 'error from SUSR_AUTF_DELETE_FIELD'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_fieldname TYPE authx-fieldname.
|
||||
|
||||
|
||||
SELECT SINGLE fieldname FROM authx
|
||||
INTO lv_fieldname
|
||||
WHERE fieldname = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
_raise 'todo, AUTH jump'.
|
||||
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_auth IMPLEMENTATION
|
48
src/zabapgit_object_auth.prog.xml
Normal file
48
src/zabapgit_object_auth.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_AUTH</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_AUTH</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
154
src/zabapgit_object_doma.prog.abap
Normal file
154
src/zabapgit_object_doma.prog.abap
Normal file
|
@ -0,0 +1,154 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_DOMA
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_doma DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_doma DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_doma DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_doma IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_doma IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_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. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-DOMA'
|
||||
iv_field = 'RSRD1-DOMA_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
* see class CL_WB_DDIC
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'D'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, DOMA'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd01v TYPE dd01v,
|
||||
lt_dd07v TYPE TABLE OF dd07v.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_DOMA_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd01v_wa = ls_dd01v
|
||||
TABLES
|
||||
dd07v_tab = lt_dd07v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_DOMA_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd01v IS INITIAL.
|
||||
RETURN. " does not exist
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd01v-as4user,
|
||||
ls_dd01v-as4date,
|
||||
ls_dd01v-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD01V'
|
||||
ig_data = ls_dd01v ).
|
||||
io_xml->add( iv_name = 'DD07V_TAB'
|
||||
ig_data = lt_dd07v ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
* package SEDD
|
||||
* package SDIC
|
||||
|
||||
* fm TR_TADIR_INTERFACE
|
||||
* fm RS_CORR_INSERT ?
|
||||
|
||||
DATA: ls_dd01v TYPE dd01v,
|
||||
lv_name TYPE ddobjname,
|
||||
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.
|
||||
_raise 'error from DDIF_DOMA_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_doma IMPLEMENTATION
|
48
src/zabapgit_object_doma.prog.xml
Normal file
48
src/zabapgit_object_doma.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_DOMA</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_DOMA</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
144
src/zabapgit_object_dtel.prog.abap
Normal file
144
src/zabapgit_object_dtel.prog.abap
Normal file
|
@ -0,0 +1,144 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_DTEL
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_dtel DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_dtel DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_dtel IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_dtel IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_rollname TYPE dd04l-rollname.
|
||||
|
||||
|
||||
SELECT SINGLE rollname FROM dd04l INTO lv_rollname
|
||||
WHERE rollname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-DDTYPE'
|
||||
iv_field = 'RSRD1-DDTYPE_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'E'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, DTEL'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd04v TYPE dd04v,
|
||||
ls_tpara TYPE tpara.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_DTEL_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd04v_wa = ls_dd04v
|
||||
tpara_wa = ls_tpara
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from DDIF_DTEL_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd04v IS INITIAL.
|
||||
RETURN. " does not exist
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd04v-as4user,
|
||||
ls_dd04v-as4date,
|
||||
ls_dd04v-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD04V'
|
||||
ig_data = ls_dd04v ).
|
||||
io_xml->add( iv_name = 'TPARA'
|
||||
ig_data = ls_tpara ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_dd04v TYPE dd04v,
|
||||
lv_name TYPE ddobjname,
|
||||
ls_tpara TYPE tpara.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD04V'
|
||||
CHANGING cg_data = ls_dd04v ).
|
||||
io_xml->read( EXPORTING iv_name = 'TPARA'
|
||||
CHANGING cg_data = ls_tpara ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name. " type conversion
|
||||
|
||||
CALL FUNCTION 'DDIF_DTEL_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd04v_wa = ls_dd04v
|
||||
EXCEPTIONS
|
||||
dtel_not_found = 1
|
||||
name_inconsistent = 2
|
||||
dtel_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_DTEL_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_dtel IMPLEMENTATION
|
48
src/zabapgit_object_dtel.prog.xml
Normal file
48
src/zabapgit_object_dtel.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_DTEL</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_DTEL</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
333
src/zabapgit_object_enho.prog.abap
Normal file
333
src/zabapgit_object_enho.prog.abap
Normal file
|
@ -0,0 +1,333 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_ENHO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enho DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enho DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
* For complete list of tool_type - see ENHTOOLS table
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS deserialize_badi
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
METHODS deserialize_hook
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_input
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS serialize_badi
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_output
|
||||
iv_tool TYPE enhtooltype
|
||||
ii_enh_tool TYPE REF TO if_enh_tool
|
||||
RAISING lcx_exception.
|
||||
METHODS serialize_hook
|
||||
IMPORTING io_xml TYPE REF TO lcl_xml_output
|
||||
iv_tool TYPE enhtooltype
|
||||
ii_enh_tool TYPE REF TO if_enh_tool
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_enho DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enho IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enho IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_tadir TYPE tadir.
|
||||
|
||||
* todo, it should look up in the ENHO database tables or call some methods
|
||||
* to see if the object exists, looking in TADIR will not work
|
||||
ls_tadir = lcl_tadir=>read_single(
|
||||
iv_object = ms_item-obj_type
|
||||
iv_obj_name = ms_item-obj_name ).
|
||||
IF ls_tadir IS NOT INITIAL.
|
||||
rv_bool = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_enh_id TYPE enhname,
|
||||
lv_tool TYPE enhtooltype,
|
||||
li_enh_tool TYPE REF TO if_enh_tool.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_enh_id = ms_item-obj_name.
|
||||
TRY.
|
||||
li_enh_tool = cl_enh_factory=>get_enhancement( lv_enh_id ).
|
||||
CATCH cx_enh_root.
|
||||
_raise 'Error from CL_ENH_FACTORY'.
|
||||
ENDTRY.
|
||||
lv_tool = li_enh_tool->get_tool( ).
|
||||
|
||||
CASE lv_tool.
|
||||
WHEN cl_enh_tool_badi_impl=>tooltype.
|
||||
serialize_badi( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
ii_enh_tool = li_enh_tool ).
|
||||
WHEN cl_enh_tool_hook_impl=>tooltype.
|
||||
serialize_hook( io_xml = io_xml
|
||||
iv_tool = lv_tool
|
||||
ii_enh_tool = li_enh_tool ).
|
||||
* ToDo:
|
||||
* WHEN cl_enh_tool_class=>tooltype.
|
||||
* WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr
|
||||
* WHEN cl_enh_tool_intf=>tooltype.
|
||||
* WHEN cl_wdr_cfg_enhancement=>tooltype.
|
||||
* WHEN 'ENHWDYN'. "cl_enh_tool_wdy
|
||||
WHEN OTHERS.
|
||||
_raise 'Unsupported ENHO type'.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_tool TYPE enhtooltype.
|
||||
|
||||
IF lif_object~exists( ) = abap_true.
|
||||
lif_object~delete( ).
|
||||
ENDIF.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TOOL'
|
||||
CHANGING cg_data = lv_tool ).
|
||||
|
||||
CASE lv_tool.
|
||||
WHEN cl_enh_tool_badi_impl=>tooltype.
|
||||
deserialize_badi( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
WHEN cl_enh_tool_hook_impl=>tooltype.
|
||||
deserialize_hook( io_xml = io_xml
|
||||
iv_package = iv_package ).
|
||||
* ToDo:
|
||||
* WHEN cl_enh_tool_class=>tooltype.
|
||||
* WHEN 'ENHFUGRDATA'. "cl_enh_tool_fugr
|
||||
* WHEN cl_enh_tool_intf=>tooltype.
|
||||
* WHEN cl_wdr_cfg_enhancement=>tooltype.
|
||||
* WHEN 'ENHWDYN'. "cl_enh_tool_wdy
|
||||
WHEN OTHERS.
|
||||
_raise 'Unsupported ENHO type'.
|
||||
ENDCASE.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD deserialize_badi.
|
||||
|
||||
DATA: lv_spot_name TYPE enhspotname,
|
||||
lv_shorttext TYPE string,
|
||||
lv_enhname TYPE enhname,
|
||||
lo_badi TYPE REF TO cl_enh_tool_badi_impl,
|
||||
li_tool TYPE REF TO if_enh_tool,
|
||||
lv_package TYPE devclass,
|
||||
lt_impl TYPE enh_badi_impl_data_it.
|
||||
|
||||
FIELD-SYMBOLS: <ls_impl> LIKE LINE OF lt_impl.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
io_xml->read( EXPORTING iv_name = 'SPOT_NAME'
|
||||
CHANGING cg_data = lv_spot_name ).
|
||||
io_xml->read( EXPORTING iv_name = 'IMPL'
|
||||
CHANGING cg_data = lt_impl ).
|
||||
|
||||
lv_enhname = ms_item-obj_name.
|
||||
lv_package = iv_package.
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement(
|
||||
EXPORTING
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_badi_impl=>tooltype
|
||||
IMPORTING
|
||||
enhancement = li_tool
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
lo_badi ?= li_tool.
|
||||
|
||||
lo_badi->set_spot_name( lv_spot_name ).
|
||||
lo_badi->if_enh_object_docu~set_shorttext( lv_shorttext ).
|
||||
LOOP AT lt_impl ASSIGNING <ls_impl>.
|
||||
lo_badi->add_implementation( <ls_impl> ).
|
||||
ENDLOOP.
|
||||
lo_badi->if_enh_object~save( ).
|
||||
lo_badi->if_enh_object~unlock( ).
|
||||
CATCH cx_enh_root.
|
||||
_raise 'error deserializing ENHO badi'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "deserialize_badi
|
||||
|
||||
METHOD deserialize_hook.
|
||||
|
||||
DATA: lv_shorttext TYPE string,
|
||||
lo_hook_impl TYPE REF TO cl_enh_tool_hook_impl,
|
||||
li_tool TYPE REF TO if_enh_tool,
|
||||
lv_enhname TYPE enhname,
|
||||
lv_package TYPE devclass,
|
||||
ls_original_object TYPE enh_hook_admin,
|
||||
lt_enhancements TYPE enh_hook_impl_it.
|
||||
|
||||
FIELD-SYMBOLS: <ls_enhancement> LIKE LINE OF lt_enhancements.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_shorttext ).
|
||||
io_xml->read( EXPORTING iv_name = 'ORIGINAL_OBJECT'
|
||||
CHANGING cg_data = ls_original_object ).
|
||||
io_xml->read( EXPORTING iv_name = 'ENHANCEMENTS'
|
||||
CHANGING cg_data = lt_enhancements ).
|
||||
|
||||
lv_enhname = ms_item-obj_name.
|
||||
lv_package = iv_package.
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement(
|
||||
EXPORTING
|
||||
enhname = lv_enhname
|
||||
enhtype = cl_abstract_enh_tool_redef=>credefinition
|
||||
enhtooltype = cl_enh_tool_hook_impl=>tooltype
|
||||
IMPORTING
|
||||
enhancement = li_tool
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
lo_hook_impl ?= li_tool.
|
||||
|
||||
lo_hook_impl->if_enh_object_docu~set_shorttext( lv_shorttext ).
|
||||
lo_hook_impl->set_original_object(
|
||||
pgmid = ls_original_object-pgmid
|
||||
obj_name = ls_original_object-org_obj_name
|
||||
obj_type = ls_original_object-org_obj_type
|
||||
program = ls_original_object-programname
|
||||
main_type = ls_original_object-org_main_type
|
||||
main_name = ls_original_object-org_main_name ).
|
||||
lo_hook_impl->set_include_bound( ls_original_object-include_bound ).
|
||||
|
||||
LOOP AT lt_enhancements ASSIGNING <ls_enhancement>.
|
||||
lo_hook_impl->add_hook_impl(
|
||||
overwrite = <ls_enhancement>-overwrite
|
||||
method = <ls_enhancement>-method
|
||||
enhmode = <ls_enhancement>-enhmode
|
||||
full_name = <ls_enhancement>-full_name
|
||||
source = <ls_enhancement>-source
|
||||
spot = <ls_enhancement>-spotname
|
||||
parent_full_name = <ls_enhancement>-parent_full_name ).
|
||||
ENDLOOP.
|
||||
lo_hook_impl->if_enh_object~save( ).
|
||||
lo_hook_impl->if_enh_object~unlock( ).
|
||||
CATCH cx_enh_root.
|
||||
_raise 'error deserializing ENHO hook'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "deserialize_hook
|
||||
|
||||
METHOD serialize_badi.
|
||||
|
||||
DATA: lo_badi_impl TYPE REF TO cl_enh_tool_badi_impl,
|
||||
lv_spot_name TYPE enhspotname,
|
||||
lv_shorttext TYPE string,
|
||||
lt_impl TYPE enh_badi_impl_data_it.
|
||||
|
||||
lo_badi_impl ?= ii_enh_tool.
|
||||
|
||||
lv_shorttext = lo_badi_impl->if_enh_object_docu~get_shorttext( ).
|
||||
lv_spot_name = lo_badi_impl->get_spot_name( ).
|
||||
lt_impl = lo_badi_impl->get_implementations( ).
|
||||
|
||||
io_xml->add( iv_name = 'TOOL'
|
||||
ig_data = iv_tool ).
|
||||
io_xml->add( ig_data = lv_shorttext
|
||||
iv_name = 'SHORTTEXT' ).
|
||||
io_xml->add( iv_name = 'SPOT_NAME'
|
||||
ig_data = lv_spot_name ).
|
||||
io_xml->add( iv_name = 'IMPL'
|
||||
ig_data = lt_impl ).
|
||||
|
||||
ENDMETHOD. "serialize_badi
|
||||
|
||||
METHOD serialize_hook.
|
||||
|
||||
DATA: lv_shorttext TYPE string,
|
||||
lo_hook_impl TYPE REF TO cl_enh_tool_hook_impl,
|
||||
ls_original_object TYPE enh_hook_admin,
|
||||
lt_enhancements TYPE enh_hook_impl_it.
|
||||
|
||||
|
||||
lo_hook_impl ?= ii_enh_tool.
|
||||
|
||||
lv_shorttext = lo_hook_impl->if_enh_object_docu~get_shorttext( ).
|
||||
lo_hook_impl->get_original_object(
|
||||
IMPORTING
|
||||
pgmid = ls_original_object-pgmid
|
||||
obj_name = ls_original_object-org_obj_name
|
||||
obj_type = ls_original_object-org_obj_type
|
||||
main_type = ls_original_object-org_main_type
|
||||
main_name = ls_original_object-org_main_name
|
||||
program = ls_original_object-programname ).
|
||||
ls_original_object-include_bound = lo_hook_impl->get_include_bound( ).
|
||||
lt_enhancements = lo_hook_impl->get_hook_impls( ).
|
||||
|
||||
io_xml->add( iv_name = 'TOOL'
|
||||
ig_data = iv_tool ).
|
||||
io_xml->add( ig_data = lv_shorttext
|
||||
iv_name = 'SHORTTEXT' ).
|
||||
io_xml->add( ig_data = ls_original_object
|
||||
iv_name = 'ORIGINAL_OBJECT' ).
|
||||
io_xml->add( iv_name = 'ENHANCEMENTS'
|
||||
ig_data = lt_enhancements ).
|
||||
|
||||
ENDMETHOD. "serialize_hook
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_enh_id TYPE enhname,
|
||||
li_enh_object TYPE REF TO if_enh_object.
|
||||
|
||||
|
||||
lv_enh_id = ms_item-obj_name.
|
||||
TRY.
|
||||
li_enh_object = cl_enh_factory=>get_enhancement(
|
||||
enhancement_id = lv_enh_id
|
||||
lock = abap_true ).
|
||||
li_enh_object->delete( ).
|
||||
li_enh_object->save( ).
|
||||
li_enh_object->unlock( ).
|
||||
CATCH cx_enh_root.
|
||||
_raise 'Error deleting ENHO'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'ENHO'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_enho IMPLEMENTATION
|
48
src/zabapgit_object_enho.prog.xml
Normal file
48
src/zabapgit_object_enho.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_ENHO</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_ENHO</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
186
src/zabapgit_object_enhs.prog.abap
Normal file
186
src/zabapgit_object_enhs.prog.abap
Normal file
|
@ -0,0 +1,186 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_ENHS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enhs DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enhs DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_enhs
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enhs IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enhs IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
DATA: lv_message TYPE string,
|
||||
lv_parent TYPE enhspotcompositename,
|
||||
lv_spot_name TYPE enhspotname,
|
||||
lv_enh_shtext TYPE string,
|
||||
ls_enh_badi TYPE enh_badi_data,
|
||||
lt_enh_badi TYPE enh_badi_data_it,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
lv_package LIKE iv_package,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_tool,
|
||||
lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def.
|
||||
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'PARENT_COMP'
|
||||
CHANGING cg_data = lv_parent ).
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_enh_shtext ).
|
||||
io_xml->read( EXPORTING iv_name = 'BADI_DATA'
|
||||
CHANGING cg_data = lt_enh_badi ).
|
||||
|
||||
IF lif_object~exists( ) = abap_true.
|
||||
lif_object~delete( ).
|
||||
ENDIF.
|
||||
|
||||
lv_package = iv_package.
|
||||
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement_spot(
|
||||
EXPORTING
|
||||
spot_name = lv_spot_name
|
||||
tooltype = cl_enh_tool_badi_def=>tooltype
|
||||
dark = abap_true
|
||||
compositename = lv_parent
|
||||
IMPORTING
|
||||
spot = li_spot_ref
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
|
||||
lo_badidef_tool ?= li_spot_ref.
|
||||
|
||||
lo_badidef_tool->if_enh_object_docu~set_shorttext( lv_enh_shtext ).
|
||||
|
||||
LOOP AT lt_enh_badi INTO ls_enh_badi.
|
||||
lo_badidef_tool->add_badi_def( ls_enh_badi ).
|
||||
ENDLOOP.
|
||||
|
||||
lo_badidef_tool->if_enh_object~save( ).
|
||||
lo_badidef_tool->if_enh_object~activate( ).
|
||||
lo_badidef_tool->if_enh_object~unlock( ).
|
||||
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while deserializing EHNS: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
DATA: lv_message TYPE string,
|
||||
lv_spot_name TYPE enhspotname,
|
||||
lv_enh_shtext TYPE string,
|
||||
lv_parent TYPE enhspotcompositename,
|
||||
lt_enh_badi TYPE enh_badi_data_it,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_tool,
|
||||
lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def.
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ).
|
||||
|
||||
lo_badidef_tool ?= li_spot_ref.
|
||||
|
||||
lv_enh_shtext = lo_badidef_tool->if_enh_object_docu~get_shorttext( ).
|
||||
|
||||
"get parent = composite enhs (ENHC)
|
||||
lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ).
|
||||
"get subsequent BADI definitions
|
||||
lt_enh_badi = lo_badidef_tool->get_badi_defs( ).
|
||||
|
||||
io_xml->add( ig_data = lv_parent
|
||||
iv_name = 'PARENT_COMP' ).
|
||||
io_xml->add( ig_data = lv_enh_shtext
|
||||
iv_name = 'SHORTTEXT' ).
|
||||
io_xml->add( ig_data = lt_enh_badi
|
||||
iv_name = 'BADI_DATA' ).
|
||||
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while serializing EHNS: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_spot_name TYPE enhspotname,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_tool.
|
||||
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot( lv_spot_name ).
|
||||
|
||||
* Check that is is realy a BAdI
|
||||
IF li_spot_ref->get_tool( ) = cl_enh_tool_badi_def=>tooltype.
|
||||
rv_bool = abap_true.
|
||||
ELSE.
|
||||
rv_bool = abap_false.
|
||||
ENDIF.
|
||||
CATCH cx_enh_root.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "exists
|
||||
|
||||
METHOD lif_object~delete.
|
||||
DATA: lv_spot_name TYPE enhspotname,
|
||||
lv_message TYPE string,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_tool,
|
||||
lo_badidef_tool TYPE REF TO cl_enh_tool_badi_def.
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot(
|
||||
spot_name = lv_spot_name
|
||||
lock = 'X' ).
|
||||
|
||||
IF li_spot_ref IS BOUND.
|
||||
lo_badidef_tool ?= li_spot_ref.
|
||||
lo_badidef_tool->if_enh_object~delete(
|
||||
nevertheless_delete = 'X'
|
||||
run_dark = 'X' ).
|
||||
ENDIF.
|
||||
lo_badidef_tool->if_enh_object~unlock( ).
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while deleting EHNS: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "get_metadata
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'ENHS'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_enhs
|
48
src/zabapgit_object_enhs.prog.xml
Normal file
48
src/zabapgit_object_enhs.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_ENHS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_ENHS</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
156
src/zabapgit_object_enqu.prog.abap
Normal file
156
src/zabapgit_object_enqu.prog.abap
Normal file
|
@ -0,0 +1,156 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_ENUQ
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_enqu DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enqu DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_dtel IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enqu IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_viewname TYPE dd25l-viewname.
|
||||
|
||||
|
||||
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
||||
WHERE viewname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-ENQU'
|
||||
iv_field = 'RSRD1-ENQU_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'L'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, ENQU'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd25v TYPE dd25v,
|
||||
lt_dd26e TYPE TABLE OF dd26e,
|
||||
lt_dd27p TYPE TABLE OF dd27p.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_ENQU_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd25v_wa = ls_dd25v
|
||||
TABLES
|
||||
dd26e_tab = lt_dd26e
|
||||
dd27p_tab = lt_dd27p
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_ENQU_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd25v IS INITIAL.
|
||||
RETURN. " does not exist in system
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd25v-as4user,
|
||||
ls_dd25v-as4date,
|
||||
ls_dd25v-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD25V'
|
||||
ig_data = ls_dd25v ).
|
||||
io_xml->add( ig_data = lt_dd26e
|
||||
iv_name = 'DD26E_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd27p
|
||||
iv_name = 'DD27P_TABLE' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd25v TYPE dd25v,
|
||||
lt_dd26e TYPE TABLE OF dd26e,
|
||||
lt_dd27p TYPE TABLE OF dd27p.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD25V'
|
||||
CHANGING cg_data = ls_dd25v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD26E_TABLE'
|
||||
CHANGING cg_data = lt_dd26e ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD27P_TABLE'
|
||||
CHANGING cg_data = lt_dd27p ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_ENQU_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd25v_wa = ls_dd25v
|
||||
TABLES
|
||||
dd26e_tab = lt_dd26e
|
||||
dd27p_tab = lt_dd27p
|
||||
EXCEPTIONS
|
||||
enqu_not_found = 1
|
||||
name_inconsistent = 2
|
||||
enqu_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_ENQU_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_enqu IMPLEMENTATION
|
48
src/zabapgit_object_enqu.prog.xml
Normal file
48
src/zabapgit_object_enqu.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_ENQU</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL>750</LEVL>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_ENUQ</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
186
src/zabapgit_object_ensc.prog.abap
Normal file
186
src/zabapgit_object_ensc.prog.abap
Normal file
|
@ -0,0 +1,186 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_ENSC
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_object_ensc DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_ensc
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ensc IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ensc IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_spot_name TYPE enhspotcompositename,
|
||||
lv_message TYPE string,
|
||||
lv_enh_shtext TYPE string,
|
||||
lv_enh_spot TYPE enhspotname,
|
||||
lt_enh_spots TYPE enhspotname_it,
|
||||
lt_comp_spots TYPE enhspotname_it,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
lv_package LIKE iv_package,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_composite,
|
||||
lo_spot_ref TYPE REF TO cl_enh_spot_composite.
|
||||
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SHORTTEXT'
|
||||
CHANGING cg_data = lv_enh_shtext ).
|
||||
io_xml->read( EXPORTING iv_name = 'ENH_SPOTS' "Enhancement spots
|
||||
CHANGING cg_data = lt_enh_spots ).
|
||||
io_xml->read( EXPORTING iv_name = 'COMP_ENH_SPOTS' "Composite enhancement spots
|
||||
CHANGING cg_data = lt_comp_spots ).
|
||||
|
||||
IF lif_object~exists( ) = abap_true.
|
||||
lif_object~delete( ).
|
||||
ENDIF.
|
||||
|
||||
lv_package = iv_package.
|
||||
|
||||
TRY.
|
||||
cl_enh_factory=>create_enhancement_spot_comp(
|
||||
EXPORTING
|
||||
name = lv_spot_name
|
||||
run_dark = abap_true
|
||||
IMPORTING
|
||||
composite = li_spot_ref
|
||||
CHANGING
|
||||
devclass = lv_package ).
|
||||
|
||||
lo_spot_ref ?= li_spot_ref.
|
||||
|
||||
lo_spot_ref->if_enh_object_docu~set_shorttext( lv_enh_shtext ).
|
||||
"Add subsequent enhancement spots
|
||||
LOOP AT lt_enh_spots INTO lv_enh_spot.
|
||||
lo_spot_ref->if_enh_spot_composite~add_enh_spot_child( lv_enh_spot ).
|
||||
ENDLOOP.
|
||||
"Add subsequent composite enhancement spots
|
||||
LOOP AT lt_comp_spots INTO lv_enh_spot.
|
||||
lo_spot_ref->if_enh_spot_composite~add_composite_child( lv_enh_spot ).
|
||||
ENDLOOP.
|
||||
|
||||
lo_spot_ref->if_enh_object~save( ).
|
||||
lo_spot_ref->if_enh_object~activate( ).
|
||||
lo_spot_ref->if_enh_object~unlock( ).
|
||||
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while deserializing ENSC: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_spot_name TYPE enhspotcompositename,
|
||||
lv_message TYPE string,
|
||||
lv_enh_shtext TYPE string,
|
||||
lv_parent TYPE enhspotcompositename,
|
||||
lt_enh_spots TYPE enhspotname_it,
|
||||
lt_comp_spots TYPE enhspotname_it,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_composite,
|
||||
lo_spot_ref TYPE REF TO cl_enh_spot_composite.
|
||||
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp(
|
||||
lock = ''
|
||||
name = lv_spot_name ).
|
||||
|
||||
lo_spot_ref ?= li_spot_ref.
|
||||
|
||||
lv_enh_shtext = li_spot_ref->if_enh_object_docu~get_shorttext( ).
|
||||
"find parent = composite enhancement (ENSC)
|
||||
lv_parent = cl_r3standard_persistence=>enh_find_parent_composite( lv_spot_name ).
|
||||
"find subsequent enhancement spots
|
||||
lt_enh_spots = lo_spot_ref->if_enh_spot_composite~get_enh_spot_childs( ).
|
||||
"find subsequent composite enhancement spots
|
||||
lt_comp_spots = lo_spot_ref->if_enh_spot_composite~get_composite_childs( ).
|
||||
|
||||
io_xml->add( ig_data = lv_enh_shtext
|
||||
iv_name = 'SHORTTEXT' ).
|
||||
io_xml->add( ig_data = lt_enh_spots
|
||||
iv_name = 'ENH_SPOTS' ). "Enhancement spots
|
||||
io_xml->add( ig_data = lt_comp_spots
|
||||
iv_name = 'COMP_ENH_SPOTS' ). "Composite enhancement spots
|
||||
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while serializing ENSC: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_spot_name TYPE enhspotcompositename,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_composite.
|
||||
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp(
|
||||
lock = ''
|
||||
name = lv_spot_name ).
|
||||
rv_bool = abap_true.
|
||||
CATCH cx_enh_root.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "exists
|
||||
|
||||
METHOD lif_object~delete.
|
||||
DATA: lv_spot_name TYPE enhspotcompositename,
|
||||
lv_message TYPE string,
|
||||
lx_root TYPE REF TO cx_root,
|
||||
li_spot_ref TYPE REF TO if_enh_spot_composite.
|
||||
|
||||
lv_spot_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
li_spot_ref = cl_enh_factory=>get_enhancement_spot_comp(
|
||||
lock = 'X'
|
||||
name = lv_spot_name ).
|
||||
|
||||
IF li_spot_ref IS BOUND.
|
||||
li_spot_ref->if_enh_object~delete(
|
||||
nevertheless_delete = 'X'
|
||||
run_dark = 'X' ).
|
||||
ENDIF.
|
||||
li_spot_ref->if_enh_object~unlock( ).
|
||||
CATCH cx_enh_root INTO lx_root.
|
||||
lv_message = `Error occured while deleting ENSC: `
|
||||
&& lx_root->get_text( ) ##NO_TEXT.
|
||||
_raise lv_message.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "get_metadata
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'ENSC'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_ensc
|
48
src/zabapgit_object_ensc.prog.xml
Normal file
48
src/zabapgit_object_ensc.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_ENSC</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_ENSC</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
183
src/zabapgit_object_iarp.prog.abap
Normal file
183
src/zabapgit_object_iarp.prog.abap
Normal file
|
@ -0,0 +1,183 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_IARP
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iarp DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iarp DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
read
|
||||
EXPORTING es_attr TYPE w3resoattr
|
||||
et_parameters TYPE w3resopara_tabletype
|
||||
RAISING lcx_exception,
|
||||
save
|
||||
IMPORTING is_attr TYPE w3resoattr
|
||||
it_parameters TYPE w3resopara_tabletype
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iarp IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iarp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: li_resource TYPE REF TO if_w3_api_resource,
|
||||
ls_name TYPE w3resokey.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_resource=>if_w3_api_resource~load(
|
||||
EXPORTING
|
||||
p_resource_name = ls_name
|
||||
IMPORTING
|
||||
p_resource = li_resource
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from w3api_resource~load'.
|
||||
ENDIF.
|
||||
|
||||
li_resource->get_attributes( IMPORTING p_attributes = es_attr ).
|
||||
|
||||
CLEAR: es_attr-chname,
|
||||
es_attr-tdate,
|
||||
es_attr-ttime,
|
||||
es_attr-devclass.
|
||||
|
||||
li_resource->get_parameters( IMPORTING p_parameters = et_parameters ).
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_attr TYPE w3resoattr,
|
||||
lt_parameters TYPE w3resopara_tabletype.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
read( IMPORTING es_attr = ls_attr
|
||||
et_parameters = lt_parameters ).
|
||||
|
||||
io_xml->add( iv_name = 'ATTR'
|
||||
ig_data = ls_attr ).
|
||||
io_xml->add( iv_name = 'PARAMETERS'
|
||||
ig_data = lt_parameters ).
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: li_resource TYPE REF TO if_w3_api_resource.
|
||||
|
||||
|
||||
cl_w3_api_resource=>if_w3_api_resource~create_new(
|
||||
EXPORTING p_resource_data = is_attr
|
||||
IMPORTING p_resource = li_resource ).
|
||||
|
||||
li_resource->set_attributes( is_attr ).
|
||||
li_resource->set_parameters( it_parameters ).
|
||||
|
||||
li_resource->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "save
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_attr TYPE w3resoattr,
|
||||
lt_parameters TYPE w3resopara_tabletype.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTR'
|
||||
CHANGING cg_data = ls_attr ).
|
||||
io_xml->read( EXPORTING iv_name = 'PARAMETERS'
|
||||
CHANGING cg_data = lt_parameters ).
|
||||
|
||||
ls_attr-devclass = iv_package.
|
||||
save( is_attr = ls_attr
|
||||
it_parameters = lt_parameters ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: li_resource TYPE REF TO if_w3_api_resource,
|
||||
ls_name TYPE w3resokey.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_resource=>if_w3_api_resource~load(
|
||||
EXPORTING
|
||||
p_resource_name = ls_name
|
||||
IMPORTING
|
||||
p_resource = li_resource
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from if_w3_api_resource~load'.
|
||||
ENDIF.
|
||||
|
||||
li_resource->if_w3_api_object~set_changeable( abap_true ).
|
||||
li_resource->if_w3_api_object~delete( ).
|
||||
li_resource->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_name TYPE w3resokey.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_resource=>if_w3_api_resource~load(
|
||||
EXPORTING
|
||||
p_resource_name = ls_name
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc = 1.
|
||||
rv_bool = abap_false.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from w3_api_resource~load'.
|
||||
ELSE.
|
||||
rv_bool = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, IARP, jump'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_iarp IMPLEMENTATION
|
48
src/zabapgit_object_iarp.prog.xml
Normal file
48
src/zabapgit_object_iarp.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_IARP</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_IARP</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
183
src/zabapgit_object_iasp.prog.abap
Normal file
183
src/zabapgit_object_iasp.prog.abap
Normal file
|
@ -0,0 +1,183 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_IASP
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iasp DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iasp DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
read
|
||||
EXPORTING es_attr TYPE w3servattr
|
||||
et_parameters TYPE w3servpara_tabletype
|
||||
RAISING lcx_exception,
|
||||
save
|
||||
IMPORTING is_attr TYPE w3servattr
|
||||
it_parameters TYPE w3servpara_tabletype
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iasp IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iasp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: li_service TYPE REF TO if_w3_api_service,
|
||||
lv_name TYPE itsappl.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_service=>if_w3_api_service~load(
|
||||
EXPORTING
|
||||
p_service_name = lv_name
|
||||
IMPORTING
|
||||
p_service = li_service
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from w3api_service~load'.
|
||||
ENDIF.
|
||||
|
||||
li_service->get_attributes( IMPORTING p_attributes = es_attr ).
|
||||
|
||||
CLEAR: es_attr-chname,
|
||||
es_attr-tdate,
|
||||
es_attr-ttime,
|
||||
es_attr-devclass.
|
||||
|
||||
li_service->get_parameters( IMPORTING p_parameters = et_parameters ).
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_attr TYPE w3servattr,
|
||||
lt_parameters TYPE w3servpara_tabletype.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
read( IMPORTING es_attr = ls_attr
|
||||
et_parameters = lt_parameters ).
|
||||
|
||||
io_xml->add( iv_name = 'ATTR'
|
||||
ig_data = ls_attr ).
|
||||
io_xml->add( iv_name = 'PARAMETERS'
|
||||
ig_data = lt_parameters ).
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: li_service TYPE REF TO if_w3_api_service.
|
||||
|
||||
|
||||
cl_w3_api_service=>if_w3_api_service~create_new(
|
||||
EXPORTING p_service_data = is_attr
|
||||
IMPORTING p_service = li_service ).
|
||||
|
||||
li_service->set_attributes( is_attr ).
|
||||
li_service->set_parameters( it_parameters ).
|
||||
|
||||
li_service->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "save
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_attr TYPE w3servattr,
|
||||
lt_parameters TYPE w3servpara_tabletype.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTR'
|
||||
CHANGING cg_data = ls_attr ).
|
||||
io_xml->read( EXPORTING iv_name = 'PARAMETERS'
|
||||
CHANGING cg_data = lt_parameters ).
|
||||
|
||||
ls_attr-devclass = iv_package.
|
||||
save( is_attr = ls_attr
|
||||
it_parameters = lt_parameters ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: li_service TYPE REF TO if_w3_api_service,
|
||||
lv_name TYPE itsappl.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_service=>if_w3_api_service~load(
|
||||
EXPORTING
|
||||
p_service_name = lv_name
|
||||
IMPORTING
|
||||
p_service = li_service
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from if_w3_api_service~load'.
|
||||
ENDIF.
|
||||
|
||||
li_service->if_w3_api_object~set_changeable( abap_true ).
|
||||
li_service->if_w3_api_object~delete( ).
|
||||
li_service->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_name TYPE itsappl.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_service=>if_w3_api_service~load(
|
||||
EXPORTING
|
||||
p_service_name = lv_name
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc = 1.
|
||||
rv_bool = abap_false.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from w3_api_service~load'.
|
||||
ELSE.
|
||||
rv_bool = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, IASP, jump'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_iasp IMPLEMENTATION
|
48
src/zabapgit_object_iasp.prog.xml
Normal file
48
src/zabapgit_object_iasp.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_IASP</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_IASP</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
200
src/zabapgit_object_iatu.prog.abap
Normal file
200
src/zabapgit_object_iatu.prog.abap
Normal file
|
@ -0,0 +1,200 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_IATU
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iatu DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iatu DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
read
|
||||
EXPORTING es_attr TYPE w3tempattr
|
||||
ev_source TYPE string
|
||||
RAISING lcx_exception,
|
||||
save
|
||||
IMPORTING is_attr TYPE w3tempattr
|
||||
iv_source TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_iatu DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_iatu IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iatu IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: li_template TYPE REF TO if_w3_api_template,
|
||||
lt_source TYPE w3htmltabtype,
|
||||
ls_name TYPE iacikeyt.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_template=>if_w3_api_template~load(
|
||||
EXPORTING
|
||||
p_template_name = ls_name
|
||||
IMPORTING
|
||||
p_template = li_template
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from w3api_template~load'.
|
||||
ENDIF.
|
||||
|
||||
li_template->get_attributes( IMPORTING p_attributes = es_attr ).
|
||||
|
||||
CLEAR: es_attr-chname,
|
||||
es_attr-tdate,
|
||||
es_attr-ttime,
|
||||
es_attr-devclass.
|
||||
|
||||
li_template->get_source( IMPORTING p_source = lt_source ).
|
||||
|
||||
CONCATENATE LINES OF lt_source INTO ev_source RESPECTING BLANKS.
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_attr TYPE w3tempattr,
|
||||
lv_source TYPE string.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
read( IMPORTING es_attr = ls_attr
|
||||
ev_source = lv_source ).
|
||||
|
||||
io_xml->add( iv_name = 'ATTR'
|
||||
ig_data = ls_attr ).
|
||||
|
||||
mo_files->add_string( iv_ext = 'html'
|
||||
iv_string = lv_source ) ##NO_TEXT.
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: lt_source TYPE w3htmltabtype,
|
||||
lv_source TYPE string,
|
||||
li_template TYPE REF TO if_w3_api_template.
|
||||
|
||||
|
||||
cl_w3_api_template=>if_w3_api_template~create_new(
|
||||
EXPORTING p_template_data = is_attr
|
||||
p_program_name = is_attr-programm
|
||||
IMPORTING p_template = li_template ).
|
||||
|
||||
li_template->set_attributes( is_attr ).
|
||||
|
||||
lv_source = iv_source.
|
||||
WHILE strlen( lv_source ) >= 255.
|
||||
APPEND lv_source(255) TO lt_source.
|
||||
lv_source = lv_source+255.
|
||||
ENDWHILE.
|
||||
IF NOT lv_source IS INITIAL.
|
||||
APPEND lv_source TO lt_source.
|
||||
ENDIF.
|
||||
|
||||
li_template->set_source( lt_source ).
|
||||
|
||||
li_template->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "save
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_attr TYPE w3tempattr,
|
||||
lv_source TYPE string.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTR'
|
||||
CHANGING cg_data = ls_attr ).
|
||||
|
||||
lv_source = mo_files->read_string( 'html' ) ##NO_TEXT.
|
||||
|
||||
ls_attr-devclass = iv_package.
|
||||
save( is_attr = ls_attr
|
||||
iv_source = lv_source ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: li_template TYPE REF TO if_w3_api_template,
|
||||
ls_name TYPE iacikeyt.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_template=>if_w3_api_template~load(
|
||||
EXPORTING
|
||||
p_template_name = ls_name
|
||||
IMPORTING
|
||||
p_template = li_template
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from if_w3_api_template~load'.
|
||||
ENDIF.
|
||||
|
||||
li_template->if_w3_api_object~set_changeable( abap_true ).
|
||||
li_template->if_w3_api_object~delete( ).
|
||||
li_template->if_w3_api_object~save( ).
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_name TYPE iacikeyt.
|
||||
|
||||
|
||||
ls_name = ms_item-obj_name.
|
||||
|
||||
cl_w3_api_template=>if_w3_api_template~load(
|
||||
EXPORTING
|
||||
p_template_name = ls_name
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
permission_failure = 2
|
||||
error_occured = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc = 1.
|
||||
rv_bool = abap_false.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from w3_api_template~load'.
|
||||
ELSE.
|
||||
rv_bool = abap_true.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, IATU, jump'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_iatu IMPLEMENTATION
|
48
src/zabapgit_object_iatu.prog.xml
Normal file
48
src/zabapgit_object_iatu.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_IATU</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_IATU</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
160
src/zabapgit_object_msag.prog.abap
Normal file
160
src/zabapgit_object_msag.prog.abap
Normal file
|
@ -0,0 +1,160 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_MSAG
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_msag DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_msag DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_msag DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_view IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_msag IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_arbgb TYPE t100a-arbgb.
|
||||
|
||||
|
||||
SELECT SINGLE arbgb FROM t100a INTO lv_arbgb
|
||||
WHERE arbgb = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'MSAG'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
* parameter SUPPRESS_DIALOG doesnt exist in all versions
|
||||
CALL FUNCTION 'RS_DELETE_MESSAGE_ID'
|
||||
EXPORTING
|
||||
nachrichtenklasse = ms_item-obj_name
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
not_found = 2
|
||||
no_permission = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from RS_DELETE_MESSAGE_ID'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* fm RPY_MESSAGE_ID_INSERT almost works, but not in older versions
|
||||
|
||||
DATA: ls_t100a TYPE t100a,
|
||||
ls_t100t TYPE t100t,
|
||||
ls_t100u TYPE t100u,
|
||||
lt_t100 TYPE TABLE OF t100.
|
||||
|
||||
FIELD-SYMBOLS: <ls_t100> LIKE LINE OF lt_t100.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'T100A'
|
||||
CHANGING cg_data = ls_t100a ).
|
||||
io_xml->read( EXPORTING iv_name = 'T100'
|
||||
CHANGING cg_data = lt_t100 ).
|
||||
|
||||
CALL FUNCTION 'RS_CORR_INSERT'
|
||||
EXPORTING
|
||||
global_lock = abap_true
|
||||
devclass = iv_package
|
||||
object = ls_t100a-arbgb
|
||||
object_class = 'T100'
|
||||
mode = 'INSERT'
|
||||
EXCEPTIONS
|
||||
cancelled = 01
|
||||
permission_failure = 02
|
||||
unknown_objectclass = 03.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from RS_CORR_INSERT'.
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_t100 ASSIGNING <ls_t100>.
|
||||
MODIFY t100 FROM <ls_t100>. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
CLEAR ls_t100u.
|
||||
MOVE-CORRESPONDING <ls_t100> TO ls_t100u ##enh_ok.
|
||||
ls_t100u-name = sy-uname.
|
||||
ls_t100u-datum = sy-datum.
|
||||
ls_t100u-selfdef = '3'.
|
||||
MODIFY t100u FROM ls_t100u. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
ENDLOOP.
|
||||
|
||||
ls_t100a-masterlang = mv_language.
|
||||
ls_t100a-lastuser = sy-uname.
|
||||
ls_t100a-respuser = sy-uname.
|
||||
ls_t100a-ldate = sy-datum.
|
||||
ls_t100a-ltime = sy-uzeit.
|
||||
MODIFY t100a FROM ls_t100a. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ls_t100t-sprsl = mv_language.
|
||||
ls_t100t-arbgb = ls_t100a-arbgb.
|
||||
ls_t100t-stext = ls_t100a-stext.
|
||||
MODIFY t100t FROM ls_t100t. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_msg_id TYPE rglif-message_id,
|
||||
ls_inf TYPE t100a,
|
||||
lt_source TYPE TABLE OF t100.
|
||||
|
||||
|
||||
lv_msg_id = ms_item-obj_name.
|
||||
|
||||
SELECT SINGLE * FROM t100a INTO ls_inf
|
||||
WHERE arbgb = lv_msg_id. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
CLEAR ls_inf-respuser.
|
||||
|
||||
SELECT * FROM t100 INTO TABLE lt_source
|
||||
WHERE sprsl = mv_language
|
||||
AND arbgb = lv_msg_id
|
||||
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||
|
||||
CLEAR: ls_inf-lastuser,
|
||||
ls_inf-ldate,
|
||||
ls_inf-ltime.
|
||||
|
||||
io_xml->add( iv_name = 'T100A'
|
||||
ig_data = ls_inf ).
|
||||
io_xml->add( ig_data = lt_source
|
||||
iv_name = 'T100' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
ENDCLASS. "lcl_object_msag IMPLEMENTATION
|
48
src/zabapgit_object_msag.prog.xml
Normal file
48
src/zabapgit_object_msag.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_MSAG</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_MSAG</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
157
src/zabapgit_object_nrob.prog.abap
Normal file
157
src/zabapgit_object_nrob.prog.abap
Normal file
|
@ -0,0 +1,157 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_NROB
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_nrob DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_nrob DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_nrob DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_nrob IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_nrob IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_object TYPE tnro-object.
|
||||
|
||||
|
||||
SELECT SINGLE object FROM tnro INTO lv_object
|
||||
WHERE object = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_object TYPE tnro-object,
|
||||
ls_attributes TYPE tnro,
|
||||
ls_text TYPE tnrot.
|
||||
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_OBJECT_READ'
|
||||
EXPORTING
|
||||
language = mv_language
|
||||
object = lv_object
|
||||
IMPORTING
|
||||
object_attributes = ls_attributes
|
||||
object_text = ls_text
|
||||
EXCEPTIONS
|
||||
object_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc = 1.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from NUMBER_RANGE_OBJECT_READ'.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'ATTRIBUTES'
|
||||
ig_data = ls_attributes ).
|
||||
io_xml->add( iv_name = 'TEXT'
|
||||
ig_data = ls_text ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lt_errors TYPE TABLE OF inoer,
|
||||
ls_attributes TYPE tnro,
|
||||
ls_text TYPE tnrot.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTRIBUTES'
|
||||
CHANGING cg_data = ls_attributes ).
|
||||
io_xml->read( EXPORTING iv_name = 'TEXT'
|
||||
CHANGING cg_data = ls_text ).
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_OBJECT_UPDATE'
|
||||
EXPORTING
|
||||
indicator = 'I'
|
||||
object_attributes = ls_attributes
|
||||
object_text = ls_text
|
||||
TABLES
|
||||
errors = lt_errors
|
||||
EXCEPTIONS
|
||||
object_already_exists = 1
|
||||
object_attributes_missing = 2
|
||||
object_not_found = 3
|
||||
object_text_missing = 4
|
||||
wrong_indicator = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from NUMBER_RANGE_OBJECT_UPDATE'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_OBJECT_CLOSE'
|
||||
EXPORTING
|
||||
object = ls_attributes-object
|
||||
EXCEPTIONS
|
||||
object_not_initialized = 1.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from NUMBER_RANGE_OBJECT_CLOSE'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||
EXPORTING
|
||||
wi_test_modus = abap_false
|
||||
wi_tadir_pgmid = 'R3TR'
|
||||
wi_tadir_object = 'NROB'
|
||||
wi_tadir_obj_name = ms_item-obj_name
|
||||
wi_tadir_author = sy-uname
|
||||
wi_tadir_devclass = iv_package
|
||||
wi_tadir_masterlang = mv_language
|
||||
wi_set_genflag = abap_true
|
||||
EXCEPTIONS
|
||||
OTHERS = 1.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from TR_TADIR_INTERFACE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_object TYPE tnro-object.
|
||||
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_OBJECT_DELETE'
|
||||
EXPORTING
|
||||
language = mv_language
|
||||
object = lv_object
|
||||
EXCEPTIONS
|
||||
delete_not_allowed = 1
|
||||
object_not_found = 2
|
||||
wrong_indicator = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from NUMBER_RANGE_OBJECT_DELETE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
_raise 'todo'.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_nrob IMPLEMENTATION
|
48
src/zabapgit_object_nrob.prog.xml
Normal file
48
src/zabapgit_object_nrob.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_NROB</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_NROB</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
141
src/zabapgit_object_para.prog.abap
Normal file
141
src/zabapgit_object_para.prog.abap
Normal file
|
@ -0,0 +1,141 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_PARA
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_para DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_para DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_para DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_para IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_para IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_paramid TYPE tpara-paramid.
|
||||
|
||||
|
||||
SELECT SINGLE paramid FROM tpara INTO lv_paramid
|
||||
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_tpara TYPE tpara,
|
||||
ls_tparat TYPE tparat.
|
||||
|
||||
|
||||
SELECT SINGLE * FROM tpara INTO ls_tpara
|
||||
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tparat INTO ls_tparat
|
||||
WHERE paramid = ms_item-obj_name
|
||||
AND sprache = mv_language. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'PARA no english description'.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'TPARA'
|
||||
ig_data = ls_tpara ).
|
||||
io_xml->add( iv_name = 'TPARAT'
|
||||
ig_data = ls_tparat ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see fm RS_PARAMETER_ADD and RS_PARAMETER_EDIT
|
||||
|
||||
DATA: lv_mode TYPE c LENGTH 1,
|
||||
ls_tpara TYPE tpara,
|
||||
ls_tparat TYPE tparat.
|
||||
|
||||
|
||||
SELECT SINGLE * FROM tpara INTO ls_tpara
|
||||
WHERE paramid = ms_item-obj_name. "#EC CI_GENBUFF
|
||||
IF sy-subrc = 0.
|
||||
lv_mode = 'M'.
|
||||
ELSE.
|
||||
lv_mode = 'I'.
|
||||
ENDIF.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TPARA'
|
||||
CHANGING cg_data = ls_tpara ).
|
||||
io_xml->read( EXPORTING iv_name = 'TPARAT'
|
||||
CHANGING cg_data = ls_tparat ).
|
||||
|
||||
CALL FUNCTION 'RS_CORR_INSERT'
|
||||
EXPORTING
|
||||
object = ms_item-obj_name
|
||||
object_class = 'PARA'
|
||||
mode = lv_mode
|
||||
global_lock = abap_true
|
||||
devclass = iv_package
|
||||
master_language = mv_language
|
||||
EXCEPTIONS
|
||||
cancelled = 1
|
||||
permission_failure = 2
|
||||
unknown_objectclass = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_CORR_INSERT, PARA'.
|
||||
ENDIF.
|
||||
|
||||
MODIFY tpara FROM ls_tpara. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
MODIFY tparat FROM ls_tparat. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_paramid TYPE tpara-paramid.
|
||||
|
||||
|
||||
lv_paramid = ms_item-obj_name.
|
||||
CALL FUNCTION 'RS_PARAMETER_DELETE'
|
||||
EXPORTING
|
||||
objectname = lv_paramid
|
||||
EXCEPTIONS
|
||||
cancelled = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_PRAMETER_DELETE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'PARA'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_para IMPLEMENTATION
|
48
src/zabapgit_object_para.prog.xml
Normal file
48
src/zabapgit_object_para.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_PARA</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_PARA</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
211
src/zabapgit_object_sfbf.prog.abap
Normal file
211
src/zabapgit_object_sfbf.prog.abap
Normal file
|
@ -0,0 +1,211 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SFBF
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_SFBF DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbf DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
|
||||
ENDCLASS. "lcl_object_SFBF DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_SFBF IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbf IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_tadir TYPE tadir,
|
||||
lv_bf TYPE sfw_bfunction.
|
||||
|
||||
lv_bf = ms_item-obj_name.
|
||||
IF cl_sfw_bf=>check_existence( lv_bf ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ls_tadir = lcl_tadir=>read_single(
|
||||
iv_object = ms_item-obj_type
|
||||
iv_obj_name = ms_item-obj_name ).
|
||||
IF ls_tadir IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rv_bool = abap_true.
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_bf TYPE sfw_bfunction,
|
||||
lo_bf TYPE REF TO cl_sfw_bf,
|
||||
ls_header TYPE sfw_bf,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_assigned_switches TYPE sfw_swbf_outtab,
|
||||
lt_dependancies TYPE sfw_depend_outtab,
|
||||
ls_sfw_bfc_kw TYPE sfw_bfc_kw,
|
||||
ls_sfw_bfc_tc TYPE sfw_bfc_tc,
|
||||
ls_sfw_bfc_rn TYPE sfw_bfc_rn,
|
||||
lt_parent_bfs TYPE sfw_bs_bf_outtab.
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_bf = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
* make sure to clear cache, method GET_BF_FROM_DB does not exist in 702
|
||||
lo_bf = cl_sfw_bf=>get_bf( lv_bf ).
|
||||
lo_bf->free( ).
|
||||
lo_bf = cl_sfw_bf=>get_bf( lv_bf ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error from CL_SFW_BF=>GET_BF'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header = lo_bf->get_header_data( ).
|
||||
CLEAR: ls_header-author,
|
||||
ls_header-createdon,
|
||||
ls_header-changedby,
|
||||
ls_header-changedon,
|
||||
ls_header-timestamp.
|
||||
|
||||
lo_bf->get_texts(
|
||||
IMPORTING
|
||||
p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lt_assigned_switches = lo_bf->get_assigned_switches( ).
|
||||
lt_dependancies = lo_bf->get_excluded_bf( ).
|
||||
lo_bf->get_content_data(
|
||||
IMPORTING
|
||||
ex_sfw_bfc_kw = ls_sfw_bfc_kw
|
||||
ex_sfw_bfc_tc = ls_sfw_bfc_tc
|
||||
ex_sfw_bfc_rn = ls_sfw_bfc_rn ).
|
||||
lt_parent_bfs = lo_bf->get_parent_bfs( ).
|
||||
|
||||
io_xml->add( ig_data = ls_header
|
||||
iv_name = 'HEADER' ).
|
||||
io_xml->add( ig_data = lv_name_32
|
||||
iv_name = 'NAME32' ).
|
||||
io_xml->add( ig_data = lv_name_80
|
||||
iv_name = 'NAME80' ).
|
||||
|
||||
io_xml->add( ig_data = lt_assigned_switches
|
||||
iv_name = 'ASSIGNED_SWITCHES' ).
|
||||
io_xml->add( ig_data = lt_dependancies
|
||||
iv_name = 'DEPENDANCIES' ).
|
||||
io_xml->add( ig_data = ls_sfw_bfc_kw
|
||||
iv_name = 'CONTENT_KW' ).
|
||||
io_xml->add( ig_data = ls_sfw_bfc_tc
|
||||
iv_name = 'CONTENT_TC' ).
|
||||
io_xml->add( ig_data = ls_sfw_bfc_rn
|
||||
iv_name = 'CONTENT_RN' ).
|
||||
io_xml->add( ig_data = lt_parent_bfs
|
||||
iv_name = 'PARENT_BFS' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_bf TYPE sfw_bfunction,
|
||||
lo_bf TYPE REF TO cl_sfw_bf,
|
||||
ls_header TYPE sfw_bf,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_assigned_switches TYPE sfw_swbf_outtab,
|
||||
lt_dependancies TYPE sfw_depend_outtab,
|
||||
ls_sfw_bfc_kw TYPE sfw_bfc_kw,
|
||||
ls_sfw_bfc_tc TYPE sfw_bfc_tc,
|
||||
ls_sfw_bfc_rn TYPE sfw_bfc_rn,
|
||||
lt_parent_bfs TYPE sfw_bs_bf_outtab.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'HEADER'
|
||||
CHANGING cg_data = ls_header ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME32'
|
||||
CHANGING cg_data = lv_name_32 ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME80'
|
||||
CHANGING cg_data = lv_name_80 ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ASSIGNED_SWITCHES'
|
||||
CHANGING cg_data = lt_assigned_switches ).
|
||||
io_xml->read( EXPORTING iv_name = 'DEPENDANCIES'
|
||||
CHANGING cg_data = lt_dependancies ).
|
||||
io_xml->read( EXPORTING iv_name = 'CONTENT_KW'
|
||||
CHANGING cg_data = ls_sfw_bfc_kw ).
|
||||
io_xml->read( EXPORTING iv_name = 'CONTENT_TC'
|
||||
CHANGING cg_data = ls_sfw_bfc_tc ).
|
||||
io_xml->read( EXPORTING iv_name = 'CONTENT_RN'
|
||||
CHANGING cg_data = ls_sfw_bfc_rn ).
|
||||
io_xml->read( EXPORTING iv_name = 'PARENT_BFS'
|
||||
CHANGING cg_data = lt_parent_bfs ).
|
||||
|
||||
lv_bf = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_bf = cl_sfw_bf=>create_bf( lv_bf ).
|
||||
CATCH cx_pak_not_authorized cx_pak_invalid_state cx_pak_invalid_data.
|
||||
_raise 'error in CL_SFW_BF=>CREATE_BF'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header-author = sy-uname.
|
||||
ls_header-createdon = sy-datum.
|
||||
lo_bf->set_header_data( ls_header ).
|
||||
|
||||
lo_bf->set_texts( p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lo_bf->set_assigned_switches( lt_assigned_switches ).
|
||||
lo_bf->set_excluded_bf( lt_dependancies ).
|
||||
lo_bf->set_content_data(
|
||||
im_sfw_bfc_kw = ls_sfw_bfc_kw
|
||||
im_sfw_bfc_rn = ls_sfw_bfc_rn
|
||||
im_sfw_bfc_tc = ls_sfw_bfc_tc ).
|
||||
lo_bf->set_parent_bfs( lt_parent_bfs ).
|
||||
|
||||
lo_bf->save_all( ).
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_bf TYPE sfw_bfunction,
|
||||
lo_bf TYPE REF TO cl_sfw_bf.
|
||||
|
||||
|
||||
lv_bf = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_bf = cl_sfw_bf=>get_bf( lv_bf ).
|
||||
lo_bf->set_delete_flag( lv_bf ).
|
||||
lo_bf->save_all( ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error deleting BF'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'SFBF'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_SFBF IMPLEMENTATION
|
48
src/zabapgit_object_sfbf.prog.xml
Normal file
48
src/zabapgit_object_sfbf.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SFBF</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SFBF</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
183
src/zabapgit_object_sfbs.prog.abap
Normal file
183
src/zabapgit_object_sfbs.prog.abap
Normal file
|
@ -0,0 +1,183 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SFBS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_SFBS DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbs DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
|
||||
ENDCLASS. "lcl_object_SFBS DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_SFBS IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbs IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_tadir TYPE tadir,
|
||||
lv_bfset TYPE sfw_bset.
|
||||
|
||||
lv_bfset = ms_item-obj_name.
|
||||
IF cl_sfw_bfs=>check_existence( lv_bfset ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ls_tadir = lcl_tadir=>read_single(
|
||||
iv_object = ms_item-obj_type
|
||||
iv_obj_name = ms_item-obj_name ).
|
||||
IF ls_tadir IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rv_bool = abap_true.
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_bfset TYPE sfw_bset,
|
||||
lo_bfs TYPE REF TO cl_sfw_bfs,
|
||||
ls_header TYPE sfw_bs,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_assigned_bf TYPE sfw_bfbs_outtab,
|
||||
lt_nested_bfs TYPE sfw_bsbs_outtab,
|
||||
lt_parent_bfs TYPE sfw_bs_bs_parent_outtab.
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_bfset = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
lo_bfs = cl_sfw_bfs=>get_bfs( lv_bfset ).
|
||||
lo_bfs->free( ).
|
||||
lo_bfs = cl_sfw_bfs=>get_bfs( lv_bfset ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error from CL_SFW_BFS=>GET_BFS'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header = lo_bfs->get_header_data( ).
|
||||
CLEAR: ls_header-author,
|
||||
ls_header-createdon,
|
||||
ls_header-changedby,
|
||||
ls_header-changedon,
|
||||
ls_header-timestamp.
|
||||
|
||||
lo_bfs->get_texts(
|
||||
IMPORTING
|
||||
p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lt_assigned_bf = lo_bfs->get_assigned_bf( ).
|
||||
lt_nested_bfs = lo_bfs->get_nested_bfs( ).
|
||||
lt_parent_bfs = lo_bfs->get_nested_parent( ).
|
||||
|
||||
io_xml->add( ig_data = ls_header
|
||||
iv_name = 'HEADER' ).
|
||||
io_xml->add( ig_data = lv_name_32
|
||||
iv_name = 'NAME32' ).
|
||||
io_xml->add( ig_data = lv_name_80
|
||||
iv_name = 'NAME80' ).
|
||||
|
||||
io_xml->add( ig_data = lt_assigned_bf
|
||||
iv_name = 'ASSIGNED_BF' ).
|
||||
io_xml->add( ig_data = lt_nested_bfs
|
||||
iv_name = 'NESTED_BFS' ).
|
||||
io_xml->add( ig_data = lt_parent_bfs
|
||||
iv_name = 'PARENT_BFS' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_bfset TYPE sfw_bset,
|
||||
lo_bfs TYPE REF TO cl_sfw_bfs,
|
||||
ls_header TYPE sfw_bs,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_assigned_bf TYPE sfw_bfbs_outtab,
|
||||
lt_nested_bfs TYPE sfw_bsbs_outtab,
|
||||
lt_parent_bfs TYPE sfw_bs_bs_parent_outtab.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'HEADER'
|
||||
CHANGING cg_data = ls_header ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME32'
|
||||
CHANGING cg_data = lv_name_32 ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME80'
|
||||
CHANGING cg_data = lv_name_80 ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ASSIGNED_BF'
|
||||
CHANGING cg_data = lt_assigned_bf ).
|
||||
io_xml->read( EXPORTING iv_name = 'NESTED_BFS'
|
||||
CHANGING cg_data = lt_nested_bfs ).
|
||||
io_xml->read( EXPORTING iv_name = 'PARENT_BFS'
|
||||
CHANGING cg_data = lt_parent_bfs ).
|
||||
|
||||
lv_bfset = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_bfs = cl_sfw_bfs=>create_bfs( lv_bfset ).
|
||||
CATCH cx_pak_not_authorized cx_pak_invalid_state cx_pak_invalid_data.
|
||||
_raise 'error in CL_SFW_BFS=>CREATE_BFS'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header-author = sy-uname.
|
||||
ls_header-createdon = sy-datum.
|
||||
lo_bfs->set_header_data( ls_header ).
|
||||
|
||||
lo_bfs->set_texts( p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lo_bfs->set_assigned_bf( lt_assigned_bf ).
|
||||
lo_bfs->set_assigned_bfs( lt_nested_bfs ).
|
||||
lo_bfs->set_nested_parent( lt_parent_bfs ).
|
||||
|
||||
lo_bfs->save_all( ).
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_bfset TYPE sfw_bset,
|
||||
lo_bfs TYPE REF TO cl_sfw_bfs.
|
||||
|
||||
|
||||
lv_bfset = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_bfs = cl_sfw_bfs=>get_bfs( lv_bfset ).
|
||||
lo_bfs->set_delete_flag( lv_bfset ).
|
||||
lo_bfs->save_all( ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error deleting BF'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'SFBS'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_SFBS IMPLEMENTATION
|
48
src/zabapgit_object_sfbs.prog.xml
Normal file
48
src/zabapgit_object_sfbs.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SFBS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SFBS</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
180
src/zabapgit_object_sfsw.prog.abap
Normal file
180
src/zabapgit_object_sfsw.prog.abap
Normal file
|
@ -0,0 +1,180 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SFSW
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_sfsw DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfsw DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
|
||||
ENDCLASS. "lcl_object_sfsw DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_sfsw IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfsw IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_tadir TYPE tadir,
|
||||
lv_switch_id TYPE sfw_switch_id.
|
||||
|
||||
lv_switch_id = ms_item-obj_name.
|
||||
IF cl_sfw_sw=>check_existence( lv_switch_id ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ls_tadir = lcl_tadir=>read_single(
|
||||
iv_object = ms_item-obj_type
|
||||
iv_obj_name = ms_item-obj_name ).
|
||||
IF ls_tadir IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rv_bool = abap_true.
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_switch_id TYPE sfw_switch_id,
|
||||
lo_switch TYPE REF TO cl_sfw_sw,
|
||||
ls_header TYPE sfw_switch,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_parent_bf TYPE sfw_bf_sw_outtab,
|
||||
lt_conflicts TYPE sfw_confl_outtab.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_switch_id = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
lo_switch = cl_sfw_sw=>get_switch_from_db( lv_switch_id ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error from CL_SFW_SW=>GET_SWITCH'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header = lo_switch->get_header_data( ).
|
||||
CLEAR: ls_header-author,
|
||||
ls_header-createdon,
|
||||
ls_header-changedby,
|
||||
ls_header-changedon,
|
||||
ls_header-timestamp.
|
||||
|
||||
lo_switch->get_texts(
|
||||
IMPORTING
|
||||
p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lt_parent_bf = lo_switch->get_parent_bf( ).
|
||||
lt_conflicts = lo_switch->get_conflicts( ).
|
||||
|
||||
io_xml->add( ig_data = ls_header
|
||||
iv_name = 'HEADER' ).
|
||||
io_xml->add( ig_data = lv_name_32
|
||||
iv_name = 'NAME32' ).
|
||||
io_xml->add( ig_data = lv_name_80
|
||||
iv_name = 'NAME80' ).
|
||||
|
||||
io_xml->add( ig_data = lt_parent_bf
|
||||
iv_name = 'PARENT_BF' ).
|
||||
io_xml->add( ig_data = lt_conflicts
|
||||
iv_name = 'CONFLICTS' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lo_switch TYPE REF TO cl_sfw_sw,
|
||||
lv_switch_id TYPE sfw_switch_id,
|
||||
ls_header TYPE sfw_switch,
|
||||
lv_name_32 TYPE sfw_name32,
|
||||
lv_name_80 TYPE sfw_name80,
|
||||
lt_parent_bf TYPE sfw_bf_sw_outtab,
|
||||
lt_conflicts TYPE sfw_confl_outtab.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'HEADER'
|
||||
CHANGING cg_data = ls_header ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME32'
|
||||
CHANGING cg_data = lv_name_32 ).
|
||||
io_xml->read( EXPORTING iv_name = 'NAME80'
|
||||
CHANGING cg_data = lv_name_80 ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'PARENT_BF'
|
||||
CHANGING cg_data = lt_parent_bf ).
|
||||
io_xml->read( EXPORTING iv_name = 'CONFLICTS'
|
||||
CHANGING cg_data = lt_conflicts ).
|
||||
|
||||
lv_switch_id = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_switch = cl_sfw_sw=>create_switch( lv_switch_id ).
|
||||
CATCH cx_pak_not_authorized cx_pak_invalid_state cx_pak_invalid_data.
|
||||
_raise 'error in CL_SFW_SW=>CREATE_SWITCH'.
|
||||
ENDTRY.
|
||||
|
||||
ls_header-author = sy-uname.
|
||||
ls_header-createdon = sy-datum.
|
||||
lo_switch->set_header_data( ls_header ).
|
||||
|
||||
lo_switch->set_texts( p_32 = lv_name_32
|
||||
p_80 = lv_name_80 ).
|
||||
|
||||
lo_switch->set_parent_bf( lt_parent_bf ).
|
||||
lo_switch->set_conflicts( lt_conflicts ).
|
||||
|
||||
lo_switch->save_all(
|
||||
EXCEPTIONS
|
||||
not_saved = 1
|
||||
OTHERS = 2 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error in CL_SFW_SW->SAVE_ALL'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_switch_id TYPE sfw_switch_id,
|
||||
lo_switch TYPE REF TO cl_sfw_sw.
|
||||
|
||||
|
||||
lv_switch_id = ms_item-obj_name.
|
||||
TRY.
|
||||
lo_switch = cl_sfw_sw=>get_switch( lv_switch_id ).
|
||||
lo_switch->set_delete_flag( lv_switch_id ).
|
||||
lo_switch->save_all( ).
|
||||
CATCH cx_pak_invalid_data cx_pak_invalid_state cx_pak_not_authorized.
|
||||
_raise 'Error deleting Switch'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
operation = 'SHOW'
|
||||
object_name = ms_item-obj_name
|
||||
object_type = 'SFSW'
|
||||
in_new_window = abap_true.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_sfsw IMPLEMENTATION
|
48
src/zabapgit_object_sfsw.prog.xml
Normal file
48
src/zabapgit_object_sfsw.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SFSW</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SFSW</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
325
src/zabapgit_object_shi3.prog.abap
Normal file
325
src/zabapgit_object_shi3.prog.abap
Normal file
|
@ -0,0 +1,325 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SHI3
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_shi3 DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shi3 DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
is_item TYPE ty_item
|
||||
iv_language TYPE spras.
|
||||
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
TYPES: BEGIN OF ty_id_map,
|
||||
old TYPE ttree-id,
|
||||
new TYPE ttree-id,
|
||||
END OF ty_id_map.
|
||||
TYPES tt_id_map TYPE STANDARD TABLE OF ty_id_map.
|
||||
TYPES ts_id_map TYPE SORTED TABLE OF ty_id_map WITH UNIQUE KEY old.
|
||||
|
||||
DATA: mv_tree_id TYPE ttree-id,
|
||||
mt_map TYPE ts_id_map. " SORTED !
|
||||
|
||||
METHODS jump_se43
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS strip_stamps
|
||||
CHANGING cs_head TYPE ttree
|
||||
ct_nodes TYPE hier_iface_t.
|
||||
|
||||
METHODS regenerate_ids
|
||||
CHANGING ct_nodes TYPE hier_iface_t
|
||||
ct_refs TYPE hier_ref_t
|
||||
ct_texts TYPE hier_texts_t
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS replace_id
|
||||
IMPORTING iv_id TYPE clike
|
||||
RETURNING VALUE(rv_new_id) TYPE ttree-id
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_shi3 DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_shi3 IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shi3 IMPLEMENTATION.
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( is_item = is_item iv_language = iv_language ).
|
||||
mv_tree_id = ms_item-obj_name.
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD jump_se43.
|
||||
|
||||
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 = 'SAPLBMEN'.
|
||||
<ls_bdcdata>-dynpro = '0200'.
|
||||
<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 = 'BMENUNAME-ID'.
|
||||
<ls_bdcdata>-fval = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
|
||||
STARTING NEW TASK 'GIT'
|
||||
EXPORTING
|
||||
tcode = 'SE43'
|
||||
mode_val = 'E'
|
||||
TABLES
|
||||
using_tab = lt_bdcdata
|
||||
EXCEPTIONS
|
||||
system_failure = 1
|
||||
communication_failure = 2
|
||||
resource_failure = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from ABAP4_CALL_TRANSACTION, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "jump_se43
|
||||
|
||||
METHOD lif_object~jump.
|
||||
jump_se43( ).
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_msg TYPE hier_mess,
|
||||
ls_header TYPE ttree,
|
||||
ls_tadir TYPE tadir.
|
||||
|
||||
CALL FUNCTION 'STREE_STRUCTURE_EXIST'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
do_not_read_devclass = ''
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
structure_header = ls_header
|
||||
structure_tadir = ls_tadir.
|
||||
|
||||
rv_bool = boolc( ls_header-id IS NOT INITIAL ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
CALL FUNCTION 'BMENU_DELETE_TREE'
|
||||
EXPORTING
|
||||
tree_id = mv_tree_id
|
||||
EXCEPTIONS
|
||||
trees_do_not_exist = 1
|
||||
no_authority = 2
|
||||
canceled = 3
|
||||
OTHERS = 4.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from BMENU_DELETE_TREE, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_msg TYPE hier_mess,
|
||||
ls_head TYPE ttree,
|
||||
lt_titles TYPE TABLE OF ttreet,
|
||||
lt_nodes TYPE TABLE OF hier_iface,
|
||||
lt_texts TYPE TABLE OF hier_texts,
|
||||
lt_refs TYPE TABLE OF hier_ref.
|
||||
|
||||
CALL FUNCTION 'STREE_STRUCTURE_READ'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
structure_header = ls_head
|
||||
TABLES
|
||||
description = lt_titles.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from STREE_STRUCTURE_READ, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'STREE_HIERARCHY_READ'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
read_also_texts = 'X'
|
||||
all_languages = 'X'
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
TABLES
|
||||
list_of_nodes = lt_nodes
|
||||
list_of_references = lt_refs
|
||||
list_of_texts = lt_texts.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from STREE_HIERARCHY_READ, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
strip_stamps( CHANGING cs_head = ls_head
|
||||
ct_nodes = lt_nodes ).
|
||||
|
||||
io_xml->add( iv_name = 'TREE_HEAD'
|
||||
ig_data = ls_head ).
|
||||
io_xml->add( iv_name = 'TREE_TITLES'
|
||||
ig_data = lt_titles ).
|
||||
io_xml->add( iv_name = 'TREE_NODES'
|
||||
ig_data = lt_nodes ).
|
||||
io_xml->add( iv_name = 'TREE_REFS'
|
||||
ig_data = lt_refs ).
|
||||
io_xml->add( iv_name = 'TREE_TEXTS'
|
||||
ig_data = lt_texts ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD strip_stamps.
|
||||
|
||||
FIELD-SYMBOLS <ls_node> LIKE LINE OF ct_nodes.
|
||||
|
||||
CLEAR: cs_head-luser, cs_head-ldate, cs_head-ltime.
|
||||
CLEAR: cs_head-fuser, cs_head-fdate, cs_head-ftime.
|
||||
CLEAR: cs_head-responsibl.
|
||||
|
||||
LOOP AT ct_nodes ASSIGNING <ls_node>.
|
||||
CLEAR: <ls_node>-luser, <ls_node>-ldate, <ls_node>-ltime.
|
||||
CLEAR: <ls_node>-fuser, <ls_node>-fdate, <ls_node>-ftime.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "strip_stamps
|
||||
|
||||
METHOD regenerate_ids.
|
||||
|
||||
DATA: ls_uid TYPE sys_uid,
|
||||
lt_map TYPE tt_id_map.
|
||||
|
||||
FIELD-SYMBOLS: <ls_node> LIKE LINE OF ct_nodes,
|
||||
<ls_ref> LIKE LINE OF ct_refs,
|
||||
<ls_text> LIKE LINE OF ct_texts,
|
||||
<ls_map> LIKE LINE OF mt_map.
|
||||
|
||||
"Build map
|
||||
LOOP AT ct_nodes ASSIGNING <ls_node>.
|
||||
APPEND INITIAL LINE TO lt_map ASSIGNING <ls_map>.
|
||||
IF <ls_node>-parent_id IS INITIAL.
|
||||
<ls_map>-old = <ls_node>-node_id.
|
||||
<ls_map>-new = <ls_node>-node_id. "Root node
|
||||
ELSE.
|
||||
CALL FUNCTION 'STREE_GET_UNIQUE_ID'
|
||||
IMPORTING
|
||||
unique_id = ls_uid.
|
||||
|
||||
<ls_map>-old = <ls_node>-node_id.
|
||||
<ls_map>-new = ls_uid-id.
|
||||
ENDIF.
|
||||
<ls_node>-node_id = <ls_map>-new. "Replace id
|
||||
ENDLOOP.
|
||||
|
||||
mt_map = lt_map. "Sort
|
||||
|
||||
LOOP AT ct_nodes ASSIGNING <ls_node>.
|
||||
<ls_node>-parent_id = replace_id( <ls_node>-parent_id ).
|
||||
<ls_node>-brother_id = replace_id( <ls_node>-brother_id ).
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ct_refs ASSIGNING <ls_ref>.
|
||||
<ls_ref>-node_id = replace_id( <ls_ref>-node_id ).
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT ct_texts ASSIGNING <ls_text>.
|
||||
<ls_text>-node_id = replace_id( <ls_text>-node_id ).
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "regenerate_ids
|
||||
|
||||
METHOD replace_id.
|
||||
|
||||
DATA ls_map LIKE LINE OF mt_map.
|
||||
|
||||
IF iv_id IS INITIAL.
|
||||
RETURN. "No substitution for empty values
|
||||
ENDIF.
|
||||
|
||||
READ TABLE mt_map WITH TABLE KEY old = iv_id INTO ls_map.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Cannot replace id, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
rv_new_id = ls_map-new.
|
||||
|
||||
ENDMETHOD. "replace_id
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_msg TYPE hier_mess,
|
||||
ls_head TYPE ttree,
|
||||
lt_titles TYPE TABLE OF ttreet,
|
||||
lt_nodes TYPE TABLE OF hier_iface,
|
||||
lt_texts TYPE TABLE OF hier_texts,
|
||||
lt_refs TYPE TABLE OF hier_ref.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TREE_HEAD'
|
||||
CHANGING cg_data = ls_head ).
|
||||
io_xml->read( EXPORTING iv_name = 'TREE_TITLES'
|
||||
CHANGING cg_data = lt_titles ).
|
||||
io_xml->read( EXPORTING iv_name = 'TREE_NODES'
|
||||
CHANGING cg_data = lt_nodes ).
|
||||
io_xml->read( EXPORTING iv_name = 'TREE_REFS'
|
||||
CHANGING cg_data = lt_refs ).
|
||||
io_xml->read( EXPORTING iv_name = 'TREE_TEXTS'
|
||||
CHANGING cg_data = lt_texts ).
|
||||
|
||||
regenerate_ids( CHANGING ct_nodes = lt_nodes
|
||||
ct_refs = lt_refs
|
||||
ct_texts = lt_texts ).
|
||||
|
||||
IF lif_object~exists( ) = abap_true.
|
||||
lif_object~delete( ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'STREE_HIERARCHY_SAVE'
|
||||
EXPORTING
|
||||
structure_id = mv_tree_id
|
||||
structure_type = 'BMENU'
|
||||
structure_description = space
|
||||
structure_masterlanguage = mv_language
|
||||
structure_responsible = sy-uname
|
||||
development_class = iv_package
|
||||
IMPORTING
|
||||
message = ls_msg
|
||||
TABLES
|
||||
list_of_nodes = lt_nodes
|
||||
list_of_references = lt_refs
|
||||
list_of_texts = lt_texts
|
||||
structure_descriptions = lt_titles
|
||||
EXCEPTIONS
|
||||
no_nodes_given = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from STREE_HIERARCHY_SAVE, SHI3'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_shi3 IMPLEMENTATION
|
48
src/zabapgit_object_shi3.prog.xml
Normal file
48
src/zabapgit_object_shi3.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SHI3</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SHI3</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
163
src/zabapgit_object_shlp.prog.abap
Normal file
163
src/zabapgit_object_shlp.prog.abap
Normal file
|
@ -0,0 +1,163 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SHLP
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_shlp DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shlp DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_dtel IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shlp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_shlpname TYPE dd30l-shlpname.
|
||||
|
||||
|
||||
SELECT SINGLE shlpname FROM dd30l INTO lv_shlpname
|
||||
WHERE shlpname = ms_item-obj_name
|
||||
AND as4local = 'A'. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-SHMA'
|
||||
iv_field = 'RSRD1-SHMA_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'H'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, SHLP'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd30v TYPE dd30v,
|
||||
lt_dd31v TYPE TABLE OF dd31v,
|
||||
lt_dd32p TYPE TABLE OF dd32p,
|
||||
lt_dd33v TYPE TABLE OF dd33v.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_SHLP_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd30v_wa = ls_dd30v
|
||||
TABLES
|
||||
dd31v_tab = lt_dd31v
|
||||
dd32p_tab = lt_dd32p
|
||||
dd33v_tab = lt_dd33v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_SHLP_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd30v IS INITIAL.
|
||||
RETURN. " does not exist in system
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd30v-as4user,
|
||||
ls_dd30v-as4date,
|
||||
ls_dd30v-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD30V'
|
||||
ig_data = ls_dd30v ).
|
||||
io_xml->add( ig_data = lt_dd31v
|
||||
iv_name = 'DD31V_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd32p
|
||||
iv_name = 'DD32P_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd33v
|
||||
iv_name = 'DD33V_TABLE' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd30v TYPE dd30v,
|
||||
lt_dd31v TYPE TABLE OF dd31v,
|
||||
lt_dd32p TYPE TABLE OF dd32p,
|
||||
lt_dd33v TYPE TABLE OF dd33v.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD30V'
|
||||
CHANGING cg_data = ls_dd30v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD31V_TABLE'
|
||||
CHANGING cg_data = lt_dd31v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD32P_TABLE'
|
||||
CHANGING cg_data = lt_dd32p ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD33V_TABLE'
|
||||
CHANGING cg_data = lt_dd33v ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_SHLP_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd30v_wa = ls_dd30v
|
||||
TABLES
|
||||
dd31v_tab = lt_dd31v
|
||||
dd32p_tab = lt_dd32p
|
||||
dd33v_tab = lt_dd33v
|
||||
EXCEPTIONS
|
||||
shlp_not_found = 1
|
||||
name_inconsistent = 2
|
||||
shlp_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_SHLP_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_shlp IMPLEMENTATION
|
48
src/zabapgit_object_shlp.prog.xml
Normal file
48
src/zabapgit_object_shlp.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SHLP</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SHLP</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
406
src/zabapgit_object_sicf.prog.abap
Normal file
406
src/zabapgit_object_sicf.prog.abap
Normal file
|
@ -0,0 +1,406 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SICF
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_sicf DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sicf DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: ty_icfhandler_tt TYPE STANDARD TABLE OF icfhandler WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_sicf_key,
|
||||
icf_name TYPE icfservice-icf_name,
|
||||
icfparguid TYPE icfservice-icfparguid,
|
||||
END OF ty_sicf_key.
|
||||
|
||||
METHODS read
|
||||
EXPORTING es_icfservice TYPE icfservice
|
||||
es_icfdocu TYPE icfdocu
|
||||
et_icfhandler TYPE ty_icfhandler_tt
|
||||
ev_url TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS insert_sicf
|
||||
IMPORTING is_icfservice TYPE icfservice
|
||||
is_icfdocu TYPE icfdocu
|
||||
it_icfhandler TYPE ty_icfhandler_tt
|
||||
iv_package TYPE devclass
|
||||
iv_url TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS change_sicf
|
||||
IMPORTING is_icfservice TYPE icfservice
|
||||
is_icfdocu TYPE icfdocu
|
||||
it_icfhandler TYPE ty_icfhandler_tt
|
||||
iv_package TYPE devclass
|
||||
iv_parent TYPE icfparguid
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS to_icfhndlist
|
||||
IMPORTING it_list TYPE ty_icfhandler_tt
|
||||
RETURNING VALUE(rt_list) TYPE icfhndlist.
|
||||
|
||||
METHODS find_parent
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(rv_parent) TYPE icfparguid
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_sicf DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_sicf IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sicf IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: ls_icfservice TYPE icfservice.
|
||||
|
||||
|
||||
read( IMPORTING es_icfservice = ls_icfservice ).
|
||||
rv_bool = boolc( NOT ls_icfservice IS INITIAL ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_icfservice TYPE icfservice,
|
||||
ls_icfdocu TYPE icfdocu,
|
||||
lv_url TYPE string,
|
||||
lt_icfhandler TYPE TABLE OF icfhandler.
|
||||
|
||||
|
||||
read( IMPORTING es_icfservice = ls_icfservice
|
||||
es_icfdocu = ls_icfdocu
|
||||
et_icfhandler = lt_icfhandler
|
||||
ev_url = lv_url ).
|
||||
IF ls_icfservice IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CLEAR ls_icfservice-icfnodguid.
|
||||
CLEAR ls_icfservice-icfparguid.
|
||||
CLEAR ls_icfservice-icf_user.
|
||||
CLEAR ls_icfservice-icf_cclnt.
|
||||
CLEAR ls_icfservice-icf_mclnt.
|
||||
|
||||
io_xml->add( iv_name = 'URL'
|
||||
ig_data = lv_url ).
|
||||
io_xml->add( iv_name = 'ICFSERVICE'
|
||||
ig_data = ls_icfservice ).
|
||||
io_xml->add( iv_name = 'ICFDOCU'
|
||||
ig_data = ls_icfdocu ).
|
||||
io_xml->add( iv_name = 'ICFHANDLER_TABLE'
|
||||
ig_data = lt_icfhandler ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: lt_serv_info TYPE icfservtbl,
|
||||
ls_serv_info LIKE LINE OF lt_serv_info,
|
||||
ls_key TYPE ty_sicf_key.
|
||||
|
||||
FIELD-SYMBOLS: <ls_icfhandler> LIKE LINE OF et_icfhandler.
|
||||
|
||||
|
||||
CLEAR es_icfservice.
|
||||
CLEAR es_icfdocu.
|
||||
CLEAR et_icfhandler.
|
||||
CLEAR ev_url.
|
||||
|
||||
ls_key = ms_item-obj_name.
|
||||
IF ls_key-icfparguid IS INITIAL.
|
||||
* limitation: name must be unique
|
||||
SELECT SINGLE icfparguid FROM icfservice
|
||||
INTO ls_key-icfparguid
|
||||
WHERE icf_name = ls_key-icf_name
|
||||
AND icf_cuser <> 'SAP' ##warn_ok.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
cl_icf_tree=>if_icf_tree~get_info_from_serv(
|
||||
EXPORTING
|
||||
icf_name = ls_key-icf_name
|
||||
icfparguid = ls_key-icfparguid
|
||||
icf_langu = mv_language
|
||||
IMPORTING
|
||||
serv_info = lt_serv_info
|
||||
icfdocu = es_icfdocu
|
||||
url = ev_url
|
||||
EXCEPTIONS
|
||||
wrong_name = 1
|
||||
wrong_parguid = 2
|
||||
incorrect_service = 3
|
||||
no_authority = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from get_info_from_serv'.
|
||||
ENDIF.
|
||||
|
||||
ASSERT lines( lt_serv_info ) = 1.
|
||||
READ TABLE lt_serv_info INDEX 1 INTO ls_serv_info.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
MOVE-CORRESPONDING ls_serv_info-service TO es_icfservice.
|
||||
CLEAR es_icfservice-icf_cuser.
|
||||
CLEAR es_icfservice-icf_cdate.
|
||||
CLEAR es_icfservice-icf_muser.
|
||||
CLEAR es_icfservice-icf_mdate.
|
||||
|
||||
CLEAR es_icfdocu-icfparguid.
|
||||
|
||||
APPEND LINES OF ls_serv_info-handlertbl TO et_icfhandler.
|
||||
LOOP AT et_icfhandler ASSIGNING <ls_icfhandler>.
|
||||
CLEAR <ls_icfhandler>-icfparguid.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_icfservice TYPE icfservice,
|
||||
ls_read TYPE icfservice,
|
||||
ls_icfdocu TYPE icfdocu,
|
||||
lv_url TYPE string,
|
||||
lt_icfhandler TYPE TABLE OF icfhandler.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'URL'
|
||||
CHANGING cg_data = lv_url ).
|
||||
io_xml->read( EXPORTING iv_name = 'ICFSERVICE'
|
||||
CHANGING cg_data = ls_icfservice ).
|
||||
io_xml->read( EXPORTING iv_name = 'ICFDOCU'
|
||||
CHANGING cg_data = ls_icfdocu ).
|
||||
io_xml->read( EXPORTING iv_name = 'ICFHANDLER_TABLE'
|
||||
CHANGING cg_data = lt_icfhandler ).
|
||||
|
||||
read( IMPORTING es_icfservice = ls_read ).
|
||||
IF ls_read IS INITIAL.
|
||||
insert_sicf( is_icfservice = ls_icfservice
|
||||
is_icfdocu = ls_icfdocu
|
||||
it_icfhandler = lt_icfhandler
|
||||
iv_package = iv_package
|
||||
iv_url = lv_url ).
|
||||
ELSE.
|
||||
change_sicf( is_icfservice = ls_icfservice
|
||||
is_icfdocu = ls_icfdocu
|
||||
it_icfhandler = lt_icfhandler
|
||||
iv_package = iv_package
|
||||
iv_parent = ls_read-icfparguid ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD to_icfhndlist.
|
||||
|
||||
FIELD-SYMBOLS: <ls_list> LIKE LINE OF it_list.
|
||||
|
||||
|
||||
* convert to sorted table
|
||||
LOOP AT it_list ASSIGNING <ls_list>.
|
||||
INSERT <ls_list>-icfhandler INTO TABLE rt_list.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "to_icfhndlist
|
||||
|
||||
METHOD find_parent.
|
||||
|
||||
cl_icf_tree=>if_icf_tree~service_from_url(
|
||||
EXPORTING
|
||||
url = iv_url
|
||||
hostnumber = 0
|
||||
IMPORTING
|
||||
icfnodguid = rv_parent
|
||||
EXCEPTIONS
|
||||
wrong_application = 1
|
||||
no_application = 2
|
||||
not_allow_application = 3
|
||||
wrong_url = 4
|
||||
no_authority = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from service_from_url'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "find_parent
|
||||
|
||||
METHOD insert_sicf.
|
||||
|
||||
DATA: lt_icfhndlist TYPE icfhndlist,
|
||||
ls_icfserdesc TYPE icfserdesc,
|
||||
ls_icfdocu TYPE icfdocu,
|
||||
lv_parent TYPE icfparguid.
|
||||
|
||||
|
||||
lt_icfhndlist = to_icfhndlist( it_icfhandler ).
|
||||
lv_parent = find_parent( iv_url ).
|
||||
|
||||
* nice, it seems that the structure should be mistreated
|
||||
ls_icfdocu = is_icfdocu-icf_docu.
|
||||
|
||||
MOVE-CORRESPONDING is_icfservice TO ls_icfserdesc.
|
||||
|
||||
cl_icf_tree=>if_icf_tree~insert_node(
|
||||
EXPORTING
|
||||
icf_name = is_icfservice-orig_name
|
||||
icfparguid = lv_parent
|
||||
icfdocu = ls_icfdocu
|
||||
doculang = mv_language
|
||||
icfhandlst = lt_icfhndlist
|
||||
package = iv_package
|
||||
application = space
|
||||
icfserdesc = ls_icfserdesc
|
||||
icfactive = abap_true
|
||||
EXCEPTIONS
|
||||
empty_icf_name = 1
|
||||
no_new_virtual_host = 2
|
||||
special_service_error = 3
|
||||
parent_not_existing = 4
|
||||
enqueue_error = 5
|
||||
node_already_existing = 6
|
||||
empty_docu = 7
|
||||
doculang_not_installed = 8
|
||||
security_info_error = 9
|
||||
user_password_error = 10
|
||||
password_encryption_error = 11
|
||||
invalid_url = 12
|
||||
invalid_otr_concept = 13
|
||||
formflg401_error = 14
|
||||
handler_error = 15
|
||||
transport_error = 16
|
||||
tadir_error = 17
|
||||
package_not_found = 18
|
||||
wrong_application = 19
|
||||
not_allow_application = 20
|
||||
no_application = 21
|
||||
invalid_icfparguid = 22
|
||||
alt_name_invalid = 23
|
||||
alternate_name_exist = 24
|
||||
wrong_icf_name = 25
|
||||
no_authority = 26
|
||||
OTHERS = 27 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from insert_node'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "insert_sicf
|
||||
|
||||
METHOD change_sicf.
|
||||
|
||||
DATA: lt_icfhndlist TYPE icfhndlist,
|
||||
lt_existing TYPE TABLE OF icfhandler,
|
||||
ls_icfserdesc TYPE icfserdesc.
|
||||
|
||||
FIELD-SYMBOLS: <ls_existing> LIKE LINE OF lt_existing.
|
||||
|
||||
|
||||
lt_icfhndlist = to_icfhndlist( it_icfhandler ).
|
||||
|
||||
* Do not add handlers if they already exist, it will make the below
|
||||
* call to SAP standard code raise an exception
|
||||
SELECT * FROM icfhandler INTO TABLE lt_existing
|
||||
WHERE icf_name = is_icfservice-icf_name.
|
||||
LOOP AT lt_existing ASSIGNING <ls_existing>.
|
||||
DELETE TABLE lt_icfhndlist FROM <ls_existing>-icfhandler.
|
||||
ENDLOOP.
|
||||
|
||||
MOVE-CORRESPONDING is_icfservice TO ls_icfserdesc.
|
||||
|
||||
cl_icf_tree=>if_icf_tree~change_node(
|
||||
EXPORTING
|
||||
icf_name = is_icfservice-orig_name
|
||||
icfparguid = iv_parent
|
||||
icfdocu = is_icfdocu
|
||||
doculang = mv_language
|
||||
icfhandlst = lt_icfhndlist
|
||||
package = iv_package
|
||||
application = space
|
||||
icfserdesc = ls_icfserdesc
|
||||
icfactive = abap_true
|
||||
EXCEPTIONS
|
||||
empty_icf_name = 1
|
||||
no_new_virtual_host = 2
|
||||
special_service_error = 3
|
||||
parent_not_existing = 4
|
||||
enqueue_error = 5
|
||||
node_already_existing = 6
|
||||
empty_docu = 7
|
||||
doculang_not_installed = 8
|
||||
security_info_error = 9
|
||||
user_password_error = 10
|
||||
password_encryption_error = 11
|
||||
invalid_url = 12
|
||||
invalid_otr_concept = 13
|
||||
formflg401_error = 14
|
||||
handler_error = 15
|
||||
transport_error = 16
|
||||
tadir_error = 17
|
||||
package_not_found = 18
|
||||
wrong_application = 19
|
||||
not_allow_application = 20
|
||||
no_application = 21
|
||||
invalid_icfparguid = 22
|
||||
alt_name_invalid = 23
|
||||
alternate_name_exist = 24
|
||||
wrong_icf_name = 25
|
||||
no_authority = 26
|
||||
OTHERS = 27 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from change_node'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "change_sicf
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: ls_icfservice TYPE icfservice.
|
||||
|
||||
|
||||
read( IMPORTING es_icfservice = ls_icfservice ).
|
||||
|
||||
cl_icf_tree=>if_icf_tree~delete_node(
|
||||
EXPORTING
|
||||
icfparguid = ls_icfservice-icfparguid
|
||||
CHANGING
|
||||
icf_name = ls_icfservice-icf_name
|
||||
EXCEPTIONS
|
||||
no_virtual_host_delete = 1
|
||||
special_service_error = 2
|
||||
enqueue_error = 3
|
||||
node_not_existing = 4
|
||||
node_has_childs = 5
|
||||
node_is_aliased = 6
|
||||
node_not_in_original_system = 7
|
||||
transport_error = 8
|
||||
tadir_error = 9
|
||||
db_error = 10
|
||||
no_authority = 11
|
||||
OTHERS = 12 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from delete_node'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, SICF, jump'.
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_sicf IMPLEMENTATION
|
48
src/zabapgit_object_sicf.prog.xml
Normal file
48
src/zabapgit_object_sicf.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SICF</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SICF</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
301
src/zabapgit_object_smim.prog.abap
Normal file
301
src/zabapgit_object_smim.prog.abap
Normal file
|
@ -0,0 +1,301 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SMIM
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_smim DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_smim DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS get_filename
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(rv_filename) TYPE string.
|
||||
|
||||
METHODS find_content
|
||||
IMPORTING iv_url TYPE string
|
||||
RETURNING VALUE(rv_content) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS build_filename
|
||||
IMPORTING iv_filename TYPE string
|
||||
RETURNING VALUE(rv_filename) TYPE string.
|
||||
|
||||
METHODS get_url_for_io
|
||||
EXPORTING ev_url TYPE string
|
||||
ev_is_folder TYPE boole_d
|
||||
RAISING lcx_not_found
|
||||
lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_smim DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_smim IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_smim IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
TRY.
|
||||
get_url_for_io( ).
|
||||
rv_bool = abap_true.
|
||||
CATCH lcx_not_found.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD get_url_for_io.
|
||||
|
||||
DATA: ls_io TYPE skwf_io,
|
||||
lv_url TYPE skwf_url,
|
||||
ls_smimloio TYPE smimloio,
|
||||
lv_loio TYPE sdok_docid.
|
||||
|
||||
|
||||
lv_loio = ms_item-obj_name.
|
||||
|
||||
CLEAR ev_url.
|
||||
CLEAR ev_is_folder.
|
||||
|
||||
SELECT SINGLE * FROM smimloio INTO ls_smimloio
|
||||
WHERE loio_id = lv_loio. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE lcx_not_found.
|
||||
ENDIF.
|
||||
|
||||
IF ls_smimloio-lo_class = wbmr_c_skwf_folder_class.
|
||||
ev_is_folder = abap_true.
|
||||
ls_io-objtype = skwfc_obtype_folder.
|
||||
ELSE.
|
||||
ls_io-objtype = skwfc_obtype_loio.
|
||||
ENDIF.
|
||||
ls_io-class = ls_smimloio-lo_class.
|
||||
ls_io-objid = ls_smimloio-loio_id.
|
||||
|
||||
CALL FUNCTION 'SKWF_NMSPC_IO_ADDRESS_GET'
|
||||
EXPORTING
|
||||
io = ls_io
|
||||
IMPORTING
|
||||
url = lv_url.
|
||||
|
||||
ev_url = lv_url.
|
||||
|
||||
ENDMETHOD. "get_url_for_io
|
||||
|
||||
METHOD build_filename.
|
||||
|
||||
CONCATENATE ms_item-obj_name ms_item-obj_type iv_filename
|
||||
INTO rv_filename SEPARATED BY '.'.
|
||||
TRANSLATE rv_filename TO LOWER CASE.
|
||||
|
||||
ENDMETHOD. "build_filename
|
||||
|
||||
METHOD find_content.
|
||||
|
||||
DATA: lv_filename TYPE string,
|
||||
lt_files TYPE ty_files_tt.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files.
|
||||
|
||||
|
||||
lv_filename = get_filename( iv_url ).
|
||||
|
||||
lv_filename = build_filename( lv_filename ).
|
||||
|
||||
lt_files = mo_files->get_files( ).
|
||||
|
||||
READ TABLE lt_files ASSIGNING <ls_file> WITH KEY filename = lv_filename.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'SMIM, file not found'.
|
||||
ENDIF.
|
||||
|
||||
rv_content = <ls_file>-data.
|
||||
|
||||
ENDMETHOD. "find_content
|
||||
|
||||
METHOD get_filename.
|
||||
|
||||
DATA: lv_lines TYPE i,
|
||||
lt_strings TYPE TABLE OF string.
|
||||
|
||||
|
||||
SPLIT iv_url AT '/' INTO TABLE lt_strings.
|
||||
lv_lines = lines( lt_strings ).
|
||||
ASSERT lv_lines > 0.
|
||||
READ TABLE lt_strings INDEX lv_lines INTO rv_filename.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. "get_filename
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_url TYPE string,
|
||||
lv_folder TYPE abap_bool,
|
||||
lv_filename TYPE string,
|
||||
ls_file TYPE ty_file,
|
||||
lv_content TYPE xstring,
|
||||
li_api TYPE REF TO if_mr_api.
|
||||
|
||||
|
||||
TRY.
|
||||
get_url_for_io(
|
||||
IMPORTING
|
||||
ev_url = lv_url
|
||||
ev_is_folder = lv_folder ).
|
||||
CATCH lcx_not_found.
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_folder = abap_false.
|
||||
li_api = cl_mime_repository_api=>if_mr_api~get_api( ).
|
||||
li_api->get(
|
||||
EXPORTING
|
||||
i_url = lv_url
|
||||
IMPORTING
|
||||
e_content = lv_content
|
||||
EXCEPTIONS
|
||||
parameter_missing = 1
|
||||
error_occured = 2
|
||||
not_found = 3
|
||||
permission_failure = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from mime api->get'.
|
||||
ENDIF.
|
||||
|
||||
lv_filename = get_filename( lv_url ).
|
||||
CLEAR ls_file.
|
||||
ls_file-filename = build_filename( lv_filename ).
|
||||
ls_file-path = '/'.
|
||||
ls_file-data = lv_content.
|
||||
mo_files->add( ls_file ).
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'URL'
|
||||
ig_data = lv_url ).
|
||||
io_xml->add( iv_name = 'FOLDER'
|
||||
ig_data = lv_folder ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_url TYPE string,
|
||||
lv_folder TYPE abap_bool,
|
||||
lv_content TYPE xstring,
|
||||
lv_filename TYPE skwf_filnm,
|
||||
lv_io TYPE sdok_docid,
|
||||
ls_skwf_io TYPE skwf_io,
|
||||
li_api TYPE REF TO if_mr_api.
|
||||
|
||||
|
||||
li_api = cl_mime_repository_api=>if_mr_api~get_api( ).
|
||||
lv_io = ms_item-obj_name.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'URL'
|
||||
CHANGING cg_data = lv_url ).
|
||||
io_xml->read( EXPORTING iv_name = 'FOLDER'
|
||||
CHANGING cg_data = lv_folder ).
|
||||
|
||||
ls_skwf_io-objid = lv_io.
|
||||
|
||||
IF lv_folder = abap_true.
|
||||
li_api->create_folder(
|
||||
EXPORTING
|
||||
i_url = lv_url
|
||||
i_language = sy-langu
|
||||
i_dev_package = iv_package
|
||||
i_folder_loio = ls_skwf_io
|
||||
EXCEPTIONS
|
||||
parameter_missing = 1
|
||||
error_occured = 2
|
||||
cancelled = 3
|
||||
permission_failure = 4
|
||||
folder_exists = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc <> 5 AND sy-subrc <> 0.
|
||||
_raise 'error frrom SMIM create_folder'.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
lv_filename = get_filename( lv_url ).
|
||||
cl_wb_mime_repository=>determine_io_class(
|
||||
EXPORTING
|
||||
filename = lv_filename
|
||||
IMPORTING
|
||||
io_class = ls_skwf_io-class ).
|
||||
CONCATENATE ls_skwf_io-class '_L' INTO ls_skwf_io-class.
|
||||
|
||||
lv_content = find_content( lv_url ).
|
||||
|
||||
li_api->put(
|
||||
EXPORTING
|
||||
i_url = lv_url
|
||||
i_content = lv_content
|
||||
i_dev_package = iv_package
|
||||
i_new_loio = ls_skwf_io
|
||||
EXCEPTIONS
|
||||
parameter_missing = 1
|
||||
error_occured = 2
|
||||
cancelled = 3
|
||||
permission_failure = 4
|
||||
data_inconsistency = 5
|
||||
new_loio_already_exists = 6
|
||||
is_folder = 7
|
||||
OTHERS = 8 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from SMIM put'.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: li_api TYPE REF TO if_mr_api,
|
||||
lv_url TYPE string.
|
||||
|
||||
|
||||
TRY.
|
||||
get_url_for_io(
|
||||
IMPORTING
|
||||
ev_url = lv_url ).
|
||||
CATCH lcx_not_found.
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
li_api = cl_mime_repository_api=>if_mr_api~get_api( ).
|
||||
li_api->delete(
|
||||
EXPORTING
|
||||
i_url = lv_url
|
||||
i_delete_children = abap_true
|
||||
EXCEPTIONS
|
||||
parameter_missing = 1
|
||||
error_occured = 2
|
||||
cancelled = 3
|
||||
permission_failure = 4
|
||||
not_found = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from delete'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, SMIM, jump'.
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_smim IMPLEMENTATION
|
48
src/zabapgit_object_smim.prog.xml
Normal file
48
src/zabapgit_object_smim.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SMIM</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SMIM</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
123
src/zabapgit_object_splo.prog.abap
Normal file
123
src/zabapgit_object_splo.prog.abap
Normal file
|
@ -0,0 +1,123 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SPLO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_splo DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_splo DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_splo DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_splo IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_splo IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_tsp1t TYPE tsp1t,
|
||||
ls_tsp1d TYPE tsp1d,
|
||||
ls_tsp0p TYPE tsp0p.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tsp1t INTO ls_tsp1t
|
||||
WHERE papart = ms_item-obj_name
|
||||
AND spras = mv_language. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||
SELECT SINGLE * FROM tsp1d INTO ls_tsp1d
|
||||
WHERE papart = ms_item-obj_name. "#EC CI_SUBRC
|
||||
SELECT SINGLE * FROM tsp0p INTO ls_tsp0p
|
||||
WHERE pdpaper = ms_item-obj_name. "#EC CI_SUBRC
|
||||
|
||||
CLEAR: ls_tsp1d-chgname1,
|
||||
ls_tsp1d-chgtstmp1,
|
||||
ls_tsp1d-chgsaprel1,
|
||||
ls_tsp1d-chgsapsys1.
|
||||
|
||||
io_xml->add( iv_name = 'TSPLT'
|
||||
ig_data = ls_tsp1t ).
|
||||
io_xml->add( iv_name = 'TSPLD'
|
||||
ig_data = ls_tsp1d ).
|
||||
io_xml->add( iv_name = 'TSP0P'
|
||||
ig_data = ls_tsp0p ).
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_obj_name TYPE e071-obj_name,
|
||||
ls_tsp1t TYPE tsp1t,
|
||||
ls_tsp1d TYPE tsp1d,
|
||||
ls_tsp0p TYPE tsp0p.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TSPLT'
|
||||
CHANGING cg_data = ls_tsp1t ).
|
||||
io_xml->read( EXPORTING iv_name = 'TSPLD'
|
||||
CHANGING cg_data = ls_tsp1d ).
|
||||
io_xml->read( EXPORTING iv_name = 'TSP0P'
|
||||
CHANGING cg_data = ls_tsp0p ).
|
||||
|
||||
MODIFY tsp1t FROM ls_tsp1t. "#EC CI_SUBRC
|
||||
MODIFY tsp1d FROM ls_tsp1d. "#EC CI_SUBRC
|
||||
MODIFY tsp0p FROM ls_tsp0p. "#EC CI_SUBRC
|
||||
|
||||
lv_obj_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'
|
||||
EXPORTING
|
||||
wi_e071_pgmid = 'R3TR'
|
||||
wi_e071_object = ms_item-obj_type
|
||||
wi_e071_obj_name = lv_obj_name
|
||||
wi_tadir_devclass = iv_package.
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DELETE FROM tsp1t WHERE papart = ms_item-obj_name. "#EC CI_NOFIRST "#EC CI_SUBRC
|
||||
DELETE FROM tsp1d WHERE papart = ms_item-obj_name. "#EC CI_SUBRC
|
||||
DELETE FROM tsp0p WHERE pdpaper = ms_item-obj_name. "#EC CI_SUBRC
|
||||
|
||||
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||
EXPORTING
|
||||
wi_delete_tadir_entry = abap_true
|
||||
wi_tadir_pgmid = 'R3TR'
|
||||
wi_tadir_object = ms_item-obj_type
|
||||
wi_tadir_obj_name = ms_item-obj_name
|
||||
wi_test_modus = abap_false.
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_papart TYPE tsp1d-papart.
|
||||
|
||||
|
||||
SELECT SINGLE papart INTO lv_papart FROM tsp1d
|
||||
WHERE papart = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, jump, SPLO'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
ENDCLASS. "lcl_object_splo IMPLEMENTATION
|
48
src/zabapgit_object_splo.prog.xml
Normal file
48
src/zabapgit_object_splo.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SPLO</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SPLO</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
226
src/zabapgit_object_ssfo.prog.abap
Normal file
226
src/zabapgit_object_ssfo.prog.abap
Normal file
|
@ -0,0 +1,226 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SSFO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ssfo DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssfo DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_dtel IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssfo IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_formname TYPE stxfadm-formname.
|
||||
|
||||
|
||||
SELECT SINGLE formname FROM stxfadm INTO lv_formname
|
||||
WHERE formname = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_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 = 'SAPMSSFO'.
|
||||
<ls_bdcdata>-dynpro = '0100'.
|
||||
<ls_bdcdata>-dynbegin = abap_true.
|
||||
|
||||
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||
<ls_bdcdata>-fnam = 'BDC_OKCODE'.
|
||||
<ls_bdcdata>-fval = '=DISPLAY'.
|
||||
|
||||
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||
<ls_bdcdata>-fnam = 'RB_SF'.
|
||||
<ls_bdcdata>-fval = abap_true.
|
||||
|
||||
APPEND INITIAL LINE TO lt_bdcdata ASSIGNING <ls_bdcdata>.
|
||||
<ls_bdcdata>-fnam = 'SSFSCREEN-FNAME'.
|
||||
<ls_bdcdata>-fval = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'ABAP4_CALL_TRANSACTION'
|
||||
STARTING NEW TASK 'GIT'
|
||||
EXPORTING
|
||||
tcode = 'SMARTFORMS'
|
||||
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 lif_object~delete.
|
||||
|
||||
DATA: lv_formname TYPE tdsfname.
|
||||
|
||||
|
||||
lv_formname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'FB_DELETE_FORM'
|
||||
EXPORTING
|
||||
i_formname = lv_formname
|
||||
i_with_dialog = abap_false
|
||||
i_with_confirm_dialog = abap_false
|
||||
EXCEPTIONS
|
||||
no_name = 1
|
||||
no_form = 2
|
||||
form_locked = 3
|
||||
no_access_permission = 4
|
||||
illegal_language = 5
|
||||
illegal_formtype = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0 AND sy-subrc <> 2.
|
||||
_raise 'Error from FB_DELETE_FORM'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
* see function module FB_DOWNLOAD_FORM
|
||||
|
||||
DATA: lo_sf TYPE REF TO cl_ssf_fb_smart_form,
|
||||
lv_name TYPE string,
|
||||
li_node TYPE REF TO if_ixml_node,
|
||||
li_element TYPE REF TO if_ixml_element,
|
||||
li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||
li_attr TYPE REF TO if_ixml_named_node_map,
|
||||
lv_formname TYPE tdsfname,
|
||||
li_ixml TYPE REF TO if_ixml,
|
||||
li_xml_doc TYPE REF TO if_ixml_document.
|
||||
|
||||
|
||||
li_ixml = cl_ixml=>create( ).
|
||||
li_xml_doc = li_ixml->create_document( ).
|
||||
|
||||
CREATE OBJECT lo_sf.
|
||||
lv_formname = ms_item-obj_name. " convert type
|
||||
TRY.
|
||||
lo_sf->load( im_formname = lv_formname
|
||||
im_language = '' ).
|
||||
CATCH cx_ssf_fb.
|
||||
* the smartform is not present in system, or other error occured
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
lo_sf->xml_download( EXPORTING parent = li_xml_doc
|
||||
CHANGING document = li_xml_doc ).
|
||||
|
||||
li_iterator = li_xml_doc->create_iterator( ).
|
||||
li_node = li_iterator->get_next( ).
|
||||
WHILE NOT li_node IS INITIAL.
|
||||
|
||||
lv_name = li_node->get_name( ).
|
||||
IF lv_name = 'DEVCLASS'
|
||||
OR lv_name = 'LASTDATE'
|
||||
OR lv_name = 'LASTTIME'.
|
||||
li_node->set_value( '' ).
|
||||
ENDIF.
|
||||
IF lv_name = 'FIRSTUSER'
|
||||
OR lv_name = 'LASTUSER'.
|
||||
li_node->set_value( 'DUMMY' ).
|
||||
ENDIF.
|
||||
|
||||
* remove IDs it seems that they are not used for anything
|
||||
* the IDs are "random" so it caused diff files
|
||||
IF lv_name = 'NODE' OR lv_name = 'WINDOW'.
|
||||
li_attr = li_node->get_attributes( ).
|
||||
li_attr->remove_named_item( 'ID' ).
|
||||
ENDIF.
|
||||
|
||||
li_node = li_iterator->get_next( ).
|
||||
ENDWHILE.
|
||||
|
||||
li_element = li_xml_doc->get_root_element( ).
|
||||
li_element->set_attribute(
|
||||
name = 'sf'
|
||||
namespace = 'xmlns'
|
||||
value = 'urn:sap-com:SmartForms:2000:internal-structure' ). "#EC NOTEXT
|
||||
li_element->set_attribute(
|
||||
name = 'xmlns'
|
||||
value = 'urn:sap-com:sdixml-ifr:2000' ). "#EC NOTEXT
|
||||
|
||||
io_xml->set_raw( li_xml_doc->get_root_element( ) ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see function module FB_UPLOAD_FORM
|
||||
|
||||
DATA: li_node TYPE REF TO if_ixml_node,
|
||||
lv_formname TYPE tdsfname,
|
||||
lv_name TYPE string,
|
||||
li_iterator TYPE REF TO if_ixml_node_iterator,
|
||||
lo_sf TYPE REF TO cl_ssf_fb_smart_form,
|
||||
lo_res TYPE REF TO cl_ssf_fb_smart_form.
|
||||
|
||||
|
||||
CREATE OBJECT lo_sf.
|
||||
|
||||
* set "created by" and "changed by" to current user
|
||||
li_iterator = io_xml->get_raw( )->create_iterator( ).
|
||||
li_node = li_iterator->get_next( ).
|
||||
WHILE NOT li_node IS INITIAL.
|
||||
lv_name = li_node->get_name( ).
|
||||
CASE lv_name.
|
||||
WHEN 'LASTDATE'.
|
||||
li_node->set_value(
|
||||
sy-datum(4) && '-' && sy-datum+4(2) && '-' && sy-datum+6(2) ).
|
||||
WHEN 'LASTTIME'.
|
||||
li_node->set_value(
|
||||
sy-uzeit(2) && ':' && sy-uzeit+2(2) && ':' && sy-uzeit+4(2) ).
|
||||
WHEN 'FIRSTUSER' OR 'LASTUSER'.
|
||||
li_node->set_value( sy-uname && '' ).
|
||||
ENDCASE.
|
||||
|
||||
li_node = li_iterator->get_next( ).
|
||||
ENDWHILE.
|
||||
|
||||
* todo, iv_package?
|
||||
lv_formname = ms_item-obj_name.
|
||||
lo_sf->enqueue( suppress_corr_check = space
|
||||
master_language = mv_language
|
||||
mode = 'INSERT'
|
||||
formname = lv_formname ).
|
||||
|
||||
lo_sf->xml_upload( EXPORTING dom = io_xml->get_raw( )
|
||||
formname = lv_formname
|
||||
language = mv_language
|
||||
CHANGING sform = lo_res ).
|
||||
|
||||
lo_res->store( im_formname = lo_res->header-formname
|
||||
im_language = mv_language
|
||||
im_active = abap_true ).
|
||||
|
||||
lo_sf->dequeue( lv_formname ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_ssfo IMPLEMENTATION
|
48
src/zabapgit_object_ssfo.prog.xml
Normal file
48
src/zabapgit_object_ssfo.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SSFO</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SSFO</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
191
src/zabapgit_object_ssst.prog.abap
Normal file
191
src/zabapgit_object_ssst.prog.abap
Normal file
|
@ -0,0 +1,191 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SSST
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ssst DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssst DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS validate_font
|
||||
IMPORTING iv_tdfamily TYPE tdfamily
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_ssst DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ssst IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssst IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_stylename TYPE stxsadm-stylename.
|
||||
|
||||
|
||||
SELECT SINGLE stylename FROM stxsadm INTO lv_stylename
|
||||
WHERE stylename = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
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.
|
||||
_raise 'Font family not found'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "validate_font
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
* see fm SSF_DOWNLOAD_STYLE
|
||||
|
||||
DATA: lv_style_name TYPE tdssname,
|
||||
ls_header TYPE ssfcats,
|
||||
lt_paragraphs TYPE TABLE OF ssfparas,
|
||||
lt_strings TYPE TABLE OF ssfstrings,
|
||||
lt_tabstops TYPE TABLE OF stxstab.
|
||||
|
||||
|
||||
lv_style_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'SSF_READ_STYLE'
|
||||
EXPORTING
|
||||
i_style_name = lv_style_name
|
||||
i_style_active_flag = 'A'
|
||||
i_style_variant = '%MAIN'
|
||||
i_style_language = mv_language
|
||||
IMPORTING
|
||||
e_header = ls_header
|
||||
TABLES
|
||||
e_paragraphs = lt_paragraphs
|
||||
e_strings = lt_strings
|
||||
e_tabstops = lt_tabstops
|
||||
EXCEPTIONS
|
||||
no_name = 1
|
||||
no_style = 2
|
||||
active_style_not_found = 3
|
||||
inactive_style_not_found = 4
|
||||
no_variant = 5
|
||||
no_main_variant = 6
|
||||
cancelled = 7
|
||||
no_access_permission = 8
|
||||
OTHERS = 9.
|
||||
IF sy-subrc = 2.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from SSF_READ_STYLE'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR ls_header-version.
|
||||
CLEAR ls_header-firstuser.
|
||||
CLEAR ls_header-firstdate.
|
||||
CLEAR ls_header-firsttime.
|
||||
CLEAR ls_header-lastuser.
|
||||
CLEAR ls_header-lastdate.
|
||||
CLEAR ls_header-lasttime.
|
||||
|
||||
io_xml->add( iv_name = 'HEADER'
|
||||
ig_data = ls_header ).
|
||||
io_xml->add( ig_data = lt_paragraphs
|
||||
iv_name = 'SSFPARAS' ).
|
||||
io_xml->add( ig_data = lt_strings
|
||||
iv_name = 'SSFSTRINGS' ).
|
||||
io_xml->add( ig_data = lt_tabstops
|
||||
iv_name = 'STXSTAB' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see fm SSF_UPLOAD_STYLE
|
||||
|
||||
DATA: ls_header TYPE ssfcats,
|
||||
lt_paragraphs TYPE TABLE OF ssfparas,
|
||||
lt_strings TYPE TABLE OF ssfstrings,
|
||||
lt_tabstops TYPE TABLE OF stxstab.
|
||||
|
||||
|
||||
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_SAVE_STYLE'
|
||||
EXPORTING
|
||||
i_header = ls_header
|
||||
TABLES
|
||||
i_paragraphs = lt_paragraphs
|
||||
i_strings = lt_strings
|
||||
i_tabstops = lt_tabstops.
|
||||
|
||||
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.
|
||||
_raise 'error from SSF_ACTIVATE_STYLE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_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.
|
||||
_raise 'error from SSF_DELETE_STYLE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo'.
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_ssst IMPLEMENTATION
|
48
src/zabapgit_object_ssst.prog.xml
Normal file
48
src/zabapgit_object_ssst.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SSST</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SSST</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
117
src/zabapgit_object_susc.prog.abap
Normal file
117
src/zabapgit_object_susc.prog.abap
Normal file
|
@ -0,0 +1,117 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SUSC
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_susc DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_susc DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_susc DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_susc IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_susc IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_oclss TYPE tobc-oclss.
|
||||
|
||||
|
||||
SELECT SINGLE oclss FROM tobc INTO lv_oclss
|
||||
WHERE oclss = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_tobc TYPE tobc,
|
||||
ls_tobct TYPE tobct.
|
||||
|
||||
|
||||
SELECT SINGLE * FROM tobc INTO ls_tobc
|
||||
WHERE oclss = ms_item-obj_name.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tobct INTO ls_tobct
|
||||
WHERE oclss = ms_item-obj_name
|
||||
AND langu = mv_language.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'TOBCT no english description'.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'TOBC'
|
||||
ig_data = ls_tobc ).
|
||||
io_xml->add( iv_name = 'TOBCT'
|
||||
ig_data = ls_tobct ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see function group SUSA
|
||||
|
||||
DATA: ls_tobc TYPE tobc,
|
||||
lv_objectname TYPE e071-obj_name,
|
||||
ls_tobct TYPE tobct.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TOBC'
|
||||
CHANGING cg_data = ls_tobc ).
|
||||
io_xml->read( EXPORTING iv_name = 'TOBCT'
|
||||
CHANGING cg_data = ls_tobct ).
|
||||
|
||||
lv_objectname = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_COMMEDITCHECK'
|
||||
EXPORTING
|
||||
objectname = lv_objectname
|
||||
transobjecttype = 'C'.
|
||||
|
||||
INSERT tobc FROM ls_tobc. "#EC CI_SUBRC
|
||||
* ignore sy-subrc as all fields are key fields
|
||||
|
||||
MODIFY tobct FROM ls_tobct. "#EC CI_SUBRC
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objclass TYPE tobc-oclss.
|
||||
|
||||
|
||||
lv_objclass = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_DELETE_OBJECT_CLASS'
|
||||
EXPORTING
|
||||
objclass = lv_objclass.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
DATA: lv_objclass TYPE tobc-oclss.
|
||||
|
||||
|
||||
lv_objclass = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_SHOW_OBJECT_CLASS'
|
||||
EXPORTING
|
||||
objclass = lv_objclass.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_susc IMPLEMENTATION
|
48
src/zabapgit_object_susc.prog.xml
Normal file
48
src/zabapgit_object_susc.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SUSC</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SUSC</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
164
src/zabapgit_object_suso.prog.abap
Normal file
164
src/zabapgit_object_suso.prog.abap
Normal file
|
@ -0,0 +1,164 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_SUSO
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_suso DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_suso DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_suso DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_suso IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_suso IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_objct TYPE tobj-objct.
|
||||
|
||||
|
||||
SELECT SINGLE objct FROM tobj INTO lv_objct
|
||||
WHERE objct = ms_item-obj_name.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_tobj TYPE tobj,
|
||||
ls_tobjt TYPE tobjt,
|
||||
ls_tobjvorflg TYPE tobjvorflg,
|
||||
lt_tactz TYPE TABLE OF tactz,
|
||||
lt_tobjvordat TYPE TABLE OF tobjvordat,
|
||||
lt_tobjvor TYPE TABLE OF tobjvor.
|
||||
|
||||
|
||||
SELECT SINGLE * FROM tobj INTO ls_tobj
|
||||
WHERE objct = ms_item-obj_name.
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
CLEAR ls_tobj-bname.
|
||||
|
||||
SELECT SINGLE * FROM tobjt INTO ls_tobjt
|
||||
WHERE object = ms_item-obj_name
|
||||
AND langu = mv_language. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'TOBJT no english description'.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tobjvorflg INTO ls_tobjvorflg
|
||||
WHERE objct = ms_item-obj_name. "#EC CI_SUBRC
|
||||
|
||||
SELECT * FROM tactz INTO TABLE lt_tactz
|
||||
WHERE brobj = ms_item-obj_name
|
||||
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||
|
||||
SELECT * FROM tobjvordat INTO TABLE lt_tobjvordat
|
||||
WHERE objct = ms_item-obj_name
|
||||
ORDER BY PRIMARY KEY. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||
|
||||
SELECT * FROM tobjvor INTO TABLE lt_tobjvor
|
||||
WHERE objct = ms_item-obj_name
|
||||
ORDER BY PRIMARY KEY. "#EC CI_SUBRC
|
||||
|
||||
io_xml->add( iv_name = 'TOBJ'
|
||||
ig_data = ls_tobj ).
|
||||
io_xml->add( iv_name = 'TOBJT'
|
||||
ig_data = ls_tobjt ).
|
||||
io_xml->add( iv_name = 'TOBJVORFLG'
|
||||
ig_data = ls_tobjvorflg ).
|
||||
io_xml->add( ig_data = lt_tactz
|
||||
iv_name = 'TACTZ' ).
|
||||
io_xml->add( ig_data = lt_tobjvordat
|
||||
iv_name = 'TOBJVORDAT' ).
|
||||
io_xml->add( ig_data = lt_tobjvor
|
||||
iv_name = 'TOBJVOR' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
* see function group SUSA
|
||||
|
||||
DATA: lv_objectname TYPE e071-obj_name,
|
||||
ls_tobj TYPE tobj,
|
||||
ls_tobjt TYPE tobjt,
|
||||
ls_tobjvorflg TYPE tobjvorflg,
|
||||
lt_tactz TYPE TABLE OF tactz,
|
||||
lt_tobjvordat TYPE TABLE OF tobjvordat,
|
||||
lt_tobjvor TYPE TABLE OF tobjvor.
|
||||
|
||||
|
||||
ASSERT NOT ms_item-obj_name IS INITIAL.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TOBJ'
|
||||
CHANGING cg_data = ls_tobj ).
|
||||
ls_tobj-bname = sy-uname.
|
||||
io_xml->read( EXPORTING iv_name = 'TOBJT'
|
||||
CHANGING cg_data = ls_tobjt ).
|
||||
io_xml->read( EXPORTING iv_name = 'TOBJVORFLG'
|
||||
CHANGING cg_data = ls_tobjvorflg ).
|
||||
io_xml->read( EXPORTING iv_name = 'TACTZ'
|
||||
CHANGING cg_data = lt_tactz ).
|
||||
io_xml->read( EXPORTING iv_name = 'TOBJVORDAT'
|
||||
CHANGING cg_data = lt_tobjvordat ).
|
||||
io_xml->read( EXPORTING iv_name = 'TOBJVOR'
|
||||
CHANGING cg_data = lt_tobjvor ).
|
||||
|
||||
lv_objectname = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_COMMEDITCHECK'
|
||||
EXPORTING
|
||||
objectname = lv_objectname
|
||||
transobjecttype = 'O'.
|
||||
|
||||
MODIFY tobj FROM ls_tobj. "#EC CI_SUBRC
|
||||
MODIFY tobjt FROM ls_tobjt. "#EC CI_SUBRC
|
||||
MODIFY tobjvorflg FROM ls_tobjvorflg. "#EC CI_SUBRC
|
||||
DELETE FROM tactz WHERE brobj = ms_item-obj_name. "#EC CI_SUBRC
|
||||
INSERT tactz FROM TABLE lt_tactz. "#EC CI_SUBRC
|
||||
DELETE FROM tobjvordat WHERE objct = ms_item-obj_name. "#EC CI_SUBRC
|
||||
INSERT tobjvordat FROM TABLE lt_tobjvordat. "#EC CI_SUBRC
|
||||
DELETE FROM tobjvor WHERE objct = ms_item-obj_name. "#EC CI_SUBRC
|
||||
INSERT tobjvor FROM TABLE lt_tobjvor. "#EC CI_SUBRC
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_object TYPE tobj-objct.
|
||||
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_DELETE_OBJECT'
|
||||
EXPORTING
|
||||
object = lv_object.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
DATA: lv_object TYPE tobj-objct.
|
||||
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
CALL FUNCTION 'SUSR_SHOW_OBJECT'
|
||||
EXPORTING
|
||||
object = lv_object.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_suso IMPLEMENTATION
|
48
src/zabapgit_object_suso.prog.xml
Normal file
48
src/zabapgit_object_suso.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_SUSO</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_SUSO</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
275
src/zabapgit_object_tabl.prog.abap
Normal file
275
src/zabapgit_object_tabl.prog.abap
Normal file
|
@ -0,0 +1,275 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_TABL
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_tabl DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tabl DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_tabl IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tabl IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_tabname TYPE dd02l-tabname.
|
||||
|
||||
|
||||
SELECT SINGLE tabname FROM dd02l INTO lv_tabname
|
||||
WHERE tabname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-DDTYPE'
|
||||
iv_field = 'RSRD1-DDTYPE_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_false
|
||||
objname = lv_objname
|
||||
objtype = 'T'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, TABL'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd02v TYPE dd02v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd03p TYPE TABLE OF dd03p,
|
||||
lt_dd05m TYPE TABLE OF dd05m,
|
||||
lt_dd08v TYPE TABLE OF dd08v,
|
||||
lt_dd12v TYPE dd12vtab,
|
||||
lt_dd17v TYPE dd17vtab,
|
||||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lt_dd36m TYPE dd36mttyp.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd12v> LIKE LINE OF lt_dd12v,
|
||||
<ls_dd03p> LIKE LINE OF lt_dd03p.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_TABL_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd02v_wa = ls_dd02v
|
||||
dd09l_wa = ls_dd09l
|
||||
TABLES
|
||||
dd03p_tab = lt_dd03p
|
||||
dd05m_tab = lt_dd05m
|
||||
dd08v_tab = lt_dd08v
|
||||
dd12v_tab = lt_dd12v
|
||||
dd17v_tab = lt_dd17v
|
||||
dd35v_tab = lt_dd35v
|
||||
dd36m_tab = lt_dd36m
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_TABL_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd02v IS INITIAL.
|
||||
RETURN. " object does not exits
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd02v-as4user,
|
||||
ls_dd02v-as4date,
|
||||
ls_dd02v-as4time.
|
||||
|
||||
CLEAR: ls_dd09l-as4user,
|
||||
ls_dd09l-as4date,
|
||||
ls_dd09l-as4time.
|
||||
|
||||
LOOP AT lt_dd12v ASSIGNING <ls_dd12v>.
|
||||
CLEAR: <ls_dd12v>-as4user,
|
||||
<ls_dd12v>-as4date,
|
||||
<ls_dd12v>-as4time.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_dd03p ASSIGNING <ls_dd03p> WHERE NOT rollname IS INITIAL.
|
||||
CLEAR: <ls_dd03p>-ddlanguage,
|
||||
<ls_dd03p>-dtelmaster,
|
||||
<ls_dd03p>-ddtext,
|
||||
<ls_dd03p>-reptext,
|
||||
<ls_dd03p>-scrtext_s,
|
||||
<ls_dd03p>-scrtext_m,
|
||||
<ls_dd03p>-scrtext_l.
|
||||
|
||||
* XML output assumes correct field content
|
||||
IF <ls_dd03p>-routputlen = ' '.
|
||||
CLEAR <ls_dd03p>-routputlen.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'DD02V'
|
||||
ig_data = ls_dd02v ).
|
||||
io_xml->add( iv_name = 'DD09L'
|
||||
ig_data = ls_dd09l ).
|
||||
io_xml->add( ig_data = lt_dd03p
|
||||
iv_name = 'DD03P_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd05m
|
||||
iv_name = 'DD05M_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd08v
|
||||
iv_name = 'DD08V_TABLE' ).
|
||||
io_xml->add( iv_name = 'DD12V'
|
||||
ig_data = lt_dd12v ).
|
||||
io_xml->add( iv_name = 'DD17V'
|
||||
ig_data = lt_dd17v ).
|
||||
io_xml->add( ig_data = lt_dd35v
|
||||
iv_name = 'DD35V_TALE' ).
|
||||
io_xml->add( iv_name = 'DD36M'
|
||||
ig_data = lt_dd36m ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
lv_tname TYPE trobj_name,
|
||||
ls_dd02v TYPE dd02v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd03p TYPE TABLE OF dd03p,
|
||||
lt_dd05m TYPE TABLE OF dd05m,
|
||||
lt_dd08v TYPE TABLE OF dd08v,
|
||||
lt_dd12v TYPE dd12vtab,
|
||||
lt_dd17v TYPE dd17vtab,
|
||||
ls_dd17v LIKE LINE OF lt_dd17v,
|
||||
lt_secondary LIKE lt_dd17v,
|
||||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lt_dd36m TYPE dd36mttyp,
|
||||
ls_dd12v LIKE LINE OF lt_dd12v.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD02V'
|
||||
CHANGING cg_data = ls_dd02v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD09L'
|
||||
CHANGING cg_data = ls_dd09l ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD03P_TABLE'
|
||||
CHANGING cg_data = lt_dd03p ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD05M_TABLE'
|
||||
CHANGING cg_data = lt_dd05m ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD08V_TABLE'
|
||||
CHANGING cg_data = lt_dd08v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD12V'
|
||||
CHANGING cg_data = lt_dd12v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD17V'
|
||||
CHANGING cg_data = lt_dd17v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD35V_TALE'
|
||||
CHANGING cg_data = lt_dd35v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD36M'
|
||||
CHANGING cg_data = lt_dd36m ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name. " type conversion
|
||||
|
||||
CALL FUNCTION 'DDIF_TABL_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd02v_wa = ls_dd02v
|
||||
dd09l_wa = ls_dd09l
|
||||
TABLES
|
||||
dd03p_tab = lt_dd03p
|
||||
dd05m_tab = lt_dd05m
|
||||
dd08v_tab = lt_dd08v
|
||||
dd35v_tab = lt_dd35v
|
||||
dd36m_tab = lt_dd36m
|
||||
EXCEPTIONS
|
||||
tabl_not_found = 1
|
||||
name_inconsistent = 2
|
||||
tabl_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_TABL_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
* handle indexes
|
||||
LOOP AT lt_dd12v INTO ls_dd12v.
|
||||
|
||||
* todo, call corr_insert?
|
||||
|
||||
CLEAR lt_secondary.
|
||||
LOOP AT lt_dd17v INTO ls_dd17v
|
||||
WHERE sqltab = ls_dd12v-sqltab AND indexname = ls_dd12v-indexname.
|
||||
APPEND ls_dd17v TO lt_secondary.
|
||||
ENDLOOP.
|
||||
|
||||
CALL FUNCTION 'DDIF_INDX_PUT'
|
||||
EXPORTING
|
||||
name = ls_dd12v-sqltab
|
||||
id = ls_dd12v-indexname
|
||||
dd12v_wa = ls_dd12v
|
||||
TABLES
|
||||
dd17v_tab = lt_secondary
|
||||
EXCEPTIONS
|
||||
indx_not_found = 1
|
||||
name_inconsistent = 2
|
||||
indx_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_INDX_PUT'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'DD_DD_TO_E071'
|
||||
EXPORTING
|
||||
type = 'INDX'
|
||||
name = ls_dd12v-sqltab
|
||||
id = ls_dd12v-indexname
|
||||
IMPORTING
|
||||
obj_name = lv_tname.
|
||||
|
||||
lcl_objects_activation=>add( iv_type = 'INDX'
|
||||
iv_name = lv_tname ).
|
||||
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_TABL IMPLEMENTATION
|
48
src/zabapgit_object_tabl.prog.xml
Normal file
48
src/zabapgit_object_tabl.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TABL</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TABL</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
178
src/zabapgit_object_tobj.prog.abap
Normal file
178
src/zabapgit_object_tobj.prog.abap
Normal file
|
@ -0,0 +1,178 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_TOBJ
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_tobj DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tobj DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_tobj DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_tobj IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tobj IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-late_deser = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_objectname TYPE objh-objectname,
|
||||
lv_type_pos TYPE i.
|
||||
|
||||
lv_type_pos = strlen( ms_item-obj_name ) - 1.
|
||||
|
||||
SELECT SINGLE objectname FROM objh INTO lv_objectname
|
||||
WHERE objectname = ms_item-obj_name(lv_type_pos)
|
||||
AND objecttype = ms_item-obj_name+lv_type_pos. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_objh TYPE objh,
|
||||
ls_objt TYPE objt,
|
||||
lt_objs TYPE tt_objs,
|
||||
lt_objsl TYPE tt_objsl,
|
||||
lt_objm TYPE tt_objm,
|
||||
lv_type_pos TYPE i.
|
||||
|
||||
lv_type_pos = strlen( ms_item-obj_name ) - 1.
|
||||
|
||||
ls_objh-objectname = ms_item-obj_name(lv_type_pos).
|
||||
ls_objh-objecttype = ms_item-obj_name+lv_type_pos.
|
||||
|
||||
CALL FUNCTION 'CTO_OBJECT_GET'
|
||||
EXPORTING
|
||||
iv_objectname = ls_objh-objectname
|
||||
iv_objecttype = ls_objh-objecttype
|
||||
iv_language = mv_language
|
||||
iv_sel_objt = abap_true
|
||||
iv_sel_objs = abap_true
|
||||
iv_sel_objsl = abap_true
|
||||
iv_sel_objm = abap_true
|
||||
IMPORTING
|
||||
es_objh = ls_objh
|
||||
es_objt = ls_objt
|
||||
TABLES
|
||||
tt_objs = lt_objs
|
||||
tt_objsl = lt_objsl
|
||||
tt_objm = lt_objm
|
||||
EXCEPTIONS
|
||||
object_not_defined = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc = 1.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from CTO_OBJECT_GET'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_objh-luser,
|
||||
ls_objh-ldate.
|
||||
|
||||
io_xml->add( iv_name = 'OBJH'
|
||||
ig_data = ls_objh ).
|
||||
io_xml->add( iv_name = 'OBJT'
|
||||
ig_data = ls_objt ).
|
||||
io_xml->add( iv_name = 'OBJS'
|
||||
ig_data = lt_objs ).
|
||||
io_xml->add( iv_name = 'OBJSL'
|
||||
ig_data = lt_objsl ).
|
||||
io_xml->add( iv_name = 'OBJM'
|
||||
ig_data = lt_objm ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_objh TYPE objh,
|
||||
ls_objt TYPE objt,
|
||||
lt_objs TYPE tt_objs,
|
||||
lt_objsl TYPE tt_objsl,
|
||||
lt_objm TYPE tt_objm.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'OBJH'
|
||||
CHANGING cg_data = ls_objh ).
|
||||
io_xml->read( EXPORTING iv_name = 'OBJT'
|
||||
CHANGING cg_data = ls_objt ).
|
||||
io_xml->read( EXPORTING iv_name = 'OBJS'
|
||||
CHANGING cg_data = lt_objs ).
|
||||
io_xml->read( EXPORTING iv_name = 'OBJSL'
|
||||
CHANGING cg_data = lt_objsl ).
|
||||
io_xml->read( EXPORTING iv_name = 'OBJM'
|
||||
CHANGING cg_data = lt_objm ).
|
||||
|
||||
CALL FUNCTION 'OBJ_GENERATE'
|
||||
EXPORTING
|
||||
iv_objectname = ls_objh-objectname
|
||||
iv_objecttype = ls_objh-objecttype
|
||||
iv_maint_mode = 'I'
|
||||
iv_objecttext = ls_objt-ddtext
|
||||
iv_objcateg = ls_objh-objcateg
|
||||
iv_objtransp = ls_objh-objtransp
|
||||
iv_devclass = iv_package
|
||||
TABLES
|
||||
tt_v_obj_s = lt_objs
|
||||
tt_objm = lt_objm
|
||||
EXCEPTIONS
|
||||
illegal_call = 1
|
||||
object_not_found = 2
|
||||
generate_error = 3
|
||||
transport_error = 4
|
||||
object_enqueue_failed = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
* TOBJ has to be saved/generated after the DDIC tables have been
|
||||
* activated - fixed with late deserialization
|
||||
_raise 'error from OBJ_GENERATE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: ls_objh TYPE objh,
|
||||
lv_type_pos TYPE i.
|
||||
|
||||
lv_type_pos = strlen( ms_item-obj_name ) - 1.
|
||||
|
||||
ls_objh-objectname = ms_item-obj_name(lv_type_pos).
|
||||
ls_objh-objecttype = ms_item-obj_name+lv_type_pos.
|
||||
|
||||
CALL FUNCTION 'OBJ_GENERATE'
|
||||
EXPORTING
|
||||
iv_objectname = ls_objh-objectname
|
||||
iv_objecttype = ls_objh-objecttype
|
||||
iv_maint_mode = 'D'
|
||||
EXCEPTIONS
|
||||
illegal_call = 1
|
||||
object_not_found = 2
|
||||
generate_error = 3
|
||||
transport_error = 4
|
||||
object_enqueue_failed = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from OBJ_GENERATE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'todo, TOBJ jump'.
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_tobj IMPLEMENTATION
|
48
src/zabapgit_object_tobj.prog.xml
Normal file
48
src/zabapgit_object_tobj.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TOBJ</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TOBJ</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
408
src/zabapgit_object_tran.prog.abap
Normal file
408
src/zabapgit_object_tran.prog.abap
Normal file
|
@ -0,0 +1,408 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_TRAN
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_tran DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tran DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
CONSTANTS: c_oo_program(9) VALUE '\PROGRAM=',
|
||||
c_oo_class(7) VALUE '\CLASS=',
|
||||
c_oo_method(8) VALUE '\METHOD=',
|
||||
c_oo_tcode TYPE tcode VALUE 'OS_APPLICATION',
|
||||
c_oo_frclass(30) VALUE 'CLASS',
|
||||
c_oo_frmethod(30) VALUE 'METHOD',
|
||||
c_oo_frupdtask(30) VALUE 'UPDATE_MODE',
|
||||
c_oo_synchron VALUE 'S',
|
||||
c_oo_asynchron VALUE 'U',
|
||||
c_true TYPE c VALUE 'X',
|
||||
c_false TYPE c VALUE space.
|
||||
|
||||
METHODS:
|
||||
split_parameters
|
||||
CHANGING ct_rsparam TYPE s_param
|
||||
cs_rsstcd TYPE rsstcd
|
||||
cs_tstcp TYPE tstcp
|
||||
cs_tstc TYPE tstc,
|
||||
split_parameters_comp
|
||||
IMPORTING iv_type TYPE any
|
||||
iv_param TYPE any
|
||||
CHANGING cg_value TYPE any.
|
||||
|
||||
ENDCLASS. "lcl_object_TRAN DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_msag IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tran IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
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
|
||||
|
||||
METHOD split_parameters.
|
||||
* see subroutine split_parameters in include LSEUKF01
|
||||
|
||||
DATA: lv_off TYPE i,
|
||||
lv_param_beg TYPE i,
|
||||
lv_length TYPE i,
|
||||
ls_param LIKE LINE OF ct_rsparam.
|
||||
|
||||
FIELD-SYMBOLS <lg_f> TYPE any.
|
||||
|
||||
|
||||
CLEAR cs_rsstcd-s_vari.
|
||||
|
||||
IF cs_tstcp-param(1) = '\'. " OO-Transaktion ohne FR
|
||||
split_parameters_comp( EXPORTING iv_type = c_oo_program
|
||||
iv_param = cs_tstcp-param
|
||||
CHANGING cg_value = cs_tstc-pgmna ).
|
||||
split_parameters_comp( EXPORTING iv_type = c_oo_class
|
||||
iv_param = cs_tstcp-param
|
||||
CHANGING cg_value = cs_rsstcd-classname ).
|
||||
split_parameters_comp( EXPORTING iv_type = c_oo_method
|
||||
iv_param = cs_tstcp-param
|
||||
CHANGING cg_value = cs_rsstcd-method ).
|
||||
|
||||
IF NOT cs_tstc-pgmna IS INITIAL.
|
||||
cs_rsstcd-s_local = c_true.
|
||||
ENDIF.
|
||||
RETURN.
|
||||
ELSEIF cs_tstcp-param(1) = '@'. " Transaktionsvariante
|
||||
cs_rsstcd-s_vari = c_true.
|
||||
IF cs_tstcp-param(2) = '@@'.
|
||||
cs_rsstcd-s_ind_vari = c_true.
|
||||
lv_off = 2.
|
||||
ELSE.
|
||||
CLEAR cs_rsstcd-s_ind_vari.
|
||||
lv_off = 1.
|
||||
ENDIF.
|
||||
sy-fdpos = sy-fdpos - lv_off.
|
||||
IF sy-fdpos > 0.
|
||||
cs_rsstcd-call_tcode = cs_tstcp-param+lv_off(sy-fdpos).
|
||||
sy-fdpos = sy-fdpos + 1 + lv_off.
|
||||
cs_rsstcd-variant = cs_tstcp-param+sy-fdpos.
|
||||
ENDIF.
|
||||
ELSEIF cs_tstcp-param(1) = '/'.
|
||||
cs_rsstcd-st_tcode = c_true.
|
||||
cs_rsstcd-st_prog = space.
|
||||
IF cs_tstcp-param+1(1) = '*'.
|
||||
cs_rsstcd-st_skip_1 = c_true.
|
||||
ELSE.
|
||||
CLEAR cs_rsstcd-st_skip_1.
|
||||
ENDIF.
|
||||
lv_param_beg = sy-fdpos + 1.
|
||||
sy-fdpos = sy-fdpos - 2.
|
||||
IF sy-fdpos > 0.
|
||||
cs_rsstcd-call_tcode = cs_tstcp-param+2(sy-fdpos).
|
||||
ENDIF.
|
||||
SHIFT cs_tstcp-param BY lv_param_beg PLACES.
|
||||
ELSE.
|
||||
cs_rsstcd-st_tcode = space.
|
||||
cs_rsstcd-st_prog = c_true.
|
||||
ENDIF.
|
||||
|
||||
DO 254 TIMES.
|
||||
IF cs_tstcp-param = space.
|
||||
EXIT.
|
||||
ENDIF.
|
||||
CLEAR ls_param.
|
||||
IF cs_tstcp-param CA '='.
|
||||
CHECK sy-fdpos <> 0.
|
||||
ASSIGN cs_tstcp-param(sy-fdpos) TO <lg_f>.
|
||||
ls_param-field = <lg_f>.
|
||||
IF ls_param-field(1) = space.
|
||||
SHIFT ls_param-field.
|
||||
ENDIF.
|
||||
sy-fdpos = sy-fdpos + 1.
|
||||
SHIFT cs_tstcp-param BY sy-fdpos PLACES.
|
||||
IF cs_tstcp-param CA ';'.
|
||||
IF sy-fdpos <> 0.
|
||||
ASSIGN cs_tstcp-param(sy-fdpos) TO <lg_f>.
|
||||
ls_param-value = <lg_f>.
|
||||
IF ls_param-value(1) = space.
|
||||
SHIFT ls_param-value.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
sy-fdpos = sy-fdpos + 1.
|
||||
SHIFT cs_tstcp-param BY sy-fdpos PLACES.
|
||||
APPEND ls_param TO ct_rsparam.
|
||||
ELSE.
|
||||
lv_length = strlen( cs_tstcp-param ).
|
||||
CHECK lv_length > 0.
|
||||
ASSIGN cs_tstcp-param(lv_length) TO <lg_f>.
|
||||
ls_param-value = <lg_f>.
|
||||
IF ls_param-value(1) = space.
|
||||
SHIFT ls_param-value.
|
||||
ENDIF.
|
||||
lv_length = lv_length + 1.
|
||||
SHIFT cs_tstcp-param BY lv_length PLACES.
|
||||
APPEND ls_param TO ct_rsparam.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDDO.
|
||||
* oo-Transaktion mit Framework
|
||||
IF cs_rsstcd-call_tcode = c_oo_tcode.
|
||||
cs_rsstcd-s_trframe = c_true.
|
||||
LOOP AT ct_rsparam INTO ls_param.
|
||||
CASE ls_param-field.
|
||||
WHEN c_oo_frclass.
|
||||
cs_rsstcd-classname = ls_param-value.
|
||||
WHEN c_oo_frmethod.
|
||||
cs_rsstcd-method = ls_param-value.
|
||||
WHEN c_oo_frupdtask.
|
||||
IF ls_param-value = c_oo_synchron.
|
||||
cs_rsstcd-s_upddir = c_true.
|
||||
cs_rsstcd-s_updtask = c_false.
|
||||
cs_rsstcd-s_updlok = c_false.
|
||||
ELSEIF ls_param-value = c_oo_asynchron.
|
||||
cs_rsstcd-s_upddir = c_false.
|
||||
cs_rsstcd-s_updtask = c_true.
|
||||
cs_rsstcd-s_updlok = c_false.
|
||||
ELSE.
|
||||
cs_rsstcd-s_upddir = c_false.
|
||||
cs_rsstcd-s_updtask = c_false.
|
||||
cs_rsstcd-s_updlok = c_true.
|
||||
ENDIF.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
ENDIF.
|
||||
ENDMETHOD. "split_parameters
|
||||
|
||||
METHOD lif_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. "lif_object~exists
|
||||
|
||||
METHOD lif_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 lif_object~delete.
|
||||
|
||||
DATA: lv_transaction TYPE tstc-tcode.
|
||||
|
||||
|
||||
lv_transaction = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RPY_TRANSACTION_DELETE'
|
||||
EXPORTING
|
||||
transaction = lv_transaction
|
||||
EXCEPTIONS
|
||||
not_excecuted = 1
|
||||
object_not_found = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from RPY_TRANSACTION_DELETE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
CONSTANTS: lc_hex_tra TYPE x VALUE '00',
|
||||
* c_hex_men TYPE x VALUE '01',
|
||||
lc_hex_par TYPE x VALUE '02',
|
||||
lc_hex_rep TYPE x VALUE '80'.
|
||||
* c_hex_rpv TYPE x VALUE '10',
|
||||
* c_hex_obj TYPE x VALUE '08',
|
||||
* c_hex_chk TYPE x VALUE '04',
|
||||
* c_hex_enq TYPE x VALUE '20'.
|
||||
|
||||
DATA: lv_dynpro TYPE d020s-dnum,
|
||||
ls_tstc TYPE tstc,
|
||||
lv_type TYPE rglif-docutype,
|
||||
ls_tstct TYPE tstct,
|
||||
ls_tstcc TYPE tstcc,
|
||||
ls_tstcp TYPE tstcp,
|
||||
lt_param_values TYPE TABLE OF rsparam,
|
||||
ls_rsstcd TYPE rsstcd.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TSTC'
|
||||
CHANGING cg_data = ls_tstc ).
|
||||
io_xml->read( EXPORTING iv_name = 'TSTCC'
|
||||
CHANGING cg_data = ls_tstcc ).
|
||||
io_xml->read( EXPORTING iv_name = 'TSTCT'
|
||||
CHANGING cg_data = ls_tstct ).
|
||||
io_xml->read( EXPORTING iv_name = 'TSTCP'
|
||||
CHANGING cg_data = ls_tstcp ).
|
||||
|
||||
lv_dynpro = ls_tstc-dypno.
|
||||
|
||||
CASE ls_tstc-cinfo.
|
||||
WHEN lc_hex_tra.
|
||||
lv_type = ststc_c_type_dialog.
|
||||
WHEN lc_hex_rep.
|
||||
lv_type = ststc_c_type_report.
|
||||
WHEN lc_hex_par.
|
||||
lv_type = ststc_c_type_parameters.
|
||||
* todo, or ststc_c_type_variant?
|
||||
WHEN OTHERS.
|
||||
_raise 'Transaction, unknown CINFO'.
|
||||
ENDCASE.
|
||||
|
||||
IF ls_tstcp IS NOT INITIAL.
|
||||
split_parameters(
|
||||
CHANGING
|
||||
ct_rsparam = lt_param_values
|
||||
cs_rsstcd = ls_rsstcd
|
||||
cs_tstcp = ls_tstcp
|
||||
cs_tstc = ls_tstc ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'RPY_TRANSACTION_INSERT'
|
||||
EXPORTING
|
||||
transaction = ls_tstc-tcode
|
||||
program = ls_tstc-pgmna
|
||||
dynpro = lv_dynpro
|
||||
language = mv_language
|
||||
development_class = iv_package
|
||||
transaction_type = lv_type
|
||||
shorttext = ls_tstct-ttext
|
||||
called_transaction = ls_rsstcd-call_tcode
|
||||
called_transaction_skip = ls_rsstcd-st_skip_1
|
||||
variant = ls_rsstcd-variant
|
||||
cl_independend = ls_rsstcd-s_ind_vari
|
||||
html_enabled = ls_tstcc-s_webgui
|
||||
java_enabled = ls_tstcc-s_platin
|
||||
wingui_enabled = ls_tstcc-s_win32
|
||||
TABLES
|
||||
param_values = lt_param_values
|
||||
EXCEPTIONS
|
||||
cancelled = 1
|
||||
already_exist = 2
|
||||
permission_error = 3
|
||||
name_not_allowed = 4
|
||||
name_conflict = 5
|
||||
illegal_type = 6
|
||||
object_inconsistent = 7
|
||||
db_access_error = 8
|
||||
OTHERS = 9.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Error from RPY_TRANSACTION_INSERT'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_transaction TYPE tstc-tcode,
|
||||
lt_tcodes TYPE TABLE OF tstc,
|
||||
ls_tcode LIKE LINE OF lt_tcodes,
|
||||
ls_tstct TYPE tstct,
|
||||
ls_tstcp TYPE tstcp,
|
||||
lt_gui_attr TYPE TABLE OF tstcc,
|
||||
ls_gui_attr LIKE LINE OF lt_gui_attr.
|
||||
|
||||
|
||||
lv_transaction = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RPY_TRANSACTION_READ'
|
||||
EXPORTING
|
||||
transaction = lv_transaction
|
||||
TABLES
|
||||
tcodes = lt_tcodes
|
||||
gui_attributes = lt_gui_attr
|
||||
EXCEPTIONS
|
||||
permission_error = 1
|
||||
cancelled = 2
|
||||
not_found = 3
|
||||
object_not_found = 4
|
||||
OTHERS = 5.
|
||||
IF sy-subrc = 4 OR sy-subrc = 3.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'Error from RPY_TRANSACTION_READ'.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tstct INTO ls_tstct
|
||||
WHERE sprsl = mv_language
|
||||
AND tcode = lv_transaction. "#EC CI_GENBUFF
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'Transaction description not found'.
|
||||
ENDIF.
|
||||
|
||||
SELECT SINGLE * FROM tstcp INTO ls_tstcp
|
||||
WHERE tcode = lv_transaction. "#EC CI_SUBRC "#EC CI_GENBUFF
|
||||
|
||||
READ TABLE lt_tcodes INDEX 1 INTO ls_tcode.
|
||||
ASSERT sy-subrc = 0.
|
||||
READ TABLE lt_gui_attr INDEX 1 INTO ls_gui_attr.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
io_xml->add( iv_name = 'TSTC'
|
||||
ig_data = ls_tcode ).
|
||||
io_xml->add( iv_name = 'TSTCC'
|
||||
ig_data = ls_gui_attr ).
|
||||
io_xml->add( iv_name = 'TSTCT'
|
||||
ig_data = ls_tstct ).
|
||||
IF ls_tstcp IS NOT INITIAL.
|
||||
io_xml->add( iv_name = 'TSTCP'
|
||||
ig_data = ls_tstcp ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
ENDCLASS. "lcl_object_tran IMPLEMENTATION
|
48
src/zabapgit_object_tran.prog.xml
Normal file
48
src/zabapgit_object_tran.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TRAN</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TRAN</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
155
src/zabapgit_object_ttyp.prog.abap
Normal file
155
src/zabapgit_object_ttyp.prog.abap
Normal file
|
@ -0,0 +1,155 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_TTYP
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ttyp DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ttyp DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_ttyp IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ttyp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_typename TYPE dd40l-typename.
|
||||
|
||||
|
||||
SELECT SINGLE typename FROM dd40l INTO lv_typename
|
||||
WHERE typename = ms_item-obj_name
|
||||
AND as4local = 'A'.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-DDTYPE'
|
||||
iv_field = 'RSRD1-DDTYPE_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'A'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, TTYP'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
lt_dd42v TYPE dd42v_tab,
|
||||
lt_dd43v TYPE dd43v_tab,
|
||||
ls_dd40v TYPE dd40v.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_TTYP_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd40v_wa = ls_dd40v
|
||||
TABLES
|
||||
dd42v_tab = lt_dd42v
|
||||
dd43v_tab = lt_dd43v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_TTYP_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd40v IS INITIAL.
|
||||
RETURN. " does not exist in system
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd40v-as4user,
|
||||
ls_dd40v-as4date,
|
||||
ls_dd40v-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD40V'
|
||||
ig_data = ls_dd40v ).
|
||||
io_xml->add( iv_name = 'DD42V'
|
||||
ig_data = lt_dd42v ).
|
||||
io_xml->add( iv_name = 'DD43V'
|
||||
ig_data = lt_dd43v ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
lt_dd42v TYPE dd42v_tab,
|
||||
lt_dd43v TYPE dd43v_tab,
|
||||
ls_dd40v TYPE dd40v.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD40V'
|
||||
CHANGING cg_data = ls_dd40v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD42V'
|
||||
CHANGING cg_data = lt_dd42v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD43V'
|
||||
CHANGING cg_data = lt_dd43v ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name. " type conversion
|
||||
|
||||
CALL FUNCTION 'DDIF_TTYP_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd40v_wa = ls_dd40v
|
||||
TABLES
|
||||
dd42v_tab = lt_dd42v
|
||||
dd43v_tab = lt_dd43v
|
||||
EXCEPTIONS
|
||||
ttyp_not_found = 1
|
||||
name_inconsistent = 2
|
||||
ttyp_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_TTYP_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_ttyp IMPLEMENTATION
|
48
src/zabapgit_object_ttyp.prog.xml
Normal file
48
src/zabapgit_object_ttyp.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TTYP</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TTYP</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
200
src/zabapgit_object_type.prog.abap
Normal file
200
src/zabapgit_object_type.prog.abap
Normal file
|
@ -0,0 +1,200 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_TYPE
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_type DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_type DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS read
|
||||
EXPORTING ev_ddtext TYPE ddtypet-ddtext
|
||||
et_source TYPE abaptxt255_tab
|
||||
RAISING lcx_exception
|
||||
lcx_not_found.
|
||||
|
||||
METHODS create
|
||||
IMPORTING iv_ddtext TYPE ddtypet-ddtext
|
||||
it_source TYPE abaptxt255_tab
|
||||
iv_devclass TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_type DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_type IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_type IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
TRY.
|
||||
read( ).
|
||||
rv_bool = abap_true.
|
||||
CATCH lcx_not_found.
|
||||
rv_bool = abap_false.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: lv_typdname TYPE rsedd0-typegroup,
|
||||
lt_psmodisrc TYPE TABLE OF smodisrc,
|
||||
lt_psmodilog TYPE TABLE OF smodilog,
|
||||
lt_ptrdir TYPE TABLE OF trdir.
|
||||
|
||||
|
||||
SELECT SINGLE ddtext FROM ddtypet
|
||||
INTO ev_ddtext
|
||||
WHERE typegroup = ms_item-obj_name
|
||||
AND ddlanguage = mv_language.
|
||||
IF sy-subrc <> 0.
|
||||
RAISE EXCEPTION TYPE lcx_not_found.
|
||||
ENDIF.
|
||||
|
||||
lv_typdname = ms_item-obj_name.
|
||||
CALL FUNCTION 'TYPD_GET_OBJECT'
|
||||
EXPORTING
|
||||
typdname = lv_typdname
|
||||
TABLES
|
||||
psmodisrc = lt_psmodisrc
|
||||
psmodilog = lt_psmodilog
|
||||
psource = et_source
|
||||
ptrdir = lt_ptrdir
|
||||
EXCEPTIONS
|
||||
version_not_found = 1
|
||||
reps_not_exist = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from TYPD_GET_OBJECT'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_ddtext TYPE ddtypet-ddtext,
|
||||
lt_source TYPE abaptxt255_tab.
|
||||
|
||||
|
||||
TRY.
|
||||
read( IMPORTING
|
||||
ev_ddtext = lv_ddtext
|
||||
et_source = lt_source ).
|
||||
CATCH lcx_not_found.
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
io_xml->add( iv_name = 'DDTEXT'
|
||||
ig_data = lv_ddtext ).
|
||||
|
||||
mo_files->add_abap( lt_source ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD create.
|
||||
|
||||
DATA: lv_progname TYPE reposrc-progname,
|
||||
lv_typegroup TYPE rsedd0-typegroup.
|
||||
|
||||
|
||||
lv_typegroup = ms_item-obj_name.
|
||||
|
||||
IF lif_object~exists( ) = abap_true.
|
||||
lif_object~delete( ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'RS_DD_TYGR_INSERT_SOURCES'
|
||||
EXPORTING
|
||||
typegroupname = lv_typegroup
|
||||
ddtext = iv_ddtext
|
||||
corrnum = ''
|
||||
devclass = iv_devclass
|
||||
TABLES
|
||||
source = it_source
|
||||
EXCEPTIONS
|
||||
already_exists = 1
|
||||
not_executed = 2
|
||||
permission_failure = 3
|
||||
object_not_specified = 4
|
||||
illegal_name = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_TYGR_INSERT_SOURCES'.
|
||||
ENDIF.
|
||||
|
||||
CONCATENATE '%_C' lv_typegroup INTO lv_progname.
|
||||
UPDATE progdir SET uccheck = abap_true
|
||||
WHERE name = lv_progname.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error setting uccheck'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "create
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_ddtext TYPE ddtypet-ddtext,
|
||||
lt_source TYPE abaptxt255_tab.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DDTEXT'
|
||||
CHANGING cg_data = lv_ddtext ).
|
||||
|
||||
lt_source = mo_files->read_abap( ).
|
||||
|
||||
create( iv_ddtext = lv_ddtext
|
||||
it_source = lt_source
|
||||
iv_devclass = iv_package ).
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'G'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4
|
||||
dialog_needed = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error deleting TYPE'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-TYMA'
|
||||
iv_field = 'RSRD1-TYMA_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_type IMPLEMENTATION
|
48
src/zabapgit_object_type.prog.xml
Normal file
48
src/zabapgit_object_type.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TYPE</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TYPE</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
184
src/zabapgit_object_vcls.prog.abap
Normal file
184
src/zabapgit_object_vcls.prog.abap
Normal file
|
@ -0,0 +1,184 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_VCLS
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_vcls DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_vcls DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
|
||||
PRIVATE SECTION.
|
||||
* See include MTOBJCON:
|
||||
CONSTANTS: c_cluster_type TYPE c VALUE 'C'.
|
||||
CONSTANTS: c_mode_insert TYPE obj_para-maint_mode VALUE 'I'.
|
||||
|
||||
ENDCLASS. "lcl_object_vcls DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_vcls IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_vcls IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
DATA lv_vclname TYPE vcl_name.
|
||||
|
||||
SELECT SINGLE vclname INTO lv_vclname FROM vcldir
|
||||
WHERE vclname = ms_item-obj_name.
|
||||
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_vclname TYPE vcl_name,
|
||||
ls_vcldir_entry TYPE v_vcldir,
|
||||
lt_vclstruc TYPE TABLE OF v_vclstruc,
|
||||
lt_vclstrudep TYPE TABLE OF v_vclstdep,
|
||||
lt_vclmf TYPE TABLE OF v_vclmf.
|
||||
|
||||
|
||||
IF lif_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_vclname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'VIEWCLUSTER_GET_DEFINITION'
|
||||
EXPORTING
|
||||
vclname = lv_vclname
|
||||
IMPORTING
|
||||
vcldir_entry = ls_vcldir_entry
|
||||
TABLES
|
||||
vclstruc_tab = lt_vclstruc
|
||||
vclstrudep_tab = lt_vclstrudep
|
||||
vclmf_tab = lt_vclmf
|
||||
EXCEPTIONS
|
||||
viewcluster_not_found = 1
|
||||
incomplete_viewcluster = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error in VIEWCLUSTER_GET_DEFINITION'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR ls_vcldir_entry-author.
|
||||
|
||||
io_xml->add( iv_name = 'VCLDIR'
|
||||
ig_data = ls_vcldir_entry ).
|
||||
io_xml->add( iv_name = 'VLCSTRUC_TAB'
|
||||
ig_data = lt_vclstruc ).
|
||||
io_xml->add( iv_name = 'VCLSTRUDEP_TAB'
|
||||
ig_data = lt_vclstrudep ).
|
||||
io_xml->add( iv_name = 'VCLMF_TAB'
|
||||
ig_data = lt_vclmf ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_vcldir_entry TYPE v_vcldir,
|
||||
lt_vclstruc TYPE TABLE OF v_vclstruc,
|
||||
lt_vclstrudep TYPE TABLE OF v_vclstdep,
|
||||
lt_vclmf TYPE TABLE OF v_vclmf,
|
||||
lv_objectname TYPE ob_object.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'VCLDIR'
|
||||
CHANGING cg_data = ls_vcldir_entry ).
|
||||
io_xml->read( EXPORTING iv_name = 'VLCSTRUC_TAB'
|
||||
CHANGING cg_data = lt_vclstruc ).
|
||||
io_xml->read( EXPORTING iv_name = 'VCLSTRUDEP_TAB'
|
||||
CHANGING cg_data = lt_vclstrudep ).
|
||||
io_xml->read( EXPORTING iv_name = 'lt_vclstrudep'
|
||||
CHANGING cg_data = lt_vclmf ).
|
||||
|
||||
ls_vcldir_entry-author = sy-uname.
|
||||
|
||||
CALL FUNCTION 'VIEWCLUSTER_SAVE_DEFINITION'
|
||||
EXPORTING
|
||||
vcldir_entry = ls_vcldir_entry
|
||||
TABLES
|
||||
vclstruc_tab = lt_vclstruc
|
||||
vclstrudep_tab = lt_vclstrudep
|
||||
vclmf_tab = lt_vclmf.
|
||||
|
||||
lv_objectname = ls_vcldir_entry-vclname.
|
||||
CALL FUNCTION 'OBJ_GENERATE'
|
||||
EXPORTING
|
||||
iv_objectname = lv_objectname
|
||||
iv_objecttype = c_cluster_type
|
||||
iv_maint_mode = c_mode_insert
|
||||
iv_devclass = iv_package
|
||||
EXCEPTIONS
|
||||
illegal_call = 1
|
||||
object_not_found = 2
|
||||
generate_error = 3
|
||||
transport_error = 4
|
||||
object_enqueue_failed = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error in OBJ_GENERATE for VCLS'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
* Do the same as in VIEWCLUSTER_SAVE_DEFINITION
|
||||
DATA: lv_vclname TYPE vcl_name.
|
||||
|
||||
|
||||
lv_vclname = ms_item-obj_name.
|
||||
|
||||
DELETE FROM vcldir WHERE vclname = lv_vclname. "#EC CI_SUBRC
|
||||
DELETE FROM vcldirt WHERE vclname = lv_vclname. "#EC CI_NOFIRST "#EC CI_SUBRC
|
||||
DELETE FROM vclstruc WHERE vclname = lv_vclname. "#EC CI_SUBRC
|
||||
DELETE FROM vclstruct WHERE vclname = lv_vclname. "#EC CI_NOFIRST "#EC CI_SUBRC
|
||||
DELETE FROM vclstrudep WHERE vclname = lv_vclname. "#EC CI_SUBRC
|
||||
DELETE FROM vclmf WHERE vclname = lv_vclname. "#EC CI_SUBRC
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
DATA: lv_vclname TYPE vcl_name.
|
||||
|
||||
lv_vclname = ms_item-obj_name.
|
||||
CALL FUNCTION 'VIEWCLUSTER_MAINTENANCE_CALL'
|
||||
EXPORTING
|
||||
viewcluster_name = lv_vclname
|
||||
maintenance_action = 'S'
|
||||
EXCEPTIONS
|
||||
client_reference = 1
|
||||
foreign_lock = 2
|
||||
viewcluster_not_found = 3
|
||||
viewcluster_is_inconsistent = 4
|
||||
missing_generated_function = 5
|
||||
no_upd_auth = 6
|
||||
no_show_auth = 7
|
||||
object_not_found = 8
|
||||
no_tvdir_entry = 9
|
||||
no_clientindep_auth = 10
|
||||
invalid_action = 11
|
||||
saving_correction_failed = 12
|
||||
system_failure = 13
|
||||
unknown_field_in_dba_sellist = 14
|
||||
missing_corr_number = 15
|
||||
OTHERS = 16.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error in VIEWCLUSTER_MAINTENANCE_CALL'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_vcls IMPLEMENTATION
|
48
src/zabapgit_object_vcls.prog.xml
Normal file
48
src/zabapgit_object_vcls.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_VCLS</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_VCLS</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
184
src/zabapgit_object_view.prog.abap
Normal file
184
src/zabapgit_object_view.prog.abap
Normal file
|
@ -0,0 +1,184 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_VIEW
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_view DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_view DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_view IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_view IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_viewname TYPE dd25l-viewname.
|
||||
|
||||
|
||||
SELECT SINGLE viewname FROM dd25l INTO lv_viewname
|
||||
WHERE viewname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
|
||||
jump_se11( iv_radio = 'RSRD1-VIMA'
|
||||
iv_field = 'RSRD1-VIMA_VAL' ).
|
||||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'V'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from RS_DD_DELETE_OBJ, VIEW'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd25v TYPE dd25v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd26v TYPE TABLE OF dd26v,
|
||||
lt_dd27p TYPE TABLE OF dd27p,
|
||||
lt_dd28j TYPE TABLE OF dd28j,
|
||||
lt_dd28v TYPE TABLE OF dd28v.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_VIEW_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd25v_wa = ls_dd25v
|
||||
dd09l_wa = ls_dd09l
|
||||
TABLES
|
||||
dd26v_tab = lt_dd26v
|
||||
dd27p_tab = lt_dd27p
|
||||
dd28j_tab = lt_dd28j
|
||||
dd28v_tab = lt_dd28v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_VIEW_GET'.
|
||||
ENDIF.
|
||||
IF ls_dd25v IS INITIAL.
|
||||
RETURN. " does not exist in system
|
||||
ENDIF.
|
||||
|
||||
CLEAR: ls_dd25v-as4user,
|
||||
ls_dd25v-as4date,
|
||||
ls_dd25v-as4time.
|
||||
|
||||
CLEAR: ls_dd09l-as4user,
|
||||
ls_dd09l-as4date,
|
||||
ls_dd09l-as4time.
|
||||
|
||||
io_xml->add( iv_name = 'DD25V'
|
||||
ig_data = ls_dd25v ).
|
||||
io_xml->add( iv_name = 'DD09L'
|
||||
ig_data = ls_dd09l ).
|
||||
io_xml->add( ig_data = lt_dd26v
|
||||
iv_name = 'DD26V_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd27p
|
||||
iv_name = 'DD27P_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd28j
|
||||
iv_name = 'DD28J_TABLE' ).
|
||||
io_xml->add( ig_data = lt_dd28v
|
||||
iv_name = 'DD28V_TABLE' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_name TYPE ddobjname,
|
||||
ls_dd25v TYPE dd25v,
|
||||
ls_dd09l TYPE dd09l,
|
||||
lt_dd26v TYPE TABLE OF dd26v,
|
||||
lt_dd27p TYPE TABLE OF dd27p,
|
||||
lt_dd28j TYPE TABLE OF dd28j,
|
||||
lt_dd28v TYPE TABLE OF dd28v.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DD25V'
|
||||
CHANGING cg_data = ls_dd25v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD09L'
|
||||
CHANGING cg_data = ls_dd09l ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD26V_TABLE'
|
||||
CHANGING cg_data = lt_dd26v ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD27P_TABLE'
|
||||
CHANGING cg_data = lt_dd27p ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD28J_TABLE'
|
||||
CHANGING cg_data = lt_dd28j ).
|
||||
io_xml->read( EXPORTING iv_name = 'DD28V_TABLE'
|
||||
CHANGING cg_data = lt_dd28v ).
|
||||
|
||||
corr_insert( iv_package ).
|
||||
|
||||
lv_name = ms_item-obj_name. " type conversion
|
||||
|
||||
CALL FUNCTION 'DDIF_VIEW_PUT'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
dd25v_wa = ls_dd25v
|
||||
dd09l_wa = ls_dd09l
|
||||
TABLES
|
||||
dd26v_tab = lt_dd26v
|
||||
dd27p_tab = lt_dd27p
|
||||
dd28j_tab = lt_dd28j
|
||||
dd28v_tab = lt_dd28v
|
||||
EXCEPTIONS
|
||||
view_not_found = 1
|
||||
name_inconsistent = 2
|
||||
view_inconsistent = 3
|
||||
put_failure = 4
|
||||
put_refused = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from DDIF_VIEW_PUT'.
|
||||
ENDIF.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
48
src/zabapgit_object_view.prog.xml
Normal file
48
src/zabapgit_object_view.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_VIEW</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_VIEW</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
351
src/zabapgit_object_w3xx.prog.abap
Normal file
351
src/zabapgit_object_w3xx.prog.abap
Normal file
|
@ -0,0 +1,351 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_W3XX
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_W3SUPER DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
* Web Reporting/Internet Transaction Server MIME Types (super class)
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_w3super DEFINITION INHERITING FROM lcl_objects_super ABSTRACT.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS init_key RETURNING VALUE(rs_key) TYPE wwwdatatab.
|
||||
|
||||
ENDCLASS. "lcl_object_W3SUPER DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_W3SUPER IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
* Web Reporting/Internet Transaction Server MIME Types (super class)
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_w3super IMPLEMENTATION.
|
||||
|
||||
METHOD init_key.
|
||||
rs_key-relid = ms_item-obj_type+2(2).
|
||||
rs_key-objid = ms_item-obj_name.
|
||||
ENDMETHOD. " init_key
|
||||
|
||||
METHOD lif_object~jump.
|
||||
" No idea how to just to SMW0
|
||||
_raise 'Please go to SMW0 for W3MI object'.
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" W3xx EXISTS
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
METHOD lif_object~exists.
|
||||
DATA ls_key TYPE wwwdatatab.
|
||||
|
||||
ls_key = init_key( ).
|
||||
|
||||
SELECT SINGLE objid INTO ls_key-objid
|
||||
FROM wwwdata
|
||||
WHERE relid = ls_key-relid
|
||||
AND objid = ls_key-objid
|
||||
AND srtf2 = 0.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
rv_bool = abap_true.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" W3xx SERIALIZE
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
METHOD lif_object~serialize.
|
||||
DATA ls_key TYPE wwwdatatab.
|
||||
DATA lt_w3mime TYPE STANDARD TABLE OF w3mime.
|
||||
DATA lt_w3html TYPE STANDARD TABLE OF w3html.
|
||||
DATA lt_w3params TYPE STANDARD TABLE OF wwwparams.
|
||||
DATA lv_xstring TYPE xstring.
|
||||
DATA ls_wwwparam LIKE LINE OF lt_w3params.
|
||||
DATA lv_size TYPE int4.
|
||||
DATA lv_base64str TYPE string.
|
||||
DATA lo_utility TYPE REF TO cl_http_utility.
|
||||
|
||||
ls_key = init_key( ).
|
||||
|
||||
SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_key
|
||||
FROM wwwdata
|
||||
WHERE relid = ls_key-relid
|
||||
AND objid = ls_key-objid
|
||||
AND srtf2 = 0.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'WWWDATA_IMPORT'
|
||||
EXPORTING
|
||||
key = ls_key
|
||||
TABLES
|
||||
mime = lt_w3mime
|
||||
html = lt_w3html
|
||||
EXCEPTIONS
|
||||
wrong_object_type = 1
|
||||
import_error = 2.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot read W3xx data'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'WWWPARAMS_READ_ALL'
|
||||
EXPORTING
|
||||
type = ls_key-relid
|
||||
objid = ls_key-objid
|
||||
TABLES
|
||||
params = lt_w3params
|
||||
EXCEPTIONS
|
||||
entry_not_exists = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot read W3xx data'.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_w3params INTO ls_wwwparam WITH KEY name = 'filesize' ##NO_TEXT.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot read W3xx filesize'.
|
||||
ENDIF.
|
||||
|
||||
lv_size = ls_wwwparam-value.
|
||||
|
||||
CASE ls_key-relid.
|
||||
WHEN 'MI'.
|
||||
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
|
||||
EXPORTING
|
||||
input_length = lv_size
|
||||
IMPORTING
|
||||
buffer = lv_xstring
|
||||
TABLES
|
||||
binary_tab = lt_w3mime
|
||||
EXCEPTIONS
|
||||
failed = 1.
|
||||
WHEN 'HT'.
|
||||
CALL FUNCTION 'SCMS_TEXT_TO_XSTRING'
|
||||
IMPORTING
|
||||
buffer = lv_xstring
|
||||
TABLES
|
||||
text_tab = lt_w3html
|
||||
EXCEPTIONS
|
||||
failed = 1.
|
||||
WHEN OTHERS.
|
||||
_raise 'Wrong W3xx type'.
|
||||
ENDCASE.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot convert W3xx to xstring'.
|
||||
ENDIF.
|
||||
|
||||
CREATE OBJECT lo_utility.
|
||||
lv_base64str = lo_utility->encode_x_base64( lv_xstring ).
|
||||
|
||||
io_xml->add( iv_name = 'NAME'
|
||||
ig_data = ls_key-objid ).
|
||||
|
||||
io_xml->add( iv_name = 'TEXT'
|
||||
ig_data = ls_key-text ).
|
||||
|
||||
io_xml->add( iv_name = 'DATA'
|
||||
ig_data = lv_base64str ).
|
||||
|
||||
io_xml->add( iv_name = 'PARAMS'
|
||||
ig_data = lt_w3params ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" W3xx DESERIALIZE
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA ls_key TYPE wwwdatatab.
|
||||
DATA lv_base64str TYPE string.
|
||||
DATA lt_w3params TYPE STANDARD TABLE OF wwwparams.
|
||||
DATA lv_xstring TYPE xstring.
|
||||
DATA lo_utility TYPE REF TO cl_http_utility.
|
||||
DATA lt_w3mime TYPE STANDARD TABLE OF w3mime.
|
||||
DATA lt_w3html TYPE STANDARD TABLE OF w3html.
|
||||
DATA lv_size TYPE int4.
|
||||
DATA lv_tadir_obj TYPE tadir-object.
|
||||
|
||||
ls_key = init_key( ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TEXT'
|
||||
CHANGING cg_data = ls_key-text ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'DATA'
|
||||
CHANGING cg_data = lv_base64str ).
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'PARAMS'
|
||||
CHANGING cg_data = lt_w3params ).
|
||||
|
||||
CREATE OBJECT lo_utility.
|
||||
lv_xstring = lo_utility->decode_x_base64( lv_base64str ).
|
||||
|
||||
CASE ls_key-relid.
|
||||
WHEN 'MI'.
|
||||
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
|
||||
EXPORTING
|
||||
buffer = lv_xstring
|
||||
IMPORTING
|
||||
output_length = lv_size
|
||||
TABLES
|
||||
binary_tab = lt_w3mime.
|
||||
WHEN 'HT'.
|
||||
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
|
||||
EXPORTING
|
||||
buffer = lv_xstring
|
||||
IMPORTING
|
||||
output_length = lv_size
|
||||
TABLES
|
||||
binary_tab = lt_w3mime.
|
||||
|
||||
CALL FUNCTION 'SCMS_BINARY_TO_TEXT'
|
||||
EXPORTING
|
||||
input_length = lv_size
|
||||
IMPORTING
|
||||
output_length = lv_size
|
||||
TABLES
|
||||
binary_tab = lt_w3mime
|
||||
text_tab = lt_w3html
|
||||
EXCEPTIONS
|
||||
failed = 1.
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot update W3xx params'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR lt_w3mime.
|
||||
WHEN OTHERS.
|
||||
_raise 'Wrong W3xx type'.
|
||||
ENDCASE.
|
||||
|
||||
CALL FUNCTION 'WWWPARAMS_UPDATE'
|
||||
TABLES
|
||||
params = lt_w3params
|
||||
EXCEPTIONS
|
||||
update_error = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot update W3xx params'.
|
||||
ENDIF.
|
||||
|
||||
ls_key-tdate = sy-datum.
|
||||
ls_key-ttime = sy-uzeit.
|
||||
ls_key-chname = sy-uname.
|
||||
ls_key-devclass = iv_package.
|
||||
|
||||
CALL FUNCTION 'WWWDATA_EXPORT'
|
||||
EXPORTING
|
||||
key = ls_key
|
||||
TABLES
|
||||
mime = lt_w3mime
|
||||
html = lt_w3html
|
||||
EXCEPTIONS
|
||||
wrong_object_type = 1
|
||||
export_error = 2.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot upload W3xx data'.
|
||||
ENDIF.
|
||||
|
||||
CONCATENATE 'W3' ls_key-relid INTO lv_tadir_obj.
|
||||
|
||||
CALL FUNCTION 'TR_TADIR_INTERFACE'
|
||||
EXPORTING
|
||||
wi_tadir_pgmid = 'R3TR'
|
||||
wi_tadir_object = lv_tadir_obj
|
||||
wi_tadir_devclass = iv_package
|
||||
wi_tadir_obj_name = ls_key-objid
|
||||
wi_test_modus = space
|
||||
EXCEPTIONS
|
||||
tadir_entry_not_existing = 1
|
||||
tadir_entry_ill_type = 2
|
||||
no_systemname = 3
|
||||
no_systemtype = 4
|
||||
original_system_conflict = 5
|
||||
object_reserved_for_devclass = 6
|
||||
object_exists_global = 7
|
||||
object_exists_local = 8
|
||||
object_is_distributed = 9
|
||||
obj_specification_not_unique = 10
|
||||
no_authorization_to_delete = 11
|
||||
devclass_not_existing = 12
|
||||
simultanious_set_remove_repair = 13
|
||||
order_missing = 14
|
||||
no_modification_of_head_syst = 15
|
||||
pgmid_object_not_allowed = 16
|
||||
masterlanguage_not_specified = 17
|
||||
devclass_not_specified = 18
|
||||
specify_owner_unique = 19
|
||||
loc_priv_objs_no_repair = 20
|
||||
gtadir_not_reached = 21
|
||||
object_locked_for_order = 22
|
||||
change_of_class_not_allowed = 23
|
||||
no_change_from_sap_to_tmp = 24
|
||||
OTHERS = 99.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot update TADIR for W3xx'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
" W3xx DELETE
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
METHOD lif_object~delete.
|
||||
DATA ls_key TYPE wwwdatatab.
|
||||
|
||||
ls_key = init_key( ).
|
||||
|
||||
CALL FUNCTION 'WWWDATA_DELETE'
|
||||
EXPORTING
|
||||
key = ls_key
|
||||
EXCEPTIONS
|
||||
wrong_object_type = 1
|
||||
delete_error = 2.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot delete W3xx data'.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'WWWPARAMS_DELETE_ALL'
|
||||
EXPORTING
|
||||
key = ls_key
|
||||
EXCEPTIONS
|
||||
delete_error = 1.
|
||||
|
||||
IF sy-subrc IS NOT INITIAL.
|
||||
_raise 'Cannot delete W3xx params'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
ENDCLASS. "lcl_object_W3SUPER IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_W3MI DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
* Web Reporting/Internet Transaction Server MIME Types (binary data)
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_w3mi DEFINITION INHERITING FROM lcl_object_w3super FINAL.
|
||||
ENDCLASS. "lcl_object_W3MI DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_W3HT DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
* Web Reporting/Internet Transaction Server MIME Types (html data)
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_w3ht DEFINITION INHERITING FROM lcl_object_w3super FINAL.
|
||||
ENDCLASS. "lcl_object_W3HT DEFINITION
|
48
src/zabapgit_object_w3xx.prog.xml
Normal file
48
src/zabapgit_object_w3xx.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_W3XX</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_W3XX</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
206
src/zabapgit_object_wdya.prog.abap
Normal file
206
src/zabapgit_object_wdya.prog.abap
Normal file
|
@ -0,0 +1,206 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_WDYA
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_wdya DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdya DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS read
|
||||
EXPORTING es_app TYPE wdy_application
|
||||
et_properties TYPE wdy_app_property_table
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS save
|
||||
IMPORTING is_app TYPE wdy_application
|
||||
it_properties TYPE wdy_app_property_table
|
||||
iv_package TYPE devclass
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_wdya DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_wdya IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdya IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_name TYPE wdy_application_name.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
cl_wdy_md_application=>get_object_by_key(
|
||||
name = lv_name
|
||||
version = 'A' ).
|
||||
rv_bool = abap_true.
|
||||
CATCH cx_wdy_md_not_existing.
|
||||
rv_bool = abap_false.
|
||||
CATCH cx_wdy_md_permission_failure.
|
||||
_raise 'WDYA, permission failure'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: li_app TYPE REF TO if_wdy_md_application,
|
||||
li_map TYPE REF TO if_object_map,
|
||||
lo_prop TYPE REF TO cl_wdy_md_application_property,
|
||||
ls_prop LIKE LINE OF et_properties,
|
||||
lv_name TYPE wdy_application_name.
|
||||
|
||||
|
||||
CLEAR es_app.
|
||||
CLEAR et_properties.
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
TRY.
|
||||
li_app = cl_wdy_md_application=>get_object_by_key(
|
||||
name = lv_name
|
||||
version = 'A' ).
|
||||
CATCH cx_wdy_md_not_existing.
|
||||
RETURN.
|
||||
CATCH cx_wdy_md_permission_failure.
|
||||
_raise 'WDYA, permission failure'.
|
||||
ENDTRY.
|
||||
|
||||
li_app->if_wdy_md_object~get_definition( IMPORTING definition = es_app ).
|
||||
CLEAR: es_app-author,
|
||||
es_app-createdon,
|
||||
es_app-changedby,
|
||||
es_app-changedon.
|
||||
|
||||
li_map = li_app->get_properties( ).
|
||||
DO li_map->size( ) TIMES.
|
||||
lo_prop ?= li_map->get_by_position( sy-index ).
|
||||
lo_prop->get_definition( IMPORTING definition = ls_prop ).
|
||||
APPEND ls_prop TO et_properties.
|
||||
ENDDO.
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_app TYPE wdy_application,
|
||||
lt_properties TYPE wdy_app_property_table.
|
||||
|
||||
|
||||
read( IMPORTING es_app = ls_app
|
||||
et_properties = lt_properties ).
|
||||
|
||||
io_xml->add( iv_name = 'APP'
|
||||
ig_data = ls_app ).
|
||||
io_xml->add( iv_name = 'PROPERTIES'
|
||||
ig_data = lt_properties ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD save.
|
||||
|
||||
DATA: li_prop TYPE REF TO if_wdy_md_application_property,
|
||||
lo_app TYPE REF TO cl_wdy_md_application.
|
||||
|
||||
FIELD-SYMBOLS: <ls_property> LIKE LINE OF it_properties.
|
||||
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lo_app
|
||||
EXPORTING
|
||||
name = is_app-application_name
|
||||
definition = is_app
|
||||
devclass = iv_package.
|
||||
|
||||
LOOP AT it_properties ASSIGNING <ls_property>.
|
||||
li_prop = lo_app->if_wdy_md_application~create_property( <ls_property>-name ).
|
||||
li_prop->set_value( <ls_property>-value ).
|
||||
ENDLOOP.
|
||||
|
||||
lo_app->if_wdy_md_lockable_object~save_to_database( ).
|
||||
CATCH cx_wdy_md_exception.
|
||||
_raise 'error saving WDYA'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "save
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_app TYPE wdy_application,
|
||||
lt_properties TYPE wdy_app_property_table.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'APP'
|
||||
CHANGING cg_data = ls_app ).
|
||||
io_xml->read( EXPORTING iv_name = 'PROPERTIES'
|
||||
CHANGING cg_data = lt_properties ).
|
||||
|
||||
save( is_app = ls_app
|
||||
it_properties = lt_properties
|
||||
iv_package = iv_package ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: li_app TYPE REF TO if_wdy_md_application,
|
||||
lv_objkey TYPE wdy_wb_appl_name,
|
||||
lv_type TYPE seu_type,
|
||||
lv_name TYPE wdy_application_name.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
TRY.
|
||||
li_app = cl_wdy_md_application=>get_object_by_key(
|
||||
name = lv_name
|
||||
version = 'A' ).
|
||||
li_app->if_wdy_md_object~delete( ).
|
||||
li_app->if_wdy_md_lockable_object~save_to_database( ).
|
||||
|
||||
* method save_to_database calls function module TR_TADIR_INTERFACE
|
||||
* with test mode = X, so it does not delete the TADIR entry.
|
||||
* Instead the standard code uses RS_TREE_OBJECT_PLACEMENT to delete
|
||||
* the TADIR entry
|
||||
lv_objkey = ms_item-obj_name.
|
||||
CONCATENATE 'O' swbm_c_type_wdy_application INTO lv_type.
|
||||
CALL FUNCTION 'RS_TREE_OBJECT_PLACEMENT'
|
||||
EXPORTING
|
||||
object = lv_objkey
|
||||
type = lv_type
|
||||
operation = 'DELETE'.
|
||||
|
||||
CATCH cx_wdy_md_not_existing.
|
||||
RETURN.
|
||||
CATCH cx_wdy_md_exception.
|
||||
_raise 'WDYA, error deleting'.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_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. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_wdya IMPLEMENTATION
|
48
src/zabapgit_object_wdya.prog.xml
Normal file
48
src/zabapgit_object_wdya.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_WDYA</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_WDYA</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
642
src/zabapgit_object_wdyn.prog.abap
Normal file
642
src/zabapgit_object_wdyn.prog.abap
Normal file
|
@ -0,0 +1,642 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_WDYN
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_wdyn DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdyn DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
DATA:
|
||||
mt_components TYPE TABLE OF wdy_ctlr_compo_vrs,
|
||||
mt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs.
|
||||
|
||||
METHODS:
|
||||
get_limu_objects
|
||||
RETURNING VALUE(rt_objects) TYPE wdy_md_transport_keys,
|
||||
read
|
||||
RETURNING VALUE(rs_component) TYPE wdy_component_metadata
|
||||
RAISING lcx_exception,
|
||||
read_controller
|
||||
IMPORTING is_key TYPE wdy_md_controller_key
|
||||
RETURNING VALUE(rs_controller) TYPE wdy_md_controller_meta_data
|
||||
RAISING lcx_exception,
|
||||
read_definition
|
||||
IMPORTING is_key TYPE wdy_md_component_key
|
||||
RETURNING VALUE(rs_definition) TYPE wdy_md_component_meta_data
|
||||
RAISING lcx_exception,
|
||||
read_view
|
||||
IMPORTING is_key TYPE wdy_md_view_key
|
||||
RETURNING VALUE(rs_view) TYPE wdy_md_view_meta_data
|
||||
RAISING lcx_exception,
|
||||
recover_controller
|
||||
IMPORTING is_controller TYPE wdy_md_controller_meta_data
|
||||
RAISING lcx_exception,
|
||||
recover_definition
|
||||
IMPORTING is_definition TYPE wdy_md_component_meta_data
|
||||
RAISING lcx_exception,
|
||||
recover_view
|
||||
IMPORTING is_view TYPE wdy_md_view_meta_data
|
||||
RAISING lcx_exception,
|
||||
delta_controller
|
||||
IMPORTING is_controller TYPE wdy_md_controller_meta_data
|
||||
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
||||
RAISING lcx_exception,
|
||||
delta_definition
|
||||
IMPORTING is_definition TYPE wdy_md_component_meta_data
|
||||
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
||||
RAISING lcx_exception,
|
||||
delta_view
|
||||
IMPORTING is_view TYPE wdy_md_view_meta_data
|
||||
RETURNING VALUE(rs_delta) TYPE svrs2_xversionable_object
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_wdyn DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_wdyn IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdyn IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_component_name TYPE wdy_component-component_name.
|
||||
|
||||
|
||||
SELECT SINGLE component_name FROM wdy_component
|
||||
INTO lv_component_name
|
||||
WHERE component_name = ms_item-obj_name
|
||||
AND version = 'A'. "#EC CI_GENBUFF
|
||||
rv_bool = boolc( sy-subrc = 0 ).
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD delta_definition.
|
||||
|
||||
DATA: ls_key TYPE wdy_md_component_key,
|
||||
lv_found TYPE abap_bool,
|
||||
ls_obj_new TYPE svrs2_versionable_object,
|
||||
li_component TYPE REF TO if_wdy_md_component,
|
||||
ls_obj_old TYPE svrs2_versionable_object.
|
||||
|
||||
|
||||
ls_key-component_name = is_definition-definition-component_name.
|
||||
|
||||
lv_found = cl_wdy_md_component=>check_existency( ls_key-component_name ).
|
||||
IF lv_found = abap_false.
|
||||
TRY.
|
||||
cl_wdy_md_component=>create_complete(
|
||||
EXPORTING
|
||||
name = ls_key-component_name
|
||||
IMPORTING
|
||||
component = li_component ).
|
||||
li_component->save_to_database( ).
|
||||
li_component->unlock( ).
|
||||
CATCH cx_wdy_md_exception.
|
||||
_raise 'error creating dummy component'.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
ls_obj_new-objtype = wdyn_limu_component_definition.
|
||||
ls_obj_new-objname = ls_key-component_name.
|
||||
|
||||
ls_obj_old-objtype = wdyn_limu_component_definition.
|
||||
ls_obj_old-objname = ls_key-component_name.
|
||||
|
||||
APPEND is_definition-definition TO ls_obj_old-wdyd-defin.
|
||||
ls_obj_old-wdyd-descr = is_definition-descriptions.
|
||||
ls_obj_old-wdyd-cusag = is_definition-component_usages.
|
||||
ls_obj_old-wdyd-intrf = is_definition-interface_implementings.
|
||||
ls_obj_old-wdyd-libra = is_definition-library_usages.
|
||||
ls_obj_old-wdyd-ctuse = is_definition-ext_ctlr_usages.
|
||||
ls_obj_old-wdyd-ctmap = is_definition-ext_ctx_mappings.
|
||||
|
||||
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
||||
EXPORTING
|
||||
obj_old = ls_obj_new
|
||||
obj_new = ls_obj_old
|
||||
CHANGING
|
||||
delta = rs_delta
|
||||
EXCEPTIONS
|
||||
inconsistent_objects = 1.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from SVRS_MAKE_OBJECT_DELTA'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delta_definition
|
||||
|
||||
METHOD delta_controller.
|
||||
|
||||
DATA: li_controller TYPE REF TO if_wdy_md_controller,
|
||||
lv_found TYPE abap_bool,
|
||||
ls_key TYPE wdy_md_controller_key,
|
||||
ls_obj_new TYPE svrs2_versionable_object,
|
||||
ls_obj_old TYPE svrs2_versionable_object.
|
||||
|
||||
FIELD-SYMBOLS: <ls_component> LIKE LINE OF mt_components,
|
||||
<ls_source> LIKE LINE OF mt_sources.
|
||||
|
||||
|
||||
ls_key-component_name = is_controller-definition-component_name.
|
||||
ls_key-controller_name = is_controller-definition-controller_name.
|
||||
|
||||
lv_found = cl_wdy_md_controller=>check_existency(
|
||||
component_name = ls_key-component_name
|
||||
controller_name = ls_key-controller_name ).
|
||||
IF lv_found = abap_false.
|
||||
TRY.
|
||||
li_controller ?= cl_wdy_md_controller=>create_complete(
|
||||
component_name = ls_key-component_name
|
||||
controller_name = ls_key-controller_name
|
||||
controller_type = is_controller-definition-controller_type ).
|
||||
li_controller->save_to_database( ).
|
||||
li_controller->unlock( ).
|
||||
CATCH cx_wdy_md_exception.
|
||||
_raise 'error creating dummy controller'.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
ls_obj_new-objtype = wdyn_limu_component_controller.
|
||||
ls_obj_new-objname = ls_key.
|
||||
|
||||
ls_obj_old-objtype = wdyn_limu_component_controller.
|
||||
ls_obj_old-objname = ls_key.
|
||||
|
||||
APPEND is_controller-definition TO ls_obj_old-wdyc-defin.
|
||||
|
||||
LOOP AT mt_components ASSIGNING <ls_component>
|
||||
WHERE component_name = ls_key-component_name
|
||||
AND controller_name = ls_key-controller_name.
|
||||
APPEND <ls_component> TO ls_obj_old-wdyc-ccomp.
|
||||
ENDLOOP.
|
||||
LOOP AT mt_sources ASSIGNING <ls_source>
|
||||
WHERE component_name = ls_key-component_name
|
||||
AND controller_name = ls_key-controller_name.
|
||||
APPEND <ls_source> TO ls_obj_old-wdyc-ccoms.
|
||||
ENDLOOP.
|
||||
|
||||
ls_obj_old-wdyc-descr = is_controller-descriptions.
|
||||
ls_obj_old-wdyc-cusag = is_controller-controller_usages.
|
||||
ls_obj_old-wdyc-ccomt = is_controller-controller_component_texts.
|
||||
ls_obj_old-wdyc-cpara = is_controller-controller_parameters.
|
||||
ls_obj_old-wdyc-cpart = is_controller-controller_parameter_texts.
|
||||
ls_obj_old-wdyc-cnode = is_controller-context_nodes.
|
||||
ls_obj_old-wdyc-cattr = is_controller-context_attributes.
|
||||
ls_obj_old-wdyc-cmapp = is_controller-context_mappings.
|
||||
ls_obj_old-wdyc-excp = is_controller-controller_exceptions.
|
||||
ls_obj_old-wdyc-excpt = is_controller-controller_exception_texts.
|
||||
ls_obj_old-wdyc-fgrps = is_controller-fieldgroups.
|
||||
|
||||
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
||||
EXPORTING
|
||||
obj_old = ls_obj_new
|
||||
obj_new = ls_obj_old
|
||||
CHANGING
|
||||
delta = rs_delta
|
||||
EXCEPTIONS
|
||||
inconsistent_objects = 1.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from SVRS_MAKE_OBJECT_DELTA'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delta_controller
|
||||
|
||||
METHOD delta_view.
|
||||
|
||||
DATA: ls_key TYPE wdy_md_view_key,
|
||||
ls_obj_new TYPE svrs2_versionable_object,
|
||||
ls_obj_old TYPE svrs2_versionable_object,
|
||||
lv_found TYPE abap_bool,
|
||||
li_view TYPE REF TO if_wdy_md_abstract_view.
|
||||
|
||||
FIELD-SYMBOLS: <ls_def> LIKE LINE OF ls_obj_old-wdyv-defin.
|
||||
|
||||
|
||||
ls_key-component_name = is_view-definition-component_name.
|
||||
ls_key-view_name = is_view-definition-view_name.
|
||||
|
||||
lv_found = cl_wdy_md_abstract_view=>check_existency(
|
||||
component_name = ls_key-component_name
|
||||
name = ls_key-view_name ).
|
||||
IF lv_found = abap_false.
|
||||
TRY.
|
||||
li_view = cl_wdy_md_abstract_view=>create(
|
||||
component_name = is_view-definition-component_name
|
||||
view_name = is_view-definition-view_name
|
||||
type = is_view-definition-type ).
|
||||
li_view->save_to_database( ).
|
||||
li_view->unlock( ).
|
||||
CATCH cx_wdy_md_exception.
|
||||
_raise 'error creating dummy view'.
|
||||
ENDTRY.
|
||||
ENDIF.
|
||||
|
||||
ls_obj_new-objtype = wdyn_limu_component_view.
|
||||
ls_obj_new-objname = ls_key.
|
||||
|
||||
ls_obj_old-objtype = wdyn_limu_component_view.
|
||||
ls_obj_old-objname = ls_key.
|
||||
|
||||
APPEND INITIAL LINE TO ls_obj_old-wdyv-defin ASSIGNING <ls_def>.
|
||||
MOVE-CORRESPONDING is_view-definition TO <ls_def>.
|
||||
|
||||
ls_obj_old-wdyv-descr = is_view-descriptions.
|
||||
ls_obj_old-wdyv-vcont = is_view-view_containers.
|
||||
ls_obj_old-wdyv-vcntt = is_view-view_container_texts.
|
||||
ls_obj_old-wdyv-ibplg = is_view-iobound_plugs.
|
||||
ls_obj_old-wdyv-ibplt = is_view-iobound_plug_texts.
|
||||
ls_obj_old-wdyv-plpar = is_view-plug_parameters.
|
||||
ls_obj_old-wdyv-plprt = is_view-plug_parameter_texts.
|
||||
ls_obj_old-wdyv-uiele = is_view-ui_elements.
|
||||
ls_obj_old-wdyv-uicon = is_view-ui_context_bindings.
|
||||
ls_obj_old-wdyv-uievt = is_view-ui_event_bindings.
|
||||
ls_obj_old-wdyv-uiddc = is_view-ui_ddic_bindings.
|
||||
ls_obj_old-wdyv-uiprp = is_view-ui_properties.
|
||||
ls_obj_old-wdyv-navil = is_view-navigation_links.
|
||||
ls_obj_old-wdyv-navit = is_view-navigation_target_refs.
|
||||
ls_obj_old-wdyv-vshno = is_view-vsh_nodes.
|
||||
ls_obj_old-wdyv-vshpl = is_view-vsh_placeholders.
|
||||
ls_obj_old-wdyv-views = is_view-viewset_properties.
|
||||
|
||||
CALL FUNCTION 'SVRS_MAKE_OBJECT_DELTA'
|
||||
EXPORTING
|
||||
obj_old = ls_obj_new
|
||||
obj_new = ls_obj_old
|
||||
CHANGING
|
||||
delta = rs_delta
|
||||
EXCEPTIONS
|
||||
inconsistent_objects = 1.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from SVRS_MAKE_OBJECT_DELTA'.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "delta_view
|
||||
|
||||
METHOD recover_definition.
|
||||
|
||||
DATA: ls_key TYPE wdy_md_component_key,
|
||||
lv_corrnr TYPE trkorr,
|
||||
ls_delta TYPE svrs2_xversionable_object.
|
||||
|
||||
|
||||
ls_delta = delta_definition( is_definition ).
|
||||
ls_key-component_name = is_definition-definition-component_name.
|
||||
|
||||
cl_wdy_md_component=>recover_version(
|
||||
EXPORTING
|
||||
component_key = ls_key
|
||||
delta = ls_delta-wdyd
|
||||
CHANGING
|
||||
corrnr = lv_corrnr ).
|
||||
|
||||
ENDMETHOD. "recover_definition
|
||||
|
||||
METHOD recover_controller.
|
||||
|
||||
DATA: ls_key TYPE wdy_controller_key,
|
||||
lv_corrnr TYPE trkorr,
|
||||
ls_delta TYPE svrs2_xversionable_object.
|
||||
|
||||
|
||||
ls_delta = delta_controller( is_controller ).
|
||||
ls_key-component_name = is_controller-definition-component_name.
|
||||
ls_key-controller_name = is_controller-definition-controller_name.
|
||||
|
||||
cl_wdy_md_controller=>recover_version(
|
||||
EXPORTING
|
||||
controller_key = ls_key
|
||||
delta = ls_delta-wdyc
|
||||
CHANGING
|
||||
corrnr = lv_corrnr ).
|
||||
|
||||
ENDMETHOD. "recover_controller
|
||||
|
||||
METHOD recover_view.
|
||||
|
||||
DATA: ls_key TYPE wdy_md_view_key,
|
||||
lv_corrnr TYPE trkorr,
|
||||
ls_delta TYPE svrs2_xversionable_object.
|
||||
|
||||
|
||||
ls_delta = delta_view( is_view ).
|
||||
ls_key-component_name = is_view-definition-component_name.
|
||||
ls_key-view_name = is_view-definition-view_name.
|
||||
|
||||
cl_wdy_md_abstract_view=>recover_version(
|
||||
EXPORTING
|
||||
view_key = ls_key
|
||||
delta = ls_delta-wdyv
|
||||
CHANGING
|
||||
corrnr = lv_corrnr ).
|
||||
|
||||
ENDMETHOD. "recover_view
|
||||
|
||||
METHOD read_controller.
|
||||
|
||||
DATA: lt_components TYPE TABLE OF wdy_ctlr_compo_vrs,
|
||||
lt_sources TYPE TABLE OF wdy_ctlr_compo_source_vrs,
|
||||
lt_definition TYPE TABLE OF wdy_controller,
|
||||
lt_psmodilog TYPE TABLE OF smodilog,
|
||||
lt_psmodisrc TYPE TABLE OF smodisrc.
|
||||
|
||||
|
||||
CALL FUNCTION 'WDYC_GET_OBJECT'
|
||||
EXPORTING
|
||||
controller_key = is_key
|
||||
get_all_translations = abap_false
|
||||
TABLES
|
||||
definition = lt_definition
|
||||
descriptions = rs_controller-descriptions
|
||||
controller_usages = rs_controller-controller_usages
|
||||
controller_components = lt_components
|
||||
controller_component_sources = lt_sources
|
||||
controller_component_texts = rs_controller-controller_component_texts
|
||||
controller_parameters = rs_controller-controller_parameters
|
||||
controller_parameter_texts = rs_controller-controller_parameter_texts
|
||||
context_nodes = rs_controller-context_nodes
|
||||
context_attributes = rs_controller-context_attributes
|
||||
context_mappings = rs_controller-context_mappings
|
||||
fieldgroups = rs_controller-fieldgroups
|
||||
controller_exceptions = rs_controller-controller_exceptions
|
||||
controller_exception_texts = rs_controller-controller_exception_texts
|
||||
psmodilog = lt_psmodilog " not optional in all versions
|
||||
psmodisrc = lt_psmodisrc " not optional in all versions
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from WDYC_GET_OBJECT'.
|
||||
ENDIF.
|
||||
|
||||
APPEND LINES OF lt_components TO mt_components.
|
||||
APPEND LINES OF lt_sources TO mt_sources.
|
||||
|
||||
READ TABLE lt_definition INDEX 1 INTO rs_controller-definition.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'WDYC, definition not found'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR: rs_controller-definition-author,
|
||||
rs_controller-definition-createdon,
|
||||
rs_controller-definition-changedby,
|
||||
rs_controller-definition-changedon.
|
||||
|
||||
ENDMETHOD. "read_controller
|
||||
|
||||
METHOD read_definition.
|
||||
|
||||
DATA: lt_definition TYPE TABLE OF wdy_component,
|
||||
lt_psmodilog TYPE TABLE OF smodilog,
|
||||
lt_psmodisrc TYPE TABLE OF smodisrc.
|
||||
|
||||
|
||||
CALL FUNCTION 'WDYD_GET_OBJECT'
|
||||
EXPORTING
|
||||
component_key = is_key
|
||||
get_all_translations = abap_false
|
||||
TABLES
|
||||
definition = lt_definition
|
||||
descriptions = rs_definition-descriptions
|
||||
component_usages = rs_definition-component_usages
|
||||
interface_implementings = rs_definition-interface_implementings
|
||||
library_usages = rs_definition-library_usages
|
||||
ext_ctlr_usages = rs_definition-ext_ctlr_usages
|
||||
ext_ctx_mappings = rs_definition-ext_ctx_mappings
|
||||
psmodilog = lt_psmodilog " not optional in all versions
|
||||
psmodisrc = lt_psmodisrc " not optional in all versions
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc = 1.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
_raise 'error from WDYD_GET_OBJECT'.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_definition INDEX 1 INTO rs_definition-definition.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'WDYD, definition not found'.
|
||||
ENDIF.
|
||||
|
||||
CLEAR: rs_definition-definition-author,
|
||||
rs_definition-definition-createdon,
|
||||
rs_definition-definition-changedby,
|
||||
rs_definition-definition-changedon,
|
||||
rs_definition-definition-gendate,
|
||||
rs_definition-definition-gentime.
|
||||
|
||||
ENDMETHOD. "read_definition
|
||||
|
||||
METHOD read_view.
|
||||
|
||||
DATA: lt_definition TYPE TABLE OF wdy_view_vrs,
|
||||
lt_psmodilog TYPE TABLE OF smodilog,
|
||||
lt_psmodisrc TYPE TABLE OF smodisrc.
|
||||
|
||||
FIELD-SYMBOLS: <ls_definition> LIKE LINE OF lt_definition.
|
||||
|
||||
|
||||
CALL FUNCTION 'WDYV_GET_OBJECT'
|
||||
EXPORTING
|
||||
view_key = is_key
|
||||
get_all_translations = abap_false
|
||||
TABLES
|
||||
definition = lt_definition
|
||||
descriptions = rs_view-descriptions
|
||||
view_containers = rs_view-view_containers
|
||||
view_container_texts = rs_view-view_container_texts
|
||||
iobound_plugs = rs_view-iobound_plugs
|
||||
iobound_plug_texts = rs_view-iobound_plug_texts
|
||||
plug_parameters = rs_view-plug_parameters
|
||||
plug_parameter_texts = rs_view-plug_parameter_texts
|
||||
ui_elements = rs_view-ui_elements
|
||||
ui_context_bindings = rs_view-ui_context_bindings
|
||||
ui_event_bindings = rs_view-ui_event_bindings
|
||||
ui_ddic_bindings = rs_view-ui_ddic_bindings
|
||||
ui_properties = rs_view-ui_properties
|
||||
navigation_links = rs_view-navigation_links
|
||||
navigation_target_refs = rs_view-navigation_target_refs
|
||||
vsh_nodes = rs_view-vsh_nodes
|
||||
vsh_placeholders = rs_view-vsh_placeholders
|
||||
viewset_properties = rs_view-viewset_properties
|
||||
psmodilog = lt_psmodilog
|
||||
psmodisrc = lt_psmodisrc
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from WDYV_GET_OBJECT'.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_definition INDEX 1 ASSIGNING <ls_definition>.
|
||||
ASSERT sy-subrc = 0.
|
||||
MOVE-CORRESPONDING <ls_definition> TO rs_view-definition.
|
||||
|
||||
CLEAR: rs_view-definition-author,
|
||||
rs_view-definition-createdon,
|
||||
rs_view-definition-changedby,
|
||||
rs_view-definition-changedon.
|
||||
|
||||
ENDMETHOD. "read_view
|
||||
|
||||
METHOD get_limu_objects.
|
||||
|
||||
DATA: lv_name TYPE wdy_component_name.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
CALL FUNCTION 'WDYN_GET_LIMU_OBJECTS'
|
||||
EXPORTING
|
||||
component_name = lv_name
|
||||
IMPORTING
|
||||
limu_objects = rt_objects.
|
||||
|
||||
ENDMETHOD. "get_limu_objects
|
||||
|
||||
METHOD read.
|
||||
|
||||
DATA: lt_objects TYPE wdy_md_transport_keys,
|
||||
ls_controller_key TYPE wdy_md_controller_key,
|
||||
ls_component_key TYPE wdy_md_component_key,
|
||||
ls_view_key TYPE wdy_md_view_key.
|
||||
|
||||
FIELD-SYMBOLS: <ls_object> LIKE LINE OF lt_objects.
|
||||
|
||||
|
||||
CLEAR mt_components.
|
||||
CLEAR mt_sources.
|
||||
|
||||
lt_objects = get_limu_objects( ).
|
||||
|
||||
LOOP AT lt_objects ASSIGNING <ls_object>.
|
||||
CASE <ls_object>-sub_type.
|
||||
WHEN wdyn_limu_component_controller.
|
||||
ls_controller_key = <ls_object>-sub_name.
|
||||
APPEND read_controller( ls_controller_key ) TO rs_component-ctlr_metadata.
|
||||
WHEN wdyn_limu_component_definition.
|
||||
ls_component_key = <ls_object>-sub_name.
|
||||
rs_component-comp_metadata = read_definition( ls_component_key ).
|
||||
WHEN wdyn_limu_component_view.
|
||||
ls_view_key = <ls_object>-sub_name.
|
||||
APPEND read_view( ls_view_key ) TO rs_component-view_metadata.
|
||||
WHEN OTHERS.
|
||||
ASSERT 0 = 1.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
SORT rs_component-ctlr_metadata BY
|
||||
definition-component_name ASCENDING
|
||||
definition-controller_name ASCENDING.
|
||||
|
||||
SORT mt_components BY
|
||||
component_name ASCENDING
|
||||
controller_name ASCENDING
|
||||
cmpname ASCENDING.
|
||||
|
||||
SORT mt_sources BY
|
||||
component_name ASCENDING
|
||||
controller_name ASCENDING
|
||||
cmpname ASCENDING
|
||||
line_number ASCENDING.
|
||||
|
||||
ENDMETHOD. "read
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: ls_component TYPE wdy_component_metadata.
|
||||
|
||||
|
||||
ls_component = read( ).
|
||||
|
||||
io_xml->add( iv_name = 'COMPONENT'
|
||||
ig_data = ls_component ).
|
||||
io_xml->add( ig_data = mt_components
|
||||
iv_name = 'COMPONENTS' ).
|
||||
io_xml->add( ig_data = mt_sources
|
||||
iv_name = 'SOURCES' ).
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: ls_component TYPE wdy_component_metadata.
|
||||
|
||||
FIELD-SYMBOLS: <ls_view> LIKE LINE OF ls_component-view_metadata,
|
||||
<ls_controller> LIKE LINE OF ls_component-ctlr_metadata.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'COMPONENT'
|
||||
CHANGING cg_data = ls_component ).
|
||||
io_xml->read( EXPORTING iv_name = 'COMPONENTS'
|
||||
CHANGING cg_data = mt_components ).
|
||||
io_xml->read( EXPORTING iv_name = 'SOURCES'
|
||||
CHANGING cg_data = mt_sources ).
|
||||
|
||||
ls_component-comp_metadata-definition-author = sy-uname.
|
||||
ls_component-comp_metadata-definition-createdon = sy-datum.
|
||||
recover_definition( ls_component-comp_metadata ).
|
||||
|
||||
LOOP AT ls_component-ctlr_metadata ASSIGNING <ls_controller>.
|
||||
<ls_controller>-definition-author = sy-uname.
|
||||
<ls_controller>-definition-createdon = sy-datum.
|
||||
recover_controller( <ls_controller> ).
|
||||
ENDLOOP.
|
||||
LOOP AT ls_component-view_metadata ASSIGNING <ls_view>.
|
||||
<ls_view>-definition-author = sy-uname.
|
||||
<ls_view>-definition-createdon = sy-datum.
|
||||
recover_view( <ls_view> ).
|
||||
ENDLOOP.
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lo_component TYPE REF TO cl_wdy_wb_component,
|
||||
lo_request TYPE REF TO cl_wb_request,
|
||||
li_state TYPE REF TO if_wb_program_state,
|
||||
lv_object_name TYPE seu_objkey.
|
||||
|
||||
|
||||
CREATE OBJECT lo_component.
|
||||
|
||||
lv_object_name = ms_item-obj_name.
|
||||
CREATE OBJECT lo_request
|
||||
EXPORTING
|
||||
p_object_type = 'YC'
|
||||
p_object_name = lv_object_name
|
||||
p_operation = swbm_c_op_delete_no_dialog.
|
||||
|
||||
lo_component->if_wb_program~process_wb_request(
|
||||
p_wb_request = lo_request
|
||||
p_wb_program_state = li_state ).
|
||||
|
||||
ENDMETHOD. "delete
|
||||
|
||||
METHOD lif_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. "jump
|
||||
|
||||
ENDCLASS. "lcl_object_wdyn IMPLEMENTATION
|
48
src/zabapgit_object_wdyn.prog.xml
Normal file
48
src/zabapgit_object_wdyn.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_WDYN</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_WDYN</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
167
src/zabapgit_object_xslt.prog.abap
Normal file
167
src/zabapgit_object_xslt.prog.abap
Normal file
|
@ -0,0 +1,167 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include ZABAPGIT_OBJECT_XSLT
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_xslt DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_xslt DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
ENDCLASS. "lcl_object_xslt DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* CLASS lcl_object_xslt IMPLEMENTATION
|
||||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_xslt IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
|
||||
DATA: lv_name TYPE cxsltdesc,
|
||||
lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
||||
lv_source TYPE string,
|
||||
ls_attributes TYPE o2xsltattr.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
cl_o2_api_xsltdesc=>load(
|
||||
EXPORTING
|
||||
p_xslt_desc = lv_name
|
||||
IMPORTING
|
||||
p_obj = lo_xslt
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
permission_failure = 2
|
||||
OTHERS = 3 ).
|
||||
IF sy-subrc <> 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ls_attributes = lo_xslt->get_attributes( ).
|
||||
|
||||
CLEAR: ls_attributes-author,
|
||||
ls_attributes-createdon,
|
||||
ls_attributes-changedby,
|
||||
ls_attributes-changedon,
|
||||
ls_attributes-devclass.
|
||||
|
||||
io_xml->add( iv_name = 'ATTRIBUTES'
|
||||
ig_data = ls_attributes ).
|
||||
|
||||
lv_source = lo_xslt->get_source_string( ).
|
||||
|
||||
mo_files->add_string( iv_extra = 'source'
|
||||
iv_ext = 'xml'
|
||||
iv_string = lv_source ) ##NO_TEXT.
|
||||
|
||||
ENDMETHOD. "lif_object~serialize
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
|
||||
DATA: lv_source TYPE string,
|
||||
lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
||||
lv_len TYPE i,
|
||||
ls_attributes TYPE o2xsltattr.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'ATTRIBUTES'
|
||||
CHANGING cg_data = ls_attributes ).
|
||||
|
||||
ls_attributes-devclass = iv_package.
|
||||
|
||||
lv_source = mo_files->read_string( iv_extra = 'source'
|
||||
iv_ext = 'xml' ) ##NO_TEXT.
|
||||
|
||||
* workaround: somewhere additional linefeeds are added
|
||||
lv_len = strlen( lv_source ) - 2.
|
||||
IF lv_source+lv_len(2) = cl_abap_char_utilities=>cr_lf.
|
||||
lv_source = lv_source(lv_len).
|
||||
ENDIF.
|
||||
|
||||
cl_o2_api_xsltdesc=>create_new_from_string(
|
||||
EXPORTING
|
||||
p_source = lv_source
|
||||
p_attr = ls_attributes
|
||||
IMPORTING
|
||||
p_obj = lo_xslt
|
||||
EXCEPTIONS
|
||||
action_cancelled = 1
|
||||
error_occured = 2
|
||||
not_authorized = 3
|
||||
object_already_existing = 4
|
||||
undefined_name = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from cl_o2_api_xsltdesc=>create_new_from_string'.
|
||||
ENDIF.
|
||||
|
||||
lo_xslt->save( ).
|
||||
|
||||
lo_xslt->set_changeable( abap_false ).
|
||||
|
||||
lcl_objects_activation=>add_item( ms_item ).
|
||||
|
||||
ENDMETHOD. "lif_object~deserialize
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lo_xslt TYPE REF TO cl_o2_api_xsltdesc,
|
||||
lv_name TYPE cxsltdesc.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
cl_o2_api_xsltdesc=>load(
|
||||
EXPORTING
|
||||
p_xslt_desc = lv_name
|
||||
IMPORTING
|
||||
p_obj = lo_xslt
|
||||
EXCEPTIONS
|
||||
error_occured = 1
|
||||
not_existing = 2
|
||||
permission_failure = 3
|
||||
version_not_found = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
_raise 'error from cl_o2_api_xsltdesc=>load'.
|
||||
ENDIF.
|
||||
|
||||
lo_xslt->set_changeable( abap_true ).
|
||||
lo_xslt->delete( ).
|
||||
lo_xslt->save( ).
|
||||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
||||
DATA: lv_name TYPE cxsltdesc.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
rv_bool = cl_o2_api_xsltdesc=>exists( lv_name ).
|
||||
IF rv_bool = '1'.
|
||||
rv_bool = abap_true.
|
||||
ELSE.
|
||||
rv_bool = abap_false.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "lif_object~exists
|
||||
|
||||
METHOD lif_object~jump.
|
||||
_raise 'XSLT, jump, todo'.
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
ENDCLASS. "lcl_object_xslt IMPLEMENTATION
|
48
src/zabapgit_object_xslt.prog.xml
Normal file
48
src/zabapgit_object_xslt.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_XSLT</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_XSLT</ENTRY>
|
||||
<LENGTH>28</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
Loading…
Reference in New Issue
Block a user