Record Count validation - BPM v.s. Message Mapping

Greetings,
  I've got a file of sales orders coming in from File -> RFC -> File.
In my incoming file, the final record contains my record count.
In my outbound file are, of course, the messages from my RFC to create orders.
In my BPM I receive the inbound file, then use a transformation  to count the number of orders and split them into separate messages so I can loop through them in a block & call the RFC.
I want to validate my order count against the number of orders listed in my trailer record.  Should I use a switch step in my BPM... or should I use a UDF in my message split? All I want to do... I think... is supress everything coming in and pass a message stating the error... in my outbound file.
Please advise...
Doug -

Hi Doug,
As pointed by Prabhu, u need to validate it within Mapping...
However , I am of the opinion that the source system should ensure to send correct record count before passing on to XI....
Thanks,
Himadri

Similar Messages

  • BPM Pattern Collect Message Mapping run time error

    Hi,
        I'm carrying out a replica of BPMCOLLECTMESSAGE Pattern from sap basis...
    Doing a simple file to file scenario and simple mapping....
    I'm getting a MAPPING RUNTIME error at the transform step.
    kindly help in this regards..
    The checks i'v made are...
    1. Deleted all the work flow items from SWWL transaction
    2.SXI_CACHE is 0
    3.Payload cross checked.
    Is there any solution please ???

    Hi,
       On  sending Stop message PE at technical details i get error stating :  *com/sap/xi/tf/_BpmPatternCollectMerge_com.sap.aii.utilxi.misc.api.BaseRuntimeException:RuntimeException in Message-Mapping transformation: Cannot produce target element /ns0:Messages/ns0~*
    kindly look at the Trace error at PE
      <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    - <!--  Call Adapter
      -->
    - <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30">
      <Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>
      <Trace level="1" type="T">Party normalization: sender</Trace>
      <Trace level="1" type="T">Sender scheme external = XIParty</Trace>
      <Trace level="1" type="T">Sender agency external = http://sap.com/xi/XI</Trace>
      <Trace level="1" type="T">Sender party external =</Trace>
      <Trace level="1" type="T">Sender party normalized =</Trace>
      <Trace level="1" type="T">Party normalization: receiver</Trace>
      <Trace level="1" type="T">Receiver scheme external =</Trace>
      <Trace level="1" type="T">Receiver agency external =</Trace>
      <Trace level="1" type="T">Receiver party external =</Trace>
      <Trace level="1" type="T">Receiver party normalized =</Trace>
      <Trace level="1" type="B" name="CL_XMS_HTTP_HANDLER-HANDLE_REQUEST" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">XMB was called with URL /sap/xi/engine?type=entry</Trace>
    - <Trace level="1" type="B" name="CL_XMS_MAIN-ENTER_XMS">
      <Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_EXT_PID: CENTRAL</Trace>
      <Trace level="1" type="T">CL_XMS_MAIN->DETERMINE_INT_PID: SAP_CENTRAL</Trace>
      <Trace level="1" type="B" name="CL_XMS_TROUBLESHOOT-ENTER_PLSRV" />
      <Trace level="1" type="T">system-ID = PI2</Trace>
      <Trace level="1" type="T">client = 100</Trace>
      <Trace level="1" type="T">language = E</Trace>
      <Trace level="1" type="T">user = PIAFUSER</Trace>
      <Trace level="1" type="Timestamp">2009-03-17T04:35:42Z CET</Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_UC_EXECUTE" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">Message-GUID = D3370BB6DF244EA7356EECD16D0E6FAD</Trace>
      <Trace level="1" type="T">PLNAME = CENTRAL</Trace>
      <Trace level="1" type="T">QOS = EO</Trace>
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_ASYNC">
      <Trace level="1" type="T">Queue name : XBTI0001</Trace>
      <Trace level="1" type="T">Generated prefixed queue name =</Trace>
      <Trace level="1" type="T">Schedule message in qRFC environment</Trace>
      <Trace level="1" type="T">Setup qRFC Scheduler OK!</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Going to persist message</Trace>
      <Trace level="1" type="T">NOTE: The following trace entries are always lacking</Trace>
      <Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST</Trace>
      <Trace level="1" type="T">- Exit CALL_PIPELINE_ASYNC</Trace>
      <Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
      <Trace level="1" type="T">----
    </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">--start sender interface action determination</Trace>
      <Trace level="1" type="T">select interface BpmPatternCollectIfStopCollect</Trace>
      <Trace level="1" type="T">select interface namespace http://</Trace>
      <Trace level="1" type="T">--start receiver interface action determination</Trace>
      <Trace level="1" type="T">Loop 0000000001</Trace>
      <Trace level="1" type="T">select interface</Trace>
      <Trace level="1" type="T">select interface namespace</Trace>
      <Trace level="1" type="T">--no sender or receiver interface definition found</Trace>
      <Trace level="1" type="T">Hence set action to DEL</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE" />
      <Trace level="1" type="T">Exception from packaging: No messages for constructing a package available.</Trace>
      <Trace level="1" type="T">Continue single processing</Trace>
      <Trace level="1" type="T">Note: the following trace entry is written delayed (after read from persist)</Trace>
      <Trace level="1" type="B" name="SXMS_ASYNC_EXEC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Starting async processing with pipeline CENTRAL</Trace>
      <Trace level="1" type="T">system-ID = PI2</Trace>
      <Trace level="1" type="T">client = 100</Trace>
      <Trace level="1" type="T">language = E</Trace>
      <Trace level="1" type="T">user = PIAFUSER</Trace>
      <Trace level="1" type="Timestamp">2009-03-17T04:35:42Z CET</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">>>>PID delete old pid determination coding</Trace>
    - <Trace level="1" type="B" name="PLSRV_XML_VALIDATION_RQ_INB">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
    - <Trace level="1" type="B" name="CL_XMS_PLSRV_VALIDATION-ENTER_PLSRV">
      <Trace level="1" type="T">Reading sender agreement</Trace>
      <Trace level="1" type="T">Inbound validation by Integration Engine does not take place</Trace>
      </Trace>
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
    - <Trace level="1" type="B" name="PLSRV_RECEIVER_DETERMINATION">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
    - <Trace level="1" type="B" name="CL_RD_PLSRV-ENTER_PLSRV">
      <Trace level="1" type="T">R E C E I V E R - D E T E R M I N A T I O N</Trace>
      <Trace level="1" type="T">Cache Content is up to date</Trace>
      </Trace>
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
    - <Trace level="1" type="B" name="PLSRV_INTERFACE_DETERMINATION">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
    - <Trace level="1" type="B" name="CL_ID_PLSRV-ENTER_PLSRV">
      <Trace level="1" type="T">I N T E R F A C E - D E T E R M I N A T I O N</Trace>
      <Trace level="1" type="T">Cache Content is up to date</Trace>
      </Trace>
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
      <Trace level="1" type="B" name="PLSRV_RECEIVER_MESSAGE_SPLIT" />
    - <!--  ************************************
      -->
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
      <Trace level="1" type="B" name="CL_XMS_PLSRV_RECEIVER_SPLIT-ENTER_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">number of receivers: 1</Trace>
      <Trace level="1" type="T">Single-receiver split case</Trace>
      <Trace level="1" type="T">Post-split internal queue name = XBTOX0__0002</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Persisting single message for post-split handling</Trace>
      <Trace level="1" type="T" />
      <Trace level="1" type="T">Going to persist message + call qRFC now...</Trace>
      <Trace level="1" type="T">NOTE: The following trace entries are always lacking</Trace>
      <Trace level="1" type="T">- Exit WRITE_MESSAGE_TO_PERSIST</Trace>
      <Trace level="1" type="T">Async barrier reached. Bye-bye !</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Generated prefixed queue name =</Trace>
      <Trace level="1" type="T">Schedule message in qRFC environment</Trace>
      <Trace level="1" type="T">Setup qRFC Scheduler OK!</Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_TO_PERSIST" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-PERSIST_READ_MESSAGE" />
      <Trace level="1" type="T">Exception from packaging: No messages for constructing a package available.</Trace>
      <Trace level="1" type="T">Continue single processing</Trace>
      <Trace level="1" type="T">Note: the following trace entry is written delayed (after read from persist)</Trace>
      <Trace level="1" type="B" name="SXMS_ASYNC_EXEC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="T">Starting async processing with pipeline CENTRAL</Trace>
      <Trace level="1" type="T">system-ID = PI2</Trace>
      <Trace level="1" type="T">client = 100</Trace>
      <Trace level="1" type="T">language = E</Trace>
      <Trace level="1" type="T">user = PIAFUSER</Trace>
      <Trace level="1" type="Timestamp">2009-03-17T04:35:42Z CET</Trace>
      <Trace level="1" type="T">----
    </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PIPELINE_SYNC" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">>>>PID delete old pid determination coding</Trace>
      <Trace level="1" type="T">Start with pipeline element PLEL= 5EC3C53B4BB7B62DE10000000A1148F5</Trace>
    - <Trace level="1" type="B" name="PLSRV_MAPPING_REQUEST">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
    - <Trace level="1" type="B" name="CL_MAPPING_XMS_PLSRV3-ENTER_PLSRV">
      <Trace level="1" type="T">No mapping required</Trace>
      </Trace>
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
    - <Trace level="1" type="B" name="PLSRV_OUTBOUND_BINDING">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV">
    - <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL">
      <Trace level="1" type="B" name="CL_XMS_PLSRV_OUTBINDING-ENTER_PLSRV" />
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
    - <Trace level="1" type="B" name="PLSRV_XML_VALIDATION_RQ_OUT">
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
    - <!--  ************************************
      -->
    - <Trace level="1" type="B" name="CL_XMS_PLSRV_VALIDATION-ENTER_PLSRV">
      <Trace level="1" type="T">Reading receiver agreement</Trace>
      <Trace level="1" type="T">Outbound validation does not take place</Trace>
      </Trace>
      </Trace>
      </Trace>
      </Trace>
      <Trace level="1" type="B" name="CL_XMS_MAIN-WRITE_MESSAGE_LOG_TO_PERSIST" />
      <Trace level="1" type="B" name="PLSRV_CALL_ADAPTER" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_MAIN-CALL_PLSRV_LOCAL" />
    - <!--  ************************************
      -->
      <Trace level="1" type="B" name="CL_XMS_PLSRV_CALL_BPE-ENTER_PLSRV" />
    - <!--  ************************************
      -->
      <Trace level="1" type="T">--start sender interface action determination</Trace>
      <Trace level="1" type="T">select interface BpmPatternCollectIfStopCollect</Trace>
      <Trace level="1" type="T">select interface namespace http://</Trace>
      <Trace level="1" type="T">--start receiver interface action determination</Trace>
      <Trace level="1" type="T">Loop 0000000001</Trace>
      <Trace level="1" type="T">select interface BpmPatternCollectIfStopCollect</Trace>
      <Trace level="1" type="T">select interface namespace http://</Trace>
      <Trace level="1" type="T">--no sender or receiver interface definition found</Trace>
      <Trace level="1" type="T">Hence set action to DEL</Trace>
      </SAP:Trace>
    Edited by: Robin on Mar 17, 2009 10:11 AM

  • Record count validation

    Hi ,
    Iam using the below code in AM module. ClaimLinesVO() has a query "select * from claims". Iam initializing all rows to "Row [] lineRows" variable where column status meeaning=entered
    In sqlplus, if i run the query select * from claims statusmeeaning=enetered then iam getting one valid row.
    In my screen under line details first 10 records wiil be displayed after if u press next button it will display another 10 records and so on..
    i have only one record with statusmeaning=entered .if you go by sequence and it is the last record.
    But in JDev if iam executing with the below code it is giving count =0 but actually it has to display count=1. In the screen it is checking only the first 10 records which is having statusmeaning=entered. It is not checking the later records. Please help.
    public String verifyClaim(String strHeaderId)
    ClaimLinesVOImpl linesVO = (ClaimLinesVOImpl)getClaimLinesVO();
    linesVO.executeQuery();
    Row [] lineRows = linesVO.getFilteredRows("StatusMeaning","Entered");
    System.out.println("Count************" + lineRows.length);
    Regards,
    Kiran

    An example. You can find RowSetIterator in Dev Guide.
    int fetchedRowCount = vo.getFetchedRowCount();
    // We use a separate iterator -- even though we could step through the
    // rows without it -- because we don't want to affect row currency.
    // Note that there are also convenience methods for finding matching rows
    // in a view object (see javadoc).
    RowSetIterator deleteIter = vo.createRowSetIterator("deleteIter");
    if (fetchedRowCount > 0)
    deleteIter.setRangeStart(0);
    deleteIter.setRangeSize(fetchedRowCount);
    for (int i = 0; i < fetchedRowCount; i++)
    row = (PoSimpleSummaryVORowImpl)deleteIter.getRowAtRangeIndex(i);
    // For performance reasons, we generate ViewRowImpls for all
    // View Objects. When we need to obtain an attribute value,
    // we use the named accessors instead of a generic String lookup.
    // Number primaryKey = (Number)row.getAttribute("HeaderId");
    Number primaryKey = row.getHeaderId();
    if (primaryKey.compareTo(poToDelete) == 0)
    row.remove();
    getTransaction().commit();
    break; // only one possible selected row in this case
    deleteIter.closeRowSetIterator();
    } // end deletePurchaseOrder()
    Thanks
    --Anil                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               

  • CPU time of BPM or message mapping?

    Hi all,
    is there a way to find out how much CPU time is spent by a certain BPM instance (or message mapping instance)?
    It would be sufficient to get that value per BPM type / message mapping type.
    So far, I've found the following sources, which all won't work, unfortunately:
    - table SWWWIHEAD: No CPU time information (as far as I see)
    - transaction STAD: I don't see a way to connect an entry to the resp. BPM. There is a Transaction-ID, but I can't find it in the BPM...
    - transaction ST03N: Only aggregated values for user WF_BATCH, not detailed statistics
    - several places, which only show clock time, but not CPU time
    Thanks in advance!
    Kind regards,
    Dennis

    Hi Michal,
    Thanks a lot for your info.
    Too bad that there is no other possibility yet.
    I'm not completely sure whether the result is worth the effort, though, as there will probably be a lot of different BPM types on this system, so benchmarking each is quite some work (and requires an otherwise idle test system during this time).
    In addition, it could be difficult to generate test data that will most likely represent the expected data during production use. Especially for BPMs with many conditional tasks (branches, loops, ...), this can be a mess...
    But I will propose it anyway. If it gets accepted, I'll post the gained experience with this approach here. Maybe it works better than my pessimistic expection.
    Hopefully, SAP will integrate this functionality somewhen. I guess I set up some customer feedback.
    Kind regards,
    Dennis

  • Query Error in Message Mapping

    Hi everyone
    I am working on a BPM, that BPM has a  Message Mapping that makes a Query to a DB.
    When I send a message with multiple details its working in the following way:
    1.- If the first detail makes a query of a catalogue that exists on the DB, and the second detail makes a query to a cataloge that does not exists on the DB it finishes with error.
    2.- If the first detail has the query of an unexisting catalogue on the DB, and the second detail has the query that exists on the DB it finishes correctly.
    Can someone give me some light on whats happenning here?
    Thanks in advanced

    Ended message

  • Set a variable in Adapter Module and read it during message mapping

    Hi guys,
    is there any way, how I could set some variable and store its value during the adapter module processing and read back this value in message mapping and use it? Without using a database or files.. I mean, some j2ee storage or something like that..
    Thanks for your help,
    Olian

    Hi guys,
    thanks for your answers..  just a clarification, what the problem is.
    I need to validate a message in the adapter module, if it's digital signature is valid. If it is, I need to send back to the sender a return code (message) OK, otherwise ERROR. I can't modify the message (or dynamic configuration) as I'm using a WSS in the sender channel. The system doesn't allow me to change anything in the message, so I can't find out in the mapping what the validation result was. I then tried to do the validation directly in the message mapping, but I have some issues there with libraries or what, because the validation code, which works in the adapter module, doesn't work in the mapping java class. So my final thought was maybe I could validate the message in the adapter module and pass the result to the message mapping and then create an appropriate return message (in the mapping). However, I see no way of passing a value there. I'm stuck and have no Idea how to resolve the problem. Any hints guys?
    Thanks a lot for your help!
    Olian

  • Accessing container variable of BPM in Message Mapping function

    Hi,
    I have a scenario in BPM where i have a container variable that is used as a loop counter.I want to access that counter defined , every time when i go around the loop and perform certain actions based on that counter. so how can i access that variable in my message Mapping function.

    Hi Sudharshan,
    check these links, hope they give you the required information (i think there is some problem with SDN site, check these links after a while)
    Re: How to use Container Variable across Maps
    Container object in Message Mapping
    Copy value of container (abstract interface) to an other container
    Regards
    Vishnu

  • How to implement validations in message mapping?

    Hi experts,
    I have a simple requirement:
    I have a simple synchronous scenario:
    SOAP -> XI -> RFC
    In a message mapping, one of the fields in the source message is of type String.
    However, the target application (RFC) does not expect a non-numeric characters in this string.
    My question is how can I perform the validation in XI and tell the sender that this field contains Non-numeric characters?
    Please help.
    Thanks.
    Ron

    > Ron,
    >
    > >>With a RunTime Exception thrown, how can I tell
    >  the sender an error has occured?
    >
    > Sure. You can do this with out a BPM. You need to
    > configure alerts for this. If you configure ALERTS
    > and SCOTT, this will send an email of the errors
    > occuring in your scenario.
    >
    > For configuring and trouble shooting alerts check
    > these
    >
    > https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/
    > 2327
    > https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/
    > 2328
    >
    > Regards,
    > Jai Shankar
    Hi Jai
    I already have alerts configured.
    But what I had in mind is to send a response to the sender (The sender is waiting for a reply since this is synchronous), instead of telling the sender through an alternative means such as email, sms, etc.
    Is this possible?

  • Filtering of records in Message Mapping

    I am facing problem during filtering record in message mapping. My message comes from R3 and should be sent to one business service in entirety and should also be sent to another business service in part. To resolve this I created a message map for selecting record based on some conditions but this creates empty XML nodes wherever condition is not satisfied. Everything works fine but the scenario fails at the end while trying to convert XML to text using file adapter. The error is ‘Conversion configuration error: Unknown structure '' found in document', probably configuration error in file adapter (XML parser error)’

    Hi Rajesh,
    This scenario you are trying can be done using CONDITIONAL RECEIVER DETERMINATION and RB SPLIT, where you can basically have one sender and two receivers.
    To do this without using a BPM.
    1. Create your mapping program that will map the information from the source file
    into the destination idoc. This has to be a 1:N split. Just make sure that the destination message type and message interface are are of occurrence N.
    2. Also, you will have 2 destination interfaces and 2 interface mapping, one for the IDOC and one for the mail.
    Now, there are a few essential steps in your configuration,
    1. In the receiver determination, specify the 2 receiver systems, one for your IDOC and the other for your MAIL.
    2. Now, you will have a condition window. Just type the condition on the basis of which the receiver has to be determined for the mail and the idoc business system. Just remember that the condition can be specified only for the source message.
    3. In the Interface Determination, you have an option called RB CLASSIC and RB SPLIT. To do a 1:N split, you will have to do a RB_SPLIT.
    And since you wanted to covert the XML format to text format you require content conversion at the receiver adapter end, for that please go through these links below. It clearly explains your requirement.
    /people/arpit.seth/blog/2005/06/02/file-receiver-with-content-conversion
    http://help.sap.com/saphelp_nw04/helpdata/en/d2/bab440c97f3716e10000000a155106/frameset.htm
    I hope I have answered your query.
    Regards,
    Abhy
    note: do reward points for the helpful answers.

  • BPM Message Mapping: "Cannot produce target element /ns1:BAPI...."

    Hi,
    A scenario File - BPM - BAPI call was developed, as described in blog 'RFC scenario using BPM' cfr. link
    /people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
    The Mapping is as follows:
    MT_EDB_MATERIAL_REQ (1:1) --> BAPI_MATERIAL_EXISTENCE_CHECK (1:1)
    MATNR (1:1) -
    > MATERIAL (1:1)
    When executing the scenario, an error appears in the trace of SXMB_MONI, step 'Request Message Mapping'
    Cannot produce target element /ns1:BAPI_MATERIAL_EXISTENCECHECK. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd....
    I tried the following:
    1) import the XML-file into the testmapping: executed successfully
    File:
    <?xml version="1.0" encoding="UTF-8"?>
    <ns0:MT_EDB_MATERIAL_REQ xmlns:ns0="http://agfa.com/SD_EDB">
    <MATNR>15P6X</MATNR>
    </ns0:MT_EDB_MATERIAL_REQ>
    2) Removed the mapping on node level and left mapping only on element level (material): same error
    3) Activated the message mapping, interface mapping, determinations, etc again...:same error
    4) Removed the Interface Mapping and created it again: same error
    5) Compared the version ID of the Interface Mapping/message mapping in the Monitor trace with the version ID of the IR and saw that there was a difference.
    After the CPA full cache, SXI_CACHE full refresh and object refresh in the IB Administration, the differences remain, and also the error....
    Anybody an idea ?

    Hi
    >>>Cannot produce target element /ns1:BAPI_MATERIAL_EXISTENCECHECK. Check xml instance is valid for source xsd and target-field mapping fulfills requirements of target xsd....
    The error clearly says that one of the occurrence value  for the target node mentioned is not coming from the source during mapping. The easiest way to solve the problem is as follows
    <b>
    First Execute the mapping as pointed out by "Raj" and the following steps.
    </b>
    1. Goto the Mapping Editor
    2. Double click on the target node that is causing the problem here BAPI_MATERIAL_EXISTENCECHECK.
    3.  Right click on the same node and select "DisplayQueue".
    4. View the Queue.
    5. YOu will find "Suppress" entries, which means a value is expected but no value is coming in.
    6.Go from right to left and check each node in the mapping and you will be able to trace where the suppress node comes from and take appropriate action
    regards
    krishna

  • Skip record in message mapping

    I have scenario where I am doing a RFC call in message mapping.Based on the result I need to create
    IDOC.If result does not meet the condition then I dont have to create IDOC for that record.
    Is any thing can be worked out that I can skip those
    records which does not meet condition in message mapping.
    Any help is appericiated.
    Rekha.

    Rekha,
    You need to use the BPM to check your RFC return data.
    Then you can have the logic to create / Not create the IDoc.
    Are you using XI 3.0?
    Regards,
    Simon

  • Different options for message mapping in BPM

    Hey guys
    i m in the learning phase of BPM and am kinda confused with the different ways we can do message mapping in a BPM scenario.
    first of all we can do message mapping before BPM,we can also do after BPM and lastly we can do inside BPM(ofcurse this is not recommended as its too resource consuming)
    i have bene through starters blog on BPM by Krishna moorthy and Arpit seth,and now am wondering how to use the mapping in diff. ways
    suppose i m doing a simple File to File with BPM(just for practise purpose)
    now here is what i have designed in IR
    DT_sender_File                                       DT_receiver_File
    MT_sender_File                                       MT_receiver_File
    MI_Outbound_sender(async,outbound),     MI_Inbound_receiver(async,inbound)
    AI_sender(abstract,async)                        AI_receiver(abstract,async)
    MM_File_File(using MT_sender_File and MT_receiver_File)
    now i want to clear some doubts about interface mapping.my understanding is
    if i do interface mapping between MI_Outbound_sender and AI_receiver,this will be interface mapping before BPM.
    if i do interface mapping between AI_sender and MI_Inbound_receiver,this will be interafce mapping after BPM
    and if i do interface mapping between AI_sender and AI_receiver then it will be mapping inside BPM.
    is my understanding correct?if yes,then does that means we can we any of the above mapping in our scenario.(if we dont consider the performance issue as of now)
    thanx
    saif

    Hi Saif,
    <i>
    is my understanding correct?</i>
    Yes, thts correct
    <i>if yes,then does that means we can we any of the above mapping in our scenario</i>
    Of course, u can use any of them (overlooking the performance issue)
    Regards,
    Prateek

  • Request Message mapping in SXMB_MONI for File - RFC - File without BPM

    Hi ,
    In my File-RFC-File scenario, the messages are processed successfully.
    but when i look into the SXMB_MONI for File to RFC step, the records are present only till the  Message split According to Receiver List and not able to see the records from Request Message mapping step onwards.it contains
    <?xml version="1.0" encoding="UTF-8" ?>
      <ns1:Z_PI_LOTUSNOTES_UNIFORM xmlns:ns1="urn:sap-com:document:sap:rfc:functions" />
    in my mapping for the receiver RFC i have not done the mapping for all the fields. few fields i have disabled. whether this could create a problem in message mapping. pls let me know what needs to be done.

    Is it only for this scenario that the above display issue is occuring or is it for all scenarios?
    If onlt a particular Pipeline steps are displayed then you can check what is the TRACE level set in SXMB_ADM --> Integration Engine Configuration --> and check if the TRACE parameter is set to at least 2 (max is 3 which will ensure that your DB will get full quickly)
    For more information refer: /people/michal.krawczyk2/blog/2005/05/10/xi-i-cannot-see-some-of-my-messages-in-the-sxmbmoni
    Regards,
    Abhishek.

  • Message Mapping Error in BPM

    when message mapping, if the length of source field is longer than specified length, I need to output these kinds of messages. what is the solution?

    Hi,
            try using a user defined function written in java where u can check for the condition and raise a exception.
               if(sourcefield.length()>16)
    S.O.P("The Invoice Number is greater than 16 characters");
    or
       using a BPM where u can check whether Invoice number is greater than 16 characters and if it is true then raise an exception and send the message through BPM.
    regards
    jithesh

  • Message Mapping outside BPM

    I often see a point from XI-Legends that a Message Mapping should be executed out side the BPM and that will make the XI performance good.
    How to do a Message Mapping outside BPM? What does it mean?
    Any Blog that narrates the above situation?
    Thanks.

    Data Types
    Source/Sender Data Format ---     DT_Sender File     
    Target/Receiver Data Format --     DT_Receiver
    Message Types
    Sender Message Type -  MT_SenderFile
    Receiver Message Type - MT_ReceiverFile
    Message Interface
    MI_OB_Sender(Async, Outbound)            MI_IB_Receiver(Asynch,Inbound)
    AI_Sender(Async, Abstract)                    AI_Receiver(Async,Abstract)
    So
    if the mappaing is done between
    MI_OB_Sender       To   AI_Receiver           (Its Before BPM)
    AI_Sender              To   MI_IB_Receiver      (Its After BPM)
    AI_Sender              to  AI_Receiver            (Its inside BPM)
    Whether my understanding is correct? Thanks for your patience.

