This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

Systems, Applications, and Products (SAP) for data processing is an industry leading enterprise software solution that is widely used among product and process oriented enterprises for finance, operations, HR and many other aspects of a business. SAP ERP solutions provide reliable and efficient platforms to build and integrate enterprise or business-wide data and information systems with ease. One of the drawbacks however is vendor lock-in and the relative inflexibility of SAP solutions to align itself with the business model or customization required. Having understood these challenges, SAP software vendors are moving towards exposing their solutions to SOA.

WSO2 ESB leverages the best of both worlds by providing the integration layer so that an existing SAP R/3 based solutions of an enterprise can be integrated with other data/business oriented systems so that you can mix-and-match requirements with minimal effort. As a result, enterprises can keep parts of their systems independent of SAP and extensible for many other systems, solutions and middleware.

The WSO2 SAP adapter is shipped with WSO2 ESB and is implemented as a transport for WSO2 ESB. This is provided in the <ESB_HOME>/repository/components/plugins directory as org.wso2.carbon.transports.sap-VERSION.jar(e.g. org.wso2.carbon.transports.sap_1.0.0.jar).

The WSO2 SAP adapter has full IDoc and experimental BAPI support. It used the SAP JCO library as the underlying framework to communicate with SAP. This section describes how to set up WSO2 ESB in a SAP environment, how to install the SAP JCo middleware library, SAP Intermediate Document (IDoc) and Business Application Programming Interface (BAPI) adapters.



Installing WSO2 SAP Adapter

Follow the instructions below to install and set up the ESB SAP adapter.

  1. Download and install WSO2 ESB by following the instruction in Getting Started.
  2. Download the sapidoc3.jar and sapjco3.jar middleware libraries from the SAP support portal https://websmp109.sap-ag.de/connectors and copy those libraries to the <ESB_HOME>/repository/components/lib directory.

    Note

    You need to have SAP login credentials to access the SAP support portal.

  3. Download the native SAP JCo library and copy it to the system path. You need to select the system path applicable to your operating system as described below.

    Linux 32-bit

    Copy the Linux native SAP jco library libsapjco3.so to <JDK_HOME>/jre/lib/i386/server.

    Linux 64-bit

    Copy the Linux native SAP jco library libsapjco3.so to <JDK_HOME>/jre/lib/amd64.

    Windows

    Copy the Windows native SAP jco library sapjco3.dll to <WINDOWS_HOME>/system32.
  4. Copy the following SAP endpoint property files to the <ESB_HOME>/repository/conf/sap directory. You need to have two property files, one at the server-end and the other at the client-end to communicate with an external SAP endpoint using IDoc or BAPI.

    This directory does not exist by default. A SAP system administrator has to create the directory and provide access rights so that you can read the property files saved in the directory.
    • *.dest: This is where we keep SAP endpoint parameters when WSO2 ESB should act as a client to an external SAP endpoint.  
    • *.server: This is where we keep SAP endpoint parameters when WSO2 ESB should act as a server to an external SAP endpoint.
    For details on creating the property files and defining the relevant properties, see Setting up the *.dest and *.server property files.
  5. Start the ESB using the -Djava.library.path switch to specify the location of your SAP jco library.
    For example ./wso2server.sh -Djava.library.path=/usr/lib/jvm/jre1.7.0/lib/i386/server/

Configuring WSO2 SAP Adapter

As mentioned above, the SAP adapter is implemented as a transport for WSO2 ESB. This transport consists of two parts as follows:

  • BAPI/RFC adapter
  • IDoc adapter

Just like any other transport, you need to enable the BAPI/RFC adapter as well as the IDoc adapter in order to use the SAP adapter.

To enable the BAPI/RFC adapter
  • Edit the <ESB_HOME>/repository/conf/axis2/axis2.xml file and uncomment the BAPI sender and listener as follows:

    <transportSender name="bapi" class="org.wso2.carbon.transports.sap.SAPTransportSender"/>
    ...
    <transportReceiver name="bapi" class="org.wso2.carbon.transports.sap.SAPTransportListener"/>
To enable the IDoc adapter
  • Edit the <ESB_HOME>/repository/conf/axis2/axis2.xml file and uncomment the IDoc sender and listener as follows:

    <transportSender name=”idoc” class="org.wso2.carbon.transports.sap.SAPTransportSender"/>
    ...
    <transportReceiver name=”idoc” class="org.wso2.carbon.transports.sap.SAPTransportListener"/>


Setting up the *.dest property file

To setup WSO2 ESB as a client to a SAP system you need to create the *.dest property file and define the relevant properties. The following table lists the properties and the description of each property that should be specified in the *.dest property file.

 

PropertyDescription

jco.client.client

Client logon

jco.client.user

User logon

jco.client.alias_user

