Hi all,
I saw different posts about this subject, but I don't get the solution.
I have a web services that i need consume in abap program. i made the following steps:
- In the se38 I create a client proxy
- In the soaManager I create a Logical Port.
- I create a program to execute the client proxy.
When I execute the program occur the following error:
"System fault occurred: SOAP:1.001 CX_SXML_PARSE_ERROR:SXML reader/writer exception.Error while parsing an XML stream: 'undeclared namespace prefix'."
The error occur in the code where I unparserd fragment.
*create SXMLP fragment.
l_fragment = cl_sxmlp_factory=>create_fragment(
name = m_wrapped_part->qname-na
nsuri = m_wrapped_part->qname-na
l_fragment->set_unparsed_fragment( fragment = l_xstring ).
l_fragment->serialize( writer = writer package_writer = package_writer
Follow the program code:
REPORT z_execute_ws.
DATA: lo_sys_exception TYPE REF TO cx_ai_system_fault.
DATA: zproxy TYPE REF TO zproxyco_hpd_incident_interfac.
DATA: lo_app_ex TYPE REF TO cx_ai_application_fault.
DATA: ws_header TYPE REF TO if_wsprotocol_ws_header.
DATA: ixml TYPE REF TO if_ixml,
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,
name TYPE string,
namespace TYPE string..
DATA l_xstring TYPE xstring.
DATA l_string TYPE string.
FIELD-SYMBOLS <fs_xstring> TYPE xstring.
CONCATENATE
'<soapenv:Header>'
'<urn:AuthenticationInfo>'
'<urn:userName>_Service_SBM</urn:userName>'
'<urn:password>123456</urn:password>'
'</urn:AuthenticationInfo>'
'</soapenv:Header>' INTO l_string.
TRY.
CREATE OBJECT zproxy
EXPORTING
logical_port_name = 'Z_LP_CO_HPD_INCIDENT_INTERFAC'.
ws_header ?= zproxy->get_protocol('IF_WSPROTOCOL_WS_HEADER').
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( ).
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 = 'urn:HPD_IncidentInterface_WS'
dom = xml_element ).
xml_element ?= xml_element->get_next( ).
ENDWHILE.
ENDIF.
ENDIF.
CATCH cx_ai_system_fault .
ENDTRY.
DATA: output TYPE zproxyhelp_desk_query_service .
DATA: input TYPE zproxyhelp_desk_query_service1 .
TRY.
input-parameters-incident_number = 'INC000000000668'.
CALL METHOD zproxy->help_desk_query_service
EXPORTING
input = input
IMPORTING
output = output.
CATCH cx_ai_system_fault INTO lo_sys_exception.
WRITE:/ 'System fault occurred:', lo_sys_exception->code, lo_sys_exception->errortext.
CATCH cx_ai_application_fault INTO lo_app_ex.
WRITE: / 'Application fault occurred ', lo_app_ex->textid.
ENDTRY.
Can somebody help please ?
Thanks in advance,
Best regards,