mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
1096 lines
42 KiB
ABAP
1096 lines
42 KiB
ABAP
class ZSAPLINK definition
|
|
public
|
|
abstract
|
|
create public .
|
|
|
|
public section.
|
|
|
|
types:
|
|
BEGIN OF gts_version_info,
|
|
* Change this if import or export is incompatible to older major versions or if enhancements are so important to force the new version of the plugin
|
|
* Please comment changes in major version in class documentation
|
|
zsaplink_plugin_major_version TYPE i,
|
|
* Change this if bugfixes are being done but the basic structure and im- and exportbehaviour don't change. Reset to 0 when incrementing major version
|
|
* Please comment changes in minor version in class documentation
|
|
zsaplink_plugin_minor_version TYPE i,
|
|
* Change this if cosmetic changes are being done or if internal handling changed but no change to import- or exportbehaviour
|
|
* ( i.e. speeding up the plugin will fall into this ). Reset to 0 when incrementeing major or minor version
|
|
zsaplink_plugin_build_version TYPE i,
|
|
*
|
|
zsaplink_plugin_info1 TYPE string, " Plugin info - part 1 - See demoimplementation how this may be used
|
|
zsaplink_plugin_info2 TYPE string, " Plugin info - part 2
|
|
zsaplink_plugin_info3 TYPE string, " Plugin info - part 3
|
|
zsaplink_plugin_info4 TYPE string, " Plugin info - part 4
|
|
zsaplink_plugin_info5 TYPE string, " Plugin info - part 5
|
|
END OF gts_version_info .
|
|
|
|
data NUGGET_LEVEL type INT4 read-only value 0 ##NO_TEXT.
|
|
|
|
class-methods GETOBJECTINFOFROMIXMLDOC
|
|
importing
|
|
!IXMLDOCUMENT type ref to IF_IXML_DOCUMENT
|
|
exporting
|
|
!OBJTYPENAME type STRING
|
|
!OBJNAME type STRING
|
|
raising
|
|
ZCX_SAPLINK .
|
|
class-methods CONVERTSTRINGTOIXMLDOC
|
|
importing
|
|
value(XMLSTRING) type STRING
|
|
returning
|
|
value(IXMLDOCUMENT) type ref to IF_IXML_DOCUMENT .
|
|
class-methods CONVERTIXMLDOCTOSTRING
|
|
importing
|
|
!IXMLDOCUMENT type ref to IF_IXML_DOCUMENT
|
|
returning
|
|
value(XMLSTRING) type STRING .
|
|
class-methods GET_VERSION_INFO_STATIC
|
|
importing
|
|
!IV_CLASSNAME type CLIKE
|
|
returning
|
|
value(RS_VERSION_INFO) type GTS_VERSION_INFO .
|
|
methods CREATEOBJECTFROMIXMLDOC
|
|
abstract
|
|
importing
|
|
!IXMLDOCUMENT type ref to IF_IXML_DOCUMENT
|
|
!DEVCLASS type DEVCLASS default '$TMP'
|
|
!OVERWRITE type FLAG optional
|
|
returning
|
|
value(NAME) type STRING
|
|
raising
|
|
ZCX_SAPLINK .
|
|
methods CREATEIXMLDOCFROMOBJECT
|
|
abstract
|
|
returning
|
|
value(IXMLDOCUMENT) type ref to IF_IXML_DOCUMENT
|
|
raising
|
|
ZCX_SAPLINK .
|
|
methods CREATESTRINGFROMOBJECT
|
|
returning
|
|
value(STRING) type STRING
|
|
raising
|
|
ZCX_SAPLINK .
|
|
methods CONSTRUCTOR
|
|
importing
|
|
!NAME type STRING .
|
|
methods UPLOADXML
|
|
final
|
|
importing
|
|
!XMLDATA type STRING .
|
|
class-methods GETPLUGINS
|
|
changing
|
|
value(OBJECTTABLE) type TABLE .
|
|
methods CHECKEXISTS
|
|
abstract
|
|
returning
|
|
value(EXISTS) type FLAG .
|
|
methods VALUEHELP
|
|
importing
|
|
!I_OBJTYPE type STRING
|
|
returning
|
|
value(E_OBJNAME) type STRING .
|
|
class-methods CHECKOBJECT
|
|
importing
|
|
!I_IXMLDOCUMENT type ref to IF_IXML_DOCUMENT
|
|
exporting
|
|
!E_OBJTYPE type STRING
|
|
!E_OBJNAME type STRING
|
|
!E_PLUGINEXISTS type FLAG
|
|
!E_OBJECTEXISTS type FLAG
|
|
!E_TARGETOBJECT type ref to ZSAPLINK .
|
|
methods GET_VERSION_INFO
|
|
returning
|
|
value(RS_VERSION_INFO) type GTS_VERSION_INFO .
|
|
|
|
methods delete
|
|
raising
|
|
ZCX_SAPLINK .
|
|
protected section.
|
|
|
|
data OBJNAME type STRING .
|
|
data IXML type ref to IF_IXML .
|
|
data XMLDOC type ref to IF_IXML_DOCUMENT .
|
|
|
|
methods DELETEOBJECT
|
|
abstract
|
|
raising
|
|
ZCX_SAPLINK .
|
|
class-methods SETATTRIBUTESFROMSTRUCTURE
|
|
importing
|
|
!NODE type ref to IF_IXML_ELEMENT
|
|
!STRUCTURE type DATA .
|
|
class-methods GETSTRUCTUREFROMATTRIBUTES
|
|
importing
|
|
!NODE type ref to IF_IXML_ELEMENT
|
|
!PRESERVEVERSION type FLAG optional
|
|
changing
|
|
!STRUCTURE type DATA .
|
|
methods CREATEXMLSTRING
|
|
final
|
|
returning
|
|
value(XML) type STRING .
|
|
class-methods BUILDTABLEFROMSTRING
|
|
importing
|
|
!SOURCE type STRING
|
|
returning
|
|
value(SOURCETABLE) type TABLE_OF_STRINGS .
|
|
class-methods BUILDSOURCESTRING
|
|
importing
|
|
!SOURCETABLE type RSWSOURCET optional
|
|
!PAGETABLE type O2PAGELINE_TABLE optional
|
|
returning
|
|
value(SOURCESTRING) type STRING .
|
|
methods GETOBJECTTYPE
|
|
abstract
|
|
returning
|
|
value(OBJECTTYPE) type STRING .
|
|
methods CREATEOTRFROMNODE
|
|
importing
|
|
value(NODE) type ref to IF_IXML_ELEMENT
|
|
!DEVCLASS type DEVCLASS default '$TMP'
|
|
exporting
|
|
!CONCEPT type SOTR_TEXT-CONCEPT
|
|
raising
|
|
ZCX_SAPLINK .
|
|
methods CREATENODEFROMOTR
|
|
importing
|
|
!OTRGUID type SOTR_CONC
|
|
returning
|
|
value(NODE) type ref to IF_IXML_ELEMENT .
|
|
private section.
|
|
|
|
types:
|
|
BEGIN OF t_objecttable,
|
|
classname TYPE string,
|
|
object TYPE ko100-object,
|
|
text TYPE ko100-text,
|
|
END OF t_objecttable .
|
|
|
|
data STREAMFACTORY type ref to IF_IXML_STREAM_FACTORY .
|
|
data XMLDATA type STRING .
|
|
data:
|
|
objecttable TYPE TABLE OF t_objecttable .
|
|
ENDCLASS.
|
|
|
|
|
|
|
|
CLASS ZSAPLINK IMPLEMENTATION.
|
|
|
|
|
|
method BUILDSOURCESTRING.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data sTemp type string.
|
|
data pageLine type O2PAGELINE.
|
|
|
|
if sourceTable is not initial.
|
|
loop at sourceTable into sTemp.
|
|
concatenate sourceString sTemp CL_ABAP_CHAR_UTILITIES=>NEWLINE
|
|
into sourceString.
|
|
endloop.
|
|
elseif pageTable is not initial.
|
|
loop at pageTable into pageLine.
|
|
concatenate sourceString pageLine-line
|
|
CL_ABAP_CHAR_UTILITIES=>NEWLINE
|
|
into sourceString.
|
|
endloop.
|
|
endif.
|
|
|
|
* remove extra newline characters for conversion comparison consistency
|
|
shift sourceString left deleting leading
|
|
CL_ABAP_CHAR_UTILITIES=>NEWLINE.
|
|
shift sourceString right deleting trailing
|
|
CL_ABAP_CHAR_UTILITIES=>NEWLINE.
|
|
shift sourceString left deleting leading space.
|
|
endmethod.
|
|
|
|
|
|
method BUILDTABLEFROMSTRING.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
split source at CL_ABAP_CHAR_UTILITIES=>NEWLINE
|
|
into table sourceTable.
|
|
endmethod.
|
|
|
|
|
|
METHOD checkobject.
|
|
DATA l_objtable LIKE objecttable.
|
|
DATA l_objline LIKE LINE OF objecttable.
|
|
|
|
CLEAR: e_objtype, e_objname, e_pluginexists, e_objectexists.
|
|
TRY.
|
|
CALL METHOD zsaplink=>getobjectinfofromixmldoc
|
|
EXPORTING
|
|
ixmldocument = i_ixmldocument
|
|
IMPORTING
|
|
objtypename = e_objtype
|
|
objname = e_objname.
|
|
CATCH zcx_saplink.
|
|
ENDTRY.
|
|
|
|
CALL METHOD zsaplink=>getplugins( CHANGING objecttable = l_objtable ).
|
|
|
|
READ TABLE l_objtable INTO l_objline WITH KEY object = e_objtype.
|
|
|
|
IF sy-subrc = 0.
|
|
e_pluginexists = 'X'.
|
|
CREATE OBJECT e_targetobject
|
|
TYPE
|
|
(l_objline-classname)
|
|
EXPORTING
|
|
name = e_objname.
|
|
|
|
e_objectexists = e_targetobject->checkexists( ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
method CONSTRUCTOR.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
|
|
* data meTypeDescr type ref to CL_ABAP_TYPEDESCR.
|
|
* clear className.
|
|
*
|
|
* objName = name.
|
|
* meTypeDescr = CL_ABAP_TYPEDESCR=>DESCRIBE_BY_OBJECT_REF( me ).
|
|
* className = meTypeDescr->get_relative_name( ).
|
|
|
|
objName = name.
|
|
translate objName to upper case.
|
|
|
|
ixml = cl_ixml=>create( ).
|
|
xmlDoc = ixml->create_document( ).
|
|
streamFactory = ixml->CREATE_STREAM_FACTORY( ).
|
|
endmethod.
|
|
|
|
|
|
method CONVERTIXMLDOCTOSTRING.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data _ixml type ref to if_ixml.
|
|
data _encoding type ref to if_ixml_encoding.
|
|
data _streamFactory type ref to IF_IXML_STREAM_FACTORY.
|
|
data _outputStream type ref to IF_IXML_OSTREAM.
|
|
data _renderer type ref to IF_IXML_RENDERER.
|
|
data _tempString type string.
|
|
data _tempStringx type xstring.
|
|
data _printXMLDoc type ref to cl_xml_document.
|
|
data _rc type sysubrc.
|
|
|
|
_ixml = cl_ixml=>create( ).
|
|
_encoding = _ixml->create_encoding(
|
|
byte_order = if_ixml_encoding=>co_none
|
|
character_set = 'utf-8' ).
|
|
_streamFactory = _ixml->CREATE_STREAM_FACTORY( ).
|
|
_outputStream = _streamFactory->create_ostream_xstring( _tempStringx ).
|
|
_outputstream->set_encoding( encoding = _encoding ).
|
|
_renderer = _ixml->CREATE_RENDERER(
|
|
DOCUMENT = ixmlDocument
|
|
OSTREAM = _outputStream
|
|
).
|
|
_renderer->SET_NORMALIZING( ).
|
|
_rc = _renderer->render( ).
|
|
create object _printXMLDoc.
|
|
_rc = _printXMLDoc->parse_string( _tempString ).
|
|
|
|
CALL FUNCTION 'ECATT_CONV_XSTRING_TO_STRING'
|
|
EXPORTING
|
|
im_xstring = _tempstringx
|
|
im_encoding = 'UTF-8'
|
|
IMPORTING
|
|
ex_string = _tempstring.
|
|
|
|
xmlString = _tempString.
|
|
endmethod.
|
|
|
|
|
|
method CONVERTSTRINGTOIXMLDOC.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data ixml type ref to if_ixml.
|
|
data streamFactory type ref to IF_IXML_STREAM_FACTORY.
|
|
data iStream type ref to if_ixml_istream.
|
|
data ixmlParser type ref to if_ixml_parser.
|
|
data xmlDoc type ref to if_ixml_document.
|
|
|
|
" Make sure to convert Windows Line Break to Unix as
|
|
" this linebreak is used to get a correct import
|
|
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf
|
|
IN xmlString WITH cl_abap_char_utilities=>newline.
|
|
|
|
ixml = cl_ixml=>create( ).
|
|
xmlDoc = ixml->create_document( ).
|
|
streamFactory = ixml->CREATE_STREAM_FACTORY( ).
|
|
iStream = streamFactory->CREATE_ISTREAM_STRING( xmlString ).
|
|
iXMLParser = iXML->create_parser( stream_factory = streamFactory
|
|
istream = iStream
|
|
document = xmlDoc ).
|
|
iXMLParser->parse( ).
|
|
ixmlDocument = xmlDoc.
|
|
endmethod.
|
|
|
|
|
|
method CREATENODEFROMOTR.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
DATA rootnode TYPE REF TO if_ixml_element.
|
|
DATA txtnode TYPE REF TO if_ixml_element.
|
|
DATA rc TYPE sysubrc.
|
|
|
|
DATA sotrheader TYPE sotr_head.
|
|
DATA sotrtextline TYPE sotr_text.
|
|
DATA sotrtexttable TYPE TABLE OF sotr_text.
|
|
|
|
DATA _ixml TYPE REF TO if_ixml.
|
|
DATA _xmldoc TYPE REF TO if_ixml_document.
|
|
|
|
CALL FUNCTION 'SOTR_GET_CONCEPT'
|
|
EXPORTING
|
|
concept = otrguid
|
|
IMPORTING
|
|
header = sotrheader
|
|
TABLES
|
|
entries = sotrtexttable
|
|
EXCEPTIONS
|
|
no_entry_found = 1
|
|
OTHERS = 2.
|
|
IF sy-subrc <> 0.
|
|
EXIT.
|
|
ENDIF.
|
|
|
|
sotrheader-paket = '$TMP'. "change devclass to $TMP for exports
|
|
|
|
* Create xml doc
|
|
* _ixml = cl_ixml=>create( ).
|
|
* _xmldoc = _ixml->create_document( ).
|
|
* streamfactory = _ixml->create_stream_factory( ).
|
|
|
|
* Create parent node
|
|
rootnode = xmldoc->create_element( zsaplink_oo=>c_xml_key_sotr ). "OTR object type
|
|
CLEAR sotrheader-concept. "ewH:33
|
|
setattributesfromstructure( node = rootnode structure = sotrheader ).
|
|
|
|
* Create nodes for texts
|
|
LOOP AT sotrtexttable INTO sotrtextline.
|
|
txtnode = xmldoc->create_element( zsaplink_oo=>c_xml_key_sotrtext ).
|
|
CLEAR: sotrtextline-concept, sotrtextline-object. "ewH:33
|
|
setattributesfromstructure(
|
|
node = txtnode structure = sotrtextline ).
|
|
rc = rootnode->append_child( txtnode ).
|
|
ENDLOOP.
|
|
|
|
node = rootnode.
|
|
|
|
endmethod.
|
|
|
|
|
|
method CREATEOTRFROMNODE.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
DATA txtnode TYPE REF TO if_ixml_element.
|
|
DATA filter TYPE REF TO if_ixml_node_filter.
|
|
DATA iterator TYPE REF TO if_ixml_node_iterator.
|
|
|
|
DATA sotrheader TYPE sotr_head.
|
|
DATA sotrtextline TYPE sotr_text.
|
|
DATA sotrtexttable TYPE TABLE OF sotr_text.
|
|
DATA sotrpaket TYPE sotr_pack.
|
|
|
|
* get OTR header info
|
|
CALL METHOD getstructurefromattributes
|
|
EXPORTING
|
|
node = node
|
|
CHANGING
|
|
structure = sotrheader.
|
|
|
|
* get OTR text info
|
|
filter = node->create_filter_name( zsaplink_oo=>c_xml_key_sotrText ).
|
|
iterator = node->create_iterator_filtered( filter ).
|
|
txtnode ?= iterator->get_next( ).
|
|
|
|
WHILE txtnode IS NOT INITIAL.
|
|
CLEAR sotrtextline.
|
|
CALL METHOD getstructurefromattributes
|
|
EXPORTING
|
|
node = txtnode
|
|
CHANGING
|
|
structure = sotrtextline.
|
|
CLEAR: sotrtextline-concept, sotrtextline-object. "ewH:33
|
|
APPEND sotrtextline TO sotrtexttable.
|
|
txtnode ?= iterator->get_next( ).
|
|
ENDWHILE.
|
|
|
|
* ewH:issue 33--> in 6.40 and above, you cannot pass a default concept
|
|
* (otr) guid, so we will always create new
|
|
* CALL FUNCTION 'SOTR_GET_CONCEPT'
|
|
* EXPORTING
|
|
* concept = sotrHeader-concept
|
|
** IMPORTING
|
|
** HEADER =
|
|
** TABLES
|
|
** ENTRIES =
|
|
* EXCEPTIONS
|
|
* NO_ENTRY_FOUND = 1
|
|
* OTHERS = 2
|
|
* .
|
|
* IF sy-subrc <> 1.
|
|
** delete OTR if exists already
|
|
* CALL FUNCTION 'SOTR_DELETE_CONCEPT'
|
|
* EXPORTING
|
|
* concept = sotrHeader-concept
|
|
* EXCEPTIONS
|
|
* NO_AUTHORIZATION = 1
|
|
* NO_ENTRY_FOUND = 2. "who cares
|
|
** CONCEPT_USED = 3
|
|
** NO_MASTER_LANGUAGE = 4
|
|
** NO_SOURCE_SYSTEM = 5
|
|
** NO_TADIR_ENTRY = 6
|
|
** ERROR_IN_CORRECTION = 7
|
|
** USER_CANCELLED = 8
|
|
** OTHERS = 9
|
|
** .
|
|
* if sy-subrc = 1.
|
|
* raise exception type zcx_saplink
|
|
* exporting textid = zcx_saplink=>not_authorized.
|
|
* endif.
|
|
* ENDIF.
|
|
|
|
|
|
DATA objecttable TYPE sotr_objects.
|
|
DATA objecttype TYPE LINE OF sotr_objects.
|
|
* Retrieve object type of OTR
|
|
CALL FUNCTION 'SOTR_OBJECT_GET_OBJECTS'
|
|
EXPORTING
|
|
object_vector = sotrheader-objid_vec
|
|
IMPORTING
|
|
OBJECTS = objecttable
|
|
EXCEPTIONS
|
|
object_not_found = 1
|
|
OTHERS = 2.
|
|
|
|
READ TABLE objecttable INTO objecttype INDEX 1.
|
|
|
|
* create OTR
|
|
sotrpaket-paket = devclass.
|
|
CALL FUNCTION 'SOTR_CREATE_CONCEPT'
|
|
EXPORTING
|
|
paket = sotrpaket
|
|
crea_lan = sotrheader-crea_lan
|
|
alias_name = sotrheader-alias_name
|
|
* CATEGORY =
|
|
object = objecttype
|
|
entries = sotrtexttable
|
|
* FLAG_CORRECTION_ENTRY =
|
|
* IN_UPDATE_TASK =
|
|
* CONCEPT_DEFAULT = sotrHeader-concept "ewH:33
|
|
IMPORTING
|
|
concept = concept "ewH:33
|
|
EXCEPTIONS
|
|
package_missing = 1
|
|
crea_lan_missing = 2
|
|
object_missing = 3
|
|
paket_does_not_exist = 4
|
|
alias_already_exist = 5
|
|
object_type_not_found = 6
|
|
langu_missing = 7
|
|
identical_context_not_allowed = 8
|
|
text_too_long = 9
|
|
error_in_update = 10
|
|
no_master_langu = 11
|
|
error_in_concept_id = 12
|
|
alias_not_allowed = 13
|
|
tadir_entry_creation_failed = 14
|
|
internal_error = 15
|
|
error_in_correction = 16
|
|
user_cancelled = 17
|
|
no_entry_found = 18
|
|
OTHERS = 19
|
|
.
|
|
IF sy-subrc <> 0.
|
|
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
|
|
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
|
|
ENDIF.
|
|
|
|
endmethod.
|
|
|
|
|
|
method CREATESTRINGFROMOBJECT.
|
|
endmethod.
|
|
|
|
|
|
method CREATEXMLSTRING.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data streamFactory type ref to IF_IXML_STREAM_FACTORY.
|
|
data outputStream type ref to IF_IXML_OSTREAM.
|
|
data renderer type ref to IF_IXML_RENDERER.
|
|
data tempString type string.
|
|
data printXMLDoc type ref to cl_xml_document.
|
|
data rc type sysubrc.
|
|
|
|
streamFactory = ixml->CREATE_STREAM_FACTORY( ).
|
|
outputStream = streamFactory->CREATE_OSTREAM_CSTRING( tempString ).
|
|
renderer = ixml->CREATE_RENDERER(
|
|
DOCUMENT = xmlDoc OSTREAM = outputStream ).
|
|
rc = renderer->render( ).
|
|
create object printXMLDoc.
|
|
rc = printXMLDoc->parse_string( tempString ).
|
|
xml = tempString.
|
|
endmethod.
|
|
|
|
|
|
METHOD delete.
|
|
* public wrapper for the protected delete-method.
|
|
* needed in order to expose the delete-functionality to ABAPGit SAPLink wrapper
|
|
me->deleteobject( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD getobjectinfofromixmldoc.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
DATA rootnode TYPE REF TO if_ixml_node.
|
|
DATA rootattr TYPE REF TO if_ixml_named_node_map.
|
|
DATA attrnode TYPE REF TO if_ixml_node.
|
|
DATA nodename TYPE string.
|
|
|
|
rootnode ?= ixmldocument->get_root_element( ).
|
|
* Check whether got a valid ixmldocument
|
|
IF rootnode IS NOT BOUND.
|
|
RAISE EXCEPTION TYPE zcx_saplink
|
|
EXPORTING textid = zcx_saplink=>incorrect_file_format.
|
|
ENDIF.
|
|
|
|
* get object type
|
|
objtypename = rootnode->get_name( ).
|
|
TRANSLATE objtypename TO UPPER CASE.
|
|
|
|
* get object name
|
|
rootattr = rootnode->get_attributes( ).
|
|
attrnode = rootattr->get_item( 0 ).
|
|
objname = attrnode->get_value( ).
|
|
ENDMETHOD.
|
|
|
|
|
|
method GETPLUGINS.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
DATA classlist TYPE seo_inheritances.
|
|
DATA classline TYPE vseoextend.
|
|
DATA classobject TYPE REF TO zsaplink.
|
|
DATA objectline TYPE t_objecttable.
|
|
DATA tabletypeline TYPE ko105.
|
|
DATA tabletypesin TYPE TABLE OF ko105.
|
|
DATA tabletypesout TYPE tr_object_texts.
|
|
DATA tabletypeoutline TYPE ko100.
|
|
DATA clsname TYPE string.
|
|
DATA objtype TYPE trobjtype.
|
|
|
|
REFRESH objecttable.
|
|
|
|
SELECT * FROM vseoextend INTO TABLE classlist
|
|
WHERE refclsname like 'ZSAPLINK%'
|
|
AND version = '1'.
|
|
|
|
LOOP AT classlist INTO classline.
|
|
clsname = classline-clsname.
|
|
TRY.
|
|
CREATE OBJECT classobject
|
|
TYPE
|
|
(clsname)
|
|
EXPORTING
|
|
name = 'foo'.
|
|
objtype = classobject->getobjecttype( ).
|
|
CATCH cx_root.
|
|
CONTINUE.
|
|
ENDTRY.
|
|
CLEAR tabletypeline.
|
|
REFRESH tabletypesin.
|
|
|
|
tabletypeline-object = objtype.
|
|
APPEND tabletypeline TO tabletypesin.
|
|
|
|
CALL FUNCTION 'TRINT_OBJECT_TABLE'
|
|
TABLES
|
|
tt_types_in = tabletypesin
|
|
tt_types_out = tabletypesout.
|
|
|
|
LOOP AT tabletypesout INTO tabletypeoutline.
|
|
objectline-classname = clsname.
|
|
MOVE-CORRESPONDING tabletypeoutline TO objectline.
|
|
APPEND objectline TO objecttable.
|
|
ENDLOOP.
|
|
ENDLOOP.
|
|
endmethod.
|
|
|
|
|
|
method GETSTRUCTUREFROMATTRIBUTES.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data attributeList type ref to IF_IXML_NAMED_NODE_MAP.
|
|
data nodeIterator type ref to IF_IXML_NODE_ITERATOR.
|
|
data attributeNode type ref to if_ixml_node.
|
|
data value type string.
|
|
data name type string.
|
|
field-symbols <value> type any.
|
|
|
|
clear structure.
|
|
attributeList = node->GET_ATTRIBUTES( ).
|
|
nodeIterator = attributeList->create_iterator( ).
|
|
attributeNode = nodeIterator->get_next( ).
|
|
while attributeNode is not initial.
|
|
name = attributeNode->get_name( ).
|
|
if name = 'VERSION' and preserveVersion is initial. "ewh:issue 45
|
|
* if name = 'VERSION'.
|
|
value = '0'.
|
|
else.
|
|
value = attributeNode->get_value( ).
|
|
endif.
|
|
assign component name of structure structure to <value>.
|
|
if sy-subrc = 0.
|
|
<value> = value.
|
|
endif.
|
|
attributeNode = nodeIterator->get_next( ).
|
|
endwhile.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* .-"-.
|
|
* .'=^=^='.
|
|
* /=^=^=^=^=\
|
|
*:^=SAPLINK=^;
|
|
*|^ EASTER ^|
|
|
*:^=^EGG^=^=^:
|
|
* \=^=^=^=^=/
|
|
* `.=^=^=.'
|
|
* `~~~`
|
|
* Don't like the way we did something?
|
|
* Help us fix it! Tell us what you think!
|
|
* http://saplink.org
|
|
endmethod.
|
|
|
|
|
|
METHOD GET_VERSION_INFO.
|
|
|
|
*--------------------------------------------------------------------*
|
|
* Please use the following 6 lines of code when versioning a
|
|
* SAPLINK-Plugin. See documentation of Type GTS_VERSION_INFO
|
|
* what should be put here
|
|
*--------------------------------------------------------------------*
|
|
rs_version_info-zsaplink_plugin_major_version = 0. " Default for all child classes, that have not been updated to return a version info.
|
|
rs_version_info-zsaplink_plugin_minor_version = 0. " Default for all child classes, that have not been updated to return a version info.
|
|
rs_version_info-zsaplink_plugin_build_version = 0. " Default for all child classes, that have not been updated to return a version info.
|
|
|
|
rs_version_info-zsaplink_plugin_info1 = ''. " Sufficient to set this the first time a child class is being updated
|
|
rs_version_info-zsaplink_plugin_info2 = ''. " Sufficient to set this the first time a child class is being updated
|
|
rs_version_info-zsaplink_plugin_info3 = ''. " Sufficient to set this the first time a child class is being updated
|
|
rs_version_info-zsaplink_plugin_info4 = ''. " Sufficient to set this the first time a child class is being updated
|
|
rs_version_info-zsaplink_plugin_info5 = ''. " Sufficient to set this the first time a child class is being updated
|
|
|
|
* Hint - see redefinition of this class in ZSAPLINK_CLASS how information may be set
|
|
ENDMETHOD.
|
|
|
|
|
|
METHOD get_version_info_static.
|
|
|
|
DATA: lo_zsaplink TYPE REF TO zsaplink.
|
|
|
|
TRY.
|
|
CREATE OBJECT lo_zsaplink TYPE (iv_classname)
|
|
EXPORTING
|
|
name = 'Not needed for versio info'.
|
|
rs_version_info = lo_zsaplink->get_version_info( ).
|
|
CATCH cx_root. " Don't pass version info for unknown or abstract classes
|
|
ENDTRY.
|
|
|
|
ENDMETHOD.
|
|
|
|
|
|
method SETATTRIBUTESFROMSTRUCTURE.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data int type i.
|
|
int = int.
|
|
data structDescr type ref to cl_abap_structDescr.
|
|
data aComponent type abap_compdescr.
|
|
field-symbols <fieldValue> type any.
|
|
data rc type sysubrc.
|
|
data sName type string.
|
|
data sValue type string.
|
|
|
|
structDescr ?= cl_abap_structDescr=>describe_by_data( structure ).
|
|
loop at structDescr->components into aComponent.
|
|
assign component aComponent-name of structure
|
|
structure to <fieldValue>.
|
|
if sy-subrc = 0.
|
|
sName = aComponent-name.
|
|
* sValue = <fieldValue>.
|
|
* for certain attributes, set to a standard for exporting
|
|
case sName.
|
|
* when 'VERSION'. "version should always export as inactive
|
|
* sValue = '0'. "commented by ewH: issue 45
|
|
when 'DEVCLASS'. "development class should always be $TMP
|
|
sValue = '$TMP'.
|
|
" Developer, Date and Time Metadata has to be removed to
|
|
" not clutter diffs
|
|
"
|
|
" Meta Attributes for DDIC Types
|
|
when 'AS4USER'.
|
|
clear sValue.
|
|
when 'AS4DATE'.
|
|
clear sValue.
|
|
when 'AS4TIME'.
|
|
clear sValue.
|
|
" Meta Attributes for PROG
|
|
when 'CNAM'.
|
|
clear sValue.
|
|
when 'CDAT'.
|
|
clear sValue.
|
|
when 'UNAM'.
|
|
clear sValue.
|
|
when 'UDAT'.
|
|
clear sValue.
|
|
when 'VERN'.
|
|
clear sValue.
|
|
when 'SDATE'.
|
|
clear sValue.
|
|
when 'STIME'.
|
|
clear sValue.
|
|
when 'IDATE'.
|
|
clear sValue.
|
|
when 'ITIME'.
|
|
clear sValue.
|
|
" Meta Attributes for CLAS
|
|
when 'AUTHOR'.
|
|
clear sValue.
|
|
when 'CREATEDON'.
|
|
clear sValue.
|
|
when 'CHANGEDBY'.
|
|
clear sValue.
|
|
when 'CHANGEDON'.
|
|
clear sValue.
|
|
when 'CHANGETIME'.
|
|
clear sValue.
|
|
when 'CHGDANYON'.
|
|
clear sValue.
|
|
when 'R3RELEASE'.
|
|
clear sValue.
|
|
when 'UUID'.
|
|
clear sValue.
|
|
" SOTR
|
|
when 'CREA_NAME'.
|
|
clear sValue.
|
|
when 'CHAN_NAME'.
|
|
clear sValue.
|
|
when 'CREA_TSTUT'.
|
|
clear sValue.
|
|
when 'CHAN_TSTUT'.
|
|
clear sValue.
|
|
" MSAG
|
|
when 'LASTUSER'.
|
|
clear sValue.
|
|
when 'LDATE'.
|
|
clear sValue.
|
|
when 'LTIME'.
|
|
clear sValue.
|
|
when 'DGEN'.
|
|
clear sValue.
|
|
when 'TGEN'.
|
|
clear sValue.
|
|
when 'GENDATE'.
|
|
clear sValue.
|
|
when 'GENTIME'.
|
|
clear sValue.
|
|
" BSP
|
|
when 'IMPLCLASS'.
|
|
clear sValue.
|
|
when others.
|
|
sValue = <fieldValue>.
|
|
endcase.
|
|
if sValue is not initial.
|
|
rc = Node->set_attribute( name = sName value = sValue ).
|
|
endif.
|
|
else.
|
|
* WHAT?>!??
|
|
endif.
|
|
endloop.
|
|
endmethod.
|
|
|
|
|
|
method UPLOADXML.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
data iStream type ref to if_ixml_istream.
|
|
data ixmlParser type ref to if_ixml_parser.
|
|
|
|
iStream = streamFactory->CREATE_ISTREAM_STRING( xmlData ).
|
|
iXMLParser = iXML->create_parser( stream_factory = streamFactory
|
|
istream = iStream
|
|
document = XMLdoc ).
|
|
iXMLParser->parse( ).
|
|
|
|
endmethod.
|
|
|
|
|
|
method VALUEHELP.
|
|
*/---------------------------------------------------------------------\
|
|
*| This file is part of SAPlink. |
|
|
*| |
|
|
*| Copyright 2014 SAPlink project members |
|
|
*| |
|
|
*| Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
*| you may not use this file except in compliance with the License. |
|
|
*| You may obtain a copy of the License at |
|
|
*| |
|
|
*| http://www.apache.org/licenses/LICENSE-2.0 |
|
|
*| |
|
|
*| Unless required by applicable law or agreed to in writing, software |
|
|
*| distributed under the License is distributed on an "AS IS" BASIS, |
|
|
*| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or |
|
|
*| implied. |
|
|
*| See the License for the specific language governing permissions and |
|
|
*| limitations under the License. |
|
|
*\---------------------------------------------------------------------/
|
|
DATA l_object_type type euobj-id.
|
|
data objname(40) type c.
|
|
|
|
l_object_type = i_objType.
|
|
|
|
|
|
CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
|
|
EXPORTING
|
|
object_type = l_object_type
|
|
object_name = objname
|
|
suppress_selection = 'X'
|
|
use_alv_grid = ''
|
|
without_personal_list = ''
|
|
IMPORTING
|
|
object_name_selected = objname
|
|
EXCEPTIONS
|
|
cancel = 1.
|
|
|
|
e_objname = objname.
|
|
endmethod.
|
|
ENDCLASS. |