Alias user name

jco.client.passwd

Logon password

jco.client.lang

Logon language

jco.client.sysnr

R/3 system number

jco.client.ashost

R/3 application server

jco.client.mshost

R/3 message server

jco.client.gwhost

Gateway host

jco.client.gwserv

Gateway service

jco.client.r3name

R/3 name
jco.client.groupGroup of application servers

jco.client.tpname

Program ID of external server program
jco.client.tphostHost of external server program

jco.client.type

Type of remote host (3=R/3, E=External)
jco.client.codepageInitial code page for logon

jco.client.use_sapgui

Use remote SAP graphical user interface

jco.client.mysapsso2

Use the specified SAP cookie version 2 as the logon ticket
jco.client.grt_dataAdditional data for GUI

jco.client.use_guihost

Host to which the remote GUI is redirected

jco.client.use_guiserv

Service to which the remote GUI is redirected
jco.client.use_guiprogidProgid of the server that starts the remote GUI
jco.client.snc_partnername

SNC partner name (for example, CN=B20, O=SAP-AG, C=DE\) snc_mode

jco.client.snc_mode

SNC mode (0 or 1)

jco.client.snc_qop

SNC level of security (1-9)

jco.client.snc_myname

SNC name; overrides default SNC partner
jco.client.snc_libPath to the library

jco.client.Dest

R/2 destination

jco.client.saplogon_id

SAPLOGON string on 32-bit Windows

jco.client.extiddata

Data for external application (PAS)

jco.client.extidtype

Type of external authentication (PAS)

jco.client.x509cert

Use the specified X509-certificate as the logon ticket

jco.client.msserv

R/3 port number of message server

jco.client.profile_name

Profile name used for shared memory communication

jco.client.idle_timeout

Idle timeout for the connection

jco.client.ice Ignore

RFC library character conversion errors (1 or 0)

jco.client.logon

Enable or disable logon check at open time (1 or 0)

jco.client.trace

Enable or disable RFC trace (1 or 0)

jco.client.abap_debug

Enable ABAP debugging (1 or 0)

jco.client.getsso2

Get or do not get a SSO ticket after logon (1 or 0)

jco.client.toupper

Enable or disable uppercase character conversions for logon

Note

You can obtain the values for these properties from your SAP system administrator.

The *.dest property file should be named <SAP-GWHOST>.dest. For example, if the name of your SAP gateway is SAPSYS01, the name of the file should be SAPSYS01.dest and the configuration can be as follows:

jco.client.client=900
jco.client.user=spremote
jco.client.passwd=FILL_IN_YOUR_PASSWORD_HERE
jco.client.lang=en
jco.client.ashost=SAPSYS01
jco.client.mshost=SAPSYS01
jco.client.gwhost=SAPSYS01
jco.client.gwserv=3300
jco.client.sysnr=00
jco.client.idle_timeout=300
jco.client.logon=0
jco.client.msserv=3600
jco.client.trace=0
jco.client.getsso2=0
jco.client.r3name=QCR

Setting up the *.server property file

To setup WSO2 ESB as an IDoc server you need to create the *.server property file and define the relevant properties. The following table lists the properties and the description of each property that should be specified in the *.server property file.

PropertyDescription

jco.server.gwhost

Gateway host

jco.server.gwserv

Gateway service

jco.server.progid

Program ID of the server

jco.server.trace

You can enable or disable the RFC trace
jco.server.repository_destination Name of the .dest file. For example, if the .dest file is SAPSYS01.dest, set this to SAPSYS01.
jco.server.paramsArbitrary parameters for RFC library

jco.server.snc_myname

SNC name

jco.server.snc_qop

SNC level of security (1-9)

jco.server.snc_lib

Path to the SNC library

jco.server.profile_name

Name of the profile file used during start-up

jco.server.unicode

Determines whether or not you connect in unicode mode (1=true, 0=false)

jco.server.max_startup_delay

Maximum server start-up delay time in seconds

Note

You can obtain the values for these properties from your SAP system administrator.

This file should be named <SAP-GWHOST>.server. For example, if the name of your SAP gateway is SAPSYS01, the name of the file should be SAPSYS01.server and the configuration can be as follows:

jco.server.gwhost=/H/203.143.18.246/S/3299/H/155.56.49.28/H/cpccr01 
jco.server.connection_count=2 
jco.server.progid=JCOSERVER01 
jco.server.gwserv=3326 
jco.server.repository_destination=SAPSYS01 
jco.server.name=JCOSERVER01 
jco.server.unicode=1 

 

The table below summarises how you can define a SAP endpoint and a proxy service.

 Endpoint ConfigurationProxyService Configuration

BAPI/RFC adapter

<endpoint name="sapbapiendpoint">
  <address uri="bapi:/JCOCLIENT01"/>
