Read SOAP envelope into ABAP using XSLT?
Hello,
I have another problem here and this is really driving me nuts - I just don't get it to work.
As a reply to a web-service I call I get the following xml file. All I need is an xslt that gets me errorCode and errorDescription into an ABAP structure...
file:
<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<mit:rgo xmlns:mit="http://myurl.com"><mit:TECHNICALHEADER><mit:errorCode>A1014</mit:errorCode><mit:errorDescription>Unable to perform operation</mit:errorDescription><mit:password/><mit:user/><mit:applicationKey/></mit:TECHNICALHEADER><mit:file_creation_date>2005-09-06</mit:file_creation_date><mit:file_creation_time>15:06:33.0</mit:file_creation_time><mit:registration><mit:order_nr>DE999TEST</mit:order_nr><mit:vin>XXXXXXXXXXXXXXX04</mit:vin></mit:registration></mit:rgo> </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
my corresponding XSLT is:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:mit=
"http://myurl.com" xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<asx:abap>
<asx:values>
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<mit:rgo>
<mit:TECHNICALHEADER>
<ANSWER>
<mit:errorCode>
<xsl:value-of select="ERRORCODE"/>
</mit:errorCode>
<mit:errorDescription>
<xsl:value-of select="ERRORCODEDESCRIPTION"/>
</mit:errorDescription>
</ANSWER>
</mit:TECHNICALHEADER>
</mit:rgo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
What am I doing wrong or what do I need to do? I'm lost!
Thank you for your help!
Johannes.
Thank you Durairaj, as a matter of fact my program is based on your post (one that you pointed me to). For whatever reason I'm not having luck figuring it out (may be just a bit of work pressure) could you please hlep me a bit more by pointing me to where in my program code/xslt I'm going wrong? I somehow feel that it could be my table structure or xslt.
I would really appreciate it!
Thanks again,
erfan.
Similar Messages
-
Hello friends,
I am trying a ABAP program (posted on SDN) to convert XML into ABAP (internal table) and not having any luck. Either it is my table/structure declaration or XSLT. Could any of you experts give me a hand with it please?
Thanks in advance..but points on help!
Here is my XML:
And my ABAP program:
REPORT ZTESTXMLREAD.
TYPE-POOLS: abap, ixml.
class cl_ixml definition load.
TYPES: BEGIN OF t_dc40,
docnum(17) TYPE C,
status(2) TYPE C,
END OF t_dc40.
TYPES: BEGIN OF t_emkt,
spras(2) TYPE C,
maktx(35) TYPE C,
END OF t_emkt.
TYPES: BEGIN OF t_emrm,
matnr(12) TYPE C,
ersda(8) TYPE C,
ernam(25) TYPE C,
emktx TYPE t_emkt,
END OF t_emrm.
TYPES: BEGIN OF t_mm,
dc40 TYPE t_dc40,
emrm TYPE t_emrm,
END OF t_mm.
DATA: l_ixml TYPE REF TO if_ixml,
l_streamfactory TYPE REF TO if_ixml_stream_factory,
l_istream TYPE REF TO if_ixml_istream.
DATA: l_filename TYPE string.
DATA: it_airplus TYPE STANDARD TABLE OF t_mm,
wa_airplus TYPE t_mm.
*Errorvariables
DATA: xslt_err TYPE REF TO cx_xslt_exception,
err_string TYPE string.
PARAMETERS: pa_file TYPE char1024 DEFAULT 'c:Test.XML'.
START-OF-SELECTION.
Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
Creating input stream
l_istream = l_streamfactory->create_istream_uri( 'file://c:Test.xml' ).
here we use the CALL TRANSFORMATION method which calls
TRY.
CALL TRANSFORMATION ZTestXSLT
SOURCE xml l_istream
RESULT xml_output = it_airplus
catch any error, very helpful if the XSLT isn't correct
CATCH cx_xslt_exception INTO xslt_err.
err_string = xslt_err->get_text( ).
WRITE: / 'Transformation error: ', err_string.
EXIT.
ENDTRY.
setting a breakpoint to watch the workarea
by the internal table "it_airplus"
break-point.
LOOP AT it_airplus INTO wa_airplus.
ENDLOOP.Thank you Durairaj, as a matter of fact my program is based on your post (one that you pointed me to). For whatever reason I'm not having luck figuring it out (may be just a bit of work pressure) could you please hlep me a bit more by pointing me to where in my program code/xslt I'm going wrong? I somehow feel that it could be my table structure or xslt.
I would really appreciate it!
Thanks again,
erfan. -
Hello folks,
I've been struggling and I need to figure out how to read a field from an XML field into ABAP. I'm writing this method and I need to call this field from my XML file. Can you guys please give me suggestions? Please advise. I will appreciate your time. Thanks in advance.
Ol.*& Report z_xit_xml_check
report z_xit_xml_check.
class cl_ixml definition load.
type-pools: ixml.
types: begin of t_xml_line,
data(256) type x,
end of t_xml_line,
begin of tsfixml,
data(1024) type c,
end of tsfixml.
data: l_ixml type ref to if_ixml,
l_streamfactory type ref to if_ixml_stream_factory,
l_parser type ref to if_ixml_parser,
l_istream type ref to if_ixml_istream,
l_document type ref to if_ixml_document,
l_node type ref to if_ixml_node,
l_xmldata type string.
data: l_elem type ref to if_ixml_element,
l_root_node type ref to if_ixml_node,
l_next_node type ref to if_ixml_node,
l_name type string,
l_iterator type ref to if_ixml_node_iterator.
data: l_xml_table type table of t_xml_line,
l_xml_line type t_xml_line,
l_xml_table_size type i.
data: l_filename type string.
parameters: pa_file type char1024 default
'd:\joao\desenvolvimentos\fi\fact\teste.xml'.
Validation of XML file: Only DTD included in xml document is supported
parameters: pa_val type char1 as checkbox.
start-of-selection.
Creating the main iXML factory
l_ixml = cl_ixml=>create( ).
Creating a stream factory
l_streamfactory = l_ixml->create_stream_factory( ).
perform get_xml_table changing l_xml_table_size l_xml_table.
wrap the table containing the file into a stream
l_istream = l_streamfactory->create_istream_itable( table =
l_xml_table
size =
l_xml_table_size ).
Creating a document
l_document = l_ixml->create_document( ).
Create a Parser
l_parser = l_ixml->create_parser( stream_factory = l_streamfactory
istream = l_istream
document = l_document ).
Validate a document
if pa_val eq 'X'.
l_parser->set_validating( mode = if_ixml_parser=>co_validate ).
endif.
Parse the stream
if l_parser->parse( ) ne 0.
if l_parser->num_errors( ) ne 0.
data: parseerror type ref to if_ixml_parse_error,
str type string,
i type i,
count type i,
index type i.
count = l_parser->num_errors( ).
write: count, ' parse errors have occured:'.
index = 0.
while index < count.
parseerror = l_parser->get_error( index = index ).
i = parseerror->get_line( ).
write: 'line: ', i.
i = parseerror->get_column( ).
write: 'column: ', i.
str = parseerror->get_reason( ).
write: str.
index = index + 1.
endwhile.
endif.
endif.
Process the document
if l_parser->is_dom_generating( ) eq 'X'.
perform process_dom using l_document.
endif.
*& Form get_xml_table
form get_xml_table changing l_xml_table_size type i
l_xml_table type standard table.
Local variable declaration
data: l_len type i,
l_len2 type i,
l_tab type tsfixml,
l_content type string,
l_str1 type string,
c_conv TYPE REF TO cl_abap_conv_in_ce,
l_itab type table of string.
l_filename = pa_file.
upload a file from the client's workstation
call method cl_gui_frontend_services=>gui_upload
exporting
filename = l_filename
filetype = 'BIN'
importing
filelength = l_xml_table_size
changing
data_tab = l_xml_table
exceptions
others = 19.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
Writing the XML document to the screen
CLEAR l_str1.
LOOP AT l_xml_table INTO l_xml_line.
c_conv = cl_abap_conv_in_ce=>create( input = l_xml_line-data
*replacement = space ).
c_conv->read( IMPORTING data = l_content len = l_len ).
CONCATENATE l_str1 l_content INTO l_str1.
ENDLOOP.
l_str1 = l_str1+0(l_xml_table_size).
SPLIT l_str1 AT cl_abap_char_utilities=>cr_lf INTO TABLE l_itab.
WRITE: /.
WRITE: /' XML File'.
WRITE: /.
LOOP AT l_itab INTO l_str1.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>horizontal_tab
*IN
l_str1 WITH space.
WRITE: / l_str1.
ENDLOOP.
WRITE: /.
endform. "get_xml_table
*& Form process_dom
form process_dom using document type ref to if_ixml_document.
data: node type ref to if_ixml_node,
iterator type ref to if_ixml_node_iterator,
nodemap type ref to if_ixml_named_node_map,
attr type ref to if_ixml_node,
name type string,
prefix type string,
value type string,
indent type i,
count type i,
index type i.
data: name2 type string,
name_root type string,
node_parent type ref to if_ixml_node,
node_root type ref to if_ixml_node,
num_children type i.
node ?= document.
check not node is initial.
uline.
write: /.
write: /' DOM-TREE'.
write: /.
if node is initial. exit. endif.
create a node iterator
iterator = node->create_iterator( ).
get current node
node = iterator->get_next( ).
loop over all nodes
while not node is initial.
indent = node->get_height( ) * 2.
indent = indent + 20.
num_children = node->num_children( ).
case node->get_type( ).
when if_ixml_node=>co_node_element.
element node
name = node->get_name( ).
nodemap = node->get_attributes( ).
node_root = node->get_root( ).
name_root = node_root->get_name( ).
write: / 'ELEMENT :'.
write: at indent name color col_positive inverse.
write: 'NUM_CHILDREN:', num_children.
write: 'ROOT:', name_root.
node_parent = node->get_parent( ).
name2 = node_parent->get_name( ).
write: 'NAME2: ' , name2.
if not nodemap is initial.
attributes
count = nodemap->get_length( ).
do count times.
index = sy-index - 1.
attr = nodemap->get_item( index ).
name = attr->get_name( ).
prefix = attr->get_namespace_prefix( ).
value = attr->get_value( ).
write: / 'ATTRIBUTE:'.
write: at indent name color col_heading inverse, '=',
value color col_total inverse.
enddo.
endif.
when if_ixml_node=>co_node_text or
if_ixml_node=>co_node_cdata_section.
text node
value = node->get_value( ).
write: / 'VALUE :'.
mjprocha
node_parent = node->get_parent( ).
write: at indent value color col_group inverse.
name2 = node_parent->get_name( ).
write: 'NAME2: ' , name2.
endcase.
advance to next node
node = iterator->get_next( ).
endwhile.
endform. "process_dom -
How to find XSD file? XML to ABAP using XSLT convertor
Hi Gurus,
I am trying to convert an XML file to ABAP internal tables using an XSLT transformation. I used the code posted by Durairaj (XSLT program Y_XML_2_ITAB_SIMPLE as mentioned in the link: [Y_XML_2_ITAB_SIMPLE|Parse data to Internal Table;) and the code worked fine.
My XML file structure is different, and when I try to modify the code for my purposes I got stuck. While changing the XML file strings in the report, I am unable to replace the tag xsi:noNamespaceSchemaLocation="invoice_btm.xsd" correctly. I am also not sure what this file "invoice_btm.xsd" does and where it is stored. When I remove the tag, I get other errors and cannot proceed ahead.
Can you please advice as to how I should proceed? Also, where can I see the XSD file? can I add a XSD file for my own XML? Or, is there a way to eliminate the need for an XSD file altogether?
Thanks in advance.
Regards,
Shailesh.Hi guys,
Any help would be most helpful. Thanks again,
Hi guys,
Any ideas on this issue? Thanks again for your help.
Hi Naimesh,
Thanks for the quick reply. I am getting the error "The element abap was expected for the XML-ABAP transformation". I have replaced the following:
1) "INVOICES_BTM" with the string "ACCOUNT_INFO"
2) "INVOICE_BTM" with the string "ROOTNODE"
My XSLT:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
<xsl:template match="ACCOUNT_INFO">
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
<asx:values>
<OUTPUT>
<xsl:for-each select="ROOTNODE">
<items>
<INV_DATE>
<xsl:value-of select="INVOICE_HEAD/INVOICE_DATE"/>
</INV_DATE>
<INV_NO>
<xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/NUMBER"/>
</INV_NO>
<INV_EXT>
<xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/EXTENSION"/>
</INV_EXT>
<INV_SEQ>
<xsl:value-of select="INVOICE_HEAD/INVOICE_NUMBER/SEQUENCE"/>
</INV_SEQ>
</items>
</xsl:for-each>
</OUTPUT>
</asx:values>
</asx:abap>
</xsl:template>
</xsl:transform>
My XML program:
TYPES: BEGIN OF stru,
inv_date(10),
inv_no(50),
inv_ext(10),
inv_seq(10),
END OF stru.
DATA: outtab TYPE STANDARD TABLE OF stru .
DATA: xslt_error TYPE REF TO cx_xslt_exception,
xslt_message TYPE string .
DATA: xml_string TYPE string .
CLEAR xml_string .
CONCATENATE
'<?xml version="1.0" encoding="ISO-8859-1"?>'
'<ACCOUNT_INFO xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ROOTNODE.xsd">'
'<ROOTNODE>'
'<INVOICE_HEAD LANGUAGE="DE" DIRECT_DEBIT_QUALIFIER="NO">'
'<INVOICE_DATE>20040112</INVOICE_DATE>'
'<INVOICE_NUMBER>'
'<NUMBER>0306299999</NUMBER>'
'<EXTENSION>1</EXTENSION>'
'<SEQUENCE>01</SEQUENCE>'
'</INVOICE_NUMBER>'
'</INVOICE_HEAD>'
'</ROOTNODE>'
'<ROOTNODE>'
'<INVOICE_HEAD LANGUAGE="DE" DIRECT_DEBIT_QUALIFIER="NO">'
'<INVOICE_DATE>20040113</INVOICE_DATE>'
'<INVOICE_NUMBER>'
'<NUMBER>0306299888</NUMBER>'
'<EXTENSION>2</EXTENSION>'
'<SEQUENCE>02</SEQUENCE>'
'</INVOICE_NUMBER>'
'</INVOICE_HEAD>'
'</ROOTNODE>'
'</ACCOUNT_INFO>'
INTO xml_string .
TRY .
CALL TRANSFORMATION ('ZH2_XML_TRANS_I1')
SOURCE XML xml_string
RESULT output = outtab.
CATCH cx_xslt_exception INTO xslt_error.
xslt_message = xslt_error->get_text( ).
ENDTRY.
break-point.
Edited by: Shailesh S Kamath on Jan 16, 2012 2:17 PM
Edited by: Shailesh S Kamath on Jan 30, 2012 2:47 PM -
Read XML file into databased using stored procedure
I need to read an xml file into my database using a stored procedure. I looked at a couple of tutorials, but I am kind of lost and am looking for some guidance. I will eventually need to only pull a handfull of the data in based on the USER ID. Any help will be greatly appreciated. I have been given a schema file and an example file of how the data will me sent to me. The schema file is below:
<h1>Schema File</h1>
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by Turbo XML 2.4.1.100. Conforms to w3c http://www.w3.org/2001/XMLSchema-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xsd:element name="root">
<xsd:complexType />
</xsd:element>
<xsd:element name="Report">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Biller" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Biller">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="BillerName" />
<xsd:element ref="BillerIdNumber" />
<xsd:element ref="PartnerInfo" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="BillerName">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="BillerIdNumber">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="PartnerInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="PartnerName" />
<xsd:element ref="PartnerVenderNumber" />
<xsd:element ref="PartnerStreet01" />
<xsd:element ref="PartnerStreet02" />
<xsd:element ref="PartnerCity" />
<xsd:element ref="PartnerState" />
<xsd:element ref="PartnerZip" />
<xsd:element ref="PartnerCountry" />
<xsd:element ref="PartnerActive" />
<xsd:element ref="PartnerContactName" />
<xsd:element ref="PartnerEmailAddress" />
<xsd:element ref="PartnerContactPhone" />
<xsd:element ref="PartnerFaxNumber" />
<xsd:element ref="PartnerUpdateUser" />
<xsd:element ref="PartnerUpdateDate" />
<xsd:element ref="PartnerDocColor" />
<xsd:element ref="PartnerDocDistribution" />
<xsd:element ref="PartnerDocPrinting" />
<xsd:element ref="PartnerDocTiming" />
<xsd:element ref="Delivery" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PartnerName">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="PartnerVenderNumber">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="PartnerStreet01">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerStreet02">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerCity">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerState">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerZip">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerCountry">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerActive">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerContactName">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerEmailAddress">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerContactPhone">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerFaxNumber">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerUpdateUser">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerUpdateDate">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerDocColor">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerDocDistribution">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerDocPrinting">
<xsd:complexType />
</xsd:element>
<xsd:element name="PartnerDocTiming">
<xsd:complexType />
</xsd:element>
<xsd:element name="Delivery">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="DeliveryType" />
<xsd:element ref="DeliveryContactName" />
<xsd:choice>
<xsd:element ref="ReceivingStreet01" />
<xsd:element ref="ReceivingStreet02" />
<xsd:element ref="ReceivingCity" />
<xsd:element ref="ReceivingState" />
<xsd:element ref="ReceivingZip" />
<xsd:element ref="ReceivingCountry" />
<xsd:element ref="DeliveryEmailAddress" />
<xsd:element ref="DeliveryCompanyId" />
<xsd:element ref="DeliveryUserId" />
<xsd:element ref="DeliveryFormatType" />
<xsd:element ref="SecureType" />
<xsd:element ref="SecureQuestion" />
<xsd:element ref="SecureAnswer" />
<xsd:element ref="DeliveryFaxNumber" />
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryType">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryContactName">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryEmailAddress">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="SecureType">
<xsd:complexType />
</xsd:element>
<xsd:element name="SecureQuestion">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="SecureAnswer">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryFormatType">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryCompanyId">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryUserId">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="DeliveryFaxNumber">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="ReceivingStreet01">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="ReceivingStreet02">
<xsd:complexType />
</xsd:element>
<xsd:element name="ReceivingCity">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="ReceivingState">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="ReceivingZip">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
<xsd:element name="ReceivingCountry">
<xsd:complexType mixed="true">
<xsd:choice />
</xsd:complexType>
</xsd:element>
</xsd:schema>
<h1>Example File</h1>
<?xml version="1.0" encoding="utf-8"?>
<Report>
<Biller>
<BillerName>DONATO TEST BILLER</BillerName>
<BillerIdNumber>999999999</BillerIdNumber>
<PartnerInfo>
<PartnerName>TEST TRADING PARTNER</PartnerName>
<PartnerVenderNumber>999999999</PartnerVenderNumber>
<PartnerStreet01 />
<PartnerStreet02 />
<PartnerCity />
<PartnerState />
<PartnerZip />
<PartnerCountry />
<PartnerActive />
<PartnerContactName />
<PartnerEmailAddress />
<PartnerContactPhone />
<PartnerFaxNumber />
<PartnerUpdateUser />
<PartnerUpdateDate />
<PartnerDocColor />
<PartnerDocDistribution />
<PartnerDocPrinting />
<PartnerDocTiming />
<Delivery>
<DeliveryType>EMAIL</DeliveryType>
<DeliveryContactName>Kiran</DeliveryContactName>
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
</Delivery>
<Delivery>
<DeliveryType>SECURE</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<SecureType />
<SecureQuestion>Pet Name</SecureQuestion>
<SecureAnswer>040698de9bf14ef87d8cbaf46b8ecddc</SecureAnswer>
<DeliveryFormatType />
</Delivery>
<Delivery>
<DeliveryType>CEO</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<DeliveryCompanyId>WFADM618</DeliveryCompanyId>
<DeliveryUserId>PAULSEN</DeliveryUserId>
<DeliveryFormatType />
</Delivery>
<Delivery>
<DeliveryType>FAX</DeliveryType>
<DeliveryContactName>Kiran</DeliveryContactName>
<DeliveryFaxNumber>4807244340</DeliveryFaxNumber>
<DeliveryFormatType>PDF</DeliveryFormatType>
</Delivery>
<Delivery>
<DeliveryType>DOC</DeliveryType>
<DeliveryContactName />
<ReceivingStreet01>2600 South Price Road</ReceivingStreet01>
<ReceivingStreet02 />
<ReceivingCity>Chandler</ReceivingCity>
<ReceivingState>AZ</ReceivingState>
<ReceivingZip>85248</ReceivingZip>
<ReceivingCountry>United States</ReceivingCountry>
</Delivery>
<Delivery>
<DeliveryType>DR</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<DeliveryCompanyId>WFADM618</DeliveryCompanyId>
<DeliveryUserId>PAULSEN</DeliveryUserId>
<DeliveryFormatType />
</Delivery>
</PartnerInfo>
</Biller>
</Report>Try with a XMLTABLE function
For example to Extract BillerName and BillerID
with t as(select xmltype( '<?xml version="1.0" encoding="utf-8"?>
<Report>
<Biller>
<BillerName>DONATO TEST BILLER</BillerName>
<BillerIdNumber>999999999</BillerIdNumber>
<PartnerInfo>
<PartnerName>TEST TRADING PARTNER</PartnerName>
<PartnerVenderNumber>999999999</PartnerVenderNumber>
<PartnerStreet01 />
<PartnerStreet02 />
<PartnerCity />
<PartnerState />
<PartnerZip />
<PartnerCountry />
<PartnerActive />
<PartnerContactName />
<PartnerEmailAddress />
<PartnerContactPhone />
<PartnerFaxNumber />
<PartnerUpdateUser />
<PartnerUpdateDate />
<PartnerDocColor />
<PartnerDocDistribution />
<PartnerDocPrinting />
<PartnerDocTiming />
<Delivery>
<DeliveryType>EMAIL</DeliveryType>
<DeliveryContactName>Kiran</DeliveryContactName>
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
</Delivery>
<Delivery>
<DeliveryType>SECURE</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<SecureType />
<SecureQuestion>Pet Name</SecureQuestion>
<SecureAnswer>040698de9bf14ef87d8cbaf46b8ecddc</SecureAnswer>
<DeliveryFormatType />
</Delivery>
<Delivery>
<DeliveryType>CEO</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<DeliveryCompanyId>WFADM618</DeliveryCompanyId>
<DeliveryUserId>PAULSEN</DeliveryUserId>
<DeliveryFormatType />
</Delivery>
<Delivery>
<DeliveryType>FAX</DeliveryType>
<DeliveryContactName>Kiran</DeliveryContactName>
<DeliveryFaxNumber>4807244340</DeliveryFaxNumber>
<DeliveryFormatType>PDF</DeliveryFormatType>
</Delivery>
<Delivery>
<DeliveryType>DOC</DeliveryType>
<DeliveryContactName />
<ReceivingStreet01>2600 South Price Road</ReceivingStreet01>
<ReceivingStreet02 />
<ReceivingCity>Chandler</ReceivingCity>
<ReceivingState>AZ</ReceivingState>
<ReceivingZip>85248</ReceivingZip>
<ReceivingCountry>United States</ReceivingCountry>
</Delivery>
<Delivery>
<DeliveryType>DR</DeliveryType>
<DeliveryContactName />
<DeliveryEmailAddress>[email protected]</DeliveryEmailAddress>
<DeliveryCompanyId>WFADM618</DeliveryCompanyId>
<DeliveryUserId>PAULSEN</DeliveryUserId>
<DeliveryFormatType />
</Delivery>
</PartnerInfo>
</Biller>
</Report>')xml from dual)
select q.* from t,xmltable('/Report' passing t.xml columns
BillerName varchar2(20) PATH
'/Report//Biller/BillerName')q
BILLERNAME BILLERID
DONATO TEST BILLER 999999999 -
Read SQL database by ABAP using OLE
Is somebody using abap to get a sql recordset?
I can connect to SQL and get a recordset but I can not retrieve data from the recordset.
I think this syntax is not correct:
<
data: records type P.
get property of field 'Value' = records.
>
is someone can help me?
thanks.
report chap2801.
include ole2incl.
data: con type ole2_object,
rs type ole2_object,
field type ole2_object.
* creating an object
create object con 'adodb.connection'.
check sy-subrc = 0.
* setting properties
set property of con 'connectionstring' = 'dsn=Northwind'.
* calling methods
call method of con 'open'.
check sy-subrc = 0.
create object rs 'adodb.recordset'.
check sy-subrc = 0.
set property of rs 'activeconnection' = con.
call method of rs 'open'
exporting #1 = 'select count(*) as a from Products'.
check sy-subrc = 0.
get property of rs 'fields' = field exporting #1 = 0.
data: records type P.
*Get number of records
get property of field 'Value' = records.
free object con.
free object rs.
free object field.I think this is what you need.
http://sqlage.blogspot.com/2013/11/ssis-read-excel-file-after-skipping-few.html
http://www.mssqltips.com/sqlservertip/2176/dynamically-find-where-table-data-starts-in-excel-using-ssis/
http://beyondrelational.com/modules/24/syndicated/398/Posts/9953/ssis-read-and-export-excel-data-from-nth-row.aspx
Knowledge is the only thing that I can give you, and still retain, and we are both better off for it. -
SOAP scenario "Do not use SOAP Envelope" check problems
Hi Gurus!
I'm again here.
I've an scenario with SOAP Receiver, the WS do I need consume, looks like:
POST /SumTotalws1/services/Authentication.asmx HTTP/1.1
Host: xxx.xxx.xxx.xxx
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/Login"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Login xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/">
<credentials>
<Username>string</Username>
<Passcode>string</Passcode>
<AuthenticationType>NotSpecified or Anonymous or NTAuthentication or Passport or LDAP</AuthenticationType>
<AccountType>NotSpecified or WebService or WebUI</AccountType>
</credentials>
</Login>
</soap:Body>
</soap:Envelope>
but the response looks like:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<UserToken xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/">
<Value>string</Value>
</UserToken>
</soap:Header>
<soap:Body>
<LoginResponse xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/" />
</soap:Body>
</soap:Envelope>
when I create my communication channel with "Do not Use SOAP Envelope" uncheck it, all run ok, but I only get in response message "<LoginResponse>" and I need <UserToken>
When I check it "Do not use SOAP Envelope" and I use XSLT mapping to add SOAP Env to request message, I get response message empty.
I tried the web Service with the message that I obtained from de XSLT mapping in the program SOAPUI. I get ok response with the <UserToken> value.
some idea to solve this problem??
Thanks in advance.
Edited by: KrlosRios on Sep 30, 2011 8:07 PMHi, thanks for your answer.
Can I use AXIS to execute any WS?
The WS that I tried execute looks like this:
POST /xxxx/services/Authentication.asmx HTTP/1.1
Host: xxx.240.106.39
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://xxx/Authentication/Login"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Login xmlns="http://xxxxAuthentication/">
<credentials>
<Username>string</Username>
<Passcode>string</Passcode>
<AuthenticationType>NotSpecified or Anonymous or NTAuthentication or Passport or LDAP</AuthenticationType>
<AccountType>NotSpecified or WebService or WebUI</AccountType>
</credentials>
</Login>
</soap:Body>
</soap:Envelope>
and for the response:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<UserToken xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/">
<Value>string</Value>
</UserToken>
</soap:Header>
<soap:Body>
<LoginResponse xmlns="http://www.sumtotalsystems.com/sumtotal7/sumtotalws/Authentication/"></LoginResponse>
</soap:Body>
</soap:Envelope>
also I found in Trace node in SXI_MONITOR, jus before execute response mapping :
<Trace level="1" type="B" name="PLSRV_MAPPING_RESPONSE"></Trace><!-- ************************************ -->
<Trace level="1" type="Timestamp">2011-11-01T19:33:34Z UTC-6 Start of pipeline service processing PLSRVID= PLSRV_MAPPING_RESPONSE</Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
<Trace level="3" type="T">Calling pipeline service: PLSRV_MAPPING_RESPONSE</Trace>
<Trace level="3" type="T">Reading Pipeline-Service specification... </Trace>
<Trace level="3" type="T">PLSRVTYPE = </Trace>
<Trace level="3" type="T">ADRESSMOD = LOCAL</Trace>
<Trace level="3" type="T">P_CLASS = CL_MAPPING_XMS_PLSRV3</Trace>
<Trace level="3" type="T">P_IFNAME = IF_XMS_PLSRV</Trace>
<Trace level="3" type="T">P_METHOD = ENTER_PLSRV</Trace>
<Trace level="3" type="T"> </Trace>
<Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL"></Trace><!-- ************************************ -->
<Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV"></Trace><!-- ************************************ -->
<Trace level="2" type="T">......attachment XI_Context not found </Trace>
<Trace level="3" type="T">Das Mapping wurde bereits in der Interface-Ermittlung bestimmt. </Trace>
<Trace level="3" type="T">Objekt-Id des Interface-Mappings 8594D8C2E6DA3C008F45B112FFCC86B8 </Trace>
<Trace level="3" type="T">Versions-Id des Interface-Mappings C3BB8FB0A1D511E0A688E9FCB9F06E16 </Trace>
<Trace level="1" type="T">Interface-Mapping http://xxxxx.net/pi/lms/Authentication OM_LMS_Authentication </Trace>
<Trace level="3" type="T">Mapping-Schritte 1 XSLT Response_LMS_Auth5 </Trace>
<Trace level="3" type="T">MTOM-Attachments werden nicht in die Payload überführt. </Trace>
<Trace level="1" type="T">Payload is empty. </Trace>
<Trace level="3" type="T">Dynamische Konfiguration ist leer. </Trace>
<Trace level="2" type="T">Modus 0 </Trace>
<Trace level="2" type="T">Call XSLT processor with stylsheet Response_LMS_Auth5.xsl. </Trace>
<Trace level="3" type="T">Method fatalError called, terminate transformation, because of
Thrown:
javax.xml.transform.TransformerException: java.io.IOException: Parsing an empty source. Root element expected!
at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:250)
Say Payload is empty.
and in left directory tree, not exist "payload" node, only existe SOAP Body and in "Manifest" node looks like this:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!-- XML Validation Outbound Channel Response -->
<SAP:Manifest wsu:Id="wsuid-manifest-5CABE13F5C59AB7FE10000000A1551F7" xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:wsu="http://www.docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<SAP:Payload xlink:href="cid:att-60c3078b066911e1bc1500000093b25a @sap.com">
<SAP:Name>MainAttachment</SAP:Name><
SAP:Description>Main document</SAP:Description>
<SAP:Type>Application</SAP:Type></SAP:Payload>
</SAP:Manifest>
Thanks for your help. -
Error with Do Not use SOAP envelope
All,
I used the do not send SOAP envelope option in the SOAP receiver adapter.
Instead of XSLT, I used JAVA mapping to create the entire SOAP message ( Am more comfortable with Java and this is just a trial) , and this is the output of my java mapping with the SOAP envelope created,
<i><?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Header></soap:Header><soap:Body><ns1:GetQuote xmlns:ns1="http://www.webserviceX.NET/"><ns1:symbol>SAP</ns1:symbol></ns1:GetQuote></soap:Body></soap:Envelope></i>
Am using the STOCK Quote for testing purposes and this is the error I am getting when testing my interface,
<i><faultstring>System.Web.Services.Protocols.SoapException: Server found request content type to be '', but expected 'text/xml'. at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.Invoke() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()</faultstring></i>
Any directions / inputs on how to resolve this issue?
Regards,
BhaveshHenrique,
Tried various permutations~~ The only new error / progress seems to be for this,
SOAPAction "http://www.webserviceX.NET/GetQuote"
This is giving me an error ,
<i>HTTP server code 400 reason Bad Request explanation <h1>Bad Request (Invalid Header Name)</h1></i>
Also, tried by adding the Colon after SOAPAction,
SOAPAction: "http://www.webserviceX.NET/GetQuote"
Same error
Final thing i guess is to make SOAPAction all small as soapaction and check if it works. Will let you know.
Regards,
Bhavesh -
Transform payload to SOAP message using XSLT
Hello,
I'm working with e-invoice for Finland (called Finvoice) and is supposed to send a soap message as a file via file/ftp adapter.
The output from SAP is an INVOIC idoc that is mapped to a given output structure. This works fine.
The soap envelope is created via xslt transformation.
The Envelope is created correctly but I'm struggling with how to add the payload to the message. It needs to look as shown below, (I'm just showing the essential part).
My problem is that I don't know how to add the doctype part via xslt:
<?xml version="1.0" encoding="ISO-8859-15"?>
<!DOCTYPE Finvoice SYSTEM "Finvoice.dtd">
I get validation errors when adding this in the xsl. The content of the payload looks good.
Does anyone know how this can be solved?
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<eb:Manifest eb:id="Manifest" eb:version="2.0">
<eb:Reference eb:id="Finvoice" xlink:href="1017000018">
<eb:schema eb:location="http://www.pankkiyhdistys.fi/verkkolasku/finvoice/finvoice.xsd" eb:version="2.0"/>
</eb:Reference>
</eb:Manifest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<?xml version="1.0" encoding="ISO-8859-15"?>
<!DOCTYPE Finvoice SYSTEM "Finvoice.dtd">
<?xml-stylesheet type="text/xsl" href="Finvoice.xsl"?>
<Finvoice Version="1.2">
<SellerPartyDetails>
<SellerPartyIdentifier>SellerPartyIdentifier23456789012345</SellerPartyIdentifier>
<SellerOrganisationName>SellerOrganisationName3456789012345</SellerOrganisationName>
// Best regards HanshI,
How to add the the below soap frame thru XSLT mapping.
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd">
<SOAP-ENV:Header>
<eb:MessageHeader xmlns:eb="http://www.oasis-open.org/committees/ebxml-msg/schema/msg-header-2_0.xsd" SOAP-ENV:mustUnderstand="1" eb:version="2.0">
<eb:From>
<eb:PartyId>0037123456678</eb:PartyId>
<eb:Role>Sender</eb:Role>
</eb:From>
<eb:From>
<eb:PartyId>NDEAFIHH</eb:PartyId>
<eb:Role>Intermediator</eb:Role>
</eb:From>
<eb:To>
<eb:PartyId>FI2757800750155448</eb:PartyId>
<eb:Role>Receiver</eb:Role>
</eb:To>
<eb:To>
<eb:PartyId>OKOYFIHH</eb:PartyId>
<eb:Role>Intermediator</eb:Role>
</eb:To>
<eb:CPAId>yoursandmycpa</eb:CPAId>
<eb:ConversationId/>
<eb:Service>Routing</eb:Service>
<eb:Action>ProcessInvoice</eb:Action>
<eb:MessageData>
<eb:MessageId>20081228-010142</eb:MessageId>
<eb:Timestamp>2008-12-28T01:01:42+03:00</eb:Timestamp>
<eb:RefToMessageId/>
<eb:RefToMessageId>XS1027.LPTF82/268</eb:RefToMessageId>
</eb:MessageData>
</eb:MessageHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<eb:Manifest eb:id="Manifest" eb:version="2.0">
<eb:Reference eb:id="Finvoice" xlink:href="XS1027.LPTF82/268">
<eb:Schema eb:location=" http://www.finvoice.info/yrityksen_verkkolasku/ladattavat/Tekniset tiedostot/schemat/Finvoice.xsd" eb:version="2.0"/>
</eb:Reference>
</eb:Manifest>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
<?xml version="1.0" encoding="ISO-8859-15"?>
<!DOCTYPE Finvoice SYSTEM "Finvoice.dtd">
<?xml-stylesheet type="text/xsl" href="Finvoice.xsl"?>
Thanks and Regards,
Hymavathi -
Reading Webservice information from ABAP Program
Hi All,
How to read a webservice information from a ABAP program ?
Are there any webservices available in ABAP which can do this .
Gopal.Hi,
The following code will call the web service and fill the data into internal table which was received from the Web service. This code will send & Receive the data from ABAP to Webservice.
Change the Header detail as per your Webservice.
REPORT ZWORKORDER.
TYPES: BEGIN OF OUTTAB1 ,
JOBCODE(20),
COMPONENTCODE(20),
ACCURATEHOURS(20),
ACCURATECOST(20),
LENGTH TYPE I,
END OF OUTTAB1 .
DATA: OUTTAB TYPE TABLE OF OUTTAB1.
DATA: TAB TYPE OUTTAB1.
DATA: WF_O LIKE LINE OF OUTTAB .
DATA: XSLT_ERR TYPE REF TO CX_XSLT_EXCEPTION .
DATA: RLENGTH TYPE I,
TXLEN TYPE STRING .
DATA: HTTP_CLIENT TYPE REF TO IF_HTTP_CLIENT .
DATA: WF_STRING TYPE STRING .
DATA: WF_STRING1 TYPE STRING .
DATA: WF_PROXY TYPE STRING ,
WF_PORT TYPE STRING .
CLEAR WF_STRING .
Form the input string to send the Input Data to Web service.
CONCATENATE
'<?xml version="1.0" encoding="utf-8"?>'
'<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
' <soap:Body>'
' <GetWorkOrder xmlns="http://*******erica.net/webservices/">'
' <nWorkOrder>2</nWorkOrder>'
' <nDistributorCode>4871</nDistributorCode>'
' <model>HM400</model>'
' <type>1 </type>'
' </GetWorkOrder>'
' </soap:Body>'
'</soap:Envelope>'
INTO WF_STRING .
CLEAR :RLENGTH , TXLEN .
RLENGTH = STRLEN( WF_STRING ) .
MOVE: RLENGTH TO TXLEN .
CLEAR: WF_PROXY, WF_PORT .
CALL METHOD CL_HTTP_CLIENT=>CREATE
EXPORTING
HOST = '192.168.1.41' "'http://****merica.net/webservices'
SERVICE = '8080'
SCHEME = '1'
IMPORTING
CLIENT = HTTP_CLIENT.
HTTP_CLIENT->PROPERTYTYPE_LOGON_POPUP = HTTP_CLIENT->CO_DISABLED.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_method'
VALUE = 'POST'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~server_protocol'
VALUE = 'HTTP/1.1'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = '~request_uri'
VALUE = '/service/accurate/workorder.asmx?'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Type'
VALUE = 'text/xml; charset=utf-8'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'Content-Length'
VALUE = TXLEN.
CALL METHOD HTTP_CLIENT->REQUEST->SET_HEADER_FIELD
EXPORTING
NAME = 'SOAPAction'
VALUE = 'http://********merica.net/webservices/GetWorkOrder'.
CALL METHOD HTTP_CLIENT->REQUEST->SET_CDATA
EXPORTING
DATA = WF_STRING
OFFSET = 0
LENGTH = RLENGTH.
Send the Input Data to Web service.
CALL METHOD HTTP_CLIENT->SEND
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2.
Receive the Input from Web Serice.
CALL METHOD HTTP_CLIENT->RECEIVE
EXCEPTIONS
HTTP_COMMUNICATION_FAILURE = 1
HTTP_INVALID_STATE = 2
HTTP_PROCESSING_FAILED = 3.
CLEAR WF_STRING1 .
WF_STRING1 = HTTP_CLIENT->RESPONSE->GET_CDATA( ).
DATA: LENGTH TYPE I.
LENGTH = STRLEN( WF_STRING1 ).
DATA: VALUE_FIELD TYPE NAME_KOMP.
DATA: VALUE TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_CONVERTED_DATA>.
DATA: TAB1 TYPE TABLE OF STRING.
DATA: FROM_LENGTH TYPE I VALUE 1.
DATA: TO_LENGTH TYPE I.
DATA: DIFF TYPE I.
DATA: START TYPE I VALUE 1.
DO.
JOBCODE.
SEARCH WF_STRING1 FOR 'JobCode=' . "STARTING AT START .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 8.
SEARCH WF_STRING1 FOR 'JobDescription=' ."STARTING AT START ..
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-JOBCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
COMPONENT CODE
SEARCH WF_STRING1 FOR 'ComponentCode=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'ComponentDescription=' .
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-COMPONENTCODE.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
AccurateHours
SEARCH WF_STRING1 FOR 'AccurateHours=' .
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
FROM_LENGTH = SY-FDPOS .
FROM_LENGTH = FROM_LENGTH + 14.
SEARCH WF_STRING1 FOR 'AccurateCost='.
TO_LENGTH = SY-FDPOS .
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATEHOURS.
TO_LENGTH = DIFF + TO_LENGTH.
AccurateCost
SEARCH WF_STRING1 FOR 'AccurateCost='.
FROM_LENGTH = SY-FDPOS.
FROM_LENGTH = FROM_LENGTH + 13.
SEARCH WF_STRING1 FOR '/>'.
TO_LENGTH = SY-FDPOS.
DIFF = TO_LENGTH - FROM_LENGTH .
MOVE WF_STRING1+FROM_LENGTH(DIFF) TO TAB-ACCURATECOST.
TO_LENGTH = DIFF + TO_LENGTH.
SHIFT WF_STRING1 BY TO_LENGTH PLACES.
APPEND TAB TO OUTTAB.
ENDDO.
WRITE: (10) 'JOBCODE'.
WRITE (20) 'COMPONENTCODE'.
WRITE (30) 'ACCURATEHOURS'.
WRITE (40) 'ACCURATECOST'.
LOOP AT OUTTAB INTO TAB.
WRITE:/ TAB-JOBCODE .
WRITE (20) TAB-COMPONENTCODE.
WRITE (30) TAB-ACCURATEHOURS.
WRITE (40) TAB-ACCURATECOST.
ENDLOOP .
It is better to create a proxy, it then puts a level of abstraction between in that coding. All you need to do is then access the proxy class.
Besides that i think you can do it by configuring the ITS and calling the webservice by means of using BSP applications in ABAP
<b>I believe you need to create a proxy in order to consume your web service.
http://help.sap.com/saphelp_nw2004s/helpdata/en/bf/d005244e9d1d4d92b2fe7935556b4c/frameset.htm
Reward points</b>
Regards -
Access to XI SOAP envelope - How to?
Hello there,
Is it possible to get access and manipulate the Standard SOAP envelope headers internally used by XI? Does XI supports this functionality/customization?
I would like to enrich/enhance the XI SOAP headers with some own context data to be used later for end-to-end monitoring outside XI.
Thanks for your feedback.
Cheers,
R.Thanks Anupam and Jenny for your kind response.
I am wrking on PI 7.0. I dnt want soap envelope in payload so I have already checked the 'Do not create response' button still in response message I am getting the soap envelope.
I can use java or xslt but the the structure is not able to read the soap envelope. To read it I need to create same data structure which matches with the soap envelope.
this is the response I am getting through webservice.
<?xml version="1.0" encoding="UTF-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:enterprise.soap.sforce.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<createResponse>
<result>
<errors>
<message>Config Master Record Type Name value is missing</message>
<statusCode>FIELD_CUSTOM_VALIDATION_EXCEPTION</statusCode>
</errors>
<id xsi:nil="true" />
<success>false</success>
</result>
</createResponse>
</soapenv:Body>
</soapenv:Envelope>
And this is the wsdl structure
<?xml version="1.0" encoding="UTF-8"?>
<ns0:createResponse xmlns:ns0="urn:enterprise.soap.sforce.com">
<ns0:result>
<ns0:errors>
<ns0:fields/>
<ns0:message/>
<ns0:statusCode/>
</ns0:errors>
<ns0:id/>
<ns0:success/>
</ns0:result>
</ns0:createResponse>
Because of the soap envelope it is not able to read it. I have to create new structure.
Experts please help me to solve this problem.
Regards,
Jayesh. -
Apache Axis Soap Envelope soap:Header
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<DataHeader xmlns="http://mySite/">
<HeaderUsername>string</HeaderUsername>
<HeaderPassword>string</HeaderPassword>
</DataExportHeader>
</soap:Header>
<soap:Body>
<ReturnDataList xmlns="http://mySite/">
<functionName>getAll</functionName>
</ReturnDataList>
</soap:Body>
</soap:Envelope>
I am using Apache Axis, how can i embed DataHeader{HeaderUsername, HeaderPassword} in my request? Thanks,I can generate the code from .wsdl by using JAP+RPC, but there is not Header class in the code. Any help?
-
Hi
we have requirement that we need to send the request message to 3rd party system (invoked using MQ) as SOAP envelope
we have used Invoke activity and added header value in Headers in invoke activity but our 3rd party system is unable to get it as SOAP format it is only getting SOAP body and SOAP header is not getting passedYou can find "HOWTO: Consume Webservices via PL/SQL" at http://www.liberidu.com/blog/?p=1249. It shows the basics for sending a SOAP message to a remote WS and getting the response back. It also links to another example in the OTN forums you can use as a reference point.
Hope that helps. -
I am facing a problem while using XSLT. The Problem is that I have a Structue and corresponding internal table defined as follows.
TYPES:BEGIN OF X1,
TW(4) TYPE c,
TX TYPE int1,
TY(1) TYPE c,
TZ(32) TYPE X,
TV(32) TYPE C,
A TYPE CHAR32,
B TYPE CHAR32,
C TYPE CHAR32,
D TYPE CHAR10,
E TYPE INT4,
END OF X1.
DATA:INT_TABLE TYPE TABLE OF X1.
Now When I am Transforming this into XML using XSLT the attributes are being sorted on the field names as follows.

