cancel
Showing results for 
Search instead for 
Did you mean: 

making an Header in the SOAP Req

Former Member
0 Kudos

hello

I have RFC to SOAP interface.

the thing is that in the WSDL I recieve an header and a body, and I would like to put in each part different data, but still that it will all go out to the SOAP as one XML with Header DATA and BODY DATA.

any ideas?

Kfir

Accepted Solutions (1)

Accepted Solutions (1)

santhosh_kumarv
Active Contributor
0 Kudos

Hi,

The using the graphical mapping you can only view the SOAP Body and map the values to it.

To populate the SOAP message with Header and Body you can use the XSLT Mappping to create the required SOAP request message.

Have a look at my reply in tis thread

Thanks

SaNv...

Answers (13)

Answers (13)

Former Member
0 Kudos

Hi

I would like to thank Daniel for his help.

the solution does work.

for a quick brief, you will need in the communication channel of the reciever to mark "Do Not Use SOAP Envelop" check box. also, to write both the XSD (one to make the envelop, and the second to enter the DATA into the envelope in the correct place.

Thanks

Kfir

Former Member
0 Kudos

the email adress is:

kfirg

and after the @

it is migdal-group.co.il

or

kfir.goldwaser

and after the @

it is ness.com

Kfir

Former Member
0 Kudos

Daniel

before I continue, I would like to thatnk you for your sencire help.

for my problem, the out put of the schema (which I am using what you gave me) is exactly as you wrote.

the thing is that in the out put, I would like the header section (AutoHeader) I would like to configure it to be in the SOAP Header, and the body part to be in the SOAP Body section.

I thought maybe to use the check box of "Keep Headers" or something, but I dont see where I configre the header section of the SOAP when it leaves the XI.

(I have a print screen of how it should be and how it turn out, just can not add it to the message (or dont know how to add it)

Kfir

Former Member
0 Kudos

Hi,

If you provide me with your email adress I will sent u mine. Then u can send me the picture your referring to...

Regards,

Daniel

Former Member
0 Kudos

the out put of the message, is that all the structure from both the xsd appear in the SOAP envelope body. the HEADER of the SOAP is ampty.

the output SOAP message.

header

body

envelopeservice

header

authheader

body

vendorpayment_MT

.......

(I have a print screen of the out put, just can not attach it to the message)

Former Member
0 Kudos

Hi,

Ok. Are you using the 2 sample XSD's provided earlier in this conversation or have you made your own?

Since the Header and Body of the Envelope are located in the same schema it does not make sence for you to only be able to see one of then in the payload (if your using the samples provided).

I would expect your payload to have a structure like:


<?xml version="1.0" encoding="UTF-8"?>
<ns0:Envelope xmlns:ns0="http://schemas.xmlsoap.org/soap/envelope/">
	<ns0:Header>
		<ns1:AuthHeader xmlns:ns1="http://projectName/VendorPaymentsService">
			<TargetService>a</TargetService>
			<OriginatorName>b</OriginatorName>
			<OriginatorIdentity>c</OriginatorIdentity>
			<OriginatorEntity>d</OriginatorEntity>
			<AuthMechanism>e</AuthMechanism>
			<Token>f</Token>
		</ns1:AuthHeader>
	</ns0:Header>
	<ns0:Body>
		<ns1:VendorPayment_MT xmlns:ns1="http://projectName/VendorPaymentsService">
			<Safe>
				<SafeName>g</SafeName>
				<UserName>h</UserName>
				<Password>i</Password>
				<SafePath>j</SafePath>
				<FileName>k</FileName>
			</Safe>
			<Data>
				<Item>
					<ComponyNum>l</ComponyNum>
					<LawSuiteNum>m</LawSuiteNum>
					<PaymentNum>n</PaymentNum>
					<SystemType>o</SystemType>
				</Item>
			</Data>
		</ns1:VendorPayment_MT>
	</ns0:Body>
</ns0:Envelope>

Best Regards,

Daniel

Edited by: Daniel Hans Engsig-Karup on Nov 3, 2008 8:28 AM

Former Member
0 Kudos

I do have the envelope and the structure looks fine.

the thing is, that the structure all turn out in the body of the soap, and I want the header part to appear in the soap header.

any suggestions?

Kfir

Former Member
0 Kudos

Hi,

You need to be more explicit. You say the structure is fine - you can see the Envelope.

But when u use the Envelope in your message mapping you only see the Envelope and Body - not the Header?

Are u using the 2 sample xsd's mentioned previously as is or did you create your own?

Best Regards,

Daniel

Former Member
0 Kudos

I tried this also, but in the way you wrote it does not suppose any structure in the Message Interface

Former Member
0 Kudos

Hi,

I'm not sure of where the problem is in what your doing. All I can say is that what I propose works. And it works just fine with the 2 Schema files mentioned earlier as long as you remember to correct the import statement in schema 1 and also remember to write the file name of schema 2 in the source part of the external definition.

Next you can in your message interface choose to browse for messages and will be able to choose Envelope. In your mapping the same applies.

Both data and message types are irrelevant when using the external definitions.

Best Regards,

Daniel

Former Member
0 Kudos

thanks.

I made the 2 files

1 - envelop

2 - HeaderAndBody

I am trying to make a DT with name vendorPayment_DT with import XSD of file 1

and recieve this error:

Cannot load schema with the target namespace http://schemas.xmlsoap.org/soap/envelope/ to namespace http://projectName/VendorPaymentsService Schema to be handled does not contain a definition of type vendorPayment_DT

the XSD of file 1 is:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://projectName/VendorPaymentsService" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/">

<xs:import namespace="http://projectName/VendorPaymentsService" schemaLocation="headerAndBodyFromWSDL.xsd"/>

<xs:element name="EnvelopeService" type="SOAP:EnvelopeType"/>

<xs:complexType name="EnvelopeType">

<xs:sequence>

<xs:element ref="SOAP:Header"/>

<xs:element ref="SOAP:Body"/>

</xs:sequence>

</xs:complexType>

<xs:element name="Body" type="SOAP:BodyType"/>

<xs:complexType name="BodyType">

<xs:sequence>

<xs:element ref="ns1:VendorPayment_MT"/>

</xs:sequence>

</xs:complexType>

<xs:element name="Header" type="SOAP:HeaderType"/>

<xs:complexType name="HeaderType">

<xs:sequence>

<xs:element ref="ns1:AuthHeader"/>

</xs:sequence>

</xs:complexType>

</xs:schema>

and I rec

Former Member
0 Kudos

Hi,

You cannot reference an external definition from a datatype.

You are supposed to use the Schema 1 directly in your message interface and also your message mapping.

Best Regards,

Daniel

Former Member
0 Kudos

I am abit new at it, but when I copy/paste both the schemas that you gave me, to 1 XSD file, it is not valid.

do I need to add/change something?

Kfir

Former Member
0 Kudos

Hi,

For the sample schemas I provided they should be put in seperate files. 1 schema = 1 file.

Also remember to point to the correct file name in the import statement in schema 1.

Also remember to set the source of the external definition of schema 2 in the XI repository - otherwise XI will be unable to reference schema 2 from schema 1.

Best Regards,

Daniel

Former Member
0 Kudos

Thanks for the details answer.

but still, when I put it all in the original WSDL, as 2 defferent schemas, and import the WSDL to the external definitions, in the mapping section, I dont see the Envelope element (that include in it the body and the header) but still see 2 different types - 1 is the body(name VendorPayment_MT), 2 is the header(name AuthHeader)

what am I doing wrong or missing?

Thanks

Kfir

Former Member
0 Kudos

Hi,

If you choose to modify the original WSDL by adding to the schema section you'll also need to modify the input and output.

If you choose to go for a single message containing the entire SOAP Envelope (header and body) then I recommend you not manipulating the original WSDL but insted use the XSD's seperately.

You then just upload the XSD's as external definitions and not the WSDL.

Best Regards,

Daniel

Former Member
0 Kudos

I am sorry but I didnt under stand exactly what to do.

again, in the external definition I impor the WSDL, and when I try to map it gives me different map for header and for the body.

(the wsdl is attached below).

I didnt under stand how to configure the WSDL, and to do the mapping so in the output I will recieve the correct data in the header and the correct data in the body.

besdie the wsdl and the mapping, is there any other configured or develop need to be done?

<?xml version="1.0" encoding="UTF-8"?>

<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by David (Migdal) -->

<wsdl:definitions xmlns:p1="http://projectName/VendorPaymentsService" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" name="VendorPayment_IB" targetNamespace="http://projectName/VendorPaymentsService">

<wsdl:types>

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://projectName/VendorPaymentsService" targetNamespace="http://projectName/VendorPaymentsService">

<xsd:element name="AuthHeader">

<xsd:complexType id="AccountDetails">

<xsd:sequence>

<xsd:element name="TargetService" type="xsd:string" default=""/>

<xsd:element name="OriginatorName" type="xsd:string" default=""/>

<xsd:element name="OriginatorIdentity" type="xsd:string" default=""/>

<xsd:element name="OriginatorEntity" type="xsd:string" default=""/>

<xsd:element name="AuthMechanism" type="xsd:string" default=""/>

<xsd:element name="Token" type="xsd:string" default=""/>

</xsd:sequence>

<xsd:anyAttribute/>

</xsd:complexType>

</xsd:element>

<xsd:element name="VendorPayment_MT" type="VendorPayment_DT"/>

<xsd:element name="VendorPayment_Res_MT">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="ErrorCode" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d40fe420638e11dd93a7dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="ErrorDescription" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c00638e11ddcc13dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:complexType name="VendorPayment_DT">

<xsd:sequence>

<xsd:element name="Safe" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c01638e11ddc5a2dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="SafeName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="UserName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c04638e11dda790dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="Password" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c05638e11ddcec4dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="SafePath" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c06638e11dd87bedfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="FileName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="Data" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c01638e11ddc5a2dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Item" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c02638e11ddc602dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="ComponyNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="LawSuiteNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c04638e11dda790dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="PaymentNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c05638e11ddcec4dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="SystemType" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c06638e11dd87bedfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

</wsdl:types>

<wsdl:message name="AuthenticateApiToken">

<wsdl:part name="AuthHeader" element="p1:AuthHeader"/>

</wsdl:message>

<wsdl:message name="VendorPayment_MT">

<wsdl:part name="VendorPayment_MT" element="p1:VendorPayment_MT" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>

</wsdl:message>

<wsdl:message name="VendorPayment_Res_MT">

<wsdl:part name="VendorPayment_Res_MT" element="p1:VendorPayment_Res_MT" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"/>

</wsdl:message>

<wsdl:portType name="VendorPayment_IB">

<wsdl:operation name="VendorPayment_IB">

<wsdl:input message="p1:VendorPayment_MT"/>

<wsdl:output message="p1:VendorPayment_Res_MT"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="VendorPayment_IBBinding" type="p1:VendorPayment_IB" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

<wsdl:operation name="VendorPayment_IB">

<soap:operation soapAction="supplierpaymentservice" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

<wsdl:input>

<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

<soap:header message="p1:AuthenticateApiToken" part="AuthHeader" use="literal"/>

</wsdl:input>

<wsdl:output>

<soap:body use="encoded" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="VendorPayment_IBService">

<wsdl:port name="VendorPayment_IBPort" binding="p1:VendorPayment_IBBinding" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">

<soap:address location="https://mgnt372:8443/SOA/services/esb/SupplierPaymentsReport" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

bhavesh_kantilal
Active Contributor
0 Kudos

You will need to use a non graphical mapping for this.

Mapping like java and XSL do not validate the output of mapping against the message type.

So, in this java / xsl mapping write the logic to create the entire SOAP message including SOAP header and payload with the right values and as suggested select option do not use SOAP enevelope.

When the response from your webservice comes back to XI, the response will against contain the SOAP header and hence a java / xsl mapping will be used to remove map this to rfc response.

If you want to use graphical mapping, then you still can - but your interface mapping will have 2 mapping in the request and in the response - one to add the SOAP message and the other to strip the SOAP header.

Regards

Bhavesh

Former Member
0 Kudos

Hi,

You can for instance do the following:

1) take the schema part of the wsdl and create a new schema file based on it.

2) create a seperate schema file to contain the soap envelope

