Java调用SAP Web Service

时间:2024-03-16 11:07:57

1、SAP发布Webservice

(1)、在SAP系统中输入TCDE:SE37创建函数Z_CALCULATE

       需要先按下图创建功能组,名称为:Z_CALCULATE_GROUP

 

Java调用SAP Web Service

(2)、设置属性如下图,注意:Processing Type必须为RFC

 

Java调用SAP Web Service

(3)、RFC相关参数设置为:

 

Java调用SAP Web Service

Java调用SAP Web Service

 

 

(4)、源代码为:

 

Java调用SAP Web Service

(5)、保存并**(属性一定要设置为RFC), 把函数发布成Webservice

 Java调用SAP Web Service

Java调用SAP Web Service

键入刚才创建的Function module名称:

 

Java调用SAP Web Service

Java调用SAP Web Service

后续一直按默认配置即可,完成后服务已经创建;接下来输入TCODE:SOAMANAGER,会打开一个网页(如果打不开,网络上有解决教程),选择“Web service Administration界面“,点击第一个"Single Service Administration"如下图所示:

Java调用SAP Web Service

 

Apply selection => Overview =>  Display selected Binding's WSDL URL,在右边可以看到WSDLURL了。

Java调用SAP Web Service

接下来TCODE:SICF中找到服务的Endpoint地址:

Java调用SAP Web Service

Java调用SAP Web Service

在浏览器中会得到地址:

Java调用SAP Web Service

 

2、JAVA 调用SAP Web service

(1)、wsimport 生成java代码

使用java自带的编译器可以很简单帮你生成该wsdl文档下的java框架。原理很简单,wsdl包括了接口文档信息,只要把wsdl的文件给wsimport就可以生成java文件

    a、在java安装环境下找到jdk的bin目录下有一个wsimport.exe的工具,

b、使用该工具可以根据wsdl地址生成java的客户端代码。在CMD中键入命令如下:

wsimport -d E:\data\soap -keep -verbose -Xauthfile E:\data\soap\11.txt http://XXXXXXX

  命令参数说明:

  -d: 生成客户端执行类的class文件的存放目录

  -s: 生成客户端执行类的源文件的存放目录

-p: 定义生成类的包名

- http://XXXXXXX:为sap生成WSDL的URL

其中11.txt里填写wsdl地址:http://账号:密码@XXXXXXX

(在java环境下创建了一个名为TestClient的java project,找到TestClient磁盘路径,在src下新建11.txt文件)

CMD我键入的命令为:wsimport -d D:\eclipse-workspace\Testclient\src -keep -verbose -Xauthfile D:\eclipse-workspace\Testclient\src\11.txt http://xxxxxxx

此时,CMD状态如下:

Java调用SAP Web Service

 

完成后,在D:\eclipse-workspace\Testclient\src下会生成几个文件,如图:

Java调用SAP Web Service

 

       c、到java中的TestClient工程下可看见:(建立package:org.clyde,在包内建立Class,名为:Client)

      Java调用SAP Web Service

Client.java中的内容如下所示:

Java调用SAP Web Service

 

package org.clyde;

import java.rmi.RemoteException;

import com.sap.document.sap.soap.functions.mc_style.ZSAPCALCULATEService;

 

public class Client {

    public static void main(String[] args) throws RemoteException {

       ZSAPCALCULATEService zs = new ZSAPCALCULATEService();

       System.out.println("-----------------------------------------");

       System.out.println(zs.getZSAPCALCULATE().zCalculate("7","4", "*"));

    }

}

 

 

选择Client.java文件并运行即可。

Java调用SAP Web Service

 

若运行结果报错无法访问位于以下位置的 WSDL: http://XXXX(401需要授权)如下:

 

Java调用SAP Web Service

则需在ZSAPCALCULATEService.java文件添加以下代码(增加用户名和密码):

URL url = null;

try {

    url = new URL("YOUR_WSDL_URL");

    Authenticator.setDefault(new Authenticator() {

        protected PasswordAuthentication getPasswordAuthentication() {

            return new PasswordAuthentication("YOUR_USERNAME","YOUR_PASSWORD".toCharArray());

        }

    });

}catch (MalformedURLException ex) {

        e = new WebServiceException(ex);

}

经测试,运行成功:

 

Java调用SAP Web Service