Skip to Content
0
Former Member
Jun 13, 2011 at 07:54 PM

Calling Sap Webservices from Oracle Database (Pl/Sql)

678 Views

I have created a procedure calling webservices from oracle (by UTL_HTTP).

When I call a test WebService works fine but when I call one of the sap with authentication does not work and don't returns any error (only empty value on the end)

would appreciate any help

declare

p_request soap_api.t_request;

TYPE t_response IS RECORD

(

doc XMLTYPE,

envelope_tag VARCHAR2(30)

);

l_response t_response;

l_envelope VARCHAR2(32767);

l_http_request UTL_HTTP.req;

l_http_response UTL_HTTP.resp;

v_result varchar2(4000);

begin

p_request := soap_api.new_request('urn:ZWsEam005CreatOrUpdOrder','xmlns="' ||

'http://ONLYTest.corp.ad/sap/bc/srt/wsdl/bndg_E048C7C2793BA7F1ACB0005056BD0002/wsdl11/allinone/ws_policy/document?sap-client=200' || '"');

p_request.body := p_request.body||'<Descricao>teste</Descricao>';

p_request.body := p_request.body||'<Empresa>1001</Empresa>';

p_request.body := p_request.body||'<NumOrderEam>566</NumOrderEam>';

p_request.body := p_request.body||'<Status>CRIAR</Status>';

p_request.body := p_request.body||'<TipoOrdem>Z003</TipoOrdem>';

l_envelope := '<'||p_request.envelope_tag||':Envelope xmlns:'||p_request.envelope_tag||'="http://schemas.xmlsoap.org/soap/envelope/" ' ||

'xmlns:urn="urn:sap-com:document:sap:soap:functions:mc-style">'||

'<'||p_request.envelope_tag||':Body>' ||

'<'||p_request.method||'>' ||

p_request.body ||

'</'||p_request.method||'>' ||

'</'||p_request.envelope_tag||':Body>' ||

'</'||p_request.envelope_tag||':Envelope>';

l_http_request := UTL_HTTP.begin_request('http://ONLYTest.corp.ad/sap/bc/srt/wsdl/bndg_E048C7C2793BA7F1ACB0005056BD0002/wsdl11/allinone/ws_policy/document?sap-client=200','POST','HTTP/1.1');

utl_http.Set_Authentication (l_http_request,'ANYTHING','THISISPWD','Basic', false);

UTL_HTTP.set_header(l_http_request, 'Content-Type', 'text/xml');

UTL_HTTP.set_header(l_http_request, 'Content-Length', LENGTH(l_envelope));

UTL_HTTP.set_header(l_http_request, 'SOAPAction', 'urn:ZWsEam005CreatOrUpdOrder');

UTL_HTTP.write_text(l_http_request, l_envelope);

l_http_response := UTL_HTTP.get_response(l_http_request);

UTL_HTTP.read_text(l_http_response, l_envelope);

UTL_HTTP.end_response(l_http_response);

l_response.doc := XMLTYPE.createxml(l_envelope);

l_response.envelope_tag := p_request.envelope_tag;

l_response.doc := l_response.doc.extract('/'||l_response.envelope_tag||':Envelope/'||l_response.envelope_tag||':Body/child::node()', 'xmlns:'||l_response.envelope_tag||'="http://schemas.xmlsoap.org/soap/envelope/"');

v_result := l_response.doc.extract('//child::text()').getstringval();

END;

/