Skip to Content

Today I wondered how HANA Studio works. So I traced HANA Studio connections. And discovered that it communicate with HANA server using SOAP requests.

There are some methods. But in this blog I will mentiion only 2 of them.

Before starting writing about them SOAP url is: http://host:50<instance>13/SAPControl

  • The first one is about statuses of processes of HANA Server:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:SAPControl">
     <SOAP-ENV:Header/>
          <SOAP-ENV:Body><q0:GetProcessList/></SOAP-ENV:Body>
</SOAP-ENV:Envelope>

This SOAP request returns:

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SAPControl="urn:SAPControl" xmlns:SAPCCMS="urn:SAPCCMS" xmlns:SAPHostControl="urn:SAPHostControl" xmlns:SAPOscol="urn:SAPOscol" xmlns:SAPDSR="urn:SAPDSR">
<SOAP-ENV:Body>
          <SAPControl:GetProcessListResponse>
                    <process>
                              <item>
                                        <name>hdbdaemon</name>
                                        <description>HDB Daemon</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:02</starttime>
                                        <elapsedtime>4:33:15</elapsedtime>
                                        <pid>5479</pid>
                              </item>
                              <item>
                                        <name>hdbnameserver</name>
                                        <description>HDB Nameserver</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:05</starttime>
                                        <elapsedtime>4:33:12</elapsedtime>
                                        <pid>5546</pid>
                              </item>
                              <item>
                                        <name>hdbpreprocessor</name>
                                        <description>HDB Preprocessor</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:21</starttime>
                                        <elapsedtime>4:32:56</elapsedtime>
                                        <pid>5631</pid>
                              </item>
                              <item>
                                        <name>hdbindexserver</name>
                                        <description>HDB Indexserver</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:24</starttime>
                                        <elapsedtime>4:32:53</elapsedtime>
                                        <pid>5648</pid>
                              </item>
                              <item>
                                        <name>hdbstatisticsserver</name>
                                        <description>HDB Statisticsserver</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:25</starttime>
                                        <elapsedtime>4:32:52</elapsedtime>
                                        <pid>5656</pid>
                              </item>
                              <item>
                                        <name>hdbxsengine</name>
                                        <description>HDB XSEngine</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:26</starttime>
                                        <elapsedtime>4:32:51</elapsedtime>
                                        <pid>5671</pid>
                              </item>
                              <item>
                                        <name>sapwebdisp_hdb</name>
                                        <description>SAP WebDispatcher</description>
                                        <dispstatus>SAPControl-GREEN</dispstatus>
                                        <textstatus>Running</textstatus>
                                        <starttime>2012 10 25 14:58:43</starttime>
                                        <elapsedtime>4:32:34</elapsedtime>
                                        <pid>6096</pid>
                              </item>
                    </process>
          </SAPControl:GetProcessListResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

As you see in response SOAP request returns every process of status.

  • The other SOAP request returns Web Methods. But they work with authentication as I can see.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:SAPControl">
          <SOAP-ENV:Header/>
                    <SOAP-ENV:Body>
                              <q0:GetInstanceProperties/>
                    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

And this request returns:

