您的位置:首页 > 编程语言 > Java开发

SAP如何调用JAVA

2017-09-27 13:44 274 查看

SAP调用JAVA

前言:eclipse中的JBOSS可以发布webservice,但是缺点是关闭eclipse,webservice服务就没有了,并且局域网中不可以访问。对于SAP中必须要局域网访问webservice才可以实现调用java,所以本文就是一个成功真正的从sap链接java的方法所走联通路的记录,笔者在此希望各位有此方面需求的程序员少走弯路,所以在此分享我的经验。若有不足和更好的方法,希望给我留言,我们共同探讨,谢谢。

下图为方法的总体思路。



如果SAP中无权限创建代理类,则也可以使用一下思路。



一、JAVA脱离eclipse发布局域网的webservice,作为服务端。

1、用eclipse创建java程序,并发布webservice.

      下载eclipse——jee版本,http://pan.baidu.com/s/1qXVO6de 密码:yd08;这里面有eclipse可以下载使用

      记得先前需要配置电脑JDK与JRE的java运行环境,这里就不做过多解释。

 (1)打开eclipse创建web工程如下图所示:File->new->other->web->Dynamic Web Project .

(2)创建包在src里面

(3)创建一个class

(4)这里在里面写入了两个方法,一个是sayhello,另一个是加减乘除运算



package def.pack;

public class HelloWorld {
  public String SayHello (String UserName ) { 

          return "Hello" + UserName; 

   } 

}

package org.clyde;

public class CalculatorImpl {
public String calucate(String number1, String number2, String operator) {
Float f1, f2, f3 = null;

try{
f1= Float.parseFloat(number1);
f2= Float.parseFloat(number2);
switch(operator.charAt(0)) {
case'+':
f3= f1 + f2;
break;
case'-':
f3= f1 - f2;
break;
case'*':
f3= f1 * f2;
break;
case'/':
f3= f1 / f2;
break;
default:
return"Not supported!";
}
}catch (Exception e) {
return"Not supported!";
}
return String.valueOf(f3);
}

}

2、写好eclipse程序后就先放在这里,接下来在分享盘中下载

org.apache.axis2.eclipse.codegen.plugin_1.7.6.jar

org.apache.axis2.eclipse.service.plugin_1.7.6.jar
(1)这两个文件下载好后,放在你安装eclipse目录下eclipse\dropins文件夹中,然后重新启动eclipse你会发现File->new->other会多一项axis2 wizards文件。


(2)右键一个java文件出现File->new->other->Axis2 Service Archiver之后出现以下界面,选择你的工程目录下的classes文件夹就可以了。 


(3)点击next



(4)点击next



(5)点击next



(6)随便取名Service name  但是class name   是包名.class名;点击load会加载出里面的方法。


(7)点击next;output file...你就选择桌面吧。


(8)点击finish你就会发现桌面出现了一个aar文件,这里就先放在这吧。

3、在云盘中有apache-tomcat-8.5.20.zip服务器这里面我都配置好了,你直接下下来解压你就放在C\盘下吧(其实那个盘都无所谓)。

(1)打开cmd

输入:cd C:\apache-tomcat-8.5.20\bin  回车

再输入:service.bat install 回车即可,则tomcat服务器安装成功

(2)将刚才生成的arr文件放到C:\apache-tomcat-8.5.20\webapps\axis2\WEB-INF\services的文件夹下

(3)启动tomcat服务器:点击C:\apache-tomcat-8.5.20\bin\tomcat8w.exe,点击start就好了。



(4)在浏览器中输入http://localhost:8080/axis2/services/CalculatorImpl?wsdl就可以看见你发布的webservice



4、局域网中的其他电脑访问你的http://你的ip:8080/axis2/services/CalculatorImpl?wsdl

是访问不到的,如果想其他电脑访问,这需要进行一下设置开放8080端口,关于tomcat的设置都已经设置好了。

(2)点击高级设置,入栈规则,新建规则,选择端口


(3)选择TCP,端口填写8080