Is there any way for getting the attributes in the same order as we specify in the Types declaration. Please kindly help in solving this.Hi,
You will most probably get an answer in the XI forum.
https://www.sdn.sap.com/sdn/collaboration.sdn?node=linkFnode1-6&contenttype=url&content=https://Process Integration (PI) & SOA Middleware
regards
Aveek -
Hi,
i have a question concerning SOAP envelope.
(We run on XI30 SP19.)
A message sent to SOAP adapter with
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-SOAP-Envelope">
runs on error:
Caused by: org.apache.xmlbeans.XmlException: error: The document is not a Envelope@http://www.w3.org/2003/05/soap-SOAP-Envelope: document element namespace mismatch expected "http://www.w3.org/2003/05/soap-SOAP-Envelope" got http://schemas.xmlsoap.org/soap/envelope/
If i use
<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">
it works.
Can anyone point me to a ressource which describes the XI requirements to the SOAP envelope?
What is/isnt allowed for XI in special?
Thank you very much in advance.
Michael
Edited by: Michael Höcht on Oct 28, 2008 2:56 PMHmm, based on error it looks like service provider expecting some security headers. Are you able to test from other utility soapUI or browser?
Regards,
Chintan
Maybe you are looking for
-
Can you place text from a word document using data merge?
I'm working with a charity that is giving away scholarships/grants. I need to create a ducument that pulls in various application data plus their submitted essay (docx format). I would like to do this via data merge but cannot find any reference if i
-
IPod doesn't appear in iTunes 7 or on my desktop
After recieving my new MacBook Pro, and upgrading to iTunes 7.02, transferring all of my music and files from my PC to my new Mac, and then restoring the iPod (5th Gen, 60gb) and syncing it to the new iTunes (big mistake, had i known this earlier...)
-
SAP_COLLECTOR_FOR_PERFMONITOR - canceled only at specific time
Hi All, Job SAP_COLLECTOR_FOR_PERFMONITOR is scheduled hourly on ECC system. All jobs are finished successfully in a day but only at specific time its getting failed. Recently we have upgrade the support package of SAP_BASIS & SAP_ABP from 05 to 13.
-
2LIS_11_V_ITM: Adding field AUART
The extractor 2LIS_11_V_ITM does not contain the field AUART and this field can not be added via LBWE. The field is mentioned in MCVBAK but in table TMCEXCFS the state is 'F', indicating that filling is not allowed. I do not understand why a field is
-
Migrating Wiki Server 10.8.5 to 10.9 Mavericks
Hello all, i'm trying so hard to complete this migration i followed this instructions http://support.apple.com/kb/HT5697 but when i came to the point sudo serveradmin start postgres_server i get the following error: postgres_server:error = "CANNOT_ST