3) upload schemas as external definitions and use these in message interface and mapping.

This is a simple procedure allowing you to handle the entire soap envelope at mapping time from a message mapping. Surely all sorts of other mappings can be used as well, but this is the least complex way of doing it in my opinion.

See for instance the below 2 schemas which together contains the request from the WSDL (the response should also be incorporated of course):

Schema 1 (new: reference schema 2):

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://projectName/VendorPaymentsService" targetNamespace="http://schemas.xmlsoap.org/soap/envelope/">

<xs:import namespace="http://projectName/VendorPaymentsService" schemaLocation="headerAndBodyFromWSDL.xsd"/>

<xs:element name="Envelope" type="SOAP:EnvelopeType"/>

<xs:complexType name="EnvelopeType">

<xs:sequence>

<xs:element ref="SOAP:Header"/>

<xs:element ref="SOAP:Body"/>

</xs:sequence>

</xs:complexType>

<xs:element name="Body" type="SOAP:BodyType"/>

<xs:complexType name="BodyType">

<xs:sequence>

<xs:element ref="ns1:VendorPayment_MT"/>

</xs:sequence>

</xs:complexType>

<xs:element name="Header" type="SOAP:HeaderType"/>

<xs:complexType name="HeaderType">

<xs:sequence>

<xs:element ref="ns1:AuthHeader"/>

