Multiline container, block, transform step ... HELP !!!!!

Hi everyone.
I'm trying to create a 'Block' in order to send N IDOCS. The info is contained in a 'container'. This container is of type A and is the one which has the XML file. It's not defined as multiline because if not i'll get an error.
The question is that i don't know how can i use this 'Block' in order to transform my XML file with N rows into N IDOC, one per row of the XML file.
I think this couldn't be so difficult but i'm getting several problems when i try to configure the 'Block', the 'transformation step' and the containers.
Can anyone tell me how to do it?
Thanks

Hi Inigo,
you need first a tranformation step where you have a source message with n lines and n target messages with one line (multi line container).
Next you can define a loop block for all entries of that container.
Regards,
Udo

Similar Messages

  • BPM error:Container element in step transformation is not initialized

    Hello Experts,
    I am new to the concept of BPM.
    I'm trying to create an integration process in which I'm taking an Idoc and processing it in many ways. The process contains many transformation steps. There two such transformation steps which have been placed in block step in a fork. And i get this error: Container element XXX in step transformation is not initialized
    What could be the problem?
    Regards,
    Akhil

    Hi
    if u are getting the messaga with red sigh then it means it will craete the error while running the scenario.
    but if it is in blue then i think it will not create any error.
    the meaning of that statement is that the container u have defind is not used anywhere. it is just giving u a warning message.
    Thanks
    Rinku

  • CcBPM multiline container Processing

    I have a BPM where I select several records from the database. I then need to process each record through a JAVA mapping module individually.  Based on the output of the JAVA mapping module I either send the record to the appropriate receiver or I end the process for that record.  
    first Attempt:
    1) receive data from database through SQL query
    2) Split the single message with many entries into many individual messages through a transformation step.  
        i.e.  Mapping A occurence 1 to Mapping B occurence 0,unbounded
    3) A ParForEach Block which contained the transformation step with the JAVA Mapping, A switch step for canceling or sending the document.  
    My problem:
    The multiline data was never sent to the transformation step but I noticed that if I have just had a send step it would process each line.
    Second Attempt:
    1)  Receive data from database through SQL query
    2) Split message as mentioned above
    3) Assign multiline to variable in container opperation
    4) Variable from container operation is input to JAVA Mapping
    My problem:
      I don't see any processing from within the loop.  I don't receive any output and my data doesn't appear to have processed through the JAVA module.
    Does anyone have any other suggestions on how to process these records since my JAVA module can't take the list of records but needs them individually as well as I need to send them out individually based on their independent response from the JAVA module.

    Hi Amar,
    We don't have any direct way to refer multiline container in send mail. You can achieve this indirectly. You create a big string in workflow container. Then create a custom object from SW01. Create a method in this object. This method should take the multiline element as the input and concatenates the lines and returns the big string. Now the object is created, create a new task before send mail stpe. This task will be calling the custom object method which takes the multiline element and returns the string. Then use this string in the mail. Hope this helps.
    Thanks
    hari

  • Handling Java Mapping Exception in BPM Transformation step

    Dear SDN members,
    I have developed a File to File scenario using BPM as follows.
    Step 1:
    Sender file adapter picks the file from FTP server and using file content conversion mapped to XML structure.
    Step 2:
    BPM will recieve the XML payload , immediately in the block a transformation step is called with an interface mapping. In the interface mapping a Java mapping will be executed with certain data validations on the XML payload. If found any invalid data is there a suitable excptions will be raised . Here the transformation step should be catch the error and control should be sent to exception block to place the recived file as a error file.
    else if the transformation is executed with out any issues, the file will be placed in success folder.
    But in the transformation step, though java mapping thorwing exceptions, the control not going into exception block, instead it is continuing to next step i.e the file is placing in the success folder.
    Can anybody tell me, how to handle the exceptions raised in java mapping in the BPM transformation step?
    I have refered all the SDN blogs, forums related to this issue, but could not able to find the answer. Please help me?
    Thanks & Regards
    Vijayanand Poreddy

    Hi Abhishek,
    Once the file is picked from FTP server then sent to BPM,
    the BPM steps
    Step1:
    -->Recive
    Step 2:
    Block Starts
       ---Block Start: New Transaction
       ---Block End : New Transaction
       ---Exception : Error
    Step 3 
    Inside the Block
    Transformation Step
       --Interface Mapping: <IM Name>
       -- Check box ticked for Create New Transcation
       -- Exceptions
          --System Error: Error
       --Source Message: Message recieved in Recieve Step (Step 1)
    Step 4:
      --Send
      --Source Maessage: Output message from the Transformation Step
    Block End
    Inserted a Exception Branch for Block
    Steps inside Exception Branch
      -Control
        --Throw Alert
       --Alert Name
    In the above scenario
    The transformation step is not throwing error even my interface mapping going to error. The same transformation step if i place outside the block next to recieve step, then the transformation step is throwing error and BPM stops the process.
    Also, when transformation is inside the block, i have used the exception handling on the send step inside the block. here it is throwing error as the source message payload is empty. because in the preceding transformation step the interface mapping is failed due to which there the target will not be filled. But even though it is not entered into exception block.
    Regards
    Vijayanand Poreddy

  • Not able to give multiline container variable in transformation step.

    Hello,
    I'm doing a simple collect pattern in BPM.
    I have three container variables, one- the source interface, second the multiline of source interface and third-the target interface.
    Now, i have block in which i have the exception and deadline steps and then a loop in which i have my receiver which collects the message and gives it to the container to keep it to the list. Outside the block i have my transformation step which takes the relevant interface mapping. When i try to give the multiline container variable the box turns red, but of give the normal source container variable it accepts it.
    If i do a check by F7, Expression must not return a multiline value.
    The scope of the container variables is maintained as Process.
    What could be wrong, please help.
    Thanks and regards,
    Akhil

    hi akhil,
    think in transformation it sees source messages and target messages.
    if u have n:1 scenario then n interfaces to one interface right
    thats is each interface will have one message type
    so if u are using interace mapping in transformation it is expecting n interface variables to one interface variable.
    it will display n source messages to one source message jsut check.
    so transformation step is expecting one n sub message types to be embedded in one message type
    <messages>
    <message 1>
    <meessage n>
    </messages>
    this one is mapped with one XML target messgae
    so if u have n different messages see that u compress them in to one message type like the above and give it in trasnformation step.
    if you have n different messages then u can alwasy go for n different interfaces to one single interface
    then u can see in tranformation step n diff source messages and one target message
    was just confused with reciever step which allows multiline receivers
    Thanks & Regards,
    Rama Krishna
    Edited by: rama krishna talluri on Mar 6, 2008 1:48 PM
    Edited by: rama krishna talluri on Mar 6, 2008 1:49 PM

  • "receiver-determination" step and multiline container

    i have made a file2file scenario where:
    there is a BPM,
    the BPM contains a receive step,
    a transformation that mapps the incomin message to two messages(Split-messgae case),
    and then a FORK step which sends the two messges to through 2 SEND steps to the intended receiver services.
    It didnt work......and i followed a blog-> /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure ............... which suggested to have a
    "receiver-determination" step in the BPM before the SEND step.... it says that this
    "receiver-determination" step will put the message in a MULTILINE container..
    i m confused bout this step ........ can anybody explain.....
    please help

    Receiver Determination step will return all receivers that are configured in Integration Directory, for that particular message interface, having the BPM as the sender service.
    So, more than one receiver may return. Hence you need to define the receiver container as a multiline container.
    Here you go with explanations- for Receiver Determinations in BPM-
    http://help.sap.com/saphelp_nw04/helpdata/en/11/13283fd0ca8443e10000000a114084/content.htm

  • BPM Collect Transformation Step Raise Alert need help

    Hi,
    Scenario BPM Collect.
    Block 1 - Multiple xml messages received and collected into multiline container.
    Block 2 - Transform multiline container element into single message. Mapping Error throw Transformation Exception.
    Block 2:Exception Branch - Transform multiline container element to error multiline container element (based on BpmPatternReqRespTimeOut with a twist).
    Block 2:Exception Branch - Send multiline container element to Communication Channel for further error analysis.
    Block 2:Exception Branch - Throw Alert BPM_ALERT Transformation Failure message.
    Getting Compilation errors because I am not allowed to output a multiline container element...?
    Behaviour without the Exception Branch Transform and Send is that the first message collected in the ccBPM goes to Green Flag and the others goto chequered flag when the BPM_ALERT is thrown. This is not desirable behaviour.
    Would like to output multiple line container element so I easily know which group of messages failed ie file 1,2,3... so that I can go to the Error folder and repost them in the Sender Communication Channel if required.
    Once this is working I am trying to identify which file had the conversion problem so I can filter if out from the others and process the others attempting to pass information from a UDF as to which item in the multiline container element I reached before I had a problem int he original mapping...?
    I have read Michal Krawcyzk's blog on ALERT variables and Help on Throwing Alerts etc but I am progressing slowly with my solution...
    thanks,
    V

    Thankyou Chirag for those Blogs.
    The first is the one I have looked at most recently and the second has given me an idea.
    If I change my mapping of the multiline container element each line holds an xml message to the error element by calling a UDF to map the payload across then at least I would have output my Payload that errored? I will try it and see Java coding is not my forte currently.
    thanks,
    V

  • Receiver determination step in the BPM and multiline container

    i have made a file2file scenario where:
    there is a BPM,
    the BPM has a send step which contains a receive step,
    a transformation that mapps the incomin message to two messages(Split-messgae case),
    and then a FORK step which sends the two messges to through 2 SEND steps to the intended receiver services.
    It didnt work......and i followed a blog->  /people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure   ............... which suggested to have a
    "receiver-determination" step in the BPM before the SEND step.... it says that this
    "receiver-determination" step will put the message in a MULTILINE container..
    i m confused bout this step ........ can anybody explain.....
    please help

    HI,
    In receiver determination step selctthe multi line container element.in container editor create the one element with type as receiver and select the check box.
    A Receiver Determination step returns set of receivers configured for the output abs interfaces in the directory and puts it into receiver which is a multiline container receiver element
    Regards
    Chilla

  • Help required: Workflow container block missing

    Dear All,
    My workflow builder strangely doesnt show the container elements block.
    How do I add container elements now?
    Any idea of the required settings to see and add the container elements?
    Please help me out.
    Thanks,
    nsp

    Depends on your version (hint, hint), but my guess is that in the builder you are instead seing the "Step types that can be inserted". Look just at the top of the area. If I am right about your version you will find a line with a text describing what you are seing, and a menu arrow at the right edge. Click the menu arrow to display the list of available 'views'.
    The workflow container view is still there in ECC 6.0.

  • Alert for BPM Transformation Step

    Hi I am trying to think of a way to get the information from my alert transformation step into my Alert Message.
    The scenario is a multiline container called XML_Collect mapping to XML_Output a single container with the XML messages merged.
    If I encounter an error with mapping, currently I am raising an Alert with Process <Process ID> and Long Text Transformation Failure.
    I have the Transform step in a Block and an exception branch for the Alert. I am going to instigate a Container Operation step to fill my Container variables with information about the error.
    In the BPM Workflow Log I can see the Transformation1 Container Instance with variables such a MAPPING and MESSAGES_IN and _EXCEPTIONS in it.
    Can I reference this container in my Container Operation.
    Ideally I would like to know which XML message from the multiline container generated the mapping error. This would help in correcting.
    I have read some information on a UDF calling Alerts but I am not sure if this is the method to use.
    thanks,

    It is MESSAGES_IN
    We have
    MAPPING MAPPING http://<company>.com/msghdr IM_T_MSGHDR_V3_to_T_MSGHDR_V3_Multi-<...>-1-
    TRACE <?xml version="1.0" encoding="utf-8" ?>
    <MappingTrace><Trace level="1" type="T">Mapping-Namespace:http://company.com/msghdr </Trace>
    <Trace level="1" type="T">Mapping-Name:IM_T_MSGHDR_V3_to_T_MSGHDR_V3_Multi </Trace>
    <Trace level="1" type="T">Mapping- ...
    This trace is what appears in the XML trace also
    MESSAGES_IN MESSAGES_IN < 1 Entry >
      MESSAGES_IN[1] MESSAGES_IN[1] 0000000001-<...>
        NUMB Parameter ID 0000000001
        MESSAGES MESSAGES < 3 Entries >
    XC     ZXI_PROXY_MI_MSGHDR_V3_0001     E0630F307D7B11DCA23700145E6916E5
    XC     ZXI_PROXY_MI_MSGHDR_V3_0001     E035BDA07D7B11DCB90500145E6916E5
    XC     ZXI_PROXY_MI_MSGHDR_V3_0001     BA2A92307D7511DCB09900145E6916E5
    then the XML Header and Payload.
    _EXCEPTIONS _EXCEPTIONS < 3 Entries >
    _EXCEPTIONS[1] EXCEPTIONS[1] Component MAPPING has reported an error-The exception occurred (program: CLSW..
    _EXCEPTIONS[2] EXCEPTIONS[2] com/sap/xi/tf/MM_T_MSGHDR_V3_to_T_MSGHDR_V3_Mult~com.sap.aii.utilxi.misc.api...
    I have just tried the variable &_WORKITEM.WORKITEMID& and this gives the work item ID of the starting step for the Process.
    My MESSAGE_ID variable that I am updating with the container variable straight after the Transformation step has the first message id from the multiline container but I know this isn't my incorrect message.

  • Multiline container mapping

    Hi,
    There are many invoices present in the incoming message.
    I have to make a single Bapi call for each invoice.
    For this purpose in the BPM I need to map the message to a multiline container, so that in the next block I can loop each line of this multiline container to the required Bapi.
    Now, I have this problem in the mapping of the received message into a multiline container. The transformation step in BPM is not giving any result in the output.
    For your reference, I am giving belwo the input and result of the mapping (into a multiline container below) I need
    1. Input:
          <ns1:MT_scan_invoice xmlns:ns1="urn:customers:invoice">
             <Invoice>
             </Invoice>
             <Invoice>
             </Invoice>
          </ns1:MT_scan_invoice>
    2. Result needed:
          <ns1:MT_scan_invoice xmlns:ns1="urn:customers:invoice">
             <Invoice>
             </Invoice>
          </ns1:MT_scan_invoice>
       <ns1:MT_scan_invoice xmlns:ns1="urn:customers:invoice">
             <Invoice>
             </Invoice>
          </ns1:MT_scan_invoice>
    I have done mapping where, I have mapped the "Invoice" node (which is unbounded) to the target node of "MT_scan_invoice ".
    In the 'Messages' tab of message mapping and in the 'Design' tab of interface mapping, I have changed the occurrence of the target message to '0..unbounded'. Also in the BPM the target container is multiline.
    The interface and message mapping in stand-alone mode is giving successful outputs. (as desired)
    Still the transformation step in Runtime is giving an empty output. Did I miss something in the mapping?
    Kindly help. For the last 2 weeks, I am stuck with this issue.
    Also kindly suggest alternate methods to generate a multiline container.
    Thanks,
    John

    Hi,
    In this case, you are splitting your single message based on some condition to multiple messages but with the same structure as that of source.
    Can you pls specify what is that condition?
    There is a possibility that mapping is wrong somewhere here.
    Also, befor this mapping there are two nodes at target side, 'Messages' and 'Message1'.
    Map these nodes with some constant even thought their occurence is 1..1.
    Regards,
    Supriya.

  • How to send message from multiline container to same webservice or bus. sys

    Hi All,
    I want to send message from multiline container to a syn web service sequentially.
    I am getting that multiline container after a transformations step (1: n mapping).
    where i dont known what will be the value for n (number of message in multiline container). This will vary; depend upon input message to BPM.
    Scenario is like this.
    1. Receive step
    2. Transfromation to 1: n
    3. Want to send message from multiline container to a web service (business service),default loop and block step doesn’t give desirable result.
    any help will be appreciable
    Regards,
    Adish

    Adish Jain wrote:>
    > where as, if I will use block, it will send the same message to multiple receivers which are present in multiline receiver container. So need to think in different manner.
    Not necessarily.
    When you use block step in ForEach mode, you can select the container variable from:
    - a receiver container;
    - an interface container;
    The line element can then be either a receiver or an interface.
    The problem is that for this to work, the interfaces need to be async (since they are to be used as containers) and hence you won't be able to make your scenario work.
    But again, explain why your scenario with loop step didn't work.
    The only gap here is how to determine the number of loops (defining the counter variable value). But that can be easily solved if you include a new message with occurrence 1 as a target message of your mapping and as a container in your bpm.
    This new message needs only 1 single field, that should be filled with the number of messages you've created in the mapping (you could use count standard function, f.ex.).
    In your bpm, make sure to pass this fields value into the counter container right after your transformation step.
    Regards,
    Henrique.

  • Fill Multiline container from multi records in source XML ?

    Hi,
    scenario: File-XI-RFC-File(BPM).
    Read company id from source file, call BAPI(company_get_detail) using RFC receiver adapter and then write response to another file.
    This works fine for one record(one RFC call to BAPI) using the BPM.
    Now, I would like to implement the process for multiple records using block(forEach) to make multiple RFC calls in BPM.
    <i>I understand that i have to create multiline container and map 1:n from input xml into that container.</i>  I need help here.
    BPM Steps:
    <b>Receive source file - fill multicontainer ?</b>
    Open block step (forEach)
       send sync RFC call
       save Response in another multiline container
    close block
    send step - write response to file(receiver)
    file structure:
    <ns0:MT_compRqst_multi xmlns:ns0="http://abc.com/FileToRFCBPM">
       <DT_record>
          <companyID>000001</companyID>
       </DT_record>
       <DT_record>
          <companyID>000002</companyID>
       </DT_record>
    </ns0:MT_compRqst_multi>

    Hi -
    For your requirement, as Bill implied, you need a multi-mapping (Transformation step) that maps your single message with multiple records to multiple, <i>complete</i> messages with one record each. 
    To get you started, basically, for the multi-mapping, create a message mapping with your source and target MTs the same (as the one you posted).    Then in "Messages" tab, for your Target message, change the occurance to "0..unbounded".   Now if you go back to the "Design" tab, you see that both your source and target messages have a "Messages/Messages1" wrapper around them.  In the end, the target message would look like the following and would correspond to your multi-line container element:
    <ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
        <ns0:Message1>
            <ns0:MT_compRqst_multi xmlns:ns0="http://abc.com/FileToRFCBPM">
                <DT_record>
                    <companyID>000001</companyID>
                </DT_record>
            </ns0:MT_compRqst_multi>
            <ns0:MT_compRqst_multi xmlns:ns0="http://abc.com/FileToRFCBPM">
                <DT_record>
                    <companyID>000002</companyID>
                </DT_record>
            </ns0:MT_compRqst_multi>
        </ns0:Message1>
    </ns0:Messages>
    You'll need further steps - Interface Mapping, ccBPM (Transformation step, adjusting your Block settings, container element for multi-line element, etc.).   There are some blogs on multi-mapping within ccBPM that will help you - just do a search.
    Note that if your scenario has a large number of records, this approach is not performance friendly.
    Regards,
    Jin

  • Determine number of lines of multiline container in ccBPM

    Hi guys,
    during my process a loop over a multiline element and send each entry to SAP backend.
    After shipment of the message the process waits for some time, to prevent problems caused by parallel messages in the backend.
    At the moment I use a block in the "for each" mode. But with this solution the wait step is executed unnecessary, after sending the last message of the multiline container variable.
    Is there a possibility to check the number of entries and solve this issue with a normal loop step and preventing the process for unnecessary wait step?
    I search SDN for some information relating this issue, but without success.
    Any help appreciated, thanks in advance
    Kind regards
    Jochen

    Hi Shabarish,
    thanks for helping.
    You are right I want to know how many entries are in the multiline container.
    I also thought about an export parameter in the transformation step where the multiline message is created.
    In this parameter I could return the number of entries.
    Maybe this would be an adequate approach for this issue.
    Unfortunately I wasn´t able to evaluate such a export parameter, when I tried it last time.
    I mentioned the issue in this [thread|;.
    maybe you know how to solve this issue..?
    kind regards
    Jochen

  • Error in Transformation step of BPM

    Hi all,
    In BPM, I have defined a transformation step. For this, I have specified the Interface mapping which is between 2 abstract asynchronous interfaces. The Message Mapping for this Interface mapping involves multi-mapping (1:n) of the messages used.
    Also, for naming convenience, I have kept the names of the abstract async interface and its message type same.
    I have created containers for the message types of the both interfaces. The container for target message is of type 'multi-line'.
    When I checked the integration process, errors (red boxes) appear for both - the source and target messages in the transformation step properties window. The error text says <b>"Expression must return the interface type < Name of abstract message interface >"</b>
    What could be the cause of this error ?
    Any help would be appreciated.
    Thanks in advance.
    -Shankar

    Hi Shankar,
    Are you splitting the messages i.e 1 message into N messages ? If so, do  you have multiple message types in the Message Mapping in the target side ?
    Anyway, just recheck the Abstract Interfaces are activated. And reassign the container variables with Source message Absract Interfaces and Target message Abstract Interfaces.
    The error tells that, there is somewhere occurence problem.. So that is mismatch with the Message Interfaces..because you have selected the Multiline in the COntainers right ? Check without that..if it is ok, to narrow down the debugging..
    Regards,
    moorthy
    Regards,
    Moorthy

Maybe you are looking for