加载中…
个人资料
智扬信达
智扬信达
  • 博客等级:
  • 博客积分:0
  • 博客访问:392,368
  • 关注人气:115
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

JAVA通过RFC调用SAP接口

(2018-10-12 08:42:24)
标签:

java

sap

rfc

wsdl

分类: JAVA

BY JSC_Tony

SAP系统与外部(ABAP)系统进行的RFC通信,则为ABAP程序和其他语言(CCH编写的程序的相互调用。本文主要描述Java通过RFC来调用SAP的接口。

一、获取WSDL文档

   首先,从SAP中获取到WSDL URL;然后,把链接复制到浏览器中打开,成功的话可以看到接口返回的XML信息:

JAVA通过RFC调用SAP接口

最后,直接将页面内容另存为XML文件。然后将保存的XML文件直接另存为WSDL的后缀即可。

二、通过WSDL文档生成代码

   这里的方法比较多了,本文使用AXIS生成。下载地址:http://axis.apache.org/axis2/java/core/

 

命令行运行:

wsdl2java -uri zws_zfm_test02_u1.wsdl -p com.ws.client.test2 -o test2

 

各参数含义如下:

l  uriWSDL的文件路径

l  p:生成的package名称

l  o:生成后存储的文件夹路径

 

执行完成:

JAVA通过RFC调用SAP接口

三、新建项目,导入自动生成的代码

   新建JAVA项目,WebJAVA均可以,导入Axis\lib下的所有jar包,同时将刚才生成的代码copy至该项目,项目结构如下图所示:

JAVA通过RFC调用SAP接口

四、创建测试类

   创建一个测试类run4test,代码如下(具体代码的内容已经加了注释):

package com.ws.client;

 

import java.io.IOException;

 

import org.apache.axis2.transport.http.HTTPConstants;

importorg.apache.axis2.transport.http.impl.httpclient4.HttpTransportPropertiesImpl.Authenticator;

 

import com.ws.client.test2.ZWS_ZFM_TEST02Stub;

import com.ws.client.test2.ZWS_ZFM_TEST02Stub.ZFM_TEST02;

import com.ws.client.test2.ZWS_ZFM_TEST02Stub.ZFM_TEST02Response;

 

public class run4test {

 

    public static void main(String[] argsthrows InterruptedException, IOException {

        // Create By Tony at 2017/12/30

        try {

        // 1. Create Service

        ZWS_ZFM_TEST02Stub service new ZWS_ZFM_TEST02Stub();

       

        // 2. Authorization ( Optional )

            Authenticator auth new Authenticator(); 

            auth.setUsername("user"); 

            auth.setPassword("password"); 

            service._getServiceClient().getOptions().setProperty(HTTPConstants.AUTHENTICATEauth);

           

            // 3. Create Request Parameters

            ZFM_TEST02 params new ZFM_TEST02();

           

            // 3.1 Define Parameters' Value

            short _intA = 521;

            short _intB = 365;

            System.out.println("A is "_intA);

            System.out.println("B is "_intB);

           

            // 3.2 Set Parameters

            params.setI_PAR1(_intA);

            params.setI_PAR2(_intB);

           

            // 4. Call Web Service and Get Response

            ZFM_TEST02Response response service.zFM_TEST02(params);

           

            // 5. Get value from Response

            short _intC response.getE_PAR1();

            System.out.println("A + B = "_intC);

        }

        catch (Exception e) { 

            e.printStackTrace(); 

        }

    }

}

这里需要注意的是3.1步骤,由于RFC接口是基于SAP的值类型进行定义的,具体在JAVA中对应的类型需要在Stub类中查看,找到Function Module名称对应的类:

JAVA通过RFC调用SAP接口

 

在自动生成的代码中可以看到相应的类型,这里看到是short类型,所以之前代码中使用的也是该类型赋值,否则会出现类型转换相关的问题。

JAVA通过RFC调用SAP接口

五、执行测试类,实现RFC接口调用功能

JAVA通过RFC调用SAP接口


如需沟通讨论,可联系QQ2622487640,本文版权归智扬信达所有,转载请注明出处。

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有