CLASS ZSAPLINK源码
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 .
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Protected Method ZSAPLINK=>BUILDSOURCESTRING
* +-------------------------------------------------------------------------------------------------+
* | [--->] SOURCETABLE TYPE RSWSOURCET(optional)
* | [--->] PAGETABLE TYPE O2PAGELINE_TABLE(optional)
* | [<-()] SOURCESTRING TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Protected Method ZSAPLINK=>BUILDTABLEFROMSTRING
* +-------------------------------------------------------------------------------------------------+
* | [--->] SOURCE TYPE STRING
* | [<-()] SOURCETABLE TYPE TABLE_OF_STRINGS
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>CHECKOBJECT
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_IXMLDOCUMENT TYPE REF TO IF_IXML_DOCUMENT
* | [<---] E_OBJTYPE TYPE STRING
* | [<---] E_OBJNAME TYPE STRING
* | [<---] E_PLUGINEXISTS TYPE FLAG
* | [<---] E_OBJECTEXISTS TYPE FLAG
* | [<---] E_TARGETOBJECT TYPE REF TO ZSAPLINK
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZSAPLINK->CONSTRUCTOR
* +-------------------------------------------------------------------------------------------------+
* | [--->] NAME TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>CONVERTIXMLDOCTOSTRING
* +-------------------------------------------------------------------------------------------------+
* | [--->] IXMLDOCUMENT TYPE REF TO IF_IXML_DOCUMENT
* | [<-()] XMLSTRING TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>CONVERTSTRINGTOIXMLDOC
* +-------------------------------------------------------------------------------------------------+
* | [--->] XMLSTRING TYPE STRING
* | [<-()] IXMLDOCUMENT TYPE REF TO IF_IXML_DOCUMENT
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZSAPLINK->CREATENODEFROMOTR
* +-------------------------------------------------------------------------------------------------+
* | [--->] OTRGUID TYPE SOTR_CONC
* | [<-()] NODE TYPE REF TO IF_IXML_ELEMENT
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZSAPLINK->CREATEOTRFROMNODE
* +-------------------------------------------------------------------------------------------------+
* | [--->] NODE TYPE REF TO IF_IXML_ELEMENT
* | [--->] DEVCLASS TYPE DEVCLASS (default ='$TMP')
* | [<---] CONCEPT TYPE SOTR_TEXT-CONCEPT
* | [!CX!] ZCX_SAPLINK
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZSAPLINK->CREATESTRINGFROMOBJECT
* +-------------------------------------------------------------------------------------------------+
* | [<-()] STRING TYPE STRING
* | [!CX!] ZCX_SAPLINK
* +--------------------------------------------------------------------------------------</SIGNATURE>
method CREATESTRINGFROMOBJECT.
endmethod.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Protected Method ZSAPLINK->CREATEXMLSTRING
* +-------------------------------------------------------------------------------------------------+
* | [<-()] XML TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>GETOBJECTINFOFROMIXMLDOC
* +-------------------------------------------------------------------------------------------------+
* | [--->] IXMLDOCUMENT TYPE REF TO IF_IXML_DOCUMENT
* | [<---] OBJTYPENAME TYPE STRING
* | [<---] OBJNAME TYPE STRING
* | [!CX!] ZCX_SAPLINK
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>GETPLUGINS
* +-------------------------------------------------------------------------------------------------+
* | [<-->] OBJECTTABLE TYPE TABLE
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Protected Method ZSAPLINK=>GETSTRUCTUREFROMATTRIBUTES
* +-------------------------------------------------------------------------------------------------+
* | [--->] NODE TYPE REF TO IF_IXML_ELEMENT
* | [--->] PRESERVEVERSION TYPE FLAG(optional)
* | [<-->] STRUCTURE TYPE DATA
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZSAPLINK->GET_VERSION_INFO
* +-------------------------------------------------------------------------------------------------+
* | [<-()] RS_VERSION_INFO TYPE GTS_VERSION_INFO
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZSAPLINK=>GET_VERSION_INFO_STATIC
* +-------------------------------------------------------------------------------------------------+
* | [--->] IV_CLASSNAME TYPE CLIKE
* | [<-()] RS_VERSION_INFO TYPE GTS_VERSION_INFO
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Protected Method ZSAPLINK=>SETATTRIBUTESFROMSTRUCTURE
* +-------------------------------------------------------------------------------------------------+
* | [--->] NODE TYPE REF TO IF_IXML_ELEMENT
* | [--->] STRUCTURE TYPE DATA
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZSAPLINK->UPLOADXML
* +-------------------------------------------------------------------------------------------------+
* | [--->] XMLDATA TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Instance Public Method ZSAPLINK->VALUEHELP
* +-------------------------------------------------------------------------------------------------+
* | [--->] I_OBJTYPE TYPE STRING
* | [<-()] E_OBJNAME TYPE STRING
* +--------------------------------------------------------------------------------------</SIGNATURE>
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.