最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

abap+webservice_new

来源:动视网 责编:小OO 时间:2025-10-01 19:29:25
文档

abap+webservice_new

测试环境:windowxpsp3英文版SAPserverSAPECC6.0SAPGUI710本机内网IP:192.168.0.197,SAPServerIP:192.168.0.1第一步,在myeclipse中新建一个WebServiceProject,取名为SayHello,默认采用的就是JAX-WS,不用改,直接点finish完成。第二步,建立一个javaclass,名为HelloBody。其内容为publicclassHelloBody{publicStringSayHelloTo(
推荐度:
导读测试环境:windowxpsp3英文版SAPserverSAPECC6.0SAPGUI710本机内网IP:192.168.0.197,SAPServerIP:192.168.0.1第一步,在myeclipse中新建一个WebServiceProject,取名为SayHello,默认采用的就是JAX-WS,不用改,直接点finish完成。第二步,建立一个javaclass,名为HelloBody。其内容为publicclassHelloBody{publicStringSayHelloTo(
测试环境:window xp sp3 英文版

      SAP server SAP ECC 6.0  

      SAP GUI 710

      本机内网IP:192.168.0.197 ,

      SAP Server IP:192.168.0.1

第一步,在myeclipse中新建一个Web Service Project,取名为SayHello,默认采用的就是JAX-WS,不用改,直接点finish完成。

第二步,建立一个java class,名为HelloBody。其内容为

public class HelloBody {

public String SayHelloTo(String name)

{

return "hello: "+name;

}

}

第三步,创建web service。选择向导中Web Service下的Web Service

Next,在对话框中选择从Java Class创建wsdl。

Next,会让我们选择class。我们就选择刚才的HelloBody即可。这个对话框会让你填写java class及将要生成的Delegate class的名字。这里java Class是实际完成功能的类,而delegate class是包装java class成Web Service的类,所有请求都由其接收并解析,然后由java class完成功能,然后由Delegate将结果返回。还有要注意的是,下面让你填写WSDL的自定义信息,我们先选择Generate WSDL in Project,这样就会自动生成一个WSDL了。然后填入服务网址http://localhost:8080/,接着是Service name,这个不用修改,自动就是HelloBodyService,我们修改一下Service port,默认是HelloBodyPort,这实在不好,其实这个服务端口就是服务地址的后面部分,比如如果是默认的,那么调用的时候就是http://localhost:8080/SayHello/HelloBodyPort,网址上出现这样的写法是不是很别扭。因此,我们修改为SayHelloToMe,这里不要将Enable SOAP 1.2 Binding勾选上。如果选上的话在下面的abap调用中会出问题,因为sap还有些soap协议没有实现,有些标签不能识别,如下图

最后点击finish。我们打开Web.xml可以看到如下内容:

JAX-WS endpoint - HelloBodyService

HelloBodyService

HelloBodyService

com.sun.xml.ws.transport.http.servlet.WSServlet

1

HelloBodyService

/SayHelloToMe

也就是说web.xml中写入了一个servlet,还有他的相对地址,看到了吧,相对地址就是/SayHelloToMe,如果刚才不改,那相对地址就变成XXPort了。。。再打开生成的HelloBodyService.wsdl,会发现描述信息都已经有了,且里面有

第四步,部署,测试是否能够访问Web Service。Java实现的Web Service实际上就是Servlet,部署在Web 容器比如tomcat上的。在部署前,我们先要为工程添加两个jar包,否则不能部署成功,因为我们用了JAX-WS框架,所以要有其jar包的支持。在我们自己配置的tomcat服务器上是默认没有这两个jar包的,所以没法跑。而如果采用myeclipse自带的tomcat,那么就不用加入这两个jar包了,因为已经默认有了。选定工程名,然后右键点击,选择属性,选择java build path,然后选择libraries,然后选择,add library。再选择MyEclipse Libraries。最后选择JAX-WS 2.1 Runtime Libraries和JAX-WS 2.1 API Libraries这两个包,点击完成。

此时,点击部署,将工程部署到tomcat上。然后运行tomcat即可。测试是在浏览器中输入http://localhost:8080/SayHello/SayHelloToMe,就能看到WebService的信息,还有WSDL的位置信息:http://localhost:8080/SayHello/SayHelloToMe?wsdl点击进去,可以看到wsdl的内容。这证明此Web Service已经部署成功,可以访问了,

如果Myeclipse没有自带的JAX包的话可以到这个地址去下:http://jax-ws.java.net/,下载完以后双击jar文件解压以后将所有jar包导入到项目中。

第二部分,SAP系统生成WEBSERVICE PROXY

用SE80进入对象浏览器,在本地对象中如下图所示路径中生成proxy

点击Enterprise Service以后右侧出现以下画面,选中Service Consumer,消费服务,点击Continue

出现以下画面,这里我们选中Local File,也可以选择URL/HTTP Destination用wsdl路径访问,这里我们需要修改wsdl所以选择本地文件。将wsdl文件保存到本地以后修改成如下样式

    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 

    xmlns:tns="http://localhost:8080/" 

    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 

    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 

name="HelloBodyService" targetNamespace="http://localhost:8080/">

将部分localhost改成192.168.0.197。

Continue,将修改过后的wsdl文件上传,如果在上一步选择的URL/HTTP Destination,也需要将URL中的localhost改成服务在局域网内的地址192.168.0.1

Continue,我这里选在到本地对象,prefix为ZCXH,这里必须以Z或者Y开头

然后就是两步Continue就生成proxy了,记得要保存和激活这个proxy如下图

在下一步就是生成Logical Port了,用事务码lpconfig进入port生成界面,将上图中Proxy Name考到Proxy Calss处

端口名随便取,我这里是LP01  ,将Defalt Port勾选上。点击创建按钮,出现如下画面

将描述写上,选中web service insfrastrue,Call Parameters标签页如下图所示:

URL:http://192.168.0.197:8080/SayHello/SayHelloToMe?wsdl,    192.168.0.197是我本机在局域网内的IP,SAP服务器(192.168.0.1)可以通过它访问到我本机由tomcat提供的webservice,其他的标签页默认好了,保存以后然后激活端口。

测试PROXY

回到SE80 proxy界面,如下图,点击运行(红圈所示)

出现输入端口界面

输入前面我们生成的端口名,运行,出现如下界面

点击右上角的,测试,出现response界面

大功告成,下面我们用一个abap程序调用webservice,代码如下

*&---------------------------------------------------------------------*

*& Report  ZTCXHTEST_TEST_WS

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  ZTCXHTEST_TEST_WS.

DATA:  ws_001 TYPE REF TO ZCXHCO_HELLO_BODY_DELEGATE.

DATA: output TYPE ZCXHSAY_HELLO_TO_RESPONSE1,

           input TYPE ZCXHSAY_HELLO_TO1.

input-PARAMETERS-ARG0 = 'THIS IS MY FIRST WBESERVICE PROGRAM'.    

CREATE OBJECT ws_001.

CALL METHOD ws_001->SAY_HELLO_TO

  EXPORTING

   INPUT =  input

   IMPORTING

     OUTPUT = output.

WRITE:  output-PARAMETERS-RETURN.

结果如下

ZCXHCO_HELLO_BODY_DELEGATE就是我们生成的代理类。

Sap webservice 环境对wsdl的要求比较严格,因为sap没有完全实现soap 1.2标准,所以如果用java或者是.net生成的wsdl有问题,可能是标签不能识别等问题可查看sap notes:1403271。

文档

abap+webservice_new

测试环境:windowxpsp3英文版SAPserverSAPECC6.0SAPGUI710本机内网IP:192.168.0.197,SAPServerIP:192.168.0.1第一步,在myeclipse中新建一个WebServiceProject,取名为SayHello,默认采用的就是JAX-WS,不用改,直接点finish完成。第二步,建立一个javaclass,名为HelloBody。其内容为publicclassHelloBody{publicStringSayHelloTo(
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top