<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SAPControl="urn:SAPControl" xmlns:SAPCCMS="urn:SAPCCMS" xmlns:SAPHostControl="urn:SAPHostControl" xmlns:SAPOscol="urn:SAPOscol" xmlns:SAPDSR="urn:SAPDSR">
<SOAP-ENV:Header></SOAP-ENV:Header>
<SOAP-ENV:Body>
          <SAPControl:GetInstancePropertiesResponse>
                    <properties>
                              <item>
                                        <property>Process List</property>
                                        <propertytype>NodeWebmethod</propertytype>
                                        <value>GetProcessList</value>
                              </item>
                              <item>
                                        <property>Access Points</property>
                                        <propertytype>NodeWebmethod</propertytype>
                                        <value>GetAccessPointList</value>
                              </item>
                              <item>
                                        <property>Protected Webmethods</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>ABAPAcknowledgeAlerts,ABAPGetWPTable,ABAPReadRawSyslog,ABAPReadSyslog,AnalyseLogFiles,Bootstrap,ConfigureLogFileList,CreateSnapshot,DeleteSnapshots,EnqGetLockTable,EnqGetStatistic,EnqRemoveLocks,GetAccessPointList,GetAlerts,GetAlertTree,GetEnvironment,GetLogFileList,GetProcessParameter,GetQueueStatistic,GetStartProfile,GetTraceFile,GetVersionInfo,ICMGetCacheEntries,ICMGetConnectionList,ICMGetProxyConnectionList,ICMGetThreadList,InstanceStart,InstanceStop,ListDeveloperTraces,ListLogFiles,ListSnapshots,OSExecute,ParameterValue,ReadDeveloperTrace,ReadLogFile,ReadSnapshot,RestartInstance,RestartService,RestartSystem,SendSignal,SetProcessParameter,SetProcessParameter2,ShmDetach,Shutdown,Start,StartSystem,Stop,StopService,StopSystem,UpdateSystem,WebDispGetServerList,GetAgentConfig,MtChangeStatus,MtCustomizeWrite,MtDbsetToWpsetByTid,MtDestroyMarkNTry,MtReset,PerfCustomizeWrite,ReadDirectory,ReadFile,ReadProfileParameters,Register,SnglmgsCustomizeWrite,SystemObjectSetValue,ToolSet,ToolSetRuntimeStatus,TriggerDataCollection,Unregister,UtilAlChangeStatus</value>
                              </item>
                              <item>
                                        <property>DBServices</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>YES</value>
                              </item>
                              <item>
                                        <property>StartPriority</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>0.3</value>
                              </item>
                              <item>
                                        <property>SAPSYSTEM</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>00</value>
                              </item>
                              <item>
                                        <property>SAPSYSTEMNAME</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>CC2</value>
                              </item>
                              <item>
                                        <property>SAPLOCALHOST</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>imdbhdbcc2</value>
                                        </item>
                              <item>
                                        <property>INSTANCE_NAME</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>HDB00</value>
                              </item>
                              <item>
                                        <property>Webmethods</property>
                                        <propertytype>Attribute</propertytype>
                                        <value>Start,InstanceStart,Bootstrap,Stop,InstanceStop,Shutdown,ParameterValue,GetProcessList,GetStartProfile,GetTraceFile,GetAlertTree,GetAlerts,RestartService,StopService,GetEnvironment,ListDeveloperTraces,ReadDeveloperTrace,RestartInstance,SendSignal,GetVersionInfo,GetQueueStatistic,GetInstanceProperties,OSExecute,ReadLogFile,AnalyseLogFiles,ListLogFiles,GetAccessPointList,GetSystemInstanceList,StartSystem,StopSystem,RestartSystem,UpdateSystem,AccessCheck,GetProcessParameter,SetProcessParameter,SetProcessParameter2,ShmDetach,GetNetworkId,GetSecNetworkId,RequestLogonFile,CreateSnapshot,ReadSnapshot,ListSnapshots,DeleteSnapshots,ABAPReadSyslog,ABAPReadRawSyslog,ABAPGetWPTable,ABAPAcknowledgeAlerts,ICMGetThreadList,ICMGetConnectionList,ICMGetCacheEntries,WebDispGetServerList,EnqGetLockTable,EnqRemoveLocks,EnqGetStatistic</value>
                              </item>
                    </properties>
          </SAPControl:GetInstancePropertiesResponse>
</SOAP-ENV:Body></SOAP-ENV:Envelope>

As you see above there are some web methods. You can test these by yourself.

You can test these methods with a simple HTML and Javascript code:

<html>
<head>
    <title>SOAP JavaScript Client Test</title>
    <script type="text/javascript">
        function test() {
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.open('POST', 'http://host:port/SAPControl', true);
            var sr =
                                        '<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="urn:SAPControl"><SOAP-ENV:Header/><SOAP-ENV:Body><q0:GetInstanceProperties/></SOAP-ENV:Body></SOAP-ENV:Envelope>';
                              xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {
                        alert('done use firebug to see responce');
                    }
                }
            }
            xmlhttp.setRequestHeader('Content-Type', 'text/xml');
            xmlhttp.send(sr);
        }
    </script>
</head>
<body>
    <form name="Demo" action="" method="post">
        <div>
            <input type="button" value="Test!" onclick="test();" />
        </div>
    </form>
</body>
<html>
To report this post you need to login first.

2 Comments

You must be Logged on to comment or reply to a post.

  1. Ivan Mirisola

    Hi Erhan Keseli,

    Nice blog! Thanks for sharing.
    Just a small correction. According to documentation, the WSDL can be obtained either this way:

    http://<host>:5<instance_number>13/?wsdl

    or this way:

    https://<host>:5<instance_number>14/?wsdl

    It doesn’t matter if you enter the SAPControl or not on the URL. However, if you fail to pass “?wsdl” to the SAP Start Service, it will not “understand” the request and will issue either a “404” (in case you have missed the parameter) or a “SOAP Porttype not supported” message if you enter any additional “/” (slashes) – something like:

    http://localhost:50013/SAPControl/?wsdl   <—– this is wrong!!

    Regards,
    Ivan

     

    (0) 

Leave a Reply