Maybe you are looking for

  • Power Pivot Configuration error while refreshing connection on excel sheet for SharePoint 2013 and Sql server 2014 using BISM file connection

    I am getting following error while refreshing connection on excel sheet in power pivot gallery, my scenario, using BISM file connection to create and  refresh power pivot excel sheet in power pivot gallery throws error and we have sql server 2014 CU6

  • Adobe Reader X fast web view problem

    Hi, When I try to open a PDF with several pages from the web using Adobe Reader X, fast web view function seems not working while I could only view it after download of the whole file completed. Checked and confirmed that "Allow fast web view" select

  • Client deletion taking long time....

    Hi All, I have been going through tough times in SAP ECC right now. I am doing a client deletion using SCC5. Total entries in tables were 58514. It was going fine till it reached 58504. From then onwards, the tables SAP is deleting are having crores

  • Dynamic text and url...

    Hi, I'm trying to create an url to a word inside a dynamic textbox but I'm not sure how to do that. I'm familiar with TextFormats, etc. but that only apply to the textbox and not to a word or a sentence inside that textbox. Or have I been misguided??

  • Date format in reply page

    I don't know how long this has been going on, but I just noticed it today. When I click to reply to a post, the date joined shows up as YY-MM-DD. Aside from the fact that this is confusing (US uses m/d/y, many other places use d/m/y), the full readou