Permalink
Fetching contributors…
Cannot retrieve contributors at this time
452 lines (408 sloc) 19.4 KB
<?xml version="1.0" encoding="utf-8"?>
<CLAS CLSNAME="ZSAPLINK_SICF" VERSION="1" LANGU="E" DESCRIPT="SAPlink - BSP plugin" UUID="45E9CFD8909B099100000000A7E42BB2" CATEGORY="00" EXPOSURE="2" STATE="1" RELEASE="0" AUTHOR="USEWH90" CREATEDON="20070303" CHANGEDON="00000000" CHGDANYON="00000000" CLSCCINCL="X" FIXPT="X" UNICODE="X" R3RELEASE="700" CLSBCCAT="00" DURATION_TYPE="0 " RISK_LEVEL="0 " REFCLSNAME="ZSAPLINK">
<publicSection>class ZSAPLINK_SICF definition
public
inheriting from ZSAPLINK
create public .
*&quot;* public components of class ZSAPLINK_SICF
*&quot;* do not include other source files here!!!
public section.
methods CHECKEXISTS
redefinition .
methods CREATEIXMLDOCFROMOBJECT
redefinition .
methods CREATEOBJECTFROMIXMLDOC
redefinition .</publicSection>
<protectedSection>*&quot;* protected components of class ZSAPLINK_BSP
*&quot;* do not include other source files here!!!
protected section.
methods DELETEOBJECT
redefinition .
methods GETOBJECTTYPE
redefinition .</protectedSection>
<privateSection>*&quot;* private components of class ZSAPLINK_BSP
*&quot;* do not include other source files here!!!
private section.</privateSection>
<localImplementation>*&quot;* local class implementation for public class
*&quot;* use this source file for the implementation part of
*&quot;* local helper classes</localImplementation>
<localTypes>*&quot;* use this source file for any type declarations (class
*&quot;* definitions, interfaces or data types) you need for method
*&quot;* implementation or private method&apos;s signature</localTypes>
<localMacros>*&quot;* use this source file for any macro definitions you need
*&quot;* in the implementation part of the class</localMacros>
<inheritance CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" STATE="1" AUTHOR="USEWH90" CREATEDON="20070303" CHANGEDON="00000000">
<redefinition CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" MTDNAME="CHECKEXISTS"/>
<redefinition CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" MTDNAME="CREATEIXMLDOCFROMOBJECT"/>
<redefinition CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" MTDNAME="CREATEOBJECTFROMIXMLDOC"/>
<redefinition CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" MTDNAME="DELETEOBJECT"/>
<redefinition CLSNAME="ZSAPLINK_SICF" REFCLSNAME="ZSAPLINK" VERSION="1" MTDNAME="GETOBJECTTYPE"/>
</inheritance>
<method CLSNAME="ZSAPLINK" CMPNAME="CHECKEXISTS" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " CREATEDON="00000000" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>*/---------------------------------------------------------------------\
*| This file is part of SAPlink. |
*| |
*| SAPlink is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published |
*| by the Free Software Foundation; either version 2 of the License, |
*| or (at your option) any later version. |
*| |
*| SAPlink is distributed in the hope that it will be useful, |
*| but WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
*| GNU General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with SAPlink; if not, write to the |
*| Free Software Foundation, Inc., |
*| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
*\---------------------------------------------------------------------/
method CHECKEXISTS .
data _objDirEntry type string.
data _icfName type ICFNAME.
data _parentNode type ICFPARGUID.
data l_nodeGuid type ICFNODGUID.
data tempstring type string.
_objDirEntry = objName.
split _objDirEntry at space into _icfName tempString.
condense: _icfName, tempString.
_parentNode = tempString.
CALL FUNCTION &apos;HTTP_GET_NODEGUID&apos;
EXPORTING
parguid = _parentNode
nodename = _icfName
IMPORTING
nodeguid = l_nodeguid
EXCEPTIONS
node_not_found = 1
OTHERS = 2.
if sy-subrc = 0.
exists = &apos;X&apos;.
endif.
endmethod.</source>
</method>
<method CLSNAME="ZSAPLINK" CMPNAME="CREATEIXMLDOCFROMOBJECT" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " CREATEDON="00000000" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>*/---------------------------------------------------------------------\
*| This file is part of SAPlink. |
*| |
*| SAPlink is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published |
*| by the Free Software Foundation; either version 2 of the License, |
*| or (at your option) any later version. |
*| |
*| SAPlink is distributed in the hope that it will be useful, |
*| but WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
*| GNU General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with SAPlink; if not, write to the |
*| Free Software Foundation, Inc., |
*| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
*\---------------------------------------------------------------------/
method CREATEIXMLDOCFROMOBJECT .
data rc type sysubrc.
data rootNode type ref to if_ixml_element.
data _objDirEntry type string.
data _icfName type ICFNAME.
data _parentNode type ICFPARGUID.
*data l_nodeGuid type ICFNODGUID.
data icfAttributes type icfservice.
data tempString type string.
data docNode type ref to if_ixml_element.
data handlerNode type ref to if_ixml_element.
data wa_icfdocu type icfdocu.
data wa_icfhandler type icfhandler.
data it_icfhandler type table of icfhandler.
_objDirEntry = objName.
split _objDirEntry at space into _icfName tempString.
condense: _icfName, tempString.
_parentNode = tempString.
* CALL FUNCTION &apos;HTTP_GET_NODEGUID&apos;
* EXPORTING
* parguid = _parentNode
* nodename = _icfName
* IMPORTING
* nodeguid = l_nodeguid
* EXCEPTIONS
* node_not_found = 1
* OTHERS = 2.
*
* if sy-subrc &lt;&gt; 0.
* case sy-subrc.
* when 1.
* raise exception type zcx_saplink
* exporting textid = zcx_saplink=&gt;not_found.
* when others.
* raise exception type zcx_saplink
* exporting textid = zcx_saplink=&gt;system_error.
* endcase.
* endif.
select single * from icfservice into icfAttributes
where icf_name = _icfName
and icfparguid = _parentNode.
* and icfnodguid = l_nodeGuid.
if sy-subrc &lt;&gt; 0.
raise exception type zcx_saplink
exporting textid = zcx_saplink=&gt;not_found.
endif.
* Create parent node
data _objType type string.
_objType = getObjectType( ).
rootNode = xmlDoc-&gt;create_element( _objType ).
setAttributesFromStructure( node = rootNode structure = icfAttributes
).
* rc = rootNode-&gt;if_ixml_node~set_value( _objDirEntry ).
* icfdocu info
select single * from icfdocu into wa_icfdocu
where icf_name = _icfName
and icfparguid = _parentNode.
if sy-subrc = 0.
docNode = xmlDoc-&gt;create_element( &apos;icfdocu&apos; ).
setAttributesFromStructure( node = docNode structure = wa_icfdocu ).
rc = rootNode-&gt;append_child( docNode ).
endif.
* icfhandler entries
select * from icfhandler into table it_icfhandler
where icf_name = _icfName
and icfparguid = _parentNode.
loop at it_icfhandler into wa_icfhandler.
handlerNode = xmlDoc-&gt;create_element( &apos;icfhandler&apos; ).
setAttributesFromStructure( node = handlerNode structure = wa_icfhandler ).
rc = rootNode-&gt;append_child( handlerNode ).
endloop.
* append root to xml and return
rc = xmldoc-&gt;append_child( rootNode ).
ixmlDocument = xmlDoc.
endmethod.</source>
</method>
<method CLSNAME="ZSAPLINK" CMPNAME="CREATEOBJECTFROMIXMLDOC" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " CREATEDON="00000000" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>*/---------------------------------------------------------------------\
*| This file is part of SAPlink. |
*| |
*| SAPlink is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published |
*| by the Free Software Foundation; either version 2 of the License, |
*| or (at your option) any later version. |
*| |
*| SAPlink is distributed in the hope that it will be useful, |
*| but WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
*| GNU General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with SAPlink; if not, write to the |
*| Free Software Foundation, Inc., |
*| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
*\---------------------------------------------------------------------/
method CREATEOBJECTFROMIXMLDOC .
*data _bspName TYPE O2APPLNAME.
*data bspAttributes type O2APPLATTR.
*data flag type char1.
*data transReq type trkorr.
*data nodes type o2applnode_table.
*data navGraph type o2applgrap_table.
*data navLine type O2APPLGRAP.
*data application type ref to cl_o2_api_application.
*data nameSpace type skwf_urlp.
*data folderName type string.
*data folderDesc type sdok_descr.
*data rootNode type ref to if_ixml_element.
*data pageNode type ref to if_ixml_element.
data node 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 pageIterator type ref to if_ixml_node_iterator.
*data ixmlNode type ref to if_ixml_node.
*data source type string.
*data trobjName type trobj_name.
*data objectName type SEU_OBJKEY.
*data obj_name type E071-OBJ_NAME.
*data l_nodeguid type ICFNODGUID.
*data l_icfdocu type ICF_DOCU.
*data l_icfname type ICFNAME.
data _devclass type devclass.
data checkExists type flag.
*
**page data
*data bspPages type O2PAGELIST.
*data bspPage type O2PAGATTR.
*data pageAttributes type O2PAGATTR.
*data newPage TYPE REF TO CL_O2_API_PAGES.
*data pageContent TYPE O2PAGELINE_TABLE.
*data eventHandlers type O2PAGEVH_TABLETYPE.
*data eventHandler type O2PAGEVHS.
*data eventAttributes type O2PAGEVH.
*data pageParameters TYPE O2PAGPAR_TABLETYPE.
*data pageParameter type O2PAGPARS.
*data typeDefinitionSource type RSWSOURCET.
data _objType type string.
data rc type sysubrc.
data rootNode type ref to if_ixml_element.
data _objDirEntry type SOBJ_NAME.
data _icfName type ICFNAME.
data _parentNode type ICFPARGUID.
*data l_nodeGuid type ICFNODGUID.
data icfAttributes type icfservice.
data _icfdocu type ICF_DOCU.
data wa_icfHandler type icfHandler.
data wa_icfdocu type icfdocu.
data tempString type string.
_devclass = devclass.
_objType = getObjectType( ).
xmlDoc = ixmlDocument.
rootNode = xmlDoc-&gt;find_from_name( _objType ).
call method GETSTRUCTUREFROMATTRIBUTES
exporting
node = rootNode
changing
structure = icfAttributes.
_objDirEntry = icfAttributes-icf_name.
_objDirEntry+15 = icfAttributes-icfparguid.
objName = _objDirEntry.
checkExists = checkexists( ).
if checkExists is not initial.
if overwrite is initial.
raise exception type zcx_saplink
exporting textid = zcx_saplink=&gt;existing.
else.
* delete object for new install
deleteobject( ).
endif.
endif.
* get documentation info
free node.
node = rootnode-&gt;find_from_name( &apos;icfdocu&apos; ).
if node IS NOT INITIAL.
call method GETSTRUCTUREFROMATTRIBUTES
exporting
node = node
changing
structure = wa_icfdocu.
endif.
****************Create SICF node****************
* _icfdocu = wa_icfdocu-icf_docu.
CALL FUNCTION &apos;HTTPTREE_INSERT_NODE&apos;
EXPORTING
p_icf_name = icfAttributes-icf_Name
p_icfparguid = icfAttributes-icfparguid
p_icfdocu = wa_icfdocu-icf_docu
p_doculang = wa_icfdocu-icf_langu
* p_icfactive = &apos;X&apos; &quot;activate service
p_package = devclass
EXCEPTIONS
NO_NEW_VIRTUAL_HOST = 1
SPECIAL_SERVICE_ERROR = 2
PARENT_NOT_EXISTING = 3
ENQUEUE_ERROR = 4
NODE_ALREADY_EXISTING = 5
EMPTY_DOCU = 6
DOCULANG_NOT_INSTALLED = 7
SECURITY_INFO_ERROR = 8
USER_PASSWORD_ERROR = 9
PASSWORD_ENCRYPTION_ERROR = 10
INVALID_URL = 11
INVALID_OTR_CONCEPT = 12
FORMFLG401_ERROR = 13
HANDLER_ERROR = 14
TRANSPORT_ERROR = 15
TADIR_ERROR = 16
PACKAGE_NOT_FOUND = 17
OTHERS = 18
.
if sy-subrc &lt;&gt; 0.
raise exception type zcx_saplink
exporting textid = zcx_saplink=&gt;system_error.
endif.
* insert handler data
free: filter, iterator, node.
filter = xmlDoc-&gt;create_filter_name( &apos;icfhandler&apos; ).
iterator = xmlDoc-&gt;create_iterator_filtered( filter ).
node ?= iterator-&gt;get_next( ).
while node is not initial.
call method GETSTRUCTUREFROMATTRIBUTES
exporting
node = node
changing
structure = wa_icfHandler.
if wa_icfHandler is not initial.
insert icfHandler from wa_icfHandler.
endif.
node ?= iterator-&gt;get_next( ).
endwhile.
* successful install
name = objName.
endmethod.</source>
</method>
<method CLSNAME="ZSAPLINK" CMPNAME="DELETEOBJECT" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " CREATEDON="00000000" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>*/---------------------------------------------------------------------\
*| This file is part of SAPlink. |
*| |
*| SAPlink is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published |
*| by the Free Software Foundation; either version 2 of the License, |
*| or (at your option) any later version. |
*| |
*| SAPlink is distributed in the hope that it will be useful, |
*| but WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
*| GNU General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with SAPlink; if not, write to the |
*| Free Software Foundation, Inc., |
*| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
*\---------------------------------------------------------------------/
method DELETEOBJECT .
data _objDirEntry type string.
data _icfName type ICFNAME.
data _parentNode type ICFPARGUID.
data tempstring type string.
_objDirEntry = objName.
split _objDirEntry at space into _icfName tempString.
condense: _icfName, tempString.
_parentNode = tempString.
****************Delete SICF node****************
translate _icfname to lower case.
call function &apos;HTTPTREE_DELETE_NODE&apos;
exporting
p_icf_name = _icfname
p_icfparguid = _parentNode
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
others = 11.
endmethod.</source>
</method>
<method CLSNAME="ZSAPLINK" CMPNAME="GETOBJECTTYPE" VERSION="0" EXPOSURE="0" STATE="0" EDITORDER="0 " DISPID="0 " CREATEDON="00000000" CHANGEDON="00000000" MTDTYPE="0" MTDDECLTYP="0" BCMTDCAT="00" BCMTDSYN="0">
<source>*/---------------------------------------------------------------------\
*| This file is part of SAPlink. |
*| |
*| SAPlink is free software; you can redistribute it and/or modify |
*| it under the terms of the GNU General Public License as published |
*| by the Free Software Foundation; either version 2 of the License, |
*| or (at your option) any later version. |
*| |
*| SAPlink is distributed in the hope that it will be useful, |
*| but WITHOUT ANY WARRANTY; without even the implied warranty of |
*| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
*| GNU General Public License for more details. |
*| |
*| You should have received a copy of the GNU General Public License |
*| along with SAPlink; if not, write to the |
*| Free Software Foundation, Inc., |
*| 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
*\---------------------------------------------------------------------/
method GETOBJECTTYPE .
objecttype = &apos;SICF&apos;. &quot;SICF Node
endmethod.</source>
</method>
</CLAS>