XI3.0 BPM collect message using substring within correlation
Hi,
I have a requirement to collect a list of IDOCS using the first three characters of a field as a correlation. I tried adding the XPATH expression
substring(/ArticlePriceData/ArticlePrice/Site, 1, 3)
within the correlation editor but this does not work - all IDOCS get added to a single process. Has anybody been able to get this to work? My integration process is based on the SAP example BpmPatternCollectMessage
Many thanks
Ian
Hi,
I have tried your suggestion and I still do not get the correlation value that I expect - now each message gets a new process ID with a correlation value of blank.
Thanks for your help
Ian
Similar Messages
-
BPM Collect Message dependent AND time dependent
Hi
I have a IDOC to file scenario where I have to collect all the IDOC until I receive a stop IDOC.
Once the End collect IDOC is received I have to do a n:1 transformation and write the file to the FTP.
The problem is, at times the IDOC which is suppose to end the collect loop gets stuck in ECC R3 system.
So Im wondering If I can do something like say, we have two options inside BPM both time dependent and message dependent.
In this case which ever comes first (the Stop/END IDOC or the Time say 3 mins) will end the collect process.
Can anyone pls suggest will it work and if so what are the additional steps I have to introduce in the BPM.
Pls advice.
Right Now these are the steps in the BPM Collect Message dependent.
1. Block (I have used correlation)
2. Fork inside the block
3. Fork branch one has a look with end condition as 1=1; then a receive step and a container operation inside the loop.
4. Fork branch two receives the end collect idoc.
5. Transform step outside the block.
6. Send step.
Thanks
PrasannaHi Abhishek/ Raj
Thanks!!
I have done the changes let me confirm after testing it once. In the mean time I have one more question regarding the same BPM, as I have mentioned in the first post, the BPM contains the 6 steps mentioned but the the 6th step is inside another block (Block2).
The steps 1 to 4 are inside Block1.
The step 5 ie the transformation step (n:1) is in between the Blocks ie not inside any block (hope im not confusing).
The second block is for sending the file to the FTP and based on the acknowledgement (transport level) I have to send an email.
So Block2 already contains a deadline branch, it is to wait for the positive acknowledgement for say 3 mins and send the error email if incase we dont get positive ack within the time limit.
My doubt is,
1. Is it the only way (having two block and two wait steps) to achieve this.
(one block for collecting and one block for ack)
2. Is there any way I can have a single Block in the BPM insted of two. If so what are the steps.
Having single block, Will improve anything??
Thanks
Prasanna -
Hi All,
I am doing a scenario for collecting messages using BPM, the objective was i need to collect the input messages and to be stored, when the message reaches 10, then it should deliver all these 10 messages to the target.
for this, i have designed bpm with the
1. Receiver Step
2. Container Operation
3. Transformation and Send.
but i am getting the following error while activating
Exptession must not return an multiline value
Expression must return the interface type MI_OUT_A
Expression must return the interface type MI_IN_A
Container element var1 in step Receive1 is initialized but is not used.
Here var1 is the abstract interface
the datatype& message type was DT_A and MT_A and the interfaces are MI_OUT_A and MI_IN_A.
could anyone clarify regarding this issue..
regards,
SaiHi,
Check some links on BPM.
/people/krishna.moorthyp/blog/2005/06/09/walkthrough-with-bpm
/people/shabarish.vijayakumar/blog/2005/08/03/xpath-to-show-the-path-multiple-receivers
/people/arpit.seth/blog/2005/06/27/rfc-scenario-using-bpm--starter-kit
/people/sravya.talanki2/blog/2005/08/24/do-you-like-to-understand-147correlation148-in-xi
/people/michal.krawczyk2/blog/2005/09/04/xi-do-you-realy-enjoy-clicking-and-waiting-while-tracing-bpm-steps
/people/sudharshan.aravamudan/blog/2005/12/01/illustration-of-multi-mapping-and-message-split-using-bpm-in-sap-exchange-infrastructure
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/daea5871-0701-0010-12aa-c3a0c6d54e02
https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/media/uuid/e8515171-0701-0010-be98-e37bec4706cc
Regards,
Phani
Reward points if Helpful -
Hi all,
Am doing a collect message pattern using BPM. After collecting messages wen mapping is called its throwing exception. CAn you help me out in this. I ll explain.
the input i give is :
<Root>
<Name> asd </name>
<ID> A </ID>
</Root>
i sent thid message 5 times to BPM (using collect pattern).
the stop message is of the format
<Stop>
<ID> A</ID>
</Stop>
wen i send this the collect block is exited and the flow comes to a transformation step which does a n:1 mapping
ie. in my mapping i add the source message type and changed its occurence to unbounded in messages Similarly in IM also i changed the occurence of source MI to unbounded. wen i test the message mapping with this
<Root>
<Name> asd </name>
<ID> A </ID>
</Root>
as input it gives the exception. But if i gve like this ten its showing successful.
<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
<ns0:Message1>
<Root>
<Name> asd </name>
<ID> A </ID>
</Root>
</ns0:Message1>
</ns0:Messages>
But how can wedo that as transforamtion happens in BPM. PLease help me out in thisHi,
Check these links
/people/stefan.grube/blog/2006/09/18/collecting-idocs-without-using-bpm
/people/pooja.pandey/blog/2005/07/27/idocs-multiple-types-collection-in-bpm
http://help.sap.com/saphelp_nw2004s/helpdata/en/76/5d373f5e550456e10000000a114084/frameset.htm
Regards,
Kumar -
Hi
we are experiencing problems in BPM Collect pattern, error is not clear.
Our payload before input to BPM
<record>
<row>
<key>1</key>
<val1>1</val1>
</row>
<row>
<key>1</key>
<val1>1</val1>
</row>
</record>
this is given to BPM, and BPM is following exact collect pattern in SAP Documentation like
1. Block with restricted by correlation (/record:key1), deadline with 1 minute, used by correlation
2. within Block, unlimited loop, with started recieve step, activated correlation, and append records with container operation
3. multi-mapping transform step, with multiple records to single record and followed by send step.
we are getting error in the blok step, no description of error.
BPM is activated without any errors
Please advise, appreciate all ur help.Any body got the solution for this . I am having same problem .
My Payload as follows
<?xml version="1.0" encoding="UTF-8" ?>
- <ns0:BpmPatternCollectMessageToBeCollected xmlns:ns0="http://sap.com/xi/XI/System/Patterns">
<ID>1</ID>
<OverallNumber>1</OverallNumber>
</ns0:BpmPatternCollectMessageToBeCollected>
for BPMPattrenCollectTime BPM and I amhaving error on outbound side in BPE
when I dig into technical details The BPM details as follows
Error during result processing of work item for Reciving Message Step
Regards
Murali -
Hi,
when i perform a check to standard BPM patterns BpmPatternCollectMessage. I get the following info am i wrong some where do any changes needed to be done.
Container element stopmessage in step receive terminating message is initialized but not used
Container element collectmessage in step *receive * message is initialized but not used...
kindly helpI did the above scenario as told.
It is a bpm message dependent scenario. It keeps collecting messages till a particular message is received.
I more or less used the message dependent pattern given in SAP BASIS.
The data types are as follows.
Dt_In
Name
OverallID
Dt_In
Name
OverallID
1 to 1 mapping
I used the OverallId for correlation. The receive step inside the infinte loop collects the messages with OverallID '1' while the receive step below collects messages with OverallId '2'.
In the container elements i defined 2 separate message interfaces. One for OverallID '1' and the other for OverallID '2. The 2 message interfaces have the same Message type. Only values will be different.
For the parallel fork step i have given end condition OverallID = 2.
When i execute the scenario the messages are all comingin a queue. The status is wait for event.
What could be the problem?
Thanks
Edited by: pratichi chauhan on Sep 24, 2008 2:46 PM -
BPM collects messages, and should terminate at a given time
Hi,
i'm trying to create a scenario where a business process collects messages. At a certain time each day this process must transform this messages into one message and terminate.
(I used the BpmPatternCollectTime process as a template)
My problem is:
how to tell the deadline branch it should rais an exception every day at a given time, lets say 10pm?
I already tried to configure this branch with "Reference Date/Time=Expression" and set date and time to 2008-10-04 14:30:00. But the process won't stop at this time.
Any ideas?
Thanks in advance,
msHi,
I am not sure if you could use this pattern for stopping at a given time?
Maybe you could configure a report that sends a message every day at the given time to the PI and your process stops with receiving this message.
Regards
Patrick -
For the BPM Pattern BPMCollectMessage...
I'm doin a file to file scenario.. Its fine at the sender side CC shows sucess and also moni but not able find any messages of my target interface any idea wat the problem is .. the recevr cc is active but no logs. .and also from IP to recvievr its not processed i guess no messages seen on moni....>
Robin wrote:
> For the BPM Pattern BPMCollectMessage...
> I'm doin a file to file scenario.. Its fine at the sender side CC shows sucess and also moni but not able find any messages of my target interface any idea wat the problem is .. the recevr cc is active but no logs. .and also from IP to recvievr its not processed i guess no messages seen on moni....
try to check the status using RWB -> Message monitoring ...
you would be able to see what is causing the issue in the detailed log -
In bpm(abstract message used in container)
hi expects,
for what purpose we are using abstract message in container).Hey Rohit,
To give an exact picture of the use of container variables you can refer them as direction less interfaces.
When we Create Message Interfaces We define <b>Category</b> (Inbound, Outbound, Abstract) , <b>Mode</b> (Synchronous , Assynchronous).
<b>Inbound</b> refers to Incoming message to the XI server.
<b>Outbound</b> refers to Outgoing Message from XI server
<b>Abstract:</b>
When the concept of integration process comes into picture it has to refer to interfaces defined in its own s/w component version. It can only refer to Abstract interfaces as they are direction less and when used in integration process they are assigned direction dynamically. EX: if you have a defined a container variable XYZ which refers to some abstract interface ABC and call this XYZ container variable in in receieve step of the int pro then it can as inbound.
For further clarification please refer <a href="http://help.sap.com/saphelp_nw04/helpdata/en/78/62373f58502e48e10000000a114084/content.htm">Defining Data Process in Containers</a>
Hope itz clear.
Cheers,
*Raj*
*Reward Point If Found Usefull* -
SOLVED Trigger Trouble using substr within trigger to merge feilds
hi all,
im new to oracle triggers although this trigger seems right to me but it wont compile without errors can anyone spot what i have missed...
1 CREATE OR REPLACE TRIGGER "BOOK_INFO"
2 BEFORE INSERT ON "BOOK_INFO" FOR EACH ROW BEGIN SELECT BOOK_SN.NEXTVAL
3 INTO :NEW.BOOK_CN_NUM
4 FROM SYS.DUAL :NEW.book_cn
5 := SELECT SUBSTR( :NEW.book_title, 1, 2 )||'-'||
6 SUBSTR( :NEW.book_author_name, 1, 2 )||'-'||
7* TO_CHAR( :NEW.book_num, 'fm000' );END
8 /
Warning: Trigger created with compilation errors.
thanks everyone
RMMO
Message was edited by:
RMMOthis is the session in which SHOW ERRORS gave me a no error response
SQL> ed
Wrote file afiedt.buf
1 CREATE OR REPLACE TRIGGER "BOOK_INFO"
2 BEFORE INSERT ON "BOOK_INFO"
3 FOR EACH ROW
4 BEGIN
5 SELECT BOOK_SN.NEXTVAL
6 INTO :NEW.BOOK_CN_NUM
7 FROM SYS.DUAL;
8 :NEW.book_cn := SUBSTR( :NEW.book_title, 1, 2 ),||'-'||,
9 SUBSTR( :NEW.book_author_name, 1, 2 ),||'-'||,
10 TO_CHAR( :NEW.book_num, 'fm000' );
11 END;
12* /
SQL> /
Warning: Trigger created with compilation errors.
SQL> SHOW ERRORS;
No errors.
SQL> -
Xpath in the collect message of BPM
Hi,
I created a BPM collect message. My source message has a field which is in the format of XXXX-NN such that XXXX can be any 4 letters and NN is a number 01 - 99. In the loop of the BPM, I made use of an Xpath command in the condition editor for the loop condition. The command is /header/segment1/segment2[(substring(field1,6,2))] for the left hand operand and comparing it as not equal to a counter variable.
When I look at my graphical workflow log, there is an error in the Transformation step. In SXMB_MONI, I have a red flag with an error of "Message has error status on outbd. side" in the process view of SXMB_MONI.
If I change the Xpath command to /header/segment1/segment2/field1 and change the value of my field to just use NN without changing anything else, my BPM is working properly. Is there something wrong with the added Xpath command? I followed the blog in /people/shabarish.vijayakumar/blog/2006/06/07/customise-your-xpath-expressions-in-receiver-determination but I wonder if this only works for Receiver Determination. Please help.
Regards,
ElbertHi Elbert,
the expression
means a condition and requires a
=
For example:
[//person/name[../no='123'] code]
means: select element person/name where person/no "123" is.
Because of unclear results regarding the namespace i wouldnt put the full path. Use for example [code]substring(//segment2/field,6,2)
The substring expression is ok, i m shure.
<b>substring(X-Path on String value, No of letter in string, length of searched substring)</b>
If the string is not long enough, it might give you strange errors, he, he. Cant cut 1m of 20 cm salami.
Regards,
Udo -
Corelating messages using the Dynamic Values
Hi all,
I want to collect message using BPM.I have sucessfully executed the same using corelation from one of the fields.The ID field was used for corelation
I was able to sucessfully execute the senario the messages with same ID were going to same process ID and getting collected as well
Now i wanted to have some dynamicconfiguration parameters for eg i thought i can use the filename.That is collate the messages using the filename.
I changed the corleation and tried but for each messages even with the same file name its creating a different process ID and thus my messages are not collected at all.
To tel you more about the senario i created its a file to file with BPM collecting the messages. i send the first file and then the second file also with the same file name.
I have configured the AdapterSpecific Attributes and able to view the filenames in the XML Messages header
Can anyone put some light as too why there are different Process IDs being created.I heard in some of the forums that its an error in some of the SPs
I am on XI 7.0 SP11 and think it should not be a problem.
Thanks in Advance
Rgds
Adityathnks for ure replies
But all of the above steps are checked
It seems that i have given the right co-relation as well but still dnt knw y i'm not able to collect the messages
The loop is defined to complete after a fixed count and the container variable increments by 1 after each loop
The senario works perfectly if i use any field corelation to collect the messages but fails when i use a dynamic value like filename. And yes i have double checked the filename they are same
Rgds
Aditya -
Using the same correlation set to multiple instances of the same process
Hi all,
Assuming that I have a Purchase Order with multiple items and I have a BPEL process that is triggered for each item.
When the Purchase Order is cancelled by the customer, I want to cancel all BPEL process that is still running. I'm using SOA Suite 11.1.1.2.
My first attempt was to use an event handler associated to a cancellation operation, but I couldn't do this because when the second BPEL instance was started, a conflictingReceive BPEL Fault is triggered. This occurs because BPEL can't have more than one active receive/on message using the same correlation set.
Another way to do this is using a different correlation set for each instance (somethig like a composite key - Purchase Order ID + Item ID, i.e), but in this way I need to know all composite key in advance and send one message to each instance specifically.
Anyone have any suggestion of how to cancel more then one instance of the same BPEL process using Event or a generic way that does not need to send one message for each instance?
Events work very well to start more then one BPEL process but does not work well to receive an intermediate message during process execution because in this case we need correlation set to associate the event with the correct instance and BPEL does not support more then one instance of the same BPEL process waiting for the same correlation set.
Any suggestion will be very welcome.
Thanks in advance,
RafaelNever mind. I got it.
I put the iisforward.dll and .ini is a seperate folder, and edited the iisproxy.ini's to include the portnumber like this. And I changed the hostheaders in IIS to Site1, Site2 etc
vhost1=Site1:80
Site1:80=C:\Sites\Site1\iisproxy.ini
vhost2=Site2:80
Site2:80=C:\Sites\Site2\iisproxy.ini
vhost3=Site3:80
Site3:80=C:\Sites\Site3\iisproxy.ini -
WD Message Manager - collect messages
Hi All,
we work with 2 WD-applications reporting their message in the messagearea of WD-application#1
How can I report messages without losing existing messages?
I found note 940762 in this forum saying that it is possible to collect message using the parameter is_permanent or/and scope_permantent_msg.
example:
CALL METHOD lr_message_manager->report_exception
EXPORTING
message_object = lr_exc_core
IS_PERMANENT = ABAP_FALSE
SCOPE_PERMANENT_MSG = 0.
Can anyone describe the differences between the 2 options?
What else can I do to collect messages?
Thanks, MartinHi Martin,
if you just use IS_PERMANENT, you have to remove your messages, when they should not be displayed anymore. If you set scope_permanent_msg e.g. to if_wd_message_manager=>co_msg_scope_controller and you set a controller reference, the message will be removed, when the controller is deleted.
Regards, Regina -
Collect Message without correlation
Hi,
I have a scenario. I have to collect 10 files which has like 100 bytes of information in each file and they should be collected into a single file every five minutes. I dont know whats inside the file. The data may vary...How do I collect these messages without correlation in BPM? I can relate only file names....there is no relation between them in the payload...
Also, without correlation, if the file adapter polls every 5 mins and grabs 10 files, how do I control them to process in the same BPM instance (should I use interface namespace in the correlation for single BPM instance) - how to use collect pattern? can I use file name and process them in BPM to be collected????
Thanks for the suggestions.
ThilothamaMoorthy,
Thanks for the reply. So lets say my incoming
file 1 has "This is file 1 content "
file 2 has "This is file 2 contennt"
file 3 has "This is file 3 content"
On content conversion I make this to
<Message>
<File content>
<ID>1
<Data>"This is file 1 content "
<File content>
</Message>
<Message>
<File content>
<ID>1
<Data>"This is file 2 content "
<File content>
</Message>
<Message>
<File content>
<ID>1
<Data>"This is file 3 content "
<File content>
</Message>
Hard code ID and use it in BPM collect pattern??
Thanks
Thilothama
Maybe you are looking for
-
Hello all, I am working on a CRM 2007 - Web UI. We customized some Activities and are now optimizing the UI pages for this activities. Now I want to bring a new Field at the surface (G-KAM) at the activity-creation screen. I defined a G-KAM during th
-
Control FLV playback with button on different timeline
I have an FLVPlayback instance on my stage within a movie clip within a movie clip eg. _root.showreel_mc.showreelHolder.showreel (where showreel is the instance name given to the FLV component itself) I already have a button that fades out showreel_m
-
Trying to use extended desktop
I typically use my 13" MBP with a 20" LG monitor in extended desktop mode. I would regularly plug in my computer when I got home to do work, and unplug it when i left the next morning. I hadn't used extended desktop for a few days, and the next time
-
As of Yesterday, (27th Sept) My windows mail has stopped sending email to any of the IMAP accounts set up, I have seen this on multiple PCs with multiple IMAP accounts, so i'm pretty sure it's not a Mail server issue, and I have tried it via differen
-
Can videos not recorded on the new ipad be edited with imovie?
can videos not recorded on the new ipad be edited with imovie?