</xs:sequence>

</xs:complexType>

</xs:schema>

Schema 2 (schema part of WSDL taken direcly from the WSDL without modification):

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://projectName/VendorPaymentsService" targetNamespace="http://projectName/VendorPaymentsService">

<xsd:element name="AuthHeader">

<xsd:complexType id="AccountDetails">

<xsd:sequence>

<xsd:element name="TargetService" type="xsd:string" default=""/>

<xsd:element name="OriginatorName" type="xsd:string" default=""/>

<xsd:element name="OriginatorIdentity" type="xsd:string" default=""/>

<xsd:element name="OriginatorEntity" type="xsd:string" default=""/>

<xsd:element name="AuthMechanism" type="xsd:string" default=""/>

<xsd:element name="Token" type="xsd:string" default=""/>

</xsd:sequence>

<xsd:anyAttribute/>

</xsd:complexType>

</xsd:element>

<xsd:element name="VendorPayment_MT" type="VendorPayment_DT"/>

<xsd:element name="VendorPayment_Res_MT">

<xsd:complexType>

<xsd:sequence>

<xsd:element name="ErrorCode" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d40fe420638e11dd93a7dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="ErrorDescription" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c00638e11ddcc13dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:complexType name="VendorPayment_DT">

<xsd:sequence>