(4)然后一直next到完成,在局域网别的电脑输入
http://你的ip:8080/axis2/services/CalculatorImpl?wsdl也会出现webservice服务。
到目前为止,java服务端已经做好了,接下来就开始做SAP服务端了。

二、 SAP如何调用Webservice

因为在SAP中的se80创建代理类时出现访问权限问题,若你的SAP可以创建代理类,则可以看一下此博客的方法:http://www.cnblogs.com/ruingy/p/3539630.html,当然其中的URL换成http://你的ip:8080/axis2/services/CalculatorImpl?wsdl就可以了,如果不能创建,那就接下来向向下看吧。



1、使用PHP作为桥梁帮SAP传参数

(1)创建PHP函数建议使用sublime编写,或者你直接建一个txt文件将程序写在里面,然后保存为名字点PHP;在云盘中下载Wampserver安装作为php的运行环境。

<?php

ini_set('soap.wsdl_cache_enabled','0');//关闭缓存

$soap = new SoapClient('http://你的IP:8080/axis2/services/CalculatorImpl?wsdl');

$number1 = isset($_GET["number1"]) ? $_GET["number1"] : ' ' ;

$number2 = isset($_GET["number2"]) ? $_GET["number2"] : ' ';

$operator = isset($_GET["operator"]) ? $_GET["operator"] : ' ';

$pamer = array('number1' => $number1 , 'number2' => $number2 ,'operator' => $operator);

$over = $soap->calucate($pamer);

//print_r($over) ;

echo $over->return;

//echo $soap->_soapCall('Add',array(1,2))//或者这样调用也可以

?>

(2)将上面所写的文件放在wampsever的安装目录WWW下,启动wampsever,当变绿色了就在浏览器输入http://localhost/文件名点php?number1=1&number2=2&operator=/就可以访问了。访问结果应是0.5


(3)如果你想使用别的计算机中也可以访问本地的php文件需要修改wampsever一下参数。一下两个Conf文件都需要修改


httpd.conf的修改是:(这里我将其他的备注# 都删除了。红色是已改的地方)

 <Directory />

    AllowOverride none

    Require all granted

</Directory>

<Directory "${INSTALL_DIR}/www/">

    AllowOverride all

    Require all Granted

</Directory>

httpd-vhosts.conf的修改是:
<Directory "${INSTALL_DIR}/www/">

    Options +Indexes +Includes +FollowSymLinks +MultiViews

    AllowOverride All

    Require all granted

  </Directory>

改完之后重新启动wampsever你就可以在局域网访问http://你的IP/文件名点php?number1=1&number2=2&operator=/

2、SAP如何调用PHP

打开SE38创建一个程序代码为一下:

REPORT  ZWEB.

DATA : url TYPE string.

DATA : http_client TYPE REF TO if_http_client.

DATA: content TYPE xstring.  "16进制返回值

DATA :  l_content_length TYPE  i.

DATA:  str TYPE string,

      l_con TYPE REF TO cl_rpe_convert.

DATA number1 TYPE c.

DATA number2 TYPE c.

DATA operator TYPE c.

START-OF-SELECTION.

CREATE OBJECT l_con.

  number1 = '1'.  "三个参数

  number2 = '2'.

  operator = '*'.

 CONCATENATE  'http://132.147.248.16/website/diaoyong.php?number1=' number1 '&number2=' number2  '&operator=' operator INTO url. "地址嵌入参数

  CALL METHOD cl_http_client=>create_by_url  "调用php函数

    EXPORTING

      url                = url

    IMPORTING

      client             = http_client   "生成新客户端

    EXCEPTIONS

      argument_not_found = 1

      plugin_not_active  = 2

      internal_error     = 3

      OTHERS             = 4.

  IF sy-subrc = 0.

    http_client->send( ). "传参数

    http_client->receive( )."返回值

    content = http_client->response->get_data( ).  "返回的数据值

    http_client->close( ).

    CALL METHOD l_con->xstring_to_string  "将16进制转换为字符串

    EXPORTING

      input  = content

    IMPORTING

      output = str.

    IF sy-subrc = 0.

      write:str.

    ENDIF.

  ENDIF.



这就连通SAP掉用JAVA的全部路径。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: