Hi abapers,
I am having problems configuring a Service Consumer. I don't have much experience doing this, but I followed some examples that I found about this subject.
1.Create ABAP proxy for WSDL (http://www.angellira.com.br:443/webservices/WSStatus.asmx?WSDL). It has created structures only for SOAP body.
2.Create Logical port
3.Create following program to call proxy
When I tested the web service, it show me a message saying
SoapFaultCode:4 Autenticação necessária
In some web blogs, they said that is necessary to input the header, but did not works. If somebody know what is the problem, please help me.
REPORT zprt_tmr013.
DATA: cl_proxy TYPE REF TO zcoco_wsstatus_soap, " Proxy Class
data_in TYPE zcoget_status_entrega_soap_in, " Proxy Input
data_out TYPE zcoget_status_entrega_soap_out, " Proxy Output
ws_header TYPE REF TO if_wsprotocol_ws_header,
system_fault TYPE REF TO cx_ai_system_fault,
name TYPE string,
namespace TYPE string,
fault TYPE REF TO cx_root. " Generic Fault
DATA: xml_document TYPE REF TO if_ixml_document,
xml_root TYPE REF TO if_ixml_element,
xml_element TYPE REF TO if_ixml_element,
xml_node TYPE REF TO if_ixml_node.
DATA: lw_cstring TYPE string,
l_xstring TYPE xstring,
l_string TYPE string.
* Instantiate the proxy class providing the Logical port name
CREATE OBJECT cl_proxy
EXPORTING
logical_port_name = 'DEFAULT'.
ws_header ?= cl_proxy->get_protocol( if_wsprotocol=>ws_header ).
CONCATENATE
'<soapenv:Header>'
'<ang:ValidationSoapHeader>'
'<ang:userCod>W********</ang:userCod>'
'<ang:userPwd>*********************</ang:userPwd>'
'<ang:homologacao>false</ang:homologacao>'
'</ang:ValidationSoapHeader>'
'</soapenv:Header>'
INTO l_string.
l_xstring = cl_proxy_service=>cstring2xstring( l_string ).
IF NOT l_string IS INITIAL.
CALL FUNCTION 'SDIXML_XML_TO_DOM'
EXPORTING
xml = l_xstring
IMPORTING
document = xml_document
EXCEPTIONS
invalid_input = 1
OTHERS = 2.
IF sy-subrc = 0 AND NOT xml_document IS INITIAL.
xml_root = xml_document->get_root_element( ).
xml_element ?= xml_root->get_first_child( ).
* add header element by element to SOAP header
break rfalkowiski.
WHILE NOT xml_element IS INITIAL.
name = xml_element->get_name( ).
namespace = xml_element->get_namespace_uri( ).
ws_header->set_request_header( name = name namespace = namespace dom = xml_element ).
xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
TRY.
data_in-v_carga = '20038598'.
CALL METHOD cl_proxy->get_status_entrega
EXPORTING
input = data_in
IMPORTING
output = data_out.
CATCH cx_ai_system_fault .
CATCH cx_ai_application_fault .
ENDTRY.