RFC- XML header item mapping
Hello All,
I have the folowing scenario:
I have an RFC table that contains header and line details in the same line. for instance:
Header Num, header text, line num, line text
1 abc 10 d
1 abc 20 g
2 def 10 h
I want to output this to an XML file with hierarchy e.g.
<Header>
<Num>1</Num>
<Text>abc</Text>
<Item>
<num>10</num>
<text>d</text>
</Item>
<Item>
<num>20</num>
<text>g</text>
</Item>
</Header>
<Header>
<Num>2</Num>
<Text>def</Text>
<Item>
<num>10</num>
<text>h</text>
</Item>
</Header>
I tries using splitbyvalue on valuechange but this doesn't work. How exactly is the mapping for this?
Thanks,
Yoni
Hi,
Just try this:
<RFCLine>---splitbyvalue<Num>
<RFCLine>---splitbyvalue<Text>
detail
<RFCLine)-splitbyValue-removecontext---<num>
<RFCLine)-splitbyValue-removecontext---<text>
Regards
vijaya
Similar Messages
-
hi all ,
i am doing file to idoc
i have source structure as
header
item1
item2
item3
and my idoc wmmbid02 as stru
E1MBXYH 1.1
E1MBXYI. 1.9999
i am able to convert soure file to xml as below (inbound playload ) using sender fcc.
<zheader>
<zitem>
i defined my message source mapping (message type ) as below.
mt_f2idoc
zE1MBXYH
ziE1MBXYI (same level as header)
and mapped to target . (disabled edidc seg , given 1 to segements attr)
*ques*
i am getting run time exp in sxMB_MONI for mapping :
That "Cannot produce target element /WMMBID02/IDOC/E1MBXYH/E1MBXYI. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd "
what may be probelm ?
please help me out .
Thanks
SridharHi
if u r getting the error like can not produce target element
to make the error correction u can do the followng tests.
forst check your Message Mappinh that u have created, you can test the message mapping in the test tab
go to the test tab and execute and check whether the target strctute is generate or not.
if the target structure will not be generated that it mwans some mandatpry nodes are not mapped.then mapped all the nodes and then check.
if ur tyarget structure is generated in message mapping in the test tab then go to SXMB_MONI and thake the payload form the moni , copy this paylod in the message mapping and then check ur message mapping. u will come to know about the mapping error.
if u still face the problem please reply me back.
Thanks
Rinku -
Adding Encoding in XML header without mapping
Hi Gurus,
I am stuck in a situation where in a pass through scenario, I need to add encoding type in XML header.
Below is example -
Current Situation - <?xml version="1.0"?>
Expected result - <?xml version="1.0" encoding="UTF-8"?>
Can anybody help me in this regard? how to achieve this?
Regards
Vidhi SHi Vidhi
Use it in the below way in the receiver adapter.
Module name: AF_Modules/XMLAnonymizerBean
Parameter name: anonymizer.encoding
This will work. I have tested already. -
Problem mapping header/items in 1 Message Type
Hello,
I'm currently facing the following problem in my message mapping:
On my 'CRM side'
I have a MessageType (DataType) consisting out of +/- 10 header fields and a field called 'ITEMS'
'ITEMS' is table type field consisting out of +/- 5 item fields. Ofcourse 'ITEMS' can occur min1 time - max ?? times
On My 'Dbase' side I have a MT containing 2 'update' statements
1 table is updated for every header record ( mapped with header fields )
1 table is updated for every item ( mapped with header fields as well as item fields )
As far as the header data is concerned everything works fine.
The problem is in the update per item.
The fields that are mapped with the fields inside 'ITEMS' are working fine.
But ... I need to put 3 fields from my header level in the 'item table' as well. So I mapped them from header level to 'Item table'
This seems to work fine as long as I have only 1 item. From the moment I have more then 1 item, the mapping throws an error that he can not create the target item.
I have the impression that he 'looses' the link between header and item(s) from the second item on.
Can somebody let me know that I have to use a special function or something to do this type of mapping ( mapping from header level towards item level ) ?
I tried already some things with the functions 'Remove context' and 'CollapseContext' but this does not seem to help.
Every help is welcome,Hi,
Here you will be passing some values from Header Segments to Item level. So definately there should be a link available between them to pass the appropriate values..
For multiple Item fields you need to use the single header fileds as common
you should go for UseOneToMany API in Node function
Header field to be passed --------->
(Update table for Item level) ITem Node -------> UseOneToMany -----> splitByValue -------> Target field
(Update table for Item level) ITem Node ------->
Thanks
swarup -
Header/Line Item Mapping Problem
Hi all
I am trying to achieve some kind of header to line item mapping using the graphical mapping tool. The scenario is as following:
PU1/PA1/NAME
My big problem now is with NAME in the NM1 segment, which is kind of a header to item level mapping since it should become part of PU1 in the target structure which is created by the RMR segments of the source structure. I've tried to use the built-in useOneAsMany function, which works fine if the NM1 segment is always there. Nevertheless, this does not work if the NM1 segment is missing since the function apparently checks the context all the time and has then problems if the segment does not exist. I've tried a global variable with user-defined set and get functions, too, but didn't get it to work either.
I hope that my explanations make any sense. Can maybe anybody help me to get this working? Any help would be appreciated.
Thanks,
DanielHi Daniel
Node function <i>useoneasmany</i> will work only if the source field is available. If this source is missing then the MM will through an error. We can make use of ifexists function, using this we can map the soruce to target. the use is the value is mapped on if the source field exists. hope this helps
thkx
Prabhu -
Java Error in RFC Lookup in XSLT Mapping usinf Java helper class
Hi All,
I am doing RFC Lookup in XSLT Mapping using Java Helper class.
The Lookup works fine when called one RFC at a time However my requirement is I want to do 2 Lookups.
Both Lookups works when done individually however when I call both lookups in one mapping I get following error "javax.xml.transform.TransformerException: DOMSource whose Node is null."
Following is the code I have written in XSLT for the lookup:
<xsl:template name="Lookup_1">
<xsl:param name="STDPN"/>
<rfc:RFC_READ_TABLE>
<QUERY_TABLE>KNA1</QUERY_TABLE>
<OPTIONS><item><TEXT>
<xsl:value-of select="$STDPN"/>
</TEXT></item>
</OPTIONS>
<FIELDS>
<item>
<FIELDNAME>KUNNR</FIELDNAME>
</item>
</FIELDS>
</rfc:RFC_READ_TABLE>
</xsl:variable>
<xsl:variable name="response" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request, 'BS_D, 'cc_RfcLookup', $inputparam)"/>
<xsl:element name="STDPN">
<xsl:value-of select="$response//DATA/item/WA"/>
</xsl:element>
</xsl:template>
<xsl:template name="Lookup_2">
<xsl:param name="BELNR"/>
<xsl:variable name="Query">AGMNT = '<xsl:value-of select="$BELNR"/>'</xsl:variable>
<xsl:variable name="request1">
<rfc:RFC_READ_TABLE>
<QUERY_TABLE>ZTABLE</QUERY_TABLE>
<OPTIONS><item><TEXT>
<xsl:value-of select="$Query"/>
</TEXT></item>
</OPTIONS>
<FIELDS>
<item>
<FIELDNAME>KUNAG</FIELDNAME>
</item>
</FIELDS>
</rfc:RFC_READ_TABLE>
</xsl:variable>
<xsl:variable name="response1" xmlns:lookup="java:urn.mt.pi" select="lookup:execute($request1, 'BS_D','cc_RfcLookup', $inputparam)"/>
<xsl:element name="BELNR">
<xsl:value-of select="$response1//DATA/item/WA"/>
</xsl:element>
</xsl:template>
My Question: Am I doing anything wrong? Or Is it possible to call multiple lookups in one XSLT?
Thanks and Regards,
AtulHi Atul,
I had the same problem like you had.
The main Problem is that with the example code the request variable is created as NodeList object. In XSLT a variable is somekind of a constant and can't be changed. As the request object is empty after the first request the programm fails at the following line:
Source source = new DOMSource(request.item(0));
So I've created a workaround for this problem.
In the call of the template I've put the request as a parameter object at the template call:
<xsl:with-param name="req">
<rfc:PLM_EXPLORE_BILL_OF_MATERIAL xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
<APPLICATION>Z001</APPLICATION>
<FLAG_NEW_EXPLOSION>X</FLAG_NEW_EXPLOSION>
<MATERIALNUMBER><xsl:value-of select="value"/></MATERIALNUMBER>
<PLANT>FSD0</PLANT>
<VALIDFROM><xsl:value-of select="//Recordset/Row[name='DTM-031']/value"/></VALIDFROM>
<BOMITEM_DATA/>
</rfc:PLM_EXPLORE_BILL_OF_MATERIAL>
</xsl:with-param>
With this change the request will be provided as a String object and not as a NodeList object.
Afterwards the RfcLookup.java has to be changed to the following:
package com.franke.mappings;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import com.sap.aii.mapping.lookup.Channel;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.AbstractTrace;
import com.sap.aii.mapping.lookup.RfcAccessor;
import com.sap.aii.mapping.lookup.LookupService;
import com.sap.aii.mapping.lookup.XmlPayload;
* @author Thorsten Nordholm Søbirk, AppliCon A/S
* Helper class for using the XI Lookup API with XSLT mappings for calling RFCs.
* The class is generic in that it can be used to call any remote-enabled
* function module in R/3. Generation of the XML request document and parsing of
* the XML response is left to the stylesheet, where this can be done in a very
* natural manner.
* TD:
* Changed the class that request is sent as String, because of IndexOutOfBound-exception
* When sending multiple requests in one XSLT mapping.
public class RfcLookup {
* Execute RFC lookup.
* @param request RFC request - TD: changed to String
* @param service name of service
* @param channelName name of communication channel
* @param inputParam mapping parameters
* @return Node containing RFC response
public static Node execute( String request,
String service,
String channelName,
Map inputParam)
AbstractTrace trace = (AbstractTrace) inputParam.get(StreamTransformationConstants.MAPPING_TRACE);
Node responseNode = null;
try {
// Get channel and accessor
Channel channel = LookupService.getChannel(service, channelName);
RfcAccessor accessor = LookupService.getRfcAccessor(channel);
// Serialise request NodeList - TD: Not needed anymore as request is String
/*TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
Source source = new DOMSource(request.item(0));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StreamResult streamResult = new StreamResult(baos);
transformer.transform(source, streamResult);*/
// TD: Add xml header and remove linefeeds for the request string
request = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+request.replaceAll("[\r\n]+", "");
// TD: Get byte Array from request String to send afterwards
byte[] requestBytes = request.getBytes();
// TD: Not used anymore as request is String
//byte[] requestBytes = baos.toByteArray();
trace.addDebugMessage("RFC Request: " + new String(requestBytes));
// Create input stream representing the function module request message
InputStream inputStream = new ByteArrayInputStream(requestBytes);
// Create XmlPayload
XmlPayload requestPayload =LookupService.getXmlPayload(inputStream);
// Execute lookup
XmlPayload responsePayload = accessor.call(requestPayload);
InputStream responseStream = responsePayload.getContent();
TeeInputStream tee = new TeeInputStream(responseStream);
// Create DOM tree for response
DocumentBuilder docBuilder =DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = docBuilder.parse(tee);
trace.addDebugMessage("RFC Response: " + tee.getStringContent());
responseNode = document.getFirstChild();
} catch (Throwable t) {
StringWriter sw = new StringWriter();
t.printStackTrace(new PrintWriter(sw));
trace.addWarning(sw.toString());
return responseNode;
* Helper class which collects stream input while reading.
static class TeeInputStream extends InputStream {
private ByteArrayOutputStream baos;
private InputStream wrappedInputStream;
TeeInputStream(InputStream inputStream) {
baos = new ByteArrayOutputStream();
wrappedInputStream = inputStream;
* @return stream content as String
String getStringContent() {
return baos.toString();
/* (non-Javadoc)
* @see java.io.InputStream#read()
public int read() throws IOException {
int r = wrappedInputStream.read();
baos.write(r);
return r;
Then you need to compile and upload this class and it should work.
I hope that this helps you.
Best regards
Till -
Hi there
I am trying to do a table lookup from XI in my message mapping by calling an remote RFC. The return values must return ALL the value for a specific column. The code I have here returns a blank value. Can someone see what my problem may be?
My variables for my UDF is:
public String UDF_RFC(String DBTABLE,String MATNR,String FIELDS,String businessSystem,String communicationChannel,Container container)
And my Code:
"My code appears to mess up my message structure, I will attach it in a responce..
Thanks,
Jan
Edited by: Jan de Lange on Sep 16, 2009 11:09 AM
Edited by: Jan de Lange on Sep 16, 2009 11:09 AM// declare parameters
String returnValue = "";
String rfcXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ns0:ZINT_XI_GET_SITES xmlns:ns0=\"urn:sap-com:document:sap:rfc:functions\"><LT_SITES><item><WERKS></WERKS></item></LT_SITES></ns0:ZINT_XI_GET_SITES>";
AbstractTrace trace = container.getTrace();
RfcAccessor accessor = null;
ByteArrayOutputStream out = null;
try
// 1. Determine a communication channel (Business system + Communication channel)
Channel channel = LookupService.getChannel(businessSystem,communicationChannel);
// 2. Get a RFC accessor for the channel.
accessor = LookupService.getRfcAccessor(channel);
// 3. Create an XML input stream that represents the RFC request message.
InputStream inputStream = new ByteArrayInputStream(rfcXML.getBytes());
// 4. Create the XML Payload
XmlPayload payload = LookupService.getXmlPayload(inputStream);
// 5. Execute the lookup.
Payload result = null;
result = accessor.call(payload);
InputStream in = result.getContent();
// 6. Create a DOM structure from the input XML
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(in);
NodeList nodelist = document.getElementsByTagName("*");
Node node;
Element element;
NamedNodeMap nnm = null;
String attrname;
String attrval;
int i, len;
len = nodelist.getLength();
for (int j=0; j < len; j++) {
element = (Element)nodelist.item(j);
System.out.println(element.getTagName() + ":");
nnm = element.getAttributes();
if (nnm != null) {
for (i=0; i<nnm.getLength(); i++) {
node = nnm.item(i);
attrname = node.getNodeName();
attrval = node.getNodeValue();
returnValue += attrname + " = " + attrval + "##";
// 7. To free resources, close the accessor..
if (accessor!=null) {
try {
accessor.close();
} catch (LookupException e) {
trace.addWarning("Error while closing accessor " + e.getMessage() );
} catch (Exception e) {
trace.addWarning("Error" + e);
// 8. return a single id value to the message mapping
return returnValue; -
Hi
In text to xml scenario...how to eliminate the headers in text file
Text file data is like
H1-header line1
H2-header line 2
E100 Rahul - Data
E101 Siva - Data.
I need only data in xml file..what setting i have to make in file content conversion parameters in sender side..In blogs it is given for text to xml..In those i am not getting regarding header line removal from text file (sender)
Give some suggestion to get this scenario
Regards
PrakashHi Prakash,
Create the Data type with all fields (Headr & Item) but while mapping do not map the header filds to target. But in your Content Conversion Define every thing (Header & Item filed lengths etc.) so this way your file will be ficked up by adapter and while mapping only Item values will be mapped and you will get only item data in your XML file.
Below is the example when you have HEADER & ITEM structure.
FCC is case sensitive, give all the names in FCC same as your Data Type.
In Recordset Structure = Header,1,Item,*
Header.fieldFixedLengths = (field lengths) e.g. 1, 4, 7
Header.fixedLengthTooShortHandling=ignore
Header.endSeperator='nl'
Item.fieldFixedLengths = give the item field length as shown above
Item.endSeparator = 'nl'
Item.lastFieldsOptional = YES
Regards,
Sarvesh
****Reward points, if found helpfull. -
Create a new line in the xml-header structure.
Hi,
Can any one tell me how to create a new line in the xml-header structure.
I am doing a IDOC-XI-HTTP scenario.
Actually my mapping create this file:
<b><?xml version="1.0" encoding="utf-8"?>
<ORDERS05>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1"> </b>
The result must look like this.
<b><?xml version="1.0" encoding="utf-8"?>
<ORDERS05>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1"> </b>
Thanks and Regards,
ErenHi,
thanks for you quick answer.
I found a xsl script.
It works fine.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*">
<xsl:param name="depth">0</xsl:param>
<!-- New line with indenting. -->
<xsl:if test="$depth > 0">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:text>
</xsl:text>
<xsl:element name="{name(.)}">
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates>
<xsl:with-param name="depth" select="$depth + 1"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Best regards
Eren -
Unallowed RFC-XML Tag (SOAP_EINVALDOC) - Web Service using ABAP Proxy
Hi there
I am trying to consume a Web Service using ABAP Proxies. I have done the following in the system:
I configured the HTTP and HTTPS Proxy settings.
I created a package with package interfaces SAI_TOOLS and SAPPINT included under the Use Access tab.
I created the proxy classes by using the WSDL provided by the system I'm trying to interface with.
I created my HTTP destination RFC via SM59.
I configured a logical port for the proxy.
I developed the ABAP code for calling the proxy.
In the code the exception CX_AI_SYSTEM_FAULT gets raised with error message <b>"Unallowed RFC-XML Tag (SOAP_EINVALDOC)"</b> when I call the method for passing data to the destination system in the proxy class.
I had a look at SM21 and the following message was written in the log:
<b>"SOAP Runtime: SOAP Runtime exception: 111 occurred in method XP_READ_TAG of class CL_SOAP_XP at position 1
SOAP Runtime: Exception message: Unallowed RFC-XML Tag (SOAP_EINVALDOC)"</b>. I also looked at SAP Note 919886 which states that it can be dumps in the system, missing configuration or the path prefix of the RFC destination that is incorrect. I cannot find any ST22 entries. The trace file looks as follows:
SAP System ID: DGH
Client: 009
User: COLESKG
System time: 072910
System date: 20070531
SAP Release: 700
Host: hd307c
Operating system: AIX
DB System: ORACLE
Program: ZUK_IPA00003
Processing State: 0
Location: Client
Transport Binding: http://schemas.xmlsoap.org/soap/http
SOAP Application: urn:sap-com:soap:runtime:application:client
SOAP Runtime Protocol: http://www.sap.com/webas/630/soap
/runtime/protocol
SOAP Protocols: <initial>
Request Message: <initial>
Response Message: <initial>
Fault: <initial>
Registry: <initial>
SOAP Roles: <initial>
Trace Level: 3
Logging Level: 2
Monitoring Level: 0
Security Profile: <initial>
WS Security Protocol: <initial>
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Try to create client application for Proxyclass:
ZES_CO_PROCESS_EMPLOYEE_BATCH LP name: DEFAULT
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Client application created
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Try to initialize client application
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->IF_SOAP_APPLICATION_CS~INIT() Try to initialize application
urn:sap-com:soap:runtime:application:client
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Create new runtime CL_SOAP_RUNTIME_CLIENT
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->REGISTER_APPLICATION() Try to register application
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->REGISTER_APPLICATION() Application registered
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Read type of transport binding from
configuration
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->INTERNAL_CLIENT_INIT() Create new transport binding type
http://schemas.xmlsoap.org/soap/http
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~INIT() Try to initialize
http://schemas.xmlsoap.org/soap/http
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~INIT() http://schemas.xmlsoap
.org/soap/http initialized
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~REQUEST() Try to create request message
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~REQUEST() Request message created
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~RESPONSE() Try to create response message
INFO 07:29:10: SOAP Transport Binding CL_SOAP_TRANSPORT_BINDING_ROOT->IF_SOAP_TRANSPORT_BINDING~RESPONSE() Response message
created
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Try to initialize
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Check transport binding
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT() Create runtime protocol
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Try to initialize SOAP Runtime-intrinsic
Protocol as SENDER with Priority 5
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Try to create trace header/part
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Trace header/part created
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Try to create logging header/part
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->INIT_MODULES() Logging header/part created
INFO 07:29:10: SOAP Runtime Protocol CL_SOAP_RUNTIME_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Protocol initialized
INFO 07:29:10: SOAP Runtime CL_SOAP_RUNTIME_CLIENT->INIT()
Initialized
INFO 07:29:10: SOAP Protocol CL_SOAP_PROTOCOL_FACTORY->CREATE()
Try to create instance for http://www.sap.com/webas/630/soap
/runtime/session/protocol::http://www.sap.com/webas/630/soap
/runtime/session/protocol/srt640_impl
INFO 07:29:10: SOAP Protocol CL_SOAP_PROTOCOL_FACTORY->CREATE()
Instance of CL_SOAP_SESSION_PROTOCOL created for http://www.sap.com/webas/630/soap/runtime/session/protocol::http://www.sap.com/webas/630/soap/runtime/session/protocol/srt640_impl
INFO 07:29:10: SOAP SESSION Protocol CL_SOAP_SESSION_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Try to initialize SOAP Session Protocol
as SENDER with Priority 5
INFO 07:29:10: SOAP SESSION Protocol CL_SOAP_SESSION_PROTOCOL->IF_SOAP_PROTOCOL~INIT() Protocol initialized
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT_GEN->CONFIGURE_FEATURES() Try to configure features
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_CLIENT_BY_DESTINATION() Try to
create ICF Client for DESTINATION = ALSB
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_CLIENT_BY_DESTINATION() ICF
Client created by DESTINATION
INFO 07:29:10: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->IF_SOAP_HTTP_TRANSPORT_BINDING~SET_DESTINATION_URL_PATH() Set
DESTINATION PATH = /SapHRSmartIntegrationWeb/processes/ProcessEmployeeBatch.jpd
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT_GEN->CONFIGURE_FEATURES() Features configured
INFO 07:29:10: SOAP Application CL_SOAP_APPLICATION_CLIENT->IF_SOAP_APPLICATION_CS~INIT() Application urn:sap-com:soap
:runtime:application:client initialized
INFO 07:29:10: SOAP LP Registry CL_SRT_LP_MAINTENANCE->CREATE_CLIENT_APPL() Client application initialized
Trace file opened at 20070531 073030 GMT SAP-REL 700,0,95
Error in module XMLParserGetNextElement:773
Id @(#) $Id: //bas/700_REL/src/krn/rfc/xrfcpars.c#2 $
Unallowed RFC-XML Tag
Error in module XMLConverterReadTag:3061
Id @(#) $Id: //bas/700_REL/src/krn/rfc/xrfccnvrt.c#5 $
Unallowed RFC-XML Tag(24)
Error in module ab_soap:4392
Id @(#) $Id: //bas/700_REL/src/krn/rfc/abxrfccal.c#2 $
failed with return code 1
It then must be something in the config. Has anyone got any idea why this message is encountered?
Kind Regards
Gustav Coleske
Message was edited by:
Gustav ColeskeHi,
I have the same problem as described.
Can you give me a little more information about the error you have solved in the proxy.
Thanks for help
John -
I am developing a Java Servlet and would like to query the database multiple times. I have used OracleXMLQuery and an array to be able to run three separate queries. My problem is occuring in my returned XML Document. Each query comes back with a XML Header such as:
<?xml version = '1.0'?>
<Query_1>
<COL1>10</COL1>
</Query_1>
<?xml version = '1.0'?>
<Query_2>
<COL1>20</COL1>
</Query_2>
<?xml version = '1.0'?>
<Query_3>
<COL1>30</COL1>
</Query_3>
I have assigned the header separately and would just like to be able to turn off the generated header. My problem is coming when I am trying to use an applet and it does not like when it sees the XML header more than once. Any ideas or hints on how this can be done I would appreciate it.Hello this did solve my issue. I have same issue infact. I used this xsl mapping as
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
</xsl:stylesheet>
But my output xml struıcture has broken. Should I do some changing in my xsl mapping and how ?
Regards,
Ceren. -
Boolean representation in RFC xml
Hello, I have problems with representing boolean values in an RFC xml call using XI towards SAP. Using 'X' as a value for true does not seem to work. The BAPI I am calling through RFC xml is BAPI_CHARACT_CREATE and I am trying to set the parameter INTERVAL_ALLOWED. Anyone have a clue? Thanks
Hi,
Boolean functions return as an output either string true or false. As an true value they interpret either 1 or true (not case sensitive). Rest values are interpreted as false.
In your case RFC data type is: ATXFE with value range: 'X' for true and ' ' for false then you can solved such case with simple message mapping:
In mapping to RFC field use: boolean function "If" that returns either 'X' or ' '.
In mapping from RFC field use: text function "equalsS" that check "X" and returns "true".
Regards,
Jakub -
Adding additional XML Header in Target XML structure
Hi all,
I have a requirement that i need add one additional XML header to target XML messages. At the moment i can see default XML header as ,
<?xml version="1.0" encoding="UTF-8" ?>
<Test>
<Add>Test Mesage</Add>
</Test>
But i would like to have one more additional header like below,
<?xml version="1.0" encoding="UTF-8" ?>
<?Siebel-Property-Set EscapeNames="false"?>
<Test>
<Add>Test Mesage</Add>
</Test>
Can some one help me to find a way to adding this additional header?
Thanks in advance.
Prasad Babu.Hi Prasad,
Yes it is possible by Java Mapping. Please check my response for similar thread
Re: Add XML header? -
Create a new header+item after sync the item some informations are deleted
Hi All,
I have a DO with a backend adapter and 3 bapi wrapper (GetList, GetDetail, Create).
When I create a new instance (header+item) on client side the data are correct in the database. After a sync the instance is also on the client and the Backend but he lost some informations in the item.
For example i create e_top object (header) and t_vehicle object (item) the i added the item to the header an wirte it in the database. In the datebase both tables for header and item are correct filled.
Application Code:----
public void SaveVehicle( java.lang.String Manufacturer, int Driver, java.lang.String Licence_Number, java.lang.String Type ) {
VEHICLE_E_TOP e_top = model.createVEHICLE_E_TOP();
e_top.setLICENCE_NUMBER(Licence_Number);
wdContext.nodeVEHICLE_E_TOP().bind(Collections.singleton(e_top));
wdContext.nodeVEHICLE_E_TOP().setLeadSelection(0);
model.addToVEHICLE_E_TOPs(e_top);
VEHICLE_T_VEHICLES t_vehicle = e_top.createNewT_VEHICLESs();
t_vehicle.setDRIVER_ID(Driver);
t_vehicle.setLICENCE_NUMBER(e_top.getLICENCE_NUMBER());
t_vehicle.setMANUFACTURER(Manufacturer);
t_vehicle.setTYPE(Type);
wdContext.nodeVEHICLE_E_TOP().currentVEHICLE_E_TOPElement().model();
e_top.addToT_VEHICLESs(t_vehicle);
wdContext.nodeVEHICLE_T_VEHICLES().bind(Collections.singleton(t_vehicle));
wdContext.nodeVEHICLE_T_VEHICLES().setLeadSelection(0);
model.commit();
Now when I snyc with the middleware the object is still on the client (1 row in the e_top table and 1 row in the item table) but in the row of the item table all data until the header key(Licence_Number) is deleted. In the Backend there is a new objekt with only the header imformations.
Best Regards,
DirkHi,
there was another post today n a similar issue. I still do not think it is a standard issue - so lets check first if your implementation is correct.
You should have a look on the CREATE BADI in the backend and on the mapping in the DOE. I expect the CREATE handler does not get all informations form the client, cause you missed to do the propper mapping in the DOE on the middleware. Check this first. If you see the data on the client, the client side should be fine. Check the DOE and its mapping and the BADI implementation on the backend.
Hope it helps!
Regards,
Oliver -
Invalid XML, Expected item name child table but 'row' provided65171
Hello Experts
I am using SAP 8.81, PL05
DTW is at 88.1.4 API Version 8.81.313
I have problem in uploading data via DTW in UDO master type table.
I only have problem in updating data in UDO master type table
Detail log is Invalid XML, Expected item name 'ACC_VS_VIG' but got 'row' provided65171
ACC_VS_VEH - UDO
ACC_VS_VEH - master type - UDT
ACC_VS_VIG -master row type -UDT
DTW ERROR FILE
Code Name U_SrcNme U_SrcRef U_ManfNo U_Manf U_KModNo U_ModelSpc U_KTypNo U_ModelTyp U_BodyType U_EngCapac U_Cylinders U_4WD U_BrakeTyp U_BrakeSys U_Valves U_StartDt U_EndDt U_CurrVolt U_EngKGW U_EngPS U_DriveTyp U_EngType U_FuelType U_Required U_Publish U_Flagged U_FuelMix U_CatlType U_TranType U_EngCC U_ModGen U_TypeDesc U_Doors U_FuelCap U_ABS U_ASR U_Notes
<---Do not fill this row----->
00010477 00010477
ParentKey LineNum Code U_PrdItG U_BasePrc U_Currency U_Required U_Publish U_Notes
<---Do not fill this row----->
00010477 1 00010477 10.78
Please, please give me some suggestions
Keith LilleyHi Gordon
Thanks for quick response,
In DTW - Select Business Object I see the following:
+ Human Resources
- User Defined Data
+ Meta Data
+ Tables (UDT)
- Objects (UDO)
UDO_ACC_VS_VEH
After highlighting UDO_ACC_VS_VEH and Next then I see the following under Select Data Source:
ACC_VS_VEH CLICK BOX
ACC_VS_VIG CLICK BOX
I then select the appropriate CSV's. Everything Maps OK, Source Data OK but just noticed the following on Target Data:
+ ... AdminInfo
- ... ACC_VS_VEH
- ....Row
- .... Code
. 00010457
- ... Name
. 00010457
- ... ACC_VS_VIG
.....Row
- .... Row
- .... Code
. 00010457
- ... U_BasePrc
. 10.78
Can you see the extra row with no by it. This is noted in the error message. Any ideas. Also, from the above I assume this implies that ACC_VS_VIG IS the line object of ACC_VS_VEH.
Regards
Keith
Maybe you are looking for
-
How do i put my apps and music onto my new computer
How do I put apps and music onto my new computer.
-
I have been attempting to use Encore since version 1. It was retarded then. I am now attempting to use Encore CS3. It is still retarded. Why can't you eggheads at ADOBE write a simple DVD authoring app that works AT LEAST as well as Pegasys DVD autho
-
Problem with variables declared as private?
Hi all, I am currently having a very weird problem when i am running one of the JSP application deployed using weblogic. I have a variable x and is declared as private. By looking at the log file of every transaction done by the users, i can't trace
-
I want to stream Netflix and other media to my TV. I'm not interested in viewing my photos and do not have much media saved to my Mac. How much better is Apple TV for this than the new iPhone, if making calls is not an issue? I have 2 TV's and it
-
how to do customer aging analysis in abap. what r the fields to be used and what is the logic. Ols help me.