Mapping problem wsdl to idoc

Hi all,
            I am using a external defination in a webservice scenario.When I import the wsdl file into the message mapping its not showing the structure of the message type of the wsdl.Now please suggest me how can I map it to a idoc structure.The message type is of xsd string ,its just being shown in the wsdl

hi Abhishek,
for your scenario, WS to IDOC you have to create the WSDL in PI.
you have to define the DT,MT and MI and later in integration directory once you define the communication channel type SOAP sender, you have to go>tools>define Web Services.
see this
Soap Sender Channel Config
Thanks
Rodrigo

Similar Messages

  • Mapping Problem ORDERS Idoc to Edifact

    Hi,
    I have a mapping problem with the IDOC ORDERS:
    I get the IDOC with several E1EDP01. Each E1EDP01 has several E1EDPT1, where i want only the first one (which I get over the TDID value). Each E1EDPT1 has min. 1 E1EDPT2.
    Now I have to map each field TDLINE from first two E1EDPT2 of the first E1EDPT1 to the Edifact fields /LIST/S_UNB/S_UNH/G_SSG25/S_LIN/S_IMD[1]/C_C273/D_7008 (from the first E1EDPT2) and, if a second E1EDPT2 exists in /LIST/S_UNB/S_UNH/G_SSG25/S_LIN/S_IMD[1]/C_C273/D_7008_2.
    I use following UDF:
    //a = TDLINE
    //b = Number of entry in the List
    int pos =Integer.parseInt(b[0]);
    if ( pos < a.length )
    result.addValue(a[pos]);
    else
    result.addValue(ResultList.SUPPRESS);
    Unfortunatly, I think becaus of the context problems (not every E1EDPT1 has two E1EDPT2), it's not working. Could somebody help me with this problem?
    Thanks in advance
    Dominic

    Dear Dominic ,
    I had same problem when I was trying to do the same thing for FTX segment.
    Your UDF is fine but you don't need else condition.
    //a = TDLINE
    //b = Number of entry in the List
    int pos =Integer.parseInt(b[0]);
    if ( pos < a.length )
    result.addValue(a[pos]);
    for C_C273 assigned contant value and
    D_7008 assigned TDLINE but change the context to E1EDPT1
    and for D_7008_2
    TDLINE(context to E1EDPT1 )
                                                      ====>UDF====>D_7008_2
    Contant(=1)
    It should work becasue my map is working fine. If not let me know error message.
    Thanks
    Shubhankar

  • Mapping problem: IDOC - XI - File

    Hi,
    in my scenario (Z-IDOC - XI - File) I have problems with the mapping:
    Z-IDOC :
    ZFIBUCH1
    _IDOC
    ___Begin
    ___EDI_DC40
    ___Z1L061 (0..999999999)
    _____Z1L062 (0..999999999)
    example
    L061 18000 DE 0101 23236318 050605 EUR
    __L062 18000 XXX XXX
    __L062 18000 XX1 CCC3
    L061 87000 DE 0101 050605 EUR
    __L062 87000 XXX XXX
    __L062 87000 XX1 XAA4
    the result should look like this :
    L061 18000 DE 0101 23236318 050605 EUR
    L062 18000 XXX XXX
    L062 18000 XX1 CCC3
    L061 87000 DE 0101 050605 EUR
    L062 87000 XXX XXX
    L062 87000 XX1 XAA4
    I tried the following  (target)-data types in the mapping but nothing did’nt work very well :
    MT_ZIFUCH_FILE
    __ row
    _____L061
    _______L062
    or
    MT_ZIFUCH_FILE
    __ row
    _____L061
    _____L062
    or
    MT_ZIFUCH_FILE
    _____L061
    _____L062
    Do I need here a BPM? Or should I use XSLT-Mapping??
    Or knows somebody a easyer way?
    Regards
    Christoph

    Hi,
    As per  my understanding to have a flat file struture you would require a flat structure at the target side.One similar to the second structure mentioned by you.
    DT_Target
    |_Header
           |______L61.....segment (child of header)
           |______L62.....segment (child of header)
    Using the mapping we convert the idoc structure to flat structure and then use content conversion like this :
    Recordset structure : L61,L62
    L61.fieldSeparator = ,(for you this value should be space)
    L62.fieldSeparator = ,
    I have not been able to convert the Target hierarchial structure to a flat file via content conversion.
    when i tried I got the values as
    L61,1800,...EUR,L62,8700,......
    Hope this helps,
    Regards,
    Sulakshana

  • Context Mapping Problem from IDoc to EDI

    Hi,
    I'm trying to map an IDoc to an EDI and I get this problem.
    In my IDoc, I have segment E1ADRM1 (1:N)
    My mapping condition is if E1ADRM-PARTNER_Q = OSP then copy E1ADRM-REGION into x (EDI field)
    So here is my problem:
    In my IDoc test, the segment E1ADRM1 is repeated 6 times and the field REGION is not populated in all iterations so the wrong
    REGION is being copied to my EDI field.
    If I do a display queue on E1ADRM-PARTNER_Q, the value OSP is at the 5th position
    AG
    SP
    VE
    WE
    OSP  ***
    OSO
    If I do a display queue on E1ADRM-REGION, since only 5 segment E1ADRM have the field REGION populated, I get
    KS
    VA
    KS
    ON
    VA
    **(E1ADRM-PARTNER_Q = SP do not have the RIGION populated so not showing in the IDoc)
    So now, since E1ADRM-PARTNER_Q = OSP is at the 5th position, it is copying the 5th E1ADRM-REGION from the list but it should be the 4th.
    How can I do that?
    Rgds,
    Yves

    Hi,
    For the mapping to work as you are expecting the queue should look like this(<b>CC</b> denotes context change)..
    KS
    <b>CC</b>
    <b>CC</b>
    VA
    <b>CC</b>
    KS
    <b>CC</b>
    ON
    <b>CC</b>
    VA
    If you are not having the context changes, check at what level is field REGION at, right click on REGION in graphical mapping and choose menu item context, the 1st entry should have the tick mark(same should be for the PARTNER_Q field also).
    Thanks,
    Renjith.

  • IDOC DELVRY05 TO EDI 856 - Mapping problem

    Hi all,
    i'm currently working on a outbound mapping with the delivery idoc (DELVRY05) and the EDI 856 (Advance Shipping Notice Definition)
    The problem is that i can't map the items for every pack in the structure because the ocurrency doesn't match.
    The EDI 856 has a segment called G_SHL (ocurrence 0.200000), that i replicated 4 times for shipping, order, pack and item data
    And this segment has a subsegment called  G_SHL/S_HL (ocurrence 0.1)
    RESULT DESIRED GIVEN BY THE CLIENT: (1 pack/1item)
    3     HL1*S~                        ======> S: shipping, 1 hierarchy)
    4     TD1CTN251***G223.997*LB~
    5     TD5*2ABFSM*CC~
    6     REFBM003030987~
    7     REFCN086044619~
    8     DTM01120080128*180610~
    9     DTM06720080204~
    10     FOB*PP~
    11     N1SFStiefel Labs~
    12     N4DULUTHGA*30096~
    13     HL21*O~ ======> O: order, 2 hierarchy, 1 was the previous hierarchy)
    14     PRF*4064561~
    15     HL32*P~ ======> P : Pack, 3 hierarchy, 2 was the previous hierarchy
    16     MANGM00000734620052976193~
    17     HL43*I~  ======> I: Item , 4 hierchay, 3 was the previous hierarchy
    31     LIN*UP073462150651LT45X5147ND00145150605~
    32     SN1*12EA~
    33     DTM03620090930~
    34     HL52*P~  ======> P : Pack, 5 hierarchy, 2 was the previous hierarchy
    35     MANGM00000734620052975189~
    36     HL65*I~ ======> I: Item , 6 hierchay, 5 was the previous hierarchy
    37     LIN*UP073462150651LT45X5147ND00145150605~
    38     SN1*12EA~
    39     DTM03620090930~
    40     HL72*P~ ======> P : Pack,7 hierarchy, 2 was the previous hierarchy
    41     MANGM00000734620052975196~
    42     HL87*I~ ======> I: Item , 8 hierarchay, 7 was the previous hierarchy
    43     LIN*UP073462150651LT45X5147ND00145150605~
    44     SN1*12EA~
    45     DTM03620090930~
    46     CTT*8~
    47     SE479220014~
    As u see, all packs belong to "2 hierarchy" (order), and items to their correposding pack
    (has a comment, the "hierarchy number" is always given by a counter so u won't find the exact number again)
    so, the client wants us to create an structure that is like this..
    1º Pack
    1º item
    2º item
    2º Pack
    1º item
    2º item
    (the example has only one item, but they say that is going to be with many items)
    - The problem is that the structure data of the Idoc doesnt match EDI 856 structure
    E1EDL37 (0.99999)  -
    Pack data -
    G_SHL (0.200000)
    E1EDL37/E1EDL44 (0.99999) -
    Item data -
    G_SHL/HL (0.1) <====
    i was doing different G_SHL for pack and items but that leaves me with a wrong structure, and with all the hierarchy data wrong for items (since the mapping can't see which item belong to his pack)
    1º Pack
    2º Pack
    3º Pack
    1º Item
    2º Item
    3º Item
    - How can i map the structure Pack/item if in the idoc got too many item positions for only one EDI corresponding segment??
    Thanks in advance!

    Alains,
    We have the same tear, pack and item problem with one of our customer in one of my project. To acheive this result with the standard schema is not possible because this is a custom one.
    So I would suggest to change the schema in BIC like the occurrence and within the third G_SHL you should have S_HL and within this you should have a S_HL so that for every pack you will have multipe items.
    The bottom line is to have the schema as required by your mapping. Once you change the schema deploy the maps in J2EE and use them else it will throw an error in RWB.
    Regards,
    ---Satish

  • Mapping Problem with IDOC HRMD_A05

    Hi All,
    When i am mapping source structure with IDOC HRMD_A05 i am getting Mapping not sufficiently defined...
    The idoc is used to change the address of employee(infotype 0006)..
    my source structure is
    EMPADDR_MT
       EmpAddr1
         Trans_INFTY *
        Address1
          AddressType *
          PERNR       *
          EFdate      *
          Addr1       *
          Addr2       *
          ADDR4       *
          City        *
          Country     *
          state       *
          Postalcode  *
    the fields to be mapped
    So can any one help me out what r fields to be maintained for <b>HRMD_A05</b>...
    Regards,
    Sridhar
    Message was edited by: sridhar reddy kondam

    All the required fields & segments(shown red in mapping editor or min occurence:1) of idoc need to be mapped.If any of the fields are not available in your source for mapping..map those fields with empty constants using constant option of the mapping editor.

  • SP14 Multi-mapping - error in receiver idoc adapter

    Hi,
    I have a scenario where a business service should send some XML to SAP CRM. I get the file via a sender JMS adapter and try to post it to CRM via a receiver IDOC adapter.
    I have created a multimapping (1:N - 1 XML file to many Idocs) as should in the repository.
    In the configuration under Interface Determination, I have chosen 'RB_SPLIT' and selected the interface multimapping.
    It should be pointed out, that when testing both interface and message mapping i get no error. All idocs seem to be created as they should.
    When testing the setup 'real life' the message fails. The error message in the monitor says:
    - <!--  Call Adapter
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIAdapter</SAP:Category>
      <SAP:Code area="IDOC_ADAPTER">ATTRIBUTE_WRONG_INTF</SAP:Code>
      <SAP:P1>InterfaceCollection</SAP:P1>
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>Unable to interpret IDoc interface InterfaceCollection</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Notice that the above error is when trying to send only 1 record, which in turn then should result in only 1 idoc.
    If trying to send multiple XML records, i get the following error:
    - <!--  Technical Routing
      -->
    - <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">
      <SAP:Category>XIServer</SAP:Category>
      <SAP:Code area="OUTBINDING">MMF_ENGINETYPE</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText />
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack>A system error occurred in the outbound binding</SAP:Stack>
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    In the monitor in the payload of 'Request message mapping' I see as many Maindocument, Submaindocument pairs as should be Idocs.
    Now i really don't know how to interpret the error messages in both cases, so I'm a little lost here...
    It should be pointed out that the idoc being used everywhere in this scenario, has not been modified - from all places it is being used (and only exists) in the 'Imported objects | Idocs' place.
    Also the Idoc is also being used as Inbound interface - so no mistakes here either.
    I really hope someone can help me here, as I'm otherwise pretty stuck in this case.
    Best regards,
    Daniel

    Hi Daniel,
    I have exactly the same type of scenario (under SPS14 and now also SPS15), sending an XML message over JMS to XI and trying a multi-mapping to many IDocs (actually a list of orders in XML is mapped to n ORDERS Idocs).
    I also face problems doing so, when I use the IDoc Adapter as outbound in the Receiver Agreement. I receive the following error:
    <i>CO_TXT_MMF_ENGINETYPE
    Messages in multi message format can be sent to one adapter engine only</i>
    However, I tested the same scenario by just changing the Receiver Agreement to a File Communication Channel and - surprise, surprise - it works. One file per IDoc is created.
    Of course, this is not what we want to accomplish, but when I checked this piece of documentation (sorry another link
    http://help.sap.com/saphelp_nw04/helpdata/en/42/ed364cf8593eebe10000000a1553f7/content.htm
    the IDoc adapter is not listed in the list of Adapters that are supported. Does that mean, that this feature is not supported for generating IDocs? Maybe that's a question for a SAP OSS Message?
    I hope that helped you a little further - if you find out more I'd be happy to learn about it.
    regards,
    Peter

  • Mapping problem:from E1EDK14-ORGID to PORDCR102-PUR_GROUP

    Mapping problem:from E1EDK14-ORGID to PORDCR102-PUR_GROUP
    E1EDK14 occurs 4 times in the source sys:
    1   E1EDK14-QUALF = '014'
         E1EDK14-ORGID = 'YP01'      <=  purchase organization
    2   E1EDK14-QUALF = '009'
         E1EDK14-ORGID = '001'      <=  purchase group
    3   E1EDK14-QUALF = '013'
         E1EDK14-ORGID = 'NB'      <=  document type
    4   E1EDK14-QUALF = '011'
         E1EDK14-ORGID = 'C999'      <=  company code
    I always want to copy "E1EDK14-ORGID = '001'" to PORDCR102-PUR_GROUP.
    I have a solution which works but not perfect:
    E1EDK14-ORGID=>copyvalue[1]=>PORDCR102-PUR_GROUP
    I want to have the perfect mapping as follow:
    IF E1EDK14-QUALF = '009'.
      E1EDK14-ORGID = '001' => PORDCR102-PUR_GROUP
    ENDIF.
    I did it in the data flow editor as follow:
    /PORDCR102/IDOC/E1PORDCR1/E1BPMEPOHEADER/PUR_GROUP=
    ifWithoutElse([keepss=false]stringEquals
    (removeContexts(/ORDERS05/IDOC/E1EDK14/QUALF=),
    const([value=009])), /ORDERS05/IDOC/E1EDK14/ORGID=)
    But the result in the target sys is always 'YP0'(The first E1EDK14-ORGID)
    How to solve this problem?
    Thanks
    ming yu

    Hi,
    Try like this.
    E1EDK14-QUALF   --------
    Constant(009) ----------------   EqualsS --------------- 
                                                                 And(Boolean Function)     ------ IfWithoutElse -- PORDCR102-PUR_GROUP
    E1EDK14-ORGID -------                                                      E1EDK14-ORGID  ----------------
    Constant(001)  --------------   EqualsS ------------------
    Regards,
    P.Venkat

  • Message Mapping Problem with UTF-16LE Encoded XML

    Hello,
    we have the following scenario:
    IDoc > BPM > HTTP Sync Call > BPM > IDoc
    Resonse message of the HTTP call is a XML file with UTF-16LE processing instruction. This response should then be mapped to a SYSTAT IDoc. However the message mapping fails "...XML Parser: No data allowed here ...".
    So obviously the XML is not considered as well-formed.
    When taking a look at SXMB_MONI the following message appears: "Switch from current encoding to specific encoding not supported.....".
    Strange thing however is if I save the response file as XML and use the same XML file in the test tab message mapping is executed successfully.
    I also tried to use a Java Mapping to switch encodings before executing message mapping, but the error remains.
    Could the problem be, that the codepage UTF-16LE is not installed on the PI system ? Any idea on that ?
    Thank you!
    Edited by: Florian Guppenberger on Feb 2, 2010 2:29 PM
    Edited by: Florian Guppenberger on Feb 2, 2010 2:29 PM

    Hi,
    thank your for your answer.
    This is what I have tried to achieve. I apply the java conversion mapping when receiving the response message - i tried to convert the response to UTF-16, UTF-8 but none of them has helped to solve the problem.
    I guess that using adapter modules is not an option either as it would modify the request message, but not the response, right?

  • Java heap space error occured during message mapping of FILE to IDOC

    hello Friends,
                          I am trying to do the message mapping for File to Idoc scenario.
    Idoc which I am using is HRMD_A.HRMD_A06 and infotype which I want to update is 14. I am trying to map the message type which I hav created for infotype 14 with the IDOC
    Its very simple scenerio but  every time I try to save the mapping before activating it I get an error:
    Java heap space
    Internal problem occurred (INTERNAL_PROBLEM)
    Java heap space.
                I am not able to figure out what possibly is the problem wheather its from my end or the BASIS end.
    Kindly help.
    Regards,
    Lokesh

    As the server probably survives (you restart your Integration Builder and can probably connect immediately), the problem will be on your side (client). Did you add one or more large xml-test-instances to the mapping ? If yes, delete them, because they lower the performance and can make problems. If not, then this is a strange problem. Even if the Idoc structure is complex, the mapping object itself cannot be that large.Is this problem only with this one mapping ?
    CSY
    Edited by: Christian Sy on Mar 9, 2010 6:26 AM

  • Problem in receving IDOCS

    I have a problem receving an IDOC. I checked the SM58 Xn and it says " Error when opening RFC connection "
    So I reprocessed the IDOC by transaction WE19 and then BD87 where SAP says it has sent the IDOC and staus is set to 03.
    However I again checked SM58 this time it says " RfcAbort : Cannot lock transaction " ........
    any idea or pointers as what the problem is or might be?
    Below is the RFC Server code which i am using......it is the sample code that comes along with the  sapjco.jar
    Thanks a lot
    package milestone.ups;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Hashtable;
    import java.util.Map;
    import java.util.Properties;
    import com.sap.conn.jco.JCoException;
    import com.sap.conn.jco.JCoFunction;
    import com.sap.conn.jco.ext.DestinationDataProvider;
    import com.sap.conn.jco.ext.ServerDataProvider;
    import com.sap.conn.jco.server.DefaultServerHandlerFactory;
    import com.sap.conn.jco.server.JCoServer;
    import com.sap.conn.jco.server.JCoServerContext;
    import com.sap.conn.jco.server.JCoServerContextInfo;
    import com.sap.conn.jco.server.JCoServerErrorListener;
    import com.sap.conn.jco.server.JCoServerExceptionListener;
    import com.sap.conn.jco.server.JCoServerFactory;
    import com.sap.conn.jco.server.JCoServerFunctionHandler;
    import com.sap.conn.jco.server.JCoServerState;
    import com.sap.conn.jco.server.JCoServerStateChangedListener;
    import com.sap.conn.jco.server.JCoServerTIDHandler;
    public class StepByStepServer
        static String SERVER_NAME1 = "SERVER";
        static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
        static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
        static MyTIDHandler myTIDHandler = null;
        static
            Properties connectProperties = new Properties();
            connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, " PRIVATE_IP ");
            connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "01");
            connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "001");
            connectProperties.setProperty(DestinationDataProvider.JCO_USER, " usr");
            connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "pwd ");
            connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");
            createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
            connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
            connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
            createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
            Properties servertProperties = new Properties();
            servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, " PRIVATE_IP ");
            servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw01");
            servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");
            servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
            servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
            createDataFile(SERVER_NAME1, "jcoServer", servertProperties);
        static void createDataFile(String name, String suffix, Properties properties)
            File cfg = new File(name + "." + suffix);
            if(!cfg.exists())
                try
                    FileOutputStream fos = new FileOutputStream(cfg, false);
                    properties.store(fos, "for tests only !");
                    fos.close();
                catch(Exception e)
                    throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
        static class StfcConnectionHandler implements JCoServerFunctionHandler
            public void handleRequest(JCoServerContext serverCtx, JCoFunction function)
                System.out.println("----
                System.out.println("call              : " + function.getName());
                System.out.println("ConnectionId      : " + serverCtx.getConnectionID());
                System.out.println("SessionId         : " + serverCtx.getSessionID());
                System.out.println("TID               : " + serverCtx.getTID());
                System.out.println("repository name   : " + serverCtx.getRepository().getName());
                System.out.println("is in transaction : " + serverCtx.isInTransaction());
                System.out.println("is stateful       : " + serverCtx.isStatefulSession());
                System.out.println("----
                System.out.println("gwhost: " + serverCtx.getServer().getGatewayHost());
                System.out.println("gwserv: " + serverCtx.getServer().getGatewayService());
                System.out.println("progid: " + serverCtx.getServer().getProgramID());
                System.out.println("----
                System.out.println("attributes  : ");
                System.out.println(serverCtx.getConnectionAttributes().toString());
                System.out.println("----
                System.out.println("CPIC conversation ID: " + serverCtx.getConnectionAttributes().getCPICConversationID());
                System.out.println("----
                System.out.println("req text: " + function.getImportParameterList().getString("REQUTEXT"));
                function.getExportParameterList().setValue("ECHOTEXT", function.getImportParameterList().getString("REQUTEXT"));
                function.getExportParameterList().setValue("RESPTEXT", "Hello World");
                // In sample 3 (tRFC Server) we also set the status to executed:
                if(myTIDHandler != null)
                    myTIDHandler.execute(serverCtx);
        static class MyThrowableListener implements JCoServerErrorListener, JCoServerExceptionListener
            public void serverErrorOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Error error)
                System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
                error.printStackTrace();
            public void serverExceptionOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Exception error)
                System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
                error.printStackTrace();
        static class MyStateChangedListener implements JCoServerStateChangedListener
            public void serverStateChangeOccurred(JCoServer server, JCoServerState oldState, JCoServerState newState)
                // Defined states are: STARTED, DEAD, ALIVE, STOPPED;
                // see JCoServerState class for details.
                // Details for connections managed by a server instance
                // are available via JCoServerMonitor
                System.out.println("Server state changed from " + oldState.toString() + " to " + newState.toString() + " on server with program id "
                        + server.getProgramID());
        static void step2SimpleServer()
            JCoServer server;
            try
                server = JCoServerFactory.getServer(SERVER_NAME1);
            catch(JCoException ex)
                throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);
            JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();
            DefaultServerHandlerFactory.FunctionHandlerFactory factory = new DefaultServerHandlerFactory.FunctionHandlerFactory();
            factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);
            server.setCallHandlerFactory(factory);
            // additionally to step 1
            MyThrowableListener eListener = new MyThrowableListener();
            server.addServerErrorListener(eListener);
            server.addServerExceptionListener(eListener);
            MyStateChangedListener slistener = new MyStateChangedListener();
            server.addServerStateChangedListener(slistener);
            server.start();
            System.out.println("The program can be stoped using <ctrl>+<c>");
        static class MyTIDHandler implements JCoServerTIDHandler
            Map<String, TIDState> availableTIDs = new Hashtable<String, TIDState>();
            public boolean checkTID(JCoServerContext serverCtx, String tid)
                // This example uses a Hashtable to store status information. But usually
                // you would use a database. If the DB is down, throw a RuntimeException at
                // this point. JCo will then abort the tRFC and the R/3 backend will try
                // again later.
                System.out.println("TID Handler: checkTID for " + tid);
                TIDState state = availableTIDs.get(tid);
                if(state == null)
                    availableTIDs.put(tid, TIDState.CREATED);
                    return true;
                if(state == TIDState.CREATED || state == TIDState.ROLLED_BACK)
                    return true;
                return false;
                // "true" means that JCo will now execute the transaction, "false" means
                // that we have already executed this transaction previously, so JCo will
                // skip the handleRequest() step and will immediately return an OK code to R/3.
            public void commit(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: commit for " + tid);
                // react on commit e.g. commit on the database
                // if necessary throw a RuntimeException, if the commit was not
                // possible
                availableTIDs.put(tid, TIDState.COMMITTED);
            public void rollback(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: rollback for " + tid);
                availableTIDs.put(tid, TIDState.ROLLED_BACK);
                // react on rollback e.g. rollback on the database
            public void confirmTID(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: confirmTID for " + tid);
                try
                    // clean up the resources
                // catch(Throwable t) {} //partner wont react on an exception at
                // this point
                finally
                    availableTIDs.remove(tid);
            public void execute(JCoServerContext serverCtx)
                String tid = serverCtx.getTID();
                if(tid != null)
                    System.out.println("TID Handler: execute for " + tid);
                    availableTIDs.put(tid, TIDState.EXECUTED);
            private enum TIDState
                CREATED, EXECUTED, COMMITTED, ROLLED_BACK, CONFIRMED;
        public static void main(String[] a)
            // step1SimpleServer();
            step2SimpleServer();
            // step3SimpleTRfcServer();

    thx sameer.
    I am sending IDOCs when delivery is created i.e through transaction VL01N /VL02N.
    I dont know for some reason i dont have mw ppackage in my sapjco.jar. I got from the sap market place.
    I modified the code to handle IDOC request as u sugguested. I have put system.out in the code to check whether handler is being invovked? But it didnt when I run the code.
    I tried to reprocess the IDOC through we19....but they failed(as shown in sm58).
    Here is the modified code....
    package milestone.ups;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.util.Hashtable;
    import java.util.Map;
    import java.util.Properties;
    import com.sap.conn.idoc.IDocDocumentList;
    import com.sap.conn.idoc.IDocXMLProcessor;
    import com.sap.conn.idoc.jco.JCoIDoc;
    import com.sap.conn.idoc.jco.JCoIDocHandler;
    import com.sap.conn.idoc.jco.JCoIDocHandlerFactory;
    import com.sap.conn.idoc.jco.JCoIDocServerContext;
    import com.sap.conn.jco.JCoException;
    import com.sap.conn.jco.ext.DestinationDataProvider;
    import com.sap.conn.jco.ext.ServerDataProvider;
    import com.sap.conn.jco.server.JCoServer;
    import com.sap.conn.jco.server.JCoServerContext;
    import com.sap.conn.jco.server.JCoServerContextInfo;
    import com.sap.conn.jco.server.JCoServerErrorListener;
    import com.sap.conn.jco.server.JCoServerExceptionListener;
    import com.sap.conn.jco.server.JCoServerState;
    import com.sap.conn.jco.server.JCoServerStateChangedListener;
    import com.sap.conn.jco.server.JCoServerTIDHandler;
    import com.sap.conn.idoc.jco.*;
    public class StepByStepServer
        static String SERVER_NAME1 = "SERVER";
        static String DESTINATION_NAME1 = "ABAP_AS_WITHOUT_POOL";
        static String DESTINATION_NAME2 = "ABAP_AS_WITH_POOL";
        static MyTIDHandler myTIDHandler = null;
        static
            Properties connectProperties = new Properties();
            connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "172.31.64.74");
            connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "01");
            connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "001");
            connectProperties.setProperty(DestinationDataProvider.JCO_USER, "US9904");
            connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "us9904");
            connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en");
            createDataFile(DESTINATION_NAME1, "jcoDestination", connectProperties);
            connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
            connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, "10");
            createDataFile(DESTINATION_NAME2, "jcoDestination", connectProperties);
            Properties servertProperties = new Properties();
            servertProperties.setProperty(ServerDataProvider.JCO_GWHOST, "172.31.64.74");
            servertProperties.setProperty(ServerDataProvider.JCO_GWSERV, "sapgw01");
            servertProperties.setProperty(ServerDataProvider.JCO_PROGID, "JCO_SERVER");
            servertProperties.setProperty(ServerDataProvider.JCO_REP_DEST, "ABAP_AS_WITH_POOL");
            servertProperties.setProperty(ServerDataProvider.JCO_CONNECTION_COUNT, "2");
            createDataFile(SERVER_NAME1, "jcoServer", servertProperties);
        static void createDataFile(String name, String suffix, Properties properties)
            File cfg = new File(name + "." + suffix);
            if(!cfg.exists())
                try
                    FileOutputStream fos = new FileOutputStream(cfg, false);
                    properties.store(fos, "for tests only !");
                    fos.close();
                catch(Exception e)
                    throw new RuntimeException("Unable to create the destination file " + cfg.getName(), e);
        static class MyIDocHandler implements JCoIDocHandler
            public void handleRequest(JCoServerContext serverCtx, IDocDocumentList idocList)
                 System.out.println("IN Handler");   - THIS DIDNT PRINT on the CONSOLE             FileOutputStream fos=null;
                OutputStreamWriter osw=null;
                  try
                       IDocXMLProcessor xmlProcessor =
                            JCoIDoc.getIDocFactory().getIDocXMLProcessor();
                    fos=new FileOutputStream(serverCtx.getTID()+"_idoc.xml");
                    osw=new OutputStreamWriter(fos, "UTF8");
                       xmlProcessor.render(idocList, osw,
                                 IDocXMLProcessor.RENDER_WITH_TABS_AND_CRLF);               
                       osw.flush();
                  catch (Throwable thr)
                       thr.printStackTrace();
                finally
                    try
                        if (osw!=null)
                            osw.close();
                        if (fos!=null)
                            fos.close();
                    catch (IOException e)
                        e.printStackTrace();
        static class MyIDocHandlerFactory implements JCoIDocHandlerFactory
             private JCoIDocHandler handler = new MyIDocHandler();
             public JCoIDocHandler getIDocHandler(JCoIDocServerContext serverCtx)
                  System.out.println("Handler Object created and invoked");
                  return handler;
        static class MyThrowableListener implements JCoServerErrorListener, JCoServerExceptionListener
            public void serverErrorOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Error error)
                System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
                error.printStackTrace();
            public void serverExceptionOccurred(JCoServer jcoServer, String connectionId, JCoServerContextInfo serverCtx, Exception error)
                System.out.println(">>> Error occured on " + jcoServer.getProgramID() + " connection " + connectionId);
                error.printStackTrace();
        static class MyStateChangedListener implements JCoServerStateChangedListener
            public void serverStateChangeOccurred(JCoServer server, JCoServerState oldState, JCoServerState newState)
                // Defined states are: STARTED, DEAD, ALIVE, STOPPED;
                // see JCoServerState class for details.
                // Details for connections managed by a server instance
                // are available via JCoServerMonitor
                System.out.println("Server state changed from " + oldState.toString() + " to " + newState.toString() + " on server with program id "
                        + server.getProgramID());
        static void step2SimpleServer()
             JCoIDocServer server;
            try
                server = JCoIDoc.getServer(SERVER_NAME1);
            catch(JCoException ex)
                throw new RuntimeException("Unable to create the server " + SERVER_NAME1 + ", because of " + ex.getMessage(), ex);
            //JCoServerFunctionHandler stfcConnectionHandler = new StfcConnectionHandler();
            server.setIDocHandlerFactory(new MyIDocHandlerFactory());
            //factory.registerHandler("STFC_CONNECTION", stfcConnectionHandler);
            // additionally to step 1
            MyThrowableListener eListener = new MyThrowableListener();
            server.addServerErrorListener(eListener);
            server.addServerExceptionListener(eListener);
            MyStateChangedListener slistener = new MyStateChangedListener();
            server.addServerStateChangedListener(slistener);
            server.start();
            System.out.println("Server Started");
            System.out.println("The program can be stoped using <ctrl>+<c>");
        static class MyTIDHandler implements JCoServerTIDHandler
            Map<String, TIDState> availableTIDs = new Hashtable<String, TIDState>();
            public boolean checkTID(JCoServerContext serverCtx, String tid)
                // This example uses a Hashtable to store status information. But usually
                // you would use a database. If the DB is down, throw a RuntimeException at
                // this point. JCo will then abort the tRFC and the R/3 backend will try
                // again later.
                System.out.println("TID Handler: checkTID for " + tid);
                TIDState state = availableTIDs.get(tid);
                if(state == null)
                    availableTIDs.put(tid, TIDState.CREATED);
                    return true;
                if(state == TIDState.CREATED || state == TIDState.ROLLED_BACK)
                    return true;
                return false;
                // "true" means that JCo will now execute the transaction, "false" means
                // that we have already executed this transaction previously, so JCo will
                // skip the handleRequest() step and will immediately return an OK code to R/3.
            public void commit(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: commit for " + tid);
                // react on commit e.g. commit on the database
                // if necessary throw a RuntimeException, if the commit was not
                // possible
                availableTIDs.put(tid, TIDState.COMMITTED);
            public void rollback(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: rollback for " + tid);
                availableTIDs.put(tid, TIDState.ROLLED_BACK);
                // react on rollback e.g. rollback on the database
            public void confirmTID(JCoServerContext serverCtx, String tid)
                System.out.println("TID Handler: confirmTID for " + tid);
                try
                    // clean up the resources
                // catch(Throwable t) {} //partner wont react on an exception at
                // this point
                finally
                    availableTIDs.remove(tid);
            public void execute(JCoServerContext serverCtx)
                String tid = serverCtx.getTID();
                if(tid != null)
                    System.out.println("TID Handler: execute for " + tid);
                    availableTIDs.put(tid, TIDState.EXECUTED);
            private enum TIDState
                CREATED, EXECUTED, COMMITTED, ROLLED_BACK, CONFIRMED;
        public static void main(String[] a)
            // step1SimpleServer();
            step2SimpleServer();
            // step3SimpleTRfcServer();

  • Mapping Problem. Do I need a UDF?

    Hello,
    I have the following scenario.
    Source File
    <ORDER>
      <ITEMS>
        <ITEM>
           <NUM>10</NUM>
           <CONDITIONS>
             <CONDITION>
                <TYPE>T1</TYPE>
                <VALUE>V1</VALUE>
              </CONDITION>
             <CONDITION>
                <TYPE>T2</TYPE>
                <VALUE>V2</VALUE>
              </CONDITION>          
         </ITEM>
      </ITEMS>
    </ORDER>
    I have to map this to an IDOC with the structure
    <E1BPITEM>
      <NUM>10</NUM>
    </E1BPITEM>
    <E1BPCOND>
      <NUM>10</NUM>
      <TYPE>T1</TYPE>
      <VALUE>V1</VALUE>
    </E1BPCOND>
    <E1BPCOND>
      <NUM>10</NUM>
      <TYPE>T2</TYPE>
      <VALUE>V2</VALUE>
    </E1BPCOND>
    I am using graphical mapping. everything works well until I have an order with no conditions at all.
    in that case in all subsequent orders the NUM fields are mapped incorrectly.
    my mapping:
    <NUM> ... THIS IS MY PROBLEM
    <TYPE> (in context items) -> exists -> createif -> E1BPCOND
    <TYPE> (in context items) -> splitbyvalue (each) ->TYPE
    <VALUE> (in context items) -> splitbyvalue (each) ->VALUE
    Do I need a UDF or can I solve this using graphical mapping? I have never written a UDF that uses Reultlist. what do I need to know?
    Thanks,
    Yoni

    Thanks for the helpful answer. It looks nicer than my graphical mapping but still the same problem. When there is an order with no conditions one SUPPRESS is added to condition type and value queues but not to the NUM queue.
    Source XSD:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="com:post:sd:sales" targetNamespace="com:post:sd:sales">
    <xsd:element name="sales_new_MT" type="sales_new_DT" />
    <xsd:complexType name="sales_new_DT">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    e1cb7e20f38211dcb9b00019bb2d97c0
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:sequence>
    <xsd:element name="FILE_HEADER">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de0557311dccef00019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="SYS_CODE" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de1557311dc87e70019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="HAFK_CASH" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c00771411dcc5c80019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="HAFK_CH" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c01771411dcbef00019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="HAFK_CR" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c02771411dc8ecf0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="SUM_NO_ORD" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c03771411dcb4f00019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="WORK_DATE" type="xsd:date">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c04771411dc8f860019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="MAAZAN" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c05771411dc8b240019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="SNIF" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c06771411dcbe960019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ASHNAV" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c07771411dcc16e0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="ORDERS">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de4557311dcb4530019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="ORDER" minOccurs="0" maxOccurs="unbounded">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de5557311dcb61a0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="SERV_DATE" type="xsd:date" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de6557311dccabe0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="PRICE_DATE" type="xsd:date" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de7557311dca7f20019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="SNIF" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de8557311dcc78b0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ASHNAV" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c08771411dc8b350019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ORDER_ID" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c09771411dcbfef0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="USER_ID" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0a771411dca75c0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="INVOICE" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0b771411dcc40f0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ORD_TYPE" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0c771411dccc710019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ORD_TEXT" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0d771411dcb34c0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="MAAM_ORDER" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    6d52d3f0ac7811dca1640019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="CUSTOMERS">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82de9557311dca4d70019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="CUSTOMER" minOccurs="0" maxOccurs="10">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82dea557311dc9f370019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="PARTN_ROLE" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82deb557311dc93ef0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="PARTN_NUMB" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82dec557311dc98400019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="NAME" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0e771411dc8c650019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="COUNTRY" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c0f771411dc9e620019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="CITY" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c10771411dc856a0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="POST_CODE1" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c11771411dcb0840019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="STREET" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c12771411dc91cd0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="HOUSE" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c13771411dc964f0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="ITEMS">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82ded557311dc94570019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="ITEM" maxOccurs="unbounded">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82dee557311dc9bbd0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="CONDITIONS" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    ab4c79b0ac7111dc9f0e0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="CONDITION" minOccurs="0" maxOccurs="unbounded">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    ab4c79b1ac7111dccbef0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="COND_TYPE" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    4379b3c0ac7611dc8f8f0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="COND_VAL" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    4379b3c1ac7611dc80610019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="CNDS" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    9fca6e70ce7d11dcb57a0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="CND" minOccurs="0" maxOccurs="unbounded">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    9fca6e71ce7d11dc88aa0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="CNDT" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    9fca6e72ce7d11dcb18a0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="CNDV" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    9fca6e73ce7d11dcb4760019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="MKT_SAP" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82def557311dca2150019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="NUM" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    844eb460c37611dc97ff0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ITEM_CATEG" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c14771411dca0a30019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="QTY" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c15771411dcbf590019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="LEGACY" type="xsd:string">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c16771411dcb8e20019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="STOCK" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    6d4040e0ac7911dc8caf0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="MAAM_ITEM" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    2af82df2557311dc921c0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="ITEM_TEXT" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c19771411dc96fa0019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    <xsd:element name="REF_NUMBER" type="xsd:string" minOccurs="0">
    <xsd:annotation>
    <xsd:appinfo source="http://sap.com/xi/TextID">
    987d6c1a771411dcce450019bb5c48d9
    </xsd:appinfo>
    </xsd:annotation>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:schema>
    Target XSD is IDOC SALESORDER_CREATEFROMDAT2.SALESORDER_CREATEFROMDAT202
    with maxoccurs changed for multiple idoc scenario.
    sample file (2 orders , first with no conditions and second with 3 conditions):
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <ns0:sales_new_MT xmlns:ns0="com:post:sd:sales">
      <FILE_HEADER>
        <WORK_DATE>20080310</WORK_DATE>
        <SYS_CODE>Z02</SYS_CODE>
      </FILE_HEADER>
    <ORDERS>
        <ORDER>
          <SERV_DATE>20080310</SERV_DATE>
          <SNIF>101</SNIF>
          <ASHNAV>131</ASHNAV>
          <ORDER_ID>20080310101</ORDER_ID>
          <USER_ID>40076416</USER_ID>
          <ORD_TYPE>ZOR1</ORD_TYPE>
          <MAAM_ORDER>A</MAAM_ORDER>
          <CUSTOMERS>
            <CUSTOMER>
              <PARTN_ROLE>AG</PARTN_ROLE>
              <PARTN_NUMB>40000001</PARTN_NUMB>
            </CUSTOMER>
          </CUSTOMERS>
          <ITEMS>
            <ITEM>
              <NUM>10</NUM>
              <MKT_SAP>Z230000163</MKT_SAP>
              <QTY>1</QTY>
              <LEGACY>163</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
            </ITEM>
          </ITEMS>
        </ORDER>
    <ORDER>
          <SERV_DATE>20080310</SERV_DATE>
          <SNIF>101</SNIF>
          <ASHNAV>301</ASHNAV>
          <ORDER_ID>20080310101</ORDER_ID>
          <USER_ID>32547747</USER_ID>
          <ORD_TYPE>ZOR1</ORD_TYPE>
          <MAAM_ORDER>A</MAAM_ORDER>
          <CUSTOMERS>
            <CUSTOMER>
              <PARTN_ROLE>AG</PARTN_ROLE>
              <PARTN_NUMB>40000001</PARTN_NUMB>
            </CUSTOMER>
          </CUSTOMERS>
          <ITEMS>
            <ITEM>
              <NUM>10</NUM>
              <MKT_SAP>Z220000060</MKT_SAP>
              <QTY>1</QTY>
              <LEGACY>160</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
            </ITEM>
            <ITEM>
              <NUM>20</NUM>
              <MKT_SAP>Z220000071</MKT_SAP>
              <QTY>1</QTY>
              <LEGACY>171</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
              <CONDITIONS>
                <CONDITION>
                  <COND_TYPE>ZST1</COND_TYPE>
                  <COND_VAL>433.67</COND_VAL>
                </CONDITION>
              </CONDITIONS>
            </ITEM>
            <ITEM>
              <NUM>30</NUM>
              <MKT_SAP>Z220000074</MKT_SAP>
              <QTY>6</QTY>
              <LEGACY>174</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
              <CONDITIONS>
                <CONDITION>
                  <COND_TYPE>ZST1</COND_TYPE>
                  <COND_VAL>1296.33</COND_VAL>
                </CONDITION>
              </CONDITIONS>
            </ITEM>
            <ITEM>
              <NUM>40</NUM>
              <MKT_SAP>Z220000075</MKT_SAP>
              <QTY>10</QTY>
              <LEGACY>175</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
              <CONDITIONS>
                <CONDITION>
                  <COND_TYPE>ZST1</COND_TYPE>
                  <COND_VAL>17221.00</COND_VAL>
                </CONDITION>
              </CONDITIONS>
            </ITEM>
            <ITEM>
              <NUM>50</NUM>
              <MKT_SAP>Z220000076</MKT_SAP>
              <QTY>41</QTY>
              <LEGACY>176</LEGACY>
              <MAAM_ITEM>1</MAAM_ITEM>
            </ITEM>
          </ITEMS>
        </ORDER>
    </ORDERS>
    </ns0:sales_new_MT>
    Thanks,
    Yoni

  • PI Mapping problem - Repeating target nodes

    Hello PI buddies!
    My PI mapping problem is as follows:
    I have a source IDoc which I wish to map to a JDBC Message Type.
    In the Idoc I have 2 repeating sections that I wish to combine to create a new node in the target for each combination of the 2 repeating sections.  The source and desired target message structures are pasted below.  In summary for every combination of "sales_org" and "relationship" I want to create an "Access" node.  In my example there are 2 "sales_org" and 5 "relationship".  I would therefore like to generate 10 "Access" nodes.
    I want to achieve this if possible using PI mapping and its standard functions.  Please help!
    SOURCE MESSAGE TYPE:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Z_CRMXIF_PARTNER_SAVE_M01>
    <IDOC BEGIN="1">
      <EDI_DC40 SEGMENT="1">
       <TABNAM>EDI_DC40</TABNAM>
      </EDI_DC40>
      <E101CRMXIF_PARTNER_COMPLEX SEGMENT="1">
       <APPL_SNAME>CRMXIF_PARTNER_COMPLEX</APPL_SNAME>
       <E101CRMXIF_PARTNER_HEADER SEGMENT="1">
       </E101CRMXIF_PARTNER_HEADER>
       <E101BUS_EI_CENTRAL_DATA SEGMENT="1">
        <E101BUS_EI_ROLES SEGMENT="1">
         <APPL_SNAME>BUS_EI_ROLES</APPL_SNAME>
         <CURRENT_STATE>X</CURRENT_STATE>
         <E101BUS_EI_BUPA_ROLES SEGMENT="1">
          <APPL_SNAME>BUS_EI_BUPA_ROLES</APPL_SNAME>
          <DATA_KEY>ZBUP02</DATA_KEY>
         </E101BUS_EI_BUPA_ROLES>
         <E101BUS_EI_BUPA_ROLES SEGMENT="1">
          <APPL_SNAME>BUS_EI_BUPA_ROLES</APPL_SNAME>
          <DATA_KEY>ZCRM01</DATA_KEY>
         </E101BUS_EI_BUPA_ROLES>
         <E101BUS_EI_BUPA_ROLES SEGMENT="1">
          <APPL_SNAME>BUS_EI_BUPA_ROLES</APPL_SNAME>
          <DATA_KEY>ZCRM02</DATA_KEY>
         </E101BUS_EI_BUPA_ROLES>
         <E101BUS_EI_BUPA_ROLES SEGMENT="1">
          <APPL_SNAME>BUS_EI_BUPA_ROLES</APPL_SNAME>
          <DATA_KEY>ZCRM03</DATA_KEY>
         </E101BUS_EI_BUPA_ROLES>
         <E101BUS_EI_BUPA_ROLES SEGMENT="1">
          <APPL_SNAME>BUS_EI_BUPA_ROLES</APPL_SNAME>
          <DATA_KEY>ZCRM04</DATA_KEY>
         </E101BUS_EI_BUPA_ROLES>
        </E101BUS_EI_ROLES>
       </E101BUS_EI_CENTRAL_DATA>
       <E101CRMT_BUS_EI_DATA SEGMENT="1">
        <Z101RMT_BUS_EI_R3_SALESAREA SEGMENT="1">
         <APPL_SNAME>ZCRMT_BUS_EI_R3_SALESAREA</APPL_SNAME>
         <Z101ZCRMT_BUS_R3_SALES_AREA SEGMENT="1">
          <APPL_SNAME>ZCRMT_BUS_R3_SALES_AREA</APPL_SNAME>
          <ZZSALES_ORG>1000</ZZSALES_ORG>
          <ZZCHANNEL>01</ZZCHANNEL>
          <ZZDIVISION>00</ZZDIVISION>
         </Z101ZCRMT_BUS_R3_SALES_AREA>
         <Z101ZCRMT_BUS_R3_SALES_AREA SEGMENT="1">
          <APPL_SNAME>ZCRMT_BUS_R3_SALES_AREA</APPL_SNAME>
          <ZZSALES_ORG>2000</ZZSALES_ORG>
          <ZZCHANNEL>01</ZZCHANNEL>
          <ZZDIVISION>00</ZZDIVISION>
         </Z101ZCRMT_BUS_R3_SALES_AREA>
        </Z101RMT_BUS_EI_R3_SALESAREA>
       </E101CRMT_BUS_EI_DATA>
      </E101CRMXIF_PARTNER_COMPLEX>
    </IDOC>
    </Z_CRMXIF_PARTNER_SAVE_M01>
    DESIRED TARGET MESSAGE TYPE:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_CTX001_JDBC_In xmlns:ns0="http://mycompany.co.uk/pi/CTXIN001">
    <SQLStatement1>
      <dbTable Action="INSERT">
       <Table>customer_relationship</Table>
       <Access>
        <sales_org>1000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZBUP02</relationship>
       </Access>
       <Access>
        <sales_org>2000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZBUP02</relationship>
       </Access>
       <Access>
        <sales_org>1000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM01</relationship>
       </Access>
       <Access>
        <sales_org>2000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM01</relationship>
       </Access>
       <Access>
        <sales_org>1000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM02</relationship>
       </Access>
       <Access>
        <sales_org>2000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM02</relationship>
       </Access>
       <Access>
        <sales_org>1000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM03</relationship>
       </Access>
       <Access>
        <sales_org>2000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM03</relationship>
       </Access>
       <Access>
        <sales_org>1000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM04</relationship>
       </Access>
       <Access>
        <sales_org>2000</sales_org>
        <dist_channel>01</dist_channel>
        <division>00</division>
        <relationship>ZCRM04</relationship>
       </Access>
      </dbTable>
    </SQLStatement1>
    </ns0:MT_CTX001_JDBC_In>
    Edited by: Jim Kendall on Apr 22, 2010 12:48 PM
    Edited by: Jim Kendall on Apr 22, 2010 12:50 PM

    SOURCE MESSAGE TYPE:
    &lt;?xml version="1.0" encoding="UTF-8" ?&gt;
    &lt;Z_CRMXIF_PARTNER_SAVE_M01&gt;
    &lt;IDOC BEGIN="1"&gt;
      &lt;EDI_DC40 SEGMENT="1"&gt;
       &lt;TABNAM&gt;EDI_DC40&lt;/TABNAM&gt;
      &lt;/EDI_DC40&gt;
      &lt;E101CRMXIF_PARTNER_COMPLEX SEGMENT="1"&gt;
       &lt;APPL_SNAME&gt;CRMXIF_PARTNER_COMPLEX&lt;/APPL_SNAME&gt;
       &lt;E101CRMXIF_PARTNER_HEADER SEGMENT="1"&gt;
       &lt;/E101CRMXIF_PARTNER_HEADER&gt;
       &lt;E101BUS_EI_CENTRAL_DATA SEGMENT="1"&gt;
        &lt;E101BUS_EI_ROLES SEGMENT="1"&gt;
         &lt;APPL_SNAME&gt;BUS_EI_ROLES&lt;/APPL_SNAME&gt;
         &lt;CURRENT_STATE&gt;X&lt;/CURRENT_STATE&gt;
         &lt;E101BUS_EI_BUPA_ROLES SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;BUS_EI_BUPA_ROLES&lt;/APPL_SNAME&gt;
          &lt;DATA_KEY&gt;ZBUP02&lt;/DATA_KEY&gt;
         &lt;/E101BUS_EI_BUPA_ROLES&gt;
         &lt;E101BUS_EI_BUPA_ROLES SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;BUS_EI_BUPA_ROLES&lt;/APPL_SNAME&gt;
          &lt;DATA_KEY&gt;ZCRM01&lt;/DATA_KEY&gt;
         &lt;/E101BUS_EI_BUPA_ROLES&gt;
         &lt;E101BUS_EI_BUPA_ROLES SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;BUS_EI_BUPA_ROLES&lt;/APPL_SNAME&gt;
          &lt;DATA_KEY&gt;ZCRM02&lt;/DATA_KEY&gt;
         &lt;/E101BUS_EI_BUPA_ROLES&gt;
         &lt;E101BUS_EI_BUPA_ROLES SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;BUS_EI_BUPA_ROLES&lt;/APPL_SNAME&gt;
          &lt;DATA_KEY&gt;ZCRM03&lt;/DATA_KEY&gt;
         &lt;/E101BUS_EI_BUPA_ROLES&gt;
         &lt;E101BUS_EI_BUPA_ROLES SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;BUS_EI_BUPA_ROLES&lt;/APPL_SNAME&gt;
          &lt;DATA_KEY&gt;ZCRM04&lt;/DATA_KEY&gt;
         &lt;/E101BUS_EI_BUPA_ROLES&gt;
        &lt;/E101BUS_EI_ROLES&gt;
       &lt;/E101BUS_EI_CENTRAL_DATA&gt;
       &lt;E101CRMT_BUS_EI_DATA SEGMENT="1"&gt;
        &lt;Z101RMT_BUS_EI_R3_SALESAREA SEGMENT="1"&gt;
         &lt;APPL_SNAME&gt;ZCRMT_BUS_EI_R3_SALESAREA&lt;/APPL_SNAME&gt;
         &lt;Z101ZCRMT_BUS_R3_SALES_AREA SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;ZCRMT_BUS_R3_SALES_AREA&lt;/APPL_SNAME&gt;
          &lt;ZZSALES_ORG&gt;1000&lt;/ZZSALES_ORG&gt;
          &lt;ZZCHANNEL&gt;01&lt;/ZZCHANNEL&gt;
          &lt;ZZDIVISION&gt;00&lt;/ZZDIVISION&gt;
         &lt;/Z101ZCRMT_BUS_R3_SALES_AREA&gt;
         &lt;Z101ZCRMT_BUS_R3_SALES_AREA SEGMENT="1"&gt;
          &lt;APPL_SNAME&gt;ZCRMT_BUS_R3_SALES_AREA&lt;/APPL_SNAME&gt;
          &lt;ZZSALES_ORG&gt;2000&lt;/ZZSALES_ORG&gt;
          &lt;ZZCHANNEL&gt;01&lt;/ZZCHANNEL&gt;
          &lt;ZZDIVISION&gt;00&lt;/ZZDIVISION&gt;
         &lt;/Z101ZCRMT_BUS_R3_SALES_AREA&gt;
        &lt;/Z101RMT_BUS_EI_R3_SALESAREA&gt;
       &lt;/E101CRMT_BUS_EI_DATA&gt;
      &lt;/E101CRMXIF_PARTNER_COMPLEX&gt;
    &lt;/IDOC&gt;
    &lt;/Z_CRMXIF_PARTNER_SAVE_M01&gt;
    DESIRED TARGET MESSAGE TYPE:
    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;ns0:MT_CTX001_JDBC_In xmlns:ns0="http://mycompany.co.uk/pi/CTXIN001"&gt;
    &lt;SQLStatement1&gt;
      &lt;dbTable Action="INSERT"&gt;
       &lt;Table&gt;customer_relationship&lt;/Table&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;1000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZBUP02&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;2000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZBUP02&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;1000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM01&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;2000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM01&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;1000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM02&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;2000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM02&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;1000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM03&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;2000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM03&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;1000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM04&lt;/relationship&gt;
       &lt;/Access&gt;
       &lt;Access&gt;
        &lt;sales_org&gt;2000&lt;/sales_org&gt;
        &lt;dist_channel&gt;01&lt;/dist_channel&gt;
        &lt;division&gt;00&lt;/division&gt;
        &lt;relationship&gt;ZCRM04&lt;/relationship&gt;
       &lt;/Access&gt;
      &lt;/dbTable&gt;
    &lt;/SQLStatement1&gt;
    &lt;/ns0:MT_CTX001_JDBC_In&gt;

  • Mapping for Sales Order Idoc

    Hi Experts,
    I am facing problem with mapping for standard SalesOrder Idoc ORDERS.ORDER05.
    My Source Structure is: X12 EDI850
    <G_SPO1> (occrance 1..100000)
    <S_PO1> (occurance is 1..1)
                      <D_234/>
                      <D_234_2/>
                      <D_234_3/>
                      <D_234_4/>
                      <D_234_5/>
                      <D_234_6/>
                      <D_234_7/>
                      <D_234_8/>
                      <D_234_9/>
                      <D_234_10/>
    </S_PO1>
    </G_SPO1>
    Target Structure is:
    E1EDP01
        --->E1EDP19
                    --->IDTNR
    Functionality is passing material numbers of EDI customers to IDTNR field in E1EDP19 filed under segment E1EDP01.
    From source i will get set of material numbers, for one set 10 material numbers(In source you can find 10 fields for 10 material numbers)
    Requirement: I need to send those material numbers to IDTNR (One to one mapping ).
    For getting 10 material numbers i just duplicated segment E1EDP19 in target side and mapped one field of source to IDTNR target in each segment. Totally mapped 10 source fields in 10 segments.
    If 20 material numbers I will get two sets <G_SPO1> will repeat two times, each time 10 material numbers. So I mapped G_SPO1 to E1EDP01
    S_PO1 to E1EDP19.
    My out put is coming as 10 E1EDP19 segments under E1EDP01 if 10 materail numbers.
    But problem is ECC team asking to get one E1EDP19 line item value under E1EDP01 line item header. They are not accepting duplicate E1EDP19 segments under header E1EDP01.
    How to acheive this with my requirement.
    Appreciate your hellp on this.
    Thanks & Regards,
    A.Neelima.

    There is no relation between D_234 and D_356.
    I want to pass D_356 to KTEXT in all E1EDP01 segments which ever i will get based on the condition we implemented for E1EDP01.
    Present its coming only for E1EDP01 first segment (for which i used condition with D_234), its not coming for remaining 9 E1EDP01 segments (for which i used conditions with D_234_2 to D_234_10)
    If i pass sample input payload:
    <S_ST>
    <S_PID>
    <D_350>Description</D_350>
    </S_PID>
    <G_SPO1>
    <S_PO1>
    <D_234>1</D_234>
    <D_234_2/>2</D_234_2>
    <D_234_3/>
    <D_234_4/>
    <D_234_5/>
    <D_234_6/>
    <D_234_7/>
    <D_234_8/>
    <D_234_9/>
    <D_234_10/>
    </S_PO1>
    </G_SPO1>
    <G_SPO1>
    <S_PO1>
    <D_234>3</D_234>
    <D_234_2>4<D_234_2>
    <D_234_3/>
    <D_234_4/>
    <D_234_5/>
    <D_234_6/>
    <D_234_7/>
    <D_234_8/>
    <D_234_9/>
    <D_234_10/>
    </S_PO1>
    </G_SPO1>
    </S_ST>
    Coming Output Now: (KTEXT field is missing in last two segments)
    <E1EDP01>
    <E1EDP19>
    <IDTNR>1</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>3</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>2</IDTNR>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>4</IDTNR>
    </E1EDP19>
    </E1EDP01>
    Expected Output:
    <E1EDP01>
    <E1EDP19>
    <IDTNR>1</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>3</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>2</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    <E1EDP01>
    <E1EDP19>
    <IDTNR>4</IDTNR>
    <KTEXT>Decription</KTEXT>
    </E1EDP19>
    </E1EDP01>
    Thnaks & Regards,
    A.Neelima.

  • Mapping problem with Wireless Keyboard and Japanese iPhone

    Hi everyone:
    This seems to be a slightly obscure question -- at least, I can't find a ready answer for it with the search terms I've tried, possibly because most people don't use this particular accessory with the iPhone.
    I have an iPhone 4 that I bought from and use on Softbank, the carrier in Japan, where I live.  While visiting the United States recently, I bought an Apple Wireless Keyboard from an Apple retailer.   I wanted to carry it with me for use with my iPhone, so I would reliably have a convenient way to access the Internet without being confined to the touchscreen keyboard.  (I live in a rural area where WiFi spots are uncommon, but my iPhone's access to Softbank's data network is fairly good and consistent.)
    However, to my frustration, I can't use the keyboard due to a mapping problem.  The Bluetooth connection is fine -- the iPhone can discover the keyboard.  However, the mapping is off: typing "Q" gets me "A," typing "Z" gets me "W", numbers and punctuation are off, etc.  The key point: This is NOT a problem with the International Keyboard settings (under the Settings -> General -> Keyboard -> International Keyboards menu).  I have the Keyboard setting set to QWERTY, which is the layout of the Apple keyboard; I have tried all the other possibilities, just in case.  None of them work.  Setting the Keyboard setting to QWERTY does not make the external QWERTY keyboard map correctly.
    The rather ironic addendum is this: While on a recent trip to Tokyo, I visited the Apple store in Shibuya and, after concluding the main business of my visit (discussing my MacBook's battery problems with an English-speaking staffer), I took out my iPhone and keyboard and asked him about my mapping problem.  He started with the Keyboard menu, tried the same things I had tried, realized they weren't working, and puzzled over the problem for a while.  Then he did this: He hit a key combination (I believe) that brought up a menu on the iPhone's screen.  "Ah, there's your problem," he said, and selected a new setting.  The problem was instantly fixed.
    To my chagrin, however, I neglected to write down what "Ken" had done to fix the problem.  Argh... I was looking at the iPhone upside-down; I'd already taken up more than half an hour; people were waiting, and I guess, being used to living in the countryside now, that I'm not used to Shibuya crowds any more.  Anyway, I didn't take careful notes or ask him to walk me through it, and now I cannot recall or repeat what he did.  And I still can't use my keyboard!
    Any ideas or advice, anyone?  How did "Ken" fix my problem, and how can I repeat it?  Much, much appreciated, in advance.

    THAT'S IT.  Sir, you have solved my problem.  Thank you!!
    And I feel a little silly; this will doubtless seem to an expert as if it should have been obvious all along.  But isn't that always the way in hindsight?
    Here's what happened: The key combination I was trying to remember was "Apple/command + space on the hardware keyboard," as you just said above.  The "menu" it brings up is, apparently, a list of keyboards.  I take it that this list is the same as the list of the "virtual" keyboards on the iPhone?  I have never had more than one external keyboard -- the Apple Wireless -- but I do have several keyboards active virtually, as the iPhone in Japan seems to come with both the "Nihongo Ten-key" and the "Nihongo Romaji" keyboards active, and I added several other languages as well.
    When I hit "Apple/command + space," this list comes up on the iPhone's touchscreen.  Highlighted and checked at the top is "English," just as if it had been selected all along.  But nonetheless, when I first turn on and pair my keyboard with the iPhone, I need to perform this key-combination action, as if to "reselect" English, and then the keyboard promptly starts working properly as QWERTY.  I can only assume that one of the others had been default-selected before -- presumably one of the Nihongo ones? -- and that this was causing the interference.
    Thank you again!  You have made me and my wireless keyboard very happy.

Maybe you are looking for