ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SAP ALE Passthrough Adapter for Outbound

Post new topic  Reply to topic Goto page 1, 2  Next
 SAP ALE Passthrough Adapter for Outbound « View previous topic :: View next topic » 
Author Message
whydieanut
PostPosted: Thu Sep 29, 2011 1:46 am    Post subject: SAP ALE Passthrough Adapter for Outbound Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

Hi all,

I am contemplating using the ALE Outbound Adapter in Passthrough mode to send messages to SAP.

The other option is to use a single ALE Outbound Adapter with all needed IDoc types configured. But then I'd have to recreate/update the Adapter in case I have to add support for a new IDoc type.

Is there any advantage in selecting one approach over the other?

If choosing the Passthrough approach, what are best practices for the same?
I can think of the below 2 design:

1. Common flow with a single MQInput queue that receives messages of type SapGenericIDocObject, that blindly passes it to SAP.
2. Common flow with multiple queues that each receive messages of specific Idoc types, that converts these IDocs into SapGenericIDocObject and then passes them to SAP.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Thu Sep 29, 2011 2:00 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
Location: LI,NY

See this thread http://www.mqseries.net/phpBB2/viewtopic.php?t=58262 for the flow in the opposite direction...

Your design is no real choice between option 1 or 2.

All depends as to where you are doing verifications.
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
whydieanut
PostPosted: Thu Sep 29, 2011 3:32 am    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

The opposite direction I've got figured out.

Its the Outbound to SAP that I am still pondering on.
Back to top
View user's profile Send private message
mqjeff
PostPosted: Thu Sep 29, 2011 5:27 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

How much control do you have over the apps that will be producing messages that need to go into SAP?

Unless you can guarantee that they always write out messages in a fully identified format and always write them to the correct queue, you should use your Option 1. And then you should use it anyway, because it's still more resilient to future change.
Back to top
View user's profile Send private message
whydieanut
PostPosted: Fri Sep 30, 2011 3:45 am    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

By Option 1 you mean:

1. Common flow with a single MQInput queue that receives messages of type SapGenericIDocObject, that blindly passes it to SAP.

Right?

Now my problem is how to convert the input message, whatever format it is in, SapGenericIDocObject...

Back to top
View user's profile Send private message
marko.pitkanen
PostPosted: Fri Sep 30, 2011 4:17 am    Post subject: Reply with quote

Chevalier

Joined: 23 Jul 2008
Posts: 440
Location: Jamsa, Finland

Hi,

I'm not sure, but I think you should do the opposite steps than in inbound case.
1) Produce iDoc -specific data object
2) Serialize it to bitstream
3) Generate SapGenericIDocObject dataobject (set IDocType and assign iDoc -specific bitstream to IDocStreamData)
4) Pass this dataobject to adapter.

--
Marko
Back to top
View user's profile Send private message Visit poster's website
whydieanut
PostPosted: Mon Oct 10, 2011 3:35 am    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

I have a flow with an MQInput node, that takes in data like below:

Code:
<NS1:SapZfiBtF02 xmlns:NS1="http://www.ibm.com/xmlns/prod/websphere/j2ca/sap/sapzfibtf02">
   <SapZfiBtF02IDocBO>
      <SapIDocControlRecord>
         <ReceiverPort>SAPR33</ReceiverPort>
         <PartnerTypeOfSender>LS</PartnerTypeOfSender>
         <PartnerFunctionOfSender/>


How to convert this to the "SAP ALE IDoc" format?
I've tried:

SET OutputRoot.Properties.MessageFormat = 'SAP ALE IDoc';
SET OutputRoot.DataObject = InputRoot.DataObject;

But doesn't seem to be enough.
I am missing something very simple...
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Mon Oct 10, 2011 10:26 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
Location: LI,NY

Have you tried applying a non business object format like TDS?
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
whydieanut
PostPosted: Mon Oct 10, 2011 11:01 pm    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

I didn't quite get you.
Are you suggesting that the input message be in a different domain like TDS?

What I'll eventually need is to read in an XML file, convert it to a DataObject and the IDoc Control Record, map fields to target (IDoc Data Record fields) and then convert it into the IDoc format like below:

Code:
EDI_DC40  1300000000000201089701 3012  DEBMAS07                      DEBMAEXT                      DEBMAS                                           SAPR11    LS  R11CLNT130                                                                                           RCVPORTWMBLS  LS_AIWMB        ....


(PS: This is from a different IDoc type)

This can then be converted into the SAPGenericIDocObject.


But for the time being, I am using a message which is already in the DataObject Domain wth all the SAP IDoc fields.
Just trying to get a bit stream like above from this input XML.
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Mon Oct 10, 2011 11:12 pm    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
Location: LI,NY

You have 2 different formats

  1. The Data object format = really an XML format with the parsed IDOC
  2. The generic IDOC format

You have to understand that to SAP it is all the same. What you have are just 2 different representations of the same data.

An IDOC is composed of one EDI_DC40 format record followed by a variable number of EDI_DD40 format records. The first 63 bytes of the EDI_DD40 link it to the corresponding EDI_DC40, give it its position in the list of DD40s and the hierarchy level in the DD40s. It contains as well the all important information on the SEGMENT NAME that will tell you how to parse the 1000 remaining bytes in the SDATA (Segment Data) part of the EDI_DD40.

Those structures as well as the Segment structures are well defined in SAP. It will be up to you, whether you chose to have WMB parse them or not.

Have fun
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
whydieanut
PostPosted: Mon Oct 10, 2011 11:22 pm    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

Keeping aside the Generic SAP IDOC format AND the Adapter; now I am only trying to convert a message in XML format to the NORMAL IDOC format which is a CWF type of format (correct me if I am wrong here).

I'll be happy if I could just get a character variable to store the IDOC in its CWF-like format.

I was hoping that the below would do the trick:

Code:
SET bitStream = ASBITSTREAM(InputRoot.DataObject, outEncoding, outCCSID, 'SPECIFIC_IDOC_MSGSET', '', 'SAP ALE IDoc', FolderBitStream);
SET iDocString = CAST(bitStream AS CHARACTER CCSID outCCSID);


But this still gives me an XML string, whereas I am expecting the IDOC format (CWF-like).
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Tue Oct 11, 2011 2:06 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20696
Location: LI,NY

whydieanut wrote:
Keeping aside the Generic SAP IDOC format AND the Adapter; now I am only trying to convert a message in XML format to the NORMAL IDOC format which is a CWF type of format (correct me if I am wrong here).

I'll be happy if I could just get a character variable to store the IDOC in its CWF-like format.

I was hoping that the below would do the trick:

Code:
SET bitStream = ASBITSTREAM(InputRoot.DataObject, outEncoding, outCCSID, 'SPECIFIC_IDOC_MSGSET', '', 'SAP ALE IDoc', FolderBitStream);
SET iDocString = CAST(bitStream AS CHARACTER CCSID outCCSID);

But this still gives me an XML string, whereas I am expecting the IDOC format (CWF-like).


And you are surprised? You're taking the bitstream of an XML document and disappointed when the content still is an XML document?

This transformation is really WMB 101. I suggest you get training.
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
whydieanut
PostPosted: Tue Oct 11, 2011 2:59 am    Post subject: Reply with quote

Disciple

Joined: 02 Apr 2010
Posts: 186

I was foolish to think that specifying the Message Format as 'SAP ALE IDoc' in the ASBITSTREAM function was sufficient to conver the format of the message.


Code:
ASBITSTREAM(InputRoot.DataObject, outEncoding, outCCSID, 'SPECIFIC_IDOC_MSGSET', '', 'SAP ALE IDoc', FolderBitStream);


So if not, then what is the way to CONVERT the input message from XML to 'SAP ALE IDoc' format?

I am looking at a flow like:
MQInput -> Compute -> MQOutput

The input node gets a message of type ZFIBT in XML format. I need this message to be serialized (not sure if this is the right term here) into 'SAP ALE IDoc' format.


When I use the 'SAP ALE IDoc' format in the input node, the flow does accept the following type of input:

Code:

EDI_DC40  1300000000000201089701 3012  ZFIBT                      DEBMAEXT                      DEBMAS                                           SAPR11    LS  R11CLNT130                                                                                           RCVPORTWMBLS  LS_AIWMB


But instead of this being the input format, I need it as the Output format.
Tried the following without success:

Code:

SET OutputRoot.Properties.MessageFormat = 'SAP ALE IDoc';
SET OutputRoot.DataObject = InputRoot.XMLNSC.ns:SapZfiBt;


Any pointers towards how to get this done will be greatly appreciated...
Back to top
View user's profile Send private message
marko.pitkanen
PostPosted: Tue Oct 11, 2011 4:03 am    Post subject: Reply with quote

Chevalier

Joined: 23 Jul 2008
Posts: 440
Location: Jamsa, Finland

Hi,

Have you tried with RCD node?

Have you tried with esql first setting OutputRoot.Properties message content description fields to match you message set and then creating DataObject domain branch to OutputRoot and tree copying your iDoc from our xml to DataObject and then serializing that with esql?

--
Marko
Back to top
View user's profile Send private message Visit poster's website
mqjeff
PostPosted: Tue Oct 11, 2011 5:04 am    Post subject: Reply with quote

Grand Master

Joined: 25 Jun 2008
Posts: 17447

You will never get Broker to output a tree that is created under the XMLNSC domain to match a physical format defined under the DataObject domain.

Likewise you will never get Broker to output a tree that is created under the XMLNSC domain to match a physical format defined under the MRM domain or any other domain.

You need to TRANSFORM the LOGICAL MESSAGE TREE.

This is Broker 101, as has been mentioned.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » WebSphere Message Broker (ACE) Support » SAP ALE Passthrough Adapter for Outbound
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.