<xsd:element name="Safe" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c01638e11ddc5a2dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="SafeName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="UserName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c04638e11dda790dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="Password" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c05638e11ddcec4dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="SafePath" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c06638e11dd87bedfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="FileName" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:element name="Data" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c01638e11ddc5a2dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="Item" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c02638e11ddc602dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

<xsd:complexType>

<xsd:sequence>

<xsd:element name="ComponyNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c03638e11ddc726dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="LawSuiteNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c04638e11dda790dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="PaymentNum" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c05638e11ddcec4dfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

<xsd:element name="SystemType" type="xsd:string" minOccurs="0">

<xsd:annotation>

<xsd:appinfo source="http://sap.com/xi/TextID">d41e3c06638e11dd87bedfd6ac1b35a4</xsd:appinfo>

</xsd:annotation>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:element>

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

Former Member
0 Kudos

again, this is the output that I would like the SOAP to get out.

how to I map the RFC to the SOAP? (in the wsdl, the header and the body are as different complex type).

is there any othere changes need to be done?

<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">

<SOAP-ENV:Header>

<m:AuthHeader xmlns:m="http://projectName/VendorPaymentsService">

<TargetService>String</TargetService>

<OriginatorName>String</OriginatorName>

<OriginatorIdentity>String</OriginatorIdentity>

<OriginatorEntity>String</OriginatorEntity>

<AuthMechanism>String</AuthMechanism>

<Token>String</Token>

</m:AuthHeader>

</SOAP-ENV:Header>

<SOAP-ENV:Body>

<m:VendorPayment_MT xmlns:m="http://projectName/VendorPaymentsService">

<Safe>

<SafeName>String</SafeName>

<UserName>String</UserName>

<Password>String</Password>

<SafePath>String</SafePath>

<FileName>String</FileName>

</Safe>

<Data>

<Item>

<ComponyNum>String</ComponyNum>

<LawSuiteNum>String</LawSuiteNum>

<PaymentNum>String</PaymentNum>

<SystemType>String</SystemType>

</Item>

</Data>

</m:VendorPayment_MT>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

Former Member
0 Kudos

Hi,

You just need to import your RFC to the repository and use this as source message.

Also your wsdl might need to be modified so that the envelope become available as a message - your envelope must be an element in the WSDL and of course reference both the header and body elements. This can be achieved by simple manipulation performed manually.

When done upload the WSDL/XSD (or whatever you choose to use for the manipulated target) as an external definition.

Next reference the envelope in your inbound message interface and your mapping.

Then you'll be good to go...

Regards,

Daniel

Former Member
0 Kudos

Hi

You can maintain your header and item structure at design time.

At receiver SOAP communication channel select. Do Not Use SOAP Envelope This will allow your Header and item level structure to go as it is and not as a single SOAP message.

Refer

http://help.sap.com/saphelp_nw70/helpdata/EN/29/5bd93f130f9215e10000000a155106/content.htm

Thanks

Gaurav

Former Member
0 Kudos

Hi,

In your mapping program you must handle the entire SOAP envelope and then fill both header and body of the envelope.

Also you must check 'Do not use SOAP envelope' in the SOAP receiver communication channel.

Best Regards,

Daniel