Quantcast
Channel: OSB – ATeam Chronicles
Viewing all articles
Browse latest Browse all 43

OSB 11g & SAP – Single Channel/Program ID for Multiple IDOCs

$
0
0

Introduction

This note shows how a single OSB Proxy can be used with iWay Adapters to receive multiple IDOC types via a single channel in the adapter, corresponding to a single programID on the SAP system.

 

Main Article

Background

This note is a supplement to the blog entry, SOA 11g & SAP – Single Channel/Program ID for Multiple IDOCs by Greg Mally.
Greg has shown how a single SOA Suite composite can be used with iWay Adapters to receive multiple IDOC types via a single channel in the adapter, corresponding to a single programID on the SAP system.

We will try to address the same requirements within the OSB framework here.

Project Build – Design Time

The basic build of an OSB project with iWay SAP Adapter, as seen in another entry in this blog, consists of working in OSB Design console and Application Explorer.

OSB Design Time – Part 1

We will create a placeholder project first in OSB with a proper directory structure, so that we can export the WSDL, XSD and the JCA binding information from Application Explorer directly into this project.

Application Explorer – iWay Design Time Tool

Receiving IDOCs is classified as an inbound event within Application Explorer. For setting up events, a channel is first defined (e.g. iDoc_Channel) using the same PROGRAMID (RFC destination), as defined within SAP for the OSB server.

Next, the same channel is used to export the JCA Inbound Event artifacts for the candidate IDOC, e.g. DEBMAS06 directly to the pre-created OSB project.

osbiDocAE1

Note that the validation for schema has been turned off. As a result, this will allow the adapter, at runtime, to use a single channel to receive multiple IDOC types from SAP and pass them on to the OSB runtime engine without any validation. In other words, we do not have to repeat the above step for each IDOC type.

OSB Design Time – Part 2

Create 2 simple XML based Business Services to write to a file, e.g.  SAP_DEBMAS_File and SAP_MATMAS_File.

osbiDoc1

Next, generate a Proxy Service using the JCA binding file exported from Application Explorer in the previous section. In the generated proxy service, edit the message flow and add a route node.

osbiDoc3

Add a routing table in the route node with the following routing function.

  • fn:local-name-from-QName(fn:node-name($body/*[1]))

This function takes advantage of the fact that the XML payload at runtime, after translation by adapter, has the IDOC type as the top element.

osbiDoc4
osbiDoc5

With the routing function in place, build the routing table to add 2 branches to route the IDOCs to the appropriate Business Service for writing the XML payload to files in separate directories.

osbiDoc2

This completes the build of the OSB project.

Testing – Run-Time

After deployment and activation, the SAP adapter will wait to receive multiple types of IDOCs sent from the SAP system using a single channel. Upon receipt of the IDOCs, the OSB project will route them appropriately to save the corresponding XML payloads for different IDOC types in different directories.


Viewing all articles
Browse latest Browse all 43

Trending Articles