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

Similar Messages

  • 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 Coleske

    Hi,
    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

  • CDATA issue in RFC XML conversion

    Hi all,
    I am trying to consume a webservice from ABAP. One of the webservice method responds with a data holding an xml fragment under the tags CDATA, like,
    <!CDATA[[<?xml version="1.0" encoding=.....]]>
    But the program throws exception during RFC XML conversion.
    However i could find the correct response payload in the error log in ST11 transaction.
    Pls advice.

    Hi,
    as this is not a proper CDATA
    try:
    <![CDATA[ cdata text ]]>
    you can test it easily by opening with IExplorer
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • Rfc XML Purchase Order via business connector

    Hi,
    I am new to business connector and currently I am faced with a task where I have to send the Purchase Order to vendor via rfc XML with business connector 4.7.
    The vendor should receive the order via ebp XML.
    Can any one specify me the exact steps involved in this.
    Please reply asap as there is an urgency in the task.
    Points assured to helpful answers.

    hi,
    there used to be standard content for EBP for BC
    SAP BC Support Packages for EBP, BBP, and CRM link on:
    http://service.sap.com/~form/sapnet?_SHORTKEY=01100035870000463624&_OBJECT=011000358700000267402002E
    but I cannot access it anymore
    you can asking SAP about it as I'm sure this could help you in your EBP scenario
    Regards,
    michal
    <a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions"><b>XI / PI FAQ - Frequently Asked Questions</b></a>

  • Send PO via rfc XML with BC 4.7

    Hi Gurus,
    I have to send the Purchase Order to vendor via rfc XML with business connector 4.7. The vendor should receive the order via ebp XML. We are not using XI we use xCBL. SRM Server 5.5 Standalone.
    i use zbbp_PO_send_xml badi for this purpose.  We are able to send the data as rfc XML.  But the smartform attachment is not working.
    Can any one specify me the exact steps involved in this.
    Please reply asap as there is an urgency in the task.
    Points assured to helpful answers.
    Cheers,
    Lokesh

    We are getting a similar error -
    Any ideas on what parameters we need to pass or configure?
    JCO.ServerThread-1 [13:15:27:437]: [JNI-LAYER] RFC.incomingRequestHandler() before dispatchRequest("IDOC_INBOUND_ASYNCHRONOUS")
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.nativeConnect()                                          enter, [SUCCESS]
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.nativeConnect() before RfcOpenEx("CLIENT="110" USER="ALEWM1" PASSWD=********** LANG="EN" SYSNR="00" ASHOST="atlun02.celanese.com" R3NAME="atlun02.celanese.com" TRACE="1" TOUPPER="0"")
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.nativeConnect() after  RfcOpenEx("CLIENT="110" USER="ALEWM1" PASSWD=********** LANG="EN" SYSNR="00" ASHOST="atlun02.celanese.com" R3NAME="atlun02.celanese.com" TRACE="1" TOUPPER="0"") = 0
      with error: RFC_ERROR_PROGRAM No entry for 'atlun02.celanese.com' found in 'C:\WINDOWS\sapmsg.ini'
    JCO.ServerThread-1 [13:15:27:515]: [JAV-LAYER] JCO.PoolManager.releaseClient: Cannot release client equals null
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.incomingRequestHandler() caught the following exception: com.sap.mw.idoc.IDoc$Exception: (2) IDOC_ERROR_METADATA_UNAVAILABLE: The meta data for the IDoc type "LOIPRO01" is unavailable.
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.incomingRequestHandler() Exception.message = "The meta data for the IDoc type "LOIPRO01" is unavailable."
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.abort()                                                  enter, [SUCCESS]
    JCO.ServerThread-1 [13:15:27:515]: [JNI-LAYER] RFC.abort() before RfcAbort(1,"The meta data for the IDoc type "LOIPRO01" is unavailable.")

  • SOAP Runtime: Exception message: Unallowed RFC-XML Tag (SOAP_EINVALDOC)

    Hi,
    Curretly I am trying to test a Webservice on ECC 5.0, Oracle, Windows.
    Below is the error that I am facing.
    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)
    In dev_rfc0:
    ERROR 03:20:57: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->HANDLE
    STATUSCODE() Received return code 404 ( Not found )
    ERROR 03:20:57: SOAP Message CL_SOAP_MESSAGE->IF_SOAP_MESSAGE
    PART~INITFOR_DESERIALIZE() A SOAP Runtime Core Exception
    occurred in method XP_READ_TAG of class CL_SOAP_XP at position id
    1 with internal error id 111 and error text Unallowed RFC-XML Tag
    (SOAP_EINVALDOC) (fault location is 1 ).
    I have looked up on sdn, and also looked at note 919886.
    I have read several posts regarding creation of RFC Destination in sm59 of Type G, to get over this issue.
    But RFC Destination of type G is not available in ECC 5.0
    Is the error because of incorrect URL mentioned in logical port,
    I am unable to ping the host name mentioned in URL, looks like that machine is not in the network.
    does it mean the wsdl is not located at that particular host.
    Any suggestions would be greatly appreciated.
    Regards,
    Vishnu.

    Hi Anton,
    The complete error message in dev_rfc0:
    INFO 02:15:12: SOAP Transport Binding CL_SOAP_HTTP_TPBND_ROOT
    ->IF_SOAP_TRANSPORT_BINDING~SEND() Try to send message ( DEST =
    ,PATH = ,URL = http://hostname:portno/ ,SOAP Action =
    "ROI_R3_DF.roiSAPCreateOrder" )
    INFO 02:15:12: SOAP Transport Binding CL_SOAP_HTTP_TPBND_ROOT
    ->IF_SOAP_TRANSPORT_BINDING~SEND() Message sent
    INFO 02:15:12: SOAP Transport binding CL_SOAP_HTTP_TPBND_ROOT
    ->IF_SOAP_TRANSPORT_BINDING~RECEIVE() Try to receive message
    ERROR 02:15:12: SOAP HTTP Binding CL_SOAP_HTTP_TPBND_ROOT->HANDLE
    STATUSCODE() Received return code 404 ( Not found )
    ERROR 02:15:12: SOAP Message CL_SOAP_MESSAGE->IF_SOAP_MESSAGE
    PART~INITFOR_DESERIALIZE() A SOAP Runtime Core Exception
    occurred in method XP_READ_TAG of class CL_SOAP_XP at position id
    1 with internal error id 111 and error text Unallowed RFC-XML Tag
    (SOAP_EINVALDOC) (fault location is 1 ).
    After reading your post about the return code 404, I am in a dilemma whether, services in icman are unavailable or
    the services at the location of the wsdl in the other server.
    If you could clarify, it would be great.
    Thanks a lot.
    Vishnu.

  • String representation of the xml document

    hi, I have created the following xml document using the DOM api. I want to the "function" to return a "string" - which represents the xml document i created. How do u do that?
    As of now it doesnt return anything...
    How do u return the entire xml document as character data..? just like
    <root><elements>data</elements></root>....
    anyhelp would be great.
    import java.io.*;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import org.w3c.dom.*;
    public class test1{
    private static void function()throws IOException, DOMException{
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance ();
    DocumentBuilder db = dbf.newDocumentBuilder ();
    Document doc = db.newDocument ();
    Element record = doc.createElement ("record");
    Element name = doc.createElement ("name");
    Element address = doc.createElement ("address");
    Element zip = doc.createElement ("zip");
    Text nameText = doc.createTextNode("bill");
    Text addressText = doc.createTextNode("128, washington");
    Text zipText = doc.createTextNode("10000");
    doc.appendChild(record);
    record.appendChild(name);
    name.appendChild(nameText);
    record.appendChild(address);
    address.appendChild(addressText);
    record.appendChild(zip);
    zip.appendChild(zipText);
    public static void main (String argv [])throws Exception {
    function();
    }

    Brent,
    Looks like you're using the Sun Java Parser. I'll show you how to do it with the Oracle XML Parser and you can extrapolate...
    Document doc = new XMLDocument();
    // Stuff here to build up the DOM Doc
    // with elements, etc.
    // Print the Document to a String
    StringWriter sw = new StringWriter();
    // Wrap the stringwriter in a printwriter
    PrintWriter pw = new PrintWriter(sw);
    // Print to the printwriter
    ((XMLDocument)doc).print(pw);
    // return the string from the stringwriter
    return sw.toString();

  • 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

  • XI Message - Normalized to RFC-XML format

    In a follow up to this posting:
    Re: How can the payload of a XI message be normalized to the RFC-XMLuFF1F
    Can someone tell me what the proceedure is to install/use the rfcnormalizer.jar file?
    Thanks so much,
    John

    Hi John,
      rfcnormalizer.jar file has got inbuilt XSL mapping program that has to be executed after your original mapping.
      import this .xsl file as Imported Archive(under Mapping Objects) in to Integration repository.use this in interface mapping as XSLT Mapping after your original mapping.
    Please let me know if you are not clear
    Cheers,
    Jag

  • Excel representation of config.xml

    <p>I was wondering if anyone has an excel spreadsheet that captures WLS domain/cluster configuration, I'd rather not write my own if someone is willing to share theirs!</p>
    <p>
    I am looking at converting this into a properties files that can be used to prove the environment by an application or WLST.
    </p>
    <p>Cheers</p>
    <p>
    Hussein Badakhchani</br>
    </p>

    Hi Jin,
    As you have 2 different custom application does both have different b2b or b2c project in java perspective.
    Because generally there is only one "isaweb~b2b" project and we do modification over there for JSP. If you have 2 custom application then How you do modification in same file for 2 different application.
    i.e. suppose you have requirement to show 2 different header element in 2 different application then how you maintain changes for 2 different application.
    For your question. Try below.
    Open web.xml from "isaweb~b2b" project.
    Try to find below lines.
    <!-- Action Servlet Configuration -->
        <servlet>
            <servlet-name>action</servlet-name>
            <servlet-class>com.sap.isa.core.ActionServlet</servlet-class>
            <init-param>
                <param-name>config</param-name>
                <param-value>/WEB-INF/config.xml,/WEB-INF/xcmadmin-config.xml,/WEB-INF/ccmsims-config.xml,/WEB-INF/ipc-config.xml,/ipc/customer/config.xml,/WEB-INF/config_lwc_b2b.xml,/WEB-INF/scheduler-config.xml,/WEB-INF/ipcpricing-config.xml</param-value>
            </init-param>
    In above code. insert your zconfig.xml path to <param-value> and remove /WEB-INF/config.xml value if necessary.
    I hope this will help you.
    eCommerce Developer

  • Generating an XML representation of arbitrary Java objects

    Hi. Just for fun, I'm attempting to write some code which creates an XML representation of an arbitrary java object using reflection. The idea is that only properties with get/set methods should come through in the XML.
    Here is the code:
    package com.uhg.aarp.compas.persistence.common.xml;
    import java.io.IOException;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.FactoryConfigurationError;
    import javax.xml.parsers.ParserConfigurationException;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMException;
    import org.w3c.dom.Node;
    import java.util.Stack;
    public class XMLDAO {
         public static String getXMLWithHeader(Object obj){
              return "<?xml version=\"0\"?>" + getXML(obj);
          * Returns an XML representation of an arbitrary object
         public static String getXML(Object obj){
              StringBuffer buffer = new StringBuffer();
              AccessorMethod[] accessorMethods = getAccessorMethods(obj);
              buffer.append("<" + obj.getClass().getName() + ">\n");
              //List
              if(obj instanceof List){
                   List objList = (List)obj;
                   Iterator iterator = objList.iterator();
                   while(iterator.hasNext()){                              
                        buffer.append(getXML(iterator.next()));
              else{
                   for(int i = 0; i < accessorMethods.length; i++){
                        Object fieldObj = null;
                        try{
                             fieldObj = accessorMethods.invoke();
                             1. Primitive Wrapper or String(base case)
                             if(fieldObj instanceof Integer || fieldObj instanceof Float || fieldObj instanceof Double
                                  || fieldObj instanceof Long || fieldObj instanceof String){
                                  buffer.append("<" + accessorMethods[i].getAccessorFieldName() + ">");
                                  buffer.append(accessorMethods[i].invoke());
                                  buffer.append("</" + accessorMethods[i].getAccessorFieldName() + ">\n");
                             else if(fieldObj instanceof Object[]){
                                  buffer.append("<" + accessorMethods[i].getAccessorFieldName() + ">\n");
                                  Object[] fieldArray = (Object[])fieldObj;
                                  for(int j = 0; j < fieldArray.length; j++)
                                       buffer.append(getXML(fieldArray[i]));
                                  buffer.append("</" + accessorMethods[i].getAccessorFieldName() + ">\n");
                        }catch(Exception e){
                             System.out.println("Couldn't invoke method: " + accessorMethods[i].getName());
              buffer.append("</" + obj.getClass().getName() + ">\n");
              return buffer.toString();
         * Returns the Object representation for the XML - used to rebuild Java objects
         * converted to XML by XMLDAO.getXML().
         public static Object getObject(String xmlString) throws ParserConfigurationException,
              SAXException, IOException{
              //the root element is the class name
              DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
              DocumentBuilder builder = factory.newDocumentBuilder();
              Document document = builder.parse(xmlString);
              Stack objectStack = new Stack();
              return getObject(document);
         private static Object getObject(Node n){
              //every document is either an object or a bean property
              //all bean properties have values
              //no object has a value, it can only have bean properties
              //the base case occurs when the document has a value
              String nodeName = n.getNodeName();
              if(n.getNodeValue() == null){
                   System.out.println("node " + nodeName + " is an object");
              else{
                   System.out.println("node " + nodeName + " is a bean property");
              return null;
         * Returns all of the "getter" methods for the given object
         private static AccessorMethod[] getAccessorMethods(Object obj){
              Class theClass = obj.getClass();
              Method[] objMethods = theClass.getMethods();
              ArrayList methodList = new ArrayList();
              for(int i = 0; i < objMethods.length; i++){
                   try{
                        methodList.add(new AccessorMethod(obj, objMethods[i]));
                   }catch(IllegalArgumentException e){}
              return (AccessorMethod[])methodList.toArray(new AccessorMethod[methodList.size()]);
         * Invokes the specified "getter" method and returns the result as an Object
         private Object invokeAccessorMethod(Object obj, Method m) throws IllegalAccessException,
              InvocationTargetException{
              return m.invoke(obj, null);
    package com.uhg.aarp.compas.persistence.common.xml;
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;
    * Represents an AccessorMethod (i.e. getField()) on an Object
    public class AccessorMethod{
         private Object obj;
         private Method m;
         private String accessorFieldName;
         * Constructor for AccessorMethod
         public AccessorMethod(Object obj, Method m) throws IllegalArgumentException{
              1. Method name starts with get
              2. Method name does not equal get
              3. Method takes no arguments
              4. Method return type is not void
              String methodName = m.getName();
              if(methodName.indexOf("get") != 0 || methodName.length() == 3 &&
                   m.getParameterTypes().length != 0 && m.getReturnType() != null){
                   throw new IllegalArgumentException("Not a valid getter method " + methodName);
              this.obj = obj;
              this.m = m;
              String tempName = m.getName().substring(3, m.getName().length());
              this.accessorFieldName = Character.toLowerCase(tempName.charAt(0)) + tempName.substring(1, tempName.length());
         public Object invoke() throws IllegalAccessException, InvocationTargetException{
              return m.invoke(obj, null);
         * Gets the m
         * @return Returns a Method
         public Method getM() {
              return m;
         * Sets the m
         * @param m The m to set
         public void setM(Method m) {
              this.m = m;
         * Gets the accessorFieldName
         * @return Returns a String
         public String getAccessorFieldName() {
              return accessorFieldName;
         * Sets the accessorFieldName
         * @param accessorFieldName The accessorFieldName to set
         public void setAccessorFieldName(String accessorFieldName) {
              this.accessorFieldName = accessorFieldName;
         * Gets the obj
         * @return Returns a Object
         public Object getObj() {
              return obj;
         * Sets the obj
         * @param obj The obj to set
         public void setObj(Object obj) {
              this.obj = obj;
         public String getName(){
              return this.m.getName();
    I'm having some trouble figuring out how to implement the XMLDAO.getObject(Node n) method. I was thinking of maintaining a Stack of the previous Objects as I traverse the DOM, but I think that might be unnecessary work. Basically I'm wondering how I determine what the last "object" is in the DOM from any given node. Anyone have any input?

    I think the end of my post got cut off:
    I'm having some trouble figuring out how to implement the XMLDAO.getObject(Node n) method. I was thinking of maintaining a Stack of the previous Objects as I traverse the DOM, but I think that might be unnecessary work. Basically I'm wondering how I determine what the last "object" is in the DOM from any given node. Anyone have any input?

  • RFC to XML-RFC Parsing issue in RFC Adapter as Sender

    Hi all,
    I tried to use RFC adapter as a sender. The scenario I am trying to achieve is R3 -> RFC Adapter Sender --> BPM --> RFC Adapter Receiver --> SAP Auto-ID system.
    The reason to use two RFC adapter and BPM is to log the request message if the RFC call fails. Everything works as expected, except the RFC Adapter Sender.
    The RFC I am calling has an input table. The input data I use works fine if I call it via SE37 or remotely from another SAP system. However, if I call it via RFC adapter, when XI parses the data into RFC-XML format, the input data is all messed up.
    DATA: BEGIN OF ID_STR,
            ID_VERSION(8)       TYPE C,
            ID(96)              TYPE C,
            ELEMENT_NAME(50)    TYPE C,
            ELEMENT_VALUE(128)  TYPE C,
          END OF ID_STR.
    DATA: it_id LIKE TABLE OF ID_STR,
          ls_id LIKE ID_STR.
    ls_id-ID_VERSION = 'EPC_1.30'.
    ls_id-ID = '30340242206DC3C00000000A'.
    ls_id-element_name = 'BATCH_ID'.
    ls_id-element_value = 'BATCH001'.
    APPEND ls_id TO it_id.
    CALL FUNCTION '/AIN/UI_MOBILE_MSG_SEND'
      IN BACKGROUND TASK
      DESTINATION  'RFC_UPDATEAII'
      EXPORTING
        IV_BUSINESS_PROCESS       = '09'
        IV_COMMAND                = 'DO'
        IV_ACTION_TYPE            = 'APL2'
        IV_PRT_ID                 = '31140242200000000F000000'
        IV_DEVGRP_EXTID           = 'MOBILE'
      TABLES
        IT_ID                     = it_id
      commit work.
    And the parsed RFC-XML message is:
    <?xml version="1.0" encoding="UTF-8" ?>
    <rfc:_-AIN_-UI_MOBILE_MSG_SEND
    xmlns:rfc="urn:sap-com:document:sap:rfc:functions">
    <IV_ACTION_TYPE>APL2</IV_ACTION_TYPE>
    <IV_BTD_EXTID />
    <IV_BTD_TYPE />
    <IV_BUSINESS_PROCESS>09</IV_BUSINESS_PROCESS>
    <IV_COMMAND>DO</IV_COMMAND>
    <IV_DEVGRP_EXTID>MOBILE</IV_DEVGRP_EXTID>
    <IV_LOC_EXTID />
    <IV_LOC_TYPE />
    <IV_PRT_ID>31140242200000000F000000</IV_PRT_ID>
    <IV_PRT_ID_VERSION />
    <IV_REASON_CODE />
    <IV_UNAME/>
    <ET_RETURN />
    <IT_ID>
    <item>
    <ID_VERSION>EPC_1.30</ID_VERSION>
    <ID>206DC3C00000000A BATCH_ID</ID>
    <ELEMENT_NAME />
    <ELEMENT_VALUE />
    </item>
    </IT_ID>
    </rfc:_-AIN_-UI_MOBILE_MSG_SEND>
    You can see the data in the table is all wrong, it should be:
    <IT_ID>
    <item>
    <ID_VERSION>EPC_1.30</ID_VERSION>
    <ID>30340242206DC3C00000000A</ID>
    <ELEMENT_NAME>BATCH_ID</ELEMENT_NAME>
    <ELEMENT_VALUE>BATCH001</ELEMENT_VALUE>
    </item>
    </IT_ID>
    The calling system is a 4.6C non-unicode system, and the destination system is a unicode system (this does not matter since the first part of the integration is between R3 and XI). There is no config found on R3 side to specify non-unicode because it is a rather old system. In XI RFC Adapter config, I checked non-unicode checkbox (I also tested it with this unchecked, but still the same issue).
    Have any of you seen this problem and how you resolve it?
    Thanks a lot for your help!
    Regards,
    Hart

    Hi Hart
    long time no seen - hope you remember me
    >The reason to use two RFC adapter and BPM is to log the request message if the RFC call fails
    there is an easy way (guess max 3-4 hours) to solve all of your issues
    and get rid of a BPM
    use IDOC - XI - ABAP Proxy
    then you will have IDOC and ABAP Proxy that always log the message on both ends (and you can restart ABAP proxies easily in AII - and every AII supports ABAP proxies) + you get rid of a BPM as it's not necessary as far as I understand (as it's asyn communication right?)
    maybe you can go this way and IDOCs always work...
    good luck,
    Regards,
    Michal Krawczyk
    http://mypigenie.com XI/PI FAQ

  • Regarding rfc and idoc sender

    hi
       can any one provide me with some scenarios having
    idoc and rfc as senders.

    Hi
    To Configure the RFC to FILE scenario ,Proceed as Follows
    a.       Create an RFC Destination to XI in transaction code  (SM59)
    b.       Create new destination of type T (TCP/IP)
    c.       Make sure you select Registered Server Program option before writing your program ID
    d.       Write you program ID (remember it's case-sensitive)
    e.       In the gateway host and gateway service write the values of your Application system - business system (not the XI server)
                 Step2:Repository
    1)       From the Integration Builder page, select “Integration Repository”. This will launch the Java Web Start Application. Log with the User id and password from the  Integration Server
    2)       Choose Tools->Transfer from System Landscape Directory->Import Software Component Versions
             From the list of Software Component Versions, Choose your own software component version .Click Import.
    3)       On the left hand side frame ,software components will appear .Select your own software component. Open your own software component. Double click on this  software component. A screen will appear .Switch to display mode. After doing this first add  a namespace under Namespaces.
             The namespace is ur:rfctofile
    4)       Then choose the Radio Button ->Import of RFC AND IDOC interfaces from SAP systems permitted
             After this specify the connection parameters to the R/3 system:
    4.1)     System IS  :sapfox
    4.2)     Client IS :800
             Then Save it. The new namespace will be visible under software component version node in the left frame.
             Under the namespace node,  you will find the section Imported Objects. Right click on it and choose Import of sap objects. A wizard will display. In the wizard provide the following details.
    4.3)     Application server:172.25.5.7
    4.4)     System number: 00
    4.5)     User name:developer
    4.6)     Password: Password of Sap R/3 system.
             Then click continue .You will find IDOC and RFC node. Click on this node and select the   Idoc or Rfc which is to be imported from R/3. Click Finish to start the Import. Close the wizard. After doing this the   Rfc and  Idoc will be available into XI as Message types. So no need to create any Rfc or Idoc Structure. We need to create a structure for file only.
    5).      Under your namespace in the left frame, expand the node “Interface objects”. You will find a node “DATA TYPES”
    6)        Create new data types.
    6.1)      Right click on “Data types” and select “New”.
               Your  Data Type is. dt_file
              In the data type Editor ,Create a structure having Elements of type String  ,  integer,  Boolean , Float etc as per the requirement.
              Save the object.
    6.2)      The Import function for XSD  files enables you to upload message definitions from external sources. The object type “External Definition” is a container to make external definitions available in the Integration Repository.. While Importing the XSD files from “External Definition
              no need to create Data types. They are imported directly as Message types.
    6.3)      To do so, In the left hand frame  Under  ” Interface objects” Create a new object of type “External Definition” and give name to it.
              Select the following.
    6.3.1)    Category: XSD.
    6.3.2)    Messages: From All Available Global Elements.
    6.3.3)    File:
              Once the XSD is imported, click on “Message” tab , You should be able to see 2 messages(Request and Response)
    7).      Create a new Message  Type.
    7.1)     In the left hand frame under “Interface objects”, right click on the “Message types” and select new.
    7.2)     Give a suitable name to the Message type.(MT_ messagetype).
    7.3)     For the section “Data type used” you can go to input help (F4) or Search help provided and choose your data type (DT_datatype) from there.
             Save it.
    8).     Create a Message interface
    8.1)    In the left hand frame under “Interface objects”, right click on the “Message Interface” and select new and name(MI_ messageinterface) it
    8.2).   The interface Should be  Inbound  and mode should be Asynchronous  .It should reference your Message type(Use F4 or Search help).
            Save it.
    9) .    Create a graphical mapping  between the target document and the sender .
    9.1)    In the left hand frame ,expand “Mapping objects”. Right click on “Message mapping” and name it.You are now in a graphical editor.The Source message is on left, the Target message is on right.
    9.2)    As Source message select  your own  Message type.You can choose “Search  for Integration Object”.As a reminder you can find your Idoc or Rfc under Software Component-  >     Namespace->Imported Objects.
    9.3)    As Target Message you can choose your  Rfc .Choose “Search  for Integration Object”.
    9.4)    Now that we have defined the  Source and Target message, we can start defining the Mapping rules.
    9.5)    Map the fields of  Source document  to the equivalent fields in  Target document .This can be achieved easily by locating the field in Target document and then Drag and Drop the   Source fields to the respective Target Fields.
            Save It.
    9.6)    You can also Test your Mapping by selecting the 'Test Tab'.
    9.7)    Fill in the values in the Idoc fields and click 'Start Transformation'. On the right hand side you will see Target Document populated with the appropriate Values.
    10).     Create an Interface Mapping.
    10.1)   In the left hand Frame  expand “Mapping objects”. Right Click on “Interface Mapping” and  Name it. You are in a Interface Mapping Editor .Assign the following References.
    10.2)   Source interface : Your Outbound Interface (The Source document(Rfc) interface).You can Choose” Search  for Integration Object”.
    10.3)   Target interface:    Your Inbound Interface( The Target document interface).
            Then Select  'Read Interface' and Assign your  'Mapping Program' .
            Mapping Program: Your Message mapping.
            Then Save it.
    11.)    Finally , in the left hand frame ,go to your change list and Activate it
               STEP 3: Directory
    1)      From the Integration Builder page, select “Integration Directory”. This will launch the Java Web Start Application. Log with the User id and password from the  Integration Server.
            Create a Scenario Object
    2).     The First Step is to create a Scenario Object
            This will serve as container for all your configuration work. Create and save a scenario object
    3)      In the left hand frame you can see the created scenario object. Under that Object Expand the node “Service without Party” and right –click on “Business System”->Assign Business System
    4)      In the wizard , leave the party name blank and then select  your own Business System. Uncheck the box ”Create Communication Channel Automatically”.This service (business system) represents the legacy system and Sap R/3 which will be exchanging the data.
    5) .    Create a Communication Channel.
    6).     Expand your service and right click on “Communication Channel”. Name your Communication Channel
            Here we need to configure the adapter.
        Since the Sender is 'RFC', Specify the following Parameters
             For the adapter type , use the F4 help  and select RFC.
             Specify “Sender” since the adapter will be  sending messages to XI
             Specify the following parameters.
             Transport Protocol: RFC
             Message Protocol:   RFC(RFC XML )
             Adapter Engine: Integration Server
             Adapter status: Active
             RFC Server Parameter:
             Application Server(Gateway):172.25.5.7
             Application Server Service(Gateway Service): sapgw00
             Program Id: Id of Registered server program ( it is case sensititve)
             And the adapter is configured. Save it
              Since the Receiver  is File , Specify the following Parameters
    6.1       For the adapter type , use the F4 help  and select FILE.
    6.2       Specify “Receiver” since the adapter will be  sending XML files from XI to the  FTP server.
    6.3       Specify the following parameters.
              Transport Protocol: File Transport Protocol.(FTP)
              Message Protocol: File Content Conversion(since the xml files produce by XI need to be converted to text files)
              Adapter Engine: Integration Server
              For the File system access Parameters, enter the following
              Source Directory:Test
              File Name: Input.txt
    6.4       For the FTP Connection Parameters, Specify the Following
              Server:172.25.5.240
              Port: 21(by default)
              Data Connection: Passive
              Connection security: None
              Connection Mode:  Permanently
              Transfer Mode: Binary
    6.5       For Processing Parameters, Specify the following
              File construction mode: Add Time Stamp
              File Type: Binary
    6.6       For Content Conversion Parameters, Specify the Following
              RecordSet Structure:
              Adapter Status: Active
              The receiver file adapter is now configured. Save your Communication Channel.
               Create an Receiver Determination.
    7).       From the left frame Create a new “Receiver Determination” object. This is the main part of routing process, where you assign a receiver for your message.
    7.1)      Select your sender service and interface.
              Sender:
              Party:  blank
              Service:  Sender service(Business system)
              Interface : Sender interface
    7.2)      In the “Configured Receivers” area ,  choose the Service for the Target System.. Save your Receiver Determination
                Create an Interface Determination.
    7.3)       Next create an “Interface Determination” object. Now that we have defined a receiver of message  ,we need to assign an Inbound interface and an Interface mapping
    7.3.1)     In the Receiver Determination   you just created, have a look at the area “Configuration Overview for Receiver Determination”   at bottom of your screen and press Refresh  for that the Business system you assigned is displayed  in that area as well.
    7.3.2)     In the column “Receiver(Partner/Service)” open the details by clicking the node .The Entry “Not defined” shows you that there is no interface determination present.
               Right click on the Entry “Not defined” and select “ New specific”,  in order to create a new interface determination object
    7.3.3)     You are now in  the screen “Edit Interface Determination”. In the section “Configured Inbound Interfaces” select the Inbound Interface using F4 help Provided. You might need to choose ALL button for the interface to be shown.
               After choosing the Inbound Interface,  It is shown in the Interface Determination
    7.3.4)     A mapping has to be specified .Use the F4 help next to Inbound Interface to select your Interface Mapping.
    7.3.5)     When you are done ,  Save the Interface determination object.
    8.)         Create a Sender Agreement.
               In the left hand frame , right click on “Sender Agreement” ->New
    8.1)       Specify the following:
               Party: blank
               Service: Select your own Business system
               Interface: Outbound Interface
    8.2)       In the screen “Edit Service Agreement” use F4 help for the Sender Communication channel field .Select your Communication channel .Save and close
    9.)         Create a Receiver Agreement.
               Finally you will create a  'Receiver Agreement' .This will allow you to assign a Receiver Communication Channel to the receiver service/Interface you have chosen.
    9.1)       Go back to the main screen for your receiver determination. In the area “Configuration Overview for Receiver Determination” at the bottom of your screen click Refresh.
    9.2)       In the Column “Receiver Agreement(Communication Channel) “ right click and select “New Specific”.
               Specify the following:
               Party: blank
               Service: Select your own Business system
               Interface: Inbound Interface
    9.3)       In the screen ”Edit Receiver Agreement” for the field Receiver Communication Channel use  the input help F4 and select your communication channel. Save and Close it
               Your Configuration is complete. Activate the objects.
    To Configure the IDOC TO FILE SCENARIO,PROCEED AS FOLLOWS
    STEP 1:ALE SETTINGS TO POST IDOC OUT OF SAP R/3
    We need to do the following settings in XI
    1)   Create an RFC Destination to the Sending System in transaction code (SM59)
    a)   Choose create
    b)   Specify the name of the RFC destination
    c)   Select connection type as 3 and save
    d)   In the technical settings tab enter the details SAP SID/URL and system number#
    e)   Enter the Gateway host as same details above SID/URL
    f)   Gateway service is 3300+system number#
    g)   In the Logon /Security tab, enter the client user & Password details of Destination system
    h) Test the connection and remote logon.Both should be succesful
    2) Create Port Using Transaction Code  IDX1
    a)   Select create new button
    b)   Enter the port name as SAP+SID (The starting char should be SAP)
    c)   Enter the destination client
    d)   Enter the RFC Destination created in SAP R/3 towards other system
    e)   Save
    3) Load Meta Data for IDOC Using transaction Using Transaction (IDX2)
    a)  Create new
    b)  IDOC Message Type
    c)  Enter port created in IDX1
                        SETTINGS IN SAP R/3
         We need to do the following settings in R/3
         Logon to Sap R/3 System
    1)   Create an RFC Destination to XI in transaction code  (SM59)
    a)   Choose create
    b)   Specify the name of the RFC destination
    c)   Select connection type as 3 and save
    d)   In the technical settings tab enter the details SAP SID/URL and system number#
    e)   Enter the Gateway host as same details above SID/URL
    f)   Gateway service is 3300+system number#
    g)   In the Logon /Security tab, enter the client user & Password details of Destination system
    h)   Test the connection and remote logon.Both must be succesful
    2)   Create communication Port for Idoc processing Using Transaction(We21)
    a)   First Select Transactional RFC and then click create button
    b)   Enter the destination port name as SAP+SID (The starting char should be SAP)
    d)   Enter the RFC Destination created in SAP R/3 towards other system.
    e)   Save
    3)   Create Partner Profile with Outbound Parameters (WE20)
    a)   Create New
    b)   Create the Partner no. name as same the logical system name of the destination system
    c)   Select Partner type LS
    d)   Enter details for Type: US/USER, Agent, and Lang
         Then Save
    e)   Select Partner no. and LS which were create above
    f)   Now we have to give some Outbound Parameters.So click on ADD TO Create Outbound Parameter
    g)   Select Message type
    h)   Double click on Message Type and Then Enter the details  for Receiving port, Pack size=1 and Basic type
    I)   save
    4)   In Transaction SALE, Create Logical System
    a).  Go to Basic Settings-> First Define logical systems
         and then assign logical systems
    b)   Double click on Define the logical systems
    c)   Give data for your Logicaal System and Name
    d)   Now click on Save.Here one window may appear just click on Continue.Now the Logical System name is ready
    e)   Assign the logical system name to the client
    5)   Create Customer Distribution model in the transaction code BD64
    1)   Click on the Create modal View button and enter the short text, Technical name etc as shown below
    2)   Now select the created model view and click on Add message type button .A pop up box appears, enter Sending system, receiving system and message type
    3)   Save the Distribution model
        Generate Partner Profiles
    Click on Menu Item ‘Generate Partner Profiles’
        It leads to the next transaction where in the selection screen you have to provide Model view name, Partner System logical system and execute
        Then, you will be intimated about the partners, port creation, and outbound parameters creation
    4)   Distribute Customer Distribution Model
        In the menu item  GO to Edit->Modal View-> ‘Distribute’ to the destination client
        Popup window appears ,press Enter
    You will be intimated about the the Modal View Distributed
                 Step2:Repository
    1)       From the Integration Builder page, select “Integration Repository”. This will launch the Java Web Start Application. Log with the User id and password from the  Integration Server
    2)       Choose Tools->Transfer from System Landscape Directory->Import Software Component Versions
             From the list of Software Component Versions, Choose your own software component version .Click Import.
    3)       On the left hand side frame ,software components will appear .Select your own software component. Open your own software component. Double click on this  software component. A screen will appear .Switch to display mode. After doing this first add  a namespace under Namespaces.
             Your NameSpace is  urn:idoctofile
    4)       Then choose the Radio Button ->Import of RFC AND IDOC interfaces from SAP systems permitted
             After this specify the connection parameters to the R/3 system:
    4.1)     System  :sapfox
    4.2)     Client  :800
             Then Save it. The new namespace will be visible under software component version node in the left frame.
             Under the namespace node,  you will find the section Imported Objects. Right click on it and choose Import of sap objects. A wizard will display. In the wizard provide the following details.
    4.3)     Application server:172.25.5.7
    4.4)     System number:00
    4.5)     User name: developer
    4.6)     Password: Password of Sap R/3 system.
             Then click continue .You will find IDOC node. Click on this node and select the   Idoc  which is to be imported from R/3. Click Finish to start the Import. Close the wizard. After doing this the    Idoc will be available into XI as Message types. So no need to create any  Idoc Structure. We need to create a structure for file only.
    5).      Under your namespace in the left frame, expand the node “Interface objects”. You will find a node “DATA TYPES”
    6)        Create new data types.
    6.1)      Right click on “Data types” and select “New”.
               Your Data Type is :dt_file
              In the data type Editor ,Create a structure having Elements of type String  ,  integer,  Boolean , Float etc as per the requirement.
              Save the object.
    6.2)      The Import function for XSD  files enables you to upload message definitions from external sources. The object type “External Definition” is a container to make external definitions available in the Integration Repository.. While Importing the XSD files from “External Definition
              no need to create Data types. They are imported directly as Message types.
    6.3)      To do so, In the left hand frame  Under  ” Interface objects” Create a new object of type “External Definition” and give name to it.
              Select the following.
    6.3.1)    Category: XSD.
    6.3.2)    Messages: From All Available Global Elements.
    6.3.3)    File:
              Once the XSD is imported, click on “Message” tab , You should be able to see 2 messages(Request and Response)
    7).      Create a new Message  Type.
    7.1)     In the left hand frame under “Interface objects”, right click on the “Message types” and select new.
    7.2)     Give a suitable name to the Message type.(MT_ messagetype).
    7.3)     For the section “Data type used” you can go to input help (F4) or Search help provided and choose your data type (DT_datatype) from there.
             Save it.
    8).     Create a Message interface
    8.1)    In the left hand frame under “Interface objects”, right click on the “Message Interface” and select new and name(MI_ messageinterface) it
    8.2).   The interface Should be  Inbound  and mode should be Asynchronous  .It should reference your Message type(Use F4 or Search help).
            Save it.
    9) .    Create a graphical mapping  between the target document and the sender .
    9.1)    In the left hand frame ,expand “Mapping objects”. Right click on “Message mapping” and name it.You are now in a graphical editor.The Source message is on left, the Target message is on right.
    9.2)    As Source message select  your own Idoc .You can choose “Search  for Integration Object”.As a reminder you can find your Idoc or Rfc under Software Component-  >     Namespace->Imported Objects.
    9.3)    As Target Message you can choose your Message type  .Choose “Search  for Integration Object”.
    9.4)    Now that we have defined the  Source and Target message, we can start defining the Mapping rules.
    9.5)    Map the fields of  Source document  to the equivalent fields in  Target document .This can be achieved easily by locating the field in Target document and then Drag and Drop the   Source fields to the respective Target Fields.
            Save It.
    9.6)    You can also Test your Mapping by selecting the 'Test Tab'.
    9.7)    Fill in the values in the Idoc fields and click 'Start Transformation'. On the right hand side you will see Target Document populated with the appropriate Values.
    10).     Create an Interface Mapping.
    10.1)   In the left hand Frame  expand “Mapping objects”. Right Click on “Interface Mapping” and  Name it. You are in a Interface Mapping Editor .Assign the following References.
    10.2)   Source interface : Your Outbound Interface (The Source document(Idoc) interface).You can Choose” Search  for Integration Object”.
    10.3)   Target interface:    Your Inbound Interface( The Target document interface).
            Then Select  'Read Interface' and Assign your  'Mapping Program' .
            Mapping Program: Your Message mapping.
            Then Save it.
    11.)    Finally , in the left hand frame ,go to your change list and Activate it
               STEP 3: Directory
    1)      From the Integration Builder page, select “Integration Directory”. This will launch the Java Web Start Application. Log with the User id and password from the  Integration Server.
            Create a Scenario Object
    2).     The First Step is to create a Scenario Object
            This will serve as container for all your configuration work. Create and save a scenario object
    3)      In the left hand frame you can see the created scenario object. Under that Object Expand the node “Service without Party” and right –click on “Business System”->Assign Business System
    4)      In the wizard , leave the party name blank and then select  your own Business System. Uncheck the box ”Create Communication Channel Automatically”.This service (business system) represents the legacy system and Sap R/3 which will be exchanging the data.
    5) .    Create a Communication Channel.
    6).     Expand your service and right click on “Communication Channel”. Name your Communication Channel
            Here we need to configure the adapter.
         Since The Sender is IDOC , then there is no need of Sender communication channel and Sender Agreement.
              For the Receiver, Specify the following Parameters
    6.1       For the adapter type , use the F4 help  and select FILE.
    6.2       Specify “Receiver” since the adapter will be  sending XML files from XI to the  FTP server.
    6.3       Specify the following parameters.
              Transport Protocol: File Transport Protocol.(FTP)
              Message Protocol: File Content Conversion(since the xml file produce by XI need to be converted to text file)
              Adapter Engine: Integration Server
              For the File system access Parameters, enter the following
              Source Directory:Test
              File Name: Input.txt
    6.4       For the FTP Connection Parameters, Specify the Following
              Server: 172.25.5.240
              Port: 21(by default)
              Data Connection: Passive
              Connection security: None
              Connection Mode:  Permanently
              Transfer Mode: Binary
    6.5       For Processing Parameters, Specify the following
              File construction mode: Add Time Stamp
              File Type: Binary
    6.6       For Content Conversion Parameters, Specify the Following
              RecordSet Structure:
              Adapter Status: Active
              The receiver file adapter is now configured. Save your Communication Channel.
               Create an Receiver Determination.
    7).       From the left frame Create a new “Receiver Determination” object. This is the main part of routing process, where you assign a receiver for your message.
    7.1)      Select your sender service and interface.
              Sender:
              Party:  blank
              Service:  Sender service(Business system)
              Interface : Sender interface
    7.2)      In the “Configured Receivers” area ,  choose the Service for the Target System.. Save your Receiver Determination
                Create an Interface Determination.
    7.3)       Next create an “Interface Determination” object. Now that we have defined a receiver of message  ,we need to assign an Inbound interface and an Interface mapping
    7.3.1)     In the Receiver Determination   you just created, have a look at the area “Configuration Overview for Receiver Determination”   at bottom of your screen and press Refresh  for that the Business system you assigned is displayed  in that area as well.
    7.3.2)     In the column “Receiver(Partner/Service)” open the details by clicking the node .The Entry “Not defined” shows you that there is no interface determination present.
               Right click on the Entry “Not defined” and select “ New specific”,  in order to create a new interface determination object
    7.3.3)     You are now in  the screen “Edit Interface Determination”. In the section “Configured Inbound Interfaces” select the Inbound Interface using F4 help Provided. You might need to choose ALL button for the interface to be shown.
               After choosing the Inbound Interface,  It is shown in the Interface Determination
    7.3.4)     A mapping has to be specified .Use the F4 help next to Inbound Interface to select your Interface Mapping.
    7.3.5)     When you are done ,  Save the Interface determination object.
    8.)         Create a Sender Agreement.
               In the left hand frame , right click on “Sender Agreement” ->New
    8.1)       Specify the following:
               Party: blank
               Service: Select your own Business system
               Interface: Outbound Interface
    8.2)       In the screen “Edit Service Agreement” use F4 help for the Sender Communication channel field .Select your Communication channel .Save and close
    9.)         Create a Receiver Agreement.
               Finally you will create a  'Receiver Agreement' .This will allow you to assign a Receiver Communication Channel to the receiver service/Interface you have chosen.
    9.1)       Go back to the main screen for your receiver determination. In the area “Configuration Overview for Receiver Determination” at the bottom of your screen click Refresh.
    9.2)       In the Column “Receiver Agreement(Communication Channel) “ right click and select “New Specific”.
               Specify the following:
               Party: blank
               Service: Select your own Business system
               Interface: Inbound Interface
    9.3)       In the screen ”Edit Receiver Agreement” for the field Receiver Communication Channel use  the input help F4 and select your communication channel. Save and Close it
               Your Configuration is complete. Activate the objects.
    plz rewards points
    vikas

  • Error while executing WS to RFC sync on 7.4 single stack

    Hi Experts
    I am working in ws..>sap pi..>Rfc sync scerio
    when  I have entered the data in RFC its working fi9 but I am using SOAPUI to test it, it's giving me error:
    <text>com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.aii.adapter.rfc.afcommunication.RfcAFWException: error while processing message to remote system:com.sap.aii.adapter.rfc.core.client.RfcClientException: functiontemplate from repository was &lt;null>
    pls note that I have reimported the RFC 
    pls suggest!

    Refer to question no 16 under the below note
    730870 - FAQ XI 3.0/ PI 7.0/ PI 7.1/ PI 7.11/ PI 7.2/ 7.3 RFC Adapter
    Q 16: While sending a message to the RFC Adapter the error "... functiontemplate from repository was <null>" is shown. What is the reason?
                  A: After receiving a message from the Adapter Engine, the RFC Adapter extracts the payload from the message. Normally this should be an XML document in the RFC-XML format. In this format the root element of the XML document represents the name of the function module and is enclosed in the fixed RFC namespace 'urn:sap-com:document:sap:rfc:functions'. But this only will be checked at a later point, when the conversion from XML to native RFC is done. As prerequisite of this conversion the structures and types of the function module parameters has to be known. This is also called metadata or function template. To get this function template the name of the function module is extracted from the root element of the XML document and is queried against the metadata repository of the communication channel. If the metadata repository doesn't have a function module with this name, the exception named above is thrown. Possible reasons are
    The XML document, which was sent to the RFC Adapter, is not a RFC-XML document. So the root element name of this document is not the name of a function module and thus can't be found in the metadata repository.
    The metadata repository doesn't contain an entry for this function module name. Normally the metadata repository will be an R/3 system and it's function module repository can be searched with the transaction SE37.

  • JDBC to RFC- Error in RWB

    Gurus,
    Background :We have fresh installation of SAP PO 7.3 (Single Stack ) on SQL Server 2013.
    Scenraio is : JDBC to RFC async scerio; i can pull data from SQL database but not able to post to SAP
    Please advise what to do.
    I always provide points for helpful answers

    Hi V Jay - Did you check the below thread?
    RfcClientException: functiontemplate from repository was <null>
    Q 16: While sending a message to the RFC Adapter the error "... functiontemplate from repository was <null>" is shown. What is the reason?
                  A: After receiving a message from the Adapter Engine, the RFC Adapter extracts the payload from the message. Normally this should be an XML document in the RFC-XML format. In this format the root element of the XML document represents the name of the function module and is enclosed in the fixed RFC namespace 'urn:sap-com:document:sap:rfc:functions'. But this only will be checked at a later point, when the conversion from XML to native RFC is done. As prerequisite of this conversion the structures and types of the function module parameters has to be known. This is also called metadata or function template. To get this function template the name of the function module is extracted from the root element of the XML document and is queried against the metadata repository of the communication channel. If the metadata repository doesn't have a function module with this name, the exception named above is thrown. Possible reasons are
    The XML document, which was sent to the RFC Adapter, is not a RFC-XML document. So the root element name of this document is not the name of a function module and thus can't be found in the metadata repository.
    The metadata repository doesn't contain an entry for this function module name. Normally the metadata repository will be an R/3 system and it's function module repository can be searched with the transaction SE37
    Reference :  730870 - FAQ XI 3.0/ PI 7.0/ PI 7.1/ PI 7.11/ PI 7.2/ 7.3 RFC Adapter

Maybe you are looking for