Author |
Message
|
sammy_910 |
Posted: Mon Oct 10, 2011 8:25 am Post subject: SAP Passthrough Idoc |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
Hi,
I am trying to build 2 messageflows,one with ALE passthrough and the other one which would process a specific Idoc.
SAP ALE Passthrough - Processes all Inbound idocs and sends the message in BLOB format to a specific queue.
Idoc Specific flow - Would process the BLOB message against a message set discovered by the adapter wizard with an MQInput node as the starting point.
The problem is - I can see the message in BLOB format but when the message is getting parsed against the DataObject domain with the messageSet specified the data field is null.
Could anyone please help me out on this? |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Oct 10, 2011 8:37 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
|
Back to top |
|
 |
marko.pitkanen |
Posted: Mon Oct 10, 2011 10:14 am Post subject: |
|
|
 Chevalier
Joined: 23 Jul 2008 Posts: 440 Location: Jamsa, Finland
|
Hi,
Set parsing time immediate so you can see the DataObject and it's structure at the debug perspective or trace -node.
--
Marko |
|
Back to top |
|
 |
whydieanut |
Posted: Fri Oct 14, 2011 12:11 am Post subject: |
|
|
 Disciple
Joined: 02 Apr 2010 Posts: 186
|
|
Back to top |
|
 |
sammy_910 |
Posted: Mon Oct 17, 2011 12:49 am Post subject: |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
@whydieanut : Tried both the ways....but none seems to work...
The problem is when I try to get the same Idoc with the same messageset using ALE mode...the data comes fine.
When when I put to a queue and browse it again in a new flow..the DataObject seems to be null. |
|
Back to top |
|
 |
whydieanut |
Posted: Mon Oct 17, 2011 1:03 am Post subject: |
|
|
 Disciple
Joined: 02 Apr 2010 Posts: 186
|
My point was that the same Message Set doesn't seem to work for both cases (Normal ALE and Passthrough ALE).
Have a look at the Message in the queue, created by the Passthrough Adapter Flow.
It should be in human readable form like this:
Code: |
EDI_DC40 1300000000000202
|
Set the Message format to 'SAP ALE IDoc' on the MQ Input Node of the second flow. |
|
Back to top |
|
 |
sammy_910 |
Posted: Mon Oct 17, 2011 8:14 am Post subject: |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
I tried all of that :
The first flow has the following code :
SET InputLocalEnvironment = null;
DECLARE Idoctype CHARACTER;
DECLARE xsiNameSpace CHARACTER;
SET xsiNameSpace = 'http://www.ibm.com/xmlns/prod/websphere/j2ca/sap/sapgenericidocobject';
DECLARE xsi NAMESPACE xsiNameSpace;
CREATE LASTCHILD OF OutputRoot DOMAIN 'BLOB';
-- Use IDOC Type to populate MQ Queue Name
SET OutputRoot.BLOB.BLOB = CAST(InputRoot.DataObject.xsi:SapGenericIDocObject.IDocStreamData as BLOB);
SET OutputRoot.Properties.MessageSet = '';
SET OutputRoot.Properties.MessageType = '';
SET OutputRoot.Properties.MessageFormat = '';
SET Idoctype = InputRoot.DataObject.xsi:SapGenericIDocObject.IDocType;
SET OutputLocalEnvironment = NULL;
SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName= InputRoot.DataObject.xsi:SapGenericIDocObject.IDocType;
And the second flow starts with an MQInput noe with Message Domain set as DataObject and Message Format set as SAP ALE Idoc.
Still with no luck!!! |
|
Back to top |
|
 |
smdavies99 |
Posted: Mon Oct 17, 2011 8:26 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
What is the Exception being thrown in the second flow?
What does the output message look like when views using something like RFHUTIL?
hint,
Please put your code inside 'Code' tags. Doing this makes it a lot easier to read and follow. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
sammy_910 |
Posted: Tue Oct 18, 2011 1:15 am Post subject: |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
@smdavies99,
There is no exceptionlist,Only the DataObject tree is blank when it passes through the MQInput node in the second flow.
A part of the message which is input to the MQInput node looks like this:
Code: |
00000000 <NS1:SapOrders05 xmlns:NS1="http
00000032 ://www.ibm.com/xmlns/prod/websph
00000064 ere/j2ca/sap/saporders05"><SAPTr
00000096 ansactionID>AC13AE1000024E95733A
00000128 7706</SAPTransactionID><SapOrder
00000160 s05IDocBO><SapIDocControlRecord>
00000192 <ReceiverPort>A000000365</Receiv
00000224 erPort><PartnerTypeOfSender>LS</
00000256 PartnerTypeOfSender><PartnerFunc |
Any hints ??[/quote] |
|
Back to top |
|
 |
smdavies99 |
Posted: Tue Oct 18, 2011 2:57 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
So you are reading A BLOB message with the MQINput Node.
What are you trying to do with it then?
You can view the 'xml' structure of the message using RFHUTIL... _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
sammy_910 |
Posted: Tue Oct 18, 2011 3:11 am Post subject: |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
Hi smdavies99,
Actually the first flow is the generic Idoc routing flow in which I convert the Idoc data to BLOB and send it to a queue.
In the secong flow ,the MQInput node reads the message from the queue and parses it against a messageset which has been discovered by the adapter wizard.The message domain is set as DataObject and message Format as SAP ALE Idoc in this MQInput node.
The only problem is that the BLOB message is not getting parsed due to which my DataObject tree is null. |
|
Back to top |
|
 |
smdavies99 |
Posted: Tue Oct 18, 2011 4:25 am Post subject: |
|
|
 Jedi Council
Joined: 10 Feb 2003 Posts: 6076 Location: Somewhere over the Rainbow this side of Never-never land.
|
Where are you trying to do the parse?
Where are you trying to set the message domain?
did you configure the message set in the MQInput Node. A little tip here, is to set the Domain to XMLNSC. We don't really bother with setting the domain to DataObject in any of our SAP work.
From your dump above, the data is XML structured.
I can't help wondering if you are getting a little confused.
In the WMQ world (ie, data on a queue), everything is a BLOB. WMQ does not care if it is XML, Gobbledegook or even Krypton formatted. It is just the payload.
When yo read the message with thr MQInput node, you have a number of options for the message domain. One is BLOB and the payload is then passed 'as is'. Another is XMLNSC. You can apply your message model at this time. you could also do validation. _________________ WMQ User since 1999
MQSI/WBI/WMB/'Thingy' User since 2002
Linux user since 1995
Every time you reinvent the wheel the more square it gets (anon). If in doubt think and investigate before you ask silly questions. |
|
Back to top |
|
 |
sammy_910 |
Posted: Tue Oct 18, 2011 5:43 am Post subject: |
|
|
Apprentice
Joined: 16 Dec 2010 Posts: 33
|
Strange but True ....
Just to close the thread....On setting the parse timing to "Immediate" in my MQInput node solved the entire issue.
Thanks a lot to smdavies99 and others for their valuable inputs. |
|
Back to top |
|
 |
|