</endpoint>

The SAP endpoint client property file should be in <ESB_HOME>/repository/conf/sap/JCOCLIENT01.dest

<proxy name=”sapbapiproxy” transports=”bapi”/>
//in,out,fault Sequence
  <parameter name="transport.sap.serverName">JCOSERVER01</parameter>
// other parameters
</proxy>

SAP endpoint server property file should be in <ESB_HOME>/repository/conf/sap/JCOS ERVER01.server

IDoc adapter
<endpoint name="sapidocendpoint">
   <address uri="idoc:/JCOCLIENT01"/>
</endpoint>

The SAP endpoint client property file should be in <ESB_HOME>/repository/conf/sap/JCOCLIENT01.dest

<proxy name=”sapidocproxy”transports=”idoc”/>
//in,out,fault Sequence
  <parameter name="transport.sap.serverName">JCOSERVER01</parameter>
// other parameters
</proxy>

SAP endpoint server property file should be in <ESB_HOME>/repository/conf/sap/JCOSERVER01.server


Troubleshooting

Given below are general troubleshooting guidelines.

  • How to handle the Server unknown error

    An example of this error message is as follows:

[2010-10-25 19:53:00,405] ERROR - DefaultErrorListener Exception occured on :
JCOSERVER01 and connection : null
com.sap.conn.jco.JCoException: (129) JCO_ERROR_SERVER_STARTUP: Server startup
failed at Mon Oct 25 19:53:00 IST 2010.
This is caused by either a) erroneous server settings, b) the backend system has been shutdown,
c) network problems. Will try next startup in 1 seconds.
Could not start server: Connect to SAP gateway failed
Connect parameters: TPNAME=JCOSERVER01 GWHOST=cynthia GWSERV=sapgw00
ERROR service 'sapgw00' unknown
TIME Mon Oct 25 19:53:00 2010
RELEASE 720
COMPONENT NI (network interface)
VERSION 40
RC -3
MODULE nixxsl.cpp
LINE 184
DETAIL NiSrvLGetServNo: service name cached as unknown
COUNTER 2
at com.sap.conn.jco.rt.DefaultServer.openConnection(DefaultServer.java:1168)
at com.sap.conn.jco.rt.DefaultServer.openConnections(DefaultServer.java:1057)
at com.sap.conn.jco.rt.DefaultServer.adjustConnectionCount(DefaultServer.java:1004)
at
com.sap.conn.jco.rt.DefaultServerManager$DispatcherWorker.run(DefaultServerManager.java:
299)
at java.lang.Thread.run(Thread.java:619)
Caused by: com.sap.conn.jco.JCoException: (129) JCO_ERROR_SERVER_STARTUP: Could
not start server: Connect to SAP gateway failed
Connect parameters: TPNAME=JCOSERVER01 GWHOST=cynthia GWSERV=sapgw00
ERROR service 'sapgw00' unknown
TIME Mon Oct 25 19:53:00 2010
RELEASE 720
COMPONENT NI (network interface)
VERSION 40
RC -3
MODULE nixxsl.cpp
LINE 184
DETAIL NiSrvLGetServNo: service name cached as unknown
COUNTER 2
at
com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.accept(MiddlewareJavaRfc.java:2135)
at com.sap.conn.jco.rt.ServerConnection.accept(ServerConnection.java:380)
at com.sap.conn.jco.rt.DefaultServer.openConnection(DefaultServer.java:1149)
© 2012 WSO2
.. 4 more
Caused by: RfcException: [null]
message: Connect to SAP gateway failed
Connect parameters: TPNAME=JCOSERVER01 GWHOST=cynthia GWSERV=sapgw00
ERROR service 'sapgw00' unknown
TIME Mon Oct 25 19:53:00 2010
RELEASE 720
COMPONENT NI (network interface)
VERSION 40
RC -3
MODULE nixxsl.cpp
LINE 184
DETAIL NiSrvLGetServNo: service name cached as unknown
COUNTER 2
Return code: RFC_FAILURE(1)
error group: 102
key: RFC_ERROR_COMMUNICATION
at com.sap.conn.rfc.engine.RfcIoControl.error_end(RfcIoControl.java:255)
at com.sap.conn.rfc.engine.RfcIoControl.ab_rfcaccept(RfcIoControl.java:43)
at com.sap.conn.rfc.api.RfcApi.RfcAccept(RfcApi.java:41)
at
com.sap.conn.jco.rt.MiddlewareJavaRfc$JavaRfcServer.accept(MiddlewareJavaRfc.java:2121)
... 6 more

The solution is to add your SAP server names to the /etc/services file with the relevant ports. For example, the following lines can be added if we consider the example error given above.

sapgw00 3300/tcp
sapgw01 3301/tcp
  • No labels